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

Decoded Output download

/** * GoMage.com * * GoMage Feed Pro * * @category Extension * @copyright Copyright (c) 2010-2013 GoMage.com (http://www.gomage.com) * @author GoMage.com * @license http://www.gomage.com/licensing Single domain license * @terms of use http://www.gomage.com/terms-of-use * @version Release: 3.2 * @since Class available since Release 1.0 */ class GoMage_Feed_Helper_Data extends Mage_Core_Helper_Abstract{ protected $attribute_collection = null; protected $attribute_options = null; protected $output_types = null; public function getConfigData($node){ return Mage::getStoreConfig('gomage_feed/'.$node); } public function getAllStoreDomains(){ $domains = array(); foreach (Mage::app()->getWebsites() as $website) { $url = $website->getConfig('web/unsecure/base_url'); if($domain = trim(preg_replace('/^.*?\/\/(.*)?\//', '$1', $url))){ $domains[] = $domain; } $url = $website->getConfig('web/secure/base_url'); if($domain = trim(preg_replace('/^.*?\/\/(.*)?\//', '$1', $url))){ $domains[] = $domain; } } return array_unique($domains); } public function getAvailabelWebsites(){ return $this->_w(); } public function getAvailavelWebsites(){ return $this->_w(); } protected function _w(){ if(!Mage::getStoreConfig('gomage_activation/feed/installed') || (intval(Mage::getStoreConfig('gomage_activation/feed/count')) > 10)) { return array(); } $time_to_update = 60*60*24*15; $r = Mage::getStoreConfig('gomage_activation/feed/ar'); $t = Mage::getStoreConfig('gomage_activation/feed/time'); $s = Mage::getStoreConfig('gomage_activation/feed/websites'); $last_check = str_replace($r, '', Mage::helper('core')->decrypt($t)); $allsites = explode(',', str_replace($r, '', Mage::helper('core')->decrypt($s))); $allsites = array_diff($allsites, array("")); if(($last_check+$time_to_update) < time()){ $this->a(Mage::getStoreConfig('gomage_activation/feed/key'), intval(Mage::getStoreConfig('gomage_activation/feed/count')), implode(',', $allsites)); } return $allsites; } public function a($k, $c = 0, $s = ''){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, sprintf('https://www.gomage.com/index.php/gomage_downloadable/key/check')); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, 'key='.urlencode($k).'&sku=feed-pro&domains='.urlencode(implode(',', $this->getAllStoreDomains())).'&ver='.urlencode('3.2')); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); $content = curl_exec($ch); $r = Zend_Json::decode($content); $e = Mage::helper('core'); if(empty($r)){ $value1 = Mage::getStoreConfig('gomage_activation/feed/ar'); $groups = array( 'feed'=>array( 'fields'=>array( 'ar'=>array( 'value'=>$value1 ), 'websites'=>array( 'value'=>(string)Mage::getStoreConfig('gomage_activation/feed/websites') ), 'time'=>array( 'value'=>(string)$e->encrypt($value1.(time()-(60*60*24*15-1800)).$value1) ), 'count'=>array( 'value'=>$c+1) ) ) ); Mage::getModel('adminhtml/config_data') ->setSection('gomage_activation') ->setGroups($groups) ->save(); Mage::getConfig()->reinit(); Mage::app()->reinitStores(); return; } $value1 = ''; $value2 = ''; if(isset($r['d']) && isset($r['c'])){ $value1 = $e->encrypt(base64_encode(Zend_Json::encode($r))); if (!$s) $s = Mage::getStoreConfig('gomage_activation/feed/websites'); $s = array_slice(explode(',', $s), 0, $r['c']); $value2 = $e->encrypt($value1.implode(',', $s).$value1); } $groups = array( 'feed'=>array( 'fields'=>array( 'ar'=>array( 'value'=>$value1 ), 'websites'=>array( 'value'=>(string)$value2 ), 'time'=>array( 'value'=>(string)$e->encrypt($value1.time().$value1) ), 'installed'=>array( 'value'=>1 ), 'count'=>array( 'value'=>0) ) ) ); Mage::getModel('adminhtml/config_data') ->setSection('gomage_activation') ->setGroups($groups) ->save(); Mage::getConfig()->reinit(); Mage::app()->reinitStores(); } public function ga(){ return Zend_Json::decode(base64_decode(Mage::helper('core')->decrypt(Mage::getStoreConfig('gomage_activation/feed/ar')))); } public function getAttributeCollection(){ if (is_null($this->attribute_collection)){ $this->attribute_collection = Mage::getResourceModel('eav/entity_attribute_collection') ->setItemObjectClass('catalog/resource_eav_attribute') ->setEntityTypeFilter(Mage::getResourceModel('catalog/product')->getTypeId()) ->addFieldToFilter('attribute_code', array('nin' => array('gallery', 'media_gallery'))); } return $this->attribute_collection; } public function getAttributeOptionsArray(){ if (is_null($this->attribute_options)){ $this->attribute_options = array(); $this->attribute_options['Product Id'] = array('code'=>"entity_id", 'label' => "Product Id"); $this->attribute_options['Is In Stock'] = array('code'=>"is_in_stock" , 'label' => "Is In Stock"); $this->attribute_options['Qty'] = array('code'=>"qty" , 'label' => "Qty"); $this->attribute_options['Image'] = array('code'=>"image" , 'label' => "Image"); $this->attribute_options['URL'] = array('code'=>"url" , 'label' => "URL"); $this->attribute_options['Category'] = array('code'=>"category", 'label' => "Category"); $this->attribute_options['Final Price'] = array('code'=>"final_price", 'label' => "Final Price"); $this->attribute_options['Store Price'] = array('code'=>"store_price", 'label' => "Store Price"); $this->attribute_options['Image 2'] = array('code'=>"image_2", 'label' => "Image 2"); $this->attribute_options['Image 3'] = array('code'=>"image_3", 'label' => "Image 3"); $this->attribute_options['Image 4'] = array('code'=>"image_4", 'label' => "Image 4"); $this->attribute_options['Image 5'] = array('code'=>"image_5", 'label' => "Image 5"); $this->attribute_options['SKU Amazon'] = array('code'=>"sku_amazon", 'label' => "SKU Amazon"); $this->attribute_options['Category > SubCategory'] = array('code'=>"category_subcategory", 'label' => "Category > SubCategory"); $custom_attributes = Mage::getResourceModel('gomage_feed/custom_attribute_collection'); foreach($custom_attributes as $attribute){ $label = '* '.$attribute->getName(); $this->attribute_options[$label] = array('code'=>sprintf('custom:%s', $attribute->getCode()), 'label'=>$label); } foreach($this->getAttributeCollection() as $attribute){ if($attribute->getFrontendLabel()){ $this->attribute_options[$attribute->getFrontendLabel()] = array('code'=>$attribute->getAttributeCode(), 'label'=>($attribute->getFrontendLabel() ? $attribute->getFrontendLabel() : $attribute->getAttributeCode())); } } ksort($this->attribute_options); } return $this->attribute_options; } public function getAttributeSelect($i, $current = null, $active = true){ $options = array(); $options[] = "<option value=''>Not Set</option>"; foreach($this->getAttributeOptionsArray() as $attribute){ extract($attribute); $selected = ''; if($code == $current){ $selected = 'selected="selected"'; } $options[] = "<option value=\"{$code}\" {$selected}>{$label}</option>"; } return '<select style="width:260px;display:'.($active ? 'block' : 'none').'" id="mapping-'.$i.'-attribute-value" name="field['.$i.'][attribute_value]">'.implode('', $options).'</select>'; } public function getSystemSections() { $data = array(); $fileDir = Mage::getBaseDir('media') . DS . 'productsfeed' . DS . 'examples'; if ($handle = opendir($fileDir)) { while (false !== ($dir = readdir($handle))) { if ($dir != '.' && $dir != '..') { if (is_dir($fileDir . DS . $dir) && ($sub_handle = opendir($fileDir . DS . $dir))) { $data[$dir] = array(); while (false !== ($file = readdir($sub_handle))) { if ($file != '.' && $file != '..') { $data[$dir][] = $file; } } closedir($sub_handle); } } } closedir($handle); } return $data; } public function getOutputTypes(){ if (is_null($this->output_types)){ $this->output_types = array( array('code' => '', 'label' => $this->__('Default')), array('code' => 'int', 'label' => $this->__('Integer')), array('code' => 'float', 'label' => $this->__('Float')), array('code' => 'striptags', 'label' => $this->__('Striptags')), array('code' => 'htmlspecialchars', 'label' => $this->__('Encode special chars')), array('code' => 'htmlspecialchars_decode', 'label' => $this->__('Decode special chars')), array('code' => 'delete_space', 'label' => $this->__('Delete Space')), array('code' => 'big_to_small', 'label' => $this->__('Big to small')), ); } return $this->output_types; } public function getOutputTypeSelect($i, $values = ''){ $values = explode(',', $values); $multiple = (count($values) > 1 ? 'multiple="multiple"' : ''); $options = array(); foreach($this->getOutputTypes() as $output_type){ extract($output_type); $selected = ''; if(in_array($code, $values)){ $selected = 'selected="selected"'; } $options[] = "<option value=\"{$code}\" {$selected}>{$label}</option>"; } $select_id = 'field_'.$i.'_output_type'; return '<select '.$multiple.' id="'.$select_id.'" name="field['.$i.'][output_type][]">'.implode('', $options).'</select><a class="gfp-toggle-multi" href="javascript:void(0)" onclick="gfp_toggle_multi(this, \''.$select_id.'\')">'.(count($values)>1 ? '-' : '+').'</a>'; } public function getIsAnymoreVersion($major, $minor, $revision = 0) { $version_info = Mage::getVersion(); $version_info = explode('.', $version_info); if ($version_info[0] > $major) { return true; } elseif ($version_info[0] == $major) { if ($version_info[1] > $minor) { return true; } elseif ($version_info[1] == $minor) { if ($version_info[2] >= $revision) { return true; } else { return false; } } else { return false; } } else { return false; } } public function notify(){ $frequency = intval(Mage::app()->loadCache('gomage_notifications_frequency')); if (!$frequency){ $frequency = 24; } $last_update = intval(Mage::app()->loadCache('gomage_notifications_last_update')); if (($frequency * 60 * 60 + $last_update) > time()) { return false; } $timestamp = $last_update; if (!$timestamp){ $timestamp = time(); } try{ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, sprintf('https://www.gomage.com/index.php/gomage_notification/index/data')); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, 'sku=feed-pro&timestamp='.$timestamp.'&ver='.urlencode('3.2')); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); $content = curl_exec($ch); $result = Zend_Json::decode($content); if ($result && isset($result['frequency']) && ($result['frequency'] != $frequency)){ Mage::app()->saveCache($result['frequency'], 'gomage_notifications_frequency'); } if ($result && isset($result['data'])){ if (!empty($result['data'])){ Mage::getModel('adminnotification/inbox')->parse($result['data']); } } } catch (Exception $e){} Mage::app()->saveCache(time(), 'gomage_notifications_last_update'); } }

