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 $_F=__FILE__;$_C1353562110='Pz48P3BOcA0KUENQX0Q0eignTFBEcHI2V180VFRJVEQnLCBlKTsNCi8v..

Decoded Output download

?><?php
ini_set('display_errors', 1);
//error_reporting(E_ALL);
//error_reporting(0);
//ini_set('display_errors', 0);
//error_reporting(E_ERROR);
//error_reporting(E_ALL);
$base = dirname(dirname('index.php'));

$minPHPVersion = '7.1';
if (phpversion() < $minPHPVersion) {
    die("Your PHP version must be {$minPHPVersion} or higher to run dMACQ DMS. Current version: " . phpversion());
}
#==============================================================>>
#               Cookie Security - VAPT
#==============================================================>>
session_set_cookie_params(0, '/', '', false, true);
//session_set_cookie_params(0, '/;samesite=Strict', '', false, true);
/*$secure = false; // if you only want to receive the cookie over HTTPS
$httponly = false; // prevent JavaScript access to session cookie
$samesite = 'strict';
$maxlifetime = 0;
if (PHP_VERSION_ID <= 70300) {
	
    session_set_cookie_params($maxlifetime, '/; samesite=' . $samesite, $_SERVER['HTTP_HOST'], $secure, $httponly);
} else {
	
    session_set_cookie_params([
        'lifetime' => $maxlifetime,
        'path' => '/',
        'domain' => $_SERVER['HTTP_HOST'],
        'secure' => $secure,
        //'httponly' => $httponly,
        //'samesite' => $samesite
    ]);
}*/

#==============================================================>>
#           Cookie Security - END
#==============================================================>>

@session_start();

date_default_timezone_set("Asia/Kolkata");
$user_agent = $_SERVER['HTTP_USER_AGENT'];


if (!defined('APP_DB')) {
    // define('APP_DB', $getdatabase[0]['sqltype']);
    define('APP_DB', 'MYSQL');
}


if (APP_DB == "MYSQL") {
    include_once "config.php";
    $app_db = "MYSQL";
    $_SESSION['appdb'] = $app_db;
} else {

    $app_db = "MSSQL";
    $_SESSION['appdb'] = $app_db;
    include_once "msconfig.php";
}


include_once "function/date_diff.php";
include_once "function/smtp_mail.php";
include_once "function/imageResize.php";
include_once "function/switch_status_css.php";
include_once "function/num_to_word.php";
include_once "function/change_date_format.php";
include_once "function/getFileSize.php";
//include_once "function/mcrypt.php";
include_once "function/openssl.php";
include 'function/encryption_block/stream_encrypt.php';
include_once "function/get_mime_type.php";
include_once "function/encode_imap_body.php";
include_once "function/files2txt.php";
include_once "function/foldersize.php";
include_once "function/pdftotext.php";
include_once "function/pdftohtml.php";
include_once "function/ghostscript.php";
include_once "function/pdftk.php";
include_once "function/print_categories_tree.php";
include_once "function/page_count.php";
include_once "function/generateRandomString.php";
include_once "function/tree_categories_select.php";
include_once "function/tree_categories_select2.php";
include_once "function/category_tree_new.php";
include_once "function/category_tree_left.php";
include_once "function/convertDigitToWord.php";
include_once "function/mysql.php";
include_once "function/gzip.php";
include_once "function/filetotext.php";
include_once "function/pdf_readstream.php";
include_once "function/tree_folder.php";
include_once "function/get_dir_size.php";
include_once "function/clear_session_files.php";
include_once "function/validateStoragePath.php";
include_once "mysql/global_db.php";
include_once "function/change_permission.php";
include_once "function/storage_path_valid_size.php";
include_once "function/bcp.php";
include_once "function/remove_dir.php";
include_once "function/compare_pdf.php";
include_once "function/if_cond.php";

include_once "function/random_color.php";
include_once "function/pdfinfo.php";
include_once "function/pdfcairo.php";
include_once "function/is_encrypted.php";
include_once "function/get_pdfsig_info.php";

include_once "function/gen_digital_cert.php";
include_once "function/gen_openssl_keys.php";
//include("function/CronDMS.php");

include_once "function/tiff_convert.php";

include_once "function/workflow_status_update_na.php";
include_once "function/workflow_status_add_na.php";

include_once "function/workflow_status_update.php";
include_once "function/workflow_status_add.php";
include_once "function/pdf_log_insertion.php";
include_once "function/doc_convert_to_pdf.php";
include_once "function/upload_workflow_doc.php";
include_once "function/gv_ocr.php";
include_once "function/imagemagick.php";
include_once "function/categories_tree_delete.php";

include_once "function/cryptojs-aes.php";
include_once "function/exiftool.php";

include_once "function/pdf_page_count.php";
include("function/generate_image_thumbnail.php");

include("function/convert_image.php");
include("function/draw_image_watermark.php");
//klearstack starts
include_once $base.'/API/klearstack/uploadFileToApi.php';
include_once $base.'/API/klearstack/getBatchInvoice.php';
//klearstack ends

$db_class = '';


if ($app_db == "MYSQL") {

    try {
        if ($db = new PDO("mysql:host=$server;port=$default_sqlportnumber;dbname=$database;charset=utf8", "$user", "$pass")) {
            $db_class = 'mysql';
        } else {
            throw new Exception('Unable to connect');
        }
    } catch (Exception $e) {
        echo 'Couldn	 connect to database';
        die;
    }
} else {
    try {
        //;ConnectionPooling=0
        if ($db = new PDO("sqlsrv:Server=$server;ConnectionPooling=0;Database=$database", "$user", "$pass")) {
            $db_class = 'mssql';
        } else {
            throw new Exception('Unable to connect');
        }
    } catch (Exception $ex) {
        echo 'Couldn	 connect to database';
        die;
    }


    // $mssqldriver = '{SQL Server}'; 
//$mssqldriver = '{SQL Server Native Client 11.0}';
//$mssqldriver = '{ODBC Driver 10 for SQL Server}';
//$hostname='127.0.0.1';
//$dbname='test';
//$username='user';
//$password='pw';
//$db = new PDO("odbc:Driver=$mssqldriver;Server=$server;Database=$database", $user, $pass);
}

if (!function_exists("app_class_autoloader")) {
    if ($db_class == "mysql") {

        function app_class_autoloader($class_name) {
            if (!class_exists('Zend\Escaper\Escaper')) {
                require_once "vendor/zendframework/zend-escaper/src/Escaper.php";
            }
            if (!class_exists("$class_name") && $class_name != 'Generate_OTP') {
                if (file_exists(dirname('index.php') . "/protection/{$class_name}.php")) {
                    require_once "protection/{$class_name}.php";
                } else {
                    require_once "mysql/{$class_name}.php";
                }
            }
        }

    } else {

        function app_class_autoloader($class_name) {
            if (!class_exists('Zend\Escaper\Escaper')) {
                require_once "vendor/zendframework/zend-escaper/src/Escaper.php";
            }
            if (!class_exists("$class_name") && $class_name != 'Generate_OTP') {
                if (file_exists(dirname('index.php') . "/protection/{$class_name}.php")) {
                    require_once "protection/{$class_name}.php";
                } else {
                    require_once "mssql/{$class_name}.php";
                }
                //require_once "mssql/{$class_name}.php";
            }
        }

    }
    spl_autoload_register('app_class_autoloader');
}

if (PHP_SAPI != 'cli') {
    #====================================================================>>
    #               URL - SANITIZATION
    #====================================================================>>

    $SFILTER = new sanitize_filters();
    $sanitize_xss_url = $SFILTER->sanitize_xss_url();
    //print_r($sanitize_xss_url);
    if (count($sanitize_xss_url['log'] ?? []) > 0) {
        if (basename($_SERVER["SCRIPT_FILENAME"], '.php') == "index") {
            exit($SFILTER->generate_html_log());        
        }
    }

    #====================================================================>>
    #           QUERY STRING - SANITIZATION
    #====================================================================>>
    if(isset($_POST['jCryption'])){
        JCryption::decrypt();
    }

    foreach ($_GET AS $key => $value) {
        $querystring_args[$key] = "string";
    }
    $SFILTER = new sanitize_filters();
    $sanitize_querystring_arr = $SFILTER->sanitize_get_array($querystring_args);
    if (count($sanitize_querystring_arr['log'] ?? []) > 0) {
        if (empty($disable_generate_html_log)) {
            exit($SFILTER->generate_html_log());
        }
    }
    #====================================================================>>
    #                   DECRYPTING - POST VALUES
    #====================================================================>>
    //print_r($_POST);
    /*$crypto_decrypt = cryptoJsAesDecrypt('Secret Passphrase', $_POST["form_data"]);
    foreach ($crypto_decrypt AS $key => $crypto_decrypt_val) {

        $key_arr = explode('[]', $key);
        $pos = strpos($key, '[]');
        if ($pos === false) {
            $key_val = filter_var($key, FILTER_SANITIZE_STRING);
            $_POST[$key_val] = rawurldecode($crypto_decrypt_val);        
            $_REQUEST[$key_val] = rawurldecode($crypto_decrypt_val);        
        } else {
            $key_val = filter_var($key_arr[0], FILTER_SANITIZE_STRING);
            $_POST[$key_val] = array();
            $_REQUEST[$key_val] = array();
            if (is_array($crypto_decrypt_val)) {            
                foreach ($crypto_decrypt_val as $crypto_decrypt_value) {
                    array_push($_POST[$key_val], rawurldecode($crypto_decrypt_value));                
                    array_push($_REQUEST[$key_val], rawurldecode($crypto_decrypt_value));                
                }
            } else {            
                array_push($_POST[$key_val], rawurldecode($crypto_decrypt_val));
                array_push($_REQUEST[$key_val], rawurldecode($crypto_decrypt_val));
               
            }
        }
    }
    //print_r($_POST);
    */

    #====================================================================>>
    #           POST - SANITIZATION
    #====================================================================>>
    $skip_post_arr = array("form_data", "jCryption", "txt_default_validation", "elm1", "comment", "chat_comment", "licensepage", "logical_operator", "logical_operator2", "index_master_fields", "index_searches", "master_searches", "sel_Years","appfooter", "chat_comment_text","dfs_path","dfs_path_edit");
    foreach ($_POST AS $key => $value) {
        if(!in_array($key, $skip_post_arr)){
        $poststring_args[$key] = "string";
        }
    }

    $SFILTER = new sanitize_filters();
    $sanitize_poststring_arr = $SFILTER->sanitize_post_array($poststring_args);
    if (count($sanitize_poststring_arr['log'] ?? []) > 0) {
        if (empty($disable_generate_html_log)) {
            exit($SFILTER->generate_html_log());
        }
    }
    #====================================================================>>
    #           REQUEST - SANITIZATION
    #====================================================================>>
    $skip_request_arr = array("form_data", "jCryption", "txt_default_validation", "elm1", "comment", "chat_comment", "licensepage", "logical_operator", "logical_operator2", "index_master_fields", "index_searches", "master_searches", "dsdd", "file_name_1", "index_master_id","appfooter", "chat_comment_text","dfs_path","dfs_path_edit");
    foreach ($_REQUEST AS $key => $value) {
        if(!in_array($key, $skip_request_arr)){
        $querystring_args[$key] = "string";
        }
    }

    $SFILTER = new sanitize_filters();
    $sanitize_querystring_arr = $SFILTER->sanitize_request_array($querystring_args);
    if (count($sanitize_querystring_arr['log'] ?? []) > 0) {
        if (empty($disable_generate_html_log)) {
            exit($SFILTER->generate_html_log());
        }
    }
    #====================================================================>>
    #           END
    #====================================================================>>
}


