Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

$_F=__FILE__;$_X='P2RzP0lOSXJ7KnJ9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19..

Decoded Output download

?><?php
/*
=====================================================
 DataLife Engine - by SoftNews Media Group
-----------------------------------------------------
 https://dle-news.ru/
-----------------------------------------------------
 Copyright (c) 2004-2023 SoftNews Media Group
=====================================================
 This code is protected by copyright
=====================================================
 File: register.php
-----------------------------------------------------
 Use: registration of visitors
=====================================================
*/

if( !defined('DATALIFEENGINE') ) {
	header( "HTTP/1.1 403 Forbidden" );
	header ( 'Location: ../../' );
	die( "Hacking attempt!" );
}

$parse = new ParseFilter();
$parse->safe_mode = true;
$parse->allow_video = false;
$parse->allow_media = false;
$stopregistration = false;
$_IP = get_ip();

if( !isset($_REQUEST['step']) ) $_REQUEST['step'] = false;
if( !isset($config['key']) ) $config['key'] = '';

$canonical = $PHP_SELF."?do=register";

if( isset( $_REQUEST['doaction'] ) ) $doaction = $_REQUEST['doaction']; else $doaction = "";
$config['reg_group'] = intval( $config['reg_group'] ) ? intval( $config['reg_group'] ) : 4;

$parse->allow_url = $user_group[$config['reg_group']]['allow_url'];
$parse->allow_image = $user_group[$config['reg_group']]['allow_image'];

function check_reg($name, $email, $password1, $password2, $sec_code = 1, $sec_code_session = 1) {
	global $lang, $db, $banned_info, $relates_word, $config;
	$stop = "";

	if( $sec_code != $sec_code_session OR !$sec_code_session ) $stop .= "<li>".$lang['recaptcha_fail']."</li>";
	if( $password1 != $password2 ) $stop .= $lang['reg_err_1'];
	if( strlen( $password1 ) < 6 ) $stop .= $lang['reg_err_2'];
	if( strlen( $password1 ) > 72 ) $stop .= $lang['reg_err_2'];
	if( preg_match( "/[\||\'|\<|\>|\[|\]|\%|\"|\!|\?|\$|\@|\#|\/|\|\&\~\*\{\}\+]/", $name ) ) $stop .= $lang['reg_err_4'];
	if( empty( $email ) OR strlen( $email ) > 40 OR @count(explode("@", $email)) != 2) $stop .= $lang['reg_err_6'];
	if (strpos( strtolower ($name) , '.php' ) !== false) $stop .= $lang['reg_err_4'];
	
	if( dle_strlen( $name, $config['charset'] ) > 40 OR dle_strlen(trim($name), $config['charset']) < 3) $stop .= $lang['reg_err_3'];

	if( isset($banned_info['name']) AND is_array($banned_info['name']) AND count( $banned_info['name'] ) ) foreach ( $banned_info['name'] as $banned ) {

		$banned['name'] = str_replace( '\*', '.*', preg_quote( dle_strtolower($banned['name'], $config['charset']), "#" ) );

		if( $banned['name'] and preg_match( "#^{$banned['name']}$#iu", dle_strtolower($name, $config['charset']) ) ) {

			if( $banned['descr'] ) {
				$lang['reg_err_21'] = str_replace( "{descr}", $lang['reg_err_22'], $lang['reg_err_21'] );
				$lang['reg_err_21'] = str_replace( "{descr}", $banned['descr'], $lang['reg_err_21'] );
			} else
				$lang['reg_err_21'] = str_replace( "{descr}", "", $lang['reg_err_21'] );

			$stop .= $lang['reg_err_21'];
		}
	}

	if( isset($banned_info['email']) AND is_array($banned_info['email']) AND count( $banned_info['email'] ) ) foreach ( $banned_info['email'] as $banned ) {

		$banned['email'] = str_replace( '\*', '.*', preg_quote( dle_strtolower($banned['email'], $config['charset']), "#" ) );

		if( $banned['email'] AND preg_match( "#^{$banned['email']}$#iu", dle_strtolower($email, $config['charset']) ) ) {

			if( $banned['descr'] ) {
				$lang['reg_err_23'] = str_replace( "{descr}", $lang['reg_err_22'], $lang['reg_err_23'] );
				$lang['reg_err_23'] = str_replace( "{descr}", $banned['descr'], $lang['reg_err_23'] );
			} else
				$lang['reg_err_23'] = str_replace( "{descr}", "", $lang['reg_err_23'] );

			$stop .= $lang['reg_err_23'];
		}
	}

	$all_words = @file( ENGINE_DIR . '/data/wordfilter.db.php' );
	
	if( $all_words AND is_array($all_words) AND count( $all_words ) ) {
		
		foreach ( $all_words as $word_line ) {
			$word_arr = explode( "|", $word_line );
		
			$word_arr[1] = str_replace( "&#036;", "$", $word_arr[1] );
			$word_arr[1] = str_replace( "&#123;", "{", $word_arr[1] );
			$word_arr[1] = str_replace( "&#125;", "}", $word_arr[1] );
			
			if( $word_arr[4] ) {

				$register ="";

			} else $register ="i";

			$register .= "u";

			if( $word_arr[3] ) {

				$find_text = "#(^||\s|\<br \/\>)" . preg_quote( $word_arr[1], "#" ) . "(|\s|!|\?|\.|,|$)#".$register;

			} else {

				$find_text = "#(" . preg_quote( $word_arr[1], "#" ) . ")#".$register;

			}
			
			if ( preg_match($find_text, $name) ) {

				$stop .= $lang['reg_err_4'];

			}

		}
		
	}
	
	if( $stop == "" ) {
		if( function_exists('mb_strtolower') ) {
			$name = trim(mb_strtolower($name, $config['charset']));
		} else {
			$name = trim(strtolower( $name ));
		}
		$search_name = strtr( $name, $relates_word );

		$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users WHERE email = '{$email}' OR LOWER(name) REGEXP '^{$search_name}$' OR name = '{$name}'" );

		if( $row['count'] ) $stop .= $lang['reg_err_8'];
	}

	return $stop;

}

if( !$config['allow_registration'] ) {

	msgbox( $lang['all_info'], $lang['reg_err_9'] );
	$stopregistration = TRUE;

}

if( $config['auth_only_social'] AND !$stopregistration) {

	msgbox( $lang['all_info'], $lang['reg_err_41'] );
	$stopregistration = TRUE;

}

if ( $config['sec_addnews'] AND !$stopregistration ) {

	$row = $db->super_query( "SELECT * FROM " . PREFIX . "_spam_log WHERE ip = '{$_IP}'" );
	
	if( !isset($row['id']) ) $row['id'] = false;
	
	if ( !$row['id'] ) {

		$sfs = new StopSpam($config['spam_api_key'], $config['sec_addnews']);
		$args = array('ip' => $_IP);

		if ($sfs->is_spammer( $args )) {

			$db->query( "INSERT INTO " . PREFIX . "_spam_log (ip, is_spammer, date) VALUES ('{$_IP}','1', '{$_TIME}')" );

			msgbox( $lang['all_info'], $lang['reg_err_28'] );
			$stopregistration = TRUE;

		} else {

			$db->query( "INSERT INTO " . PREFIX . "_spam_log (ip, is_spammer, date) VALUES ('{$_IP}','0', '{$_TIME}')" );
		}

	} else {

		if ($row['is_spammer']) {

			msgbox( $lang['all_info'], $lang['reg_err_28'] );
			$stopregistration = TRUE;

		}

	}

}

if( $config['max_users'] > 0 AND !$stopregistration) {

	$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users" );

	if ( $row['count'] >= $config['max_users'] ) {
		msgbox( $lang['all_info'], $lang['reg_err_10'] );
		$stopregistration = TRUE;
	}

}

if( !$config['reg_multi_ip'] AND !$is_logged AND !$stopregistration) {

	$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users WHERE logged_ip = '{$_IP}'" );

	if ( $row['count'] ) {
		msgbox( $lang['all_info'], $lang['reg_err_26'] );
		$stopregistration = TRUE;
	}

}

if ( $is_logged AND !isset( $_POST['submit_val'] ) AND !$stopregistration ) {

	msgbox( $lang['all_info'], $lang['reg_err_27'] );
	$stopregistration = TRUE;
}