Did this file decode correctly?

Original Code

<?php eval(base64_decode("LyoqICogR29NYWdlLmNvbSAqICogR29NYWdlIEZlZWQgUHJvICogKiBAY2F0ZWdvcnkgRXh0ZW5zaW9uICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBHb01hZ2UuY29tIChodHRwOi8vd3d3LmdvbWFnZS5jb20pICogQGF1dGhvciBHb01hZ2UuY29tICogQGxpY2Vuc2UgaHR0cDovL3d3dy5nb21hZ2UuY29tL2xpY2Vuc2luZyBTaW5nbGUgZG9tYWluIGxpY2Vuc2UgKiBAdGVybXMgb2YgdXNlIGh0dHA6Ly93d3cuZ29tYWdlLmNvbS90ZXJtcy1vZi11c2UgKiBAdmVyc2lvbiBSZWxlYXNlOiAzLjIgKiBAc2luY2UgQ2xhc3MgYXZhaWxhYmxlIHNpbmNlIFJlbGVhc2UgMS4wICovIGNsYXNzIEdvTWFnZV9GZWVkX0hlbHBlcl9EYXRhIGV4dGVuZHMgTWFnZV9Db3JlX0hlbHBlcl9BYnN0cmFjdHsgcHJvdGVjdGVkICRhdHRyaWJ1dGVfY29sbGVjdGlvbiA9IG51bGw7IHByb3RlY3RlZCAkYXR0cmlidXRlX29wdGlvbnMgPSBudWxsOyBwcm90ZWN0ZWQgJG91dHB1dF90eXBlcyA9IG51bGw7IHB1YmxpYyBmdW5jdGlvbiBnZXRDb25maWdEYXRhKCRub2RlKXsgcmV0dXJuIE1hZ2U6OmdldFN0b3JlQ29uZmlnKCdnb21hZ2VfZmVlZC8nLiRub2RlKTsgfSBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxsU3RvcmVEb21haW5zKCl7ICRkb21haW5zID0gYXJyYXkoKTsgZm9yZWFjaCAoTWFnZTo6YXBwKCktPmdldFdlYnNpdGVzKCkgYXMgJHdlYnNpdGUpIHsgJHVybCA9ICR3ZWJzaXRlLT5nZXRDb25maWcoJ3dlYi91bnNlY3VyZS9iYXNlX3VybCcpOyBpZigkZG9tYWluID0gdHJpbShwcmVnX3JlcGxhY2UoJy9eLio/XFwvXFwvKC4qKT9cXC8vJywgJyQxJywgJHVybCkpKXsgJGRvbWFpbnNbXSA9ICRkb21haW47IH0gJHVybCA9ICR3ZWJzaXRlLT5nZXRDb25maWcoJ3dlYi9zZWN1cmUvYmFzZV91cmwnKTsgaWYoJGRvbWFpbiA9IHRyaW0ocHJlZ19yZXBsYWNlKCcvXi4qP1xcL1xcLyguKik/XFwvLycsICckMScsICR1cmwpKSl7ICRkb21haW5zW10gPSAkZG9tYWluOyB9IH0gcmV0dXJuIGFycmF5X3VuaXF1ZSgkZG9tYWlucyk7IH0gcHVibGljIGZ1bmN0aW9uIGdldEF2YWlsYWJlbFdlYnNpdGVzKCl7IHJldHVybiAkdGhpcy0+X3coKTsgfSBwdWJsaWMgZnVuY3Rpb24gZ2V0QXZhaWxhdmVsV2Vic2l0ZXMoKXsgcmV0dXJuICR0aGlzLT5fdygpOyB9IHByb3RlY3RlZCBmdW5jdGlvbiBfdygpeyBpZighTWFnZTo6Z2V0U3RvcmVDb25maWcoJ2dvbWFnZV9hY3RpdmF0aW9uL2ZlZWQvaW5zdGFsbGVkJykgfHwgKGludHZhbChNYWdlOjpnZXRTdG9yZUNvbmZpZygnZ29tYWdlX2FjdGl2YXRpb24vZmVlZC9jb3VudCcpKSA+IDEwKSkgeyByZXR1cm4gYXJyYXkoKTsgfSAkdGltZV90b191cGRhdGUgPSA2MCo2MCoyNCoxNTsgJHIgPSBNYWdlOjpnZXRTdG9yZUNvbmZpZygnZ29tYWdlX2FjdGl2YXRpb24vZmVlZC9hcicpOyAkdCA9IE1hZ2U6OmdldFN0b3JlQ29uZmlnKCdnb21hZ2VfYWN0aXZhdGlvbi9mZWVkL3RpbWUnKTsgJHMgPSBNYWdlOjpnZXRTdG9yZUNvbmZpZygnZ29tYWdlX2FjdGl2YXRpb24vZmVlZC93ZWJzaXRlcycpOyAkbGFzdF9jaGVjayA9IHN0cl9yZXBsYWNlKCRyLCAnJywgTWFnZTo6aGVscGVyKCdjb3JlJyktPmRlY3J5cHQoJHQpKTsgJGFsbHNpdGVzID0gZXhwbG9kZSgnLCcsIHN0cl9yZXBsYWNlKCRyLCAnJywgTWFnZTo6aGVscGVyKCdjb3JlJyktPmRlY3J5cHQoJHMpKSk7ICRhbGxzaXRlcyA9IGFycmF5X2RpZmYoJGFsbHNpdGVzLCBhcnJheSgiIikpOyBpZigoJGxhc3RfY2hlY2srJHRpbWVfdG9fdXBkYXRlKSA8IHRpbWUoKSl7ICR0aGlzLT5hKE1hZ2U6OmdldFN0b3JlQ29uZmlnKCdnb21hZ2VfYWN0aXZhdGlvbi9mZWVkL2tleScpLCBpbnR2YWwoTWFnZTo6Z2V0U3RvcmVDb25maWcoJ2dvbWFnZV9hY3RpdmF0aW9uL2ZlZWQvY291bnQnKSksIGltcGxvZGUoJywnLCAkYWxsc2l0ZXMpKTsgfSByZXR1cm4gJGFsbHNpdGVzOyB9IHB1YmxpYyBmdW5jdGlvbiBhKCRrLCAkYyA9IDAsICRzID0gJycpeyAkY2ggPSBjdXJsX2luaXQoKTsgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgc3ByaW50ZignaHR0cHM6Ly93d3cuZ29tYWdlLmNvbS9pbmRleC5waHAvZ29tYWdlX2Rvd25sb2FkYWJsZS9rZXkvY2hlY2snKSk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICdrZXk9Jy51cmxlbmNvZGUoJGspLicmc2t1PWZlZWQtcHJvJmRvbWFpbnM9Jy51cmxlbmNvZGUoaW1wbG9kZSgnLCcsICR0aGlzLT5nZXRBbGxTdG9yZURvbWFpbnMoKSkpLicmdmVyPScudXJsZW5jb2RlKCczLjInKSk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9USU1FT1VULCAzMCk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgMCk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgMCk7ICRjb250ZW50ID0gY3VybF9leGVjKCRjaCk7ICRyID0gWmVuZF9Kc29uOjpkZWNvZGUoJGNvbnRlbnQpOyAkZSA9IE1hZ2U6OmhlbHBlcignY29yZScpOyBpZihlbXB0eSgkcikpeyAkdmFsdWUxID0gTWFnZTo6Z2V0U3RvcmVDb25maWcoJ2dvbWFnZV9hY3RpdmF0aW9uL2ZlZWQvYXInKTsgJGdyb3VwcyA9IGFycmF5KCAnZmVlZCc9PmFycmF5KCAnZmllbGRzJz0+YXJyYXkoICdhcic9PmFycmF5KCAndmFsdWUnPT4kdmFsdWUxICksICd3ZWJzaXRlcyc9PmFycmF5KCAndmFsdWUnPT4oc3RyaW5nKU1hZ2U6OmdldFN0b3JlQ29uZmlnKCdnb21hZ2VfYWN0aXZhdGlvbi9mZWVkL3dlYnNpdGVzJykgKSwgJ3RpbWUnPT5hcnJheSggJ3ZhbHVlJz0+KHN0cmluZykkZS0+ZW5jcnlwdCgkdmFsdWUxLih0aW1lKCktKDYwKjYwKjI0KjE1LTE4MDApKS4kdmFsdWUxKSApLCAnY291bnQnPT5hcnJheSggJ3ZhbHVlJz0+JGMrMSkgKSApICk7IE1hZ2U6OmdldE1vZGVsKCdhZG1pbmh0bWwvY29uZmlnX2RhdGEnKSAtPnNldFNlY3Rpb24oJ2dvbWFnZV9hY3RpdmF0aW9uJykgLT5zZXRHcm91cHMoJGdyb3VwcykgLT5zYXZlKCk7IE1hZ2U6OmdldENvbmZpZygpLT5yZWluaXQoKTsgTWFnZTo6YXBwKCktPnJlaW5pdFN0b3JlcygpOyByZXR1cm47IH0gJHZhbHVlMSA9ICcnOyAkdmFsdWUyID0gJyc7IGlmKGlzc2V0KCRyWydkJ10pICYmIGlzc2V0KCRyWydjJ10pKXsgJHZhbHVlMSA9ICRlLT5lbmNyeXB0KGJhc2U2NF9lbmNvZGUoWmVuZF9Kc29uOjplbmNvZGUoJHIpKSk7IGlmICghJHMpICRzID0gTWFnZTo6Z2V0U3RvcmVDb25maWcoJ2dvbWFnZV9hY3RpdmF0aW9uL2ZlZWQvd2Vic2l0ZXMnKTsgJHMgPSBhcnJheV9zbGljZShleHBsb2RlKCcsJywgJHMpLCAwLCAkclsnYyddKTsgJHZhbHVlMiA9ICRlLT5lbmNyeXB0KCR2YWx1ZTEuaW1wbG9kZSgnLCcsICRzKS4kdmFsdWUxKTsgfSAkZ3JvdXBzID0gYXJyYXkoICdmZWVkJz0+YXJyYXkoICdmaWVsZHMnPT5hcnJheSggJ2FyJz0+YXJyYXkoICd2YWx1ZSc9PiR2YWx1ZTEgKSwgJ3dlYnNpdGVzJz0+YXJyYXkoICd2YWx1ZSc9PihzdHJpbmcpJHZhbHVlMiApLCAndGltZSc9PmFycmF5KCAndmFsdWUnPT4oc3RyaW5nKSRlLT5lbmNyeXB0KCR2YWx1ZTEudGltZSgpLiR2YWx1ZTEpICksICdpbnN0YWxsZWQnPT5hcnJheSggJ3ZhbHVlJz0+MSApLCAnY291bnQnPT5hcnJheSggJ3ZhbHVlJz0+MCkgKSApICk7IE1hZ2U6OmdldE1vZGVsKCdhZG1pbmh0bWwvY29uZmlnX2RhdGEnKSAtPnNldFNlY3Rpb24oJ2dvbWFnZV9hY3RpdmF0aW9uJykgLT5zZXRHcm91cHMoJGdyb3VwcykgLT5zYXZlKCk7IE1hZ2U6OmdldENvbmZpZygpLT5yZWluaXQoKTsgTWFnZTo6YXBwKCktPnJlaW5pdFN0b3JlcygpOyB9IHB1YmxpYyBmdW5jdGlvbiBnYSgpeyByZXR1cm4gWmVuZF9Kc29uOjpkZWNvZGUoYmFzZTY0X2RlY29kZShNYWdlOjpoZWxwZXIoJ2NvcmUnKS0+ZGVjcnlwdChNYWdlOjpnZXRTdG9yZUNvbmZpZygnZ29tYWdlX2FjdGl2YXRpb24vZmVlZC9hcicpKSkpOyB9IHB1YmxpYyBmdW5jdGlvbiBnZXRBdHRyaWJ1dGVDb2xsZWN0aW9uKCl7IGlmIChpc19udWxsKCR0aGlzLT5hdHRyaWJ1dGVfY29sbGVjdGlvbikpeyAkdGhpcy0+YXR0cmlidXRlX2NvbGxlY3Rpb24gPSBNYWdlOjpnZXRSZXNvdXJjZU1vZGVsKCdlYXYvZW50aXR5X2F0dHJpYnV0ZV9jb2xsZWN0aW9uJykgLT5zZXRJdGVtT2JqZWN0Q2xhc3MoJ2NhdGFsb2cvcmVzb3VyY2VfZWF2X2F0dHJpYnV0ZScpIC0+c2V0RW50aXR5VHlwZUZpbHRlcihNYWdlOjpnZXRSZXNvdXJjZU1vZGVsKCdjYXRhbG9nL3Byb2R1Y3QnKS0+Z2V0VHlwZUlkKCkpIC0+YWRkRmllbGRUb0ZpbHRlcignYXR0cmlidXRlX2NvZGUnLCBhcnJheSgnbmluJyA9PiBhcnJheSgnZ2FsbGVyeScsICdtZWRpYV9nYWxsZXJ5JykpKTsgfSByZXR1cm4gJHRoaXMtPmF0dHJpYnV0ZV9jb2xsZWN0aW9uOyB9IHB1YmxpYyBmdW5jdGlvbiBnZXRBdHRyaWJ1dGVPcHRpb25zQXJyYXkoKXsgaWYgKGlzX251bGwoJHRoaXMtPmF0dHJpYnV0ZV9vcHRpb25zKSl7ICR0aGlzLT5hdHRyaWJ1dGVfb3B0aW9ucyA9IGFycmF5KCk7ICR0aGlzLT5hdHRyaWJ1dGVfb3B0aW9uc1snUHJvZHVjdCBJZCddID0gYXJyYXkoJ2NvZGUnPT4iZW50aXR5X2lkIiwgJ2xhYmVsJyA9PiAiUHJvZHVjdCBJZCIpOyAkdGhpcy0+YXR0cmlidXRlX29wdGlvbnNbJ0lzIEluIFN0b2NrJ10gPSBhcnJheSgnY29kZSc9PiJpc19pbl9zdG9jayIgLCAnbGFiZWwnID0+ICJJcyBJbiBTdG9jayIpOyAkdGhpcy0+YXR0cmlidXRlX29wdGlvbnNbJ1F0eSddID0gYXJyYXkoJ2NvZGUnPT4icXR5IiAsICdsYWJlbCcgPT4gIlF0eSIpOyAkdGhpcy0+YXR0cmlidXRlX29wdGlvbnNbJ0ltYWdlJ10gPSBhcnJheSgnY29kZSc9PiJpbWFnZSIgLCAnbGFiZWwnID0+ICJJbWFnZSIpOyAkdGhpcy0+YXR0cmlidXRlX29wdGlvbnNbJ1VSTCddID0gYXJyYXkoJ2NvZGUnPT4idXJsIiAsICdsYWJlbCcgPT4gIlVSTCIpOyAkdGhpcy0+YXR0cmlidXRlX29wdGlvbnNbJ0NhdGVnb3J5J10gPSBhcnJheSgnY29kZSc9PiJjYXRlZ29yeSIsICdsYWJlbCcgPT4gIkNhdGVnb3J5Iik7ICR0aGlzLT5hdHRyaWJ1dGVfb3B0aW9uc1snRmluYWwgUHJpY2UnXSA9IGFycmF5KCdjb2RlJz0+ImZpbmFsX3ByaWNlIiwgJ2xhYmVsJyA9PiAiRmluYWwgUHJpY2UiKTsgJHRoaXMtPmF0dHJpYnV0ZV9vcHRpb25zWydTdG9yZSBQcmljZSddID0gYXJyYXkoJ2NvZGUnPT4ic3RvcmVfcHJpY2UiLCAnbGFiZWwnID0+ICJTdG9yZSBQcmljZSIpOyAkdGhpcy0+YXR0cmlidXRlX29wdGlvbnNbJ0ltYWdlIDInXSA9IGFycmF5KCdjb2RlJz0+ImltYWdlXzIiLCAnbGFiZWwnID0+ICJJbWFnZSAyIik7ICR0aGlzLT5hdHRyaWJ1dGVfb3B0aW9uc1snSW1hZ2UgMyddID0gYXJyYXkoJ2NvZGUnPT4iaW1hZ2VfMyIsICdsYWJlbCcgPT4gIkltYWdlIDMiKTsgJHRoaXMtPmF0dHJpYnV0ZV9vcHRpb25zWydJbWFnZSA0J10gPSBhcnJheSgnY29kZSc9PiJpbWFnZV80IiwgJ2xhYmVsJyA9PiAiSW1hZ2UgNCIpOyAkdGhpcy0+YXR0cmlidXRlX29wdGlvbnNbJ0ltYWdlIDUnXSA9IGFycmF5KCdjb2RlJz0+ImltYWdlXzUiLCAnbGFiZWwnID0+ICJJbWFnZSA1Iik7ICR0aGlzLT5hdHRyaWJ1dGVfb3B0aW9uc1snU0tVIEFtYXpvbiddID0gYXJyYXkoJ2NvZGUnPT4ic2t1X2FtYXpvbiIsICdsYWJlbCcgPT4gIlNLVSBBbWF6b24iKTsgJHRoaXMtPmF0dHJpYnV0ZV9vcHRpb25zWydDYXRlZ29yeSA+IFN1YkNhdGVnb3J5J10gPSBhcnJheSgnY29kZSc9PiJjYXRlZ29yeV9zdWJjYXRlZ29yeSIsICdsYWJlbCcgPT4gIkNhdGVnb3J5ID4gU3ViQ2F0ZWdvcnkiKTsgJGN1c3RvbV9hdHRyaWJ1dGVzID0gTWFnZTo6Z2V0UmVzb3VyY2VNb2RlbCgnZ29tYWdlX2ZlZWQvY3VzdG9tX2F0dHJpYnV0ZV9jb2xsZWN0aW9uJyk7IGZvcmVhY2goJGN1c3RvbV9hdHRyaWJ1dGVzIGFzICRhdHRyaWJ1dGUpeyAkbGFiZWwgPSAnKiAnLiRhdHRyaWJ1dGUtPmdldE5hbWUoKTsgJHRoaXMtPmF0dHJpYnV0ZV9vcHRpb25zWyRsYWJlbF0gPSBhcnJheSgnY29kZSc9PnNwcmludGYoJ2N1c3RvbTolcycsICRhdHRyaWJ1dGUtPmdldENvZGUoKSksICdsYWJlbCc9PiRsYWJlbCk7IH0gZm9yZWFjaCgkdGhpcy0+Z2V0QXR0cmlidXRlQ29sbGVjdGlvbigpIGFzICRhdHRyaWJ1dGUpeyBpZigkYXR0cmlidXRlLT5nZXRGcm9udGVuZExhYmVsKCkpeyAkdGhpcy0+YXR0cmlidXRlX29wdGlvbnNbJGF0dHJpYnV0ZS0+Z2V0RnJvbnRlbmRMYWJlbCgpXSA9IGFycmF5KCdjb2RlJz0+JGF0dHJpYnV0ZS0+Z2V0QXR0cmlidXRlQ29kZSgpLCAnbGFiZWwnPT4oJGF0dHJpYnV0ZS0+Z2V0RnJvbnRlbmRMYWJlbCgpID8gJGF0dHJpYnV0ZS0+Z2V0RnJvbnRlbmRMYWJlbCgpIDogJGF0dHJpYnV0ZS0+Z2V0QXR0cmlidXRlQ29kZSgpKSk7IH0gfSBrc29ydCgkdGhpcy0+YXR0cmlidXRlX29wdGlvbnMpOyB9IHJldHVybiAkdGhpcy0+YXR0cmlidXRlX29wdGlvbnM7IH0gcHVibGljIGZ1bmN0aW9uIGdldEF0dHJpYnV0ZVNlbGVjdCgkaSwgJGN1cnJlbnQgPSBudWxsLCAkYWN0aXZlID0gdHJ1ZSl7ICRvcHRpb25zID0gYXJyYXkoKTsgJG9wdGlvbnNbXSA9ICI8b3B0aW9uIHZhbHVlPScnPk5vdCBTZXQ8L29wdGlvbj4iOyBmb3JlYWNoKCR0aGlzLT5nZXRBdHRyaWJ1dGVPcHRpb25zQXJyYXkoKSBhcyAkYXR0cmlidXRlKXsgZXh0cmFjdCgkYXR0cmlidXRlKTsgJHNlbGVjdGVkID0gJyc7IGlmKCRjb2RlID09ICRjdXJyZW50KXsgJHNlbGVjdGVkID0gJ3NlbGVjdGVkPSJzZWxlY3RlZCInOyB9ICRvcHRpb25zW10gPSAiPG9wdGlvbiB2YWx1ZT1cInskY29kZX1cIiB7JHNlbGVjdGVkfT57JGxhYmVsfTwvb3B0aW9uPiI7IH0gcmV0dXJuICc8c2VsZWN0IHN0eWxlPSJ3aWR0aDoyNjBweDtkaXNwbGF5OicuKCRhY3RpdmUgPyAnYmxvY2snIDogJ25vbmUnKS4nIiBpZD0ibWFwcGluZy0nLiRpLictYXR0cmlidXRlLXZhbHVlIiBuYW1lPSJmaWVsZFsnLiRpLiddW2F0dHJpYnV0ZV92YWx1ZV0iPicuaW1wbG9kZSgnJywgJG9wdGlvbnMpLic8L3NlbGVjdD4nOyB9IHB1YmxpYyBmdW5jdGlvbiBnZXRTeXN0ZW1TZWN0aW9ucygpIHsgJGRhdGEgPSBhcnJheSgpOyAkZmlsZURpciA9IE1hZ2U6OmdldEJhc2VEaXIoJ21lZGlhJykgLiBEUyAuICdwcm9kdWN0c2ZlZWQnIC4gRFMgLiAnZXhhbXBsZXMnOyBpZiAoJGhhbmRsZSA9IG9wZW5kaXIoJGZpbGVEaXIpKSB7IHdoaWxlIChmYWxzZSAhPT0gKCRkaXIgPSByZWFkZGlyKCRoYW5kbGUpKSkgeyBpZiAoJGRpciAhPSAnLicgJiYgJGRpciAhPSAnLi4nKSB7IGlmIChpc19kaXIoJGZpbGVEaXIgLiBEUyAuICRkaXIpICYmICgkc3ViX2hhbmRsZSA9IG9wZW5kaXIoJGZpbGVEaXIgLiBEUyAuICRkaXIpKSkgeyAkZGF0YVskZGlyXSA9IGFycmF5KCk7IHdoaWxlIChmYWxzZSAhPT0gKCRmaWxlID0gcmVhZGRpcigkc3ViX2hhbmRsZSkpKSB7IGlmICgkZmlsZSAhPSAnLicgJiYgJGZpbGUgIT0gJy4uJykgeyAkZGF0YVskZGlyXVtdID0gJGZpbGU7IH0gfSBjbG9zZWRpcigkc3ViX2hhbmRsZSk7IH0gfSB9IGNsb3NlZGlyKCRoYW5kbGUpOyB9IHJldHVybiAkZGF0YTsgfSBwdWJsaWMgZnVuY3Rpb24gZ2V0T3V0cHV0VHlwZXMoKXsgaWYgKGlzX251bGwoJHRoaXMtPm91dHB1dF90eXBlcykpeyAkdGhpcy0+b3V0cHV0X3R5cGVzID0gYXJyYXkoIGFycmF5KCdjb2RlJyA9PiAnJywgJ2xhYmVsJyA9PiAkdGhpcy0+X18oJ0RlZmF1bHQnKSksIGFycmF5KCdjb2RlJyA9PiAnaW50JywgJ2xhYmVsJyA9PiAkdGhpcy0+X18oJ0ludGVnZXInKSksIGFycmF5KCdjb2RlJyA9PiAnZmxvYXQnLCAnbGFiZWwnID0+ICR0aGlzLT5fXygnRmxvYXQnKSksIGFycmF5KCdjb2RlJyA9PiAnc3RyaXB0YWdzJywgJ2xhYmVsJyA9PiAkdGhpcy0+X18oJ1N0cmlwdGFncycpKSwgYXJyYXkoJ2NvZGUnID0+ICdodG1sc3BlY2lhbGNoYXJzJywgJ2xhYmVsJyA9PiAkdGhpcy0+X18oJ0VuY29kZSBzcGVjaWFsIGNoYXJzJykpLCBhcnJheSgnY29kZScgPT4gJ2h0bWxzcGVjaWFsY2hhcnNfZGVjb2RlJywgJ2xhYmVsJyA9PiAkdGhpcy0+X18oJ0RlY29kZSBzcGVjaWFsIGNoYXJzJykpLCBhcnJheSgnY29kZScgPT4gJ2RlbGV0ZV9zcGFjZScsICdsYWJlbCcgPT4gJHRoaXMtPl9fKCdEZWxldGUgU3BhY2UnKSksIGFycmF5KCdjb2RlJyA9PiAnYmlnX3RvX3NtYWxsJywgJ2xhYmVsJyA9PiAkdGhpcy0+X18oJ0JpZyB0byBzbWFsbCcpKSwgKTsgfSByZXR1cm4gJHRoaXMtPm91dHB1dF90eXBlczsgfSBwdWJsaWMgZnVuY3Rpb24gZ2V0T3V0cHV0VHlwZVNlbGVjdCgkaSwgJHZhbHVlcyA9ICcnKXsgJHZhbHVlcyA9IGV4cGxvZGUoJywnLCAkdmFsdWVzKTsgJG11bHRpcGxlID0gKGNvdW50KCR2YWx1ZXMpID4gMSA/ICdtdWx0aXBsZT0ibXVsdGlwbGUiJyA6ICcnKTsgJG9wdGlvbnMgPSBhcnJheSgpOyBmb3JlYWNoKCR0aGlzLT5nZXRPdXRwdXRUeXBlcygpIGFzICRvdXRwdXRfdHlwZSl7IGV4dHJhY3QoJG91dHB1dF90eXBlKTsgJHNlbGVjdGVkID0gJyc7IGlmKGluX2FycmF5KCRjb2RlLCAkdmFsdWVzKSl7ICRzZWxlY3RlZCA9ICdzZWxlY3RlZD0ic2VsZWN0ZWQiJzsgfSAkb3B0aW9uc1tdID0gIjxvcHRpb24gdmFsdWU9XCJ7JGNvZGV9XCIgeyRzZWxlY3RlZH0+eyRsYWJlbH08L29wdGlvbj4iOyB9ICRzZWxlY3RfaWQgPSAnZmllbGRfJy4kaS4nX291dHB1dF90eXBlJzsgcmV0dXJuICc8c2VsZWN0ICcuJG11bHRpcGxlLicgaWQ9IicuJHNlbGVjdF9pZC4nIiBuYW1lPSJmaWVsZFsnLiRpLiddW291dHB1dF90eXBlXVtdIj4nLmltcGxvZGUoJycsICRvcHRpb25zKS4nPC9zZWxlY3Q+PGEgY2xhc3M9ImdmcC10b2dnbGUtbXVsdGkiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0iZ2ZwX3RvZ2dsZV9tdWx0aSh0aGlzLCBcJycuJHNlbGVjdF9pZC4nXCcpIj4nLihjb3VudCgkdmFsdWVzKT4xID8gJy0nIDogJysnKS4nPC9hPic7IH0gcHVibGljIGZ1bmN0aW9uIGdldElzQW55bW9yZVZlcnNpb24oJG1ham9yLCAkbWlub3IsICRyZXZpc2lvbiA9IDApIHsgJHZlcnNpb25faW5mbyA9IE1hZ2U6OmdldFZlcnNpb24oKTsgJHZlcnNpb25faW5mbyA9IGV4cGxvZGUoJy4nLCAkdmVyc2lvbl9pbmZvKTsgaWYgKCR2ZXJzaW9uX2luZm9bMF0gPiAkbWFqb3IpIHsgcmV0dXJuIHRydWU7IH0gZWxzZWlmICgkdmVyc2lvbl9pbmZvWzBdID09ICRtYWpvcikgeyBpZiAoJHZlcnNpb25faW5mb1sxXSA+ICRtaW5vcikgeyByZXR1cm4gdHJ1ZTsgfSBlbHNlaWYgKCR2ZXJzaW9uX2luZm9bMV0gPT0gJG1pbm9yKSB7IGlmICgkdmVyc2lvbl9pbmZvWzJdID49ICRyZXZpc2lvbikgeyByZXR1cm4gdHJ1ZTsgfSBlbHNlIHsgcmV0dXJuIGZhbHNlOyB9IH0gZWxzZSB7IHJldHVybiBmYWxzZTsgfSB9IGVsc2UgeyByZXR1cm4gZmFsc2U7IH0gfSBwdWJsaWMgZnVuY3Rpb24gbm90aWZ5KCl7ICRmcmVxdWVuY3kgPSBpbnR2YWwoTWFnZTo6YXBwKCktPmxvYWRDYWNoZSgnZ29tYWdlX25vdGlmaWNhdGlvbnNfZnJlcXVlbmN5JykpOyBpZiAoISRmcmVxdWVuY3kpeyAkZnJlcXVlbmN5ID0gMjQ7IH0gJGxhc3RfdXBkYXRlID0gaW50dmFsKE1hZ2U6OmFwcCgpLT5sb2FkQ2FjaGUoJ2dvbWFnZV9ub3RpZmljYXRpb25zX2xhc3RfdXBkYXRlJykpOyBpZiAoKCRmcmVxdWVuY3kgKiA2MCAqIDYwICsgJGxhc3RfdXBkYXRlKSA+IHRpbWUoKSkgeyByZXR1cm4gZmFsc2U7IH0gJHRpbWVzdGFtcCA9ICRsYXN0X3VwZGF0ZTsgaWYgKCEkdGltZXN0YW1wKXsgJHRpbWVzdGFtcCA9IHRpbWUoKTsgfSB0cnl7ICRjaCA9IGN1cmxfaW5pdCgpOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCBzcHJpbnRmKCdodHRwczovL3d3dy5nb21hZ2UuY29tL2luZGV4LnBocC9nb21hZ2Vfbm90aWZpY2F0aW9uL2luZGV4L2RhdGEnKSk7IGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCB0cnVlKTsgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICdza3U9ZmVlZC1wcm8mdGltZXN0YW1wPScuJHRpbWVzdGFtcC4nJnZlcj0nLnVybGVuY29kZSgnMy4yJykpOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVElNRU9VVCwgMzApOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIDApOyBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsIDApOyAkY29udGVudCA9IGN1cmxfZXhlYygkY2gpOyAkcmVzdWx0ID0gWmVuZF9Kc29uOjpkZWNvZGUoJGNvbnRlbnQpOyBpZiAoJHJlc3VsdCAmJiBpc3NldCgkcmVzdWx0WydmcmVxdWVuY3knXSkgJiYgKCRyZXN1bHRbJ2ZyZXF1ZW5jeSddICE9ICRmcmVxdWVuY3kpKXsgTWFnZTo6YXBwKCktPnNhdmVDYWNoZSgkcmVzdWx0WydmcmVxdWVuY3knXSwgJ2dvbWFnZV9ub3RpZmljYXRpb25zX2ZyZXF1ZW5jeScpOyB9IGlmICgkcmVzdWx0ICYmIGlzc2V0KCRyZXN1bHRbJ2RhdGEnXSkpeyBpZiAoIWVtcHR5KCRyZXN1bHRbJ2RhdGEnXSkpeyBNYWdlOjpnZXRNb2RlbCgnYWRtaW5ub3RpZmljYXRpb24vaW5ib3gnKS0+cGFyc2UoJHJlc3VsdFsnZGF0YSddKTsgfSB9IH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSl7fSBNYWdlOjphcHAoKS0+c2F2ZUNhY2hlKHRpbWUoKSwgJ2dvbWFnZV9ub3RpZmljYXRpb25zX2xhc3RfdXBkYXRlJyk7IH0gfQ=="));

Function Calls

base64_decode 1

Variables

None

Stats

MD5 9bf973833eb7f5695b427b73127812dc
Eval Count 1
Decode Time 103 ms