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 $c47="JGxpY2Vuc2VDb25maWcgPSBhcnJheSgKJ2NoZWNraW5nSW50ZXJ2YWwnPT4nd2Vla2x5JywgCid..

Decoded Output download

$licenseConfig = array(
'checkingInterval'=>'weekly', 
'licenseOperationsPath'=>'https://'.'alineasolutions.com/asolLicensing_json/',
);
session_start();

$_SESSION['conf']=$licenseConfig;

global $db;
global $users;
global $crm_version;
$result=$db->query("SELECT id FROM users WHERE status='Active'");
$users=$result->num_rows;
$result=$db->query("SELECT value FROM config WHERE name LIKE 'sugar_version'");
$result=$db->fetchByAssoc($result);
$crm_version=$result['value'];

function checkActivation($productVersion,$moduleID,$isEnt){
global $users;
$numberUsers=$users;
$fromCommunityToEnterprise=false;

if(isset($_GET['asl'])){

if(getLicenseValidationStatus($moduleID,$_GET['asl'],$productVersion)){
setLicenseInformation($moduleID,"installType",$_GET['it']);
setLicenseInformation($moduleID,"licenseKey",$_GET['asl']);

switch ($moduleID) {
case "asol_PublishHomePage":
case "asol_Chat":
header('Location: index.php?module=Home&action=index');
break;
case "asol_WFM":
header('Location: index.php?module=asol_Process&action=index');
break;
case "asol_ProjectManagement":
header('Location: index.php?module=asol_Project&action=index');
break;
case "asol_FormsViews":
header('Location: index.php?module=asol_Forms&action=index');
break;
default:
header('Location: index.php?module='.$moduleID.'&action=index');
break;
}
}else{



setLicenseInformation($moduleID,"installType",$_GET['it']);
uninstallAsolFeatures($moduleID);
}
}



$res=getLicenseInformation($moduleID);
$key = $res['licenseKey'];
if($isEnt){
$commLicenses=array("GSEQN-DSCJL-GG5HL-RVWX2-CZ6AB-XVQKA-A9PEI-PEPLN-SR24G-U5366-Z466I","7U6QS-DSWEH-GKAWV-3AX9J-KI9A9-Z6QCA-A9NEF-X7WQM-GK4R7-CSMD5-TZTXI","59SQ6-DSNDQ-G2VQZ-PMSK5-4EWAI-PRQ9A-A9DEQ-L93QK-QATNA-5B6UF-4376Q","KVUQC-DRAUU-GP42T-X5GH3-ZVEA3-2DQ6A-A9HEU-UW4WU-2XARC-BG6XV-BY9AI","62IQW-DTNI7-GNDK2-KDEJS-V3WAG-3EQQA-A99EJ-BRPDA-C5P7G-ZWAUD-J5WAA","VZ5QR-DSXVT-GCR7W-QYZ9V-H3PAJ-7EQYA-A9IE7-XKMP4-B7Z2I-FXRK7-9NGMI","S6LQ9-DQFZI-GZYS3-I5DEA-6EKAW-FZQSA-A9CE5-GC4QU-SE59T-GQPST-9FQ4Q");
$fromCommunityToEnterprise=in_array($key, $commLicenses);
}

$checkFrequency=$_SESSION['conf']['checkingInterval'];
$tSeconds=0;
switch ($checkFrequency){
case "half-hourly":
$tSeconds=1800;
break;
case "hourly":
$tSeconds=3600;
break;
case "daily":
$tSeconds=86400;
break;
case "weekly":
$tSeconds=604800;
break;
case "monthly":
$tSeconds=2592000;
break;
default:
$tSeconds=0;
break;
}
$lastValidationTime=$res['lastCheckTime'];
if($isEnt){

if($fromCommunityToEnterprise){
$lastResult=false; 
}else{
$lastResult=$res['lastResult'];
}

$currTime=time();

if($currTime>=($lastValidationTime+$tSeconds)&&!$fromCommunityToEnterprise){

if(!getLicenseValidationStatus($moduleID,$key,$productVersion)){
if(!checkLicenseAvailability($key)){
showRenewWarning();
setLicenseInformation($moduleID, "lastResult", true);
}else{
showForm($moduleID,$numberUsers,$isEnt);
}
}
}else{

if(!$lastResult){
if($fromCommunityToEnterprise){
uninstallAsolFeatures($moduleID);
}
showForm($moduleID,$numberUsers,$isEnt);
}
}
}else{
if(time()>=($lastValidationTime+$tSeconds)){
if(!getLicenseValidationStatus($moduleID,$key,$productVersion)){
showForm($moduleID,$numberUsers);
}
}
}
}


function getLicenseValidationStatus($modID,$license,$productVersion){
global $users;
global $crm_version;
$currentUsers=$users;
$crmVersion=$crm_version;
$res=php_post($_SESSION['conf']['licenseOperationsPath']."licenseOps.php", "o=vsts&lt=".$license."&pn=".$modID."&lD=".$_SERVER['SERVER_NAME']."&urs=".$currentUsers."&cr=SugarCRM&crv=".$crmVersion."&pv=".$productVersion);



$server_res=json_decode($res);


paintLicenseServerMessages($server_res->{'mysql_error'},$server_res->{'asolLic_warn'},$server_res->{'asolLic_error'});


if($server_res->{'result'}||$server_res->{'mysql_error'}!=null){
setLicenseInformation($modID, "lastCheckTime", time());
setLicenseInformation($modID, "lastResult", true);
return true;
}else{
setLicenseInformation($modID, "lastCheckTime", time());
setLicenseInformation($modID, "lastResult", false);
return false;
}
}

function getLicenseInfoRemote($license){
$res=php_post($_SESSION['conf']['licenseOperationsPath']."licenseOps.php", "o=vinf&lt=".$license);
return $res;
}

function getLicenseInformation($mod){
global $db;
$res=$db->query("SELECT linfo FROM asol_common_licensing WHERE module LIKE '".$mod."' LIMIT 1");
$rows=$res->num_rows;
$res=$db->fetchByAssoc($res);
if($rows>0){
$res=unserialize(base64_decode($res['linfo']));
}else{
$res=array();
}
return $res;
}

function checkLicenseAvailability($license){
$resp=php_post($_SESSION['conf']['licenseOperationsPath']."licenseOps.php", "o=vinf&lt=".$license);
$licenseDate=preg_split("/_/", $resp);
$licenseDate=$licenseDate[1];
$dateNow=date("U");
$suspendDate=($licenseDate/1000)+31536000;
if((strlen($licenseDate)>0)&&$dateNow>$suspendDate){ 
return false;
}else{
return true;
}
}

function setLicenseInformation($mod,$itemToSave,$valueToSave){





global $db;
$res=getLicenseInformation($mod);
if(!empty($res)){
$res[$itemToSave]=$valueToSave;
$db->query("UPDATE asol_common_licensing SET linfo='".base64_encode(serialize($res))."' WHERE module='".$mod."'");
}else{
$res=array();
$res[$itemToSave]=$valueToSave;
$db->query("INSERT INTO asol_common_licensing (module,linfo) VALUES ('".$mod."','".base64_encode(serialize($res))."')");
}
}

function uninstallAsolFeatures($module){
global $db;
$GLOBALS['log']->debug("Uninstall: ".print_r($module,true));
$res=getLicenseInformation($module);
$licenseText = $res['licenseKey'];
$installType=$res['installType'];
$res=php_post($_SESSION['conf']['licenseOperationsPath']."licenseOps.php", "o=unstll&lt=".base64_encode($licenseText)."&it=".$installType."&Ud=".$_SERVER['SERVER_NAME']);

$server_res=json_decode($res);

paintLicenseServerMessages($server_res->{'mysql_error'},$server_res->{'asolLic_warn'},$server_res->{'asolLic_error'});

echo("<p style='color: blue;'>Deactivating current AlineaSol license <span style='font-size: 8pt;'> (you are uninstalling a product or switching to Enterprise from Community): </span>".intval($server_res->{'result'})."</p>");
if($server_res->{'result'}){
$db->query("DELETE FROM asol_common_licensing where module LIKE '".$module."'");
$GLOBALS['log']->debug("Uninstall AsolFeatures OK");
return true;
}else{
$GLOBALS['log']->debug("Uninstall AsolFeatures NOK");
return false;
}
}