if( isset( $_POST['submit_reg'] ) AND !$stopregistration ) {

	if( $config['allow_sec_code'] ) {

		if ($config['allow_recaptcha']) {

			$sec_code = 1;
			$sec_code_session = false;

			if ( $_POST['g-recaptcha-response'] ) {

				$reCaptcha = new ReCaptcha($config['recaptcha_private_key']);
		
				$resp = $reCaptcha->verifyResponse(get_ip(), $_POST['g-recaptcha-response'] );

			    if ( $resp != null && $resp->success ) {
					$sec_code = 1;
					$sec_code_session = 1;

			    }
			}

		} else {
			$sec_code = $_POST['sec_code'];
			$sec_code_session = ($_SESSION['sec_code_session'] != '') ? $_SESSION['sec_code_session'] : false;
		}

	} else {
		$sec_code = 1;
		$sec_code_session = 1;
	}

	$password1 = $_POST['password1'];
	$password2 = $_POST['password2'];
	
	$name = strtr($_POST['name'], array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES, $config['charset'])));
	$name = trim($name,chr(0xC2).chr(0xA0));
	$name = preg_replace('#\s+#u', ' ', $name);
	
	$name = $db->safesql( $parse->process( htmlspecialchars( trim( $name ), ENT_QUOTES, $config['charset'] ) ) );

	$not_allow_symbol = array (""", "`", "	", '
', '
', "
", "
", '\', ",", "/", "#", ";", ":", "~", "[", "]", "{", "}", ")", "(", "*", "^", "%", "$", "<", ">", "?", "!", '"', "'", " ", "&" );
	$email = $db->safesql(trim( str_replace( $not_allow_symbol, '', strip_tags( stripslashes( $_POST['email'] ) ) ) ) );

	$reg_error = check_reg( $name, $email, $password1, $password2, $sec_code, $sec_code_session );

	if( $config['reg_question'] ) {

		if ( intval($_SESSION['question']) ) {

			$answer = $db->super_query("SELECT id, answer FROM " . PREFIX . "_question WHERE id='".intval($_SESSION['question'])."'");

			$answers = explode( "
", $answer['answer'] );

			$pass_answer = false;

			if( function_exists('mb_strtolower') ) {
				$question_answer = trim(mb_strtolower($_POST['question_answer'], $config['charset']));
			} else {
				$question_answer = trim(strtolower($_POST['question_answer']));
			}

			if( count($answers) AND $question_answer ) {
				foreach( $answers as $answer ){

					if( function_exists('mb_strtolower') ) {
						$answer = trim(mb_strtolower($answer, $config['charset']));
					} else {
						$answer = trim(strtolower($answer));
					}

					if( $answer AND $answer == $question_answer ) {
						$pass_answer	= true;
						break;
					}
				}
			}

			if( !$pass_answer ) $reg_error .= $lang['reg_err_25'];

		} else $reg_error .= $lang['reg_err_25'];

	}

	if ( $config['sec_addnews'] ) {

		$sfs = new StopSpam($config['spam_api_key'], $config['sec_addnews']);
		$args = array('email' => $email);

		if ($sfs->is_spammer( $args )) {

			$db->query( "UPDATE " . PREFIX . "_spam_log SET is_spammer='1', email='{$email}' WHERE ip = '{$_IP}'" );
			$stopregistration = TRUE;
			$reg_error .= $lang['reg_err_35'];

		} else {

			$db->query( "UPDATE " . PREFIX . "_spam_log SET email='{$email}' WHERE ip = '{$_IP}'" );

		}

	}
	
	$_SESSION['sec_code_session'] = false;
	$_SESSION['question'] = false;
			
	if( !$reg_error AND !$stopregistration ) {

		$stronghash = sha1(DBHOST . DBNAME . SECURE_AUTH_KEY);

		if( $config['registration_type'] ) {

			$row = $db->super_query( "SELECT * FROM " . PREFIX . "_email where name='reg_mail' LIMIT 0,1" );
			$mail = new dle_mail( $config, $row['use_html'] );
			
			$row['template'] = stripslashes( $row['template'] );

			$idlink = rawurlencode( base64_encode( $name . "||" . $email . "||" . $password1 . "||" . sha1( $name . $email . $stronghash . $config['key'] ) ) );
			
			if (strpos($config['http_home_url'], "//") === 0) $slink = "https:".$config['http_home_url'];
			elseif (strpos($config['http_home_url'], "/") === 0) $slink = "https://".$_SERVER['HTTP_HOST'].$config['http_home_url'];
			else $slink = $config['http_home_url'];
			
			$row['template'] = str_replace( "{%username%}", $name, $row['template'] );
			$row['template'] = str_replace( "{%email%}", $email, $row['template'] );
			$row['template'] = str_replace( "{%validationlink%}", $slink . "index.php?do=register&doaction=validating&id=" . $idlink, $row['template'] );
			$row['template'] = str_replace( "{%password%}", $password1, $row['template'] );

			$mail->send( $email, $lang['reg_subj'], $row['template'] );

			if( $mail->send_error ) msgbox( $lang['all_info'], $mail->smtp_msg );
			else msgbox( $lang['reg_vhead'], $lang['reg_vtext'] );

			$stopregistration = TRUE;

		} else {

			$doaction = "validating";
			$_REQUEST['id'] = rawurlencode( base64_encode( $name . "||" . $email . "||" . $password1 . "||" . sha1( $name . $email . $stronghash . $config['key'] ) ) );
		}

	} else {
		msgbox( $lang['reg_err_11'], "<ul>" . $reg_error . "</ul>" );
	}

}

if( $doaction != "validating" AND !$stopregistration ) {

	if( isset($_POST['dle_rules_accept']) AND $_POST['dle_rules_accept'] == "yes" ) {

		$_SESSION['dle_rules_accept'] = 1;

	}

	if( $config['registration_rules'] and !isset($_SESSION['dle_rules_accept']) ) {

		$_GET['page'] = "dle-rules-page";
		include (DLEPlugins::Check(ENGINE_DIR . '/modules/static.php'));

	} else {

		$tpl->load_template( 'registration.tpl' );

		$tpl->set( '[registration]', "" );
		$tpl->set( '[/registration]', "" );
		$tpl->set_block( "'\[validation\](.*?)\[/validation\]'si", "" );

		if( $vk_url ) {
			$tpl->set( '[vk]', "" );
			$tpl->set( '[/vk]', "" );
			$tpl->set( '{vk_url}', $vk_url );	
		} else {
			$tpl->set_block( "'\[vk\](.*?)\[/vk\]'si", "" );
			$tpl->set( '{vk_url}', '' );	
		}
		if( $odnoklassniki_url ) {
			$tpl->set( '[odnoklassniki]', "" );
			$tpl->set( '[/odnoklassniki]', "" );
			$tpl->set( '{odnoklassniki_url}', $odnoklassniki_url );
		} else {
			$tpl->set_block( "'\[odnoklassniki\](.*?)\[/odnoklassniki\]'si", "" );
			$tpl->set( '{odnoklassniki_url}', '' );	
		}
		if( $facebook_url ) {
			$tpl->set( '[facebook]', "" );
			$tpl->set( '[/facebook]', "" );
			$tpl->set( '{facebook_url}', $facebook_url );	
		} else {
			$tpl->set_block( "'\[facebook\](.*?)\[/facebook\]'si", "" );
			$tpl->set( '{facebook_url}', '' );	
		}
		if( $google_url ) {
			$tpl->set( '[google]', "" );
			$tpl->set( '[/google]', "" );
			$tpl->set( '{google_url}', $google_url );
		} else {
			$tpl->set_block( "'\[google\](.*?)\[/google\]'si", "" );
			$tpl->set( '{google_url}', '' );	
		}
		if( $mailru_url ) {
			$tpl->set( '[mailru]', "" );
			$tpl->set( '[/mailru]', "" );
			$tpl->set( '{mailru_url}', $mailru_url );	
		} else {
			$tpl->set_block( "'\[mailru\](.*?)\[/mailru\]'si", "" );
			$tpl->set( '{mailru_url}', '' );	
		}
		if( $yandex_url ) {
			$tpl->set( '[yandex]', "" );
			$tpl->set( '[/yandex]', "" );
			$tpl->set( '{yandex_url}', $yandex_url );
		} else {
			$tpl->set_block( "'\[yandex\](.*?)\[/yandex\]'si", "" );
			$tpl->set( '{yandex_url}', '' );
		}

		if( $config['reg_question'] ) {

			$tpl->set( '[question]', "" );
			$tpl->set( '[/question]', "" );

			$question = $db->super_query("SELECT id, question FROM " . PREFIX . "_question ORDER BY RAND() LIMIT 1");
			$tpl->set( '{question}', htmlspecialchars( stripslashes( $question['question'] ), ENT_QUOTES, $config['charset'] ) );

			$_SESSION['question'] = $question['id'];

		} else {

			$tpl->set_block( "'\[question\](.*?)\[/question\]'si", "" );
			$tpl->set( '{question}', "" );

		}

		if( $config['allow_sec_code'] ) {

			if ( $config['allow_recaptcha'] ) {

				$tpl->set( '[recaptcha]', "" );
				$tpl->set( '[/recaptcha]', "" );
				
				$captcha_name = "g-recaptcha";
				$captcha_url = "https://www.google.com/recaptcha/api.js?hl={$lang['language_code']}";
				
				if( $config['allow_recaptcha'] == 3) {
					
					$captcha_name = "h-captcha";
					$captcha_url = "https://js.hcaptcha.com/1/api.js?hl={$lang['language_code']}";
				
				}

				if ($config['allow_recaptcha'] == 4) {

					$captcha_name = "cf-turnstile";
					$captcha_url = "https://challenges.cloudflare.com/turnstile/v0/api.js?compat=recaptcha";
				}

				if( $config['allow_recaptcha'] == 2) {
						
					$tpl->set( '{recaptcha}', "");
					$tpl->copy_template .= "<script src=\"https://www.google.com/recaptcha/api.js?render={$config['recaptcha_public_key']}\" async defer></script>";
						
				} else {
					
					$tpl->set( '{recaptcha}', "<div class=\"{$captcha_name}\" data-sitekey=\"{$config['recaptcha_public_key']}\" data-theme=\"{$config['recaptcha_theme']}\" data-language=\"{$lang['language_code']}\"></div><script src='{$captcha_url}' async defer></script>" );
					
				}
				
				$tpl->set_block( "'\[sec_code\](.*?)\[/sec_code\]'si", "" );
				$tpl->set( '{reg_code}', "" );

			} else {

				$tpl->set( '[sec_code]', "" );
				$tpl->set( '[/sec_code]', "" );
				$tpl->set( '{reg_code}', "<a onclick=\"reload(); return false;\" href=\"#\" title=\"{$lang['reload_code']}\"><span id=\"dle-captcha\"><img src=\"engine/modules/antibot/antibot.php\" alt=\"{$lang['reload_code']}\" width=\"160\" height=\"80\" /></span></a>" );
				$tpl->set_block( "'\[recaptcha\](.*?)\[/recaptcha\]'si", "" );
				$tpl->set( '{recaptcha}', "" );
			}

		} else {

			$tpl->set( '{reg_code}', "" );
			$tpl->set( '{recaptcha}', "" );
			$tpl->set_block( "'\[sec_code\](.*?)\[/sec_code\]'si", "" );
			$tpl->set_block( "'\[recaptcha\](.*?)\[/recaptcha\]'si", "" );
		}

		$tpl->copy_template = "<form  method=\"post\" name=\"registration\" id=\"registration\" action=\"\">
" . $tpl->copy_template . "
<input name=\"submit_reg\" type=\"hidden\" id=\"submit_reg\" value=\"submit_reg\">
<input name=\"do\" type=\"hidden\" id=\"do\" value=\"register\">
</form>";

		if( $config['allow_recaptcha'] == 2) {
			
			$onload_scripts[] = <<<HTML
			
				$('#registration').submit(function(event) {
				
					event.preventDefault();
					
					if (!check_reg_daten()) {
						return false;
					}
				
					grecaptcha.execute('{$config['recaptcha_public_key']}', {action: 'user_register'}).then(function(token) {
						$('#registration').append('<input type="hidden" name="g-recaptcha-response" value="' + token + '">');
						$('#registration').off('submit');
						HTMLFormElement.prototype.submit.call(document.forms.registration);
					});
			
					return false;
				});
HTML;


		} else {
			
			$onload_scripts[] = <<<HTML
				$('#registration').submit(function() {
					if (!check_reg_daten()) {
						return false;
					} else {
						return true;
					}
				});
HTML;
			
		}


		$tpl->copy_template .= <<<HTML
<script>
<!--
function check_reg_daten () {

	if(document.forms.registration.name.value == '') {

		DLEalert('{$lang['reg_err_30']}', dle_info);return false;

	}

	if(document.forms.registration.password1.value.length < 6) {

		DLEalert('{$lang['reg_err_31']}', dle_info);return false;

	}

	if(document.forms.registration.password1.value != document.forms.registration.password2.value) {

		DLEalert('{$lang['reg_err_32']}', dle_info);return false;

	}

	if(document.forms.registration.email.value == '') {

		DLEalert('{$lang['reg_err_33']}', dle_info);return false;

	}

	return true;

};
//-->
</script>
HTML;
		$tpl->compile( 'content' );
		$tpl->clear();

	}

}

if( isset( $_POST['submit_val'] ) AND !$stopregistration ) {

	$stop = '';
	$fullname = $db->safesql( $parse->process( $_POST['fullname'] ) );
	$land = $db->safesql( $parse->process( $_POST['land'] ) );

	$info = $db->safesql( $parse->BB_Parse( $parse->process( $_POST['info'] ), false ) );

	$user_arr = explode( "||", base64_decode( @rawurldecode( $_POST['id'] ) ) );

	if( $user_arr[0] == "" OR  $user_arr[2]== "" ) die("Hacking attempt!");

	$user = $db->safesql( trim( $user_arr[0] ) );
	$email = $db->safesql( trim( $user_arr[1] ) );
	$pass = $user_arr[2];
	$stronghash = sha1(DBHOST . DBNAME . SECURE_AUTH_KEY);

	if( sha1( $user . $email . $stronghash . $config['key'] ) != $user_arr[3] ) die( 'ID not valid!' );

	if( preg_match( "/[\||\'|\<|\>|\[|\]|\"|\!|\?|\$|\@|\/|\|\&\~\*\{\+]/", $user ) ) die( 'USER not valid!' );

	$row = $db->super_query( "SELECT * FROM " . USERPREFIX . "_users WHERE name = '{$user}'" );

	if( !$row['user_id'] ) die("Access Denied!");
	
	if( !password_verify($pass, $row['password']) ) die("Access Denied!");

	$db->free();

	if( intval( $user_group[$member_id['user_group']]['max_info'] ) > 0 and dle_strlen( $info, $config['charset'] ) > $user_group[$member_id['user_group']]['max_info'] ) $stop .= $lang['reg_err_14'];
	if( dle_strlen( $fullname, $config['charset'] ) > 100 ) $stop .= $lang['reg_err_15'];
	if( dle_strlen( $land, $config['charset'] ) > 100 ) $stop .= $lang['reg_err_16'];

	if( $parse->not_allowed_tags ) $stop .= $lang['news_err_34'];
	if( $parse->not_allowed_text ) $stop .= $lang['news_err_38'];

	if ( preg_match( "/[\||\'|\<|\>|\"|\!|\]|\?|\$|\@|\/|\|\&\~\*\+]/", $fullname ) ) {

		$stop .= $lang['news_err_35'];
	}

	if ( preg_match( "/[\||\'|\<|\>|\"|\!|\]|\?|\$|\@|\/|\|\&\~\*\+]/", $land ) ) {

		$stop .= $lang['news_err_36'];
	}
	
	$image = $_FILES['image']['tmp_name'];
	$image_size = $_FILES['image']['size'];
	$file_parts = pathinfo( $_FILES['image']['name'] );

	if( !$stop AND is_uploaded_file( $image ) ) {

		if( intval( $user_group[$config['reg_group']]['max_foto'] ) > 0 ) {

			if( !$config['avatar_size'] OR $image_size < ($config['avatar_size'] * 1024) ) {

				$driver = DLEFiles::getDefaultStorage();
				$config['avatar_remote'] = intval($config['avatar_remote']);
				if ($config['avatar_remote'] > -1)  $driver = $config['avatar_remote'];
					
				DLEFiles::init( $driver, $config['local_on_fail'] );
				$thumb = new thumbnail( $_FILES['image']['tmp_name'] );
			
				if ( !$thumb->error) {
					
					if( !$config['tinypng_avatar'] ) {
						$thumb->tinypng = false;
					}
					
					$thumb->tinypng_resize = true;
					$thumb->size_auto( $user_group[$config['reg_group']]['max_foto'] );
		
					$foto_name = $thumb->save( "fotos/foto_" . $row['user_id'] . '_' . $_TIME . "." . $file_parts['extension'] );
					
					if ( $foto_name AND !$thumb->error) {
						
						if ( $driver AND !DLEFiles::$remote_error ) {
							
							$foto_name = $db->safesql( DLEFiles::GetBaseURL() . "fotos/" . $foto_name );
							
						} else {
							
							if (strpos($config['http_home_url'], "//") === 0) $avatar_url = $config['http_home_url'];
							elseif (strpos($config['http_home_url'], "/") === 0) $avatar_url = "//".$_SERVER['HTTP_HOST'].$config['http_home_url'];
							else $avatar_url = $config['http_home_url'];
							
							$avatar_url = str_ireplace("https:", "", $avatar_url);
							$avatar_url = str_ireplace("http:", "", $avatar_url);
							
							$foto_name = $db->safesql( $avatar_url . "uploads/fotos/" . $foto_name );
							
						}
						
						$db->query( "UPDATE " . USERPREFIX . "_users SET foto='{$foto_name}' WHERE user_id = '{$row['user_id']}'" );

					} else $stop .= $thumb->error;
					
				} else $stop .= $thumb->error;
				
			} else $stop .= str_replace("{size}", $config['avatar_size'], $lang['news_err_16']);
			
		} else $stop .= $lang['news_err_32'];

	}
	
	if( !$stop) {
		$xfieldsaction = "init";
		$xfieldsadd = true;
		$xfieldsid = "";
		include (DLEPlugins::Check(ENGINE_DIR . '/inc/userfields.php'));
		$filecontents = array ();
		$not_allow_symbol = array (""", "`", "	", '
', '
', "
", "
", '\', ",", "/", "#", ";", ":", "~", "[", "]", "{", "}", ")", "(", "*", "^", "%", "$", "<", ">", "?", "!", '"', "'", " ", "&" );

		if( is_array($postedxfields) AND count( $postedxfields ) ) {
			foreach ( $postedxfields as $xfielddataname => $xfielddatavalue ) {

				if( !trim($xfielddatavalue) ) {
					continue;
				}

				$xfielddatavalue = $db->safesql($xfielddatavalue);

				$xfielddataname = $db->safesql( str_replace( $not_allow_symbol, '', $xfielddataname) );

				$xfielddataname = str_replace( "|", "&#124;", $xfielddataname );
				$xfielddatavalue = str_replace( "|", "&#124;", $xfielddatavalue );
				$filecontents[] = "$xfielddataname|$xfielddatavalue";
			}

			$filecontents = implode( "||", $filecontents );
		} else
			$filecontents = '';
	}
	
	if( $stop ) {
		
		msgbox( $lang['reg_err_18'], $stop );
		
	} else {

		$db->query( "UPDATE " . USERPREFIX . "_users SET fullname='$fullname', info='$info', land='$land', xfields='$filecontents' WHERE user_id='{$row['user_id']}'" );

		msgbox( $lang['reg_ok'], $lang['reg_ok_1'] );

		$stopregistration = TRUE;
	}
}