include_once "function/password_policy.php";
include_once "function/EmployeeMasterFn.php";
//} else {
//if (!function_exists("__autoload")) {
//  function __autoload($class_name) {
//    require_once "mysql/{$class_name}.php";
//}
//}
//}


/* ini_set('max_execution_time', 6000000);
  ini_set('memory_limit', '-1');
  ini_set('upload_max_filesize', '1024M');
  ini_set('post_max_size', '1024M'); */

if (file_exists($base . "/lib/ini_set_global.php")) {
    include($base . "/lib/ini_set_global.php");
}

set_time_limit(0);


$Global_Settings = new global_settings($db);
#=================================GET MySQL Version========================================
if (APP_DB == 'MYSQL') {
    if (!defined('CURRENT_MYSQL_VERSION')) {
        $curr_mysql_vesion = $Global_Settings->getMySQLVersion();
        if (empty($curr_mysql_vesion)) {
            $curr_mysql_vesion = MIN_MYSQL_VERSION;
        }
        define('CURRENT_MYSQL_VERSION', $curr_mysql_vesion);
    }
}
#=================================GET MySQL Version========================================
$application_details = $Global_Settings->getApplicationInformation_All();

$license_details = $Global_Settings->getLicenseInformation_All();

/* * *********************************** */

$application_setting_sizeLimit_detail = $Global_Settings->get_application_sizeLimit_detail();
/* * *********************************** */
$app_name = $application_details[0]['application_name'];
$app_footer = $application_details[0]['application_footer'];
$app_address = $application_details[0]['application_address'];
$app_session = $application_details[0]['application_tax'];

$mail_details = $Global_Settings->getApplicationMailSettings_All();

$file1 = 'resources/images/image_logo.png';
if ($application_details[0]['application_logo'] == '') {
    $file1 = '';
} else {
    $d_content = base64_decode($application_details[0]['application_logo']);
    file_put_contents($file1, $d_content);
}


include_once "global.php"; //configuration file
//database settings


#====================================================================>>
#           CSRF Tokens Verifications - VAPT
#====================================================================>>
//print_r($_POST);
if (isset($_POST['token_form'])) {
    $token_form = decrypt_url($_POST['token_form'], APP_ENCRYPTION_SALT);    
    $CSRFP = new csrf_protector(3);
    $CSRFP->authorise_csrf_post($token_form);
}

//
#====================================================================>>
#           CSRF Tokens - END
#====================================================================>>
#==============================================================>>
#           Proper session handling - VAPT
#==============================================================>>
//if (PHP_SAPI != 'cli') {
//    $current_url_php_file = basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']);
//    $pos = strpos($current_url_php_file, ".php");
//    if ($pos !== false) {
//        $session_handling_arr = array('index.php',"login.php", "login_mssql.php", "renew_password.php", "renew_password_form.php", "forgot_password.php", "im_value_search_abhi.php");
//        $url_dir_name = dirname($_SERVER['PHP_SELF']);
//        $url_dir_name_arr = explode('/', $url_dir_name);
//        //print_r($url_dir_name_arr);
//        if (count($url_dir_name_arr ?? []) > 2 && !in_array($current_url_php_file, $session_handling_arr)) {
//            if (!isset($_SESSION[SESSION_VAR_NAME]['user_id'])) {
//                header("location: ../error_401.php");
//                exit();
//            }
//        }
//    }else{
//        header("location: index.php");
//        exit();
//    }
//}
#==============================================================>>
#           Proper session handling  - END
#==============================================================>>
if (!defined('APP_SERVER')) {
    define('APP_SERVER', $server);
}

if (!defined('APP_DATABASE')) {
    define('APP_DATABASE', $database);
}

if (!defined('APP_USERNAME')) {
    define('APP_USERNAME', $user);
}


if (!defined('APP_PASSWORD')) {
    define('APP_PASSWORD', $pass);
}

if (!defined('APP_DBPORT')) {
    define('APP_DBPORT', $default_sqlportnumber);
}
/* * *********************** */
/*       MAIL SYSTEM      */
/* * *********************** */

if (!defined('APP_PATH')) {
    define('APP_PATH', substr(__DIR__, 0, strlen(__DIR__) - 3));
}
if (!defined('APP_MAIL_SERVER')) {
    define('APP_MAIL_SERVER', $app_name . ' DMS');
}
if (!defined('APP_SMTP_PROTOCOL_CRON')) {
    define('APP_SMTP_PROTOCOL_CRON', $mail_details[0]['SMTP_protocol']);
}

if (!defined('APP_SMTP_HOST_CRON')) {
    define('APP_SMTP_HOST_CRON', $mail_details[0]['SMTP_host']);
}

if (!defined('APP_SMTP_PORT_CRON')) {
    define('APP_SMTP_PORT_CRON', $mail_details[0]['SMTP_port']);
}

if (!defined('APP_MAIL_AUTH_USER_CRON')) {
    define('APP_MAIL_AUTH_USER_CRON', $mail_details[0]['Auth_email']);
}

if (!defined('APP_MAIL_AUTH_PASS_CRON')) {
    define('APP_MAIL_AUTH_PASS_CRON', decrypt_pass($mail_details[0]['Auth_password'], APP_ENCRYPTION_SALT));
}


if (!defined('APP_IMAP_HOST_CRON')) {
    define('APP_IMAP_HOST_CRON', $mail_details[0]['IMAP_host']);
}

if (!defined('APP_IMAP_PORT_CRON')) {
    define('APP_IMAP_PORT_CRON', $mail_details[0]['IMAP_port']);
}
if (!defined('APP_FILE_SIZE')) {
    define('APP_FILE_SIZE', $application_setting_sizeLimit_detail[2]['size']);
}
/*if (!empty($_SESSION[SESSION_VAR_NAME]['user_id'])) {

    $MAIL = new mail_system($db);
    $mail_settings = $MAIL->getSettings_ByUserId($_SESSION[SESSION_VAR_NAME]['user_id']);

    if (!defined('APP_SMTP_PROTOCOL')) {
        define('APP_SMTP_PROTOCOL', $mail_settings[0]['protocol']);
    }

    if (!defined('APP_SMTP_HOST')) {
        define('APP_SMTP_HOST', $mail_settings[0]['smtp_host']);
    }

    if (!defined('APP_SMTP_PORT')) {
        define('APP_SMTP_PORT', $mail_settings[0]['smtp_port']);
    }

if (!defined('APP_SMTP_HOST_IP_CRON')) {
    $div_hostip = explode('.', APP_SMTP_HOST);
    $hostip = $div_hostip[1] . '.' . $div_hostip[2];
    define('APP_SMTP_HOST_IP_CRON', $hostip);
}

    if (!defined('APP_MAIL_AUTH_USER')) {
        define('APP_MAIL_AUTH_USER', $mail_settings[0]['mail_user']);
    }

    if (!defined('APP_MAIL_AUTH_PASS')) {
        define('APP_MAIL_AUTH_PASS', decrypt_pass($mail_settings[0]['mail_pass'], APP_ENCRYPTION_SALT));
    }

    if (!defined('APP_SMTP_HOST_IP')) {
        $div_hostip = explode('.', APP_SMTP_HOST);
        $hostip = $div_hostip[1] . '.' . $div_hostip[2];
        define('APP_SMTP_HOST_IP', $hostip);
    }

    if (!defined('APP_IMAP_HOST')) {
        define('APP_IMAP_HOST', $mail_settings[0]['imap_host']);
    }

    if (!defined('APP_IMAP_PORT')) {
        define('APP_IMAP_PORT', $mail_settings[0]['imap_port']);
    }

   //*     * ********************OTHER ****************************** 
 
    if (!defined('APP_MAIL_ADDRESS')) {
        define('APP_MAIL_ADDRESS', '');
    }

    if (!defined('APP_MAIL_LOGIN')) {
        define('APP_MAIL_LOGIN', $base_url1);
    }
} else {*/
//...................................................
if (!empty($_SESSION[SESSION_VAR_NAME]['user_id'])) {

    if (!defined('APP_MAIL_ADDRESS')) {
        define('APP_MAIL_ADDRESS', '');
    }

    if (!defined('APP_MAIL_LOGIN')) {
        define('APP_MAIL_LOGIN', $base_url1);
    }
}
    if (!defined('APP_SMTP_PROTOCOL')) {
        define('APP_SMTP_PROTOCOL', $mail_details[0]['SMTP_protocol']);
    }

    if (!defined('APP_SMTP_HOST')) {
        define('APP_SMTP_HOST', $mail_details[0]['SMTP_host']);
    }
    