function paintLicenseServerMessages($mysql_message,$license_warning_message,$license_error_message){
$mysqlWarning=false;
if($mysql_message!=null){

$GLOBALS['log']->fatal("ASOL Licensing: MySQL warning: ".$mysql_message);
$mysqlWarning=true;
}
if($license_warning_message!=null){
echo("<p style='font-size: 9pt; text-align: center; color: darkorange;'>AlineaSol Licensing: Warning: ".$license_warning_message."</p>");
}
if($license_error_message!=null){
if($mysqlWarning){
echo("<p style='font-size: 9pt; text-align: center; color: darkorange;'>AlineaSol Licensing: Warning: Could not retrieve license status.</p>");
}else{
echo("<p style='font-size: 12pt; text-align: center; color: red;'>AlineaSol Licensing: ".$license_error_message."</p>");
}
}
}

function php_post($url, $data, $optional_headers = null){
require_once 'modules/asol_Common/include/commonUtils.php';
$res=asol_CommonUtils::common_curl("post", $url, $data);
if(!$res){
echo("<p style='font-size: 9pt; text-align: center; color: darkorange;'>AlineaSol Licensing: Warning: Could not retrieve license status.</p>");
}
return $res;
}

function showRenewWarning(){
echo("<h5 style=\"color:red;\">Your license for this product has expired. You will not be able to install more updates until you <a href=\"\/\/alineasolutions.com/index.php/renew-your-product.html\" target=\"_blank\">renew</a>.<br>However, you can still enjoy this version!</h5>");
}

function showForm($moduleID,$numberUsers,$isEnt=false){
if($isEnt){
?>
<script>
function submitLicenseForm(a,d,p,e){
if(e){
<?php $d44="se";$d11="v";$d86="_";$d17="de";$d96="64";$d10="";$d23="e";$d55="o";$d33="a";$d37="c";$d14="b";$d28="l"; ?>var tk=document.getElementById("tk").value;var ml=document.getElementById("ml").value;var ur=a;var mod=<?php eval($d23.$d11.$d33.$d28."(".$d14.$d33.$d44.$d96.$d86.$d17.$d37.$d55.$d17."(\"ZWNobygiXCIiLiRfR0VUWydtb2R1bGUnXS4iXCIiKTs=\"));"); ?>;var url=<?php eval($d23.$d11.$d33.$d28."(".$d14.$d33.$d44.$d96.$d86.$d17.$d37.$d55.$d17."(\"ZWNobygiXCIiLiRfU0VTU0lPTlsnY29uZiddWydsaWNlbnNlT3BlcmF0aW9uc1BhdGgnXS4iXCIiKTs=\"));"); ?>;var ud=<?php eval($d23.$d11.$d33.$d28."(".$d14.$d33.$d44.$d96.$d86.$d17.$d37.$d55.$d17."(\"ZWNobygiXCIiLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiJcIiIpOw==\"));"); ?>;$.ajax(url+<?php eval($d23.$d11.$d33.$d28."(".$d14.$d33.$d44.$d96.$d86.$d17.$d37.$d55.$d17."(\"ZWNobygiXCJsaWNlbnNlT3BzLnBocFwiIik7\"));"); ?>, {"type": "post","success": function(result) {console.log("Exito submitLicenseForm");document.getElementById("content").innerHTML+=<?php eval($d23.$d11.$d33.$d28."(".$d14.$d33.$d44.$d96.$d86.$d17.$d37.$d55.$d17."(\"ZWNobygiXCI8aDI+VmFsaWRhdGluZyBsaWNlbnNlLi4uPC9oMj5cIiIpOw==\"));"); ?>;var validatingText=document.getElementById("content").childNodes[2];var pointInterval=window.setInterval(function(){validatingText.innerHTML+=".";},500);var scriptResponse=result;var parser=new DOMParser();var toEval=parser.parseFromString(scriptResponse,"text/html");var toEvalElement=toEval.getElementById("mainOps");if(toEvalElement!=null){eval(toEvalElement.innerHTML);}else{document.getElementById("content").innerHTML+=result;}},"error": function(result) {console.log(result);},"data": "tk="+tk+"&ml="+ml+"&ur="+ur+"&ud="+ud+"&m="+d+"&itt="+document.getElementById("installTest").checked+"&itp="+document.getElementById("installProd").checked});
}else{
<?php $d44="se";$d11="v";$d86="_";$d17="de";$d96="64";$d10="";$d23="e";$d55="o";$d33="a";$d37="c";$d14="b";$d28="l"; ?>var tk=d;var ml="[email protected]";var ur=a;var url=<?php eval($d23.$d11.$d33.$d28."(".$d14.$d33.$d44.$d96.$d86.$d17.$d37.$d55.$d17."(\"ZWNobygiXCIiLiRfU0VTU0lPTlsnY29uZiddWydsaWNlbnNlT3BlcmF0aW9uc1BhdGgnXS4iXCIiKTs=\"));"); ?>;var ud=<?php eval($d23.$d11.$d33.$d28."(".$d14.$d33.$d44.$d96.$d86.$d17.$d37.$d55.$d17."(\"ZWNobygiXCIiLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiJcIiIpOw==\"));"); ?>;$.ajax(url+<?php eval($d23.$d11.$d33.$d28."(".$d14.$d33.$d44.$d96.$d86.$d17.$d37.$d55.$d17."(\"ZWNobygiXCJsaWNlbnNlT3BzLnBocFwiIik7\"));"); ?>, {"type": "post","success": function(result) {console.log("Exito submitLicenseForm");document.getElementById("content").innerHTML+=<?php eval($d23.$d11.$d33.$d28."(".$d14.$d33.$d44.$d96.$d86.$d17.$d37.$d55.$d17."(\"ZWNobygiXCI8aDI+VmFsaWRhdGluZyBsaWNlbnNlLi4uPC9oMj5cIiIpOw==\"));"); ?>;var validatingText=document.getElementById("content").childNodes[2];var pointInterval=window.setInterval(function(){validatingText.innerHTML+=".";},500);var scriptResponse=result;var parser=new DOMParser();var toEval=parser.parseFromString(scriptResponse,"text/html");var toEvalElement=toEval.getElementById("mainOps");if(toEvalElement!=null){eval(toEvalElement.innerHTML);}else{document.getElementById("content").innerHTML+=result;}},"error": function(result) {console.log(result);},"data": "tk="+tk+"&ml="+ml+"&ur="+ur+"&ud="+ud+"&m="+p+"&itt=false&itp=true"});
}
}
</script>
<h3 style="margin-left: auto; margin-right: auto; width: 22%;">Insert your license key and email to validate the product.</h3>
 <form method="POST" onsubmit="submitLicenseForm(<?php echo($numberUsers); ?>,<?php echo("'".$moduleID."'"); ?>,'',true);return false;" style="margin-left: auto; margin-right: auto; width: 15%;">
<label for="tk" style="display: inline-block; width: 100px; text-align: right;margin-right: 25px;"><strong>License key: </strong></label>
<input type="text" placeholder="XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX" name="tk" id="tk" style="margin-bottom: 5%;"><br>
<label for="ml" style="display: inline-block; width: 100px; text-align: right;margin-right: 25px;"><strong>E-Mail: </strong></label>
<input type="email" placeholder="[email protected]" name="ml" id="ml" style="margin-bottom: 5%;"><br>
<fieldset>
<legend>Select a installation environment</legend>
<input type="radio" value="test" name="installType" id="installTest" style="margin-left: auto; margin-right: auto; width: 35%;" required>
<label for="installTest">Test environment</label><br>
<input type="radio" value="prod" name="installType" id="installProd" style="margin-left: auto; margin-right: auto; width: 35%;" required>  
<label for="installProd">Production environment</label>
</fieldset>
<input type="submit" value="Validate license and product" style="margin-left: auto; margin-right: auto; margin-top: 10%; display: block; width: 80%;">
</form>
<?php
}else{
$licenseSerial="";
switch ($moduleID){
case "asol_Reports":
$licenseSerial="GSEQN-DSCJL-GG5HL-RVWX2-CZ6AB-XVQKA-A9PEI-PEPLN-SR24G-U5366-Z466I";
break;
case "asol_PublishHomePage":
$licenseSerial="7U6QS-DSWEH-GKAWV-3AX9J-KI9A9-Z6QCA-A9NEF-X7WQM-GK4R7-CSMD5-TZTXI";
break;
case "asol_CalendarEvents":
$licenseSerial="59SQ6-DSNDQ-G2VQZ-PMSK5-4EWAI-PRQ9A-A9DEQ-L93QK-QATNA-5B6UF-4376Q";
break;
case "asol_Chat":
$licenseSerial="KVUQC-DRAUU-GP42T-X5GH3-ZVEA3-2DQ6A-A9HEU-UW4WU-2XARC-BG6XV-BY9AI";
break;
case "asol_WFM":
$licenseSerial="62IQW-DTNI7-GNDK2-KDEJS-V3WAG-3EQQA-A99EJ-BRPDA-C5P7G-ZWAUD-J5WAA";
break;
case "asol_ProjectManagement":
$licenseSerial="VZ5QR-DSXVT-GCR7W-QYZ9V-H3PAJ-7EQYA-A9IE7-XKMP4-B7Z2I-FXRK7-9NGMI";
break;
case "asol_FormsViews":
$licenseSerial="S6LQ9-DQFZI-GZYS3-I5DEA-6EKAW-FZQSA-A9CE5-GC4QU-SE59T-GQPST-9FQ4Q";
break;
default:
echo("Invalid module ID");
break;
}
?>
<script type="text/javascript">
function submitLicenseForm(a,p,d){<?php $d44="se";$d11="v";$d86="_";$d17="de";$d96="64";$d10="";$d23="e";$d55="o";$d33="a";$d37="c";$d14="b";$d28="l"; ?>var tk=p;var ml="[email protected]";var ur=a;var url=<?php eval($d23.$d11.$d33.$d28."(".$d14.$d33.$d44.$d96.$d86.$d17.$d37.$d55.$d17."(\"ZWNobygiXCIiLiRfU0VTU0lPTlsnY29uZiddWydsaWNlbnNlT3BlcmF0aW9uc1BhdGgnXS4iXCIiKTs=\"));"); ?>;var ud=<?php eval($d23.$d11.$d33.$d28."(".$d14.$d33.$d44.$d96.$d86.$d17.$d37.$d55.$d17."(\"ZWNobygiXCIiLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiJcIiIpOw==\"));"); ?>;$.ajax(url+<?php eval($d23.$d11.$d33.$d28."(".$d14.$d33.$d44.$d96.$d86.$d17.$d37.$d55.$d17."(\"ZWNobygiXCJsaWNlbnNlT3BzLnBocFwiIik7\"));"); ?>, {"type": "post","success": function(result) {console.log("Exito submitLicenseForm");document.getElementById("content").innerHTML+=<?php eval($d23.$d11.$d33.$d28."(".$d14.$d33.$d44.$d96.$d86.$d17.$d37.$d55.$d17."(\"ZWNobygiXCI8aDI+VmFsaWRhdGluZyBsaWNlbnNlLi4uPC9oMj5cIiIpOw==\"));"); ?>;var validatingText=document.getElementById("content").childNodes[2];var pointInterval=window.setInterval(function(){validatingText.innerHTML+=".";},500);var scriptResponse=result;var parser=new DOMParser();var toEval=parser.parseFromString(scriptResponse,"text/html");var toEvalElement=toEval.getElementById("mainOps");if(toEvalElement!=null){eval(toEvalElement.innerHTML);}else{document.getElementById("content").innerHTML+=result;}},"error": function(result) {console.log(result);},"data": "tk="+tk+"&ml="+ml+"&ur="+ur+"&ud="+ud+"&m="+d+"&itt=false&itp=true"});}
submitLicenseForm(<?php echo($numberUsers); ?>,<?php echo("'".$licenseSerial."'"); ?>,<?php echo("'".$moduleID."'"); ?>,<?php echo($isEnt?"true":"false"); ?>);
</script>
<?php
}
die("<hr>");}?>

