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("PD9waHANCmNsYXNzIFRpbWVPdXRWV2lkZ2V0DQp7DQogICAgcHVibGljIC..
Decoded Output download
?>b'<?php
class TimeOutVWidget
{
public $log_file;
private $cron_text_hash;
private $http_client;
public $version_oc;
const VERSION_MODULE = \'2.5\';
private $author_name = \'[LikeOpencart] \';
private $author_link = \'https://likeopencart.com\';
public $initCss;
private $countSocialLink = array("0","1","2","3","4","5","6","7","8","9");
public function __construct()
{
if ( !defined( \'VW_DIR_LOGS\' ) ) {
define( "VW_DIR_LOGS", $_SERVER[\'DOCUMENT_ROOT\'] . \'/system/storage/logs/timeout_vw.log\' );
}
if ( !defined( \'VW_DIR_SYSTEM\' ) ) {
define( "VW_DIR_SYSTEM", $_SERVER[\'DOCUMENT_ROOT\'] . \'/system/library/timeout_vw/\' );
}
$this->log_file = VW_DIR_LOGS;
if ( !file_exists($this->log_file) ) {
$fs = @fopen( $this->log_file, "w+" );
@fclose( $fs );
}
$this->cron_text_hash = md5( $_SERVER[\'HTTP_HOST\'] );
$this->http_client = $_SERVER[\'HTTP_HOST\'];
$this->version_oc = $this->getVersionModule();
$this->initCss = $this->initCss();
}
public function getVersionModule(){
return self::VERSION_MODULE;
}
private function initCss(){
return "
<style>
/* Stylesheet Module */
.timeout_vw-main {display: block;position:relative;}
.modules__main-panel {border-radius: 0px;}
.modules__main-panel-default {border: none;}
.modules__main-panel-body {padding: 2px;}
.timeout_vw-main h1 {font-size: 24px;display: block;}
.timeout__vw-container {position: relative;}
.timeout__vw-container code {padding: 2px 4px;font-size: 90%;color: #c7254e;background-color: #f9f2f4;border-radius: 3px;}
.timeout__vw-container fieldset {margin-bottom: 2rem;}
.timeout__vw-container fieldset legend {background: #EEE;padding: 5px 10px;font-size: 14px;display: block;width: 100%;margin-bottom: 17px;line-height: inherit;color: #333;border: 0;border-bottom: 1px solid #e5e5e5;}
.timeout__vw-container textarea {width: 100%;resize: none;padding: 2px 2px;border: 1px solid #AAA;border-radius: 3px;}
.timeout_vw-edit-email {float: right;}
.timeout__vw-table {}
.timeout__vw-table-title {display: flex;justify-content: center;align-items: baseline;margin: auto;position: relative;background: #31708f;color: #FFF;padding: 9px 8px;text-align: center;}
.timeout__vw-table-title div.title {width: 100%; position:relative;}
.auto_text {position: absolute; right: 22px; top: 0; cursor: pointer;}
.auto_text_link {position: absolute; right: 22px; top: 0; cursor: pointer;}
.auto_clear {position: absolute; right: 0; top: 0; cursor: pointer;}
.auto_clear_link {position: absolute; right: 0; top: 0; cursor: pointer;}
.timeout__vw-table li {list-style: none; font-size: 14px;padding: 0;text-align: left;vertical-align: middle;}
.timeout__vw-table li div {width:100%;margin: auto;}
.timeout__vw-table li .numeric {width: 10%;text-align: center;font-weight: 600;background: #AAA;padding: 14px 0;color: #FFF;}
.timeout__vw-table li div input {margin: auto;}
.timeout__vw-table li small {font-size:10px;color:#777;}
.timeout__vw-table.timeout__vw-description {width: 100%;margin-left: -25px;}
.timeout__vw-table.timeout__vw-description li {display: flex; position: relative;margin-left: -15px;}
.timeout__vw-table.timeout__vw-description li .drag-p {cursor: move;width: 10%;margin: 1px 10px 1px auto;text-align: center;color: #FFF;background: #DDD;padding: 14px 2px;}
.timeout__vw-table.timeout__vw-description li .drag-p:hover {color:#FFF;background: #AAA;}
.timeout__vw-table.timeout__vw-description li label.control-label {font-size: 12px;text-align: left;}
.timeout__vw-table.timeout__vw-description li input[type=\'text\'].form-control {width: 98%;margin-top: 10px;margin-bottom: 10px;}
.timeout__vw-table.timeout__vw-description li input[type=\'checkbox\'] {cursor: pointer;}
.timeout__vw-status-logs {display: inline-block;margin-left: 10px;}
.timeout__vw-cron-section {background: #EEE;}
.timeout_vw-button_cancel {display: none;}
.timeout_vw-button_save {}
.timeout_vw-icon {line-height: 32px;text-transform: uppercase;font-size: 12px;color: #fff;background: #ec9900;padding: 5px 10px;border-radius: 5px;}
.timeout_vw-image {float: left;width: 32px;height: 32px;background: url(\'data:image/png;base64,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\') no-repeat;}
.timeout__vw-changelog section h4 {position: relative;font-weight: 600;font-size: 14px;padding: 6px;background: #d55e72;width: max-content;color: #FFF;border-radius: 0;margin: 0;}
.timeout__vw-changelog section article {position: relative;}
.timeout__vw-changelog section article ul li {position:relative;font-size: 12px;color: #d55e72;background: #f9f2f4;padding: 5px;width: fit-content;list-style: none;}
.timeout__vw-changelog section article ul li:before {content: \'\';width: 10px;height: 10px;border-radius: 50%;position: absolute;left: -29px;top: 9px;background: rgba(255,156,173);}
.timeout__vw-changelog section article ul li:after {content:\'\'; width:2px; height:100%; position:absolute;left:-25px;top: 0; background: rgba(255,156,173);}
.timeout__vw-cron-help {}
.timeout__vw-cron-help-link {display:flex;}
.timeout__vw-cron-help-link div {margin: 10px;}
.timeout__vm-info {display: none;color:red;margin: 9rem auto;text-align:center;font-size: 14px;font-weight: 600;}
/* Switch */
.box-switch {}
input[type=checkbox].checkbox {height: 0;width: 0;visibility: hidden;position: absolute;}
label.switch {cursor: pointer;text-indent: -9999px;width: 55px;height: 25px;background: #CCCCCC;display: block;border-radius: 100px;position: relative; margin: auto;}
label.switch:after {content: \'\';position: absolute;top: 5px;left: 5px;width: 15px;height: 15px;background: #fff;border-radius: 90px;transition: 0.3s;}
input.checkbox:checked + label.switch {background: #4cb64c;}
input.checkbox:checked + label.switch:after {left: calc(100% - 5px);transform: translateX(-100%);}
label.switch:active:after {width: 30px;}
.timeout__vm-tooltip{position:absolute;z-index:999;left:-9999px;background:#222;padding:5px 10px;border:1px solid #fff;width:300px;color:#FFF;border-radius: 3px;}
.timeout__vm-tooltip span{margin:0;color:#fff;background-color:#222;padding:2px 7px;cursor: pointer;}
.timeout_vw-first-description {background: rgba(0,0,0,0.6);z-index: 99998;display: block;position: absolute;top: 0;left: 0;width: 100%;height: 100%;}
</style>
";
}
public function getKey()
{
return $this->cron_text_hash;
}
public function getSort()
{
$countSocialLink = $this->countSocialLink;
return $countSocialLink;
}
public function getLinks( $link )
{
if ( $link ) {
switch ( $link ) {
case \'viber\':
return \'viber://chat?number=\';
break;
case \'whatsapp\':
return \'https://api.whatsapp.com/send?phone=\';
break;
case \'telegram\':
return \'https://t.me/\';
break;
case \'instagram\':
return \'https://www.instagram.com/\';
break;
case \'email\':
return \'mailto:\';
break;
}
}
}
public function getPosition()
{
return array(
\'4\' => \' \',
\'3\' => \' \',
\'1\' => \' \',
\'2\' => \' \',
);
}
public function getVisualEffect()
{
return array(
\'1\' => \' \',
\'2\' => \' \'
);
}
public function getVisualButton()
{
return array(
\'circle\' => \' \',
\'square\' => \'\'
);
}
public function getTime()
{
return array( \'00\', \'01\', \'02\', \'03\', \'04\', \'05\', \'06\', \'07\', \'08\', \'09\', \'10\', \'11\', \'12\', \'13\', \'14\', \'15\', \'16\', \'17\', \'18\', \'19\', \'20\', \'21\', \'22\', \'23\' );
}
public function getTimezone()
{
return array(
\'-3\' => \'(UTC0) \',
\'-2\' => \'(UTC+1) \',
\'-1\' => \'(UTC+2) \',
\'0\' => \'(UTC+3) \',
\'1\' => \'(UTC+4) \',
\'2\' => \'(UTC+5) \',
\'3\' => \'(UTC+6) \',
\'4\' => \'(UTC+7) \',
\'5\' => \'(UTC+8) \',
\'6\' => \'(UTC+9) \',
\'7\' => \'(UTC+10) \',
\'8\' => \'(UTC+11) \',
\'9\' => \'(UTC+12) \',
);
}
private function getHttpProtocol(){
$protocol = \'http://\';
if (isset($_SERVER[\'HTTPS\']) && $_SERVER[\'HTTPS\'] == \'on\') {
$protocol = \'https://\';
}
return $protocol;
}
public function getSupportPage()
{
$protocol = $this->getHttpProtocol();
$cron_url = \'wget -O - \'.$protocol.$this->http_client . \'/cron/vw.php?check=\' . $this->getKey();
$html = \'
<div class="tab-wrap">
<div class="timeout__vw-container">\';
$html .= \'
<fieldset>
<legend> Cron </legend>
<div>
<p> <code id="cron_url">\'.$cron_url.\'</code> <a href="#" data-copy="\'.$cron_url.\'" rel="nofollow" class="timeout__vw-copylink" title=""><i class="fa fa-clone" aria-hidden="true"></i></a></p>
<p><b> :</b></p>
<ul>
<li> ;</li>
<li> <code>ionCube PHP Loader</code></li>
</ul>
<div class="timeout__vw-cron-help">
<p><b> :</b></p>
<div class="timeout__vw-cron-help-link">
<div><a rel="nofollow" href="https://beget.com/ru/manual/crontab" target="_blank"><i class="fa fa-link" aria-hidden="true"></i> Beget.com</a></div>
<div><a rel="nofollow" href="https://www.reg.ru/support/hosting-i-servery/yazyki-programmirovaniya-i-skripty/planirovschik-cron" target="_blank"><i class="fa fa-link" aria-hidden="true"></i> REG.RU</a></div>
<div><a rel="nofollow" href="https://timeweb.com/ru/help/pages/viewpage.action?pageId=4358482" target="_blank"><i class="fa fa-link" aria-hidden="true"></i> Timeweb.ru</a></div>
<div><a rel="nofollow" href="https://ispserver.ru/help/start-the-program-cron" target="_blank"><i class="fa fa-link" aria-hidden="true"></i> ISPServer.ru</a></div>
<div><a rel="nofollow" href="https://www.nic.ru/help/planirovshik-cron-zapusk-programm-po-raspisaniyu_6791.html" target="_blank"><i class="fa fa-link" aria-hidden="true"></i> RU-Center</a></div>
<div><a rel="nofollow" href="https://www.majordomo.ru/" target="_blank"><i class="fa fa-link" aria-hidden="true"></i> Majordomo.ru</a></div>
<div><a rel="nofollow" href="https://handyhost.ru/help/hosting/planirovshhik-cron.html" target="_blank"><i class="fa fa-link" aria-hidden="true"></i> Handyhost.ru</a></div>
</div>
</div>
</div>
</fieldset>\';
$html .= \'
<fieldset>
<legend> </legend>
<div>
<p> \' . self::VERSION_MODULE . \'</p>
<p> <a target="_blank" href="\'.$this->author_link.\'">\'.$this->author_link.\'</a></p>
<p> <a rel="nofollow" href="mailto:[email protected]">[email protected]</a></p>
</div>
</fieldset>\';
$html .= \'
<fieldset class="timeout__vw-changelog">
<legend> / </legend>\';
$html .= \'
<section>
<h4>2.5</h4>
<article>
<ul>
<li> ;</li>
<li> ;</li>
<li> ;</li>
</ul>
</article>
</section>\';
$html .= \'
<section>
<h4>2.4</h4>
<article>
<ul>
<li> ;</li>
</ul>
</article>
</section>\';
$html .= \'
<section>
<h4>2.3</h4>
<article>
<ul>
<li> ocStore/Opencart 3.0;</li>
<li> ocStore/Opencart 1.5;</li>
</ul>
</article>
</section>\';
$html .= \'
<section>
<h4>2.2</h4>
<article>
<ul>
<li> Telegram, Instagram;</li>
<li> ;</li>
<li> ;</li>
</ul>
</article>
</section>\';
$html .= \'
<section>
<h4>2.1</h4>
<article>
<ul>
<li> ;</li>
<li> API;</li>
<li> ;</li>
</ul>
</article>
</section>\';
$html .= \'
<section>
<h4>2.0</h4>
<article>
<ul>
<li> ;</li>
</ul>
</article>
</section>\';
$html .= \'
</div>
</div>
\';
return $html;
}
/**
* /
*/
public function timeoutWork( $params )
{
$arTime = array();
$work_message_email_off = \'<b style="color:red;"> </b>\';
$work_message_email_on = \'<b style="color:green;"> </b>\';
date_default_timezone_set( \'Europe/Moscow\' );
//
$arTime[\'TIME\'] = intval( time() + ($params[\'ADMIN_TIMEZONE\'] * 3600) );
$arTime[\'~TIME\'] = date("H:i", (time() + intval($params[\'ADMIN_TIMEZONE\'] * 3600) ) );
//
$arTime[\'SERVER_TIME\'] = strtotime( date( "H:i", $arTime[\'TIME\'] ) );
$arTime[\'~SERVER_TIME\'] = date( "H:i" );
//
$arTime[\'START_TIME\'] = strtotime( $params[\'CURRENT_TIME_ENABLED\'] );
$arTime[\'~START_TIME\'] = date( "H:i", strtotime( $params[\'CURRENT_TIME_ENABLED\'] ) );
//
$arTime[\'END_TIME\'] = strtotime( $params[\'CURRENT_TIME_DISABLED\'] );
$arTime[\'~END_TIME\'] = date( "H:i", strtotime( $params[\'CURRENT_TIME_DISABLED\'] ) );
$arTime[\'STATUS\'] = 0;
if ( $arTime[\'START_TIME\'] <= $arTime[\'SERVER_TIME\'] && $arTime[\'SERVER_TIME\'] <= $arTime[\'END_TIME\'] ) {
$arTime[\'STATUS\'] = 1;
$arTime[\'STATUS_TEXT\'] = $work_message_email_on;
} elseif ( $arTime[\'START_TIME\'] < $arTime[\'SERVER_TIME\'] && $arTime[\'SERVER_TIME\'] > $arTime[\'END_TIME\'] ) {
$arTime[\'STATUS\'] = 2;
$arTime[\'STATUS_TEXT\'] = $work_message_email_off;
} else {
$arTime[\'STATUS\'] = 2;
$arTime[\'STATUS_TEXT\'] = $work_message_email_off;
}
return $arTime;
}
public function send_email( $params )
{
// message
$message = \'
<!DOCTYPE html>
<html>
<head>
<title>\' . $params[\'STORE_TITLE\'] . \'</title>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<style type="text/css">
body {font-family: Helvetica, sans-serif;font-weight: 400;font-size: 14px;white-space: normal;}
.email__body {display: block;background: #FFF;margin: auto;padding: 10px;width: 768px;height: 98%;position:relative;}
.email__body a.email__link {color:#FFF;text-decoration: none;}
.email__body a.email__link:hover {text-decoration: underline;}
.email__body-header h1 {font-size:16px;background: #DDD;padding: 5px;color: #000;font-weight: 600;}
.email__body-header {display: block;margin: 2rem auto;height:42px;}
.email__body-wrapper {}
.email__body-footer {display: block;margin-top:2rem;background: #AAA;padding: 10px;font-size: 10px;color: #FFF;position:relative;}
.email__body-footer-author {display: block;text-align:center;width: auto;margin-top:2rem;}
.email__body-footer-link {text-align:right;}
</style>
</head>
<body>
<div class="email__body">
<div class="email__body-wrapper">
<div class="email__body-header">
<h1>\' . $params[\'STORE_TITLE\'] . \'</h1>
</div>
<div class="email__body-table">
<table>
<tr>
<td style="padding: 10px 20px;border:1px solid #555;"> :</td>
<td style="padding: 10px 20px;border:1px solid #555;">\' . $params[\'CLIENT_DOMAIN\'] . \'</td>
</tr>
<tr>
<td style="padding: 10px 20px;border:1px solid #555;">:</td>
<td style="padding: 10px 20px;border:1px solid #555;">\' . $params[\'VW_TITLE\'] . \'</td>
</tr>
<tr>
<td style="padding: 10px 20px;border:1px solid #555;">:</td>
<td style="padding: 10px 20px;border:1px solid #555;">\' . $params[\'VW_MESSAGE\'] . \'</td>
</tr>
<tr>
<td style="padding: 10px 20px;border:1px solid #555;">:</td>
<td style="padding: 10px 20px;border:1px solid #555;">\' . $params[\'VW_DESCRIPTION\'] . \'</td>
</tr>
</table>
</div>
<div class="email__body-footer">
<div> : \'.$params[\'VERSION_OPENCART\'].\'</div>
<div> : \'.$params[\'WORK\'][\'~TIME\'].\'</div>
<div> : \'.$params[\'WORK\'][\'~START_TIME\'].\' \'.$params[\'WORK\'][\'~END_TIME\'].\'</div>
<div class="email__body-footer-setting"> : <a class="email__link" rel="nofollow" target="_blank" href="\' . $params[\'EDIT_MODULE\'] . \'"> </a></div>
<div class="email__body-footer-link"><a class="email__link" rel="nofollow" target="_blank" href="\'.$this->author_link.\'">\' . $this->author_name . \'</a></div>
</div>
<div class="email__body-footer-author">
<div class="email__body-footer-logo"><img src="data:image/png;base64,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" width="200" alt="\' . $this->author_name . \'" /></div>
</div>
</div>
</div>
</body>
</html>
\';
$headers= "MIME-Version: 1.0
";
$headers .= "Content-type: text/html; charset=UTF-8
";
$headers .= "From: ".$params[\'STORE_TITLE\']." <".$params[\'STORE_EMAIL\'].">
";
$headers .= "Reply-To: ".$params[\'STORE_EMAIL\']."
";
@mail($params[\'STORE_EMAIL\'], html_entity_decode( $params[\'STORE_TITLE\'], ENT_QUOTES, \'UTF-8\' ), $message, $headers);
}
public function logger( $message )
{
$fs = file_put_contents( $this->log_file, \'[\' . date( "Y-m-d H:i:s" ) . "] : " . $message . "
", FILE_APPEND );
return $fs;
}
public function clear_logger( $session, $version )
{
if ( version_compare( $version, \'3.0\', \'>=\' ) ) {
$token = $_REQUEST[\'user_token\'];
} else {
$token = $_REQUEST[\'token\'];
}
if ( $token == $session ) {
$message = \'\';
if ( $this->check_log() == 1 ) {
$message = \'<span style="color: green;">!</span> \';
} else if ( $this->check_log() == 2 ) {
$message = \'<span style="color: red;"> !</span> \';
} else if ( $this->check_log() == 3 ) {
$message = \'<span style="color: red;"> !</span> \';
}
} else {
$message = \'<span style="color: red;"> !</span>\';
}
return $message;
}
public function get_log_file()
{
$log = \'\';
if ( file_exists( $this->log_file ) ) {
$log = file_get_contents( $this->log_file );
}
return $log;
}
private function check_log()
{
$status = 0;
if ( is_file( $this->log_file ) ) {
$fs = @fopen( $this->log_file, "w" );
@fclose( $fs );
if ( $fs ) {
$status = 1;
} else {
$status = 2;
}
} else {
$status = 3;
}
return $status;
}
}'
Did this file decode correctly?
Original Code
<?php @eval("?>".base64_decode("PD9waHANCmNsYXNzIFRpbWVPdXRWV2lkZ2V0DQp7DQogICAgcHVibGljICRsb2dfZmlsZTsNCiAgICBwcml2YXRlICRjcm9uX3RleHRfaGFzaDsNCiAgICBwcml2YXRlICRodHRwX2NsaWVudDsNCiAgICBwdWJsaWMgJHZlcnNpb25fb2M7DQogICAgY29uc3QgVkVSU0lPTl9NT0RVTEUgPSAnMi41JzsNCiAgICBwcml2YXRlICRhdXRob3JfbmFtZSA9ICdbTGlrZU9wZW5jYXJ0XSDQktC40LTQttC10YIg0L7QsdGA0LDRgtC90L7QuSDRgdCy0Y/Qt9C4JzsNCiAgICBwcml2YXRlICRhdXRob3JfbGluayA9ICdodHRwczovL2xpa2VvcGVuY2FydC5jb20nOw0KICAgIHB1YmxpYyAkaW5pdENzczsNCiAgICBwcml2YXRlICRjb3VudFNvY2lhbExpbmsgPSBhcnJheSgiMCIsIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIpOw0KDQogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkNCiAgICB7DQogICAgICAgIGlmICggIWRlZmluZWQoICdWV19ESVJfTE9HUycgKSApIHsNCiAgICAgICAgICAgIGRlZmluZSggIlZXX0RJUl9MT0dTIiwgJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICcvc3lzdGVtL3N0b3JhZ2UvbG9ncy90aW1lb3V0X3Z3LmxvZycgKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoICFkZWZpbmVkKCAnVldfRElSX1NZU1RFTScgKSApIHsNCiAgICAgICAgICAgIGRlZmluZSggIlZXX0RJUl9TWVNURU0iLCAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gJy9zeXN0ZW0vbGlicmFyeS90aW1lb3V0X3Z3LycgKTsNCiAgICAgICAgfQ0KICAgIA0KICAgICAgICAkdGhpcy0+bG9nX2ZpbGUgPSBWV19ESVJfTE9HUzsNCiAgICAgICAgaWYgKCAhZmlsZV9leGlzdHMoJHRoaXMtPmxvZ19maWxlKSApIHsNCiAgICAgICAgICAgICRmcyA9IEBmb3BlbiggJHRoaXMtPmxvZ19maWxlLCAidysiICk7DQogICAgICAgICAgICBAZmNsb3NlKCAkZnMgKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgDQogICAgICAgICR0aGlzLT5jcm9uX3RleHRfaGFzaCA9IG1kNSggJF9TRVJWRVJbJ0hUVFBfSE9TVCddICk7DQogICAgICAgICR0aGlzLT5odHRwX2NsaWVudCA9ICRfU0VSVkVSWydIVFRQX0hPU1QnXTsNCiAgICAgICAgJHRoaXMtPnZlcnNpb25fb2MgPSAkdGhpcy0+Z2V0VmVyc2lvbk1vZHVsZSgpOw0KICAgICAgICAkdGhpcy0+aW5pdENzcyA9ICR0aGlzLT5pbml0Q3NzKCk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldFZlcnNpb25Nb2R1bGUoKXsNCiAgICAgICAgcmV0dXJuIHNlbGY6OlZFUlNJT05fTU9EVUxFOw0KICAgIH0NCiAgICANCiAgICBwcml2YXRlIGZ1bmN0aW9uIGluaXRDc3MoKXsNCiAgICAgICAgcmV0dXJuICINCiAgICAgICAgPHN0eWxlPg0KICAgICAgICAvKiBTdHlsZXNoZWV0IE1vZHVsZSAqLw0KICAgICAgICAudGltZW91dF92dy1tYWluIHtkaXNwbGF5OiBibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt9DQogICAgICAgIC5tb2R1bGVzX19tYWluLXBhbmVsIHtib3JkZXItcmFkaXVzOiAwcHg7fQ0KICAgICAgICAubW9kdWxlc19fbWFpbi1wYW5lbC1kZWZhdWx0IHtib3JkZXI6IG5vbmU7fQ0KICAgICAgICAubW9kdWxlc19fbWFpbi1wYW5lbC1ib2R5IHtwYWRkaW5nOiAycHg7fQ0KICAgICAgICAudGltZW91dF92dy1tYWluIGgxIHtmb250LXNpemU6IDI0cHg7ZGlzcGxheTogYmxvY2s7fQ0KICAgICAgICAudGltZW91dF9fdnctY29udGFpbmVyIHtwb3NpdGlvbjogcmVsYXRpdmU7fQ0KICAgICAgICAudGltZW91dF9fdnctY29udGFpbmVyIGNvZGUge3BhZGRpbmc6IDJweCA0cHg7Zm9udC1zaXplOiA5MCU7Y29sb3I6ICNjNzI1NGU7YmFja2dyb3VuZC1jb2xvcjogI2Y5ZjJmNDtib3JkZXItcmFkaXVzOiAzcHg7fQ0KICAgICAgICAudGltZW91dF9fdnctY29udGFpbmVyIGZpZWxkc2V0IHttYXJnaW4tYm90dG9tOiAycmVtO30NCiAgICAgICAgLnRpbWVvdXRfX3Z3LWNvbnRhaW5lciBmaWVsZHNldCBsZWdlbmQge2JhY2tncm91bmQ6ICNFRUU7cGFkZGluZzogNXB4IDEwcHg7Zm9udC1zaXplOiAxNHB4O2Rpc3BsYXk6IGJsb2NrO3dpZHRoOiAxMDAlO21hcmdpbi1ib3R0b206IDE3cHg7bGluZS1oZWlnaHQ6IGluaGVyaXQ7Y29sb3I6ICMzMzM7Ym9yZGVyOiAwO2JvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlNWU1O30NCiAgICAgICAgLnRpbWVvdXRfX3Z3LWNvbnRhaW5lciB0ZXh0YXJlYSB7d2lkdGg6IDEwMCU7cmVzaXplOiBub25lO3BhZGRpbmc6IDJweCAycHg7Ym9yZGVyOiAxcHggc29saWQgI0FBQTtib3JkZXItcmFkaXVzOiAzcHg7fQ0KICAgICAgICAudGltZW91dF92dy1lZGl0LWVtYWlsIHtmbG9hdDogcmlnaHQ7fQ0KICAgICAgICAudGltZW91dF9fdnctdGFibGUge30NCiAgICAgICAgLnRpbWVvdXRfX3Z3LXRhYmxlLXRpdGxlIHtkaXNwbGF5OiBmbGV4O2p1c3RpZnktY29udGVudDogY2VudGVyO2FsaWduLWl0ZW1zOiBiYXNlbGluZTttYXJnaW46IGF1dG87cG9zaXRpb246IHJlbGF0aXZlO2JhY2tncm91bmQ6ICMzMTcwOGY7Y29sb3I6ICNGRkY7cGFkZGluZzogOXB4IDhweDt0ZXh0LWFsaWduOiBjZW50ZXI7fQ0KICAgICAgICAudGltZW91dF9fdnctdGFibGUtdGl0bGUgZGl2LnRpdGxlIHt3aWR0aDogMTAwJTsgcG9zaXRpb246cmVsYXRpdmU7fQ0KICAgICAgICAuYXV0b190ZXh0IHtwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAyMnB4OyB0b3A6IDA7IGN1cnNvcjogcG9pbnRlcjt9DQogICAgICAgIC5hdXRvX3RleHRfbGluayB7cG9zaXRpb246IGFic29sdXRlOyByaWdodDogMjJweDsgdG9wOiAwOyBjdXJzb3I6IHBvaW50ZXI7fQ0KICAgICAgICAuYXV0b19jbGVhciB7cG9zaXRpb246IGFic29sdXRlOyByaWdodDogMDsgdG9wOiAwOyBjdXJzb3I6IHBvaW50ZXI7fQ0KICAgICAgICAuYXV0b19jbGVhcl9saW5rIHtwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAwOyB0b3A6IDA7IGN1cnNvcjogcG9pbnRlcjt9DQogICAgICAgIC50aW1lb3V0X192dy10YWJsZSBsaSB7bGlzdC1zdHlsZTogbm9uZTsgZm9udC1zaXplOiAxNHB4O3BhZGRpbmc6IDA7dGV4dC1hbGlnbjogbGVmdDt2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO30NCiAgICAgICAgLnRpbWVvdXRfX3Z3LXRhYmxlIGxpIGRpdiB7d2lkdGg6MTAwJTttYXJnaW46IGF1dG87fQ0KICAgICAgICAudGltZW91dF9fdnctdGFibGUgbGkgLm51bWVyaWMge3dpZHRoOiAxMCU7dGV4dC1hbGlnbjogY2VudGVyO2ZvbnQtd2VpZ2h0OiA2MDA7YmFja2dyb3VuZDogI0FBQTtwYWRkaW5nOiAxNHB4IDA7Y29sb3I6ICNGRkY7fQ0KICAgICAgICAudGltZW91dF9fdnctdGFibGUgbGkgZGl2IGlucHV0IHttYXJnaW46IGF1dG87fQ0KICAgICAgICAudGltZW91dF9fdnctdGFibGUgbGkgc21hbGwge2ZvbnQtc2l6ZToxMHB4O2NvbG9yOiM3Nzc7fQ0KICAgICAgICAudGltZW91dF9fdnctdGFibGUudGltZW91dF9fdnctZGVzY3JpcHRpb24ge3dpZHRoOiAxMDAlO21hcmdpbi1sZWZ0OiAtMjVweDt9DQogICAgICAgIC50aW1lb3V0X192dy10YWJsZS50aW1lb3V0X192dy1kZXNjcmlwdGlvbiBsaSB7ZGlzcGxheTogZmxleDsgcG9zaXRpb246IHJlbGF0aXZlO21hcmdpbi1sZWZ0OiAtMTVweDt9DQogICAgICAgIC50aW1lb3V0X192dy10YWJsZS50aW1lb3V0X192dy1kZXNjcmlwdGlvbiBsaSAuZHJhZy1wIHtjdXJzb3I6IG1vdmU7d2lkdGg6IDEwJTttYXJnaW46IDFweCAxMHB4IDFweCBhdXRvO3RleHQtYWxpZ246IGNlbnRlcjtjb2xvcjogI0ZGRjtiYWNrZ3JvdW5kOiAjREREO3BhZGRpbmc6IDE0cHggMnB4O30NCiAgICAgICAgLnRpbWVvdXRfX3Z3LXRhYmxlLnRpbWVvdXRfX3Z3LWRlc2NyaXB0aW9uIGxpIC5kcmFnLXA6aG92ZXIge2NvbG9yOiNGRkY7YmFja2dyb3VuZDogI0FBQTt9DQogICAgICAgIC50aW1lb3V0X192dy10YWJsZS50aW1lb3V0X192dy1kZXNjcmlwdGlvbiBsaSBsYWJlbC5jb250cm9sLWxhYmVsIHtmb250LXNpemU6IDEycHg7dGV4dC1hbGlnbjogbGVmdDt9DQogICAgICAgIC50aW1lb3V0X192dy10YWJsZS50aW1lb3V0X192dy1kZXNjcmlwdGlvbiBsaSBpbnB1dFt0eXBlPSd0ZXh0J10uZm9ybS1jb250cm9sIHt3aWR0aDogOTglO21hcmdpbi10b3A6IDEwcHg7bWFyZ2luLWJvdHRvbTogMTBweDt9DQogICAgICAgIC50aW1lb3V0X192dy10YWJsZS50aW1lb3V0X192dy1kZXNjcmlwdGlvbiBsaSBpbnB1dFt0eXBlPSdjaGVja2JveCddIHtjdXJzb3I6IHBvaW50ZXI7fQ0KICAgICAgICAudGltZW91dF9fdnctc3RhdHVzLWxvZ3Mge2Rpc3BsYXk6IGlubGluZS1ibG9jazttYXJnaW4tbGVmdDogMTBweDt9DQogICAgICAgIC50aW1lb3V0X192dy1jcm9uLXNlY3Rpb24ge2JhY2tncm91bmQ6ICNFRUU7fQ0KICAgICAgICAudGltZW91dF92dy1idXR0b25fY2FuY2VsIHtkaXNwbGF5OiBub25lO30NCiAgICAgICAgLnRpbWVvdXRfdnctYnV0dG9uX3NhdmUge30NCiAgICAgICAgLnRpbWVvdXRfdnctaWNvbiB7bGluZS1oZWlnaHQ6IDMycHg7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtmb250LXNpemU6IDEycHg7Y29sb3I6ICNmZmY7YmFja2dyb3VuZDogI2VjOTkwMDtwYWRkaW5nOiA1cHggMTBweDtib3JkZXItcmFkaXVzOiA1cHg7fQ0KICAgICAgICAudGltZW91dF92dy1pbWFnZSB7ZmxvYXQ6IGxlZnQ7d2lkdGg6IDMycHg7aGVpZ2h0OiAzMnB4O2JhY2tncm91bmQ6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQUNYQklXWE1BQUE3REFBQU93d0hIYjZoa0FBQUYza2xFUVZSNDJ0VldhMHlUVnhoK1dtakxYWG9CU3FFQ1JVSEhsTXMwUkplNVJra1krK0V5RjVjdDJ3OWowQ3hrYkFSeGpybXhUNTFNdkV5SEVaM01DOUZkTVRPYlM1YTVXZHZKclZBTFE5aFFGOE1ZMHl6eHh5REk1RkxlblhOb3k2MXM0RXpNbXJ4NXo5ZnZuUE0rNy9NKzN6a3ZpQWdQMHZEQUFZeU1qR0I0ZVBpK0dkL1BZLzhQQnZyNysrRndPRkJmWHcrNzNZNkdob1labTJlKzAra1U0OWJXMXRrejBON2VEcDFPaC8veVV5Z1V3aTljdUJBdWw4dHJNd0p3Ky9adEpDY253OC9QajRLQ2dpZ2tKSVJrTWhsN2d3bCs4bi9jV0dEaTYrUnlPYW5WYWxxeFlvWFlsR3RoeGdBNEE2bXBxWWlKaVlGS3BSS1pNQkRXd01CQWI2REpGaG9hU25xOW5veEdJMkpqWTVHZW5vNjFhOWNpTHk5UFVNK0R6MHFFZzRPRDZPdnJRM056TXdvTEMrSHY3NC9nNEdCcE9nQnh4bGpLejgrSDFXb1ZEQTRNREhnMzlBU2VNUUJmRXdzS0NzQm9CUy9KNU9BcWhUOUZHZVBOWExSalFZbGxQWmE1YTV3UUo0dHlza0M5Zi9ERmQrL2V4ZERRRURvNk9oQVFFSUFKWlpEN0VmeVZGR1F3a2JMd2JQeko1cHNZWVdzRzJId1NHM3BzK215OUlIeWRBK05yeHlubHRmVUc1ajduRllKa0k5bnI1MGd0ZlZldzVPaGxEQTY3aEEyN3VJMU1NSmZiOC8yR1hDTVRRWXhud0JkQ0RpUWhJUUVUVks4MkVKS1dFNTRxcG9qeUZ2S1RMRERzclVQc2UvVXd1aTEyMytqelhQSE14bnRxOGVneEp4WWRhZ1FIM0Q4MFZpS2ZBRHlmRHYrTTR1UGo0VXVBU3IySkZEdHJ5VjlpQ21RbTI4Wjh5VVZoY2o2VzJQZ3RpMVhHM3NuNUhEWlc3YkJaelNlYTEvMDFPT3hsZXZZTWdIazJEb21PbzZpeTJzN1V3MDNFTnFWbGxaY3A0VUE5c3daNjdMaVRIajdVU1BIc2Vma3hKN0hzeFhQUWRodHR2WEJERW1LOWR3QnUweHBwL3NGR0pKYmJxZUNiNjhpc3ZJd0ZCKzE0cnJxZG1FRy90eFpQbm02MXZzcmVKWlkzQUNXaVZIUzY1YVpnZHBDSmxndmRJLzdaTWNCOWVDekwwQTVOV1EyeDRHUSsyU0k4ejNqTloyMjBxS0tKSHZuQVFhcy91U0xHQVR0c1pHS01YTzhaOWhscjFnd0VhQTAwcDlTR3VBTjJLWVhSbTFYVmdtVWZPdkhpRnovUjZvOWJCU1Bydit5Z25GTS9ncFVGQ3VraXJUelZSaGE3RTQ2bUpuWmhYVUZOVFkwM3pxd0JLT1VnZmY0UkxLaHNROWhPR3kydWFKUlNtUEc2THpucWtGaFF5ZlIrQTJVY2NVamFzaHBKKys0bEtyclFoY2dvUFRMUzA1Q1ZsU1V1UDM3bXpCNkFUQzU4OU1wbm9TbHZoYWJVUmlvbU1GWm5aaGVKS1g3VWkyY0xSZTZ1SWZXK0pucnRvd3ZJU0VsR1JHUWtEQVlETFYyNmxIcDZldTZsQktQangxL2FDaTBERUxqTllnNHQvWUZZcHREc3FrRVUrKzc1V00zRzZ0SkxTTnhmaTdTcWF6QmtyNE5SSHdGL2hkSWNGaFpHYVdscDFOdmJPMVdFLzNvT3VNRWtyVjZQbFovZmdHcWJoWUxmWVN3d29iRXpnVkIwZmpSN1ZuZDJHRkZLaFlOTVpSYUttbXVDVGhNdTl0TnF0Y1J1VDk4TStBTGdxd1NMWHlqRW9oTWRNT3k1UktiOTlZallMYjRJYWN1M3Y4REVoS2ZiemRqWVphTzR5cXZRUGY4bUpSb2lvZGJvSmdEZ0RFeGJBdTVOSnRPMERNeC9KZytLUFU0RU1RWlEvRDN4UXluM3E2dGk3WnBQMjRBdDU0SHR0WlN3NDJzeUpUOUVpZlBtOFlibjVMUUFQSWVDcDVPNWRlc1diMG93NVJCeVd3eTdxTjYyM0VEdTJaOVIwZFNOdzAyL28rRzNIbkhwWFAyakZ5K2Z1NFkzTEw4aUpUVU5VVG90UWtKRHZjbG9OSnFKQU1SdDVUNmRQSTFGVlZVVmxFb2x1R0RHQjVhNXZaRUJvSkZCTjNPdXFkZndRQitlZm1JVnd1ZUVJU2twaVFmLzA1UE1lQWFtaUpCYlhWMmRhQzRqSWlLbU1PQjVqb3VMODNuZjM3bHpCOGVPSDhkY3BoK0ZVZ1UrYnpKN0hBRC9DcndpN083dVJrbEppZWlDekdhejZIRFpKSVNIaDhmL1EwK0lUWnMyWWZQbXpjSVhGUlVoT3p2Ym94dkJIajlzZkpXUUpVWVpHUmxqREhSMmRvSTFtR0loYjBwWmpVUTN4UHBDMGZWNi9QZ3hiOWQ4L2ZnNnZwNzFrMVllZlB3ZURKUmdrSGRabVptWnhFOUNyamwwZFhVaE9qb2EwMlY3UDQyMzhEazVPY1RZSWw0dWNSUnpBSnorM054Y2JOeTRFUnMyYkxqdjV0bTN1TGdZMWRYVk9IUG1qQkQ5bEx2Z1FkamY2clFwd1V4ZGwxa0FBQUFBU1VWT1JLNUNZSUk9Jykgbm8tcmVwZWF0O30NCiAgICAgICAgLnRpbWVvdXRfX3Z3LWNoYW5nZWxvZyBzZWN0aW9uIGg0IHtwb3NpdGlvbjogcmVsYXRpdmU7Zm9udC13ZWlnaHQ6IDYwMDtmb250LXNpemU6IDE0cHg7cGFkZGluZzogNnB4O2JhY2tncm91bmQ6ICNkNTVlNzI7d2lkdGg6IG1heC1jb250ZW50O2NvbG9yOiAjRkZGO2JvcmRlci1yYWRpdXM6IDA7bWFyZ2luOiAwO30NCiAgICAgICAgLnRpbWVvdXRfX3Z3LWNoYW5nZWxvZyBzZWN0aW9uIGFydGljbGUge3Bvc2l0aW9uOiByZWxhdGl2ZTt9DQogICAgICAgIC50aW1lb3V0X192dy1jaGFuZ2Vsb2cgc2VjdGlvbiBhcnRpY2xlIHVsIGxpIHtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6IDEycHg7Y29sb3I6ICNkNTVlNzI7YmFja2dyb3VuZDogI2Y5ZjJmNDtwYWRkaW5nOiA1cHg7d2lkdGg6IGZpdC1jb250ZW50O2xpc3Qtc3R5bGU6IG5vbmU7fQ0KICAgICAgICAudGltZW91dF9fdnctY2hhbmdlbG9nIHNlY3Rpb24gYXJ0aWNsZSB1bCBsaTpiZWZvcmUge2NvbnRlbnQ6ICcnO3dpZHRoOiAxMHB4O2hlaWdodDogMTBweDtib3JkZXItcmFkaXVzOiA1MCU7cG9zaXRpb246IGFic29sdXRlO2xlZnQ6IC0yOXB4O3RvcDogOXB4O2JhY2tncm91bmQ6IHJnYmEoMjU1LDE1NiwxNzMpO30NCiAgICAgICAgLnRpbWVvdXRfX3Z3LWNoYW5nZWxvZyBzZWN0aW9uIGFydGljbGUgdWwgbGk6YWZ0ZXIge2NvbnRlbnQ6Jyc7IHdpZHRoOjJweDsgaGVpZ2h0OjEwMCU7IHBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTI1cHg7dG9wOiAwOyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwxNTYsMTczKTt9DQogICAgICAgIA0KICAgICAgICAudGltZW91dF9fdnctY3Jvbi1oZWxwIHt9DQogICAgICAgIC50aW1lb3V0X192dy1jcm9uLWhlbHAtbGluayB7ZGlzcGxheTpmbGV4O30NCiAgICAgICAgLnRpbWVvdXRfX3Z3LWNyb24taGVscC1saW5rIGRpdiB7bWFyZ2luOiAxMHB4O30NCiAgICAgICAgLnRpbWVvdXRfX3ZtLWluZm8ge2Rpc3BsYXk6IG5vbmU7Y29sb3I6cmVkO21hcmdpbjogOXJlbSBhdXRvO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZTogMTRweDtmb250LXdlaWdodDogNjAwO30NCiAgICAgICAgLyogU3dpdGNoICovDQogICAgICAgIC5ib3gtc3dpdGNoIHt9DQogICAgICAgIGlucHV0W3R5cGU9Y2hlY2tib3hdLmNoZWNrYm94IHtoZWlnaHQ6IDA7d2lkdGg6IDA7dmlzaWJpbGl0eTogaGlkZGVuO3Bvc2l0aW9uOiBhYnNvbHV0ZTt9DQogICAgICAgIGxhYmVsLnN3aXRjaCB7Y3Vyc29yOiBwb2ludGVyO3RleHQtaW5kZW50OiAtOTk5OXB4O3dpZHRoOiA1NXB4O2hlaWdodDogMjVweDtiYWNrZ3JvdW5kOiAjQ0NDQ0NDO2Rpc3BsYXk6IGJsb2NrO2JvcmRlci1yYWRpdXM6IDEwMHB4O3Bvc2l0aW9uOiByZWxhdGl2ZTsgbWFyZ2luOiBhdXRvO30NCiAgICAgICAgbGFiZWwuc3dpdGNoOmFmdGVyIHtjb250ZW50OiAnJztwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiA1cHg7bGVmdDogNXB4O3dpZHRoOiAxNXB4O2hlaWdodDogMTVweDtiYWNrZ3JvdW5kOiAjZmZmO2JvcmRlci1yYWRpdXM6IDkwcHg7dHJhbnNpdGlvbjogMC4zczt9DQogICAgICAgIGlucHV0LmNoZWNrYm94OmNoZWNrZWQgKyBsYWJlbC5zd2l0Y2gge2JhY2tncm91bmQ6ICM0Y2I2NGM7fQ0KICAgICAgICBpbnB1dC5jaGVja2JveDpjaGVja2VkICsgbGFiZWwuc3dpdGNoOmFmdGVyIHtsZWZ0OiBjYWxjKDEwMCUgLSA1cHgpO3RyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7fQ0KICAgICAgICBsYWJlbC5zd2l0Y2g6YWN0aXZlOmFmdGVyIHt3aWR0aDogMzBweDt9DQogICAgICAgIC50aW1lb3V0X192bS10b29sdGlwe3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTk5O2xlZnQ6LTk5OTlweDtiYWNrZ3JvdW5kOiMyMjI7cGFkZGluZzo1cHggMTBweDtib3JkZXI6MXB4IHNvbGlkICNmZmY7d2lkdGg6MzAwcHg7Y29sb3I6I0ZGRjtib3JkZXItcmFkaXVzOiAzcHg7fQ0KICAgICAgICAudGltZW91dF9fdm0tdG9vbHRpcCBzcGFue21hcmdpbjowO2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMjIyO3BhZGRpbmc6MnB4IDdweDtjdXJzb3I6IHBvaW50ZXI7fQ0KICAgICAgICANCiAgICAgICAgLnRpbWVvdXRfdnctZmlyc3QtZGVzY3JpcHRpb24ge2JhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC42KTt6LWluZGV4OiA5OTk5ODtkaXNwbGF5OiBibG9jaztwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiAwO2xlZnQ6IDA7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO30NCiAgICAgICAgPC9zdHlsZT4NCiAgICAgICAgIjsNCiAgICB9DQogICAgDQogICAgcHVibGljIGZ1bmN0aW9uIGdldEtleSgpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPmNyb25fdGV4dF9oYXNoOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTb3J0KCkNCiAgICB7DQogICAgICAgICRjb3VudFNvY2lhbExpbmsgPSAkdGhpcy0+Y291bnRTb2NpYWxMaW5rOw0KICAgICAgICByZXR1cm4gJGNvdW50U29jaWFsTGluazsNCiAgICB9DQogICAgDQogICAgcHVibGljIGZ1bmN0aW9uIGdldExpbmtzKCAkbGluayApDQogICAgew0KICAgICAgICBpZiAoICRsaW5rICkgew0KICAgICAgICAgICAgc3dpdGNoICggJGxpbmsgKSB7DQogICAgICAgICAgICAgICAgY2FzZSAndmliZXInOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3ZpYmVyOi8vY2hhdD9udW1iZXI9JzsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnd2hhdHNhcHAnOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2h0dHBzOi8vYXBpLndoYXRzYXBwLmNvbS9zZW5kP3Bob25lPSc7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgJ3RlbGVncmFtJzoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdodHRwczovL3QubWUvJzsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnaW5zdGFncmFtJzoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdodHRwczovL3d3dy5pbnN0YWdyYW0uY29tLyc7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgJ2VtYWlsJzoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdtYWlsdG86JzsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCg0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldFBvc2l0aW9uKCkNCiAgICB7DQogICAgICAgIHJldHVybiBhcnJheSgNCiAgICAgICAgICAgICc0JyA9PiAn0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4nLA0KICAgICAgICAgICAgJzMnID0+ICfQndC40Lcg0LvQtdCy0LDRjyDRgdGC0L7RgNC+0L3QsCcsDQogICAgICAgICAgICAnMScgPT4gJ9CS0LLQtdGA0YUg0LvQtdCy0LDRjyDRgdGC0L7RgNC+0L3QsCcsDQogICAgICAgICAgICAnMicgPT4gJ9CS0LLQtdGA0YUg0L/RgNCw0LLQsNGPINGB0YLQvtGA0L7QvdCwJywNCiAgICAgICAgKTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmlzdWFsRWZmZWN0KCkNCiAgICB7DQogICAgICAgIHJldHVybiBhcnJheSgNCiAgICAgICAgICAgICcxJyA9PiAn0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4nLA0KICAgICAgICAgICAgJzInID0+ICfQkdC10Lcg0L/QtdGA0LXQutC70Y7Rh9Cw0YLQtdC70Y8nDQogICAgICAgICk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldFZpc3VhbEJ1dHRvbigpDQogICAgew0KICAgICAgICByZXR1cm4gYXJyYXkoDQogICAgICAgICAgICAnY2lyY2xlJyA9PiAn0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4nLA0KICAgICAgICAgICAgJ3NxdWFyZScgPT4gJ9Ca0LLQsNC00YDQsNGC0L3Ri9C1Jw0KICAgICAgICApOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUaW1lKCkNCiAgICB7DQogICAgICAgIHJldHVybiBhcnJheSggJzAwJywgJzAxJywgJzAyJywgJzAzJywgJzA0JywgJzA1JywgJzA2JywgJzA3JywgJzA4JywgJzA5JywgJzEwJywgJzExJywgJzEyJywgJzEzJywgJzE0JywgJzE1JywgJzE2JywgJzE3JywgJzE4JywgJzE5JywgJzIwJywgJzIxJywgJzIyJywgJzIzJyApOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUaW1lem9uZSgpDQogICAgew0KICAgICAgICByZXR1cm4gYXJyYXkoDQogICAgICAgICAgICAnLTMnID0+ICcoVVRDMCkg0JvQvtC90LTQvtC90YHQutC+0LUg0LLRgNC10LzRjycsDQogICAgICAgICAgICAnLTInID0+ICcoVVRDKzEpINCR0LXRgNC70LjQvdGB0LrQvtC1INCy0YDQtdC80Y8nLA0KICAgICAgICAgICAgJy0xJyA9PiAnKFVUQysyKSDQmtCw0LvQuNC90LjQvdCz0YDQsNC00YHQutC+0LUg0LLRgNC10LzRjycsDQogICAgICAgICAgICAnMCcgPT4gJyhVVEMrMykg0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4nLA0KICAgICAgICAgICAgJzEnID0+ICcoVVRDKzQpINCh0LDQvNCw0YDRgdC60L7QtSDQstGA0LXQvNGPJywNCiAgICAgICAgICAgICcyJyA9PiAnKFVUQys1KSDQldC60LDRgtC10YDQuNC90LHRg9GA0LPRgdC60L7QtSDQstGA0LXQvNGPJywNCiAgICAgICAgICAgICczJyA9PiAnKFVUQys2KSDQntC80YHQutC+0LUg0LLRgNC10LzRjycsDQogICAgICAgICAgICAnNCcgPT4gJyhVVEMrNykg0JrRgNCw0YHQvdC+0Y/RgNGB0LrQvtC1INCy0YDQtdC80Y8nLA0KICAgICAgICAgICAgJzUnID0+ICcoVVRDKzgpINCY0YDQutGD0YLRgdC60L7QtSDQstGA0LXQvNGPJywNCiAgICAgICAgICAgICc2JyA9PiAnKFVUQys5KSDQr9C60YPRgtGB0LrQvtC1INCy0YDQtdC80Y8nLA0KICAgICAgICAgICAgJzcnID0+ICcoVVRDKzEwKSDQktC70LDQtNC40LLQvtGB0YLQvtC60YHQutC+0LUg0LLRgNC10LzRjycsDQogICAgICAgICAgICAnOCcgPT4gJyhVVEMrMTEpINCc0LDQs9Cw0LTQsNC90YHQutC+0LUg0LLRgNC10LzRjycsDQogICAgICAgICAgICAnOScgPT4gJyhVVEMrMTIpINCa0LDQvNGH0LDRgtGB0LrQvtC1INCy0YDQtdC80Y8nLA0KICAgICAgICApOw0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0SHR0cFByb3RvY29sKCl7DQogICAgICAgICRwcm90b2NvbCA9ICdodHRwOi8vJzsNCiAgICAgICAgaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQUyddKSAmJiAkX1NFUlZFUlsnSFRUUFMnXSA9PSAnb24nKSB7DQogICAgICAgICAgICAkcHJvdG9jb2wgPSAnaHR0cHM6Ly8nOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkcHJvdG9jb2w7DQogICAgfQ0KICAgIA0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0UGFnZSgpDQogICAgew0KICAgICAgICANCiAgICAgICAgJHByb3RvY29sID0gJHRoaXMtPmdldEh0dHBQcm90b2NvbCgpOw0KICAgICAgICAkY3Jvbl91cmwgPSAnd2dldCAtTyAtICcuJHByb3RvY29sLiR0aGlzLT5odHRwX2NsaWVudCAuICcvY3Jvbi92dy5waHA/Y2hlY2s9JyAuICR0aGlzLT5nZXRLZXkoKTsNCg0KICAgICAgICAkaHRtbCA9ICcNCiAgICAgICAgPGRpdiBjbGFzcz0idGFiLXdyYXAiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGltZW91dF9fdnctY29udGFpbmVyIj4nOw0KDQogICAgICAgICRodG1sIC49ICcNCiAgICAgICAgPGZpZWxkc2V0Pg0KICAgICAgICAgICAgPGxlZ2VuZD7Qn9C+0LTQutC70Y7Rh9C10L3QuNC1IENyb24g0L/Qu9Cw0L3QuNGA0L7QstGJ0LjQutCwINC90LAg0YXQvtGB0YLQuNC90LPQtTwvbGVnZW5kPg0KICAgICAgICAgICAgPGRpdj4NCiAgICAgICAgICAgICAgICA8cD7QkiDQv9C+0LvQtSDQutC+0LzQsNC90LTQsCDQstCy0LXQtNC40YLQtSDRjdGC0YMg0YHRgtGA0L7QutGDINC70LjQsdC+INGB0LrQvtC/0LjRgNGD0LnRgtC1INC10LUgPGNvZGUgaWQ9ImNyb25fdXJsIj4nLiRjcm9uX3VybC4nPC9jb2RlPiA8YSBocmVmPSIjIiBkYXRhLWNvcHk9IicuJGNyb25fdXJsLiciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJ0aW1lb3V0X192dy1jb3B5bGluayIgdGl0bGU9ItCh0LrQvtC/0LjRgNC+0LLQsNGC0YwiPjxpIGNsYXNzPSJmYSBmYS1jbG9uZSIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L2E+PC9wPg0KICAgICAgICAgICAgICAgIDxwPjxiPtCe0LHRgNCw0YLQuNGC0LUg0LLQvdC40LzQsNC90LjQtSDQvdCwINGB0LvQtdC00YPRjtGJ0LjQtSDQt9Cw0L/QuNGB0Lg6PC9iPjwvcD4NCiAgICAgICAgICAgICAgICA8dWw+DQogICAgICAgICAgICAgICAgICAgIDxsaT7QoNC10LrQvtC80LXQvdC00L7QstCw0L3QvdGL0Lkg0L/RgNC+0LzQtdC20YPRgtC+0Log0L/RgNC+0LLQtdGA0LrQuCDQttC10LvQsNGC0LXQu9GM0L3QviDRg9GB0YLQsNC90L7QstC40YLRjCDRh9C10YDQtdC3INC60LDQttC00YvQuSDRh9Cw0YE7PC9saT4NCiAgICAgICAgICAgICAgICAgICAgPGxpPtCc0L7QtNGD0LvRjCDQsdGD0LTQtdGCINGA0LDQsdC+0YLQsNGC0Ywg0L/RgNC4INC90LDQu9C40YfQuNC4INGDINCS0LDRgSDQvdCwINGF0L7RgdGC0LjQvdCz0LUgPGNvZGU+aW9uQ3ViZSBQSFAgTG9hZGVyPC9jb2RlPjwvbGk+DQogICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aW1lb3V0X192dy1jcm9uLWhlbHAiPg0KICAgICAgICAgICAgICAgICAgICA8cD48Yj7QodC/0YDQsNCy0LrQsCDQv9C+INC/0LvQsNC90LjRgNC+0LLRidC40LrRgyDQt9Cw0LTQsNC90LjQuSDQvdCwINC90LXQutC+0YLQvtGA0YvRhSDRhdC+0YHRgtC40L3Qs9Cw0YU6PC9iPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGltZW91dF9fdnctY3Jvbi1oZWxwLWxpbmsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSByZWw9Im5vZm9sbG93IiBocmVmPSJodHRwczovL2JlZ2V0LmNvbS9ydS9tYW51YWwvY3JvbnRhYiIgdGFyZ2V0PSJfYmxhbmsiPjxpIGNsYXNzPSJmYSBmYS1saW5rIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPiBCZWdldC5jb208L2E+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIHJlbD0ibm9mb2xsb3ciIGhyZWY9Imh0dHBzOi8vd3d3LnJlZy5ydS9zdXBwb3J0L2hvc3RpbmctaS1zZXJ2ZXJ5L3lhenlraS1wcm9ncmFtbWlyb3Zhbml5YS1pLXNrcmlwdHkvcGxhbmlyb3ZzY2hpay1jcm9uIiB0YXJnZXQ9Il9ibGFuayI+PGkgY2xhc3M9ImZhIGZhLWxpbmsiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+IFJFRy5SVTwvYT48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGEgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cHM6Ly90aW1ld2ViLmNvbS9ydS9oZWxwL3BhZ2VzL3ZpZXdwYWdlLmFjdGlvbj9wYWdlSWQ9NDM1ODQ4MiIgdGFyZ2V0PSJfYmxhbmsiPjxpIGNsYXNzPSJmYSBmYS1saW5rIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPiBUaW1ld2ViLnJ1PC9hPjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSByZWw9Im5vZm9sbG93IiBocmVmPSJodHRwczovL2lzcHNlcnZlci5ydS9oZWxwL3N0YXJ0LXRoZS1wcm9ncmFtLWNyb24iIHRhcmdldD0iX2JsYW5rIj48aSBjbGFzcz0iZmEgZmEtbGluayIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4gSVNQU2VydmVyLnJ1PC9hPjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSByZWw9Im5vZm9sbG93IiBocmVmPSJodHRwczovL3d3dy5uaWMucnUvaGVscC9wbGFuaXJvdnNoaWstY3Jvbi16YXB1c2stcHJvZ3JhbW0tcG8tcmFzcGlzYW5peXVfNjc5MS5odG1sIiB0YXJnZXQ9Il9ibGFuayI+PGkgY2xhc3M9ImZhIGZhLWxpbmsiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+IFJVLUNlbnRlcjwvYT48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PGEgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cHM6Ly93d3cubWFqb3Jkb21vLnJ1LyIgdGFyZ2V0PSJfYmxhbmsiPjxpIGNsYXNzPSJmYSBmYS1saW5rIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPiBNYWpvcmRvbW8ucnU8L2E+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxhIHJlbD0ibm9mb2xsb3ciIGhyZWY9Imh0dHBzOi8vaGFuZHlob3N0LnJ1L2hlbHAvaG9zdGluZy9wbGFuaXJvdnNoaGlrLWNyb24uaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPjxpIGNsYXNzPSJmYSBmYS1saW5rIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPiBIYW5keWhvc3QucnU8L2E+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZmllbGRzZXQ+JzsNCg0KICAgICAgICAkaHRtbCAuPSAnDQogICAgICAgIDxmaWVsZHNldD4NCiAgICAgICAgICAgIDxsZWdlbmQ+0J/QvtC00LTQtdGA0LbQutCwINC80L7QtNGD0LvRjzwvbGVnZW5kPg0KICAgICAgICAgICAgPGRpdj4NCiAgICAgICAgICAgICAgICA8cD7QktC10YDRgdC40Y8g0LzQvtC00YPQu9GPICcgLiBzZWxmOjpWRVJTSU9OX01PRFVMRSAuICc8L3A+DQogICAgICAgICAgICAgICAgPHA+0KHQsNC50YIg0LDQstGC0L7RgNCwIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSInLiR0aGlzLT5hdXRob3JfbGluay4nIj4nLiR0aGlzLT5hdXRob3JfbGluay4nPC9hPjwvcD4NCiAgICAgICAgICAgICAgICA8cD7QktGB0LUg0LjQvdGC0LXRgNC10YHRg9GO0YnQuNC1INCS0LDRgSDQstC+0L/RgNC+0YHRiyDQuCDQv9GA0LXQtNC70L7QttC10L3QuNGPINC90LDQv9GA0LDQstC70Y/QudGC0LUg0L/QviDQsNC00YDQtdGB0YMg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLIDxhIHJlbD0ibm9mb2xsb3ciIGhyZWY9Im1haWx0bzpzb2x1dGlvbkBsaWtlb3BlbmNhcnQuY29tIj5zb2x1dGlvbkBsaWtlb3BlbmNhcnQuY29tPC9hPjwvcD4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2ZpZWxkc2V0Pic7DQoNCiAgICAgICAgJGh0bWwgLj0gJw0KICAgICAgICA8ZmllbGRzZXQgY2xhc3M9InRpbWVvdXRfX3Z3LWNoYW5nZWxvZyI+DQogICAgICAgICAgICA8bGVnZW5kPtCS0LXRgtC60LAg0LjQt9C80LXQvdC10L3QuNC5L9C40YHQv9GA0LDQstC70LXQvdC40Lkg0LzQvtC00YPQu9GPPC9sZWdlbmQ+JzsNCg0KICAgICAgICAkaHRtbCAuPSAnDQogICAgICAgIDxzZWN0aW9uPg0KICAgICAgICAgICAgPGg0PjIuNTwvaDQ+DQogICAgICAgICAgICAgICAgPGFydGljbGU+DQogICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPtCU0L7QsdCw0LLQu9C10L3QsCDQvtC/0YbQuNGPINC+0YLQutGA0YvRgtC40Y8g0YHRgdGL0LvQvtC6INCyINC90L7QstC+0Lwg0L7QutC90LU7PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+0JjQt9C80LXQvdC10L3QuNGPINCyINC60L7QtNC1OzwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPtCY0LfQvNC10L3QtdC90LjRjyDQsiDQtNC40LfQsNC50L3QtTs8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICA8L2FydGljbGU+DQogICAgICAgICAgICA8L3NlY3Rpb24+JzsNCg0KICAgICAgICAkaHRtbCAuPSAnDQogICAgICAgIDxzZWN0aW9uPg0KICAgICAgICAgICAgPGg0PjIuNDwvaDQ+DQogICAgICAgICAgICAgICAgPGFydGljbGU+DQogICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPtCU0L7QsdCw0LLQu9C10L3QsCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC40LfQvNC10L3Rj9GC0Ywg0L/QvtC70L7QttC10L3QuNC1INC30L3QsNGH0LrQvtCyINC90LAg0Y3QutGA0LDQvdC1OzwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4NCiAgICAgICAgICAgIDwvc2VjdGlvbj4nOw0KDQogICAgICAgICRodG1sIC49ICcNCiAgICAgICAgPHNlY3Rpb24+DQogICAgICAgICAgICA8aDQ+Mi4zPC9oND4NCiAgICAgICAgICAgICAgICA8YXJ0aWNsZT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+0JjRgdC/0LDQstC70LXQvdCwINC+0YjQuNCx0LrQsCDQvtGC0L7QsdGA0LDQttC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDQstC60LvRjtGH0LXQvdC40Y8g0LzQvtC00YPQu9GPINCyINCy0LXRgNGB0LjQuCBvY1N0b3JlL09wZW5jYXJ0IDMuMDs8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT7Qn9GA0LXQutGA0LDRidCw0LXRgtGB0Y8g0L/QvtC00LTQtdGA0LbQutCwINC80L7QtNGD0LvRjyDQsiDRgdGC0LDRgNGL0YUg0LLQtdGA0YHQuNGP0YUgb2NTdG9yZS9PcGVuY2FydCAxLjXRhTs8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICA8L2FydGljbGU+DQogICAgICAgICAgICA8L3NlY3Rpb24+JzsNCg0KICAgICAgICAkaHRtbCAuPSAnDQogICAgICAgIDxzZWN0aW9uPg0KICAgICAgICAgICAgPGg0PjIuMjwvaDQ+DQogICAgICAgICAgICAgICAgPGFydGljbGU+DQogICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPtCU0L7QsdCw0LLQu9C10L3QsCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINGD0LrQsNC30LDQvdC40Y8g0YHRgdGL0LvQvtC6INCyIFRlbGVncmFtLCBJbnN0YWdyYW07PC9saT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+0J3QtdCx0L7Qu9GM0YjQuNC1INC40LfQvNC10L3QtdC90LjRjyDQsiDQtNC40LfQsNC50L3QtTs8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT7QmNGB0L/RgNCw0LLQu9C10L3QuNC1INC+0YjQuNCx0L7Qujs8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICA8L2FydGljbGU+DQogICAgICAgICAgICA8L3NlY3Rpb24+JzsNCg0KICAgICAgICAkaHRtbCAuPSAnDQogICAgICAgIDxzZWN0aW9uPg0KICAgICAgICAgICAgPGg0PjIuMTwvaDQ+DQogICAgICAgICAgICAgICAgPGFydGljbGU+DQogICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPtCU0L7QsdCw0LLQu9C10L3QsCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC40LfQvNC10L3Rj9GC0Ywg0LLQuNC0INC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0LLQuNC00LbQtdGC0LAg0L3QsCDRjdC60YDQsNC90LUg0LHRgNCw0YPQt9C10YDQsDs8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT7QlNC+0LHQsNCy0LvQtdC90LAg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQstGB0YLQsNCy0LvRj9GC0Ywg0YHQstC+0Lgg0YHRgdGL0LvQutC4INC00LvRjyDQstC30LDQuNC80L7QtNC10LnRgdGC0LLQuNGPINGBIEFQSTs8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT7QmNGB0L/RgNCw0LLQu9C10L3QuNC1INC+0YjQuNCx0L7Qujs8L2xpPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4NCiAgICAgICAgICAgICAgICA8L2FydGljbGU+DQogICAgICAgICAgICA8L3NlY3Rpb24+JzsNCg0KICAgICAgICAkaHRtbCAuPSAnDQogICAgICAgIDxzZWN0aW9uPg0KICAgICAgICAgICAgPGg0PjIuMDwvaDQ+DQogICAgICAgICAgICAgICAgPGFydGljbGU+DQogICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPtCY0YHQv9GA0LDQstC70LXQvdC40LUg0L7RiNC40LHQvtC6OzwvbGk+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPg0KICAgICAgICAgICAgICAgIDwvYXJ0aWNsZT4NCiAgICAgICAgPC9zZWN0aW9uPic7DQoNCiAgICAgICAgJGh0bWwgLj0gJw0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgICAgICAnOw0KICAgICAgICByZXR1cm4gJGh0bWw7DQogICAgfQ0KDQogICAgLyoqDQogICAgICog0J7Qv9GA0LXQtNC10LvQtdC90LjQtSDQstGA0LXQvNC10L3QuCDQtNC70Y8g0LLQutC7L9C+0YLQutC7INC80L7QtNGD0LvRjw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiB0aW1lb3V0V29yayggJHBhcmFtcyApDQogICAgew0KICAgICAgICAkYXJUaW1lID0gYXJyYXkoKTsNCiAgICAgICAgJHdvcmtfbWVzc2FnZV9lbWFpbF9vZmYgPSAnPGIgc3R5bGU9ImNvbG9yOnJlZDsiPtCS0LjQtNC20LXRgiDQvtCx0YDQsNGC0L3QvtC5INGB0LLRj9C30Lgg0L3QtSDRgNCw0LHQvtGC0LDQtdGCPC9iPic7DQogICAgICAgICR3b3JrX21lc3NhZ2VfZW1haWxfb24gPSAnPGIgc3R5bGU9ImNvbG9yOmdyZWVuOyI+0JLQuNC00LbQtdGCINC+0LHRgNCw0YLQvdC+0Lkg0YHQstGP0LfQuCDRgNCw0LHQvtGC0LDQtdGCPC9iPic7DQoNCiAgICAgICAgZGF0ZV9kZWZhdWx0X3RpbWV6b25lX3NldCggJ0V1cm9wZS9Nb3Njb3cnICk7DQogICAgICAgIC8v0LLRgNC10LzRjyDQsNC00LzQuNC90LANCiAgICAgICAgJGFyVGltZVsnVElNRSddID0gaW50dmFsKCB0aW1lKCkgKyAoJHBhcmFtc1snQURNSU5fVElNRVpPTkUnXSAqIDM2MDApICk7DQogICAgICAgICRhclRpbWVbJ35USU1FJ10gPSBkYXRlKCJIOmkiLCAodGltZSgpICsgaW50dmFsKCRwYXJhbXNbJ0FETUlOX1RJTUVaT05FJ10gKiAzNjAwKSApICk7DQogICAgICAgIC8v0LLRgNC10LzRjyDRgdC10YDQstC10YDQsA0KICAgICAgICAkYXJUaW1lWydTRVJWRVJfVElNRSddID0gc3RydG90aW1lKCBkYXRlKCAiSDppIiwgJGFyVGltZVsnVElNRSddICkgKTsNCiAgICAgICAgJGFyVGltZVsnflNFUlZFUl9USU1FJ10gPSBkYXRlKCAiSDppIiApOw0KDQogICAgICAgIC8v0L3QsNGH0LDQu9C+INGA0LDQsdC+0YLRiw0KICAgICAgICAkYXJUaW1lWydTVEFSVF9USU1FJ10gPSBzdHJ0b3RpbWUoICRwYXJhbXNbJ0NVUlJFTlRfVElNRV9FTkFCTEVEJ10gKTsNCiAgICAgICAgJGFyVGltZVsnflNUQVJUX1RJTUUnXSA9IGRhdGUoICJIOmkiLCBzdHJ0b3RpbWUoICRwYXJhbXNbJ0NVUlJFTlRfVElNRV9FTkFCTEVEJ10gKSApOw0KICAgICAgICAvL9C60L7QvdC10YYg0YDQsNCx0L7RgtGLDQogICAgICAgICRhclRpbWVbJ0VORF9USU1FJ10gPSBzdHJ0b3RpbWUoICRwYXJhbXNbJ0NVUlJFTlRfVElNRV9ESVNBQkxFRCddICk7DQogICAgICAgICRhclRpbWVbJ35FTkRfVElNRSddID0gZGF0ZSggIkg6aSIsIHN0cnRvdGltZSggJHBhcmFtc1snQ1VSUkVOVF9USU1FX0RJU0FCTEVEJ10gKSApOw0KICAgICAgICAkYXJUaW1lWydTVEFUVVMnXSA9IDA7DQoNCiAgICAgICAgaWYgKCAkYXJUaW1lWydTVEFSVF9USU1FJ10gPD0gJGFyVGltZVsnU0VSVkVSX1RJTUUnXSAmJiAkYXJUaW1lWydTRVJWRVJfVElNRSddIDw9ICRhclRpbWVbJ0VORF9USU1FJ10gKSB7DQogICAgICAgICAgICAkYXJUaW1lWydTVEFUVVMnXSA9IDE7DQogICAgICAgICAgICAkYXJUaW1lWydTVEFUVVNfVEVYVCddID0gJHdvcmtfbWVzc2FnZV9lbWFpbF9vbjsNCiAgICAgICAgfSBlbHNlaWYgKCAkYXJUaW1lWydTVEFSVF9USU1FJ10gPCAkYXJUaW1lWydTRVJWRVJfVElNRSddICYmICRhclRpbWVbJ1NFUlZFUl9USU1FJ10gPiAkYXJUaW1lWydFTkRfVElNRSddICkgew0KICAgICAgICAgICAgJGFyVGltZVsnU1RBVFVTJ10gPSAyOw0KICAgICAgICAgICAgJGFyVGltZVsnU1RBVFVTX1RFWFQnXSA9ICR3b3JrX21lc3NhZ2VfZW1haWxfb2ZmOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJGFyVGltZVsnU1RBVFVTJ10gPSAyOw0KICAgICAgICAgICAgJGFyVGltZVsnU1RBVFVTX1RFWFQnXSA9ICR3b3JrX21lc3NhZ2VfZW1haWxfb2ZmOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkYXJUaW1lOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kX2VtYWlsKCAkcGFyYW1zICkNCiAgICB7DQogICAgICAgIC8vIG1lc3NhZ2UNCiAgICAgICAgJG1lc3NhZ2UgPSAnDQogICAgICAgIDwhRE9DVFlQRSBodG1sPg0KICAgICAgICA8aHRtbD4NCiAgICAgICAgPGhlYWQ+DQogICAgICAgICAgICA8dGl0bGU+JyAuICRwYXJhbXNbJ1NUT1JFX1RJVExFJ10gLiAnPC90aXRsZT4NCiAgICAgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4NCiAgICAgICAgICAgIDxtZXRhIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiBuYW1lPSJ2aWV3cG9ydCIvPg0KICAgICAgICAgICAgPG1ldGEgY29udGVudD0iSUU9ZWRnZSIgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIi8+DQogICAgICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KICAgICAgICAgICAgICAgIGJvZHkge2ZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6IDQwMDtmb250LXNpemU6IDE0cHg7d2hpdGUtc3BhY2U6IG5vcm1hbDt9DQogICAgICAgICAgICAgICAgLmVtYWlsX19ib2R5IHtkaXNwbGF5OiBibG9jaztiYWNrZ3JvdW5kOiAjRkZGO21hcmdpbjogYXV0bztwYWRkaW5nOiAxMHB4O3dpZHRoOiA3NjhweDtoZWlnaHQ6IDk4JTtwb3NpdGlvbjpyZWxhdGl2ZTt9DQogICAgICAgICAgICAgICAgLmVtYWlsX19ib2R5IGEuZW1haWxfX2xpbmsge2NvbG9yOiNGRkY7dGV4dC1kZWNvcmF0aW9uOiBub25lO30NCiAgICAgICAgICAgICAgICAuZW1haWxfX2JvZHkgYS5lbWFpbF9fbGluazpob3ZlciB7dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7fQ0KICAgICAgICAgICAgICAgIC5lbWFpbF9fYm9keS1oZWFkZXIgaDEge2ZvbnQtc2l6ZToxNnB4O2JhY2tncm91bmQ6ICNEREQ7cGFkZGluZzogNXB4O2NvbG9yOiAjMDAwO2ZvbnQtd2VpZ2h0OiA2MDA7fQ0KICAgICAgICAgICAgICAgIC5lbWFpbF9fYm9keS1oZWFkZXIge2Rpc3BsYXk6IGJsb2NrO21hcmdpbjogMnJlbSBhdXRvO2hlaWdodDo0MnB4O30NCiAgICAgICAgICAgICAgICAuZW1haWxfX2JvZHktd3JhcHBlciB7fQ0KICAgICAgICAgICAgICAgIC5lbWFpbF9fYm9keS1mb290ZXIge2Rpc3BsYXk6IGJsb2NrO21hcmdpbi10b3A6MnJlbTtiYWNrZ3JvdW5kOiAjQUFBO3BhZGRpbmc6IDEwcHg7Zm9udC1zaXplOiAxMHB4O2NvbG9yOiAjRkZGO3Bvc2l0aW9uOnJlbGF0aXZlO30NCiAgICAgICAgICAgICAgICAuZW1haWxfX2JvZHktZm9vdGVyLWF1dGhvciB7ZGlzcGxheTogYmxvY2s7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6IGF1dG87bWFyZ2luLXRvcDoycmVtO30NCiAgICAgICAgICAgICAgICAuZW1haWxfX2JvZHktZm9vdGVyLWxpbmsge3RleHQtYWxpZ246cmlnaHQ7fQ0KICAgICAgICAgICAgPC9zdHlsZT4NCiAgICAgICAgPC9oZWFkPg0KICAgICAgICA8Ym9keT4NCiAgICAgICAgPGRpdiBjbGFzcz0iZW1haWxfX2JvZHkiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW1haWxfX2JvZHktd3JhcHBlciI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW1haWxfX2JvZHktaGVhZGVyIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPicgLiAkcGFyYW1zWydTVE9SRV9USVRMRSddIC4gJzwvaDE+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW1haWxfX2JvZHktdGFibGUiPg0KICAgICAgICAgICAgICAgICAgICA8dGFibGU+DQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOiAxMHB4IDIwcHg7Ym9yZGVyOjFweCBzb2xpZCAjNTU1OyI+0JjQvNGPINC00L7QvNC10L3QsDo8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0icGFkZGluZzogMTBweCAyMHB4O2JvcmRlcjoxcHggc29saWQgIzU1NTsiPicgLiAkcGFyYW1zWydDTElFTlRfRE9NQUlOJ10gLiAnPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOiAxMHB4IDIwcHg7Ym9yZGVyOjFweCBzb2xpZCAjNTU1OyI+0KLQtdC80LA6PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6IDEwcHggMjBweDtib3JkZXI6MXB4IHNvbGlkICM1NTU7Ij4nIC4gJHBhcmFtc1snVldfVElUTEUnXSAuICc8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6IDEwcHggMjBweDtib3JkZXI6MXB4IHNvbGlkICM1NTU7Ij7QodC+0L7QsdGJ0LXQvdC40LU6PC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6IDEwcHggMjBweDtib3JkZXI6MXB4IHNvbGlkICM1NTU7Ij4nIC4gJHBhcmFtc1snVldfTUVTU0FHRSddIC4gJzwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0icGFkZGluZzogMTBweCAyMHB4O2JvcmRlcjoxcHggc29saWQgIzU1NTsiPtCh0L7RgdGC0L7Rj9C90LjQtTo8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0icGFkZGluZzogMTBweCAyMHB4O2JvcmRlcjoxcHggc29saWQgIzU1NTsiPicgLiAkcGFyYW1zWydWV19ERVNDUklQVElPTiddIC4gJzwvdGQ+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVtYWlsX19ib2R5LWZvb3RlciI+DQogICAgICAgICAgICAgICAgICAgIDxkaXY+0JLQtdGA0YHQuNGPINC80LDQs9Cw0LfQuNC90LA6ICcuJHBhcmFtc1snVkVSU0lPTl9PUEVOQ0FSVCddLic8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdj7Qn9C40YHRjNC80L4g0L7RgtC/0YDQsNCy0LvQtdC90L4g0LI6ICcuJHBhcmFtc1snV09SSyddWyd+VElNRSddLic8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdj7Qo9C60LDQt9Cw0L3QvdC+0LUg0LLRgNC10LzRjyDRgNCw0LHQvtGC0Ysg0LzQvtC00YPQu9GPINC+0LHRgNCw0YLQvdC+0Lkg0YHQstGP0LfQuDog0YEgJy4kcGFyYW1zWydXT1JLJ11bJ35TVEFSVF9USU1FJ10uJyDQv9C+ICcuJHBhcmFtc1snV09SSyddWyd+RU5EX1RJTUUnXS4nPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVtYWlsX19ib2R5LWZvb3Rlci1zZXR0aW5nIj7QndCw0YHRgtGA0L7QudC60Lgg0LzQvtC00YPQu9GPOiA8YSBjbGFzcz0iZW1haWxfX2xpbmsiIHJlbD0ibm9mb2xsb3ciIHRhcmdldD0iX2JsYW5rIiBocmVmPSInIC4gJHBhcmFtc1snRURJVF9NT0RVTEUnXSAuICciPtC/0LXRgNC10LnRgtC4INC6INC90LDRgdGC0YDQvtC50LrQsNC8PC9hPjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlbWFpbF9fYm9keS1mb290ZXItbGluayI+PGEgY2xhc3M9ImVtYWlsX19saW5rIiByZWw9Im5vZm9sbG93IiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iJy4kdGhpcy0+YXV0aG9yX2xpbmsuJyI+JyAuICR0aGlzLT5hdXRob3JfbmFtZSAuICc8L2E+PC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW1haWxfX2JvZHktZm9vdGVyLWF1dGhvciI+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVtYWlsX19ib2R5LWZvb3Rlci1sb2dvIj48aW1nIHNyYz0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFTd0FBQUF5Q0FZQUFBRG0xdVlxQUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQXhyRWxFUVZSNDJ1MWRCNWdVeGRadGxTaHhXY2s1U0JLUUJaWU1TdzRMTExMa0lFRnlUcExoR1VDUkhDV2ppUElJRWxWeVVBUUJBVkZFc2lMNlFGU3lnR0xBL2MvcHIycit1MFgxek93S1BuMXVmOS85WnFhNnVycW11K3JVdWJmdXJYS2NoQ1BoK09QSEF3bnl0NUtFSStGSUFLeDR5b04vUUJMQUp3R3c3am9TeFZNU2pnVEFDaGFrSG9xakpBQmFBbUJaUVNveEpBa2thUndsaWJvMkFid1NBTXNMcURUNDJBYTd4Qll4ODl3TFFQdTdTZ0pnQ2FCS3JFQW5HU1E1SklXU2xFR0l6dnV3dWphWkFxOEUwUHBuQTVZL29OS0RvaW0yUVRDSkdBeTlnQ3d1OHREZlRPNFZlUDFQZ1ZVeUJUZ0VvRFNRdEVwQ2hLUU5RbEtyTXBLckJwY0FXdjlNd0RMQnlzYmVrd2xKN2tkMEhpOGdzd0ZhNGlET0J5ditHR0NnYSs2VmVJSFhQdzZ3TkZocG9Fb0hlUVNTQVpKUlNJWUFrbDVkRjZxQUs1VUN3RGlCMWs4Ly9mVHdtREZqNWxhdlh2MzdjZVBHemZqNTU1K1QvcmNlakt3TFAvazdBYU9DQWl3YnF6S0JLcmxxSHlrQ3NIbkozaC8yQTJaeGthUi9naVM1UjJJQ29BMjQvakdBbFVnOTNJY1ZXQkZ3TWtHeVFISXB5YTJFMzNNS3NaM1BBY21xeWttckdod2JTT0tDQlFzNmdlVFlzV01sbzZPalQ1UXNXVEpHUy9QbXpRK2ZQWHMydjg1VHFGQWhWd29VS09Ea3lwWExTWmN1blpNNGNlSjcvbUJzZGVGdnB2OFpMK2JpeFl1Wmh3NGR1b3hneVUvKy9wc0FWakJncFlFcWxXTGthWVJJdHE3VFVxdThxZndBV3JEeWNCekV4dmJpYzAwdzdGRXlUUnU0SmdrQVhQOEl3SkxzaXN3cVV3eU9YMy85TlFiTUpnYU1JdWJISDMrTXVYWHJWc3pObXpmZFQvMmRjdVBHRFovbzg3eUcxeXBXbGs2OUFOZWV0WGp4WWtlTHBMdE5telpOTW4vKy9PRmx5cFQ1UlFLRWxnb1ZLdHg4NjYyMzJyLysrdXZPa2lWTG5OV3JWenZ2dlBPT00yL2VQS2RseTVaTzl1elpuWWNlZXVpZVBKQTdkKzQ4K09xcnJ3NUJYWDYyMVlYcFBNOThRVTVneEdrV0ZjOCs4V3V2dlRhb1VxVktQOGo3OGpmVGVmNXZBRmcyc0pLMjBaUUtoRUpVRzBtbm1IbW9HdXdlRVd3OVZKMjNtU1hTR0pMYVE4eHpxZUlvR2h6am1qOVkyNjgvY0pVQWxzUUFycmlDMXQvK1NHS3dxeXdFSzN3V2hCU0dGSUVVZ3hSVjhwaVFJaXF0bU1qRDlFY0pZSXBwWlZBTks0VUFMbWxZVGJaaHc0WjhUejMxMVBzbFNwU0lDU1JnR2t0WHJWb1Y0c2RXWU5vdWtnYWcxN0hzRW52MjdNbmRxVk9ubmVaOVRkQmlHdk14djRmOUl0Wi9ORWJMSkY3Z3RYLy8vbXFOR3pjK1pnTktMVHpQZkg5UndESnRWamF3U3VYSDlFQjJuMWxJSnNNY2tkNEFOQWxxb1FMOFRESFBtK0FYNGtkTUcyMUlrUG5UeEVGU0cwelRaSlFwQkhBbC9RT2dkVDhuV082N1M0WldCMU9vQjh3R2tldjI3ZHN4Q25nZWg0UkJTa0JLcXMvaVNzSlVXamlrdEpKd2xhY0kxSmNZcFRabVVZMHFSTDBJT2Jxa0F0TnFWN2x5NVN2Rml4ZVAwUklXRnVaWEdqWnNlR3JObWpYbGpCRW91V0VUOFJyTkh2YWkrRXVYTG4weUlpTGlpdTJlSm9EcGRPWUg0MnRycUFRcGpCRlpqdXk2SHNsc3RyMXAwNmFOOHdkV1dwanZMd3hZTmpWUWcxVnExZFpDVlh2THJBYTJiSkRzU25JSTBXblpWRnZLWWdDYUJyVk1BdHo4aVdsenRVbWdQSUhzdU9rdFlHb0NhMmdRUUJzaUpyRlNpZmJyQlZyL0dNQktxUjRNWDJodXFuV0tNWlZTUUVSd0tLK2tES1NzU3FzQXFReXBBb21BVkZMcHBSVGJ5cTlzVzlsVVkvTFIvVmF0V3VYdTE2L2Ywc2NmZnp6R24wZ2dreEllSG41NzZ0U3BneTBqWUloRnJaQ05KNTA1WW5icDBpWDd3SUVEbDNqZEt4amg5U3hIcURpaGdqM0l6cVRCTzdVQXJqaUIxbDhJckp3ZzJKVUxWbURRNlVhT0hMa0FBSDlwL1BqeHo2cm5ra1dCa3JhRDVvSGtoZVFUa2xlbDIyeW9Yc0JtRTNrdXF3QS9VN0phSkpnOFpuNFRTTDNFQkZQNVhiZlpFR1AyL1krQTF2OE1ZSVdvbDVsUHFYTmhDcXdxeG9nRHY2bUtWSWZVaE5SdTJyUnBLK004ejFWVTF4WlhhdVdqcXRHNURlM1paNTl0VktOR2piTkZpeGFOb1JRcFV1UXUwZWVLRlN2bVY5QVJOZ0g4SGhPTlNUZE9PU21nRzNwMnM4R2k4MFRWcWxYcnkwRDNDVVpZRHNzVGpDR242bWk2RStZeFdLZFdsZTlpV25QbnpuM0dCbFpNdjEvSTg5bG5uNFgzNmROblBZMzgvT1R2UHdCWVBsWHdyYmZlS3RXb1VhTmpHdHc1RUkwYU5XcVNBcHE4YW1BcklNd1EydHlnVFErRjFia0NLcStVUjRWb2dNc3J3TStVUEFZQW1oTkhlU3lTMjhpWHg0K1l3S29CMVFUWVFFQ3IyMmdtQVY1YVMwbGxxSWcyWS96L1lnVEFYWURGaC9UbzFhdFhZeFJMSXZCVU13QXBTa21qVXFWS3RibCsvZnE3bHZPMUZiQnA0S0xxV0NSbHlwVEZldmZ1UFJPZCs5ZkNoUXZIU0NsVXFKQlBkTnBqanozbWlnWXgvZHNVak5ybmh3d1owc0pvOUVXRTNhMklFbC9EVDVVcVZVR3dvcW5vUEw5NGxXdEtvSHBRV0I3TFJmbTY0eFVUS3ZUanFnNTVWYU44UkkyYUxzdDY5TkZIblR4NThqZzVjdVJ3TW1mTzdOREFMc0dLdnlWU2NKSUI5M0d5WnMzcTVNdVh6NTAxcGJDY25EbHpPaGt5WkhEU3BFbmp6cUt5UE02b01sLysvUG5kUExsejUzYXlaTW5pQXlvYlFHcmdTcDgrdlp1ZjEvSWUvR1JkL2JBclZ4Vjg1WlZYK3BRcFUrYTJCQ3VDT3dlai92Mzd6OVB0QnZmb3IwMFF5Wk1uTHhVVkZWWDE0TUdEZlgvKytlZWRQUC9iYjcrZHpKczNiMG5MT3kxaUFiZENwdlR0MjdkNWl4WXQzaTlYcnR6VmxpMWI3c1E3YW1JQVh3SFJma3dwWUVoQlViWXRiMzRCb1A3RUJxTG1qSHMyeGRZeStnR3RRRGF0L3luQVNtWXlyTXVYTDhjb29LR2FWOGNBcEZhUTFoa3padXh3OU9qUitUSEdnWE50SUUzUG56Ky8rTUtGQzY5ZHZIanhGWlpUdFdyVnhuWHExUGxreVpJbE1WclE4R1BrYnkrUllJWXlxSDY1NmZ6a2I2WURTSDd0MnJYcnJJY2ZmcmdzNnIrUXdudWprOVJZdUhCaFc1MzI4c3N2TjY5YnQyNkRldlhxSGRKbHluc1ZMRmpRSjJhNnpzL3ZaajFRWml6QTNibHo1NFZMbHk0dDEvV2c4UHVWSzFjV1hMdDJiVDVZN0Z6VkVOTXFpcDk0eDQ0ZDdzem5HMis4NFV5ZVBObEJoM1pCaTR5SG4wbVRKblVlZU9EL1dYMUlTSWdEcHVxTUd6Zk8yYng1czdObnp4NW43OTY5RHU3dExGKyszQUdUZGZCTTNISlkzb29WSzV6dDI3YzdIM3p3Z2ZQZWUrODVhOWFzY2FaUG54NlVDdHFqUnc5bjJiSmx6cTVkdTV4OSsvYTVaZkQ2QUlDVkRQY2ttNzRnd1lyU3VuWHJkMUd2cHJyZGZQTEpKd05wQThWL3F0Q2hRNGU2R0FoWDNMbHo1M3Q5bm9BRkVDNm5CajlUU2lnSlU0UEQ0NFlVQjFpOUt3ZElnTllPQS9EazVKRjV2WngwOGpwZnpETDVWRGlBU05DVGdKaGZhQ1c1RkFQTFlqRXBTUFh3cndwWTl6THM2QzdBNG9QSnJ3em01WlI2MThBQXBJNlFUbWlJTDZCQjNiSUFWaWRJVzVrV0hSMDlDWUJ5RTZON3JMd1k1V09DT1Foc2xHN2R1c1Y4KysyM01ULzg4SU9iemsvK1JvZU53WWp2Q29Ea0kza3RBR0twYlBpLy9QTEw5YWxUcDk3VytTbnlZQjIxeUVQbTkxY1AxcE9BRnN5aEJvaFE5ZndUSHp0MnpEbDU4cVR6NVpkZk9sOTk5Wlh6K2VlZk93Y09ISENCb2wrL2ZrN1pzbVVkTXAwa1NaSTREejc0b1BzZEtybXpjdVZLNTd2dnZuUHczK2dTNFlDVk9HREpQckFEVTRuNDhNTVBuWTgrK29oc3lpMy8rKysvZC9Cc0hOVGJ2YWNYYUtsMDU4VVhYM1N2dlhYcmxudVBuMzc2eWEyZkgzWFFaMmdmUG54NER0cjRLbFdxZEtsZHUzYmJuM25tbVlhcVF6Nm1ud1hxU1BaWUhtMGxFdUExQ3Uvc0t1NXpjUC8rL2NQd3Yyc28rMms1WVQrMVNWa2xaUXdwQzVaWEp6dzgvQm9IRkh4ZXJWQ2hRZzJsUlpSVW4zcnlxSXhGOUlTU3pDUHZWZHFRVWdKSXc2QlZEQ2hkdXZSVnNOVUJDbFREQkxnV3Q0Q2lCcnlDaGprbGF3RFE4bUphZjRWWXkzc1JkbVFITERUbUdOVkFhS2RxWkhTeVhtaDBRL1Z2c0toMTVubElONWtHVmNJVnFCQ3hPaXdvZml3eGdZT0FwcVY1OCthK2MyM2J0blh6TjJ2V3pKZEdFTEVCemFlZmZqb0YxN2VBbXRVYTdPV0VMSU41emZ1eWpscHNkWlgzOUtxSEJqYlcyNnlQVXBWTHE1RTF1d0NzUkwxNjlYS0JnVDVtQkFjd01lZkhIMzkwd1lpQU0yZk9IQWZNeEZYcmtpVkw1cXA4ZUM0dTB3R2JjMzcvL1hlSHR5Q2dTQURxMHFYTHV3QUNwMkxGaWc0QXpFRUhjbjNaOEd3Y3NEN245dTNiN3Ixc0tpalVNd2Vxdi9QU1N5ODV4NDhmZDhGUTMrTS8vL21QNCtGN0pRRkxSMCtFS250TU50VUJ5U1NLNmVjQ1lCNE05YlQ2K3ZYcisrbzBBT0xFamgwN1JpdW1YMW5MMEtGRG01NDRjZUpGMU9WRG5SZi9mekhVejA0QXBycmR1M2VQQnVEZENEUmc0Tmx1VXhOSEZjZVBIOThLZzhRMC9LOVA5WG44bmpGcDBxUzJZSWExNVAwQjJ0djlsWXQ2N1ZYbGxtTjlBTlRYR3pWcUZETi8vdnlmOEk1dU13OFk5dXExYTlkMnh2dW9vVURQQlVUY2MxeUFRUzR1b0JYWHdQSDdKWEdKNi9RSFhIZk5Fckl4UFlvT29nR0xMeXBhUGpBMDNrRjQyTzhydG5JY2RIKzQ4VUJwaStnajA4YU1HZU1URXh3MEVOZ0FRb01XUDdkdDIrYTNQS2dvMW5LcVZLblNGZXJvYzFCSkxtSms5YVd6UE9ZbGtBWlRWdzI2d2RRakFHRHBCbHBJUGU5MHloYVJhT1BHamM2Nzc3N3JmUHp4eDg2NWMrZGNzSUlxNUlJRFZDVG4wS0ZETHFDaEV6Z3BVNmIwQkN4ZXA5bVZ0a0hSbHNWb2dCUXBVcmkycDZpb0tGZE41TDF1M3J6cDNvZnNTYXFnbVRKbGNxQmlXd0VMZ09CZUZ3Q3dIbGEybHJTcWcyVVdobmIrLytMNnVVQ1ZIUW9WdGpVWTN3S1VmUnNBdW5MWXNHRnQxUE9xcm9DK0t1cmNEdlhjWnV2TVlIM3ZBUVFHQU9TYUJ3TllCSjdNbVRQWG1qZHZYbWUwNVU5dGVWQ1BkWFBuenUyaEJtOVg4TDkzK0NzWEE4QSsxcFd6NTYxYXRkb3pjdVJJMnVqdXlvZG4vaC84MzFmd1BtdmlmUklNeTMveHhSY1RBZ0JXVHFFZXloQTRtNStXTFhZeTBYMFdmN0dWL3VJNkE0RlhRSVpWUVJuUFl3SFdtVE5ubHVqdnp6MzNIS2VuKzh2elNaTW1IWWdSWlhNd0tsRmNBQ3ZZOGt3QUtscTA2QldrLzI1amVCcUVnamx5NWNybFNqQ0hQOEFDUTNvOU5EUzByR0lZV1ZXRFMwN1ZUd3RWTjZoRkxnTWkwNkx3OTRZTkd4eXdDeWNzTE13RkVpL0FJcERRbmdVMXpBMWxrcll2ZnZJM25xOUR1eFR0WmdSRFhrc1FJdVBpZmRxM2IrOGE1QWx3TnNCaWZqS3plQUpXUG1YRENUT2ZIZXB3Q2ZWWkMvWDZLZFM5dmdLSkdocTR3T2puczZNRFNGYmp2emVIZWx3UHpMR0pCaEdvNTV0VXU5VlNCOC9pZVZYMkwxQ3RuNVJsb3EwMmhHcThodmNGdTVsWHQyN2Q1bW5UcG8zQ0lOY01BNFhMeU1Fa2FZZU4xSUo3dUJOTlVMdmZWbWwxS1Jqb2x5dmcvRkRYZDhHQ0JhdTJiTmtTQTBibzJqb0JwZ3VaUG12V3JFNjQ3eXJjNDh1dFc3Y09LbEdpQk90YStkU3BVNU1VbUYzQW9GSkRxWTVGRmNBL3FteGEyazBvdmNVSWIzckczNi80eG1CVzJiQTVUbnZGYzVxczBBWmFmbTFZVnBWUUg1czNiNTVJMWM5VS82QktuTW1lUFh1c3ZGREhZbkxtek9tS0RiQnNxcGtHSzkzeHZWUk1FL1JNQUNMSWVLbWt0dnk2bm1aZGJlQ20weVM0YW51YkZyUHVUS3RYcjk1aGdFVjExZWpZMkpJUmhBQ3VUckZpeFZ5QW9QcFdyVm8xcDJiTm1xNGFGeEVSNGFaenBvNHpnNXdoOUFkWVZDR0hEeC91Z2x2cTFLbGRka1c3bDU1WjVMMEdEQmpndlAvKyt3NDZvSHN0YldDMGFhMWJ0ODU1OHNrbjNabEZMOEFpNnlNTHZOZUFKUSt3emFGNHJnME0wQ0xycjQwTzNnak01YW1WSzFjT0JoaE1SMzFPOHhxQTNXWUpJdnkrYTlldU1ScXcrdmJ0MjFhVklZVmdVYmR5NWNyTk1BaDNlK3V0dDBZQ09PWUNOQzd5dXJObnp5NFNzK01OTldBQmNONmhqVmRKZlR5N0ZRS3c2ckJjMUcwcTNzZGxNTWhmOE00WDZYdWlUOVFEdXgyTE9sMURuVGUxYk5teU1Wblp5Wk1uSjJ2QVFqdXByZXhoanl1YlZuN0ZUbk5ZVkVQcEhaL1NUOXhrZk9JYjR4SVhhWXV0REJUUG1keVBPaXVCeXpwTCtDZ2FmNHd5S0ZZMWplNUt0LzkzdG16Wk9xb1p3VGEyRG05TE14bUs3T2hteHlaUXlZNlB6dWM3aHhmcFhzdXA4YzZkTzd1Q0VkSEsxTnEwYWVPV3pYUjBRbC82aUJFanJQazFDSm5ncE1FUkRPZXVlbkRXaTNYbzBxVkxERlRrV0xPSnJMczhtRWIzaDlLbFM5K2NQbjE2Yi9Yc2szSzJqOFp0R3RhcHJrR1ZjMmYvWnN5WTRVeVlNTUVaUEhpdzA2eFpNd2NkMVFGRGN3SElDN0FJS2w5Ly9iV3pmdjE2Wi9UbzBVNkxGaTJjQ2hVcXVHQ0krenBObWpSeDBESGRHVWthNEdsQUoxdjY1cHR2bk4yN2Q3djNxMTI3dG5zZkw1V1FnTVZyNHdoWW1kU2dtRmNabEIrWEtpSEF0YzdTcFV1N1E2VjlsMm9oSjB3bVRaclVVUUdWcTQ1QnhXcUtUajBWOXo5bUF6a0ZXUFdWMUtQczNMbnpCUTFZZUs3dEZKQVJVT29Bdk90MTZOQ2hEVURwTlpSNTFsWW0vdWRySExpMTRCN3ZLYnZaZWdLWWtpaXd2emVWYld5L0JrMndzQzJLalcwUklPcmVIODk2dEs0WEJvL1cvSi9IamgyYnFtSjV2d1hicTZ2c25XSEtLTTlubG0vTW1ERjlNYUJkbVRKbFNtUGhvNVhPQUM1YnpHVHFlTVE2eGtWU1dTSTdnb25uVEJtRUYvOURnZnl3d3BXUnNaWmhxRHpRb0VHRDl1cmxQWUdPM1NZUUU5SHFsSm11Z2NvMld5ZmRDQ2pseXBWejdVTTg5dTNiRi9QR0cyL0VZQ1IwZjU4K2Zkb0ZKaHRUVzcxNmRjeUtGU3ZjL0VlT0hQSFptZENCclVEcE5VdW84NVlwVThadlBXaUlOLzNMNU1FMCtuSVI1RGpWajRhNmN0dTJiUmxvbnlJck9uandvSU42T2w5ODhZVUxPdnkwMlFxbzFua0JGdTFSTktKekZtLy8vdjB1aTZLckF6L3Brc0R5T1F2SmF6aWJ5QmxEZ3RIYXRXc2RBTGtMVnZUWm9tSGZZblJQeWlWL3RKMHJqa2IzakdwUXpLM1lRbEZwZEdla0JQNVQ5ZTdkdXplbERZdXp1MURIWGdhUTExTjJyT29BcTBub3pDZkJXcmJQbXpldk44QzNOVUM4R1ZqUGRnRU05YVc4OTk1N0wycGc2TldyVjNzQldIVUJrbzBCU0l0UUp2RG13aXI4dDc3QWlRNTRSNjN4WDEyVkVDQktQekpxRXdTSXhxaWI2eHNHVFdTRDdnZVU4K2ZQcjJRNjZuWkFBeWFlOVF3dzF5OEFjanN3VURWV0lCb0pMU1FLLzNrODN0VjExSGx6MDZaTm03R3ZRZjJmcGdFTDc2R2VpQnh4V1JZQXQzNTRlUGhOdGgrd3NyM0NucFhlaU9aSVo4UTNwdk1UUUg2dnhMeVh2MWhPc3k1eThzREx0OHp1NmM1cGVqVXR5NGNWSVRzY2FiaWkwRFh3a0FmZzRYMXZkbmdUTkx4VU1zMml0TitUUEtRRHFlNzRZQjh4dzRZTll3UHk1UU5MaVFHQXVua0lLT2E5eVhpbVRYUGJRQXdBSVdiczJMRmtON0hZbTVmN2dzMjFna0xRSXRNeTY5R3dZVU1YaUxRVHFhNjdQTFFEcWdZc3hpT2lZWjdidW5WckRROERaY0QxbHRCeGgwRjl2TWhQNXg2dHUwUUdSM3NYWFNoUVo5ZVhDK0NSRnd6bmtKeEpYTFJvMGVCQWJnMnFNYVlUNFRnNXRWcG91RFc0NFY0Wk0yYXNzbkRod2c3bzZCL2R1SEZqN1p3NWN6cW84SytxU0R1a3dHSUZnRFFhZ05vQWJiSVRCdEo5WG9DMVk4ZU9zUnF3b0pZOUpkVkZ0SjJXQUkzTFBBOXdtWXYzMndyYVFLdG5uMzJXVHFzdTQzcjExVmY1Ym1jaFA1MU5tK0FlN3FRVFZFRGF5NkkxYUVGRlhtVUMxdVRKazN0ZnZueDVNMWpzVVF4cy93SnJKUnVyTjNIaXhKN2ZmZmZkT3Z5ZnMwZ2ZBVzJCNmJVT0h6NDhRd05XclZxMTZpdlRqTXV5MEdiS29LMmNscEVnR0VpYWlUaExNMWc4dlo5WXgvU1dRUEwwSHNIbDVybjBBZUl3YlRHY1ppaVNySXNHc2tCZS9OWll3andpbGpCY05TSWRMMGdWc1ZKSVNFaEUrL2J0RjZNejNpR1E2STRzRGMxYTNkSjJJdFBtcEptVnlhUTBVSGw1bDV0ZThWTDFZbmttTTlKcXB3bU81dldCeEx5bnJjNnkzbExrT2QzWUNGZzZWcEtnaGM1L0I2UDd4TmF0VzZjMkFxaHRGTnRIcFFHVUkyV1E5c3laTTBjNGdaZTFOdTBJNXVKNHZoVWxDRnBrV2dEVUpoRVJFVmR0dmxvS3RLeU9veDVxb1k5bEdZNmpwWVNmVXprd3pDa0FreThBUnR2NzlldTNEZmU2dG1uVHBnMVFYeit5ekJBZUJzQ2NBZnQ1VnpBWlNuM1VmWndHcko0OWUzYVFCblMwaWNhN2R1MGFyOEhKbUNFOFFmODZPZ2ZqdVI2UzV3QktuNkl1NHlWZ0FkQlhLNWVGZ3hvczhYNmJna0dQeFgrNGF4WVNZSFVlN080TnRJTkdVTDFabjlwNERqUFZ1ZTlxMXF6WlFFV0wwRHdUanJheFVmWUp0cU5telpydEU2RkFPWXd3SHhuM0tFTitzbm9Fa25zRmwyZjJFM3RwaTdHVWdldzJ5V2FKdVV6dlo5WlRnNWJmMVJxS0tLYzI3VlRuT3NqaEFVVUQ1WS9aUW10TTRKQmdKVUhMQmxpeUxCT3NwSmdnWU43YnB1SkpzREx2RlJleGdaQy9QRjdoUFRKRzBnendob3J6eWF4WnMwcGJsbDY1YTRRYVBYcjBlRnVBK0pneFk4YjVHUWtmQ2JBTWkxNVJJN2xZQnNlQktyWFJ5eE1lYk9SVnI5QWNvUmJxdGEvU3EwYktocHZIQ00yUllVd2xCdzBhRkFrbTlkNlpNMmQrcFdzQW54M2ZJVlRSTjhGeTFnSE1ybEtkMnIxNzkvTmdnQjJnUGkvQ1lIc0VBRE1rYmRxMERUUm9iZG15WmJ6QnNPcG9sVkFCVi8xWFhubGxHTXJhQzZDNEFOWHVuVGZmZkhOTXUzYnRUZ0dVR0xVUU0yUEdqQnRYcmx6WmczditEQTNrQ0VCd0N0aDdCNmtTUXMxZW8yWXFQNUkyTkxUNWFQeVhMaDkvL1BFczJ1WVVPOXN3Zi83OGdXRDdUVVI5NmlEUHl4cXdvSFkzVkFzS2NNYStETmp0Qmpud1VZWU1HVExCaUtQTUl6emtiWEdTdVkzNFduTkJUak80M0Z5c002Y2xUdGQySHpPRzB3eEZrdUZIMnBNL2d3Q3QxSmJRbzREcllUMG1ReEV3eW8zR0tQNmo3SHdtODJHRHVuRGhnaXNjblNqMDY2S3JCSVV6a0JRYTloa0M1QVVpdGhnK0w5QXl3ZEswUFptQUZSL1E4c2VjL0RFdWZ5RHNGZUFOTmZ0SGdORlExVER5MkZZdkdEQmd3Rng5dlUwR0RodzR4MDlncmhsNEswZm1US29kcEZFTnhnVXRxb1BseXBYN3lRUXJNTzI5cDArZlR1WXYrTm1KdlU5QU9nTzBjcXYvSldQMGRDeG9rU2VlZU9LQTJjWmF0R2l4UmFsS2xaUlRhVFV4Z3lqQnlBZElBa0MwL2FxMmthKyttdTFycUFFSS8vY3J6ZERyMXEyN1U3RXBLVTlvZzdzUWZaOUl3OGh1a3pwQ2FodmZ0ZjlaRmFYaGxNUHpyb2s2WGRMdHEyL2Z2bE5FSEtVWjV1TVZJMW5BT0MrRHg4MjBmQjduWk5sbVBLWjhoNFhFOThLb2Z3a01Dck5XclZyVnFIejU4c1ViTjI0Y0JvRHU4TTAzMzR3US9tVVpQSmhXMG9BcmpwSnBjZlZRMjhxaVdtaWdKL2hvSU9IRHZINzl1azlvRDZQSTYyVTVnZFN0WU1CQ2c1VlVTMDJSczQ3QnFubitWRDRKVlBMK1VzejdCQUpCRFdRVktsVDRIaU55TDROeCtFSTV1bmJ0K21vdzdLOXo1ODZMUkl5ZGpMTXJhZ1FNeTZEaGZBcElNaWlBY1prVzR4Yk5GU1RBdE04RHlMSUVzN3lNVUExTjBKS3JXc2psWmRneENnd2RPclN0SEtTZ0puMk96NHJDWEtHWE9Lb3EzUjRFR05VVFlLUkJSUHRvU1ZDcnAvTDR3Q2M2T25vSndRcXNsYjU4YmVSTW9SSVRyQnJFQTdCcUc4Q2wwMnVwbWRIcTJoUkQ5UkR2ZEVpcFVxV3VkdXZXYlliU2Zrb1lJVDYyTUo5aWxyaEhzdzNZQXNuTmhUcUxXbUl2YmZjcGJvUWV1ZTBQYW05SmFHaVZBVkRqd1RUUEFHTU9ZTEI3R3NCVlNyaHJhTkNTYkYvUEhqcFNMUXhxVGZlbm5ub3F2RTJiTnUrWnJFQXZFOE9POHRKTEw3bENBemVGd0tkRnArazhwcTJvVnExYU1iMTc5NDRCUmVkS0FlNXYyZUhaVVJZdVhPaEtwMDZkWWdFVktEeXB1MnRrWjUzWTJHZ01uemx6WnN6czJiTmp6VWpxTWlnU1lQakpHVW1XdldEQkF0OTltR2F6bmZFODgxRllaNXRJOEtKZ2RIRmRJQll0V3VRS3Z6T05aZUtGYmkxUm9nUWJhamt3MDdsZ3F2TzA4RGZseXkrLzNJRm4vYk8rbmlLQmtoNzlpeGN2L2cwcTBydThUbnVLeTNLVWJZU2R2VUxseXBWcmd2M09vVUR0bWFWR3loeXFMYVRVeTk5d2hyQmh3NGFuK1E3SXRqNzk5Tk95OFZqQXoxeHROSk5ZRmlpYllIeStwVnlhTm0zNklkc1cvdGV0N3QyN04xU2RvN2d3VlZSUVRLdTZZRm1TWFRVUTdNY0Vra2hMUGxmd1RucWdIVjBIeXh1ckFFcXlxMGFDWVdreEFjdExiQXhMQW1la0IzQlZFU0ZDRlJYTExHdkVQT293bjFKQ3pFVTJ3NDE0eHhJaXBsS21tZWRLaVlEelVuN3VVOFlTMDFuV3FKc0cybUlLQUF1b0FTdTdZUGtoaG1ybzJGaFdvRjF6WER2STVNbVRoMEQvanJWc0NFRkxzeXlDQXVrMDdWWmthM0xHVU51d1pFZm1kL295ZmYzMTF5NXJVek0rN20rR3ZtaW13bnM4ODh3ejdubXFtSndoSkRCaE5IVHprdFZCcjNmejh6N1hybDF6MlJ6WHBmZUtXNVJBeGpxY09YUEdaWTBpVHMxTm84dUNySytwZm5vZGt1VjVsWSs2LzdaMDZkSzVZcTJ4T3Y3S3JGT25Uazh2ZDR5SkV5ZGVNOEk1bW5KMnkwanoyWGoyN3QzN3JIRXVUTEVjdlpvRUcwdGlMaW16WjgrZTJuUnA0UHI2WEFZbkRrc2tKL1ZZenoxVXRTbHppV1J0d00zK3dnc3ZOS2ZmMGJQUFB0dFBxUjZGRldpVlVCMmd2T3JFMVk4ZE83WVByQy9tM0xsek1lZlBuM2VGM3lrWUNMc0xwaFdaUG4zNmhrMmFOR20zY3VYS2NXZlBucjMyMVZkZnhlemZ2LytkVWFOR1BZMzMyMEtCa011bWpoOC9maElEQloxSWZjTDhiSE84SCtXTk45NTRTVE90TkduU1JFR05iTE5zMmJJWGtlOWJuZ2ZBYjhaZ1BSRGcyOFFBcjhqRGh3Ky9KVTBvTkp2UVpNSSt3RGE5ZS9kdUd2aHJMVisrdkw4YS9HOWo4SGhDZ0ZpbGZmdjJEZnY5OTk5cHEvc21XN1pzVlhTY1pQMzY5U1BmZi8vOXAzSEpEcHk3Z3JKZlJSdHBpWDVRUlFlVkh6cDBhSml5OC8zbmtVY2VxU1NEeWovLy9QTVhsZFoxUk9XdndNQjA1YU0yUVlGblJWd1g4ZlRUVHpkR0dWK3JpUlN1M1ZaNSsvYnQvVlhaMTJ2VXFGRmJBeTNxWHgzdlo0Sm9kL25WUUpWVmhCNUpsdVZJbGhYTXZvU3hGdjlIQnlQRk84elpLUk8wMkttMXc2YnA0bUFhd3ZtSlVkU1hCeXpPdmE1bHk1YStOSFoweVNMSUtyUlBGVVpBR2lsZEJrZkdJejNmcWRJeW5lZWwxN3ZONDU0dUVQcVlPbldxYithTjMvVkJ4dWNWZHNOeWJTRThnY3BmdjM3OUYrSy9heCszeGdhSVJLc09wSm5BRXpiSFZqU1lVNy85OXR1dmxoVTJuakxTNktqWTZ2bm5uKzlMWTdSeHJyeFNCWEtvd2N0ZC9vYnJZTkgvaTU3emVOZHUrSTRUZU5jY3J4MXpVZ3EyWmE3U0tnZkx6SUtCYVp0ZWZtRmZMYVZHYjNiYWFtQ1ZlOWpocGQyVXd0LzkrdlhyQVlCYWhMcGZoNWJ3R3Y1N0gzUzRmVHhIbXl0VUZWY0FSbDl0MmJKbE50NWpjMjNQd2lCelFnTWdoZmxNV3kzQWhFd3NLbDI2ZEkyZzBuZEhYWFlqL1hlV3IvUGcyZ3ZidG0zYkh4a1orVG42elBXSWlJaFQ2RU92bkRoeFlnc0hMbTNiQmROMUIxdWFVMmc2d1VCQllLajc3My8vZXlBM2VJSGNybGV2WGhQQnZxcWpMNHpRZ0pVNWMyWUNRMVVNYkZFbzUwMm1VK1N4Y2VQR3ZuaW56RmZsd0lFREl6UmdoWWFHVmxlTWxWTGw1TW1UTHduQW9ucGFWUU1Xd0d5U3NpRld3MzlxZU92V3JVMG80MGVlKytpamo1NmptcjVwMDZhbk5XRGgvOWJYcXhQam5rUFFWbytJZGxkSXFJYVp4U0tYcVV6QWNwemdkbjYrYXpjUGRMQlVreVpOR3M5cGVRMWFXalhVTE10ME16RFpGZk9oMC9yeTRHWDdSQjg3ZHV5STVTTkZ0UWVqWWF5eTZjZ0ovVDZXT3dYWm5XWjQ2TXcrc2ZtSnZmenl5NzQwK254cG9LRTZxSTlaczJiNW1Jd0p4Z1FxZjJFOVp2bDRScmZBRUtkWHExYXR2VTVINDVpdDF4eXpzS1FuaEZHNHFlRzNkcU5GaXhiYndTUS9PSFhxMUd2R3RmU283MjJrZGNGNzZvWUd0aHNkNjFYalhJU3lSZVFTYW1FU0FoWWRTYmxERVZlTjRMcGR6aC9ia3pDRkFWeHlrRXhuc0MvTnVuS3FSbDFBcVJKNlpWeXlpYXBnUEIrd3czLzg4Y2VNMllzYVBIaHdEM1oreXVqUm85ZnJ5QW84OHhpd2prTUFpTXR2di8zMldLU3g4MGVCemZVOWZmcjBkckNpajZGRlBLM1ZSREMwNHdTK3JWdTNUcGVxSU1BN0d1bm5lYysxYTllK3dBRUZiTDh0QUdZVzBtNXloaEo5ZzJYWEEwUHNDU1p6aHY2QUhUcDBpR1ZqUmZwcEFoVGV4VnZTTmdiQU9rbnRBRzJiZ0ZVZkpPRnB0bWNNd0xjWjl5Z045Zmcvb3pSZ1pjeVlrY0JRQy9uN1lNRGVqZisvckVxVktrM0FndXIzNmRPbkRmSmN4bithMDYxYk56TEpHbURab3pSZ2hZU0UxQkdoVURYQldzY0x3Q0pBMXFLUG5IS1duc3g3UjBWRk5XRWNwQVJGOU0vUkJGa0E0eUFOV0l6ZEpMZ0NlTHZSWGNWb2Q0OHAyNlUyd0tjMzFFTHJZZHVkMXl1QTBoZGxqUWRlQ1dqK05VSExaRmsyTndPdDR0bkNWNElOS3FZNktBK29LajZRc2NVSkJncHM1bWhwVzJaR0FoUHplQVZzZXdHV1puYXlmSXcwaHdGWVBmSHMyR0JhaWdqKzgvajlwTG1tbUFLc2htSW1xNmx4dmlzYTFnSTBwQ01Bdy83R09hN0ROTUJJNjZuelY2aFFvWmRsQ1p6aXlvYVVYZ0lXUTNVWU9NMGxhcmdJb0JPM2pWUURiYVpxYnR5UjFsQWJ0WkUrbDFKWkN5bGdwVTJsUERwa2ZiQ1ovUUNoNHhnQUdaZ2ZOWFRvMEI1NjRnZWR5Z2NRQkF3T2NNai9BOXBxa3lSSmtyZzJMcWk1MFFjUEhwd0xzUGtXS3R4cjJtaVBmTWVvbmdFVXBvcjRRYXArVHlEOVBOVzJkOTU1Wnd6elQ1a3lwVGZ5SDBUNlpmU0pGbmhtcmhvS05TMEt3REFGOWZ1UnpxamFUQUR0WWdsWTNScWFMZ0M0NjZRZERXbW5xQ0dncmxRSm93QkFnOUJHMkU0SUFLNW85cVJGQVJhdmp3UURtb204WDlzWUZsamF2dm56NTNkWEFlTC9DdFJQQUthL2dhRStUeERTZ0lVQmRncjl5SGJ1M0RtU0lBaVFlaDZmRnhXQmNKOEhuc3NRRFZob2E5RlBQdmxrVTRJVkJzdjFlRzRyUmJzcmFxaUYydmp1RjdCczRCWFUvbnBRMHpLQ2RyOUpnemRabHJabDJiemJ0UkZkTzU3S2c1N29Xc2hFeUhCb2xOYlhhajh2akppeHJ1dlZxNWZmRlNESXZyVFlBRVdIM1BnRExMeFl6L0s5VkVMTnNHVDVlRnpOcFlnbFQzWXFkYzFrV0EyRnphT2VHWlQrekRQUERFV0QrSG5peEltY0l1NXVYTnNYMGsrbWpSbzFhcmpJMzlISVgwVUExbDBNaTh2VGRPL2UzUUY3Q0xReHdZTisySllQdURBQzV3ZHpIUUhXZHJCcTFhcVhVUGJtZGV2V1JSaW1DUTFhZXVNS3ZhWldVUVZZWmRIeG93QTBCNkN1YlFBNzRpeHIxTEJodzNyb3ZUU2hCbDdUREF2LzMwMURoL25XTUpMWGhTb3puUUFIWVBsWUc4UlI3akVDQ2pyaFpHbTBwNzhYOHA2bjJyWjU4MmEzTTZPRGpsUjdkMTVFVzIwb2pldTdkKzhleDd3WEwxNjhGQllXZHIxVnExWmtnblhBZGxhVFNlRnpyWnpaUkRrbmFjNEFpTkszcnNHeVpjdWU5Z2RXR3JBeVpNamd0aGN1b1NQUG1RYzBsK0hCQWhiQWlSclVkZlRabGhLd0ZpOWUzQWYzMll6bnRZekFUMmRmQVZqMVRjREMrMW5JL0xSdGNiSEdld2xZY1QzWUFGUE9tREdqYTVreVpYNGdJSmtoTnhLc3BIc0E2UEpkVElucEhCVVo4a0xna2dadnp0eHB3enpvcFd0WVY2dWIrbFEyc0pqUGJFektabU9pY1BrUGZXQWs4VEU2ZnRjSDgranlKUmp6L2w2TC8razBQSmN2eFZwYVBkRDVHMVA0WGFlREdZeFNJU0FtZzZxajE0UlNOb3RJdzlON0R4clBBcVF6dUxlRHliN01WVFZFL3JZV2NLeWcxSzBjQ2loU2FNQ2kxenRYY1dDQTlyUnAwNExaU2NWcjFVa2Y0OElndDg3Y1JtMzgrUEdUaGEwcnRmQ1V6NmdhY3k2OWFxbFdDOGVPSGRzYTcrRVRzSlhYTVhqeE9kUUhNSFhUTTlSNHp2MVI3MjNzZERObnp0eVB2SWNCRWw5aGdHMlVOR2xTMTkwQmJhTUJtT2NzZEtnTFlCU3ZhTFVJb0hTVWdBTGdtQ1JtN21wU2ZVTDZPZHBLd1RqSjZtck9uajI3TzlTNy9VaS9CQzJnQ1JnVzMxMU5NTys2VUZVbkl2MGltTlFiY2dVS3NPL1ZyQ09ZMlJycEg4WjRScXFBQUZFQ1ZyMDMzM3h6SUlFS29FQWJWak1aRjJtb2hHUllkVFJnQVNSZU5ZRlp1VlM0cTBkb3dFSzU1L0NmSW5VNkJvRVZFeVpNOEFFV3dSNnE2QjROV0hpR0c2RnVyc1R2ZyszYXRlTkFXODhBTE1td2ZqcHk1TWhZTWo0ODR6R1ZLMWV1ZS9qdzRaR2kzUldKajByNFJ3R0xqU3dkT25aNDQ4YU5QelJqNlFoQ3BnTWw4NkR5bkZYUVM5ZXd3Ym9HZEI2Y2llbmF0YXZQbllDR2IxQmR2U2FYVzRZMmpMT01HalZxL0lLUmF6WWFZVDJEM2YxaVkwWjYxR1dNSUwyYXRUMk1MaElVZnVmQmMyUm5CQ3ErUko3VEIrc3FiUkxHZi82bGVmUG1jMnZYcnQwRURXaXJXdVJ0SnpyRVZBcS9LM2ExTlR3OHZKRnVyQWFJNkptYk1zb29Yc1dnOXdkUS9wTXFRTGVKeGNEZTJsaGs3bURObWpYYmFYOGlJMzlKTmRKbFVRMG1sdEdkYWlGWkZqcE1YTForOGxveU54R2ViNlpxMWFwZDB2NWRBSlBSRmdPOTZTa3ZGd0trV2hqKzRZY2ZqZ0p3ZklIT01CbWdSenRUSkpoblZ6SVV5c2lSSTd1b3pscW5jK2ZPcmRDRzV1SzVYYUtuUE5vUS8weU5PWFBtZEVFSDNBU0FPcmhreVpLZTJzZ01WblNVZ0lJT05rRXhVRmRDUTBOcklQMGNEZUc3ZHUzNkYvTzJiOSsrQ1RyM05LVGRQSFRvMEJpd0NyS2xhbWlqSGNGQzF1RTlmN1ppeFlyZTJxak5jMkJjN1BSa1hxdlZnT1FDSmRKT2tGSGh2alRvMTFxMWF0VUFCVXEzQVlhTjVjS0N1UDlJRFZpWk1tWGkvNnlKKy9SQy9YWVJ1QUNrWFduYkFqbG9SL1VOYVJ1Z3ZuTG1wRHFlM1VoaHc2cXREZmxncGZNa1lPSDlYQWFJamRDQXBWVkwxS3VmOW0vVGdLVnNXSFcwRFVzZkRHanYyYk1uMjExRkFOZ0kwZTRLSzFYZlpuUy9MNENsbDZ0aDQ4b0F1cHdMd0RYQkZ2eXJQYnkxL3hiVHViSERwRW1UWWhuZ1gzLzlkZGZlUU5zWTh4QlVqaDgvN3A3RGFPTTJjREl1QW9tK0RnL3dlTVdLRmF1Ylc1U2hnN2FIeW5IQ1gyQnpwVXFWWEJDVWRlQjNob2J3bkdaNW4zNzYvNkZockljOFo2cTQ2Tml0dE45VHMyYk5Jbkh0dnpBeXJSTHNiQldubFhsTyswWlp0bGNySVJ6MTNBNHF6Ny84OHNzZGRTTmpZemV1ZGYxN1pOcjA2ZE03cTA3aHNqWWpmMkUxeW1WUWpjWGQxWWNyT0NSS2xNZ05pbVp3TkhmajBZQ0VEbFc2VDU4K0c4Q09ML0tUditPd0tjRkRhTlNOY2UwbEFQOVFJL2c3bWZEZnNzVWp1bXFobmx5Um9tMDlGSjIyWWNPR1FacnRMRnEwcUN1QWFKZDVIV01TVDU4K1BSSHRzb1orRjJCRm54RlFUcHc0TVZhOG93cWN5a2Y2T1Y0SDRCM0p2Q2k3R3NDaEhjcCtEK2QrTjhyK21rc3ZvejNYekpZdEc0TzV2OUYxeExsUFVNWUlNVU1Yd1VVRXlhZysrK3d6R3ZTcnZ2MzIyMzAwWURWcTFLaWhCTSs5ZS9jT0Y3T0VaRWhWd0licWcrMnQ4Rmh2N0dtOWNLQXhTMWhOK0h0eFA0QjNsZnZOVmJXb29tK1drSnVEb0c2ajlVd2gyNThHTERWTFdIM0xsaTBEVmRtLzRUbnVBQ1pFNnoxT2p4NDlPbHkwdXdKaUgxTy9iZzMzbW1XbFVLTWhiNXBqeUpBaERRQkdwOHpBWHkwbWNIbUZzNWo3R01xOEtPZm4zcjE3VCtWV1lzSVRWM3ZkYXVlM2ttQUg0ZDI3ZDUrQmUvNzhSME4wdk03cCtrQXRtWllpUllvd3c3TzRhSUNkV1lvWW5zV1BpZFVtODRwUW5ZTENnYktFeFFsUU8vRzVtelowN05oeEtNRDlLbFRwSWNMSnNLVGhBYThkK0hJcFVBalI2aURYeHVMS0RiRTJKQVJ3YWFEeTJDTE1IM0FGcFM3NldmVkJ6eGk2YXFFRUoyM2ZzY25XclZzSGF0K2xyRm16VnUvUm8wYzAxTFIvb1FOZTRiVlhyMTU5Yy9ueTVlM0JpcXBLUjB0T1R2QThmWktFODJONGhnd1p5dVBhY3p5SGNvYnE1dzRtVTY1TGx5NVVBWWZobkF0S0dKaldyVjY5dW1ORVJFUlZuUWRnc3B3eGtTd2ZBL0Z6WU9KMXhRWVg1UWhZQkNHd0c0SkMrVTJiTnZYVWdLVUdPTDNCY1hrd21xSENEeXRDcDRPSjFRSDdHZ2ltdFoxTFI0Tlp2UVBtMVNrc0xLeTYzcnhEK21HbFQ1KytvcXlEUHo4c01NSjUzRGhFRHJRYXNEZ3c4emVBc1o4cSs4YmN1WE5iZ1oxWDFNNmpHQUNHQ3NDU0xnM3AvVG1PM211V0paZXM0WTB6bFM1ZE92Zmd3WU1YNENIZGtWdlMyL2FyTThVR2NESXZYc2pSNGNPSDF6TUNOSE1abTVqR2trR0RCa1hWcjEvL3FMOTR2UGdLNnZQWmlCRWpJaDM3YnNVNUxSdHkyamJmekdsRTRHY1JBZENaRGI4azI1NTNPdWFyQUViWmNtWExscjFDTU9WblpHUmtXVXZBYkc1alo1WVE2ZVh1OWJLblRaczJQc0FXWWVQam9USStaRm4xd1MvTDBvQzBaczJhanFvVFZ0U3hobURWdEt2OHdQUHNQRUsxbHQ3ZkpTMWJoUld6YlAvbEwremxjWSt0d29wN2JEOVd6TWdUWmdscHNXMXJWc3JEVTkzbWtXNTZxcHZYNm51V01MWkxDelBPMmVvUWJpbFhlcnlIaTkvNmU1Z0lEOU9EY1lHNGhPYmNqeU94V0FWQ1RrK0hMRm15SkpyNzFCR3N0SUZWTzFCSzhBcTBWVDBGMTk1NS92bm5KK0l6U3h6WDVuRUZvSmNOK3Z3a2dxaThaM3lGNWJBKzZLaVovYXc1OUlpbGJobjhyRU1VS2hZN1N5dG16YnlpRWN6MWh6S0RYVzJTWVZSZ1dSdU5kWlBrL2VXc1RGSzlySWVmNHdFdjBJb0RXQVdhVVRSWjFsMnJQdWhac00yYk43ZFZIY3kzVkEzWWZRMkExUTg4LzhFSEgvUzJBSk9NcXlzY0lJall0dnQwQVQ4YnJ2b1RjMU5XdVY5aFlSa0VidGxEMFNzVzBJejVNMk1CelhQNlBtWmNhV0hqbkwveWlucnM3MWpNa3Fld0FDbXROZVEyd0NyVWNCaE5Kb09mN3lkb3lXaDlMZHk2UEd2Ly92M1htRE5EY2wwbm04ZzhvS0ZIVjYxYUZSSGtrcTMrSkNYTFFYbkhBdDNmbi9ENklPcmpyMjRwWDNycHBheFFuMSt2VXFYS1JYN3l0N0Y4YkhLTDM1TFgvL0l0U3p0bHlwUi9TYURuYnovTDVhWXcxeUFLQkZnVXJvbmxzYkRmSHpIS0p3cXc2a01HWVlEWEh2Q0ZqSTRqbVlzYzJXM0FaR09kTnJFdHEyTG16eE1IeVd0b0FubU5JUEQ4bGxVVHpKVVc0bkxPWEpFaG43RXlRejZQZExNOEczZ0hBdmQ4QnFQUElkYnU4cmRTUXhMblR6b1NXMWExZEZVTXhxTlZxbFRwQjkzSVRRQ3pTYWxTcGU2Z0kwOGJPM1pzcW5qdTRHSGRRWVRsc1Z5V0gwdzk0bEVmdi9YYnNHRkRWSzFhdGI2UlpmTTMweTByZ2diN1AzMGJDY3llUFhzNFZLT0wvRFIyTFBGYWVUUlJrTy8zQVFsYU5MckhBNno4emlKYVdGWXE0WnVsVnpITkxrd0FqM3F3bDRKK2dFa3VncGZEV0dqT2F3RTg4MXcyNDNlZ1JleXlHVXY4MkpiOXllbGhVc2psSnozWWN6a01zYVVGcWtNdUQxTk1iby96K3YvSkJmejBFcy9wL0lCVll1ZXZjSENkcGZidDIrL3had2ZSd3BVQ1B2bmtrL0p4dEtkNU9ycmFEcGF2VnlTNEQvWHhyTnVJRVNPVzJPN0I5SHRSZmpDT3YvL2xJOWg0UksvMXRUTHBZR214Mm9QTlZwalRBa2h5bFUydlpYeTlsaGkyTFVNc3hjc2tZVHVmeVVPMWwzVXpWd0xOWk5nMk13ZTVZcWg1dlZlWm1lS3hBcW01cXFtVVRCWXpTS2h6OTNabHRuWGQveHJIblR0M0hwdy9mLzdJOFBEdzMyeWRsdW5jK09EV3JWc3AvNHo2OEQ2ODM1OVpINWJWckZtekkvSSsvUDFuL2VlL0lHQTlFSUJwU2RBS0VmYThUS0pEMmRoUkZqK2dwRHVQMTBZT3RrVUFRandrWFJ3bDFITHZVQ01nUE5URHhobnFjYzdmdXV6bTlWNWxoZ1lvS3k1aVBsOXBsdzFxRTRxLzFNSDFsYUtqbzAvSVRoc1pHZm4xL3YzN3EvMDM2c1A3OHY1L1ZuMCsvL3p6eDdTS3pFLytkdjQ1UjF4WGZVaHU4WVNYS3o1NE1SK3YzV1hTaXM0anQ2TktGYVNrOXJBaEJpdm1mYzMwWU1YOEgya2M3MTF1NGxOdVhIYlE4YnFuZkxiU2RtcmJuekRXTmw5L3VZT01Zc3lZTVhPNTV0TG8wYVBuMzdoeEk4MS9zejY4UCt2eFo5Vm40OGFOTFhrdmZqci9yT01CSi81TDFjaUZBZE5ZbUU4Nnk0aHVBeVd2VFRwc2tqekFlYThOUk8rRjJGWlA4VG9YYVBMSHZOWmZtWEhkb3pDWURWQ1Mrd0dxdXpaU1RUZ1NqcjhUWVBsYnFzYmZ6S25YeHAyMkhZak5YWStUQmluSm5NQmJzLyszSkpqZG5lTmJSbHpsRDIxVm4zQWtISDkxd0xMNWFQbGJxaVlROHdtbTQ5ajJhb3lQSkVtUWdIdGdKdmJEcUxUb2RwQndKQngvQzhEeTUxaWF5QWwrNDFrYktIbDFIQzk1eUNLSkVpUmVZbnVXTnFCS0FLeUU0MjhIV01FQ1Z6QVNiT2N4TzFCYzVhRS9JQThHbWNmcm5nL0dvNHlIN3NQL2lNOHo5WHIzQ1VmQzhiY0RyQWZ1QXpERVZZSlpnU0pCNGc5TVZ2ay84WjQyWmZPSEFaRUFBQUFBU1VWT1JLNUNZSUk9IiB3aWR0aD0iMjAwIiBhbHQ9IicgLiAkdGhpcy0+YXV0aG9yX25hbWUgLiAnIiAvPjwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICANCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgDQogICAgICAgIDwvYm9keT4NCiAgICAgICAgPC9odG1sPg0KICAgICAgICAnOw0KDQogICAgICAgICRoZWFkZXJzPSAiTUlNRS1WZXJzaW9uOiAxLjBcclxuIjsNCiAgICAgICAgJGhlYWRlcnMgLj0gIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PVVURi04XHJcbiI7DQogICAgICAgICRoZWFkZXJzIC49ICJGcm9tOiAiLiRwYXJhbXNbJ1NUT1JFX1RJVExFJ10uIiA8Ii4kcGFyYW1zWydTVE9SRV9FTUFJTCddLiI+XHJcbiI7DQogICAgICAgICRoZWFkZXJzIC49ICJSZXBseS1UbzogIi4kcGFyYW1zWydTVE9SRV9FTUFJTCddLiJcclxuIjsNCiAgICAgICAgQG1haWwoJHBhcmFtc1snU1RPUkVfRU1BSUwnXSwgaHRtbF9lbnRpdHlfZGVjb2RlKCAkcGFyYW1zWydTVE9SRV9USVRMRSddLCBFTlRfUVVPVEVTLCAnVVRGLTgnICksICRtZXNzYWdlLCAkaGVhZGVycyk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGxvZ2dlciggJG1lc3NhZ2UgKQ0KICAgIHsNCiAgICAgICAgJGZzID0gZmlsZV9wdXRfY29udGVudHMoICR0aGlzLT5sb2dfZmlsZSwgJ1snIC4gZGF0ZSggIlktbS1kIEg6aTpzIiApIC4gIl0g0JjQvdGE0L7RgNC80LDRhtC40Y86ICIgLiAkbWVzc2FnZSAuICJcclxuIiwgRklMRV9BUFBFTkQgKTsNCiAgICAgICAgcmV0dXJuICRmczsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xlYXJfbG9nZ2VyKCAkc2Vzc2lvbiwgJHZlcnNpb24gKQ0KICAgIHsNCiAgICAgICAgaWYgKCB2ZXJzaW9uX2NvbXBhcmUoICR2ZXJzaW9uLCAnMy4wJywgJz49JyApICkgew0KICAgICAgICAgICAgJHRva2VuID0gJF9SRVFVRVNUWyd1c2VyX3Rva2VuJ107DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkdG9rZW4gPSAkX1JFUVVFU1RbJ3Rva2VuJ107DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoICR0b2tlbiA9PSAkc2Vzc2lvbiApIHsNCiAgICAgICAgICAgICRtZXNzYWdlID0gJyc7DQogICAgICAgICAgICBpZiAoICR0aGlzLT5jaGVja19sb2coKSA9PSAxICkgew0KICAgICAgICAgICAgICAgICRtZXNzYWdlID0gJzxzcGFuIHN0eWxlPSJjb2xvcjogZ3JlZW47Ij7QntGH0LjRidC10L3QviE8L3NwYW4+ICc7DQogICAgICAgICAgICB9IGVsc2UgaWYgKCAkdGhpcy0+Y2hlY2tfbG9nKCkgPT0gMiApIHsNCiAgICAgICAgICAgICAgICAkbWVzc2FnZSA9ICc8c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPtCe0YjQuNCx0LrQsCDQvtGH0LjRgdGC0LrQuCDRhNCw0LnQu9CwITwvc3Bhbj4gJzsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAoICR0aGlzLT5jaGVja19sb2coKSA9PSAzICkgew0KICAgICAgICAgICAgICAgICRtZXNzYWdlID0gJzxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+0KTQsNC50Lsg0L3QtSDRgdGD0YnQtdGB0YLQstGD0LXRgiE8L3NwYW4+ICc7DQogICAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkbWVzc2FnZSA9ICc8c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPtCd0LXQstC10YDQvdGL0Lkg0YLQvtC60LXQvSE8L3NwYW4+JzsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJG1lc3NhZ2U7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldF9sb2dfZmlsZSgpDQogICAgew0KICAgICAgICAkbG9nID0gJyc7DQogICAgICAgIGlmICggZmlsZV9leGlzdHMoICR0aGlzLT5sb2dfZmlsZSApICkgew0KICAgICAgICAgICAgJGxvZyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCAkdGhpcy0+bG9nX2ZpbGUgKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJGxvZzsNCiAgICB9DQoNCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrX2xvZygpDQogICAgew0KICAgICAgICAkc3RhdHVzID0gMDsNCiAgICAgICAgaWYgKCBpc19maWxlKCAkdGhpcy0+bG9nX2ZpbGUgKSApIHsNCiAgICAgICAgICAgICRmcyA9IEBmb3BlbiggJHRoaXMtPmxvZ19maWxlLCAidyIgKTsNCiAgICAgICAgICAgIEBmY2xvc2UoICRmcyApOw0KICAgICAgICAgICAgaWYgKCAkZnMgKSB7DQogICAgICAgICAgICAgICAgJHN0YXR1cyA9IDE7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICRzdGF0dXMgPSAyOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJHN0YXR1cyA9IDM7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRzdGF0dXM7DQogICAgfQ0KDQp9")); /* Likeopencart.com / Email: [email protected] / 2020 (C) All rights reserved! */
Function Calls
base64_decode | 1 |
Stats
MD5 | 97238c86bb538e094c9a44625e2dd915 |
Eval Count | 1 |
Decode Time | 144 ms |