if (!defined('APP_SMTP_HOST_IP_CRON')) {
    $div_hostip = explode('.', APP_SMTP_HOST);
    $hostip = $div_hostip[1] . '.' . $div_hostip[2];
    define('APP_SMTP_HOST_IP_CRON', $hostip);
}

    if (!defined('APP_SMTP_PORT')) {
        define('APP_SMTP_PORT', $mail_details[0]['SMTP_port']);
    }

    if (!defined('APP_MAIL_AUTH_USER')) {
        define('APP_MAIL_AUTH_USER', $mail_details[0]['Auth_email']);
    }

    if (!defined('APP_MAIL_AUTH_PASS')) {
        define('APP_MAIL_AUTH_PASS', decrypt_pass($mail_details[0]['Auth_password'], APP_ENCRYPTION_SALT));
    }

    if (!defined('APP_SMTP_HOST_IP')) {
        $div_hostip = explode('.', APP_SMTP_HOST);
        $hostip = $div_hostip[1] . '.' . $div_hostip[2];
        define('APP_SMTP_HOST_IP', $hostip);
    }

    if (!defined('APP_IMAP_HOST')) {
        define('APP_IMAP_HOST', $mail_details[0]['IMAP_host']);
    }

    if (!defined('APP_IMAP_PORT')) {
        define('APP_IMAP_PORT', $mail_details[0]['IMAP_port']);
    }
	
	//..........................................................
//}
include_once "vendor/zendframework/zend-escaper/src/Escaper.php";
?>

Did this file decode correctly?

Original Code