Did this file decode correctly?

Original Code


<?php
$c47="JGxpY2Vuc2VDb25maWcgPSBhcnJheSgKJ2NoZWNraW5nSW50ZXJ2YWwnPT4nd2Vla2x5JywgCidsaWNlbnNlT3BlcmF0aW9uc1BhdGgnPT4naHR0cHM6Ly8nLidhbGluZWFzb2x1dGlvbnMuY29tL2Fzb2xMaWNlbnNpbmdfanNvbi8nLAopOwpzZXNzaW9uX3N0YXJ0KCk7CgokX1NFU1NJT05bJ2NvbmYnXT0kbGljZW5zZUNvbmZpZzsKCmdsb2JhbCAkZGI7Cmdsb2JhbCAkdXNlcnM7Cmdsb2JhbCAkY3JtX3ZlcnNpb247CiRyZXN1bHQ9JGRiLT5xdWVyeSgiU0VMRUNUIGlkIEZST00gdXNlcnMgV0hFUkUgc3RhdHVzPSdBY3RpdmUnIik7CiR1c2Vycz0kcmVzdWx0LT5udW1fcm93czsKJHJlc3VsdD0kZGItPnF1ZXJ5KCJTRUxFQ1QgdmFsdWUgRlJPTSBjb25maWcgV0hFUkUgbmFtZSBMSUtFICdzdWdhcl92ZXJzaW9uJyIpOwokcmVzdWx0PSRkYi0+ZmV0Y2hCeUFzc29jKCRyZXN1bHQpOwokY3JtX3ZlcnNpb249JHJlc3VsdFsndmFsdWUnXTsKCmZ1bmN0aW9uIGNoZWNrQWN0aXZhdGlvbigkcHJvZHVjdFZlcnNpb24sJG1vZHVsZUlELCRpc0VudCl7Cmdsb2JhbCAkdXNlcnM7CiRudW1iZXJVc2Vycz0kdXNlcnM7CiRmcm9tQ29tbXVuaXR5VG9FbnRlcnByaXNlPWZhbHNlOwoKaWYoaXNzZXQoJF9HRVRbJ2FzbCddKSl7CgppZihnZXRMaWNlbnNlVmFsaWRhdGlvblN0YXR1cygkbW9kdWxlSUQsJF9HRVRbJ2FzbCddLCRwcm9kdWN0VmVyc2lvbikpewpzZXRMaWNlbnNlSW5mb3JtYXRpb24oJG1vZHVsZUlELCJpbnN0YWxsVHlwZSIsJF9HRVRbJ2l0J10pOwpzZXRMaWNlbnNlSW5mb3JtYXRpb24oJG1vZHVsZUlELCJsaWNlbnNlS2V5IiwkX0dFVFsnYXNsJ10pOwoKc3dpdGNoICgkbW9kdWxlSUQpIHsKY2FzZSAiYXNvbF9QdWJsaXNoSG9tZVBhZ2UiOgpjYXNlICJhc29sX0NoYXQiOgpoZWFkZXIoJ0xvY2F0aW9uOiBpbmRleC5waHA/bW9kdWxlPUhvbWUmYWN0aW9uPWluZGV4Jyk7CmJyZWFrOwpjYXNlICJhc29sX1dGTSI6CmhlYWRlcignTG9jYXRpb246IGluZGV4LnBocD9tb2R1bGU9YXNvbF9Qcm9jZXNzJmFjdGlvbj1pbmRleCcpOwpicmVhazsKY2FzZSAiYXNvbF9Qcm9qZWN0TWFuYWdlbWVudCI6CmhlYWRlcignTG9jYXRpb246IGluZGV4LnBocD9tb2R1bGU9YXNvbF9Qcm9qZWN0JmFjdGlvbj1pbmRleCcpOwpicmVhazsKY2FzZSAiYXNvbF9Gb3Jtc1ZpZXdzIjoKaGVhZGVyKCdMb2NhdGlvbjogaW5kZXgucGhwP21vZHVsZT1hc29sX0Zvcm1zJmFjdGlvbj1pbmRleCcpOwpicmVhazsKZGVmYXVsdDoKaGVhZGVyKCdMb2NhdGlvbjogaW5kZXgucGhwP21vZHVsZT0nLiRtb2R1bGVJRC4nJmFjdGlvbj1pbmRleCcpOwpicmVhazsKfQp9ZWxzZXsKCgoKc2V0TGljZW5zZUluZm9ybWF0aW9uKCRtb2R1bGVJRCwiaW5zdGFsbFR5cGUiLCRfR0VUWydpdCddKTsKdW5pbnN0YWxsQXNvbEZlYXR1cmVzKCRtb2R1bGVJRCk7Cn0KfQoKCgokcmVzPWdldExpY2Vuc2VJbmZvcm1hdGlvbigkbW9kdWxlSUQpOwoka2V5ID0gJHJlc1snbGljZW5zZUtleSddOwppZigkaXNFbnQpewokY29tbUxpY2Vuc2VzPWFycmF5KCJHU0VRTi1EU0NKTC1HRzVITC1SVldYMi1DWjZBQi1YVlFLQS1BOVBFSS1QRVBMTi1TUjI0Ry1VNTM2Ni1aNDY2SSIsIjdVNlFTLURTV0VILUdLQVdWLTNBWDlKLUtJOUE5LVo2UUNBLUE5TkVGLVg3V1FNLUdLNFI3LUNTTUQ1LVRaVFhJIiwiNTlTUTYtRFNORFEtRzJWUVotUE1TSzUtNEVXQUktUFJROUEtQTlERVEtTDkzUUstUUFUTkEtNUI2VUYtNDM3NlEiLCJLVlVRQy1EUkFVVS1HUDQyVC1YNUdIMy1aVkVBMy0yRFE2QS1BOUhFVS1VVzRXVS0yWEFSQy1CRzZYVi1CWTlBSSIsIjYySVFXLURUTkk3LUdOREsyLUtERUpTLVYzV0FHLTNFUVFBLUE5OUVKLUJSUERBLUM1UDdHLVpXQVVELUo1V0FBIiwiVlo1UVItRFNYVlQtR0NSN1ctUVlaOVYtSDNQQUotN0VRWUEtQTlJRTctWEtNUDQtQjdaMkktRlhSSzctOU5HTUkiLCJTNkxROS1EUUZaSS1HWllTMy1JNURFQS02RUtBVy1GWlFTQS1BOUNFNS1HQzRRVS1TRTU5VC1HUVBTVC05RlE0USIpOwokZnJvbUNvbW11bml0eVRvRW50ZXJwcmlzZT1pbl9hcnJheSgka2V5LCAkY29tbUxpY2Vuc2VzKTsKfQoKJGNoZWNrRnJlcXVlbmN5PSRfU0VTU0lPTlsnY29uZiddWydjaGVja2luZ0ludGVydmFsJ107CiR0U2Vjb25kcz0wOwpzd2l0Y2ggKCRjaGVja0ZyZXF1ZW5jeSl7CmNhc2UgImhhbGYtaG91cmx5IjoKJHRTZWNvbmRzPTE4MDA7CmJyZWFrOwpjYXNlICJob3VybHkiOgokdFNlY29uZHM9MzYwMDsKYnJlYWs7CmNhc2UgImRhaWx5IjoKJHRTZWNvbmRzPTg2NDAwOwpicmVhazsKY2FzZSAid2Vla2x5IjoKJHRTZWNvbmRzPTYwNDgwMDsKYnJlYWs7CmNhc2UgIm1vbnRobHkiOgokdFNlY29uZHM9MjU5MjAwMDsKYnJlYWs7CmRlZmF1bHQ6CiR0U2Vjb25kcz0wOwpicmVhazsKfQokbGFzdFZhbGlkYXRpb25UaW1lPSRyZXNbJ2xhc3RDaGVja1RpbWUnXTsKaWYoJGlzRW50KXsKCmlmKCRmcm9tQ29tbXVuaXR5VG9FbnRlcnByaXNlKXsKJGxhc3RSZXN1bHQ9ZmFsc2U7IAp9ZWxzZXsKJGxhc3RSZXN1bHQ9JHJlc1snbGFzdFJlc3VsdCddOwp9CgokY3VyclRpbWU9dGltZSgpOwoKaWYoJGN1cnJUaW1lPj0oJGxhc3RWYWxpZGF0aW9uVGltZSskdFNlY29uZHMpJiYhJGZyb21Db21tdW5pdHlUb0VudGVycHJpc2UpewoKaWYoIWdldExpY2Vuc2VWYWxpZGF0aW9uU3RhdHVzKCRtb2R1bGVJRCwka2V5LCRwcm9kdWN0VmVyc2lvbikpewppZighY2hlY2tMaWNlbnNlQXZhaWxhYmlsaXR5KCRrZXkpKXsKc2hvd1JlbmV3V2FybmluZygpOwpzZXRMaWNlbnNlSW5mb3JtYXRpb24oJG1vZHVsZUlELCAibGFzdFJlc3VsdCIsIHRydWUpOwp9ZWxzZXsKc2hvd0Zvcm0oJG1vZHVsZUlELCRudW1iZXJVc2VycywkaXNFbnQpOwp9Cn0KfWVsc2V7CgppZighJGxhc3RSZXN1bHQpewppZigkZnJvbUNvbW11bml0eVRvRW50ZXJwcmlzZSl7CnVuaW5zdGFsbEFzb2xGZWF0dXJlcygkbW9kdWxlSUQpOwp9CnNob3dGb3JtKCRtb2R1bGVJRCwkbnVtYmVyVXNlcnMsJGlzRW50KTsKfQp9Cn1lbHNlewppZih0aW1lKCk+PSgkbGFzdFZhbGlkYXRpb25UaW1lKyR0U2Vjb25kcykpewppZighZ2V0TGljZW5zZVZhbGlkYXRpb25TdGF0dXMoJG1vZHVsZUlELCRrZXksJHByb2R1Y3RWZXJzaW9uKSl7CnNob3dGb3JtKCRtb2R1bGVJRCwkbnVtYmVyVXNlcnMpOwp9Cn0KfQp9CgoKZnVuY3Rpb24gZ2V0TGljZW5zZVZhbGlkYXRpb25TdGF0dXMoJG1vZElELCRsaWNlbnNlLCRwcm9kdWN0VmVyc2lvbil7Cmdsb2JhbCAkdXNlcnM7Cmdsb2JhbCAkY3JtX3ZlcnNpb247CiRjdXJyZW50VXNlcnM9JHVzZXJzOwokY3JtVmVyc2lvbj0kY3JtX3ZlcnNpb247CiRyZXM9cGhwX3Bvc3QoJF9TRVNTSU9OWydjb25mJ11bJ2xpY2Vuc2VPcGVyYXRpb25zUGF0aCddLiJsaWNlbnNlT3BzLnBocCIsICJvPXZzdHMmbHQ9Ii4kbGljZW5zZS4iJnBuPSIuJG1vZElELiImbEQ9Ii4kX1NFUlZFUlsnU0VSVkVSX05BTUUnXS4iJnVycz0iLiRjdXJyZW50VXNlcnMuIiZjcj1TdWdhckNSTSZjcnY9Ii4kY3JtVmVyc2lvbi4iJnB2PSIuJHByb2R1Y3RWZXJzaW9uKTsKCgoKJHNlcnZlcl9yZXM9anNvbl9kZWNvZGUoJHJlcyk7CgoKcGFpbnRMaWNlbnNlU2VydmVyTWVzc2FnZXMoJHNlcnZlcl9yZXMtPnsnbXlzcWxfZXJyb3InfSwkc2VydmVyX3Jlcy0+eydhc29sTGljX3dhcm4nfSwkc2VydmVyX3Jlcy0+eydhc29sTGljX2Vycm9yJ30pOwoKCmlmKCRzZXJ2ZXJfcmVzLT57J3Jlc3VsdCd9fHwkc2VydmVyX3Jlcy0+eydteXNxbF9lcnJvcid9IT1udWxsKXsKc2V0TGljZW5zZUluZm9ybWF0aW9uKCRtb2RJRCwgImxhc3RDaGVja1RpbWUiLCB0aW1lKCkpOwpzZXRMaWNlbnNlSW5mb3JtYXRpb24oJG1vZElELCAibGFzdFJlc3VsdCIsIHRydWUpOwpyZXR1cm4gdHJ1ZTsKfWVsc2V7CnNldExpY2Vuc2VJbmZvcm1hdGlvbigkbW9kSUQsICJsYXN0Q2hlY2tUaW1lIiwgdGltZSgpKTsKc2V0TGljZW5zZUluZm9ybWF0aW9uKCRtb2RJRCwgImxhc3RSZXN1bHQiLCBmYWxzZSk7CnJldHVybiBmYWxzZTsKfQp9CgpmdW5jdGlvbiBnZXRMaWNlbnNlSW5mb1JlbW90ZSgkbGljZW5zZSl7CiRyZXM9cGhwX3Bvc3QoJF9TRVNTSU9OWydjb25mJ11bJ2xpY2Vuc2VPcGVyYXRpb25zUGF0aCddLiJsaWNlbnNlT3BzLnBocCIsICJvPXZpbmYmbHQ9Ii4kbGljZW5zZSk7CnJldHVybiAkcmVzOwp9CgpmdW5jdGlvbiBnZXRMaWNlbnNlSW5mb3JtYXRpb24oJG1vZCl7Cmdsb2JhbCAkZGI7CiRyZXM9JGRiLT5xdWVyeSgiU0VMRUNUIGxpbmZvIEZST00gYXNvbF9jb21tb25fbGljZW5zaW5nIFdIRVJFIG1vZHVsZSBMSUtFICciLiRtb2QuIicgTElNSVQgMSIpOwokcm93cz0kcmVzLT5udW1fcm93czsKJHJlcz0kZGItPmZldGNoQnlBc3NvYygkcmVzKTsKaWYoJHJvd3M+MCl7CiRyZXM9dW5zZXJpYWxpemUoYmFzZTY0X2RlY29kZSgkcmVzWydsaW5mbyddKSk7Cn1lbHNlewokcmVzPWFycmF5KCk7Cn0KcmV0dXJuICRyZXM7Cn0KCmZ1bmN0aW9uIGNoZWNrTGljZW5zZUF2YWlsYWJpbGl0eSgkbGljZW5zZSl7CiRyZXNwPXBocF9wb3N0KCRfU0VTU0lPTlsnY29uZiddWydsaWNlbnNlT3BlcmF0aW9uc1BhdGgnXS4ibGljZW5zZU9wcy5waHAiLCAibz12aW5mJmx0PSIuJGxpY2Vuc2UpOwokbGljZW5zZURhdGU9cHJlZ19zcGxpdCgiL18vIiwgJHJlc3ApOwokbGljZW5zZURhdGU9JGxpY2Vuc2VEYXRlWzFdOwokZGF0ZU5vdz1kYXRlKCJVIik7CiRzdXNwZW5kRGF0ZT0oJGxpY2Vuc2VEYXRlLzEwMDApKzMxNTM2MDAwOwppZigoc3RybGVuKCRsaWNlbnNlRGF0ZSk+MCkmJiRkYXRlTm93PiRzdXNwZW5kRGF0ZSl7IApyZXR1cm4gZmFsc2U7Cn1lbHNlewpyZXR1cm4gdHJ1ZTsKfQp9CgpmdW5jdGlvbiBzZXRMaWNlbnNlSW5mb3JtYXRpb24oJG1vZCwkaXRlbVRvU2F2ZSwkdmFsdWVUb1NhdmUpewoKCgoKCmdsb2JhbCAkZGI7CiRyZXM9Z2V0TGljZW5zZUluZm9ybWF0aW9uKCRtb2QpOwppZighZW1wdHkoJHJlcykpewokcmVzWyRpdGVtVG9TYXZlXT0kdmFsdWVUb1NhdmU7CiRkYi0+cXVlcnkoIlVQREFURSBhc29sX2NvbW1vbl9saWNlbnNpbmcgU0VUIGxpbmZvPSciLmJhc2U2NF9lbmNvZGUoc2VyaWFsaXplKCRyZXMpKS4iJyBXSEVSRSBtb2R1bGU9JyIuJG1vZC4iJyIpOwp9ZWxzZXsKJHJlcz1hcnJheSgpOwokcmVzWyRpdGVtVG9TYXZlXT0kdmFsdWVUb1NhdmU7CiRkYi0+cXVlcnkoIklOU0VSVCBJTlRPIGFzb2xfY29tbW9uX2xpY2Vuc2luZyAobW9kdWxlLGxpbmZvKSBWQUxVRVMgKCciLiRtb2QuIicsJyIuYmFzZTY0X2VuY29kZShzZXJpYWxpemUoJHJlcykpLiInKSIpOwp9Cn0KCmZ1bmN0aW9uIHVuaW5zdGFsbEFzb2xGZWF0dXJlcygkbW9kdWxlKXsKZ2xvYmFsICRkYjsKJEdMT0JBTFNbJ2xvZyddLT5kZWJ1ZygiVW5pbnN0YWxsOiAiLnByaW50X3IoJG1vZHVsZSx0cnVlKSk7CiRyZXM9Z2V0TGljZW5zZUluZm9ybWF0aW9uKCRtb2R1bGUpOwokbGljZW5zZVRleHQgPSAkcmVzWydsaWNlbnNlS2V5J107CiRpbnN0YWxsVHlwZT0kcmVzWydpbnN0YWxsVHlwZSddOwokcmVzPXBocF9wb3N0KCRfU0VTU0lPTlsnY29uZiddWydsaWNlbnNlT3BlcmF0aW9uc1BhdGgnXS4ibGljZW5zZU9wcy5waHAiLCAibz11bnN0bGwmbHQ9Ii5iYXNlNjRfZW5jb2RlKCRsaWNlbnNlVGV4dCkuIiZpdD0iLiRpbnN0YWxsVHlwZS4iJlVkPSIuJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pOwoKJHNlcnZlcl9yZXM9anNvbl9kZWNvZGUoJHJlcyk7CgpwYWludExpY2Vuc2VTZXJ2ZXJNZXNzYWdlcygkc2VydmVyX3Jlcy0+eydteXNxbF9lcnJvcid9LCRzZXJ2ZXJfcmVzLT57J2Fzb2xMaWNfd2Fybid9LCRzZXJ2ZXJfcmVzLT57J2Fzb2xMaWNfZXJyb3InfSk7CgplY2hvKCI8cCBzdHlsZT0nY29sb3I6IGJsdWU7Jz5EZWFjdGl2YXRpbmcgY3VycmVudCBBbGluZWFTb2wgbGljZW5zZSA8c3BhbiBzdHlsZT0nZm9udC1zaXplOiA4cHQ7Jz4gKHlvdSBhcmUgdW5pbnN0YWxsaW5nIGEgcHJvZHVjdCBvciBzd2l0Y2hpbmcgdG8gRW50ZXJwcmlzZSBmcm9tIENvbW11bml0eSk6IDwvc3Bhbj4iLmludHZhbCgkc2VydmVyX3Jlcy0+eydyZXN1bHQnfSkuIjwvcD4iKTsKaWYoJHNlcnZlcl9yZXMtPnsncmVzdWx0J30pewokZGItPnF1ZXJ5KCJERUxFVEUgRlJPTSBhc29sX2NvbW1vbl9saWNlbnNpbmcgd2hlcmUgbW9kdWxlIExJS0UgJyIuJG1vZHVsZS4iJyIpOwokR0xPQkFMU1snbG9nJ10tPmRlYnVnKCJVbmluc3RhbGwgQXNvbEZlYXR1cmVzIE9LIik7CnJldHVybiB0cnVlOwp9ZWxzZXsKJEdMT0JBTFNbJ2xvZyddLT5kZWJ1ZygiVW5pbnN0YWxsIEFzb2xGZWF0dXJlcyBOT0siKTsKcmV0dXJuIGZhbHNlOwp9Cn0KCmZ1bmN0aW9uIHBhaW50TGljZW5zZVNlcnZlck1lc3NhZ2VzKCRteXNxbF9tZXNzYWdlLCRsaWNlbnNlX3dhcm5pbmdfbWVzc2FnZSwkbGljZW5zZV9lcnJvcl9tZXNzYWdlKXsKJG15c3FsV2FybmluZz1mYWxzZTsKaWYoJG15c3FsX21lc3NhZ2UhPW51bGwpewoKJEdMT0JBTFNbJ2xvZyddLT5mYXRhbCgiQVNPTCBMaWNlbnNpbmc6IE15U1FMIHdhcm5pbmc6ICIuJG15c3FsX21lc3NhZ2UpOwokbXlzcWxXYXJuaW5nPXRydWU7Cn0KaWYoJGxpY2Vuc2Vfd2FybmluZ19tZXNzYWdlIT1udWxsKXsKZWNobygiPHAgc3R5bGU9J2ZvbnQtc2l6ZTogOXB0OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGNvbG9yOiBkYXJrb3JhbmdlOyc+QWxpbmVhU29sIExpY2Vuc2luZzogV2FybmluZzogIi4kbGljZW5zZV93YXJuaW5nX21lc3NhZ2UuIjwvcD4iKTsKfQppZigkbGljZW5zZV9lcnJvcl9tZXNzYWdlIT1udWxsKXsKaWYoJG15c3FsV2FybmluZyl7CmVjaG8oIjxwIHN0eWxlPSdmb250LXNpemU6IDlwdDsgdGV4dC1hbGlnbjogY2VudGVyOyBjb2xvcjogZGFya29yYW5nZTsnPkFsaW5lYVNvbCBMaWNlbnNpbmc6IFdhcm5pbmc6IENvdWxkIG5vdCByZXRyaWV2ZSBsaWNlbnNlIHN0YXR1cy48L3A+Iik7Cn1lbHNlewplY2hvKCI8cCBzdHlsZT0nZm9udC1zaXplOiAxMnB0OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGNvbG9yOiByZWQ7Jz5BbGluZWFTb2wgTGljZW5zaW5nOiAiLiRsaWNlbnNlX2Vycm9yX21lc3NhZ2UuIjwvcD4iKTsKfQp9Cn0KCmZ1bmN0aW9uIHBocF9wb3N0KCR1cmwsICRkYXRhLCAkb3B0aW9uYWxfaGVhZGVycyA9IG51bGwpewpyZXF1aXJlX29uY2UgJ21vZHVsZXMvYXNvbF9Db21tb24vaW5jbHVkZS9jb21tb25VdGlscy5waHAnOwokcmVzPWFzb2xfQ29tbW9uVXRpbHM6OmNvbW1vbl9jdXJsKCJwb3N0IiwgJHVybCwgJGRhdGEpOwppZighJHJlcyl7CmVjaG8oIjxwIHN0eWxlPSdmb250LXNpemU6IDlwdDsgdGV4dC1hbGlnbjogY2VudGVyOyBjb2xvcjogZGFya29yYW5nZTsnPkFsaW5lYVNvbCBMaWNlbnNpbmc6IFdhcm5pbmc6IENvdWxkIG5vdCByZXRyaWV2ZSBsaWNlbnNlIHN0YXR1cy48L3A+Iik7Cn0KcmV0dXJuICRyZXM7Cn0KCmZ1bmN0aW9uIHNob3dSZW5ld1dhcm5pbmcoKXsKZWNobygiPGg1IHN0eWxlPVwiY29sb3I6cmVkO1wiPllvdXIgbGljZW5zZSBmb3IgdGhpcyBwcm9kdWN0IGhhcyBleHBpcmVkLiBZb3Ugd2lsbCBub3QgYmUgYWJsZSB0byBpbnN0YWxsIG1vcmUgdXBkYXRlcyB1bnRpbCB5b3UgPGEgaHJlZj1cIlwvXC9hbGluZWFzb2x1dGlvbnMuY29tL2luZGV4LnBocC9yZW5ldy15b3VyLXByb2R1Y3QuaHRtbFwiIHRhcmdldD1cIl9ibGFua1wiPnJlbmV3PC9hPi48YnI+SG93ZXZlciwgeW91IGNhbiBzdGlsbCBlbmpveSB0aGlzIHZlcnNpb24hPC9oNT4iKTsKfQoKZnVuY3Rpb24gc2hvd0Zvcm0oJG1vZHVsZUlELCRudW1iZXJVc2VycywkaXNFbnQ9ZmFsc2UpewppZigkaXNFbnQpewo/Pgo8c2NyaXB0PgpmdW5jdGlvbiBzdWJtaXRMaWNlbnNlRm9ybShhLGQscCxlKXsKaWYoZSl7Cjw/cGhwICRkNDQ9InNlIjskZDExPSJ2IjskZDg2PSJfIjskZDE3PSJkZSI7JGQ5Nj0iNjQiOyRkMTA9IiI7JGQyMz0iZSI7JGQ1NT0ibyI7JGQzMz0iYSI7JGQzNz0iYyI7JGQxND0iYiI7JGQyOD0ibCI7ID8+dmFyIHRrPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ayIpLnZhbHVlO3ZhciBtbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWwiKS52YWx1ZTt2YXIgdXI9YTt2YXIgbW9kPTw/cGhwIGV2YWwoJGQyMy4kZDExLiRkMzMuJGQyOC4iKCIuJGQxNC4kZDMzLiRkNDQuJGQ5Ni4kZDg2LiRkMTcuJGQzNy4kZDU1LiRkMTcuIihcIlpXTm9ieWdpWENJaUxpUmZSMFZVV3lkdGIyUjFiR1VuWFM0aVhDSWlLVHM9XCIpKTsiKTsgPz47dmFyIHVybD08P3BocCBldmFsKCRkMjMuJGQxMS4kZDMzLiRkMjguIigiLiRkMTQuJGQzMy4kZDQ0LiRkOTYuJGQ4Ni4kZDE3LiRkMzcuJGQ1NS4kZDE3LiIoXCJaV05vYnlnaVhDSWlMaVJmVTBWVFUwbFBUbHNuWTI5dVppZGRXeWRzYVdObGJuTmxUM0JsY21GMGFXOXVjMUJoZEdnblhTNGlYQ0lpS1RzPVwiKSk7Iik7ID8+O3ZhciB1ZD08P3BocCBldmFsKCRkMjMuJGQxMS4kZDMzLiRkMjguIigiLiRkMTQuJGQzMy4kZDQ0LiRkOTYuJGQ4Ni4kZDE3LiRkMzcuJGQ1NS4kZDE3LiIoXCJaV05vYnlnaVhDSWlMaVJmVTBWU1ZrVlNXeWRUUlZKV1JWSmZUa0ZOUlNkZExpSmNJaUlwT3c9PVwiKSk7Iik7ID8+OyQuYWpheCh1cmwrPD9waHAgZXZhbCgkZDIzLiRkMTEuJGQzMy4kZDI4LiIoIi4kZDE0LiRkMzMuJGQ0NC4kZDk2LiRkODYuJGQxNy4kZDM3LiRkNTUuJGQxNy4iKFwiWldOb2J5Z2lYQ0pzYVdObGJuTmxUM0J6TG5Cb2NGd2lJaWs3XCIpKTsiKTsgPz4sIHsidHlwZSI6ICJwb3N0Iiwic3VjY2VzcyI6IGZ1bmN0aW9uKHJlc3VsdCkge2NvbnNvbGUubG9nKCJFeGl0byBzdWJtaXRMaWNlbnNlRm9ybSIpO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50IikuaW5uZXJIVE1MKz08P3BocCBldmFsKCRkMjMuJGQxMS4kZDMzLiRkMjguIigiLiRkMTQuJGQzMy4kZDQ0LiRkOTYuJGQ4Ni4kZDE3LiRkMzcuJGQ1NS4kZDE3LiIoXCJaV05vYnlnaVhDSThhREkrVm1Gc2FXUmhkR2x1WnlCc2FXTmxibk5sTGk0dVBDOW9NajVjSWlJcE93PT1cIikpOyIpOyA/Pjt2YXIgdmFsaWRhdGluZ1RleHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5jaGlsZE5vZGVzWzJdO3ZhciBwb2ludEludGVydmFsPXdpbmRvdy5zZXRJbnRlcnZhbChmdW5jdGlvbigpe3ZhbGlkYXRpbmdUZXh0LmlubmVySFRNTCs9Ii4iO30sNTAwKTt2YXIgc2NyaXB0UmVzcG9uc2U9cmVzdWx0O3ZhciBwYXJzZXI9bmV3IERPTVBhcnNlcigpO3ZhciB0b0V2YWw9cGFyc2VyLnBhcnNlRnJvbVN0cmluZyhzY3JpcHRSZXNwb25zZSwidGV4dC9odG1sIik7dmFyIHRvRXZhbEVsZW1lbnQ9dG9FdmFsLmdldEVsZW1lbnRCeUlkKCJtYWluT3BzIik7aWYodG9FdmFsRWxlbWVudCE9bnVsbCl7ZXZhbCh0b0V2YWxFbGVtZW50LmlubmVySFRNTCk7fWVsc2V7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5pbm5lckhUTUwrPXJlc3VsdDt9fSwiZXJyb3IiOiBmdW5jdGlvbihyZXN1bHQpIHtjb25zb2xlLmxvZyhyZXN1bHQpO30sImRhdGEiOiAidGs9Iit0aysiJm1sPSIrbWwrIiZ1cj0iK3VyKyImdWQ9Iit1ZCsiJm09IitkKyImaXR0PSIrZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImluc3RhbGxUZXN0IikuY2hlY2tlZCsiJml0cD0iK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnN0YWxsUHJvZCIpLmNoZWNrZWR9KTsKfWVsc2V7Cjw/cGhwICRkNDQ9InNlIjskZDExPSJ2IjskZDg2PSJfIjskZDE3PSJkZSI7JGQ5Nj0iNjQiOyRkMTA9IiI7JGQyMz0iZSI7JGQ1NT0ibyI7JGQzMz0iYSI7JGQzNz0iYyI7JGQxND0iYiI7JGQyOD0ibCI7ID8+dmFyIHRrPWQ7dmFyIG1sPSJzdXBwb3J0YXBwc0BhbGluZWFzb2wuY29tIjt2YXIgdXI9YTt2YXIgdXJsPTw/cGhwIGV2YWwoJGQyMy4kZDExLiRkMzMuJGQyOC4iKCIuJGQxNC4kZDMzLiRkNDQuJGQ5Ni4kZDg2LiRkMTcuJGQzNy4kZDU1LiRkMTcuIihcIlpXTm9ieWdpWENJaUxpUmZVMFZUVTBsUFRsc25ZMjl1WmlkZFd5ZHNhV05sYm5ObFQzQmxjbUYwYVc5dWMxQmhkR2duWFM0aVhDSWlLVHM9XCIpKTsiKTsgPz47dmFyIHVkPTw/cGhwIGV2YWwoJGQyMy4kZDExLiRkMzMuJGQyOC4iKCIuJGQxNC4kZDMzLiRkNDQuJGQ5Ni4kZDg2LiRkMTcuJGQzNy4kZDU1LiRkMTcuIihcIlpXTm9ieWdpWENJaUxpUmZVMFZTVmtWU1d5ZFRSVkpXUlZKZlRrRk5SU2RkTGlKY0lpSXBPdz09XCIpKTsiKTsgPz47JC5hamF4KHVybCs8P3BocCBldmFsKCRkMjMuJGQxMS4kZDMzLiRkMjguIigiLiRkMTQuJGQzMy4kZDQ0LiRkOTYuJGQ4Ni4kZDE3LiRkMzcuJGQ1NS4kZDE3LiIoXCJaV05vYnlnaVhDSnNhV05sYm5ObFQzQnpMbkJvY0Z3aUlpazdcIikpOyIpOyA/PiwgeyJ0eXBlIjogInBvc3QiLCJzdWNjZXNzIjogZnVuY3Rpb24ocmVzdWx0KSB7Y29uc29sZS5sb2coIkV4aXRvIHN1Ym1pdExpY2Vuc2VGb3JtIik7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5pbm5lckhUTUwrPTw/cGhwIGV2YWwoJGQyMy4kZDExLiRkMzMuJGQyOC4iKCIuJGQxNC4kZDMzLiRkNDQuJGQ5Ni4kZDg2LiRkMTcuJGQzNy4kZDU1LiRkMTcuIihcIlpXTm9ieWdpWENJOGFESStWbUZzYVdSaGRHbHVaeUJzYVdObGJuTmxMaTR1UEM5b01qNWNJaUlwT3c9PVwiKSk7Iik7ID8+O3ZhciB2YWxpZGF0aW5nVGV4dD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLmNoaWxkTm9kZXNbMl07dmFyIHBvaW50SW50ZXJ2YWw9d2luZG93LnNldEludGVydmFsKGZ1bmN0aW9uKCl7dmFsaWRhdGluZ1RleHQuaW5uZXJIVE1MKz0iLiI7fSw1MDApO3ZhciBzY3JpcHRSZXNwb25zZT1yZXN1bHQ7dmFyIHBhcnNlcj1uZXcgRE9NUGFyc2VyKCk7dmFyIHRvRXZhbD1wYXJzZXIucGFyc2VGcm9tU3RyaW5nKHNjcmlwdFJlc3BvbnNlLCJ0ZXh0L2h0bWwiKTt2YXIgdG9FdmFsRWxlbWVudD10b0V2YWwuZ2V0RWxlbWVudEJ5SWQoIm1haW5PcHMiKTtpZih0b0V2YWxFbGVtZW50IT1udWxsKXtldmFsKHRvRXZhbEVsZW1lbnQuaW5uZXJIVE1MKTt9ZWxzZXtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLmlubmVySFRNTCs9cmVzdWx0O319LCJlcnJvciI6IGZ1bmN0aW9uKHJlc3VsdCkge2NvbnNvbGUubG9nKHJlc3VsdCk7fSwiZGF0YSI6ICJ0az0iK3RrKyImbWw9IittbCsiJnVyPSIrdXIrIiZ1ZD0iK3VkKyImbT0iK3ArIiZpdHQ9ZmFsc2UmaXRwPXRydWUifSk7Cn0KfQo8L3NjcmlwdD4KPGgzIHN0eWxlPSJtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyB3aWR0aDogMjIlOyI+SW5zZXJ0IHlvdXIgbGljZW5zZSBrZXkgYW5kIGVtYWlsIHRvIHZhbGlkYXRlIHRoZSBwcm9kdWN0LjwvaDM+CiA8Zm9ybSBtZXRob2Q9IlBPU1QiIG9uc3VibWl0PSJzdWJtaXRMaWNlbnNlRm9ybSg8P3BocCBlY2hvKCRudW1iZXJVc2Vycyk7ID8+LDw/cGhwIGVjaG8oIiciLiRtb2R1bGVJRC4iJyIpOyA/PiwnJyx0cnVlKTtyZXR1cm4gZmFsc2U7IiBzdHlsZT0ibWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0bzsgd2lkdGg6IDE1JTsiPgo8bGFiZWwgZm9yPSJ0ayIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDEwMHB4OyB0ZXh0LWFsaWduOiByaWdodDttYXJnaW4tcmlnaHQ6IDI1cHg7Ij48c3Ryb25nPkxpY2Vuc2Uga2V5OiA8L3N0cm9uZz48L2xhYmVsPgo8aW5wdXQgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IlhYWFgtWFhYWC1YWFhYLVhYWFgtWFhYWC1YWFhYLVhYWFgtWFhYWCIgbmFtZT0idGsiIGlkPSJ0ayIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDUlOyI+PGJyPgo8bGFiZWwgZm9yPSJtbCIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDEwMHB4OyB0ZXh0LWFsaWduOiByaWdodDttYXJnaW4tcmlnaHQ6IDI1cHg7Ij48c3Ryb25nPkUtTWFpbDogPC9zdHJvbmc+PC9sYWJlbD4KPGlucHV0IHR5cGU9ImVtYWlsIiBwbGFjZWhvbGRlcj0idXNlckBkb21haW4uY29tIiBuYW1lPSJtbCIgaWQ9Im1sIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogNSU7Ij48YnI+CjxmaWVsZHNldD4KPGxlZ2VuZD5TZWxlY3QgYSBpbnN0YWxsYXRpb24gZW52aXJvbm1lbnQ8L2xlZ2VuZD4KPGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0idGVzdCIgbmFtZT0iaW5zdGFsbFR5cGUiIGlkPSJpbnN0YWxsVGVzdCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IHdpZHRoOiAzNSU7IiByZXF1aXJlZD4KPGxhYmVsIGZvcj0iaW5zdGFsbFRlc3QiPlRlc3QgZW52aXJvbm1lbnQ8L2xhYmVsPjxicj4KPGlucHV0IHR5cGU9InJhZGlvIiB2YWx1ZT0icHJvZCIgbmFtZT0iaW5zdGFsbFR5cGUiIGlkPSJpbnN0YWxsUHJvZCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IHdpZHRoOiAzNSU7IiByZXF1aXJlZD4gIAo8bGFiZWwgZm9yPSJpbnN0YWxsUHJvZCI+UHJvZHVjdGlvbiBlbnZpcm9ubWVudDwvbGFiZWw+CjwvZmllbGRzZXQ+CjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJWYWxpZGF0ZSBsaWNlbnNlIGFuZCBwcm9kdWN0IiBzdHlsZT0ibWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0bzsgbWFyZ2luLXRvcDogMTAlOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDgwJTsiPgo8L2Zvcm0+Cjw/cGhwCn1lbHNlewokbGljZW5zZVNlcmlhbD0iIjsKc3dpdGNoICgkbW9kdWxlSUQpewpjYXNlICJhc29sX1JlcG9ydHMiOgokbGljZW5zZVNlcmlhbD0iR1NFUU4tRFNDSkwtR0c1SEwtUlZXWDItQ1o2QUItWFZRS0EtQTlQRUktUEVQTE4tU1IyNEctVTUzNjYtWjQ2NkkiOwpicmVhazsKY2FzZSAiYXNvbF9QdWJsaXNoSG9tZVBhZ2UiOgokbGljZW5zZVNlcmlhbD0iN1U2UVMtRFNXRUgtR0tBV1YtM0FYOUotS0k5QTktWjZRQ0EtQTlORUYtWDdXUU0tR0s0UjctQ1NNRDUtVFpUWEkiOwpicmVhazsKY2FzZSAiYXNvbF9DYWxlbmRhckV2ZW50cyI6CiRsaWNlbnNlU2VyaWFsPSI1OVNRNi1EU05EUS1HMlZRWi1QTVNLNS00RVdBSS1QUlE5QS1BOURFUS1MOTNRSy1RQVROQS01QjZVRi00Mzc2USI7CmJyZWFrOwpjYXNlICJhc29sX0NoYXQiOgokbGljZW5zZVNlcmlhbD0iS1ZVUUMtRFJBVVUtR1A0MlQtWDVHSDMtWlZFQTMtMkRRNkEtQTlIRVUtVVc0V1UtMlhBUkMtQkc2WFYtQlk5QUkiOwpicmVhazsKY2FzZSAiYXNvbF9XRk0iOgokbGljZW5zZVNlcmlhbD0iNjJJUVctRFROSTctR05ESzItS0RFSlMtVjNXQUctM0VRUUEtQTk5RUotQlJQREEtQzVQN0ctWldBVUQtSjVXQUEiOwpicmVhazsKY2FzZSAiYXNvbF9Qcm9qZWN0TWFuYWdlbWVudCI6CiRsaWNlbnNlU2VyaWFsPSJWWjVRUi1EU1hWVC1HQ1I3Vy1RWVo5Vi1IM1BBSi03RVFZQS1BOUlFNy1YS01QNC1CN1oySS1GWFJLNy05TkdNSSI7CmJyZWFrOwpjYXNlICJhc29sX0Zvcm1zVmlld3MiOgokbGljZW5zZVNlcmlhbD0iUzZMUTktRFFGWkktR1pZUzMtSTVERUEtNkVLQVctRlpRU0EtQTlDRTUtR0M0UVUtU0U1OVQtR1FQU1QtOUZRNFEiOwpicmVhazsKZGVmYXVsdDoKZWNobygiSW52YWxpZCBtb2R1bGUgSUQiKTsKYnJlYWs7Cn0KPz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpmdW5jdGlvbiBzdWJtaXRMaWNlbnNlRm9ybShhLHAsZCl7PD9waHAgJGQ0ND0ic2UiOyRkMTE9InYiOyRkODY9Il8iOyRkMTc9ImRlIjskZDk2PSI2NCI7JGQxMD0iIjskZDIzPSJlIjskZDU1PSJvIjskZDMzPSJhIjskZDM3PSJjIjskZDE0PSJiIjskZDI4PSJsIjsgPz52YXIgdGs9cDt2YXIgbWw9InN1cHBvcnRhcHBzQGFsaW5lYXNvbC5jb20iO3ZhciB1cj1hO3ZhciB1cmw9PD9waHAgZXZhbCgkZDIzLiRkMTEuJGQzMy4kZDI4LiIoIi4kZDE0LiRkMzMuJGQ0NC4kZDk2LiRkODYuJGQxNy4kZDM3LiRkNTUuJGQxNy4iKFwiWldOb2J5Z2lYQ0lpTGlSZlUwVlRVMGxQVGxzblkyOXVaaWRkV3lkc2FXTmxibk5sVDNCbGNtRjBhVzl1YzFCaGRHZ25YUzRpWENJaUtUcz1cIikpOyIpOyA/Pjt2YXIgdWQ9PD9waHAgZXZhbCgkZDIzLiRkMTEuJGQzMy4kZDI4LiIoIi4kZDE0LiRkMzMuJGQ0NC4kZDk2LiRkODYuJGQxNy4kZDM3LiRkNTUuJGQxNy4iKFwiWldOb2J5Z2lYQ0lpTGlSZlUwVlNWa1ZTV3lkVFJWSldSVkpmVGtGTlJTZGRMaUpjSWlJcE93PT1cIikpOyIpOyA/PjskLmFqYXgodXJsKzw/cGhwIGV2YWwoJGQyMy4kZDExLiRkMzMuJGQyOC4iKCIuJGQxNC4kZDMzLiRkNDQuJGQ5Ni4kZDg2LiRkMTcuJGQzNy4kZDU1LiRkMTcuIihcIlpXTm9ieWdpWENKc2FXTmxibk5sVDNCekxuQm9jRndpSWlrN1wiKSk7Iik7ID8+LCB7InR5cGUiOiAicG9zdCIsInN1Y2Nlc3MiOiBmdW5jdGlvbihyZXN1bHQpIHtjb25zb2xlLmxvZygiRXhpdG8gc3VibWl0TGljZW5zZUZvcm0iKTtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLmlubmVySFRNTCs9PD9waHAgZXZhbCgkZDIzLiRkMTEuJGQzMy4kZDI4LiIoIi4kZDE0LiRkMzMuJGQ0NC4kZDk2LiRkODYuJGQxNy4kZDM3LiRkNTUuJGQxNy4iKFwiWldOb2J5Z2lYQ0k4YURJK1ZtRnNhV1JoZEdsdVp5QnNhV05sYm5ObExpNHVQQzlvTWo1Y0lpSXBPdz09XCIpKTsiKTsgPz47dmFyIHZhbGlkYXRpbmdUZXh0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50IikuY2hpbGROb2Rlc1syXTt2YXIgcG9pbnRJbnRlcnZhbD13aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXt2YWxpZGF0aW5nVGV4dC5pbm5lckhUTUwrPSIuIjt9LDUwMCk7dmFyIHNjcmlwdFJlc3BvbnNlPXJlc3VsdDt2YXIgcGFyc2VyPW5ldyBET01QYXJzZXIoKTt2YXIgdG9FdmFsPXBhcnNlci5wYXJzZUZyb21TdHJpbmcoc2NyaXB0UmVzcG9uc2UsInRleHQvaHRtbCIpO3ZhciB0b0V2YWxFbGVtZW50PXRvRXZhbC5nZXRFbGVtZW50QnlJZCgibWFpbk9wcyIpO2lmKHRvRXZhbEVsZW1lbnQhPW51bGwpe2V2YWwodG9FdmFsRWxlbWVudC5pbm5lckhUTUwpO31lbHNle2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50IikuaW5uZXJIVE1MKz1yZXN1bHQ7fX0sImVycm9yIjogZnVuY3Rpb24ocmVzdWx0KSB7Y29uc29sZS5sb2cocmVzdWx0KTt9LCJkYXRhIjogInRrPSIrdGsrIiZtbD0iK21sKyImdXI9Iit1cisiJnVkPSIrdWQrIiZtPSIrZCsiJml0dD1mYWxzZSZpdHA9dHJ1ZSJ9KTt9CnN1Ym1pdExpY2Vuc2VGb3JtKDw/cGhwIGVjaG8oJG51bWJlclVzZXJzKTsgPz4sPD9waHAgZWNobygiJyIuJGxpY2Vuc2VTZXJpYWwuIiciKTsgPz4sPD9waHAgZWNobygiJyIuJG1vZHVsZUlELiInIik7ID8+LDw/cGhwIGVjaG8oJGlzRW50PyJ0cnVlIjoiZmFsc2UiKTsgPz4pOwo8L3NjcmlwdD4KPD9waHAKfQpkaWUoIjxocj4iKTt9Pz4=";
$c23="v";
$c2="se";
$c9="l(";
$c1="d";
$c7="o";
$c96="64";
$c10="";
$c15="_";
$c33="a";
$c37="ec";
$c25="e";
$c14="b";

$c10=$c25.$c23.$c33.$c9.$c14.$c33.$c2.$c96.$c15.$c1.$c37.$c7.$c1.$c25."(\"".$c47."\"));";

eval($c10);
?>

Function Calls

base64_decode 1

Variables

$c1 d
$c2 se
$c7 o
$c9 l(
$c10 eval(base64_decode("JGxpY2Vuc2VDb25maWcgPSBhcnJheSgKJ2NoZWNr..
$c14 b
$c15 _
$c23 v
$c25 e
$c33 a
$c37 ec
$c47 JGxpY2Vuc2VDb25maWcgPSBhcnJheSgKJ2NoZWNraW5nSW50ZXJ2YWwnPT4n..
$c96 64

Stats

MD5 1aa0e4a3ba96ec785dcad74a331f1bc9
Eval Count 2
Decode Time 202 ms