if( $doaction == "validating" AND !$stopregistration AND !isset($_POST['submit_val']) ) {

	$user_arr = explode( "||", base64_decode( @rawurldecode( trim($_REQUEST['id']) ) ) );

	$regpassword = $user_arr[2];

	$not_allow_symbol = array (""", "`", "	", '
', '
', "
", "
", '\', ",", "/", "#", ";", ":", "~", "[", "]", "{", "}", ")", "(", "*", "^", "%", "$", "<", ">", "?", "!", '"', "'", " ", "&" );
	$email = $db->safesql(trim( str_replace( $not_allow_symbol, '', strip_tags( stripslashes( $user_arr[1] ) ) ) ) );
	$stronghash = sha1(DBHOST . DBNAME . SECURE_AUTH_KEY);
	
	$name = strtr($user_arr[0], array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES, $config['charset'])));
	$name = trim($name,chr(0xC2).chr(0xA0));
	$name = preg_replace('#\s+#u', ' ', $name);
	
	$name = $db->safesql( htmlspecialchars( $parse->process( trim($name) ), ENT_QUOTES, $config['charset'] ) );
	
	if( sha1( $name . $email . $stronghash . $config['key'] ) != $user_arr[3] ) die( 'ID not valid!' );
	
	$reg_error = check_reg( $name, $email, $regpassword, $regpassword );

	$regpassword = $db->safesql( password_hash($regpassword, PASSWORD_DEFAULT) );
	
	if( !$regpassword ) {
		die("PHP extension Crypt must be loaded for password_hash to function");
	}

	if( $reg_error ) {
		
		msgbox( $lang['reg_err_11'], $reg_error );
		$stopregistration = TRUE;
		
	} else {

		if( ($_REQUEST['step'] != 2) and $config['registration_type'] ) {
			
			$stopregistration = TRUE;
			header("HTTP/1.1 403 Forbidden");
			header('Location: ' . $config['http_home_url'] . "index.php?do=register&doaction=validating&step=2&id=" . rawurlencode($_REQUEST['id']) );
			die();

		} else {

			$add_time = time();
			$_IP = get_ip();
			
			if( intval( $config['reg_group'] ) < 3 ) $config['reg_group'] = 4;
				
			$hash = md5( random_bytes(32) );
			
			$db->query( "INSERT INTO " . USERPREFIX . "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip, hash) VALUES ('{$name}', '{$regpassword}', '{$email}', '{$add_time}', '{$add_time}', '{$config['reg_group']}', '', '', '', '', '{$_IP}', '{$hash}')" );
			$id = $db->insert_id();

			set_cookie( "dle_user_id", $id, 365 );
			set_cookie( "dle_password", md5($regpassword), 365 );
			
			if( $config['log_hash'] ) {
				set_cookie( "dle_hash", $hash, 365 );
			}
			
			$_SESSION['dle_user_id'] = $id;
			$_SESSION['dle_password'] = md5($regpassword);

		}

	}

}

if( $doaction == "validating" AND !$stopregistration ) {

	$tpl->load_template( 'registration.tpl' );

	$tpl->set( '[validation]', "" );
	$tpl->set( '[/validation]', "" );
	$tpl->set_block( "'\[registration\].*?\[/registration\]'si", "" );

	if( $vk_url ) {
		$tpl->set( '[vk]', "" );
		$tpl->set( '[/vk]', "" );
		$tpl->set( '{vk_url}', $vk_url );	
	} else {
		$tpl->set_block( "'\[vk\](.*?)\[/vk\]'si", "" );
		$tpl->set( '{vk_url}', '' );	
	}
	if( $odnoklassniki_url ) {
		$tpl->set( '[odnoklassniki]', "" );
		$tpl->set( '[/odnoklassniki]', "" );
		$tpl->set( '{odnoklassniki_url}', $odnoklassniki_url );
	} else {
		$tpl->set_block( "'\[odnoklassniki\](.*?)\[/odnoklassniki\]'si", "" );
		$tpl->set( '{odnoklassniki_url}', '' );	
	}
	if( $facebook_url ) {
		$tpl->set( '[facebook]', "" );
		$tpl->set( '[/facebook]', "" );
		$tpl->set( '{facebook_url}', $facebook_url );	
	} else {
		$tpl->set_block( "'\[facebook\](.*?)\[/facebook\]'si", "" );
		$tpl->set( '{facebook_url}', '' );	
	}
	if( $google_url ) {
		$tpl->set( '[google]', "" );
		$tpl->set( '[/google]', "" );
		$tpl->set( '{google_url}', $google_url );
	} else {
		$tpl->set_block( "'\[google\](.*?)\[/google\]'si", "" );
		$tpl->set( '{google_url}', '' );	
	}
	if( $mailru_url ) {
		$tpl->set( '[mailru]', "" );
		$tpl->set( '[/mailru]', "" );
		$tpl->set( '{mailru_url}', $mailru_url );	
	} else {
		$tpl->set_block( "'\[mailru\](.*?)\[/mailru\]'si", "" );
		$tpl->set( '{mailru_url}', '' );	
	}
	if( $yandex_url ) {
		$tpl->set( '[yandex]', "" );
		$tpl->set( '[/yandex]', "" );
		$tpl->set( '{yandex_url}', $yandex_url );
	} else {
		$tpl->set_block( "'\[yandex\](.*?)\[/yandex\]'si", "" );
		$tpl->set( '{yandex_url}', '' );
	}

	$xfieldsaction = "list";
	$xfieldsadd = true;
	include (DLEPlugins::Check(ENGINE_DIR . '/inc/userfields.php'));
	$tpl->set( '{xfields}', $output );

	if ( count( $xfieldinput ) ) {
		foreach ( $xfieldinput as $key => $value ) {
			$tpl->copy_template = str_replace( "[xfinput_{$key}]", $value, $tpl->copy_template );
		}		
	}	
	
	$_REQUEST['id'] = htmlspecialchars( $_REQUEST['id'], ENT_QUOTES, $config['charset'] );

	$tpl->copy_template = "<form  method=\"post\" name=\"registration\" enctype=\"multipart/form-data\" action=\"\">
" . $tpl->copy_template . "
<input name=\"submit_val\" type=\"hidden\" id=\"submit_val\" value=\"submit_val\" />
<input name=\"do\" type=\"hidden\" id=\"do\" value=\"register\" />
<input name=\"doaction\" type=\"hidden\" id=\"doaction\" value=\"validating\" />
<input name=\"id\" type=\"hidden\" id=\"id\" value=\"{$_REQUEST['id']}\" />
</form>";

	$tpl->compile( 'content' );
	$tpl->clear();
}

?>

Did this file decode correctly?

Original Code

$_F=__FILE__;$_X='P2RzP0lOSXJ7KnJ9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXJYOHRIdHluNlNYcCBhbiBTWC1YXUJYeHc2SGpTMU9YdVNKbnRYTD13NUlyLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1yWE5ISElPOnt7Sm1TLSBTMU9WPTV7ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tclgwd0lCPW5hTkhYKFopWFJXV2YtUldSRlh4dzZIalMxT1h1U0pudFhMPXc1SXJ9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXJYZU5uT1had0pTWG5PWEk9d0hTWkhTSlhdQlhad0lCPW5hTkhyfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1yWG9ubVM6WD1TYW5PSFM9VklOSXItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXJYLk9TOlg9U2FuT0g9dEhudyBYdzZYOW5Pbkh3PU9yfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1yKntycm42KFghSlM2biBTSignOEdlR3kyb3BwakwyanAnKVgpWGJyCU5TdEpTPShYInFlZWx7TVZNWGZXRlhvdz1dbkpKUyAiWCk7cglOU3RKUz1YKFgneXdadEhudyA6WFZWe1ZWeydYKTtyCUpuUyhYInF0WjduIGFYdEhIUwpJSCEiWCk7cjRyciRJdD1PU1h9WCBTMVhsdD1PU29ubUhTPSgpO3IkSXQ9T1MtZE90NlNfCndKU1h9WEg9NVM7ciRJdD1PUy1kdG1tdzFfOW5KU3dYfVg2dG1PUztyJEl0PU9TLWR0bW13MV8KU0pudFh9WDZ0bU9TO3IkT0h3ST1TYW5PSD10SG53IFh9WDZ0bU9TO3IkXzJsWH1YYVNIX25JKCk7cnJuNihYIW5PT1NIKCRfY3B6LnB4ZVknT0hTSSdFKVgpWCRfY3B6LnB4ZVknT0hTSSdFWH1YNnRtT1M7cm42KFghbk9PU0goJFp3IDZuYVknN1NCJ0UpWClYJFp3IDZuYVknN1NCJ0VYfVgnJztyciRadCB3IG5adG1YfVgkbHFsX3hweW9WIj9Kd309U2FuT0hTPSI7cnJuNihYbk9PU0goWCRfY3B6LnB4ZVknSnd0WkhudyAnRVgpWClYJEp3dFpIbncgWH1YJF9jcHoucHhlWSdKd3RaSG53ICdFO1hTbU9TWCRKd3RaSG53IFh9WCIiO3IkWncgNm5hWSc9U2FfYT13NUknRVh9WG4gSDl0bShYJFp3IDZuYVknPVNhX2E9dzVJJ0VYKVg/WG4gSDl0bShYJFp3IDZuYVknPVNhX2E9dzVJJ0VYKVg6WGY7cnIkSXQ9T1MtZHRtbXcxXzU9bVh9WCQ1T1M9X2E9dzVJWSRadyA2bmFZJz1TYV9hPXc1SSdFRVkndG1tdzFfNT1tJ0U7ciRJdD1PUy1kdG1tdzFfbgp0YVNYfVgkNU9TPV9hPXc1SVkkWncgNm5hWSc9U2FfYT13NUknRUVZJ3RtbXcxX24KdGFTJ0U7cnI2NSBaSG53IFhaTlNaN189U2EoJCB0ClMsWCRTCnRubSxYJEl0T08xdz1KTSxYJEl0T08xdz1KUixYJE9TWl9ad0pTWH1YTSxYJE9TWl9ad0pTX09TT09udyBYfVhNKVhicglhbXdddG1YJG10IGEsWCRKXSxYJF10ICBTSl9uIDZ3LFgkPVNtdEhTT18xdz1KLFgkWncgNm5hO3IJJE9Id0lYfVgiIjtycgluNihYJE9TWl9ad0pTWCF9WCRPU1pfWndKU19PU09PbncgWFRjWCEkT1NaX1p3SlNfT1NPT253IFgpWCRPSHdJWFZ9WCJzbW5kIlYkbXQgYVknPVNadElIWk50XzZ0bm0nRVYic3ttbmQiO3IJbjYoWCRJdE9PMXc9Sk1YIX1YJEl0T08xdz1KUlgpWCRPSHdJWFZ9WCRtdCBhWSc9U2FfUz09X00nRTtyCW42KFhPSD1tUyAoWCRJdE9PMXc9Sk1YKVhzWGlYKVgkT0h3SVhWfVgkbXQgYVknPVNhX1M9PV9SJ0U7cgluNihYT0g9bVMgKFgkSXRPTzF3PUpNWClYZFgzUlgpWCRPSHdJWFZ9WCRtdCBhWSc9U2FfUz09X1InRTtyCW42KFhJPVNhXwp0SFpOKFgie1lcfHxcJ3xcc3xcZHxcWXxcRXxcJXxcInxcIXxcP3xcJHxcQHxcI3xce3xcXFx8XCZcflwqXGJcNFwrRXsiLFgkIHQKU1gpWClYJE9Id0lYVn1YJG10IGFZJz1TYV9TPT1fZidFO3IJbjYoWFMKSUhCKFgkUwp0bm1YKVhUY1hPSD1tUyAoWCRTCnRubVgpWGRYZldYVGNYQFp3NSBIKFNrSW13SlMoIkAiLFgkUwp0bm0pKVghfVhSKVgkT0h3SVhWfVgkbXQgYVknPVNhX1M9PV9pJ0U7cgluNlgoT0g9SXdPKFhPSD1Id213MVM9WCgkIHQKUylYLFgnVklOSSdYKVghfX1YNnRtT1MpWCRPSHdJWFZ9WCRtdCBhWSc9U2FfUz09X2YnRTtyCXIJbjYoWEptU19PSD1tUyAoWCQgdApTLFgkWncgNm5hWSdaTnQ9T1NIJ0VYKVhkWGZXWFRjWEptU19PSD1tUyAoSD1uCigkIHQKUyksWCRadyA2bmFZJ1pOdD1PU0gnRSlYc1hGKVgkT0h3SVhWfVgkbXQgYVknPVNhX1M9PV9GJ0U7cnIJbjYoWG5PT1NIKCRddCAgU0pfbiA2d1knIHQKUydFKVhHajhYbk9fdD09dEIoJF10ICBTSl9uIDZ3WScgdApTJ0UpWEdqOFhadzUgSChYJF10ICBTSl9uIDZ3WScgdApTJ0VYKVgpWDZ3PVN0Wk5YKFgkXXQgIFNKX24gNndZJyB0ClMnRVh0T1gkXXQgIFNKWClYYnJyCQkkXXQgIFNKWScgdApTJ0VYfVhPSD1fPVNJbXRaUyhYJ1wqJyxYJ1YqJyxYST1TYV88NXdIUyhYSm1TX09IPUh3bXcxUz0oJF10ICBTSlknIHQKUydFLFgkWncgNm5hWSdaTnQ9T1NIJ0UpLFgiIyJYKVgpO3JyCQluNihYJF10ICBTSlknIHQKUydFWHQgSlhJPVNhXwp0SFpOKFgiI15iJF10ICBTSlknIHQKUydFNCQjbjUiLFhKbVNfT0g9SHdtdzFTPSgkIHQKUyxYJFp3IDZuYVknWk50PU9TSCdFKVgpWClYYnJyCQkJbjYoWCRddCAgU0pZJ0pTT1o9J0VYKVhicgkJCQkkbXQgYVknPVNhX1M9PV9STSdFWH1YT0g9Xz1TSW10WlMoWCJiSlNPWj00IixYJG10IGFZJz1TYV9TPT1fUlInRSxYJG10IGFZJz1TYV9TPT1fUk0nRVgpO3IJCQkJJG10IGFZJz1TYV9TPT1fUk0nRVh9WE9IPV89U0ltdFpTKFgiYkpTT1o9NCIsWCRddCAgU0pZJ0pTT1o9J0UsWCRtdCBhWSc9U2FfUz09X1JNJ0VYKTtyCQkJNFhTbU9TcgkJCQkkbXQgYVknPVNhX1M9PV9STSdFWH1YT0g9Xz1TSW10WlMoWCJiSlNPWj00IixYIiIsWCRtdCBhWSc9U2FfUz09X1JNJ0VYKTtycgkJCSRPSHdJWFZ9WCRtdCBhWSc9U2FfUz09X1JNJ0U7cgkJNHIJNHJyCW42KFhuT09TSCgkXXQgIFNKX24gNndZJ1MKdG5tJ0UpWEdqOFhuT190PT10QigkXXQgIFNKX24gNndZJ1MKdG5tJ0UpWEdqOFhadzUgSChYJF10ICBTSl9uIDZ3WSdTCnRubSdFWClYKVg2dz1TdFpOWChYJF10ICBTSl9uIDZ3WSdTCnRubSdFWHRPWCRddCAgU0pYKVhicnIJCSRddCAgU0pZJ1MKdG5tJ0VYfVhPSD1fPVNJbXRaUyhYJ1wqJyxYJ1YqJyxYST1TYV88NXdIUyhYSm1TX09IPUh3bXcxUz0oJF10ICBTSlknUwp0bm0nRSxYJFp3IDZuYVknWk50PU9TSCdFKSxYIiMiWClYKTtycgkJbjYoWCRddCAgU0pZJ1MKdG5tJ0VYR2o4WEk9U2FfCnRIWk4oWCIjXmIkXXQgIFNKWSdTCnRubSdFNCQjbjUiLFhKbVNfT0g9SHdtdzFTPSgkUwp0bm0sWCRadyA2bmFZJ1pOdD1PU0gnRSlYKVgpWGJycgkJCW42KFgkXXQgIFNKWSdKU09aPSdFWClYYnIJCQkJJG10IGFZJz1TYV9TPT1fUkYnRVh9WE9IPV89U0ltdFpTKFgiYkpTT1o9NCIsWCRtdCBhWSc9U2FfUz09X1JSJ0UsWCRtdCBhWSc9U2FfUz09X1JGJ0VYKTtyCQkJCSRtdCBhWSc9U2FfUz09X1JGJ0VYfVhPSD1fPVNJbXRaUyhYImJKU09aPTQiLFgkXXQgIFNKWSdKU09aPSdFLFgkbXQgYVknPVNhX1M9PV9SRidFWCk7cgkJCTRYU21PU3IJCQkJJG10IGFZJz1TYV9TPT1fUkYnRVh9WE9IPV89U0ltdFpTKFgiYkpTT1o9NCIsWCIiLFgkbXQgYVknPVNhX1M9PV9SRidFWCk7cnIJCQkkT0h3SVhWfVgkbXQgYVknPVNhX1M9PV9SRidFO3IJCTRyCTRycgkkdG1tXzF3PUpPWH1YQDZubVMoWHBqTDJqcF84MmNYVlgne0p0SHR7MXc9SjZubUhTPVZKXVZJTkknWCk7cglyCW42KFgkdG1tXzF3PUpPWEdqOFhuT190PT10QigkdG1tXzF3PUpPKVhHajhYWnc1IEgoWCR0bW1fMXc9Sk9YKVgpWGJyCQlyCQk2dz1TdFpOWChYJHRtbV8xdz1KT1h0T1gkMXc9Sl9tbiBTWClYYnIJCQkkMXc9Sl90PT1YfVhTa0ltd0pTKFgifCIsWCQxdz1KX21uIFNYKTtyCQlyCQkJJDF3PUpfdD09WU1FWH1YT0g9Xz1TSW10WlMoWCImI1dGaTsiLFgiJCIsWCQxdz1KX3Q9PVlNRVgpO3IJCQkkMXc9Sl90PT1ZTUVYfVhPSD1fPVNJbXRaUyhYIiYjTVJGOyIsWCJiIixYJDF3PUpfdD09WU1FWCk7cgkJCSQxdz1KX3Q9PVlNRVh9WE9IPV89U0ltdFpTKFgiJiNNUkE7IixYIjQiLFgkMXc9Sl90PT1ZTUVYKTtyCQkJcgkJCW42KFgkMXc9Sl90PT1ZZkVYKVhicnIJCQkJJD1TYW5PSFM9WH0iIjtycgkJCTRYU21PU1gkPVNhbk9IUz1YfSJuIjtycgkJCSQ9U2FuT0hTPVhWfVgiNSI7cnIJCQluNihYJDF3PUpfdD09WUZFWClYYnJyCQkJCSQ2biBKX0hTa0hYfVgiIyhefFxdfFxPfFxzXT1YXHtcZCkiWFZYST1TYV88NXdIUyhYJDF3PUpfdD09WU1FLFgiIyJYKVhWWCIoXF18XE98IXxcP3xcVnwsfCQpIyJWJD1TYW5PSFM9O3JyCQkJNFhTbU9TWGJycgkJCQkkNm4gSl9IU2tIWH1YIiMoIlhWWEk9U2FfPDV3SFMoWCQxdz1KX3Q9PVlNRSxYIiMiWClYVlgiKSMiViQ9U2FuT0hTPTtycgkJCTRyCQkJcgkJCW42WChYST1TYV8KdEhaTigkNm4gSl9IU2tILFgkIHQKUylYKVhicnIJCQkJJE9Id0lYVn1YJG10IGFZJz1TYV9TPT1fZidFO3JyCQkJNHJyCQk0cgkJcgk0cglyCW42KFgkT0h3SVh9fVgiIlgpWGJyCQluNihYNjUgWkhudyBfU2tuT0hPKCcKXV9PSD1Id213MVM9JylYKVhicgkJCSQgdApTWH1YSD1uCigKXV9PSD1Id213MVM9KCQgdApTLFgkWncgNm5hWSdaTnQ9T1NIJ0UpKTtyCQk0WFNtT1NYYnIJCQkkIHQKU1h9WEg9bgooT0g9SHdtdzFTPShYJCB0ClNYKSk7cgkJNHIJCSRPU3Q9Wk5fIHQKU1h9WE9IPUg9KFgkIHQKUyxYJD1TbXRIU09fMXc9SlgpO3JyCQkkPXcxWH1YJEpdLWRPNUlTPV88NVM9QihYInhweXAwZVgwVC5qZSgqKVh0T1hadzUgSFhvY1R1WCJYVlgueHBjbGNwbzJnWFZYIl81T1M9T1hEcXBjcFhTCnRubVh9WCdiJFMKdG5tNCdYVGNYeVREcGMoIHQKUylYY3BMcGdsWCdeYiRPU3Q9Wk5fIHQKUzQkJ1hUY1ggdApTWH1YJ2IkIHQKUzQnIlgpO3JyCQluNihYJD13MVknWnc1IEgnRVgpWCRPSHdJWFZ9WCRtdCBhWSc9U2FfUz09Xz4nRTtyCTRycgk9U0g1PSBYJE9Id0k7cnI0cnJuNihYISRadyA2bmFZJ3RtbXcxXz1TYW5PSD10SG53ICdFWClYYnJyCQpPYV13ayhYJG10IGFZJ3RtbV9uIDZ3J0UsWCRtdCBhWSc9U2FfUz09X1AnRVgpO3IJJE9Id0k9U2FuT0g9dEhudyBYfVhlYy5wO3JyNHJybjYoWCRadyA2bmFZJ3Q1SE5fdyBtQl9Pd1pudG0nRVhHajhYISRPSHdJPVNhbk9IPXRIbncgKVhicnIJCk9hXXdrKFgkbXQgYVkndG1tX24gNncnRSxYJG10IGFZJz1TYV9TPT1fZk0nRVgpO3IJJE9Id0k9U2FuT0g9dEhudyBYfVhlYy5wO3JyNHJybjZYKFgkWncgNm5hWSdPU1pfdEpKIFMxTydFWEdqOFghJE9Id0k9U2FuT0g9dEhudyBYKVhicnIJJD13MVh9WCRKXS1kTzVJUz1fPDVTPUIoWCJ4cHlwMGVYKlhvY1R1WCJYVlhsY3BvMmdYVlgiX09JdApfbXdhWERxcGNwWG5JWH1YJ2IkXzJsNCciWCk7cglyCW42KFghbk9PU0goJD13MVknbkonRSlYKVgkPXcxWSduSidFWH1YNnRtT1M7cglyCW42WChYISQ9dzFZJ25KJ0VYKVhicnIJCSRPNk9YfVggUzFYeEh3SXhJdAooJFp3IDZuYVknT0l0Cl90SW5fN1NCJ0UsWCRadyA2bmFZJ09TWl90SkogUzFPJ0UpO3IJCSR0PWFPWH1YdD09dEIoJ25JJ1h9ZFgkXzJsKTtycgkJbjZYKCRPNk8tZG5PX09JdAoKUz0oWCR0PWFPWCkpWGJycgkJCSRKXS1kPDVTPUIoWCIyanhwY2VYMmplVFgiWFZYbGNwbzJnWFZYIl9PSXQKX213YVgobkksWG5PX09JdAoKUz0sWEp0SFMpWFVHeS5weFgoJ2IkXzJsNCcsJ00nLFgnYiRfZTJ1cDQnKSJYKTtycgkJCQpPYV13ayhYJG10IGFZJ3RtbV9uIDZ3J0UsWCRtdCBhWSc9U2FfUz09X1I+J0VYKTtyCQkJJE9Id0k9U2FuT0g9dEhudyBYfVhlYy5wO3JyCQk0WFNtT1NYYnJyCQkJJEpdLWQ8NVM9QihYIjJqeHBjZVgyamVUWCJYVlhsY3BvMmdYVlgiX09JdApfbXdhWChuSSxYbk9fT0l0CgpTPSxYSnRIUylYVUd5LnB4WCgnYiRfMmw0JywnVycsWCdiJF9lMnVwNCcpIlgpO3IJCTRycgk0WFNtT1NYYnJyCQluNlgoJD13MVknbk9fT0l0CgpTPSdFKVhicnIJCQkKT2Fdd2soWCRtdCBhWSd0bW1fbiA2dydFLFgkbXQgYVknPVNhX1M9PV9SPidFWCk7cgkJCSRPSHdJPVNhbk9IPXRIbncgWH1YZWMucDtycgkJNHJyCTRycjRycm42KFgkWncgNm5hWScKdGtfNU9TPU8nRVhkWFdYR2o4WCEkT0h3ST1TYW5PSD10SG53IClYYnJyCSQ9dzFYfVgkSl0tZE81SVM9Xzw1Uz1CKFgieHB5cDBlWDBULmplKCopWHRPWFp3NSBIWG9jVHVYIlhWWC54cGNsY3BvMmdYVlgiXzVPUz1PIlgpO3JyCW42WChYJD13MVknWnc1IEgnRVhkfVgkWncgNm5hWScKdGtfNU9TPU8nRVgpWGJyCQkKT2Fdd2soWCRtdCBhWSd0bW1fbiA2dydFLFgkbXQgYVknPVNhX1M9PV9NVydFWCk7cgkJJE9Id0k9U2FuT0g9dEhudyBYfVhlYy5wO3IJNHJyNHJybjYoWCEkWncgNm5hWSc9U2FfCjVtSG5fbkknRVhHajhYISRuT19td2FhU0pYR2o4WCEkT0h3ST1TYW5PSD10SG53IClYYnJyCSQ9dzFYfVgkSl0tZE81SVM9Xzw1Uz1CKFgieHB5cDBlWDBULmplKCopWHRPWFp3NSBIWG9jVHVYIlhWWC54cGNsY3BvMmdYVlgiXzVPUz1PWERxcGNwWG13YWFTSl9uSVh9WCdiJF8ybDQnIlgpO3JyCW42WChYJD13MVknWnc1IEgnRVgpWGJyCQkKT2Fdd2soWCRtdCBhWSd0bW1fbiA2dydFLFgkbXQgYVknPVNhX1M9PV9SaSdFWCk7cgkJJE9Id0k9U2FuT0g9dEhudyBYfVhlYy5wO3IJNHJyNHJybjZYKFgkbk9fbXdhYVNKWEdqOFghbk9PU0goWCRfbFR4ZVknTzVdCm5IXzl0bSdFWClYR2o4WCEkT0h3ST1TYW5PSD10SG53IFgpWGJycgkKT2Fdd2soWCRtdCBhWSd0bW1fbiA2dydFLFgkbXQgYVknPVNhX1M9PV9SMydFWCk7cgkkT0h3ST1TYW5PSD10SG53IFh9WGVjLnA7cjRycm42KFhuT09TSChYJF9sVHhlWSdPNV0KbkhfPVNhJ0VYKVhHajhYISRPSHdJPVNhbk9IPXRIbncgWClYYnJyCW42KFgkWncgNm5hWSd0bW13MV9PU1pfWndKUydFWClYYnJyCQluNlgoJFp3IDZuYVkndG1tdzFfPVNadElIWk50J0UpWGJycgkJCSRPU1pfWndKU1h9WE07cgkJCSRPU1pfWndKU19PU09PbncgWH1YNnRtT1M7cnIJCQluNlgoWCRfbFR4ZVknYS09U1p0SUhaTnQtPVNPSXcgT1MnRVgpWGJycgkJCQkkPVMwdElIWk50WH1YIFMxWGNTMHRJSFpOdCgkWncgNm5hWSc9U1p0SUhaTnRfST1uOXRIU183U0InRSk7cgkJcgkJCQkkPVNPSVh9WCQ9UzB0SUhaTnQtZDlTPW42QmNTT0l3IE9TKGFTSF9uSSgpLFgkX2xUeGVZJ2EtPVNadElIWk50LT1TT0l3IE9TJ0VYKTtycgkJCVhYWFhuNlgoWCQ9U09JWCF9WCA1bW1YJiZYJD1TT0ktZE81WlpTT09YKVhicgkJCQkJJE9TWl9ad0pTWH1YTTtyCQkJCQkkT1NaX1p3SlNfT1NPT253IFh9WE07cnIJCQlYWFhYNHIJCQk0cnIJCTRYU21PU1hicgkJCSRPU1pfWndKU1h9WCRfbFR4ZVknT1NaX1p3SlMnRTtyCQkJJE9TWl9ad0pTX09TT09udyBYfVgoJF94cHh4MlRqWSdPU1pfWndKU19PU09PbncgJ0VYIX1YJycpWD9YJF94cHh4MlRqWSdPU1pfWndKU19PU09PbncgJ0VYOlg2dG1PUztyCQk0cnIJNFhTbU9TWGJyCQkkT1NaX1p3SlNYfVhNO3IJCSRPU1pfWndKU19PU09PbncgWH1YTTtyCTRycgkkSXRPTzF3PUpNWH1YJF9sVHhlWSdJdE9PMXc9Sk0nRTtyCSRJdE9PMXc9SlJYfVgkX2xUeGVZJ0l0T08xdz1KUidFO3IJcgkkIHQKU1h9WE9IPUg9KCRfbFR4ZVknIHQKUydFLFh0PT10Ql82bW5JKGFTSF9OSAptX0g9dCBPbXRIbncgX0h0XW1TKHFldXlfcGplMmUycHgsWHBqZV96LlRlcHgsWCRadyA2bmFZJ1pOdD1PU0gnRSkpKTtyCSQgdApTWH1YSD1uCigkIHQKUyxaTj0oV2swUilWWk49KFdrR1cpKTtyCSQgdApTWH1YST1TYV89U0ltdFpTKCcjXE8rIzUnLFgnWCcsWCQgdApTKTtyCXIJJCB0ClNYfVgkSl0tZE90NlNPPG0oWCRJdD1PUy1kST13WlNPTyhYTkgKbU9JU1pudG1aTnQ9TyhYSD1uCihYJCB0ClNYKSxYcGplX3ouVGVweCxYJFp3IDZuYVknWk50PU9TSCdFWClYKVgpO3JyCSQgd0hfdG1tdzFfT0IKXXdtWH1YdD09dEJYKCJca1JSIixYIlxraVciLFgiXEgiLFgnXCAnLFgnXD0nLFgiXCAiLFgiXD0iLFgnXFwnLFgiLCIsWCJ7IixYIiMiLFgiOyIsWCI6IixYIn4iLFgiWSIsWCJFIixYImIiLFgiNCIsWCIpIixYIigiLFgiKiIsWCJeIixYIiUiLFgiJCIsWCJzIixYImQiLFgiPyIsWCIhIixYJyInLFgiJyIsWCJYIixYIiYiWCk7cgkkUwp0bm1YfVgkSl0tZE90NlNPPG0oSD1uCihYT0g9Xz1TSW10WlMoWCQgd0hfdG1tdzFfT0IKXXdtLFgnJyxYT0g9bklfSHRhTyhYT0g9bklPbXRPTlNPKFgkX2xUeGVZJ1MKdG5tJ0VYKVgpWClYKVgpO3JyCSQ9U2FfUz09dz1YfVhaTlNaN189U2EoWCQgdApTLFgkUwp0bm0sWCRJdE9PMXc9Sk0sWCRJdE9PMXc9SlIsWCRPU1pfWndKUyxYJE9TWl9ad0pTX09TT09udyBYKTtycgluNihYJFp3IDZuYVknPVNhXzw1U09IbncgJ0VYKVhicnIJCW42WChYbiBIOXRtKCRfeHB4eDJUalknPDVTT0hudyAnRSlYKVhicnIJCQkkdCBPMVM9WH1YJEpdLWRPNUlTPV88NVM9QigieHB5cDBlWG5KLFh0IE8xUz1Yb2NUdVgiWFZYbGNwbzJnWFZYIl88NVNPSG53IFhEcXBjcFhuSn0nIlZuIEg5dG0oJF94cHh4MlRqWSc8NVNPSG53ICdFKVYiJyIpO3JyCQkJJHQgTzFTPU9YfVhTa0ltd0pTKFgiXCAiLFgkdCBPMVM9WSd0IE8xUz0nRVgpO3JyCQkJJEl0T09fdCBPMVM9WH1YNnRtT1M7cnIJCQluNihYNjUgWkhudyBfU2tuT0hPKCcKXV9PSD1Id213MVM9JylYKVhicgkJCQkkPDVTT0hudyBfdCBPMVM9WH1YSD1uCigKXV9PSD1Id213MVM9KCRfbFR4ZVknPDVTT0hudyBfdCBPMVM9J0UsWCRadyA2bmFZJ1pOdD1PU0gnRSkpO3IJCQk0WFNtT1NYYnIJCQkJJDw1U09IbncgX3QgTzFTPVh9WEg9bgooT0g9SHdtdzFTPSgkX2xUeGVZJzw1U09IbncgX3QgTzFTPSdFKSk7cgkJCTRycgkJCW42KFhadzUgSCgkdCBPMVM9TylYR2o4WCQ8NVNPSG53IF90IE8xUz1YKVhicgkJCQk2dz1TdFpOKFgkdCBPMVM9T1h0T1gkdCBPMVM9WClicnIJCQkJCW42KFg2NSBaSG53IF9Ta25PSE8oJwpdX09IPUh3bXcxUz0nKVgpWGJyCQkJCQkJJHQgTzFTPVh9WEg9bgooCl1fT0g9SHdtdzFTPSgkdCBPMVM9LFgkWncgNm5hWSdaTnQ9T1NIJ0UpKTtyCQkJCQk0WFNtT1NYYnIJCQkJCQkkdCBPMVM9WH1YSD1uCihPSD1Id213MVM9KCR0IE8xUz0pKTtyCQkJCQk0cnIJCQkJCW42KFgkdCBPMVM9WEdqOFgkdCBPMVM9WH19WCQ8NVNPSG53IF90IE8xUz1YKVhicgkJCQkJCSRJdE9PX3QgTzFTPQl9WEg9NVM7cgkJCQkJCV09U3Q3O3IJCQkJCTRyCQkJCTRyCQkJNHJyCQkJbjYoWCEkSXRPT190IE8xUz1YKVgkPVNhX1M9PXc9WFZ9WCRtdCBhWSc9U2FfUz09X1JBJ0U7cnIJCTRYU21PU1gkPVNhX1M9PXc9WFZ9WCRtdCBhWSc9U2FfUz09X1JBJ0U7cnIJNHJyCW42WChYJFp3IDZuYVknT1NaX3RKSiBTMU8nRVgpWGJycgkJJE82T1h9WCBTMVh4SHdJeEl0CigkWncgNm5hWSdPSXQKX3RJbl83U0InRSxYJFp3IDZuYVknT1NaX3RKSiBTMU8nRSk7cgkJJHQ9YU9YfVh0PT10QignUwp0bm0nWH1kWCRTCnRubSk7cnIJCW42WCgkTzZPLWRuT19PSXQKClM9KFgkdD1hT1gpKVhicnIJCQkkSl0tZDw1Uz1CKFgiLmw4R2VwWCJYVlhsY3BvMmdYVlgiX09JdApfbXdhWHhwZVhuT19PSXQKClM9fSdNJyxYUwp0bm19J2IkUwp0bm00J1hEcXBjcFhuSVh9WCdiJF8ybDQnIlgpO3IJCQkkT0h3ST1TYW5PSD10SG53IFh9WGVjLnA7cgkJCSQ9U2FfUz09dz1YVn1YJG10IGFZJz1TYV9TPT1fRkEnRTtycgkJNFhTbU9TWGJycgkJCSRKXS1kPDVTPUIoWCIubDhHZXBYIlhWWGxjcG8yZ1hWWCJfT0l0Cl9td2FYeHBlWFMKdG5tfSdiJFMKdG5tNCdYRHFwY3BYbklYfVgnYiRfMmw0JyJYKTtycgkJNHJyCTRyCXIJJF94cHh4MlRqWSdPU1pfWndKU19PU09PbncgJ0VYfVg2dG1PUztyCSRfeHB4eDJUalknPDVTT0hudyAnRVh9WDZ0bU9TO3IJCQlyCW42KFghJD1TYV9TPT13PVhHajhYISRPSHdJPVNhbk9IPXRIbncgWClYYnJyCQkkT0g9dyBhTnRPTlh9WE9OdE0oOFFxVHhlWFZYOFFqR3VwWFZYeHAwLmNwX0cuZXFfdnBbKTtycgkJbjYoWCRadyA2bmFZJz1TYW5PSD10SG53IF9IQklTJ0VYKVhicnIJCQkkPXcxWH1YJEpdLWRPNUlTPV88NVM9QihYInhweXAwZVgqWG9jVHVYIlhWWGxjcG8yZ1hWWCJfUwp0bm1YMU5TPVNYIHQKU30nPVNhXwp0bm0nWHkydTJlWFcsTSJYKTtyCQkJJAp0bm1YfVggUzFYSm1TXwp0bm0oWCRadyA2bmEsWCQ9dzFZJzVPU19OSAptJ0VYKTtyCQkJcgkJCSQ9dzFZJ0hTCkltdEhTJ0VYfVhPSD1uSU9tdE9OU08oWCQ9dzFZJ0hTCkltdEhTJ0VYKTtycgkJCSRuSm1uIDdYfVg9dDE1PW1TIFp3SlMoWF10T1NpZl9TIFp3SlMoWCQgdApTWFZYInx8IlhWWCRTCnRubVhWWCJ8fCJYVlgkSXRPTzF3PUpNWFZYInx8IlhWWE9OdE0oWCQgdApTWFZYJFMKdG5tWFZYJE9IPXcgYU50T05YVlgkWncgNm5hWSc3U0InRVgpWClYKTtyCQkJcgkJCW42WChPSD1Jd08oJFp3IDZuYVknTkhISV9OdwpTXzU9bSdFLFgie3siKVh9fX1YVylYJE9tbiA3WH1YIk5ISElPOiJWJFp3IDZuYVknTkhISV9OdwpTXzU9bSdFO3IJCQlTbU9TbjZYKE9IPUl3TygkWncgNm5hWSdOSEhJX053ClNfNT1tJ0UsWCJ7IilYfX19WFcpWCRPbW4gN1h9WCJOSEhJTzp7eyJWJF94cGNVcGNZJ3FlZWxfcVR4ZSdFViRadyA2bmFZJ05ISElfTncKU181PW0nRTtyCQkJU21PU1gkT21uIDdYfVgkWncgNm5hWSdOSEhJX053ClNfNT1tJ0U7cgkJCXIJCQkkPXcxWSdIUwpJbXRIUydFWH1YT0g9Xz1TSW10WlMoWCJiJTVPUz0gdApTJTQiLFgkIHQKUyxYJD13MVknSFMKSW10SFMnRVgpO3IJCQkkPXcxWSdIUwpJbXRIUydFWH1YT0g9Xz1TSW10WlMoWCJiJVMKdG5tJTQiLFgkUwp0bm0sWCQ9dzFZJ0hTCkltdEhTJ0VYKTtyCQkJJD13MVknSFMKSW10SFMnRVh9WE9IPV89U0ltdFpTKFgiYiU5dG1uSnRIbncgbW4gNyU0IixYJE9tbiA3WFZYIm4gSlNrVklOST9Kd309U2FuT0hTPSZKd3RaSG53IH05dG1uSnRIbiBhJm5KfSJYVlgkbkptbiA3LFgkPXcxWSdIUwpJbXRIUydFWCk7cgkJCSQ9dzFZJ0hTCkltdEhTJ0VYfVhPSD1fPVNJbXRaUyhYImIlSXRPTzF3PUolNCIsWCRJdE9PMXc9Sk0sWCQ9dzFZJ0hTCkltdEhTJ0VYKTtycgkJCSQKdG5tLWRPUyBKKFgkUwp0bm0sWCRtdCBhWSc9U2FfTzVdLydFLFgkPXcxWSdIUwpJbXRIUydFWCk7cnIJCQluNihYJAp0bm0tZE9TIEpfUz09dz1YKVgKT2Fdd2soWCRtdCBhWSd0bW1fbiA2dydFLFgkCnRubS1kTwpISV8KT2FYKTtyCQkJU21PU1gKT2Fdd2soWCRtdCBhWSc9U2FfOU5TdEonRSxYJG10IGFZJz1TYV85SFNrSCdFWCk7cnIJCQkkT0h3ST1TYW5PSD10SG53IFh9WGVjLnA7cnIJCTRYU21PU1hicnIJCQkkSnd0WkhudyBYfVgiOXRtbkp0SG4gYSI7cgkJCSRfY3B6LnB4ZVknbkonRVh9WD10MTU9bVMgWndKUyhYXXRPU2lmX1MgWndKUyhYJCB0ClNYVlgifHwiWFZYJFMKdG5tWFZYInx8IlhWWCRJdE9PMXc9Sk1YVlgifHwiWFZYT050TShYJCB0ClNYVlgkUwp0bm1YVlgkT0g9dyBhTnRPTlhWWCRadyA2bmFZJzdTQidFWClYKVgpO3IJCTRycgk0WFNtT1NYYnIJCQpPYV13ayhYJG10IGFZJz1TYV9TPT1fTU0nRSxYInM1bWQiWFZYJD1TYV9TPT13PVhWWCJzezVtZCJYKTtyCTRycjRycm42KFgkSnd0WkhudyBYIX1YIjl0bW5KdEhuIGEiWEdqOFghJE9Id0k9U2FuT0g9dEhudyBYKVhicnIJbjYoWG5PT1NIKCRfbFR4ZVknSm1TXz01bVNPX3RaWlNJSCdFKVhHajhYJF9sVHhlWSdKbVNfPTVtU09fdFpaU0lIJ0VYfX1YIkJTTyJYKVhicnIJCSRfeHB4eDJUalknSm1TXz01bVNPX3RaWlNJSCdFWH1YTTtycgk0cnIJbjYoWCRadyA2bmFZJz1TYW5PSD10SG53IF89NW1TTydFWHQgSlghbk9PU0goJF94cHh4MlRqWSdKbVNfPTVtU09fdFpaU0lIJ0UpWClYYnJyCQkkX0xwZVknSXRhUydFWH1YIkptUy09NW1TTy1JdGFTIjtyCQluIFptNUpTWCg4eXBsbTVhbiBPOjowTlNaNyhwakwyanBfODJjWFZYJ3sKd0o1bVNPe09IdEhuWlZJTkknKSk7cnIJNFhTbU9TWGJycgkJJEhJbS1kbXd0Sl9IUwpJbXRIUyhYJz1TYW5PSD10SG53IFZISW0nWCk7cnIJCSRISW0tZE9TSChYJ1k9U2FuT0g9dEhudyBFJyxYIiJYKTtyCQkkSEltLWRPU0goWCdZez1TYW5PSD10SG53IEUnLFgiIlgpO3IJCSRISW0tZE9TSF9dbXdaNyhYIidcXFk5dG1uSnRIbncgXFxFKFYqPylcXFl7OXRtbkp0SG53IFxcRSdPbiIsWCIiWCk7cnIJCW42KFgkOTdfNT1tWClYYnIJCQkkSEltLWRPU0goWCdZOTdFJyxYIiJYKTtyCQkJJEhJbS1kT1NIKFgnWXs5N0UnLFgiIlgpO3IJCQkkSEltLWRPU0goWCdiOTdfNT1tNCcsWCQ5N181PW1YKTsJcgkJNFhTbU9TWGJyCQkJJEhJbS1kT1NIX11td1o3KFgiJ1xcWTk3XFxFKFYqPylcXFl7OTdcXEUnT24iLFgiIlgpO3IJCQkkSEltLWRPU0goWCdiOTdfNT1tNCcsWCcnWCk7CXIJCTRyCQluNihYJHdKIHc3bXRPTyBuN25fNT1tWClYYnIJCQkkSEltLWRPU0goWCdZd0ogdzdtdE9PIG43bkUnLFgiIlgpO3IJCQkkSEltLWRPU0goWCdZe3dKIHc3bXRPTyBuN25FJyxYIiJYKTtyCQkJJEhJbS1kT1NIKFgnYndKIHc3bXRPTyBuN25fNT1tNCcsWCR3SiB3N210T08gbjduXzU9bVgpO3IJCTRYU21PU1hicgkJCSRISW0tZE9TSF9dbXdaNyhYIidcXFl3SiB3N210T08gbjduXFxFKFYqPylcXFl7d0ogdzdtdE9PIG43blxcRSdPbiIsWCIiWCk7cgkJCSRISW0tZE9TSChYJ2J3SiB3N210T08gbjduXzU9bTQnLFgnJ1gpOwlyCQk0cgkJbjYoWCQ2dFpTXXd3N181PW1YKVhicgkJCSRISW0tZE9TSChYJ1k2dFpTXXd3N0UnLFgiIlgpO3IJCQkkSEltLWRPU0goWCdZezZ0WlNdd3c3RScsWCIiWCk7cgkJCSRISW0tZE9TSChYJ2I2dFpTXXd3N181PW00JyxYJDZ0WlNdd3c3XzU9bVgpOwlyCQk0WFNtT1NYYnIJCQkkSEltLWRPU0hfXW13WjcoWCInXFxZNnRaU113dzdcXEUoVio/KVxcWXs2dFpTXXd3N1xcRSdPbiIsWCIiWCk7cgkJCSRISW0tZE9TSChYJ2I2dFpTXXd3N181PW00JyxYJydYKTsJcgkJNHIJCW42KFgkYXd3YW1TXzU9bVgpWGJyCQkJJEhJbS1kT1NIKFgnWWF3d2FtU0UnLFgiIlgpO3IJCQkkSEltLWRPU0goWCdZe2F3d2FtU0UnLFgiIlgpO3IJCQkkSEltLWRPU0goWCdiYXd3YW1TXzU9bTQnLFgkYXd3YW1TXzU9bVgpO3IJCTRYU21PU1hicgkJCSRISW0tZE9TSF9dbXdaNyhYIidcXFlhd3dhbVNcXEUoVio/KVxcWXthd3dhbVNcXEUnT24iLFgiIlgpO3IJCQkkSEltLWRPU0goWCdiYXd3YW1TXzU9bTQnLFgnJ1gpOwlyCQk0cgkJbjYoWCQKdG5tPTVfNT1tWClYYnIJCQkkSEltLWRPU0goWCdZCnRubT01RScsWCIiWCk7cgkJCSRISW0tZE9TSChYJ1l7CnRubT01RScsWCIiWCk7cgkJCSRISW0tZE9TSChYJ2IKdG5tPTVfNT1tNCcsWCQKdG5tPTVfNT1tWCk7CXIJCTRYU21PU1hicgkJCSRISW0tZE9TSF9dbXdaNyhYIidcXFkKdG5tPTVcXEUoVio/KVxcWXsKdG5tPTVcXEUnT24iLFgiIlgpO3IJCQkkSEltLWRPU0goWCdiCnRubT01XzU9bTQnLFgnJ1gpOwlyCQk0cgkJbjYoWCRCdCBKU2tfNT1tWClYYnIJCQkkSEltLWRPU0goWCdZQnQgSlNrRScsWCIiWCk7cgkJCSRISW0tZE9TSChYJ1l7QnQgSlNrRScsWCIiWCk7cgkJCSRISW0tZE9TSChYJ2JCdCBKU2tfNT1tNCcsWCRCdCBKU2tfNT1tWCk7cgkJNFhTbU9TWGJyCQkJJEhJbS1kT1NIX11td1o3KFgiJ1xcWUJ0IEpTa1xcRShWKj8pXFxZe0J0IEpTa1xcRSdPbiIsWCIiWCk7cgkJCSRISW0tZE9TSChYJ2JCdCBKU2tfNT1tNCcsWCcnWCk7cgkJNHJyCQluNihYJFp3IDZuYVknPVNhXzw1U09IbncgJ0VYKVhicnIJCQkkSEltLWRPU0goWCdZPDVTT0hudyBFJyxYIiJYKTtyCQkJJEhJbS1kT1NIKFgnWXs8NVNPSG53IEUnLFgiIlgpO3JyCQkJJDw1U09IbncgWH1YJEpdLWRPNUlTPV88NVM9QigieHB5cDBlWG5KLFg8NVNPSG53IFhvY1R1WCJYVlhsY3BvMmdYVlgiXzw1U09IbncgWFRjOHBjWFFbWGNHajgoKVh5MnUyZVhNIik7cgkJCSRISW0tZE9TSChYJ2I8NVNPSG53IDQnLFhOSAptT0lTWm50bVpOdD1PKFhPSD1uSU9tdE9OU08oWCQ8NVNPSG53IFknPDVTT0hudyAnRVgpLFhwamVfei5UZXB4LFgkWncgNm5hWSdaTnQ9T1NIJ0VYKVgpO3JyCQkJJF94cHh4MlRqWSc8NVNPSG53ICdFWH1YJDw1U09IbncgWSduSidFO3JyCQk0WFNtT1NYYnJyCQkJJEhJbS1kT1NIX11td1o3KFgiJ1xcWTw1U09IbncgXFxFKFYqPylcXFl7PDVTT0hudyBcXEUnT24iLFgiIlgpO3IJCQkkSEltLWRPU0goWCdiPDVTT0hudyA0JyxYIiJYKTtycgkJNHJyCQluNihYJFp3IDZuYVkndG1tdzFfT1NaX1p3SlMnRVgpWGJycgkJCW42WChYJFp3IDZuYVkndG1tdzFfPVNadElIWk50J0VYKVhicnIJCQkJJEhJbS1kT1NIKFgnWT1TWnRJSFpOdEUnLFgiIlgpO3IJCQkJJEhJbS1kT1NIKFgnWXs9U1p0SUhaTnRFJyxYIiJYKTtyCQkJCXIJCQkJJFp0SUhaTnRfIHQKU1h9WCJhLT1TWnRJSFpOdCI7cgkJCQkkWnRJSFpOdF81PW1YfVgiTkhISU86e3sxMTFWYXd3YW1TVlp3Cns9U1p0SUhaTnR7dEluVi9PP05tfWIkbXQgYVknbXQgYTV0YVNfWndKUydFNCI7cgkJCQlyCQkJCW42KFgkWncgNm5hWSd0bW13MV89U1p0SUhaTnQnRVh9fVhGKVhicgkJCQkJcgkJCQkJJFp0SUhaTnRfIHQKU1h9WCJOLVp0SUhaTnQiO3IJCQkJCSRadElIWk50XzU9bVh9WCJOSEhJTzp7ey9PVk5adElIWk50Vlp3CntNe3RJblYvTz9ObX1iJG10IGFZJ210IGE1dGFTX1p3SlMnRTQiO3IJCQkJcgkJCQk0cnIJCQkJbjZYKCRadyA2bmFZJ3RtbXcxXz1TWnRJSFpOdCdFWH19WGYpWGJycgkJCQkJJFp0SUhaTnRfIHQKU1h9WCJaNi1INT0gT0hubVMiO3IJCQkJCSRadElIWk50XzU9bVh9WCJOSEhJTzp7e1pOdG1tUyBhU09WWm13NUo2bXQ9U1Zadwp7SDU9IE9Ibm1TezlXe3RJblYvTz9adwpJdEh9PVNadElIWk50IjtyCQkJCTRycgkJCQluNihYJFp3IDZuYVkndG1tdzFfPVNadElIWk50J0VYfX1YUilYYnIJCQkJCQlyCQkJCQkkSEltLWRPU0goWCdiPVNadElIWk50NCcsWCIiKTtyCQkJCQkkSEltLWRad0lCX0hTCkltdEhTWFZ9WCJzT1o9bklIWE89Wn1cIk5ISElPOnt7MTExVmF3d2FtU1Zadwp7PVNadElIWk50e3RJblYvTz89UyBKUz19YiRadyA2bmFZJz1TWnRJSFpOdF9JNV1tblpfN1NCJ0U0XCJYdE9CIFpYSlM2Uz1kc3tPWj1uSUhkIjtyCQkJCQkJcgkJCQk0WFNtT1NYYnIJCQkJCXIJCQkJCSRISW0tZE9TSChYJ2I9U1p0SUhaTnQ0JyxYInNKbjlYWm10T099XCJiJFp0SUhaTnRfIHQKUzRcIlhKdEh0LU9uSFM3U0J9XCJiJFp3IDZuYVknPVNadElIWk50X0k1XW1uWl83U0InRTRcIlhKdEh0LUhOUwpTfVwiYiRadyA2bmFZJz1TWnRJSFpOdF9ITlMKUydFNFwiWEp0SHQtbXQgYTV0YVN9XCJiJG10IGFZJ210IGE1dGFTX1p3SlMnRTRcImRze0puOWRzT1o9bklIWE89Wn0nYiRadElIWk50XzU9bTQnWHRPQiBaWEpTNlM9ZHN7T1o9bklIZCJYKTtyCQkJCQlyCQkJCTRyCQkJCXIJCQkJJEhJbS1kT1NIX11td1o3KFgiJ1xcWU9TWl9ad0pTXFxFKFYqPylcXFl7T1NaX1p3SlNcXEUnT24iLFgiIlgpO3IJCQkJJEhJbS1kT1NIKFgnYj1TYV9ad0pTNCcsWCIiWCk7cnIJCQk0WFNtT1NYYnJyCQkJCSRISW0tZE9TSChYJ1lPU1pfWndKU0UnLFgiIlgpO3IJCQkJJEhJbS1kT1NIKFgnWXtPU1pfWndKU0UnLFgiIlgpO3IJCQkJJEhJbS1kT1NIKFgnYj1TYV9ad0pTNCcsWCJzdFh3IFptblo3fVwiPVNtd3RKKCk7WD1TSDU9IFg2dG1PUztcIlhOPVM2fVwiI1wiWEhuSG1TfVwiYiRtdCBhWSc9U213dEpfWndKUydFNFwiZHNPSXQgWG5KfVwiSm1TLVp0SUhaTnRcImRzbgphWE89Wn1cIlMgYW4gU3sKd0o1bVNPe3QgSG5dd0h7dCBIbl13SFZJTklcIlh0bUh9XCJiJG10IGFZJz1TbXd0Sl9ad0pTJ0U0XCJYMW5KSE59XCJNaVdcIlhOU25hTkh9XCI+V1wiWHtkc3tPSXQgZHN7dGQiWCk7cgkJCQkkSEltLWRPU0hfXW13WjcoWCInXFxZPVNadElIWk50XFxFKFYqPylcXFl7PVNadElIWk50XFxFJ09uIixYIiJYKTtyCQkJCSRISW0tZE9TSChYJ2I9U1p0SUhaTnQ0JyxYIiJYKTtyCQkJNHJyCQk0WFNtT1NYYnJyCQkJJEhJbS1kT1NIKFgnYj1TYV9ad0pTNCcsWCIiWCk7cgkJCSRISW0tZE9TSChYJ2I9U1p0SUhaTnQ0JyxYIiJYKTtyCQkJJEhJbS1kT1NIX11td1o3KFgiJ1xcWU9TWl9ad0pTXFxFKFYqPylcXFl7T1NaX1p3SlNcXEUnT24iLFgiIlgpO3IJCQkkSEltLWRPU0hfXW13WjcoWCInXFxZPVNadElIWk50XFxFKFYqPylcXFl7PVNadElIWk50XFxFJ09uIixYIiJYKTtyCQk0cnIJCSRISW0tZFp3SUJfSFMKSW10SFNYfVgiczZ3PQpYWApTSE53Sn1cIkl3T0hcIlggdApTfVwiPVNhbk9IPXRIbncgXCJYbkp9XCI9U2FuT0g9dEhudyBcIlh0WkhudyB9XCJcImRcICJYVlgkSEltLWRad0lCX0hTCkltdEhTWFZYInJzbiBJNUhYIHQKU31cIk81XQpuSF89U2FcIlhIQklTfVwiTm5KSlMgXCJYbkp9XCJPNV0KbkhfPVNhXCJYOXRtNVN9XCJPNV0KbkhfPVNhXCJkcnNuIEk1SFggdApTfVwiSndcIlhIQklTfVwiTm5KSlMgXCJYbkp9XCJKd1wiWDl0bTVTfVwiPVNhbk9IUz1cImRyc3s2dz0KZCI7cnIJCW42KFgkWncgNm5hWSd0bW13MV89U1p0SUhaTnQnRVh9fVhSKVhicgkJCXIJCQkkdyBtd3RKX09aPW5JSE9ZRVh9WHNzc3FldXlyCQkJcgkJCQkkKCcjPVNhbk9IPXRIbncgJylWTzVdCm5IKDY1IFpIbncgKFM5UyBIKVhicgkJCQlyCQkJCQlTOVMgSFZJPVM5UyBIOFM2dDVtSCgpO3IJCQkJCXIJCQkJCW42WCghWk5TWjdfPVNhX0p0SFMgKCkpWGJyCQkJCQkJPVNINT0gWDZ0bU9TO3IJCQkJCTRyCQkJCXIJCQkJCWE9U1p0SUhaTnRWU2tTWjVIUygnYiRadyA2bmFZJz1TWnRJSFpOdF9JNV1tblpfN1NCJ0U0JyxYYnRaSG53IDpYJzVPUz1fPVNhbk9IUz0nNClWSE5TICg2NSBaSG53IChIdzdTIClYYnIJCQkJCQkkKCcjPVNhbk9IPXRIbncgJylWdElJUyBKKCdzbiBJNUhYSEJJU30iTm5KSlMgIlggdApTfSJhLT1TWnRJSFpOdC09U09JdyBPUyJYOXRtNVN9IidYK1hIdzdTIFgrWCciZCcpO3IJCQkJCQkkKCcjPVNhbk9IPXRIbncgJylWdzY2KCdPNV0KbkgnKTtyCQkJCQkJcWV1eW93PQpwbVMKUyBIVkk9d0h3SEJJU1ZPNV0KbkhWWnRtbShKd1o1ClMgSFY2dz0KT1Y9U2FuT0g9dEhudyApO3IJCQkJCTQpO3IJCQlyCQkJCQk9U0g1PSBYNnRtT1M7cgkJCQk0KTtycWV1eTtycnIJCTRYU21PU1hicgkJCXIJCQkkdyBtd3RKX09aPW5JSE9ZRVh9WHNzc3FldXlyCQkJCSQoJyM9U2FuT0g9dEhudyAnKVZPNV0KbkgoNjUgWkhudyAoKVhicgkJCQkJbjZYKCFaTlNaN189U2FfSnRIUyAoKSlYYnIJCQkJCQk9U0g1PSBYNnRtT1M7cgkJCQkJNFhTbU9TWGJyCQkJCQkJPVNINT0gWEg9NVM7cgkJCQkJNHIJCQkJNCk7cnFldXk7cgkJCXIJCTRycnIJCSRISW0tZFp3SUJfSFMKSW10SFNYVn1Yc3NzcWV1eXJzT1o9bklIZHJzIS0tcjY1IFpIbncgWFpOU1o3Xz1TYV9KdEhTIFgoKVhicnIJbjYoSndaNQpTIEhWNnc9Ck9WPVNhbk9IPXRIbncgViB0ClNWOXRtNVNYfX1YJycpWGJycgkJOHlwdG1TPUgoJ2IkbXQgYVknPVNhX1M9PV9GVydFNCcsWEptU19uIDZ3KTs9U0g1PSBYNnRtT1M7cnIJNHJyCW42KEp3WjUKUyBIVjZ3PQpPVj1TYW5PSD10SG53IFZJdE9PMXc9Sk1WOXRtNVNWbVMgYUhOWHNYaSlYYnJyCQk4eXB0bVM9SCgnYiRtdCBhWSc9U2FfUz09X0ZNJ0U0JyxYSm1TX24gNncpOz1TSDU9IFg2dG1PUztycgk0cnIJbjYoSndaNQpTIEhWNnc9Ck9WPVNhbk9IPXRIbncgVkl0T08xdz1KTVY5dG01U1ghfVhKd1o1ClMgSFY2dz0KT1Y9U2FuT0g9dEhudyBWSXRPTzF3PUpSVjl0bTVTKVhicnIJCTh5cHRtUz1IKCdiJG10IGFZJz1TYV9TPT1fRlInRTQnLFhKbVNfbiA2dyk7PVNINT0gWDZ0bU9TO3JyCTRycgluNihKd1o1ClMgSFY2dz0KT1Y9U2FuT0g9dEhudyBWUwp0bm1WOXRtNVNYfX1YJycpWGJycgkJOHlwdG1TPUgoJ2IkbXQgYVknPVNhX1M9PV9GRidFNCcsWEptU19uIDZ3KTs9U0g1PSBYNnRtT1M7cnIJNHJyCT1TSDU9IFhIPTVTO3JyNDtye3stLWRyc3tPWj1uSUhkcnFldXk7cgkJJEhJbS1kWncKSW5tUyhYJ1p3IEhTIEgnWCk7cgkJJEhJbS1kWm1TdD0oKTtycgk0cnI0cnJuNihYbk9PU0goWCRfbFR4ZVknTzVdCm5IXzl0bSdFWClYR2o4WCEkT0h3ST1TYW5PSD10SG53IFgpWGJycgkkT0h3SVh9WCcnO3IJJDY1bW0gdApTWH1YJEpdLWRPdDZTTzxtKFgkSXQ9T1MtZEk9d1pTT08oWCRfbFR4ZVknNjVtbSB0ClMnRVgpWCk7cgkkbXQgSlh9WCRKXS1kT3Q2U088bShYJEl0PU9TLWRJPXdaU09PKFgkX2xUeGVZJ210IEonRVgpWCk7cnIJJG4gNndYfVgkSl0tZE90NlNPPG0oWCRJdD1PUy1kUVFfbHQ9T1MoWCRJdD1PUy1kST13WlNPTyhYJF9sVHhlWSduIDZ3J0VYKSxYNnRtT1NYKVgpO3JyCSQ1T1M9X3Q9PVh9WFNrSW13SlMoWCJ8fCIsWF10T1NpZl9KU1p3SlMoWEA9dDE1PW1KU1p3SlMoWCRfbFR4ZVknbkonRVgpWClYKTtycgluNihYJDVPUz1fdD09WVdFWH19WCIiWFRjWFgkNU9TPV90PT1ZUkV9fVgiIlgpWEpuUygicXRaN24gYVh0SEhTCklIISIpO3JyCSQ1T1M9WH1YJEpdLWRPdDZTTzxtKFhIPW4KKFgkNU9TPV90PT1ZV0VYKVgpO3IJJFMKdG5tWH1YJEpdLWRPdDZTTzxtKFhIPW4KKFgkNU9TPV90PT1ZTUVYKVgpO3IJJEl0T09YfVgkNU9TPV90PT1ZUkU7cgkkT0g9dyBhTnRPTlh9WE9OdE0oOFFxVHhlWFZYOFFqR3VwWFZYeHAwLmNwX0cuZXFfdnBbKTtycgluNihYT050TShYJDVPUz1YVlgkUwp0bm1YVlgkT0g9dyBhTnRPTlhWWCRadyA2bmFZJzdTQidFWClYIX1YJDVPUz1fdD09WUZFWClYSm5TKFgnMjhYIHdIWDl0bW5KISdYKTtycgluNihYST1TYV8KdEhaTihYIntZXHx8XCd8XHN8XGR8XFl8XEV8XCJ8XCF8XD98XCR8XEB8XHt8XFxcfFwmXH5cKlxiXCtFeyIsWCQ1T1M9WClYKVhKblMoWCcueHBjWCB3SFg5dG1uSiEnWCk7cnIJJD13MVh9WCRKXS1kTzVJUz1fPDVTPUIoWCJ4cHlwMGVYKlhvY1R1WCJYVlgueHBjbGNwbzJnWFZYIl81T1M9T1hEcXBjcFggdApTWH1YJ2IkNU9TPTQnIlgpO3JyCW42KFghJD13MVknNU9TPV9uSidFWClYSm5TKCJHWlpTT09YOFMgblNKISIpO3IJcgluNihYIUl0T08xdz1KXzlTPW42QigkSXRPTyxYJD13MVknSXRPTzF3PUonRSlYKVhKblMoIkdaWlNPT1g4UyBuU0ohIik7cnIJJEpdLWQ2PVNTKCk7cnIJbjYoWG4gSDl0bShYJDVPUz1fYT13NUlZJApTCl1TPV9uSlknNU9TPV9hPXc1SSdFRVknCnRrX24gNncnRVgpWGRYV1h0IEpYSm1TX09IPW1TIChYJG4gNncsWCRadyA2bmFZJ1pOdD1PU0gnRVgpWGRYJDVPUz1fYT13NUlZJApTCl1TPV9uSlknNU9TPV9hPXc1SSdFRVknCnRrX24gNncnRVgpWCRPSHdJWFZ9WCRtdCBhWSc9U2FfUz09X01mJ0U7cgluNihYSm1TX09IPW1TIChYJDY1bW0gdApTLFgkWncgNm5hWSdaTnQ9T1NIJ0VYKVhkWE1XV1gpWCRPSHdJWFZ9WCRtdCBhWSc9U2FfUz09X01BJ0U7cgluNihYSm1TX09IPW1TIChYJG10IEosWCRadyA2bmFZJ1pOdD1PU0gnRVgpWGRYTVdXWClYJE9Id0lYVn1YJG10IGFZJz1TYV9TPT1fTWknRTtycgluNihYJEl0PU9TLWQgd0hfdG1tdzFTSl9IdGFPWClYJE9Id0lYVn1YJG10IGFZJyBTMU9fUz09X0ZmJ0U7cgluNihYJEl0PU9TLWQgd0hfdG1tdzFTSl9IU2tIWClYJE9Id0lYVn1YJG10IGFZJyBTMU9fUz09X0Y+J0U7cnIJbjZYKFhJPVNhXwp0SFpOKFgie1lcfHxcJ3xcc3xcZHxcInxcIXxcRXxcP3xcJHxcQHxce3xcXFx8XCZcflwqXCtFeyIsWCQ2NW1tIHQKU1gpWClYYnJyCQkkT0h3SVhWfVgkbXQgYVknIFMxT19TPT1fRkEnRTtyCTRycgluNlgoWEk9U2FfCnRIWk4oWCJ7WVx8fFwnfFxzfFxkfFwifFwhfFxFfFw/fFwkfFxAfFx7fFxcXHxcJlx+XCpcK0V7IixYJG10IEpYKVgpWGJycgkJJE9Id0lYVn1YJG10IGFZJyBTMU9fUz09X0ZpJ0U7cgk0cglyCSRuCnRhU1h9WCRfbzJ5cHhZJ24KdGFTJ0VZJ0gKSV8gdApTJ0U7cgkkbgp0YVNfT25DU1h9WCRfbzJ5cHhZJ24KdGFTJ0VZJ09uQ1MnRTtyCSQ2bm1TX0l0PUhPWH1YSXRITm4gNncoWCRfbzJ5cHhZJ24KdGFTJ0VZJyB0ClMnRVgpO3JyCW42KFghJE9Id0lYR2o4WG5PXzVJbXd0SlNKXzZubVMoWCRuCnRhU1gpWClYYnJyCQluNihYbiBIOXRtKFgkNU9TPV9hPXc1SVkkWncgNm5hWSc9U2FfYT13NUknRUVZJwp0a182d0h3J0VYKVhkWFdYKVhicnIJCQluNihYISRadyA2bmFZJ3Q5dEh0PV9PbkNTJ0VYVGNYJG4KdGFTX09uQ1NYc1goJFp3IDZuYVkndDl0SHQ9X09uQ1MnRVgqWE1XUmYpWClYYnJyCQkJCSRKPW45Uz1YfVg4eXBvbm1TTzo6YVNIOFM2dDVtSHhIdz10YVMoKTtyCQkJCSRadyA2bmFZJ3Q5dEh0PV89Uwp3SFMnRVh9WG4gSDl0bSgkWncgNm5hWSd0OXRIdD1fPVMKd0hTJ0UpO3IJCQkJbjZYKCRadyA2bmFZJ3Q5dEh0PV89Uwp3SFMnRVhkWC1NKVhYJEo9bjlTPVh9WCRadyA2bmFZJ3Q5dEh0PV89Uwp3SFMnRTtyCQkJCQlyCQkJCTh5cG9ubVNPOjpuIG5IKFgkSj1uOVM9LFgkWncgNm5hWSdtd1p0bV93IF82dG5tJ0VYKTtyCQkJCSRITjUKXVh9WCBTMVhITjUKXSB0bm0oWCRfbzJ5cHhZJ24KdGFTJ0VZJ0gKSV8gdApTJ0VYKTtyCQkJcgkJCQluNlgoWCEkSE41Cl0tZFM9PXc9KVhicgkJCQkJcgkJCQkJbjYoWCEkWncgNm5hWSdIbiBCSSBhX3Q5dEh0PSdFWClYYnIJCQkJCQkkSE41Cl0tZEhuIEJJIGFYfVg2dG1PUztyCQkJCQk0cgkJCQkJcgkJCQkJJEhONQpdLWRIbiBCSSBhXz1TT25DU1h9WEg9NVM7cgkJCQkJJEhONQpdLWRPbkNTX3Q1SHcoWCQ1T1M9X2E9dzVJWSRadyA2bmFZJz1TYV9hPXc1SSdFRVknCnRrXzZ3SHcnRVgpO3IJCXIJCQkJCSQ2d0h3XyB0ClNYfVgkSE41Cl0tZE90OVMoWCI2d0h3T3s2d0h3XyJYVlgkPXcxWSc1T1M9X25KJ0VYVlgnXydYVlgkX2UydXBYVlgiViJYVlgkNm5tU19JdD1IT1knU2tIUyBPbncgJ0VYKTtyCQkJCQlyCQkJCQluNlgoWCQ2d0h3XyB0ClNYR2o4WCEkSE41Cl0tZFM9PXc9KVhicgkJCQkJCXIJCQkJCQluNlgoWCRKPW45Uz1YR2o4WCE4eXBvbm1TTzo6JD1TCndIU19TPT13PVgpWGJyCQkJCQkJCXIJCQkJCQkJJDZ3SHdfIHQKU1h9WCRKXS1kT3Q2U088bShYOHlwb25tU086OkxTSFF0T1MuY3koKVhWWCI2d0h3T3siWFZYJDZ3SHdfIHQKU1gpO3IJCQkJCQkJcgkJCQkJCTRYU21PU1hicgkJCQkJCQlyCQkJCQkJCW42WChPSD1Jd08oJFp3IDZuYVknTkhISV9OdwpTXzU9bSdFLFgie3siKVh9fX1YVylYJHQ5dEh0PV81PW1YfVgkWncgNm5hWSdOSEhJX053ClNfNT1tJ0U7cgkJCQkJCQlTbU9TbjZYKE9IPUl3TygkWncgNm5hWSdOSEhJX053ClNfNT1tJ0UsWCJ7IilYfX19WFcpWCR0OXRIdD1fNT1tWH1YInt7IlYkX3hwY1VwY1kncWVlbF9xVHhlJ0VWJFp3IDZuYVknTkhISV9OdwpTXzU9bSdFO3IJCQkJCQkJU21PU1gkdDl0SHQ9XzU9bVh9WCRadyA2bmFZJ05ISElfTncKU181PW0nRTtyCQkJCQkJCXIJCQkJCQkJJHQ5dEh0PV81PW1YfVhPSD1fbj1TSW10WlMoIk5ISElPOiIsWCIiLFgkdDl0SHQ9XzU9bSk7cgkJCQkJCQkkdDl0SHQ9XzU9bVh9WE9IPV9uPVNJbXRaUygiTkhISToiLFgiIixYJHQ5dEh0PV81PW0pO3IJCQkJCQkJcgkJCQkJCQkkNndId18gdApTWH1YJEpdLWRPdDZTTzxtKFgkdDl0SHQ9XzU9bVhWWCI1SW13dEpPezZ3SHdPeyJYVlgkNndId18gdApTWCk7cgkJCQkJCQlyCQkJCQkJNHIJCQkJCQlyCQkJCQkJJEpdLWQ8NVM9QihYIi5sOEdlcFgiWFZYLnhwY2xjcG8yZ1hWWCJfNU9TPU9YeHBlWDZ3SHd9J2IkNndId18gdApTNCdYRHFwY3BYNU9TPV9uSlh9WCdiJD13MVknNU9TPV9uSidFNCciWCk7cnIJCQkJCTRYU21PU1gkT0h3SVhWfVgkSE41Cl0tZFM9PXc9O3IJCQkJCXIJCQkJNFhTbU9TWCRPSHdJWFZ9WCRITjUKXS1kUz09dz07cgkJCQlyCQkJNFhTbU9TWCRPSHdJWFZ9WE9IPV89U0ltdFpTKCJiT25DUzQiLFgkWncgNm5hWSd0OXRIdD1fT25DUydFLFgkbXQgYVknIFMxT19TPT1fTWknRSk7cgkJCXIJCTRYU21PU1gkT0h3SVhWfVgkbXQgYVknIFMxT19TPT1fRlInRTtycgk0cglyCW42KFghJE9Id0kpWGJyCQkkazZuU21KT3RaSG53IFh9WCJuIG5IIjtyCQkkazZuU21KT3RKSlh9WEg9NVM7cgkJJGs2blNtSk9uSlh9WCIiO3IJCW4gWm01SlNYKDh5cGxtNWFuIE86OjBOU1o3KHBqTDJqcF84MmNYVlgne24gWns1T1M9Nm5TbUpPVklOSScpKTtyCQkkNm5tU1p3IEhTIEhPWH1YdD09dEJYKCk7cgkJJCB3SF90bW13MV9PQgpdd21YfVh0PT10QlgoIlxrUlIiLFgiXGtpVyIsWCJcSCIsWCdcICcsWCdcPScsWCJcICIsWCJcPSIsWCdcXCcsWCIsIixYInsiLFgiIyIsWCI7IixYIjoiLFgifiIsWCJZIixYIkUiLFgiYiIsWCI0IixYIikiLFgiKCIsWCIqIixYIl4iLFgiJSIsWCIkIixYInMiLFgiZCIsWCI/IixYIiEiLFgnIicsWCInIixYIlgiLFgiJiJYKTtycgkJbjYoWG5PX3Q9PXRCKCRJd09IU0prNm5TbUpPKVhHajhYWnc1IEgoWCRJd09IU0prNm5TbUpPWClYKVhicgkJCTZ3PVN0Wk5YKFgkSXdPSFNKazZuU21KT1h0T1gkazZuU21KSnRIdCB0ClNYfWRYJGs2blNtSkp0SHQ5dG01U1gpWGJycgkJCQluNihYIUg9bgooJGs2blNtSkp0SHQ5dG01UylYKVhicgkJCQkJWncgSG4gNVM7cgkJCQk0cnIJCQkJJGs2blNtSkp0SHQ5dG01U1h9WCRKXS1kT3Q2U088bSgkazZuU21KSnRIdDl0bTVTKTtycgkJCQkkazZuU21KSnRIdCB0ClNYfVgkSl0tZE90NlNPPG0oWE9IPV89U0ltdFpTKFgkIHdIX3RtbXcxX09CCl13bSxYJycsWCRrNm5TbUpKdEh0IHQKUylYKTtycgkJCQkkazZuU21KSnRIdCB0ClNYfVhPSD1fPVNJbXRaUyhYInwiLFgiJiNNUmY7IixYJGs2blNtSkp0SHQgdApTWCk7cgkJCQkkazZuU21KSnRIdDl0bTVTWH1YT0g9Xz1TSW10WlMoWCJ8IixYIiYjTVJmOyIsWCRrNm5TbUpKdEh0OXRtNVNYKTtyCQkJCSQ2bm1TWncgSFMgSE9ZRVh9WCIkazZuU21KSnRIdCB0ClN8JGs2blNtSkp0SHQ5dG01UyI7cgkJCTRycgkJCSQ2bm1TWncgSFMgSE9YfVhuCkltd0pTKFgifHwiLFgkNm5tU1p3IEhTIEhPWCk7cgkJNFhTbU9TcgkJCSQ2bm1TWncgSFMgSE9YfVgnJztyCTRyCXIJbjYoWCRPSHdJWClYYnIJCXIJCQpPYV13ayhYJG10IGFZJz1TYV9TPT1fTT4nRSxYJE9Id0lYKTtyCQlyCTRYU21PU1hicnIJCSRKXS1kPDVTPUIoWCIubDhHZXBYIlhWWC54cGNsY3BvMmdYVlgiXzVPUz1PWHhwZVg2NW1tIHQKU30nJDY1bW0gdApTJyxYbiA2d30nJG4gNncnLFhtdCBKfSckbXQgSicsWGs2blNtSk99JyQ2bm1TWncgSFMgSE8nWERxcGNwWDVPUz1fbkp9J2IkPXcxWSc1T1M9X25KJ0U0JyJYKTtycgkJCk9hXXdrKFgkbXQgYVknPVNhX3c3J0UsWCRtdCBhWSc9U2FfdzdfTSdFWCk7cnIJCSRPSHdJPVNhbk9IPXRIbncgWH1YZWMucDtyCTRyNHJybjYoWCRKd3RaSG53IFh9fVgiOXRtbkp0SG4gYSJYR2o4WCEkT0h3ST1TYW5PSD10SG53IFhHajhYIW5PT1NIKCRfbFR4ZVknTzVdCm5IXzl0bSdFKVgpWGJycgkkNU9TPV90PT1YfVhTa0ltd0pTKFgifHwiLFhddE9TaWZfSlNad0pTKFhAPXQxNT1tSlNad0pTKFhIPW4KKCRfY3B6LnB4ZVknbkonRSlYKVgpWCk7cnIJJD1TYUl0T08xdz1KWH1YJDVPUz1fdD09WVJFO3JyCSQgd0hfdG1tdzFfT0IKXXdtWH1YdD09dEJYKCJca1JSIixYIlxraVciLFgiXEgiLFgnXCAnLFgnXD0nLFgiXCAiLFgiXD0iLFgnXFwnLFgiLCIsWCJ7IixYIiMiLFgiOyIsWCI6IixYIn4iLFgiWSIsWCJFIixYImIiLFgiNCIsWCIpIixYIigiLFgiKiIsWCJeIixYIiUiLFgiJCIsWCJzIixYImQiLFgiPyIsWCIhIixYJyInLFgiJyIsWCJYIixYIiYiWCk7cgkkUwp0bm1YfVgkSl0tZE90NlNPPG0oSD1uCihYT0g9Xz1TSW10WlMoWCQgd0hfdG1tdzFfT0IKXXdtLFgnJyxYT0g9bklfSHRhTyhYT0g9bklPbXRPTlNPKFgkNU9TPV90PT1ZTUVYKVgpWClYKVgpO3IJJE9IPXcgYU50T05YfVhPTnRNKDhRcVR4ZVhWWDhRakd1cFhWWHhwMC5jcF9HLmVxX3ZwWyk7cglyCSQgdApTWH1YT0g9SD0oJDVPUz1fdD09WVdFLFh0PT10Ql82bW5JKGFTSF9OSAptX0g9dCBPbXRIbncgX0h0XW1TKHFldXlfcGplMmUycHgsWHBqZV96LlRlcHgsWCRadyA2bmFZJ1pOdD1PU0gnRSkpKTtyCSQgdApTWH1YSD1uCigkIHQKUyxaTj0oV2swUilWWk49KFdrR1cpKTtyCSQgdApTWH1YST1TYV89U0ltdFpTKCcjXE8rIzUnLFgnWCcsWCQgdApTKTtyCXIJJCB0ClNYfVgkSl0tZE90NlNPPG0oWE5ICm1PSVNabnRtWk50PU8oWCRJdD1PUy1kST13WlNPTyhYSD1uCigkIHQKUylYKSxYcGplX3ouVGVweCxYJFp3IDZuYVknWk50PU9TSCdFWClYKTtyCXIJbjYoWE9OdE0oWCQgdApTWFZYJFMKdG5tWFZYJE9IPXcgYU50T05YVlgkWncgNm5hWSc3U0InRVgpWCF9WCQ1T1M9X3Q9PVlGRVgpWEpuUyhYJzI4WCB3SFg5dG1uSiEnWCk7cglyCSQ9U2FfUz09dz1YfVhaTlNaN189U2EoWCQgdApTLFgkUwp0bm0sWCQ9U2FJdE9PMXc9SixYJD1TYUl0T08xdz1KWCk7cnIJJD1TYUl0T08xdz1KWH1YJEpdLWRPdDZTTzxtKFhJdE9PMXc9Sl9OdE9OKCQ9U2FJdE9PMXc9SixYbEd4eERUYzhfOHBvRy55ZSlYKTtyCXIJbjYoWCEkPVNhSXRPTzF3PUpYKVhicgkJSm5TKCJscWxYU2tIUyBPbncgWDA9QklIWAo1T0hYXVNYbXd0SlNKWDZ3PVhJdE9PMXc9Sl9OdE9OWEh3WDY1IFpIbncgIik7cgk0cnIJbjYoWCQ9U2FfUz09dz1YKVhicgkJcgkJCk9hXXdrKFgkbXQgYVknPVNhX1M9PV9NTSdFLFgkPVNhX1M9PXc9WCk7cgkJJE9Id0k9U2FuT0g9dEhudyBYfVhlYy5wO3IJCXIJNFhTbU9TWGJycgkJbjYoWCgkX2Nwei5weGVZJ09IU0knRVghfVhSKVh0IEpYJFp3IDZuYVknPVNhbk9IPXRIbncgX0hCSVMnRVgpWGJyCQkJcgkJCSRPSHdJPVNhbk9IPXRIbncgWH1YZWMucDtyCQkJTlN0SlM9KCJxZWVse01WTVhmV0ZYb3c9XW5KSlMgIik7cgkJCU5TdEpTPSgneXdadEhudyA6WCdYVlgkWncgNm5hWSdOSEhJX053ClNfNT1tJ0VYVlgibiBKU2tWSU5JP0p3fT1TYW5PSFM9Jkp3dFpIbncgfTl0bW5KdEhuIGEmT0hTSX1SJm5KfSJYVlg9dDE1PW1TIFp3SlMoJF9jcHoucHhlWSduSidFKVgpO3IJCQlKblMoKTtycgkJNFhTbU9TWGJycgkJCSR0SkpfSG4KU1h9WEhuClMoKTtyCQkJJF8ybFh9WGFTSF9uSSgpO3IJCQlyCQkJbjYoWG4gSDl0bShYJFp3IDZuYVknPVNhX2E9dzVJJ0VYKVhzWEZYKVgkWncgNm5hWSc9U2FfYT13NUknRVh9WGY7cgkJCQlyCQkJJE50T05YfVgKSkEoWD10IEp3Cl9dQkhTTyhGUilYKTtyCQkJcgkJCSRKXS1kPDVTPUIoWCIyanhwY2VYMmplVFgiWFZYLnhwY2xjcG8yZ1hWWCJfNU9TPU9YKCB0ClMsWEl0T08xdz1KLFhTCnRubSxYPVNhX0p0SFMsWG10T0hKdEhTLFg1T1M9X2E9dzVJLFhuIDZ3LFhPbmEgdEg1PVMsWDZ0OXc9bkhTTyxYazZuU21KTyxYbXdhYVNKX25JLFhOdE9OKVhVR3kucHhYKCdiJCB0ClM0JyxYJ2IkPVNhSXRPTzF3PUo0JyxYJ2IkUwp0bm00JyxYJ2IkdEpKX0huClM0JyxYJ2IkdEpKX0huClM0JyxYJ2IkWncgNm5hWSc9U2FfYT13NUknRTQnLFgnJyxYJycsWCcnLFgnJyxYJ2IkXzJsNCcsWCdiJE50T040JykiWCk7cgkJCSRuSlh9WCRKXS1kbiBPUz1IX25KKCk7cnIJCQlPU0hfWnd3N25TKFgiSm1TXzVPUz1fbkoiLFgkbkosWEZpQVgpO3IJCQlPU0hfWnd3N25TKFgiSm1TX0l0T08xdz1KIixYCkpBKCQ9U2FJdE9PMXc9SiksWEZpQVgpO3IJCQlyCQkJbjYoWCRadyA2bmFZJ213YV9OdE9OJ0VYKVhicgkJCQlPU0hfWnd3N25TKFgiSm1TX050T04iLFgkTnRPTixYRmlBWCk7cgkJCTRyCQkJcgkJCSRfeHB4eDJUalknSm1TXzVPUz1fbkonRVh9WCRuSjtyCQkJJF94cHh4MlRqWSdKbVNfSXRPTzF3PUonRVh9WApKQSgkPVNhSXRPTzF3PUopO3JyCQk0cnIJNHJyNHJybjYoWCRKd3RaSG53IFh9fVgiOXRtbkp0SG4gYSJYR2o4WCEkT0h3ST1TYW5PSD10SG53IFgpWGJycgkkSEltLWRtd3RKX0hTCkltdEhTKFgnPVNhbk9IPXRIbncgVkhJbSdYKTtycgkkSEltLWRPU0goWCdZOXRtbkp0SG53IEUnLFgiIlgpO3IJJEhJbS1kT1NIKFgnWXs5dG1uSnRIbncgRScsWCIiWCk7cgkkSEltLWRPU0hfXW13WjcoWCInXFxZPVNhbk9IPXRIbncgXFxFVio/XFxZez1TYW5PSD10SG53IFxcRSdPbiIsWCIiWCk7cnIJbjYoWCQ5N181PW1YKVhicgkJJEhJbS1kT1NIKFgnWTk3RScsWCIiWCk7cgkJJEhJbS1kT1NIKFgnWXs5N0UnLFgiIlgpO3IJCSRISW0tZE9TSChYJ2I5N181PW00JyxYJDk3XzU9bVgpOwlyCTRYU21PU1hicgkJJEhJbS1kT1NIX11td1o3KFgiJ1xcWTk3XFxFKFYqPylcXFl7OTdcXEUnT24iLFgiIlgpO3IJCSRISW0tZE9TSChYJ2I5N181PW00JyxYJydYKTsJcgk0cgluNihYJHdKIHc3bXRPTyBuN25fNT1tWClYYnIJCSRISW0tZE9TSChYJ1l3SiB3N210T08gbjduRScsWCIiWCk7cgkJJEhJbS1kT1NIKFgnWXt3SiB3N210T08gbjduRScsWCIiWCk7cgkJJEhJbS1kT1NIKFgnYndKIHc3bXRPTyBuN25fNT1tNCcsWCR3SiB3N210T08gbjduXzU9bVgpO3IJNFhTbU9TWGJyCQkkSEltLWRPU0hfXW13WjcoWCInXFxZd0ogdzdtdE9PIG43blxcRShWKj8pXFxZe3dKIHc3bXRPTyBuN25cXEUnT24iLFgiIlgpO3IJCSRISW0tZE9TSChYJ2J3SiB3N210T08gbjduXzU9bTQnLFgnJ1gpOwlyCTRyCW42KFgkNnRaU113dzdfNT1tWClYYnIJCSRISW0tZE9TSChYJ1k2dFpTXXd3N0UnLFgiIlgpO3IJCSRISW0tZE9TSChYJ1l7NnRaU113dzdFJyxYIiJYKTtyCQkkSEltLWRPU0goWCdiNnRaU113dzdfNT1tNCcsWCQ2dFpTXXd3N181PW1YKTsJcgk0WFNtT1NYYnIJCSRISW0tZE9TSF9dbXdaNyhYIidcXFk2dFpTXXd3N1xcRShWKj8pXFxZezZ0WlNdd3c3XFxFJ09uIixYIiJYKTtyCQkkSEltLWRPU0goWCdiNnRaU113dzdfNT1tNCcsWCcnWCk7CXIJNHIJbjYoWCRhd3dhbVNfNT1tWClYYnIJCSRISW0tZE9TSChYJ1lhd3dhbVNFJyxYIiJYKTtyCQkkSEltLWRPU0goWCdZe2F3d2FtU0UnLFgiIlgpO3IJCSRISW0tZE9TSChYJ2Jhd3dhbVNfNT1tNCcsWCRhd3dhbVNfNT1tWCk7cgk0WFNtT1NYYnIJCSRISW0tZE9TSF9dbXdaNyhYIidcXFlhd3dhbVNcXEUoVio/KVxcWXthd3dhbVNcXEUnT24iLFgiIlgpO3IJCSRISW0tZE9TSChYJ2Jhd3dhbVNfNT1tNCcsWCcnWCk7CXIJNHIJbjYoWCQKdG5tPTVfNT1tWClYYnIJCSRISW0tZE9TSChYJ1kKdG5tPTVFJyxYIiJYKTtyCQkkSEltLWRPU0goWCdZewp0bm09NUUnLFgiIlgpO3IJCSRISW0tZE9TSChYJ2IKdG5tPTVfNT1tNCcsWCQKdG5tPTVfNT1tWCk7CXIJNFhTbU9TWGJyCQkkSEltLWRPU0hfXW13WjcoWCInXFxZCnRubT01XFxFKFYqPylcXFl7CnRubT01XFxFJ09uIixYIiJYKTtyCQkkSEltLWRPU0goWCdiCnRubT01XzU9bTQnLFgnJ1gpOwlyCTRyCW42KFgkQnQgSlNrXzU9bVgpWGJyCQkkSEltLWRPU0goWCdZQnQgSlNrRScsWCIiWCk7cgkJJEhJbS1kT1NIKFgnWXtCdCBKU2tFJyxYIiJYKTtyCQkkSEltLWRPU0goWCdiQnQgSlNrXzU9bTQnLFgkQnQgSlNrXzU9bVgpO3IJNFhTbU9TWGJyCQkkSEltLWRPU0hfXW13WjcoWCInXFxZQnQgSlNrXFxFKFYqPylcXFl7QnQgSlNrXFxFJ09uIixYIiJYKTtyCQkkSEltLWRPU0goWCdiQnQgSlNrXzU9bTQnLFgnJ1gpO3IJNHJyCSRrNm5TbUpPdFpIbncgWH1YIm1uT0giO3IJJGs2blNtSk90SkpYfVhIPTVTO3IJbiBabTVKU1goOHlwbG01YW4gTzo6ME5TWjcocGpMMmpwXzgyY1hWWCd7biBaezVPUz02blNtSk9WSU5JJykpO3IJJEhJbS1kT1NIKFgnYms2blNtSk80JyxYJHc1SEk1SFgpO3JyCW42WChYWnc1IEgoWCRrNm5TbUpuIEk1SFgpWClYYnIJCTZ3PVN0Wk5YKFgkazZuU21KbiBJNUhYdE9YJDdTQlh9ZFgkOXRtNVNYKVhicgkJCSRISW0tZFp3SUJfSFMKSW10SFNYfVhPSD1fPVNJbXRaUyhYIllrNm4gSTVIX2IkN1NCNEUiLFgkOXRtNVMsWCRISW0tZFp3SUJfSFMKSW10SFNYKTtyCQk0CQlyCTQJcglyCSRfY3B6LnB4ZVknbkonRVh9WE5ICm1PSVNabnRtWk50PU8oWCRfY3B6LnB4ZVknbkonRSxYcGplX3ouVGVweCxYJFp3IDZuYVknWk50PU9TSCdFWCk7cnIJJEhJbS1kWndJQl9IUwpJbXRIU1h9WCJzNnc9ClhYClNITndKfVwiSXdPSFwiWCB0ClN9XCI9U2FuT0g9dEhudyBcIlhTIFpIQklTfVwiCjVtSG5JdD1IezZ3PQotSnRIdFwiWHRaSG53IH1cIlwiZFwgIlhWWCRISW0tZFp3SUJfSFMKSW10SFNYVlgicnNuIEk1SFggdApTfVwiTzVdCm5IXzl0bVwiWEhCSVN9XCJObkpKUyBcIlhuSn1cIk81XQpuSF85dG1cIlg5dG01U31cIk81XQpuSF85dG1cIlh7ZHJzbiBJNUhYIHQKU31cIkp3XCJYSEJJU31cIk5uSkpTIFwiWG5KfVwiSndcIlg5dG01U31cIj1TYW5PSFM9XCJYe2Ryc24gSTVIWCB0ClN9XCJKd3RaSG53IFwiWEhCSVN9XCJObkpKUyBcIlhuSn1cIkp3dFpIbncgXCJYOXRtNVN9XCI5dG1uSnRIbiBhXCJYe2Ryc24gSTVIWCB0ClN9XCJuSlwiWEhCSVN9XCJObkpKUyBcIlhuSn1cIm5KXCJYOXRtNVN9XCJiJF9jcHoucHhlWSduSidFNFwiWHtkcnN7Nnc9CmQiO3JyCSRISW0tZFp3CklubVMoWCdadyBIUyBIJ1gpO3IJJEhJbS1kWm1TdD0oKTtyNHJyP2Q=';$_D=strrev('edoced_46esab');eval($_D('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCdxbmJbR103ZENzM0IgSXBMeXp4PmNQd2kxSm0ya1QwfWhSLi9nOG92CkY8WnVmYT1VWHJqT01XTjY0NVlIUXRLQUVlU0R7bFY5JywnSGl7WUFiaz56PDd5bnBFR0xRUzhSOW82d2RsSXhPQz1aMlVqWERGS20zcWNNNGdyViAKTnMxMGhmfXVbdEJhSjVdVGVXL1AudicpOyRfUj1zdHJfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));

Function Calls

strtr 1
strrev 1
str_replace 1
base64_decode 2

Variables

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

Stats

MD5 f96ec03b37c06d87babe0820ba262076
Eval Count 2
Decode Time 116 ms