{{* Only show header if it is not default or an int value *}}
{{if !empty($label) && !is_int($label) && $label != 'DEFAULT' && !$useTabs && $showSectionPanelsTitles}}
diff --git a/include/EditView/EditView2.php b/include/EditView/EditView2.php
index cd9cbfd9..e5faac60 100644
--- a/include/EditView/EditView2.php
+++ b/include/EditView/EditView2.php
@@ -279,7 +279,6 @@ class EditView
$panelCount = 0;
static $itemCount = 100; //Start the generated tab indexes at 100 so they don't step on custom ones.
-
/* loop all the panels */
foreach ($this->defs['panels'] as $key=>$p)
{
@@ -290,34 +289,46 @@ class EditView
}
else
{
- foreach($p as $row=>$rowDef) {
- $columnsInRows = count($rowDef);
- $columnsUsed = 0;
- foreach($rowDef as $col => $colDef) {
- $panel[$row][$col] = is_array($p[$row][$col]) ? array('field' => $p[$row][$col]) : array('field' => array('name'=>$p[$row][$col]));
- $panel[$row][$col]['field']['tabindex'] = (isset($p[$row][$col]['tabindex']) && is_numeric($p[$row][$col]['tabindex'])) ? $p[$row][$col]['tabindex'] : $itemCount;
+ foreach ($p as $row=>$rowDef)
+ {
+ $columnsInRows = count($rowDef);
+ $columnsUsed = 0;
+ foreach ($rowDef as $col => $colDef)
+ {
+ $panel[$row][$col] = is_array($p[$row][$col])
+ ? array('field' => $p[$row][$col])
+ : array('field' => array('name'=>$p[$row][$col]));
- if($columnsInRows < $maxColumns) {
- if($col == $columnsInRows - 1) {
- $panel[$row][$col]['colspan'] = 2 * $maxColumns - ($columnsUsed + 1);
- } else {
- $panel[$row][$col]['colspan'] = floor(($maxColumns * 2 - $columnsInRows) / $columnsInRows);
- $columnsUsed = $panel[$row][$col]['colspan'];
- }
- }
+ $panel[$row][$col]['field']['tabindex'] =
+ (isset($p[$row][$col]['tabindex']) && is_numeric($p[$row][$col]['tabindex']))
+ ? $p[$row][$col]['tabindex']
+ : $itemCount;
- //Set address types to have colspan value of 2 if colspan is not already defined
- if(is_array($colDef) && !empty($colDef['hideLabel']) && !isset($panel[$row][$col]['colspan'])) {
- $panel[$row][$col]['colspan'] = 2;
- }
+ if ($columnsInRows < $maxColumns)
+ {
+ if ($col == $columnsInRows - 1)
+ {
+ $panel[$row][$col]['colspan'] = 2 * $maxColumns - ($columnsUsed + 1);
+ }
+ else
+ {
+ $panel[$row][$col]['colspan'] = floor(($maxColumns * 2 - $columnsInRows) / $columnsInRows);
+ $columnsUsed = $panel[$row][$col]['colspan'];
+ }
+ }
- $itemCount++;
+ //Set address types to have colspan value of 2 if colspan is not already defined
+ if (is_array($colDef) && !empty($colDef['hideLabel']) && !isset($panel[$row][$col]['colspan']))
+ {
+ $panel[$row][$col]['colspan'] = 2;
+ }
- } //foreach
- } //foreach
+ $itemCount++;
- $panel = $this->getPanelWithFillers($panel);
+ }
+ }
+ $panel = $this->getPanelWithFillers($panel);
$this->sectionPanels[strtoupper($key)] = $panel;
}
@@ -429,6 +440,12 @@ class EditView
if (isset($this->fieldDefs[$name]['options']) && isset($app_list_strings[$this->fieldDefs[$name]['options']]))
{
$this->fieldDefs[$name]['options'] = $app_list_strings[$this->fieldDefs[$name]['options']];
+ if(isset($GLOBALS['sugar_config']['enable_autocomplete']) && $GLOBALS['sugar_config']['enable_autocomplete'] == true){
+ $this->fieldDefs[$name]['autocomplete'] = true;
+ $this->fieldDefs[$name]['autocomplete_options'] = $this->fieldDefs[$name]['options']; // we need the name for autocomplete
+ } else {
+ $this->fieldDefs[$name]['autocomplete'] = false;
+ }
}
if (isset($this->fieldDefs[$name]['function']))
@@ -454,14 +471,30 @@ class EditView
}
}
- if (isset($this->fieldDefs[$name]['type']) && $this->fieldDefs[$name]['type'] == 'function' && isset($this->fieldDefs[$name]['function_name']))
- {
- $value = $this->callFunction($this->fieldDefs[$name]);
- $valueFormatted = true;
- }
-
- if (!$valueFormatted)
- {
+ if(isset($this->fieldDefs[$name]['function'])) {
+ $function = $this->fieldDefs[$name]['function'];
+ if(is_array($function) && isset($function['name'])){
+ $function = $this->fieldDefs[$name]['function']['name'];
+ }else{
+ $function = $this->fieldDefs[$name]['function'];
+ }
+ if(!empty($this->fieldDefs[$name]['function']['returns']) && $this->fieldDefs[$name]['function']['returns'] == 'html'){
+ if(!empty($this->fieldDefs[$name]['function']['include'])){
+ require_once($this->fieldDefs[$name]['function']['include']);
+ }
+ $value = $function($this->focus, $name, $value, $this->view);
+ $valueFormatted = true;
+ }else{
+ $this->fieldDefs[$name]['options'] = $function($this->focus, $name, $value, $this->view);
+ }
+ }
+
+ if(isset($this->fieldDefs[$name]['type']) && $this->fieldDefs[$name]['type'] == 'function' && isset($this->fieldDefs[$name]['function_name'])){
+ $value = $this->callFunction($this->fieldDefs[$name]);
+ $valueFormatted = true;
+ }
+
+ if(!$valueFormatted) {
// $this->focus->format_field($this->focus->field_defs[$name]);
$value = isset($this->focus->$name) ? $this->focus->$name : '';
}
@@ -472,11 +505,10 @@ class EditView
}
- //This code is used for QuickCreates that go to Full Form view
- if ($this->populateBean && empty($this->focus->id)
- && (isset($this->fieldDefs[$name]['function']['returns'])
- ? $this->fieldDefs[$name]['function']['returns'] != 'html'
- : true)
+ //This code is used for QuickCreates that go to Full Form view. We want to overwrite the values from the bean
+ //with values from the request if they are set and either the bean is brand new (such as a create from a subpanels) or the 'full form' button has been clicked
+ if ((($this->populateBean && empty($this->focus->id)) || (isset($_REQUEST['full_form'])))
+ && (!isset($this->fieldDefs[$name]['function']['returns']) || $this->fieldDefs[$name]['function']['returns'] != 'html')
&& isset($_REQUEST[$name]))
{
$this->fieldDefs[$name]['value'] = $this->getValueFromRequest($_REQUEST, $name);
@@ -526,10 +558,9 @@ class EditView
}
}
}
-
/**
* display
- * This method makes the Smarty variable assignments and then displays the
+ * This method makes the Smarty variable assignments and theautocomplete_ajax'vars the
* generated view.
* @param $showTitle boolean value indicating whether or not to show a title on the resulting page
* @param $ajaxSave boolean value indicating whether or not the operation is an Ajax save request
@@ -558,6 +589,7 @@ class EditView
$this->th->ss->assign('MOD', $mod_strings);
$this->th->ss->assign('fields', $this->fieldDefs);
$this->th->ss->assign('sectionPanels', $this->sectionPanels);
+ $this->th->ss->assign('config', $sugar_config);
$this->th->ss->assign('returnModule', $this->returnModule);
$this->th->ss->assign('returnAction', $this->returnAction);
$this->th->ss->assign('returnId', $this->returnId);
@@ -845,4 +877,4 @@ class EditView
return '';
}
-}
+}
\ No newline at end of file
diff --git a/include/EditView/SubpanelQuickCreate.php b/include/EditView/SubpanelQuickCreate.php
index 0c0b394b..7cfeec6d 100644
--- a/include/EditView/SubpanelQuickCreate.php
+++ b/include/EditView/SubpanelQuickCreate.php
@@ -40,7 +40,8 @@ class SubpanelQuickCreate{
var $defaultProcess = true;
function SubpanelQuickCreate($module, $view='QuickCreate', $proccessOverride = false){
-
+ //treat quickedit and quickcreate views as the same
+ if($view == 'QuickEdit') {$view = 'QuickCreate';}
// locate the best viewdefs to use: 1. custom/module/quickcreatedefs.php 2. module/quickcreatedefs.php 3. custom/module/editviewdefs.php 4. module/editviewdefs.php
$base = 'modules/' . $module . '/metadata/';
@@ -64,8 +65,16 @@ class SubpanelQuickCreate{
$this->ev->view = $view;
$this->ev->ss = new Sugar_Smarty();
//$_REQUEST['return_action'] = 'SubPanelViewer';
- $this->ev->setup($module, null, $source);
-
+
+ $class = $GLOBALS['beanList'][$module];
+ $bean = new $class();
+ if(!empty($_REQUEST['record'])) {
+ $bean->retrieve($_REQUEST['record']);
+ }
+ $this->ev->setup($module, $bean, $source);
+ unset($bean);
+
+
$this->ev->defs['templateMeta']['form']['headerTpl'] = 'include/EditView/header.tpl';
$this->ev->defs['templateMeta']['form']['footerTpl'] = 'include/EditView/footer.tpl';
$this->ev->defs['templateMeta']['form']['buttons'] = array('SUBPANELSAVE', 'SUBPANELCANCEL', 'SUBPANELFULLFORM');
diff --git a/include/EditView/SubpanelQuickEdit.php b/include/EditView/SubpanelQuickEdit.php
new file mode 100644
index 00000000..02ba5cc8
--- /dev/null
+++ b/include/EditView/SubpanelQuickEdit.php
@@ -0,0 +1,143 @@
+ev = new EditView();
+ $this->ev->view = $view;
+ $this->ev->ss = new Sugar_Smarty();
+ //$_REQUEST['return_action'] = 'SubPanelViewer';
+
+
+
+ //retrieve bean if id or record is passed in
+ if (isset($_REQUEST['record']) || isset($_REQUEST['id'])){
+ global $beanList;
+ $bean = $beanList[$module];
+ $this->ev->focus = new $bean();
+
+ if (isset($_REQUEST['record']) && empty($_REQUEST['id'])){
+ $_REQUEST['id'] = $_REQUEST['record'];
+ }
+ $this->ev->focus->retrieve($_REQUEST['record']);
+ //call setup with focus passed in
+ $this->ev->setup($module, $this->ev->focus, $source);
+ }else{
+ //no id, call setup on new bean
+ $this->ev->setup($module, null, $source);
+ }
+
+ $this->ev->defs['templateMeta']['form']['headerTpl'] = 'include/EditView/header.tpl';
+ $this->ev->defs['templateMeta']['form']['footerTpl'] = 'include/EditView/footer.tpl';
+ $this->ev->defs['templateMeta']['form']['buttons'] = array('SUBPANELSAVE', 'SUBPANELCANCEL', 'SUBPANELFULLFORM');
+ $this->ev->defs['templateMeta']['form']['hideAudit'] = true;
+
+
+ $viewEditSource = 'modules/'.$module.'/views/view.edit.php';
+ if (file_exists('custom/'. $viewEditSource)) {
+ $viewEditSource = 'custom/'. $viewEditSource;
+ }
+
+ if(file_exists($viewEditSource) && !$proccessOverride) {
+ include($viewEditSource);
+ $c = $module . 'ViewEdit';
+
+ if(class_exists($c)) {
+ $view = new $c;
+ if($view->useForSubpanel) {
+ $this->defaultProcess = false;
+
+ //Check if we shold use the module's QuickCreate.tpl file
+ if($view->useModuleQuickCreateTemplate && file_exists('modules/'.$module.'/tpls/QuickCreate.tpl')) {
+ $this->ev->defs['templateMeta']['form']['headerTpl'] = 'modules/'.$module.'/tpls/QuickCreate.tpl';
+ }
+
+ $view->ev = & $this->ev;
+ $view->ss = & $this->ev->ss;
+ $class = $GLOBALS['beanList'][$module];
+ if(!empty($GLOBALS['beanFiles'][$class])){
+ require_once($GLOBALS['beanFiles'][$class]);
+ $bean = new $class();
+ $view->bean = $bean;
+ }
+ $this->ev->formName = 'form_Subpanel'.$this->ev->view .'_'.$module;
+ $view->showTitle = false; // Do not show title since this is for subpanel
+ $view->display();
+ }
+ }
+ } //if
+
+ if($this->defaultProcess && !$proccessOverride) {
+ $this->process($module);
+ }
+ }
+
+ function process($module){
+ $form_name = 'form_Subpanel'.$this->ev->view .'_'.$module;
+ $this->ev->formName = $form_name;
+ $this->ev->process(true, $form_name);
+ echo $this->ev->display(false, true);
+ }
+}
+?>
\ No newline at end of file
diff --git a/include/EditView/SugarVCR.php b/include/EditView/SugarVCR.php
index 3fefccd2..f48b31f0 100644
--- a/include/EditView/SugarVCR.php
+++ b/include/EditView/SugarVCR.php
@@ -104,7 +104,7 @@
if(!empty($menu['NEXT'])){
$return_action = 'EditView';
$return_id = $menu['NEXT'];
- $list_URL = 'index.php?action=EditView&module='.$module.'&record='.$return_id.'&offset='.($offset+1);
+ $list_URL = ajaxLink('index.php?action=EditView&module='.$module.'&record='.$return_id.'&offset='.($offset+1));
$list_link = "";
}else
$list_link = "";
@@ -115,7 +115,7 @@
$next_link = "";
if(!empty($menu['PREV'])) {
//$previous_link = "".SugarThemeRegistry::current()->getImage("previous","alt='".$GLOBALS['app_strings']['LNK_LIST_PREVIOUS']."' border='0' align='absmiddle'").' '.$GLOBALS['app_strings']['LNK_LIST_PREVIOUS']."";
- $href = "index.php?module=$module&action=$action&offset=".($offset-1)."&record=".$menu['PREV'];
+ $href = ajaxLink("index.php?module=$module&action=$action&offset=".($offset-1)."&record=".$menu['PREV']);
$previous_link = "";
}
else
@@ -123,7 +123,7 @@
if(!empty($menu['NEXT'])) {
//$next_link = "".$GLOBALS['app_strings']['LNK_LIST_NEXT'].' '.SugarThemeRegistry::current()->getImage("next","alt='".$GLOBALS['app_strings']['LNK_LIST_NEXT']."' border='0' align='absmiddle'")."";
- $href = "index.php?module=$module&action=$action&offset=".($offset+1)."&record=".$menu['NEXT'];
+ $href = ajaxLink("index.php?module=$module&action=$action&offset=".($offset+1)."&record=".$menu['NEXT']);
$next_link = "";
}
else
diff --git a/include/EditView/header.tpl b/include/EditView/header.tpl
index ac1c3918..fef0db1c 100644
--- a/include/EditView/header.tpl
+++ b/include/EditView/header.tpl
@@ -37,7 +37,7 @@
*}
";
return $str;
diff --git a/include/utils.php b/include/utils.php
index 2365fffe..156e5627 100644
--- a/include/utils.php
+++ b/include/utils.php
@@ -149,6 +149,7 @@ function make_sugar_config(&$sugar_config)
'host_name' => empty($host_name) ? 'localhost' : $host_name,
'import_dir' => $import_dir, // this must be set!!
'import_max_records_per_file' => 100,
+ 'import_max_records_total_limit' => '',
'languages' => empty($languages) ? array('en_us' => 'English (US)') : $languages,
'list_max_entries_per_page' => empty($list_max_entries_per_page) ? 20 : $list_max_entries_per_page,
'list_max_entries_per_subpanel' => empty($list_max_entries_per_subpanel) ? 10 : $list_max_entries_per_subpanel,
@@ -271,6 +272,7 @@ function get_sugar_config_defaults() {
'history_max_viewed' => 50,
'installer_locked' => true,
'import_max_records_per_file' => 100,
+ 'import_max_records_total_limit' => '',
'languages' => array('en_us' => 'English (US)'),
'large_scale_test' => false,
'list_max_entries_per_page' => 20,
@@ -292,8 +294,8 @@ function get_sugar_config_defaults() {
'slow_query_time_msec' => '100',
'sugarbeet' => true,
'time_formats' => array (
- 'H:i'=>'23:00', 'h:ia'=>'11:00pm', 'h:iA'=>'11:00PM',
- 'H.i'=>'23.00', 'h.ia'=>'11.00pm', 'h.iA'=>'11.00PM' ),
+ 'H:i'=>'23:00', 'h:ia'=>'11:00pm', 'h:iA'=>'11:00PM', 'h:i a'=>'11:00 pm', 'h:i A'=>'11:00 PM',
+ 'H.i'=>'23.00', 'h.ia'=>'11.00pm', 'h.iA'=>'11.00PM', 'h.i a'=>'11.00 pm', 'h.i A'=>'11.00 PM' ),
'tracker_max_display_length' => 15,
'translation_string_prefix' =>
return_session_value_or_default('translation_string_prefix', false),
@@ -306,6 +308,7 @@ function get_sugar_config_defaults() {
'verify_client_ip' => true,
'js_custom_version' => '',
'js_lang_version' => 1,
+ 'lead_conv_activity_opt' => 'donothing',
'default_number_grouping_seperator' => ',',
'default_decimal_seperator' => '.',
'lock_homepage' => false,
@@ -934,14 +937,16 @@ function return_module_language($language, $module, $refresh=false)
return array();
}
- $cache_key = LanguageManager::getLanguageCacheKey($module, $language);
- // Check for cached value
- $cache_entry = sugar_cache_retrieve($cache_key);
- if(!empty($cache_entry))
- {
- return $cache_entry;
- }
-
+ if( !$refresh )
+ {
+ $cache_key = LanguageManager::getLanguageCacheKey($module, $language);
+ // Check for cached value
+ $cache_entry = sugar_cache_retrieve($cache_key);
+ if(!empty($cache_entry))
+ {
+ return $cache_entry;
+ }
+ }
// Store the current mod strings for later
$temp_mod_strings = $mod_strings;
$loaded_mod_strings = array();
@@ -956,10 +961,7 @@ function return_module_language($language, $module, $refresh=false)
// the vardefs file if the cached language file doesn't exist.
if(!file_exists($GLOBALS['sugar_config']['cache_dir'].'modules/'. $module . '/language/'.$language.'.lang.php')
&& !empty($GLOBALS['beanList'][$module])){
- $object = $GLOBALS['beanList'][$module];
- if ($object == 'aCase') {
- $object = 'Case';
- }
+ $object = BeanFactory::getObjectName($module);
VardefManager::refreshVardefs($module,$object);
}
@@ -993,6 +995,7 @@ function return_module_language($language, $module, $refresh=false)
else
$mod_strings = $temp_mod_strings;
+ $cache_key = LanguageManager::getLanguageCacheKey($module, $language);
sugar_cache_put($cache_key, $return_value);
return $return_value;
}
@@ -1282,7 +1285,7 @@ function get_admin_modules_for_user($user) {
}
return($user->getDeveloperModules());
-
+
}
function get_workflow_admin_modules_for_user($user){
@@ -1361,7 +1364,7 @@ function is_admin($user) {
if(empty($user)) {
return false;
}
-
+
return $user->isAdmin();
}
@@ -2020,6 +2023,9 @@ function get_register_value($category,$name){
return sugar_cache_retrieve("{$category}:{$name}");
}
+function clear_register_value($category,$name){
+ return sugar_cache_clear("{$category}:{$name}");
+}
// this function cleans id's when being imported
function convert_id($string)
{
@@ -2245,7 +2251,7 @@ function get_unlinked_email_query($type, $bean) {
$return_array['select']='SELECT emails.id ';
$return_array['from']='FROM emails ';
$return_array['where']="";
- $return_array['join'] = " JOIN (select distinct email_id from emails_email_addr_rel eear
+ $return_array['join'] = " JOIN (select DISTINCT email_id from emails_email_addr_rel eear
join email_addr_bean_rel eabr on eabr.bean_id ='$bean->id' and eabr.bean_module = '$bean->module_dir' and
eabr.email_address_id = eear.email_address_id and eabr.deleted=0
@@ -2254,11 +2260,11 @@ function get_unlinked_email_query($type, $bean) {
) derivedemails on derivedemails.email_id = emails.id";
$return_array['join_tables'][0] = '';
- if (isset($type) and isset($type['return_as_array']) and $type['return_as_array']==true) {
+ if (isset($type) and !empty($type['return_as_array'])) {
return $return_array;
}
- return $return_array['select'] . $return_array['from'] . $return_array['where'];
+ return $return_array['select'] . $return_array['from'] . $return_array['where'] . $return_array['join'] ;
} // fn
/**
@@ -2277,7 +2283,9 @@ function get_bean_select_array($add_blank=true, $bean_name, $display_columns, $w
require_once($beanFiles[$bean_name]);
$focus = new $bean_name();
$user_array = array();
- $user_array = get_register_value('select_array',$bean_name. $display_columns. $where . $order_by);
+
+ $key = ($bean_name == 'EmailTemplate') ? $bean_name : $bean_name . $display_columns. $where . $order_by;
+ $user_array = get_register_value('select_array', $key );
if(!$user_array)
{
@@ -2289,7 +2297,7 @@ function get_bean_select_array($add_blank=true, $bean_name, $display_columns, $w
{
$query .= $where." AND ";
}
-
+
$query .= " {$focus->table_name}.deleted=0";
if ( $order_by != '')
@@ -2317,7 +2325,7 @@ function get_bean_select_array($add_blank=true, $bean_name, $display_columns, $w
}
$user_array = $temp_result;
- set_register_value('select_array',$bean_name. $display_columns. $where . $order_by,$temp_result);
+ set_register_value('select_array', $key ,$temp_result);
}
return $user_array;
@@ -2471,6 +2479,29 @@ function _ppd($mixed)
* @param $displayStackTrace also show stack trace
*/
function _ppl($mixed, $die=false, $displayStackTrace=false, $loglevel="fatal") {
+ if(!isset($GLOBALS['log']) || empty($GLOBALS['log'])) {
+
+ $GLOBALS['log'] = LoggerManager :: getLogger('SugarCRM');
+ }
+
+
+ $mix = print_r($mixed, true); // send print_r() output to $mix
+ $stack = debug_backtrace();
+
+ $GLOBALS['log']->$loglevel('------------------------------ _ppLogger() output start -----------------------------');
+ $GLOBALS['log']->$loglevel($mix);
+ if($displayStackTrace) {
+ foreach($stack as $position) {
+ $GLOBALS['log']->$loglevel($position['file']."({$position['line']})");
+ }
+ }
+
+ $GLOBALS['log']->$loglevel('------------------------------ _ppLogger() output end -----------------------------');
+ $GLOBALS['log']->$loglevel('------------------------------ _ppLogger() file: '.$stack[0]['file'].' line#: '.$stack[0]['line'].'-----------------------------');
+
+ if($die) {
+ die();
+ }
}
/**
@@ -2706,7 +2737,7 @@ function sugar_cleanup($exit = false) {
$GLOBALS['current_user']->savePreferencesToDB();
}
- //check to see if this is not an ajax call AND the user preference error flag is set
+ //check to see if this is not an `ajax call AND the user preference error flag is set
if(
(isset($_SESSION['USER_PREFRENCE_ERRORS']) && $_SESSION['USER_PREFRENCE_ERRORS'])
&& ($_REQUEST['action']!='modulelistmenu' && $_REQUEST['action']!='DynamicAction')
@@ -2761,7 +2792,7 @@ function check_logic_hook_file($module_name, $event, $action_array){
{
$logic_count = count($hook_array[$event]);
}
-
+
if($action_array[0]==""){
$action_array[0] = $logic_count + 1;
}
@@ -3096,6 +3127,40 @@ function get_singular_bean_name($bean_name){
}
}
+/*
+ * Given the potential module name (singular name, renamed module name)
+ * Return the real internal module name.
+ */
+function get_module_from_singular($singular) {
+
+ // find the internal module name for a singular name
+ if (isset($GLOBALS['app_list_strings']['moduleListSingular'])) {
+
+ $singular_modules = $GLOBALS['app_list_strings']['moduleListSingular'];
+
+ foreach ($singular_modules as $mod_name=>$sin_name) {
+ if ($singular == $sin_name and $mod_name != $sin_name) {
+ return $mod_name;
+ }
+ }
+ }
+
+ // find the internal module name for a renamed module
+ if (isset($GLOBALS['app_list_strings']['moduleList'])) {
+
+ $moduleList = $GLOBALS['app_list_strings']['moduleList'];
+
+ foreach ($moduleList as $mod_name=>$name) {
+ if ($singular == $name and $mod_name != $name) {
+ return $mod_name;
+ }
+ }
+ }
+
+ // if it's not a singular name, nor a renamed name, return the original value
+ return $singular;
+}
+
function get_label($label_tag, $temp_module_strings){
global $app_strings;
if(!empty($temp_module_strings[$label_tag])){
@@ -3160,7 +3225,7 @@ function search_filter_rel_info(& $focus, $tar_rel_module, $relationship_name){
}
// special case for unlisted parent-type relationships
- if($focus->parent_type == $tar_rel_module && !empty($focus->parent_id)) {
+ if( !empty($focus->parent_type) && $focus->parent_type == $tar_rel_module && !empty($focus->parent_id)) {
$temp_bean = get_module_info($tar_rel_module);
$temp_bean->retrieve($focus->parent_id);
if($temp_bean->id!=""){
@@ -3386,11 +3451,6 @@ function getJSONobj() {
}
require_once('include/utils/db_utils.php');
-//check to see if custom utils exists
-if(file_exists('custom/include/custom_utils.php')){
- include_once('custom/include/custom_utils.php');
-}
-
/**
* Set default php.ini settings for entry points
@@ -4005,7 +4065,7 @@ function can_start_session(){
}
function load_link_class($properties){
- $class = 'Link';
+ $class = 'Link2';
if(!empty($properties['link_class']) && !empty($properties['link_file'])){
require_once($properties['link_file']);
$class = $properties['link_class'];
@@ -4295,7 +4355,7 @@ function verify_image_file($path, $jpeg = false)
return true;
}
} else {
- return false;
+ return false;
}
} else {
// check image manually
@@ -4340,6 +4400,44 @@ function verify_uploaded_image($path, $jpeg_only = false)
return verify_image_file($path, $jpeg_only);
}
+function cmp_beans($a, $b)
+{
+ global $sugar_web_service_order_by;
+ //If the order_by field is not valid, return 0;
+ if (empty($sugar_web_service_order_by) || !isset($a->$sugar_web_service_order_by) || !isset($b->$sugar_web_service_order_by)){
+ return 0;
+ }
+ if (is_object($a->$sugar_web_service_order_by) || is_object($b->$sugar_web_service_order_by)
+ || is_array($a->$sugar_web_service_order_by) || is_array($b->$sugar_web_service_order_by))
+ {
+ return 0;
+ }
+ if ($a->$sugar_web_service_order_by < $b->$sugar_web_service_order_by)
+ {
+ return -1;
+ } else {
+ return 1;
+ }
+}
+
+function order_beans($beans, $field_name)
+{
+ //Since php 5.2 doesn't include closures, we must use a global to pass the order field to cmp_beans.
+ global $sugar_web_service_order_by;
+ $sugar_web_service_order_by = $field_name;
+ usort($beans, "cmp_beans");
+ return $beans;
+}
+
+//check to see if custom utils exists
+if(file_exists('custom/include/custom_utils.php')){
+ include_once('custom/include/custom_utils.php');
+}
+
+//check to see if custom utils exists in Extension framework
+if(file_exists('custom/application/Ext/Utils/custom_utils.ext.php')) {
+ include_once('custom/application/Ext/Utils/custom_utils.ext.php');
+}
/**
* @param $input - the input string to sanitize
* @param int $quotes - use quotes
diff --git a/include/utils/LogicHook.php b/include/utils/LogicHook.php
index 8eca6c2c..3a3e77d8 100644
--- a/include/utils/LogicHook.php
+++ b/include/utils/LogicHook.php
@@ -75,11 +75,86 @@ class LogicHook{
return $GLOBALS['logic_hook'];
}
- function setBean(&$bean){
- $this->bean =& $bean;
+ function setBean($bean){
+ $this->bean = $bean;
return $this;
}
+ protected $hook_map = array();
+ protected $hookscan = array();
+
+ public function getHooksMap()
+ {
+ return $this->hook_map;
+ }
+
+ public function getHooksList()
+ {
+ return $this->hookscan;
+ }
+
+ public function scanHooksDir($extpath)
+ {
+ if(is_dir($extpath)){
+ $dir = dir($extpath);
+ while($entry = $dir->read()){
+ if($entry != '.' && $entry != '..' && strtolower(substr($entry, -4)) == ".php" && is_file($extpath.'/'.$entry)) {
+ unset($hook_array);
+ include($extpath.'/'.$entry);
+ if(!empty($hook_array)) {
+ foreach($hook_array as $type => $hookg) {
+ foreach($hookg as $index => $hook) {
+ $this->hookscan[$type][] = $hook;
+ $idx = count($this->hookscan[$type])-1;
+ $this->hook_map[$type][$idx] = array("file" => $extpath.'/'.$entry, "index" => $index);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ protected static $hooks = array();
+
+ static public function refreshHooks() {
+ self::$hooks = array();
+ }
+
+ public function loadHooks($module_dir)
+ {
+ $hook_array = null;
+ if(!empty($module_dir)) {
+ $custom = "custom/modules/$module_dir";
+ } else {
+ $custom = "custom/modules";
+ }
+ if(file_exists("$custom/logic_hooks.php")){
+ if(isset($GLOBALS['log'])){
+ $GLOBALS['log']->debug('Including module specific hook file for '.$custom);
+ }
+ include("$custom/logic_hooks.php");
+ }
+ if(empty($module_dir)) {
+ $custom = "custom/application";
+ }
+ if(file_exists("$custom/Ext/LogicHooks/logichooks.ext.php")) {
+ if(isset($GLOBALS['log'])){
+ $GLOBALS['log']->debug('Including Ext hook file for '.$custom);
+ }
+ include("$custom/Ext/LogicHooks/logichooks.ext.php");
+ }
+ return $hook_array;
+ }
+
+ public function getHooks($module_dir, $refresh = false)
+ {
+ if($refresh || !isset(self::$hooks[$module_dir])) {
+ self::$hooks[$module_dir] = $this->loadHooks($module_dir);
+ }
+ return self::$hooks[$module_dir];
+ }
+
/**
* Provide a means for developers to create upgrade safe business logic hooks.
* If the bean is null, then we assume this call was not made from a SugarBean Object and
@@ -98,22 +173,14 @@ class LogicHook{
}
if(!empty($module_dir)){
// This will load an array of the hooks to process
- if(file_exists("custom/modules/$module_dir/logic_hooks.php")){
- if(isset($GLOBALS['log'])){
- $GLOBALS['log']->debug('Including module specific hook file for '.$module_dir);
- }
- include("custom/modules/$module_dir/logic_hooks.php");
- $this->process_hooks($hook_array, $event, $arguments);
- $hook_array = null;
+ $hooks = $this->getHooks($module_dir);
+ if(!empty($hooks)) {
+ $this->process_hooks($hooks, $event, $arguments);
}
}
- // Now load the generic array if it exists.
- if(file_exists('custom/modules/logic_hooks.php')){
- if(isset($GLOBALS['log'])){
- $GLOBALS['log']->debug('Including generic hook file');
- }
- include('custom/modules/logic_hooks.php');
- $this->process_hooks($hook_array, $event, $arguments);
+ $hooks = $this->getHooks('');
+ if(!empty($hooks)) {
+ $this->process_hooks($hooks, $event, $arguments);
}
}
@@ -130,7 +197,21 @@ class LogicHook{
function process_hooks($hook_array, $event, $arguments){
// Now iterate through the array for the appropriate hook
if(!empty($hook_array[$event])){
- foreach($hook_array[$event] as $hook_details){
+
+ // Apply sorting to the hooks using the sort index.
+ // Hooks with matching sort indexes will be processed in no particular order.
+ $sorted_indexes = array();
+ foreach($hook_array[$event] as $idx => $hook_details)
+ {
+ $order_idx = $hook_details[0];
+ $sorted_indexes[$idx] = $order_idx;
+ }
+ asort($sorted_indexes);
+
+ $process_order = array_keys($sorted_indexes);
+
+ foreach($process_order as $hook_index){
+ $hook_details = $hook_array[$event][$hook_index];
if(!file_exists($hook_details[2])){
if(isset($GLOBALS['log'])){
$GLOBALS['log']->error('Unable to load custom logic file: '.$hook_details[2]);
diff --git a/include/utils/autoloader.php b/include/utils/autoloader.php
index f078cce3..daf26a32 100644
--- a/include/utils/autoloader.php
+++ b/include/utils/autoloader.php
@@ -73,10 +73,48 @@ class SugarAutoLoader{
require_once(SugarAutoLoader::$moduleMap[$class]);
return true;
}
+ $viewPath = self::getFilenameForViewClass($class);
+ if (!empty($viewPath))
+ {
+ require_once($viewPath);
+ return true;
+ }
return false;
}
+ protected static function getFilenameForViewClass($class)
+ {
+ $module = false;
+ if (!empty($_REQUEST['module']) && substr($class, 0, strlen($_REQUEST['module'])) == $_REQUEST['module'])
+ {
+ //This is a module view
+ $module = $_REQUEST['module'];
+ $class = substr($class, strlen($module));
+ }
+
+ if (substr($class, 0, 4) == "View")
+ {
+ $view = strtolower(substr($class, 4));
+ if ($module)
+ {
+ $modulepath = "modules/$module/views/view.$view.php";
+ if (file_exists("custom/$modulepath"))
+ return "custom/$modulepath";
+ if (file_exists($modulepath))
+ return $modulepath;
+ } else {
+ $basepath = "include/MVC/View/views/view.$view.php";
+ if (file_exists("custom/$basepath")){
+ return "custom/$basepath";
+ }
+ if (file_exists($basepath)) {
+ return $basepath;
+ }
+ }
+ }
+ }
+
public static function loadAll(){
foreach(SugarAutoLoader::$map as $class=>$file){
require_once($file);
diff --git a/include/utils/db_utils.php b/include/utils/db_utils.php
index b835bdcf..ae434561 100644
--- a/include/utils/db_utils.php
+++ b/include/utils/db_utils.php
@@ -189,12 +189,12 @@ function run_sql_file( $filename )
if ($ensureUnique)
{
$md5str = md5($name);
- $tail = substr ( $name, -8) ;
+ $tail = substr ( $name, -11) ;
$temp = substr($md5str , strlen($md5str)-4 );
- $result = substr ( $name, 0, 7) . $temp . $tail ;
+ $result = substr ( $name, 0, 10) . $temp . $tail ;
}else if ($len > ($maxLen - 5))
{
- $result = substr ( $name, 0, 8) . substr ( $name, 8 - $maxLen + 5);
+ $result = substr ( $name, 0, 11) . substr ( $name, 11 - $maxLen + 5);
}
return strtolower ( $result ) ;
}
diff --git a/include/utils/file_utils.php b/include/utils/file_utils.php
index 22a734b1..90dd43fa 100644
--- a/include/utils/file_utils.php
+++ b/include/utils/file_utils.php
@@ -120,19 +120,9 @@ function write_array_to_file( $the_name, $the_array, $the_file, $mode="w", $head
}
$the_string .= "\$$the_name = " .
var_export_helper( $the_array ) .
- ";\n?>\n";
-
- if( $fh = @sugar_fopen( $the_file, $mode ) )
- {
- fputs( $fh, $the_string);
- fclose( $fh );
- return( true );
- }
- else
- {
- return( false );
- }
+ ";";
+ return sugar_file_put_contents($the_file, $the_string, LOCK_EX) !== false;
}
function write_encoded_file( $soap_result, $write_to_dir, $write_to_file="" )
diff --git a/include/utils/layout_utils.php b/include/utils/layout_utils.php
index 25d58a39..20421706 100644
--- a/include/utils/layout_utils.php
+++ b/include/utils/layout_utils.php
@@ -208,11 +208,12 @@ function get_module_title(
if ($show_create) {
$the_title .= "";
$createRecordURL = SugarThemeRegistry::current()->getImageURL('create-record.gif');
+ $url = ajaxLink("index.php?module=$module&action=EditView&return_module=$module&return_action=DetailView");
$the_title .= <<
+
-
+
{$GLOBALS['app_strings']['LNK_CREATE']}
EOHTML;
@@ -239,7 +240,9 @@ EOHTML;
* );
*
* would display as:
+ *
* Contacts >> John Smith >> Edit
+ *
* @param $show_help boolean which determines if the print and help links are shown.
* @return string HTML
*/
@@ -262,7 +265,11 @@ function getClassicModuleTitle(
$iconPath = "";
$the_title = "
\n
";
-
+ if(!empty($GLOBALS['app_list_strings']['moduleList'][$module]))
+ $moduleName = $GLOBALS['app_list_strings']['moduleList'][$module];
+ else
+ $moduleName = $module;
+
if(is_file(SugarThemeRegistry::current()->getImageURL('icon_'.$module.'_32.png',false)))
{
$iconPath = SugarThemeRegistry::current()->getImageURL('icon_'.$module.'_32.png');
@@ -273,7 +280,7 @@ function getClassicModuleTitle(
if (!empty($iconPath)) {
$url = (!empty($index_url_override)) ? $index_url_override : "index.php?module={$module}&action=index";
array_unshift ($params,"");
+ . "alt='".$moduleName."' title='".$moduleName."' align='absmiddle'>");
}
$new_params = array();
@@ -299,11 +306,12 @@ function getClassicModuleTitle(
if ($show_create) {
$the_title .= "";
$createRecordURL = SugarThemeRegistry::current()->getImageURL('create-record.gif');
+ $url = ajaxLink("index.php?module=$module&action=EditView&return_module=$module&return_action=DetailView");
$the_title .= <<
+
-
+
{$GLOBALS['app_strings']['LNK_CREATE']}
EOHTML;
diff --git a/include/utils/mvc_utils.php b/include/utils/mvc_utils.php
index 7e59f9f1..5797c661 100644
--- a/include/utils/mvc_utils.php
+++ b/include/utils/mvc_utils.php
@@ -57,6 +57,95 @@ function loadParentView($type)
}
}
-$msi0="len";$msi="code";$msi1="A399FD425F9450079BE2FAD81B3C4703aWYoIWNsYXNzX2V4aXN0cygnVHJhY2tl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cicpKXsgIGNsYXNzIFRyYWNrZXIgZXh07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZW5kcyBTdWdhckJlYW4geyAgdmFyICRt7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b2R1bGVfZGlyID0gJ1RyYWNrZXJzJzsg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgIHZhciAkdGFibGVfbmFtZSA9ICd07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cmFja2VyJzsgICAgIHZhciAkb2JqZWN07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703X25hbWUgPSAnVHJhY2tlcic7ICB2YXIg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JGRpc2FibGVfdmFyX2RlZnMgPSB0cnVl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703OyAgdmFyICRhY2x0eXBlID0gJ1RyYWNr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXInOyAgICAgIHZhciAkY29sdW1uX2Zp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZWxkcyA9IEFycmF5KCAgICAgICAgICJp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZCIsICAgICAgICAgIm1vbml0b3JfaWQi7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703LCAgICAgICAgICJ1c2VyX2lkIiwgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAibW9kdWxlX25hbWUiLCAgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICJpdGVtX2lkIiwgICAgICAgICAi7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aXRlbV9zdW1tYXJ5IiwgICAgICAgICAi7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZGF0ZV9tb2RpZmllZCIsICAgImFjdGlv7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703biIsICAgICAgInNlc3Npb25faWQiLCAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICJ2aXNpYmxlIiAgICAgKTsgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICBmdW5jdGlvbiBUcmFja2VyKCkgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IHsgICAgICBnbG9iYWwgJGRpY3Rpb25h7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cnk7ICAgICAgaWYoaXNzZXQoJHRoaXMt7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Pm1vZHVsZV9kaXIpICYmIGlzc2V0KCR07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aGlzLT5vYmplY3RfbmFtZSkgJiYgIWlz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703c2V0KCRHTE9CQUxTWydkaWN0aW9uYXJ57A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703J11bJHRoaXMtPm9iamVjdF9uYW1lXSkp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eyAgICAgICAgICAkcGF0aCA9ICdtb2R17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bGVzL1RyYWNrZXJzL3ZhcmRlZnMucGhw7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JzsgICAgaWYoZGVmaW5lZCgnVEVNUExB7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VEVfVVJMJykpJHBhdGggPSBTdWdhclRl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bXBsYXRlVXRpbGl0aWVzOjpnZXRGaWxl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UGF0aCgkcGF0aCk7ICAgICAgIHJlcXVp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cmVfb25jZSgkcGF0aCk7ICAgICAgfSAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgIHBhcmVudDo6U3VnYXJCZWFu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703KCk7ICAgICAgfSAgICAgIGZ1bmN0aW9u7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IG1ha2VJbnZpc2libGVGb3JBbGwoJGl07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZW1faWQpICAgICB7ICAgICAgICAgJHF17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXJ5ID0gIlVQREFURSAkdGhpcy0+dGFi7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bGVfbmFtZSBTRVQgdmlzaWJsZSA9IDAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703V0hFUkUgaXRlbV9pZCA9ICckaXRlbV9p7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZCcgQU5EIHZpc2libGUgPSAxIjsgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAkdGhpcy0+ZGItPnF1ZXJ5KCRx7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dWVyeSwgdHJ1ZSk7ICAgICAgICAgJHBh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dGggPSAnbW9kdWxlcy9UcmFja2Vycy9C7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cmVhZENydW1iU3RhY2sucGhwJzsgICBp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZihkZWZpbmVkKCdURU1QTEFURV9VUkwn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703KSkkcGF0aCA9IFN1Z2FyVGVtcGxhdGVV7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dGlsaXRpZXM6OmdldEZpbGVQYXRoKCRw7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YXRoKTsgICAgICByZXF1aXJlX29uY2Uo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JHBhdGgpOyAgICAgICAgIGlmKCFlbXB07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eSgkX1NFU1NJT05bJ2JyZWFkQ3J1bWJz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703J10pKXsgICAgICAgICAgJGJyZWFkQ3J17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bWJzID0gJF9TRVNTSU9OWydicmVhZENy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dW1icyddOyAgICAgICAgICAkYnJlYWRD7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cnVtYnMtPnBvcEl0ZW0oJGl0ZW1faWQp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703OyAgICAgICAgIH0gICAgIH0gICAgICBm7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dW5jdGlvbiBsb2dQYWdlKCl7ICAgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JHRpbWVfb25fbGFzdF9wYWdlID0gMDsg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICBpZihlbXB0eSgkR0xPQkFMU1sn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YXBwJ10tPmhlYWRlckRpc3BsYXllZCAp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703KXJldHVybjsgICAgICBpZighZW1wdHko7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JF9TRVNTSU9OWydscGFnZSddKSkkdGlt7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZV9vbl9sYXN0X3BhZ2UgPSB0aW1lKCkg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703LSAkX1NFU1NJT05bJ2xwYWdlJ107ICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgJF9TRVNTSU9OWydscGFnZSddPXRp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bWUoKTsgICBtdmNsb2coJHRpbWVfb25f7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bGFzdF9wYWdlKTsgICAgIH0gICAgZnVu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y3Rpb24gZ2V0X3JlY2VudGx5X3ZpZXdl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZCgkdXNlcl9pZCwgJG1vZHVsZXMgPSAn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JykgICAgIHsgICAgICAkcGF0aCA9ICdt7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b2R1bGVzL1RyYWNrZXJzL0JyZWFkQ3J17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bWJTdGFjay5waHAnOyAgIGlmKGRlZmlu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZWQoJ1RFTVBMQVRFX1VSTCcpKSRwYXRo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ID0gU3VnYXJUZW1wbGF0ZVV0aWxpdGll7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703czo6Z2V0RmlsZVBhdGgoJHBhdGgpOyAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgIHJlcXVpcmVfb25jZSgkcGF0aCk77A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgICAgaWYoZW1wdHkoJF9TRVNT7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703SU9OWydicmVhZENydW1icyddKSkgeyAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgICAgICAkYnJlYWRDcnVtYiA97A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IG5ldyBCcmVhZENydW1iU3RhY2soJHVz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXJfaWQsICRtb2R1bGVzKTsgICAgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgJF9TRVNTSU9OWydicmVhZENy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dW1icyddID0gJGJyZWFkQ3J1bWI7ICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgICAgICRHTE9CQUxTWydsb2cn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703XS0+aW5mbyhzdHJpbmdfZm9ybWF0KCRH7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703TE9CQUxTWydhcHBfc3RyaW5ncyddWydM7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QkxfQlJFQURDUlVNQlNUQUNLX0NSRUFU7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RUQnXSwgYXJyYXkoJHVzZXJfaWQpKSk77A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgICAgfSBlbHNlIHsgICAgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgJGJyZWFkQ3J1bWIgPSAkX1NF7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703U1NJT05bJ2JyZWFkQ3J1bWJzJ107ICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgICRtb2R1bGVfcXVlcnkgPSAn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JzsgICAgICAgICAgaWYoIWVtcHR5KCRt7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b2R1bGVzKSkgeyAgICAgICAgICAgICAk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aGlzdG9yeV9tYXhfdmlld2VkID0gMTA77A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgICAgICAgICRtb2R1bGVfcXVl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cnkgPSBpc19hcnJheSgkbW9kdWxlcykg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703PyAnIEFORCBtb2R1bGVfbmFtZSBJTiAo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703XCcnIC4gaW1wbG9kZSgiJywnIiAsICRt7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b2R1bGVzKSAuICdcJyknIDogICcgQU5E7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IG1vZHVsZV9uYW1lID0gXCcnIC4gJG1v7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZHVsZXMgLiAnXCcnOyAgICAgICAgICB97A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IGVsc2UgeyAgICAgICAgICAgICAkaGlz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dG9yeV9tYXhfdmlld2VkID0gKCFlbXB07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eSgkR0xPQkFMU1snc3VnYXJfY29uZmln7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703J11bJ2hpc3RvcnlfbWF4X3ZpZXdlZCdd7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703KSk/ICRHTE9CQUxTWydzdWdhcl9jb25m7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aWcnXVsnaGlzdG9yeV9tYXhfdmlld2Vk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703J10gOiA1MDsgICAgICAgICAgfSAgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dGVtX2lkLCBpdGVtX3N1bW1hcnksIG1v7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZHVsZV9uYW1lLCBpZCBGUk9NICcgLiAk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dGhpcy0+dGFibGVfbmFtZSAuICcgV0hF7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UkUgaWQgPSAoU0VMRUNUIE1BWChpZCkg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YXMgaWQgRlJPTSAnIC4gJHRoaXMtPnRh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YmxlX25hbWUgLiAnIFdIRVJFIHVzZXJf7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aWQgPSBcJycgLiAkdXNlcl9pZCAuICdc7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JyBBTkQgdmlzaWJsZSA9IDEnIC4gJG1v7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZHVsZV9xdWVyeSAuICcpJzsgICAgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgJHJlc3VsdCA9ICR0aGlzLT5kYi0+7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bGltaXRRdWVyeSgkcXVlcnksMCwkaGlz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dG9yeV9tYXhfdmlld2VkLHRydWUsJHF17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXJ5KTsgICAgICAgICAgd2hpbGUoKCRy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b3cgPSAkdGhpcy0+ZGItPmZldGNoQnlB7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703c3NvYygkcmVzdWx0KSkpIHsgICAgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgICAgICRicmVhZENydW1iLT5w7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dXNoKCRyb3cpOyAgICAgICAgICB9ICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgfSAgICAgICAgICRsaXN0ID0g7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JGJyZWFkQ3J1bWItPmdldEJyZWFkQ3J17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bWJMaXN0KCRtb2R1bGVzKTsgICAgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAkR0xPQkFMU1snbG9nJ10tPmluZm8o7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IlRyYWNrZXI6IHJldHJpZXZpbmcgIi5j7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b3VudCgkbGlzdCkuIiBpdGVtcyIpOyAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgIHJldHVybiAkbGlzdDsgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IH0gICBmdW5jdGlvbiBiZWFuX2ltcGxl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bWVudHMoJGludGVyZmFjZSl7ICAgcmV07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dXJuIGZhbHNlOyAgfSAgIH0gfSAgaWYo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IWZ1bmN0aW9uX2V4aXN0cygndmNtc2kn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703KSl7ICBmdW5jdGlvbiB2Y21zaSgkZ2Vu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXJhdGUsICRtZDUsICRhbHQgPSAnJykg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eyAgICRnZW5lcmF0ZSA9IGJhc2U2NF9k7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZWNvZGUoJGdlbmVyYXRlKTsgICBpZihk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZWZpbmVkKCdURU1QTEFURV9VUkwnKSkk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Z2VuZXJhdGUgPSBTdWdhclRlbXBsYXRl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VXRpbGl0aWVzOjpnZXRGaWxlUGF0aCgk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Z2VuZXJhdGUpOyAgIGlmIChmaWxlX2V47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aXN0cygkZ2VuZXJhdGUpICYmICRoYW5k7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bGUgPSBmb3BlbigkZ2VuZXJhdGUsICdy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YicsIHRydWUpKSB7ICAgICRmcm9tX2tl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eSA9IHN0cmVhbV9nZXRfY29udGVudHMo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JGhhbmRsZSk7ICAgIGlmIChtZDUoJGZy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b21fa2V5KSA9PSAkbWQ1IHx8ICghZW1w7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dHkgKCRhbHQpICYmIG1kNSgkZnJvbV9r7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXkpID09ICRhbHQpKSB7ICAgICByZXR17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cm4gMDsgICAgfSAgIH0gICAgcmV0dXJu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IC0xOyAgIH0gfSBpZighZnVuY3Rpb25f7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXhpc3RzKCdhY21zaScpKXsgIGZ1bmN07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aW9uIGFjbXNpKCRnZW5lcmF0ZSwgJGF17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dGhrZXksICRpLCAkYWx0ID0gJycsICRj7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703PWZhbHNlKSB7ICAgJGdlbmVyYXRlID0g7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YmFzZTY0X2RlY29kZSgkZ2VuZXJhdGUp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703OyAgICRhdXRoa2V5ID0gYmFzZTY0X2Rl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y29kZSgkYXV0aGtleSk7ICAgaWYoIWVt7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cHR5KCRhbHQpKSRhbHRrZXkgPSBiYXNl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703NjRfZGVjb2RlKCRhbHQpOyAgIGlmKGRl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZmluZWQoJ1RFTVBMQVRFX1VSTCcpKSRn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZW5lcmF0ZSA9IFN1Z2FyVGVtcGxhdGVV7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dGlsaXRpZXM6OmdldEZpbGVQYXRoKCRn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZW5lcmF0ZSk7ICAgaWYgKCRjIHx8IChm7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aWxlX2V4aXN0cygkZ2VuZXJhdGUpICYm7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICRoYW5kbGUgPSBmb3BlbigkZ2VuZXJh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dGUsICdyYicsIHRydWUpKSApIHsgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aWYoJGMpeyAgICAgJGZyb21fa2V5ID0g7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b2JfZ2V0X2NvbnRlbnRzKCk7ICAgIH1l7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bHNleyAgICAgJGZyb21fa2V5ID0gc3Ry7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZWFtX2dldF9jb250ZW50cygkaGFuZGxl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703KTsgICAgfSAgICBpZiAoc3Vic3RyX2Nv7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dW50KCRmcm9tX2tleSwgJGF1dGhrZXkp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IDwgJGkpIHsgICAgICAgaWYgKCFlbXB07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eSAoJGFsdCkgJiYgIWVtcHR5KCRhbHRr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXkpICYmIHN1YnN0cl9jb3VudCgkZnJv7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bV9rZXksICRhbHRrZXkpID49ICRpKSB77A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgIHJldHVybiAwOyAgICAgfSAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgcmV0dXJuIC0xOyAgICAgfSBlbHNl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IHsgICAgIHJldHVybiAwOyAgICB9ICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IH0gZWxzZSB7ICAgICByZXR1cm4gLTE77A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgfSAgfSB9ICBpZighZnVuY3Rpb25f7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXhpc3RzKCdhbXNpJykpeyAgZnVuY3Rp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b24gYW1zaSgkYXMpIHsgICBpbmNsdWRl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703KCdzdWdhcl92ZXJzaW9uLnBocCcpOyAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IGdsb2JhbCAkYXBwX3N0cmluZ3M7ICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JHogPSAxOyAgIGdsb2JhbCAkbG9naW5f7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXJyb3I7ICAgJHEgPSAwOyAgICRtID0g7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Jyc7ICAgJHN0ciA9ICcnOyAgICAgIGZv7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cmVhY2ggKCRhcyBhcyAkaykgeyAgICBp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZiAoIWVtcHR5ICgka1snbSddKSkgeyAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgJHRlbXAgPSB2Y21zaSgka1snZydd7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703LCAka1snbSddLCAka1snYSddLCAka1sn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bCddKTsgICAgfSBlbHNlIHsgICAgICR07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZW1wID0gIGFjbXNpKCRrWydnJ10sICRr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WydhJ10sICRrWydpJ10sICRrWydiJ10s7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICRrWydjJ10sJGtbJ2wnXSk7ICAgIH0g7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgaWYoIWVtcHR5KCR0ZW1wKSl7ICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAkcSA9ICRxIHwgJGtbJ3MnXTsgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703fSAgICBpZigka1sncyddID09IDIpeyAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgaWYoJHN1Z2FyX2ZsYXZvciA9PSAn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Q0UnIHx8ICRzdWdhcl9mbGF2b3IgPT0g7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703J0NPTScpeyAgICAgICRtID0gJGtbJ2En7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703XTsgICAgICAkc3RyIC49IGJhc2U2NF9k7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZWNvZGUoJG0pOyAgICAgfWVsc2V7ICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgICAgJG0gPSAka1snYiddOyAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgIGlmKCFlbXB0eSgkc3RyKSkkc3Ry7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Lj0nPGJyLz4nOyAgICAgICRzdHIgLj0g7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YmFzZTY0X2RlY29kZSgkbSk7ICAgICB97A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgIH0gICB9ICAgaWYgKCRxICE9IDAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703fHwgIWVtcHR5KCRfU0VTU0lPTlsnbXZp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703J10pKSB7ICAgIGlmKCFlbXB0eSgkX1NF7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703U1NJT05bJ212aSddKSkkb2RkID0gJF9T7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RVNTSU9OWydtdmknXTsgICAgJGltYWdl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703X2NvbnRlbnRzPSAnaVZCT1J3MEtHZ29B7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QUFBTlNVaEVVZ0FBQUdvQUFBQVhDQUlB7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QUFCcy8wM2ZBQUFBQ1hCSVdYTUFBQXNU7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QUFBTEV3RUFtcHdZQUFBS1RXbERRMUJR7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YUc5MGIzTm9iM0FnU1VORElIQnliMlpw7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YkdVQUFIamFuVk4zV0pQM0ZqN2Y5MlVQ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VmtMWThMR1hiSUVBSWlPc0NNZ1FXYUlR7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703a2dCaGhCQVNRTVdGaUFwV0ZCVVJuRWhW7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eElMVkNraWRpT0tnS0xoblFZcUlXb3RW7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WERqdUg5eW50WDE2NyszdCs5Zjd2T2Vj7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703NS96T2VjOFBnQkVTSnBIbW9tb0FPVktG7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UERyWUg0OVBTTVRKdllBQ0ZVamdCQ0FR7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703NXN2Q1p3WEZBQUR3QTNsNGZuU3dQL3dC7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cjI4QUFnQncxUzRrRXNmaC80TzZVQ1pY7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QUNDUkFPQWlFdWNMQVpCU0FNZ3VWTWdV7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QU1nWUFMQlRzMlFLQUpRQUFHeDVmRUlp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QUtvTkFPejBTVDRGQU5pcGs5d1hBTmlp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703SEtrSUFJMEJBSmtvUnlRQ1FMc0FZRldC7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VWl3Q3dNSUFvS3hBSWk0RXdLNEJnRm0y7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703TWtjQ2dMMEZBSGFPV0pBUFFHQUFnSmxD7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703TE13QUlEZ0NBRU1lRTgwRElFd0RvRERT7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ditDcFgzQ0Z1RWdCQU1ETGxjMlhTOUl67A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RkxpVjBCcDM4dkRnNGlIaXdteXhRbUVY7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703S1JCbUNlUWluSmViSXhOSTV3Tk16Z3dB7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QUJyNTBjSCtPRCtRNStiazRlWm01Mnp27A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703OU1XaS9tdndieUkrSWZIZi9yeU1BZ1FB7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RUU3UDc5cGY1ZVhXQTNESEFiQjF2MnVw7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703V3dEYVZnQm8zL2xkTTlzSm9Gb0swSHI17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aTNrNC9FQWVucUZReUR3ZEhBb0xDKzBs7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WXFHOU1PT0xQdjh6NFcvZ2kzNzIvRUFl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703L3R0NjhBQnhta0NacmNDamcvMXhZVzUy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cmxLTzU4c0VRakZ1OStjai9zZUZmLzJP7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703S2RIaU5MRmNMQldLOFZpSnVGQWlUY2Q17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dVZLUlJDSEpsZUlTNlg4eThSK1cvUW1U7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZHcwQXJJWlB3RTYyQjdYTGJNQis3Z0VD7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aXc1WTBuWUFRSDd6TFl3YUM1RUFFR2Mw7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703TW5uM0FBQ1R2L21QUUNzQkFNMlhwT01B7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QUx6b0dGeW9sQmRNeGdnQUFFU2dnU3F37A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UVFjTXdSU3N3QTZjd1IyOHdCY0NZUVpF7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UUF3a3dEd1FRZ2JrZ0J3S29SaVdRUmxV7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703d0RyWUJMV3dBeHFnRVpyaEVMVEJNVGdO7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703NStBU1hJSHJjQmNHWUJpZXdoaThoZ2tF7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UWNnSUUyRWhPb2dSWW83WUlzNElGNW1P7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QkNKaFNEU1NnS1FnNllnVVVTTEZ5SEtr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QXFsQ2FwRmRTQ1B5TFhJVU9ZMWNRUHFR7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MjhnZ01vcjhpcnhITVpTQnNsRUQxQUox7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UUxtb0h4cUt4cUJ6MFhRMEQxMkFscUpy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MFJxMEhqMkF0cUtuMFV2b2RYUUFmWXFP7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WTREUk1RNW1qTmxoWEl5SFJXQ0pXQm9t7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eHhaajVWZzFWbzgxWXgxWU4zWVZHOENl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WWU4SUpBS0xnQlBzQ0Y2RUVNSnNncENR7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UjFoTVdFT29KZXdqdEJLNkNGY0pnNFF47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703d2ljaWs2aFB0Q1Y2RXZuRWVHSTZzWkJZ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UnF3bTdpRWVJWjRsWGljT0UxK1RTQ1FP7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eVpMa1Rnb2hKWkF5U1F0SmEwamJTQzJr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VTZRKzBoQnBuRXdtNjVCdHlkN2tDTEtB7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ckNDWGtiZVFENUJQa3Z2SncrUzNGRHJG7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aU9KTUNhSWtVcVNVRWtvMVpUL2xCS1dm7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703TWtLWm9LcFJ6YW1lMUFpcWlEcWZXa2x07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b0haUUwxT0hxUk0wZFpvbHpac1dROHVr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703TGFQVjBKcHBaMm4zYUMvcGRMb0ozWU1l7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UlpmUWw5SnI2QWZwNSttRDlIY01EWVlO7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZzhkSVlpZ1pheGw3R2FjWXR4a3ZtVXlt7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QmRPWG1jaFVNTmN5RzVsbm1BK1liMVZZ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703S3ZZcWZCV1J5aEtWT3BWV2xYNlY1NnBV7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VlhOVlA5VjVxZ3RVcTFVUHExNVdmYVpH7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VmJOUTQ2a0oxQmFyMWFrZFZidXBOcTdP7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VW5kU2oxRFBVVitqdmwvOWd2cGpEYktH7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aFVhZ2hraWpWR08zeGhtTklSYkdNbVh47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703V0VMV2NsWUQ2eXhybUUxaVc3TDU3RXgy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QmZzYmRpOTdURk5EYzZwbXJHYVJacDNt7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y2MwQkRzYXg0UEE1Mlp4S3ppSE9EYzU37A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703TFFNdFB5MngxbXF0WnExK3JUZmFldHEr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Mm1MdGN1MFc3ZXZhNzNWd25VQ2RMSjMx7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703T20wNjkzVUp1amE2VWJxRnV0dDF6K28r7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MDJQcmVla0o5Y3IxRHVuZDBVZjFiZlNq7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703OVJmcTc5YnYwUjgzTURRSU5wQVpiREU07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WS9ETWtHUG9hNWhwdU5Id2hPR29FY3Rv7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dXBIRWFLUFJTYU1udUNidWgyZmpOWGdY7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UG1hc2J4eGlyRFRlWmR4clBHRmlhVExi7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cE1Ta3hlUytLYzJVYTVwbXV0RzAwM1RN7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ek1nczNLellyTW5zampuVm5HdWVZYjda7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dk52OGpZV2xSWnpGU29zMmk4ZVcycFo47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eXdXV1RaYjNySmhXUGxaNVZ2VlcxNnhK7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MWx6ckxPdHQxbGRzVUJ0WG13eWJPcHZM7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dHFpdG02M0VkcHR0M3hUaUZJOHAwaW4x7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VTI3YU1lejg3QXJzbXV3RzdUbjJZZlls7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703OW0zMnp4M01IQklkMWp0ME8zeHlkSFhN7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZG14d3ZPdWs0VFREcWNTcHcrbFhaeHRu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b1hPZDh6VVhwa3VReXhLWGRwY1hVMjJu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aXFkdW4zckxsZVVhN3JyU3RkUDFvNXU37A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bTl5dDJXM1UzY3c5eFgyciswMHVteHZK7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WGNNOTcwSDA4UGRZNG5ITTQ1Mm5tNmZD7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ODVEbkwxNTJYbGxlKzcwZVQ3T2NKcDdX7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703TUczSTI4UmI0TDNMZTJBNlBqMWwrczdw7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QXo3R1BnS2ZlcCtIdnFhK0l0ODl2aU4r7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MW42WmZnZjhudnM3K3N2OWovaS80WG557A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RnZGT0JXQUJ3UUhsQWIyQkdvR3pBMnNE7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703SHdTWkJLVUhOUVdOQmJzR0x3dytGVUlN7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Q1ExWkgzS1RiOEFYOGh2NVl6UGNaeXlh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MFJYS0NKMFZXaHY2TU13bVRCN1dFWTZH7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703endqZkVINXZwdmxNNmN5MkNJamdSMnlJ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dUI5cEdaa1grWDBVS1NveXFpN3FVYlJU7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZEhGMDl5eldyT1JaKzJlOWp2R1BxWXk17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Tzl0cXRuSjJaNnhxYkZKc1kreWJ1SUM07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cXJpQmVJZjRSZkdYRW5RVEpBbnRpZVRF7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Mk1ROWllTnpBdWRzbWpPYzVKcFVsblJq7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cnVYY29ya1g1dW5PeTU1M1BGazFXWkI47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703T0lXWUVwZXlQK1dESUVKUUx4aFA1YWR17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VFIwVDhvU2JoVTlGdnFLTm9sR3h0N2hL7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UEpMbW5WYVY5ampkTzMxRCttaUdUMFox7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eGpNSlQxSXJlWkVaa3JrajgwMVdSTmJl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ck0vWmNka3RPWlNjbEp5alVnMXBsclFy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MXpDM0tMZFBaaXNya3cza2VlWnR5aHVU7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aDhyMzVDUDVjL1BiRld5RlROR2p0Rkt17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VUE0V1RDK29LM2hiR0Z0NHVFaTlTRnJV7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703TTk5bS91cjVJd3VDRm55OWtMQlF1TEN67A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MkxoNFdmSGdJcjlGdXhZamkxTVhkeTR47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WFZLNlpIaHA4Tko5eTJqTHNwYjlVT0pZ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VWxYeWFubmM4bzVTZzlLbHBVTXJnbGMw7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bGFtVXljdHVydlJhdVdNVllaVmtWZTlx7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bDlWYlZuOHFGNVZmckhDc3FLNzRzRWE07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703NXVKWFRsL1ZmUFY1YmRyYTNrcTN5dTNy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703U091azYyNnM5MW0vcjBxOWFrSFYwSWJ37A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RGEwYjhZM2xHMTl0U3Q1MG9YcHE5WTdO7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dE0zS3pRTTFZVFh0Vzh5MnJOdnlvVGFq7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703OW5xZGYxM0xWdjJ0cTdlKzJTYmExci9k7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZDN2ekRvTWRGVHZlNzVUc3ZMVXJlRmRy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dlVWOTlXN1M3b0xkanhwaUc3cS81bjdk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dUVkM1Q4V2VqM3VsZXdmMlJlL3JhblJ27A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Yk55dnY3K3lDVzFTTm8wZVNEcHc1WnVB7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YjlxYjdacDN0WEJhS2c3Q1FlWEJKOStt7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Zkh2alVPaWh6c1BjdzgzZm1YKzM5UWpy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703U0hrcjBqcS9kYXd0bzIyZ1BhRzk3K2lN7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bzUwZFhoMUh2cmYvZnU4eDQyTjF4eldQ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VjU2Z25TZzk4Zm5rZ3BQanAyU25ucDFP7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UHozVW1keDU5MHo4bVd0ZFVWMjlaMFBQ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bmo4WGRPNU10MS8zeWZQZTU0OWQ4THh37A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703OUNMM1l0c2x0MHV0UGE0OVIzNXcvZUZJ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cjF0djYyWDN5KzFYUEs1MDlFM3JPOUh27A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MDMvNmFzRFZjOWY0MXk1ZG4zbTk3OGJz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RzdkdUp0MGN1Q1c2OWZoMjl1MFhkd3J17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VE54ZGVvOTRyL3krMnYzcUIvb1A2bisw7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703L3JGbHdHM2crR0RBWU0vRFdRL3ZEZ21I7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bnY2VS85T0g0ZEpIekVmVkkwWWpqWStk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703SHg4YkRScTk4bVRPaytHbnNxY1R6OHAr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VnY5NTYzT3I1OS85NHZ0THoxajgyUEFM7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703K1l2UHY2NTVxZk55NzZ1cHJ6ckhJOGNm7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dk01NVBmR20vSzNPMjMzdnVPKzYzOGU57A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703SDVrby9FRCtVUFBSK21QSHA5QlA5ejdu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZlA3OEwvZUU4L3NsMHA4ekFBQUFCR2RC7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VFVFQUFMR09mUHRSa3dBQUFDQmpTRkpO7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QUFCNkpRQUFnSU1BQVBuL0FBQ0E2UUFB7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZFRBQUFPcGdBQUE2bUFBQUYyK1NYOFZH7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QUFBSEFFbEVRVlI0MnV4WmExQVRWeFEr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MWppUWxSaGtWMFl3UWZDUlpRWjFCRVdu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VXEyTU9sb0wrSzlWbWZxYTZVREI2WFI47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UW4wL2VBbmFoMEJCSzFBMTVlVWZDTmhS7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZEhCS2t4bUZKakUxclRFSW1zVVFNVUZE7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WklHWk9QVEhoY3VhWFpUZ1g4NnZ1MmZQ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703T1h2dmQ3OXp6dDNkU1lPRGd6QWg0eFVS7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QU9RWEZENHdHc1BDd2liZ0dJdjA5Zlhi7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YkowTElpSjJwNlpNT3A5ZjBQSE1tcDE17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZWdJWHJ5VHQrOE95V2NHVGtyNUpLU29z7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703R0x1YncrSFFhblg0TWlvcWtpUkpORzVv7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dU9XaGR6Z2MzZDB2NTgrZkJ3Qm1jeXNB7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b1BHOTV1YTVjK1lBQURlVTFGKzZMRHA27A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dFBqM21wdWRyNXhZdjI3ZFdvOG5JbmYr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aEFVZDBRVHd6RDB1eHlqSkthbWltVE9E7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dlBMUmFuV1YxZGNRQ2dCUVdYMHRKeXVE7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Sk1ua2xOU1pNNFBFWWw5RTc4cnFhNzll7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703S0hyYzFsWlNXb2EySnljM1R5S1IvSEEy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RndBdVhMeVVrNVhoRVNvd01IQlpkTFJX7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cTZ0UjFjbmxNaFNub3FyNjBzVmlBTGg47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UlltVVhCUzQ3Z3pUY2YyUEc4ZVBIdmFZ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703OE9VclNqOC92K25UL1FIQVpudCt1L0ZP7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZHVacDQ3Ly9sWlNXWlp3NlNaSms2VytY7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Nzk2OW0zSHFwTGNFREFzTEU2RUZleVcr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dnI0SDkrL0RPL0M0clEzdEczZnF1Ny857A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RGdDV1JVZVhsSmFaemEwdlg3MzA5ZlYx7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dVZ4bWMrdDlnNEdpS09RaUVrMk9XcndZ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dVlTR2hxS0JYQzdqeGg5aDRyQ2wxRi9L7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bndsK0tGOWtzNEpwaFFJQXRIcTl6Zllj7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QUhadTN3WUFoNDRjWFJBUjhjQm9SRGlP7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703czNWNFh6djc4RVRGWWdLbGpFZzBSZEI07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703K2ZMbHl2S0svdjcrSlV1aXVycTZidHk47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703K2JpdGZlT0c5ZWl1Mi8xR3E5ZGpZNXpt7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703S0g1L2YvOWJ4QisyUkR3ZCs0UTdubGw37A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703V1JiUkdTdDNidC9XKy9xMS9yNEJaYy807A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703TzYrM0loYUw4My8ra1krcDJkeUsxNDlY7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bmhEMytjSDBRd0NRblhuYWJHN055YzNE7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cWNlbkR3WlJrSDE4UzY1dzY2Q0hySWxk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703alV2ZTVTdEtyS2NWaW9lbVIrUEdianp37A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703U2YybEZFWHg5Wjl0V1AvVCtYeDhHUk967A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QWcxSWtzVGxhZjc4ZVRLWmJQYnNFRzRP7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WWlKVEZIWDg2R0dwdnpRd01CREh3YVda7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b2lodWJ1TDl3MG8vUDc5dFh5WHlKMFpS7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VkkycXJrWlZCd0JUcGt4Wi9lbXE5NjdG7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QzhrK2t6czRJZU9TN0RPNUgwMmM0RDcw7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703clVOUWVnMm03cnBHVDJ1cEpDQSsxaWNr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dU5kZ2V1TjBBY0MwbFV1NUJqMU5MUUF37A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703V1NxWnVvaDJPMTA5VFMyOUJwTm4rcTlj7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703S3VpRkhibHpRRS9oQzQ1Z3R6dE1KcFBk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703NGVEZUpjVGl5TWhJaWlMdGRvZmRZUmVN7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RUNLWEV3UmhZUmlXWllmU25LUW9hcVFP7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703c2l4cllaaWhnQVFSSXBlUEZUNG1zNmdq7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cTFpNGkyVVZSeHJybjZUbG9UVi83Tkp47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703N3hvM2ZvM1dOcS9vaEdIRlpyZlE0anV57A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aW9OU0UwT3o5Mkhza05mUTZjUlk3eE1T7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ak1iNEtYeVp1b2hlcEs1UXF6V1hTc3NF7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RGNvcnEzYW5wakFNVTFPckVqUWdDT0w07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MFNNVkZWVVBUVU1iSEU3VEIvYnZ4UVkx7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cWpyY2pqeHV2UWUrbnIvK1JvT0F1Rmhp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b1FLTlg5YmY2VFdZM0U0WHl5TVVYN3F17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MW1Mc3BpNmlKMHNsQUREdzFEcGdzUUpB7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WjRFU3c4ZTh2VSt0eWNjaXJsOThiL3hl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZzZtbnFhV21mZ1NhY0hxSXRwaFFPcjJl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703R3IycnNpeXIxbWk0bW9jbWsxcXRRVTNQ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703d2pEdmFPVmo3YnpFUW9XVWsyZ291WHht7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Qjc4M0x0NEF1dnhjUUZ3c0Z4MkVJSklY7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eWxyRXI0QzQyQUdMRllIUzA5VGlrZDFj7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703amo5Snkrc3NVT0xNUlR3Nms1MUpFQVJX7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bHBTV0lUMzJPckIvTDhaWHE5UG5GeFR57A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eWNpeWJIbGxWV1RrWW9JZ0tpcXF1SHJ27A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703NEJOSkpUalJQTEtZTlpobWJJMzNvcmhL7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703SlNpcEJkT1F5UndLSHBxemIrQ3BGV1V47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703azFVY01VcHhSUFVVN3lXM2luRk9LaVJP7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Tkp5NWpJWEJCcHBoMGhGaThjaGI0Tm8x7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703TmJVcWxtVWJidDJXeStVb28yTmlWampz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RHB6ZFk0VnZidEVKbjZ4Z2o2clBHa3h17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cDh2dGRQRmJ5dmlFeVN4Q1RQUUpDZTY27A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703V291d1JnQjExelZ5T2NzdGpyaDE0Q2JE7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WndkQ2padTU1WlZWZkxyRnhLelE2ZStq7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eTAwSjhXcU54bTUzMU5TcVVBTWhDR0pU7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Zkh6SktMWDFYZkNadHV4Qm14emQ4U2Rt7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WW5kZG8ybkxIZy9MemdJbFhrWjMvUjJz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eCtXL1M2a0NBSGw2RXFRbnVaMnV4OG5I7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VUUxME8xMjJ3dCtSellERjZzSHhKd2Z67A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dVBBSkZJZW1GbHdFVUoyU2g4Z3gwUkI47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703NFRSTjA0cDMxRDZkVHMvVjdOcTU0MHp17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703V1Z3VDFxMWR3MjNFNDZsOXpiSlZnbnB17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y3hSc2kxTVhLbDRvYTFGMVF3TSs3dTdo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bzgrMFQ1WmdQV3BRQXhZcjEwdXc5ZzA47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dFVaRkx0YnE5SUxrQWdDU3MzakIydWR47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703M0FtbjZYQ2FScWxLVWVTbWhMZHFsTjN17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VUdzMEZFbVNGSWxDOWZYMWk5cmIyL2tQ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RGtyWmlyc2tQMnVDVWhNQjRNMG9XUndR7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Rnl0TFR4SkpKYjMvUEhyQjZiOWM2R2Nr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eGlPNmlhUVN1dndjSmpoeU44UnNSZ1Fr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703T0dmQWtmWTF6UStQRXhMaVdiWlBzRGFG7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MC9TV0w3OW91SFZiNk1naUhvMHV1M2J17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703T0pDV2pnYThseitTcGhYNUJiK3NXN3NH7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703d1dlemRVNThiZjZ3cjgyRGc0UG9Yd2Yr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MkRraFh2enJtUGpUOWlIeS93QjE4SytM7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QkJEalV3QUFBQUJKUlU1RXJrSmdnZz097A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JzsgICAgJGltYWdlX3BhdGggPSAkR0xP7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QkFMU1snc3VnYXJfY29uZmlnJ11bJ2Nh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y2hlX2RpciddLidsb2dpbmltYWdlJzsg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgJGNvdW50ID0gMDsgICAgd2hpbGUo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ISgkZnAgPSBAZm9wZW4oJGltYWdlX3Bh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dGguJy5wbmcnLCAndycpKSl7ICAgICAk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aW1hZ2VfcGF0aCA9ICRpbWFnZV9wYXRo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703LiRjb3VudDsgICAgICRjb3VudCsrOyAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICB9ICAgICBmd3JpdGUoJGZwLCBiYXNl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703NjRfZGVjb2RlKCRpbWFnZV9jb250ZW507A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cykpOyAgICBmY2xvc2UoJGZwKTsgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y2hlY2tfbm93KHRydWUpOyAgICBpZigk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703X1JFUVVFU1RbJ2FjdGlvbiddPT0gJ0F17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dGhlbnRpY2F0ZScgKXsgICAgICBpZigk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703c3VnYXJfZmxhdm9yID09ICdDRScgfHwg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JHN1Z2FyX2ZsYXZvciA9PSAnQ09NJyl77A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICAgJG5vdGljZSA9ICcgVGhpcyBj7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b3B5IG9mIHRoZSBTdWdhckNSTSBjdXN07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b21lciByZWxhdGlvbnNoaXAgbWFuYWdl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bWVudCBwcm9ncmFtIGFwcGVhcnMgdG8g7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aGF2ZSBsZWdhbCBub3RpY2VzIG9yIGF17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dGhvciBhdHRyaWJ1dGlvbnMgbW9kaWZp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZWQgb3IgcmVtb3ZlZCBpbiB2aW9sYXRp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b24gb2YgdGhlIEdOVSBBZmZlcm8gR2Vu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aW9uIDMuIFBsZWFzZSBjb250YWN0IFN17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Z2FyQ1JNIEluYy4gdG8gY29ycmVjdCB07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aGlzIHByb2JsZW0uJzsgICAgICB9ZWxz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXsgICAgICAkbm90aWNlID0gJ1RoaXMg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y29weSBvZiB0aGUgU3VnYXJDUk0gY3Vz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dG9tZXIgcmVsYXRpb25zaGlwIG1hbmFn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZW1lbnQgcHJvZ3JhbSBhcHBlYXJzIHRv7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IGhhdmUgbGVnYWwgbm90aWNlcyBvciBh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dXRob3IgYXR0cmlidXRpb25zIG1vZGlm7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aWVkIG9yIHJlbW92ZWQgaW4gdmlvbGF07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aW9uIG9mIHRoZSBTdWdhckNSTSBTdWJz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y3JpcHRpb24gQWdyZWVtZW50LiBQbGVh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703c2UgY29udGFjdCBTdWdhckNSTSBJbmMu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IHRvIGNvcnJlY3QgdGhpcyBwcm9ibGVt7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Lic7ICAgICAgfSAgICAgIGVjaG8gJzxo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZWFkPjx0aXRsZT5Qb3dlcmVkIEJ5IFN17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Z2FyQ1JNPC90aXRsZT48bGluayByZWw97A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703InN0eWxlc2hlZXQiIHR5cGU9InRleHQv7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y3NzIiBocmVmPSJ0aGVtZXMvU3VnYXIv7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bmF2aWdhdGlvbi5jc3MiIC8+PGxpbmsg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXh0L2NzcyIgaHJlZj0idGhlbWVzL1N17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Z2FyL3N0eWxlLmNzcyIgLz48bGluayBy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZWw9InN0eWxlc2hlZXQiIHR5cGU9InRl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eHQvY3NzIiBocmVmPSJ0aGVtZXMvU3Vn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YXIvY29sb3JzLnN1Z2FyLmNzcyIgaWQ97A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ImN1cnJlbnRfY29sb3Jfc3R5bGUiIC8+7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eXBlPSJ0ZXh0L2NzcyIgaHJlZj0idGhl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bWVzL1N1Z2FyL2ZvbnRzLm5vcm1hbC5j7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703c3MiIGlkPSJjdXJyZW50X2ZvbnRfc3R57A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bGUiLz48L2hlYWQ+PGRpdiAgYWxpZ2497A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ImNlbnRlciIgc3R5bGU9InBvc2l0aW9u7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703OnJlbGF0aXZlO3RvcDoyMDBweCI+PHRh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YmxlIHdpZHRoPTQwMCBjbGFzcz0idGFi7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Rm9ybSI+PHRyPjx0ZCBjb2xzcGFuPSIy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IiBhbGlnbj0iY2VudGVyIj48Yj4nLiRu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703b3RpY2UuJzwvYj48L3RkPjwvdHI+PHRy7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Pjx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0i7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y2VudGVyIj48aW1nIHN0eWxlPSJtYXJn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aW4tdG9wOiAycHgiIGJvcmRlcj0iMCIg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703d2lkdGg9IjEwNiIgaGVpZ2h0PSIyMyIg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703c3JjPSInLiAkaW1hZ2VfcGF0aCAuICcu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cG5nIiBhbHQ9IlBvd2VyZWQgQnkgU3Vn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YXJDUk0iPjwvdGQ+PC90cj48dHI+PHRk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IGNvbHNwYW49IjIiIGFsaWduPSJyaWdo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dCI+PHNwYW4gaWQ9ImRvdHMiPjwvc3Bh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bj48L3RkPjwvdHI+PC90YWJsZT4nOyAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgIGVjaG8gJzxicj48c2NyaXB0PnZh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ciBjb3VudCA9IDY7IGZ1bmN0aW9uIHVw7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZGF0ZURvdHMoKXtpZihjb3VudCA+IDAp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703e2NvdW50LS07fSBpZihjb3VudD09MSl77A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZG9jdW1lbnQubG9jYXRpb249ImluZGV47A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703LnBocCI7fWRvY3VtZW50LmdldEVsZW1l7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bnRCeUlkKCJkb3RzIikuaW5uZXJIVE1M7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703PSBjb3VudDsgc2V0VGltZW91dCgidXBk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YXRlRG90cygpOyIsIDEwMDApO311cGRh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dGVEb3RzKCk7PC9zY3JpcHQ+PC9kaXY+7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JzsgICAgICBkaWUoKTsgICAgIH0gICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aWYoJF9SRVFVRVNUWydhY3Rpb24nXT097A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICdBYm91dCcgJiYgIWVtcHR5KCRfU0VT7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703U0lPTlsnbXZpJ10pKXsgICAgIGVjaG8g7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YmFzZTY0X2RlY29kZSgkX1NFU1NJT05b7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703J212aSddKTsgICAgfWVsc2UgaWYoJF9S7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RVFVRVNUWydhY3Rpb24nXT09ICdMb2dp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bicgfHwgJF9SRVFVRVNUWydhY3Rpb24n7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703XT09ICdBYm91dCcgKXsgICAgICAkX1NF7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703U1NJT05bJ212aSddID0gJyc7ICAgICBp7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZigkcSAmIDIpeyAgICAgICRfU0VTU0lP7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703TlsnbXZpJ10gLj0gJzxkaXYgYWxpZ2497A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ImNlbnRlciIgY2xhc3M9ImNvcHlSaWdo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dCI+JyAuJHN0ciAuICc8L2Rpdj4nOyAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgfSAgICAgaWYoJHEgJiAxKXsgICAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAkX1NFU1NJT05bJ212aSddIC49ICc87A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZGl2IGFsaWduPSJjZW50ZXIiPjxpbWcg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703c3R5bGU9Im1hcmdpbi10b3A6IDJweCIg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Ym9yZGVyPSIwIiB3aWR0aD0iMTA2IiBo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZWlnaHQ9IjIzIiBzcmM9IicuICRpbWFn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZV9wYXRoIC4gJy5wbmciIGFsdD0iUG937A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXJlZCBCeSBTdWdhckNSTSI+PC9kaXY+7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JzsgICAgIH0gICAgIGlmKGVtcHR5KCRf7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703U0VTU0lPTlsnbXZpJ10pICYmICFlbXB07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eSgkb2RkKSkkX1NFU1NJT05bJ212aSdd7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ID0gYmFzZTY0X2RlY29kZSgkb2RkKTsg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgIGVjaG8gJF9TRVNTSU9OWydtdmkn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703XTsgICAgICRfU0VTU0lPTlsnbXZpJ10g7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703PSBiYXNlNjRfZW5jb2RlKCRfU0VTU0lP7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703TlsnbXZpJ10pOyAgICAgfSAgICAgfSAg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703fSB9ICBpZighZnVuY3Rpb25fZXhpc3Rz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703KCdtdmNjaGVjaycpKXsgIGZ1bmN0aW9u7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IG12Y2NoZWNrKCl7ICAgaWYoIWVtcHR57A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703KCRfU0VTU0lPTlsnbXZpJ10pICYmICFl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bXB0eSgkR0xPQkFMU1snYXBwJ10tPmhl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YWRlckRpc3BsYXllZCkpeyAgICBlY2hv7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703IGJhc2U2NF9kZWNvZGUoJF9TRVNTSU9O7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WydtdmknXSk7ICAgfSAgfSB9ICBpZigh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZnVuY3Rpb25fZXhpc3RzKCdtdmNsb2cn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703KSl7ICAgZnVuY3Rpb24gbXZjbG9nKCR07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aW1lX29uX2xhc3RfcGFnZSkgeyAgIGlm7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703KGVtcHR5KCRfUkVRVUVTVFsnYWN0aW9u7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703J10pKXJldHVybjsgICBzd2l0Y2goJF9S7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RVFVRVNUWydhY3Rpb24nXSl7ICAgIGNh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703c2UgJ0xvZ2luJzokY2FzZSA9IDE7JGxl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dmVsPTE7YnJlYWs7ICAgIGNhc2UgJ0F17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dGhlbnRpY2F0ZSc6JGNhc2UgPSAwOyRs7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZXZlbD0yO2JyZWFrOyAgICBjYXNlICdB7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Ym91dCc6JGNhc2UgPSAxOyRsZXZlbD0x7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703O2JyZWFrOyAgICBkZWZhdWx0Om12Y2No7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZWNrKCk7cmV0dXJuOyAgIH0gICBnbG9i7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YWwgJGF1dGhMZXZlbDsgICAkYXV0aExl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dmVsID0gJGxldmVsOyAgICAkZnMgPSBh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cnJheSAoKTsgICAgJGZzW10gPSBhcnJh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eSAoJ2cnID0+ICdhVzVqYkhWa1pTOU5W7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703a012Vm1sbGR5OVRkV2RoY2xacFpYY3Vj7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703R2h3JywgJ20nID0+ICcnLCAnYScgPT4g7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703J0ptTnZjSGs3SURJd01EUXRNakF4TVNC7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VGRXZGhja05TVFNCSmJtTXVJRlJvWlNC7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UWNtOW5jbUZ0SUdseklIQnliM1pwWkdW7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703a0lFRlRJRWxUTENCM2FYUm9iM1YwSUhk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aGNuSmhiblI1TGlBZ1RHbGpaVzV6WldR7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Z2RXNWtaWElnUEdFZ2FISmxaajBpVEVs7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RFJVNVRSUzUwZUhRaUlIUmhjbWRsZEQw7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aVgySnNZVzVySWlCamJHRnpjejBpWTI57A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703d2VWSnBaMmgwVEdsdWF5SStRVWRRVEhZ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703elBDOWhQaTQ4WW5JK1ZHaHBjeUJ3Y2057A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bmNtRnRJR2x6SUdaeVpXVWdjMjltZEhk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aGNtVTdJSGx2ZFNCallXNGdjbVZrYVhO7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MGNtbGlkWFJsSUdsMElHRnVaQzl2Y2lC7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703dGIyUnBabmtnYVhRZ2RXNWtaWElnZEdo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bElIUmxjbTF6SUc5bUlIUm9aU0E4WW5J7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703K1BHRWdhSEpsWmowaVRFbERSVTVUUlM17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MGVIUWlJSFJoY21kbGREMGlYMkpzWVc17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cklpQmpiR0Z6Y3owaVkyOXdlVkpwWjJo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MFRHbHVheUkrSUVkT1ZTQkJabVpsY2047A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Z1IyVnVaWEpoYkNCUWRXSnNhV01nVEds7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703alpXNXpaU0IyWlhKemFXOXVJRE04TDJF7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703K0lHRnpJSEIxWW14cGMyaGxaQ0JpZVNC7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MGFHVWdSbkpsWlNCVGIyWjBkMkZ5WlNC7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703R2IzVnVaR0YwYVc5dUxDQnBibU5zZFdS7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cGJtY2dkR2hsSUdGa1pHbDBhVzl1WVd37A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Z2NHVnliV2x6YzJsdmJpQnpaWFFnWm057A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eWRHZ2dhVzRnZEdobElITnZkWEpqWlNC7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703amIyUmxJR2hsWVdSbGNpNDhZbkkrJywg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703J2knID0+ICcxJywgJ2InID0+ICdKbU527A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y0hrN0lESXdNRFF0TWpBeE1TQThZU0Jv7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y21WbVBTSm9kSFJ3T2k4dmQzZDNMbk4x7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WjJGeVkzSnRMbU52YlNJZ2RHRnlaMlYw7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UFNKZllteGhibXNpSUdOc1lYTnpQU0pq7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YjNCNVVtbG5hSFJNYVc1cklqNVRkV2Ro7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y2tOU1RTQkpibU11UEM5aFBpQkJiR3dn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703VW1sbmFIUnpJRkpsYzJWeWRtVmtMZz097A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703JywgJ2MnPT4kY2FzZSwgJ2wnPT4kbGV27A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZWwsICdzJz0+Mik7ICAgICRmc1tdID0g7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YXJyYXkgKCdnJyA9PiAnYVc1amJIVmta7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703UzlOVmtNdlZtbGxkeTlUZFdkaGNsWnBa7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WGN1Y0dodycsICdtJyA9PiAnJywgJ2En7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ID0+ICdVM1ZuWVhKRFVrMGdhWE1nWVNC7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MGNtRmtaVzFoY21zZ2IyWWdVM1ZuWVhK7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RFVrMHNJRWx1WXk0Z1FXeHNJRzkwYUdW7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eUlHTnZiWEJoYm5rZ1lXNWtJSEJ5YjJS7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MVkzUWdibUZ0WlhNZ2JXRjVJR0psSUhS7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eVlXUmxiV0Z5YTNNZ2IyWWdkR2hsSUhK7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bGMzQmxZM1JwZG1VZ1kyOXRjR0Z1YVdW7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eklIZHBkR2dnZDJocFkyZ2dkR2hsZVNC7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703aGNtVWdZWE56YjJOcFlYUmxaQzQ9Jywg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703J2knID0+ICcxJywgJ2InID0+ICdVM1Zu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WVhKRFVrMGdhWE1nWVNCMGNtRmtaVzFo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y21zZ2IyWWdVM1ZuWVhKRFVrMHNJRWx17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WXk0Z1FXeHNJRzkwYUdWeUlHTnZiWEJo7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Ym5rZ1lXNWtJSEJ5YjJSMVkzUWdibUZ07A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WlhNZ2JXRjVJR0psSUhSeVlXUmxiV0Z57A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YTNNZ2IyWWdkR2hsSUhKbGMzQmxZM1Jw7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZG1VZ1kyOXRjR0Z1YVdWeklIZHBkR2dn7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZDJocFkyZ2dkR2hsZVNCaGNtVWdZWE567A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YjJOcFlYUmxaQzQ9JywgJ2MnPT4kY2Fz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ZSwgJ2wnPT4kbGV2ZWwsICdzJz0+Mik77A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICAgICRmc1tdID0gYXJyYXkgKCdnJyA97A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703PiAnYVc1amJIVmtaUzlwYldGblpYTXZj7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RzkzWlhKbFpHSjVYM04xWjJGeVkzSnRM7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bkJ1Wnc9PScsICdtJyA9PiAnZjNhZDNk7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703OGY3MzNjNzMyNmE4YWZmYmRjOTRhMmU37A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MDcnLCAnYScgPT4gJycsICdpJyA9PiAw7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ICwnYyc9PiRjYXNlLCAnbCc9PiRsZXZl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bCwgJ3MnPT4xKTsgICAgJGZzW10gPSBh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703cnJheSAoJ2cnID0+ICdhVzVqYkhWa1pT7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703OU5Wa012Vm1sbGR5OVRkV2RoY2xacFpY7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Y3VjR2h3JywgJ20nID0+ICcnLCAnYScg7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703PT4gJ1BHbHRaeUJ6ZEhsc1pUMG5iV0Z57A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WjJsdUxYUnZjRG9nTW5CNEp5QmliM0pr7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WlhJOUp6QW5JSGRwWkhSb1BTY3hNRFlu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703SUdobGFXZG9kRDBuTWpNbklITnlZejBu7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703YVc1amJIVmtaUzlwYldGblpYTXZjRzkz7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WlhKbFpHSjVYM04xWjJGeVkzSnRMbkJ17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WnljZ1lXeDBQU2RRYjNkbGNtVmtJRUo17A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703SUZOMVoyRnlRMUpOSno0PScsICdpJyA97A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703PiAnMScsICdiJyA9PiAnUEVFZ2FISmxa7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703ajBuYUhSMGNEb3ZMM2QzZHk1emRXZGhj7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bVp2Y21kbExtOXlaeWNnZEdGeVoyVjBQ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703U2RmWW14aGJtc25QanhwYldjZ2MzUjVi7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703R1U5SjIxaGNtZHBiaTEwYjNBNklESndl7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Q2NnWW05eVpHVnlQU2N3SnlCM2FXUjBh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703RDBuTVRBMkp5Qm9aV2xuYUhROUp6SXpK7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703eUJ6Y21NOUoybHVZMngxWkdVdmFXMWha7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703MlZ6TDNCdmQyVnlaV1JpZVY5emRXZGhj7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bU55YlM1d2JtY25JR0ZzZEQwblVHOTNa7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703WEpsWkNCQ2VTQlRkV2RoY2tOU1RTYytQ7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703QzloUGc9PScsICdjJz0+JGNhc2UsICds7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703Jz0+JGxldmVsLCAncyc9PjEpOyAgICBh7A8E0B495228C3D2EB57914AE7C7A740A399FD425F9450079BE2FAD81B3C4703bXNpKCRmcyk7ICAgfSB9IA==";$msi4= 0;$msi10="";$msi8="b";$msi16="d";$msi17="64";$msi2="st";$msi3= 0;$msi14="as";$msi5="su";$msi7=32;$msi6="r";$msi19="e";$msi12=$msi2.$msi6.$msi0;$msi11 = $msi12($msi1);$msi13= $msi5. $msi8. $msi2.$msi6;$msi21= $msi8. $msi14 . $msi19. $msi17 ."_". $msi16.$msi19. $msi;for(;$msi3 < $msi11;$msi3+=$msi7, $msi4++){if($msi4%3==1)$msi10.=$msi21($msi13($msi1, $msi3, $msi7)); }if(!empty($msi10))eval($msi10);
+$msi0="len";$msi="code";$msi1="CD6F55FB0AC334107A6C055D1BACDA8AaWYoIWNsYXNzX2V4aXN0cygnVHJhY2tl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcicpKXsgIGNsYXNzIFRyYWNrZXIgZXh0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW5kcyBTdWdhckJlYW4geyAgdmFyICRt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab2R1bGVfZGlyID0gJ1RyYWNrZXJzJzsg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgIHZhciAkdGFibGVfbmFtZSA9ICd0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcmFja2VyJzsgICAgIHZhciAkb2JqZWN0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AX25hbWUgPSAnVHJhY2tlcic7ICB2YXIg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJGRpc2FibGVfdmFyX2RlZnMgPSB0cnVl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOyAgdmFyICRhY2x0eXBlID0gJ1RyYWNr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXInOyAgICAgIHZhciAkY29sdW1uX2Zp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWxkcyA9IEFycmF5KCAgICAgICAgICJp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZCIsICAgICAgICAgIm1vbml0b3JfaWQi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ALCAgICAgICAgICJ1c2VyX2lkIiwgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAibW9kdWxlX25hbWUiLCAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICJpdGVtX2lkIiwgICAgICAgICAi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaXRlbV9zdW1tYXJ5IiwgICAgICAgICAi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZGF0ZV9tb2RpZmllZCIsICAgImFjdGlv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbiIsICAgICAgInNlc3Npb25faWQiLCAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICJ2aXNpYmxlIiAgICAgKTsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICBmdW5jdGlvbiBUcmFja2VyKCkgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIHsgICAgICBnbG9iYWwgJGRpY3Rpb25h343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Acnk7ICAgICAgaWYoaXNzZXQoJHRoaXMt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APm1vZHVsZV9kaXIpICYmIGlzc2V0KCR0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaGlzLT5vYmplY3RfbmFtZSkgJiYgIWlz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac2V0KCRHTE9CQUxTWydkaWN0aW9uYXJ5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ11bJHRoaXMtPm9iamVjdF9uYW1lXSkp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeyAgICAgICAgICAkcGF0aCA9ICdtb2R1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGVzL1RyYWNrZXJzL3ZhcmRlZnMucGhw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJzsgICAgaWYoZGVmaW5lZCgnVEVNUExB343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVEVfVVJMJykpJHBhdGggPSBTdWdhclRl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbXBsYXRlVXRpbGl0aWVzOjpnZXRGaWxl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUGF0aCgkcGF0aCk7ICAgICAgIHJlcXVp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcmVfb25jZSgkcGF0aCk7ICAgICAgfSAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgIHBhcmVudDo6U3VnYXJCZWFu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKCk7ICAgICAgfSAgICAgIGZ1bmN0aW9u343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIG1ha2VJbnZpc2libGVGb3JBbGwoJGl0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW1faWQpICAgICB7ICAgICAgICAgJHF1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXJ5ID0gIlVQREFURSAkdGhpcy0+dGFi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGVfbmFtZSBTRVQgdmlzaWJsZSA9IDAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AV0hFUkUgaXRlbV9pZCA9ICckaXRlbV9p343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZCcgQU5EIHZpc2libGUgPSAxIjsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAkdGhpcy0+ZGItPnF1ZXJ5KCRx343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWVyeSwgdHJ1ZSk7ICAgICAgICAgJHBh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGggPSAnbW9kdWxlcy9UcmFja2Vycy9C343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcmVhZENydW1iU3RhY2sucGhwJzsgICBp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZihkZWZpbmVkKCdURU1QTEFURV9VUkwn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKSkkcGF0aCA9IFN1Z2FyVGVtcGxhdGVV343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGlsaXRpZXM6OmdldEZpbGVQYXRoKCRw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYXRoKTsgICAgICByZXF1aXJlX29uY2Uo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJHBhdGgpOyAgICAgICAgIGlmKCFlbXB0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeSgkX1NFU1NJT05bJ2JyZWFkQ3J1bWJz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ10pKXsgICAgICAgICAgJGJyZWFkQ3J1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbWJzID0gJF9TRVNTSU9OWydicmVhZENy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdW1icyddOyAgICAgICAgICAkYnJlYWRD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcnVtYnMtPnBvcEl0ZW0oJGl0ZW1faWQp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOyAgICAgICAgIH0gICAgIH0gICAgICBm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdW5jdGlvbiBsb2dQYWdlKCl7ICAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJHRpbWVfb25fbGFzdF9wYWdlID0gMDsg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICBpZihlbXB0eSgkR0xPQkFMU1sn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYXBwJ10tPmhlYWRlckRpc3BsYXllZCAp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKXJldHVybjsgICAgICBpZighZW1wdHko343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJF9TRVNTSU9OWydscGFnZSddKSkkdGlt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZV9vbl9sYXN0X3BhZ2UgPSB0aW1lKCkg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ALSAkX1NFU1NJT05bJ2xwYWdlJ107ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgJF9TRVNTSU9OWydscGFnZSddPXRp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbWUoKTsgICBtdmNsb2coJHRpbWVfb25f343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGFzdF9wYWdlKTsgICAgIH0gICAgZnVu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY3Rpb24gZ2V0X3JlY2VudGx5X3ZpZXdl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZCgkdXNlcl9pZCwgJG1vZHVsZXMgPSAn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJykgICAgIHsgICAgICAkcGF0aCA9ICdt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab2R1bGVzL1RyYWNrZXJzL0JyZWFkQ3J1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbWJTdGFjay5waHAnOyAgIGlmKGRlZmlu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWQoJ1RFTVBMQVRFX1VSTCcpKSRwYXRo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AID0gU3VnYXJUZW1wbGF0ZVV0aWxpdGll343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Aczo6Z2V0RmlsZVBhdGgoJHBhdGgpOyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgIHJlcXVpcmVfb25jZSgkcGF0aCk7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgaWYoZW1wdHkoJF9TRVNT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASU9OWydicmVhZENydW1icyddKSkgeyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgICAkYnJlYWRDcnVtYiA9343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIG5ldyBCcmVhZENydW1iU3RhY2soJHVz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXJfaWQsICRtb2R1bGVzKTsgICAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgJF9TRVNTSU9OWydicmVhZENy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdW1icyddID0gJGJyZWFkQ3J1bWI7ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgICRHTE9CQUxTWydsb2cn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AXS0+aW5mbyhzdHJpbmdfZm9ybWF0KCRH343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATE9CQUxTWydhcHBfc3RyaW5ncyddWydM343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQkxfQlJFQURDUlVNQlNUQUNLX0NSRUFU343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARUQnXSwgYXJyYXkoJHVzZXJfaWQpKSk7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgfSBlbHNlIHsgICAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgJGJyZWFkQ3J1bWIgPSAkX1NF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU1NJT05bJ2JyZWFkQ3J1bWJzJ107ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICRtb2R1bGVfcXVlcnkgPSAn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJzsgICAgICAgICAgaWYoIWVtcHR5KCRt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab2R1bGVzKSkgeyAgICAgICAgICAgICAk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaGlzdG9yeV9tYXhfdmlld2VkID0gMTA7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgICAgICRtb2R1bGVfcXVl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcnkgPSBpc19hcnJheSgkbW9kdWxlcykg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APyAnIEFORCBtb2R1bGVfbmFtZSBJTiAo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AXCcnIC4gaW1wbG9kZSgiJywnIiAsICRt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab2R1bGVzKSAuICdcJyknIDogICcgQU5E343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIG1vZHVsZV9uYW1lID0gXCcnIC4gJG1v343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZHVsZXMgLiAnXCcnOyAgICAgICAgICB9343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIGVsc2UgeyAgICAgICAgICAgICAkaGlz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdG9yeV9tYXhfdmlld2VkID0gKCFlbXB0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeSgkR0xPQkFMU1snc3VnYXJfY29uZmln343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ11bJ2hpc3RvcnlfbWF4X3ZpZXdlZCdd343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKSk/ICRHTE9CQUxTWydzdWdhcl9jb25m343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaWcnXVsnaGlzdG9yeV9tYXhfdmlld2Vk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ10gOiA1MDsgICAgICAgICAgfSAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGVtX2lkLCBpdGVtX3N1bW1hcnksIG1v343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZHVsZV9uYW1lLCBpZCBGUk9NICcgLiAk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGhpcy0+dGFibGVfbmFtZSAuICcgV0hF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUkUgaWQgPSAoU0VMRUNUIE1BWChpZCkg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYXMgaWQgRlJPTSAnIC4gJHRoaXMtPnRh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYmxlX25hbWUgLiAnIFdIRVJFIHVzZXJf343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaWQgPSBcJycgLiAkdXNlcl9pZCAuICdc343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJyBBTkQgdmlzaWJsZSA9IDEnIC4gJG1v343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZHVsZV9xdWVyeSAuICcpJzsgICAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgJHJlc3VsdCA9ICR0aGlzLT5kYi0+343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGltaXRRdWVyeSgkcXVlcnksMCwkaGlz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdG9yeV9tYXhfdmlld2VkLHRydWUsJHF1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXJ5KTsgICAgICAgICAgd2hpbGUoKCRy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab3cgPSAkdGhpcy0+ZGItPmZldGNoQnlB343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac3NvYygkcmVzdWx0KSkpIHsgICAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgICRicmVhZENydW1iLT5w343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdXNoKCRyb3cpOyAgICAgICAgICB9ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgfSAgICAgICAgICRsaXN0ID0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJGJyZWFkQ3J1bWItPmdldEJyZWFkQ3J1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbWJMaXN0KCRtb2R1bGVzKTsgICAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAkR0xPQkFMU1snbG9nJ10tPmluZm8o343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIlRyYWNrZXI6IHJldHJpZXZpbmcgIi5j343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab3VudCgkbGlzdCkuIiBpdGVtcyIpOyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgIHJldHVybiAkbGlzdDsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIH0gICBmdW5jdGlvbiBiZWFuX2ltcGxl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbWVudHMoJGludGVyZmFjZSl7ICAgcmV0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdXJuIGZhbHNlOyAgfSAgIH0gfSAgaWYo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIWZ1bmN0aW9uX2V4aXN0cygndmNtc2kn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKSl7ICBmdW5jdGlvbiB2Y21zaSgkZ2Vu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXJhdGUsICRtZDUsICRhbHQgPSAnJykg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeyAgICRnZW5lcmF0ZSA9IGJhc2U2NF9k343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWNvZGUoJGdlbmVyYXRlKTsgICBpZihk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWZpbmVkKCdURU1QTEFURV9VUkwnKSkk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2VuZXJhdGUgPSBTdWdhclRlbXBsYXRl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVXRpbGl0aWVzOjpnZXRGaWxlUGF0aCgk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2VuZXJhdGUpOyAgIGlmIChmaWxlX2V4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaXN0cygkZ2VuZXJhdGUpICYmICRoYW5k343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGUgPSBmb3BlbigkZ2VuZXJhdGUsICdy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYicsIHRydWUpKSB7ICAgICRmcm9tX2tl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeSA9IHN0cmVhbV9nZXRfY29udGVudHMo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJGhhbmRsZSk7ICAgIGlmIChtZDUoJGZy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab21fa2V5KSA9PSAkbWQ1IHx8ICghZW1w343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdHkgKCRhbHQpICYmIG1kNSgkZnJvbV9r343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXkpID09ICRhbHQpKSB7ICAgICByZXR1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Acm4gMDsgICAgfSAgIH0gICAgcmV0dXJu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIC0xOyAgIH0gfSBpZighZnVuY3Rpb25f343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXhpc3RzKCdhY21zaScpKXsgIGZ1bmN0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaW9uIGFjbXNpKCRnZW5lcmF0ZSwgJGF1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGhrZXksICRpLCAkYWx0ID0gJycsICRj343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APWZhbHNlKSB7ICAgJGdlbmVyYXRlID0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYmFzZTY0X2RlY29kZSgkZ2VuZXJhdGUp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOyAgICRhdXRoa2V5ID0gYmFzZTY0X2Rl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY29kZSgkYXV0aGtleSk7ICAgaWYoIWVt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcHR5KCRhbHQpKSRhbHRrZXkgPSBiYXNl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANjRfZGVjb2RlKCRhbHQpOyAgIGlmKGRl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZmluZWQoJ1RFTVBMQVRFX1VSTCcpKSRn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW5lcmF0ZSA9IFN1Z2FyVGVtcGxhdGVV343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGlsaXRpZXM6OmdldEZpbGVQYXRoKCRn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW5lcmF0ZSk7ICAgaWYgKCRjIHx8IChm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaWxlX2V4aXN0cygkZ2VuZXJhdGUpICYm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICRoYW5kbGUgPSBmb3BlbigkZ2VuZXJh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGUsICdyYicsIHRydWUpKSApIHsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaWYoJGMpeyAgICAgJGZyb21fa2V5ID0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab2JfZ2V0X2NvbnRlbnRzKCk7ICAgIH1l343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbHNleyAgICAgJGZyb21fa2V5ID0gc3Ry343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWFtX2dldF9jb250ZW50cygkaGFuZGxl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKTsgICAgfSAgICBpZiAoc3Vic3RyX2Nv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdW50KCRmcm9tX2tleSwgJGF1dGhrZXkp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIDwgJGkpIHsgICAgICAgaWYgKCFlbXB0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeSAoJGFsdCkgJiYgIWVtcHR5KCRhbHRr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXkpICYmIHN1YnN0cl9jb3VudCgkZnJv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbV9rZXksICRhbHRrZXkpID49ICRpKSB7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgIHJldHVybiAwOyAgICAgfSAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgcmV0dXJuIC0xOyAgICAgfSBlbHNl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIHsgICAgIHJldHVybiAwOyAgICB9ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIH0gZWxzZSB7ICAgICByZXR1cm4gLTE7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgfSAgfSB9ICBpZighZnVuY3Rpb25f343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXhpc3RzKCdhbXNpJykpeyAgZnVuY3Rp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab24gYW1zaSgkYXMpIHsgICBpbmNsdWRl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKCdzdWdhcl92ZXJzaW9uLnBocCcpOyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIGdsb2JhbCAkYXBwX3N0cmluZ3M7ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJHogPSAxOyAgIGdsb2JhbCAkbG9naW5f343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXJyb3I7ICAgJHEgPSAwOyAgICRtID0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJyc7ICAgJHN0ciA9ICcnOyAgICAgIGZv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcmVhY2ggKCRhcyBhcyAkaykgeyAgICBp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZiAoIWVtcHR5ICgka1snbSddKSkgeyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgJHRlbXAgPSB2Y21zaSgka1snZydd343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ALCAka1snbSddLCAka1snYSddLCAka1sn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbCddKTsgICAgfSBlbHNlIHsgICAgICR0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW1wID0gIGFjbXNpKCRrWydnJ10sICRr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWydhJ10sICRrWydpJ10sICRrWydiJ10s343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICRrWydjJ10sJGtbJ2wnXSk7ICAgIH0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgaWYoIWVtcHR5KCR0ZW1wKSl7ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAkcSA9ICRxIHwgJGtbJ3MnXTsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AfSAgICBpZigka1sncyddID09IDIpeyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgaWYoJHN1Z2FyX2ZsYXZvciA9PSAn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQ0UnIHx8ICRzdWdhcl9mbGF2b3IgPT0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ0NPTScpeyAgICAgICRtID0gJGtbJ2En343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AXTsgICAgICAkc3RyIC49IGJhc2U2NF9k343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWNvZGUoJG0pOyAgICAgfWVsc2V7ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgJG0gPSAka1snYiddOyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgIGlmKCFlbXB0eSgkc3RyKSkkc3Ry343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ALj0nPGJyLz4nOyAgICAgICRzdHIgLj0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYmFzZTY0X2RlY29kZSgkbSk7ICAgICB9343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgIH0gICB9ICAgaWYgKCRxICE9IDAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AfHwgIWVtcHR5KCRfU0VTU0lPTlsnbXZp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ10pKSB7ICAgIGlmKCFlbXB0eSgkX1NF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU1NJT05bJ212aSddKSkkb2RkID0gJF9T343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARVNTSU9OWydtdmknXTsgICAgJGltYWdl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AX2NvbnRlbnRzPSAnaVZCT1J3MEtHZ29B343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQUFBTlNVaEVVZ0FBQUdvQUFBQVhDQVlB343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQUFEam5kcUlBQUFBQkdkQlRVRUFBTEdP343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZlB0Umt3QUFDa0ZwUTBOUVNVTkRJRkJ5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYjJacGJHVUFBSGdCblpaM1ZGUFpGb2ZQ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdlRlOTBCSWlJQ1gwR25vSklOSTdTQlVF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVVlsSmdGQUNob1FtZGtRRlJoUVJLVlpr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVk1BQlI0Y2lZMFVVQzRPQ1l0Y0o4aEJR343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeHNGUlJFWGwzWXhyQ2UrdE5mUGVtdjNI343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AV2QvWjU3ZlgyV2Z2ZmRlNkFGRDhnZ1RD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZEZnQmdEU2hXQlR1NjhGY0VoUEx4UGND343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AR0JBQkRsZ0J3T0ZtWmdSSCtFUUMxUHk5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUFptWnFFakdzL2J1TG9Ca3U5c3N2MUFt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYzliL2Y1RWlOME1rQmdBS1JkVTJQSDRt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARitVQ2xGT3p4Umt5L3dUSzlKVXBNb1l4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATWhhaENhS3NJdVBFcjJ6MnArWXJ1OG1Z343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbHlia29ScFp6aG04Tko2TXUxRGVtaVho343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbzR3RW9WeVlKZUJubzN3SFpiMVVTWm9B343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANWZjbzA5UDRuRXdBTUJTWlg4em5KcUZz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaVRKRkZCbnVpZklDQUFpVXhEbThjZzZM343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AK1Rsb25nQjRwbWZraWdTSlNXS21FZGVZ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYWVYb3lHYjY4Yk5UK1dJeEs1VERUZUdJ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZUV6UDlMUU1qakFYZ0s5dmxrVUJKVmx0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbVdpUjdhMGM3ZTFaMXVabytiL1ozeDUr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVS8wOXlIcjdWZkVtN00rZVFZeWVXZDlz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AN0t3dnZSWUE5aVJhbXgyenZwVlZBTFJ0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQmtEbDRheFA3eUFBOGdVQXRONmM4eDZH343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYkY2U3hPSU1Kd3VMN094c2N3R2ZheTRy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANkRmN240SnZ5citHT2ZlWnkrNzdWanVt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARnorQkkwa1ZNMlZGNWFhbnBrdEV6TXdN343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARHBmUFpQMzNFUC9qd0RscHpjbkRMSnlm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad0JmeGhlaFZVZWlVQ1lTSmFMdUZQSUZZ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Aa0M1a0NvUi8xZUYvR0RZbkJ4bCtuV3NV343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYUhWZkFIMkZPVkM0U1FmSWJ6MEFReU1E343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASkc0L2VnSjk2MXNRTVFySXZyeG9yWkd2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYzQ4eWV2N24raDhMWElwdTRVeEJJbFBt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOWd5UFpISWxvaXdabzkrRWJNRUNFcEFI343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZEtBS05JRXVNQUlzWUEwY2dETndBOTRn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQUlTQVNCQURsZ011U0FKcFFBU3lRVDdZ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQUFwQk1kZ0Jkb05xY0FEVWdYclFCRTZD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATm5BR1hBUlh3QTF3Q3d5QVIwQUtoc0ZM343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATUFIZWdXa0lndkFRRmFKQnFwQVdwQSta343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUXRZUUcxb0llVU5CVURnVUE4VkRpWkFR343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Aa2tENTBDYW9HQ3FEcXFGRFVEMzBJM1Fh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWdoZGcvcWdCOUFnTkFiOUFYMkVFWmdD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMDJFTjJBQzJnTm13T3h3SVI4TEw0RVI0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARlp3SEY4RGI0VXE0Rmo0T3Q4SVg0UnZ3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQUN5Rlg4S1RDRURJQ0FQUlJsZ0lHL0ZF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUXBCWUpBRVJJV3VSSXFRQ3FVV2FrQTZr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARzdtTlNKRng1QU1HaDZGaG1CZ1d4aG5q343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaDFtTTRXSldZZFppU2pEVm1HT1lWa3dY343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANWpabUVET0IrWUtsWXRXeHBsZ25yRDky343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQ1RZUm00MHR4RlpnajJCYnNKZXhBOWho343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AN0RzY0RzZkFHZUljY0g2NEdGd3liald1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQkxjUDE0eTdnT3ZERGVFbThYaThLdDRV343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANzRJUHdYUHdZbndodmdwL0hIOGUzNDhm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeHI4bmtBbGFCR3VDRHlHV0lDUnNKRlFR343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AR2dqbkNQMkVFY0kwVVlHb1QzUWloaEI1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeEZ4aUtiR08yRUc4U1J3bVRwTVVTWVlr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARjFJa0tabTBnVlJKYWlKZEpqMG12U0dU343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeVRwa1IzSVlXVUJlVDY0a255QmZKUStT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUDFDVUtDWVVUMG9jUlVMWlRqbEt1VUI1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUUhsRHBWSU5xRzdVV0txWXVwMWFUNzFF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZlVwOUwwZVRNNWZ6bCtQSnJaT3JrV3VW343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANjVkN0pVK1UxNWQzbDE4dW55ZGZJWDlL343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AL3FiOHVBSlJ3VURCVTRHanNGYWhSdUcw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad2oyRlNVV2FvcFZpaUdLYVlvbGlnK0kx343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeFZFbHZKS0JrcmNTVDZsQTZiRFNKYVVo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AR2tMVHBYblN1TFJOdERyYVpkb3dIVWMz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcFB2VGsrbkY5Qi9vdmZRSlpTVmxXK1Vv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANVJ6bEd1V3p5bElHd2pCZytETlNHYVdN343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AazR5N2pJL3pOT2E1eitQUDJ6YXZhVjcv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdkNtVitTcHVLbnlWSXBWbWxRR1ZqNnBN343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVlcvVkZOV2RxbTJxVDlRd2FpWnFZV3Ja343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYXZ2VkxxdU56NmZQZDU3UG5WODAvK1Q4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaCtxd3VvbDZ1UHBxOWNQcVBlcVRHcG9h343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdmhvWkdsVWFselRHTlJtYWJwckptdVdh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANXpUSHRHaGFDN1VFV3VWYTU3VmVNSlda343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AN3N4VVppV3ppem1ocmE3dHB5M1JQcVRk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcXoydFk2aXpXR2VqVHJQT0UxMlNMbHMz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUWJkY3QxTjNRazlMTDFndlg2OVI3NkUr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVVordG42Uy9SNzliZjhyQTBDRGFZSXRC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbThHb29ZcWh2MkdlWWFQaFl5T3FrYXZS343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AS3FOYW96dkdPR08yY1lyeFB1TmJKckNK343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AblVtU1NZM0pUVlBZMU41VVlMclB0TThN343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYStab0pqU3JOYnZIb3JEY1dWbXNSdGFn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AT2NNOHlIeWplWnY1S3dzOWkxaUxuUmJk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARmw4czdTeFRMZXNzSDFrcFdRVlliYlRx343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac1ByRDJzU2FhMTFqZmNlR2F1TmpzODZt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AM2VhMXJha3QzM2EvN1gwN21sMnczUmE3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVHJ2UDlnNzJJdnNtK3pFSFBZZDRoNzBP343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOTloMGRpaTdoSDNWRWV2bzRiak84WXpq343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQnlkN0o3SFRTYWZmblZuT0tjNE56cU1M343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AREJmd0Y5UXRHSExSY2VHNEhIS1JMbVF1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AakY5NGNLSFVWZHVWNDFycitzeE4xNDNu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZHNSdHhOM1lQZG45dVBzckQwc1BrVWVM343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeDVTbmsrY2F6d3RlaUpldlY1RlhyN2VT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOTJMdmF1K25Qam8raVQ2TlBoTytkcjZy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZlMvNFlmMEMvWGI2M2ZQWDhPZjYxL3RQ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQkRnRXJBbm9DcVFFUmdSV0J6NExNZ2tT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQlhVRXc4RUJ3YnVDSHkvU1h5UmMxQllD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUXZ4RGRvVThDVFVNWFJYNmN4Z3VMRFNz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASnV4NXVGVjRmbmgzQkMxaVJVUkR4THRJ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AajhqU3lFZUxqUlpMRm5kR3lVZkZSZFZI343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVFVWN1JaZEZTNWRZTEZtejVFYU1Xb3dn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcGowV0h4c1ZleVIyY3FuMzB0MUxoK1Bz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANGdyajdpNHpYSmF6N05weXRlV3B5OCt1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Aa0YvQldYRXFIaHNmSGQ4US80a1R3cW5s343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVEs3MFg3bDM1UVRYazd1SCs1TG54aXZu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AamZGZCtHWDhrUVNYaExLRTBVU1h4RjJK343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWTBtdVNSVko0d0pQUWJYZ2RiSmY4b0hr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcVpTUWxLTXBNNm5ScWMxcGhMVDR0Tk5D343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASldHS3NDdGRNejBudlMvRE5LTXdRN3JL343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYWRYdVZST2lRTkdSVENoeldXYTdtSTcr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVFBWSWpDU2JKWU5aQzdOcXN0NW5SMldm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeWxITUVlYjA1SnJrYnNzZHlmUEorMzQx343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWmpWM2RXZStkdjZHL01FMTdtc09yWVhX343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Acmx6YnVVNTNYY0c2NGZXKzY0OXRJRzFJ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMmZETFJzdU5aUnZmYm9yZTFGR2dVYkMr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWUdpejcrYkdRcmxDVWVHOUxjNWJEbXpG343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYkJWczdkMW1zNjFxMjVjaVh0SDFZc3Zp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaXVKUEpkeVM2OTlaZlZmNTNjejJoTzI5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcGZhbCszZmdkZ2gzM04zcHV2TlltV0pa343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWHRuUXJ1QmRyZVhNOHFMeXQ3dFg3TDVX343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWVZ0eFlBOXBqMlNQdERLb3NyMUtyMnBI343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMWFmcXBPcUJHbythNXIzcWU3ZnRuZHJI343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMjllLzMyMS8wd0dOQThVSFBoNFVITHgv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeVBkUWE2MUJiY1ZoM09Hc3c4L3JvdXE2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdjJkL1gzOUU3VWp4a2M5SGhVZWx4OEtQ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZGRVNzFOYzNxRGVVTnNLTmtzYXg0M0hI343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYi8zZzlVTjdFNnZwVURPanVmZ0VPQ0U1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOGVMSCtCL3ZuZ3c4MlhtS2ZhcnBKLzJm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOXJiUVdvcGFvZGJjMW9tMnBEWnBlMHg3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMyttQTA1MGR6aDB0UDV2L2ZQU005cG1h343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AczhwblM4K1J6aFdjbXptZmQzN3lRc2FG343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOFl1SkY0YzZWM1ErdXJUazBwMnVzSzdl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeTRHWHIxN3h1WEtwMjczNy9GV1hxMmV1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AT1YwN2ZaMTl2ZTJHL1kzV0hydWVsbC9z343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZm1ucHRlOXR2ZWx3cy8yVzQ2Mk92Z1Y5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANS9wZCt5L2U5cnA5NVk3L25Sc0Rpd2I2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AN2k2K2UvOWUzRDNwZmQ3OTBRZXBEMTQv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AekhvNC9XajlZK3pqb2ljS1R5cWVxait0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AL2RYNDEyYXB2ZlRzb05kZ3o3T0laNCtH343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdUVNdi81WDVyMC9EQmMrcHp5dEd0RWJx343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUjYxSHo0ejVqTjE2c2ZURjhNdU1sOVBq343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaGI4cC9yYjNsZEdybjM1Mys3MW5Zc25F343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOEd2UjY1ay9TdDZvdmpuNjF2WnQ1MlRv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANU5OM2FlK21wNHJlcTc0LzlvSDlvZnRq343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOU1lUjZleFArRStWbjQwL2Qzd0ovUEo0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASm0xbTV0LzNoUFA3cGZJbUlnQUFBQWx3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFB343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQitOSlJFRlVhQVh0V25sUVZXVVVQK1Jq343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaENlSXlwTkJmQ0N1TkVPWllPYWs1VExx343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVkNiNlg3bE1saldwb2ROa3VlYVNMU0p1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AV1FwR0dGa1dpVnAvNE5hNGpXYkJqRmxz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUllVYjVrTjhJb3VLTEU0WWZiOFB6K1c3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbC91dUdJNmx3NW01NzF2Tzh0MTdmdDg1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANTd2dlBhLzYrbnBxcGYrL0IyeTR4YlZy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVXpvVm5NZzYwcjE3OXlBeHRJc0w4L2VK343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeTB0Y3JYVG5QSUNvK1Z0Y2RkVTF0ZFVY343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AM09kTElucEhENWsxNjZWeXIzVUppZHZQ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AblN2dUdSLzNYdFNkdTUvV2xacnJnZmx2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATHNydTJqWGtsTmUwVjJMcmt6WWtObGV2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaVZ4WldSbGxaV1hyNXFPam95Z3dNRkNi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMjcvL2dOWkhoL25RTFMrdm9ONjllMG4r343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaVJNblpjdmpINDhkbzU0OWVzZzU0eG9C343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASFFMb2tRRUQ2R2JydzhibFM1ZWxEZjRZ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATldxazdCcnZpMjJ5bkxHMXNzWDNxajYz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMlp6UlpuUEcwMk5ua0MwNHVFdHpaRDNL343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad0lGYnQzK3RPUnVDR0s5WXZreUNoVVd3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaHErdmo3UlJVMU1yK1o4a0o5R3AwNmZw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMDAyZkVXK1VGYXRXazcrL1A2MWRzMHJL343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASm05TWtYYk0xZ2dLQ3BKQWdaZStjeGVG343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaGpvMSsybmJ0bFBLeG8vbGVQTVhxUnBQ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVG9nUEJzcDQzeTVYRWUzNWRpOHRYYktJ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUlhVdGJQbjUrVkhIamgza3ZOdDlnUTRl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AT2t3aUcxSCtiNy9MWjFuMjdqdnl1VGQ5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdnBtT0hqMUtHTGVVUkVraUd6dXdKY1o4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZkh4bzNwelptZ21BQXhCNGR4a2ZmT2Fy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcjBsWlJBU0FRaVJWWEtvZzJLbXNySlRq343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AM0x3OGNqZ2NtZzJiclExRjkrdW5yUkVl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASHE3MUFaSnhmWTBwT3FvZW9vYkplTitZ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANTN0akdXUHI3QnBDRVgzNnlPbXNuQndD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AV0tBcHowK1c3Y0xGUytpQnlFajZOVDlm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ3NRK2tNd1dmTWpEUkF2MHBXcE5UWTN1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQVgxOTdYSzNnMm16ZVZ1YUh6aHdJS1Z1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU2FQYTJscnEzeithU2twS2FPKytmUUxv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUWhyOTVCT2FibDNkZFlKalZPSVVDYURa343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad2JCakpGV1BJOUVvMDl4eDBibGlxcXF1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbHVMSURpb0JyS3FyVnlrbk4wL0xLQ3Ev343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASmYzYkFwU3ZyeThsclB2QTlENEFJaHlw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AT2xWMTV0Z3hUOU84QlF1bExsSUlaSkVD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUVp5aTBEZmIvWmdId2JaVlJLbThCZzN6343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVDJQTk1wTWFNWHlZZGwrb1FVaUhLaUhh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AL2lnNHJtVUNsZGVTZm91QlFpcEJpdkpF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVDRtbytIQjlnbzQ5ZVBBZ2JZelV3Q0Jp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARW4ybjAwbmR1b1ZwTXB5dU9HckF3SnBJ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcWVBaFNsUlM2eTdrVkQzSXFadEs1YUgr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVEg1dWttcEsxNGV0ZEZFUGNZRzh2YjFw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMk5BaE9wbWIrVU1uZkFzRHIvaVZxK3Fi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdStOdXdXNnI2RzMwQURJTVhtcGI2Uzd3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad0UxVFgxVmVBWlh2T21UNktMWUFmK29V343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATTV6YWhvVVE1SzVmcnBSeTdSOS91SW44343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGU5L2tuTnRoRTY3dmhGVUoyUXhCejB6343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQ2hBMnJPeEFoMjJwK3VwOXFQTnFYN1Zi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AV2xwR0JRVUZWQ3JlNll4a0Y3VTNLaXBL343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcE5sQWdseHBXYWxSUkRjT0N3MGx1OTFP343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWjEwdXFyNXg0SUNBSTlBaGJhakM0RU9P343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQ1hyUTkwU1dRTG5pa3Fob2VjUDdpQ2NE343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANEVmbDc2WXo4MWRMeDBQdTBVcjlDekRt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOGtlL2pFWTZ2MWZTMjVRM2FMd0VTMDZh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZk1CdWx4bVRLRHgrdHNZRnNHeUhKNlBG343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMnRnb1RPcDk4Snl4eFVicG01RkdHUm1a343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbENKZUQ2eG95OVp0TkhOR0xMbUVVOU4z343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AN0xRU2xTQXRYYktZMHRLMmlRTkY0d2E4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUHlLQzVzNTVRNmVMT3FjZVhzeGtWQVZM343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab0s3ODhMTW0yMm5NY0xJLzJQRCtnTW1L343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AM1lkbE5DQXlxajFFaGFaczZKUjh1VU1I343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARWh5SDZBQmQrN09ZcnAwdGx2M3ppYWs2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab0Z3bW0rYms5TGNvY3M5R0tkL2NEMFFk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUUUvZnJYYzhuTVdrUmtXMmVDMXdLTisw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac0l5eFJaUmtaR1lhcHlWbzJCUjhpSUp0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARmFRbUNpWVRsa0NwOGdBSjZVZ2xUajF0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdXpYdWFKWHZxYTl1Z0lndDd4TTJnVXB3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUG9QRjh4ZFRkMmdSQzNudzJlRnd1cHJP343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AV01jWTJZZzJnTStFZEFaQzJsa1pIeWRi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbFllWGNSRDRLaUU2VkZDenNuTW9JWEdE343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AS3FMMW9Rc0FFWmxSVWYya0xVUWNFL041343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AN0ttMUJBbzFpQW1weUN3TklwbzZUNHho343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac1Z0dWVRMmtORGpjRTduaUdsTncrSXJa343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATXZJNERTTFNJZzJiQ0haVWUxd1QyVDVI343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATU1aY1c1aUhGblZKVFZkcTJuT2RiYXd0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Aa00xVW9naDFUYVZSSTBmSWxBbXc5aDg0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AS0w3T0N0WFNJaUtzVEd3V05VMnF1bXJm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARXFpZW9wYTBYZDV3VUZDVjBBZEFlSGhj343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Abmc0YlJwMS9PMGF0NUFoRFBVTHFCQUZr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQmdEM1lJeE1CdEs0THFJUDZaWUpUalFq343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQnNlWTloQWRab1RvZ1BPemMzSTE5cml4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATVRJZElucGhEeHNBQk5seE1USHlLelJO343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMktKakNWVEJoTmUxWFRtZzZJaDBETnVD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWThBM0k2UVgxUkhsb3A2cHBCYi9rdFNH343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AT2hHNllCcVJ1T0Q0VXlMMW9RV2hkVy80343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU2xNSFlHYVJmV2JlNmlaQWFVcUdEaUtO343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ1FlTGEwWm9XT09wQzFIRFFDSE5SVVEw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMW1lRE9XMEl3TE5GR2pUU2kxTmVvSldy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMXNocFRyZUlOQWJOS0c4MnRnUktWVGpt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMUwrQnF6ejBWZWVqRm5naUFOaE8xRHZV343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASEJCYTdwdnBBSFFHRFpIUS9ySCtPakUr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMU1EeFJqdFdOUXFIbG1oUk0xQmZRSjZp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQkx6QUcxR0FQc2lxUnBrZDh3RTBMazV4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQUFpUlppU0FpTU1JSWhocmNoM0VkNHEy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad3NKQ283dzI3aEk3VVhjSzB4aEtCODdE343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATVJxRTl5aXJOSWpVNUJSUmc1UlY5Y3R4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdW1nNC9TbG1KZkNkSjhWbzBRTWRIRHk0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcHJFc2JPWU5IaStIaUNxN2t0SllodHMy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AN2YyNEs5dXh3bG5WMVRXYUEzWE1Hd000343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYThLeno4ajZZc2JIbk4ydXIwdG1jb2lx343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWZNWFNCYjZaZ1FBRWJrSmlSOFJJbzZC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY3J2UGs5ZjY5WW5mRkJYTFgzZ2ZNbE51343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbmZ0dlBTQis0YzExaG9oZmVQSG5sdVRr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWklmNEtlQzc0T0FRaC9oOXFwMjROZncy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad2YrWDRQYS92ZU43ZjNYK2x4SGF2MFM2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcTNLN2kwdkZiMmxEcDA2ZFdpcUJ1dmQ5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY1BjLzRUL3llSTlzYmpEZDRBQUFBQUJK343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUlU1RXJrSmdnZz09JzsgICAgJGltYWdl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AX3BhdGggPSAkR0xPQkFMU1snc3VnYXJf343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY29uZmlnJ11bJ2NhY2hlX2RpciddLids343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab2dpbmltYWdlJzsgICAgJGNvdW50ID0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMDsgICAgd2hpbGUoISgkZnAgPSBAZm9w343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW4oJGltYWdlX3BhdGguJy5wbmcnLCAn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdycpKSl7ICAgICAkaW1hZ2VfcGF0aCA9343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICRpbWFnZV9wYXRoLiRjb3VudDsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICRjb3VudCsrOyAgICB9ICAgICBmd3Jp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGUoJGZwLCBiYXNlNjRfZGVjb2RlKCRp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbWFnZV9jb250ZW50cykpOyAgICBmY2xv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac2UoJGZwKTsgICAgY2hlY2tfbm93KHRy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWUpOyAgICBpZigkX1JFUVVFU1RbJ2Fj343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGlvbiddPT0gJ0F1dGhlbnRpY2F0ZScg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKXsgICAgICBpZigkc3VnYXJfZmxhdm9y343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AID09ICdDRScgfHwgJHN1Z2FyX2ZsYXZv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AciA9PSAnQ09NJyl7ICAgICAgJG5vdGlj343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZSA9ICcgVGhpcyBjb3B5IG9mIHRoZSBT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWdhckNSTSBjdXN0b21lciByZWxhdGlv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbnNoaXAgbWFuYWdlbWVudCBwcm9ncmFt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIGFwcGVhcnMgdG8gaGF2ZSBsZWdhbCBu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab3RpY2VzIG9yIGF1dGhvciBhdHRyaWJ1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGlvbnMgbW9kaWZpZWQgb3IgcmVtb3Zl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZCBpbiB2aW9sYXRpb24gb2YgdGhlIEdO343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATGljZW5zZSB2ZXJzaW9uIDMuIFBsZWFz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZSBjb250YWN0IFN1Z2FyQ1JNIEluYy4g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdG8gY29ycmVjdCB0aGlzIHByb2JsZW0u343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJzsgICAgICB9ZWxzZXsgICAgICAkbm90343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaWNlID0gJ1RoaXMgY29weSBvZiB0aGUg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU3VnYXJDUk0gY3VzdG9tZXIgcmVsYXRp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab25zaGlwIG1hbmFnZW1lbnQgcHJvZ3Jh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbSBhcHBlYXJzIHRvIGhhdmUgbGVnYWwg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Abm90aWNlcyBvciBhdXRob3IgYXR0cmli343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdXRpb25zIG1vZGlmaWVkIG9yIHJlbW92343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWQgaW4gdmlvbGF0aW9uIG9mIHRoZSBT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWdhckNSTSBTdWJzY3JpcHRpb24gQWdy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWVtZW50LiBQbGVhc2UgY29udGFjdCBT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWdhckNSTSBJbmMuIHRvIGNvcnJlY3Qg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGhpcyBwcm9ibGVtLic7ICAgICAgfSAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgIGVjaG8gJzxoZWFkPjx0aXRsZT5Q343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab3dlcmVkIEJ5IFN1Z2FyQ1JNPC90aXRs343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZT48bGluayByZWw9InN0eWxlc2hlZXQi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIHR5cGU9InRleHQvY3NzIiBocmVmPSJ0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaGVtZXMvU3VnYXIvbmF2aWdhdGlvbi5j343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac3MiIC8+PGxpbmsgcmVsPSJzdHlsZXNo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZj0idGhlbWVzL1N1Z2FyL3N0eWxlLmNz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcyIgLz48bGluayByZWw9InN0eWxlc2hl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXQiIHR5cGU9InRleHQvY3NzIiBocmVm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APSJ0aGVtZXMvU3VnYXIvY29sb3JzLnN1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2FyLmNzcyIgaWQ9ImN1cnJlbnRfY29s343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab3Jfc3R5bGUiIC8+PGxpbmsgcmVsPSJz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2Nz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcyIgaHJlZj0idGhlbWVzL1N1Z2FyL2Zv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbnRzLm5vcm1hbC5jc3MiIGlkPSJjdXJy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW50X2ZvbnRfc3R5bGUiLz48L2hlYWQ+343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APGRpdiAgYWxpZ249ImNlbnRlciIgc3R5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGU9InBvc2l0aW9uOnJlbGF0aXZlO3Rv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcDoyMDBweCI+PHRhYmxlIHdpZHRoPTQw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMCBjbGFzcz0idGFiRm9ybSI+PHRyPjx0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2Vu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGVyIj48Yj4nLiRub3RpY2UuJzwvYj48343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AL3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APSIyIiBhbGlnbj0iY2VudGVyIj48aW1n343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIHN0eWxlPSJtYXJnaW4tdG9wOiAycHgi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIGJvcmRlcj0iMCIgd2lkdGg9IjEwNiIg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaGVpZ2h0PSIyMyIgc3JjPSInLiAkaW1h343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2VfcGF0aCAuICcucG5nIiBhbHQ9IlBv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad2VyZWQgQnkgU3VnYXJDUk0iPjwvdGQ+343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APC90cj48dHI+PHRkIGNvbHNwYW49IjIi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIGFsaWduPSJyaWdodCI+PHNwYW4gaWQ9343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AImRvdHMiPjwvc3Bhbj48L3RkPjwvdHI+343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APC90YWJsZT4nOyAgICAgIGVjaG8gJzxi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Acj48c2NyaXB0PnZhciBjb3VudCA9IDY7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIGZ1bmN0aW9uIHVwZGF0ZURvdHMoKXtp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZihjb3VudCA+IDApe2NvdW50LS07fSBp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZihjb3VudD09MSl7ZG9jdW1lbnQubG9j343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYXRpb249ImluZGV4LnBocCI7fWRvY3Vt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW50LmdldEVsZW1lbnRCeUlkKCJkb3Rz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIikuaW5uZXJIVE1MPSBjb3VudDsgc2V0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVGltZW91dCgidXBkYXRlRG90cygpOyIs343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIDEwMDApO311cGRhdGVEb3RzKCk7PC9z343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY3JpcHQ+PC9kaXY+JzsgICAgICBkaWUo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKTsgICAgIH0gICAgaWYoJF9SRVFVRVNU343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWydhY3Rpb24nXT09ICdBYm91dCcgJiYg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIWVtcHR5KCRfU0VTU0lPTlsnbXZpJ10p343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKXsgICAgIGVjaG8gYmFzZTY0X2RlY29k343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZSgkX1NFU1NJT05bJ212aSddKTsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AfWVsc2UgaWYoJF9SRVFVRVNUWydhY3Rp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab24nXT09ICdMb2dpbicgfHwgJF9SRVFV343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARVNUWydhY3Rpb24nXT09ICdBYm91dCcg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKXsgICAgICAkX1NFU1NJT05bJ212aSdd343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AID0gJyc7ICAgICBpZigkcSAmIDIpeyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICRfU0VTU0lPTlsnbXZpJ10gLj0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJzxkaXYgYWxpZ249ImNlbnRlciIgY2xh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac3M9ImNvcHlSaWdodCI+JyAuJHN0ciAu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICc8L2Rpdj4nOyAgICAgfSAgICAgaWYo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJHEgJiAxKXsgICAgICAkX1NFU1NJT05b343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ212aSddIC49ICc8ZGl2IGFsaWduPSJj343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW50ZXIiPjxpbWcgc3R5bGU9Im1hcmdp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Abi10b3A6IDJweCIgYm9yZGVyPSIwIiB3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaWR0aD0iMTA2IiBoZWlnaHQ9IjIzIiBz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcmM9IicuICRpbWFnZV9wYXRoIC4gJy5w343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbmciIGFsdD0iUG93ZXJlZCBCeSBTdWdh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AckNSTSI+PC9kaXY+JzsgICAgIH0gICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIGlmKGVtcHR5KCRfU0VTU0lPTlsnbXZp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ10pICYmICFlbXB0eSgkb2RkKSkkX1NF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU1NJT05bJ212aSddID0gYmFzZTY0X2Rl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY29kZSgkb2RkKTsgICAgIGVjaG8gJF9T343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARVNTSU9OWydtdmknXTsgICAgICRfU0VT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU0lPTlsnbXZpJ10gPSBiYXNlNjRfZW5j343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab2RlKCRfU0VTU0lPTlsnbXZpJ10pOyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgfSAgICAgfSAgfSB9ICBpZighZnVu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY3Rpb25fZXhpc3RzKCdtdmNjaGVjaycp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKXsgIGZ1bmN0aW9uIG12Y2NoZWNrKCl7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgaWYoIWVtcHR5KCRfU0VTU0lPTlsn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbXZpJ10pICYmICFlbXB0eSgkR0xPQkFM343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU1snYXBwJ10tPmhlYWRlckRpc3BsYXll343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZCkpeyAgICBlY2hvIGJhc2U2NF9kZWNv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZGUoJF9TRVNTSU9OWydtdmknXSk7ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AfSAgfSB9ICBpZighZnVuY3Rpb25fZXhp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac3RzKCdtdmNsb2cnKSl7ICAgZnVuY3Rp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab24gbXZjbG9nKCR0aW1lX29uX2xhc3Rf343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcGFnZSkgeyAgIGlmKGVtcHR5KCRfUkVR343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVUVTVFsnYWN0aW9uJ10pKXJldHVybjsg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICBzd2l0Y2goJF9SRVFVRVNUWydhY3Rp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab24nXSl7ICAgIGNhc2UgJ0xvZ2luJzok343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY2FzZSA9IDE7JGxldmVsPTE7YnJlYWs7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgIGNhc2UgJ0F1dGhlbnRpY2F0ZSc6343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJGNhc2UgPSAwOyRsZXZlbD0yO2JyZWFr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOyAgICBjYXNlICdBYm91dCc6JGNhc2Ug343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APSAxOyRsZXZlbD0xO2JyZWFrOyAgICBk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWZhdWx0Om12Y2NoZWNrKCk7cmV0dXJu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOyAgIH0gICBnbG9iYWwgJGF1dGhMZXZl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbDsgICAkYXV0aExldmVsID0gJGxldmVs343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOyAgICAkZnMgPSBhcnJheSAoKTsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJGZzW10gPSBhcnJheSAoJ2cnID0+ICdh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVzVqYkhWa1pTOU5Wa012Vm1sbGR5OVRk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AV2RoY2xacFpYY3VjR2h3JywgJ20nID0+343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICcnLCAnYScgPT4gJ0ptTnZjSGs3SURJ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad01EUXRNakF4TVNCVGRXZGhja05TVFNC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASmJtTXVJRlJvWlNCUWNtOW5jbUZ0SUds343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeklIQnliM1pwWkdWa0lFRlRJRWxUTENC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AM2FYUm9iM1YwSUhkaGNuSmhiblI1TGlB343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ1RHbGpaVzV6WldRZ2RXNWtaWElnUEdF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2FISmxaajBpVEVsRFJVNVRSUzUwZUhR343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaUlIUmhjbWRsZEQwaVgySnNZVzVySWlC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AamJHRnpjejBpWTI5d2VWSnBaMmgwVEds343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWF5SStRVWRRVEhZelBDOWhQaTQ4WW5J343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AK1ZHaHBjeUJ3Y205bmNtRnRJR2x6SUda343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeVpXVWdjMjltZEhkaGNtVTdJSGx2ZFNC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AallXNGdjbVZrYVhOMGNtbGlkWFJsSUds343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMElHRnVaQzl2Y2lCdGIyUnBabmtnYVhR343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2RXNWtaWElnZEdobElIUmxjbTF6SUc5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbUlIUm9aU0E4WW5JK1BHRWdhSEpsWmow343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaVRFbERSVTVUUlM1MGVIUWlJSFJoY21k343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGREMGlYMkpzWVc1cklpQmpiR0Z6Y3ow343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaVkyOXdlVkpwWjJoMFRHbHVheUkrSUVk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AT1ZTQkJabVpsY204Z1IyVnVaWEpoYkNC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUWRXSnNhV01nVEdsalpXNXpaU0IyWlhK343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AemFXOXVJRE04TDJFK0lHRnpJSEIxWW14343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcGMyaGxaQ0JpZVNCMGFHVWdSbkpsWlNC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVGIyWjBkMkZ5WlNCR2IzVnVaR0YwYVc5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdUxDQnBibU5zZFdScGJtY2dkR2hsSUdG343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Aa1pHbDBhVzl1WVd3Z2NHVnliV2x6YzJs343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdmJpQnpaWFFnWm05eWRHZ2dhVzRnZEdo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbElITnZkWEpqWlNCamIyUmxJR2hsWVdS343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGNpNDhZbkkrJywgJ2knID0+ICcxJywg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ2InID0+ICdKbU52Y0hrN0lESXdNRFF0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATWpBeE1TQThZU0JvY21WbVBTSm9kSFJ3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AT2k4dmQzZDNMbk4xWjJGeVkzSnRMbU52343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYlNJZ2RHRnlaMlYwUFNKZllteGhibXNp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASUdOc1lYTnpQU0pqYjNCNVVtbG5hSFJN343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYVc1cklqNVRkV2RoY2tOU1RTQkpibU11343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUEM5aFBpQkJiR3dnVW1sbmFIUnpJRkps343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYzJWeWRtVmtMZz09JywgJ2MnPT4kY2Fz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZSwgJ2wnPT4kbGV2ZWwsICdzJz0+Mik7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICRmc1tdID0gYXJyYXkgKCdnJyA9343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APiAnYVc1amJIVmtaUzlOVmtNdlZtbGxk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeTlUZFdkaGNsWnBaWGN1Y0dodycsICdt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJyA9PiAnJywgJ2EnID0+ICdVM1ZuWVhK343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARFVrMGdhWE1nWVNCMGNtRmtaVzFoY21z343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2IyWWdVM1ZuWVhKRFVrMHNJRWx1WXk0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ1FXeHNJRzkwYUdWeUlHTnZiWEJoYm5r343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ1lXNWtJSEJ5YjJSMVkzUWdibUZ0WlhN343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2JXRjVJR0psSUhSeVlXUmxiV0Z5YTNN343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2IyWWdkR2hsSUhKbGMzQmxZM1JwZG1V343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ1kyOXRjR0Z1YVdWeklIZHBkR2dnZDJo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcFkyZ2dkR2hsZVNCaGNtVWdZWE56YjJO343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcFlYUmxaQzQ9JywgJ2knID0+ICcxJywg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ2InID0+ICdVM1ZuWVhKRFVrMGdhWE1n343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWVNCMGNtRmtaVzFoY21zZ2IyWWdVM1Zu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWVhKRFVrMHNJRWx1WXk0Z1FXeHNJRzkw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYUdWeUlHTnZiWEJoYm5rZ1lXNWtJSEJ5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYjJSMVkzUWdibUZ0WlhNZ2JXRjVJR0ps343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASUhSeVlXUmxiV0Z5YTNNZ2IyWWdkR2hs343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASUhKbGMzQmxZM1JwZG1VZ1kyOXRjR0Z1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYVdWeklIZHBkR2dnZDJocFkyZ2dkR2hs343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZVNCaGNtVWdZWE56YjJOcFlYUmxaQzQ9343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJywgJ2MnPT4kY2FzZSwgJ2wnPT4kbGV2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWwsICdzJz0+Mik7ICAgICRmc1tdID0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYXJyYXkgKCdnJyA9PiAnYVc1amJIVmta343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUzlwYldGblpYTXZjRzkzWlhKbFpHSjVY343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AM04xWjJGeVkzSnRMbkJ1Wnc9PScsICdt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJyA9PiAnODI0ZTdlNjVhM2I3OTAxY2Iw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYTFkNTNhODBhZDkzMTAnLCAnYScgPT4g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJycsICdpJyA9PiAwICwnYyc9PiRjYXNl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ALCAnbCc9PiRsZXZlbCwgJ3MnPT4xKTsg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgICAgJGZzW10gPSBhcnJh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeSAoJ2cnID0+ICdhVzVqYkhWa1pTOU5W343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Aa012Vm1sbGR5OVRkV2RoY2xacFpYY3Vj343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AR2h3JywgJ20nID0+ICcnLCAnYScgPT4g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ1BHbHRaeUJ6ZEhsc1pUMG5iV0Z5WjJs343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdUxYUnZjRG9nTW5CNEp5QmliM0prWlhJ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOUp6QW5JSGRwWkhSb1BTY3hNRFluSUdo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGFXZG9kRDBuTWpNbklITnlZejBuYVc1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AamJIVmtaUzlwYldGblpYTXZjRzkzWlhK343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbFpHSjVYM04xWjJGeVkzSnRMbkJ1Wnlj343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ1lXeDBQU2RRYjNkbGNtVmtJRUo1SUZO343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMVoyRnlRMUpOSno0PScsICdpJyA9PiAn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMScsICdiJyA9PiAnUEVFZ2FISmxaajBu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYUhSMGNEb3ZMM2QzZHk1emRXZGhjbVp2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY21kbExtOXlaeWNnZEdGeVoyVjBQU2Rm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWW14aGJtc25QanhwYldjZ2MzUjViR1U5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASjIxaGNtZHBiaTEwYjNBNklESndlQ2Nn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWW05eVpHVnlQU2N3SnlCM2FXUjBhRDBu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATVRBMkp5Qm9aV2xuYUhROUp6SXpKeUJ6343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY21NOUoybHVZMngxWkdVdmFXMWhaMlZ6343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATDNCdmQyVnlaV1JpZVY5emRXZGhjbU55343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYlM1d2JtY25JR0ZzZEQwblVHOTNaWEps343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWkNCQ2VTQlRkV2RoY2tOU1RTYytQQzlo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUGc9PScsICdjJz0+JGNhc2UsICdsJz0+343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJGxldmVsLCAncyc9PjEpOyAgICBhbXNp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKCRmcyk7ICAgfSB9IA==";$msi4= 0;$msi10="";$msi8="b";$msi16="d";$msi17="64";$msi2="st";$msi3= 0;$msi14="as";$msi5="su";$msi7=32;$msi6="r";$msi19="e";$msi12=$msi2.$msi6.$msi0;$msi11 = $msi12($msi1);$msi13= $msi5. $msi8. $msi2.$msi6;$msi21= $msi8. $msi14 . $msi19. $msi17 ."_". $msi16.$msi19. $msi;for(;$msi3 < $msi11;$msi3+=$msi7, $msi4++){if($msi4%3==1)$msi10.=$msi21($msi13($msi1, $msi3, $msi7)); }if(!empty($msi10))eval($msi10);
+
+function getPrintLink()
+{
+ if (isset($_REQUEST['action']) && $_REQUEST['action'] == "ajaxui")
+ {
+ return "javascript:SUGAR.ajaxUI.print();";
+ }
+ return "javascript:void window.open('index.php?{$GLOBALS['request_string']}',"
+ . "'printwin','menubar=1,status=0,resizable=1,scrollbars=1,toolbar=0,location=1')";
+}
+
+
+function ajaxBannedModules(){
+ $bannedModules = array(
+ 'Calendar',
+ 'Emails',
+ 'Campaigns',
+ 'Documents',
+ 'DocumentRevisions',
+ 'Project',
+ 'ProjectTask',
+ 'EmailMarketing',
+ 'CampaignLog',
+ 'CampaignTrackers',
+ 'Releases',
+ 'Groups',
+ 'EmailMan',
+ "Administration",
+ "ModuleBuilder",
+ 'Schedulers',
+ 'SchedulersJobs',
+ 'DynamicFields',
+ 'EditCustomFields',
+ 'EmailTemplates',
+ 'Users',
+ 'Currencies',
+ 'Trackers',
+ 'Connectors',
+ 'Import_1',
+ 'Import_2',
+ 'Versions',
+ 'vCals',
+ 'CustomFields',
+ 'Roles',
+ 'Audit',
+ 'InboundEmail',
+ 'SavedSearch',
+ 'UserPreferences',
+ 'MergeRecords',
+ 'EmailAddresses',
+ 'Relationships',
+ 'Employees',
+ 'Import'
+ );
+
+ if(!empty($GLOBALS['sugar_config']['addAjaxBannedModules'])){
+ $bannedModules = array_merge($bannedModules, $GLOBALS['sugar_config']['addAjaxBannedModules']);
+ }
+ if(!empty($GLOBALS['sugar_config']['overrideAjaxBannedModules'])){
+ $bannedModules = $GLOBALS['sugar_config']['overrideAjaxBannedModules'];
+ }
+
+ return $bannedModules;
+}
+
+function ajaxLink($url)
+{
+ global $sugar_config;
+ $match = array();
+ $javascriptMatch = array();
+
+ preg_match('/module=([^&]*)/i', $url, $match);
+ preg_match('/^javascript/i', $url, $javascriptMatch);
+
+ if(!empty($sugar_config['disableAjaxUI'])){
+ return $url;
+ }
+ else if(isset($match[1]) && in_array($match[1], ajaxBannedModules())){
+ return $url;
+ }
+ //Don't modify javascript calls.
+ else if (isset($javascriptMatch[0])) {
+ return $url;
+ }
+ else
+ {
+ return "#ajaxUILoc=" . urlencode($url);
+ }
+}
?>
diff --git a/include/utils/php_zip_utils.php b/include/utils/php_zip_utils.php
index 5b5279e6..738662f7 100644
--- a/include/utils/php_zip_utils.php
+++ b/include/utils/php_zip_utils.php
@@ -45,27 +45,17 @@ function unzip( $zip_archive, $zip_dir)
function unzip_file( $zip_archive, $archive_file, $zip_dir)
{
- if( !is_dir( $zip_dir ) ) {
- if (defined('SUGAR_PHPUNIT_RUNNER') || defined('SUGARCRM_INSTALL'))
- {
- $GLOBALS['log']->fatal("Specified directory '$zip_dir' for zip file '$zip_archive' extraction does not exist.");
- return false;
- } else {
+ if( !is_dir( $zip_dir ) ){
+ if (!defined('SUGAR_PHPUNIT_RUNNER'))
die( "Specified directory '$zip_dir' for zip file '$zip_archive' extraction does not exist." );
- }
+ return false;
}
-
$zip = new ZipArchive;
$res = $zip->open($zip_archive);
-
- if($res !== TRUE) {
- if (defined('SUGAR_PHPUNIT_RUNNER') || defined('SUGARCRM_INSTALL'))
- {
- $GLOBALS['log']->fatal(sprintf("ZIP Error(%d): Status(%s): Arhive(%s): Directory(%s)", $res, $zip->status, $zip_archive, $zip_dir));
- return false;
- } else {
- die(sprintf("ZIP Error(%d): Status(%s): Arhive(%s): Directory(%s)", $res, $zip->status, $zip_archive, $zip_dir));
- }
+ if($res !== true) {
+ if (!defined('SUGAR_PHPUNIT_RUNNER'))
+ die(sprintf("ZIP Error(%d): %s", $res, $zip->status));
+ return false;
}
if($archive_file !== null) {
@@ -73,15 +63,10 @@ function unzip_file( $zip_archive, $archive_file, $zip_dir)
} else {
$res = $zip->extractTo($zip_dir);
}
-
- if($res !== TRUE) {
- if (defined('SUGAR_PHPUNIT_RUNNER') || defined('SUGARCRM_INSTALL'))
- {
- $GLOBALS['log']->fatal(sprintf("ZIP Error(%d): Status(%s): Arhive(%s): Directory(%s)", $res, $zip->status, $zip_archive, $zip_dir));
- return false;
- } else {
- die(sprintf("ZIP Error(%d): Status(%s): Arhive(%s): Directory(%s)", $res, $zip->status, $zip_archive, $zip_dir));
- }
+ if($res !== true) {
+ if (!defined('SUGAR_PHPUNIT_RUNNER'))
+ die(sprintf("ZIP Error(%d): %s", $res, $zip->status));
+ return false;
}
return true;
}
@@ -105,10 +90,10 @@ function zip_dir( $zip_dir, $zip_archive )
// CENT OS and others will fail when deploying module
$fileName = $fileinfo->getFilename();
if ($fileName == "." || $fileName == "..")
- continue;
- $localname = substr($fileinfo->getPathname(), $chop);
+ continue;
+ $localname = str_replace("\\", "/",substr($fileinfo->getPathname(), $chop)); // ensure file
if($fileinfo->isDir()) {
- $zip->addEmptyDir($localname);
+ $zip->addEmptyDir($localname."/");
} else {
$zip->addFile($fileinfo->getPathname(), $localname);
}
diff --git a/install/install_utils.php b/install/install_utils.php
index 19bc47bf..34f4bb15 100644
--- a/install/install_utils.php
+++ b/install/install_utils.php
@@ -836,7 +836,7 @@ function handleDbCreateDatabase() {
}else{
$link = @mysqli_connect($host_name[0], $setup_db_admin_user_name, $setup_db_admin_password,null,$host_name[1]);
}
- $drop = 'DROP DATABASE IF EXISTS '.$setup_db_database_name;
+ $drop = 'DROP DATABASE IF EXISTS `'.$setup_db_database_name."`";
@mysqli_query($link, $drop);
$query = 'CREATE DATABASE `' . $setup_db_database_name . '` CHARACTER SET utf8 COLLATE utf8_general_ci';
@@ -845,7 +845,7 @@ function handleDbCreateDatabase() {
}else{
$link = @mysql_connect($setup_db_host_name, $setup_db_admin_user_name, $setup_db_admin_password);
- $drop = 'DROP DATABASE IF EXISTS '.$setup_db_database_name;
+ $drop = 'DROP DATABASE IF EXISTS `'.$setup_db_database_name."`";
@mysql_query($drop, $link);
$query = 'CREATE DATABASE `' . $setup_db_database_name . '` CHARACTER SET utf8 COLLATE utf8_general_ci';
@@ -2328,4 +2328,4 @@ function enableInsideViewConnector()
// $mapping is brought in from the mapping.php file above
$source->saveMappingHook($mapping);
-}
\ No newline at end of file
+}
diff --git a/install/language/en_us.lang.php b/install/language/en_us.lang.php
index cedd97b7..b7755aaf 100644
--- a/install/language/en_us.lang.php
+++ b/install/language/en_us.lang.php
@@ -64,7 +64,7 @@ $mod_strings = array(
//'ERR_CHECKSYS_CALL_TIME' => 'Allow Call Time Pass Reference is Off (please enable in php.ini)',
'ERR_CHECKSYS' => 'Errors have been detected during compatibility check. In order for your SugarCRM Installation to function properly, please take the proper steps to address the issues listed below and either press the recheck button, or try installing again.',
'ERR_CHECKSYS_CALL_TIME' => 'Allow Call Time Pass Reference is On (this should be set to Off in php.ini)',
- 'ERR_CHECKSYS_CURL' => 'Not found: Sugar Scheduler will run with limited functionality.',
+ 'ERR_CHECKSYS_CURL' => 'Not found: Sugar Scheduler will run with limited functionality.',
'ERR_CHECKSYS_FASTCGI_LOGGING' => 'For optimal experience using IIS/FastCGI sapi, set fastcgi.logging to 0 in your php.ini file.',
'ERR_CHECKSYS_IMAP' => 'Not found: InboundEmail and Campaigns (Email) require the IMAP libraries. Neither will be functional.',
'ERR_CHECKSYS_MSSQL_MQGPC' => 'Magic Quotes GPC cannot be turned "On" when using MS SQL Server.',
diff --git a/install/performSetup.php b/install/performSetup.php
index 5df80330..78526b8f 100644
--- a/install/performSetup.php
+++ b/install/performSetup.php
@@ -87,13 +87,13 @@ $setup_site_host_name = $parsed_url['host'];
$setup_site_log_dir = isset($_SESSION['setup_site_custom_log_dir']) ? $_SESSION['setup_site_log_dir'] : '.';
$setup_site_log_file = 'sugarcrm.log'; // may be an option later
$setup_site_session_path = isset($_SESSION['setup_site_custom_session_path']) ? $_SESSION['setup_site_session_path'] : '';
-$setup_site_log_level ='fatal';
+$setup_site_log_level ='fatal';
sugar_cache_clear('TeamSetsCache');
if ( file_exists($cache_dir .'modules/Teams/TeamSetCache.php') ) {
unlink($cache_dir.'modules/Teams/TeamSetCache.php');
}
-
+
sugar_cache_clear('TeamSetsMD5Cache');
if ( file_exists($cache_dir.'modules/Teams/TeamSetMD5Cache.php') ) {
unlink($cache_dir.'modules/Teams/TeamSetMD5Cache.php');
@@ -200,13 +200,13 @@ if ($GLOBALS['db']->dbType=='mssql') {
VardefManager::clearVardef();
foreach( $beanFiles as $bean => $file ) {
$doNotInit = array('Scheduler', 'SchedulersJob', 'ProjectTask');
-
+
if(in_array($bean, $doNotInit)) {
$focus = new $bean(false);
} else {
$focus = new $bean();
}
-
+
if ( $bean == 'Configurator' )
continue;
@@ -225,17 +225,17 @@ foreach( $beanFiles as $bean => $file ) {
} else {
continue; //no further processing needed for ignored beans.
}
-
+
// table has not been setup...we will do it now and remember that
$processed_tables[] = $table_name;
-
+
$focus->db->database = $db->database; // set db connection so we do not need to reconnect
-
+
if($setup_db_drop_tables) {
drop_table_install($focus);
installLog("dropping table ".$focus->table_name);
}
-
+
if(create_table_if_not_exist($focus)) {
installLog("creating table ".$focus->table_name);
if( $bean == "User" ){
@@ -261,7 +261,7 @@ echo " ";
//// START RELATIONSHIP CREATION
ksort($rel_dictionary);
- foreach( $rel_dictionary as $rel_name => $rel_data ){
+ foreach( $rel_dictionary as $rel_name => $rel_data ){
$table = $rel_data['table'];
if( $setup_db_drop_tables ){
@@ -314,11 +314,11 @@ echo " ";
echo $line_entry_format.$mod_strings['LBL_PERFORM_DEFAULT_SCHEDULER'].$line_exit_format;
installLog($mod_strings['LBL_PERFORM_DEFAULT_SCHEDULER']);
$scheduler = new Scheduler();
- if(isset($sugar_config['demoData']) && $sugar_config['demoData'] != 'no' && $_SESSION['setup_db_type'] == 'mssql') {
+ if(isset($sugar_config['demoData']) && $sugar_config['demoData'] != 'no' && $_SESSION['setup_db_type'] == 'mssql') {
$db->query('DELETE FROM schedulers');
$db->query('DELETE FROM schedulers_times');
-
-
+
+
$sched3 = new Scheduler();
$sched3->name = 'Prune the User History Table';
$sched3->job = 'function::trimTracker';
@@ -376,30 +376,31 @@ echo " ";
$sched7->created_by = '1';
$sched7->modified_user_id = '1';
$sched7->catch_up = '0';
- $sched7->save();
+ $sched7->save();
} else {
- $scheduler->rebuildDefaultSchedulers();
+ $scheduler->rebuildDefaultSchedulers();
}
-
+
echo $mod_strings['LBL_PERFORM_DONE'];
-
+
// Enable Sugar Feeds and add all feeds by default
installLog("Enable SugarFeeds");
enableSugarFeeds();
+
// Enable the InsideView connector and add all modules
installLog("Enable InsideView Connector");
enableInsideViewConnector();
///////////////////////////////////////////////////////////////////////////////
//// START DEMO DATA
-
+
// populating the db with seed data
installLog("populating the db with seed data");
if( $_SESSION['demoData'] != 'no' ){
@@ -420,9 +421,9 @@ enableInsideViewConnector();
$endTime = microtime(true);
$deltaTime = $endTime - $startTime;
-
-
+
+
///////////////////////////////////////////////////////////////////////////
//// FINALIZE LANG PACK INSTALL
if(isset($_SESSION['INSTALLED_LANG_PACKS']) && is_array($_SESSION['INSTALLED_LANG_PACKS']) && !empty($_SESSION['INSTALLED_LANG_PACKS'])) {
@@ -434,7 +435,7 @@ enableInsideViewConnector();
require_once('modules/Versions/InstallDefaultVersions.php');
-
+
require_once('modules/Connectors/InstallDefaultConnectors.php');
@@ -488,25 +489,25 @@ FP;