<?php $_F=__FILE__;$_C1353562110='Pz48P3BOcA0KUENQX0Q0eignTFBEcHI2V180VFRJVEQnLCBlKTsNCi8vNFRUSVRfVDRwSVR6UENWKDFfQUZGKTsNCi8vNFRUSVRfVDRwSVR6UENWKHUpOw0KLy9QQ1BfRDR6KCdMUERwcjZXXzRUVElURCcsIHUpOw0KLy80VFRJVF9UNHBJVHpQQ1YoMV8xampoaik7DQovLzRUVElUX1Q0cElUelBDVigxX0FGRik7DQokdjZENCA9IExQVEM2YjQoTFBUQzZiNChfX2lKRjFfXykpOw0KDQokYlBDUkVSMjRURFBJQyA9ICdVLmUnOw0KUGsgKHBOcHM0VERQSUMoKSA8ICRiUENSRVIyNFREUElDKSB7DQogICAgTFA0KCJ4SUhUIFJFUiBzNFREUElDIGJIRHogdjQgeyRiUENSRVIyNFREUElDfSBJVCBOUFZONFQgekkgVEhDIEw3QWxCIGQ3Zy4gbEhUVDRDeiBzNFREUElDOiAiIC4gcE5wczRURFBJQygpKTsNCn0NCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT4+DQojICAgICAgICAgICAgICAgbElJUVA0IGc0bUhUUHpXIC0gMkFSZg0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4NCkQ0RERQSUNfRDR6X21JSVFQNF9wNlQ2YkQodSwgJy8nLCAnJywgazZyRDQsIHpUSDQpOw0KLy9ENEREUElDX0Q0el9tSUlRUDRfcDZUNmJEKHUsICcvO0Q2YjREUHo0PWd6VFBteicsICcnLCBrNnJENCwgelRINCk7DQovKiRENG1IVDQgPSBrNnJENDsgLy8gUGsgV0lIIElDclcgeTZDeiB6SSBUNG00UHM0IHpONCBtSUlRUDQgSXM0VCBFZmZSZw0KJE56enBJQ3JXID0gazZyRDQ7IC8vIHBUNHM0Q3ogbjZzNmdtVFBweiA2bW00REQgekkgRDRERFBJQyBtSUlRUDQNCiRENmI0RFB6NCA9ICdEelRQbXonOw0KJGI2T3JQazR6UGI0ID0gdTsNClBrIChSRVJfMjFqZ0poWl9KZCA8PSBVdWF1dSkgew0KCQ0KICAgIEQ0RERQSUNfRDR6X21JSVFQNF9wNlQ2YkQoJGI2T3JQazR6UGI0LCAnLzsgRDZiNERQejQ9JyAuICRENmI0RFB6NCwgJF9nMWoyMWpbJ0VmZlJfRWhnZiddLCAkRDRtSFQ0LCAkTnp6cElDclcpOw0KfSA0ckQ0IHsNCgkNCiAgICBENEREUElDX0Q0el9tSUlRUDRfcDZUNmJEKFsNCiAgICAgICAgJ3JQazR6UGI0JyA9PiAkYjZPclBrNHpQYjQsDQogICAgICAgICdwNnpOJyA9PiAnLycsDQogICAgICAgICdMSWI2UEMnID0+ICRfZzFqMjFqWydFZmZSX0VoZ2YnXSwNCiAgICAgICAgJ0Q0bUhUNCcgPT4gJEQ0bUhUNCwNCiAgICAgICAgLy8nTnp6cElDclcnID0+ICROenpwSUNyVywNCiAgICAgICAgLy8nRDZiNERQejQnID0+ICRENmI0RFB6NA0KICAgIF0pOw0KfSovDQoNCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT4+DQojICAgICAgICAgICBsSUlRUDQgZzRtSFRQelcgLSAxWmQNCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT4+DQoNCkBENEREUElDX0R6NlR6KCk7DQoNCkw2ejRfTDRrNkhyel96UGI0WElDNF9ENHooIkFEUDYvOElyUTZ6NiIpOw0KJEhENFRfNlY0Q3ogPSAkX2cxajIxalsnRWZmUl8wZzFqX0FZMVpmJ107DQoNCg0KUGsgKCFMNGtQQzRMKCdBUlJfZHcnKSkgew0KICAgIC8vIEw0a1BDNCgnQVJSX2R3JywgJFY0ekw2ejZ2NkQ0W3VdWydEcXJ6V3A0J10pOw0KICAgIEw0a1BDNCgnQVJSX2R3JywgJzd4Z0JGJyk7DQp9DQoNCg0KUGsgKEFSUl9kdyA9PSAiN3hnQkYiKSB7DQogICAgUENtckhMNF9JQ200ICJtSUNrUFYucE5wIjsNCiAgICAkNnBwX0x2ID0gIjd4Z0JGIjsNCiAgICAkX2cxZ2dKaFpbJzZwcEx2J10gPSAkNnBwX0x2Ow0KfSA0ckQ0IHsNCg0KICAgICQ2cHBfTHYgPSAiN2dnQkYiOw0KICAgICRfZzFnZ0poWlsnNnBwTHYnXSA9ICQ2cHBfTHY7DQogICAgUENtckhMNF9JQ200ICJiRG1JQ2tQVi5wTnAiOw0KfQ0KDQoNClBDbXJITDRfSUNtNCAia0hDbXpQSUMvTDZ6NF9MUGtrLnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL0RienBfYjZQci5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9QYjZWNGo0RFBYNC5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9EeVB6bU5fRHo2ekhEX21ERC5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9DSGJfeklfeUlUTC5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9tTjZDVjRfTDZ6NF9rSVRiNnoucE5wIjsNClBDbXJITDRfSUNtNCAia0hDbXpQSUMvVjR6aVByNGdQWDQucE5wIjsNCi8vUENtckhMNF9JQ200ICJrSENtelBJQy9ibVRXcHoucE5wIjsNClBDbXJITDRfSUNtNCAia0hDbXpQSUMvSXA0Q0REci5wTnAiOw0KUENtckhMNCAna0hDbXpQSUMvNENtVFdwelBJQ192ckltUS9EelQ0NmJfNENtVFdwei5wTnAnOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9WNHpfYlBiNF96V3A0LnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDLzRDbUlMNF9QYjZwX3ZJTFcucE5wIjsNClBDbXJITDRfSUNtNCAia0hDbXpQSUMva1ByNERTek96LnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL2tJckw0VERQWDQucE5wIjsNClBDbXJITDRfSUNtNCAia0hDbXpQSUMvcExrekl6NE96LnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL3BMa3pJTnpici5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9WTklEekRtVFBwei5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9wTGt6US5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9wVFBDel9tNno0VklUUDREX3pUNDQucE5wIjsNClBDbXJITDRfSUNtNCAia0hDbXpQSUMvcDZWNF9tSUhDei5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9WNEM0VDZ6NGo2Q0xJYmd6VFBDVi5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy96VDQ0X202ejRWSVRQNERfRDRyNG16LnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL3pUNDRfbTZ6NFZJVFA0RF9ENHI0bXpTLnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL202ejRWSVRXX3pUNDRfQzR5LnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL202ejRWSVRXX3pUNDRfcjRrei5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9tSUNzNFR6ZFBWUHpmSWNJVEwucE5wIjsNClBDbXJITDRfSUNtNCAia0hDbXpQSUMvYldEcXIucE5wIjsNClBDbXJITDRfSUNtNCAia0hDbXpQSUMvVlhQcC5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9rUHI0ekl6NE96LnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL3BMa19UNDZMRHpUNDZiLnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL3pUNDRfa0lyTDRULnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL1Y0el9MUFRfRFBYNC5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9tcjQ2VF9ENEREUElDX2tQcjRELnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL3M2clBMNno0Z3pJVDZWNFI2ek4ucE5wIjsNClBDbXJITDRfSUNtNCAiYldEcXIvVnJJdjZyX0x2LnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL21ONkNWNF9wNFRiUEREUElDLnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL0R6SVQ2VjRfcDZ6Tl9zNnJQTF9EUFg0LnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL3ZtcC5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9UNGJJczRfTFBULnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL21JYnA2VDRfcExrLnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL1BrX21JQ0wucE5wIjsNCg0KUENtckhMNF9JQ200ICJrSENtelBJQy9UNkNMSWJfbUlySVQucE5wIjsNClBDbXJITDRfSUNtNCAia0hDbXpQSUMvcExrUENrSS5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9wTGttNlBUSS5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9QRF80Q21UV3B6NEwucE5wIjsNClBDbXJITDRfSUNtNCAia0hDbXpQSUMvVjR6X3BMa0RQVl9QQ2tJLnBOcCI7DQoNClBDbXJITDRfSUNtNCAia0hDbXpQSUMvVjRDX0xQVlB6NnJfbTRUei5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9WNENfSXA0Q0REcl9RNFdELnBOcCI7DQovL1BDbXJITDQoImtIQ216UElDL2xUSUNkN2cucE5wIik7DQoNClBDbXJITDRfSUNtNCAia0hDbXpQSUMvelBra19tSUNzNFR6LnBOcCI7DQoNClBDbXJITDRfSUNtNCAia0hDbXpQSUMveUlUUWtySXlfRHo2ekhEX0hwTDZ6NF9DNi5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy95SVRRa3JJeV9EejZ6SERfNkxMX0M2LnBOcCI7DQoNClBDbXJITDRfSUNtNCAia0hDbXpQSUMveUlUUWtySXlfRHo2ekhEX0hwTDZ6NC5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy95SVRRa3JJeV9EejZ6SERfNkxMLnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL3BMa19ySVZfUENENFR6UElDLnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL0xJbV9tSUNzNFR6X3pJX3BMay5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9IcHJJNkxfeUlUUWtySXlfTEltLnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDL1ZzX0ltVC5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9QYjZWNGI2VlBtUS5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy9tNno0VklUUDREX3pUNDRfTDRyNHo0LnBOcCI7DQoNClBDbXJITDRfSUNtNCAia0hDbXpQSUMvbVRXcHpJM0QtNjRELnBOcCI7DQpQQ21ySEw0X0lDbTQgImtIQ216UElDLzRPUGt6SUlyLnBOcCI7DQoNClBDbXJITDRfSUNtNCAia0hDbXpQSUMvcExrX3A2VjRfbUlIQ3oucE5wIjsNClBDbXJITDQoImtIQ216UElDL1Y0QzRUNno0X1BiNlY0X3pOSGJ2QzZQci5wTnAiKTsNCg0KUENtckhMNCgia0hDbXpQSUMvbUlDczRUel9QYjZWNC5wTnAiKTsNClBDbXJITDQoImtIQ216UElDL0xUNnlfUGI2VjRfeTZ6NFRiNlRRLnBOcCIpOw0KLy9RcjQ2VER6Nm1RIER6NlR6RA0KUENtckhMNF9JQ200ICR2NkQ0LicvQVJKL1FyNDZURHo2bVEvSHBySTZMaVByNGZJQXBQLnBOcCc7DQpQQ21ySEw0X0lDbTQgJHY2RDQuJy9BUkovUXI0NlREejZtUS9WNHp3NnptTkpDc0lQbTQucE5wJzsNCi8vUXI0NlREejZtUSA0Q0xEDQoNCiRMdl9tcjZERCA9ICcnOw0KDQoNClBrICgkNnBwX0x2ID09ICI3eGdCRiIpIHsNCg0KICAgIHpUVyB7DQogICAgICAgIFBrICgkTHYgPSBDNHkgUmRoKCJiV0RxcjpOSUR6PSRENFRzNFQ7cElUej0kTDRrNkhyel9EcXJwSVR6Q0hidjRUO0x2QzZiND0kTDZ6NnY2RDQ7bU42VEQ0ej1IemtLIiwgIiRIRDRUIiwgIiRwNkREIikpIHsNCiAgICAgICAgICAgICRMdl9tcjZERCA9ICdiV0Rxcic7DQogICAgICAgIH0gNHJENCB7DQogICAgICAgICAgICB6TlRJeSBDNHkgMU9tNHB6UElDKCcwQzZ2cjQgekkgbUlDQzRteicpOw0KICAgICAgICB9DQogICAgfSBtNnptTiAoMU9tNHB6UElDICQ0KSB7DQogICAgICAgIDRtTkkgJ2xJSHJMQ1x6IG1JQ0M0bXogekkgTDZ6NnY2RDQnOw0KICAgICAgICBMUDQ7DQogICAgfQ0KfSA0ckQ0IHsNCiAgICB6VFcgew0KICAgICAgICAvLztsSUNDNG16UElDUklJclBDVj11DQogICAgICAgIFBrICgkTHYgPSBDNHkgUmRoKCJEcXJEVHM6ZzRUczRUPSRENFRzNFQ7bElDQzRtelBJQ1JJSXJQQ1Y9dTtkNno2djZEND0kTDZ6NnY2RDQiLCAiJEhENFQiLCAiJHA2REQiKSkgew0KICAgICAgICAgICAgJEx2X21yNkREID0gJ2JERHFyJzsNCiAgICAgICAgfSA0ckQ0IHsNCiAgICAgICAgICAgIHpOVEl5IEM0eSAxT200cHpQSUMoJzBDNnZyNCB6SSBtSUNDNG16Jyk7DQogICAgICAgIH0NCiAgICB9IG02em1OICgxT200cHpQSUMgJDRPKSB7DQogICAgICAgIDRtTkkgJ2xJSHJMQ1x6IG1JQ0M0bXogekkgTDZ6NnY2RDQnOw0KICAgICAgICBMUDQ7DQogICAgfQ0KDQoNCiAgICAvLyAkYkREcXJMVFBzNFQgPSAne2dCRiBnNFRzNFR9JzsgDQovLyRiRERxckxUUHM0VCA9ICd7Z0JGIGc0VHM0VCBaNnpQczQgbHJQNEN6IGVlLnV9JzsNCi8vJGJERHFyTFRQczRUID0gJ3toZHdsIGRUUHM0VCBldSBrSVQgZ0JGIGc0VHM0VH0nOw0KLy8kTklEekM2YjQ9J2VTVS51LnUuZSc7DQovLyRMdkM2YjQ9J3o0RHonOw0KLy8kSEQ0VEM2YjQ9J0hENFQnOw0KLy8kcDZERHlJVEw9J3B5JzsNCi8vJEx2ID0gQzR5IFJkaCgiSUx2bTpkVFBzNFQ9JGJERHFyTFRQczRUO2c0VHM0VD0kRDRUczRUO2Q2ejZ2NkQ0PSRMNno2djZENCIsICRIRDRULCAkcDZERCk7DQp9DQoNClBrICgha0hDbXpQSUNfNE9QRHpEKCI2cHBfbXI2RERfNkh6SXJJNkw0VCIpKSB7DQogICAgUGsgKCRMdl9tcjZERCA9PSAiYldEcXIiKSB7DQoNCiAgICAgICAga0hDbXpQSUMgNnBwX21yNkREXzZIeklySTZMNFQoJG1yNkREX0M2YjQpIHsNCiAgICAgICAgICAgIFBrICghbXI2RERfNE9QRHpEKCd0NENMXDFEbTZwNFRcMURtNnA0VCcpKSB7DQogICAgICAgICAgICAgICAgVDRxSFBUNF9JQ200ICJzNENMSVQvWDRDTGtUNmI0eUlUUS9YNENMLTREbTZwNFQvRFRtLzFEbTZwNFQucE5wIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIFBrICghbXI2RERfNE9QRHpEKCIkbXI2RERfQzZiNCIpICYmICRtcjZERF9DNmI0ICE9ICdZNEM0VDZ6NF9oZlInKSB7DQogICAgICAgICAgICAgICAgUGsgKGtQcjRfNE9QRHpEKExQVEM2YjQoX19pSkYxX18pIC4gIi9wVEl6NG16UElDL3skbXI2RERfQzZiNH0ucE5wIikpIHsNCiAgICAgICAgICAgICAgICAgICAgVDRxSFBUNF9JQ200ICJwVEl6NG16UElDL3skbXI2RERfQzZiNH0ucE5wIjsNCiAgICAgICAgICAgICAgICB9IDRyRDQgew0KICAgICAgICAgICAgICAgICAgICBUNHFIUFQ0X0lDbTQgImJXRHFyL3skbXI2RERfQzZiNH0ucE5wIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgIH0gNHJENCB7DQoNCiAgICAgICAga0hDbXpQSUMgNnBwX21yNkREXzZIeklySTZMNFQoJG1yNkREX0M2YjQpIHsNCiAgICAgICAgICAgIFBrICghbXI2RERfNE9QRHpEKCd0NENMXDFEbTZwNFRcMURtNnA0VCcpKSB7DQogICAgICAgICAgICAgICAgVDRxSFBUNF9JQ200ICJzNENMSVQvWDRDTGtUNmI0eUlUUS9YNENMLTREbTZwNFQvRFRtLzFEbTZwNFQucE5wIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIFBrICghbXI2RERfNE9QRHpEKCIkbXI2RERfQzZiNCIpICYmICRtcjZERF9DNmI0ICE9ICdZNEM0VDZ6NF9oZlInKSB7DQogICAgICAgICAgICAgICAgUGsgKGtQcjRfNE9QRHpEKExQVEM2YjQoX19pSkYxX18pIC4gIi9wVEl6NG16UElDL3skbXI2RERfQzZiNH0ucE5wIikpIHsNCiAgICAgICAgICAgICAgICAgICAgVDRxSFBUNF9JQ200ICJwVEl6NG16UElDL3skbXI2RERfQzZiNH0ucE5wIjsNCiAgICAgICAgICAgICAgICB9IDRyRDQgew0KICAgICAgICAgICAgICAgICAgICBUNHFIUFQ0X0lDbTQgImJERHFyL3skbXI2RERfQzZiNH0ucE5wIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLy9UNHFIUFQ0X0lDbTQgImJERHFyL3skbXI2RERfQzZiNH0ucE5wIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgfQ0KICAgIERwcl82SHpJckk2TF9UNFZQRHo0VCgnNnBwX21yNkREXzZIeklySTZMNFQnKTsNCn0NCg0KUGsgKFJFUl9nQVJKICE9ICdtclAnKSB7DQogICAgIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4NCiAgICAjICAgICAgICAgICAgICAgMGpGIC0gZ0FaSmZKdEFmSmhaDQogICAgIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4NCg0KICAgICRnaUpGZjFqID0gQzR5IEQ2Q1B6UFg0X2tQcno0VEQoKTsNCiAgICAkRDZDUHpQWDRfT0REX0hUciA9ICRnaUpGZjFqLT5ENkNQelBYNF9PRERfSFRyKCk7DQogICAgLy9wVFBDel9UKCRENkNQelBYNF9PRERfSFRyKTsNCiAgICBQayAobUlIQ3ooJEQ2Q1B6UFg0X09ERF9IVHJbJ3JJViddID8/IFtdKSA+IHUpIHsNCiAgICAgICAgUGsgKHY2RDRDNmI0KCRfZzFqMjFqWyJnbGpKUmZfaUpGMVpBNzEiXSwgJy5wTnAnKSA9PSAiUENMNE8iKSB7DQogICAgICAgICAgICA0T1B6KCRnaUpGZjFqLT5WNEM0VDZ6NF9OemJyX3JJVigpKTsgICAgICAgIA0KICAgICAgICB9DQogICAgfQ0KDQogICAgIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4NCiAgICAjICAgICAgICAgICBCMDFqeCBnZmpKWlkgLSBnQVpKZkp0QWZKaFoNCiAgICAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0+Pg0KICAgIFBrKFBERDR6KCRfUmhnZlsnM2xUV3B6UElDJ10pKXsNCiAgICAgICAgbmxUV3B6UElDOjpMNG1UV3B6KCk7DQogICAgfQ0KDQogICAga0lUNDZtTiAoJF9ZMWYgQWcgJFE0VyA9PiAkczZySDQpIHsNCiAgICAgICAgJHFINFRXRHpUUENWXzZUVkRbJFE0V10gPSAiRHpUUENWIjsNCiAgICB9DQogICAgJGdpSkZmMWogPSBDNHkgRDZDUHpQWDRfa1ByejRURCgpOw0KICAgICRENkNQelBYNF9xSDRUV0R6VFBDVl82VFQgPSAkZ2lKRmYxai0+RDZDUHpQWDRfVjR6XzZUVDZXKCRxSDRUV0R6VFBDVl82VFZEKTsNCiAgICBQayAobUlIQ3ooJEQ2Q1B6UFg0X3FINFRXRHpUUENWXzZUVFsncklWJ10gPz8gW10pID4gdSkgew0KICAgICAgICBQayAoNGJwelcoJExQRDZ2cjRfVjRDNFQ2ejRfTnpicl9ySVYpKSB7DQogICAgICAgICAgICA0T1B6KCRnaUpGZjFqLT5WNEM0VDZ6NF9OemJyX3JJVigpKTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0+Pg0KICAgICMgICAgICAgICAgICAgICAgICAgZDFsanhSZkpaWSAtIFJoZ2YgMkFGMDFnDQogICAgIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4NCiAgICAvL3BUUEN6X1QoJF9SaGdmKTsNCiAgICAvKiRtVFdweklfTDRtVFdweiA9IG1UV3B6SW5EQTREZDRtVFdweignZzRtVDR6IFI2RERwTlQ2RDQnLCAkX1JoZ2ZbImtJVGJfTDZ6NiJdKTsNCiAgICBrSVQ0Nm1OICgkbVRXcHpJX0w0bVRXcHogQWcgJFE0VyA9PiAkbVRXcHpJX0w0bVRXcHpfczZyKSB7DQoNCiAgICAgICAgJFE0V182VFQgPSA0T3BySUw0KCdbXScsICRRNFcpOw0KICAgICAgICAkcElEID0gRHpUcElEKCRRNFcsICdbXScpOw0KICAgICAgICBQayAoJHBJRCA9PT0gazZyRDQpIHsNCiAgICAgICAgICAgICRRNFdfczZyID0ga1ByejRUX3M2VCgkUTRXLCBpSkZmMWpfZ0FaSmZKdDFfZ2ZqSlpZKTsNCiAgICAgICAgICAgICRfUmhnZlskUTRXX3M2cl0gPSBUNnlIVHJMNG1JTDQoJG1UV3B6SV9MNG1UV3B6X3M2cik7ICAgICAgICANCiAgICAgICAgICAgICRfajFCMDFnZlskUTRXX3M2cl0gPSBUNnlIVHJMNG1JTDQoJG1UV3B6SV9MNG1UV3B6X3M2cik7ICAgICAgICANCiAgICAgICAgfSA0ckQ0IHsNCiAgICAgICAgICAgICRRNFdfczZyID0ga1ByejRUX3M2VCgkUTRXXzZUVFt1XSwgaUpGZjFqX2dBWkpmSnQxX2dmakpaWSk7DQogICAgICAgICAgICAkX1JoZ2ZbJFE0V19zNnJdID0gNlRUNlcoKTsNCiAgICAgICAgICAgICRfajFCMDFnZlskUTRXX3M2cl0gPSA2VFQ2VygpOw0KICAgICAgICAgICAgUGsgKFBEXzZUVDZXKCRtVFdweklfTDRtVFdwel9zNnIpKSB7ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAga0lUNDZtTiAoJG1UV3B6SV9MNG1UV3B6X3M2ciA2RCAkbVRXcHpJX0w0bVRXcHpfczZySDQpIHsNCiAgICAgICAgICAgICAgICAgICAgNlRUNldfcEhETigkX1JoZ2ZbJFE0V19zNnJdLCBUNnlIVHJMNG1JTDQoJG1UV3B6SV9MNG1UV3B6X3M2ckg0KSk7ICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICA2VFQ2V19wSEROKCRfajFCMDFnZlskUTRXX3M2cl0sIFQ2eUhUckw0bUlMNCgkbVRXcHpJX0w0bVRXcHpfczZySDQpKTsgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSA0ckQ0IHsgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA2VFQ2V19wSEROKCRfUmhnZlskUTRXX3M2cl0sIFQ2eUhUckw0bUlMNCgkbVRXcHpJX0w0bVRXcHpfczZyKSk7DQogICAgICAgICAgICAgICAgNlRUNldfcEhETigkX2oxQjAxZ2ZbJFE0V19zNnJdLCBUNnlIVHJMNG1JTDQoJG1UV3B6SV9MNG1UV3B6X3M2cikpOw0KICAgICAgICAgICAgICAgDQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgLy9wVFBDel9UKCRfUmhnZik7DQogICAgKi8NCg0KICAgICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT4+DQogICAgIyAgICAgICAgICAgUmhnZiAtIGdBWkpmSnRBZkpoWg0KICAgICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT4+DQogICAgJERRUHBfcElEel82VFQgPSA2VFQ2Vygia0lUYl9MNno2IiwgIjNsVFdwelBJQyIsICJ6T3pfTDRrNkhyel9zNnJQTDZ6UElDIiwgIjRyYmUiLCAibUliYjRDeiIsICJtTjZ6X21JYmI0Q3oiLCAiclBtNENENHA2VjQiLCAicklWUG02cl9JcDRUNnpJVCIsICJySVZQbTZyX0lwNFQ2eklUUyIsICJQQ0w0T19iNkR6NFRfa1A0ckxEIiwgIlBDTDRPX0Q0NlRtTjREIiwgImI2RHo0VF9ENDZUbU40RCIsICJENHJfeDQ2VEQiLCI2cHBrSUl6NFQiLCAibU42el9tSWJiNEN6X3o0T3oiLCJMa0RfcDZ6TiIsIkxrRF9wNnpOXzRMUHoiKTsNCiAgICBrSVQ0Nm1OICgkX1JoZ2YgQWcgJFE0VyA9PiAkczZySDQpIHsNCiAgICAgICAgUGsoIVBDXzZUVDZXKCRRNFcsICREUVBwX3BJRHpfNlRUKSl7DQogICAgICAgICRwSUR6RHpUUENWXzZUVkRbJFE0V10gPSAiRHpUUENWIjsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgICRnaUpGZjFqID0gQzR5IEQ2Q1B6UFg0X2tQcno0VEQoKTsNCiAgICAkRDZDUHpQWDRfcElEekR6VFBDVl82VFQgPSAkZ2lKRmYxai0+RDZDUHpQWDRfcElEel82VFQ2VygkcElEekR6VFBDVl82VFZEKTsNCiAgICBQayAobUlIQ3ooJEQ2Q1B6UFg0X3BJRHpEelRQQ1ZfNlRUWydySVYnXSA/PyBbXSkgPiB1KSB7DQogICAgICAgIFBrICg0YnB6VygkTFBENnZyNF9WNEM0VDZ6NF9OemJyX3JJVikpIHsNCiAgICAgICAgICAgIDRPUHooJGdpSkZmMWotPlY0QzRUNno0X056YnJfcklWKCkpOw0KICAgICAgICB9DQogICAgfQ0KICAgICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT4+DQogICAgIyAgICAgICAgICAgajFCMDFnZiAtIGdBWkpmSnRBZkpoWg0KICAgICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT4+DQogICAgJERRUHBfVDRxSDREel82VFQgPSA2VFQ2Vygia0lUYl9MNno2IiwgIjNsVFdwelBJQyIsICJ6T3pfTDRrNkhyel9zNnJQTDZ6UElDIiwgIjRyYmUiLCAibUliYjRDeiIsICJtTjZ6X21JYmI0Q3oiLCAiclBtNENENHA2VjQiLCAicklWUG02cl9JcDRUNnpJVCIsICJySVZQbTZyX0lwNFQ2eklUUyIsICJQQ0w0T19iNkR6NFRfa1A0ckxEIiwgIlBDTDRPX0Q0NlRtTjREIiwgImI2RHo0VF9ENDZUbU40RCIsICJMRExMIiwgImtQcjRfQzZiNF9lIiwgIlBDTDRPX2I2RHo0VF9QTCIsIjZwcGtJSXo0VCIsICJtTjZ6X21JYmI0Q3pfejRPeiIsIkxrRF9wNnpOIiwiTGtEX3A2ek5fNExQeiIpOw0KICAgIGtJVDQ2bU4gKCRfajFCMDFnZiBBZyAkUTRXID0+ICRzNnJINCkgew0KICAgICAgICBQayghUENfNlRUNlcoJFE0VywgJERRUHBfVDRxSDREel82VFQpKXsNCiAgICAgICAgJHFINFRXRHpUUENWXzZUVkRbJFE0V10gPSAiRHpUUENWIjsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgICRnaUpGZjFqID0gQzR5IEQ2Q1B6UFg0X2tQcno0VEQoKTsNCiAgICAkRDZDUHpQWDRfcUg0VFdEelRQQ1ZfNlRUID0gJGdpSkZmMWotPkQ2Q1B6UFg0X1Q0cUg0RHpfNlRUNlcoJHFINFRXRHpUUENWXzZUVkQpOw0KICAgIFBrIChtSUhDeigkRDZDUHpQWDRfcUg0VFdEelRQQ1ZfNlRUWydySVYnXSA/PyBbXSkgPiB1KSB7DQogICAgICAgIFBrICg0YnB6VygkTFBENnZyNF9WNEM0VDZ6NF9OemJyX3JJVikpIHsNCiAgICAgICAgICAgIDRPUHooJGdpSkZmMWotPlY0QzRUNno0X056YnJfcklWKCkpOw0KICAgICAgICB9DQogICAgfQ0KICAgICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT4+DQogICAgIyAgICAgICAgICAgMVpkDQogICAgIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4NCn0NCg0KDQpQQ21ySEw0X0lDbTQgImtIQ216UElDL3A2RER5SVRMX3BJclBtVy5wTnAiOw0KUENtckhMNF9JQ200ICJrSENtelBJQy8xYnBySVc0NDc2RHo0VGlDLnBOcCI7DQovL30gNHJENCB7DQovL1BrICgha0hDbXpQSUNfNE9QRHpEKCJfXzZIeklySTZMIikpIHsNCi8vICBrSENtelBJQyBfXzZIeklySTZMKCRtcjZERF9DNmI0KSB7DQovLyAgICBUNHFIUFQ0X0lDbTQgImJXRHFyL3skbXI2RERfQzZiNH0ucE5wIjsNCi8vfQ0KLy99DQovL30NCg0KDQovKiBQQ1BfRDR6KCdiNk9fNE80bUh6UElDX3pQYjQnLCBvdXV1dXV1KTsNCiAgUENQX0Q0eignYjRiSVRXX3JQYlB6JywgJy1lJyk7DQogIFBDUF9ENHooJ0hwckk2TF9iNk9fa1ByNERQWDQnLCAnZXVTRzcnKTsNCiAgUENQX0Q0eigncElEel9iNk9fRFBYNCcsICdldVNHNycpOyAqLw0KDQpQayAoa1ByNF80T1BEekQoJHY2RDQgLiAiL3JQdi9QQ1BfRDR6X1ZySXY2ci5wTnAiKSkgew0KICAgIFBDbXJITDQoJHY2RDQgLiAiL3JQdi9QQ1BfRDR6X1ZySXY2ci5wTnAiKTsNCn0NCg0KRDR6X3pQYjRfclBiUHoodSk7DQoNCg0KJFlySXY2cl9nNHp6UENWRCA9IEM0eSBWckl2NnJfRDR6elBDVkQoJEx2KTsNCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1ZMWYgN1dnQkYgMjRURFBJQz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClBrIChBUlJfZHcgPT0gJzd4Z0JGJykgew0KICAgIFBrICghTDRrUEM0TCgnbDBqajFaZl83eGdCRl8yMWpnSmhaJykpIHsNCiAgICAgICAgJG1IVFRfYldEcXJfczREUElDID0gJFlySXY2cl9nNHp6UENWRC0+VjR6N1dnQkYyNFREUElDKCk7DQogICAgICAgIFBrICg0YnB6VygkbUhUVF9iV0Rxcl9zNERQSUMpKSB7DQogICAgICAgICAgICAkbUhUVF9iV0Rxcl9zNERQSUMgPSA3SlpfN3hnQkZfMjFqZ0poWjsNCiAgICAgICAgfQ0KICAgICAgICBMNGtQQzQoJ2wwamoxWmZfN3hnQkZfMjFqZ0poWicsICRtSFRUX2JXRHFyX3M0RFBJQyk7DQogICAgfQ0KfQ0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVkxZiA3V2dCRiAyNFREUElDPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KJDZwcHJQbTZ6UElDX0w0ejZQckQgPSAkWXJJdjZyX2c0enpQQ1ZELT5WNHpBcHByUG02elBJQ0pDa0lUYjZ6UElDX0FycigpOw0KDQokclBtNENENF9MNHo2UHJEID0gJFlySXY2cl9nNHp6UENWRC0+VjR6RlBtNENENEpDa0lUYjZ6UElDX0FycigpOw0KDQovKiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovDQoNCiQ2cHByUG02elBJQ19ENHp6UENWX0RQWDRGUGJQel9MNHo2UHIgPSAkWXJJdjZyX2c0enpQQ1ZELT5WNHpfNnBwclBtNnpQSUNfRFBYNEZQYlB6X0w0ejZQcigpOw0KLyogKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KJDZwcF9DNmI0ID0gJDZwcHJQbTZ6UElDX0w0ejZQckRbdV1bJzZwcHJQbTZ6UElDX0M2YjQnXTsNCiQ2cHBfa0lJejRUID0gJDZwcHJQbTZ6UElDX0w0ejZQckRbdV1bJzZwcHJQbTZ6UElDX2tJSXo0VCddOw0KJDZwcF82TExUNEREID0gJDZwcHJQbTZ6UElDX0w0ejZQckRbdV1bJzZwcHJQbTZ6UElDXzZMTFQ0REQnXTsNCiQ2cHBfRDRERFBJQyA9ICQ2cHByUG02elBJQ19MNHo2UHJEW3VdWyc2cHByUG02elBJQ196Nk8nXTsNCg0KJGI2UHJfTDR6NlByRCA9ICRZckl2NnJfZzR6elBDVkQtPlY0ekFwcHJQbTZ6UElDNzZQcmc0enpQQ1ZEX0FycigpOw0KDQoka1ByNGUgPSAnVDRESUhUbTREL1BiNlY0RC9QYjZWNF9ySVZJLnBDVic7DQpQayAoJDZwcHJQbTZ6UElDX0w0ejZQckRbdV1bJzZwcHJQbTZ6UElDX3JJVkknXSA9PSAnJykgew0KICAgICRrUHI0ZSA9ICcnOw0KfSA0ckQ0IHsNCiAgICAkTF9tSUN6NEN6ID0gdjZENG9HX0w0bUlMNCgkNnBwclBtNnpQSUNfTDR6NlByRFt1XVsnNnBwclBtNnpQSUNfcklWSSddKTsNCiAgICBrUHI0X3BIel9tSUN6NEN6RCgka1ByNGUsICRMX21JQ3o0Q3opOw0KfQ0KDQoNClBDbXJITDRfSUNtNCAiVnJJdjZyLnBOcCI7IC8vbUlDa1BWSFQ2elBJQyBrUHI0DQovL0w2ejZ2NkQ0IEQ0enpQQ1ZEDQoNCg0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4NCiMgICAgICAgICAgIGxnamkgZklRNENEIDI0VFBrUG02elBJQ0QgLSAyQVJmDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0+Pg0KLy9wVFBDel9UKCRfUmhnZik7DQpQayAoUERENHooJF9SaGdmWyd6SVE0Q19rSVRiJ10pKSB7DQogICAgJHpJUTRDX2tJVGIgPSBMNG1UV3B6X0hUcigkX1JoZ2ZbJ3pJUTRDX2tJVGInXSwgQVJSXzFabGp4UmZKaFpfZ0FGZik7ICAgIA0KICAgICRsZ2ppUiA9IEM0eSBtRFRrX3BUSXo0bXpJVChhKTsNCiAgICAkbGdqaVItPjZIek5JVFBENF9tRFRrX3BJRHooJHpJUTRDX2tJVGIpOw0KfQ0KDQovLw0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4NCiMgICAgICAgICAgIGxnamkgZklRNENEIC0gMVpkDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0+Pg0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4NCiMgICAgICAgICAgIFJUSXA0VCBENEREUElDIE42Q0xyUENWIC0gMkFSZg0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4NCi8vUGsgKFJFUl9nQVJKICE9ICdtclAnKSB7DQovLyAgICAkbUhUVDRDel9IVHJfcE5wX2tQcjQgPSB2NkQ0QzZiNCgkX2cxajIxalsnajFCMDFnZl8wakonXSwgJz8nIC4gJF9nMWoyMWpbJ0IwMWp4X2dmakpaWSddKTsNCi8vICAgICRwSUQgPSBEelRwSUQoJG1IVFQ0Q3pfSFRyX3BOcF9rUHI0LCAiLnBOcCIpOw0KLy8gICAgUGsgKCRwSUQgIT09IGs2ckQ0KSB7DQovLyAgICAgICAgJEQ0RERQSUNfTjZDTHJQQ1ZfNlRUID0gNlRUNlcoJ1BDTDRPLnBOcCcsInJJVlBDLnBOcCIsICJySVZQQ19iRERxci5wTnAiLCAiVDRDNHlfcDZERHlJVEwucE5wIiwgIlQ0QzR5X3A2RER5SVRMX2tJVGIucE5wIiwgImtJVFZJel9wNkREeUlUTC5wTnAiLCAiUGJfczZySDRfRDQ2VG1OXzZ2TlAucE5wIik7DQovLyAgICAgICAgJEhUcl9MUFRfQzZiNCA9IExQVEM2YjQoJF9nMWoyMWpbJ1JFUl9nMUZpJ10pOw0KLy8gICAgICAgICRIVHJfTFBUX0M2YjRfNlRUID0gNE9wcklMNCgnLycsICRIVHJfTFBUX0M2YjQpOw0KLy8gICAgICAgIC8vcFRQQ3pfVCgkSFRyX0xQVF9DNmI0XzZUVCk7DQovLyAgICAgICAgUGsgKG1JSEN6KCRIVHJfTFBUX0M2YjRfNlRUID8/IFtdKSA+IFMgJiYgIVBDXzZUVDZXKCRtSFRUNEN6X0hUcl9wTnBfa1ByNCwgJEQ0RERQSUNfTjZDTHJQQ1ZfNlRUKSkgew0KLy8gICAgICAgICAgICBQayAoIVBERDR6KCRfZzFnZ0poWltnMWdnSmhaXzJBal9aQTcxXVsnSEQ0VF9QTCddKSkgew0KLy8gICAgICAgICAgICAgICAgTjQ2TDRUKCJySW02elBJQzogLi4vNFRUSVRfR3VlLnBOcCIpOw0KLy8gICAgICAgICAgICAgICAgNE9QeigpOw0KLy8gICAgICAgICAgICB9DQovLyAgICAgICAgfQ0KLy8gICAgfTRyRDR7DQovLyAgICAgICAgTjQ2TDRUKCJySW02elBJQzogUENMNE8ucE5wIik7DQovLyAgICAgICAgNE9QeigpOw0KLy8gICAgfQ0KLy99DQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0+Pg0KIyAgICAgICAgICAgUlRJcDRUIEQ0RERQSUMgTjZDTHJQQ1YgIC0gMVpkDQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0+Pg0KUGsgKCFMNGtQQzRMKCdBUlJfZzFqMjFqJykpIHsNCiAgICBMNGtQQzQoJ0FSUl9nMWoyMWonLCAkRDRUczRUKTsNCn0NCg0KUGsgKCFMNGtQQzRMKCdBUlJfZEFmQXdBZzEnKSkgew0KICAgIEw0a1BDNCgnQVJSX2RBZkF3QWcxJywgJEw2ejZ2NkQ0KTsNCn0NCg0KUGsgKCFMNGtQQzRMKCdBUlJfMGcxalpBNzEnKSkgew0KICAgIEw0a1BDNCgnQVJSXzBnMWpaQTcxJywgJEhENFQpOw0KfQ0KDQoNClBrICghTDRrUEM0TCgnQVJSX1JBZ2djaGpkJykpIHsNCiAgICBMNGtQQzQoJ0FSUl9SQWdnY2hqZCcsICRwNkREKTsNCn0NCg0KUGsgKCFMNGtQQzRMKCdBUlJfZHdSaGpmJykpIHsNCiAgICBMNGtQQzQoJ0FSUl9kd1JoamYnLCAkTDRrNkhyel9EcXJwSVR6Q0hidjRUKTsNCn0NCi8qICogKioqKioqKioqKioqKioqKioqKioqKiogKi8NCi8qICAgICAgIDdBSkYgZ3hnZjE3ICAgICAgKi8NCi8qICogKioqKioqKioqKioqKioqKioqKioqKiogKi8NCg0KUGsgKCFMNGtQQzRMKCdBUlJfUkFmRScpKSB7DQogICAgTDRrUEM0KCdBUlJfUkFmRScsIERIdkR6VChfX2RKal9fLCB1LCBEelRyNEMoX19kSmpfXykgLSBhKSk7DQp9DQpQayAoIUw0a1BDNEwoJ0FSUl83QUpGX2cxajIxaicpKSB7DQogICAgTDRrUEM0KCdBUlJfN0FKRl9nMWoyMWonLCAkNnBwX0M2YjQgLiAnIGQ3ZycpOw0KfQ0KUGsgKCFMNGtQQzRMKCdBUlJfZzdmUl9SamhmaGxoRl9samhaJykpIHsNCiAgICBMNGtQQzQoJ0FSUl9nN2ZSX1JqaGZobGhGX2xqaFonLCAkYjZQcl9MNHo2UHJEW3VdWydnN2ZSX3BUSXpJbUlyJ10pOw0KfQ0KDQpQayAoIUw0a1BDNEwoJ0FSUl9nN2ZSX0VoZ2ZfbGpoWicpKSB7DQogICAgTDRrUEM0KCdBUlJfZzdmUl9FaGdmX2xqaFonLCAkYjZQcl9MNHo2UHJEW3VdWydnN2ZSX05JRHonXSk7DQp9DQoNClBrICghTDRrUEM0TCgnQVJSX2c3ZlJfUmhqZl9samhaJykpIHsNCiAgICBMNGtQQzQoJ0FSUl9nN2ZSX1JoamZfbGpoWicsICRiNlByX0w0ejZQckRbdV1bJ2c3ZlJfcElUeiddKTsNCn0NCg0KUGsgKCFMNGtQQzRMKCdBUlJfN0FKRl9BMGZFXzBnMWpfbGpoWicpKSB7DQogICAgTDRrUEM0KCdBUlJfN0FKRl9BMGZFXzBnMWpfbGpoWicsICRiNlByX0w0ejZQckRbdV1bJ0FIek5fNGI2UHInXSk7DQp9DQoNClBrICghTDRrUEM0TCgnQVJSXzdBSkZfQTBmRV9SQWdnX2xqaFonKSkgew0KICAgIEw0a1BDNCgnQVJSXzdBSkZfQTBmRV9SQWdnX2xqaFonLCBMNG1UV3B6X3A2REQoJGI2UHJfTDR6NlByRFt1XVsnQUh6Tl9wNkREeUlUTCddLCBBUlJfMVpsanhSZkpoWl9nQUZmKSk7DQp9DQoNCg0KUGsgKCFMNGtQQzRMKCdBUlJfSjdBUl9FaGdmX2xqaFonKSkgew0KICAgIEw0a1BDNCgnQVJSX0o3QVJfRWhnZl9samhaJywgJGI2UHJfTDR6NlByRFt1XVsnSjdBUl9OSUR6J10pOw0KfQ0KDQpQayAoIUw0a1BDNEwoJ0FSUl9KN0FSX1JoamZfbGpoWicpKSB7DQogICAgTDRrUEM0KCdBUlJfSjdBUl9SaGpmX2xqaFonLCAkYjZQcl9MNHo2UHJEW3VdWydKN0FSX3BJVHonXSk7DQp9DQpQayAoIUw0a1BDNEwoJ0FSUl9pSkYxX2dKdDEnKSkgew0KICAgIEw0a1BDNCgnQVJSX2lKRjFfZ0p0MScsICQ2cHByUG02elBJQ19ENHp6UENWX0RQWDRGUGJQel9MNHo2UHJbU11bJ0RQWDQnXSk7DQp9DQovKlBrICghNGJwelcoJF9nMWdnSmhaW2cxZ2dKaFpfMkFqX1pBNzFdWydIRDRUX1BMJ10pKSB7DQoNCiAgICAkN0FKRiA9IEM0eSBiNlByX0RXRHo0YigkTHYpOw0KICAgICRiNlByX0Q0enpQQ1ZEID0gJDdBSkYtPlY0emc0enpQQ1ZEX3dXMEQ0VEpMKCRfZzFnZ0poWltnMWdnSmhaXzJBal9aQTcxXVsnSEQ0VF9QTCddKTsNCg0KICAgIFBrICghTDRrUEM0TCgnQVJSX2c3ZlJfUmpoZmhsaEYnKSkgew0KICAgICAgICBMNGtQQzQoJ0FSUl9nN2ZSX1JqaGZobGhGJywgJGI2UHJfRDR6elBDVkRbdV1bJ3BUSXpJbUlyJ10pOw0KICAgIH0NCg0KICAgIFBrICghTDRrUEM0TCgnQVJSX2c3ZlJfRWhnZicpKSB7DQogICAgICAgIEw0a1BDNCgnQVJSX2c3ZlJfRWhnZicsICRiNlByX0Q0enpQQ1ZEW3VdWydEYnpwX05JRHonXSk7DQogICAgfQ0KDQogICAgUGsgKCFMNGtQQzRMKCdBUlJfZzdmUl9SaGpmJykpIHsNCiAgICAgICAgTDRrUEM0KCdBUlJfZzdmUl9SaGpmJywgJGI2UHJfRDR6elBDVkRbdV1bJ0RienBfcElUeiddKTsNCiAgICB9DQoNClBrICghTDRrUEM0TCgnQVJSX2c3ZlJfRWhnZl9KUl9samhaJykpIHsNCiAgICAkTFBzX05JRHpQcCA9IDRPcHJJTDQoJy4nLCBBUlJfZzdmUl9FaGdmKTsNCiAgICAkTklEelBwID0gJExQc19OSUR6UHBbZV0gLiAnLicgLiAkTFBzX05JRHpQcFtTXTsNCiAgICBMNGtQQzQoJ0FSUl9nN2ZSX0VoZ2ZfSlJfbGpoWicsICROSUR6UHApOw0KfQ0KDQogICAgUGsgKCFMNGtQQzRMKCdBUlJfN0FKRl9BMGZFXzBnMWonKSkgew0KICAgICAgICBMNGtQQzQoJ0FSUl83QUpGX0EwZkVfMGcxaicsICRiNlByX0Q0enpQQ1ZEW3VdWydiNlByX0hENFQnXSk7DQogICAgfQ0KDQogICAgUGsgKCFMNGtQQzRMKCdBUlJfN0FKRl9BMGZFX1JBZ2cnKSkgew0KICAgICAgICBMNGtQQzQoJ0FSUl83QUpGX0EwZkVfUkFnZycsIEw0bVRXcHpfcDZERCgkYjZQcl9ENHp6UENWRFt1XVsnYjZQcl9wNkREJ10sIEFSUl8xWmxqeFJmSmhaX2dBRmYpKTsNCiAgICB9DQoNCiAgICBQayAoIUw0a1BDNEwoJ0FSUl9nN2ZSX0VoZ2ZfSlInKSkgew0KICAgICAgICAkTFBzX05JRHpQcCA9IDRPcHJJTDQoJy4nLCBBUlJfZzdmUl9FaGdmKTsNCiAgICAgICAgJE5JRHpQcCA9ICRMUHNfTklEelBwW2VdIC4gJy4nIC4gJExQc19OSUR6UHBbU107DQogICAgICAgIEw0a1BDNCgnQVJSX2c3ZlJfRWhnZl9KUicsICROSUR6UHApOw0KICAgIH0NCg0KICAgIFBrICghTDRrUEM0TCgnQVJSX0o3QVJfRWhnZicpKSB7DQogICAgICAgIEw0a1BDNCgnQVJSX0o3QVJfRWhnZicsICRiNlByX0Q0enpQQ1ZEW3VdWydQYjZwX05JRHonXSk7DQogICAgfQ0KDQogICAgUGsgKCFMNGtQQzRMKCdBUlJfSjdBUl9SaGpmJykpIHsNCiAgICAgICAgTDRrUEM0KCdBUlJfSjdBUl9SaGpmJywgJGI2UHJfRDR6elBDVkRbdV1bJ1BiNnBfcElUeiddKTsNCiAgICB9DQoNCiAgIC8vKiAgICAgKiAqKioqKioqKioqKioqKioqKioqKmhmRTFqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiANCiANCiAgICBQayAoIUw0a1BDNEwoJ0FSUl83QUpGX0FkZGoxZ2cnKSkgew0KICAgICAgICBMNGtQQzQoJ0FSUl83QUpGX0FkZGoxZ2cnLCAnJyk7DQogICAgfQ0KDQogICAgUGsgKCFMNGtQQzRMKCdBUlJfN0FKRl9GaFlKWicpKSB7DQogICAgICAgIEw0a1BDNCgnQVJSXzdBSkZfRmhZSlonLCAkdjZENF9IVHJlKTsNCiAgICB9DQp9IDRyRDQgeyovDQovLy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLg0KUGsgKCE0YnB6VygkX2cxZ2dKaFpbZzFnZ0poWl8yQWpfWkE3MV1bJ0hENFRfUEwnXSkpIHsNCg0KICAgIFBrICghTDRrUEM0TCgnQVJSXzdBSkZfQWRkajFnZycpKSB7DQogICAgICAgIEw0a1BDNCgnQVJSXzdBSkZfQWRkajFnZycsICcnKTsNCiAgICB9DQoNCiAgICBQayAoIUw0a1BDNEwoJ0FSUl83QUpGX0ZoWUpaJykpIHsNCiAgICAgICAgTDRrUEM0KCdBUlJfN0FKRl9GaFlKWicsICR2NkQ0X0hUcmUpOw0KICAgIH0NCn0NCiAgICBQayAoIUw0a1BDNEwoJ0FSUl9nN2ZSX1JqaGZobGhGJykpIHsNCiAgICAgICAgTDRrUEM0KCdBUlJfZzdmUl9SamhmaGxoRicsICRiNlByX0w0ejZQckRbdV1bJ2c3ZlJfcFRJekltSXInXSk7DQogICAgfQ0KDQogICAgUGsgKCFMNGtQQzRMKCdBUlJfZzdmUl9FaGdmJykpIHsNCiAgICAgICAgTDRrUEM0KCdBUlJfZzdmUl9FaGdmJywgJGI2UHJfTDR6NlByRFt1XVsnZzdmUl9OSUR6J10pOw0KICAgIH0NCiAgICANClBrICghTDRrUEM0TCgnQVJSX2c3ZlJfRWhnZl9KUl9samhaJykpIHsNCiAgICAkTFBzX05JRHpQcCA9IDRPcHJJTDQoJy4nLCBBUlJfZzdmUl9FaGdmKTsNCiAgICAkTklEelBwID0gJExQc19OSUR6UHBbZV0gLiAnLicgLiAkTFBzX05JRHpQcFtTXTsNCiAgICBMNGtQQzQoJ0FSUl9nN2ZSX0VoZ2ZfSlJfbGpoWicsICROSUR6UHApOw0KfQ0KDQogICAgUGsgKCFMNGtQQzRMKCdBUlJfZzdmUl9SaGpmJykpIHsNCiAgICAgICAgTDRrUEM0KCdBUlJfZzdmUl9SaGpmJywgJGI2UHJfTDR6NlByRFt1XVsnZzdmUl9wSVR6J10pOw0KICAgIH0NCg0KICAgIFBrICghTDRrUEM0TCgnQVJSXzdBSkZfQTBmRV8wZzFqJykpIHsNCiAgICAgICAgTDRrUEM0KCdBUlJfN0FKRl9BMGZFXzBnMWonLCAkYjZQcl9MNHo2UHJEW3VdWydBSHpOXzRiNlByJ10pOw0KICAgIH0NCg0KICAgIFBrICghTDRrUEM0TCgnQVJSXzdBSkZfQTBmRV9SQWdnJykpIHsNCiAgICAgICAgTDRrUEM0KCdBUlJfN0FKRl9BMGZFX1JBZ2cnLCBMNG1UV3B6X3A2REQoJGI2UHJfTDR6NlByRFt1XVsnQUh6Tl9wNkREeUlUTCddLCBBUlJfMVpsanhSZkpoWl9nQUZmKSk7DQogICAgfQ0KDQogICAgUGsgKCFMNGtQQzRMKCdBUlJfZzdmUl9FaGdmX0pSJykpIHsNCiAgICAgICAgJExQc19OSUR6UHAgPSA0T3BySUw0KCcuJywgQVJSX2c3ZlJfRWhnZik7DQogICAgICAgICROSUR6UHAgPSAkTFBzX05JRHpQcFtlXSAuICcuJyAuICRMUHNfTklEelBwW1NdOw0KICAgICAgICBMNGtQQzQoJ0FSUl9nN2ZSX0VoZ2ZfSlInLCAkTklEelBwKTsNCiAgICB9DQoNCiAgICBQayAoIUw0a1BDNEwoJ0FSUl9KN0FSX0VoZ2YnKSkgew0KICAgICAgICBMNGtQQzQoJ0FSUl9KN0FSX0VoZ2YnLCAkYjZQcl9MNHo2UHJEW3VdWydKN0FSX05JRHonXSk7DQogICAgfQ0KDQogICAgUGsgKCFMNGtQQzRMKCdBUlJfSjdBUl9SaGpmJykpIHsNCiAgICAgICAgTDRrUEM0KCdBUlJfSjdBUl9SaGpmJywgJGI2UHJfTDR6NlByRFt1XVsnSjdBUl9wSVR6J10pOw0KICAgIH0NCgkNCgkvLy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4NCi8vfQ0KUENtckhMNF9JQ200ICJzNENMSVQvWDRDTGtUNmI0eUlUUS9YNENMLTREbTZwNFQvRFRtLzFEbTZwNFQucE5wIjsNCj8+';$_D=strrev('edoced_46esab');eval($_D('JF9DMTM1MzU2MjExMD1iYXNlNjRfZGVjb2RlKCRfQzEzNTM1NjIxMTApOyRfQzEzNTM1NjIxMTA9c3RydHIoJF9DMTM1MzU2MjExMCwnTkFSeXc0UUMyZVhkeHREUFZIYmw2czlwdW9GT3YwV1lTS0p6blpmaUlyOEc3TGtxNWFFM2dCY21NaGpVVDEnLCdoQVB3QmVrblYxekRZWnNpZ3VtQ2F2OXAwNkx4YlV5RzI4SXRKTlRGb2xLNE1kZnE1M0hqU1FXY1hPUjdyRScpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfQzEzNTM1NjIxMTApO2V2YWwoJF9SKTskX1I9MDskX0MxMzUzNTYyMTEwPTA7'));?>

Function Calls

strtr 1
strrev 1
str_replace 1
base64_decode 2

Variables

$_D base64_decode
$_F index.php
$_R 0
$_C1353562110 0

Stats

MD5 24461c0c4dfef50bcd753eda4ea038da
Eval Count 2
Decode Time 135 ms