HEX
Server: LiteSpeed
System: Linux atali.colombiahosting.com.co 5.14.0-570.12.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 13 06:11:55 EDT 2025 x86_64
User: coopserp (1713)
PHP: 8.2.29
Disabled: dl,exec,passthru,proc_open,proc_close,shell_exec,memory_limit,system,popen,curl_multi_exec,show_source,symlink,link,leak,listen,diskfreespace,tmpfile,ignore_user_abord,highlight_file,source,show_source,fpaththru,virtual,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setid,posix_times,posix_ttyname,posix_uname,proc_get_status,proc_nice,proc_terminate
Upload Files
File: /home/coopserp/www/siteseo.zip
PK��f\��g g siteseo.phpnu�[���<?php
/*
Plugin Name: SiteSEO - SEO Simplified
Plugin URI: https://siteseo.io/
Description: SiteSEO is an easy, fast and powerful SEO plugin for WordPress. Unlock your Website's potential and Maximize your online visibility with our SiteSEO!
Author: Softaculous
Version: 1.3.6
Requires at least: 5.0
Author URI: https://siteseo.io/
License: GPLv2
Text Domain: siteseo
*/

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

if(!function_exists('add_action')){
	echo 'You are not allowed to access this page directly.';
	exit;
}

if(defined('SITESEO_VERSION')){
	return;
}

define('SITESEO_VERSION', '1.3.6');
define('SITESEO_FILE', __FILE__);
define('SITESEO_DOCS', 'https://siteseo.io/docs/');
define('SITESEO_DIR_PATH', plugin_dir_path(SITESEO_FILE));
define('SITESEO_DIR_URL', plugin_dir_url(SITESEO_FILE));
define('SITESEO_ASSETS_PATH', SITESEO_DIR_PATH . 'assets');
define('SITESEO_ASSETS_URL', SITESEO_DIR_URL . 'assets');
define('SITESEO_DEV', file_exists(SITESEO_DIR_PATH.'DEV.php'));

include_once(SITESEO_DIR_PATH . 'functions.php');

function siteseo_autoloader($class){
	if(!preg_match('/^SiteSEO\\\(.*)/is', $class, $m)){
		return;
	}

	$m[1] = str_replace('\\', '/', $m[1]);

	// Include file
	if(file_exists(SITESEO_DIR_PATH . 'main/'.strtolower($m[1]).'.php')){
		include_once(SITESEO_DIR_PATH.'main/'.strtolower($m[1]).'.php');
	}
}

spl_autoload_register('siteseo_autoloader');

register_activation_hook(SITESEO_FILE, '\SiteSEO\Install::activate');
register_deactivation_hook(SITESEO_FILE, '\SiteSEO\Install::deactivate');
register_uninstall_hook(SITESEO_FILE, '\SiteSEO\Install::uninstall');
add_action('plugins_loaded', 'siteseo_load_plugin');

function siteseo_load_plugin(){
	global $siteseo;

	if(empty($siteseo)){
		$siteseo = new StdClass();
	}
	
	// Loading all the options.
	$siteseo->setting_enabled = get_option('siteseo_toggle', []);
	$siteseo->titles_settings = get_option('siteseo_titles_option_name', []);
	$siteseo->social_settings = get_option('siteseo_social_option_name', []);
	$siteseo->advanced_settings = get_option('siteseo_advanced_option_name', []);
	$siteseo->instant_settings = get_option('siteseo_instant_indexing_option_name', []);
	$siteseo->sitemap_settings = get_option('siteseo_xml_sitemap_option_name', []);
	$siteseo->analaytics_settings = get_option('siteseo_google_analytics_option_name', []);
	
	siteseo_check_update();
	
	if(!empty($siteseo->setting_enabled['toggle-advanced'])){
		add_action('init','\SiteSEO\ImageSeo::init', 11); // Upload happens with AJAX so we need this here
	}

	if(wp_doing_ajax()){
		\SiteSEO\Ajax::hooks();
		return;
	}

	if(defined('SITESEO_PRO_VERSION') && version_compare(SITESEO_PRO_VERSION, '1.1.5', '<')){ 
		if(!function_exists('is_plugin_active')){ 
			require_once ABSPATH . 'wp-admin/includes/plugin.php'; 
		} 
	}

	// Image & Sitemap block
	add_action('init', '\SiteSEO\Admin::register_sitmap_block');

	// TOC 
	add_shortcode('siteseo_toc', '\SiteSEO\TableofContent::render_toc');
	add_action('init', '\SiteSEO\TableofContent::enable_toc');

	if(!empty($siteseo->setting_enabled['toggle-xml-sitemap']) && !empty($siteseo->sitemap_settings['xml_sitemap_general_enable'])){
		add_filter('wp_sitemaps_enabled', '__return_false'); // Disabling default WP Sitemap

		add_action('init', '\SiteSEO\GenerateSitemap::add_rewrite_rules', 20);
		add_action('template_redirect', '\SiteSEO\GenerateSitemap::handle_sitemap_requests', 0);
	}

	if(!empty($siteseo->sitemap_settings['toggle-xml-sitemap']) && !empty($siteseo->sitemap_settings['xml_sitemap_general_enable'])){
		add_shortcode('siteseo_html_sitemap', '\SiteSEO\GenerateSitemap::html_sitemap');
	}

	// Redirect
	add_action('template_redirect', '\SiteSEO\GoogleAnalytics::handle_custom_redirect');
	add_action('init', '\SiteSEO\Advanced::remove_wc_category_base');

	if(!empty($siteseo->setting_enabled['toggle-instant-indexing']) && !empty($siteseo->instant_settings['instant_indexing_bing_api_key'])){
		add_action('template_redirect', '\SiteSEO\InstantIndexing::bing_txt_file', 0);

		if(!empty($siteseo->instant_settings['instant_indexing_automate_submission'])){
			add_action('transition_post_status', '\SiteSEO\InstantIndexing::on_status_change', 10, 3);
		}
	}

	\SiteSEO\Admin::permission();

	if(!empty($siteseo->setting_enabled['toggle-advanced']) && empty($siteseo->advanced_settings['appearance_universal_metabox_disable']) && siteseo_user_can_metabox()){
		add_action('wp_enqueue_scripts', 'siteseo_universal_assets');
		add_action('enqueue_block_editor_assets', 'siteseo_universal_assets');
		
		if(defined('SITESEO_PRO_VERSION') && version_compare(SITESEO_PRO_VERSION, '1.2.6', '>=')){
			add_action('wp_enqueue_scripts', '\SiteSEOPro\Admin::enqueue_metabox');
			add_action('enqueue_block_editor_assets', '\SiteSEOPro\Admin::enqueue_metabox');
		}
	}
	
	if(!is_admin()){
		// Code that will be used in the frontend will go here.

		if(defined('WPB_VC_VERSION') && !empty($_GET['vc_editable']) && $_GET['vc_editable'] === 'true'){
			return; // WPBakery
		}

		remove_action('wp_head', 'rel_canonical');
		add_action('after_setup_theme', 'siteseo_remove_elementor_description_meta_tag');
			
		// Cookies enqueue
		add_action('wp_enqueue_scripts', '\SiteSEO\Admin::cookies_bar');

		// Titles and Metas
		add_action('wp_head', '\SiteSEO\TitlesMetas::add_nositelinkssearchbox', 1);
		add_action('wp_head', '\SiteSEO\TitlesMetas::add_canonical_url', 1);
		add_filter('wp_title', '\SiteSEO\TitlesMetas::modify_site_title', 15, 2);
		add_filter('pre_get_document_title', '\SiteSEO\TitlesMetas::modify_site_title', 15);
		add_action('wp_head', '\SiteSEO\TitlesMetas::add_meta_description', 1);
		add_filter('wp_robots', '\SiteSEO\TitlesMetas::advanced_metas', 999);
		add_action('wp_head', '\SiteSEO\TitlesMetas::add_rel_link_pages', 9);
		add_action('wp_head', '\SiteSEO\TitlesMetas::date_time_publish', 3);

		// Social
		add_action('wp_head', '\SiteSEO\SocialMetas::add_social_graph', 1);
		add_action('wp_head', '\SiteSEO\SocialMetas::fb_graph', 1);
		add_action('wp_head', '\SiteSEO\SocialMetas::twitter_card', 1);

		// Sitemaps
		add_action('init', '\SiteSEO\GenerateSitemap::settings', 5);

		// Image & Advanced
		add_action('wp_head', '\SiteSEO\Advanced::tags');
		add_action('init', '\SiteSEO\Advanced::remove_links');

		// Analaytics
		add_action('init', '\SiteSEO\GoogleAnalytics::ga_render');
		
		add_filter('post_link_category', '\SiteSEO\PrimaryCategory::add_primary_category', 10, 3);
		add_filter('wc_product_post_type_link_product_cat', '\SiteSEO\PrimaryCategory::wc_primary_category', 10, 3);
		add_filter('woocommerce_get_breadcrumb', '\SiteSEO\PrimaryCategory::replace_breadcrumb_categories', 10, 2);
		
		return;
	}

	if(is_admin()){
		\SiteSEO\Admin::init();
	}
}

function siteseo_check_update(){
	global $siteseo;

	$current_version = get_option('siteseo_version');	
	$version = (int) str_replace('.', '', $current_version);

	// No update required
	if($current_version == SITESEO_VERSION){
		return true;
	}
	
	if($version < 115){
		// Older version had enable index, and if it was set it actually meant it was enabled.
		$options = $siteseo->titles_settings['titles_single_titles'];
		
		if(!empty($options)){
			foreach($options as &$option){
				if(!empty($option['enable'])){
					unset($option['enable']);
					$option['disabled'] = true;
				}
			}
			
			$siteseo->titles_settings['titles_single_titles'] = $options;
		}

		update_option('siteseo_titles_option_name', $siteseo->titles_settings);
	}

	if($version > 115 && $version < 117){
		$options = $siteseo->titles_settings['titles_single_titles'];

		// In 115 if enabled was true then the options will be enabled, which was an issue
		// As it means user will have to manually enable every metabox option.
		if(!empty($options)){
			foreach($options as &$option){
				if(!empty($option['enable'])){
					unset($option['enable']);
				} elseif(isset($option['enable'])){
					$option['disabled'] = true;
					unset($option['enable']);
				}
			}

			$siteseo->titles_settings['titles_single_titles'] = $options;
		}

		update_option('siteseo_titles_option_name', $siteseo->titles_settings);
	}

	// Is it first run ?
	if(empty($current_version)){
		\SiteSEO\Install::activate();
		return;
	}

	update_option('siteseo_version', SITESEO_VERSION);
}

PK��f\*�r�2�2assets/img/siteseo-white.pngnu�[����PNG


IHDR��(�zosRGB��,	pHYs%%IR$�2uIDATx��xU�CDDz�:�{�^{W,�?�DAAPTD�"*�Ho*��  Rp��{�������)�d������d6�}�󄒽��ٝ��s��a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�L�H��*U
�@���f��0�0�����X��士�\}�Z<X5�����a���ӵ��~�fh��5B���!�.Х�U���W�L��c�a���	3�vX�j��S5C]:�Kt�p��Γa�a�bx�^D�ꆇ?W'��cQ�ѥ�tx��K�C�^���a���� �ބ���^�/֍����t@�J�NS�v.��ٹ3�0L�gJ���5�Z3�Ad�+�#a|�@�/�����G���b?��q0�0L�eZ�跧6��y�Q��0
Х�tPs�$��x1SGӟ��0Ô9�ns��1io6��7P�I�ѥ�dt5�N���nF��_�Z�H��ʙ�f��a�a���bo����M1� �0�Kt� ��I%�ty��w�ba�M�Ÿ�7�_��b?���1�0�W�A���7��;�YlaAV��\:��~���q�~�8��m�E��������q2�0�W��U���-��"��\�H��
rI.}R�(�
��2�
��(Υ������2�0�ױ�u��[%d�G1��]:�K5��:
:���։	�m@~\��Za��3�0�x
K�&��Mb§(Ɵ`����a�����-i���Ml>EQ��p�����=n�a��
��Kn���I�$�K�&��6��<.�=�7|-�h���%���Ŵ��қv���G�a���a��|�!��W�D1�S������\�\Iȿ�_wHl��@�7��@�KGg�c�1`�aK�]ǔ%(�WWuH���b��(���|�v:�Q����v����M�/�K�j�q`�aK��s���;��X�cr�S��ɥ��o�r6t=?�Ol��.�MQ�>�I4W�c�aW����S��]����N)�b�ȥ��o�v�u?[��&tl�i�>�/��덢&�},�aƒ��w��]�q�
]
��|1.ƥ�@�'��g��#�wO��(蛻�wʥ�2!oz����>�0cYP����Y�5-�\�F;w]�K'QގB�[��K�4؅�c�T؁��K�i�9~���7�����0�0��|F��v��B�'qI.���(����}�aO��+��n�".�[�.}�����gf���7�0�0��A!_��;]����(�.}
��(�oI�Ȁ?Q������.��ޢK�I�K_�&1en�f��a�a,��4Y�)�w��i'IJK���&�	�Ͽ�g����K߫��7J.}y����-�G�=v�a��
P��iv����#=:_�%�NB~E����pl`���(�T\�������$�4{��0�5�x�L�bN���%!��� ܁C��6$N
΂(���K��|ފvɛ�3�0�x(�G�ŜbG��$Ĵb=��̰l8�?�f�(�θt�0X�1��ce�a��{Jqb.:M��F!���s ��K߃���˹�U�S��=V�a��J����kXǼbŜb[��xrߑ�^�p�t�.�}G�Դ5��6{��0����X����B��WF�y��K�?���_{��l�v�Y���0�0^�-.
�q��"b>�C�C�������F]�h�".}XQ�~���=R�=6�a�)3����΋E��s.��|�?'.=f��]��r�Y�[�?��0Ô)P�kwz�t�+S�(�CIȻ]��=���^W�~9�	�]{��p��f^�������X��1cFo���0�>ó?o�D*t�?]�.
!�y��
�^��.�&�vȥǎ*�ҏ̼���f���>(�s0�@a�0����0L���}�7?u:=�&
y�!؇��
��n(����\���Y׶u?_��0���;(�L�af��0S��)�J;�c�A�1�a0
9M���-(�.C�A������e���G\����2{,��A��@�e�0ʙ�+�0L���mYϵy�,�~�,�z.E�
!GW������3,v
�NH��
(]�?/�=�;@�ޫAЉf��0S��rƖVϧ@�S��Kɂ���
FW>D��#��׭Y�䈋�Q�e�N��.�����U9��P�b<�1c	����cl��S��0nè顼Nit�k`a���2�<�e�1vc���c���w=�[_b�<9֒�ޟ���h���B�[���ֹL�xcƍf�]���xZ8	y����|B�8�.y��b�B�kT��"�^u�<٥�N�d�(�
�|��}U��*�W���	��'܃��E��iO�R����\w�?�/��z���y�)'\��G1^�0t���F���ȱ9s{��?����~���G����sIț���&&B�/@�^�]��!�~g&t�;ló�e���y"O�J(�ѕ�ޏb�Ba<\-d�'��2xr��}g=9n���\gj쿉}���vG=�T��c�cF���b���A9�	AǾj�貍�����*�$��O�BB�lr"���7��8�.y�]��(���ɀ��e�#3�R���QЛ��ݕ���/A!�BB�@UQ���T���B������
�H�0
:YeNb�1grrQ*}�U}X�
�a9������L.�j�F:��Ղ�}��#˃�[(7=�2O�	I�$�7��7��-�'A�Q��� !��@Ȼ<��L*BC�<v��<#s{�F�c/Ջ��t�0�^W�rr@!��0�j32+�'�<Y�7u̽%�ӫ��8�W�u�}t��1=?\*�EC/�JA�P	y���[�Qߨ1�y�M���xh:5��/�x!!�_r������h���4RП��~r�(x�Q��?I�I�W^ 䀢cj�“5C�0*+�'K5�c��4�A����Ř��F��Y�
�]�#?d%@ӻ�t��	:�;��q)9���,�(��ɛq��8��ݛ!T��BB�P��wx,M��9w���$�(�MnSP̧6��70^�QȕB^Crx�f��?gD.V���'N,�U 
�8��c<��VZ �������A
`A7<n@�4.��t�F+����p����a'?{$�u�#��Ө��{a7��NG�f=�16`L�E�>�n��9�B[�W����\Y�M��F3b��k��,�����T�B4t�=��KW��i|��+SQ�Iȧa��$�7���Q�eW.
y(	9�cl�0x�v��F�c��D㉴������ĉZ�W��!����	ρ�/r/R�ci��њ�v��cA�۝�=	�Zc���F$�����Z���.ډ>i�C��^fAA�"y÷1މĝ�wD!��Bȟ��Q1�#�RN
��u���ĩ
!�|F�xcj�(yz�@�1Ɖb��	��|���z�c����9��΍>nň����R{�
,躣�Tҷ�}�����ͱX^�A��W��Y��t�n���?]�ӳ�2�M��g�B�`f�cv� ܂��+o��B�ǝ�6Ϟ��ϧ@��)�_��g>/�
�]�$���3o��w�b᥺��+���:���^��Z�|��E9AΥ��4m��J��;���
��>������"\^�ṯ"�!
Ljn{<cp.�`�ՐM����﵄��כ��^4��(
�4��v�9QȟK�V/�U�Z��s��L��:]��g�����|v�XA���	��uI�#�zt�=w|��2u��^�<'�e��:��#G�
׫?�t]�Z�#hk�[;�{]�?�7ڷ����p|�"c�������|��W�*���QPgn���Iȥ�u��;	�������T������wLխr�����+�%���s���s��k��D!/p傘�ǘP?^���^�XP�E�9M�	z��ꁆ�U�IJ���hAZ��Q[�9Ѐ>ն�%�Ѷe�r\*�Z��y]����x2/��or�DY�뢐� j�1/B(+�\띄||����'&	.�O(H�0C�|&5���YH�c�=I�?���E<|�?_�W �]9	9Ll	�LniXy����\�݀>�ʔ�K�Ŷ�v�������	�W+/��J���y���ǁ�Ni�y�&�T�&l �x<P�{���4���5�.����Jt5֙��R
9�6Wi69�����c~�p_]~h�\�]([ �bA�)	�M���2͍���]����\s�0浌��o����\r墐c��Pػ^f����]5�_����.���J�
5��eAt]���&7�NMm�N�
�`=sT��V���
�.v.��=�Ŷ-'� ^XŪ�]f�I��]��kv����̘���\5�Cͅa���P�zo�r*H#�a��L�\P�+�=syz��q�B�1ƂV	���uP��+��\(F3E�6R��J;�x�x���]PF�
yG̓�e�zĽ�p�L��5}��@��ܒ���J�+��Ӳ4���R�k|�?�X&�tA�'���^ST��<��د5��vQ��<�>��(��%1��|Ƨm�)xiz�����h�l��'���ʉ�`v~�eL�At��<�+�ˊs)��U�Z�W_�,&�SmP/����<���6۫���]ŸE��/���g�PuI� ���kEK�6�+H��؟������5�˛�rr傐�N��(�K0��M����B�(�H1�McJ�)���������	:��8W�C/h���5�6�����><
XO�穼��α80��*y/1;G�Rgnd�Rȫ.
�*�c|"�~�iJ���B�v�����,�=D�|P���B�� �	��Fb�B�y�$���$A��U����G>�P�r��9:�A������lz�kLS��.�M5��z)�[&A��J�T�V�B���T�O���5;���S���i
�[U��,��D�a/䕗C��P����BN�|z\��r������˞�Z�]���e!'WNB�%ƲvI��]���N)���+�-7�� ��v�1�st�OЛB��]�T�[��J
�g@�5]@��EI��b�\5������'�Q�O��#k�C�'�y������7dQ�^`~�T�kv������dAȿ��(�VÍ+��_���\)�����G�O�|P��+��ɕ�B��|E�d�
���,F��,'m}��^�8���Q�Ԙlv�Z��A���C�ڞ��Y=���
Z �Rc��^I֝*�ӅKW�4`-A�Y��2;GG��V�=f�hY�|9�^�+�
��_�
�	.\rٕ����}_{^DE=r��E�Eyz��|���W�����C
|�1���ree9�ַ�ȧ4�s����pJ�ł���+*��D��Z������
���{w��	�Z��輏1;?-������1;?KSmqh���WX}*|wZ���r��_����՜�RQ{P�o�B1��Rr傐c|�b�]G��l?�i�>j�[���~���J�RzOM�[Зhx�fЯ��)b��m�*}G_�J�-��"���T9�ߚ��@}q��s�,5�w#1W
��k��P��@t��+�����Td{V�Ea����2!Q�^_�As��$���Z��;����&S���>��ȧ4�K��z
����λ8�K��j���^��w�m��06*B%J���^�u�5���9j��;�5�s�4U>9b/�׭���@�oO���(�u!��Z�
�Ql����fq7�D�.O��B�k$!_��C�s��#ne�X�}�[%�#��~�Gh�J- 	��Z>�Q��1ག�A�_��~�}K�ӊ�p�F�Ѿ��{�������2�c�kC�qa�#�0;GKS�������B�|7�C�M�PmIh��,
yMA��E!�4�[nե!����uB�<��F��e!��l� ѷ/����uB���V����Ң��0���Pб�&����?@���n����q�	��`�vp\�.����5�^���٧r<K�� �Fq�of�hy*-�h/�>�m��&�]�O.�r��/���Py��.��Q���ꐒ�V��!�؈B���y���<l�X�&At充\(J#m{\��J+ n]ҲHN��A�.5�F����O]C���A���J���@[�h1M+{t�<8v�F�΅<=��R�7T�M�y.�a�W@�~E)�>[1�c�A��Έ��B.��!Wn�GN��$�"O��BN�|�$�ۺ����S��+\]��(���-C�|J3x��L���}/c�48wo�T��w�r���t��T;g���k1�����nAq�^���(@��P)f��T�*h��������v�^MY]N)�RQi�[@�UA��Y�1%w�Bȷ(�|G�T�㧞�Š�Ev����|�G>��#/����ж����U���US�︞�iȧ�J>�t�k�O*�9K*�S���.g�z���ҍ86F�g����k�nC@�R�}~�؅��~8]P&V��r�V��c�&H��?(�����Q�I�w������3
v�J�M)��^�e{�/�l�\A�����@\M��Ӽȅ�Po�U�[�gsJr��I�k��9�;1�B�s�蜫U=�A{�ڿ���P9>����+��m��B��Ư�ل"4�2����$!?#9��-��5���Y���%ٕ��w�i���F1��w�����%)��`�z=� V*�i����>V8���>AW����-��c�dp�@|�ܟ*�E+�<�`A?�A���'�ZaIX���S~s`��������w)[H�W����z��<n�bz]v����7��}�g����K��{ٿ鐒�m�]��[�G�{���G���{���k����x�������ybQZt�>��3PC����X�cU�����,�/n��S��Q��y7|�Ms�������Oܰ&(z]��Eih�[y��C@��]�(��|6U�݂��	B���w�?���>��/�œT���xx��x\sPtӭ{��}���=dO�I�c�ı��Chh�G�y�ȹU���]�š[O�� �Gp�	�s�:�o<l/�>0�w��2����+_HB�����&��z䳪}�tyz���\���b�!�w�
s�~��g�N�~.���죠������F��&軝8v��~zW�<�0f�����7n�iA��r0;G-�zŵf��uT�t�N���<��B�s�/��6(�%�H��BBN{���o�>[m��i}�s������8��W���+�+��6�U]Ru���v���/������]�X���z=���O��Ǎ~�"������Q��3*�av�^I�~�r�#GmP�~�����*J#o�&l��E�|P��}�?���AI�����?�Ȅ�]����,��K.p<�^����t�>A߬�x�&�zF�Q��P���w�����?��Q �!q��s�J�o�Pn������8��
|�\�"��$!��Ӫ��lC��iS�s�eW~P��e!?�q|`� �k�\.N��sz�v�_ile�$��Kե+k�>A�Nñ*m��'�an��kC+۷��ุ̕�>�{騨�%0�e��v̶r�'ş��D!/WLu9a/�O�[�|v��.6�Boz�,�+����@��pcg��\.N�N�`��z���hkT�PO�خ�	�'*���ѐR�����\yGB@����%蟫�RmT0�Q*��є;���B�Oa��a��+��K(J#���W�|�v;�F9�.�?���|N
���F�*s[��s9j�OYO���*'��[g��]�Ԫ%/�6@�񡿻خ�}��1(�+�1�]*�?mv�^���{�yF�?�	�O���#l�ۦWN�M�*O���p�$�
�F��,��B~�9*N��[Z�BП�+���o�rzx��S����J*�5��v-#�J�����z���L��[^C�ö�BB~##����\���b/{�^����rz�\��E!���
��e����>�ӥH��{�W����.��m�^E���z�W��ji���z�>C����cq`^�U�^nv�e���n���B~###Lگ��N�-J�s���s�K�@��lyz]�r� �3��s���T2v{��
1�p鞯��-8�@5���S9)'�ЦW	�ԧ�R��%o�H ̄��(��W[p�ԅ6�&�T+�Q�5���T��LPɗp�<g���P!Lj�^)�{B^x/�
z��K����+��<#lD��+M(�B�+�v���q�^�x��R9)�wy�W[�mz���yA�>�2/��|q����ʸ�}Ƿ|��`1A'0��U��T��<�h�u��y�=���p��(�h�ik�<�.��6eQ�$=�A!/�:tYȃB�B�q�%�D��=2B��\K�K��~
'�p�W�2]곃J��<�H%��*y�cvot���T�;g�xU��v�M�	:���Ry/h�[m�s���J��j�2zr¶����b�+��e!?`+\��o���96 3G9�*���� Ŝ}W���a��J�[���h��A��b`����v�M�}�J�]�i�A��T��oD�v9���^�d{CU�#�^G���~*�nt�]�
�@
��?`�C[@�5�����f��Ȅ�.�yFF"F�$���z������ީ���^�]yF��K44;oL�ˉ�:���y�	�h�s2<Vj8I���*}nr�]�]mzr�;�;�W�1҈�����пSe���G���}��ܫ��c.�kIA'0��5��A~Ϋ1F���tyb�6��"B.�Iɕ+��
�����p��c��ur�Q(�1#/1�����=���.��.�8Aш���n@УMk��gk�L�>w�m�����w�}��7��}�����V�ۥg��樴K|��x^�ЧKN,,���cC�z�y(��@|f�����>�3D��	�vB~L�ֶը4����<�NBN�<v�e!V̎��
�y�tCQ/ƥ�7ɨ܌O�?4�04��Nl���|�F�Fzo��w�ӾJ�-@�_�z�:�y/��y��Ln��F�'tYiM�FC_�h��N���p��e`�}ujWj_t_ݒ;=��Ӷ1�
��MY�=��_�#�8>03H�^'G�B��opV�-.À~W``�@.}H�\p�^s��Cr\�"0жr�H�xč~��Pc�}*�Rj�}8�[�)Y2_a�u�zx��}�4���k��~�����>���)e��wy;,X\�	̳:�/>�I��.վ/�o�J��g�d����9c��"�~R�<t�k}N��Wh��IBN���<�����ԾCs�ߠKп�e(�һ�t��>Cs���Q��b/%�1F��ix���ƈ��gn����Vr��d�������}����cIl'v*�����D�o�4��N�Cu

�NE+�}�­����N`�50�t�=!a<�Q�ɾI�;�dG���gl
�C���AW��S)D�z)Op巑�_��òRzݚ}�eC��9pˀK��/q��;�A����r�─�E�,��1Vc|��D~q�>�ɶ��0O�H'���.栶}���o���1nq��{����{>p�X*��ĵ��4��8H��a�p���tG������70���^؍�K�#A��v`,������rW�,�D�Nbo��l{]y9Ou}t@��Q��S���㎋�kT��
J�>�/��^�һ�.���,��X*�5��Չ@���Q��)�]�g�N�vy�v�N98=���[/�C�p�Ic���j��nϷ�-LS�&�)R0�6b��ބ�Z�D���W�tׁC��Q�ɝ/�����~W&� ����K��~�8�>��U�?�=y:=|Ყs6
O�(���u��S�^�[��CW��8���=ݳ��1t0��=8�������u�.��>�MH��2j���pb��aI�_ý{[zM�w�/�ݝ	��{J.�O1.����;���a�8��w�T�JxDХ�h��n���a�@��a$�p��M�@�J7��A�B)ू�_Co��zhL�R���d<D؈���9y��K��h�m�����K�M+��]:�n���B�q��=�.U�*��Tc6F�N'(��&�1��xP�}��\W�����]̣$h�7�o�W�N��'�Wt�f,�haP�^-�vc}��[wZx�Rq�04��aٙ}ǜ�HS�O���Ӡ�C���(���Nt鷡K�]�0t�/	����dh�B
�y�,t�;���c1<�Ƃ����ə)��o`�58G���� .8�?t/����T�1�L�)���0��~c1��ssWB�T<]�$:9&Yr�T��y�AW��f���z�=G��v��j0e�?G\����cZ� �{n~�<����.��¥w�/�OL�㓠�K����f��ӀX������`�ǘ��&��ҿ�9��F?@�0��P�ҕWE���h2�?�o7��H"2D]h�^�w���C_h[%��e4�<���
�,(~��L�;�*/z�bfг���,r���e?sV�n�һ��L���u��	�lR"4E]:��)W��0Sf�iJB�N�$�d�V/�����it�cR���GPХr���D���x���Dh61ZLH"�R�*�a�a���[q՚L����|I�WEAn>A�6���i*��8h�
�|�k�K��=e���a��i0+�|�wb^i4#�\�7EAn:%^�ɲKGQ1�D�N��Έ����(�Ko6)�ľ��cd�a��ޜ�{��`f4|�� .}���+�I��I��������UpQ�n�_���0�0^K�";� �P�������&٥OT�t�q��;�N=l�>�!]4��m����]�z_F}���0�0^G���j�_]k^D^�#��\�9(���&o*]z����[���k��OmD�!_�w�e���0�0^E�%���-�ScQ�\�>�t���K�V��d�>!I�;^�m�EA�(�]��F,��1���0�0^C��U�y��Ґ�j��B�Oà�'�.]�ڲK/aڼ��]:	vu�(@�����
��+\::�T�W+�=v�a��
n����J+�OW^U>t�.]��w��-ƥO��&o�	Ξڨ�m����B ��K�u�;�0�X�
ߝnw�7A�U\7�<�ҡ�(�KC��K_P�K�Uإ�XW���/�iC���uWZ�Ojg���a��\�C@���.�~M�
�OCůQпBA_q*˂,����N��E�����^'�l�FX�6�͉�j6)���ǀa�a��[�r��g�nȸn]\�6Х�
����p�4�^ĥ�-n�)tzM~��Qwnd2:��f�a��.;lc}��b�m���F�n}�Kt�@.��oH��\����\�F�Nn\s(�x!�ه�a�a��.[��l'}v�g��K�
(�?(]�b�]p���jKd�-FEm�(P�A�^��b��l�G�>�0cM���f��E�g�1v`l�P��uE6M��;슫Q�w��ml�(�߆ta��F]��Z����0�0�e��V��mg}����'r�ۋ�tG��wA�
�|a ����
���@WPk^D��0�X����>�r|�����
�;���ޥu�7�E!���w��=R���{l�١�O��i�H��0�X��l6�(��1��Ę\�n;����K�~�i�~] ���B~�O�
� ��{��T�ːW�:�0�xGl����1���.}��Kߢ��!|�������|a �t��{���n�:��˂}�:�0�xGm�1�K!�.�>8�οR����� 
z�u�����Zf�a�a��㶓�b|ȁK���I�ða��8���QɥsaP~k@�
k�:�=T�a��^���
[�
1ޫp�$���1$Q?)���
�.M���O����f�a�a��m�1>ZX��]:	���0�� I�%�.�t� �>�K�w�2{h�0Sv8a[��|�~@�8��(I�C%��p�$�~Ė��Z���0�0e�S��S�K'a��H�H�����.��3�Ի�����W��f�a�a�.'m�]�Q��S$b�K�.��0�K?f�,�����C`�a攭�p��伓�"A1�.��[&:��f��0�0�������{|1���p�a�+(���.�0�0�q�����v�X1Oz�O�m��i2�0�F�mC!O\�a�Ff��0�0��lu|l��bi�	�q�7�a���e>Ѷ�P�(�Sa�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a�a��Т�@��ܲIEND�B`�PK��f\̀=;FFassets/img/logo-24.svgnu�[���<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 956 756" width="24" height="19"><defs><linearGradient id="P" gradientUnits="userSpaceOnUse"/><linearGradient id="g1" x1="818.4" y1="360.4" x2="621.6" y2="10.3" href="#P"><stop stop-color="#00e8d2"/><stop offset=".33" stop-color="#00add2"/><stop offset="1" stop-color="#4429ff"/></linearGradient><linearGradient id="g2" x1="669.3" y1="352.2" x2="490.5" y2="2.2" href="#P"><stop stop-color="#00e8d2"/><stop offset=".33" stop-color="#00add2"/><stop offset="1" stop-color="#4429ff"/></linearGradient><linearGradient id="g3" x1="519.4" y1="-222.4" x2="60.2" y2="12.6" href="#P"><stop stop-color="#3300d2"/><stop offset="1" stop-color="#ff52ff"/></linearGradient><linearGradient id="g4" x1="519.4" y1="-222.4" x2="60.2" y2="12.6" href="#P"><stop stop-color="#3300d2"/><stop offset="1" stop-color="#ff52ff"/></linearGradient><linearGradient id="g5" x1="605.1" y1="-211.2" x2="183.6" y2="4.4" href="#P"><stop stop-color="#3300d2"/><stop offset="1" stop-color="#ff52ff"/></linearGradient><linearGradient id="g6" x1="139.4" y1="386.3" x2="491.6" y2="193.4" href="#P"><stop stop-color="#00e8d2"/><stop offset=".33" stop-color="#00add2"/><stop offset="1" stop-color="#4429ff"/></linearGradient><linearGradient id="g7" x1="270.1" y1="458.2" x2="607.1" y2="255.9" href="#P"><stop stop-color="#00e8d2"/><stop offset=".33" stop-color="#00add2"/><stop offset="1" stop-color="#4429ff"/></linearGradient><linearGradient id="g8" x1="701.5" y1="50" x2="966.7" y2="492.4" href="#P"><stop stop-color="#3300d2"/><stop offset="1" stop-color="#ff52ff"/></linearGradient><linearGradient id="g9" x1="701.5" y1="50" x2="966.7" y2="492.4" href="#P"><stop stop-color="#3300d2"/><stop offset="1" stop-color="#ff52ff"/></linearGradient><linearGradient id="g10" x1="622.9" y1="14.2" x2="866.3" y2="420.2" href="#P"><stop stop-color="#3300d2"/><stop offset="1" stop-color="#ff52ff"/></linearGradient></defs><style>.a{fill:url(#g1)}.b{fill:url(#g2)}.c{fill:url(#g3)}.d{fill:url(#g4)}.e{fill:url(#g5)}.f{fill:url(#g6)}.g{fill:url(#g7)}.h{fill:url(#g8)}.i{fill:url(#g9)}.j{fill:url(#g10)}.k{display:none;fill:#272d44}</style><path class="a" d="m363.8 108.4c-42.4 23.5-14.5 136.7 14.7 189.3l80.7 145.5c12.5 22.6 4.3 51-18.3 63.6l-40.9 22.7-22.7-41-80.7-145.4c-46.2-83.3-16-188.5 67.2-234.7z"/><path class="b" d="m296.6 343.1c-31-55.9-27.5-121.6 3.2-172.8-10.8 43.7 10.9 120.4 33.4 161l80.7 145.5c8.1 14.4 7.6 31.2 0.3 44.8l-14.2 7.9-22.7-41z"/><path class="c" d="m363.8 108.4l145.5-80.7 40.9-22.7 22.7 40.9c12.6 22.6 4.4 51.1-18.2 63.6l-145.5 80.7c-38.1 21.2-51.9 69.4-30.7 107.5-29.2-52.6-57.1-165.8-14.7-189.3z"/><path class="d" d="m363.8 108.4l145.5-80.7 40.9-22.7 22.7 40.9c12.6 22.6 4.4 51.1-18.2 63.6l-145.5 80.7c-38.1 21.2-51.9 69.4-30.7 107.5-29.2-52.6-57.1-165.8-14.7-189.3z"/><path class="e" d="m365.2 155.4l166.9-92.6 38.4-21.3 2.4 4.4c12.6 22.6 4.4 51.1-18.2 63.6l-145.5 80.7c-37.2 20.7-51.2 67.1-32.1 104.8q0 0-0.1 0c-14.7-27.5-28.7-69.8-33.3-107.7 3.7-14.5 10.5-25.9 21.5-31.9z"/><path class="f" d="m658.4 413c23.5 42.5-60.1 123.7-112.6 152.9l-145.5 80.7c-22.6 12.5-30.8 41-18.2 63.6l22.7 40.9 40.9-22.7 145.5-80.7c83.2-46.2 113.4-151.4 67.2-234.7z"/><path class="g" d="m591.2 647.7c55.8-31 87.7-88.5 88.7-148.2-13.9 42.8-73 96.3-113.5 118.8l-145.5 80.7c-14.5 8-23 22.6-24 37.9l7.9 14.2 40.9-22.7z"/><path class="h" d="m658.4 413l-80.7-145.4-22.7-41-40.9 22.7c-22.6 12.6-30.8 41.1-18.3 63.7l80.7 145.4c21.2 38.1 7.4 86.3-30.7 107.5 52.5-29.2 136.1-110.4 112.6-152.9z"/><path class="i" d="m658.4 413l-80.7-145.4-22.7-41-40.9 22.7c-22.6 12.6-30.8 41.1-18.3 63.7l80.7 145.4c21.2 38.1 7.4 86.3-30.7 107.5 52.5-29.2 136.1-110.4 112.6-152.9z"/><path class="j" d="m632.4 452.2l-92.6-166.9-21.3-38.4-4.4 2.4c-22.6 12.6-30.8 41.1-18.3 63.7l80.7 145.4c20.7 37.3 8 84.1-28.1 105.9q0 0.1 0 0.1c27-15.6 61.4-44 85.3-73.7 4.6-14.3 4.8-27.6-1.3-38.5z"/><path class="k" d="m387.5 591.5c0 3.5-2.1 6.1-6.5 6.1h-10.9l0.3-0.4v-11.5l-0.3-0.4h10.9c4.4 0 6.5 2.5 6.5 6.2zm3.8 0c0-5.6-3.7-9.6-10.3-9.6h-14.2v31.1h3.6v-11.5l-0.3-0.4h10.9c6.6 0 10.3-4.2 10.3-9.6zm23.9 9.4c0 5.1-2.3 9.1-7.9 9.1-5.5 0-7.9-4-7.9-9.1 0-5.2 2.3-9.1 7.9-9.1 5.6 0 7.9 4 7.9 9.1zm3.6 0c0-7.3-3.8-12.5-11.5-12.5-7.6 0-11.4 5.3-11.4 12.5 0 7.3 3.8 12.5 11.4 12.5 7.6 0 11.5-5.3 11.5-12.5zm32.9-12.1l-5.1 17.7-0.4 2.7h-0.1l-0.5-2.7-5.3-17.7h-3l-5.3 17.7-0.4 2.7h-0.1l-0.4-2.7-5.1-17.7h-3.8l7.1 24.2h4.2l4.8-15.3 0.5-3.1h0.1l0.4 3.1 4.8 15.3h4.2l7.1-24.2zm10.4 10.5l0.4-0.4c0.7-4 3-7.1 7.9-7.1 4.7 0 7.1 2.9 7.7 7.1l0.4 0.4zm19.6 1.8c0-7.3-3.7-12.7-11.3-12.7-7.3 0-11.6 5.3-11.6 12.7 0 7 3.7 12.3 11.7 12.3 3.7 0 6.9-1.2 9.2-3.6l-2.5-2.4c-1.7 1.7-4 2.6-6.6 2.6-5 0-7.5-2.7-8.1-7.1l-0.4-0.4h19.5c0.1-0.5 0.1-0.8 0.1-1.4zm18.5-12.6h-0.8c-3.1 0-6.4 1.5-7.7 4.5h-0.1v-4.2h-3.6v24.2h3.6v-12c0-6.4 3.9-8.7 7.4-8.7h1.2zm16.6 0.2h-7.7l0.2-0.3v-0.3c0-2.7 1.4-4.3 4.2-4.3 0.9 0 2.5 0.3 3.3 0.6v-3.3c-0.9-0.3-2.3-0.6-3.3-0.6-4.9 0-7.8 2.9-7.8 7.6v0.3l0.2 0.3h-3v3.3h3l-0.2 0.4v20.6h3.6v-20.6l-0.2-0.4h7.7zm25.7 0h-3.5v14.4c0 4.5-3.2 6.8-7.3 6.8-5.6 0-6.6-2.8-6.6-6.3v-14.9h-3.5v15c0 5.9 2.9 9.6 9.7 9.6 3.2 0 5.7-1.2 7.6-3.4h0.1v3h3.5zm11.3-8.1h-3.6v32.3h3.6zm32.1 27.5c-1.4 1.3-2.7 1.8-4.4 1.8-2 0-3.3-1.4-3.3-4.2v-13.4l-0.2-0.4h7.7v-3.2h-7.7l0.2-0.4v-5.8l-3.5 2v3.8l0.2 0.4h-3.1v3.2h3.1l-0.2 0.4v13.5c0 4.8 2.6 7.5 6.7 7.5 2.5 0 4.8-0.9 7-2.7zm23.5-6.6v4.3c0 3.5-5.4 4.1-7.9 4.1-2.6 0-6.3-0.8-6.3-4.1 0-4.8 7.9-4.7 12.1-4.7 0.8 0 2 0 2.5 0.1zm3.5-4.4c0-6.8-5-8.8-10.1-8.8-3.9 0-7.2 0.8-10.1 3.3l2.4 2.4c2-1.8 5-2.4 7.7-2.4 3.6 0 6.6 1.3 6.6 5.5v0.5l0.4 0.5c-0.5-0.1-1.8-0.2-2.7-0.2-5.9 0-15.5 0.3-15.5 7.9 0 5.6 5 7.4 9.9 7.4 2.8 0 5.7-0.6 7.8-2.5h0.1v2.1h3.5zm25.4 2.6c0 4.6-2.4 7.9-8 7.9-5.1 0-7.7-3.1-7.7-7.9 0-4.6 2.4-8 7.7-8 5.2 0 8 3.3 8 8zm-0.3-11v2.9h-0.1c-1.6-2-4.5-3.3-7.8-3.3-7.2 0-11 5.1-11 11.4 0 6.8 3.6 11.3 11 11.3 3.3 0 5.8-1 7.8-3.2h0.1v2.9c0 4.5-2.6 7.1-7.5 7.1-2.6 0-5.5-0.9-7.3-2.5l-2.5 2.6c2.7 2.2 6 3.3 9.8 3.3 7.5 0 11-3.9 11-10.4v-22.1zm14.8-8.1h-3.6v32.3h3.6zm11.2 8.1h-3.5v24.2h3.5zm0.5-5.8c0-1.5-0.7-2.5-2.3-2.5-1.5 0-2.3 1-2.3 2.5 0 1.5 0.8 2.5 2.3 2.5 1.5 0 2.3-1 2.3-2.5zm28.4 14.5c0-5.8-3.5-9.1-9.9-9.1-3.1 0-6.1 1.3-7.7 3.4h-0.1v-3h-3.5v24.2h3.5v-14.4c0-4.6 3.4-6.8 7.4-6.8 5.6 0 6.8 2.7 6.8 6.5v14.7h3.5zm9.5 1.7l0.4-0.4c0.6-4 3-7.1 7.8-7.1 4.8 0 7.1 3 7.7 7.1l0.4 0.4zm19.6 1.8c0-7.3-3.6-12.7-11.3-12.7-7.3 0-11.5 5.3-11.5 12.7 0 7.1 3.7 12.3 11.7 12.3 3.6 0 6.8-1.2 9.1-3.5l-2.5-2.5c-1.7 1.7-4 2.7-6.6 2.7-4.9 0-7.5-2.8-8.1-7.2l-0.4-0.3h19.6c0-0.5 0-0.9 0-1.5zm40.3-3.5c0-5.4-3-9.2-9.8-9.2-3.1 0-6 1.3-7.8 3.5h-0.1v-11.1h-3.5v32.3h3.5v-14.4c0-4.6 3.4-6.9 7.4-6.9 5.6 0 6.8 2.8 6.8 6.4v14.9h3.5zm9.4 1.7l0.5-0.4c0.6-4 3-7.1 7.8-7.1 4.7 0 7.1 2.9 7.7 7.1l0.4 0.4zm19.6 1.8c0-7.3-3.7-12.7-11.3-12.7-7.3 0-11.5 5.3-11.5 12.7 0 7 3.6 12.3 11.6 12.3 3.7 0 6.9-1.2 9.2-3.5l-2.5-2.5c-1.7 1.7-4 2.6-6.6 2.6-4.9 0-7.5-2.7-8.1-7.1l-0.4-0.4h19.6c0-0.5 0-0.8 0-1.4zm18.5-12.6h-0.8c-3.1 0-6.3 1.5-7.7 4.5h-0.1v-4.2h-3.5v24.2h3.5v-11.9c0-6.5 3.9-8.8 7.4-8.8h1.2zm6.9 10.8l0.4-0.4c0.6-4.1 3-7.1 7.9-7.1 4.7 0 7.1 2.9 7.7 7.1l0.4 0.4zm19.6 1.8c0-7.3-3.7-12.7-11.4-12.7-7.3 0-11.5 5.2-11.5 12.7 0 7 3.7 12.3 11.7 12.3 3.7 0 6.8-1.3 9.2-3.6l-2.5-2.4c-1.7 1.7-4 2.6-6.7 2.6-4.9 0-7.4-2.8-8-7.1l-0.5-0.4h19.6c0.1-0.5 0.1-0.9 0.1-1.4z"/></svg>PK��f\��nY*�*�!assets/img/social-placeholder.pngnu�[����PNG


IHDR�t��MsRGB��,	pHYs����IDATx���b�8������<���s#���h�3�����ć@0kz�����j�*�����_�gŧ�7�u�b�K�>��Ģ��P��8��dreί��]?��^�x�m�s��_����Z�Z磯"�B�cL9w�ȿA������?��*��u�N��������+�?sn�u�nk}��s)33�r>m�S���c�i�/�k�A(��r���A&Y�8�n/~�9���Ef�+�S|/���u"r�.��i�s�#�G�T&�;xMͺw��:'W����|f�����~�D�D���h���qpN~�~Bu����O��9H�>ʹ����#�o 0���Ϗf�{�G�4������I�ܰ��O��{�-"I�ٹ�;/)�y\<ޤ�Y��`x��OҊx�~��z�<�W�}k\��19�B$2�l�_Ut���
��$���[YM�V�i2@C1�Lh&�|�LX��b��D��m&���w#���BVL�g:ON�ی(d�0S�@683�6�Y�#��S3���N������w�8�?>q��T7����{���%��r����?��_5>6x�;}ҏzL(iʨOP~���©��6&p��5����E��i��)�<��SÁ�ѽ�}5�#@K}��NI�! ͙!�λ�cH���⿜�oO�q�k<z�]��Ÿ��*dkSo�N�A��#x����)C��\������	�g�?�+�~��:B�%S��S?=hnH�"�"%BX��{��I���i��f��̭h�3��Mt� 	�Ս��u���پ��͙\
��Y�֨�50�U�|�ڀ����@�˩���-̻�����h�{�p�a�%�X�0�c"��qvz�c�7���~���,�aY�#���obFʠ�tz�{���	ߧ��O?���]��!(�j����d��-l?���B�i�\}��ݘ	b�v��4�Ί"�{�#�$�
_�a�Z�ꝺA!���4A_�"�
z�L�b�AZ�Z�м���a�9���p֬b��A6ȏ�3����ր"��'\$��>%>8�����`|�^&6�h��0�$���B�"�yg�r`I��'$�v��&���ل�Yo�v29�+��gd� p�Á�I[9A�(��=UF�$��u:Qb�"8U8J���O�f���[{�a�9�W8B�N;������%��<�m�L�TZǫ�֙
-D��������sR��T�pN�ھW�9��;p�kp�_�w4NA��(�+�ߡn��I��$K�)(�Zl�D���}�gB���(����}2q�
r�һOp�+6�YJ����
�dc�`vIX��
W\\}�e�!
�e���+�GU�=Z�x"o�-�]C�V���io��^��QQ~+p&%;�0�/��o��p��_�hi�	��0^8�Bbp�ӭ��|����~��T[T4�ͫ�o��e��!�\�݃qJQ���8��q�<)�����9���&���9��`
O���o0
}!���t�E�uv�a��5ͻ��(��m�8<�;��
��^��1�Dei?��S�R68&�/�<�,^�~��%�P�D֔��Ճ�����{��S��Y�L��Goj�aO�����`����]4m�M�
��QG3f�T�.��"�h"���vw�x�]�
i\y0�T��3�!��5!��!<�5��$�>n��J��wer1F�6��tL g���aѬcYҫhX���s��,i�*�[���wO�9Ӄ�ZR)N����6%wp�[���02���q�-��e�Z$�H�'W�GsQ��j�
׮�����I�����p����/�
 �n)���!`)824Aκj�V�gJ,�z��h��_/�5���P�W"ѥ7��&[�=H0�0f����C��曄�p6q��XX�4I�
l������3,uA�r>io1����G��N^�<Q���T�B���E��mZ��I���k=����Z~���	�Ȫۻsj4m�(���H�?p�����9�ޜ2�-�#	®�,9Vz�P��zp`!\��Q3�O�F̊)�OQ��m�6(NO�غP3|��t&o��/�% ŗS9_��'-�hb��M�0���>I|h��<Z�Asܔ�Lޘ8�5n�n֧��VbSS��I�A2��"���x��a"�v�9\�2!�	zjQ0�7�\���$��t���Mc����3�@UŁ�%	۳�I縜d�8٠��"��D�B(��Fq�m�f���+�u>F�p���M�F&����"�)���B���*���%�����ؿcyᱼ�:8��.�r�:�N9a�^EJF�"|��Bl�1�	�n�q�k욬��*Go���@�h���R���m#�c�q���C�B�2ųW;��ޢ:�� t~57�����KA��R���=����t[:����ksƒ��B�qh���p�LDr�� cL�P��~t4kyD���3wLD%�=cW���h.����A�s�uq�Ġ�9&�l!Mϑ�2�]4��t,P��P�Mܐ:�5v����/�W��p��b��AN��Yܾ˫gQ�}�`aMBB(d� |)�AF�y��B�0�B���aB7hڃ�/z��}��R1Iw�d�����!��d�e8,!<��
���dv����
u$�]�8��N��W8#�A��S��q�l����䠳��sX.`���	�N3�R5�Ӄ���Y�<
Ǯ�71�Q�Xט��J�7��nt��u�A��5U8;

��Ș�nEB�"��EH�*�=n.J���_����B�cR\r�vI��(�|�AQyH"��&%Ȱ~�$��U��l��MeN,�òAv��%0L7w��}�����
����d	� �\��oR�E�pt�*x�8���0���	�w4d՛�`W`]qx$�Nab�����)[���6n*`k8�x�l����ET�w�8T&XEk����Y$�<��H��&!,�ܖ+~]�J����`�;�ճW�H4���R��9_x��v���Z��v�L�vo~}�j���k#t�i8	��bs�9gCk���-a�b�p���Y�bKEaJ�6l�Օ�������N:�"�&�~�\	X[(�i>��L*v��/��S6����-�Đ.s�R�w�HDJ6��<�*3o$�'��N?"eXj��?f��!���/�}��t�j��.�H6k������k-;mB��8L<OD:H�A��w���$��;=��u�P��m�[��`���S�=� �7ɞlp=@�qYlA�/D�d-��rB�+5�A���f��u$������azn�X�}��SLw��'}<IH���=r��p�ɵa��"�8���Kr�Y��a��v2ǽ����N�
��m��9�~�|�h�#t*�q��'*�"��3P�+^�/y��J��я���}���@1�>!"�2�b��)@5� 39��T`��s�%<��ik��l�A�8�N��c0�Yr���v�h�L���Ȝ~µB߯��/x2R�6�~�d1���\xӖ��RCr�j�G]y�DŽ�ǚ���kX#lͷ©f&�U��즗���fH	���'��>���z�[�4V2�,$L�'ǽƏ��Ƅ��|�i�,=�v�$W�f�cV���VL�_dh���V��J��!o�ph��v�u��a�P>!"��{���ҏ6Td0"9	�$��[�W���� ���]�c��v�]܃�C'|���˰{o���}t�zU'\�_AW��l�0[�B6�)��2�����C]�H�q�cU��}�B�р�X���[G������g_W;������lV�0.R�r����
~��]����R�ư�q���y�)��!�K'�C����%�&	Lb�v=U�"�!,�Y�
��B�_
p����	a�ޭy�~����"R�P]��tV�W4jn%��Z�S>�=����*oƯ�bq]ܞ�ʒ��H������񽀪F��
>	�J�@��´�fy���8!�8}u�sL��}�pR7c���]�<�� ��X�g
G�2s��D��Fh�S��u�b�5��9,��t���Q��	g�`��x�Z�N�yl<�\X�@��V�R����?�#���N0�+�.�Ԭ���aV2�Tq\e���=aH�`9�z�j+G22Ö�ԉ'!��_��D�l)\�<0�%�a��R��T���p'�Ic�є�k�����{{�c,^/@��j�	o/1�6�Px�ۃ�?2-��x����6��}@�p��{5�S���	0��zV>�=�Q�_*���^DnA�X~�okҒsXn�
bk��*�A���i.j1tv��JK�̤�r��p���5�(�$�eƘ�d�#�A�`L0O�Lٚ�Z�i[��•�2�mZ�~�a�"����c@
����[1K)~�r��L�7��X.��
�z��/�m�(b��5>++��*���$�kA��Z���&-s��~:�{�2e&
����)'8�� O��E-,�<�?y��|�^���c�0F8ڗd����8��v��,x��f	��A�K�HH�{���4��F���Ǧ�t�#�����J�B�:�b�f�V��!���$��K�g�?+i���p�QP��`�5��o0EN����{��E-����}�¢D��y6�nY��Ŷ�w7�ɴ[���lS�W5n>��=�wVP�
ԓ�F_�W�א�<�̾��8�^c��:����<��TϱsL�H���T�4�'i��T�ꫯ��ѽ��<�p*9Ϧf�������F<��v��K���k쟩�\�D�o��^L1�XU8�6�3��ô�l�Fơ�>Q��1�d�Yi��}=N��ctO��v~{S�i_v�Ÿq(f�s���[T��#�(DO
�3���q�-�=zNw'PN5�=�\$�Eͽ�{�WN�^J����-�|�}]�j�8�k�=�&N��1�
������o��i�q�v�G�@;��WG�N�eC�]�:�A��>�hYڹ�r'�sLn�E���ՃS;o��E��7��2��-35-#]�B�:��r&���%��h��A�3�5�Y�+o%���h,,���gzp�d��X���R��-����8�� |c�I�!L}/���Q{@٫�
=�"�4�Rd�T�`x�bf��M��u�,Q��Z)8`�˂ڠ�hl#4j�_��`K�Z�蔎y���Wx���[@�c�W/�{������tܲ�In�B��9,��Bd��=�\�
����E�3g���CX��>��� cn~�4�f>���,)��\�#7��'��y���f	��q�	ٙ�	?ۿ�>QP?*oR�x	G��#���Ԧ�i-.v
�|�}WA[��9Ւ^�fsK��9��]ҍ��ՃLe��&j���^�X��[�z��G�	�za�gb��vrt�'>ɇ�@{���t���q��o!�|�{��;z<�	G���:U<���zЕ/��n���+�Jr�I�E
�ͯ_s��f��-]�1=�
.(�9�S�*�R�pn�$WW������Ol���ni�\�!k���L���T�j�ylPJ���lc2r��W$����J�N�*L���А�7
B-��>���97
�6e��5AH3W�0�y�D��W�f�5��A��ݳ~��`�����{�~
̐K<B(؋:���тB[��$��a������f�(-����ڗ�'-�a���
�qB4��+��k�w�-
�s�.�ͫ��XL�� BҒ���o��(�h�%ʲ����P1j9!��V�i��8u#| D��i5m�$
	P�E���M�3���D��MK���� ��{Uנ��t�����Hl����B=���ށ�-�ʀ�Z&�Wk�]BȈ���҃�^Wn�#����b�XOQ[Hw+P��b��R���E��<s?
�s�ے^�.��#�G.��+��FxP����w����=l��'-�1�tӃ�%Q���Ű�klw���a!���;r�>�I6K8�ѱ-e�p���5q	^֗�KW$�����=�J��¡9���ń�wJ�a���R�e���\a���%��\�LEv��Q�HO��4S�8�I?��w�&!Ű��j�%UM5�
O*�WO���*[z�͔j8a��#����T�7�z�(��~����>���5v>s?�Э���s*qu���]7�t�]�s!�f^�sXn��@����5@v�� ꀲ*�?�u�Q���+Uw�妼e��pH8��^".]��j��恔'�_яXm��	^v���N����)s�38�U�*.��tt.NB8����wݑi��`�Gc�X��'	���ŜK��٧�>&	���_���&�h��I�����\.�!���Tp.h>�c��Ыes�='���%���D$'�sr?d�5�M�crS���:�ͷR�z�ܺ"�/�6
�@�z�y�-$5sȯ�F��Qb��N\��}<V$�
>�������@���y�
9o�H�c�F��7D�]
��˻��m��=�{��\4�z�aI_bP���Oě�ۭ<>�<�(��m�����?�;B��6��ϯN�kl�|<S��v�ӎ������������)�Rr3v+���R
�h
g w��8��p�l:��,�'����_cJ|��6��/�V�K���靹���L�~��HX�H3ƺ\��,�=hY��u	!Ú=ڽ�J*c���^Z�ZX��c�8��S�e��.!��m����}ƒ�NJ�Z>D�E�&�����<a��zhz]��Ft@!�s��$|q� �ӛ�e��sx�� ���Ej�H��p���̀{��g@4�<�
��;�`.��[���G���8���PJFkt�E�����ښ�һ�n^�PV���:ϧ��p�^�����@euB�Y�!kNi[;Z}�άj���k��A��r��l�u��0�"V��������p�
��p_Q���`��>ߖ)ΰ�91I���*[E,��:e�C��t�؁�_/^�l�E�$�f�g&��ooJ?&dr�5L��
�mGeE8X�?��O�?�rjq
f #
f:�1J�q���[��rm�;梓K��>�J��c�@{O���op�Ŧa2��;�\{�ń�=Υ}�J���	!���N��o;�FsHXZ8�?�C��Z�����c7�/F�P��?�J%�B�ڵ�\�����T�xb(=��o[��V<���:"�g��ՃzOq��xwl��Ӌ>��l8*�4����9}q��F�P��I�
���·���o
��&���q�RR���m�
_�:a����уz��(YO9�Ir����@����>�2�6��
���Z���1�S(f_T���ˠ�oB��$��!�J82������{x�
�����O��O�W�R=6�~C�pC��?�E�ߪ�A����;V��t���k.ʪ��o�./�$x�}
�<�����̶�řƞ����(��w����<�Y`�GE�[�׍�sLn`�(�(�dՉ����҃�v����{����|�h�?M
�\�}���xIb�Ɠ!0�YToRs1f�:���:�'!7�p޻K���I��͉���J!���G"�X��d�5ı_�ێt�p:G�B����u���·0�]y�A��DN�	牥�Ջ"+[�����e���[�I�k٠N�j�邗���Ճ�Ճ�XT���t����}��3����?(�M�eV��.4��G��[��9,��\�Ti��T�T��=T���J�G٠=H������D_(�<e�5�B*�|qL�$BhQ0��=����C+�}B��6�p-�H�C���B@X^�%Fv�I���no�^�k$��#���s��z�#��P*~�o�%��E�}�~ω	 ?Ɩ��:'�_8
��:�D�?Z���zP}��E��m��W��;^=��6 5�Ix֑�mB��>l80�p�R`�X�5��0�����$�L��sL��*��y:��&��^ca~uJ'U�.BY_r�XM���

/$}: �
����B�ef��i��{v��&��45�F����� O������'W�$IŲ�M��2ҋ<�a퉠搔�������"��(C��v���@F�ă�J��gq
U��^����co�xqz���.,��
������'��vZSX�Q��uu2�eb����v���a�S�:	ቝc��t�N���Rl����pt�x2!D3�@)m=����yO�:��w������4��	_�W�p�k��ZT�
��#�eiTQ��R�`w;��1�?�L>�e�k�]���n��)�4������e�E��&`/]�9/>�[=ؔ��u2>��J���;��7�09-�3~���w�k����X��A��o��]a����2-��2�1y|l��[0��=�$�C��(��]��о�fS�e
��L� ��5;Q��R}�+���+�A�k��^�(�v��A��0C�H��}%�ےbb0���X���D
�no).
��[2���q]�޺���K�l)!t��4O�w���?��I���	�T�u;U"�*��HR
l/N���EZ�l8*�V;�i���F?����<>6|�
��E�`�e��
G7�W��-$Z���la����yw�R_w^�Q�8�R����(v�P�
�Q�\���$��j��o:&�Z��_�,~'ݍ~��lB8B��2l^�dt1H/�CG�Պ�k�VW	�3{V�g�Pɸ�(��f{��2�t�E��+"�K��ޓO�MoK��
Ge�2ae��&�f����̥/�w���1y|l��a������������/��y/&��I-�V��V�0�z��J�\��,�Ut�&�o�&��g����>Nv#P��D+6��D��$]x}̻����9�*�ţ��2*.'z���6)C�#���l�s�*���ø�w��L\� ��׷\Н��ca�ȟ������NA`P [�>�B�ƶ��'�2��if�Nů��{u��;���J?90�9��갤m%^Q}~�`z��1I��'�V�ue%�8���[8�	BH�K��%)�-d48�� VF�pВZc�����u���O�����wzx{�a�~�:���F^����-&&�!���L�j�LƁ��i���-���K�B�(%����[����k�U�A}>G%�Ԣ�L��4̯��y�м����6�ү�vZf[�	�9!��Ѹes"�u�V�@$��yDc*�� ]��'`�s�)_,!�X�Ml��y���
	�!�w;@�0�L��W�x�n��3ygrV�-�50رW�C�%��&��Y=֨�O8Ju(���!�%�~NdC�BG��M�Aʁ%
����ml̿�d+:Ln�
Jy8ĻG1LIG{o��D	&��>sn���<⬀���B�F�!�$�9캾�dJ��V�=]��u\��u��F��C+��~qa�,�\ֵc��Ճ�%/���׃�����dy�^
3>��>�b��c�Z��9��C�uN%�	�a
��`�%釕Ǽ��0��f��)B�Aܹs�"��,��KF��ݿG�kM)d"�wx��ft��%;�pts��B�D�7X[X�p��8��]��/����7�VLl���3#��Ry�!�Ÿ����'3�WU�w7��ׁ��4h��ψ�@.�-��*���xc��]Z��Ch��^��h�Jo��+a)�s���1�Z2��b�ޥ�5��;2ÕWY�IDr�����
f(k��D��+�2�����{
Z��E���Z�5���oK�K���Ӡ!S�y^P�}��Pzr*��
�E�*/�$�ڃ3��G$]��r����΍���b��G�n��R�$�-$N��·�R�s)�9Q����U*P�[�t�E߃��~`���'���2gvk	ۍڏ��m@���q�E�Q%�7Ȧ���Ə�t?�.p�
߼�/���H�躿�.�δ*�GN�
��"�΁0�F���^�K9�g��Z�-\$��-w�^}y_Tq'!9	s��]Mq�JU�pʩ��!|���F�WG��b��f�����%Ճ�'��%:F?1
~z0�0-ݦo��4�~A�f\�/��e��3+x@4�Y�Dff�E��}D&�eb;i�@�({�n��@�̺��:2=�
��n0@�e��(g:���]B�M�����ʇ����#��I���{��f@�6�$��1�΢�H�X4B�_�B�?��Ho�ѭ�Pω�n�.����p��j�ф7.\7۽U�э���L�����~:8O�^�.j����S:/+��L�%S[��v��ת7��2�n})�ʏj�x��ԍ��N��L$:S�!�po�y`^�x����(WK�+.J�8�@��Zb��R��{���<X���=`��B��Ճ��h�Y y�z��zI������&�P�9��_h�&�*�U�m+?�^��¿-�5]`�Yp�?�����27x;Rd�,̩#��G�.�Ye;�ׅc^�QB�fm7�7�
����icrȚ�P�	��0IX��}BX�?�9�>���?/�e�6py_d�Iwu���ьK���~q�"����֪5~ܶ�L��⾓���ȰDpH�X��LT4�W���iI��ж��	�D�z����2/�eV���̀JR/Wяq�_3�8롏f��&2o�f���o��5������"�2V2�z�7=�MtA�֋�"%҅A?�6m�n�;�37��u�+�E���Q�eD�a�s^�����qx`�e�s818��GsX�M���G�O�����kw��]�mBh Y�'ͣLe�����}d�OiH˟��of��n�m\��f�:���ܕ{��ME���=�(� ӮR�E��OiF����l�=0,���Z9j�@C�$�l62p��o��!��?ܢ��HnT���V�A�X}��J���P3^qIr
6����?�=�&�!,a8!7q�}��An��q�;�uR����2S�V/�}63�1ou�n��~�٭7n�nH�����̽Xڕ%G&���&���i�
lO��۸��eT0��q3dLp4�+1�`��0C���~]nE��`���߻�۸��F_Y��f�I4������0O�/��g��`���C�CTq��I�'饯�11�s�5..`&d�|�.���5}�.�F�'+<���)�a���N*��ͼ0��4''�(�&@>�KB^��=HU���4�G[���\�s˅�f�"�[oK�C�H
�%�얡	�"�.��B�s���b:�]~@�/(���
�׬P���V�ZR�\���C딫r��;�3�ᅄ��Q����g��,�-]�g���5���~�`����(7�	�@���@�T/�k���� ���,��%��E9�=&R?B�z���F5��W���*{�9G/�AN��@c�f�J�k]C��y�V�-t�ub��a	!���V*��nn҃\�M����Ya��R?Sl!95�_X8��B���`��
���(�>�B��`b�n�/��Ed>Pa2���0!4�6i�]�$��]�JbGz���+F�Ku!g�X��B0�:@�Bĝ|�yW��$����'��~
�,�5��S'��h;ʎ���A`v띺��e��H}�SG��B������}�_�ʪ�n[i�L�P�������7�(ʬ���:�Հ�}h��8,!,�G����x&�L��z���Mm&��p�=>�eT��]6�A�X�{�a �����tД�v�+L�\�a6H����q��΃��1_pG8�tq�hB�����:�:+ia�#E�jl0[��|s���{cWxu�^#�X~�:Za��|�ж9�=�3m~]�bJ�{H�`=�f��4��σY�k�d�� ��H[O����5��F"���Ղ��эJ�F�Iͥ�npҭ��z�)o�l��f51�Z�����tX�d^���|5ȸ�&[o����/�(N1� �~n���K�m�.$
�6J��x!lT:	SL<��kh]�uL��k��S ��B��(O��+�:�΢0mw�Ǔ,h1�mꦛOZ+Q<`�T��$*GS��۷Œ1I-^?;$����n�8�E���@���T��f�M~��:/z�����.���QpIy�/Pg<�q"�Ɯ�q]=�|&�,�a�9�>�n���v�ߞ���*V������m�����:���@���&���_P����c���V�p3��z�a8!�;lM�|/B�"@��o�W`�Wx]��v���%����:��V�G`�K����O�,�-�b�}�ߦ�st}�9�[�]����`K� g�5�׎�̙!<4�Ճ:�kU�b�l�?�q�~�M��3pt�ޅ��A�?�_+P�����j+t���v)W.e��A��Ф�חb�t�T�Q��b��LuJ�P��E��Gi!2ϋ�i��L-B�o*�!��^�G����E�
J�E$^b(1X�6�x���k`��z�}��5�P���������s��o�V���]�"�ݎ8o���x��������E��E��!�1ؠU�zO���N�;� �N��ܮ�E�<���h�,�띋;����&cX�����6�\�a�PV�i�����)=fh��M}@,,LC�����0�$!�ӆ��Z�E��¥�^a�̱��cB�=�0�x�P��a0f�o�k�]��㝕���</;��ITx�7^���'�!����~��BJ�,��MZ�A�.�A[}[�(�
�<�. �!�4��)}!���?�&g��|�����F��?����39��XD`ݠ	w���m�P�W;'�`BX>�k������:P]eJ����o��3�ߍO&۾�%�ͳM�z��Y�b����y����>(o�9�A�R)x��>��#XL8Ú�M�]c^|P�`���7���U�������)H>!�ŵd�N�A��=�:x���͙P�8����&ԾǛ|�-��\zbA���dn�Q�V���[�����L�����I��'.ͫ8��{�^����6]&|t)8U'��-�'b��6��[_XUX���J�X� 
Ho�oW��ˋ(ɘ�e ?��_�
'	�Pb���8��I�۴�~�wO�@���Ճ����)�W�=��tr���:��Ӄ�{�Wh'�y,B���;����K/�F�\�S�T�U�!Պ�쵄�D3&�� �-44,2�G=^����{�������#-(FI��̛�>�4�<�cT��{�|�[�!��C�[D�d�z�427������4Kݞ��	'���v�}�d��3����nm�i� �/-�v3��2����֨���y~7���������o#Gt��~1�<v�91�\T�ާy�s�)h�vON��8�+�B7�&����}�a�~��{��a!��Mz��AZ��P��!��;N��p41�AP8Z���If�h�qb��,t��!�zq�D/�^�]64�0���N��!T,�Ȟ�m?���+�<Z�u*��1N�R�P׆;��oT����[��?��o}�Z:j,��۟����+�9	��ҋv����7�kWd�������e�$�'����#=�W8S�*'�q!pQ��U'=�7��Bh7VC��1ИK�Ql�	>�mZ�@�q���t%]	���l�h_�"�;AwjH?�GӁa<�ɞ��k �q�Іf	�	�(��j��B��2��\�Ś��&�Ǻ��$jB���q�*l�
��#>�G;]��s�%~
�kG9��n���<>����1oLv5��g���t"�Pz�S=v]M���Cj9n0j.
T�e��?�D�A3��D����w�X�P!t��r�Z'k҉װA!����$:�z����G��Npeb&}!���u����4���W�Y�]&/��ﺸO5��\��%?�-�	!Р0�w|M�F�q�/X����k/֝'4�B��|�&��W	�͌��(��C؃pɿOB8�Hf���|Ï��XP��`����Hb0�M]�"Ns����e4��$O/_n�3O���<;ԏ�3E�� ���'~�����Wt�6�wR���0H�=�$�Q4{��jo+�8"!d��G��9�|��i(Ȅ�#�Q�9#��eG�P��^�8�ec�|�j�	�����'&��U�h�Aok{Pj�kQ�Ӡ+�4�5��z��3PĈFf0�5%�b�\��*䉥�~�z�q=�<Bh"���;J�?�Tޱ45��~#�����
s�u��6H�$]P�޶�\$i���8?�D0���X�N{�G0��������7��g�[�X��
o39Q=ZB�(����l�2�A6��:���y'B ���-oq���S�a[6٩\�y�C����I�(��eT&��j��@�ʘ5��,f�s�wE�ã�(Fg�٠�$A���[��W;���l�AzA�@
���W1T��g��c�+U��u(v�y�P`@='�	�8ߜ�`/W8��a->}m���	����S�~ю�{�IJ���>p�����c�g�֮�.�Ś�U뽽]�3!<��5�P|Jg�;b�=ϱ���a��������	��!�7�*m[�k�]�YڧQas��R��B%2�O�H�XSj���!Ti����H��l���*HD���X��`�3��M=�{����L8,ZT�2���Z��[E�����F��0�S�������#��M�bJ��K�7e�`����%WX&V$��߹G�@�O�C��LPh�%nj��zQASV� '=�D�QO�Vu�*.�K+X�a��;I��"��"
!��E��A�	�jʿ����������3�j����-�E�%.���CB��9�u�ZB��J.5y�<aL��*D�k�t�hO��Q�,7�t?+�<1����q�v�����}�с�`N]L֒Ꝅp'��ia�+�F�2:qD�~yL���e�C��i6a��mK2��+���X��VyM��G]hM����}��� ��Ԯ 
H�zv���8���G�Z/�rtO�u�5G�n��W»_��2�քPx�2�-�/%�[��~��_nX�(�:"R?��r
��'Me���������$� 3l0*Ԙ�'�C�,����-����0�'4SQ����#�撔�a!u�}Q����w4�
Mr�@b�tZ
'��%l�
)d�	�����[�r҃	���p�:oR'`�*��q�A��[ b����#����v���#�.#i-���6.!:j�Q�����@&\��ߋ�)��z{3�bS{�(���������|YZ�7��$�~�K?�k���#$�`"�#��,�u |2!�t}P��O��\J8�(�%��(�j�|p�c�Tp���g��I�6X���ݷ�E?���=�6�/��B�	U]��R�;��|R���м�����V�-o+]��� ��9���\{&]
;L̛��Z��/�RD���Bn�?Ž3�SQb��xdr5�-�m'�]��o�r���;\�_@y��k�l�wE��B����k����E&oL,so���N�L�`o	PG3#x�%���Z�\+�����ho�u ���\��C	Gg�N��K��+{��6�-�M�����򿑡]&c��ఄ��l��p4-$J6z�����>�,��f��lH4�R��
��=�
�]aXl��W�u�_��!�T�9)�WU�V�=��l�k���-��;��vԿ`XٓZ�����gN8��\����`�pՓ��ԋ����mn_g�u��s�����1��B$ԷL:��@
�<���ppB�<�&�g��P��W��儣'"Am'/~�H���G��<!1hqX6�ނ�0���v~kk�n�zQ���u��%�ې��W��9D��E��d�4�u>O��plQ�oo[�[�uo�@#D��E�?�S����@�����M)U�C&���lBD�|D��Y�uRWU��iu�aM���).�w6������B�i����!<�\S7���S�Zl�f����?MA׀��T�h�=���M�>�(�,�Q�-��	J���S�
1](vѬUg�y�N� �
�E_uy��Kx�@�L�F����}M����$�
T/1�Q�
�
��Qe����=e�SMM�	ˢ�k�Q�3u�'�!f���O48�z	a+ZK��'T�Ed�'��wk�
ZΠӣ��3����p‡�dBH����W�Ek�ShwS���0��6�Lh�yj-���_��[8����y�?6h��"R�����d̰.X��TM�8FIxk�h���=��lX��?�fP�D��b����X ��˟0'�R@;������1�գ�'{���x��kڲv���ˋ���'��nIg��z���֗���P�G�'�t�TjH&B�&`�rx�"R;�l'!���)S����
^N���&b8wm�z�&�P����}�ă�b���ꎙ�t�㨵�wL�Z���xxWBXC�D˔k�D�~)�i�%�x��}�o�i8���[�(��4����m�e^��p��к���s*�Y�}vA�;�MZTEc�14��<}vT���<�YO��խ�V���@�P�?�mK%ؙau8Q`s�BNL�N�S��	
=1�
�qn����IU�l'!�_�!�$=�
�R�:��ێ��a�P��{dA���Jm��
��PnP& �bme<黺�T�4��q��T$��d�g��Ӆm���<����)�ΈP[ߚ�$�!��~��aZ����DЛ�4��������O-{{7t���M�>�C9�.�_5I�O������7�'D��f��t�s�	
3����:�3��(R�
qV�9�NB8ȯ�-ı�rI��YI?:?�ZƪZ[��$�����ؼNS�)r�
GQ�x
G���B�-����OZ{��33�苃z�ri(7=��_��
(�9Ճո@6Xz�a�	LnE<v����V��
.T�bY`�'�'u@�@�:�~��C���d>a��^,X@���]�����zN���u�	���ԣ��f��D�L���R3���"Wb��P����) �iԌ�9�ɐ����fp�Ah	����b���ӻ�����l�Y���r�VI<plk��M¡M
G�x���>
�V���kE��3�Ʃ�Iw��ƴ
Z�m�P�Qz�M�<��.�`��^�Tb�
ؐa�W����$�F�pt�$>8��A�K��ELR���b�–��a�Ɗ�e<xQ��ȥ��!�@~�>����w����z1ްA��X �
�E}�O����Ѱ�Ա�1�:r���n�H79n<�%��p�_Ⱥ�&��5�P\�gX$M@Ͻ=/]c�T�RP����o�T'$Û�.�)��	�R��4l$�W`�"�lK�j�{�)�@���-Ӆ��`���~�2��]��^a3���=J�L�W
z�.Hp��	Z�TU��%�$P���J��A*#Źz�K����,�E�X��j&�n���a�N���x@�I3j���7�� �ΰ�Š�����y�rq20x�l	'!��[�]=)�c�\3.ﹷi���&:ׅ��dT�Vf���D)�E�	{��#����-
&k��8�ȳ�f��&����y��6!@%zC[Nۼ�~���xv]^8:�v�\�	m^>�&�J�XcX�E��],�$��&/��礇���-f��4��K�Y�x�$#-��B�G�-,ȝD�!���#��I{ŕ�vMvk@K��{no�	�}>ʏ�;���=r!��gj�0U��O���ŷ'�>�.��i�#X�:��H��#/ۤ[����X��f��jCՃl�W�wh�XF8������&Ae�@[�bp�s�������Y8d�e�Z[Y�q�و���b�2i�1�a�R�� ϗ��
�]�NX�d����R��H��#[=r<�1���T=��&=X��&!��{j��ʖO���pJ��c�3:��
	G���͂�k
��^�i�����{��8����U�y�?c�i๸��R�V
Љސxl�Wط�`��6������Ӆ���+�z���ϾV���Q��%�g5��W,<c	S.p$�k���IV��a9fE���� QD
I��w�A�'\ޅ���p�x`{8	a(�v��r���/#��䄡6��Ϗ�������͆9��$���A��Jm�3��
�t+P��WΏaᨗ����g�,Bez��q���.���ep{™�پ�'��~��*O�n�<nÖ?k�˾�1}P8��#�9��I0�8�a�5��y��Pݴ�}�}XC����r�-�D��f���	!�T�<	<����0����h�&ӤE��:;�Q�6'ޕM�	pF�V��C{��vr4���{b tb�k�j�-�k�0M����p�Ҟab0�ۭ�G=��ƸSf�$\���V���J�G� ��%v_��a�
�me��[H8��r`I��y�L�ߦ�U�[���aF[�>�k=�f`���fF&��$׀�l�r�nh�g[�x�h�(��
^̕������l��z��9$��������?�S�
3U��#��9	a�Gݾ(5X��VA4��g-���{�':�@�]:4r���O�:��	�&d�^'B��ۏ��V\tE��$���
F�hG��G8��
ޗ}��8�pƸS��Nk��ބ+��Z�,}�1F�(�G�G�]q�oI��) �^B8��ώmE�w�,��0���6�`�_�:�?
�زq�#k�����.N��f�/(�&�U�x �Q�LI��ep�R}TA5/T9�*A)5JU�Ϧ���P?R6��$�@��rc��&6X>��50�ަ��S��|Jdݺu��ӳ�t�K�5	�
�7_�I��g�%����:�ફ�odP����*#8�q�a	��Np����B�dK�l��”fO�+c|���S}a�q�O�/�y�����@�Zq����"5���Yf!(���3���"��iC.A��y�U�6K;����x��fx�a�y��V�H�J���Hm����ʣ��%VH�`6�m�5e2u���V�a�sBE�z�9L�!��uF���!��x4�J_kj�n��_�q(T �w��
�Sn�";�O�a� ;c�iP"U��r{ �ōoIB���2�̗�
C��39�R�pԼ\-#
����LP�2��w��G��I�?�'ɇY<�-f�M s�O�>�!e��Ň��0����%V���w�
Y�
:_�ϣ�I�y%�g��S@�a)ky���������9���{�{�$�m脩��&�4w�:v2�Z�R����}��y;�Xs�WJJ-\H�N֍!��=��d�-�6�8	�	�\^�ƣn�d�2=�Ձ2��G4���-j~��"Ӡp4j?�9N�19������!�r�)���6)�8�(�8����\��).��]ozb}���E���2����*�b��J(�n�q����Z���Bi�~J����|Ã/���֦�I]p���5o}]|u���%�:B0���A]�>�8@���}����
���Pq�@a�hy�)�A��
������Y����QXR��-U)?~��T���Ebb+�u��NQ"��~�(�Jz�)��v��X�2{�Ġf�Ж|r�����H�r�Z�@t�_4K4O4�8�@UX�����+`�0�!�4<2����[LK��*�O���U�_I�&pB��W��LՌ�ER �ٴ��ZH��?��mpbqD��U�}�!91�R�Ы@�F�#X�2�A�#�l�����D	��tS'����[�����O��8+e�᰻?K��+�J,&�����M��P=!�=�%`5`]'h��	7񣊣�O�j5�# �.��d!#)�d#*��^�gJp"�_�z������+2xo�y����'��n&��)=�J��\�v�D�aN��$�.8Vb6�,�u���i��H�v;A�a	�3�»Ӂ+�B{72b�Q�n��PR1V8*qS9�Ǯ�m�|N�d�'\�m1��EM��rM\^a|�V 7r��}>�H���!�l���;�`xn��T�(�Ac�o�Ix��S��%ت>�F��`J���[���fOc���NH��-��[1U]��̏�hKؤ���2� N)�@%�IL�_xv��@�y�୸���H$��F���p�v2k`ck��<-F_^�M|�◶c���j���^�}����_03os��ɵ�86�d_�$������L�!�CI�f�>ł�X����>F8�xy�)�"��<�g��^�X��KN�&�5X�~1��R�:)�&Q�H���ro'DI9�BD�^1�N�б�V�����@|Pi����D�l�Fj�j�Wr=��Z(�k�1�*�Oq�AW$�Ӆ�ʬ�-�=E��9IB����F^�%�#8���}�#h.�L�r�jlb�`~(s�@z�L5��c��¬qi�~@��Du��4�-I
����NaevQ��ӎty^�������!�����%�E�Du��6����:�Q��m�)VV�VH6i:�hg�hO-6OL��~���A��;	!A��c.ڰA3
+X�� ��r(D*ۮ��/*;�**���nj��c�I�˟�7V���3='!<�-LD��(��҃X�o�!�۾-3�$�p����$V�t|t�Gq�|D>��w
)5�Te7�h�'V��"ܪ��~����7�Pל�C�g���Q�PC�Xu[H��w6h8�c��s���o<��鳭��`��$�'��ӭj�Ta���D&�wm���+փ��+k���R"��|Fw2؄`�/�Q�싷�f|7�Gp��c�J&����̣b�v�8�t6H����&n	Uƒؐg'4�3�|כ�̺�6��������\��
�8�{��o���\ۄ��:��";���yt���7���lj�>��9p���_������C��^��I�Hw�E��r`��.� ��i�/�C��Im�׿���K��h��`s9��P˯k�.��/����G���5�]`-��$e���^����+};}�;E�L$�hVЇ��}��ι�
��E�A��o��ˉ!��~Q"Uv����S`�7��+�F�}
��
®0,�V��,��
"@��x�u��2�>�5�]�A�\
�D�S��y9�M�����•�m�&d��.B�=È�r�prFC�{���qP[�u3�'<�_<x�}���ʽ�`�$��>:]8:�w��Ol6��d<!d=�Qsquq&����/�ID*�.Ь�F�Ev5�-_UC4�}t���Q��Y��LP~�+��s���I�(Z���}}�i^Ę�"�z-�<����X��N�?m ��Qy��A�OV����aiʉ� I��S������$�'������׵b�dv��pt�;�x�m���H��5���(#���l�$�3�q'�Cb����("EZX�̌+H#"Flx��:F;�
!�^��M��+V6�t�J�"ZŚ�w#����;!}:uR�N%a���G{�J@5	��(�"gW����;��0�!4P��bؕ~K+1iƜ�#�7��8,!�ƚ}b=<~�����o�V��e��7�Y871^���04E�Fl�%]�V$˃�<�f�^���R��B�KbK�f%Y�Ч�E.Ǜ"�][�Fy��_��N��Ӄ%*jg#F/�p���X��E�'�I@�.����W����m����9�I���q��Rb��=��H�h��`����dbQp��rnM�D�-������K�L:2m�(Z��]>tX6ȶ�f��Zr�L�<z�
�B��s`���BD�p�D!����ٝҗ�tA���>g��o����%!��1��0<��_[%Z��>*cz�_|oRwZN�.�1W�#�tMۻ�"j]hcK�]���!	G-�y{B���c!ج
��T�[cʈ<��P\I�1���7P,���j�{	F@�?���2�A�{������fS��Wt���}al����i��~3��֏9��x���{�B1YL�jc��ۯ�7���o�q@x�8p��J4��F�k�v�fFR��*�&���˗o!��-�?.>�}��G2��Ǚ����[�_�`�[����\�z:5���&d2�{j���xr%�2�_�7�ބ�9�"%W�$�e~�L�0e:���Ys�����S����HN։���H��䧀dAئ�t[�O��
�U�O�R�Zރz$0�Á� '�/E��گ��n�w�K*����Z�����HT�glܝ��O���Tɨ�]�Y�ߘm��
G�ݮ�j��`N��m̹\V8���K]yN�+���9��h&�@�4uU�_�K8�ͱ0�Gd
3x�����&�:e� ᚗ��f��Ճ���Ҿ]Kb	u.�s3���-�_7�����4jP�B��<fq{x�-a���1����b�Le��
�|K�y0S����j��a�����M�Ĵ�l���L\����3���m�G���O� �<���x`�6��c���?�i��fS��Mb��Wt�|'�~��h�v^����hH��nv��Pq�|#�S�I��ysBxU�	�eYA��
�m��d����5��x�+b���9�p�[�f�l������c�h;`��q�{���\��J�,]>��k+�?��$�b,�_�)�.On�9�
Q�� r���X**���I����9X�K�O8�(��z���v���>���q�(6�H/�^���N)�+`����I��pW<�z�|���A�}ե�S7b��'!�T��$�X��<�bK�O':d����l�U>"��K��3'v)/����Q��T�C%g2��â��$�\�6��脔��j��j4�.vLik<�5jB8��g�U�v���ý�^x�i5���B��2��l����P���DUTCDs�T%�ȇ�<�8�{�pt��xB��_�N{ҹt���c֥��@����,�Y������sq�&�R=,��F���PAp'��
|�:�$��Ir��R'�+��
V\��vH�c+�O0�P�մ;)0��n�c�_�c���H�m�L�@vQ-ŗU�����$pk8QY�%�e%6��t�k6�$��qV�ץ3Pu�lZ^���L�̪ѷ�J��@=.��odE��QY04/�?�$p��P�>��3�qP��7���i�O�"��5��ΰpTŽ�#ab0��yc�h��D��_4��uu7`zP��1�
lY�N��^>�s�5!�b����%%����|%�B|�μ΄ ���%E�9�r
XXx��~=CF��O|�63ɵ�s�t>:�Ӏ�^^��L�W�5�yFI�N	!�g=����5��/��L)>Fc�ϦZS6=�V�x� ���r�H���'5�@�9T5�!��c�Q�9B~[�
�#���3�s�3�e8�3���L���_rq�my;�A,Sg:dK�7��ykB�����k�j%m�.	i��et��=�B]cɆ#��0P:T:.qP\yn��	��թ!�~��C(�'�oRB�n�zou�\����s��u�
�y��O���S�f�/���Bfq�	WA��n�ợg�1��QY_c�q��&�->x�x�L���Y������~l5�Д;�\��ӕ�`spC���²I���͂�AQW��6�����L�",ߘnR�GߜJCk:X�C�Q3�m+俳mh�hau�6og}H�·�r�\��p��=HO,Γ����y�1+�G�% 
��H�`0��=L����Ӷx�Hmٌ�V*�_s��}��eu���K��.3�]W�aK=�([��3�f��J�cn۠���I���l#���@�p�"@��Ӫ��h��l�̬pt01X�Ϯ�������v�U�5!�T�7��Z�lV\9GXG�g��o�y����ք���B&��(���)�.`~�ON��	�)3��Յ�Wm7�ڋ�U��1Z$����P[-Z��Ėb3Qr��}&�}�;_��M�E�W�9辔�y���B����V'�;q�6W���e�ߞ��}k.�*�W�s�DO�L���U�2
.+�	h"��7əs��v����ɻp'�'���2��O�nD�AS��[�@��<Z�³kX8j��31�	�fQ<Q~-gnz0)�b-�&a۴��ݽ�t�O8��{1eO�s�7'�&����M�}Px�F7�9H��{B%�CUƭ~��`���/L*����g�p���8�M�5��t��/�@��?��X��,�f�Q��6��s#�����}>���;kO_�I�����.��w.��-"�uwƳ,��n��	�	��m·��REe�hI5kT�%?�f _����;A}�$}W�q�!i�s	L�X�A��`�/ޙ|6v�����Z�����+m�=�M:�a�气pԵ-}wB�(�"΁��Q�����؏�S��{M9]ط����]ܸ<Udۅ�%c
Z&�<����:�ަ�!�T��R�[b��`�%�d��WG)��/���5�#!�ds�'�����:@�����\��ӭ�e>�p� ��	��gx6�[�L͊���Q<eO��XIIO<;�_�z��Ep=�Eӟ;Q�<�.m�dAc�a�g���d�GߝZ�(ع%��W�[ݐ x!�c��̻����nK����+h�#���l��HZՃ:�Ŷ�D����?J>b;I�%����ű;B����m�r�w�1��s�i��� 	G{����E�ԇ�d�M��U��a�Q�7�v�_{?� ���g��_��w�z	�Rߚ0[=�����gsQ��>���c��K!R��$]�(@�/�e�Q�ؙ��Đ11[�pT݋Ig��sB�!�D�6}�[P��rΦ���q8�H��]*VB��q��C����pt{�<����{�Pb0���Mv��/B���(9^��m������~��T�
^o���*�?*�	!��uE���ʹ��_�I��!%��ZM`ːq���s��G��6���ģ��Rȋ��hT^*���gH�N)��]|��9��"	��	GOB�P@�2v�&�\�sC6�x:-��m�S�/m���_*�n����ܢ��ރ����:(
��I������e�����=����}�A�����%���򏟿�o�ά;�z�+����}����ē�f_n
!hMQ�sG����0�c�~,|4�j`#ޛEDmp���C;N�)O,�C�/Jx�2��hՃ�ɶ��*�1�.M�P��	�jt�q�L���>U8z��+�OK;���k=��#�hiaIJ�{os����R�!��L��U��1�
��;�i��X�k薞�$%�m�1O�3~�3BHf�Zm��l�-�l�w~{'p՘���x�I����j��`Uq��M^3�p*�!���1dl/1h]��J�K�&G/�k��31�r�~.r���]�-!�l�a����,�6}B=��y�ۤ��*i���[�K��?���,=%��:�����6
 ���i�J�B1�-��e�J���[o
(3��I�Q2+�?'����RIP���O�K�Z��`�#��;5�������Ѿ� �N�%��$|�5} �:;����v��a��Oה�g��5$2]���X��\������
9�Ӂ�](u��%�^�gRu�����������q��E�T��S=(��҃�Lڒ�-y��Cy�{��н�|�Z�ۯ�N���d#�m��uU!�wM����˂�y&:dL�ۨ1�y�*z[
'����կ�d%|#�^:�@�pO�j�"�������O�,�l�x��'��U�t�\��q�����lE�<��؞K��r!Ps����B��,
�A�ҿ����8��$�8U	����-d!(}��4?T� ��}v���0����G5	Gc��I[P�Y�L��AoV�[��l��}���mCdtD�7�.��^7����Gw����:�	�J
=ǂ,F[�4���=O���$ՐAp���u��c_l��:ѯZ=���1ϭ��pӃ��e�\���h������r����Y��,X��
�uAG�vd���o#1�W���p�DB�~jh.z?И�Թ���de�"�ѷ&���9!^WgW����ڵӃ'�-�ro'���f�	?
��I�YF8�^��Pɘ�]�K%����^'�8���#5��%%a��pr��bw���d��B.>=�./��d��8�����[=h�`���� �0���K����q
�@�;�z���Gp�'�����H���k��_�s�|�p�d��:��ۜ]��P��چ��#^���0`R�K�D�sB�	%y3��mF�CװI�܌%�b�/��ft�8�^"��M$2��N��R��؁��*��^v�	c�A�c{B:�.�;6��"�U�k�T�\a�5[&Wrj9;�OQ�n@���[@�&��P���^h��ٖha�}i�7��-�5ڣ�5�Lݾ���kp�hp�=�K�̽��,/-o�W�13rIH8j�����L,�3]��p���VO��K�<��r����
�	���^i9���$�q>ٔ�â�$���-�o�w�"�R�E	�Rۉ���u��Ġg2�J�{�&=�>��O�}GK��!�6�k�[@�²��?	�$��Su�}s���B���r~�6��>iko
�Ã���<���$���%�j�����G̹��%^�>1ǽ_��߂��ҧ�B�U��B'!�¤� mE��1�O@�K����27���Ӑ��h4�NB8����p�P>�|�^ak��=�P�=b��Y���o|�/Y��
��QT��ٿ�w�T(�Zg�lퟄp�/���>�t��h�t@w����qA�L_S��������Y�t��w����G̹��R���7��H�z��n����E��ԛ�I�`,p��Zջ�����Y�������M��h�9�“R���`X�7E�ښ��}������5Ƞ�]@�G�-,�8'^�����4�	a�_\l���j���wj�;n.
B��"��A�R�ܞ�-,�dy��\�0$��*�lpqp�$�:@��(7�\R)rk=�o=U�'����/[�V�o��L.�O�QԎ	GOB,,	�B��Z�G�D������K�RhY��F�C�~F���ɪ�*Ig���m���q�heI�{�����2#1js$'��fs��L���)�oI����f�'�~�Y}uI�鑷3e�[TEU^8��T!t�7��*�ȕHƁ�*�-V��\"��qa�R��UT��w)s��.]A�
������C�����_����Tj�a�"Ɇ��	��}L<�(�b���p�	�#��π�y����\�D���j��M/�C��1a�ͱ�(Y����>B J�'p�vFlڊ��
A$�]�hXj�����%����R_����'Y��#�洷é���:	a<t� �0����q�A�G�Z��B�ZY ��-g8_��D�w��f�y�q�y���c ]B�`���g)q�E'ϴ�)5�4�_�Y/�����cSk�I��w>&�'�y�MZ(��_���]�'�a3�Pär�A��;��	GOB8��0���ݎF�(J��d5!K�z�ϦP�Ȑ�h���$!%�ڪ�$�Ci�'41����놷=��
ҖA�J��b�����$�����^~�O|G�'B�3r�5�j�k%#v���?<c�;u^"KnO�H|�>�ِ����"%�n��`5���Ճ������&r$��~�U��0�s���	�9��tH���%��Rqܛ{�8�3����
�ψ�D~d�hOZ��_���<C8z��\�ZD�9�h�CP2"��,��Y�pdz�2��~qflw��� ¹�wϑ��{i6�����
ws�_Eˠ-��U�W!�L�M�e�5#~wwX��],�86������Zֆ2�H�<�2nk�ս�աz��+��Ԍp)2.���:��h��6=��8Pt��Cgl��b�"I���`���6�_�x�ˑbI�c���/����n��4�Kn/Q�;��tLk12B�6D� ��0��!�h�9����!�J� ��^I�!)~#n	^�O{������1@.�[��
C 	�!���?�ϩ�ΙS�}��B���-Y�����
L�j7bQ�"B�'-Hۓ�
���ğ�A
77�沍o�L#f��o�m"���ʛ�;�J��H>U�^Ԋs����ySX�yU=*D����	 �[��cM0Oz�-�av�μ�y��63�%'O�����.Ɋ�������/��^;�}
{��xgnHie
(!	JP@ʼn;wnWWC5H"���IγJ���x��V!<v�b�D1q<�%B�������e�t�#�\��_q�%�yB�x�'�ϣ0!%��;*=�40��D=�	'�N�%�s��'8��|���i)��e�C�G{��h��=����/����T��a��ýy����m����`ObPW?}�p���	�Fi�a�g��N�A���5�p���7�	!O"�&�`��}����p�a�:#
�O.ky2v�R��K��h��t��N^#��S�ӹ�N�G��(@e����I�'�F����G`��:��.�Kӧ�Fv�^�5C��t��3�)�9�2!+�� �9a�p���N�/E�wZH-37[�?<a�(�[˅�P�E�@b��Z�͋{'u���$�ֺ�Z���4�1�h�Ɓ�!���Y}����`V0�äT�\#&�d��G:�afpp�:�l���~�5}^�h{�V��D2@��E�9��M7
��hq�S���tV���E�Z�=8��-� �[���p���=��jlV�.k����#r�t�A�u�O���R�[nXM���^�]��9n ����'�����O_(o8!
���۟/]�#=�:~�^��O���q^�q@�
�3ؾ�������h�� �ӟk--��f�b�+�4��E��\�с�@]�	���|�q(m�VԳ��<G
G�,g:f�Xk��ރ�|�2aY,�Q{�_Dgbpp��氡H�:�=Tt����d�^�VzN��~��K�W	<m�dyOU�~����\a�W�AJ&-8�҆��~t��czxPy�{�����s��?�1I�8�9�!Ə�|�<���]":V��\5R��9��E�ìl�a�"۟/]��z��Ճ�N0�,�V-�ɀ$خ54i�*�	x剶~��'n��c���Ӄ��2l��&���o�K~&��#n_ck{�7}	`��.��qc�9"�~D8�V��mՏQ]�׀�!y�:�c�|��Z� �C���B;�����W�+Ԅ��890]��=����Ag�r&���o�0|��T������7l��¯>Ϳ�\�e��&>��������5r�=��D���V�6-�"/�� b@���ϗ.L�����Wf2D�����F7�R@)��֎�!�U���~�{�)L�A�:�@*���!|�94�kłtp��W����e6�p�'�VxC+���A#�[��2l�-�hb���m]�e��KH�g�z�f�#��;�tS�WI�
r��P�Kw�v��f�\�1·�*m��6!�-k^y���ֱ���ߝ�
�"���s�*�P}c�L��X�d(�FZ=�<�B
�2w����U�Иj�F��h������~��~pu�'�6��/�/`����{�ĸ� rII�M���*~���W!��d���X��f��9��=�4�?� V0��)Mk^�q���b��|`ԁ��6�D_�Rb0��O�l`�@�7tB�����'��s.�6��a�,h}�,î�]6h��&���u����$Wgπ4j9�F�泔�#B�p�N3p�=�T��6P╝b+�&Ig�j�R�&^�٭�D�(th�7z`*G�sB2���μnL^=�x}�㆔P/聆(�umL�I�M敍%�nCx�%l��>��t+�mtᘋ���7�/ZT��Kv�+���_qX�Z�UM1�8�J���cn�T��}�lf�Us���.�t,^�qѿ�?�F�-X��
��\D�1�Ǿ�5!� M<���v�~p?`�V�Ч�'(��TV�3DF��C
��Z_lۏnC�hq��EGK�i(1tKX�m�|f�g)����қ~v,���܎i��ì�ŝ`}��3��X�
�}xvz�Na�as�����PP�!�$�Ac�y7�4%�2���A��ѯ�5z>�K����<�Q�$u>A؊al#F
�&:�31+!4�X��vWN�l��?��r�l��1_����/��YN�n�v_�z���T\�����͹�PD�D���m(nq����~7��Z�۝!���uкa������N�j';ީҊ͎�"Y��%��w�@�j����;����K�KV�ov��0T0��<w{��>��g��Ճ��=(�U�^�R|
M�@C���c�0�,?��ay���H��xb����
�m��P�e@C�V�K�>��6Vκ\�z�F�7��R��f�~:-<�[��!4�]N�Z��7���E��H֕T��H���8;2�#+Ҟ,7��t�#֧�,��,=�>0l�1嬲u������|�¤n����=!\gz��%��;�Ag����x�y����!OP[q���v<�;1+!�#lc,Ýf:iTm�"�Qj쨈�0�H�#x�A	v�X�&�i�۷[~3��YZ���5�$��:�s:��\���p�-�uD�$�ࢽ��?���X+I�2ҩ¶+4KX���k�"x�ՠ��{�}7zZ}��0����{<��(�E�����'u�Xa��*�i%�!|�9�5v�� �L��)�g�?�׵���pto��z��~���>0�|�����`mS��
"�Z�t 
`RW�����λ�7
7����8�\�3��EB؞" u&&Ӫ��p���Z���ήSgb�ۍ�:ף�����S~��r5�M�v�y�ͥ-�n��E};�Ǔ��|c�՛��'��%҃��l^��aM/�� �O8G�~��=8�
n���+	'��2t��Y�fB���a����ψO�o�B�2;�ń!��Ǻ��^F��U�U/Bn_��ъ�y���q҃~{����"��T2���IFm�Rj����#'Z������]s�%]�N-�]-Q�H�rLbm�����`vj���"��2����p�"�߳*oO�`oS��Z���㩫3^��O��0/��-B����_C�`�p�l���`b6~^�A�ssQl##r!O8�߼e�iȜ����%-I8�N/9�>���Kq����X�v	G��n"9��{T[�d�2���I���AYi �!n�$�@B|�Ъ4���E	оڼ�&t	��-UA
HVP��!-�lH�=���k>*=UR�K�x�[�لLn�u��^�YO*�j�O"P.���AgK� �s#��ӦSO9�~���/�YKr�d������w��b��?�C�(B��9x�]���A�TB�v��a�B���n�N0��D��T�Qlf;}���pSF/T�L3z6�p��`Q�$��摔:����Zɩ�w}��4�]��#�*)�ui���ϽgZ��E�R�s��^Q��|�w ȮT��F��%C�Ad��/�0�!��E�weCjW�xb����e4��/Sx�Sk�xZg�.4m$�[v���Ǔ��ruq�VڗA��}lR�j�����nU��3!\%dJdՃ��a��A�͒�,Ƈ;a�㩢sp�O ؆.t�]���Qp�x�ڶ�`1B�P,���P�(����S4�a���ض�L<��������y.�"�NPuzis�[�z�Bk�t'P��<S������J�������=2F�v\��x0�5g�xQ?��x\���{��}y�u��/YX�[����嵜�z�E�˅�hPT}�>�s0qz�|Cц�c%�_(��=8?�r���P^�C̓.|^�s������=Z�4�xG9V/H���s�����)��A�{�'�Q�^S��_?�d��a��`a��,�����5�OK� +=g��.JF�^8�n�&u���nia1���g	g`Є�7�*Bt��(_8�5��9�Y���_\�Q���
��Ġݲ�s7e�k��''�/Sx���^�:udsASK!��=�<=(��]���|�+$��*�r�\N��f˂<Gg;�?�^	�*� #��ʼnm�dV~�B/6FJ���$:�-��-�!5AB�T�l�^/�J�0!d�bK��Iy�ݯ�|�
�U�at�8�o�CCe҈�B�L�����\���;;������nv�w��)H]�-� 3��\��aVvn3��A�!,�aUז[��!�م��o`B)���U\w���ܟԆ�x�T��oϣx�d�	���-�Z�T�.�{�'Orhm�T��Nl��ϻՃ��3�GY"-�k	��e���QY`�
�X��a4B��9��/8�a�{p�"�5{���ﭑ9r(��xQ;�:2��D�O8����9�͢�ZZ㧍�A�B�py6h1T8ʱu�Y̧�0$-�7"y^�~b��x��ӌ6�0��H�,b��	X��+Bx������™·�>��ϫY�x����	��|��/ωnQ�z{"5#�F(�l�`%=Q�-�<����`��l�Ħsl�g��	�e
ρ��X@��"LjUo,��~S���l��n�x��Y_/nk��`<+�kB�e�'�����nk�z��9��IW�
H2�*D�Ճ����?��g`���
�t��`]�~�J��!���0�(U�Ӹ��+�E�2$��	G'�s��h4�������PBX�%!&�uGtL�ř�*ө��L����?��IV����>r�ᨺ��S���N�;f�����~M�A��ߏ~IBh�?�M���/8a@]���]�I6o@��w���W�����s�3:��!�m^ec`�{���Q��8�A�>�a��+{s!�{KF�a¤��aM�{F=҆�C�9"ߘ��L��dy���>�,6h�!T������tb�g9x�e���x��=gK��[@�/s����B�_ÖYu�Y��3wќS�aB̮kљ�
ǻ@���� r�<������
a���C/�
R͉A���u-��쬈‘�����Wů�9�R��s�K�VΑqY0�����CaW�Y7�wHZX8
�6�+g�fŮ҃$��S�Z_5>�g�5я.��Hf�>	G��2�[3m֣n#Ԙ�ԣն�{7���z�2G��@3VG���C�ՇL�6	n�R�����Gb��L]�<f@hxӞ��|U(e�><S��ٯ����^{�����{����
MZ�ֹ内����:<V�Pϡ�\�A�0��ˊ��^L��'�.;��c�� �ld��ك��J��~�������-oʶ2�P.$"�-��Nh�N�m9�A�s���v�^4�RrON$��ϫ�]��;��a��Q�o�#~�Ak�0}�n�W��1QJTj�NA�f����Q�N~`�p���
)�
��M�"�}�Io���I�qX!��W��&Kh�b�z?@|��e�g(y�~*����� cu�ws
"�O��'
�z٥����4	�.��9�`gaQ�꒘\.���E`�	�5!l5�奖	�ř��; �p��XO��r�@{�mp�z���?=���dN~�,+ve.�E�[GL�鄣�XR�
�p��.S�H{���ŬwB���6�U�9�����r�e{G�[iai��L_E�Pp��1�!���oζ�n<<SBM�D텯��A歁�1"d=��&r̶�(>�[G�o�S�{��NMb�}1�_$�H9��΄бMp��,'��ju�%!�f���+�		�
!���տlz�7'[BD���ى�;���n���A��ሉJv$84b�+h����	|F���u�ym��W�G?�W4���}�"�� ��z�D&H���=w���BD�]�
��	t��Ӄ��M6Y�b�&���ń���B́|F�DY`�Y/|��b�0�x�iR�Xe���42N���#>��%]��3�.���C#���{�t�1��&���*l8q%�m���,ID�k?�h���1��
X[X,Bs�i��#��-O��!�VzpǠ�o-���*%V���QE�_��=���m;yٽ����R�>�X�0Z%���z�w��6[(��&�EKv��=��(��t�3����n�1��h����]�5�\����X��s�^�D�c��@ڢس����{����3�o�ȗKN.�Ya�ufO0�ۋ1���[*Q`?z��.����%��@��{����!\�962xlq��@Oj��fdㄣ�����,oB�����`�ń��l�8�ޑ|�
-�o��i��@	�AC���J�) �B�-�A��,��Vײ��&����J�R��YU��i>ͳ#�Z�.KCi�j�X
۱�4@�nޙj�-]����pM����&�����˗8�2�⛯o�I0��2��3��sC_���AWx��#?�j�r��(8
��?Rm2Z8��HY��Ӈ�9��R���9I��~[��pq�Q,�LRU8��1�c�P�,g�*ST���5̓8����e��t3E�w爊�~�Ԁ��)۾�{�c=�:s�`�=�98P�!�cj�GPfhd�^>V����1v>�������Q��Tua��}J���,84�p���0�nyft���݆��ﳜ��k_�!�\��}O&��7&��
G�^�f4���p	�4b�.6��KyF;���x�&鋒��Sۆw��x��r�Z"-4��L�����E���e�I��#���3+���qKu���v+��@/=
V�ͷ�����3���Y���
�����@(�δ{�p7-gd�E',�Le�#�L�"
'�7v[�NH�����KC2!�U]�6H«LכdOƋB(.f���B={�r"�.�E�c[,��*Oe��!)�C8���r� x�	�$l[�G>[T8
��;�9d$o���a}J�
z�h���?0=�)�i鐪� }��}[��b5O@�Mr�ػ����b{��w���~5���`I�ҥ+{4�,�D����)d
Ӄ�..��1�/Z�^4o�[9�YH)��
&9Ӓf�K:��Q�P��Oe�	t��t,|�B��K�3އ����+ԍ
7��T'��lPe�(�E#�˂�o��*�o-��x
��2�,�r�� 
KZ]u��p��?��D��M�?�}��=��j|���S��� t�?�!,�rc� o�$��l�P�?�|�y��C�P�!�G<#d���g=P�s�HZ�5B\q@���jPx7N�Hߩ�����=҃� �~3D�8�m7͜R2�>$��4���^BBx������o>(?�)tB꺆���.d�����PuBx}���N$~zV�
'=��`.���L��:Ŀs���&j��l���N��qW,��~���KN���lPHҾ�"��b�`����`g�n�@C������0?�A�k�\�N���:ԇVf��}n�V�ju�@Yq4�І:z1I<<a�_4I��q��[k�&F@(�,�!_�����p�Tb� � չ�4���:�`��(ǂߑ��l�y�!4�8��Ae�`������l�i	�ŭ����@^�3ja����Rt��H3|N��*����ظ���
�)}ZW�M�� e�e�2]z?5c���/u�sm��0�d��?��3҃��n��.��`
[h��Ѝ�����t��H&��7Z���2�b�����Yћ���cR�Y���NL:0]���ans�ޕ~�L��7�=�J|d�硶��̰Q�o'ͼ�!ԥ�
Y�����k���!D���	�+�'+{	�DxqBŅ�L��� Ϟ�'��"��8�t4��;�L�E��A�ȅN$u]��,=�������?�^A�:�IBQ�S]����.�%-��v�Tz�i�:}�Z���\Ճ���[��d7�5$p�G�L\	\{\܊���k�71XΤ(�*.����Ӑ�$Q�xu�֔,bN
N$��'�Ӄv�P�H^r�h�	S�h9sc�AZ:#@YB|��
�Ð�!��jf"�Ɓ�ʚ(��B�_��.�zq6X�o�?�i���t��z��#'�L���G��=���pO/*�6��KpZtG��f�}��0����:���
X���B��SZ�b'�
P���~�"A�Z
����'�k(f�No�g�/?Gb�:M/٘���8G����\=���*��͋K�h� �
��~�K
�볨����ɮв���[�-/�1T�����VZ(�Ö;�Z�i۹�O�}IE�̗{yqBś݈�hY#��}3������1�qۿ�|��V0��dr0+]~�_�Q8�kۛ����:|b�zZ�D�p���Δe��<�����D��a��8k,Gn�đL<Ogx�=(��Y8�(VP�����v��$鼄�t~PH���H2�ȐgS��<;Fp�XlӐ+v���*����y���$Z���Ci.���6���k�a�j)�0.��?�ӿ�=`$��$��ɺ��'���:�r3�:M~�g�f8T^��֨��Գ�?�zV��Y��}��;e��z�u����Nq�}6�O�S����6��EB��Vwif��&{:̨	��l���:�خ���+���'�l��T��-�|F����h������hb�����2}�����ߵ�m���q�1v��7=�{��V	oh��\d�y;=�|� Y�(-D�w�{�����)ևK��7�X5��o�;�8A�P�6lׄ&�{��ݡ�x���Ӄ�xw(g�=�C
!|�uzxg��^�3c�i��y���#xY?I��V8z${���g�x�S��9Q�k|Z%�Z#f�����ˬ܅�w�Ltf�K��j�+Lҥ�mapH*�أX�Q
c�X8��bn���P�1<e��vlh5�R �6qoGƒ\6N�0�$�:�`���6��z#�[o@��%Z��,�C&�t���n�IV��L��j���?�[�P���s�{R�4[>'��z���X��pMa����(˞�z�m��³�d�=(�D1����WR�Y�^��� �b=}��gl�>遹��4�"Cպ.i7i]"y���%)���{m��X$=(JѮF��&q�Rr��Dw��Y�%�8͊[�H���7����Np�p4�c�j��Ő�"�G2�֨&1�L�ȗ;�C�s��c�X��[�����	�f�b���J;�|&����g��Ԁ!
Y�j�`	asN@BhN��]��o©|A�t�'«��7���)��y�}��_
�2�g�W��W�2��돉�H���}��,>�퀋��?�ނ����^�D�����m�*�ń��1o�`��e�K��rՃ�pu�ր�喫Yߥ�4;�F�|�iKm���G2�;ٰ��؁��9�)�9�XS	G��-��A��秷h=�HT�߮
��EL�Yc�f��.7Z�\���M0�l�؜-)՛�Hj��� 0� y!�~ZM��<������w�D'�	a�l
!���='z��3�	�������m]ck�B�(��҇�q$O�jP�!If�Q�(���H�����—'��%�>�EI
�Kyz�Sm]P8��
m����KL8j֐X�s+q¢h>��t���ˆ[���Z���ŀ.�Ӷw��{�S�7�{�����Y�X޵���i]�7�뜼��(j#�Eb=!+8��p����ZHI��0�T����:mMڼ	;��&���٠�dh.�TF�5���c�0]���H�o�Nh�7���}6���$*[#���T�l�q`,�r+�+�gpǸ;�v�4����ю�w���S29�	G����!�i]I�P,�o��i���:Xt3�9�ڄ��A��Hk�����c�	y�i��a���}���0�������lj�-Hi��b?��D����O�3��x�4!T'�[�t�ID��~�=&��Ơ�?4� 10��~!�q!Q�E՛�|<����#<"u��z��w�������z�UC�
������ں�G�V���Q[�p�v��.5ĥĠ�
&t%]m4�,��R��s�:Z�ڠ�	'�B`�G�*h��5��:v�x�h�m��Zg�|��
�w �W1dFg�Ì�o���sX��+c�ObG&��Dy��٠A�\R;n+Y�/
�s��/3�Z��֩�,=ͣZ��ڿa�	����T�/��y$���V�[���[�m��(qK.e��!p�b�qH�-��js��Q5�<?�(�O`��v8z�?��	&9ʎ��+R�����Aea�"G�>�q�6\p&Z}���l�K_���{�B�@��W���V��q�h}z[X��t�/��f-��ʛȎPT��s��`�N�ŌW����3��,�/Mu�U�H��A�Fz�Le>�@�y#V4�řC`W]^�[�`#��0k��H�ltl���́n,�rcB/1�RY��\�IJ:�2*�2;�:��5�]��n�0�8=�P/��h���UE������`�E�)Ҟ�����a�
47�0K��oT0N�$h	dq.S�D�/�n���EEӣ2��Ҟ����_󊦰:�/1�*���b���s����6_3�n�AZ��1�������8�AŸ@�]&�X(�_Y獓2&Cy��)��7��#1�g,�r�M��ޜˋo�i�z�RF;ȑ��w3!�7_�U	G�Yw�7L��Xo@�(l��4�|�p�d��ĠVW������J�1ͥ��]�n߲�!,���T��� ��e�f�t����j/�P�����v�(~�߸��4!t҃<��/An\��T*�Z�d,��3�
xdiÐ+�o&������afw��W��?�	�dV��W�[%�C�*�tf$O@�:R�ǻg]�U���"�o�8�G�w�5�\<^L��ʗ��8�6�
*�Z��Hy�e����K�)��Q�d��'J��^���5VOu�2�PT�B����
��i��Z��S���F!g��b^����5i�pq�#�� ��[梌�f��K�� �	Qzp�2��ݗ��/�idK��Í��Fm�ڙ�r�rl�S��x���"È�vJ������о�����Y���q�����1P8�H�@���ͬKd!3�Sv`7��e�R�x���CHu�p�����`I��5=�ws���V@)-��~���KpC�R	a	�O7��~ft��Fi	B���S�]DF6$|eB�	�E�z��mV�[n{�
N!�E�:��T��mS��qnǨ֨5�x�+�����Ɲ�f��;��T�KYy+����'
r8��,>vr��qyD8�P#0�XOQ4�����Zj�6����8�������+C����AW����
�a+l��2�P��jP��H�$E�DO���M^FB)�~B�e!��y���a�+�A^~x����Qwv_0I�X�\\��ZXIW����ӓ��Aܔ�����YX� �+��+�X��>0	�p��ȶ�%����{�'�O�anj�p�9 �=�1� ��ȟ{��Q�=��4rW�HkLZ��w`��@`�0�PV�/��TW��m����%{����~8��_B!r�{���Pw��&�:����EC)������׷�g�/�2���\���/׵�3`�9hdrx�<������ij�p��D8��dh_��ֶ�/~�^�#:��A���`��R*�������;mbP]��^x�7�����fЬ]���E1=������q��a?�l1B��x�,4�V;�՛з��H	f�~3~g�ʡ̙;G8pY-|������Y���ix�J2!$���To]����a��,���UV;�L��O�{zQ��Q�1��8�2r]a�h�c�/�eh�p�G�zs+l�wc��@
�f�[X�
�+��K��`d����`*��nE��R�0�P�FB�޹�Y��{t�:�ٝ�����Mx;�N�P.팗�~1�Pw#���tA6�Gn�Qt������!t1-R2�����q�'C�R���,Ҷ`�B�pT�_���$b�ò+e�v/Tui�=�BdX4^ߗq-9��9"]ox�7��`���������КL��@�\3?Q�����~:Z</C8�C���A��2^���[�
\���9*g���w�0�("��+l+���r�!4�����<�Q ĥ Kqk&N�
��a�'&c���-�3a»`��T��-��4�u�f�Y+*z6!܌pt�c�+7����|�,������YvY�c�˯KB�s�K�v;���q/�Dkp%���~ݏa�*=غ�n� Ǹ|o
����'��vz�i��t&
[�D�p/�}��qC
�Zџ�C�XD,$"�:�܅<��t��5��.}�5n�)�j7!��Iz��맀�_�A�g�K����^ �#H����ת~�}�Dp)�4��M۹����L>�M:��4��d>��*����8�;,����ªb	1NG��r��T�a3$�m���3�{��a���M������WM#J�"=�6�U�ZV���$!t����E���s|�'�c$t��0�P4v2N�f�������o�⽣�v&�L�>�����{�n�_$V��dٹJ&���\hA�Zc;#D��<�Wv��zA��j�"yLr���<�wu�Q���I-����B�?�$�f�����@BI��Zȳ�[x("-�k�'����/�,��]X�PQO)�2��a�o'�H��=��^�`:
~�0KA�W�ڠ����_�!�&���Hڴ|q6�����s���o�,Ҽ�2�y�Nۊ����M�ߚɟ�;�s.��VO�1T�{u+P}5<���{��O�	�����8=\���r��_M��zj/�r���
�1Lj�W>�vv{�<�j��j/J.�w
�E�RFM\���p��	�����ۃ��!�=��/)+�nwX�ۍb�焇"*�Q�QJ�y{�`�r����{xqB�����\�r�,�W��n
�C�њ�8��N��!l��ע+�<%(�P\x�S�;�Q�KV'5d�@ma��\5�!�<�#�lwP�@U4z�b�1(&l9�΢�RI
�U���0���*B���.A�GaWw�Y�I�[��l�W<��^��:�.�/�z�"���
Aco�-J�$�G��&��I�u9�{]F(!�t��kvb�.��m\�zT���{|/��\�_ ��ۈ�����Ns`!BXw����(��l�]�j��$�ٍ�!����u��?uz0b�l�a�
\fw�/�j ;�w��B�)Kq�f��I���)��H�,��e�Ϡy]{�jCQ���e�S{6`Z&?w����3bg����-���׌J��K��6i�3��e��&����B���ɀ�%�K8��>̃�˘������p��FX|�3��=��&8�:��P���}]��#�0l�n׊����?���K'mո
=@%v;!�!��D�î5��	�諃�������G�
��s��q]l��e����� -D�WG�a:'�2~�tf)��dyb(�[t��ES����l�ʜT�
��j(�-��S[�dQ"vu�M�Qاd��(Y6϶t�u���� N�F#���Z�pt�c�\̶2�iOB��E��t�*��#�*	���iLq�|����l��*�CsIdp����'�����_gv�����^�(�B��
2\�V��f��f��ןx�D��씩S4=�\��q�JE�mW]\t B��h�sC5vt��{^"K�"�
�r���P�p���P�]���d�y��D2'Y�Ԟ���H�������0�p�����
��P$U�?7vv{)=��8���B�l��K���J�&
h�4�]l���Ro0#6;��?&���v�%r��GK/j�
C�EO��p�<j�ᨭV%�,����{xqB�ՃUzй�Nzм����o�k�����?׾��v�DZT?)=;a�!D�Qp?-jG�mV�TBB�c>2��xgi!�J��;�Y�7�BFT� �k��]!��Ht�u�C���_I� ʚhB��y=1ȭ����o�"�D?rbxÎ1��G���#!vu��z0�� �}�iױ�1�]X���%���I��T��M� 
�,4
��B�f�7�{W�<��f�i�KQ\O�^m����٠��8��m�ŭ�\��C��l!f��T�Ԟ�f��&�6�	!C�|`���)�
�7a
���ێ���B���%6D.�yB�k��g���XBX����Ht�/�r|Li����Ԟ
�t9{w�I�9�{���h��`SaWw���n�݉F��'s�=K�v�u�m]�'��;HQ~FGob��
�MV�乧ȩN-�."�)��W��0B\�!Uw�X.1h��{܋'�X=(��������O2K�z�O����GU&v!l��E���7pR�9��,�X�?�s��l�S]�^�V���$7K~��if��vg�a���-�2k!轞�8J4#R�*2,�I62�'D~���J,�)F;�Ѐ�X''����*����ew��2��2�c�u�z�K�RܾA����С��R��
zylzX�&P;Ch�����hX.H,��N�����6yI7l?\�����N�b6��܋g��i�3q/8K��{��Ϝ�j���[Y��r�y���$����Ӆ�q����21p^^8H{�)?����K�v�E���	Wr�m�BX&{;�"�B���3�N���9͝��Qp�4�.62�'�Mt�u�ƭ���s���	v��r������1�����������h};��m�D��Ѡ0�GX�.1
sAkH��c�c2��4s�,�5rx
�Z��q������SL8�=�����mWm�w��	�Y��o��ܯ�����/���U��{�=������k�3������sL��7sh}�+�Ȑ��|L���gUt��:��ŶDy)䜮�'���iؠ��4?�1P-�_4ms��<Q�U:K�ƾ��Ӕa��㑅�[�����J�N��d��]yB�S}�ˆ]�a���o�Y�c)Y
�
\n��T�%�,>==���7�R,�{[?U2��:gb/��u�.�����xq6hp��{��hnzt�$��Y��{�D!E�
!D$g�a^{/��3ј�H�P�
�k\�V��>ʙ�j�~�d("�����Zc�Pܒ��G�=��n�r��Ub}N�J�v�Na������W1���Լ~d������&a�C\�g%pvu����~K�'��,�,���P�pe�r$��fI)�"X�%|Dǝ�����$�Օt��N�}��^��u_"6���r�Ճ$�:�B�6!ddMn&��zBT�a;QP�����#=/��F
Mz���~O��G�̸!�o�d���_��De�k�(��a0�F�{4X=�R��H�Uf�=ڻ�޼~~���{0솂��"�9��A���d�ŝ@M;?�5���,g_٥4qI��>���P��Z��aw��#�=Tn�?�;�����BS��eߖ��11x;���^�
2l�-J��vzP�0=X��O	`8!��\".�����-�!�B�I3������d��R��AZ�u����ZA�`�����B�wD<�8�nzQ4i�ޏ2���#1�TѰ��	�d��y=؀>{seC�U9��N"���<)}R��S�v�#ʭ��L��/�@89�wq<�
B�����xL�s�;������!Q�l�bLx�=�=��6B��Һ
Nȃ��ު���"JMe��I1��޲XWx�/=�`0I�*��b-8�]s�‡B
�mb�%����x��zA����40�j��I�W��q7�轞�=�A�6�#X\������Wlv^��ut+0�/�} �c���cWw/o�d�(��\A6�_ߥ�6g�a��,Xߵnw���� 'Q�~(���'�L�s�ǩYF�$�	�N9�1���=n� �Ev�v㻎��l��*/�f�6h+��Θ����߾h��ui�����B����S
#�է��B�^�;sj_�m���w �`�P��nl�t���F�y$	�y"r|RC�z@�*-��=��֣]���EU��L��;���{��҃	�
l2_R\'����0Wg�픩�򈙌�^����w�UٷF�뻖���οFhA͚O�b_�I*{���|�m���{����2�4���ͯ�JF��0��hS�����;�)5�P?���h�[������B�\��mW�{5-�������G����gy*p�d"��@��o��������#�"�|�?f�(S¸�0�v�T����f��=�'�Ƨ� ����_��A%��
�b���n�	=�w�w��']�:{��An5��t�u���k98ϲ�(��UY�$߯�L'x�	E=o�p��=F����y�	k~�ՃŮ�=!�B�+���?�fۋ����,
��؈�=a
4��m��ʰ�9]�ޚ�_�$+��=��o�@�QsQ����&�q�G�l=���鉶�@v�F�!:E��lA������c��n^��]̠?l�ة�t�9z�8�n�։�))�b��wm����Q܊��ڮ崠G䉀��@3�i���[Q�j@`ן��Ά���
�P"�"�m��Ϊ��[�����CE�����m�MݐǕl0f�*�$�_�&���}�3%��l�T�Ԩ�ǵ%�����kt88�C�7�
G��e��}�9rC�ح��l�Z.*cu#w��d)�Vx&샗��L���e�7�$kGr�4$����V2l5��_�RB���4��b`���K����H��bPpi�
�=,>���#�Q�	ϭq����v������*�Q� N��Gk@�RԄj7�v#�&Ф�٠y@����Ə��j���e4
��"��'
(�.����(���]��,Z��f�N�>}
���~�ť�[�Ѯ ��/�R���Z)�2{���Ҧ2;��)0�K��>,w�C.�����a��o3�҃.@����G��^��"�2��/r���1I��ʃ�ׯ'XR
Ǟ����'�����p1NF�Z�i�P����u�Xr��u�^{Y'����uy�hlpL�i�AOOt�|`_�bh�`^�3�G����֧��A:��|		���4��#s���H4�E4�}�!��_�=4r�o+����B{��o�n�;��}�:@,����ͅ�����YN:ߡ�Q���lЬܥ�����<��6�0O(K�
*z�������~��pz9�g9�ȇ��a�8<�9u#���"6���!|5��N$��]��yqBNXm)Lў�O3�B8��i�Z��~?��^
��"uS��r,�	h�B�!<�FG���*�p�&�2�vW]��G�y���M�xbpH
0�~�?�*�����n�u�XJ��n����[�y&���>I�ڂ		���p�yp]\\�i�?dzkg�™�c��0
�Y�H@�Ň"fl�M W�=
��O�?ܯu
M�~o�_
h�u��֋��oy�.��
>`�pBm�b�_��-tE��|��S[Zs�>~�x���� �5(���!QNT8�[aX�%�v���A�����Y�{�.�(���=��׌kqB�m���$��A����{%��u���.Ά8޾v[�sͣ"�9�ch^7Z+];�m��v���<u�}���9�V�|�6B��ǃp�W�	D��A�<��A�B��~�@L�~�TiIBo��K
�1����a�5+la���`]�'F��#�Q��7���ުS�1�"@_�>�Q@�}rҶ���ט&�^�uS��o��/�ާ�37�n�*eLWKeX;��/��Ҭ%��*���|�np�d���y)�>(��,"�Cm)H]��Ī2���`j�Z�#�2�[�볮y�kβe�w���
���Ѓ
.]�y��2�:�y������'�ͻ�M�`h�'@�o��la�"f�
��A�f6��~M?|{�HvlE 3��Yю�
�(�s����TI���ǹ}�I�8lA��;���<��D�e�uFly^K��ZR��xg�|B��c{Hg�`���:��Mrm�E(�J�s���t�xLG��k^�f��݆���u
�o�.�R4�`�cI �����mA��*�V��,�+�X�=F�m�7�-��yr���<֭���!\���@(���_�2�^H	f�yҤ� �k�۳�B�3-YQ���3�.�� �ov����;"OD�J��}	���`�0d(:��5��ͫ82�ǩ�Dk�7��pFlv^Sb��I��4Bhm]*��[ �`�W�Lv����$�:k��z��-}��S)ՃD��J�Y���h���l����A�q��Vf�W~�j��Ď����af�1��L�=��ZK@������`�Z&��4�w�ŸR�ksy6��8����BsO��$8G_�6�]F‘�("�����-�����X����_Pԋ�ޑ��W^t(=�+:�&(<�#=��]��ɩ$:�s/��\��p�C�K��m.�c�󚂶<b%�S�s^���a���	�N�Mn�wB�7и�"�![����2K�����-�ۿn�kA"����NV��xhL^�dqkY���X�����p�c��^�����G�`"$vs�b{���`u57��]�RX-4��}�������҆b�OM.����/@W9�fEn�P8r�I�<��lz��E�҃���N�
��]R�Pfo"�…*?é���=-tU�x�i����9�,E���%�T�A��1����W��ӗ׹D���w���;JC�l�����~0�N\�gq�m�b��B�=�*��}��ZjY���SQ���ǣ+��8]\Gi��]N1����w���ns��c]�u��ߛ�x���H�ύ���]�y��D�;?\>��w[��w�	B�B ZH"R�h��o~?5�K�:�UE�MB���J���-�x��B�ݯ���<��ɴ^�������y��'I��΢l{�+1��5���������.�^Fs���v���%���Z�m~�&z
-��2��^�-���>�,A<��e�Xۘ�(0P2V�(/D3��j���d才\�J�t�!2Z���b����Yˮ�c���m�2�h�sk��?���o*��W3Z��d����ڷ"��B�gƒ
>	�4+�t��Je	Ѽf'eb���8�4?��C��94��n�pU&4�&Y�y�����i�Ѩv7��:2(���OEI�CY�:k�AO����st��5����Ġ{���{-��
� ���<��6u�S��_��Αfu���&_L�1u���E����X�	a���?���jX����0�u�k�ӵ&[l���Lh�dI�{�P#JtO�m'�g�����Kz���=<o�����H5]m��c;��&0�CY���|���tK��.�=eՍ&	]��E\��ɮ��o'�Υ�
���9hC��u`&�}��t��!]2��4��J
�h���TrEy�J��كz��������� �G�"�2�P|�`�6��F8���;<J}x��};�dž��r�f�x3Kp=�:e:�X�
��3a���1��Pn�t����9�}�y�H�؉���Ox3Y�dq0Vs�e~�����?�z�Z�*���G� '4O�
Z:�&&��v@"&[�YvQ�f��������~s❜c��Bf(B:�����)N� ���+��Lvs.]+Ѩ��p��^����=�9LǸ��4���6o�0�χ����IB�:zo����u���[��c���m��_d��ֱ���߄�?�d:�\c'!liO��.@s%dgB�Ū��a�˼�#a�'^D����)u�@I��5��:�1��6���N�)|��0X����I�<yS(��I��Y����t���.]�cO��s����9s��J	OH�6�m5���2x�p4�����,�c�ò7=��mJla^��'[8��/�\��9�t���+�ϙ��p��@C���kW�	v��ذǬ�e�\F�p�Od=����I�
���p'B.�{`�X՘$OQ�ed��S��g�$a�CK�I�>7��ซu���.��gLN���Y'�*U���Z�E�I�%�σy��: Rx���\�	���O�{�}M98Ԑe��L��.d%2�?SBo�p4=U��,y��M�>���]�Ԧ
����tB)�Gcg��	�|M�}{@����$$W�Ƣ��3�6�5����JP�#��RxEb%�=8W"�<�Q�iX����F�`�6���H&�N�h�f6Q�
u��Ġ�
�q� m@>�EJagx&��mD����O�B��&�ٵ���%M�� A�Ӻ֠��s���
�l�l'}­��msQq[ٱzP�L	�L��Y?�	���!h��7B�k�`�[l�`�0*�|�;ٺ�uob�0lp�saw{�.��eB9:�da=��D�%���9��;�(JM�:�y2�E��wρk�!�O�qm&�cƘZSb�����zhGC�jL�&�#vg�
�k�,p�Jv�DEbv�S��7*���3��{���s�kL��)ȡ���P9}9�<�b4
��9G�@I{�3��Ѿ��`�ۂ��yP=�ҋf��ٱ�t�n+26�(���`��Z���U����*9k'���lMwv�S����"��9̈�}�ʐ�i�w���Na�����Z��4�pҌ����������W�6��Ї���͑�!=�h
KK�\�oC;�ް�1�vd�ٝ4����C2Q�l2��D�ͩ��6�H�<��ZϾǑfB�v5�@��0�
�z���
w��sͮ�Op=ᆀ�%�r����#=�*�\��ԀK��^L0�p��{��Y��R�,�m�O�l���[�]qh=�E�絮�鸫�D�(��?o��vc�!��������gT�vB�)
`�?�Ⱦ�h����aI���\b�[��$��A�?��N���&H`���`~2����*
}�Hۋ�hv4�Z����mܟ2ȸ�l��{iB�м{���	�z��%�M�A��g2�<�,ܜ�^8��{��ym�~T&:��@�p�U�#k8��E�P�qR=�ޙ��&B��̶=�!����E])gJ�bpyv[�i�
_[����̌wy[X՘��I��� Pb0�p���mϾ��mU��O����<���]�Q�#7��Ճ��#!|���
�\T�#��=(������c���]O+=��S@f}�'T�c��I"�N!#��]��XV��C�6��Lu��2���F��֨!4�f8�
-����K�!�̃�À�}N�" ���aFXհMGR�DOa��� :ce���%�Ƴo0f}O��ѧ��~��Gの����t����W\�Ę\����HnJ�4�v#����{�<��J��߆S�F��pO�qCO��O(�!���=�чS���o&�
,��/�4a�1�Ӫ��&\�����V��3N�u��)L�(����E�B��`�d	ܾ�:r�O�^��Љ
!�\K�fY��c�L(3���bt��h�]�-�m�5��Ťf���6�g�;����N�ѧ+6��,�}�Gp^���tD�ڰ�G����������1;`�� ��"�O�K
�Z_�4��
GA
l���Xp(��O��u~�3|<���F'�u�T����-C�u�;&8M�#<v��x�:w��-��)�ؙz���Ta�
6�3��B(����]JB�紬^���4�
$�⫏`��#���_3�(�>���.��@37���]Gv���S�AA��_�,�!����6�a*޳D���l~�n�-"�#���P� ��P"��=}2��W�%=h��3����d<���Or�϶�G�C݀���½J���o�a����C��yMʟ_���J�c�j+��sftu%
]@�1��7�e�L
�]l�O�ޡ�Yt�8���9(	��´�Hy³��3��A-�$��:�n��Ilɀd����~��x/E!�QmaH�n?ґ��!;�{oNw��$���Οs�-"I£��(Pz�)�v��
�y�ͪ�!<���A
��U�S��@m�,�k�b�܋y��:���{m�#(:Teg�Q�(\�s�
�ۙדG��!Ɓ�[��E�"N۹�S���I3���׾$�7@%/���8�RJ�!O]2<�{s\✥{����a�޿~�g|Btw74�<t���E�EɊ��<B�qQ�3h2=�Ѹ�>�)P��_<{鱷���=
p:�	aH���%:�Q��	��F҃� ���"S<�C�H�}V������z����5�~��Z<F8����HԹ�<J߮�^��Q0�ؐ�tS�A�h�
K1����n=��Q�P�\̈|Swxb���íZ7Z}(��?l�����7e�!o����cB�j�g��6
	Ҟ2���P/�<?��aT8���wd{�c���ݢq����CB���
֝�����Dݻ��Y�=��$m_
�|�`}%��`Lr�ϻՃ�Ɇ��������i�c#]�R�n��"�0:ʦaH��g�[��44�&�`�X8�1�i�l�CN!��qp�i�v
65�GG{Z�+UhT���P�a�I iD���Ql����Ѿ6��qї;��@Q�H�g�P�H�JF́3��õK<V=��Yx���24|���+}�ٺ��-הIf�ty-w�2��'�囪�C�:`N�m.�'{��V�>�j0n]��҃\�Pu�P\��y�)Bx �!���o���D����b�`}8�U��p���ZL%�=�?E� �2< �����lp^��v�?T}#��{)9�xƘ��f	���!��r�q�$���ش����:���75��r��[�3uM�	������R����_�>>&�&OԛԬQ��E�><Z�e8��Rd]���Zf��A��g[#V���`����c� ����7�8��v2u�>���'�wn�[.4ϮO�.A6�9�d��_�ՃjoՃ��|�#P�v?D�on��L{�\��q��PחG��&b�}5\"ﱗ���V�ķ9�����Q�=��8�bB�°�锽u�;��e�@xbп��;��3l�S����୷�	���T�f��~S K�v�ߢ&��$��_]@
��$��x����[d)�7�q�8��R�R��JK6�SF�ճ�+Xz�~����Dž��s6<;��
����:�x�Q,*~@ܿ��zq��3;6��X���@Evq���+�Ճ�2Ŷ~�U<|r�'t���o�-��<�pԬ���@)ԅr`��3��y�(�/1�l�������u�� ���-u)�v��z�r��P��B���pL��K y怕�C8������XaL�߃����=�!�g�1���E��?L#�������G+�t�:�7�������^z�:Z�e���ƒ
n�E�x�8цPJ�hɈ�A|�~JӍ>}��:�@v��#��Pb�b��M�`�Y����-۸P�;`]Ƈ�<��Q,�4�ZIV�o�������űr��׋�ݗ��
�& Y���J�hx5�C��~
E�����L͖
Zv���a&DJb�u�@��^��������b�GX!�.#݇m](���A���h8�X��q���H��og�?gXU(�w���� �:ab%N`7���#ȋ��h[�Y����Z�K�|�IH������O�rt8�u��K�k�����"�ɏ���.�K8jnċ'-���.4�h�j��-��̚�����PI[��[�ǃ�_�<�vm�Y ���C���=4 ��bN$
F$�!��╓�t��y��M����"�V�
x����e4 T��9W��n��Z)S�E%+ϼ�@Akx�65TOP2YΚ-��lp0�P�$YY����ZIO�,g�=��!.�R�s	g���)/���,�,6��/5�M�Fy��Mw�e��l)1�����'�w"PD�F_4�ë�[�����1%0����F�*c�u��@+=h�,yoFl`	];w�!z9b;)<:`�~�;�t��}����w;|X����Z9�y� B�@<�&@j$����0u�7�׼��A��jMo�1�QFZ8Wm�A$���$�uO�azp���$+�X�9i���n�~-4�����^#�Η�؎
G=`���jZ�c�
ͥ��������g�*h�?�-��5���3���`�Hz���r�mE{Ry��qṫ�J�C=9�����{�M�t��a�	w6t5?[����:]ڻᠯcO�jh�Aεhs���0�M�V�΂��ܭ�[��?S��f$�KEt˜����5U�E�w�hJtG���|0��p�ym�9�g�����'!�:Tg
^01hq���`h��-[�َ������!;���3�L%�o�g�cxc�+�Rj�e�hha���1�8r��=:�+�8����g�{���dc�A�A}>B#�@�nP<�V�O
�L�7"w"Nx�.�ߐ����7���Q����Ĕ"ҍ�#�80���ƃZ_��D.�� z��|���}�s��~€�}~:G��&ԕA�~oe���A�Wf'��Ӄo�����ɠw1�\t�
K"]o~
�VzCv"o=�@
��R�2[����I*���Y�V���.J���>N�� U��Ԏ���21�r���t�Ս
y��Yr��3�4!t�e�mw���׆�i����<�rHy�ׄ��~��!��@�v�2!���*���"s�@�b���6?��%�V�c�Z�D�M�
WК b}i�Em���52�cҋ����Tֶp4\���[Տ�ȝ9���^ke?0��e��
�A����Bxlݹ�c��h��]Ǜ<�Z�m�^��ɣ�z}�<j��k�!8�Kj��5�hŅ���1�J���8�3Z�`y�c�2!<b�M��$"�7��K�߉"���qC:&-?����
����
�+�b�U켛P*�>.DT8��@�_���	7dp�ܓ�.��f@��)�_X=Ȃ�ְI~�'�E�����5,�t
���{F�O��<OQ]�	碎��݀F
G��.ix�2��ʩ�"���}>,���C�uC�jX�x�E �e����'^m�iQ(1dHh�tn��
/�zC:w���(�y9_~�CBhۈU�do�-�����[��:qQrtIz��m���d�'��prv1c���i*��8�-�=�js����S�:S�zևI��g��=���-���6$�9�4���|~��Ӄ��/!��EkH(̟	?�1ǘ�Ez�
aN��6@R����Ġ��
c�=�
��i���0�w�*	�a+�"���� �~��-jw��E�h2 ��|6��<�t�74~3�߾��y%��	g!�˳Aae]Br����ת�*@��b�&߁�\������MX"�'R�,��\�;=� �}�eN3X8���+�s�X(�#�C�pt��pֵ�sl�X�/֡�P�lR�+a��#F��8��ds)�a�u�`�݊Ub��ə���ͦ`�a�+b�zu`e1^}������W-�Nk�M�x���S0�Sb0�\���.�F��4˯D
�n���U-�8J���޴�θ��2�W&��8V�(t��A�.�d��MQo��,�`�u���ؚ*7�W�H]��� �`TFHə��
��H�iNn7��F8�[6��];�%��m�˶�����9(o�0�8�4u�\�{
h;`��$ [yY����-��޼���H�S��2��m�o!M��?18�6b�k����jFo��ܐ4O��zp �~ǝ5��b�0��,��JB�꼩-d����֚kL�TD�o.�<�'���Aי�����`ia���5�7L�ח��"	�Ÿ͌aX\v�,'�H�1!��|����7A��-5�:��ۆ~n�W�������ڮA\�X�������.e�/-sQ��X��=��1�Zr���`�G8���;���}�:6��$�弬�cj�q�&�.&ϧe�%|⳴b��x�,�N޵�P������#s��l��|���ud��BK�+�G�f�jJ�WD��Sz!�G�!��,���-P���k��L6���e9��{�V*��TFn�j�+ܝ�J�Թ��d�Vk�*5�Z�S8z��pa�V0kz�m�Ǧ���[8�}WW���Ƚ_�>+����X!��҃�VR�
�P��A]Ճw.&C��.��ɣsr��_q�D�c�=^,1����ϻ=���`t�^2��e�p�D�(8���W�Yw�]��2�$"u6w�Nm��r���TO81!��
�h�;3�\t���{
�@�5d����[$��@^�|BU�ր���Jn�ќ`�����o�fD8��߻�ϛs��N���E�F��C@�h�'��Ib��¸�8k�\�7Ճ���f�:�E� ��So$�H?-�r�!= ��o�YGb���;�Fal�Ϡ��:q�F3�|J��叶c�ZI��B[1���K�J���JD*�� ���@�h@�(�p��Dik�=v��X�K0�]����>0�H�3�j��!����,\������Ba����3ǀ�lѩ��F��z����V�*��,hf;�ө�u?�J>��B����0��Å�� G� ��`|z�W�!��A}T���YL~����N��6w��!��+s��M��*	�6i?�S� >9Α��c�ap+�t�5!t[D�ah�7�	�>�6�i�xɠ�۷���_���)	��{
�O�*l�0�u\�r9+��;�I��R�p��a�d��x�T��o`�O3{N��4�_i Ѷ*p'"�(15h��I&"(���bh��cla'X��������r��G�e��"%�"f���� ��`�)Ĺ�:?�U��{�����5l�p4h7�8�0�秏X�HE�A���]`��F�� ��2��w���d<�rt��0�NhK�Av����k�d��n�NB��q��m3$Ejܸ	B�mKPTQ��F9h�Rk�3U�E>�g�`�S`.��AFC���O��:~�ƌ����FR�E������vl�;3Wm�F{N�.ᨪ#�����c<lp�Lfe���D+�-%d����0��u�/k�2�Mq�<zI�ug�q��!������g��K�I��WO�m���j��b��7E�%�|���|C(��L��ʌb��^� ��H�-�D��
�Q�\��S;NF�{޷�s�i@�1=rŤ�K�S��'E�w Ż�Z���-E�?3Wê�ݙ��=„ظ�~F�9�%u-4=$���.�~`ϵ=��k8q���B��\��*S3��иG����CT8j#�u��[Y�f�p��������@ʃ��ז|�;�f
��7e?�w�FL
��wG7�Q�C8
e��7R?Ր�}�!�Yw���0���P�^V���,g]|�ʯ�_��@�h�M8T�QN��mZ(��	�zp~XU�h�(~$�W���3�N�<��y�<UUm��.^��9�ٛ��sV��Qy(���X�H�yv�v?�5�30d�&D�:���!q�:C����Q[�,D��!��D�p�'��Dž�fx�# (~��:lp2��X=(be�ΣO�B��ٳp������N��]�YD�����.���޵&~]<��䧈�8�kTS\��N��P'�sI])�����Vh��^�}��5��C�
�@�T��D9�
��9:�DR�eB8���,�2w�8�:���o��>�P�@ΰ���pq�e�}>��D'j�F��x\�f��Fo�� �������#}�7܏��՘	R�E�pR~&������17k
w�i02=x{�/`��N��Q�):�z�e�V�t�ѷ0����v6v<ĥ}xl�y\8j���&�D))@�D����C����8��m��jJQ#��E���L�q�z��g��h}	�YaxR�̚	!�M�&]C�H�%��K���pt�3ә;#�A^>�_tI��Q��'?W��UX�+tXhz<G�)��+1�0v�ͣ���gT8�!ykyu8��d~)��B�5�7�>�K�����M��l��O�����C��uGÏ�^����-=����`1�1+��0�6�ǖ�t�87�(����vz���R���`Zh��8\o�U��
�2���5:!�K,���t�������c�@��x{ X�,�M�<�zp`�Y�i���cw�	�S�"�)]�*�CcY V	vu�[W%���f,�P���Ġ�A����\20�wӃZ�K��Vo�q]^��H�K8j񤂱f��b�+}�P����u�p%�`�u';����nV�B�H$2�l�Э=��\���	�j�q����a]'m�XN^����o��V�WN���0��B��>_y�3u}��F�d?b�����ɧR���|rs�Q�o��wW3���NL[>og��63�/�C�O֪4�vK�
�UPW��`��T�W�v�M�Iܻ���3AԺ^lp2�$�N��9�k.Z�.=H�z��ݸ������r8#�{��'��c�=D��dy��wv�DK�P��߆7�:�_dhU���k�C4h����#':�0U���[�[�� ƨ���B�'�"��-c*h�`�mBH�kge�P3*�|�iqT>��qMl�����B���U�mdQ��PSJۤafffffffff�033333_�6iô��%݌d�5_��nҍ���ݱ(�h4o���}�A
���
u^��|�e�Tt�Q�-�D�+g�8�ph�����Y����ً�Q��F�X��O}��#m1��(�-1*�P|�eWvQ<�R��a'�3[������'�8q��M�@����~��ݸ�.�CJ�S��$�{!�x�C|�H?P1���D��I�i���)��3�:*ٻ��׫��!����>��N��`fh�ї��(	*|�8<(���S8s���?Z��i�eŔV�T�6�w��@.7�ك��<�G;]���-�7�X</�)���S�=�`y��]�q�٠��[�1N��*��0qQ��+>�p�#fB�K��9�0_%���`�]߷?ST�'R&��N�^�W����a�V"|��<���iG��B��K̐�}�&}���B�UQ�H;O�
=��"!ݷdY.4v��8�8�Y�<ҏ�C-�e⢔���g��.�6e�O�?�t�ɣ�W��I7����D�'�C�8�)����D
:%�	�o�ȱFα��mĴ��q��#�'�A�K<�$�8��,_<��dq�a�'�����:�;'%UbI0{.���#�)��L��\ߨ
J���
�f-hFnJ!�e+� BH�Y�@c9%>�mi����Q*�SF�hl5b�.������8����S�8?h.���[��6���i��¡�pƒpwL~|E���Ź�z�� v��z�:'���D���ܯ��
����<��g�ь�:���d^_TvK���Q,-i4��; ���>6h�K~��PW�ZO��H�Z��r���|R`З�~L�|�I��I-ZH~��.��`ttQN�)ǬáN��7Pa4�8� !D�jl9w�64�0JA6��!Ns 0��e�3�m)�v��A�����%He�^B1y��d1/�B�������$b��c�KFc��o8F���Q�i��$����%.��d\�Vs�´=����G�C!��+�E�I&���TP����E��
��躥��?��|�M����6p�AP,��S����C��
AJ�{w����F*,j}�hl��B�b!_t��'��z\:�;M���΄	��/���G��Z��L:t#i�)���i$�6�w/.J�p�`�-�F|��"�1��^D���#�1*<Hp@Ǘh�8���lʼn�z����0h�g��c�0�ո&kLU�������<����HY1��R
�<g��3y��	�Ey�(�
��Z�o���J�0��'\	a�=F���Ђ3ȐN�ꛟ�G��(���҈@~�B�
`p����l���ݢ#ό4c����R�BLu��cb�7m��G} �7�,S��NX�[þ�4���W3�^�	�n�҉`3[�qx����S��w��I�h��T��Ű�>���R��$�D��C銬xI�n`5`!��#���ƀ8~B�=c��ْE���Ճ�[ĔQ�al���i���TL,4���_*&��(�e�BT��$�9&�b�4��A�B?���>�"&�Fg31m��{����/G�pD�X�K|5{�{�笖8�=K�QG�c�|����He��,�+<�Q&�r퐂�i�gt�R�A�):�5�e�0z�]�l��	�~\+�N�# <��/n��`5	�s����x=���$R�jV)W`� )Qb�7�9NoR���<�Gɼ���5#���c��1�QP?�,�g��J 	����2jG�P�%U�ƪ.V3%�h�&l1"m୅��V��GL��a�ؓHE�=�_��Y� rls����P�7�P��j0c�.\/'D#�ѕFo�3>I}����A��X�s�$�x6L�ݽZ��9�=F�z�Z�/n�\&�8��E�<#�1��y^ƪF����$Xz������8��|�0�?��
��(�,M��B&?��pI��.+���xj4;����e��O�D��@�§�;��t�Y��e�8a�˕e��Q�y�A��(��c�|�W Zh5EO �,�����,#�vї1��W)=�!h�^:�s{��G��oF���D|���?m0��	�wo
6М���4)}y��8��)Τ�3���8+%�f�ִn �`�\_�1y��낲FQ�ۍO��,�\����8�(�E�#�	_ͼi���OR#��vCH!�Ϫ�iBH�f�Y�~��`�.fW]_O若���(�4�}Oo�SM�F��$��
����b�Q<8������uPҕE�fE�iL��A �a?H[�@�^=�ȤÃ�m�,�F��Y�	���UL�68��G�NqE[�lB%
3���S8>�E$zV���@�@�����7�5[�c��=��4ﲰJ>��Ak�th�F�rB��QA�mL~Db��n>˚�m��_	��C��
�m�׷�H�}ň�3	`6A�}�*�\�$��4�K���i�u���~�L���{)v9�ĕ�q��;
��l�'�F
����rD#�m�WI��:�/D�D�Wy�1&���8��Ճb�đ`G�=�����{CM�׉fܺ��t��B��Y�nBQ
���^=���sA��aY�g���K�";ΠKH�т�H�@�¬K�~AMG�(O"9I�8j��v�B�Sb�S���?s\�1�MTP
�qQ���,��%� ����؋fD��P"/Do,����2!�Y,�%��`
�1�pB2,OI��)u��d�=�@�i:�U�^�J�(oE����c��	Q��Esf>��,��0C��}� &�����( �c#8^���O}H�cc �1��8�άQ<�s���x>�A��k�X bH��,�.��X�`{�i�q�xZ��*�8��;����v&A9<�l��=�B�@����U^�J���c���9.z*
&5E�౾�7���.e�R�,�ς���(q��C4����] �3�:�p��L1_�ËN@�����y��2hZϢ���}O���?q4*�e��U㯢�j0:=���(qT��j��Ϙ<�#��&�6��a��$�F4�qd�3B�6j�6ԭ�
��_�/����UdYDS!�8/�?�~�Q '��[�%�r:
�M�b'���M�ž�4'�I	�_�����Ws\�Ȣ7.(݊��8$+>����;E��uV��V"���1Xdʩ[���)����_����0��]W@�;[����2-,�
��y��z		�'v�8��Ď�:և��?����7�9��LF0۾2A��Zh�WXB%��m��s1{_�b���$Sq�:R7����E�BS��Ќ�+hM�N;VH���BB�#"�=���L%��B�8qT���X�j�hEX">ك�1t>�G$ P��	��n��L\�8��P�B��8znT�FK�Nt�(�ќ�T�H]�!� EH�chA��/���ۊ�3Q�#J��Җ�=(�!c�S��M���R&;���]���_�z���'�{~�ڝ+�n�٫N��kU?�U�����}k׺~�<�ăOz���*&�
p�H�D�եcSLJbW`���^t�3��G��Έ�>��5^��ʝ,I��~�A�eXX��?۱���Ǿ��9"g�� �ɩ���w�נ�m;,\�^ϖ��$G�Zm��q���`���{���L>��%�yִajG)��N�ׯ߽z��ɓ��߸{��mL���(�@ΦT����5��UZ)�~nѶ/:���{���Ŋ�-Z8O�9�!.��O>u����.��^�?�x�j���=��A��$��+���eY�o�A�����q3�X�1��?�y����:x����>~Q^��P|��
J�O����IK�Q�n۪a钪CP���?i��=̐.��m�>2r֭�)�ւhj�?�U�t�*%�q��b��g/��8���y����B�b�Jȟ7;����aϞ�����Ϟ��q���݇߼q��L�/i�D>��]{��[�ڣ]����K�h4�i�"۵�5b`0�$��g�m������i��{*��E͌��IBr�%UZ��0��kb�GL�p��]��5�ԓ������E=υ����b�,	����D�,������ pQ�lt$�
��%s�=�z}��?����y�E�ج[�f�{�?J������ѽ5��~;@ A�86hPf㈊�S9g�*Kh-{�:��k��b����Zm([�@�5�eI����ٹ��{w�=npxi��9�[��p�BU�KT�Z�ҳ�
?��O�~|�a�"�)3�J�#�{��F��W ,,|���3C�?{�Bl�F]��֫8rHG��sTx��փ�hJ=��J���kEfނ5s��Q�B���ϯY>Mc�1�C�W��Y(�œӞ�B���+�C���';T$�1}ԭL�#"�1{9�}�W�T!�O{��z�.=� -(t�Ҹs�Fj۴�<b�h`��O��'���4+}�j[~��9Mƒ<A�@���u+׮Y����;wھ���^��ݱ$c�ԑ�B��Wn���̣]��3��U���G��",.%~B�3H���`���Fޛ����=c����*?^<kb�&j�FU~�X��埈�A>�˾������o$�R�U}���ބP��qB�Hh��\$g\6@�y�6�Q_XyH�����Z�C!ZҾ�m;�mЩC���Я�<��A=�G��5�ؑ�?��Μ�2kv�{��F�_�����FN���|��ax�=��r&�Nj{��N���_Q�Vۓ�/����͘>�$�c��f���ٲr�sg� ۭV�d@@F
O3��I��8e��I��vģ.�ޢ�� �Ev�=jͺ�F\�e0�/ �n�rcGt�M����p�6��{vmѮM�v��9l�ԅ3C���⛓��W���NhV]��Y5�#B(�ʕ;Æ�=q�2~PM�˰�ѫI�jd�_��-��@صea�,��>ݲ�P���PES�[�o������3�,�ul\'��`LJM���G�-�޲F��'N]p{@
$J�[��kT-�zod�3u��1�������#���q����#>/���_w�fBl�X*"G�e`�R~���a��<c�]!v<GxP��ȹ7�����9�<0�zZ,�!ލ�+4D�:��a�2���;�L��\�X�j™�4GG��4�i{d�;?q��)OӜ�0l�|�ߦ�H�*��+}r��gN��D۵�?xT�!���჻�jQNjI\�y�L�v.�1i�,שT����#��v����-�[�+��#�̞a����U2�"y�b�>3��[}6�Z�tC��lY�\�������ĩ<�������&�E��l�����.��|
�]�z��)�F��g�U���1=��R�/�q�N�8�c�Y1-��x�0H�8��yyO���0�i2��̇��GߡCCC筡�'e�ҭE�Zd������@�xz������2傎��6%��a���n\ڭq��VL��D�Y�����ԡQ�.M����z�0}�B��Y�.�; ��)z��|�f�}ˆ��rd������ҳ�&QW���(��urr���{j�6qW�RR�	�$��0μ;���M�_��彩��1!�"����OS0v2to���9aX��������F|���1t�T�rGYĺ)��~��h�љA*��k$I6��X�g�f"h��Uus��)S$>~h��ۮ��
���툼!
G�GD��L��v�D/��bG���kآ��E��Du��f�X�e�����;�[>k���ț'��Ec���b�@�ל���Mssf��\jܤy�,гe�2��K���%y:77P��7��QcgO���lG뛗�&�a�s�R4��V��M��,M�/_������x[��I�<�w�+��B�E�Z���7v�M]��Ǎ\=�`��M}=M'��Ԧe=��ᣧ������ǧ�zKUhu��c�/Rq*	Z��R�Z'��O�c�ڝ}N���D|�^��^�.�j�����Ε���j��`T+�@�����}H�o\3;o��>9Ŕ��N����1�N�߶Nu�pˈǢ�$#�/�΁�	��UH�!J��X���G����/��
��ʘ8Y(�1v��d���J!���1�$�u���s�!��a>�A'�>��+��h��=e�T����@YY��N�8!-��Ș �	h_<�b!^Ql��B�23�@���9���GΕ����=W46k\c� ��BZ��z��ܡ�7�G`��}�8_��A�3z�E%��0l�����n��eM�aՌ�`�.4�97����Gs�}�,���I�.Yp� �����K�?��{���
9}��d{�ر��د��nQ�\�k��(+W,1J�EH�����8����Z�,�o�3$�4q��uZ[@��	k�,����ߤ�G���6�$��\2j,>����ж!�~�ޣB%�j�c��Ģ���h�&4�I �1]�:�|٢���t󶃤�Ѡ"��������Q]c{�R�n���6Э�ߧ��{��ݻi3�?Z�bz�9}r�~',Z�K�g~��y+9=��GF���"��I��Qt5sK�����A�c�JI,�+F�"�%�Qt��`%�o�^�~�.��h�=�y���l��i���}����8'�F&���9-5!m'��o_��+f�i������?\<
��Ϟ��Ͽ�?|���G�Ś:UҔ)�����߸�}�!��F
��ݛ��i2“m��Ѫ[g���@̚�f�[�K����*�JΙ1\��m�׭�x<Pqz���X�9c�W��-X��_��y�.u�$�R'M�.E��J͆��C�L_a����f.ըy�=���ٲd���O$�_�z�>[Y�g�qq�BaU �S�BR��o<�s<��kw�����?��G�����
�>z�N�Ί���.���LY�j�F�p�ukW��q��Wn���?�Dl$A���dJ?~<���/Z���(4/5��W�Ŋ*��b���PB	w�;�ōg���?_�¥��~K�s„��9r��]>��J�ӣM��M�7�/EҧMy`��BMtI�w�swo��p.]�]�V'�/�nTW
[���{vk���2�C� ��O����'����W��"v���?�C��(���M���\2�h��]�Z��c�!�v1��!��ti��s��qX���`�D�s�yN��N3��A?@p���R=(•��L$"s�	!C��A\ū���q^&OQ�7�*y1��i=aC�!ZMD��u� 9�����ю�l�����`��}�8Zh���L��i^�B�� ͆��H��א�~�姫����)X���g�F����jT+�q���*���?�z�+N��D����ܨ���کi����Sg.U�	���L���!��d4��C��3�@������cʕ)���>~��&s}u>T�|�7��	~t�����~�V1� 0�w��u��
�t�w�x�UK'��R�f-9f�K��`#�Q�Hw	��~�}������ɳj)�v����9a���nC��l׈}��\�V�z�s產;����߻]�U4��X�7oݗ��.Yp	��8>i�2jf
�/[d��1j�<tj���n�%?J�.e�N�*�S
.��J�UѮ�&�%�_0y�[�ٱ��΍n]��g4'��KYl�!s��f�ڥAH�j�����iTj�{�=�� ۯ\�U�"�"AύB�!]���=2��������^�+j'��`���<�>i��z��t�f����%�#��]���~�6e���k��z����L�*Y��s$oG��GX<�bc	��V���"�Zx3���?����H�B�����(ɦp�$M��s��E`�V��I?!���
��X
���7�6���L� V&�̃�W7��}�[���[�� Ud(��B�7�~�Qg63��A�ɹ%Mse��ȭ&,��h����L�͚��+F�T-�ʑ���g��9�9�����-^�_�F���[����,9�#jP�-=~�B�:z����eUI@�-@C���)��d��Ϝ�"o�+\8mL��]�ΆBT�H���T)�N�W�ZȚ[�X�hB��[ڔ�G��|��s�]LԞ={�=��R����	& �{��d9\��F�Vj~��
��r�_=C�H����X<���l��Ȁ�-�ϒJ.��^��C&�[�ķN�
S&P��c���6B�`��ā�k(�E�lۏ�3�N�k����CW�\���; �� "ϖ yZ��$I~_�`h�t���f����=�	]:4��p��p�z�*Qt�A����u{��F�\�U{��sƔu��d�Z���-��\q@�Ñ��
XJ,�7
H�Ȝ��?��v{X	��-7�Z��7��S������j{���L�ߢ���F��W�|	���Q��Y�*Ε��@��x�
p� \O��1 ���eX�g�~��l�	YG��N\�ymB��'+�y�^��A��y�TU\qDG����2�l�b�詺�h� �^���QOH){��g(�iad�<�pZ�B�S�g��a�X�S�zZz�M��\�n�=o4�W;VX)���^���ac��1�ӧ��獞A�6
��@�>z�6��[.�8_�L@�^������?y�4غnZ��ʄ��sW�-]�&�$��(y�KS�q���g�!f�H�����6X<ol�Ҁ��I�'L���Q�
�z��Y����9�>Ib ��
ͳW��l5BX�B�+Wo��h�H�~�3�4q�d+R(���S�-?	K����W���z�QךIt-	��?`�$�Զ ��p�ܕ�ՉX�'��5�vH�����}�>m��z.O¥30�mд�~y|�gik�K��8��[�jl��?��lN����O���th�pTw���*5Um�)�Тh8��Pk8
�}m����٫|��'�zf�=���ֹ9x=w��[�Q���I"]�v/?B]�t�&jˈ -�֩Y�����/�̝5�b��d��M�ρ��L��=�$�>��Tأ��#׀�MP���m�off�Ƿe��Չ��"U=h;�[BHa'P H(�3�}�j^����� �����Z�f�h�	����0?�	x��&���`�`B(Ž-43��r�4��P�|L7�>*`BHӖo$HH��h�ƾ((�S�|y�nZk9?q�z�V�l����Ӽ�ܨ��Aӌd�dK��w
�q�����#�w�\��Y��`݈��vlح���M�$�+ٚK��ԦC���g��ז8Ua�
�Ԁn{%h.5j\�TϽ�u���@߸��I�����ġ5`�_�n�֮�%=�>8f��K�mf]JH�2��@8���EK����ϗ}�����9EV)P�JT�,u _�|�3_U�EW9b@���jz�
�D�K�ré�󕩰��}H��̯�����K�mΜ���
Νؔ(�od{�F]q�x���g�����ر�/]Z�
W�j�M��C����k�8~t����Ǻ�f���iD(Z��C1��j�U�
��3zŪ-3�
�VY��5J�А�iФہC'��#��0a�Q������$��V;OZŷ�4q�1E�F��K��:�(?�Cc�X�(�/��8�2�Mf��E�"��>�X�pތ��
��H��O�Oւ�	�b�Ӳ�f��q���SJ?t	��M�W�����ؠ}�,�
��%��4od�!"�S�<˄EN��7_/��A��ٴ��b�
���I��<@�޽�����l�_|�&5G
�/��mܢ����b����� �tZůX���w2gL�} �P�h���+Iloz�@1k�t��~z�J�
�"t����ٞ�f��o_�!r�̼u��~�΃�%=09�e�T@�`�ΰ�	ƒۇB �VD���8ד{G�"�߽���U5w�,[�q��o�g�c�:��ո%BOݚ��vjڻPU�0r̬鳖:WY�M��5����]A�͚�b�H7�"�R)i�Y���l�,&����0v�֭Q�pU�3��ւ��Тi�C�T,&��[���&�y�o�P�~���㨑Y��F�C�4}�����^�̌)C�Z,�T:T���xx�[�k���q$1mҠ�ՁR�1�pU�	{4�y�gy ��Yx�X��ɦ�(Byp1�@W�ۑ8�s��v^?!�C�,H(����Z�:	!d�Gy�8Jۅj8N�ӂw� u���=�5����͑�E�C�Uvo
�[���-gCL"��R�1��~D�,P� 0�L�BmB�����G�>k�W�UN]��޸y�Xi��Y��/�@ny����h]��51�
�q�|iP�"([�m�m�Gzص���D�)��(&��Z~��@��ɖ��(%j�su'��5r��Ѕ.und�O���ZJA��;]P��kAs�A�ɞ��#{�����o�-��q���e�ӥ$�[��e`/����Ǝ
��vG���6�x�*��N�lvl�/�y���ݫ@��Z�*�鲔y����������Q����U�E��8H���n��ȱ��A�:�k�|T�>�;�n�cV�L��l�Z��Ӷ�1��J��qc߼�4Dd&i�"z�7hܰ��������ٶ(s&��Ut�w�?&��'Ŗ��֪�<�o��r�2���O?|��e�l�N�v�9��<�O�6�	�TǕď��]�=l֪��=G��ܷW�N�a�D��=�ڼ��q��ծD��=sf��j9!O��!�‍j:��a4��b��C�+B���u��=:��B?4!`�
#�fS����AKd�%�%�S,���.��V&D&��K�`_Z_H��A@�e(�� �x��w�
�BG���,��my��؂�v���N��A�=2P��"�i2�֞��۹$S��d���'�7vYwDz����+�n�*�D��=0(Ϩ�yk�%'�R�6m�ۮ�p�1mkfe���uVd��[�zŢ�ŋ*G�y�69��nT��iC�UQ�V�]�^�N7�I�xqc߹�O�
�w�~cdm�'��_�3�7h�m��H@-�y�����س}Q�L@�ַ�u�lG���[A��Ek�W3`��g�����e*�0"&�.����s)H=3��;g�Gȓ�Ck�C�o޼C����۬\���*c�R�(����Yԅ(���:phϊ�i�1F
+0�:{�*��7М�|���4�n�8t1�)JUhr��m=#AM񢦭��&.�ݮ�~�.�\�l�ԉʕ#4>��T
�mߦှ�
�)����#ޥh8lƒ�u����?v�]�i7Ah)Q%��;��Mkg��
�4?}��:c	����F�nXXw<|��([ղ�x^�L�ƌ�ùc�،�w��0�$�l���i�2�4��Ux�� ��{�'2����B��{R���?m�	�i��8n�œ�A[� �v%�v�O��'�!�\���z�V�#��L'+Ɪ]E����7J�?:a0���T��%�mn_�}×��ҽ��i�9ׯR�.^�Q��R��p�|��E�N�G��߼�k/[��!tI�DBy�qbǽyi�*<*Vo{�ncP�Z��D
�f�U��{�
͠��r�޾��aS�����Ə���K�R�<2gL���~�µ�Uu�Iعy~�l��*����xj��?�'?��\�Ʀ07h��
ҧ�=�﯂%��~!�	��=�{Y�d}߁@D]S'���[Ȩ����Q�b	E��5[��%��0̃�ɾ:\w�f�%�2�G�4G�~ �JqQ��)8���t�ܤW�V�)��9�@��0�v��S'$۷�<آ-0�8��rm�����yy�x�g��%����V���A#W���
�8Ny��V���g�!}�};�y��i3�zo��
��I����t�*Ah|p�0�Y��t��ֽYc��|��(\ղA�y�b��A
�ق�8��s�
�1�a]��0^�O��c�ķ��M���'��󼛑і���|�u}�[Q*4��4�(����l�����w��N��˶�b<BF�z�Dj�b�k&V섐	�W�������S����Y�Ģ]Ў�G�&Λ8e��EM��̹+����O0P�_�R�铀z�5�w��g˴D�imQc@lE��Q�%����V��G+����u��Ιw���n^R�z�f��ԍ�Z8��~.�3�|�"jW�>m�ҙ���$��1zx�f�aϮ�B���Z*�鳗+��oT`�9�sf&��7�v�R��҈�9���̕�����q�g�e������8�:U�#��2��-�\�p[̓#{��Pb-�`�z�t�M(ɺ��)�wz��\�G��m���a'�Y�
��p�b5��)�k�¬Yґ�o`8۴I((������/�j۸`1N��-�6��Ь5�P5%&����HH��O��*�[.Y���93GV���p:u�R��8�g��Y#�^�2E���8�O��Y�C����UJp�\��{����nױ�21�䩋��s��#[�mP߫\��YW�9�eM�c��(u�6�K��@��<�%�Mr�@�]���.��&P?�l�� ЌO�E%��P�Ӻ�k�8q�E�B� ����#ϡ����*�(c�Cf(��[x�]u���|�(�J���X�����g�
�@���=�����f��툴�|Q0о��/�����ωSj	]V�\*t�0�u;;~Nޒ+G�m��[b��nmi�ᚢS�l����k7���}]6���/��A�A��AA�O��w�������NP���Ϩ�!�l��"��>���0d��Lnܻ�d�vC쇦�V�Վ��F��(��ً�#�o���h`ؠέ[�%�w�9r��ut���	C�!�l��$ݫ@��gυ5$4�6M��{W���DRXrcV����:
:&��P1�O^��_�]����J�9׮��Q�t�y�KZo��O�o�}T��su���s��^5��l�R�jQ���-_�R��ʋ�B�b�g�R4~��%�k`�UǎT&R��S��z̾Q?�4��ix��=��y�g�XaA#���'��?º��:vƛ�-��PuI�J���Ӂ$ɵvv�n��3�M�3<r����!¼h�8�G�e�U��0��_�m�۶�X�,i7�U�x��ФEOJ.�����G��񋗺������,>JՓ�F���'?Blæ�淫a T�J������؅�0��s�%88�1Σa��>@�p��!������-�cBH�&����v
�(Nd�>Xk�����gi��rR~�-+{�R�P�+c���
}P�7pz�>P�$FT:E'(�f�h�?-B�=�߹�/^\ -3a����G�
��_�M�����m�ʎ=[�~'�k���M&�+,S*��Y��D':w�v��]��9�^�'N��g֓����|�uV�`�9J��U�V�:GÃU��l�!���;wN�����:��wl��aO���z���*e�c���G.��VNGT�lG�����F���ٷ(i�?�]�����N�a������_����T�lvy
��[nܼ_��3�V2�i����?*_�������κY�	f��I��U��A�	���o	~�'���j-�"�&E��%�ݹ�����G_2�.�V��o|4�x�x����5h4��Za;�h��b����e�.M��Z��k/�ZS*��;޸y���^��;.1�>s��-��p��JE(�������B�-Q��(�/�(_E;����YE�O��}�F�
%	?}�w.u����j�j��GJ6:Q������)�����SJ?��@�>wx���6q�K��N�#x��b	��Ү����=����:sG>�J��&c���(��|���˻~�����$�8~dF�ڲ9l(73t����5�LR�۵�ܘ��Q��q�Z�X�EsU��@t?;�!�Xhۦf�q#� E��5]ͦm�?���4�vmY�сx���L��ߧ]'"�R�+��w
�����)1kw�	Ŋ�%?�\����"���.���z�`�UaR�]A��NF��ީTé'�Y"8������gx���{��PS�A�8e���pz�Z���/^��{��&-�{� z_0?@���u���7:��ރ���g��m(&K�$�>s�Re��l�h!���U�2�
-&zKWl���ɑFJ��nw��E��1}ԭ���܅�5�9�X�֭Pj/]�m�P�
�uY�t?{�"g>�·`0
=,Uj*{Z��H	J��y��f�J�kt]��3�+=B�,�@��@�.�\���PQŠ&|I�	����Wz����`!e�䉣���A,�d�=��#���B���)s�����3��[�AJ^�$�q��Eݎ�W�+�$��.��Ծ�jG+Z���[��8�p���{���u�A)G�ʱl�2��#/�g0S��cV,S(�2eqQT&��
 k��]�LFC�)1��q���#���3t���]��jM�L�ߚI�$<}t=پg߱F��n�]�a�R��V���k�F����65�N�������v4-�6I�Z�f]�E����zdȍ�_�Q�����ME�4(���	U;vvf���*W,1g��8�ӧ/i3��X�=vȀNmZ�S4�����P��X��K&��>W�j������T��AA�p�Ɓرs����/�Z �2�I"���E�Xܖ�K�g\�'�~����+˛'��5�8-��d�_��G
�\��rQ�|�v�o�F�7v\Ն��3��'��W�Ǐw���9|ԌYs��F�ּI-𣼅�?~����y��d��@v�l>�,��1�o�b�Yނ�/��ؠ��ҫ���j��y>��
��U!�x�E��0�[2,c%>{8�S�TKE�Q
�O�B����!�%�J�2(��B�"�Q��-�	A���D�S�@)&�n��6'L���� B�9S�^�[�(�O�Pj?4U=~����u�Y�^z3ie���g[��ЉL9*���V"	P�8	�c�\;����Z����@rԜ�#�)Xo�}Ȕ��/JbP��۸we�c�����xt�ҼW7�=x������9�P%��p�Ԁ��(pΝ>�l��6�+4�r���Q�۱qf��ua�J�ܴi�w�ҢB��jW��R����gҧ�\���NwUJF����M��u~��t%���IXc#t��!#�ei�S�LE#.��:�ܸp�\k��iԼ��ǵ/O��=[��O�����T�&k)�3���_=�㗟$u�̵*U�P6MR٨";���Q��H�ܫ�M%�3g���Áv	� [��ɜ�Oo��_�`	�5���S���uvn�yX��=�'�.KD�ɩһ�Ճ�/`���};�fH�J�x�����a�5y��:�*��S�E�#�N��>���守���n����hvj�b��`��,:M=@�'����D�%]b�}��o�d��xs V��
�%B(�1X��2F�H$����d`�A8�
⟿F�ߏo8�
��)-�B]e��r!�Km{�0�R_�vB���`Z%͡�|	�����x�΁�O��,���G�)���!�����0X;�N����ɕi�J�u�@���`m0*�6�-���J��,�B/M�R�1k�Ě*��|��9��u4��<�_�Ԁ]��o�ݾ��O�\�o��R.^/W���{�E7o�ߺ= �+�� t��e���%�6�F�I�p�کٲ���L[g7G�AC޼yW�T����"?�'���{���5�+�
����@�o�6�;4?*Q֛<5����L�d����<HZ_4n�b�a4>�y�dR��X��{o7{�y"d�Y�s��f�y\sM�p�g]V��\ۇ��P�w�h���T.����3nX��Ys�S�V!C���}H��9,�y�/ݬZ��R��͛5D�Ȑ��y޲c�<R�5_���4�S��Ԛ�ߞ�p���l��@Dcc:���C��PY�p{m�A�V����~;\�v�B�vJ�w
H�����G[�k���pH^�1�
b�9#}�A�)�zp���a�B�X��,Op!�����T]Yy`�(	[`�3���c�-dy�C㋣����Q2��G�0�W�[��8qxM
ȁ�#��G+�P-��(�o�O��
��w�:T�"!��ژ[���7�����^�z�>�M���J��K��ϫ�X�lc�@�%�`ݺ�f�^9|4�QC��պtl
�'���RоM�A�:xtv9v�9Ҥ��C7������w��1�o�
@�H�z��(%"�d0n\=�
O/X��Z�j��Wn����=�DM9׸e�g\�c��=�h���T�����3�޷�ԥ���EK�^�r�YӔ�@�|Q	`����i5-���Y��Ғ��ټ�yi[2�<C��9Y�����db��V��ݵ�R�rfl(�;w�-����O��x�P�_��ײ��\�зn?(V�)ݔ>m��Se�Bu_�|=k��e\�9""�Y�T���C�h)t���Jg�za��?)M8
�2o�H�+g�-���]{�X�H�֨!,[����y�l^gؠ.^�~�𙦭�IU�:J�>(��.�DDל����<B(�����70��H�0?�-X��#@�o%\''Ge�]��
�$RFL"%km�PW���KRD�s�r)-�A���=uY�详���<kڲY:��r�, ��f��=G����
�KqE�,���|�mܵr�{�ð��K����}'N���6�,�z��O��ɲ{��Ϙ^��x�ޣ�����]���ɒ&ҳq:��V��̥���y��
�������
H�:ّ}�Y�jH���D;�
EM׳z����־O\��W�vń<�o�x�ϫ�-{�V�0LO����j�֦|�'I�a�*��^������~0�Gh�i��-{�%�Ǘ.�L�E[����ҤQ�1ÁBP��zIKu��aU+��˿ym�s3b�(ci��j�$�<�s<Ŭ�k�
s1qq�ԀIb9r�۾
F&L�?a2���x��R���e?�U��I�1}��M7.�V��n޺�mG�2i\���+*voٶ����Bș=�֍�nP���|Q
?2̭�{���]{�4k,�nQw�@X%�v��G�+�m���/?�iU/n��q��А�`��� i�F5FAz�cƇ�;U�,�VP���z����	�ʌ!�M����G�Y=�o��(5D4ƱA1�G����wd��kgs���Q��tu'!t|�j TGm��y��{�B?܀����Q�����A������bxЩm`��+�����@%�~l�v�S�a��?�����d���;�����#F�B_N��)vm�En<nҼ�S`�dM�b¡s�ְ^�QC�$�u;rě��Y�1��G�z+@)��
T�?oЌ�R���:5u��'M]8v"�gؼI�Qú��5�y0��j��+Vm��XH3�!���O7~T�:������
�ƀ�+�)��m�<Ѿ�E��,�<t�lߵ�x�6�[��2��m v�X���l'
�m���L�"!VH���2}���g�Β(�oS'�i3���^�6�4�V�rd{��e޿��oa;BF2��/+�����H���A83�[��+W�D�ŊA����3gN�g70��e����	����U[z�q����.^��t��)�ݫUO�]��S	�J6�k�fJ�g4�t�ꟁзw��2*#"�IR�X�Z'���U���t���M���@c��3��
�W7
 ���#*��eM���
���9D���@�Q���.Ɯ���f�X��
��Ր�[X|��D�STh�P1���@L�o��~s�~-�ܢo�`�g/�IBh5�YC���bȚ�j!
p�l�����Q�Gɳ���1<HTRN9ʖ/�i'
����L��3f/_�a��-�!��@�b�ҍ}T20����J�*��Z�q��-�;�5;G�-�l�I��ç�΃S:u�Z��Ct��@V›7��f�7��Rj�8>A�i��XL�o�~M���AJL���9b���5�)=-r��r�G�pقQE
�n�����[�t,ʢ�����vn�E�ce1�w�p���&�TEM�Хc�>=�՚4ua�U�����3���{T��V$|2�BH���g׺c�L�^��h��Q57y��j߻�1�p�8���_��)��b�#�̚1X�@���{��`҄��'�j;%P�l$Z��jQw(��<m�8h�G�/�55��R%(_�l�����V�&Mջ�<�R>tĴ�y@fA�ڕ&�Ĩ�’hT1��v�@k����,�4�
���h�����WtFD6�b�����٠;�FS�z�D8�
�[��.�H3Z�}M❏17�g�.������B,��b=	*�ת�KBH���	�fx� ��<o��Q���5���R0
_a��رy^���Eb
�}�aæݫ�n�v]��E�X!�o��s�8��Q@������"R$��A�b
5{f(\F���O?ƻxr��?��@��H$((p԰�)��R��f�:�&Cs��s���]F��K�o������+�� ₜ%��O[6�ɝ33p�̤���-�?�D1�.��O��lݿz�v���Ӈ�I!��[t����D����>�{�<��S��VuvQô�p�����&�(�zx��`�.aܨލ���	��w�	4R��Ñb:�g����4�8�{�!M�R8o�3R��"Ã�Q��R�Jr�0�:t����WR��Τ�o���oV�ҽר�k�)�[7�͙���x��)�U)=s�����C:�;W����G��+ ���a�z���u��D	;{XyQ�֬�u�A����
�#Dq�]�C�a�k�����]���5Ad��Y��5���)b!�˶�S?#x�#�a�<�51,`I`?���ˣbxP�$�?��GT��#����K�2�ϥѫ�_�8J���y4p��n\(�J��ri!��a+Dwx����y�켹��)O���IV�����O��|���b���~f�]9d�.�)ED\ߵ��r���NQ:k!:o���"�h޸ưA�;��Se(��sd}G��vŴB����}���C�+���s'6���:c���A1o'���3['��	S>�^X0wL�RJ5��>6�IㄇG�z����:�jxt�0���
��u�5NhzNʱw��LӐ��鋛͞u�s'7��6��ꅄݾ���^c��*�F��uoָ&��x.�9��C�,-E#��p�s��Q�'aמ#M��o�Ҙ*Ãr$O���1 H;hЬy6p�������eK^8W�Y�.6nXm̈^�Ț�‹�J1ۂ�s�]�,nܽ�hӖ�G��[���t�J��}p����%O[Dg�M��O���5 �F�Z�Ԭi��J�[)ki�h��[D��]�h�~�^1���짔&�*0�4���1��/N&��y+�wnپ�-o0���ѧ.���3
�I���8�B���`⨀W����s�d�x��7s�ر�`�����0�n#�o�m�kg���=�[�g3��� �1���`�l�	ŏ��\'���7�ی?֜�VK����rl�8/gB�zС��u��ֺE��C�y�t>|􌢱F�23�!7�T���sW"= ~�1�Mȩ1��iJ	<M�늁A���!�0=J��K�P��0�8����3�����<+�r�u��]G�yGz�q����ڟ8yA�%�J�����Ղ2��Ԫ0e���8u�R�ڪ��*��	�r�i�.�e�A���U�t���� �ʑi�8m�U��[���!řh� gI��q�$�P0|��ٳ�Y𤅣���:�E�k$Q�[ԉ'���{H#S9>U�U�FB����P^��K7�W�E>}�/*���VҰ"T�s$~�!.�3d{ǮC�C�d�%Bg� �k�u��BlO]������ɖ�  �S,hz�*��
o�.1e�FD]"�AQX.������[<���E�,G����h(�ٲ��o�a6�	��2���Q�7��l�0�N�h�o���	�b!��b0VV�F�&س}a��Jϫg�_d��ey�x��ܹ��l_�rK�޶�$):�>�_��jI��-�2c9g�x���ӏ?\��Ӈ���<���GO
���=,`��5�o�
�F���~��{�ݸ�e֎
�q��-=�q�kU/7m2�<�Z��-�λb���E�*��#��).x"�
��p��-�1G|Կ�X�X���l
�E�4�5����A�<Ȥ�^�q|ꌪ�p��!U��o�s؀�s���C!�Bl��X|�5˧.��<6�S	�
�b�J�.�>��pܸES���qE�c��O��o����7Vl��h������œ��\�j¡I�$<yD�<	VR��}������eJZ4��F=-��H��ݿ	�t�>l�z@{LM�F�%#{xu��7��;0U`A,c	ӤmZ4��/��-�����[g����x2��E���)8N�M�?��b�:��Qރ�#0�z^L�'����xGxP�dO9�d�G�Tt�x:�;(����ـz$���^:��lG���]q.�C6ƪ�@c��ٳe�IT� L��r���8�N6
��4Daa�)ӗPx������g�8t�M��>��:��j̛��߯P"e���:B�&��o��U��R[_�|��xc[j�����K�0"�Nm3�G�8�r�Mkg�ͣ�FH���ժ=��5ۉCG�5h��S/i����G��׽{����OW�9xCGN�=W�tWG��;t�	�>�J% N�>[�_��X���F�>��
�E^�V)P�R�g������-�ƶ�lj��LY>n�b��9[h�g
_����֪�T�M�.j�V��L����ȧ�R����e�k���&W�C#�ѫq�jjg�w�>,RRis��З�m����]�uP�?�
(��G��+V���Mj�
H%7m�k�^�h
��(KY��Ǝ���e�l��,�u��լK*\,h
$�CIXq��p�K��� ��4+�T\��N�$��,RIH�e��ȃ��Jcڮ�B����n�E{��dx5Ѣ�0�: �#����=<H@^=�s�~x���	*����k%�y��)`Y�-��n?�`�-�v�UX�`�};D6� ?��`݈�X}��y�8�x&b���y�:
���H&�E�壇�hָ�^�Q���]"KŊ�Y��G����e��.jٸI�Z�T�t��f�c
��p�:7�ݽ�޴Ua37��o�6]:4?7y���+��EA�ݠO�6]:»�Ҍm�پ(3$��4m�YL�����޺$��<}�z�N�����(1m�T��nKO���֯��-kz�#D62d/���E{�:�&�Uƫ?~��:cI��5�ʘ>վ�@��[�"�K�/UB�y��5O���z�	AR��	��о�V�`�UKG��:<<��ϟu$,�H2�4E*�}ժ1�V�f�1b�=B(ʣ3������o��Y��d�{���uЁ��W
kɢ]�R�/��zeq��qc+��;p��@R=���R	�ޥE��-�ㄅ�w�6L�,QŸ�~?s�1�3`ܒe@{�v���kZ˒�IeQD8�p6�80Ȱ&�ȉ�}���K�Hy�΄e|,�p��}�[��	��Q�
�7�ٛ�o�S���9B�*�Z�
��%�fO��z�>&��8J�G�!���I#�?��հ�MV�~(#�M��:p�����)ѫ=I�"��&ɇ`�b�}���-�*�
�ෆy>���tɂh~IpѲ̓�۲�8�7tWsI���_.��`�yR�U�x��&�틗m��걡�F?y!t�*R�݁�3�[1
�Z�;9x�
�Ӿc��d{�7oݧ�$�rz��r���B߼V�eӢ�z�V���>�"W�j�JZ�\�2E�=u�aa����`�ZWN���'�i�W+V���~��ǫv�}z���]�j�	ӥM1m� 5������D���6�i��
P���2(#�k-�/ٞ�P��O�s|� M9ą'AA=�4l۪��N�~cu��؏�2<�-,S���C����4x�,���d�l�D��*�?|L�^�:s��j�u�|Ej>z�Tm��N���(?��9Gy���j��M��`����_~�|GK��pͬ9�_��Wm�i�^N�<q�b@*�w��]:6%��5�FS��L� Xt?�4�_F�e��j)q��6w�i6H���Z��$�ٚ� ,�
�E鉐�?�BɷZ��'��Uq�؅5Aab���=�m *��EI0N�M�����j��Ë��{@��s��D���#�ɕeˆH���l����r�sg2W��=p�)�"��ؐ��رBb�
A��c���~E:r�i�>�m[�2���?}N�Ao��h4>�u�dR�^�|�9��Ä�}�WVݼy������t�ƽO��4��!�X�P�E�z���c#�vk	����}���F4R�;��x�;�t��Ǐ7lԌ���4N
kWL/\P�����'�߽���g��'}�T9�e@�4Q���b��p�ZfƜ�޿�˽x��꽈���2e�C��Z���3�%zӷW��*�T	�w:q���W�ݰ�dL�*g���e/W���^w�>,L��Q�-=������D�$B��]j,wl��=�2��0w��G����������޿y��훏3�-K����˓)w���]��<�	��Q���@<s���}�NUB��˝k��'�{��`u��/�o9T&��#}G?�W�X�F볮ZP� ���n���D��
�L���%���$���<|��nܸ�F�T)��N�qi4��N���d�T�'���ڴz��Goܔ�WHi�4���� ��C�X!Ҁ����C���b*hT��h�HcS���r��iB�	��OQ�dk02�݈�?�`�t�Q���Rx!H\�qh��@���ÁA���� %�߽�`e���xRF�[u��S`���k"�=�ŋ�]�trd��`#��V�D�y4�.Q������fQ��l޶�u{��׮�S�J�or��mǯ[և"��q����;��H��?9�!a:e€�*���b��
�����t|rj	nÃw�h��j����\T`���=^�ǂ�[Ȕ!��3<�tW�
]����e�&]^���w�=J�2)(أ@�2
oܺG�7�[y˜�d{�t�<rF�\��H�q�}�#w/O�6����zx+Tm�ef>�R�G�!�׬�ӣ���R��GJ5�+Wo���ʎ�R:���8s|㟉~W4�"4���/�b�IS��4O��$.��[����J����aؼ.4��=sf�2�$��A�h�4�AA�L@���!��?�)q�M�E_J�	�(kPE�8����;4m��[l�@B�/J!%O�����Ɓ�@��N��A?tB�D��ڷՃ�e�|/^��A���o�SFP��t}��W(��P��9���N(8O�f�G�ڽ��C6�w�|ѡ#�Ϛ��W�D���v戓�.;�)�[��x�9�W
W"!̝5�r��<�t��=�e�āujA$/��q��m��[{��*�y�4x��?�,���酛��50��!g�;g�u+��~���s������-�s@��׬�3Q����(VۣS$J��9�^���WYrkg!�9~�A��_>3��;�V��(Hm�x�SDZ��)��;h!Q�_/�T�լ#�жa�".��i4l���E�}��fH��VT�.�{�2��oҢ�}�͏��Y	(:t�a � ���6�K����F��=m&�2c���U�[O1y��q�,戚h�Q�Ʊ��L���4+�	���iB(�q�hFz������8��z��
4$��aB(����8���,��oVp�$`��8�1�p`P�ꗢ�㻇�1Ճ��� e���E%���7.���T�K���>~Tш��p����bk ٺZ��C�����Ծq�ު�ga���]z�@G�6
����qu��L�C|��bel}��ǻu�iy4�k�Вq`��	%�ʄ^�{���5c�,�\���
j�:bh�d`@C�¥�>z���$] �D���+}�M��[�e�b�X�P�%�GF��Ү����4�%�Q���G��f��q�^`�&%�޾��|1oܲ]���zt�pP�V-U��UY$\�5�z��_���<~qK�s<+ Z��Z~�M��lC���q�M�f۴�V�(�B���oT��nڲ�]�H
n 6��M�8����*N��T����v
��o/`Dݶ�@�v��%-._<1g�L�H�'͛4H�^8gLY��h��w�%�6;���
�RZ��ݍ�#�E�V*&.~���i6H�AK�D�D��?{��D�E�$�J�M����"J�E��.Uz��{��;��
*���H�K�ew���e��$;�&a7��kf2�Lf^���{�5["��=IF
�rJ�6�%)B��H�HÃ��Q�pKȴ�:g����Q�ZqPBAH@�Q���OU�CH͐݃Zp�=�b܃|�UO!�H�j14�0�Y���Z�C������?���GP�r3:筿kJO1cΊ������E�)�=���~�"_�\?ח�{���?`p^�&��*mv��K��Z�+[O�y��R%>�[h��ہ�+�ܐ�=�n[���v���-{]Fuޠ��KrY �<q�����b������k$��܁��ժ��7C���A�o���:B�i��6�����jϞ�hܼ��H:A�uǍ�YA>j�܅k<����|L�Y�|�x@�~��/\�;x�O?�	7���hK@�Ш�6@�� ���'[5�*�9
�R��-��~�K�o0DGD*�X�tr�r%�;�l��_�Eu�
�@�"<��r��z�NT\\|a*A�ݓ�
pU��S����UK'|�Yq�|E�N��<���Ӆ�&���;q��p�MN���)�j��x�b�Z�ZƩ����2�|K�
*��i/�}g���Ej�௮���&.+�ꗪwu^�5������D��!1f{��x�p����
���k޾}�H���V�t
	
�`(�ԡ��A]��B�w�V}��1�9�G�6��rB��ç-^�-wӹ7n�.Vқ_�.�;O��h)T�3���J�]�R��e�����Ҷ�@#E�t�"�C���~΋�q��ꕺwnZ�m�R����n9v6�J�ɛ���7�r^����S�]|�s��� �uk��:�_R�P�B�u�2�L͚��ݽM����u�q݆]�&��.��pE��6��	�:�#��l�Z'���s�WUk�޽��4��wb�L^�n��u��H!{V��n��֫������O5m��J�����5T�Fӥ1Iǜ#��ڹ����+k�(�GO6n�q%U7ڡ�l�n>[��w;�k�1]e`���O8}�'Ϝ8�۩���J8�l�@�|Ӛ��d�A��=O����Aؠ� �9,�ʩ��=�)�
2z��=H���������\e������A�30�ds毨q&C9~�#p41Nr��$��k따���6�U�y=|P�;�%?)]���kT���Y�Q�n�߫[�>��KW<I�|%�H���7kR�����}�νǻthԯwk��i�G�رy~q=хc?�Z���[,��K�R�R�J�aܽ�`��#��9���UO�R��{�>�uKS�� xS8�[�,��F��K�â�pԋ��m�qp��
O� e�T
�v����}-��?�;f��nw��9�)\{〱�vk�f5Ǎr��(�z_��9AtT�W-�����J��p�n��.Y��
�G�r�h�E
i
�A�_���~1��v�7u/cc�N�:�É?~�����^O�9��B��1���ڧ��<q�z��qڀ�K8iȀv];�	�+m�$b˜~͛�V�I�M�P/Aw���c'���9{0]Z�+`ي�'�&�'w��U>/]򣒟~��Fp��k�ob�˩�'��U{��2{��}筂��;|V����
;m�ږfKI!ư%$�<��N�@��{��J6�qN`�W�C2Nk���I|���w�bq�������c]�(c0�.턐l�E�LQ{�	�?��]���?09>��(2��t�
�La��I���&���#�om�"SS��0^��`f�C�\>��ұN���2g͒)K��ٲfΜ9#�`���c��<��ot�水4)�a�̙ҧK�6:���?O��;͗x>�A]x�
�U�h�̱&á$�(��*AhK+���sdϒ/_���_<}�����ݺs��/��I�&�C�4р��_D8��w��v�����ܼ��*��"{��*����&'	�h�h���0^
�3`�QQL��Țؗ�OOY���;`K�&:
*�����{�n߿��ţG�Ue9�w�ILPD7����A�<�8���$%�$0�E��|�d��N-a�
�Qk���7+�3$	j�`�PV��W8�Y�[�/�n	��nN�����.�>�*pň�{=��(��|@�T����8an��o�R*!m��.�_�����J�E��`��d�Ek�:�P�F���LW�KCH
�
Gi!��⿮�2�UUUȣ���`6��:�Ǫ&h*�(��bD���#ٳA��
�Ydy�^KprAD� D�|%YO����7X�d#�JQA���g��
� �
�qB
�x,�i2G�=B{�+M�!͑�.F0e�w��H�,qǠ�9@O�.���Q�f�����G��D3'(�d��c9��(��d!��5)	6��
�
�T�V*Iv���r �f�%Z�e&�$��9!T:�i_����#���h�^O$:�Ic�X�
�]�/e�S���״�Չ,z��{�Y��SIUu W^Y�.��r�"��,�˲hR$�|e�ApBh�	9�$�/U��ЦY0:8�ϋ�	�Uʹ������!L\�o���g��?�ew��E>%u	ݜa�1/���J�>`�l�!���N(�[�f�f�(;�L �#y�9k��j8�F0�<B	��Wh~�4_��#_a���Xl�^O���Ux�|!!��<:�X� s�&s��7&�7�Pu�e�R��8�T�{8
F�ȍ�H�k���'���+�͇5�͑��A��f��v�"���q��h,TŒ�PF2�$�$��5�Tr��%dž��p�QDT������ΨN�3�M�����¹ɓ����!��0�B�K6JI�(�80P�ʢR�/S��%�Q�� �N�A���8�Tfs�+�QL�tf���:PG�E�F,���^$su�R�<%4�Tҕ́�����"x��=3�O�u�*m�2��A`�J�j�N8��c��+J�ݣ'B��#7���N�;���BH'p&��ʩȡ֭K�	�5f08��0�i$��x��I�����x��hA�U�
��9Ձ�*@Ǡ=^�
�mvb �U^ �B���H�4�(5���"o�"`5T��($�"	a&��a�#!���1��w<�\I�D�z�qշa�O��!�] ��9�&o�r�b�O��l�+!j��Z��O���8G܅�.��P��[ X(H]�G��w�cƐY�݁�n<T��t�^��E�x����
R`-T�@T�Wyg�BAXF� qƍrΑ��ĥrQݰO�g�
(i<��@����G(�itL^�٠N:Y�.S��� �{������B�$�Y|z)�!Bh�=R�L&0<KXJF��D.A䜫��Bh����)`�VJ�'5΅!$�Y�Et�A����Y�1�ҬES�Z��ƞ���3�ë�4
�8j��9�UQ7�H���F�v��)�@�9� �N���;���P�-�!Ld�m�.EH��Ʊ}�̤�1�\�M��(�J�"l�0A���|]yRF��3�_�E�*�5�=hr����Hvk��uCg/���Hxm+��
�D{�$AC�̊�����5;�d<&�Pe.J�$�%P�ũu.!9@b9�7�:�BJ�=��iYM��؈
h�Z]�]�"pT>%�>�/�3�N@� �<�X���
x���	C��D��g@8� Rr+V�l~p�hqP@� c$��Wr�
a�"���x�1<7B��G�{B��dhNh���Ɛ��pϛµʮdV�1f���*9�?h�P��:�lQ8p�g$���	ߌ�
��A�BF�F3���!L�sa�~�WU���,��}��(��,.ۥ[�<qH�5�P�.�#pT�40�7�4��$����Y�t��0'4/�ژ��J�EY\ؐ�^1+�2[�@��D3��y��A�����)��Q0k�B�d`҄��&��7�VE_e��D�!,(ϛ��cv)��:�iT'!�I�
����e�!t�_�XA�!pV�S�O	!���09��Kͅ!�V�o�=�U�8	*3�=(��j4
>I��;)�pH���A�r�	�G�������!�F��w2�r�����,R�q�,%��+)�U�u��jH�K�?7�A��8�0�L�=�l�?����I�u_$gV��� �:\8Q�O��p��,����jN&76�k���0���q+\���0��
M� ݱD�،jE�F�/46�ׁ�!�\��V�Aj�0�V��U�y��yT�Q����ѐ�(B3�-4��mj2 ��f:�EU��R�:d��bj��`�'R��P}P7�3)��.���� md� `P�P�QpU`��|P��5�k<�z%x��鄙u��{��N����$�S�����q�h2+ؔ!],��'�"����Ô�G�@|h.!����V_JXX�Uۯ]����ZEp��]\�L�Z�M��<-�H?a�G	��`��2fLy�ȳ�ZӡI�5$�x(9Y�5qǵ����{��m�1`l9dPPe�fܟO�EIX0V�8���Qi��L6:����V֫�+d��8I�OO�)E���&�8����h墀dKlxT
�`�f���R�
��1l��Q�BE	˿:�B0G+g��2�����ZJ)�X��T�5]H��C4͊M	�8�
s���Z��2�F�_�Mޚo)PWV��#�m0�ƭ1���֒�	�%=%�:�-�Q�f}:e 4���IT�����{��h6l����S
L��#R��1��&���Z
���b������4��|���]�r2��_��|�+�H	Ir6�~�6^z�!�a~���P��*C���)1@���RM��N��Đ�I4a�}�����aݚ�����a���mr`���V1�c�O���y�.��~��	!h�k�]�Z�� ح>7��0��.pz�? �A�n�}(:�����?��(t&p�={�W`���0�G��k�z�_$�n�'��4�W���&��A�V����3>\?TY>06*���)�.I&�9���A,ca$���U��F�B���M)�Br2�z+�[PwՉ�׃�;r��|`t�"�!�}ƉKSد�nIzQ� TC^���pN08������P����ȯH��K�0w_��F���}8����18W
B3���E�{Б�*����A��dC�!@uhK4`�o�³fm��$�:��;J�PN�˔p�2Ŭ���v��K$
ЊC��'Ap�ͷY���B�&��(ZDH� �4u�xXĕ�X���0D9h��l�資��¡d���1�>-Z�	�$X>,�B�<eI�UheX�Q���~��1AH�!���|���|W�dϿ-�~�q(p4)���c�y���`�-�r���}eM���Ě�B��A�S������E�$�����Q謳%9��e˔<���P
�s3���
$!t�Dk���#�k�ϑ,m��
��E��]���n�0Iuz�"\�0NbaSI��U�:��/���\���F:� Q�6*��8^��I����<'�?L��|1�:��\�XE�x
N���\�K&����p>8�;��|���C6��{�o���^{��h��`n�%t���A���-b({0Q���h�g���~	����^H���8HH68y��cP��)��U�_��Wmɻ�dr� ���	ic��I++���(�cD�M`Y�͚�����y>\����C�>4j����*�c�+�����GX�5��k�hH�0*BYpAb��5�L0�P�N����+�3�
Pk�O�/
�)�K�U^Z��	�w�X�93o�q�۬���}�����6���9�B!3�����.G�y���B�*z��MT�$�euW��Q�{N�_�D�%Ć�^�!Jf�p���T���%�؜*�S�6�"W����n�r����o�&K��LjJ�]E8����t_��	��p117y�0�+�%R$N���
�e[r��Ę�谥�-�rz��`��`�έ�+�
K���( Ю����/+�FFn]e9���"pԭc0H�B3����0m�A�=�GL���3�(|��š,�&��0���/�tZ��ho%,I��w��U�(#����-�!�:�z/��=�}
A�IR�a�	GB������Y���SX�K��A;��'XCl���I��é�ȿ羷�v�x��)H��z�`�T�A���f��^-��DQ���~�:���j}�o
�M�P.!/P�z�wPg�I���7��m0p����|r�oh�D֤�`%z�,$��ږ|�k����l����6P�I���K@�0~
X�@W�ʊ�"E}�&�;�0i�������[��"+=�۷�h�(�J��dE��g��[,��1��:�n��AŐ��f���i�Br@���Y�.#J�4`P�\�\r���T�pP�S>R�� h�@����������
׃M�(-�^gjrb�f@_���<j�Z��D��*B����`v��C��t�|Vx6x�K��E]�o�^`AVߡG.z�a�4w�Ф	�u��� @��D�,HE�͔��!��F�h��o{����)D�ݛ��V�#\pB*�3����B:D�\�v�����y%��z �P�ۣ���0��x9r�T �(@�)&E�2����CA&�\
W�`��I&�,�6X�lr�Z�U��I�w��AՂ�C�@~
�P!��EQ
�	�S����2\F4�
wh��=R�`Qj�G����{@7p4)��y��8�U�������W��!�� KzJ����RN���!3�qԨW�XsOQ�t���	޾�)p�-�o��Ό��u2!K�@t
{���h�9a���%q���_�j���EW��m}8�z�	�2�9�Q
�����/:@�%F�m�8'wκ���G45Z�Kɂ^�.tG��1����x��S"B3�Oa��%�=�3'$����1����A�6�֞V����~��y�
�x3��+X����*{�e�H�GiyO�/[�D�#a���<�-z�2C0�	%Z��*����zf�D	�
	.]�۷��	��)٠d|���E&���P3�3s	{8#*n�!��"_!!$��r^lcP�&�ؤ�74%D��"d�
k���Z��a�I��X.��#β*Pa⥑1D?p��'����}(.�[�#�R~�dN�����nt�	F:/0!�a����Ex8�
�Z�����W��n�7�gi+XO���>�7����$��+i���.6�keH�:��M�)��B`�„��9a�VZ�n�d
�&
�܃�z�A�.8�ؠ�sؔ�ȭ�!B8@9YM�%�ݬ���ۄ�h3���$���D`�D�f	���퐢�};��=�d�0{0��!�-n����2h�/��%�8�I`��R��4U�K���8�+�\���*0օV�6
�q��J�a�������
�L�H?)z�M�0�>Bs!������ [t�g�_��MHJ9��=�K�h՜�8���+��s�"d102�!8��Q��lXq��/B���f]�f�q?�n�(A�R�̀�,FχKJ9%�.z%1�
��(�W��hrt�8J�!x\R�O6h��^�=���<��C?&m�q$	c0jTy%&�*���WMLEG�E�$),�9�
!ͅhJJ6������S/�UH=K�>�$4k�����)U��0+eʽI`!ipS�I.�h�F�a����P��@�S�Cצ�L����I�w��ФI ���� t�ʽȀ�~Ё���r0;@i�{A�\T��Y�(.q�ʜqj扶`n�5�f�db�-��'�"Qi�]�&�'��aa$prG;������̅u�Bѡ�k��	 z"�^��*FF�33ԁT;	m�,/�!���R\T�>Tj�����IME�$q��`�z�KEo#��#p�U�IN	��rE�`�vC
�&s�JE&u91B3��諾��t��6{0�ژn�%�Ө�*�R��2bH&	⽺���
u�T0(sÒ�=`<pԕc1Ho���Ѱ����W!0��5�����\�T�P��Hv��P�zqN����4��!q�]QՃehg��_�KU�
ޱ�UWEc7R-
ޟ�l��f8�x����_�v���MK"kOn��GG��|�r��5**22""::r��i�~�Ջ_�Y�d�8�odddTTxtT��w�އ�O�&�E������_[���4<94	��˲6>Id�m�=(Ifoe�'􉙜F�5S>I����t��=��Q�C�U�Z���c�qݬ��*G���/�`)��D�B/�-<b�2�#�-B�2^�Aɕ���'�� �
֔���/�
��+J2t3��#���R�}f�py(�1^�y��eǑ��ߌ���#��yrg߲~�2b���
~�l6g˚1S��qqq>y�v�c邱E�)�_���`���C3����v�,ӌ�u�
��M"\��4@�C����>���,^�+z�&׹�J�:�/�X�,
����=#������%�TB'��|��~�!��=����G>Hg2�KaiK8=�#��oU��%ƍ�Vllܵ뷮^�����8n����
��D��qq���'bS��R�C�9�ܛ�:�o�Yp���d�s����3)'�E��ٷmt���:�����IռI�O����7
�L8..���Eև�_ƌ��\LX�qϤiK�
M���V��Λa��jT�L����}�P:��T��~��p8B<��kM�H�=�D�L<o�R8�6��?W��(4D�1���ςKIA�z	u��$B9�y&U2_~U
>�P\T1sh��x��eX�}�l�5��QraU���V�L�c�$zسg/f�_�y�~�|i���y�9�p]�Pg�Ig��@���b�i�n�f�+�L ����̹��P9sdݾi��;`④?�9����=�gڴ:�`
�,������=�
�DP{C3���r���-�P�4��Yϣ���\�Ԏ݇|I&�g�R0���}����?�<���!�:L�R֕y�],�O���ZZ�x�� 
�䐭H5$��_�`��}��aɎ���]I��6�A
Oa�m���*�J�hXG�E��Q�!ƌm��emQ�mVI� e��݃�`��������`��Ȭ�0F�)��om��J�2���#EQjվ���|��9��cCDw��*C�*0mo���҉d��׃�8�ORN��ٳ��<�l��3N�:8������p'����-�N��
����	�Ԯ��M����{)r���
�d��֮Үu��i�o߉6j���O�Eb��z�o�v(�v!z�g/&M[���ped6��X���^�W����\P{��!D���$��o#�?!�`�Bo�B좨;�+Gh��d��9�G�K����`�0V��E�$�E.^J4{PbE[��,���lɃ��
j1�6��y�,�|T�2��E1J|Rt��dsϾc��>��Q�,?(�v��e��u�A�^��Q�Bw�VG�I�nZ�Gx�P���&�͖m���ϖ-�-��f�^�N������/��[���C�O��]��W��}-O�s�ޣ�F�L��C3���{Y���j�'wvz��k��؜��֭]�_��9v���G����-���WX�G7pf����>Z\���V#y��_;�
��6�Έ��Ä0x��@~:M�lK�6�PB��ڣX���01�K����h�E�Yrhv��*�9�+�y�afE�$���r�	�S�5:l��,�ޜ�C�f�o�=�T�,S���q
�a��#O��/ ����͛��-$Ɩ�,�B��]�|2�l֪υ�W�rB]d˚i��d�S�῞>�{��3o�p�9}��Ukv�M��V���Wu��غc��Ŀ8�M�&����ʜ)þ��N*�ٜ���rf˗7wll��;1�~��j��dz�y_˕;W��^��ߕ����%2���Y��˓?o�,Y2ݹs&��Qg���{ٮu����m���v޿�P��,�#{�ܹ��˛�l6ݽ�����ލў��5o�B�2.���^�X��366�N��FbG�=�a�ָW���	G��(`K�D\:���SB�BL���L�'%]�J �	AY�#� D��ۊL��E�{5����P�	��$�"Xg�T��:���X砩,*r�-��8���r�"՗�@�#(V�����t�aѷ��A6{�{����������o]k�DD��ϛ��gw�L7-�A\0n��^�C76����Wnk�ș	�)\0�k7n�|�c4�}-'��w��$jR�x-OQ�o�����>z�P��
<Ͻ�'��l�r��ݮ�L�(N)#dKxA��,\�����!2���ŋ����+�8Ee4�y��Mݏ��
(GTTԕ�7:��DG�˗|��j�Ee�v�ǟ�a�
�W��G�Y�zkO���+��si�D�ɓ���=I҉.]��O����w##�T�T=�1�3elռV���ۡ��g�b�e+�螹Z���h�*�+-Y�y�
����@kݲ^�V�x%�HH��7�S��5ѽK˦��$��
�]�k��Ϟ�P	zP�Z���%sFz?h��99~�OZ�&
,�IQ�z��u�ց~��!�K���2|��_�^��p�7�\�c�:�+�%�}���I=A���A]�O\�]��(���q�Riƻ����P��2$@�+#��۷$�q@�����p���-*��O�BF=�(Dp��s0Bm�(����{�	�=Ly��K�	y+�(0.?{���8X�@�#'���w�\<o������zwoݸA5�9|��{!X���޹��Ϟ-3��2.���/Ξ���s:���[�f�K~�3GV�i���F����\�ز_�mT���9sd�pnݾw�S��Q�QԮQ�~��Q���Q�/_o�e(��&
�l֨z��i���w͆����Ǘ*�Q�FՋ}Xo~���Yk��<���H�fM�%s�4i������>t�7
�kߺ��}� L�g�c1�Q���]�B�L���y�b�5[��5ӫU.ӼI��s�PY�p�M[l�qPr��-Qo���O���EGEDF�W����eK�iU���a6�}���K�o��l��v�ԴP�|QQ�w�6�z���N`^ݾQ��y�,����ٹ��kw�R�7��߭K�…�R���}�t�jߦa���f����pY�H�X����-�q�^�p!�c�{s��Q�?���3�9�=�ҥ�۳͇E�����Sg��^~���gS�7~Q�L���-�/�<�e��ߣK˚���3����f9�{�2�]}����z������h����#rUؾ�q�h#@gwp����EE�GFDܼu�Ek��Ԥq�>+U�n�qП��Q{w��a�/�kМ�oڽd�f�èX�d�N��0��.��z}���-�������;M3eL�w�"�z��m��¯���5|pW�v@���A��w����|��
�d�z��K7&M_y��۬�f7u€̙3�>���Ӻ���q��uD�����-����I�h��B��K�R1`�եgHv<�#Ǡ
�K�{
��̲�����TNY��l��X"�'����T�ES�l��0��0����x:��/�X���lOu�*�2�|���� �I�:��`NE[�D���"o,�?�lj#B��ڬ�su���VA�|�Ǎ�Y�@^ݓ�2g�:z0�Ə�]0�kڃ��\�\̠�Q8vd�w�yC���1�D�خq�Vu���<?f�±#{h�e��k���������z��q���:&c�9�sVt��v��ٳt��L�iįA�^�4N��/w��s.]�pWz�����R�R��\y�oƀk���}k�$�^�f�^�ZU(_R���N���{4��l2uhרy���nn�U�˭�w��2�;݄�����[�Q���>��jY�M�z*7�
-��v��[��O��-�����/I��~<��lΚ�z����O.1fxO7d!�Z������7rh�h�@��ū{�}O�̕3�]\�a��B���P�BS�	nڱ���ss����mܕ�Ӧeݯ�5v��
��N����3vd�
e?u�����n��j'n4�����I��utJ�Y���Ų\�wGN�<�q�*�J���~�M�q�~�����%���,/�Q�&W�мu���qΠ����<��r�l����9�n�(K�9s�����[E���nХW��J��������O�r
�6n�eϮ-ɻ=�����o�u�<96���W�N���S�a�����eMd�W�'@�+u���h��>p4h-F�݃&s�6R�H0x�.�A����D0&��١��'*�^B�tRG�u��i	a ���2�$%A�!��,#B�1�ZjؕXA0 .ʈ&��&u�L��+@���[��a�:c=V�V���~�/�pA:���&�k����rL_��H"BӦ�ںav:�kL����6�0J�s�\]��s�Z����5�':'¥�7���r��N<�1լߙx�ڵ�ߡMC��ŋ�f�	;�T���|�t/`ÖC�f;�۾m3�$_��a#��s���R�i�k�o�=S'��1��>}^�u'�^�a��Y+qi��}c�4'_rs
�G����۫m��U�oy�� �*����c�&F����թL6�={q�N���Vy���}8EJ;�m�+g0����<,X�5�iҲ��K�u/�����q��nںoͺ]�4ye�m�<��lN��t����^5mT�G�V�!��v�����.�=��4��~��<�r��L�
�6����O�-M�7a�D��]�g�_������F����ů�������
��:5+�ށͦT�&�m�K�f��9���w�}.{��t{��iܕ�UXsr��_�x�ν�Ocs��NH��FU�Ag��Lh-���̖U�ׁ�U{�5�w�p�w����gزnV֬��f�N��aI�%�s�dy{���j^߾}�ǓgΞ��.}ں�*�˛�F�;x3��{�;��'4n��x�V�@�d��Q�zk�;͟/��UӜ??�Q�,:}�j��o�/&&�n�C����rᷮ^�٨y/L&��[��M�`�R�p�Oo��ei�V��%>��e�4������ň�{R�H��a���$�=�p8�ED��Y�H�/�MCH0@��o;���j�`mVm!�bv[���}u	DF�%�b@�L���`X7�"Kכ@�%H�sQ���"���6��ܧ�A�~V����a%	���+��(A���怍���F�w�̙#��3qd#��?ε��T����5+��W���3`&?�j�ԯ#��ꍆ��P.ڏ��k�N�Q�H!@�6o�?v�B���ʲ��n�k��!o)]��)�%Mbڬ���į[5����&�����/\ɕ3+I1"���_�޺S�L�lY���W�tI6wn��)c:��2.�����ݏ�X����]�y��?�1�͕*�����GL߻_�_�+|�1l�L�
�Թ3�]�Y?���"o�?s �-w�=8��_�
�V���<g��7{�b����?h
v��âs�*��ѣ��OL��d��=�!1k�����9�T�����WOÿP�C���+t,�M���Kҍ��A�W��Ǹ@��{uo��)�ұ~]�z�ٿ��~��7��c��ߺ� 这3eȔ1��g�O�Ēe�…�Λ1�b�oԐQ�VDMh����U�?u���3>zȱR�.-9���a�0H�U�l�`�/�Z�=n�4�
���n����B<|\�f;���]Z~Y��Q��~����&X��UhF��{vm٤��7y�ydE��Ic�Ƶs��ce�ؼ��?,��:	�.W���A]q~#��i�Ơǥ2�?�8�/���xe�?Zv\�јZ|ղN�vr�ܳ�ذ�3@#C
���^�&ćI�b|�˗
_�q8'�	mo����k-���ұ9~}��C���~�	�:0b��]T�{��ٷnp&�2�{��o�1��'�
���p#�{�]E@��7m�(1ɾ޲���I��A·��=W��	�>
F��3� ��Vy_}��|8*;�?�7�!$�:B�qf�ˬ:F���'��J'Y���n:`j���tIS0nۭ�)�h�ܦy�*TX$�ο0T�^��a��R�����A����Ud���(�V&�]���׀�l\�\2o���X�Ӯ�����-�~{�?9���;��-�_�q��tB����y[N^*S�yll\�l�7��Aw[�7i!�z�}��.^�����&�M�	�s��Ct��E9���K-��.��Mjt����ZmSg.۸e?�,�y�	�����k�:��e��o��}��[��3Toۺ�Y�d�����ͼz��$I��L�4��b�#�n�3c�
��/o�Mk����.\�x�f�|���[��$���I6ouVTo�U���ʙfCG�;t���o�[2�I��8>v�|���1c:p��O��4��+&��q�MΠ��P�+��>�|�8�.�~�^T�Vv����9rz��|LWWu���dS7S� �d���џG���b����ZB������1	���r�Q����ϙ#�ܾ��i���_���S��Y�A�變�Um��-�d�[wk7�^4m�% �����yY��lP�j���O����翬V�OO�x�eݯ�#�d�`�|��Ά}��3ݨ����_��E�����f�+ћ$I2Mt�x��k�4뮺��5*���$�KOyD;�̚6�����Q�f=W/�����լ�1>ޥ�jۆ�9sfï��%k��o�)�	qq	Ǐ�6s��;wd�&h��)w��W�_a�0���6I^���_�����S�.hl��� ٌ���DQ6j��a��Yvlr���ȱs��4m��g'�@p�u�|���s`U�5rX�ʎH�g�^�i�e����|����Mz�x�i�þ ����=�c_VpY�4<"�<�DEX�0�$p8j�7X�F%CǠfɀ�?ɚ��m
!�"1B\}l�:!���,,@�ai(n����7�A��}hG*�$ZD!�x�̬�)T7%;�L t?�K�HVIլP�+t���A!�@IΨ�~������xWHH�v�6�Ͽ.�=��hݨ�,6s���J?~�7���cW�v�}�R�zU��d՚��%?-:�a���\������7s� �.��j���^�d���Ͽw��\�7��w-N�=a��?�w�V,9�[����T��P&�WȎ]�o������6�ÿkT/7�'�֋/?�܂�	+����L�,ٰd�nв?*�Ƭ������c+WoC�.�t-]�sѲ�t޾�l�0rL�2��L׷L���C����ރ�G�dʘ~��Ed�sD��|�rm\-�X`FW�ц�+�̞>�޵���ѳݿә�V�A�n�#�f����|�c�
_T��{������
�T�$L��IG���"J���a]ʔ�u&)j�i	��5�_�
���lY�f�x�뗏#��R囀������W��h��]� @IS��֝�
��9�AD}˺Y���2���58
wێC�'��~�Ġ�i�20p:/�U�8u��{U1�L�v,�:@�q.�h�ܹ�m\3��\�~�p�;g�n��@hYWO�k�I�O��BA`�X�O�^
�i�	S�N>��-��R����݇��2gʰg��U�lC�%���U-?t@��7����,�`OȘ1<#M߇Y�֭��\��I�/G��h$�4{VVjz�*QY�<F�X�ibq��A�n����R!���`"��cP��w�D1ʳ!Y��E�	ݷ*p�ҁ<�ĵ+�g%�bq�Rb囙�>gsj�2�R�I.��*��[����\9�o�8�1O����c�y��ؑ�+�KD��[��?�<өC��-�xQ�.�E�/� S#`L�j�0��	{x�2�Y͑G�M��S��yC�,��1nѾ�?A%Q�.��)DDV>zZ��6(�7���W�ϝ++~BF6���+���9�$�1#zVrH��_�e9�S��C�+B]a��Sf�0<`q�^�d�*BصS�Mk��{�22�b�;g�Lޠ�Iy��	@��i�^B6K�k��>����Ì\۱~��o<]����7��Ui~�LEW��oӲ^��մɟ�.���eᄇ�-O�����o�ϧu�-k~�yߞ2K�O�6o;���8�]�l��<�+T��.�c���{����C�xQhBx��͆�ܩ�n�p�(�N?rL�������k/ש�޿O�:5+��e*5{�2���oϟ)G3�R�X,]0��ۅ��j��ԡI��uT;/�{�E�>n���J��,a������;WvZ���݇��KHP�f@a�jME҂��k���ua���֪ԻG���͛w��p����
h9��]N6+��t�6m�C{�$v��y��:�$�iê�+J)2���o�f���r84�B���H&�&Q���`���P\T]��}e�\.G�5���pz��W]1%?�-!��͛"8��A
&���5���5��1�;\[��\�F!Ifю	!�э4�Ζ!p�F	!3	��Ϣt�7$F�쓷%N����-l�Ζ5�n*�PoX�d�j��9#��������!�;ը.�Vʓ(nZ�k�f���7�Y��$I�H��i����
��~�Z4�*x0l�}�9���9����Ֆ�,�oX9�ďBȠ���>����Z�E1�Ic�����_�m6kT�S���`!��\92nZ�>U���[7r���cc`�X劥F
�w�<xT�f{��0�p�������)��?zo�t9��j��,����<�.�9SƆ��ԯ[U%�3m���d?���Į�'�����ϛk�ę���C���g��[����
��zZ��Q‹��5i���#y;�7�'�2.�A�N�l�wm���c&��I
�S5ߡO�E, c�d�u�g��IŜ8Fn����Ԭ3~]
<��a���T�Ͷn��s��D0hy���W�8	�ـ.\�R�����#����;%e5%0��Z�χ
�B����`�v�#.S����Kk��x���s��J����ː/]Û����p&=�B]��א��	S�����1�L����/��!3�IQ�CB��`"#�X�4��zr`*��H-;��Q`^x��,F�B-�v���i.kN��#�`�n��W�CB�+��&���z�U��|�5��?�
��2�p1�LH/
QpU&��Q�
E�&r0�̓�_���J�KB萜qU�Bb%���\��~ۯ�	�o���n��)�N!"�b��6���9eЧ����w�n`��
��Y�?����\�o��nժ|������~���i�Ћ��7n�[u��AԹ�H�eB�pbBL�#qm�
+�_�a3�tyt���j��L�Z�|2��	!h(ŋ�9u�,�����5ں�3�f�ݰ�uk���M&�Ϟ�^�x
���nu�.�x�2n��O�<��ΟMN�"���v�S�"~�e��� �/��S�C���K)((���tZ��J���?Pj7�y\z��=��	;v�w�t@9�4*����
����V���	c�����۰g�tٷ�g�BN�w���+�g-fv��Qyr����7Id�g��.^�����Y8�����4!<wޥ34�C�U�Xo&X�]{�<��y������:P�p�κ��ߴ�[���S�
���}�O��k�����o��ݡ�P7���b޺a��v�:��]��{e��+�g�$�M�ګT��E��-X�U�as\���ћ8�֬�9m�rF	�ɴq�t������n�G�'}P�}��s,W�
�+��T�h	!U�`���;I��}��1d$�<rΑ���
�0�P�f<Tc�k��xU��^��o1�����)5N�$������0�M8r�f�&�)�o�v��1���iK��M�+H���!9O	�		!]!%����bGE�+����a�ރ^�	�-�t܅,c�Ų�����:����#�۸����d���]jվ?!ַg��j~���6Km��Щ}��-eB��%�Mw?�Q�Z
��a#��
�8�z1D.E��#��[�N"j��L=��_�gOr�(�!�
�g��O:�3�.��P�hJa�a��9�6l�n��?zg�x��^�q��Wt���`���C[�9c%�6����\�jY�z�CcPvY�B�W-s�^�Wi��"c*�@��3��>��4�B%N��g�Ñ5$�|�V�ɢ�.]�C{��̓�8����s�<R��C�1���_��a�QC��2�/]k�[���$�5��]7ޚ�
�U%j���֬������C�Wt���ԳN�vo]��Fl|�CD�ƌ�?-�n�_�ܢ
$�06�ѩU"�{�/̜)9��Q��$��a��=_�s��m;�ɠ�nЏ�tiв���}��1c�Ւ��B��G
�I� �qt���'w�y?���˃7�Wu�J���}�"�,��%u5�t~�S=�~��;���>i�r�˸8�=����""�d5&E�][^���|��|A=�V+^�8tGa.�Uu��>j�GpB+��:%A�y�����95�E����E����E�`($1
��4Q�V���'r	���2���-��T�('�A���� p&?3�����J�ѨE�K�o�ת*�g�X�f�lP�J�^�g�Sg;u�h'�#����<��!�}O�\�V��"0a��>�(/-۩t���<߮�pT`JƮM�2f������g�1�V��%nj�S�b<�J�X�_9��u1��QgT[���$KGjs���C�d��M��As<{�L[��T
X������g�!OF�ܹ�m��������=�ٽ��a�`"h�4Q��s2�:��T�K���xd���9\�G����)��VSN�ӢT����ξv�.�w�ZEJ#,_�m�\�bb��\DDh���t�7���3���Rf�@9�066�I�ޤ0�}��]C.��}ʌeP����}pB��{�Ѭ�S����vSn����~V��1v���G=,t��<~�F�3�k�V/��i9x���,�s��[wP�>�.鬀2wᚥ˷��-Y)����Gi�F�X܅K6,��XbԬ^~�r�<z��>���hB��L��
[4���,�9��`��[�r��;q�Ͽ����8�Y���s�U���Y���n �Y���	�ՔDTB8�u �7}�4WM����<8ѩZ�i��iN��D�q&�E�dطâ��0)�bt�W��aR9Q�Xs-A�)*�S�Z&0t�nG���\:�nl��
ՠOpASr�Fu�ͺ�AX4ɎAл�৆v�"Z
�0�R��(06�A����NB��'?)��g$^b%�y�<u���X�U���0R�t=,g�x?�	޵�S
��[�#�1�{��'�6j��7W��eֳgϲe�"�H�'0�L�ҥ�&ׇ�3��4��{dب഻ٌ6;u�����3l��o�J�7����;}2�Ժ�H����>�Xo#���AY�_T�|�`�B<}��|����6�̝K��R4�5��T(>t�l쾌���B3�'�X<�mG�¥[���	��9��rh�l�rp�l��%���#W�l��	P�@�u+�ڭUk�{��ɬ&��Cr�H�	
���ݍ�w�|=��p�lV�KG���l�/b_j��1���}m���?l�q��[��}�b5�-u����og�^�d����t�+@�>�~��6E�=/:J~�}���v{<��^˓c��Iħ�M��G�눩/�>Q|��Q�^�w�lĨH0O�ϟ�cΖ�"��Ԫh��}�v��i	袂$C�t��c��.�!ٳb���sW�:M/O��	�ɭ~��7ǎ�EB�<�#r+1�{��r0���f�]IV�T,=���F�_W�I�7]���B��Sr���k�		�P�q7�$T��"sٹ>�^�=$u�p��03g�)^\����1��	�	��Z�RC��%��W��lծ\��
����oǘ9u0x�Z(W�6�x��a�����P�G��j�UY�#�˃١w�浿�S��O^�������I�^�tM"@�wt��h�5�$%���B��#�ţ����U�3���{a,I%�K����	AEA�F�A��ۗ�A�[�%�&<���B���@�=>H/H�����NO�#�S4AR��&m�,�h�kM��w�BZ(B'�<�B�r�)��*��[ʊ�;�kK4k���v��m����;߷W�u���		���69����K�&k֌����v�
;v�=
�L�
���� i�#GOޏy&�O����b��7Z�����{+�ԉ��:��O��|�z�0}�f5�:�S_�r�y�aT(sd�<��=~���5�+�1~
�2��I`n3oٵy:��?e��ǰ6)��kר8�_��K�S�ѣ]���oY�t+�9ɰ�w�X���#?�߸���,+d͒��7���\���o����E���*f5u�R%�
G(��v�
&��[�q�'O�լ^�w�Yy"�			�j��_[�b
y��_�X�d��_ʑ=+x�~���V�J+|,��Ic<ں���1ի}N�e1��y?�����P��w������b�O��E�2�	ުۨ+��&s$m�߷��
1�����k��	�.��������,�3dȐ4`��Y4w���^\@��,Xs�s1�e˞=[�L��Z��c&.Ņ���;r�h�A����A�	����uN�Gxb�x�r���ć~u��i2�Ow��u��m����9kr�r/�a�l��>�z
�&�L'�J�;w�=}�'�B�s��##F��`y��G���<߾�`�fׯ�Fz��3w�:T���_5-���ԙ�׮���"�m�[�\�>2�}�,�j�nX��N�r��)*���-��&M4x�i����F��Mjv�$��۷�4�¿W�kռNk�#�����=䥨�Em����{�*~�q��G�.���7���`��@o��כ���z٤����?�[��ָ:h�6���~�!�L���`��'-F솬P�7�!�͉�
hO0bZ��,hr�6�”ٷ�c����e�t^=�Q�#N�TW�������TL`����?��#��r�AN�1I��PoƬu�1�`��.9��8>��G9�Wѵ?���f;B:tJ�j���}��„�|ն�r��رi6q���+]���	�\y��e@Q�[�|
�`��՛�aa�%;ϝ��U�$��}��iN�ݺנErZ�Nv&I����Ԭg��E@J�m���d�߾�3Ӧ���Sg�ް�� $��F��}�SV�#W1���E��X�}Ɯ�h�\;�b���o�ss���;6t�\A�����o���=0g��b����<ݫ�X�֊��Hp�E�T�&�ᏣJG��3P}�lΜ:蓏�g�[���F!|`��ڃ4����i�g��6 ��8������k,�׮���A�rD4J�6��M��v���׮У���7j�ӽ;�kGgE�g�Ű��4}��V*q�E�Z];6s|ϾЉJ����ۚ�:ާ
�V,�����foڪ����O�E��\�R1�4@'bEǏ���1��˖�9�<������g����qe+C�9S�
��ӂ�11�<|�z�|d����'uUe'@�������t�<t�Ā!���|G�)�|_����,[�\���W���� �zS��h�B&��<��9F��f�>#0��s8�ũB2	!D�̤�t���k�>���
e���`��S�7kg/�U�E1�,�=D)Ld�?ۉFh�
2�{�r�=i��BD��5#�Jvɹ��r����+�״�&@��#O��}@�ʥG:��i�vt�Y�B��v©5��פ;�#1Z��ۡ]C��	��kQT�T�_��$ZU��W���7��U�r�fre�1�j5r�JL<{�3�gҴ��6�&�͛8��>��R���~�|�ug�_�l�3/����	��r����˖UV=���O�@��&���޴Y�W��ݞ%>):}���4k��Û�p��`�Ͽ�ѥ�H�V�������M?{����[g�5�3ܲe�8a�w
�����a��L�6z�Ο�*F,�EK7���yR˞�^ u�%�Ih�E\\ E��Ą��"��t
�z�i+��Di�=�Ws*�ٶU}m�:��k���Cݚ�zuu򱚚t5`E����yJ�w�I�p朕+�lǯM&�C��-��f�\q�	S�/ٶ�;�4�QCt&PTx���SSr5���� GүJ�Dc2(�A�d[6��uۆ�٫�ԩkׯ�O��g��KW8�ϥ�I���?>X��I ����s�����߹����#��s�%qe�8��w*u}Ǝ�]��\���M�'Z�CKm	~�W�-F��
2�o��ꄙv���y�ޡ�d�sܹ�A"�8���H���ڷY�lѭ���M7�-A!0R{��˅�Au&���j`��YT�I�j	!�#�	-dX!���3��BAg�f@D�8�����v��??�I�z�Q�V-�H
�_�zs΂��s
��̑uĐ���`�p귿��xj��X�…����7_�i��j��p--Z�9S���[��Tz��Z��7������E�:N1�����k��q1��u�N��g�ۓ�?}�4�-Z�h���iU�c;���ʂ�w.&�'�jI�����کY��_0J\�|���[��DA`�N�̣��r��݀*�F�*�W�X�Ȉ��<?i��''��[�t1@-^��/\�au�y�kռv�6j�~���CGNn�v@�0V�l�/����o�~��k�,‹��w�^�,�[	V�5;�-\�h�֛�,��ǀ'��z���C?.^�	�
�Λ`�oF(~;�6}��Uk�!���	������a=IX#�W'9{����?��dΔ~���W��p��,t�x�b����	�6|�s���F⟟>}~�K�.���]�s@��Ҡ^�<�r���G�oN��pcW�Ndd��
s������:��"�V(Wb���9x@�VnټU]!��B�{ti	�jT���r���9�����=�&N�<>x�3��o�j^G嬖$�#?͙��[��%s����eH0�s�����V�NU��u�ڙX��9uw����1����)0<q��ߴ{���^?�
�$���Ou
(�P���B��D�+yao ���n�d��18-ajY
F�8B*D�Bhj�qp�C�`FN\�+�qB>
����n0���"��	����	R$C�b�G�Ag)ˈZ��/�89�T>)��.�:�rPI�$�(��w�V�����G#**"]�4����<x��#��9�gə#���6��?�ɒ������“��=~�F�Ѯ�&�X-P���[�	!(cP@�j�*����b�-�H��	����Ӏ��鳻�$$�e!	p<p�T!�i�D�����d�ӧK�6m��={��cZ�U��ϗ����[\��9�\��1��Δ1}���h��Hڏ:��EC��*���	�^�tiDQ��y���c�P���ʛ'��K�?~���<,p�A��Ny��W�={�,Y2e=1��BP�\�i/]�A�4��
����GC�s����e͚1W�,���&\�pMu���$�e�˲�1������|�"NU�A*k����
���ɳ�kˍ0�����Ԭ5vέ�lv��{�b�A��z�p�f�'�l���M`����O�3KR�6(�A��G�]�V�Hp��\Շ0H�T5'��c0�`"��I���,*��	x���H���B��F��lHC�E:(bG'�
��+Oc� 28�~N1�K:'�${҃HM�h�Qh�m�n9��l�Da�7��4)��A�=θE���w�.�ͣ�ک�C�cGƠ���W�k6X�&�>a@A��}D��~
��X�*>�M~Q
E��$k�`$�x�t_E�K��!w�l[�;Et���uh	��&���N�	!�N�EX���@_\4R�ߖ���0Bƽ�c0%!L�}�y�,p�@Q_ce$P�_db��J�e�iQ����]���52u�����P���hdf�
T�A���S,+�y	;�aI!��̬�*���8�bH)�_{	���β|��Q�{\[��h���;��-�
�(16k��R��
��E��/1�M12\,.e @�R�YAa�gI??��K&�'�0P06���N˶��s9�K���[�e~9kr�O� �m����& �VhL/��6*�5P�����P<�%,��yB�2B��@hGa����jG�J��4��>����
��K"5Ճ�0��BW\�(lX��zK�9!�c��$?`��9�j`�|1���~�)�d
L�P�O6с� !t���Nf�aQ,� �քīb��'�3(h��d������UOο��@�I��E�a5��q�Mqp��?^/�ښ���*������|/.Rep���痳&��b����JHiFĺ��h�H�1�$I��R)(B,}Ͳj>�G_\�ի`����(���<�$�SQ�+7!Ǡ�9�����1�w+Q{T  ����z<���4� "#Z�"��T���&�S,��#h�p1�C�uG�p�+��6K%���1�X�*k�D*t!�>w��*������x�X���&K$�����$�[�i��hf�0�{p�j��{D�كN�ei�E�7�\2�l��8�O�`���"�7�g�
ҡ��lP>-,
dȒ�� �~����1e4��FBsXZ�GY���N� IHL:B}*d"�P��,��#��I&I�5c))t�@V����!!���BN�0#ڕ�a�#��g�X&i�i�k��e�<�6p�d��Bp�K��ݠ��d�Do���6[�菃1����0u>a_���ŝ>�����Y\��������I�E�
�؊B�!-����Y�\w��$ٮ��{+"�D��#X�(lx�
�E����;�]�%�L�.ɒm�����LOw��m[R���9"�V�B��w��4-�����o����e����GcQ8���A�����d��}�h�w�Y(!\�q�2���xa��\c5�>�h������#K#Uz��3uUc�b2_�i}��h�����YF��Noړ^��)��V��x���&���]@Lܘ|�*���*�*PR�
ٹ�u�
��6�Z��#ZȊ�]E9�/�>[�4�2,U٠�0n��A�0���������f��C�E'��5\�����fiS/����K���®���yHyP���`�\���d��Я������������|8��s��W�/�
T��\�eu#�;�=!�*���	!���_n#_q��ه�0��`>G�?(�䎒�ZY��Ѕ�C
(��	��s�$4��PH[�i��Wy�4�q4��ag��,_O���P�O��UN8�j��}A�8��Z]�@G��ї��1��ߎ�
�/_aP��
i�m��J_���[���x5���1��y�Ͽ=�:�z�>yl��L��N�t�XG%O��E%Oei�jaH8e�t�8��C�e�mh�����R��S�~�J	(:�s�l�|l!��\`BxұH]�0x�@p�rv�`��j)��ÿ������",%Q�;�E%�I·��T�/.�� �zQ������2��\�:�O��=�%繽����a/FQ��B� �F}N��0�"LBW`!�!u
IE�h	��/�J2�D:Map�Y�?���
�SO@B��}��B����(xav��l�]U��Q`E��~����� �T0T���q�=�SANSi-�:���i��h�2���~�s��2%?�{�7��l�C+��f���,Ko^h݌,���
$�ɫ�,�$5�@h�Q�����y��K�����V���t~]���5d��=�R��f���a����`Fʛ4�k�]}%����a�O���/�5�;�t��(��*LB��iqP5Qo+�0��v��^�}�z�`P��_�Oï[
0�2踃S�q�P& }�ӛ*�|�,�$�>�� A�΀��M�UZ�J�;52�Cfd)o��T����^o�Ȅ��S,�jB@�'K(�譛��G_��
�Dbs��F��X4`I��;LUw�E2;*��f	a]���f�BX��C�,���s��S��u\U� �Q�*���Ӓ0L�'��yD��>N{�ǼX��tީ�hFnKE�h/7 ����_t ��]]*��_B-
��N_�OB��q����v�'l^�(�M���кc�rzxw`��e/V���­b�q�)�����s�ٔ�i��ž!�"�FMt	lj�{��Tx�_�:����g�)�
ڠ*Hi3��P�����`�k>���%���2Q�T�\k��e��(�y��g:��Fj�i�Xəp��T��oxOc���q�y���zN�*ՂL�s��	��zG_�0� Io�N�-�\�~�{H1)�|n�=��@^�ҏ�}�Q��R��,,5�H���B&E@����_�ld�%-S2V+�˶+è�
�u<
���]�U���
J5/��^[�˃��S��Pi����B�69ʺ��F��K�+^��'V|&)/�]����٭0�r�@�_��vT���.N"��"d�w��:B�\����N���G���0����#IJ+uYe��@��!-PF���eݺ�iۄ	��1w��
bפ�W�G\��7�h11�rf�������Y�����	[�+Z_TC%�		톲p�5�j�rEw�q��_<��&��������[�Dq��U�J�GK�4�g����+D�v?�E�ղ���)e�K�?6I2*L�	�t.XqN*�������K�*-\64�M�g	ݽ\6�T,*�?��?p54�dY�"R�K��^��m=j�e?
���#���BB�p��p널B�W�P����Q�(3��p6LS��*'I�V"��^��G|�gR{Rb6�$2)1z�e[��)l��s���P
�u��b��كN����a2*��i;�	�[���D�~��S���P�Q=`̎�VSv��Ѷ�L�q�X��Ą��LFdF-�G�~��yJ��$VI����v�g7
��kJ�l���;���/75�1���):��u�#z�t�W���),k0������|`k�}z���7�3�Muc��{f���:4�]r	r��gNE���}Ai
�8*Ő�ׅSb�!�����T"M�"	�q���--�Y.����k�N�{��?P���K�Spo�8�"�H���r�($�m��n�3�qz�;,�=$:(c�V�$�<耯�����/n��� �},)/~��ɨ|�(�(�N�0��~E� �
@J�ߘrH�IF�w�l0{x��d*Ւ�X�<���.Ѳp�h��!n�U���
�ny�ĥ,:�!mpY+�T��Zg=o����6!�Ə��})�/
���&k$��f̴�-�n�O9�3vḘ�|����LV�J�6_m��U���HK��-�jd*@�oX&E��>�
����'�	}��ʭ�����u���M?�n#f>�����V8��dZ�8�����?����,�@Z��4�$F�U$P'l����P�6���HV��y���;福y��rCTn&��9E��>��-EP(H�	j�{
��<��:�zнFCBǹ������P�ޠ����O�־�	a��Y�쩃ho�L:�d�K�
�U��4a7�ߏ����7�P�IvK�ኋ�mBMS�U�m4���f�D5�S5�����V��'Hs��B��
��A���k�}�E�e�˗�h�r�	Y�q�YH��g5�J6lB�Fy#��qp/[A��z3Oz�R�I� �B�]�@��p�9RnN}}E�-$$���Fe�	:� S�sQ2A@�4릛�$T8`w�0!��K����L�(�t��H��˩G�iS~o��}!K$��P�������K�<��Wyp@�>&
��8T=��R"�f�p�W��m{{�;�W�xh�A����d�d��s�����KFESr�/%aP�J�I
9����	aU���/9��c~h��p�yG�.����X���ȋ���+�Ĥ��M@)z�����5U� �-e���xF��~�VN).�����7�����(�a�U&ta����xa}l���a��l���[��ʃ�P�|��@2˄�b�7l<z)橰�k�nw�*���ěP�m|	��_nL�LS�ǯ�9yuFC�� �雄�J�d��3!E�V���[�b�%���3��K�	� ��I�
.�6c\�"���n�ӂZQe��({�n����]/�X� �P?���蝾�!P����
B�;%6YT�PY['w�(��*�@?��๰m6�ԣA"��2�ʃ�8�����n�B�U�s������,Q	'M����h-6Ƨ�w���pwaP��NȠ���-�,(<����{�VϤ��K���E��vZ��GS�y2js�9L���u�%g�z����O�=3����"���$7��	U�O=�u��XG���#:�
�mp9�LWS�Z����}��+&��fY�-�����N$���A���_��˃wI��)�}�5�ы�ȓ<��%	}�F�B�Q���!���*1���M�qZ��Pa�g��.��n���("�)ʵr��\<��T�id���j� ��I9!���L��TV2D�3h��vi�����r��N=�~��R��p����|�j�A�!�S3D�f(Cm����C��Nw�hMx7���\3m�&���f�0!t�05�j�G�h[5(�8��ʇ[$Wm�ظ{�&�ު���=h�M��`�@�����o�`G�8���F%�[Ga�����v�,���S��Z��{öϤwN��4�I~ͨ�'���:i���N������D�h�V�$.+��;�������~���`'`�3B�u�T�`}k
g����k��7��Kq����ʾ6��G{rT,f,�y�IQ�z.��m‚=�#.jyJ�݃�p�e��ހ����8Z��Mn/�/���Rh�9>��']�Q01��X�/GO;�N��cY�_�f�BO�V6����R����i����?(��ޫ7�B�\Z?��;����x1dY�b��Oav�|�����?q䭁��Ռ���áR�4�t�g,E.�mB�1k�qb��h&��O?��B���h�qal^,���B,���_� x����(M���8�����ah�@X����:v��i���q.s^�hu�����II�Rb��lj'cfBX��pFJ�N�Ԅi�S-tB��9j&��{���Ҷ|P���ܩ��AQ>�Sl�G(R�LxX�'���|pu����Ch�j��7�Ht��K�+5}�{ԉ���q� �W\���A��.�\�iU哺�&��U��
G�跌ٜ�$���B搷wn����y�Uv�R�.�}yE�HM[<LMAun9�V�&��cYʇ$��ͦ�B74 RLNi">P��	��K�L�OF�y�wr�k�a5W�Q��f�d��� ��W1x}z���1
G�����Y����w�[h#��nώq�fBئh�ſSC.lH�n��f���J��J}�����l����/mtZfh�L���E������)���(�jG��]��R�r166�'`��&�q��<�G%
�7�M���_o��u.��g��@%Ń���	���[���_���,���X<��O��Q$2�dR���ɺ��R!E���zjK|;B[Q���F26}C������s���Y谰G�+{<�����W��	�X��'���o�R��Zc)��:e���p����{Y�7DbT��,&�?�" �%t�9���`ӄ��lP�	�hNDw�86�u�}���
X��{�X��	,�yz��
�	�Zs�B�����&������j
\�At��C*��iYu�
�(���K�y
v�LJ���ްB���B7!�l��j�L�lBoa¿�����`ԈF�;|T�(?��{l&c!�Č��;�|
$��nz��B8�0H|dBQ��Y�;�{͋��ih��d7e�[i��q�^�P�]�Hk���*	L�u#��қ*L$�vq��}!@��Îʃ
,Yi�򜍣O�f��:��]A�.�2%���N���8+�?�8�>:��giU����0q������"��;�_����$����ﵺ
��Y�Hd1n�*���Ou�JƯ×	|VB����
ƭ�{+��y�kt<��*j|����`OBx,������|
�x�����v�!!�
׶���%�p�gy�،�����R�Fy���%����V��hl�=��݃5�o@yp�.�>�m/�c��h� Xr���w;�\�8���V%��^Ӊ�:�����8Qj.�5pg��Tp��ܧ��8�󙔄��aM�M�N�$R_6�@����G�L<	�Os𚺤+�вH���{�E���@Z9^�C�_��/�ś��
�J���hJaS�Һ�����E�[���J6V�y��ő����ߜ�K{��h��+^(K\ї(4݀C����t��m�A�"��B��q�qt�}��^���
.��vvG�Q�]�G��BEI���S%��^��o�G�8�ò�o�1b�	>�� )�>O�3<SU��nK�rb����i��w,*i=ƥ`P-��d��%�l�l*��#er��pO7�k�G=U�Ԉ(��Yh(�0�Ca�Y��p>���l�����[��:�|Jo�@��?{ԕ�KB�Q$DH��5���9p����������n�O,����_Î�F���-�=�>�.��A�~�fI=Qj�]�i�x�|�Q�
�$BrZ�&I�MqU��Ԕ�������A-{v����A��5>T,��	�.P�^DF�O3�j&�@T��������gR��ӛ��wY��|ɽ�ʃ�_�I���]���UY��['�jJ�^{�\��c��M���g*���Ok�Ȍ��W+�S#�,~Pfda�upd���Y���m�6�8�%���ֳ���=(��fBtpص�D�ѐ����K�������i$`��%�
�
ڋ���<$@���Fc�J�ɹʃ���"��|���ٯ?���IU�7f��O��rz�{�ë�"o�zo�S�~@t�l+4>���h������w�g�AK�IʡdD�d��-��]�F)?���K�TV��LT=��Jǣ�8J�����V<�5�S��;	6�"z�����X���m���~����y��������w�6�a`Vòu�)��z"�@�<��Ǝ������CB��A��,�ҫ�Ef���w�fk��7}�'�����q��5���w'q4>�������s�h�wx�䏊�\�-��;7׉D"�k!N��XϤJM�,[C�%�E��)�}AV��-"j��z:WG�N�GJ���Ђ���
B>��(57�9x�V�FE5\�\�| �^h�9ٮ�BG��-B����k'��,Mӏ����g�3488H	����|�&��L/�{Hx��0n<�i��Tya�q�W$�Ib
���Z¥���h�?�J�'��.�p,(���O2����cW�~�hgaP
�G~O�q��RM�0Sӗ�@{o��e"����9�+!$"%	*��8��.���
��@��Op�������`�1�۶G߷S������yDӇC�X�[���$�7�����3!$Z�E�nn�n�
eT�*����>B ���՞�ⅱ�I6��u�6��eB��i1Vf`�q�k����07(v��CH
Rn=�0A�~&�El�w�w8�ӥ.#&�ƯR7��6y`�%z=��G!����0(�0�v��~&�Z�tZh|�n3t{��0��b6�C��i�
-*C� *��=�!��jT�@�8=t�Oi�U���jz��#]C�If��bѥ/��-2�a�5���G�\O�œ���#l\o�j��Ș��Gu���� �0:����F����`W	!�ri��i��љ�B3���f��0��y3G��#{R8�T��U��O_���͕�6��y�^�OP�:��Np-����܀K��
��
��wN�r�(ِ����p�{�j~hDiob���H��Ο�a_<�䂇c�=�6��K�,��/�0��۹t����̮)�ڲ@DO�Et�Fb�	a}
�3��~Sء��^��·���
�BD"��x��ATٲZ�IY~��;����U'3rK���$E!!u���������%,ƛA��P�srS��� ���x���]K�2��q\IFZ��:�a�ҾR~ԇx�'�W����Q��/,���'|��̇gf�m�`���=�sO<��g�ƈD�-R����fa��qs��#�w��{k�=�r7���z	�@֨��[�^c�ۄp�/4s���;���'��w{��X�@�e���$E���8��U��0�t.xq�k�9�dBG�n�Y��E���d��C
�	@&�ҕ�`�{�U�ɗ���&�KI��@�b
�VA�Q`Fr��x��҉tF0����s�����f9��;wz_$�O[��������L����t�Ԙ�7*j�H����}���F�:�njnw�a'�i�����;Ɖ���l���K��O:�҂|�����P%��o \�{����=T_Tʲ�xv0�`n�ᵯ�����9���J��E���S!��!�S�u��}��yB�f_6�X���ta[\	��hQe�J�-Mx�V�R�콓g�w���z��.K�ڀ��1K�c�Ge�n��:�u�7��Z�I&�7"�G�8������;�E��;IWxq+�u	tm�����&�N��h��0���ڐ��u-B�CE����3_�m���{s">����JZ1�zJBH���R/�����-z�-;A�~$�
�_��lp}��@�'��%����U�S��ON��(�@�6�w��/���kGy�u�����!�p��r4$e*-��X&�E򰬄�q��H�!�X�S4�f��N_�ׅj��}e�:��Go��@��htT����O�ww�qNT��TG�|TP�{�W�t+��/� No�C�8�ؕ���u/��+��4{�U6��
�Y�(QMCb����o����-)(�>�q�6sP5h}L	+n6E��#b��|=��ā"ooDb��7��:��&��G�G]G���d�+�@��,Pi�PB��	tR�\����}&����66�����G�����W�
ĸ��`�08��ÀzHT��&�P~�Z=f*c�iA与K�r@K���@���zʃ�,[T��Pc�UȒ�JV�����&� �L�����[��Bh=*c�(���4��Õ6|eI#��C�S�'�j��]n��>*{�do��������|�W����q)�*�A�M���5⢴Q���4�ї�!t��?HG���ҽ#m�P�	������W�~S�u��Uw��n�es-���\���d�֯���b��0��6=:Q�P7B��/�	�.É1Мx�_����#�?��\��7Iey�<1D���V�/?S�Ǩ��<�M��>� hTBɠ�<���-q�(��	��_qgc/qT-7q�Y��S�h7]z&W�7N�I��J˃F��x^�@��N}CM�������AiS|�#�ᚲ�b�Ta�D��,T42�N��Yu�x�#$!���*O	!r��6�X���=�$�` �6�)!Q��/�&�$��#�0�J�v^A��lQ*l��"�^�&��5Rg�4�XKG.
I�����ʂ��I5���Q���H���Gc�"�0}P洁�%Y�s�\���y���Rfb_��[�cS�#������#j%�[N�Ё�"��e8?��I`7�@���.�,[κ#u��%�H�F��\��yN.���hW�-d���n �:�*,K�T?t7���d�2d��� x���z��&f�5`l�;��&ٛ$���Q�O0��UY�XR�I��5f��G��S�N�n�Њ|��|�y}G!�n�E�U���bf�_�\��TW/�5TV�2q�O�p�grep�r���a$Uy���m)����q��߃�Iş��p�����N�0���L`��?b��K���P0��Ǿ
�u�$�^&���z`P������P�BԮ|�{�Y5S���&n�ۥ%3,��V�F��>e[^��&�v��,��rۦc��;X��RRA8e66
�6������:*�CKCh��	+���ï+�=��Z�7ű��݃�a�e;�ʃ!���>�h�F
D���5�7�b��AQ,���̱�{�;���	������BP_O�ܙ#��Ct��G*��-h؅^5�i�
o)ʟx,� �,v��Kx�pX٤(t[ ���e��w����~@������f��.�lP�(�J��?�I�A���z7z[Ư�Lk�x^	L���NE_��1{�'=P���E��	��8�؃���6z
��my��E*�8�3�2�{ХM�⢒d��K��x.��Ѱ�m/��N�*�
����ָ)���rl��4�_�+��~���+!�(!�6�8�.�z�O��� 
�T�
V*�YM��@�̽z*�B�����{��u�����3�<� }��ص���c^�4������̴Ҙ]U������ro�rxGM�{��;M�Wa0�z,W�J�
���
�ރ��b7Fd=��E�h{��x`�αQ�=�r����@4"�ڠN#<-�f{�d�P?�M}�#m�1�a_߇'��z	�1���
4�����S���2���
�['|�lP��Ka�yuG1����e6���NPܻ�ǜ�p�}����Ԝ�&x�Ϊ@�Ge1p���J����&�����܁$ꑸ�F�z&�D�2�lXW�%-�A�������谿�b������0��N��avz[tzE��+(��.�g�1j�U���/.a��Qq�ζ�pbʸ�$�Xlu�5~�|�M(d����h]�d?�/ߕJ���AW
2-��Apg�So�P�_c]|��PRR|�}*��T�_�0�XV�x�a���W�����
�lDM�e`4�mo���"o��:BT�=��Չ���V��q�͂�g�J�����z?���=��!OZ�,x�X�5v\d}1�c�=f�
m;��h�e���b�k�&���Z�_B��5("Z���3.��t�@�
ܡ~�YJj��9��3�O�ʨ�'���Z;�G�7!D����K�
�Mp5��ͪ�w����ct����!�}��M���m:m&]:�1?-R�[d�
��~���+ �vb{"T�+�\��^5��BM)�����7�2�p��/'��8�~�8+E�����K�~AX��y���;	)�WaЃ�=�����Sg�������(������%�g����W�"n�`z�H<��qT�K@��C.�������02��>~"P"����B�V�5����U6�/AZv�q؍A��YT��X,�f�L4�nPl����ۥo�ʄ���M/?_t?WÇZsX��-�V4u�R�*!,�e �#F��ތ�>

I �W�"����ij�⑀8vMasw�>��∏�*��/�1��T��<�~��|��ݐX�	���B㉣w�Rq(-�����\�T
���@�	_�]����
�X�	jZ{}N�����-����,�|�"�.�#:/q��	iM��T���%�dL����ze��T|}�lP�� º}NB(e�+��p���N��p���qz@����;1�fl�G����\�A/��`?��X.A���b����k����y�1�����^囅8��p�R�TI�B}#P��"j&ǔ���a�]��&����4��e �*��$D���3�TX�����j~��[uk��g|~�@��d�"!��]w��tgRWˠedL`U�ش�y��ZZ��E�'J�qY��b�Ql�d�2L�n�n:����<�Qng8�3��/�nv7˝Dq�M�vCs��0x�S��*�%�#�G��@F���,��@�8�@�)�^r��.�q�Ѻ0��6ו�țK>�~�t/4q��-L�����K2����)v��Q5�qpɢ�eh�xd����:��[d��UNX��-K>�m�|�Cy���&��2z�'ḑ7��a�U�-_IAz���G:A=�w���wG5]vDC8�c�4<	��ΒgU�x�c`jh5������P<��k�v�_����C�5�K@��Y�ZՃ�>�:���
0z�z
��̧x�Qܬd��Rs$Klp�������Ƽ	!K�m(��?C�zZ��C�*�Ǎ�ˏ��q���fXsL��2��O`f���[$��Ѳ�F�o˜q/�����+�R0�3����[�Бw 9sXTl4EI�a� ;��r\�t9�vq�gri��-��V��n;�L��.�Fl�*��k	6;�F��v���6�f<0�*��{,�!����~�(�$��$y>��}e��w������c��$��i�
�Mj���=pM+�2~Y<�c��_zx���
*/4���21~�1��Q0�6��`j�M��M݃o�����Ë'?�����G��:�#~�~��Z�=���(���%�I�w*l����`8��X.�"}H��m��O���R�
F݁OWs_+<�l('�y��/��cL��n<�U.��qя�⨵a�\a�̘=!tk;XJ�Vj��x��m	e��s�.��=�h
�5����E����HEJ��k�L<�m�	����_,�#YI��9"oד�x���;�`�����me���x��-`����9��E!	-ӛlžF�H�t�-F$�{��P���E��ޒ�
����`?�T������z�Մ���QJ��
���Ls�PB���.Jٽc	���@.�]�����o'!o�̷ٖ��<�݃��փ*g�C�"��v�*~��8��C;_�����r��iľ�=��-�ę��rB�dB��ԗ,+� .JBﱧFn 1���]jÝ��&�{Y�v��(*s&���nf��E���� ؉�
��X'!t�G���WT���G8J��C����r2�b�ܕ�W��-B�4݃�OP��q��%�M�ԓ��ʖ��;��{Ny��d���u��A�!�ѓ�k1��k��d�qS\�2
�R�R�l���>����݈Y_j�U�&���xz��KXg%�~Խv`/wι���G;{�1����Ch����q�.;bck�q���ſ�&�rH�f5���7�hu��uN���A*i��%�.��7�Cs����Ӥ�;�!�D�&������kP@=$��ԑ�������!@���w��ȧ��+㺖�@�4Kxq��`;�3	���֋�8��6]
�j��H��K�U���U3����Uy�$�����as,�"ӯeZՔ����1����(T-����GA
z��Pe�J	��,��GW�� ��EYi͘���$\������G`���N��:��KAq��H��=(�䊼á�/�6.٫�躎�ẖ�G�=��V�bרAG������vo�l`�~��S�C��08�Y�nۇZ�~�>A%�S�pZ���z���s�������p��|.{�3/��w&2����A)Y��{!�Tia�iZ�XG��9J!��DiCd��v�E��+�$�wk_�U��.�|���,'���Al;�/qr��OC#<s<�.����~����A��(^\�� ,�b����)=�	��<J#��xZ\�7�"�y�,��	��X$�Y\F�<�S��I��ny�"�{�)��i�X-\{�x��W}g5��b}�"���K\�w��"	"�(F��9�׵<?��mȍ�����g��E��,\a^��W�[pug,iR�q�]��.�m�=w�Bm�Wd��$��OT�݉���B��I8^s{�٫%�4m3��q�8�P_-)Y~��*�Q�LV�򒧿���$���j~����$'t�K��䧛�B%��Ȣp���u�EY���@h�x��Nm�}��/�}^�c⺖�섖e��x/
����g�Vd�`��1{��|k.����c���׸c���,e��`��y���B��� hB؅G���/X�� ��O����B�	��V�<�[�ڇ��
$��2V��=�`b�f�$��D"����J4��?{��a��%�X����7��2Ul���wP�d�v��Í]�Ye*��9�1*V?,���cƋk8a�8��|��#����"uuJ����UyC�j3����[��L@U��6�a�bU
���t�b�
	���,q��>^��(Ъ:Ψ/rv�;3}��k�ζĖ��nG�|]|��H}�MBQ~I���P�d�]t<�#؞2�4�+�?����QU�����#�N��!�O�'�ѩ�k��	�@��ji��h*A�U��s�
�yX��n1�G$��#j�Y�5e#�
޳.s1�%�m�y)�\7��$��d�':pk� �J���ϥT?
��~�
6�D�Q������.#���>%��5X`�$�j�%٧�N�PY/�˸�Am������=8�Wa�F�ûO"h�.���Wɨ��Z��$$0B~Il��(����d��IHbO1!�h�����_j�d�;cY�������sH��'�&�ğ���$h��RQ�2��:���������+�����t-��A�T��s��_%4x�2	G�o#YT!���tEz�����*�Dsc�;Uo���L0��k�\U�c.�hS4��)9�I�'��!5y �ʶ�[��s\M��P����|`����eF͐���K��mBʋ��ogT��$x����w*�U��pҫU�@��ly)��ci�1X�^�(ʒT���`�L�l@($��?KO�PdV5���Wyp��&=%A�k)AU�JW��?�)Fj�<�	�r�/����7�.��Y�E�h��&4�g���!���4����F�s:q�*�ߔ�Mhˬ����tG���Vү�Vjc;( DN�n�6��@\�WKAx-]���+LW�y�l�1^��*S�_TQ>{
�'*�;����N�e��@�P&�Z[k:=�]�C��]%Y-"��eh������"���|�[9�1A��'l*�{���Ž�����]�?�X[�M RY�����(�դ���O����-����K�y�८-YB���|�ߌ`�,D���n�Y����^�h@�"���e
����>+'���z8�d&��BK�M�7���Z�]���rU��s��'���Pݵ�w���99�ֿUB=��w*2L�1TY�Ŵ���<�?R�/0_#I�Kv��'a�,FM�I�f`0TS��v�F�%V�~��2��]d�::�C�OR���Q���XM����^�X�|���c�.Ӫ�k�3�	��	c����W����}KXI&	G�4��z3L�@�_�3&�S����G[�EL���AL���%� �B`O}��0�Ur�8[;B
��d@�zS�4v�P��Ե��	������0�󡁉Y{�%�q
��j�|�7��[���?)I�	u��i��	!�Ի�$��D��e�:#��,'WZ8
�g1��Ɗ����$!-l�&���rIU!�J6�ƈ�H�8&^�`�����/��������Kn�u�F5Q�d����&�1��GS��:��
�M��L,�n�����+�ߎ�#�߹Ps�z
�[rK�ֹ��
�4(�9|���v'G�El��.����:a(Ԛ.����Xʛ�0�w�?۲4���{���/�<8�p��B�ED�ݙR���:�(��(M�����$F�v���	�4�w�m���@��􉁇G�$�*�k6x�\��w��OZ�W6�nMG�<��XcOH��}\S��6��
j>->���*0��ј4^�J����ND	F����<Z�)��u*�y��7�I<.<nR�ϕ��'�ba��y��w��%���P�F������>kk�t�y9՝�)���b���9	���^�w�	����J$����×��B��1�"%�F�}�E*5��y
W?R�K�i����m���O�W��9a���]!�*b[�J-P�t�8xS�,��v-
ꅷ$ɼ���`<hʃ5����mKr|�i�D�|N��&�]$g�O�%�8z�*��Pagv��/)���p�O�M}� ��	!���Ir�z:��Bw��0؉�
�&\�x
(. $�.#���U�A�`�.@^��B$Df�2�y�{����9��x[��OKɨ:���NY�ŶY̫y�FY�DO,H�V���Gp�/=Ǖ
��^X�.�v]���Ό�Hf�4������x��L�%h�VV�%�p"Nؕ3
�2���Φ�:\'2�pB�j�(xG᳡��<�OU�d��}����	a�j�n�_�{����{����+�@�w�^�s[��pEk�f��7L�̸�esBټR���@
2����;��fD��LS.�	��f������ѱqy0����<�a}��=�e��@,^M����nyhfWBh�{I��Y!d��k���GK�`J�\����ʲ���E���E����
��3Q��%-#��f�:�8���›�H�������`uE�����e�έ��A8����J���ְJf�?Zq�T(
�.A�XF�|�A���3Ką폓B����c6xo=��='�<����R|}K��땦��huARIȍNyZ()V�\�[5$R�VTR���+'�ǦY���kԫ���"�;��=ȡ�DU��xU��ʬ2�����ѡݨs���A�:^�K���j��\p�,�X��e]��?�.1^P�����}�QĨ��r�x`u +��-Kw��6t�!왃6� �T�a�oD^X~�^�� �33�\%��j@�I�6�Vs�
@'��@����C�J��ʦ���}FJJJ&=6UZ���PCY4'ƞ4�t�;���A� �E��.Q����
OzWB��ˊ�A`�U����t�пM��
d�
x6\h����zp3���9�~�I�
]�}�&h���s�
��	��y��-�KaP�J��M�T����� ��%,�]H�/��-6M��y�ے0.?�/ի_uB3!�^Ki����Zx7s��9J"si=�,�V��=3����+�Tk�?a]��A�^�
���?Ht�<,��W���6��Y��������jb�f��Pܺ{p�	a��|�x`#tm��
9�A��'��H/Vg�wd��)�F�ss�JOdl;�MY��c"��3��'	��טe���9$U�q��3/c[H���!F��0�AB4�S�j#��0c��r��S��	{�I9[Ge�h��*"��_.hzG��2�u�K��SͷfS��QkGԵ�n��f¨:�6xF��'��vr>{n(.�&\�h��u�x`;��9iCjgͮ�s]�&=�>�A���+!\���˽���,]!�?ݣ8���!������k=�r�$�̳��.%��MF���6'��2�C��t*���B�A���KS܆�D$����:%F��3��`o��e��!��w��%%���M�!�OLKa0�ݮ��{٣.�WsB����1���->��Z:٠��x�� �<�%.�s��M�i���T�P��-�=N�Em#я�����lXv蜸�S���+h��=���$�ɣE��V�֙p�|�`Ẕm�%@=��d%�3��Й�్���,�-�ɨU�kzYL*�H��OCy�
��h�g3��A�����"v�֙���>n!4nt7���[��	_�*H��
�p�wQx�uK�5��`K%���H)�N~�>�[/0�rJc�qƋ�]��9���ܭ�@����.VPAc����R�;�
���p�ΐ7Fv�˫�9N�����T�2�z��6�V�W�U�@Y�y��3��c[�� ��r`��ң�'!įdB
&�L�4�_	��%�ʼ>�`B��Hل-�3"�c$c�����)����\���9�7�3��0H|���*�8Nt��j�b�TS�vH�$�|�ʃv��;�E�3q�Š&(fW�z��3��@d��F�4�Cr��B���x�gA�%�jC'Ƕ	!T� �y��/L��z���؅�t�h��_*�Sod�L���>g�{:�ɹ|]�5Ee$��'|�S��q���,�:�n���	�#!?���]"�;�:�?�R/V˶ZH��i��A
W�J�6���(�ѧ=�Zf�_�͂�emM�w"��f^�j�mʃz3�s���)���B�	���|݀2�Y��LX+$ބ,��k�(f�Ż@:\�P��;�&��^�q5��!8A���y�y�� )'��v���K�T�_P�����H��}m��H����l����~�aO�1�ÝW�$Ј|�GM�k�#�$�[,�)~��G7m^��{�ܭVE9��8��@N����}-U��f����FIY����Y�4�C�4�`|
�~����
�����t�x`��,I�Iho ��S蚾�侖�/l��'��7ۜ@�Ť޶]P��ˇ_ëBU���N#���-����PQϝ���V:�|}�`��$���c��=}�m
��-UJ�L�Z��4��:!���2JAƆ^�
1w��)G���ad�n�gC��=#):�Z����S=%��Aܧ�BH���GAe�3�A'�]n�wv���X�ͳt!T�(��*�d�
0�S��*���&E;-�x�P`.�ϡ��?�?�g��	��/+d
6�k��
����?�f�NR_��c\��2�#��{���o�]��4"j�PJ;��:�%V�9�gr�'m��VY��� ����Mk
���D,�L����KQ��v�Ȕ^2@����7�-�`��{n�;���C֨&��+6H�O˚L��yi�B���>�ZRd�Z�x/?��`�'1\Q���|�t��^$��1�	Ǵ�~�/M�m*w���w�܀�ρ�����I��g/'�
+'������m�`g|%�����\|����Z�§J�0�Lقe��`Q%�`B
�B�V���PY�����Lc�G�]R]��#S���M��S�㚦�S��"���RO��^	a�w�C�#q�:��(�}�vΦ�?��<�׼�f[������g�!��A��Y��Ą0�~M���ו��LXi�bF[��D�|�{PRQ<Z]�T-iN�f�f����B�"�f�'��,I2�+�`���7��9l���X7$uB��\�rz�M��*��]�ۂ$�e�PgL�Zr�򿀐[��N��ӵ���&EB������oBQpϩ�#�B(Q�<`��,S/�>*��w=-旝<{B���(�Dd�3$�N��J�!�#�]j��z���og����&���C����C"]n#q��F�O!�yN�hR����B˂[E�o-�}$�P0,a���_���X�Ѣ��w?qt���np����
�B���F+�p��?SQ���`J�gѓ��w�!D�����%�ݴ`9�0�� ���Xz�:�!Y�7e�u�&���*�m9{6��i���a�p:��̟��s�	��I�s3�Oʋ/�ĨgKg"��g�{PR��}����ƉI"]�oD8��P�-mL�9X�ե�`m��)�X�������:dg�*��`B���rꇚ��Jv-�05�B�����Q1��L�0�
�g^�ޒ$%ˀD�:)"e�I�JYZ�z�:Jʄ��1��d�Vcx�G���Q8-j6X�)}�gB1BAz
��&��.'�]?'QeU_J�Oet����2(��KT&R�Y�+���^�m���⢒g��*�0��q��_��rB��*wGMYm�~H������^�Xpb�p���!�y�A�!���Wa?|wr~����g�V��j=�?#+R�'�	!f2<.�x/�}P����Re*�=9.go��0�E��Áp���WД�T�W�`���*L�Ʉl���ʃp�T9a���*0J|��1�~�=}��d�-C�mT�-�BM�S�@CM�s��ŠRU(Λ
B��R�A�G�8����-)�`�kI1������	���
����
/岼����&���T��TZX.�R�b�jZ|=/s!����3��AM)j�6��@�n�^�n�L_o
{�@����'u�A��m	y����_He3R^�`ЛEݕ�0�7*'���Q�
�3i?��b��!M"�ԣ�ϬY"�A�2Xl�H&��J��oJN�@��m���V�L�~�~t������,~fޙ:cB��ݧ�J�u��,�-L��<v��Ǽ0x*'$@��	����ΕiP/�J������<�;) 3\������%�h�X�h�q&g�fB��8f������KT����G�J!��|z!1-�#*z�1����}�m���'E���Q�H'-j�y��"�4�I�bZȈH�~*�+�ݎ(�a8��O�wo��Ąph?ȵ�s��V���-(MӇ�r�a�-���j��KK&�Y
�n�V@�$l>W�xb�a��H�[準��9?I��委U"�BJg����2	Z�<k��3EI��?�IN'ذ4�u��V6 7:"�8s<0T
���=��ewv�ls�%I5J���^�6bt����J�
���"��_��?��=�(:��]�+�H�s*��9��K�ɣ�%�[d�E)�;�.1��zi���3(X4^��l�g�hu�*���	53­^.R&:WB����0��A:ZL��y�\�6��+���*ܨ`*«ﻠ�'SD�Z�P��D���� I.�aHzg�&��9m�!St��v"��ǯ,z�h���_vw:� ��~7�=K����t�Ok��Z����x��y��/�s��,�͚��Q)����3�;�q%ee�I#0�Bf�*��Ě�*�{��|R���!������6�% �f�����`�@�nn6a�Hu*�w�[���w����S��!QG�!�r*�}����_�{�D�K
"���R�GR?R�<����S�_4%�d���
+�����B�%93g���&i֒��@������)�Y!�%���u�NqQ{x������}Ҥ3����P(+]-034߫�����h�ǧ���(9��YQo���*p��#�����QG;�D��݄�P-)|��"჻Ŵ$]�`�E*�]����Ԏ�?v?�(P�QC������H�r�$���['l�/5���Cd�GW�¢>����H���ݕ�R�m�:�m6��S���'|j�!��@�ŝ4�2�Hb�y$#%xӷ˃nĀq�7+���tל�3���
��H1��ր�/�Eo�rhPw�6`<\�F�yY��O�N��ڻ~
 �\K��~����J����zV�+!�ûO��fEuSE]�/D
6_AK�Q#�nQ��r~��w1.�I"i�=(Hʉ�K���}"���˃�o�5�����Q����OI'��P>��\���$ك��_�]���5� ݢ>��(��9yvq�ܘEk�}FI��(�	�JDJDF%�I5̬�|��B������3����袴a�ڝӗ��K��t����E,O�=;@�M]a�9L
p�\8�nz���C^|s^\	ap�|��)�c?#�"�aU?��HH��C��v52ϼ9�-hm�b���uT`��}m.���"o�͘�No�U���>P0��\�#�l���	�h�_ǧ4�{	�#~��AgW�?W�O��	y�╓�%x�lcD���,~YW�)���
���5d�gKV�$��'Kv��;s<0�;��
JGP3l)w�����6C�4%pY�z��"��v�
����X�)��><>v)z{8�������v�į�
-S��E� 0�xM%U`���y���1.tRsTl#iuLF�`	��a��U[�脛�uy�>j�i�eg�#R-]��b������,�ҕ��KIb^h e���<���0���Z��$[�oIc&RSY��T�Z���'ږ�)��E,؞�g����;����}���6�~_��A�6�(�K�N��cG���s�oVC�N\T����@���O���:�4!�#3�Z�x"q4b��,��Rl�g^����=(
���˃�}��Z��D��)~	�h
�&�[s�(+�>�F�b)y��v�c� ��=S�a�l�̱�(�9��&Ъ<X��DM����D�ko�l3i�7c���
���{���	�L��}Y7^�<rw�K/Z�\V�;�!Nc���ڷ���	�`�d��?�_:��C:5�?���+!l�-FYG�?qT�<l�"�ɿ�����?g���ょ��{���ʃ���=���E/B�?AK�3T��G�!k]o찃��0(����'�����	�_KT9z�b>��X@I�
 �M�')�C���zFMԤK����u�c�R�T��fn-�E��|��
Cp�`��l�	k�M
�����VϨ���ݰ�-n�޴f��m��JX.��(����W7��-OWBh�RT�6�{�7��:dN%�2��s]�A�n
��<�6�U�^��k������p�
H秀������k�9R�
�?q�;�y@�!�=0iR�!�| k�Q)�B��`Y4��4N2�3R���iS-�ЛQ�L	}/JK�imu�9��9k�
��C�JT,�Ѡ�?	Ք�C��kMQ����C�',��%l9L��&!���+!��&�Vi;b7[;���Ը�\uz"���y8f�K�<�r�)AX݃"g��A�
!��/zn� ���tO�1G�k���ō�P-���ڒ�v��r�2�p���E���A��:��	터�[��E_Z2^�1d�D�A�z���LU�P�d��3���ф�
u�`hav��6i�	_A[3�B`_<�,1o�_��LH�{����6bZ���l�N��,񘖂�P�w�<�<�3��(X�=h�ҵʃ�*�*�}9��(��/�#C̣��Î�nɟ�
��Ow�I�'��q�-4������?W#�t�i���&�~�`���U2r�P~g2�J��e56��L���ƙ�i�-��wB��*�H:
�X�v�5:ܠlx�ee��Vï~��*�K9����g�Y;	�C�J-직���aC�Q��_jV�?��k����Æ��&%��wƠ6�Q�ߨ{�6�h�US#0��v�@�X���G;RHg=mIs�P-Ю?[;8BEuA"u� *��r_կ���+�`�*�n��/V�������ja��E2&TZ����J;!��'�O�̃3��r�Iw����S���`�="�t���M�j���Ȣ&n*!t�'K�%4�s%��=�ڌ	q��f�T�7�H�"j�@�h��߭��}�A���w7՞i�o�1.tʆ���"cY���ɵ%`9��R��m�/��J��IrO2/q,����ۑxl��GJ��oO�voS=x ��\b�T�j<��Z�H�#�B@h.R�]�]�2���R~ȶ�1!V�h���W�D�����XP�$��	�S��"NEBh��ͬ8S<�hJ�H���7$�����A\,<�Au�
�r�Y�=�c4cc�Tb��Msg��B�Zb���񻤸沌&)d���_uH�B'x�Fh`l�%���H������ɮ=8���a�\A��iX%�"�<x��A�靁g`��*�K^|��&��*J�c�aGJ�y���PM�n1pG�;�4ׯA�Iԧ���qh����󽪥�-V/�՗�[���;r�:!8=�wVcɠ��
��Z�w�/.�2���дU�����R;���}3��{�|r��P�:��4�^�<���4�H���J-�es{���\j�O�C=��Ğo��n��8���D�J�9���ǁc\nܝ=j�<ȄH��=����j�x^���D���l���BR�'��Jg
1��ȥ)�%:u���&,�u	��Ʋ,k�D��D�xC���$��M�F�G�>�^��y��±[r	�b��OSQ+�*-UGN�����d»��xV[}3�)������0��[����-i|G�ܗ����V��vV���[�9�y��|D��Ђ�2�pz`i�
v�i^H^Y�`�2<��M��8���a�\�Ln����,�Y)�$�Q�0�px�4u8* RFU�8]�Q��=�^7]�\��-�).&G)���,�RJ����>�
/��kpNЂh��:H7}(^��M��r�TLe�q�TM:�A����/R����9����̶@X��K)�X�CkwoDa�u�9,�/D�j
]�/��Z�_�b���������E�͗��f\Cn��*�D�жGg8����%��GB����|>�c����1.goz������0z������O��zz�u�S�0�@sl?pe�����E,����0ޑ*�G��.ɟ�
p�0� ��P�o:V	��BI�,��-Ĺ{���I*h�J+H,��Ab��T�0⮥�K��O*^�RR�d4���w�4�@ 
D[��o�>rPz���I���Ѡ{��/,����}TQ�������%��'���
���������.�8>���Q��3�}aP�4�Gs9��V�b>���E$��J��
Ej��ԯ��b� ��V������%�yH�W)�Fv�A6?d3y�x1�+��bz��b>�<�>,X�<�v^j�bW�_��ͅ�!	+�CR�{�)��6�ڤ~��"bJ�'��7m������o��p"���)��8�v�-d�â�(�B�7�~��0�z*�u�~�7��{�CP��7k���L�{j��p�@}%���c!�ר�/0{d�[�|�a��¶��(j�i�o��1�`h8a�,
���������uf���:!�C�U�K�����T�$�z,���l�~�x�A����0��,/��@l,���y-Q�Z��h�\��7��2�*G�i�>�4qK;�o	�֥�[�^0w��\��8��r���&���:���@
*xS�_�׻��'��`lk���%�{y��ae���%A�Yt���pX:���6���w�،�,���Y�B��I=JaP�t���ǸE�x�#����NA�6}�R��ٕ�Q�}
0����I�5|�f�n)T��f��G���Q{��08�������Bv��\��6�BBHQ$�D�^�LX��='�#gd=���5B):�F��t�7��m�.�fR�6�r��@8��A�9�W}9�7wu����n�Ξ�����.V'~����	-TG_��y���S�e�%�eUNh$� .z.I�3i�&�S�m���$�Fu�n��� �.��#Q�F����ʸ���L��.��oBa0ީ"�
vNSN�WH�/��a4�=�"��3��I{�ʃ���$*��x@M��GmB�%:w	]��74+�v�{'�p�4��Sݝ���U�r�ʄN�nB�e�J����?Ӆ��\��?�����&/�cuV���]��,q���Ln��A�Keœg�a�wv�
��x���#���m.������v6RԽP�<e��<\_��tqT݈��`U���ٵ�0(��`iU-l%��H��@�(����ay!����v��Ao��Q��1D��mD��� �	_����C�J��D��������]�iӻ:$N��%*4x���Qs�N�\��2�0����>�R�*�G�n��8[\Fc\E$X}bR�řʃ��ڠ���w�b�r�(ѻ��ʱf��ߺmD��8v2X`�/Ma��[v��p��1u[=R�#��g�{ۅ#@P�k0��812�@	hI�J�>E��g�����5��x��.Ԉb���U���UxW_b O�i�H����0h^=h$�6{4Q=ƅ_��û:��ST��ݕA��ך�R��O<&aە
Q���.@�`���<8i\R����L� �>�������G���T�ȴX}�D����H�.n�g�kG��"��+�
x>�ͻ�kyaIP�Y��B�>jBT�T�tH!'w!ͭm{��,���n��Rh����XE��Ȩ!��{�$��(j�7_�C��
�$n+oB*~o��K�?���ݾ̝h��\	�f�^�����h?̊�.3�̡�ij1mM�V�|`[t���AEͱQ��`�j��÷r���
�G5����Gmv�YM"��Ou*'�-���5��~n �
����Yc��m<�U�ɗ�d���x�1�>��I��QS5�[ �"��)���d>���xH���9�ݻV���/s�����x%�[�-rѱ$Cñ��\q�q�#��L�rh�w�;Lq/�U:-98������H����`�(bO�����`u�)o�p���HٰzỄ�2
(MprĨ\�5�A����T~��X�9���ù��f0�o�!2�SDD�ƿ�q���Y8����<�����ݽ��r>�I�l��w�`ΆE�0���p30�%�~���bB��`*���8��\j�y���޹�����#E]j�rњ�RH��X���@G(�z�������Z^X�{Ly���^?�$+~�PmG
�A� 'S�@R&r)�l;�\IO^��z�[]T��>�f���uPR�BŐ(�,��r�$�����ֹ@m��n�ݠ�0/�C	�UZ닄t��\ڮ�!�>��ɝu�-B5"�^7�_����g�������b��?	W\v(�1��	!y��#�XAG�1{@uY�!-�����)���˪>5��n�~]X��E�ǒ�"I$<�"�j��O���$�?+X�"�a�D�U�o!�*�*1��_���@�=z���1�� ��P��$�����c���)6��EF�����_&_T�*çM�F����������h_{H`�b�N�Ubt����WŁq��>v�ßR$��Ѥ��鍛������کCD��]�Q�ǭ7�Ė#��8�Q3�:C=��)��.���
�z� R��b���By���nP����]�M�A5M_��@���[D��n��9�vv��kL��{䅒�
�U�V�mϹ�T^���lS�—��3!L�;y=���e���,p='���}�Gρ�f�u.�vy�uD^AVJ�"E�~����A)tq^�,Wnx2nB
mş���;�X����څh\IC���G7�=���e�m$�M�#��,N�cAM�:c��c��Rһ$���z�2�E�mB��y��\P�ykO��7�8
�B�#�qAM�k��Fe��Y�ϰm��a����N����O����X2>�C5�l	a-"�
Z�݄"~�$Sk$_�c�40�C �M�J!G��r��J!�ȭi�2A���m6>b��;�]���D7�t�q>s���~�+�M���T��H�����'����:��z�]�
f/�<h[�[��
�ӫ<�xD&T4��^ӵ=k��,D̆ #��h�@__��R�0�u� �D�h(Y��y��0��E|��a@i�8M����]7'��}�g��̕�
��P��\�`dq��
b
��3�<7a�b<�պwPG���Z�8��6v#�[�	^���
��v�E-����[5�]56ă0�ײ���n��{�pz��Z1!�D��^݃!h\
c7b�����js���(�Equ�`�0X�Le��C�ï2�Ad���a���-jz��kn�6C�Z[{�V���/�GD`I�Y��L(���E�r��%�~��8���J݃YN/C����X$ynQ'�I��|���O��B�F>{u��2KڰGl7R�]X���^�:�����|�'н�+W;/,��˃�di0E+݃L�T��}t�ż=�[KGm��B�>�� ���'���r�%�ך��~"(�c�O_6�QS��gHYrǞ
7bS�u�~���h�	�J�w�U#4JΡ�Eէ���wn?t��w~ց0�쏤�{���]ج��WJ�	G
�l02o��۴�$'�� j�~'l�S���4��=ǽ��G�(j͉����a1
H;���q�)V�4&%j�]�މ0��MP�<X{�4A#�W�����x�F�v�e
�%���`a���P��*9B`��	�� �P�r��K7���l�S�G��3!r&5��~Y��*��(0���uK�7/�U�v�̵�+�U�	7ZH��!�O����k���5j��J!Һ<ظ��,4�f���a@z�ź^��Ԝ�N6�DM��J��8z�pӑ�j�S����n���q���Z�Zψy˃���9�).*�dvҡ�.��(�2&�8�~������B��vM/+�>ADS�\�A��cCbf�N1lۭBU�����I��'m0U"��<�ΞF����t�>f���
�ӽvZ�9��P\L==�0�h_���ŃHk��}٨$�6*J=;����_%��b����`��L��o���qnV�9̡�@�ꋶ0)$��yx����`��
��i�%1�x)�]�E����3k<K�N�|�
���α�:������G���E�����"i}4��=�
�s���	�fu�7Rּ���s����m+2�݀#�MP�r&u�]b���PrwK|\`c���X���j��q�sWB8�da�yX>��!�X��� ��i��Ǥ�B��a�$C�������6�֌޹Ř��6��&�~�j�>m}-�H\���AVo(�,
�"�2�S����j��y�o��K-�����=~�#0��q������T��A+��G4I�����8!T�\��*E�c3�y���R���H��O-/�T���؋�@�i�`+����W��~B����WB8���2��4���kՒ��le>Q�US=nm��^��Tj:U�v={^Q�`��3
��5�M}� ���I�D�S܅M�m��3~���o���8��ҙ���†�?W�xf�\��Vh(�U/�(.�J�UB�&�	��v	HJ�^��$�vk6v�vGw�%$�:&�!�a�u�\8�G	._10�Nȉ�_�{x�=C]��2�%�E��t��97�*�8P�6�@%���|h����Ϸ0q�G�h['W=�j���E��Ǎzb~--p�W68�@Bh��O�2�f|��GB�/�4��H���<N�Q�-?�9{���G�?'���hN���%҇�3pb���1�jQ�2��ѕf/bnq�"�U9�Wѧ�$�y �
u@ܘ� �8�}�h�z�އ
�����7�8��9�jK�����/��`�Z��:��ij���`L��A¶�,�a1}
4����9�����IYrw�$jh���昸d�������&b_秺GA�E[��@�.W/81�����A�/��p��"(�|�#�.�[yl��G
���ZϞ�_���Цj�V
\z���
v1�&�S�I.f/����$Z�5$+�%�'���!H���* `��G=�J��)-P��ȥ���]�`\�r����/,T����ѵ�`%�{�L�@J�O�	�7�'��� j����<�Ơ�U�R c_�?4a=���ĴٟMߞ%�5eκ
9)�#��ӭc�@����0܊
-�/�K�z��d�*��)�+=N�!����}�o�����F�Ņ�a��5vL�τ�S\�n=�aݐ8܆��!��\�Q�qZ��E.]����[��oo����HT{����C7!1E�1!��Ċ;��ߘ}ߛ��O���	-�Ĕ�Tv�6cm�D�}17R?�^�+4D�A�k�B\j_P)�?�����^��d��C`#��%��Q�u����!W�naDs��E��S���q-/,�E��#��[���8���.�-�0h F��kb��8�+�i
��ӽTI�w1D$L+{��0E�<VB�Ac�
�N�f�V6Vj<Ns��C&�._�x�3�60��C�!
K.J�A��q��c�7L,��l
߰��:
.1�����[}�e���=h<�t���R�EyУ5,*sp�g�P���X����5l\�tޡ���ȃ�)�~�入0�=����݃��݃}��WD-�j]���@�hD8����	J�j?[�ݟ_E��K�������E�#�:�Z�T,�չ���!�;(��)�K��߬�=���s���ޘ�*OC"}?LY�����c�<�s}��Wh6��byP��P�wP��~���A��aP�M���x���0{)�W�9=ك��'!���Cj��u�b��8�h�!�ӵ�����-ӻ��jlG�Yq.qQJ��c�@po� ,^��Ԩ�I,�G�����~�y�����Wn�8�i4������m��[�uH����bv��5B����s.�l ��B伏ь�� ����9��`k��m�T��d�4��ۚN 7
ɿ�_q� DJy�G����3�a����.w������5Ƴ�����b����s�����k���yaV,s�9˸.��g�)]H-�T�iv���H�z�EQ6���5��G����(��~�]�Q��t˪�Aw_���
,1y,�"Kv�Y��K�݄ʲ�@��ڙo��?�[XroQ���0��+��T6��pbi��
ı{ؙͯ�l��%͹fR@yp�z�s��r�����(�90ƣ��|���(�#�4�.��Y��=.�hb)o�J��$�j豴�
b@��ճ�Ӂ8Z�Jk�z��8l�*�@��`�N�6��.�Pu��h�m�Y�X����&�n2��?�{'P&�P���_	����{�QT��)�߽�����݇��?��Lz�nq���b��z<<��W\6*2��K��ʖ�$ "2���7c��fl��_bf��M�]��svUf���H$�� X��]U��@�p��k��GN�D�n���݃h��.�m��`���
>�
$L?!��v8f��G�����&8�^�X+?`)R%R0�2:WRI�X�|ldh�7���� P�i�+�� ���%����^}�D};T�v�}�&T#͕�i��+Rw}��� 1J6��_, �]Q�ac�^��Z��*�z�_��[�J=�:�@aи�\�+azVG1�{�W�a�ZI��1b�W7��P��}�x��e���c�U�~#����G��H�7HW?;)�G�BEo^N���N|LN#��-c}q�CN����M��I�wɂSyp��b��#$��7ޠ�M����M#,Y�� �U�N��|>
4�G#�s��?����d�1��� [�Bȳ���W}�QN��b�3�O��a瞔����71�n2���Qz7���,~���̜�q�qR�\.U���s_6)/o�7@Xn�z�A�A(3�ȍi�!O[�^Hr���댛�ċ{-��`�����l^�bgs
��T_�^�����1p.��$��Ӱay����۬,�4�
t1��$��0\G��"�8�$8P��D�#⅗8j�Q48B��n�A�8�
{�p��!�r��h��'dy7�¾� ԅ���B_s7+`r�������r�ﷻ�'mA��������hլ��3n�ɠ>c�g4��B��Z.K
.6ʉ?a�v`�ʸ���T��غ�*�6�#�G�-B���z�{�8�3�& �Q�6G��
Ħ��wyȑ��ā���+�cD嵕&@�"lXm]شˉ��gXWT���cF�
��ұ����w�E��MF�!���8�+����L���ъቴ��f7�b�2�p�k�b!���p�;/ʃ\��q��:,\�P<��;�$#�dn	N�W��2�X��>�po=X�
�LQٷ��o��>�mBt-no����_�8zbY����`��@��+�����*����)xs���k�)�r���4�!�0h�6(H��`K���Kt��\�( L�/��>�p��&�1/��A&�y�My�>P}��i����	s��e�0y��[�Qd�/e��x��-HJ
S�m��:�_�ofFoq���?W������s
H��Ȋ���[;��j}���!\�G�d\�" :	1����p�vj���N\Pa0h�m#����<V&E�ɓ/k��`�}B�fr l%�ѝ9���,�Sv��J[Ϲ1�hɈĸB/����_�y[�D:�x�n<��ԣ�.}��,��)�s�&@5��
\=�����Cv�:��q��f���GoT�Ԁp�8�sR��f�<�:�"
��R9��vPl��G�*�-��qmv��Q��3GH@�������w�쇗8��ÃL�����W~���AP�mBp����#��C?�n~�!��i˺����q����0�RՓ;!`�/`�V	�M���@]cC,�/<ax���K�J��-����G�^/Q5:��FP�6�9pap۽���~Ok}�Y��B(��fd�6\R��l�_���+����Vꭞ���	��t�v�u�	_<5�O����}bo�Cl'9.~j����S?"I�s���?? $W_�GL�O5/v��[xT$�=�|>P�o���h�d(�S�=�"��[gU�&��58���V�?��loP%o�>�D�.��*H\��T�04�i��7�x+�>^�a>����@���^�#a͑B��i�S�e��夽����:�'F����k�d#VP>��#��|�Pf ��!yR��_��zÁ���|�=a���[���<c�:*=mP���xm�NrPE&�:Š2{�D�m�89�����m	Y56�9���@���t,��~�r����s
ͅ�m`ܼ@�ſ�7�k;�G=�s��$�4�R�L	�FG��&�FC�����/�fo�7���p%|�L�_��q��j^�����,)X�����y�dzj�_��D^��dd��[�	Xm���2<l��}d(l2��4�>:݃0]��fR��T�(�r3.�W5�z�g\坪Ur�_�[_�n����Ӷ�n�k�`Ȅ�D�B�<_�Æ�g��吠'�eM$��]kFq�~7b�6��o���
h7�C@�[ܣ����t�ufO�ء�z�����Ox��v7[�TQj4o�X��@^/�l�$�H,{Y��^3&�$ai�/�lo%?�V�ɸM�T�2
���?ݥ��م��W;�/����{��B6Yd��f�o$a�Z��=������u��@�]3����X�0x�Y���4P(t\�Uؿ$^��)��mؽ�e#��e@�z�EF��M2e��G�~zcR!8��k@ϴV���^�2>\uS��LD�0���o���1R�ѩ�<h���O!���$d�ݾ��k��A���ia�@����;/*Ƃ1ܹ�λ}��te�W�;� [�|�aP�'@53p�	�l�W@�$LhQ%��n����ׇk�i5%$yT�f��ڥ��Xa����6г���!����'����F�/�΀�8}��B*��9�`O�NNj>`�P�'Ѓ���Q�p�h��O����ڗ��^iNNztwL�z����6@#�q�WCh������a5Oa��h�a'��!�Y�c��G~5Z>�X�"yN̝�82��F�a�h�.2_�I���
���S��C]������D�e<�75��@�+��CF=@u ��?�Ǣ6��_^Q�7��J�5	$����lwX�>��D�4c($��V�{����C,�e��\�DW�v��{�w��Fٓ�|]��	������|��:�;����> ��@���28��]�e�Z�����[b�s���	7�b&H ѸC+3�z8Y@��ԓ&@`��pı��d;AA׵�*^7鍿��6?��7Fbn�_��`�YL��蓮�A�8��&�ɘ*����|�
��>����WT���`X����/��䛟
+ �7��*�Zl�ÓF�~��/^ə��� �ߙ�.X�V�Pė�U����}����0?�Z��P7���$�ZP��q�r�%���t�pc�T�o92��.�F/���s�@pH�����~����	�M����zV��/��K�Y��=��| ��C�gt��7�/닁��\���O���zi�aa0�yg�P��k�D�a3< ���dq2�rU-���[�rF�1?C�����B��1�Ы���}"Xg�Ӷ9#�����F]�C�d��U�	J�@v��@��QS')�����*a*�4�c��j����G��b�/���lwX:D
zw�I�<P_ʴ�{w�
�$U:J��X9��h���EP�MX5v���m��,��Ë>���%���_�F�q-@���%I����Tϰ�%���v&�,�x�D��ݶV��ܛ� ���G�N�y�J��z%|��\h$B��' c�6��$=��	�Ge����Փ��\��
	S�>Y���`/k3.�Zy_\H�Lc�S{Y�B�T�ݏ�Nt.����y��J��´9�Ge�>�[+�tD(�?����l�X�V�*2X��}���־�H2D�_`�8�kY1l� ��cS~4o߼���G"�˃��l��F��޲g����p��ŕ�y9�o�'9��$��S$����y��o�[!dm>K��kG�0x����(���%��/�E���.C`C+��V�h�'��(��>a���u�H��u#d��9Օd�s�k?�	f`��L��T_\G`�f��G�,%@k�
��H�Y���ׯ`��Lr�N8����a���u��n��>u�߼fbÔ�)u�St]���+.ӡ�#�|L�f}xEhg�q��}�D�o�X� Γ�%OΤ��_��Q�>2�,�A����;�y���9�;��1�0��b:���\���Ț^�/R�[�D$x9�0X]m���܀�H�b�]\`����Y�Uh^7|I�-ij�^ƙ�Dxs�1Pf�P|����6ܒ��➄،~��z'0���^,0 �?��U!5� �N�[4����9-󴰶�HK$���:�����n%F�::����R�*�(��:8�Nh�p��زX�u��ӳ��aGh�3�M/�Ÿz/�6�+>c�xt�A�	����a��镚�9�J ]b�P�jJMɓ��T���7n7 ��4�G.�:��>F�O�2"���q�_4x�����*D��x�h��'
���6�R;$b&ijx�,�g�JL��C2!6~�q�1�i�J�[�PDn����u)���k���� �L�Ϫ���dX_21���S���0��#km�B��D���'<��2X�>&�m�k�G��g� m�(7‡����
��IJt�����J<
��*~�deU�qO��/��k��U����9K��hc��01�߶JJ�������
H��<'fB���Z\8���\6��7ސ�*�Ivu��zPܧX��F@��������8�byb=���v�CI��U���i`���r�e_Vr�0�?'Yt2ɨ��(�>�A�X�9�8��3{ ��jcy��C��kY<�KA�/�+�#���_�*�"+E���
�^�=�A%ˉn���2��/��2��o��Z�����9���9��
6�����A��c6f�20�R,�Eypm��&h�w6m���bB�����1W�
�x^������5�'Ifn?sLS��v3�UGY���Fp�qk����oOO����z7�ed�>Ir�3���L�L0j��W\��d�6��&��h�`lƊya!�D�:����
Ԋmme�\���	/���&½�i���5��� 'K�-+G}'�f��8g��]�\�p���x�g�5�eh3��
#$?L���ص�繢�+*y��#��X0g!xB́"��t�u�ֱ�V�
5i�N��V���c��Q,����]y�t=Tte�t8��D}v��uH�wZ棷ti�%|�ɣA�E���,�?����'�F�`~X��M��̈́��+������O��X�/��	�0�8T��/�]�����hqᨳ�O&~-���
��-J�
^�s���hKJ�i�s�v�߳8<,��j�@w⹟��{����Kg�(:g��{IE�}B��Q�E!W��X�'q�I O��R0U�ڭ2n�N��[

, �o8hF�;N��䚽#H�K�uG�ɖ��[�L.�L�k��D?r���!r���l,=RliTkq��+{oa��g���⨳��u[[���Nj`Nb~1��3�^w�i�rq�g��n�}>m$���k6��Y蕂�*+!J*y�k�F��n��|[�������n�D��8���t��I=H��W��4r2RΚ
�aǜ* I�'&df�
�bʉIN�\�F\�qD3h�
/�l�	%|٥�ο���j2�P�9c\�z���K}LĽ}&T���J�>*�N��@�g���xғC1��,���]4��M��7�����8ꬓf�V��vl���<a�������4Y7�Ѯ��~��C� �h#���|��A��n*0($Y@a���8��<�d�9�!�q�G1/dS9�g��?�����F���-�����>��@^���qT_î�B����&m�	2��R�5B5Y��?n":�ڠ �^Z�������ǁ�{^�t�_q���8�>㐶�9LҶ����ja"�8eH<ݽ�lC�$��\U��c���tBF�̌�/k�����/�
�b��
P�|����M��Qg΍����"0�>��?��|�\ޘl�I�s����-�}������T��y����o��tw��6�Ѱ��q�! 4���d[��'���lj�xl�F�����ړ\��h�'G��Uӫ��u��c�1d2��SW����l��e�P�B�܌�AA;�l�� gTy"?������`�P�P&�\ȧ�
���2�i���^�*j�T����O���~�:�c�`�R�������O�𨳎k��@�����Ц��W|� xY{V|:�y%�ӷ�##͛S|�KuB��If�{?
��������v����g7 �,�C�V�䩏%��Q�΃|Et4xa'�t5w���(�)�Kv�c+�w���ص��0R�J�!���L���Z�^�Rt�b}�>�S-��B]`?a�T���SHL�R&�'�������5Ҵ���9ed;���+M���5��N<6_�t�l�4�,(�<.+�$^�sye�3ք*��8~D����/�A�݃������D����K�hPM�
�m��*��!�JNXn���qT���䰜�\�m��*�JH�k���(���3���V��at$�*XzB��c�wb��2h���Hh��=� ���?��0��~�zA� e�!�g��6���^�(U�:=�����Vl@[�N����I �;���1z�2wz�XY�<MT�%�1EՊifI|��3
�!�A�)��'%�
�~mEǶ.�ղUF����	|�e��tte
���7�1֮���#Qqt>q;װ�����촳_z5�>{O6J� ��~t��c�OIܢ�(���3zl�`�߉�~�{sE/�f��$�A�����Aj�͗U���I�N�Q���πp*�F�c��+��[�Ac摀�2�EoZ9�]q6�+�_d
HJ4Ld�19�E����[�
w���]��������e�v�o3A'�0�=�ս6��Jd9����=b�_�g�')]u�"2�O-���p1�V�o��˓��8Օ`�':�Ɖl햒&G���m��~/�y"���q����9n�t4�#y�y����m
	���&jX-��e0T���Y^s�~��Ϡje�`���eB�	�D��E�5
���+����������)y��0g$<�{�#�^w)g���ɍ�`Ep�Y�m ܲF�����Ϙ��(���s��G`6NVŕ����R��OT%u�
�1䠔��p'!2jD�y �l�)^�p�-G���!�~詜l��i!�(3<��;S�>37k�)�`��q��GIԣ��
�aJE/6j����a���U��*,����L�y���*���?��BPoDR�}
��
�C�&�����͗���>��r���ͩ���_݅�́'����g?�����$�V��G���l�PسDu &%ۜDꕎ��en�,�D!�s��&�ULە�	3q�J7U���埨U���1�n{�	���z�r�Xk3�O�t8�?�X\Oy��I~Q�"�?a������su+Yj	�<X#cg��*&�;��OJ�X��e�xw[�,��|>(N�'�Ď�/4�`�vz��=��܀ЭO>�2�Bϸ@9�K���~�%$݃��=�;���f$RT��n�
M=cR�'���X�
�K|��?��C�
ox�5��o
�v@��r��Rb�=JD�,�}��*��eyW Fe�^����!��VR+�*��k�8����$�a��C�2i��#h^L_o��3K�(�P,1�zH��!�ʰw��|\�J?d�ֿw��x,�0�9�O�q@���%�݃z��N~Y/2�[��1�߭!?9 �]/�-�򗞠�J��cF_&�y��(��-�7���8�Ԉ�%�6$R�%I�SZ�n��ʠ�h�r�lP������DGCH����g@8�x<�x�z�Ț���Ƕ֓^ܟ���3h�]P<wD�KJ�x�1��#��.q��s����{y�
�-)���b���BDY��������1�@��#�T){k6�Iٗ[�r�qF���n0�[�i���L����6�L���N���*�?��6=�ɅL�#���Y�-e�(�ړW*	ȧ(�Gg:���n�6����w8k�0L��z����j�E��c�;�6@���@
����1}m2��0y,Ҷ#�<�X�h}�T?'o��THw|O�Ԋ�(�v����h���^�� ��
�0��X-T-�
���	�I���X�����G@��PV&�
�O�+�b0�k�>��&u#i ���4�A��/�e����������C���}�����}�����@,��hۇ��g�YV{��+Q�ͽS�"`�t��*�!_���,��]-�ÕސއTU����a.��o]�C &`�$�r@��^ں����t,2�y|�y�$U����Cަ�j�¤�Z1�\v�{���oa�`'#���$J���B�T,*S�O�'ݔVaw��z���k�2/�%��Hq{-�1up�;Qq&5�߬�z�#���Y�-V0>yPX��l'��Z nN�3�@���	�k��7����bF�(c�B=�s=?TkAS�p�
e��1T�Ծ�$���~e����c�&dHO��|���-�a�۔�J���A@E�+���+���B/q�:��Ye�.�s���w�FU-N�%J�e��U�G�����2��5
}2�E�c�аm�ڠ��I�*ΉSԣ�^���E$DIr�O�
���Y��0��}�7��t�.%����c?����*U�ɧ\�UHXM�2�ˆ��t���0;v%����<P��goa���yX%r�_E��Dm�PI��nX���F�mʃl��pi��ax�|jI4jǙ�\�s��hЀ���>>��m�5����](&�',-�b������2���=^c��4��|Q�VW�2}K�Ut�����N�O�H���	тⳏ���&���S��n���eF��5���-�WF�|܂�u��)g¥Co���3��NL���e�
<�fr�	�٘u�_r��$�N+��˩�ȍ Q�3$���D��	's<yV����2g�"L�8�*Ђ��Eg@�(e�;�Q-{�"}p�Ey�\��
O��
�WIo�dD��`���B��8�gU�#�g��A�D%�Q"堲b<���X�����@�ó<h`it����/�z��o����:&lx�6{ˆ3���<�+ൂ�o�W��v�}�j�l���@ap�χ�W�q�،ʃ_�x����3C�2Z��e�M�d�xp_	�.ƛ�
�j�����,4
=�#�0J�o0�:F����p�y#�?�OJj�(ę����ÖF{�h���GO�)�k�r�?J�z<x�m!� ��m�5�>��D�Xs����w��j���H�L�R�eAo�G�=�M04���Y쀤��?��b-�E�K����`oj9@��z�ٍ2��&��������17��+����[���pbo8 J��v��}d�T�S��I�
+/�L��_o�����N)�}��O���+$#�=|Qp�*����6�b�{ge<BV�r0V�3��
#
,:���*�_�Y��w���5X�n�2��rm�U�99m��X0ɐp�J�qW#����An���a?�*j����d��3R�r��ct�a]�c'��ѧ3����ձ�Y7["[�0����;��I��܂�ڽ�M϶8��=x�� �8d�T$��bU��+��0�&Y"b.
&8/y��Ϯ��/�����کgeA�� qt��aj���p�8�m�BR�̐��2���
���ѕ@-7��IU�Bb'��\lx4h�C-&T��0xIZSIY.�����;�J�����n��������
S��,=V�3����b]�K�$h�R4���3pK����x��d!Fa1�
�������>'BS�?�
[��W��)��:�����Q-d�$]�H
;��ٶ��'&����$��;Sag���H��.�(�裤�k@hZ�SWl�@�t@���_��씓8:���[�G�{Z�}��a��x����Fމ�P<����
��R����4��ZN+nD�h
���D�$h��+0Tб���b?���u*Woa�M�π~Ri��n��9�SYV�)���y�3��M1,�PLX+�ԙ5L�!	�;�|�:�,o��U�B�/
��UU�����>�s��{�"(�A�U���L%e��&F�_����&�A
�_���E͹�D��ղ�Y�8:�� ]g�m�F��[��*t�
�(]���Ñwb�{��n�����A���{pi�!�*���V�����`@Ѡ�S��Z�ߩ�@b � ":�=L<m�+i��#�l&\�D�Y��(��e����j�T&�V�Y=��?R�,@�۳�L�+ӛa���u)�pϠ��g��Ǝw���Z��-�٣e�(j#"��@�c	.�5�/�N�?������1a/q4�zz�
�~��M����R�s�v*>���2�v8�Ñ�Ո낯<��EN�O�	�F|����Ո�/�=�:�ǰIa�B�,V�?�k�^��'xN��/�>kygd_4�A�;�B!�)���lN��yE"�����l�9T�"�ꀐ�GO�'-�wpv�3W�3V��>�����d�؏M;[̅�~�)�D[�O�{|�<�~�[ɟ�֤#���:�"�g�*;9d���䃡����`a�~��ϑwb�<(|B��,��2���ed��k5�������g@���U{���}$T�3K��}�ƚ���ӟ�rP�Jv��b�#��[
�_uL(X1/,ԧH����C %HT@k�ȕH���ꉕ��a�6Y�m��^��<b0@6���$ʛ�ZI:�@��X�4��?�ˑ���R�H'��ѓ2:
ؤ�m�D��yAԜ���G������>މ�C�Lby���{�
��;��@�16X�8�Z�ɬ��\��9�E�I���-��g����O�6J���g3k\�vy�S$�
V&������*�ޢe"[�E�>E[0ZG��]�sӸ;���:��
�;C���\O��$���k4��!@I֍�& I�"��_/�
�H��~��N٨� 3���K�����13 da�QC�N\���������Q�T݃����=�2�fdE��ر\�sX�q6Dqn���#�ʜ���;�xz�i�����m`�P�C��\D�E��>�)j��g�(
�2����P��v~q��B��y[.T&ԥ��_-�ޕ��T�L�s��T�.��.ML�?��a�
�h��.=�c��(>j$�: �o���=�����󨂺�k}XV�r_>Q/n2�]�	�ɧ�������l�R0]UD�v�A�;Vz%v;�NL���=H��gRy�� �W�U�q�E��TA�n�[4$��<����Q�n��]�:H�X�+�B�b?�IR��
(��+Q�L47:#�ʅ���}G���f�Ǯ��rP,U�xW�A�[7�Sp��B(f��i��.: 4��	�����J�����(b�����[��S�M�E�g��&�z���_���'���.Y���ހ�:9'�������\�t��+�������� Pap5�ݎ���݃ɵV�"�+�Tvǀ;e��M��}�7��\�<��8�j�h�0(۸qt�B�RE����:�G�PMm %=X'|���(�'|||�N�!��/����f�<]���P7-���?9ɐ&0�Z�!I�G��adBR�!�	?w��Ѫ��ֽ�o�4��~��	�)N}{��˪%��o���gۘ>(�u�d�ӅO,���>��?�|4.��K�cU�&,,�G�(�(Q���}�#��$Ha�+xʃ���g>z��`׮��];�\W7�qt8��5�b�F�O�S�p���m��,��8�����o0S�V�H���B03�dW�Rx0��B7�>����R��6	uM�;�?|���8u�
����g��c��
Z�Q���*쥌�c�p���En@H�ѥ�.�i�k�w��QE�i��/�R@X���X{NP[�!��3eQ���wb
x��Z�w5Z+�P2="#��z-O����������N�R�1!l�!�z�
{��K�9��WnC���Qy�p��Fٓe�����@�2(Y�xj�ch�Bn�p
����)��i�����C����l�πp
�a-��ߏ[l���2̑ڕAA�
��t�ĵ�/�^�N���A65 �EMN���p��,��B��8A�X� ���e	�Y�p��C����;y'��=݃�]N��H1q��
�H�պ{��*��HHم��(A?m��=��^]�tϳ�d�耵}t����Ć��j(�ڱzq{~��`o���_Z������O���vn�.���
�[QTn)�9�'&�_n��7�%��>����v�� ���-(�y��G������P/��ӟX
���ɜ"a�JO�8Zp���@ϫ2���OH��K�#�2_a{��w"�E��D��p����n"�QS�y��+P��*�V�*@����AK�K-���8��/��V�Ĝ7�xe;�=�:ӈ�D��p��ó|r9{ד�r������I9�gG��{~���V�	�3ŒN����~�@�NʙJTrHS�q�MZ�:4��hw��%�*8O�����L��Ar}cе�`U1�l@:�S�M��/k5��gi퉷��R=������7�Y@�:B
�2�d&��L7���/��qv��I��7���䝈��{0-�&.��-�h�����~��V�-�z�}���s���y	����"o=�|�"���S^�B�I�?����IZ����
v��g`��Y��M���?
�X�������D*����P�'�BHW�t#�
W���x��@���N��v>�b�}2E���'�f�B�p�q������y��ە}N� ����
�HG��[t�ؑeH?2}J��΃rK��?�NL�;�.���5�%@=W7�eh���5-��w��7R�NM�F(eE�������$�^b�	$�Ra0s7s3�/��xƓ0��X"E�{Y�D�)v>����������������3 DTu{=H�',J��C����Ox����x�Mnky�ѣG�����!�>N��N�f�|�a��j�
e� �A�	�}�8�ia��k�	�c�z���4d�?PZ�K�մ�L��pj�we�b����/^�0h���Cb`��@1n���q� =�?Mx�0P(82����K�(�H��=a� �5�'4��d�Cv��H��6�`�HX.ػ�$jX�yᒿ,����e�(���2�L�vɨ$W㱭�����{U�g��}\@Hr2��]*�>˃O�0e��
���5߬�a�)��j���Q��F�-TW�|�p�e��NB%Re\��g}�� =a
�R���r���Gc��HT'��Wvv�\4Xq�AA�s����Q��H4���f�c�^8����'�g �7�c
�kJ��)~a'8���	Z�Jٻ�����z#�X�c�
*���`���p���(p��ޭ�-�
�T�}��gb!* �T��<oY�y�Eb I�k����� )�\�S���N�S#�{���k�	����B�0��Yq�=�
p�N���y�X��M� ���x�NJe�p�K`����jV^�Ab<�s[��Q����Qa���8��2ٵU��D��v��e2��Q�<�F��2� �*Oٟ�:��#�B�#�f~�XYl�O�ʲ��>j�RWg�` P:����Hrd������V��,�G91U_��9��D��k?����șZ	�<���p�5�D��V"�I�C�#�1-�'��zO�ۧE{������M����1K����Bf`�Y���$�t��vr?!��Ol����pܕefp�$R�>��֍R��,�\,)��Cq������Ҍ���93Ќ�/r3�z�«XæPK<f�XD?�E3�G�ۅ�6�X8����?�U>#<�a�2C�>������b�j?�5 <�}�����6��˄�t�e9���ă���%��҃�*A�֭�2L��g�.��..�T�2ɰ��Kmꄩ,�fA�n:&����T
��_|��3D/c�{UL��w �,V��)@Y��*Sp��P��Iv�#���m�����ۙݕ���uQ3�_��E���z��zG��4臾<um)w�>a�O�b	[��|��T�6�X��I�y�eQ�#����#,�0�]p�ygY��LRh�
5w���F%�h����&P$�(ù��r�e^�	�
��u�*_�6!ʏ!����JR�1SO��E�[�AB��[�`��R�x.�	��$��I��L�$";���\���q���M/�T�o��m�=h}4�xԆ�W�yY,�Z��N"����*AktWs(^��Olp�F���q��5����"�Kd���%�*fO5}Q�3��n $`�(�H	�=?���R����-P�7D�C��bTH��Lj�J��cC��t��i?r
�����
������i�ae��}�¨<y��d˫o���I]Qd��]�Ŏ�f�0x�'�m \X�)�>���,�N�Q��N��t5:tP�`�^j���������~]ǝwV��tXX��[�]�_T��w˃eg�A����ME ���/JüF��Mj�$P�K0���ޏ�h|z����`���]̋�rpY�x���ፎ~��F ��Y�ݱ@z���[[̇�5�m��$��V}�*���V�|&
d_��{~��"�֯@%�?qt
��W�R���8�̊^��B#�t&�9 �b!zN�c�p�H�6��x��5V�)X���e�*.B�dJ~SL���*iu�D�6H)���N����ei�!��o���M��u�W�������w�bu�У�z1��߂��Ԓ;��(v����-�w`���{]�)�����j3��F�Q\ԻꝆٻ�zOT�G9�PG�O�sx��
{&ͤ��0�3�ܣLSpY��8*e��s,�N�w�u������3*��v*��x�vӽ�,�+�bI�E*c/AdQ�<����`���b?
d:q���ŕ�	�1GV����!E�s��Uy��=b��<I�PpA�Z��N�e�h�g��A4AB�ec����R�ٲ����R�x�@(�����t���x���z�D�`1,|��û0O��һ�P�{��l���;��.z-9	�w-��#/�l&��u���q���.m�k���leY�
u4�cB����3�����5�z�F�z�W�Y���0�x�:�t=����S�
�
뢅�Ǒ�����CV���[���}…ި	\z'�-JN�ލՒ�=J�"��@���H1�G� �sܵ�ny��������9�*>�%��Q;8܋㋗�J������
���ݾc�~���%��pW���L����WR�U�;[YĮ"+`��N(�!�i�J�g�`��?��_T"F���9��{nr�E�U��
X,�U�=��gH�0sӜ�`����ף��:��9�=�Ev��n�Q{���Kf��e�_#�dG����؊Oq�q7�:B�	�����M�k=a�P�*�c��x�RO�	��d��S����Qۆ��o��q��z^V�E�Xy]F:�{��޾;cf�-6@���^������e�* ,�Eq�U�%3�~�<˃��Ec1[�@p��ng��=tӈ�5�Ac�(|�[��9�'V7\j�f�qP��d���?��3�cӎ�Ւ���:��I��<���ߺam*��>i�X������;h�oc�=�k�6�{A�X��]G@w�l\��	��.y�,�\��4�H�AQl�M�:�aP72�w���-�Zb��ӧM��8v4z�� �8c�o,�S?��g���e
�*�R\P�`�v�&Q-}H�Wg��8.��ܷ3}2�8�OG.@�^0 �ɹ�0�%��g@�	���
�Qf��C?�~p��"ǖ�2H\$�����E�u`\б����wq���%��,�IrM2G�٠��Ih��c����:�Oj���#��;V{��F�V��~0,��o"�����6?�"h�/��cꅫ@��������r0t���Q#��Ѭ_�.ec�`eY	�
q�{�]�`�ʎ�y���~��j<}��y��D���}���F�z��8=\�̱a���9µAv1��/i(��r�I#�J����#���K��h��
�~��F�P�����:��l�B��݀�Y:��]N!ǵ�R�>W�g�I�"�(E�	�_�;�9���z�_�����sadE{���U��X굤�Wg�x
_��y�V�����m�~զ�;XYV®�Aœ��g��rZ�n���0��5�}��a�R�0��~��_8��A�\�A�F-N�s�,�
���KPe���B���l#��[��@(���P׾�p��Kc�'\|��E�>�4V�<���hUN�OT��J�h^j��YR�HU�p��͎��
������ӭ��Q�36Pԟ��x���7�����.nw�o�=H�!W��b+r^����8��Ѡ�ŧ6���)����z|f�ݗ�xow��ui�8:���D^"�0����'2����5�[�[���DA�	w��&V-��ڑ0�e��B
��'�š�K��
�E��َ{�����M3�!9��	�x,�Z^�[��O5�7��s��c�8bF���B��0�^o����������J���E�>�F���&T�]\�̥�B�!�*�T�����A�r@HK��8���rj?�xi�U<�5�y���E��H�#(����9m8���^<�E543�B���MM�V��V_���E��j̔'1o�(�D��<��eté���di�~�j�]Ta+�oN)��?����tr��y|p,�N��Ww�Ok�G����,s��I���Iе鍩�+������F�lga!.���Ɯ\k4p�����6s�X�&",�)�#|�Ȱa2q�����
"�f>u�"aj��)�,������v)���Z�K|n;i)tf�djȍz�x_�~���;�g�k���E&:ː��Ǝ��|
�?��t���O�E;�Ϲ��d�j��Dž6�����E>QX��V�~��iՂ�����e_K����EB"��܎Z��FU���3փ�i̞�@qQq���a.[�{�N��z�c�����y)⨞���^	���0�™�#��B6D
��
���p����(Ns�+�q4�k�Ϭ�0���Ha���I����T�,a33��5gI�ﶾ$���N�-k�}O�j�k�?�#�6�N@��>�G2��$�{4��}����/�B�ƈT@]7n�����"a��n�ҋ��0g4�	��"��Qs]�T	�(.z�,C
��,4 �a̛i�D�p��^�{��K-f��/�M�6����8*�ad^��2�9µ�!�������!� ��%�R/�ZƓ�m*�|�J�^�D¡�>r,�O�c`��ιx�}�"gϰ�_#ag�nU�X��Z�ə��YDф��I���ޜK!�àN������0hp���H��:n}!-X�<���=���d/q48lh���(1��5쫣��A?q�qt�s�,<br��'�g@�\��,��t��^�\D�Jv+T�������-}��5�xu�5�E?��AVG�
̘���S����}�ž���3T�v���X�"gT!QBc����p�>pmG+���V��X���=�X�M\���Y�Z��=#=^���/_��"���d���3L�@����ʃ�K8����>k{R��<{W:�w
�_#c�B;*��"�� E�}"(;q�&��T,��XϮ;�m,�\�c��`Ʃ{���]���ң�܃��e&���m Vz-�_$�N@#(
��,7"r��BY�T����"���RF�{���t��˵��/���U��=t�h�f�zƛ2��F��67Ũ��.u�ZJTlN.��x��;��
�,�R��@؎�t�0��oB;�;�8f{�5cς�{+㻷�I<�<�}$�}��X�4���*�/&�
X�{���&��'�ʃ�r��M�v�Ug��/_�TX�O���3?�<�܃������}�f�}�7zN��y-��$p��:��{q�s�`M�[n��o��G�o���1�CG�ދ��.��pĀ0�m���K|�mn}�L�%\��&C�θ��p
;�>�ߜ�	��@��v%F��=����<��j�7ȁyu /-�V)F^��$\����=�q�q����}�}؂X{��%�
qi�hό.XܬG�~4�b�p���_g@�-�He�5v�q&ci��]��@�Mˌ:D8j��/@��d�K
m%���I_�����0��ځWR��b�GeQ�A�t,���-`��]i�3 ��1%�Í�	us�5ӛ���c�&���ʭY�WTe_��JYW�L�@L�]��`?�
�@�_���C?�WP�&��K���ljx3T*wdP�Q"�����>:�S���L<�@�m�A{I)
�mBm�L_�Q'�
g4�e���L
���P����7���G��E\�@bL�*Xq�w���B�fW��^cp��nY��k�}�QPJ�6�� ����; �\o�`L�V=��G�ψ=�����{�?P�`�W���U����J
b��\<oٶ����Pv�/��∊��ʃ*c�#.**��G�$9����ݣS1r!l9����=�[��ɔ^�ZLNBe�������g@�4p%0,��Q\tP)��)С<̿��~�&5s� f�R!ֶ09�S�}D�fVO��q3Zc��+��C_a�q�o��_��|w��IzɃ�س1D.%z�%��3�A�xa搧�W' TEY`�~���<sͶ�uJ�憯~b�l=i��b�'��O��;�ͫaFN%�݃��;!��@��'����JW��)vo�'L<U
�S�Iu_'�-�a�3��Hd��<�ʱ<e��;���!�ꍮ�r1$΍0��W���@WoIpe�TDv��
ƴ��Aҏ�ػ���X-u���B��	��XezE�����.ϡ�`��ɬ�k.��h<q٦2]{�eE�}�9k=a�
�i��#"�^@2vK��↮�����r'a���y$)z�#e�l�i4��|O&Xp���W��a���#�v�q�&�A� �ő�7���Q�$DG_	ώq��^�:�c@y�xz4^�h���`�3 �b]��r'T��5q, Y%�34�h�u�X�:l�<��
��'j5i�֛�2y���k6uT��>^�
p� �Y���H��� r��ߣ�������:,L�Ip"��_ͽ��@����՟��c?��T�a�W��Ȓ��8�vp�+ٕ��c�����%�W,�!�m�b�
��o�O쀻��rg@��U��Wܫ���:%��&.bu�r��WHǖx���­X�����.ۮ$Ö�h7����g;�3f������򏮩���Y"�����Zȏ�U�C���D�>�
�,�U�5��	��8�~��R{��}s�g
�Ij4�`�2�X�¼��ؤMۑ�B����"�����M* �1���T��y��G=��`a�
���=\�11q�%��|�#���m�Mv��	Or=&3��ϊp��ԕˋ�G��F�U%�E��`�������v�d5�yn\ح$�a�B!��4��+��R���[~�O��;�zv�v�	��X�q�殧�1��g������t�/^��
��L"������=����qB�>�V�]��l\�F.B
��Kʒ��X�U|bƉ3�$��#�ˍmzO.z�Ŕ��o��+[��x��=z���z��*�8`�ȜF�3fHy8�7�kcm�M�f�X�3����#hp+�h}��C�;I:rWN}�!B�6���`��e���;�N�S�����%���~@q<)�3(.W[{b�m�#�i�`���M�8��S�(Hq�(��&Y�I�H������i�"�iځAL�=~��:�rz�ǐ1�ÿ2�B�w���kBi�/_���@�?Q�����A�yXdxW.#i�����Ԗ�{�f�P}_+�� d�m��F[�:�32
 ΩʇP4�a޸P�����Ir��v�c�R��낷B�k�wu�B�@�p��"�M�5�M�[#x��~�B��kņ$음�#��B�
�xZ<7,t‰��	�V��w�Cׇ�p�-��O*�L�iɶ2�6�^�BS�!O�	��zZ*�`)}O2܌��v/�_$V(���H��<�/1���`���;3��o3�	������q���|QH�x��+�<�x�F�E�	o�u����]��əX=n�I��cu[�$�]7�}|'S��G �
H�^��S_��H.I�k�,E�a�׈g
�#���d�=�B��,-h�k�P�p�p5/��g���I���u��������n�C=H@�d-w�a�p;1��=���Sx
V�cBcF�����}^��y�;���� ���-�����7��Ω��b��8�Ugo�T���N�J)���v��x@��v�ɼP��ːH���,1S�^�#7��Ϝ�S����`F_K��8�$�\?z�|����0����#,��I�.G��C��ߛ�Ĉ�`�?E�;E���]	��T����sJH�����g��F��%Fi�,?g����
�A¾
aH G��#l*�}OS��<I��#�R�x<j"#�+�*3bB�ȳ�����~r�
��x�Vr>aWA>����l������W��Ӊ^7 T����1�*�U�	A� ,Z����x�����I�+lS\�Zț?�r|�;��;��E�Q黲�M�R^)zǐ���h>��
n��1Vl���7��q�%=+�o�Ͷ�MG���*�h��W<�پN�V׃[�o�T;�h�Ԋ̪�c
��#G���-��~�>-�yoYd��"�8z�������.(F�u�W��mҭ�"�}j�d@��7L�s2�@$���iڱ���c{�0��#˾����	~��z�9N��Sw�B�hg�2H�W7�R��L%�|0�#����aar_�Zx\���1p/��z;��]�E�E�x�=n,w4��2��o�ǐU� ��w�����y�$�jw��r@ala��}�k���>����-��}ck�����Ư�\8������.SƮM��,�`�,q�y⢗�_g���|}�G2ی��R�ʎOB���PT�%~����Q�ʤ��8 QrE���G�
-��S�i�#x��:��2���Ut$�?�~�2��3�r[? �z��V54�~���Q������{��Z�f��X�$��O���L�vOJbx6�:x�u��ˀ�Wm�pW�b���%����\bf��7�f�/z���`ch��.�	��f��I��x�������Tg���z���
_�_�nN�a*1[c0k^����J�r,�y�6�,)�,�''s�V\���~��^�(#%E�:�NIIv���PK~SX��I�+v�V����E�	���f��zYQ]/�#/�n�e
�-��{���A��-�������P��IL�8S)S��|����<"F��ޠ�z]�����PF;�F�A��
>=a��Qy&��ⴝ��� �D�x�Ɠ8��� h�y?��wVIw��F��9*J	b�t����,�P���'���VY�ї�7~^yP?���K�a�`=�	-q�"��s��8o�G$�֥���4N��[��{zϓ�
��[}<.�G����6V�Soa�4r|�|XȺ��5�m9���|���m�A���d���W�2��U&�z�EjZ�{�o��D����%��g4�(��|;;C�������e$s�OT�Q�|Z@&�>�+8�h9z�ߨ�B�׈[����/X�G����W����j��չO�����C:9I��!��S��'��WGhk�����B}�.�6�~%�GM�ts�oϨϧ��ܯ�!��*�c��12֪0V3���D���`����W��DV�"�D�mBF)���2R}�U���=c�2!ŷⓒ� ��p�g�xN�N�,��'z2(DT}ҋ3 \}�RO,�C��ЏG��Sf��6�OI�7�5��<&:p���68ܢ9v
={�"�JP�g�6�#�z�Y���j��#X�4��&Uz#�/�TG,�^9��T5����{f4�|���_sNG2��w[L
S]��F�
�ly|�v�2o
����% $_��}1��QS�GSA·^3"	Pr׳,y���4���A(Iv��{9�p2.��ϒ�C�FI�7ş�E�`�(F�OЛ�xSlnb�1!/�]mfL��T\�/j�yz:>��o,�H�<g@���3L�W�Lu�4Q���ta�H��n2c,'s�f�ȍ����)��>A�uڴ��@ya��F�3�>�/jAGn"���ѨF�a=`÷�-��ն�8�^hv�ZO#0���,П;P�/�Az����[�8~@Hj.U����q��U����C��"��e\��yۉ�!�\����0��K����X���l��hPDŽx>��T�aS�_@�ȃ	{Où��j�U�N��֜�PM,"���OxF�ˡ�<�
"]�T�Ц"f����:��=�d�Y]}��R1�$U��@LF���uz"i��9�ct�@����@�8��ぞ���gy���ރSe��ń ��E2V/��F�����D�mI�@b��.���
�9NS጗8꿌c��a�*}��D�;�7h^8��6���7r����|
�W����$�΂(խʞ�]j��x��ټ�./�%V@h���b6��x��>-=���[t��:��c:��ڤ���pCm��-��1ig��v���*h����Z�v�Ҷ>!"�~����A�dFo��p?�U�쿬�I�^�g��'�����Ajh�� ��1�#�Z��9 �q�7R�Q�ѫH\����l90�#/����x��ɱ�<h|J<:fKL���˥
�AI}.6�b\��dPw�sƼ��^p6o�B(�[�#9�|QVB+b��	#Sg4��EQOܶ~	��q���,=�dzbyyi�ݢ[�wuzV�C_��t �,y?�,v6x��*׷CB�da�m������A��F����KS��0���d��3,�ivK��us�z.:r@H�9�t�����q��/��Q�}�D|� llSr����m\<z�5�|��c�-��.^<�!~Y<%�)��
�(0�]dm�@�ԩ��ylxf!�u��}h`��D�ն9���/'c+I,&O�_oa{����UG���m�R���J��w�g8�G��D�綆��=�s�oyX��Kji!
���P	v*��-o}�Ѽ�v9v@h��v���O���8�G��x�`z����lɟ����	0���7�t0�A��D1��n��Q`�kф��O&+f��R��.�ʼ(Y�@�T�`���xT�n�^��C@s�vQ��&z$�
��'��"���4c����>�H[�Hx�@���{{�BL���E��#**�O�Sz9l����>
@&Dh;�$�����%:u)6�J}@���9�|��
9A�${�ţ䦌�B���c�MM��-�	?�NAy���o��9�����32FP��q
��d� !2��<�A��68Գ~b#�U�N���jtN@h>��N���[���D�A��U���0�"������e����������
����X^�;B��(@l�z���2���q���/�L���^Trg�ź^
��VG�>ʃ
\��@��t	J�k�C�aɬ6q���u�=���P��# l$�cXy����ʫ7�8�Ŝr0*�rs�q��?rl�G'ΆF��|��v�^�$�4ڡrE�!�@�K�w�Z�{�s����;�8�`�=$�B>�Z(�E(�#!��cXII������3�,��`,�l�^�\�~�� �{Wz7��j��M�} �=_*0��,n��>�~����f�-E>�
�M7fO�ޚZ�w�C�Tl@�K 5�d�Q��ꁣ��v��;���/�����������.߿�v�O���R�Q}��O�Q��T꽒A�2��#/��{A�h[�&�!����^��)F��.���QZP�+#�V����? ��@99,�S`K!�k��{lS.
��ѧ����HD��#��e���(\79o�0�0h�i3gqk-;Q�;^,��m��،z����+9G��$.Z�:�C�C��'�ヒPݪ�
�<vV|��uԌA1|��б�?n7�K����,�^�ڣ)Nr���d]�Ȓ�K���'��l�T��=�^W�v/�Jz����ή��Xq�
��v�M�&)gQ�F	�yӓ�f�2�u�cQL���UE3]��
�!�N��yZ���2a�$U@���{|B��}�zz��>�F�BcK�{dwn�X���1P|\��f�7��5��E7�ct�5�������>@"ʏ���v\�*}qQ7]��gşSNfg�b�Y�v�S�.L��u;�^�_is�O�^Iѫ�:��!#1�h��tqT�3�ߋTI�NRG^������>�H	r҆�R��!p浡I\�T�_�	d���5�;��Q��.�PT����(�5��d*o�N���b�>nH����p�e�$`1���Hw��8-j�3�{��P>&���V7�·����bG�Դ��
��KJ��ܑ�=�����A���N�CG�:&9pU\yR�d_�DcK0�&�ۗ��x�tҮ�A�H�
UJi}������ГB�ޣq�Pa��x��c��rJ�S�{]��8���#u4L�T/r
�f��y��7�p��Jl�������5�p԰j}]���>a�@R1�!��48���E1�e��>�
�4x����J���)�%�[�$��`�O	+�"�vwo��Eu�%y�B�+���X]S�P0�1K?Rl�*�΀p)8��.�䁮�󯅋�+�GɅR��h���(?�մd���l��񢫎�]�ᤌa�>��u����+)G��B{#-�Zᒠi��yy�Ǒ�b4��-ǀޑ?
&(‘��`��Kt@L���'G�����Ga��[�K�y�=�b��}�A=��0�}��#�R.����`��|�La�s+�<U,�F��s�8��? 4_����T}�y5�=zE�&$<l����}�<V��L���j�A�����}H��X�.0�s��e��O8���o%Я���[��+A15=�~��"䣺K�zOX}
T�c$�!(:�Z$�'%U�tW9�\�o&���rt�7�H��ѳ�
�
2�1���>���#?+ Ħ>�
�M�R����z��u��(�zO�;�b��Џ�:��#���<�O��Gm���0������
qڒ��W�n�V�3i��L��Љ�B�T��H���λz2%F��B.��'�}+�%�~��Qy+���	�C3����3N��i�U?ہ�?�:ϜB�_�o�$mF��P���kʡ�qA�P~$��4
7��K���ʯ�������j4��u�Ӥ�@��@J�Q���p����'��sBb?���p���7TC�|.�f)�(2O�rZ�\�W��@�"���R�$��h�36T��Lĉ������9�J���;���K��=d�r
>��!4M�`�p��q	p��T\n�Ŋ}h�$��[	t�5��0�I6zLt�A�(�Pp��͓G�����hr���!mn�U }��gJ������<˯�ad���Q(�?����qrY��7�$�
�B�j�a��Wi�uP��^�C���Q�)
�k���A�}$m�$L�@�9a�}q�-��y��؎�GY�G\�	`�i�N���E�<����9O��G�[{�̣�Y��/���G�)��&6-�@�T�$Rif'������� ���?�����쇳���n�4���Y	ϩ���mTu���n�A�y�U�����m���$kD�������B�2:��z�@^���\
ʟM.Bcj_o�Z1�d[��HZ�1�F�g��	�L>�\Is�"L�O���(S�u1Y�w��(�91�'�Ԁw�iY��XG�tq3ٸwI�7T5���WK':܀G)-�5�냹1R�	�'�z�O�z�����rQ�P\T;��$,�n�Z1tʃ�?������$xs:q�V=�Q���hy�$�a��zb*zi.�u۴T����W�?F���S�/vG�*�n}7�����@���@�'����o���Ś�'kew���1�g���b�}��8^��`J��^���&�"
���5��]X������A����0��7pA�8-�q&��,D��@��X�9��_�8��W� I:�9'1��Y�,n�׍b���Noa�����0�>�^��,HV���7*x�[w�l@����v��AYT�H���U��Γ&Mx����5Q��-f��>`a0��)�����=��2�I@����k 6M�x[���Ў!eJt+��RT�A�Vr��QM/��(�Z�rX�~�\�m`Ȋ2��~(��ּ<zT��)l�����5��N�MlY,@B�N�q@H4���b������8����G����GS^�N��<�ߊ�W�[d�LIy7��G1\
"�>:][ߤ��d+�Hhk���VW9���L�C�x`�B��3�kG)ыW��&t�P	P��)	��bT�J��͕��t=}SPa0�=��o�`.�vo����!E�;��s��@d���pv����j@q���촫��{w��	�^қ$R:x�M�*Q�}CA��:�?���)�S�l��]�D��n�� �> L�OK䓖��T�)��Gu�1��"�`a0�v�阑�L�\��;d���8L���2����D;��(�P�G�R�Э��^E����A�%3��]���6	
���FSW�^u\6�|ê7���xZM���0h�\��u�|�x�R@�lFֵj��<'����W�c�n�O�\��q
2�3Q�/�u���3:,�3��Sxw���^]�f�Aw0���'A���+��1`,�^�1�	�"oVk������U�Mx���y�N��X�����~��Wz
aÓf���us��D���=<� �4�I�5�*JvU�R�2C�y�!��x?�}D��'�+��2���z#W��[8y�a'�AԎ��%�gp;a?K��y?Y�}>���#�P`�ʺ�iOa|"�0��xtB���*k{ss��a����3�(�T=�
G�3���:��D����pus��Ҍ���E'r4̻���Dń��K�{������h�����s������1C����R���8z��
��23�(Bk��T̨3�r��W�-�)����2͚�0-�b�<(Jf+i���(j$@�@O`y�[�EJ��|�u�f���E�g��/lz�_�$=�Jn��a`��>I4�3��<�|��A�����J}���|Qpk'_4\�_:�z��>�!��o�L�̘�f�eB����t�����]�2X�ȍ$���2~@K�>o�H������t�)�(�9,<.�u-nb��

U�s\?q�Y\�ǘ�����<��[�����X�W�o�C|r������(�Eq�(�(�t ��dŜ�G�p۸B�p�{Տ}{av^�6d�� �)�Z	���*�6�rf�Q��2�yIGb�08��1:^t@�y�IB�Г�6�N�c?0R~1�zj����T�� ��*����C}��y+c���
ɓ3��>]QzС�`�f�5@_L��Ӄ����`,Ԛ���W�̜�tψ��Y0�Q �%	&�f��-�%�>G�,$�l�D`UPFK�M��8J"]?�c9r;�}f���x�(��?�&��m�A���Ps��+�[���о�4Έ�<��@���;��a�086��o<O�n�F�V�'xN`?0: jFgK�놙V� �	:�TY�a�Z蓜�D�7�D�Xn$+?{S:��\�C|����(�p䋟�V��ڡ�*���{H�����D^ߛT�Uy��\��ǘ���6_&���͌F�Q����_��0HΓ�+�D��8���_Z݃�����_�L���` ��Ťɶ.I���	�B�	��?&�
,���&
���5�Z�$�����	P�)uE�(�w+�1�Wg`E:�I����nֲ��c���I���3&\
�-�nvF���^.��m{�VGSE����W��>�^;V^8�
���˵X	s�7��)�
�R$O�ma
c��'Σ����!�`@�L��ur�6�W�GCM,�0C��v�f��8��ׁ�A
�dzv��4~D�qqԽ��$t*ʀ/��@�]j/���}�*^�-���{�x�+�N(܍��|q;Ћ`����3�H��d�j����/d�I1cD뀰���Ͱ��L�h�������%˃�(�3����m���B�&�f��'�ߋ�:f��ɘk���m'L�������Ż�^�0�
����8�i6�G���x�qJY~o�wGھ�(�݇\�]lc�
�pF1
t4�����Hvj��{���EGaua�&b��u�ӎ�{y���3�/��pW����N�D��=��0XI�!f�4���0�\Hq�4YW6�����P�O�M�U}Ki��a��6/aNLȐD�Յc��Go��aa����y�<�����X�<x��a(l�>s�g�4�/>EYq�}�s�UçO#eaf�����a�<��S=�`��=���=f���O�����K�^�F2r1���݃Qs;�����99t=T�x$6s�z9�����ͼ^;�vk$ u�G�*��nܹ��;�g'�Ӂ�6��Q4�/}>%hx_@��{|�TԜ����E��U�&�?�����lL
�s6/��D��Cr��@�(��(
�����b�u��v�{���	<��`�uU�D��,�*��a�u@�zT=	mӗ�&*~Ø�ւ}�Ѣ�v���c�����̲�Q}{��%�rψ�W<��=8��%�(�x��`�=({ʃ켕5��1ͭ�q�,��g'�Ay�O��ġ<B	v�`�S�����_��8R��'v�w���R(�W�uB�M��\
v�y��J��R}�!���w`�'?B�^�a�u�!�W��3Pa��>��ң�w���kC��.�Ý+#����W���[��7��&G�q�*�1�4��4�>��#�8:XT�y3�1���d��A��S\t���A�
Hs/���8g~�i��N� ��E�R8i��n$�y;�D�N��wlr������ ���e*4uº<���fm����/�
/�=�3����/_R&�"��b�uЖ�����	�A=�������lg�IEND�B`�PK��f\§s!%%assets/img/seo-get-started.jpgnu�[������JFIF,,��ExifMM*��C	

			

		


��C	����"��	��m

	!1AQaq"�2��BR	r���b��#�U�V�3�S��tTsWӴ6�7�4C$��c8v�5uDã�%�f��d��&Ee�F��	��V
!1QAaq������"2�RB��r#3Sb�Ң�T45�6�Cs�$�U��%D��7c��?ژM��;�����6+#��n#o$�'���C�5�&���&�X}1�nr����jz�u�3�MIx9�:|�1R�MZ��ֿ���k��Ƚ�xcZ��mjU\��3��I�@<��G�':Zg�ЊOد�r�ziӤ���awLۍӛ�����%V�����|I�C���O��o��cr�N�0��^�Q�k?LǏ�{�1���x����Nk��x�Fi�q�� �8�ֹ�oݔ�/��&���)���0�R�N]J�s旤�!6��h�j:dž9�Z|��הo��V����2����;���S���+���[�f�&��"�Y*r��2f�
Z��e:�={=8"z���(�ӕݍE��^0r�@?�R�J�Ԍ�Ԋ�'�d��4�&�?e�k�{?��{�A�����m�'Z��檧J����/'���{���ay�IR�H�*�|>'ڥW?R�+����� ��&��4כkg��[���V{z���o	pN��w>�N��/�9l�{_K�̟R�K�4����N�V���맅�%^�I�ӔwQ��{�Q�5�ېS�_L3�z�u��6�'=❣U���W[Cʼ�b��2.\����U����^�yʭZ�$�:����R|�m���|�%�]ݷo�e�������9�=ջ��k/š�S�X}^�r�a���s�#W/���d��U[���Z���snM����D�o,��i�B	$�%�.�����g|7�xI^5x��x�*Nr�U<���r���6�=;�3x5���	��q�M�˩-��k	շ�շ{ԂIn�7=���{���U�����g�xz�C8��8����������y-��RF�4ƫ�Z�o���v�/��[Һ�����[DZ�ƞ�>M#�4�Ž4������c)��I�ikw�?f\�J\��L��l��g|�	NJtt�MRӺ�C��V��+Ɨ�;Y���{N���J.D�K��_�N��>n���oiվ:�E��e{h����$�(/����c΢Hp~b05�N"i.�+�k�����XGyI�Y��J�{g9>J+�I�ߪ�V��s#�uNN�;��+����٧�\�&�J+w&�I������'xmg,�ǟ��x��lT��1��:�{:�\����KwO����)l�7�{�W�w9��]|������-���'�ȏ�5���
~��]�u�x\�\ԫ�Җu\��Zu=���V��*��}��j)o'*P׸�sQժ�&wsI�l�;HXi��:PXIz_Ko{o-��8Kgi����WR�s��W����sK[�K�RQP�Op�:�M��ߠպ�������G�R�W��0`\˹�y�K�~�y~����[�|^s��5�Ӥ�T��\*�V6�󸩉����R1p�Ni���Y�9%�E}�h�S�t.�J\ʤ�����t��\���R����B�	ƭ*���:s��2��4��提��),3b�ϻ��XV��_2����o��Tj0�K�4.dk�J3����rk��6C�k��]ymo��%��MIiI���=瓡����¯�ԻjEn���Nq�뮫V�Oo�~���w=����g�L,!=B�)��i�������*34L�c��W��Ej��V��Ӛ^nQ]=;v��1��{�	y�e?�|8�و��P+���z>�Z�ΪT����E�ok۽�m#F����j�nO=-t�Yߺ�?����t~���K��)�ұ����$�4����2B�oc��Z�!NP��VQ�[�I'���zN/K{X��T?��P악Y״�V�֔"�k�[�lǕ�VQ����l
��Gdy�NJ��=KL롩�K����jv��W�.S峄eŧ��H=�L๸��V��+?n��D��u�F��f�R��W2�o�+-�.�&w��+S�:�|)�
�q��J^�F�<���I��9u��]
D��QywR������B�?@xo��_L���,Fk锟֓��ձ-����{���mhT�^��N�*qr����1K�m��F���Y��e9(E7)=�Kv�.��u���m�x�ys�p�R�N���;�?,f�m�>٩K�8-�/����1�.���?q�ou�h�ֶ��,2|�K�WE>ȿf=�R���A�Ҙk�C�2ָ�e�?;swuUS�J;��-�Iy[Is&�WAA\_v�w~7���?|�+�i<*����m��%�ӱO
��V0��>�|�*2�Zo{K��+�~����_����n�q��"��<�o����e�e�Vw���T�

���b��F^T����ۚ�IG�l5wz��ڼ�fx��(�[�3����K��\-�^�ٽ[�4������I/�>�)�|��*��z���nkJS������>�7)���~����=��x���5�߫���V�]���Iw��
��ƶ�z��c���n��K�ȡq��lkËh���iv��..��S�<�^Ӕ��g4�捩�/����J��ƃ�^]�_��~����j�>���=��|��g�K�Y�z:��7�:�I:��Ղ��B+���%�3撄��;���-�q^���f��f�>ma�9S��U[f�-�[�9?D	��5.��KMG���L]�<�ݭUR�H�=��M4�ji��F룦k�n�s��]���=�f���?)naN��s�2ntd��-�������h�5Js�RT��P�$�(�l��jk���hﻙbx�ay�.Xѱ�� �ַ�M:9��a>�
�|��~�58k����굍�[{�z��Z�h8T�8��E�M4���N��V�*�*mOs���{���O�oc�O��p�M��/��2[�<I4|�q3��d/�\�.��h\[\Q��J5a%(N\�%$�k���m<�̢��d�����-;�pڞJ�t�j|+��v�%�Z~n�)vB��il��jEn���M3wh�]�8����Ya�x������NK���84�G�w
��Lܕ��FΆB��ŵ�8֣Z���R��q�Z��M4הɺ��B�v>�g���t���yv�ŵ|����+\��]��
���]��,~0vb=u��
�g�:��������"d��N��&ta���t�۰��%�����O�*�G(qz_���"��Dr�rt��?������zX�t�.F����|b�~g'eu�p�I<6!FI�T(ɩ�Mr~r��4�z\�&���*�
x��M�ˣ����t�.�����8z`�*��٦�^�3�/P���g�^�v[�߸r3�ƿYn��;���w&> B�΂r}.���3��ή��Kk
ӶӔj�x��<���5� ��}o��Y4����-Q��XX)_毨c픞��՚�w~ynߑ3w�G�}���+G���T��n�r�"���픞��rl�pΞ�k���
ݽ��Ë�hzL4�Ib��Skz��K�Q��s��e�4��KYj̕;N&��.���b�$�l�&�c�R�KvѪ^7q׉��8�e���6��*��������j�>�U�ݹ��ӏV�.�;S�q��Qk;~
��iދ��C�_!8uB
��ҧ$�?�RI���w{M�(�gRX'�5]��e�"���˝5$���I��]8�j[��U���=>��8�gϏ���� \+������5;��(A�
i�6�9Kz�&1Ûd@��r�5psF}�j;|=�.�G�^2�U�X�����#�꒏T�o�.el���x=�8w�[%�K�l�)�MtX�J[N�Oš���w�{E)k	�m�H޵imes쭞p����f��<C�q>��CZ���'�iryP����O)?�K=o�PdP\=�;��.�Z�7xڕo���X��s�κ�J{�d��K�d��직�B�Kj��'�"�T��I���S�5������4��oCC�m5�m'�ֺG#�NZ��oZ=�nԣ%󳌔�(�jQi�w�wv�c(�IX�t�ԧk�(Ҏ�U$�h�mغ�M)�d齷rf+��q���n�/�mS)V�u�ٷ����XE��8SK��a����J崆����͝[�-��u"��[��t�SI��!�T��NyX��K����zW�'x�.����?�J2{S�r����5�Q��sZ�Jd�&��h��^�����גMFs�7(��RO�4p�8�\$�-��и�Ԟc$�|���M0>�6��x�=y�J�-t��tEHZ�s{�x���w���q�Ke�F�����eî�~5�~�r���>י~E�x����Ƈx��`�e��9��Ñ�>��5)/i|�6���]�ۘ:Otve�@x2�,Fo�,�>�י���~���o��]!����Þu}N���׷�������[�6!wqJ<�T�\ɵ�8�]!��������S�Xs��_������u�Y~3��;kz6���m�Ɲ*0P�#���H�Z�1�Tb���j����� ��A�ҧ��\:���n+������Q��MԸ���g�j9���b�Z{a�^Oj�f1n�[���|�=g|�V�K�*ia�>��n^�H&@$���p���qW�i����>�/(In�PT �jw��m?9��ӸK��Fn��Z�u��4��O�5��-�ˊڮ��)��M?���&�����>歯x�V��_z�8o�R��_�ِ�{4�U[�'�z�|�r�xꕄ�•v)�o�Qp���xN;8�V����(�&���RU�\|�SU6�#q��9��O%�21V��>��uJ	y�i��F=������_x�7}�0�5���n)��N��U$N���+�Wu�usi9B�K{KV��V��Nk݌��[����+]���},�����[�p�_&�T�ؗ����������.���;\f�����2��\�]MƔ{)Ҏ��!Ex(�;|�~S�9ʤ�����z�h…��)$��I%ؒ���s%�s��I���o�7to�j��+R��%�J(�^��Y�5���阱�Cw��u��q�$�.Խ&�^V�������򎝳�����L8F�U*���~x:��4�ec}��Np�qR�_�L;JSӝ�n�`�I����Em4�o/u��I�e������-iC_h�շ�����/�����%�MS��ϟ3)������U��MG�\�������Z]��]Ѿ��:7�#Z�H=�	�FKҚL�����a�II4��������Y�B0��������ԣ>�Zrk�9�?w�/?ݛKR�Uԯ���6�o�����^�9�^� L�i[��Γ�?9��NZF�u`�S�8��'�,�S�[�`M���w�������'k���!I/q@���o_��9��}YM��{�{|�ш/��F��,��q��Yӎ�J��N�5��Z�-<�,rغ�TVOM�B�|eV�z��Q��ø��.5��~���]�gaE̫o8C������*\-㆏ַu�F��#�&��Z׋�Zo��
���(�7�Q?ኑ�c:��	/��D��g[K�}Z��8A��ʥ-��}��Wq�Eo�{��u�;|��q���kj��v��^�^�6�_��fΔ����Ժ����ַ�n)�/,�IEzY�N�1��vB�;*Q��Ժz�c�aNu|�5�V3����M��xn+��׽sV��tԷt*��d�e
�p~Ǘ#�@�T�鵷���>�o�ܫ'y�񮝶���4�%R)��(��˘�����_wk�q"�+���h�I^��*�8�gkRMʥ���.
��M�f�g�|!�6�-*ʍE���ge�Mbӈ4�Z���T�$�W:|�/)�uֲ�7۟����
i�C�+L^Qt���~���
vV�y����Š�b�n��ӵu����O.�w�l�IJj^E9tRO�U���dۄ�ڍK���.��u��u�u*���y�yU%��\���'�kG���q�O�iMJ8�9N���[�ͧ����H�Z}�8�G��x��ʼkXN��X������Nq�MSs�r�#�uqyV�w6��{��d�n����(ӎW3���s�;��%`l��e_����Jm��Tג^HN�ٯ�H��-�X]����~����o�ho��2������?4`�񆠗ML��R��6Jc���*6v��7�r��s��	6P�ۼvo&�Yh�_�v�x��T�&���8�z����i<1�uO��v�t.�4�K.�P���w�~^��oQ�ݷ�3�{K
\���U�DS�'�[��w���ǹS�X�2�d�B��i�_�#}���R�w�;��5>k�����>g�š��MR�鴣J<�㗺+�2Yk����n$�/Yp��j���`1Vp}�zU.$���C����(֗U<孺�R���딊���9�;����;�'�)��
k���NL�q׊����v��=�]�i$���ޥ�Z˧v�Y�^��ʅ�\�ͿNOr�줰�G�{�^���1q�{H�i�*�W[5��E����íC(QY����Tr����~䈔;Vϰ��6x�ťq(֏4������eu�
��_q}O��OT�HF�9�FiJ2Ot��O��J��]��'��5��OyZ���^]�K�����x-=��O�����эIO{Z��M��/�f_Ὶ>�%B�_D���=��\��F/�v��9��տ�z�[ �4���(�Kོ�`M��r�������f*]m�UO�Sܨ�1�ô���o��P�l21�X;g�ۑ�Ě�?eyV�9����v��r��<�?��'�;�q���;g��^*��IB�+'Kyզ�������vm�s�S�j\��ƍG�~"X�������a{i&�JM���l�e���;}Q�r�/��?_w�ǟ2�3��E��{zo�M�|m�}
kgS�sf=�S�Tp��CV`�'%_�~ik9>J56����8��ռ2�q�Z�ޱ���ug�2W��w�r�\6B/�U%�Q}*c��2_�l��F�\V��E��{����oeR�E�U��T��׺�M7J���g���
��Mַ��jt�}�(?{�VЅҊot�J�S��&��Tf��J�#���r�GD��<z�G\8?��,��pg�J�M��|��6IKn�/;%	In�|W���w�C���x��nޜ0ֶw��jո댩֦�&�a���%��v��c�{�G�^f�������rj�iê��/��Z>�E��]�'���.O�
�����U�!�c|�vW��
����.�I9��mI.O%��mۖ��ϒ�U�}쬯2W�1��J�WWUaB�
�J�jI�B+���I%Ͷd�8�G������Z�1s�UgJQ�O��{B��ɭ���}�t�<ΰՕ����Pj7�v���ҍ��M��N���ܢ����t�"��5�X�L�;��ِ6����]������i'�7�忑v���S{�~�ۣ�M+�AF��~�T�2�������i.O���5�;r�bϷ|�8������U=I��W��e�H9Gj�+g�T�-Ԗ�Nt��/��
4O4�֌�8����&�V�Q�����Z��}#��kx�J-���f��;k?��?m�n�w�t�ۈ��\M
o���QNj8ܞē��?Lb�s&ސ}@����
e�YONjJn�t�W��Mƍ��R��R;�:m��NQ�e*��u�΄�:�[�ߍ;P�խa{e5:sY���}
<4�M&��7@�~^P
�},�G�9���i\��O�Z�%��D�#�q
<�ٴ�Z��:�j��*���9s5M���M��M7NƔ_�^{}����+�{�Z�h�_����`X����.a�}n��7٪��h����d��c�]���k��+��6�t�go �K�m���f�|zc�ב2,]��_�ֿ���qsq7R�j���[f#���h\�3Ki�~��y�s���/�h��1qq�:���3ߩ5>wWd��9	�\=��
Q�G�1�v����X[..+]Օz�r��[o-����!qP��]ӎ��s��bl./n�|4)�ͯ.˱z_$[Z[�^��F:�+KM�U��}΢�E�W�'�Ө9���+�O�-��W��K5�WO��?.�8�*�^�$K,?xk��]\,�U#�����o��h~���4~��J6:cn��VT���d�?�ڥX�]\BIJ^
(j�]�^)�O�z�C��O��MK�OrsT���Ǣ�*�q�J��G
����p��؉o�8ZƜ��	?�گ�N�1����/4��-���I�Ɵ��@����z>�2�����U.~���~��2���::����F�wuc��W�pۮ>��K�Au�����V�\�A��i.R�yqi��^>L'��~G�`�5�:M5�i���QjX�3�FkCΖ/*��{�����l����_���F�d�7��X��-�+�K��S�M�~T�jk���>L�F_�n$e�w���:�1�^��ߔ���~ɥ�?���ɯ��:~�';w�I�?{�:޷�g�F��iַX���/S����& <8\�7P⭳X��\Y�T�R>+�?#Ot��i���B�Jm8��kji�M>fc�E���a�=��MEJx��[z)*�p�u<_���Az�����nS�W
g�^j�/gn�d��|���1꛺�~v��j2��Q�k���c�'�to}��5������|�֣����d�;y��v_}2]�G��;�k�ﺕ�4�x�cn�VOq7�{�/\��K~����jQn/h��3��<�=+���f������;�-|'�X/���f��|�4�k;��}�����6�Uh֣Q¥9���d�i�⋭/\���Zϣ��ze�_+��4��}��?y�W2�vr��T��ka�������ڋc���-�Z^�½��(M8�u��
ݻUթqk����z��u0�	Ҏ��J�]8�Db��i�x���Q��o쵆>�P��S~���ni�9I�EQ�M}3�]ROW��Q�j�5���{����BR��'P��BI�2���L
?�0�B�z<�(�ѩ��q���r�������]y��������H��ݥ�B�ޙ�j*Ԛ�'��N�S�ӥ���z%�}2^��g���]_��̥�o��'�?�ͭ�
�&J��܍{{|p�g�=�ƹ
�m>���ަ��?����(�w�8�I����
/����x[N>�*V�6СFS%�γ�Wx}��ima����n❵���uUr�(Jq��j
��Lw幮.%�0N<k�U��z��GXU�;bi�]J��T�Qk詪l�����K���{������ש*�*��R�nM�[5n���5ȴ�z��ܷ���&�z���r3���6�v�O�ߵ�����8 Gr�{�Ã�a�s�m�y˙��F��O�P����'�"����QUi>�ҟ3�m0�����5��K��=���{Cx��Y�xǣo4>�ƫ��n�H5ֵ�j�ͧ�R;��4�q�q�OQ������5%7u��뫉�R��F��|�\�*Gt�M���i��2���C�|,Ѽcѷ�\cՅ׷N��kZ�5
�g���Ϛi��8ɧ��h�ԡʎʋs��m������{�	��5�;I��1~|�b�]I�@��k.��ZoRSwX뮺���*n4o覷is�ҝ6ۋi��(�U���Q�	�u$���~�k�Z��jt�-�z�xi��M�n��iisuF�ʄ�\\T�*Tු�&�b�-���}w"���Oʽ9��M����
y��{ו^E/!�mBW5�F;��y�Z�KD�k�U��(J]�O��w�T����6�і���v���+n�3J0r���� :Kdve��B*1܏�j��qVU�<�M���m���� ������U�IU�����:��}1�.M��2b#�]�\j�ַV/�md��g��J���'�1���q��ҝZO��>.�m�dV��.r�EӿHܨ��Gk�w�2a�l�G;�����qyyQխQ��"^	-�^	$y:�V��Mըۓm������i�c����pτY� �Wէ<~jwn;ʳ]���k�r~�����
'�/�_3Np����M���_��dW�Is���v�-�����;[J�ѣN�:qQ�"��$�$���~_|��5ꚲj���s�[�P�F��ߢ7om��_7��v�N�њsE��;Oci�A��*|*���No��ȼ9����6��U�g���irs���R�)?�l��߼V��Υ����6|�S����=�O��Ҍͭ�F��v�Y��|4�qذ��x�dV�N�զ���{�z{�!�F��sKK_GsZ4���4a��t�u�pz��momZ�~��2'��^d��}���ws7��\T�I�Ɠl��l�o�Ě�Ϋ��j����'��^�MC��j���%�d����S�L�����O[o�,�q<W��nj�?Wc��d+Tt$ߑ*�-�wR��Z�
yMG����Zѡ
���Sy��%�$�d_���4���My�6x�L��uX'��\g	a��{�6W
X\C�B��:i�A<c(�*Q�jKt���!V��Z�GU��r�ڒ{�i?9B^�r�}ճ��8����ib5=*X��F�N�W��yx(����ܓ|���44�vq���
�r�\����,�I.Ҏ��n�өO��޻�Y=<F�^W*�L
���Ky9�;P����.��<��Dj�`��o)[
���iyA�T��%�J/��D�1.#p��,;��Q�}A9Y�(�:3�?,�|{y4���-mu�r����-�[#>��)>�,&���9t�~��Tn_*�+ֺ�9�rvs	�әk�f�м��EHv����i��xN�֣Rޤ�U����i�i��3 FJqR��e��N&OD�+p�'Q*�O��g�U}|��K��*H�kf�L��גԺjZ{%_�#��i�I�Um�*r���Qo�ο(��N_�/%���o�P���.b��b��i.�{����τ,�5��|˃�o���|�5'��8�hF�i7*I.K��U �oJ�}����o�8��j��'_S�WS#��"��)��|[-���R�Kw:P\�e&�`�����{�z�FP�Iű�n �n%��N|ɷ�I�l�7�d��Ldw���=��w����[��m��\Ϸ�6�~�G茼�a[N���}���g��F8���1��a��}hK�Q~��Kc�k}���;��8=��?f����o�-�$��
��x2{�:���EU��WJ|����p������5��K��=���{Cx�8W�xǣo4F�ƫ��n�H5ֵ�j��g�R;��4�q�q�OQ�������%?}c����rԩ�ѿ��6�>���)�m����2�����	�g�kCe�)T�so:���򵾄[�Z/�5.Om����L��t�j4�㲢[?S�sv���1n�2�[W|�J�\����q�k��%��f�@�3;�
�}/�Bp����Z�Y]oRT��R�>���l�:ܪU�rq�?!���R���W��N�q_�sW{y�Iu��'6�8��)�ɛ������P��[R����4hҊ�)S�J1�\�I$����s���ض.ޗܶw�t��ű���Ö��bu1���Η���}�����t���gN�(��l��֟\׏�-��q"ZJ)E-��g�~��KZ�ӛtp֫�?��9~�S��S�O����V��Q��(|�m���L��֊��2{��� �tF�����N�JT�g�qY-���9�����qGI��B�+ST\�^���zm�p��j	y:�T�)��T�7~�k�g���S�Ս��x�{6u{������ػ_�yg���.�
���K:j�*q��[�o��������U�ٚ�4i{0�~j��ӂ�m�M��i-����
��TTv���ce*1O�N{J��Mr�����EҔ�%�%�ӏB�ߏ���/��i:t�K�M�+l������kms�׹w���ڜVְ��V�~^2~2|ߡl�<v	�ԙ�<*���UJ�{����[|�Rr~�ΧV�w�]��[�V��[m�/BKrܰ��c
v�1J1��I<^+'�������/n�4 �&�[�%�����V��RU3YL~)Is����Z�����Bh,������ZiJ��q^v�~Y?�b^�~�G�tޒ��ޣ��XS��v~����R�3։�K��U��̱��\�G��c}o)gvza�|Kq^����·�������|>|D��/��3ݽ�.���WL'��������gն��L>s�Q[�T���/B�Q���}j}_��v>�SQ_�KZ��o
�fu7����M�Q|�ۑ���}?�-]��Z��[u:��R]�~��3�xO����Q���y+uLO���Nwc;y/=%U���XQN����+=;)��k?��=ᨱ�
�}��v�Mo�Sg�i��O�2Pq�Zi�.���/�-�Y��mUn�.k��nq��Ӷ;�I��%��N5��>�ݕ�j�����ɭ��n�<oI��&�����V�C�]?m��~3��׷�ھ�Գ��+ڲ�T%�U$�`�#'�y'�g@ƓM5�|�$���ST১2��O��oyW��ߖQ~̟Է͙K�gU��е�X������7Ӆ�/~��"9�ZDi�yAa~���yϧ�uW�z�o՗�S�Ҋ��-�9���Q��x�ɦ�Ot��y���>:3\�YZ�豽^��Ir�&�T��jI/'I��!JP�m��SQ����~9/�&sp��杝G�l{:W�w�Y���VOEk,vu���T��vJ�{)����5�1��kf�O�0���]:����JK�<�G��+�J5�ʔ�5��O(�I)E��c^'f��E-IüU�j�w6pv5ߏU'қ�t?t����;*W���H�.�;�Wq�.(�ެ��|[^o :;���ݮ�
5|���1�imIq)]ҥg.r����.��+�8�o_ViM?�4�GH�e�'+o+k�j���s����Kg$�M&j+��wK��Y�u篴�Bs����<�S\�*�-�hn��-�I-�����j;�+���~Og1���1a�Z�Bԧ������ ����l}2�R�ԊtE��{w.晴����m�o��]T�#mq7�B��F^� ݰ���UUi>���3�l#Y�z�򰿏\d��%���+t����z��{zʧ���\
�SQ^�Ҏf�ޭ�ϩy˛�Gh�A�Nr�Im�(��m)�k��#��v�”:V�+F�4`��4��d�ࣲF�u~��y絎��f�5��o�g^�Joh�&�����^�\�\'Eƌ�]8��n0V����(U��;xI<EK�4�p�)��'���+�=�}�Z�����w{{Z���`�R�Y�F�W9I��K���l��tz��ی|L�:z�^KBk�j��W�_(�Ӌ��ɨF��>��]R��̾ی�Ɯae�zd���f�B�9cb�[�[I�=�;�Z��<u�)T������iUI��x��
JM'��R�%��J��V�!mJ4i�%��f���k��u�r�Tm��\�,$�Hb�0η^R��U��ykl.�vx�y�6���h9y�Քa�J��J\��x�c5Q�|���W64_�R�D�%y8�9�7ї�"3�;(M�BM-�����5�c�>���ץ_#F����:J������\��{����ִ�T��I�n!wF�Y,�8pt����v��p������Z�:`��ujF�9T��}�6����J+��:�,�ڳ3��r��j�o��7/�Q8��K5
�zV��:+u^wU�^�֔��km�I��N*ܖ<6{�F;_/���Z��}qN֟�NJ)������c,-��t�-�(…(�!��"%�W��t�GxP�V��ғ��Iv�#�%t�Ӱ��kl���L��OVn�:=	g��Њ��z�zg@]�֫��VKFI�n���j\�DN�%�[%؋���Vus�L"~ŵ�K�����Wĩ��)S|��g�qJ�h���/6�wÖʅ�g�<�r�@�;����L�B��e�ږ�;*�r^�Z�YQ�ow����
��j����
���RS��Tf�����*Q�Ės��yk;M/6���b3��U
��g�$� ��ԙ-]���J��k���{�4�}��\�/v��M��<���a_��t;�ums9Vx��S�JRm�NOٔw�d�k���~lh���cE��s�$���b�����6���Dxj��ִ�v�ia�5����2����;�7����yܶ��Q�a/jZ��{���%�.�E��Ȑ��O��^��z;��b5�ku��e�R�K~)u�I�Q�&���I�L�p�c=;�%�ܽdz3��j��k/u;�˹�ʵ%�$�"��.Ē<`ʭYל��m�M������}e�b��b��2.���e����*W^Go?f���d��qF:t��%��ewWO��wA�p���M?�Sg���Z���sX}��Ou�Nw��F�K�8oWv�M��������>�^Y���ԓ�J�4�RO�Ԃ���Ŝr�p�QZ��M�K��T�4_,�"�O�xf�%l�K��y*�|���R��!����%��
��A�c)�u총,���BtoiG꓄�� _`��y�n!W�o��.�6�ƥ9/�rO���Wv�f�e��{����c~#���k�'�ȥ�7t�t����ب_c/��>U(�_�9v�q|ԗ��O&��5"�%��k{���c^��g�iᦶ���ѧ��=�u�w���:�M-yU���O�o�Tk%ʝd�c�$��{IF�7���MS���ڏk����tnmni*����J/���yM���s�fwZ����38�j�\��}j�Z�'�q�(��>
^q��V���n���y�Wg:��;c��=��i�C%N�Ī=���tB]��{�^��qoqgqV��J5�MӫJ�\g	�����i���"����k(�K{{�ˊV��*W�Zq�J�8�Ns��1�\�o�H�U��#q�<�>ӕ����u/��m"�z�W�l�K���Q�|���l�g�8
:�-*Z�Y8{Y*���d��kM����u�%��Rq-���R�b��?w;�6c�6���p]'
��
|4���9=������b��os���IV��l!S7�N
�R���c^�vJ����|��{*se-����h�RT���/��vtÉ��Q��j��-�K��=��\�{{[opm���8ی�}�l,iҿ�7����$�E(vy�sQ�=��ɦ��6���uJ���r��эY8��oeI��[�I�5����k��G���S ���8)V�����ɨ��.Ε�]���j5�:�1��OK������q.�WL�PX��r��۳�e����9�#��ꗨ���5��K�oo^�*�-��\�~}[���xx��,�mro-V2��q���TK窽��o�$�k�w�]��]��?M��|ʥEV��ZI*��~zy�9�K�2��A�OP\Q���0�f��k:�W1�8�tR~
�|�kR�DԳ;��n��Ķ/-�s১i�iX���Xϥ�Qok{_���߃wl����	R�|�h�^���8o��S/~���^�^B;���Z�7䌜���c�x=�8s]�i�;�:.ޥ�z�Zpm6���&�QIrFI�0mS���j
W��ģZ�M�f���cO�I��Q]}�S����SO�v�o>��OЪ�i5lj�˞{R�GV�,ww�F��Յ���n��wN���I�p���}���E�.Ì岚�\i�	V�/��Z��N��=�Cƌ׵�<��u�t�
���>����-�+ʒ�m?$T�)��������4d���t2��mR�$��l����k���
[n�*^莤�-������wF��Ւ������Kʍ5�k��gN�'ׂ��x��[m-��]�%�+l�YuU��Q�.��7�G�u�et'
��JsR��q�{�������z'	��
0��Fꓸ��Ҋ��Kg	���5��ͺe�˝��j�W���+PǫF����Q�;;eڟ���u��-�[���m�Z�T�\�V3�9�_�c[vm7�
B�����g[q����v���ً�D���x��i�j<�"���+xP�X=�N5jœ���Q��~��oE�V��K��Ṯ��δ�E7�q���4�N�"�^���:�3�e^��4涋k�E�����y�5�6Y])��}F��*�'
�e��3���_�s��׬cEBQ�V�/Y��2�g�6�S���Ӹ�����TgR-�L��~��ɭ�[д�J2|����^�l��@��.����*�\�4�g+;����&�:; �B�����r]�x��29���Ҽҙ�8��q����r�$ijqs���p����nҭ�ץ�?z���7�8?,S���w������i�K�1�-z���M�����V�P�Sm%sF懻朗�	bv����.�V�Ry�Q~�qJj�?�^�-w��9�!�]��񏫪��l�Ks�����|}�P��F�eN���'�0gS�>%�R���K�y)XRk�x?T�T�Rhԝ:��	�N2���4�cO�g�$�^QdHnw���[������	B9�z5�5��]���{_��\�W�9+h^c�(][�[­��$�[�ACՍ��05eu���c���ו=�{=��f.��}�Ӎ��O�El�'��9��^;{Ƚ�Q�';yr�޽k̜ըҸ�*�B�9���I5�i����ugR8u���e|{Ty�a���'ߊ�����v�7ecB�ֿ�kV�iJ;�T�&�%�-๴�o#�þ,i�!¥��jYd�C�V��ӗN�uBK��K~Mr�-њu���A�*���g�I�ɓ[��$���J�ޏ�(6����s�Zh�|E����Vq�bg%^҃�Coe���߃ݧ�O���%���X\c2V�kuNT�S��(5�D'ԸI�E��T���U-�9.s�~̟�./�0'̞�����g�Tma���m�w����Xk/a3�uy�1�:�^=<���q�Y��,�
)K�xX��wQ^�|T2�_=)���%��O�ljc�a����iN��m�9T_$�O�w���z��on�]���9%�w/LNۅ�*��n��)�����=3��B�|�
�G�%Ҕ|�`t��2�bp��z^6�I��J�,wx��~$Ӫ�+l}�W�ߢ?�����8��o���F=⇛俕{�ʤp����k�<t�;�W�v����y�sTo#��)�g�$�U�[�8��x͡'[!�<ƶ��y'd��E}�߷�^nSo�Q���Ҧ�E��̧K�l}����<+�7�xM*6�}��wS2��מT��r���![���㯭��Z�֧/$�4���y=�ut7,�?[�Fv�SP�BΝ7�k��n��@k����RNU����1Q��q�R���p�U9z"�F.8R�4&���?z3����=�Tu[yїK�*G�̗�5b	�W7�s��x�F�����e�N�����,�8ӛ����թ�9��ӓ�=���U�B�a�t�f���|��륕}�r�}0"%�?�����ij-
�F鯒ٜ�#�aqF��DҶpo����ܵ�R�=�3�tMBO�z�z�3�>�yOP��9M�(�zM���}�m&��x���G��cF��ޣ���������h)S�����%y����W�mvK��t�1�7�p��G�LEu��/Y�>{p��j��W��ǒ�mDէ8!Ŏ-\F��6S+IˢWq���)�ڥq=��:��&L�
�-<]��fx۩Jki|���t�z�ܴ�Ml�q���\��9(УoF�)B�*qP�!��I$�$}	��[�*��ؼ=lÜK�È5�ʆ���7�~)����خӈ��KL�-���8>2�mJ�΄iS��{.�>�'�o�m���1QX��0�Z��7R����[m���m���xn�<��l^=7����ڱ��gwč%j�NJW_;B�����V^kZn��n�|�QO�9�6h��\~�
�'�3'{y��8���K��GZ�i��u3Ŏ����<U�;X�VJR�7RQ��'��ܢ����AUcoB��95�<��[_%oe�t�9�E%���<K<#�nS���򑋽��vw�MKBN�s!)�V����zq��M�JP�~*{|����m�KX�m]��eK)siemaB�&�¬��y�7��l���>6kZѽ���-p��J�IT�˷e+�Ge���9�4J�mh]׭�n�2���ҳ�q���z��BvV�%'���{�Y}���t{�S_FdhdZ�
����6��.n�#�-I�o�s]�����(i�`�W4�^��ʝ�����D�io�1[���I5��O���1OE�.��%���J��u*�oR^�ܟ�C�#�s]���t�Ws~�ؘI��tcQ�KЛS�'�~�W�ZR�5:���ҋm�fV����,��*�U���(����2�\��=���'������zتu_�6j-���Y�+]+Ў9��:B�;܆�ն;�c�*��7���,��9ᖘ��3i	\�+�w��S�ږ��Oh��(������e}kJ�޴\*R�8N/�J/�^��\CcF^ʅ�]5ό�'���pC���G�W�����o��/$�1D�{��-Qo�uݽ��J�J���
�os7�BQm������M�{'wf喎�x
t'�V��nT�_��)�ϧ�m�}���<8�Z��9S���:��K��N�_�Z���d�$o��ּ�;'��*�G;ڏ��ZOe7�$�2f��al��ԬW��Ǚ��Mg�c6�]B�ש�_��El�K_�i��ݨ��Z��T����t�W,��j�mY֔ڔ$�]U6��)��D�������egB�{zq�J�8����1�]�$�DO��u�N!���w��ܚ�y)�t�ӹkj����v৺]�f-}�
Z�&��M��O'
����J�2O�.�5�4�U����\�o�mXݻrE�|�j�jWTe,�륽,�;�=퓴���[\����]������sYS�>�S�8�������Xℭ�J��Ŵ���mq�0�
�I��x3�Ln��^�s꽖B����=	-����ٞ�qFN
J/
���\d��5'u!�S�����{	I����}�Z1�U"��ߦ/g۲�-np|9���u=��n�'B�;m�JrۯiI'9�d��I-��m� ����G�%�����}�K%�
i�wI���&�b�e�F_��8�qp�wR[5�G���h �OS����[T���m%������OČ��O��N4��.k�����`'Gu�>ZV�qe%���=ɼy4e�J��+/�I�m������گ���i�_R�U�����\���k�ZRN2�kfK�
굫4>�N�������)����G�^�3�m^0�s�M�'�K��E�����WF�ߵy�Ż����4����)��v��[h��MS�H�N|�*�9���diy�k�3�V>.2[=����,�v�Ig�t�M~ogQ�Om�X>p�����^��-vڅ=b��*�uN+f:>qg7^*�����]��'e�O���u����]О?8��S�[�5��]���<�^ź.�s�_S�����$����۳/���vte^��`�z7a������q�)J�^�G�o�m��I���g�%�'>G	����arX�{��T�o:iåv$�6�k�e�Oj�X������ńe�T.�{�	������3'k�'�>MM&J�p��Q�+���i��)��;�.(���r�;:V=9��w���1���5���6��P�Գ��m�qZ�K�4�Ԣ��9J��!8��'�<
�檰��wS��|�q�9ǥ-�7ֹ��zt'���gm��9ׯ����Ԫ�k�6�I-��I/w�9ո*�W�*z��m�O9�'�%-��xX�2S�j�mt�[o��K��d�;���+�%�*�v�W��/��8B_,Y(u����=;_5}(ζΝ����z�{1^��l��77�5�.꺷'Z��l�&�'��?��F�J��\�.e�G=��زm�S�kf0���3׉�]gr�xK%�|�x[S�9���%�~�y������F�����>�k��굵J���������/���-V��5�O2|�[d�6.��F�yiW}g[����Ά:��k�ԡF�|��I/��xl�q�9�b���V捤V��T�����k�,�2w��1�j�zڢ�%&�m��*l��銂�7$vo��OE��;׳����O��������O���T���L.���T�g3;r���j���ܟ�N?"
���
��HmS/uR�w������m%�E�w�ޞ����%�$��ܗ�$��u^��[��
���5*@:�(`�u�;�}}�m)�\��?
�Ʋ�
�?�5�>��6ꥵ�ZOg�(&��(����э]������X�غ�Q�ղ�wYi;}Oa�tӾ�����=0�࿑�){��+Ե��*U��¤%�/��ye��75*P�y
�X�I�r�fՆ�R�z%k;�Y�N1�w�/��=���B)�t���s;�icq }�lW����ԏ�ooI���95�J?\`-���b���C�^MY��=5�����Ϟ�Զ^ᐾY�?�u�ך�h�7��V>m�⇈d���{�.��1��g���	ә;-1�Kl�n��k�ԗ.��JN�z�R�&�o�l�ؾ6p�1���/m���V���=�,5)�1���ƦN���U��jp�I9IE�P{n�n�Ŏ�WR–[%k��ʪ��^�)SJPKxJ2ofԷ\����t�"�8�V�(��{�ޞ�і��0�/b�M�9o����tt�3�HF�&�$�Ot�� ����N���t2���u��iB��RI{������8e��:���)�{V�TT��C��P]�a{�5e}o��Q��Z��^�	6�
�]q��9.O�}
1����+�9���W�y\��W6�ڭ���S�&��������.�X���1K�Ž��5(P�ZU�_
�!��>�N-��1���6*�U�k���Ϣ��Ҥ[~΢�"��q��t=B�_e��K)���{G_ӫQ���.���V7�g���d-)�&.r^��˪����Ѩ��[Ԃ�dz;��֥ì��M�;��iRO�4`�h����Z׎����b�_]��c�i6�ZPOv�/"ߪu�lI��􍎀���+eS��>�MJ�[:�r�Q�:���ܺ� ��"��7��|����Ժ���j=[Y��SX��O�f=}K�}5��zRj���X�eWR4���N���JJ-�5�|��dn�1����;
%����e{V�5N�� �8�jQI�߃f�|�n+qv�j��^��b߄�E�p���2��OT�G��iO5�
P~0�Ʒ���dش��tGJ��U1�N:��M��V�Z�R�5�ִ���<㕞g�����=;纕:��<'=�j��eR���L��s��*LJ�F�Ic�]Q����QS�)Ԕ�ڊK�O�H�Ȧ�^77u+Ct���&:e��,�P��1I���oS�����=SmOz�z��]��ZM�/L��ȍ���cl��VB��mwFt+A��$�k�d,�zj�Hj+�9��U,�t£_��|�Q}Tv~���:���k}
f��*�uN+g�G�$��UJ.�Olv���~��,^k�h�V���1y��z��4����G�[�����i4�[�ڌU��%�-B�py�k�>���oQ#����Q�����'�[��^b����c��
�J�k�'��w�&�bm���ݥ�n���:l��\�E|�jE}tV���)ۛz�W�W*�E��
2]R�ڟcڙ����Q��ש��Q�Q�mZ����kQ��R�H��Og'�4�V5���Y|B����U����|���d���Z�2�c�S�����O�w	.Q��7�S\��u.��B��v��U����r�:uW�\��\׊GZ���u^���.�y�X�c�8�	w��7�����O��K�/�}�.]-�j��}e���%����(���I�rOԌ�ێ�-���-Q
��kZփ_6�H�u-�Z^(�Ӿmq
�5N��T�g��.9�F�~��.Tsdz�䛚�Wi���[Qd��J��'�S�n.J)A7��n��1���::S
u_��k��(���9z����x��/tծ��Zա{N�����Ɯ�׳&��k��	�Ҽ�w+]
�.L~5�->RN[?�Ҹv���^E�gf:7z�_Tj��ɼ�����m�i�.�tc�0�����6���IyYc�Z�Yԥ��W�{I׫
�W�����9r�R1=���qE�ʭY����'�.��2�D��k}>�f�b�z���}��n8�E:64���ܨ��/,���|�/q�~m��[F��ΜiQ���}�����m�}9���OG�����{.r��l�e'�����lq65�Y+�vֶ�u*ը��"�[;C�\m��r�Y)V���$��VwEom�/kؒX�V�jj�Tb��{�[��p�@�vzK�g�zgV+�Z�o�j�O��M�$Sd5������}{^U�njN�j��I6�'�m�w��u�=A�j�,]�U;
�_mI/��˗��y[�����*�����ʏ�?Ÿ~1�]d�B�?G��T����̽}}��a�7�����;��ׅ�?C�۩�ݿBg��;��W���wԶ�AJ�Ծ�*��{	�g�#�+�T�=Z����d����l]mڍ�lm�]�[����E���᱖��t��P��%�"��Dz�;�N�N	$��Kb^	�Mɶ��=�
�����"�fJ��jҪ���5(��Y��������?:d�^�>�C[��+��s����
�:5�����#�)%�dmօK
r�"��K�9��=Y����g�K_B���t�����ש�z�Om��$�g�"�.�y�����f^���o.�����9�f�%)Ig�
�m�\KoF��eN	>Rܒ�|��@| �8?�m%�,MF����>�V0��T��-d�B�l�8��dߡ3����f'R���ԩ$�O~��������j�	�E��M�3��Δ�3M>��s�����+���hЏ8�^~�_�/�z� VkE��g;+��2�O�I�5��6��K��UUjOj��}L�<�٦���[4���x���O9��}����|%��^_/�s��z۷�:��:�_J��g�2�z�5�s7�l/��Uj}��z���i�Wͬ��:Qޜ���>Ծ4��K��	1[�7R=�Z����d���n����|U����Ꮟ��_�{k�d�Ac��~�J#�n�Wq�uhj�'��/j���S��}t`�S����aIr�I%���V�WW�=��9T�4c)?�g��>�}ج[V�� ���\5�۩�����;�ը�<����ۮxy��>̛�
7�ا�V>(�À���yQ��c��x~D���݋;V�8�kkZon���X�\�SP_\[:g[h�ik+����x�*���W1��ӓ��6)]P����������,�[T���	Ex�����i�3���C��<\����Ja+¦^R�h{^��I��/�NQ��	�>k��ז�/�+X�Aʍ�9R�'�$�[���S܃<E������ZN~��q�&BT�8�S��c$�K���Z涗c�)�Jv󺔪?�%𧻭��Con�U���aM~Ϳ���]�ͤ�d��8[y��/['��Գ�7Z��Rj6�⟛�����r~W��v����Rʶ;%iF����Z5��өڥɢ5�;�]V�6�p�{���;��}�Ki.^r�ߪ���2ۧ眶���O�����5������#UƵ��-��NR^nN)���q\��;�5J�K���6�u��ܒ[��{5��]v��s�[_2{��lK8��HMS�I�gu�5�
M�{ڥ%wB>��J3��u5�8Lws���,�e*)�5Br_U:�K�Y��C�o�z�iI���p���ӻ��8����])o��M�󽅕�r�s�2�60��j�ӥo*�mT�J��]I=��߳��}���V2����ۏI�KO�o�KP�?�g?Yc����~�ᵜ�t�3��d���iyˊ�vuM�~
�+��ki���`��_{d-�Z��U'�8��i.i��2�N>q3�O�$o:����Bj���\�Ԟ���vO�3��xMA�����\e��*r{�X$�j��Š�.koe���+pޣ(;��J��g/�vy��g�qP�2V���Kvq���nל��b��6��Oh”�+�Eeu���=��[=�^
Qr������Z[a����FmR��MZ2i�޴yN��
/�[5ɢ�{�9^1j�J8�]X�Zԕ�"���kN�I�[ss�Lv�{E%�d��O'�
'*�y���u�蛕:rQ�4���NK�=�6Kg���ѭy��s.�Ӟn~��Y�����j6Y�����ю|�]qI�t� O@Uq�՘X�,=��[M�/j�߶P^YE�(��]�-PUkZ=��aSO�_�z}]i�]�sfͥ�K*ѯOz��]�M4�{��r�τ��\�ֺjռui:�������V+��%�c�i��\A�]����oչ�J=]O�<��m�VW���Ԟ��۬�R�V�Zu�U�*���S�	8�Ou$�4��$_
��i��?��)��VУ{-�J�%/T�k���#�i5�I��ͮ����o1Z��u�5�%�u����P�i�*��s�_nby�\�+���?-aoymS�ѯMN�dWМlպ*�+�e�t�J��mT�%:��_�-דb�Ҽk�:�0�����˓��mF[�#&�%�KA�=��Ĕ�)�S��8T��Ro��|� w�%儹Ir��c����Ӏ�=۴nJR�����T�d!/?E~$���I#	��ǫ)ͬn���Av:�FO�Jk�$|gEJ2M5�k�����P�o�:��I[��p�Y^	h�څ�S�jO�ڸ�)m<����ds���r�e������Z���No�֒�uٹ�o�-��t�.�NMx.O��jXRK�/�aZW��IT�Ֆ#�w��񺾗�����k�/��6<9l�l�3YKK+n�i��[�oЊ�Xw���Fv�2�yK��u^2�mJOi�մW����{�-���
1_��O��2o������j����;ܻ����Z��Q�t�2�_=��ikK���9K�1K����E�(�g)�+�y�ƥ����ڷ��k��]�o��K�bڗT�
_�����u/+-�4��t��\��\ߋg`N5��u�q���t��~�;���7���:
;���y.ξ���c2���'iR���j�0픾�Ism�I6�eN��MS���xImm��"�MEe�9=�rZ�Q[i�jqu_]z�;�z)���վ�xɥ�L�.��6�LUF�ʔh҂�/�o���1���LJ�?{uB�'w�R��+��!��Gv���}�fv�����غ�K�QW��[��\�ٹ�]�HV�S��wu�WWh�
Nj���o�*݋��_�}k$p1^�����WP�W#���#8�K)ssk#��h{<�zs��������e���xs��c�M~��,̔%�_�����G��\q���i�<��pj���:*�����~zR�"�����G�O�O������&<%�}��y`�)��L�JDŽ?�O�e�L~Z��t;g�6T����#�@N�@7�o�j��c(��T����~�7�з�7�kkd���N�#8�l�%�h�q?
�q5����kl%����=�]+�&Xi��M6����ҹׯ��V��|��X��j���W��I{R�^��ˀ]Y�ӱ��kEb0���I/w�f�Z��RU'���@�8�W|m㦄�6����w���ꧏ�Pi��UKwq~u�7��u�ݤ��Յ:��ͫ�J��ps�7��,����e��ɜ�rؼ:�/��Z��-)��WU�J�.�Nrj1K��8���􎜫_	��$u-�6���tl!/, ��Yo��S�!���q'�ZUu%�Q��e���%kA|��]�jK�˥A>��!�Ԩ�;?�}�sy�ô|�.����G�jo�qx�z���:N1�,�%w��g'V�_��X��<u�Oz��Eѥ�g��}O�VK�g/W �Z�+˗RM���<���zeoeJ4�#䗋��e��7G5��=8ܞG
{K%��\��ЗU+�j��V���Qi��`}M���(Fi�K)�K�]�8���ѳ�Jz�Ohʆa�r���u�:����^�u�3������7��u<6NQ�V��|�讻yE��qH���R�)ƭ)����(��k���˻ ��iI�������U�x��F����N�I7���ܢ���������1��Zh^9�W��ۍ+mA>��v�	\����E�~��N�,o��vV�,m��K�P�B�
��:�䓌�%�Qi����'�~�CQ�ˢ���}��K���x2�躌>�D�\&��C�ėZ�>�|���պGO�|}=�q𻳯���9��8Is���G2P���N
nh�:q�	���29��v6���ƣ�O!��IN�ڜ]+���
�\��g��]��c�e�����Y�^b6��|�a�P�e��7o5;��FU��'wG~Ξ������g��Q��\��=�}[�w�'��ӇM�f3��\]k�;�
nrQ�u)7ҹ�mE��x6�����p�4n+��:�b�B3}�Kw���zL�UwO�y��n�Vel*dn��ԥ*4kS��M�J<��wod��E���;� �*C~j��(=�rr�D¦���\S��6��a��󵾒OJ��-�XQ�]9��+<����9�x+JZ?-��[RwWYIЧU�u�T�S]*]�u���'{�i�"Ʈk*X�E�߾c̮�ܣ^+��ֽ��Ilf�?и��}-��s^�
�j��2��9ԛ���Iv��˱#$"�Z�_����Y{;6lk�f�[i�R�N��	�m�ۖ�>���Wx
��#��է��U)���jvɯj��s~ԗ�>��к��yU֯,����ciiFƒ�oE}���X[�ː�c14=��[Y���iG�H�I��l6��=`��8���w�M#JK�2�[�γ�C������ŝ���[��#�Z�k*�����PO���Y�����+�^�
K��r�N��o�I����qJ2�Ėh�If/'`���Jp�	R��N2���ښ#�xq��}I�me^��R�Mo;,�.�C�{c��h#�K�Si�k��_VK�E�t�>�5���5��ғ�Һۜ�i�-�M?vJ#�'��[/��<N^��Q�W���q_O��Ϸu";j}!�4m缵*���ڧU�Tj�EE���ڼR:����F�×K��Sq���}͙O�����_u�����8p�kf�O��C�3��j]G����l#���3��;��mx��+X�-Q碿~��7��3����i��Z�Ԃ�S�^Ǒ�V�޻�Jqo�/QaϏ�P�v�j��
{���VG��K�E��Y_A?e��S�LD5��\��&��V�>^�8i֐y�(�#�sqq{^WW�n+˛�Z��7��m�0
)JSnRyo��I-���V�#A�7U�S��ҩ���iy��6��t�>E-�=ґe�h��um��s�V�����]���H{J�I}�s�FO�uFR�cR��5�P���.��y_����)�p��ש(^fn!�swӲ���t��'�ɭ߂\���ZwDc~fi�F2jUj�U�%�ӗk}���$�t�|���^޵R��a��������Z��R�4h�4��oWW�8��qUf4�k
x�Њ��W?9K���5�k1�7V��g�[��ȸ�����1��cnn�8VSt��ӻ��O�0o�]O���~�οq���t5ˊv3��'rT�?V9� ���'zE��;(J��+ns��|��t�[����o�#�+��>�u?�{!�K8����\�Ҳ��O�R��9Q�Vq���֕�,�Es�qݜ6r�-I�ӓ�S:1��c��}|���s[v����uo�����z��ɹ����t�sT��Ҟ�o�?��}���C�m���Ɲ��*K8�)�w�� ��w�U��*Tr�����|�9Y�?WF��e���ޏ�-�
�.,m��k��(N[-��)����5;�4��Cw�a~B��Bt�ִ�A�Q�(��>��2��K�f���j��Ҍy>�K)��ǣ��*6���2�yy��o�g�e�*<���&��)���kggFw�IF�*P���&�(��m� �6��b��b�كqǍZS��[jy:ҋ��V���J-��ܥ��of�OP\V⮲�.����"�on�M*0�P���p�F
��qߒ�m�I�6�cޏ��.?�.�;
��i�c���m�7o�ά�تUiJ^)tGv��O�\��U�t��㻭�)ݏ�/)p�����o*�ɿ��ڠ���[[�tv�	��+;�w���Z߇<@�T��2�hW�''��7��"M�8|�}q���0l�]ղ��Qxkϩ��C�<O���ur�.����E�Itw���7�J�:��Z�Hԧ8�FQ{�'�4�j?d%�^=�j�<K�^��s���:�~�Y�*�q�v۾nT����{����mR��קӽs>�t'��n�Z�]���]���]�z�i��6���ǎ��w�5�t���m�Դ[�^nm�c��J/z��qko��_'�igZ�����G[}���:~Ҵ��=����F��:+W=�3�X�}�qwYS��B��R{r�ݿF^!��Xέ��l�H���9[[o�l)/�f��͑'Y�]�<���P]e�y�r�-�Ћ��TױJ>�����82mc��R���˛r��.�{ĵ�7e�\�ߩy�v��1�e)�_�����x�qOê���++�O#^WY*�/kI�*�U%Zm�e6��$�m�[�Q���I}�H�Z�k�Փ�kl�0�Єb�`�|�O�vS���ke5R6�5�J0JK�\��J�&T��8����I�z�N���p��0�x�N�&�Mu��9=ө:O�M���=��]��N>t�����r��h���p����ͺs~�C�J.q���X�utf��ssN=U�+'F��і��éo#f�O���Յ��>ݬ�J�eN���BqjQ~�P^�ե�n��.���^Y�ջJ����>�m���]�2x���o��w�O��,�_��]��4�4�f� ����.r&f/)������{�{�+�j��z��:�}���&����6�N�&�������L�u�9T^ޕҾ��P�7�y��KZ�9+*V�VӥZ��$�)�g�gԋ��Sޞ��ϩ�����=۴�RS��W��?5���o�d���Ke�*��8��r��6�+F<��k�-��}2�չ+ζO����դ�F��7�M�~+�|.�x���r\�K�����o%������lZ�skR�����i?��OM�
�zܯ0�5��um�/��=��%��^l�h{�/qoO��K���|�%�V\��%VJ����=��"o-%�b����Qk��*[���YZYǢ�֕�)�E|���J���X���Ű��I��Q
1<�y�Eb�R�g�jT����S�?)`i��:��Q��3��O��A;�ަ�Az��$vGd�L�?�ٵ;�γ�mF>����.�RJ>o��azC�:FNX�W����yx�Z��c�����&X�֚]Bʔi�tE%���}d~�z��֓��p��l��`����^/��$q|_�?�a?�?����`���}���ܧ�T?�2��y
˄?�O�e�L~Z��t;g�6T����#�G[/!���j�O�Ѹ+�I���iacMԫR\�I%�Rod���I��c��w9��+;:n�z�^фW��K�{$BN2qw%�\��[\�߼,���:�W�o���\ܛ�Ѵ���ln��˭�o}tz�OH����^�Լ�.�N:��P�soQN�X��K�Qkt׸ϡZwv��S�*�]K�Te��ߖ���M�~�e��T%k^t%�-��--.#wo
��$����w�l�Lo��4����F�������%���iIo��yڛG~�ub�I���ӗ{^#��u^r���ܰ���ml�5(?���J��A�w����/l�wt�l�2��~��đ��Ӷ^��9g_��u���u�tp��;�T�CJ�'O[��W��%I�vӣ�U�\�[EvJI��ž��O��w���ʝ\�;iՊ�th�*�v���o�7W���Di�n���v8�M�-m(S\����I�m��l��:<u):���|�7���5�c��4���T�ZʄS�+-��Of��v"[�+�)7wŬ�[Ϳf���
[�|ۜ�������掵��Й{
iiF.R�J���isn4�)B{/��~l��%uxwO�J�%�0���Z�
�zc8G�TZ�f�r�"��/-cqe{kQүmqJT�Қ��8I'�jh���[A���Ը�����v�lsti/9�r�]/�iz�ص�NpC�/�g�8�*��i�;�n���zo��Ke%I5�����V�)m�V�1�����S\�-������;��8t
_J�{?aR����[�^�s�obIr���/��8_��%q�/,?4��Rt����ڝ��~5kOhC��-���d�.twҾ�U��q���B���-0��Z+�^����d���/J�OZi]���b���F��1^Y7�9>�97)=�m��$��Z1N�㗂�v�W�~y뺕iCGŽ��Sk����"�s�ko�qGV뇼OU�����,U8T�ғ�i�Z!^��ڳ���G�l%|VZ�]5��l�>jQ��3�\Ԣ�k���"��ཆ��~!XYG����V��cܒ�JO�0Oέ�ۢim���z��*֫��t5��˟�_8�Z��-3_��N�QSi)BOdr�Iż'�����Q��;TsZ+W�4���]5s�2xk�w��糔�2I��%�e��M>�v<:�~%hl&��K{ݕ;�QrNT���JMrꄔ�/LY�Cc_K3��2�Qp��ʦ���B�N]��;�����'�JxZ�Ҹv�{'��zс�|��/�jz�(��ݥ'�Noٖ{&���DL����~茄���S_7oh�i[Q��[BK��8��v
%�{�r�ʮ�]P���;�m�j^�S���T�\�������wÎ�eJқ��r�{J��)P����Usou^Ӊq�aEF+�!�1Q�J1[$��/!ٔ,lh��*+����:k{{V���U�.����h���j�ͮ��X���N�N4-m��9����\ܛQK�h�|�C���gx�Z�o Ҝq&Ս�.R���d;WL�N;�N�N�*��%����Ò�M��%�+gK{�ۙm"&���˴�O%��d�:��0����&��ݒe�;�qO-
u�6���!?�Jr��=j=��6N�~7���������[Ǣ���(ӧN>H�)$�H�n���]Tx��^D�ۆ-��ד��^�2&X�/�?�jqC3^^>��Т�)�����}/�#*{Y�#QS�����E�(G�G+�t^�����\t����-{��<��O�B��������(Q�[�O�S4�L������s�F���9���"V����b祸��ȴ�T�5-����/֔����uN�֧��񦜥a��c唩�(/��M�ӫN�#R�ԡ%��^�Z?['�ط��O��Mva��Q�_����7ە�f�#8T��%E�8��;63Ů�1�tk�죦�7��c�F1�?-z<�W��� ��=��;��+X㢨\I�,���K�%���N[Iv�\�v��[j_'�^��OQ�4{�?��y׿���aE��.�ړ�YUi5_'�.�^�Է��:�۽�S�Ôg㴶��Gb��U�b��=f�
�-�*��6ݥ�FZ`,uF��R��di*��>R�cM>q�i��M4�h�Mowe�S�ڡb��[Hf*������*�d�)�s��TK�Eo��'����P�smZhՊ�:��ŭ�Mri�{��V����=�{�����#�Z�5*<��Kz�t?�}Qf0܇�ڽ��ែ�V�4�s��B��#8�{3��k~�k}qe�a.Nw���L�4���ҵ�k[�׸��a�F+n��-���6��:�J�V�p�SY�Y�y{�{��+���UZ�2} n� �}�g��HѼ'�W��]�c1VI'9�)ը�*P^�J�|�b�~�٭�8w����.1�?����kwQ���N�>�p��[��Q٭�s�i��:��%������ڶ��r���βy�.
�c-gc	sR���$��������]�+#myI=���F�~8�h��|���ӝ��G�:��u��\�7&�l��.�4��<�����^R�U;�uy�Ջ��q)"�O\��m�ݞ��?��>����ox��7������q�w�O6����VV�?D��7Q^*[T�R��^�t���z�N�j�#����2tU{K�i�B�ʚi���M4�h��:Uƙ,V[�?S�~emťKg���9pZk�{{i���sJ��ڜ�֫VJ0��ܤ�$��>�jҡJu�ԍ:t��9���sm�؈yǾ8��
���4խM�U�'���O�R|��~�Ԭ�.��[��dV�̽o�{��_W��P���'�W;�.��g�4]�?)�7:�4ՍN�jM8��OQy>�/�s|�ѫ�2���+:J����_[�1��k�ү]�O�̗B$tO�\�wG֩�/�C#n���)�N�K��*o�	Lk����7�zQΧE{�R��������>��F������ު�tך��H��ob�=�x�{W���-_�:�Z���YSqU0xk܅4�%:Te(�ݒK�4u)JM�rnO�m�o��6��k%S�{]�Q�ӝ����ּ�N_$٨7ͷ� |[Q��t��|_�;a��VQ���^cl�(�B��'@&v�?K�o���N�}}E��g'J��[^_��VK�3K�2��I%<��ʚ~2����ܣ/��y�x_@����t�翴�l��{*x�����\ah�M�ӷ1R���]�T��q�FPk�g8p�5OM�mC��K��+y{7�*3�!�9�n��3f��;�~����Tq�F�m�@.��_hh�)[�%~�����{��qJ[RԘ��]M�%�?|E����_TF���ϓ���ë�2�-��{��j���J����:7t��$�8���0�����ֲ_Z�O%�♺$�[�����^NGf\?<O�u��,��w�Wڝ*uru������y4�7_C�R_��Z5�y{{������*���V����Yo:�g')�OŶ�.�L����};g]�����R~����槭5_���(�%p����T�9�}��ok1ֽ~�.�"�l]�/�؁���������R�������8/�V��v�W6�In�O�oe��V������\$ѱ�g-!�מ�
����i���/�G}�›}�Gm�_S��C��OdW_?b�����KQ������n�L���Ҝ�{����!�Yj�ڭė>���t��0O���o��qvU�9;����ukW�QS�J���&�R�˨�H௵.��Q��c�ʽ��W�a���%�m��m���x}I�̬��:��'kS{,_Vү��^�nR��P�xo-���6:�yT��~��u�-�y�/o��Z
�#��+�����z�_�N2¥l?���c�^c!F�?-*Ki���\��u����
�%�u�^�G�ҕwmj�f�L_�&�&	垓ib����;�^����R�i=��b��+[X�%mE7����r����vԤ�4�>���+�r�oVj�]\�
Q��T_�/*Q���>�/CM���u��+&b�j;
ҝ��8[�S\��-�U�x%M�YA�u��^�W�}}>+o�۶���y�6��<7]�HќN�CP����j5c�V��զ��r�I/*�s>XӚsUp�P�]*2��^�Z��Wp��E��Ғ~
���Wp�?
M��u��񏛜���ק��Zo٩�c�|�߉���?SMj�:�Y%wCh�+����)Nrq��4����V�s[���yYm����I�Ĵj[J5���-��׿��iUn֝j�E�q����w�%�v�4կ8���T{U������0;�Ms��"{��wR�%g��*�ک��%�?c}����������l�0Oz��>�/B����x�4,���vE�_�w�c�\*��B���u-gIҡR�F���v�%�9E��ܼi�P}ɸ�[!��ྤ�U�p�<=y?���>��[���l�g4�(3�ޓ�--'�p�3���T��q���:o��r����P�E�̧�V#Y`7W�K�\҇SJ�)�o�i�s��H�i�ꐯ����5��J[���cޥ�Ѷ������O)�g[[���sm��t����K���2���-�xʝH�G#��^S�!ҋ�q{�-������}n�;�����v�:0�*�Q_)���ZF��+j�E9y%}I?��Ns�����<J�!���kK�s �j�1u%]E��߅;�r�R98�3��$���4ϒ������g�Z}��������j�e�4
�S�=Ca��Z-���׍*i�o�I��+v�$�!O��Us���f�������r��I���6���v5*���4o�i�Z��B9\����9�[U�x��D黼����y{sJ�
1s�V��!���%�(�w�{�n��kZ�A�����v�
3�I�'����_�TF�8�Ş&qf��q#[�s˩����ZR�mQ����f&�IE-���D�ׄi�f�o�;���jZDVڲ�a>�G�B�ӝZZ#���vS���Ҵ�]:1��ΤV�O�Y�[Ψb��A�Nv�WSK��A?�"h.ihu%��}��y�h��#�}0n�Ug�֘����m�ꭟ{/��Z�JUﴕ�_;[(��¼H�
��6g�����>��&��nڤ>�xq�24��JνՔ��'Y|������
�T���6
Oe�l�Q�я������M���^Ӫ��㱵�g��i�;
�����R�/�xk��(�W��/���]B��E����S�Z*��i=ҒOg�[��;��ۄ.����9,U
��g��:���K�9�zGw�8\�Z���z4j�4��f�8+�W�	��G�9UƜgw_�c+�콋���m�ʴ`���QJ�*��Z�H�"�E���4�j"�VU�ȯ��UU�R���X?`T���.F�쎪��:8�V*�ww�U�ХJyI�����sg)�k��q�o=C��j��~&T���˕{����^ݱ��\Ӝ�x��e��+�ю���.�R�fŭ������
�wx=K�]O?�u��>S����[+Z/��Q'��Qs��Ҷ�{&�T��kku}uF��ڭ���HѣF�z�R��ьW�l��hӷ��RX������[>i7�&�A��4l7��rnW��o,�j�AZr�q��);d�ߙ*i�Z{4�I���Is.�K�M^�.u�q2��p�Z�z$�o��PSo�V�E?7.Kh��S�!��Ӷ�V2��q׌wm4)j���r�^�t?�9�r���s+��W�,��k����|��:�e��1�V�r+�v9F%(��:��Np��8N2����Q|�M4��h趹��wJTj���ں
���V.[��+�L���>�ͭ�8֡^���է$�g.R�M4�&�� �����򘻞j{ޫ�=^�ʕ$��e���o�Ҕ����76�ʙ8LQ�YOO��	�n|��rD�(Jޣ� 4�
���VqM�=�5]�"ޤ���V�S��~v��FI��iE�rO���|�v�.��Ck��}x��ɵ�:%�$ɰ�;^��a�(���^���(u>��*{j�J[����z
r�p�9S�j,K/�YiR�~�I$��x"�8�BJKʞ��5JT�BT��3��Ҍ��S0���U�$�d�>-U��Zڗ��7�s��ߺH�q�7��&�|�=$j�*-��S�ǚϠ����	S�d���2{�wT�Yp���S��v��t���MӨ߮Po�Eo������ٌ\�ߦ�E�%�IF�3��Q����|͎Fʵ⻲�B���.PQ��n�8E����vx�k����h�|qy�M<=����6�wJ�4�֫C��i����gηP������S�w}?3[KȲ6ƣ��w���Sww�1G��sy��J�Kӽ#L����� Y��.x�����w��sEo�l��B8��:c=���8e�]�+��6�̭~T�J�ү���3u�i�l�F���w'�.,�GF��T��xC
�������
�w�뤣��l�S�LxN�FS��ߵwl~Xg[����Z���Ig��s�R|�7���G�s����\G�Z�����N��^jIR���{�O��![�D��5���8�K[�JӇX{�W��Ν˄���5z]U�{?7Ӈ>q��EF�v�,��e�Rɑ>Vp���Ӥ�����_ޗ%x�,b��ϻ��U8��x�n��q�W���	tw5�}�ЖN;���BOnQ��
����[F͜�i�t�>�Rq-�mt[���U�n~�p���;����f_?9��q;YP������c��\ӌ�*UQڜ?n1�L����,�\#���k8�?���R�ь����/t���uN����f�䙩_趵+-�<v�^l���s^s���*��*�����T�r���ɷ���c.��;�p��������'H��KxԼ�j���:��q��E
ܷGS�\��T��w��kej��iy������t�%�o�g�r��
���(�����XFM{WuZ�G��JsRk�c]j��E҆�>J���ρ�4z0��V}+��6ycĈ��x�_[k	��v�`�7�
�y�����<���}1ds��ԫ*��r�I��97��~-���d;JvT#B���_{ �wS��*�7�%л�3�-��/kl"ԚW��K�d��N�:TcZ+~t�Y��\�8���0��+�m��7%eqgyiVTn-�)J�Z5#�	�[8��g,+S�'I6���WnӊtjB*S�I�m=���r`͵�'&��6���$�6����Rj+w�M�Ԟ"V|J�7��E���5xn��c^�_mo����P�w]���W�іs�l^&�T���j���ye?��O�B5���[G�s���]\�rٵ̴M������<�o��to{v'a;��Zq�pׅ��<�e2�$��J���J]��>��w��[,|�8i¼�ױr���[��J����_	T_�����4�TR�V�t-�����z��r��lmo\�����闹{�r۵w���m��ݶ����6�@؆�ø���w��6꫕}+*t����z��)��DQ$��oR<G��3���
Z����kyƤ�J��O�q
���'��ļw��d}��c�W��&��.@W�M�v��7k}^W��EJ�2էWf�J�|�G�.o�3��ޭ�EJ�\���qsFқ�^J1]/�䶖�i�{�p�FN���-O��1�U��T��N[���6��"ʥ�G$��6�r�'%I�*����"�1�b���ؒ�"ga�+
w���}�Ի�6�Ə.0��������IΖ��c��_(ոn���#��Ek��5����38�T�\;jo��G��%�]����(��e���;�^��ڬ�Vp��u喙�NU�eZN�~�g�[�.�jK�M@o�؊ֳ��'ml�m���h����b�*ؼ�݌�d�n'E��h���%������fw����J�[^]�]��1��_�y���H���|�J5���H6���U6iCU����re΍av�iIg�l~X����f�gU�K�>�~h�)�> Cm1�m�.z�iSzW0��J{Ke�I�I�،�N�+S��V���Ԅ�g	yc%�?J.nw��:ZT���T�XŴ]Y�+�Q򩽕_T���8J�4�g.R��s��L4�2�Q�w�俼����we��:__bc��ZW�wQ��ԣ?���B^��ڷG>D*S�)8TXkzd֝HV��M��涠<�Uz���t��Ltr7Y��2p�]Z�I8��B��ط��w.E9>�k\�[�G�q5�ނ�O�{��Q��µ���Y(�yJ
�9I�y��P��4Z�R�M>i�si^�\��q}k�������[�I.g�~G`\�ü�}=��?�t�*:�Z�m�>�]���fWu�/�R��%�К�U����WqŽ���N���cQQjJ�]��j�e�J�5M�p���9թRu*T��T���9�OyJR|�&���}��F��n����z#��2���qe��ҩ[w7��8�Ŏ!q�P}��RW��A�{P����E��
+٦��w�O�'�Ā'0�iEB	t"�1Q\�� =�@?kQ���֧I>�9(��Ck�W�ҺR攻%��]\E�4)��e%�<.����Y�§�ۼX�Á��o��U����<�q�NU�<�T)��O�~�q^�!#�\�o
q�h�����8?Wԫb��Z޵��{:7��oQ?��������s����i��Ml��E�.�|Q��n:�Y�(�����8����{�yv�+zm�q��T�8k�Һ��V��_C�y��Jq�L�Q��q�\x�|,�V��/�)S�����5��O�L�p�ϦOfX��tF���6�z�Cgk�3/�:���J��R���	r}��Mm?��z�/�+�Tp��EO'���q��l�9�m��¦ڌ�c)c�g@����>*~q��]~<�z���p�Gۜ��p�~jT�J�Vq� ��)=�K���oY�MhkUS1w�sR=Tl�U����	�>w�\PԚ������7���Irugn��/��K�{�n�;�s�:�]O\��S����W��zz�Î��q<�y����,�{
黩΃�/f�:k�#sk��I7�v��e2yܥ�w7}R�%���yysQ�*��IΤ߮M����S�]K�F����P��K�l�hE���/ƉA�IӨ�R�������$�'��_N���^R�Q[;v��װ+�7aB�\J��N��]Dd�c��j\/L��'����ַ�x�+i)A�+�U���Q��S�`��{����go���ƅ��(P�J=��(�>�Hڻ�ɏ!t��}�;Kh��^%Sl���糱>r��޲zKWR���ӎ˸��&��O̪z6��~�?!(�HE(�E�]�l�]W-]�쯮ju�[oiv�k��S�����7Za���?s�xn�mJ�ov�׿ă?L;��-+���=)b��3���iA(п�*W[.�[n���dP|�FC#xD��.&h|ނԴ|�79gRξ�uC�{5#�d�%�J)�T՚[3��NcEj:jL
�\}��ٕJrۮ?�5�8�� �E�ۺ�8�xn�2ƙq�i�9o���h}g��β���3Q�)���{o��^�S�-�v����6n�C�/4~ˏ=��Xѿ��-�*EIF[vIo�׃M86��??���UƜ��SI��nd��"�������8����[������O�y�hr骫z�Ě��͑���X\co����T�B�9vN������k�+}�u�sFd�wX,��:���JT�8u/CI4�SF�Mf}1����U��]��X�al�s(�f��$�ܣ�K�Ix�ƣ�d[��][h׏�=�����? ����U���
�9���/�r�" ����w�w���o��*����9iM��[9n��>N�7�Gʺ��Sl���B��F�7���CT�-u�*�}�yT�'.�����O����೘�M�����vF�.mnhK�iIo'�h�����3�{��-T�r��T�A�V�T����O�
�.���.�=��=_�u��T�ݦ[�{�j�P��O�2O���Qi��[?K�h�t��[��z�3��u�Z�^�u��	?��[�vioO~��n���x��Z��K%^MMsI���U*�<Jϟ����5�٨�4��^��7V��Qa��W���,l)��&�^o�%���K{>������V����y�N�g-��M�����=���[��yyw�������suuRU�֫7)թ&ܥ)>m��m��#�g��5���7y��{$��+zI��4a���˷v�nM���X�%���-�[����-�w�\p%�}�ڕ�L:�[��F?��יs$D�Y:yN#j}}^���
.Q��]Tߪ/ʩК~���Cn��xSS�\�[�-���o;����	V�|�6�8�э$�%�_�ݫ��S{��ܼ�$�ӯGG�z����k�d������|��t�����[Ca����F�K�ܨB?"��L�w�s|G��`���?�������)z
N!���<t��#󹔡mZp�Q�'^�c�6�q���s����o�,�Fٴ&kE`4�8�����I/��F?�G�����KIihKhd����m�j=)z����%Y>��E���cVY'<�[��$c={mN�;}�o�̍�?c��1�K�){��~�{��>h�{��S��Oo��^so��?Ɇ96�3�m�̅m�1O޾���^g�ttt����m�m�Q���qf�z�Hѣk���t�v�O)J+���SK�T}�^��4Gu��u8s^߇��Sҵ��e{V[�L�2��-���3ΝJuiƥ9�p�R���M>ƙ�n(]h7jq}��K�޿#2E�{]r��K�t�����������akZ��֬�\[׃�J5"��'�2Ml��'�z.��x�iW]h�jTuu�%稭��(�T�h�P��^Ĺt���g{+�VN�����2����y��������ߑ<�u:Z�i
�o\ߓ���>��UӪ�9�Os���|�	ԩ
T�ΥJ��:t���s��ьb���I%ͶNN��ᢕ�x�e
��IT��m8b�윻T�6��b�=]ػ�P��-���)\j��봴�ӧ��^��v�9�Q���RP���ͭ��ze�Ժ��Of�.���,\�/��su���������[*���
��*.T2ٻj��약������q�=�|}��K-+�p�(�d��e�v�9�}������	�]��[ȉ��aEF1[$��#�B�1���֢�/ܻ�B8u�s9��}�^��}˜F1���l��2[.�#'�Z���Iu�t�X���U�)S]��KyG���qڧ�;N��U͍�f�;�2[ƭ(�9B_��6~�ͨӄ!N0��%��/"-5�nZ\�N�7�k��::J�FZ�%9˒�͋��4�FQR�M>i����[����=jK<-�;k{�Z�΍5�cZ�$�4�:����M��)soY\хd����*.(�z���\[^�ݻ)<?�=�%��ɻIzUjim��l�=�!��6�ɡw���;���Q!<[�)˞/�L�VM��_��&J����yj�ZC^��ʆS#F[;��*�� �'5��r���Mӫju�*]�/���Wj��
*��[B�o��r|�;�ҥƔ��'^
Һ�GiB��p����^�j4V�Z�[���+V�7R�Z�s�I��JO����Q�I%�K���:~�CM�����}[����-R�T��k��л={ߐ�x2M)�]y�-�^iM/u�����J�T�S�Kw*������m��F�ԙ�=���^�!mA>�)?��+y?DY�=#��3L�t�*hF�[��ߦRnO��A��?��M'9s�%ӳ�w�.�ֱ9J�j�[�}z���_L^O����c�l/h�;{�N�D��>��[��<��^�Қ���n����(�pu#��?,&���-�]�J�YT���п��c���Ղo�k%�4��I�[5�(���.?g.������l�\%wi��~�=_[ç���������v�KO]��7�J���*o�*�j	�7��H��;��y �f�s����;H�$�)���鏖,��1�U�,~2���քziP�N4�y#�G�Ŕ(������ߒ64��_��!s-��/6k�Q�E�ro���8��8��Kۆ�uFI��;���ku��?����u2x�~���뽶Q^�J[~mIz⺒�"�H_)EJ-4��\��-��X�xk��׼���\�$����O�v-Js��Z�Ph��<���U����ÜjC�R/���~���L>��	��}
x�EF�U[>�b�]�(7�Q�q~�|w^Ӆ��������k[�j��
�f�R��d��cEF����!�l��/s�^���G��4���=�g���� *.�‡�~`�	ҡ�l��TQJ0���y�k��]p�ou��L_wiVʳ�YbK��̵gyF��k�y���|��mޯ��2�A�.�o_3Ju���n3V��i�k�Kt��Ix�U%��Kd�b/.�x��A�d�	{���қ\��V��W�V�(�*��t��n��m}�~�`�M^�mN���/�azs���M5�|�$�t�"��h���/q*�A^c'7��oԣR��BR���M�Ȣ1'uu��k�RMQ���u��Iӌ#�}2��Z�u����VWSX���+ա�R�����|1��bPf "���涛��xY��<�Hy�C��������(�vW�^�-%��x[��;�S�'U�⌵���jRJ~��K��N/��%%�|�RP[5ն��V�s^����[���%Z�j�s�V���9�O��)6�}��]�z:�L���W;��^o��m����E������EF1[$�$��'��S�)�Τ�c�m�%�vN�y�"Q��\d��MUJ��To�0�R���'�[U���lޥ��
~ּ���R]?l�U�B�yuxq¾"qw3,4��n�J�$�mk��j�ڝ?S}O�2gp��fc�ӥ��6��wY�)b��thG�;��9?č?[&���[B�mtƎ�X�Vq�igF4���]�}�Ov�6�<Z�:�8g�5���`l�5ok�:�_;N?
���&�"�o.���%=��'��]�mJ�gɢ��݆;�;��;����o0Wi�ʖ���+�[������^����C�fzR���&WRN=Q��F��ڷ�(��u��p�DjO�#�;7Q�=m/�i��VX�qQ/L�*M7���pC@�/_����)m����]W����mx�Q�'�&j羗zk�����Q�c��/{��w~���Eωt/������N/��ӄ�S���['�9?D��^~�k9�=�ԶR�j,-�R�_
��������}�;��V���U�~B�T�Ο��z}O�{i)Pk�(�Z;��'R�=wÝ?���ҫ���������OѼ}�L���^�.z�����j0��0����ݔ�J���SR~CVZv��|t�Is��w������>(����CN0w�?
���i�טj[��E��҂�o�����F��g:s��:St�BQq�&�8�/�Z�O�7œf�M4������<z����l��A*9�K�M��74�F��i���D�Ӹ�I�w�g�^���6��W�k���^�R͸�����U-'��*�J�R�����2��ԡQ��ۮ�=���f��I�:��R��{�.�%5ʋ�%�u6��z��t�Z�/3���,�(��Jk�M>R��q��[M4�4�RM5�ϭ&�ͽ�^�#���]��G��*s��M�J�O��-��6n-�R�m�wtL�'5O��7�ZF�wV2�w6��M;�I5�m�~�M?��a%�M���_�(�F��Wn���W�ӃݩӚ���JP��Z1���~���)/��wS�uv��?�O�����FH#�x�\V�Z2��U���4$�����)�_?"g-5+ϑMe�7�i�����e�WV�6�.�n)P�J.U*՚�!+o�E)�8����h8���V�/�P}�U%��>Ҵ�Z�R뛎���M�%�Jʋq�O���~�ͻp���p���|O��z��T⊕�J��?K���[���뚷��5nnk˪�j�s�ߕ�͟&��9U��N)�s}���߸�`�8�%�xa���W��q��>}u�L��SU�HaSQDv��w�T��$�^�K�"~���5���ꊍ��n�R�;A{4��B18S��IEl��/"mE���^]�~�.�Ia��F)ƍ5��$�Iy"C�V�j4r��旵R_2��]�[N�������/��b:3Ea��JU,m ���u_��K�G>S֟���׎ �J�UnS�[�5l^8�x-N�z��uUΝ�=����_��&�X9}b*�ه�W��쳖ۺ���w)}�ݯv;�tһ��hJ�:���4�eu
�����M#\?L���qŌ}�mUm�7 �+�h�Jr}�·���͌��Ѽ��wmQN�xF�9.�FKt�&R��n����T�mm�\���c����ޣ�}3���r!�]�+�I�M�_c�����c[�V�����dj(�;��#�+��ԕ�<�:���&M�t�޷mSꗢ|�O�eM¤cR��JQ~T��uV���:]N=qqR]�o�zWi�+э�9R��&��Ȕ�
�\%���OtvW]�x�.*�SG����X�J������+��m9�)�jӕ��=��t��'��y�Z�jR�qZ�ǜ�9(��l��I�VPYu8�q����G�*�=wL�c��n!I4�o�g/�3���Z���b2�W�Ŋ��V��M~��g���m�������؊?���>�	�Ǒ�o�M�3�ߗ����YqOJ]��ծm��/o�=Hɬr6:>{B��R����n�K�q.����S���$���MZֵ�~�
w�vp����.9�/�j�T��y����o}M7JM���9=��-��h8�R�zr�5������iwt�meɩNJQ|�<�S])��hs-��`���Lŕ[;�}�K[�z�����8Ix5$�Ca=���V�R��}��K�Z+�Ό7u��l�"�>�E%S��\�d޽�U��Tӫ�3����Y߾��N2ҩ�6��8��im]�1}1k�<�,���=q7�����9�Q�ZJWx۔��^m��-�?���-Ғݕ�9)U����Mt�R���S����5R��8�&�s��oM3h��a#���b��z'5-����L}Yycp��~/j�)r]R/
]��\-I�x�����S���#yҹ���:}S����J�^��$��WT��jEI�=�)o�0���B��U�+ԣM��X�te-���c���r�dY<�+�?��=Lm)'	grt�+���-����Q��_2e�mA���grwY��GZ��괪֭7�)�M�?K<`���./�ʯ,�.�ؾ��<5��?	P�U������ń�HD�s�C�n$j�n����e����ؼe9?��b��'�$��1����*���R�j�Q�Sm���Ym���m�6�=N7�f�el�]/��O#����*�&��?�e��*4�Hۢ[�8'��
Û�q���9��t�+��%�So��c�;�n�2~���������k�wzrt[�g>4�]j-��cMs��\�{y�TW8�:+�`X�R�Z#1��^�!jߦ(M|�d�#']<�i�Դ��<6j��4n)Λ���\�-F�}9^)��7SO���?�.|����Y�J��}{r�O�]���<��۴�^�L�sԥ������T���{�a+U�h�K
�Y����Kn�^�jG�e��WGUp+Bu�K���\n�<���*O�9��?��~g�v<�JڔrX��ܥqn��v�T���1�kM�R��5��
3$]���m�k�S�X~�Ѭ�u	Ƥ#Rx�)/S;2q�Ǭ��ջνRӆ|D�o��IQ�d�K��{*5d��7�2��O�ۢ1�M4�|�~&��+�.�e��>u��6��*��U�=�Ms3pI�-��3
���R�5N+CM�-IR�Pw[rO��P�*����m�Һw؋]�;м��[Ĭ�x�8��r��h�(Zד�G�	���/��q��*ӣNU�Ԍ!�)I좗6��1��ΓZT�k+[������[;�}R���x{�����_�J0���I"w��W-M��p�$��C+���N��T-�)xJ��|�gw/y�u���y�\��i���R��e��*MsT<�jv/c��T�I$�\�D�B�=�.����/����.��n���i�kW���.�w�ѳk�%��Kd��$v0"e��#<�x
3/6�K̕]��P��8���d_>�D.���+}I�˺.1�q��I��6�\IyS�����KL�F����d+�6�Tgs^��!Nr���$�qĵ���v�R�~���d.��X�峔��ܽ���eif;���%�;j��+��+ZQ�������:�?��7����댍D�j����^��2�/aB��K�"sW�֝U�M����:yN:�[Jq��1��N�V�Xm=�!���zy�8��m��uv�%R�M/[U*�L�A⺊W����6�6�z|�IO�^���H1n%���Q{ԝ��Z
���K�:~��߄T���J���S����8�V��9U����Ԋ����i�9p�L�8eo�)d.)�iZ[˲k��E��;��E�J1�b��Kd��=Y<�C5���宥s}}ZW��$�oo�Ixc-�zu=2�Q����WB��f�:��˭=ۢ����}}�szL�g�p�W�N�9K�ѝe�𦓔�ߗWLe��cz��Jsܓo�m+�ӕY�p��K��8G�u>K�uFQ����7Z��$�/�;�u`��L){�CcnjB)y��~����7S���$f��^&����l�}�ӏ���n1���7���d�Q���Z�]��N��p����:�siR�]�2��	R����YFI=��W�.�%�{Nh����Q�Kj}�d����i�ݓ[�ؓ~N��"y�#��z����]ƶ3ܫJ���[�-��r~n/��5�R[F��|����WG~�_]J�iN��mI�>�u-�����a��>nÈV3o�;�8F��}2������#�~��:���W9o��)��դ���-��F����t�*�jN�D�S�7	%��l�$��1iv�tg.���v=;�/,�"��#׿ǧ�>�s���~r�%���R�:�j��>}4�յ�L�)��՗z�������77v4��j΄���괛�7�J*+���Q*1��)-����g%���A���&���̷.���w�UuQJ��E<�us��lF�iU�^�+ѩ��EN��2O�i���C��dt&��,f�x+���*�m�:Tc6���E5	n�o��u�$S�:O�')w��%N�3��^�[�}����}���ob!mu_��jSk��5�+zk���4����
uT�/z{�I?�Bf�Uj.]
�:��-�#��]�؞[Ji|��74�/#�o����2e]Ğ�9�i�������*\[״r�7(Eˢt��q{l�ۮ�I-��ڬ�*��;3�׹�{���:U��i��A��5R�*%��T�����,!ǧ���2V��=�KK�*���xv�k�һSO�M�ɓ��\M�↔���t26�[�m#-��d��oϢKڋ�r�L��g�N#\��Y�g\��(ǟ]�
/������_<Qk�Jԭ��H���]�}��������f�g-���wOWb'�>v�.�S���
�kAT�R�3�[���Ms>�,�e��Ŏc8��%����[�y����C�Ь�\׌$�R���ړP�U𣈚2kJ_Μ%�n��N�ޢ�jpOm��Q~�~l��+_����R�3��~��W��mZJ�n3ݕ�ڟ�y4����.�k��YFogssBv���T���#��&LNp�­7,t.#w������Q�U*%�aڡ�I�[|�3��Ϻ�\jp�M(Ùt��q�H��m&~�79��KӼ
BŚ�����?���g���T������4��9�Т��i��%��>/������Y7y�Q~�1�&�������]��J��74�9_���=/oR�~�ދ�QS]$%���s�n[��O;J��J�iQ��,}6��-�$�u'��ԟ����S�*t�XD�1P��w u9œ%:�Q�Sm��Ix����v�<S�2➴�ƶ��7JVգ�2Y(m/i|�*>̚�G�P�|7�t�hJ�]���%��x�Z4 �Or,��]���P��8~�ʝ7X�?f�=�����8Skjki5�҄��a�^�=�.���C�'�ʎ����sY�Z�K)5�v�f�-��3����}��F��2��(��{~QījU��K��Y侘&/J׻�<Vy��J��~��s\�hE?�����n���9󊀚�Vj�u���5����e�;��ΥD��;N�Q��G�1Q�Tb��%�K�vO�4�}6�+oK{�ۙl�/��i�,Am����ԣ��qR���2[��(�]\�oŮ׷��d��t�9%S��)S�
��j�y[�od���a�l˂<}��4��h��W�0���v��F�F�~���8�	l�|�Zc9��uwu]��й���Ń�*�uB�6��5a�R����ki$������Mrjs�>�^��B��������O�Z+�z>�D�Lol.�]9Ũ׵���B��ө�Iv�M8�������]�\��:�����2���S��K#l�M��a�U)�춚�2�{?���'M���9aN�k��)�ꕥv�ҋ���'㳋�Q�\�x%���û��J��;�^B1N���ST�G�n3��BR\��Et�J��r��S�g
s>u�7��V�3�����ҹ���i�0r��Kg�>��h�U`�[����ou���J.2��z2��8�$FJIJ/)�D�Y@��K׏�����NXV��9{6�U���xG��HCnsdH?t..�.(�X]Ե���
���ӣVR�H�%%�F��/��B���s��U�ƽ7N]&�[�x��5�Ok���{wo�2ta��/�?7^x.��G��_�d��)P�*SXi������'o@q�@M����g1v¦S7��gkO��U���ko�-�+�u�L���7y|�w�����F_�5����&�Թ�U�K?��wYn��*t��\��\ߋeՎ�V�����z�ާĖ�Y�C㟒�}=�ıu����9��ѫ��|�y5��E�+����ԕCr��9�R�۔�&ۓ}��ͿK:mE9I��kfy��9��w�����8�����������o�-��rMZ锺"�߽���Ծ֫���̷/r]~l��R�qZ���*�kU��:t��9���m���7�|���Ժ���w��N������{ChŽ��˱"�w�����Ǫ�Q�y]�ש��:�)/AW���)���q��ʝkڋ��!���ugyu4#�����[�p�t���K3ؒ[�o�zy�iL�v}��N�Js�N��㿌�������t���솜q�|��~�'�Fƴ1����hEA�l��G�S<��Y�'VUZ�N.]��^�`�e��;Q��2�>�z7��^j��?\��i}wQ�y̆��5!�ލe5������š�M���SlʜG{�?J�]<>KK�_
��H�)I�I��~��
c��(�%�y�c�RnUq�v��c�v�g5a
��
���$ԣ%�k�m�(���7���j�:w���/�#����(���no>;}fW��>��ӛޖv�F
$qoBˆ\Rռ>�)`����Kf�\��hԦbd��dz#�q:�ބ�o�0�Ug�;�9�����i̟��}.ҝn��{w?4d[z�֔g΍�},�n�V���u0Zy+d��[�A��*�*���5_�u���x�<5J������⤤�^z�W4��j5b��ڇi�����j��$��~h��T���|�@�4Ԥ����K�l7�����T�F�)��#���^Oz0~���r�ך��^�LF���[�J�{;�*^H}�Q�i���:��jIc*U���T��/��X���N�J��쏯��{r���n����չ���'���b�/q �\�W��*�3s���6��m�Ic�rb���>��kwuc]\�\շ��қ��4|A�N���T�&����M>t�Mw0�k�t��Ҕ-5-?;O��T����Q]�����2���ޝեxV�UuBp��K���dKX_�k�aʵ�IoZ�~_U$�ߏ�Y�~s�i�aa�Ru(����8~wߏ?�-���P�!U:����~���^��c��[*YѫB�z�%�|��g��]��)ƭ))FI4��i�M5�4D�qx{Κߓ5�������8-�u�U�2�j{��\ܫ[A|*/�T�:o�S�*{�����i{*���޺IO����[��YǙ���-�{�e=�h}�;�h�,V���;�k��Ug*�������}��-�M�n�ߛ�d�Q��&p����</���&���
ӏ]��^4�GxMm�c�o�'��:��s�K��1��w��;���0�^2���S�[iI�5ώ����#
d��B�'�?��R�/�����6���h�U�-���o�jR���&��=��k��:1m��
�c\Ӵgw�֍8.���%�O�&�7�օ�z��z��G�%�S+{-�Ѥ�F>3���-��M%�6��s�֛��g^�J9M_������/�1�?{[��4SI���I%)l�aǃ��t�h\?��]G߹��^^�v:�6\�=���{$�n�'�6��V�S�vu��E���^㋳�i�Ӵ���Lnr���g�ɶ�@"0�'�:&\E�^���b�s������0ڥ�d f�O��J��ԍH�M5ݴ�V�j�Ӗ��4�	9�3ppmn�b�S���[}�8o.�+N������Ǹ���䟟���*�=�#8!�����kCt�~ݛ��QqFV�eF{���;���^!��L�uN�VS��r{F�b�W>K�Sꏥӂ�'�j�j�����>ꥭݭXW��I�:5a%(N/��$רٟw�1�Ϡ��{ң�����E��r�Ê��u��n;�C8�Oq��`�=���}�gj%�3~�g7�m]�+�c!�z�
��_�e1v�oSU�wa(�b�ᾪ�ܻ6m��$�������o�J�F�WV��)ƤUm�ǜ+R���/�}����O[Z���ަ����<�w)c�T���k�?CQ-����_f�jN�@��{IP��i4�{y�yʽsJ��W^�����7g7�1��	:�c(��)ŭ�kt�bd�����xQ}�'<=�p�[y{���d�kV��ʔy�d���Kg^��u�]H������rS�R�jk+(C�֋�� j�n��TUL�V��M�7
1�i��Gy?V˛G�
���,��O�.29+��j���=U*�м\ܞ�$�i#a���Y�_S'���Y��sOڅ�-�Vԛ��r�.�-�R�յJze�������M+L��W���r�~[�+A��?4v'E�`�e����7/�R]��/œ���2e-�_�t�~�n:rz�NѨ�iS����|�$�i�~B���_{���
V8�u	�\�U{F�8������s5��>'丿�����R�������󵳃~n�r��
mv$D4��}"����yoK�k�%���,m>�Od���2��.�
�a��MG��ӸJ{#���eiO�UjIF;��v�o�ȍ����''�M.�Z.x���wTzg��V��Q��R~GZuW�"R�����0�/��p�t�!=�uW�Q������2g>b]F��S����űy#)��C������~`i�����.������?M�
�/�Kɤ�=j���K��5���YmSt�����p���M/b�.�����.n�n+^��u��jN�z��Y��r�d�&#b�V�����]���3�t���l��Źw�A���N8]{��ӗL-r����V1��d��V�*TgZ�8��~Gk�G��U`龔׊k�{�QҜj.���O�l�l���\O�q�Pi�=KOka��oF6�4���T��Ԟ�2�5�,p���X�#ymJ�&�iN
_�C^�׏�V�GLr6����g��3�5/'J��<eg
=�̝ŵ�R��ky��K8me4�²��\�*y�i���-��R����-G�8(�1J1I%ؑ�24)š�$��^��c:���U$��m�[��;�:�j½��V��Jsq�_�Is^����/O����a�0�t� ��R8��=K��������}�����O�ӿ�׷OW����(�(ܦ����rx|�89�:��8�G;v6����2Two����2�U������Ӫ���J���M����ۦ3��Za�|��n�ȧ���������I7s�\��u>mǕ�8��)R�-c+�O���	.�S�����y�Q���1��
S�#B�R�*+bن̗aqZ?+��nN3y{^ܤCH�B*�)E{�`(Š-{�k�g��}���y�\U'�vso��$�B���+�%�x���ԭ��.��ν��3Y������x.f0�kiz���oO���,p����T�*w�l�;�Jt�#M��.,��V��7wJ��{6��[�	G	�U��T�ox�yS�\ֺ�ޤ��c��՜�q������H`�IP�
	���Cw�[nMxF�~��j�r.�_Z���ԥE�rQ�V�K�M�����/9�mg��Zj	����(�F�V�ud��ӂ�Iz ��p�Bi�h�.���3	iZ	�)��U&�g99NO�Rl�KK�R��=A�L��Eo���V��R�d�sV��oM5J
Ku��E�=�F���7��y�o���ֿ���iA�oo�|�����V������kdT��UTc�zY~�xۍ���sF�A���\���R�ۋQk�ԮԠ�j�j>MŚ݌c�B*1�I$�Iy��_f����E�NJ�?y+�Rrm[��4�;N�a�;���#�$�z�ڋP����W���ԭJ��ߡ�.���};�ϰ�i�T�UNM'�Ob��չ~R�ڄm)(�����8������䙏�Ǽ���$��U��#����֟�^+�W@�~���~���1�8������䙏�[�?�X�����^����8������䙏�Ǽ���$�}*���h�ǵ�������,_�Ǽ���$�}�=���m�&c�V�ď�G�=�?��W���b��=���m�&c�q����~���1��G��֟�^+�x�/��I��"cx���J������LrRiշ���e(7�g���܎��
}�1Z�K������yiZ?=Nkt����4���1�M��'-����������Q��*.�NJQk��9���j��8��n�(�;�S����Wt#����U%��W�Gx�N���S_w���o�l����J~�;ף��G�w�wp6i\c�,N��q���r���[.�u%��|�j���f�5�����#��z�����X���Gdߛ���[I�I�k/�5>SEjJr����ֲ�����J��H��	t�).MIl�\-|�-ݴ��n���{;�K��)�o|}%�5��o%����w�;[�m��BS�F�M��x�St%�JL�a����\7ㆇ�.�����з�����n޶��
�_��Юϐ�\Sj��*�t�{���#��.EnZ�$v#%`�o��g��d(Y��Uj�e��x��K�)
o����c�M��{��ׂ��_��C�-ߡ���)���nº�U��c���Ж�������ƈ���_os8�R������/–��G�sŽO�|嚩�3.^�ޢ��>N^��}��+ׯwqR��Z��K��Z�s��唟6�KM�MC��ݞ��ջ�^�*�T��o��v�%V�]��}�G��^�����/5Y{)�/�V�Z�Ĥ��-��FK�8y�u�E,5�E��N��xP��g�7����E��t�]h���ԕX?�|�~7/�-ZT�Q�Ti��Tc��R�Ix#R�^�3e��w.�#N�J�1;��_uo�{�vY�h�im$��]��Nҹ���/�t������a�j�i��u���*t:��TW�V��B���/�+Z��Rj9c�c<-��y��;���%ʟ�<���ky���Kw;���D�����S�PI?����˃Z�OJ������dv�66�J����Aze�&F�k����~�z�ޝ�t�B�rrT�Ŷ���&��v�ݷ&�rnRm��}���:$�:e�;e��]#T��5O�_9���#�w}Giq��iR��R�CN.o��]ֿ�W!s&�]ԝ�F�\�')|��#�Yw��>��	�Ժ��>��ש?ֹ�БYGr2ˋ^E�{��RQ]�Y~r����X�cn%��z����)�S�e8�dB���(�MԒ�^2|�˱>p�z���[GeB�oL)�/�L�{,EG��u��[/Ö_dW�G�V��3e~dqVRj���e>}��Z���	ZBk[ڸۻ|��K:��`זR_h����\ЧqF]T��N/ʚ�?��q,T�^u�����ʣR��i��Z"?�,��1��.��Eʾ��Q�_;mu	P���ۿp��N�A���MBu��k�E-۸�?E/�i�#Z��R*q�5�$\)_�Y:o�d��Y�����?N�%ᮬ���F���n��϶�kGίv����w�i���xm�47Z��J�	=�XJ�[	�N��VΫ�[#���ğ��i(U��Ff���iW]k޽��
��j���`+�)j�[S�ڰ��R�z���0}��n����gY<�V:�#r�3��*�^]�b��t�w��+��uV���M�_��.��F���4=.:M��V�9k|i���so����/4;5^��5�>�ɿ������F��jv�`�R��!�&�K�=F2��b�����x��2�
c�[���?54��NUj`�9I��|��b��Ee�����k�.���^�����yB�ߧ��ԍ(u=�T��ve?�^��/�����\C���?��e�/t~3����|�s�W&\���������3�icj�]e'w�MOekZ�l�;zr�=���b�{.�A���R{�O�U���=���)�lpf�����4�V*BR|�r�����caͤ^ս��W��f<9�r���2���y�T��J^��?q�){y2��9�gt�
��u\ۿ{�o��)m/v-?^�F��.!>��y	Ζ~�~8v,�.d�����W0[�?s�x�i��-O���Ԙk�>�mZ����_�	���r�Ғ�=Br�%86�ښxi��s"�~�/�t���ܞ����P���캟7'F��^�T�^����k�*�t�wM�x��q;;���V>m~�͜���@��yp������:7��-Ѣ�����tTJ��/�3O�>��qq��6F�ݎ����?�곍��C�ui�p�M����ܒ7(�����
����v��9yz�|?�^Q��h���.S��w�;��[��f����[X(�����K�D},MqR�~#q+eM4�m�����'����?OD��ai%ض;6h�Ņ'�'.��O�|���P�:)��e���/®�<�J7�=!�Z��L̕��d�%ҧJK�N~���c�^Q�J�<�1Q]Hź����w:�iU�<����ĺ�K�R���C��qs�5i�m�
R��j�G�K}�� �^j
��O~��-rq�����|�7B���rw<_�6M�r:������O��%���k��g�vM��gTT�Ъ������$O���Q}2�ھ�g?wOWa�Å\QԜ!���NIU�y��)�ƕ��{ʔ���}2��9'��mR�+AӨ��ƈu:��5R
nf�g��'�}/o������SدB�ѯi[oj�Xo��|Ml�i�r:�E�}���:�o��\��F�|��'-�	�	E����q#Xp�QCS輫���B��]��$�c�Ou�ݚ�Q�x�����<>�-���ޥ�Pv�R�q?�OY���韡���SЫ���p[r�Ƿvs���7[�cs�7�t�3�}�(^+�!�Zn�l��ޤ�s�����Es�=��Iza/
����/�����:�y�������	��_�4���F�y>G�Ӹ
Ii�
E���Z���{m
���k>*�E(�ǖ��?S�8n�b�Wʷ�#�z��3Q�?#7ؙ���uN�:ү_��2�ݫ:��c�Q�W�y�G��B��[ͮ{V�����V�l���a//YV�^�;%?Q�������ެ�Ѧ��OȢ���E��N�<]�-ZW78i�D�r��ҕ:�>ZVܪM�]]DO�-�n脾�t^$�]K+t�Izf�S�Y�rE}�NK�mu��Kg�M�^�_*�y�[<����	��/��4�4�/2�{J���M-��ߚ�v\���e�{}g������ѵ���*��֨�N�"���'�)$�o�0�&񟇜$��YgiѸ�+|}�o.����r۩������GYq������i�sR���S��i�s5�$�٨/b;/��QYe�^kU}�V�/|����b,o5+M����)n���w�g?�{��N.�>��j��v>���p�V�_�VI�T����~ܹ�Р�֕�%F��_l��@��j�Uu��������9��w��˝�j���c����\��r�	oJ/��Gp3�Y�5k:xUZ�d�[3������N/���٨��-���f8L.+Nb,�8;VX�}[[[�[F�8-��H��.��R�'�KR��~���t�Z���/�;�ߩz{p����;�j)c�F3MR���W�u|�B��i��t��]������L&�<n&3q�T�VM���
Dʼ;APө��2�~��A���S��Ew/[`]�'M��)4�[��	��2���_k���Mlf6�9�}��Z/�|c��O����xs����/�iB��O�ޭ;9�j�%>�M|�c����m��-���!�I�Nݻ+}��'͞�ݽ�.�N8_@��W�;c��s���ǹw��y�9E�|�N��9U�Z��aN	n���D�W-x���籴'Okm7R=3�N��I/�N['�$���{�<e���Ƙ��s���.eNVՠ�ֹ�NM9֋���`�>粍Ll���c�]���?{��5x�^W�%���v��ok��>���QPӚzۮ���z�O�Z��gR��^E�'�z$�*B�J�	ml�R�:�T���I2=}���8�5t�~�>s���~j��Ob�{b�
7�
UaZ
�7������Bn�E�-�0[�
�=�+SԺ��[m1J^�Sq���|��I��o������\���GVkz�t�_]�����-x�UOl�9sr�;khѣN�zQ�"�!N[$�bI/R"z��6����|�K��ۺcü7�]�/�z�������橃�T�KOT�ڼd�{�����3�OGGgNܶ G1ZS	��x���KB�M�6�.}T�?����۩�x�SR{�Eh;�CΕ�F���烥I��^Yvϱ{<�B$�I$��9xkL����ד\�����<o�\<U��^�6��O��^�����Aw[�OJ㇙ڐ���x�R{Bu��Г�o�8��{zS�9�.+Q⮰��
7�7��*�*�x�/�4�����[4k�QRN2[��J��g�j������u}{gl�Z�T��Ge�q%�%�Q��}��[�K��YFOQ�{w�sn���Wz�7�c\��2�l�Ͽ�~x}ϡ��89��^YU�*��~������.�1Y�ɥ�.ɥ�jiWF�s�LN���`��,/)�U�U[�q�i��MsM&�h�EҴt>��i;k�\P�\�Q�7��9B5 ��l��M����e���Ԡ���V�u�=�����Wĺt���?w'����g76�fc�JE����!()4�MxzM���S=c���'*��4�]�ߒ�����/{�e�}�;�eJ������*(�_-I^.��YƯLe�zR%�p��J�D����ˬc�'+��W��f3NѬ�=A��(T�
�T����R5�NϦ��޿
0��-���[S���O� ����M(�n��K�d�����>vߞ=ğM�&�u��s:?G�}��3F��e39Z�j�ڗ-��)�O�)�o)M�[�#�O;�p׆6ֹ�![Y�=V��*�Tz�S���П)l���NOd҇a�p��pˆ�8���KUkKjwS�H��,t��h��MZ���Q�������J�emm,Almoo�o7F��u���'J��^��ӧ
P�:qQ�RQ�[$�bK���Ls_OL�2�����s��l*G��QN�ކ�҃�Td�5��ε{�&�*�f
�"�����*{�V�o�W�4�,�gӃ[O����z6��w����긜v��
����[MX�ԌWíZ��Vo�)T��ߕ�N^_Q������?�%���Ix���S_��Yj���o��\��ͤ�g]t��?5G��9���uC�U���Ȏ������_k���+{\r�x���kMO��gw�7��O���O��H��<D⌯�í��/�;�f�a�z��W\�����̷�F�%�Gj?����>��.L�|�%�hKL��UI�z���(�hu�(�hӗ؍�K���]m�����Qڏ뭿�<��Z����|�K����n7���G�C���G�F���n�_�v���o�؍�Gǁ��뭿��������Կ���f�z�~4~��%�vk�hb4m�%Ml��l�pH�=�t���{�-���WV�?E�U��+/�9��1�w���Vv�q��v/gƭ9����J�#������:W3�%/,�d��K�">�O_U�w����iR���Q�㏍�W�n�U&�iy	�����u����)y�h~�	C�M

��N���H��Jv���W��2��b�B�_8����zG��i�{�h��Ԫ��R��BI�>jI�h}SZ��[+�q�u��]I��ۙ��_.ګQx�[Y[76��e��c�F�;�/��.�mq����{�U���!����-�Qm����[�k��g7�}eg�����ZQ����:5�V��:�䚔%�Qi����4�ޗ��'/��:5���YL�ܜm'&�A��r�5(s{�y�>r'�=�J�6��K)�Z�]e��z�Χ�^���!:��aNMNP��^ۓ��7��P��
�������X�d��U�	���H��$�(ۏr\�L�u�W�.�P�ղ��eosV�_4qqu4���^+�ux�e�ߐ�@�?kR�NU�T�:pNR��J)x��
�Wq�J��<��w[їM����~"~�sж�s.M(����j�^��C�^j+�-��V�oJu�*:qr��%�.���EM�{�b1�r�GІR�ou=խ7���l���n��:ڣ���n۫�TE�<����ɷ�8�^')���;
������*�iye��m"Ii�S�����WG{��D2��kW~��8�N�>ŷl��sT_|����^W[�u��My!�+Խ{�<.3��7��}r����	��Oق�ɢ���*M�[�t�O�s�'W�!��ˇ��4��1�\u+hvS����_��9.u����.S]�^���ˆ��e�$�>�?W�Rh��6�|���WS�/x�Iƒ�N�)OԶ^�����)�cl����]0�F
��%�_d,qv�/�7�mm�-�U�5Ez[�Yw����,tM����>�����9J~�������^}-xE{�,���������[9��N��%��в��mJ��w�K��Bݔ���	yu�a�m�>�s�?M:o�}r�
*��w3��K;��}r��ue�	�B+ق�$�	{g�ѡ�V���{����9����}��zϵ���F�B���g�Jզ�9z�]���$�m���z����~
l�GZK�
��UbFR��Y��ڳ���Yc*\Iy%Z�_Ť�H��X���v�G�(�7*^2~䌏��u�����=P��[���\%�%��2q�n��G�6��%�j�{��tow�3wu��RJ��2Y������D�%Ǵ�i���oАd){/��d��nNYn�n���	?,��M��"Y#{�_��CV���v9
���Fj5�9z�>U��3^{	?	��^ʟދ�i��:�*u�N�jq�:��Q��4�4��FZ�N���9�."�LV�$��W�5�A�ktנ�|�9
1�s^�юԯ�-��r~���9��<��+b�Z\�?�f]�'�����6��,�}�m�&���k!�K~j��a�۝��Wd�Wz�y�"i���u��j0��h���y�Խ��'�Z~x����9V��4��$�Ќ�Ŭ���Q��[J��R^XC�/IP�n�x�V�S�R��U$��+㤟8�	_�u��IB�M�jL����;8�|�?�v�m$�o�H�|��~�^�֟�>v_��S�2$rG/��T8���\J��q["��Ro��c�KR���Q�s��G_�e��U��y�����q�����!�r�6����#���*��x�<k�jz�]��銎93���s�<��/P�S1��2E\��u�
O��yr�u��?�����������e?��QB�_����萄{ҿ��m���!���������{O��N7R{�O�U���=���$&���r�ȫ��d{]��F��J��Dl���v�@3�d]��2R�TX��p~��`FC�+�}a��|�RT��BK���=3��n �H�M����mB��kR/��m��:]�g~�|u��>WV��ֵ��m�\[�S�*�j�N!%��(�M4�i�g�
�y����د�Su_Yh�j�z2���S[ΦM�	�nT7�5��2�p�ѹ�;{�P�J�\'	�J2�[4���^?�r�J�ƫ�p�ޥ};9�A�i9r���I����<�Ntn#�ҡz�%�y�^�Ӈ���?(7^�etǛ���z����N�
�R��Mn�迱��_�b��767֓t�-niJ�j2�NI�ρ/O;Qkg��kN��T�%����;1wF1]���Ui�Dg���������kn�[�/�+�/)�E�*�W͵��
�Ys��ݾUJk<�c�6ڵ��Ө���?Y�k����U�K9�Cq��&��Jk�=7}�o*:�%t�dh�.�]M/�׀+�X�9���,^����'��- ֘�:�+Uv;�Fʓ�\�?�����M]N��������v�պq~�^��"�%
�}
���O/�o�g��_[��X��z6��[�����l�F�����]u�n*ʭZ���rnR~�|�ԥE�rQ��m�n�6"���gfm�^j�2jU��7oA�Y�X7ocM����4��O��	wL��O�o���t֘�S��i��^÷j佈���kn{�2�'���[�zz�Kh�Ev:�v��w)�*���9���M�F�~ �f�+v�S�v�bC�hU.ګ]ra�9�_�9��
t�
4���Ҷ����V�SgZ�K��Y/�9l�	$�I$e`��IU���[���:q�,%����Ծ�A��W^��6�����^��jm��epf�or|_ծ]�������0�2i����K��Ќ�˕{ZO��L
�H�s�<��%=C�Q�	�Q����Twߥ���|�/�M�8�F��qO[�M;u�m�{3��U(T_
�H�엓�4���e\8�f{��ם�K�Z�I_��[S��{~�>��>Ot�q�sC��kKeU��Ϲ��%�~ZT��m���_:����|��-����F��J����Ҏ�0�B+�&�D�Fo�e�g�^�ť�[K�z��*J�j5`�:s��Q�_4��ѱ�]�<�2�'J�JP��N�i�IN
qRJIn�[�!�z�X�\WnŒaZ�*ڥ���ꪔ����ԑS�ڝiTvv��O��g77aqźU�Z�����y�y��w�$�4EM?=eaO�`���\���K�4d����t�sÓ܊����{o���յ����P�F]3�5�(��}��ɒmSO��l�94��ֹ�J���E4�JZUҸQR[��{���~q��{�~�?A����^vڮܪA�|�����Q\6�}o��o8�+k�^6�M��o��5R���|��|ܓO�^Ճ��8�q&�`�k��i�T���^Avդ��E�|�&�j�]���U����Bބ%R�Z�Q�8%����\�f;�^����g���b��ד2o���m��0����K�y��������J���=�mB��Iz�8�����u􎌹�=�sw�<��1�T~Y��<���|y��
j�cKV�o�i�j�6q�JI�).��߲/��e�N�m��������K����;wEx��>��K'�nr_�Կ����xK�Q�h��5�~���V�z귵9�uJޒ~�Z�_+[{%�d��
00���a��n*�R��qJ��]���\�`�Ey[m�]��c���\R�},��qSojT�B���K�{z\����N"Vᖉ��m1���Zvѓڜ*�ߦu<zϒ��˖��}������i,$���|﫛�y�xv��M��)Y�M7����]o_v�q|i�N3���y٪W���v���q���v栟b�[.[�29��B�-������YW��=��T�ݷ�%�\��.H�e��<�N�5���{{Qկ^���/��[$�$�K��%ZF�KJ��[f��r�^{�T?Z�j�Od�^���.��)�%{�]7KWX�r�[*�}Tjſ��#Q!��7�cV-�{����N#�+L��$_pĹ:�.��P�Te�]L�r|@�4�c���/K����DTᦔ��8���E�c?�������������o���'OUp�)����孷�­������ݪx~����洤�����N&M�&��pޣ/�$֍�4�3����N�*q�J�"�c��K�%�?gQ[E/";1����vR��s��q���[.�J�^^U�U��m4�����_�f+�&�D���Ş��n���~_Q������?�%���i���71ݟ��8g�d�?ܴˎ/�-K��M�_�q���T9��Dy$7����X��28��Ѽ~�FcHk{�����
Y*R��ƅGU\R��r���L�-�K{;�Z��T���lܣR4�c9nI�q>;�z�u\\st�q��x���:軟9����v���}�v���`]��/�
n�����/�G�5�������"׷%�w^��e�rٱ`��Rʼ�I9e�G���[����������[�������_���Gu��z_؏�kw����bj�4�S�X�瑔}�տ������������^p�Wn�i��{!�����w\~W������!?�z����/'�#����bÞF�m��B�%��Ͱ����%��-���S�&�Q�G�(�Ͱw���%��-���Gş��/C,uo�.�Y�������n��[!�~������f�u����,4?��=��lX���g�ۿr�w�w�U\��ê���Z�����(������5��������:^�F�?}>��6�f�F�!��1����uY�%����(�?�?p�$[�c��m��Nޫ�w��F��Q���ӓ64IJ�����m\C�
�}/�ҫ�oLA�R��z�h��j�.�m��u��{�h�>ۇ���'��k�ؘqc_A��/C.5o�.�Y ;#��isf5��V����'���Uo�S��w�tCv���:S��4�o�d�Z���Eu��&L
k9�CIJ���Wr�eV�j���?w���b����_3�K�>g������4K��d�+�ԲQ�q=���77ջ��zI#��gK��ݭ��x¤��/���R�Vj^��R��8Yחb�����q}O�q(��S�:�g)ԟ9Ԝ��/K��ӘӚ;S�ڊ{
^��*�tP�����qn��-��r��8�ؾ��v�o�e�#��2�K��]�z�Y�]Q�P�k�S�xۯb�}T���{�I��ar��ŏ��n/�9oN�7�^Y>ȯL�Eץ;�XPp��97y5��Z9S��N^�Il�ج�1�|u���;)P����n��|���{h�;X��~_��ݯ�����O��}�~��
gH�w�S��Z�z'�)�N��Q_�\XM?�ӖQ���V��)Cn�����칺���;�ˊt(�]S�Vj0��"����8޻M'l��+��%�-����*����"�U/uiae��w�Y$�-3@��x��{d��	"չ����;�ˊt(�]S�Rj1��"��=��޻=!l��+u��/���=͗����z�X��+R�}P���B���\��ߤ�K�M�?���2��~DsP⺵s5�\�rܼ��j=W��uһ�9J�r�ޝ7�ҥ�^���[8��B4����J��':���^���{-��c�(�蚏���d�30R�64�l����d��NEtdB����ɩu+��ۋ��q_$Q��t�&	u��h}…����_�ӱ�Wڧ2��tm,���S�/�D�%9�f��%�q��f*l���J���\e]��Va0���,R��4���|�q�1��9F����/��,�﷪�_U�o��:��Fp��:�
V�:��>
2�B��O���4I3Y�L�wp9�T�a��4��_EV��_�kS6`A_�����p�R—���GR{v��4����H�
T�z�:k���M�&�u�y��K�?Wx+�EI5ޙ����V�zc��T�%���:��y��ͥ��t��ťjq__���R�����~K>��<�]L��:��)��FD@��_�9�������!fq���c2�(ʭ	�KJQ_��Y���k+^0�R�)FK�P��?y�MN�������=�����#�l��m����dH�e�z�ơ��*8��S��߰��������ʨ$���
O�h�?�_�����r��Q�?>_Ӣ|�w[��"E\��u�O��yr�u��?��^���������?��QB�_����萄{ҿ��m���!���������{O��N7R{�O�U���=���$&���r�ȫ��d{]��F��J��Dl���v�@9�=Y�Q��l���6r���Tw��*����+噈86�W�EcB�Z~RM�E��J�$�����a�1"�{�>��>3�{�(+��R�\�D�������CD��s�Dvo}	.��۳��;[i�V�
{ِ���j䧇���+�q�/i/���F;ĝC���-~f];z��sQ��D`�I�ޓ���N�o��d�R����)�{r|��;UM�[�/I����Ư诞���(.�����cڜ{7۵�ٍu%�-OO��,g
Ւt�M�*
��K+�$����"ECN����iW��$���gr�Y��>�%alieor��B��a':S�$��=<�;~�8;�I�N��:�{m�8��]�&���P�犷�
3�:r�n)ŧ����M1�*1���Z����Jw�Q]��n�����T�>
�&�ӯwB�"��9�^���Ovq�=����(R�d�<��,�vk�u�6��ˡ?7S��~��==����s����?)��B�J����[�[�t��7����fZ8<��bmr�ޥ|�S�s\��^G�d��8���^���R�WT�n)�./sOo:M7ֶn��4�[B7��S��<���%�P�;M���㮵&��n7��}�]���8}�z�e-�Y<�q�̞H45���.�z�9?�Ro��'owmw9kqN�>��ԗ�}�9��&������Ւ}�zϰ:��`�q3��9�ݜm����^�zm����_�V<���{��D�!w�xIԼ��r�Q�o�l�eKد"��5=m��vZ�݇�JY�3ڿ'sEm�i}��~.u��^����:/X�z���ZS/���)^�N�9}M^t�*L�a(ԏU9)����
�U�J�)Q�N3�5�(I'��>L��w�
�:��iʕ%�UiX…V��t�d�2IC���+�}��dz�
�<ѩ���j���k���]T�eշ��f�+��P�[�
2R��2U�𩛼�U���c���^�S�b�;��F�6{o�/)�����o#��X]d����	�Uo�i�͕�;��	Z5�]��8�ӽ��9����bbpxl
����l����iB`�	#Z��K�4��iz2͚\+U���K�7������T�2��})a=����UÎ��m�-��	Q®�-�Zk�9�L����c(џ���S�=�5�E�vG�u�����ɏ4vx��Ľ����ڒ�*\�o�܀�.3�{�Z�ӌښj[W_�mK�S+���_����d#g'��6���9�_#�SF`�j*�d���X�SX��j���y��`V��gaS+{k������+X�+�5����p�ƞG��J֬���V�g��ڕD���*�=�)T�M�&��-�/oZ��Kť�'�*t�ҍ*QQ�8��/�$A�=�[���𷸥g}�j�"�]�N��&Tڣ�/
uFR�5U�,o/�Թ�R��:�����QN+v�H�|?�[���q��=9}&U�M2�S��llyyx����!�$�W��=�<����}a����?I@��-��Z��Lg�픒��.�u!%�jA��2\�$�SI���e��j
��ykn6��c{�"�MJW0�{3�ב��^��/hd��umn�j*�+җL�MvI?�}��ə�8�����eeF�΅8{���i_׋��k�<�T��v�v��R֍Z��8�(�|�oʶ����ѧ:4��e�s��̀s��8C���{uOsoacaҮ�n"�9s�!Ӝ���۾i;���O�i�5�V�x��ޕ��w�)Uy�X��ӭ?�t$��Z
��V�?�����q=�r�����\�;�k��)����cVG����uN�4/a��U�)?��9.p_C���SM��;ۊڥ{���r�ԥ�O(.q\���5��,���8��*X��NR�U)-���wF������݄̉e�V�ѥeq�W&kc�ۖ��{5���2s�Nr�#'�e#�>�H�6���W�5�aE?R�'�dF�ZwD�{ׇ�<��Բ9j�/�
T�M~�L��j�l�;��ϸ�p�7ST��R~X�����[!?�@�T���T�;������خme5��e����_���3��j�qJ��{��^��R�����~� �ov}W:4%V���TV�+j��W�K�jo���H�z���������d�K���'��Y����7t�8	�c���wﻥ6��J_�	��^��'5�ܗ�M�3xu��֋�ܺ�/*?gy-��/%
�.��	�}��[:���uB�խju�ւ�N�9)Fqku$�&��D/V�g��85�|�ַ?����V�z:����E����W�k�;�����1_�>�=/�~�l�?�}��G�/���v�x���r�4�����O3��X��Ze������&�����v������U��"��/8�½Ey��5�;V����J�*7�vΤdӃ��W\c�m�ߙhw�����U��#��^��G�^0j��՘}?c_L�ޝ�N���:�}�FJ�I$�oe�d�*U-3p����ݳs�1�&�<g�[9�;���?���T���ُ�C�/�r�����"{�^��Zh>Ȟ��׆��������p���P��Lï�S]�f?}���ʧ��>�~�����O��؏��������A�D�~��4���~��������1���Mw}���?G��*����ُ�=�y�O�}O��ؗ��������C�S�G$��
�K�mIi�g��?�/��I��u��i���a�ॲ6��������n
O[&��v��Ͱ����%��-����?�/�^�nj߸]��1�3���o�C�ڽd��f��wG�ٺ��l��z�
�:�g��?���6�܃���}����Ub�(������5�������:^�F�}>���~����Lp�r��3�ecn�^�+h5�%M֛^J�~$���/H�{����jR��_Bp��Sj����R����>Ir[��/QZ�Sg�����S���c3u;�ۆ��'��F)%�r�c�	鳩[���ov{����휧�n�)Ɯ]Y?f	��3r��t�ҽ�xu��zjS�v5j�m��V��4�=U��9�������s����%�U�Ɩ��~��;|}�:J�zq�J�0�Q�^�F���:Ty�~�X��v�� �:��էMoR�c�{i��T�d����Z+�M[��[O�cΔc�)D�)nG�]MO���_Է/�y�kM=�y9�M�
E%������W��t��P�-�~:fz�
�B�~�E}�z�C�_�ckKꦣ��(�>j�e���i���K��Y\?�f\&|C�&�,L|��ow�$`z��N��V8,~>�t��J��5%��$巗t����3ǚ7_=?As�4�&��Bvg9�TS{����Z�HiT���Q[�Ko�-��������=�GC��B�o���W�O+��H�Ou�����-�::���!�X��>�[%6�R�b���K��DB�������<�߷���_��8+��[�o}��u/��2��\ٱ���Eܙ�S�i/��}�/FI���;���U��lgw���s��߇6+�������T�뤣��VX��������o�[��ʼn�Zp��J�Gey�֣�W����Z%�/�T�H�|M�\l���%/vC%�R�=Q��;��C;���_['�W�|A�o:�d{?����Tr_"?<�5䒸��ا�qx���5##�wl�O�[V[������Ӓ�)ȣ�[}��'.!��]��[��ړ=��j��[ߢ�ļ��-��V��m�My9$Igw�f�;��<���U�|��MG홆Ah�R�i�u��UUʧ��y|�z�%ɣ��_n�O���%˸�]���ȱ���P�&��]BOeUQp����?)�`���쥞.��K{�����C�u)F1r�I%�o�"���qSe4��Eͷ	���ZN~K�o��i��,�j���n#�U/�$��P_~�<�J�q�J�a$���^D�a��.�:�N�;J���{%�翑�1T�XjN���*_KM�W-V��P^�}ޣ^6w���O/�[۱s�t�".�S���ǽ��O-����/�����«^��}[�AS���^�]���Ni]ܩS��*?�^���e�����W7��Q˧���I#�]Z�4i|U�)�n^��F����cl��{�/3�Ԛ�Rj�Qe�]���G�Q��4ײ�ow�8p�B4�ɂ��#*N���6��{X��l���Ѣ�V�NO����34V�ȩl���%�}K/%N�H�_���i{�+*�����Y�Lۓ�gK��ӏE8C�b��#�IB.o�+r��؉����\"�=�w~���+�o�(��s��?3xu��Z����n�2���Y3#)*<;����_o�W��9��?P
��o��U�V�Z���/�c9}t��~
�Oh��ڷ�ub����siFq�O�͛9�+�s�}(�ȊL���m21���j\}˖ݑ���嬾BV"��njY>�:�
�T�mm��˳�]Ѫ��B4��;�2�e���3e��5�ѩ3)�Fii�+h}A'�qڛq7�
�[1v��^F|��NҔ��=�n��_���_,L�8*�p})�׼�5�Ms��Ouˌ����[d���¼>�qR_l�]�<2�c��,Ɨ��JU�%qI~9��.=K�(�O��$�E�9-;��N�=�l��~�?����>�br�CB9I{:�[[��V���$�?t�*�]���8K/���9��GF�+E&��M'�{������o�<q�p}+�곔]GL\���w=�ѵ�XV�ptV��㘵�~�S�_�#���*��x�|����\^3�[|��0�;�Y�P��c)P�
�R�n-4��{���Z/�iմ��ƌ��`��M��۲/w���XW��H�_[vާ�$�����_�T�+*�݃=����?�����R��
5"���f��n��Gա:q�<����t���ʈ藊I��Q�i_����萄q�^T��Z�҄g;Z��˱���{z��`�~�c�_�LW�tN�����Q�I�Krء����[k}{ڐ�����IdjO�w)����6G�ؽFk}�\��ō\u�asJtd�׺RM6��L)r�R|��
+�/-k�Rr�8J2�E�k�k~��6�gZ��e������"Tln�Ua��j�&��C��\�ߊV��m�c#o�����&���W���-߸Hf>�����GjV��8�^�/�_�����է�Տ��&���Icg�Ŷ��z�S��-��/[=-����.l�u�_J]�o,�rv�����S�Z2���.)o��|oP�T�*��Q��ׯ������MCcZ�B�jR��J�X�8�E������5[��Ь(�r��6�I4�_ٌ7�)>���.ڏ���y��r��Y|���,2+wR�]�d�A�ɥ��O�[k��3��V�(�>����r�)�r_	A>I/>_m�U�i�+wm�����ּ�''))m)o����-�;h�__$�wZ47�PPRK�ro�^B�v���=;���r�%*�̔c��
����Y7Z�q�T�)&�b�e�o�x��qg~�n+(��SU)�{}F���h�oOSBvw��G!F=R�w����ϵxn����4�⵫��>��Ju#��FJ�N[�;�
������V�J��8T�/�)E����{�x�V��
��S�g�E�cwC�<���N����Q���T�6��=J[�x����,38[�X읝w�х�m$���MA�0��ўJT�FJ�Q���o�i]��Y`8����W�jP�M�NQ��Td��I��Z�[�g
�.�Ar���\��1��-�t-�$~��[F�)�t��c�x�7�����;2�;��{:.��ӣF�J�*IF�[�6�$��	gb
�k>���V��8�e5.j�j�*�T:��+�OГe
��-�W
�4�-�<����&����-�˒�#�k9�ԙ�5V�%{>�5䗒>���%�%Zo\\�R��#�O���oQ�8��պv��K��WOvβK��x7R�Diۜ���7w�v�7ߵCgRK֠T���W5��a��7���[Ɩߏ.���El	}��ah�
i�ym~{<�U�j7����¼���̦o9�������3}��o�Rh㕵���j?���h���][=)�'7�<�����?{�?�5���?t"�f�Z�Bk��:m{�ٝ��s��mFU��4��:�3��үp�i�GEn�Y�_�ưǸQ՚~�/Eru�d�k��_T$��DB�J��_���^0�V+m^��Ƭ�Vr�Q9t?8o�*S���{�#S����P�'�m§�I��5�(�q�T����7�=�u��+��gp��.��u)�Ug����e�"]�WP�';)g�e�~�]��Z��q������G��Q�K�;�9��E'se](\[�†�גQn/��q�F�	�ubԗC'4kӸ��JJQ{���b��V�YTӕ:
�F��Ok��l�~�m�W����쾗>O���z��ų~��sж�s�K<��ؾޓ+��w{�i�w����V�?7^)��t���d�→���9�1��嬝�~jt��W��][{pp��(����Oҟ#$p�ҭd��~Oj�ɋ���ѾU��5��a��	A��������K{�Z��B�)m:u"����h��k&��//{�}eN��
�PIJ�KZ�=/n���^�2�w��SNY����SnV��\�m�N�"�p�K=k��ZfT����Fw+}���iW�\}rE
օ��%Vt�)&�[���Ȑ����#J�^Sm%�����������Ze)Q�F�)�F�htԂ�T��|$�漥�Ç�5t��q�7��/1{ҹ��R�'��S9��Ke�|o��2VU���#^���֥5�Μ�R��4�1Յ�.�qO����^x2n�cF�V�:V�f�?&ѭ�N�)B2�J�P�#)NO�$���E��{�qT�{�'};m%�8��R����ྭ��$Ɓ����#==�R�Q�B�^z�K��
ۖ�Q^�6$��]9>E�p�忹n]�"zwB+�,����{�� ~��8v�\f1>��ß�
��K�5�U?�[zY�R�[�ӣiJU�֔iѧO��9=��[m%�6L�kf�ߑ�K�<7�����~��Fƫ�P�~n�Z�-)Β�z��Ri'ճ{�rY�~ ��>$�5�������q��Vj)Y��oj��p�q��y��.��Ý
�ӞĮ�]�X�T��:�җ(���=\C��i�sVW�6��;yFʔg8�{���(��[��ѓ�4�5���ii�Ր��:-��k/j����/�"P���V�j��.���u)ѕ���g��8�NԶx��G)��u��.j}�o�K�8��ָ��-o�����X^EҸ��f�զ�i���(����6�[��V%Q.���*G��c%ɧ�{��'��Z}���Met��KǑ�.x�R���J�zI/BϘ�0u)F���b���ӃrzW��s^5�e��m��Y��O�)��dž�NZ�^�4˧�B��5.����c��6��m�!ct�N�u����M��[���~�2���5�O����[;�{��J�&��ɚ>�:[#��FcDe���������J���R����Hއi�/�9©�^*㸡��k���%�h(�ے�6����+�K�J�V��5�ڽk>��[�Q�}>���]�	�yŮң��]Q�^���ԗE�wݫj�yP�v�>o�M�R@�W��uN�T��ނ�8U�&k(َ��d|
�Х]�ԺZ��U[}B/�j[9I�K�_���8����njεЙ�xk�}7>��G�t���tU�d�|���u��k��u�e6���m��G9�Fʕ��t�<��s����K��L�?��t���%��7Ii�o���t�"����o��V��ASU"�8�Ӛ���w^��f�U�WJ�[h8E�Kn6�ڴ%*QqY�G|�y�o��Bp��W
s��Хu��)ӧ%5�V�d�o�z�c�!�P�xEU��k��m�]�3��n���k���w���n���k���_�-�F�i,E%�e�iS�.)�AGwS5y�w���j�Y�����?�CW��7�����o�7I~Z�����xM�f�/�V��9�Y�/�/ő����^�~c��y�2�/����`�TV��WUzWoM*U�R~�ſALǢIJ)4��6^Di_��-l8�ċkj4�[��y5
p�ю�{$�2|���е����N�RqI��>:rn�^���3Kg1�t��W�X�9����-b'�8yË�.3t�}*��*�=��:�!�6i��O���$_u��9
X�5��.1�g�V�M�zw7��S��*o�r����`�8=1�Q�lqX�e��%
��)DZvF�W�$�S�ak?ch���R���x�ԣI�)m~_����Cާ����k��l/���3��њ�
,VjƾFw��J���{Z�=�R��_'�ϙ�~�&��t��_χ�E6����\�y�]���棪��T�����˯������sD��������u����&�#��qkE�c�V54&Z�W�q3j�-�B�̫ʤ�)�U!к�''-�KwI΍Nt�)Bk��ygx)o��^���8	�n�ZCGj�S|�:���-0�u�	���K�S�oْng�?�euum[��V�u�rڅ�ʞ�n�ZғM���Q.\�0
e��.��ԋ�m��fם�g��RK-�۸�u^���P���g����/�u�.�uNIvF)mA|�"�W�Gw���$n���$opNK[w���(F��������K��t-�����I��M����xs�zp����ߦN�T�z�r�J-JN�i�\�/��Hc!�Ww���»���j5��w��g��
3DS���?YӧM�ԭ�K�E�%��v�529
߲��ϖ��i?�0O���t;��%p���F0�-�&�凳)c)�8˱��ԩ)<���$��m�j�<m/�r���	R6�m�N�D.��k��tW�Uo�0F�җL��R���R�Y[w�f}_h�OYi�v_�=��iM�Z�ΊK���������i/L�r-.���aO^�!�auS�i���<�8�b�a��K����ώ2��
���J>�&r-6��~&e>"M򧉊�ʾ��i�(�b����uK�Q�����ᅯ60��"��_�d5�zv�|�/��瞭�S��I}M8/���}�WO5uϲ���y'"���Ex����O����*���5K�����ן��RO��
;�gR�Ϸ��,�ԛ�ͯ#�S�w%�6^@Z{;:�u�rxl7����u|�rO�!��%�4��^��I$�[$dz�"�%z1��b����\������|O�x6��8�r�j���Y��Sq�眞�`�.��jsI���o}�ςe�=1k��ŭ�F�66�j�\Қ�3�]1Oʺ����K���Mh	��36Y���5J���BJ�{�N=���Q�/]Eo?b��XX�)��E��w
('���6�~�_��>ж�y���^>�����Z��6;{�io�g��}�UU��`c�k�2�?��FjL�;�Ui�M��ur�o�/Ѻ�_��{��d�Z=�(�G�^;
��#��x�aSui���O����k��8[�8�*龌͵�~�T��>��
ܷ�w���S���}^S�P�|��m,�:��T���՚�W�ȋ{���G�^j���.���ҋ�)��s7V�r�7�ʬ����vm����T]��hU�/�R}�/Bd���c�X��s�,jI|�ľ*jF#���mӎ	�����6�~�n_�#��\��ԴX}|˿�YY_��l��ŗ��,�x=o}�1v��\7�(�ת�{G�����Q6���跿��Y��ꦶ���,Tl�[��	wm���[�B���\��఼�J+�)$��4�On���MUQ=�K0��U�?�flV}�]d�����Ƈ�:�O��%%��]h���]R��!�$��F}���'*"�e��������;ܭ��[���ގ�UV1��q��%�}|6���al��-,��V��h%����>���v�U$��s�P�^rs|�ӷ�o���Y�էs��RW��?�?'�n�D�a%�
�q��-J*Q{��2����s��E��N���(�,մ�~T��N�����?gF��A?�>z��Zk+��w���ų^U:r��┽�h���רʹjg�Qu?C4_	���U��R���U��h��	C�M;Ս�d�q���QI���(�љ^�M���^S��t]ϮW�c^R��V��w3���k��S�n%.�KNѿMΗ��a��{;��攽,��\��]o��8���9k��S���*/n�]�ӟ��x5�g0
K�mR֥����8�>���Ozi5��ԕ)���9dq׸�ڸ��J������⟃<���?UZ�W���~f�+wC^1�|[�wOet�׽rv����ǝ:��j�*��ڇ�J�4�Z7��,�s�3��П՗CO1&�~�N�8{'ҽ���@4,��2��!)I��n�}�#�ecy����>ڥ�z�����^�ȶ�Wm�=<��|���.p������y\߂�S�K�N�.4S��5��t������[�o�X�3�O�:ϧtk��o!����u��y�oG���qxn��h:�i����{}2o���o�lI[����{Y򺷧wmV֮��*r����핶c���./�r�*Jڌ�F�jQ�]+}���vv�Y��k��,56����S��_5�~H���/t\s��u�ʷ��RT��8�k=i�Ri��I,�Z-��.cB��*Mg8��ɔ��c������\�Rvm���Sv��z���v3�p�7W�]�cn^�m��_��H�Ϸ�k���I�%N�Ϝ��-��Q^~�m��o��6���V3��w+E�f�ݜ���5#�h�o�I}��u9���>�ơ
Wԡʧ4�{�7�v�	��m<-������Ӡ�FOOcmt���v'���w��T-\���r��%Y�O�$�~�<���f���Вm�t���I���}��yG���+���?Fy{�^:��r����[i-�[����Ŝ4r0�J��vouR᭤�*�y{�2�򚳿�qź�%�ڕ:q���nS���9�"��5�I֡8iV�\��I��t��/y�k{��ck�,�tӡ/{ɷ쪒�����Iz�2
?�+F�',�k���s�(�
���s~>S�E���+��S��Τ�=�J�mvM>Iv�۶Ȳ�5�w{Jٚ�{:Iւ�~���ٵ�F��~�ėҿ��Z�HT�n
;91����p�K��}A�A���ۗ�go1�qڃ?���[�A������'V�Yx%�km�\�i.l˱��Q��dNR�"�'�����X-���:���V�ڜ��I�B1\�&�(�l�\Z�f��Ԭל�i�rކ:3�Wg�u��9v5�K��?��S��O>��r�k),u�W*0|��'RK��|�v�$�z,"��,��g_;��1v��s�d���)y˷��w�`$�T�3��Мdב���F_+��v��F�������P�L��^G��Mri��|}��
���6��=��٣}�Ζ��K������C��J�Z��[֩F�ƥ*���:s��2��4��*�M&��O�Sd��t�Z���-��f�H�ʦ��=��r��������KZ�%�.���cEr�]�k�\W�Ir{F�1e�[΅e����S2��B�n(<�>�����V��CO�.rR�����(����&P��JU*T��)9Jm�rov�{�3n)g}�����=�خ��>N��g����A֯�Z��m]��y�C1]r�7���"p��m}���=������:���{����%�ԏ��|}>�e$����Y:9K'��{J
�A�(?_�~���f,(d�juѯ��ڼ��{��FP�y��l��u/��K9�(�R�[�ׇ�Dk_�>�[��_��J����2)@��^����-��n����4���o�z~�6�����`�x�È�/D\b�a�����%�ڼS����_�4��QZu��-����J."��d���l}�y��p�J��֥:Ui�P�Nq�P�{J2^
4�^Ttec����t��2��mqKxZS�.�N;���R�Oʢ�/�dx��������"u�+I��&:�%��>����՟[O���#�Qw�{Mo��v��]䟄����*�u5�����q��6�z3����*�N���5-���?7�)˫�Y�p��F���V:�R��sX�����҂�V��)9$����ur�f�^����DP��=y[��t诖���7�i6��e�f��Q��S���I��ܷ�=�̵ָ����%C1�%��7��x�`�_`��ey��J�>��V���IӍ�ⓔ��N+�-�[��\�8^8����?��~hN�k(�)�ԔӒ�.5�r�+�y>��æ���2���q?n���H���R���}oQ:x�y_�$��V�`��FO��E��Q��UK4�on��<��<I�^�Hu��Ui-�1)svm�%#'i��Y�l*u�_�ӹ�/��8�E�MΤ�Ɗ�ڎ��ՙ7��sl���.`յh�8�*��FQk���
;o��wX�K9�X��TN�O\�ɭ�~b_�R~��8/�8���Y��E�����l
�UZ𷯴%�MR~�<Q��GSv7
����}�<NJڕiiKP�I˒���˻o���n-�t��������������;�A��"�uǥ��n��|�'o^�ս;�z��J���/u(��k������]ɯݻU�O¼m�\X��{R�Ϳv�������l�J���}/;r��
N��j�ap��&�B����y�#G��ޗ3V��8Z䦲���˦��iz����+�P��Ҫ�	�֖���J��Istks�~�R	�"�(�.��aN�ޖj�����T��7�]����ا��љ. �
'�ꄮ��^�[�{x��U��%哊�<T�Pu&��g�T�Zj�5�7��� ;�hIZ�<D�����c�_�!-��z%Q(���(�ap��?���bm�B�„-�S_;���v��jW��.�p�wu%�xy�f�.�:m�-��-�m�o�� 4Ku��v��X�����E�Џ�S��
�qS��B��&�"���$Y��Vt*F�7��Wq�t���
ե���?%gV��Ҵ��m��j�+BN3�%�(�4�(�K�wy�����ޔ�2�)��JT���]�+��dj�4�*(>n�d-2݅�/��^�N��Wۣ��h�SU"���JT���҄��R����yY�3��&?p{�����1�������;�c���ӋVv��C�~�z��������2��?)�q�E�~-�~5�ꔵ��g�2تu)mk��R��7=�����Y|��[9J@yJ[�oz}�����f5M�7<~
ڪUf�Z���h�˭��PRi�l�u):��<t���>��V�:[��x��-
��)s���r�7o�A?j��W�hѦ���%�(����6�u�S����
}<K�L��S��
�R�i���\�O��k�8r۪K������yƽWSXq0�ZZ�N��M��oM��Ky6�-��|�ÉR��V��S�vu��`������=��vzϏ��������{�;ң��$9e�����x��|7�¢�T���W���ci4�=�d��iE�T�\���i>Ĕb�m�$�6���f��wx��n��4���T�2�KyY�I��=�I�{vԜ�R�Q�jKM�rO���o�{s�jM��wۨ�VVv��:6���ƍ4�
p�J1�\�I$����b��i�˼^-Œ�kܷN�O�W�K�_+G8V��!���JQ���W����/p�7x�|-�5go,V���J�'ʒ��g���nX�Ֆw-�:I��^��]U�!*��E7���u�Ͻt�Fi��Ӎ뜒�[�\7��{Y�җ��Zt��8ž�>�V���v�.�FO�7�Qԫ;������i:������v�#N*�"�I-�$�K�$���6�����Gq�ogC}��^��U�[�!޺�N����ɖ�?���9��jĐp�9zղ�l�)24�ƍ�cm�p9;�v�t2��n+T{B�8֌�)?"H�n�V�V���*m�)�׼��ܶ/=n�L��Fݶ�[J��qoot���aoc��_����{Z��Q{�kS�]z��Zƥ<w�Jյ�V��ni�jS[F��Ǧ_TWT��v������X��3��tc�ۇ���$�<���/=����d(_X�G���	uBk���cOf�jG���@%BN2Xkz{��5������.�sq��ko���dߥSK�����oj��4�I������̥�{��WQ�ך�g�fc��.֔��B4M�������Z��w�V�GZp�d�.Os)�ŏ��,k�j[{�T�)%�W���61c0S�.�:O�"}������֓�����)l�!]��H��W�[�n㻴������uJ?���1F�M�e����"wk]l
�\����#o;K�jU��m(T��g�*S�h:u"�^ƚM5���k�SqyEw���iJ���7�P����K��òV���T��;f���/k�/Pb}w��um�+y���Ie.�z���5%׿�ƶ?!m.���R�N���T~)��ViR��6�#JO�"Hld���ߗ�����?�Ǒ���,~���%���9	%o��I��Xy��s���!���W;��8v�V�ԟ�ml���D��w
�U/��Q���_]���G���~����eN�_’�)�,����˶��,h���
����]I$�y�U%ʛ�`��Ž�-�iF�*�p�$�RO�4}A�Q���%�ϩ���	�P����J��R���[��k���~^7��u����>ƅ��VV�(()o�\�t��>7V������*�ߢ�㿩��G�4��eō�(ӕ]��g)�=�ImIE��.-���\½y9(�g^���b�՚��=���(Q��_���ʢ��Q[���}�xNE`/4����:�����Z�h-���;���W��c�4�%�9?/�a�J1�"����Kd�å�̯��kӧ^R������{^%��lma���ΩMQ�(%'-�=��a�k��8K�d/n}�V���N1��^3�/���Jt��C��k
j�_Ko�����^űu��]ֽ���,�C^�<Z���OManw�ak8�B[���;�U���<��^1���%Ě�E���\:y�A�kBq~�
	/=UyRQ����!�c�F)%�K�/�4����WT}�َܻ8�Wi������#�8 W
)c.8��-s8�k�+��-����U)Ϯ2�z��=���f�8A�MA�����8�p�yT���
�ߖ ����Y8eJ�n%�*t��e.^H֌��l
N,�R��)R�O��6���\B�ŭhՂ��-�=��D�f��᮰���e^�c�+������$ԣ-�o�&�\���0T��Ӛ��[���Ԓ\�
��H��'�̌D�G����+��n}�g��D�����(C��]�j�ڻ��*�Ջ�d�y;\��v��5c^޴;a5��O�i�i��I�ž#Xq;H��x�������K�+~شԢ�c%�K�G���
��lÅ�E7�a��ʷ�I�C)�
 �֡l��Hm]k�{�_i"�]�J��>�{�Wa8�.2�?=����\�+$�7��(��m#�*�+g<��	��W���F�����ȍ�n��I�x�ǎL?:[��>���:]����.��o���`��V��R�⣝ZӕJ�=&�o�?L�����[2�I, e�;�_1r?2�j�c{5���J���|��� Ml�&X��Ƌ{N��P}�t�5��=�v��(ʅM�˙�8ouS��<U�W+�8���j��R����?2;g����;�W��n�O�/�=���hŷv�,�J�M�ϙ��fk]�?�)X]U�v���ڻ_6hӏ�U;�K��S�=��&G�d��.�T���N��t�S�(�-l����\�!�8%u�l��**鋺���rv��Jo���P��E����Zګep�%�_:��]�f��qN�����/��e��O3۹�Ą�'
��ֺ��%:7wq����4���.>�#`i{;.DZ(��s���K��
X�k}�W�R^�P��dJc�e׶�TV�/7�����֞���{���P����[���5��V��>��UJ��ʂ�([ӊ�>�ϒog'�NO�+L'��:��Vbp����lF�4�aqiA�{Q��8��Q�4�%�rx��'�������U�l��Ս6�Sp�u�o���V�ӹ�y*�zT�J\W\a'(�ړp�kǥy
jC{B����%,c0����ɵq�V7h�e>Syo;r�ێn���99N���7)7�K��k�]jy�Mg��s��2W��C��T#�Q^�8����5\��
��Ut��qX�f�z�o5�T����(���[%�E��riԺ}?
���G���R��z>'�/,�����2�V��o�m%A'-��[Ԧ��ί[D��z~�U霦����d�*�ɵ�O\ZR^��k�k����k����2���9)m����d�3X�<ŅN�[�zw4e�T�(���S�-ݽ�;�{3��,x�s�J�U6�z?�[���E>�qZ�s��WW�6�nkYP��j�J�(�­INI�8�)%��o}����w�
s9w���0�Zt��[�i֡^�iIT�є\d��)�1��1�ъ�ݽ�ۛ{�����-+��o��<����6�����VN����J=�'�}��Ĩ��oui����e%�6�丱��4�g����%�6��ӷcݏY��6����ٽ-$��s���5��J^����]{mR\��.M{�tl��C�+]9ŝI��q�5.c{��C�Քv��R�ކ���jU-_�/C�<mh�i]���J��8R��r��"tc�Τ�N�9ԩRJ�"�)ɽ�R\�m���d��	
�ܯ��`�^0�x����\�o�;�&�d�jQ0���	��t8��l�r2�^2¬y�E�٪'�����|����S�.����
�ϝ�.������[Av�_\���U̟K�}˭�y6+mm�J��S�k��7
�q|��7����8=)��8	F��U/l7�	Kz���-��K�1��̭�S��p[%Qm��7;K�Kb{��Z��÷um���#�סu'�Y��'_���6�Q�F��m�қiE��͢����wsn��5�F�y{���k�y���g�ĺ�]YӔ�tA(�Kn|��y6=|!��l�w�r�^�����ƻS�8�����J4��*rx��I�qO�Vs�����zt�n��,�RK8غS�K1(k�ce��z��n�Z�ێ��oZ)�S�5 �S[�_m�3��
>�{N���3�$s%�-0T-o�������U>�Y�%��o��l{�]k�oX�ҵ���reROn6�e������̽��N���:Xoz�]>ڋ~w[g3w����K:tg�B�
�(5�����s�3��c�q�e�)��&�Ѯ�n��^U�"�h�1t�cP��3�BR�S|��o�T��S�J۾�����>t�=}x�ٴ���8�A��j����X�fNޥ�ݭh�
�gE�f�;�y�wx׳�U��ޚ�Ju�:�wZ���U�g���R�(�5�%Ø��[��Ǣ�&���z��85ֵ��+ўϢ��>��Ӌi��ڴ����Kz����s�Wn�{~���4�+�\ֽ�u��Z����]����MƆF��s�u�����uE����U�x*��b�2O	ƤT����N�	S�T�$�$�S�G`G����4ֈ���\i�ڶ����3{c:������j��Y�%���l���Ǭ�[-�2י�R�'��Uu��.꺕��=9>�"]�l�I$yA�B���R�(�o����8�F�&�"�@�9Jn�����yk�^#�յ�v�U-mf�*g��b�
�>}��k]�ұ��VxKϩu��u�B��p��U5FˏZ��Q�X�U�ŕh�׋�}4���ľz_�vF[
�>v��V���S�B�#N�*pQ�!��R�I$��1f��Tԫ��7t.e���}�Z��W59r��@���\F�ҵ�׳F��?qnT5*N�IU�.�M�I�[�,}is�|h���(�^������O����}^�K��iSsk��</��̼��J|��]K@��'y}�MCa����d./�}�
��C�0�����
�[l����X�m���F�>QqνcKS�tʕ(U\�Mr1%���Q=魩n=rY&�~Ϟ~�����l>Ϟ~�����lX��������o�8rY&�~Ϟ~�����l>Ϟ~�����l?�_�o�O[����9,�@��g�?P���l��g�?P���l���/�7�'�����I�F_���}c����~��r6x�Z/W¥��XJq�錪T�{U�d���?��1i��zET�m��rM���d�%�H�t�Q���ΌTy�q6����[��=��ҡ	?�і��s�[�+����?�̵�*�_��� ��NS�Ju$��G8����k�Ғ�F?N
��gWk
'n�z��)�_�_�y�gS�cIQO����QFŷ�W۠�p\yZ��S�Ċ[�3�;;�L���]cnd������u�q�
�vKDZ�&&Q�u6�Pa/�^�t��L��%��^����C��-x_�*CS�yi�a^�������	m���cQ�J|��ӗν�8ѕjq̒�9�gp�-g4_"���Z]+��lyى�Ӻ�3���^���i9G���2�o�����la/����v�Xu?��kg��T����~�!G�-��ڒ�f��.7�fV�<ƫ��卥��~�n?�2�ow�i�;���BK�T�T��j/�-h�կ*�;0�J<?�Q�I>ܿKǑ���q�{C
��V�v�J�%)IE99>rm�m�l��ó�?�/S+�''ʓ��x�0��V4��������^J_Y���->�6�׼�i5�����:e��V������Q3��N/�z���s��v�󡫮w�k;I%�~�
˗
������XT��h/�I�c-uruݾ�Fo�.g����?3�
qs��b�[{%�o����oӣ�OJ2��ys�w��'�\o腷����7�B����ﳟ3�~�ϵ�������y>j�D-�N��5q��ߧG�g>g�C����z�X<�5q��ߧG���oӣ�G��3�~��i���g�O����oӣ�G�\o腷����ϙ�?P�����^��'�\o腷���֍ݵ����Wnމ�m�$��}U!'�׉�O`��'��z3�y�ս^��{{���U�5N
z����FWcJ���g
�h�Q�i�m�,��:�Z���L�*�r��oa��>b�i�}\���q�9��#N����H���[R�{��]�o3\W��iV��M���p��I6�Ism�[=ش��U��ʟU�֭��\�䓥Mz���}A4
������d(:y
G8��2[J�mB�[���k��Y�W��\����]���e��vZ|yk���ycġ��WQ�X[~[��BK�m��'�{�=ÎKZxT�����v�l�$φ#��a��!��r�Y�(�/����Q���%�d�kʎ����jkn��������r������?j��o��Y�B%��
֚�Q��6�|P�q�麿Z�zb�~�Y_�1_�%��y3�;�>������X��<��j�ʽ�R���)��qr��\���o����5vR�|
��\�uj7E�u7��m�vz�z�<#O��I\W�!�1Q��Ko�b���[i����'&���aH��:·8�'��N?��\2յ>:_Ws�.0G�|��!��T����7��7���+���S��.���|=Nr�e�< ����~�~�տ�"��/�\9O})K�r�`ח��$�"�)�b8cFB�J�������Na׌^��k�3�	N���hT�GO�Ȍ�Z̞�c;[��Yu{^�Ju喻=�lj����Ye,�c�6��mniʕj5`�
�kg'ɦz�6�Q�%�D3�w�h���&��^�O�V�oR����Ԥ���E|-��)TԒ�Zi��Ot͔�;�`u\�g4UJ8<�۝J/�w2}�Q\�I�V��-�&�G,*�_����@u�yu���s�#�x���W����ҡwm}����¯K}2R\�%���5�{��l�Zw��6��+<D��I-��f�q%�4�q�H�J�Uh�O�2?2�^�]����zU�4�/fk�^)9(v7Uۄd�N����Z���'f�(�o[������2~���,��jV��Q�"���\�Oo:���R[)-�„I�eyk������
��4�Z�X=�8Io'�i�kx�tox���qӸ|��{Qq�����~��}�|��K×"�_���j�š��+���\��
+�F�.j��>���N�;�w�������z������'����M?J�d����f2��+u���T�����kש�T�˒�I$��$�<eƝf�-an�޷���z���n�r�	��Kb���s���֪�Ξ���M�/1/n��m'��_K�M��O/�sU��R������5!��3������뗆ƾ��~��tb�$�M�Tl�z�蛵^K1i��3�=���Wt%�FҬVV���M��Oz�y!�)/
�W����{iw^��uӸ�VP�v�)�������^��Z�!���\dkҋ�.�B�^ۨB	F;��n�[�œz.���w	4�-m�^yg&��=^�T�j���t�,"�����,eL�;&�zi�_ڹצ�����I�+eg��dsy+��^���WZ�M��7�˒]�%�$��+i&��.m��89�x�R��zc��w�p����_
���^Y#o�Yi�U�1�w���ؗq��G~T�5�mn��2���ꍍ��k����ThQ��J�}��W6����OMT����*�x5R���+)xNo�uW����w��{�
�P�2��ԇM|��S�%�.�p����v��
�x�WI��9���'Z
�ѫ��Jkrޗo;�]oh"f�S���Wr�/�R���~�K��?o�}��d[�)���}>ҭ���..<��ec+�ϻ9\�*�
��������R�	w�m��+����{y����z<������:�B�]��o��5�S۱Mx�Oj�
�Z�㱺���'Pq���*U�c���?C{x��NX;)fv��We�����m�;���m.a{�Z�ϑ&����?[zi���ar�2�e��j��F���-��gw3���Xð\(��c[P�:����q����?sc7��q�koy��aoG�����o~m�F3�x�GVX�e(\�%�?����ۛ���f�í���+l�R���8�1��jk�2�x_��>��[:����������QX[�1����-b�梌՝��Ͳ����6~0�Z��$�ܷq�7�٦��_��KS��%FR�p��ʚ����1�ma��w
�{��%�п��R�m��YZGY��2���{F;ՠ��Ψ��������
��ö���\�����N8���Y���>T���J~Ҕ�T����v���
��X,}[H�B��O��t����}��)܂������j���I��Mt�k�ֶ-^%O+OLVx�mI�+���|�ލ��ѹ���u��Z�u\��U-�׳۴��[���r���m�5k��)a��^"��r[yyu1�<���W�Zڍy��~�~m��{C�l�Ѧ�(��O���c�u˰��ti�*q������Yo��/�$>r�I�����'4o����xJ9<U�NT纝:��է5�S��N-4j���s�w�;���67:�C�uS�ӥ�k�����vy�7.[�6�m��V�J��W�
��E�p�S����4�4�����W���m���\��ͻ[ʖ�f��h����
�q��xiaR�S�^��I�*9U����*�m�S��|��;=�͐/��.�	2�	č%}����hԯ+k��h׎��z����FC�խu��_�{�/j�q!���r��������R�"�9F1���Od�l��BujӡF��խ8ҥN�\�Rr{F1���M�I&߁npc��8�R�ޛ���`j4���t-y������];��&�x���T������Ʀw#N>r��gzKx���i�)ȥ�u�]=8�ʟ2�����i��R�ٜ�e��#�u��wy
����5д�Mk+7��}���ݑ��H�i���
�)�[Q�*4��ӧ��Ke�$��>�Ǘ��}J����B��dv��̹S}�h�C��L'�3w�/��KMO���*�;���6޴^ҧn�Qi�t�A5�Si�j�0��jʤrJ�d�P�
N1�.��l�����*�*)�??3~��^�yX�i�!�鵳��IO�V��9Kwa�����"������ef�l}좥ET�W�.�ۆ�M�%�~||��ޫ˧�ᳪ����֋���-�bC` �����F�ה�;���Y�=C�Vc�v6~��,��5�%>q�{���~M�3��o�t~Y�;����/�8CO�5m�S�˓K��=��,�It.������ה��`������8���_�	�/��?���(�{�(�yI��p7��?,���s����e�p�Q���G��2���ה��`������8���_��/��?���(�{�)������t�'_�9����8}�{�pOk������i�f�]9��u��op]�V��N.�2����K�����he�O�j}\��?'r}R�������@+�'��1cK�гo�/���x���d��}��{��g�h���9?��]�f���rti.yC�߸�@衄�G�S��:V��զ����m�b���[�t��|#f�����:ηK��e-L��8*��99%%��{5�O������U��i�[��U���K�{����I�L�cSo%D[d�W����@е��7muc�����Ntj������bmb�Z_T����{}�N�^P[�{@�5�Ծ��K���5����C�Zi%�Fڧ/°����wwٌcޟ_��-�1�{x��ּ�D�{ͥ'���"ao��;��һ������XϷ�k��$� �Ҹ���Ě|�Wع?S�U'Q�x�cR���DsP�3/�B��-��>Æ�����u��iy�J��aJ[��q_
og�GT�l�sU�
T�V��a�'�K�5��5��9-S���|��K�n�錟��b�Dぴ
:���],ӧ��v�'԰�];��WЬ�B��j�mr�c����}^��-M��}�Nv�+^M��9F>���Az"�8�z�5��Z>����1P��)nKb�XG]��U��UnR{���{��>^���kG��m��-}��|��x�ǘ�{���������kG����91�>^���kG��m��-}��)�Ly���m��-}��[_�K_p���|�c��[_�K_p��9YW�͌�kZxշ��8�*�vh�k$�����g��B��l�\���(�k���&�)T�mZ{���Esݥ�/!8T��9)FI4��5�5���ku�d���/	,)^ԕJ�j�qNr{�B�Η�Np^�~`p彥8�v�Q���-�nq$�'���DZ�93g�n(���-&�nx���c1o{Xi�孫8�-���<w��ʎNi�Mm{{V��]�4i��VO�$9���:�E�cԷ��3��*��o�S�}�T�]J���H�Vtt���,/�
@e#����K�gQ�K֊[1qr���\�I]VI*���I�gh���x��ih��I����~�/�c���_Z�+�7_Ϋ��/�=�u������g���)��_�򗯛��ܾ��4�٦�����u�������9�kJS����mɿ�$����z{����v�q�u`�`�坸�sś��\�+RS��Z��oUN���ѹ�j�/�~N{vG�'$e�,�ʎo��3�p�S��U�o�_�G�W������q�,m�#
aB���
�`�GȒ��dZ�Jta+{7���Kr�}/�b�l�h</V��sz�0[T^�v��۵�$z���\�G`��Es��
��i�}��.���U�s�Go_f�VW�a��y���C�$v���5F�LEnX]��M·��Uu��NO{���dv�p��̷�Jp}�8_��[���H�s����~�p~�i_�^2���t|�3
_#�u=l�ݼ��um
r��ݨNe/"kf�Wi��I��
l͉j�U�Ѹ[����S����������d �e'آ��k����]_�*����q��d<��>�s�op��֡wN��ږ0�ճ���Zm��R����s�nZ���|@��ޅ�=5�����6;z�{~f�Q}d�l1vm��K��
�/g�-�{r63�2/1��Yy=������e�$��,ѭڽ�O���j?��)��LB	����q�
���2�βڥ�Q�	{���Q�ϺF�Ⱥ�z#1q���jֺw6���T��Iz��z�Ճͼ���}�a�{�Zj0R��]�m�n ަ�ō1)ʦ��V�/e_5p���򨾰�n�U�ו�B�[J�{:W4�Ji�L�f�vG������N����w�R?�D�ߌ+Eb�}i���k�	�'�z�=Mg�a��I�ok�	��	r�s���
I�������T��pZow��������B�<_f��	/�E\�*�?���/s!�#��4�$���{��w.�i�Cў߾]�T_�3��p��xV���X3\��NS_�$��|�Z%�S��^�}��7�Ԋ�g�D���z�����L�R����u�������?Kw_�~~P���g����r������J�|��I�J�*�J�8�[F1[$�	����j,P��[�ȷ��Zo7��½��Tz#�7���^em�j+�mIU�$��K�4���O�[P�)�4��F1IE%�Kȏ�#W7��%˯7'��[�r%V�V�0�[�Eu{���6��>F�+O�2�Q�B�r�-��{m����P����Օ*<���P��[/J��ţ����>S��fì�'}S-u�xW�N0�D��R�k�On�
��Y��
��V�T(J��R�-���Kk�%�cN­�i��=�{�S}9�~t��7��K��&����^�ĒrK���{��g�hj<��L�Q$�B�p^o�W�4~qڛOejƎ?1iZ��
8�Jo��g�zs�����Sk�UH��-7J��}�[���R��2������9�y�Ҿ�궥}Fp䬥�5���}�q����VrQ��9P����}U}��d��Йs��[YP���Q�Mt���K�W<!�������jB�H�,b���2�8>XiִtX�'V��*[��4����|�������b�Fտ�݃ŕ��Vs��[F�9vo�}��QL]S����u�c��]�v�[�Ŵ�%�S|P��[TՍ=���iө��{R��4>jYСeGV��ׄ�%�����\T�6չ�s��Yδ�e�����^y�rQ��ظIy�{�[5�P�~�)z�CXb+�P�ߧM�0�m-ێ��p{�[2�R��B��t�h�[�Tg��X�k
��s��S�jQ����MGw�w����Z���+*\���(ɯ���vQ���\XԩJ��7�
�m'�;�S����[��Z�2�ӝ+��=�vjku�/�N*Q{��E�rvY���:��B�(F3�qݨl�4�iwZBP��	�ƜS��/����f�ʵ*n*2rrMfK+.Ir��Ǎ��Ӈ��[��)'��:��q�h�����u�
c��\��֗��F��JN/�9}M���+�K��ڦUo�{��h�ɽ���0����R)yî>��x�#*�p��F���rU17ѣ_��B㣟�3��3����yk�W�˒��_ͷ�c�f�-F���u��h�S��Z&n�@j\�=��ץM��8�?Z�1���M����Mx*�o���v��s3�^�)���A�̤���qT+���e�.0_��|���>�<��i�I?t�S���䑹��{�\O���~�=k��g�瀖
Jӂ����Ii�N��{�����—�NO����4�N�ڵEF��:�%�B���Q����/�Ӧ�	uU�*�h\T�N�����p��7'�ҺgNC��=��C���Ν�B(�:W���֫�����IzN)��!�F�t���~T�u����;Y?n��VJ�z6�E�O\�L��*�?�>ա������Q�Q�j	F��{vӣҨ�{�MC�}���]��\�O�;?/��V��m�X][��m�\��9�
+����,��`.�Ze�(��ni��Bw2�H�	F��(��$�z����솬�ᔽ�ҕZ�c!i��NnR�JR�il�#J��f��s���W��>���.��e��!N�N*0�Q�^	��K���B�aÍO+��*�%�	6Ҵ��b��W���_���+�]U-�hx��Q��+X�u�����e|�ե6��'�ۥ�•�:�Sm��#�ԿK��|8��R�._p��>�O�����s��q����?�K�}��È�u/��@���c�u.w��2��G�~�/�>�qΥ�\��Vq]X��G^�<�:��ƥ
s�m8F��Z���s�y9n�)ϳSE��u/�_�M�s�Oqu���,�Z����\�$�_�).�m�q��ڛĤ��Ķ���:��r�����_���'����K�j�SE��u/�_�_��>��u��i��Z}��%��#�ԿK��|8��R�._p�?f���@�_�V�t}��/��mZ���8����j_���Z}��%��#�ԿK��|8��R�._p�?f���@�_�V�t}��/��mZ���8����j_���Z}��%��#�ԿK��|8��R�._p�?f���@�_�V�t}��/��mZ���8����j_���Z}��%��#�ԿK��|8��R�._p�8u�,x���u�7uco}:���U"�U�7��.n;�$1����Ү���E­98�-��Qxi�+cٱ��s+
2YM�������_����G�~�/�b�
>v}�K��������_������i7���Z	)���ϕOڦ>�*/�؏�a���鬽�����1�̻X[h~���<�G%�g�)m�b6p���ߦ#�O�!����n������R���>l�E-�LF�!�����Ͼl�E-�LC���R���` }y�n������R���>l�E-�LF�!�����Ͼl�E-�LC���R���` }y�n������R���>l�E-�LF�!�����Ͼl�E-�LC���R���` }y�n������R���>l�E-�LF�!�����Ͼl�E-�LC���R���` }y�n������R���>l�E-�LF�!�����Ͼl�E-�LC���R���` }y�n������R���>l�E-�LF�!�����Ͼl�E-�LC���R���` }y�n������R���>l�E-�LF�!�����Ͼl�E-�LDp�Owkw�4�ni֌qu�p��?|�Jq���$����[��{�iR�L�
���M?�?�x�3���eV�3�e/���u9/+��>����6Lk��``��k�{��3���c��
�z���G�F�Lg��=FX�Q��M�r��
�>ó��5%ߓ���ׯ���b�/>�5#S�V�q�ٞ6/u���e�7��͏��o�ñz	���x����
�;'��x����
�;w�_�U{����f]ބ)�x��]��z��f���hE�f9�.�=O�3Yֿ�?���Q�>X~���S���;'�P����[���v|��었��[�q�_B�?@o��@��?ŖW�?���nC�`w8�Y_����=�	����/χ������?2��%�0)���
WS��qo5����r���&�
;��ʇ�RK��&Ҥ}�U��$����A�k�>2O�r��ʈd��%�E%���2���l~������u��˝�ϱzK}�ϱzO �/�np����O��eF[�>��1_���S���]��Vj���j6�:�e�c[�J�_�qT+���\�/?k6�N��b���k���*�^\���2�i^����J��^��9�������7�M�����9ʥ9���:Η«��Ҽ��I�M7/nUܽ�9=ܛ��~-�fA��5%)fXY�NΌ�gY���T]zq�q<<�c+�oN6��wQ������MyI�Š���
%R}�c�$��a)yf��an�xo�m�����E�#�܇�>�K��I�'�ߚ��d��~e8�.r�QKv�b^��1��U�����F���R�_-B3_�տ�cU;�w~�7	q[�
Қ��Z5�ymM�u"���e�R�\�V�$��7�d�YYw����:Y�Qo���G��g���;S��ެ�e��o�W�$���
��cO�q�i�֋7'�	/7��hn��sDuԟc@��d�(�1�8�%N攩Iǵ)-�[���!��g�/"�n��ů�XǛ%�������T�Bs~>�����^VGu����#T��!?��G{ښ�Ӵ߲���~��X�=�O/wJ)���~������k¦��Cd�z��.���3�pn5�oh��9�q����W\�M��J�Ժ)C�4i.�ߑ&�~-�*.\.*�m����N�*R{�>���/|���{�V�r���-��Ia��7�s|9��W�F�
��Y-����n��E5uk�К�=q�A�P�%�W����5ɯ�2���KO]Q��/=cY/j2�*���(��֑�e������½>���Q~X��?J0��[N���r�(xF�Q�u8����%���q�o7�D��|\w-���e%�YY<�CN�i��cQl�.����Ͼw���4'KNw5䶍Z�p�N�g/V��h�=w��~���kJ����?��~��[}�E�f?���5�yK���~n�U(�C{�|M����:ڝ���:i-�Gd�[~�x�����ƕ7�Ҏ0�^I<,�)I��a6x��X��eGMM�[��[��ɨ��Xk��V����~����b��r�T_Գ�qN�7Z�Y��-�݋�����gYi��p�Q�⌼��r�z�kizmz7ܬ�v����3�{NP��/3yNQ��8���qm�
?Q��6T�t�e������_���3ҡ�.�s�M�´�6���ݎ~�����mxCi	�W���Ri�ӣ'����XG��HF�9�Q�R���M>ƙ�2v��f�	-:���2��q�ko�̎]�\^��%�nܱ�F���W��	ל*IAn�Nr~��m�@8�^W3��~{M���%��wqO��)�s�}T����5'��y�qXo y=>WV����l�-�W��	R�J��R[J2���M��i������]j�G?�k�Uc�w�}��v��u�zK�w�����{u�8�F��T�����˹�q�
?q��i>LlI��5
�S�K�}���ZS�j�<�$�nwLњ�D���-m�u���k�Ye�u�#^Q�XMAՊ�i86�f迋��֞wM�]�n��#��FQ��}%2tO盕n7���y>�4养�j=?�Lt���Z�������%�U=��^��S���A�d��H`u杹Һ�޵|m��N�:5�FmӚ�v�y�j+�Wb��@3�.����ß/xz���F��*Ө�R\�F�[\�1{1ʹѹ��i�A�N�C����˗�P��c�������ʏ�i���D�8����p>���f?.\�(8#�w��>�W���b��@3�.ء�����ˁ���T�G�j�|��P��c��8����p?�����ʏ�h�
^���w�F����uP��~���M;k�tͽj�9U�u�ʴө79o9s~ԙ� �
Z���7ڥ�j�j�*G���3�k+/�_iiN.Q}��w ֡���~�$�D���M��.���T��S������4"��x����@>f����G�:o�M{�~�iKq������_��K����Gk���.��N�O��L8	�^��?�2�g`��쁖�Y�1�	�|\+f+��\En�-#�W�Q
����=�G��4��7����䤢���l7�sh	�~���t:.��R�J�|��JIP��������%I���/K�q�kklv*ҕ���R�J
��F)��o�]����m�ty`�W��J��`j�@�_�����LQ]��y��A};t��C׶:ן�Re�����;�i��eh��6V��3��iI,}�[���'�ҹ�XN#��l�8ا�V��s���^Q�Hq�e��-)������M�qΥW�z�?���Ѐ�4�_���OS���u����Tl�/���'��Fk:�և�P�*2���]v��#
|���d�1>�M��od���;?��Q�Mv���V�TF{�Á=�t��V�_��/�t�uocr���h�'O��d�8��V�o�[�݋����V�Z}��bnz�{����ZR�~�Q��&��z��t;��	R��������Ԧ��2N/�d�\�={U��R���3��I6�p�ij�,t���9;G���.�
ta8J)�⛖R|���cXܱ�[��Ldt>��i\ˋ���t�R+hԆ�P����%m����7w�-a�l5n����s:0��owMT�gJkxAS~̧�Ӕ��M��wA����_�%�"�jگ7a
�{Ƥ�RP��]���o�ӹ4xa����A�s�ʰ�+ZS�XE�ZQ�M�&�'�́�Z��OD����c��S�!<lړyx���1�i]]~�Қ�߳O
4��+n����?NN7W�K�z�;�)aiW��W�6𷸣/�-��o�7�4�CBꬦ��T����n�]1�M�J�R����ݯc��@=�<~�⎤�ajƵ�p��Z-8��T�9M5�5-��I��-��5m�Iʒ�v��/),6�2��=�c�OM����wJ�g,lIr��m�$����ٜgn���ڴ��D�y��(���Mƍ�-��F-u�Kf����t�`j��\)Ԙڶ�v�y���2jT�'(/b�ߵIvv4�����O�p��L��,iN*?8�Te�q��Z�i���D5#��N��J��"�J8mc��f0�v�y7�[D��N�hBq�Sri7,��\��s����-ƶ�F���
G���F7�ˉP��L�'�~}2����GX=�3��C�
E��U�[zU(���S�Q��~;MJ;�	_�N�R�Εj��b��m&��g[u:�o�P���I>t���N0;��,��_��܇��q�,�����{r+��_�K&?-?�~eODK�`S��"�|d���;�q�.�խw�Ҫ��J̕���O�#��<�*NS��iΤ���d�K����k��6�<��C��ƗU-��y�d�*��G�/Z),�1��W[��c��g��+��v\��^}��[�^}��y�|s����+���*2�������nʝg���2�U��{Q�@��-�y�nm��.�kS�oB2�V�I%B+yJM�I-�f�o*ZU�������T��;x5�M98/r.(��W�x��k�c���V�r��k�4*Ms�k�\�Ct�O��\�!V�kz�-�i�u��T����8�/q���š�Vq�d�̶���q���u]JP�q�<�{2����y�2t�T�^���\5F�)���l�eO�����֌(�����A.
�%�x����
T��F��뗛��W���E~1=Wa��ԥEt&�v/C2Pj�j便�(�B��Zk}-��?q�5�f�3m��Z��)��E{S��So�y��N.RxH�J�z��(�I�$�[o�$s�S�>�\)�EJ��jY<�.�N-*�|�T{�Q�'�L�k��R���u��웃�9��/!�R/������}�>F1��)$�o��k~�I�x�A�vK?�w.���f�W:�WԜW��z[R�_;$f����]E:��2��,�j3PW��zgQy���7���u6��zң���~k4����T�Mz���R�8`D�o�n�kM����X^FZ�t3HIYP��I9~3̼��F�ThŸ�E/�}:��R�΁�[����}�o�>~b�Z���MsSQJK��3�O��Hqό:T֚�&f�
kh�����O7_�%�;?I �{��ꜩX�KGBT�FY{�]���&�-�o�!���U���������8OF�S�U�yO�2�3ޙ�-ĝ
ļ[�h}Kg���ʪ�&�ѓ�ڔ��O��2cP��wJ���
1�����c�����K�-�R�񌓋�L�\
�a��m�8��l^B��*�iS����x�P�=�o�9"c��-��ܮD�����u�o�~Y�iq�Θ�jkkX���[$�7o�W���3��Zi��^(쓘��2��N���.S�����q{8ԅ	��z���>I�Sg5�	\ׅW{K�F�;w��Zgo4�	+[[��Օ��n�(וZ�{J6���M:�R�i�����x퍽WԸ���-�t��P�F^�Od�[?IZR�i҅8�F)/���ڗ5jK��;w�pn��ګH[�{0�(�R��m���,%�n��wN�c��������}/=V����
�u��ێͥ(6�z��i�Mhw{���x᢮l$�J�EiQ/��V��Q?F��O��t{?�ʴ�S�����28rׇuX��b�X�~��M.��\�k��
�8�Q���0�q�*y��Q��*.�׊�O��.
k�J7�󵸏*M5Ο۹��JUgB��M᧔Q���[Dg����Z��76�6�){��.G1�8�w�����r��QڥYr�Sʹ|���{�4�;T[�Wލ�%�+�/j>��z>��c�Ҝ:��N7�YS����G�*^G�_��xm�a��(��=N��:�˗��WL^>$�J���9�ĉo�m6�*�����s��ͅ�s=���:�KMZQ�R�R���6���=��{����5F2��ŵ:h�teI�?e4��v����Vt�4��w��ҧV2ۚ]iKg�l�8}�1�n7�r��\J��t���5-����^灸���{x�i(6�[#����bQ�Ǎ�b��XJ�,UO7�~l�}+;7�v�֗Zb������n!9�U��	4�%۾��v�G?�3�]����Uh�E�S�;~|����~�ۯ5
������t(�F�냋mJM�~�[:v•�����1]6��EҶ��S~]��
Jw�0u��J7�6������-�9���[{�$�רʎ�gJ��V[�t�~��;�	�K�K
���Y]ק�j�����O�K�߷����CQ�k�yˊ�;B�;7�ВIv��l��+������4�O�z.Q��t׃����������6�Lw��I}���<���Mr❏Uͭ���S��7��RÊ�\�>Q�=WO��*����>�~�-��l=�}�*†:�2Tm�pR{������J�(B4��F)$���]�)I�NRylg�6��v�YiuGG!�q�'�Ԡ�'#�a���Vj�/Qc/&�v��G�FL�5�r^;��U�7�RY�^��g(p��zC)k��ZW*mM%��{�x��I(�Qq�N-l�]��Y�\��L�^��(Gv��i�g����ֳբ�5*r�O�'%�K�f�cR��~��<���h�k����֭I�\b��Y�����m.�%����?r]QmO�Ӿ`iu^�T�̅HzZ"�sn�xv��<�Ŕe�eP?P���;�C������o�G�����|t��>=į�%���ܗ�$S`��8��p�Q���Ә����Nj��Ҿ�r|�,��>=�Y�s�(�ͤ���ė[g��*V�
)N�Z�T�ӧ)Nm����$��w�6�������]m{��_�uTe��O�T��ri����)O��0�(p;���r���q�jAoB�5�4w�S�uO�).nєc5�8�/#[���~�I��M.��z�=&/�x�.���"�Mo���?��\�m�K|��5����m��z�O5�P_��=��:���o�ΰ���L2֘��4�������[��!�������3Jߋm*l�5�ȑ�����}�L3YT��)S���S�_Q�a5���qO������J�\׮	{���eqo��5ݳ�j/m�+K���M�go���9��s�^���n�j�?p��q*�m���^��QN�?�+#;��º�.���vY'���ɂ��rm���Q2��N+�z����l�­cy�ڮ�t����~x�dJ�Z<��U�vu�m���Z��KS돕���"1|�s>�PF����w����ε�5��?�������?��gZ�����F\�a����z$aO���쟦'�eC�^�▸�z�4�c�и��{:��[j��'���%���&ٓj��U�ꘚ�+M�x:u�.�TjT��N��9E?��*�V���uV�%Q~����L���jv��΍��M�
�Kn���&��b��b�Il��2]�mi�˪�ZC;V�\l�Д#V�f�'*r�ܺ��ۖ��7kХsMү(�鬧��{���jq���i��X�����6�%�i�YW��zX�en�E��e=�k�JI?��$�I$�$���8�,��!��i��K�=�9o/���-ٓogW7rFiþ/�N�=3��;����[yϱ�$ԡ'�w��n��Q�{�qGUcjbh��`�֋�Z��sU�ڕIɸ/LR~���mM���]Z�Nv������f� �mm��F�q��T�c�t�Ԛ:IE(�l�$��-JpL���+����!�0;��,��_��܄��C������O���S���`Zi�mc���^���Ke'�}���-��sG]��NT���Wq�8Ճ��SM>ǰ��{k�;��W�]+�j��^��XI�q�$�?�ރA�Lk������"ud���$�G��?K���,��{o�n��}+�������������ް#��g��+��v]��?ITe4������G	u:u.j�J;J.m���$:D�	ϔ�ط��ZT�	˔�ط���9��S�w�G�S�w�GH��׊��_H��׊��AmhF֔�i�Ө�Of���^}�����?t�4��Ն������
��T'ڷ���+5Z��E(�=�뙕ڥXN�Q�{y��h~�z�M*vz��=Ie
�]Y*7q_�%�?Ǝ���Jw��^�P�S>��S��|�}���SwM��!0�[>�@oxn���y��-ރ�NJ5$��ˏ4������c�����┹ƥ*��_�������[վ��_EV+�Mn+z�Ѧ�QH�޶�����pE?�ls���]~�O�Y���65WS��;��:�ݽWt��g����f�8:U����5��[U����Z��j��B��A������E���l|M�>S����<��J�b�M�8���%I��@e.�E{��r�=���/�o��z(��D���8e���ڂ�;��~������?������M�!}z���ջ��]{���V[m�9��O�l�n�k旤Pң%I�彾�ƒV֮5�E�I(�K�{�>���W�4l�-�qusRhQ��U*I��+��H�oYR�o���t����5��/b�#���]�{T���I}q'Lg��2�@h�V���9����K^O���ٹm��x1�u{ߧ�N�ݹv-���f���u�:�c/��~���-@�k]�Кc#��5����:��m�۱F+�)5ǵɥ�y���I�#�*S�5N�nM����ؒ�gŎ+�NiJڧT\I��ե�&�{��r�M?�(���n�[��ˌz��
[w�*.J�FO��4��?�6���zQ_�0qgQq�YW�yޫ{xuQ�c��cm����['9��1K	1����Q��M����ˣ�wex+����qp��d�����?���/�m
z�QNRi$�m� �1���E�n�j�'���䳔��mmJ���m-eΓj7RQ��Siu(�m�^��*�����Z�7؝��/rt�����r��(Պ[Vq�?A������N֤�6�Pn9[yi<��a�.�K�s�q^���ﰿnT��n[��, �c��S&�dcy^�߹:M~�੡�4��o���~:�۟�w��Q���Gc��M4�|�e����R�
��|����}��)|�{�4��ѷT��~��a+׋�_�N��K�pmm$�[��ۣB��zj���׸���l/�-k�o�2�~	�ȼ��w��pʽ�����t�ڧB�{ԭ��5��o�7�;��O�[�k�j7�W�-�)ƭ*���
���2��&�i��M>{��xj�G)m�}g~�adj��5�Yr����n��Q�g�f�엳&�5�JJ��/d[��}\�ݛ�����9��lqQm�W�.�%�����YY|S�����ci����_Ѝkk�S�Z��'NI�Q~��G��d�ԣ��Y<b��ƥ���P�SV��ee:1����K�5b�R���[Ŧ`s�)Ǯ���d�_���3�����X[^�V]5h\R�Js^IFI�7��#����p�L[]�uF�<U(?,}�e��*�i��a-�s�>qƝ���o)UK��)K���7ӌ���e�w��Ƥ�ŽM��g���Qa�W�L�T�����S�%%�ꔷ\���݀�(Ƅ91_q�_��(�J1[��u�����B����\�:�-����u*W4�Nn/i$�W��kp�)7C5y�'K��(�nҵ�Ʀ�ENQXOjig8�k�ݵ�n���	��g�3��L_��Z��|T!���$��l��94�M�Ԗ�EC���-�n�m��<�_\^������ .
@�Z�*�^�H8��R{(�sm�!�d8�kJ�T�x��ы�U�W�uzTz[�׷���8�L�#jT9[�o�	&�w�7-,.o�T#�o�^,���imo���V�;[�G�T*4���2]���Fn���o�*�p}+�=�5ҚL�oV֣�Z8�t�{��]�l�J��JիMB�\��$~ry;.:�-���kggJU�֨��8En��qk�z��Y�X|M��p��S�b�E��U7�5*E|)��DzӼ�m'I��Ti>L֗7R��o{
mgY��SM�T�c����ض�ZOZims�ym'�����n��Ou(IxJ2JQ~+t�[5ɘ��r�pT�B[J���^��/�ȕVӉ��Tn�S��djA8M5V��&��}Rߜ{b���3��Wu�q��d-���eIҜ��)εH5%��۩n���M����7t�[MN�S�v�<�fǻz���Q��ZPp��a�-5��V�ϻ'��j>&\_�Җ��͍)\Nꯚ��])t�M�bG�f�y�z{Q�X�ږ���g� �'8ũ8��-���rxm1���1�vS�_Ӆ(�Е)N�:Ki�$���I�93�w�ru�8
Oe��������աo:���R3�[�})��m��e�-n���e��.|������t
p�c|���
��6��sa�G�~ni<.k�K��k�זt�/�<ڣ�/Eֲ��:��W!QR��i����`�g-��nȓ�{���!���,��m��>�jmT�K�w�{TQ]��7o���O�|V��j�<vC=Z�eR�撊���{)I.�p�\�[��c��5�;ɨRMᦲ��7�-�~�nr�|Z�F쩹�ie4�we��v�m|���V�NJQ�R���4�Q�!���u�n�iMUu:�j���*�r�M�������Q�l�DŒ�8��JQ��4�M:��[K���mOs�^�u�$ZN�GW��i�޺S����`���.�����Oظ�����~+x7���Qnv����E�"�+�e4�p��/J{2!�\6��B��G���A�N;c�/�]F��w�+��{�>��q����o0���
N�ż�&���*k�~FyN�W�Rڬ�֋���i�i����M&2RJQyL#��U���YKX��+i����NP�t����|���������Tѵ+}J�֣Rl'c����Z��7��-��q�_��^���5$��3�ӓ��/%w���v��K�O���g��z���{B6�0�c(�x�)E��#��iN�IR��(���M���V|z�զ�����%��Q��K0���K�hx��#o/�N?�|{�	O�떯���R^�=�=֢�c���Z4�2WT�)N����윚M���3�s2��:�O^o����O'��8���v.�S�ʟ�Qmv���H���u\U��q��={���\u7oM�Y�6�J>����kO�<z�i�5�6�}�N�6u�NOyM�d��T]5'��_)�)�Vu>�:�뚆��n�����X^9`q�@1��)E6�'�LI��R�&�%�
�o��O��J�'c	�T���V�|�L�]��g�(+]���n�e�~�5�n��J�Q��&߂\�qr�U��;�2YǑmN/��Ѝq���vS��ߚ�+q�����;�̯jU���WUj\7�s���A-�^�1�<���$�^�|�
�}.�iݶ�᭽�����˵ç��$�Aw�V�մCQ�w�\���/�$���~��U�.���g�Ǹ�]�כ�`W��)	��]S�)J�H��[�5�l����٪qOײ6x�ƾ���__�����U�}����:��ENMŮݺ_�#(����N�{I<JJ2]|���}�!��cV�{�,�Q}\�4��k��2���L.�P�xc��M)�})Q��ʙ�-.���Xc�j]]]U�)Gyթ'�a��6�=��p������Iּ���ԓ�M��R�J~H��Ǽ�KL���]Q�o�-.�%����[W��_8I7�,$�p��3�N��qG@�q#F_i��F�y�Zʼ��0�ӟ��/�I.��}s������ά��(϶�H�����l�M�����jf���m3k*�JJ9;zq�W4"�U�]��[5����',�YZ�%g�I�|�?N9�wh���(/�j班z3�E����&����Mn��h�Ȇ3:�y��v:�y���_�R��'Č����2S����*�;m:�>��S�&�`U�/�[����΅���o�mC9l�W�w�N�&�1�,5�-�lhƅ
P\���������dS��emI�R��G��&)�;���� �u�Խ8]�td�:� 7|�3�Z�'�\�=/]���ȥ���Ɗn���,�]�8���p�1�m�Ad�c���z���P]U�Sf���|�����U�0��vղ��9׶�ѕ}��'(�7�~,��=����9[d���{�R2��T�Mr�yJ�T<�ܚ�K��H�m�qI�:���qO둵,_8&���čF��G�S�V֔aOof*K�e�m�݇��8O^�:8��jT�8ӄ!��r���QIO�m����\3I��1�y/��qm~����_�F��V�M�:��]�I=�ٰ��\2��%��VX�S�im�4�B�󲵋�X�乸��)�妍{{�&��OL����{��dㅸ��X��p�5'G9�޶�li�l�������©q{��=wA�
a�K0��$���ά�a���~i)Fs���Sm����G�4�e�9�����+��m:4���?'D�xN��}��ڌ���ܻߖHq�:��*�!���/���'Ņ��^d����n	'�q8���
()O�m��Ha��w�Sz�B�(���6�2�!'�\X�Ը�sKu�p:k�c1�2�j)�W\�}s��k���Jp��5��n�����Xx�7��H���
���!�F�gV��.TSq�c�j��wmo��x���Y�P�WJ�L�c�8\Z�^����-ڌs�(����bw�F�8}���{k�ۚ66�.n��…�
kyU�9(�	y\�^�O^�a�Uo�'�-n8�+��k�k�}���q�N���%�t�wGV�
�24iF���.]�N���c��ٷ\|�+�Xa���7�(U�\_|���kjp�=��J���O�^\&и~p��{uB�qv�/���']�R�B��o��x���x��λ�S�25�l�϶��=���}>Կ
r~$�Z��o�ƅv�Z�n��{�.ܘӂt[MG�*�X&�m�q�m��1���9�(���.[��g`���؏t�5�➄xMCx�j]4��^N������s�mE���u"�5g��&V�'���U�w_���[�;�*����Uzi��m*�HU�jS�g$Ԣ�M>ƌ��ڃ����p��C�>�u���C�=��U�(�'��=��uK�����2�zzF�Qߦu)B�_@���!����Vu�o)*�+��q~)�����1J�K}k^ݿeד�8�Nɧ�[z�-�+�uMN���7V<�����ݕ��s[z0��N�ڌ�V�%�9{��5��5+���۶���нԿ[�{�n��4���<��./T\i�i�t���ߛmrߗ-��(�s�^�:l�|�2�.W'%(��Y{��ٝ��8�����]
�+�۟A(�~g8S��T��b��od��`w�~#�K�3i��is7
��Sj�J��T!U.�m����.m�:�p����Z��m�W��j[ײݥ:��J-s��A�.�LL��m���jk�	G����)�jm��=�N������=)mJ�
����F����$����۔����$׆�Z�:�U��yi�t=�[��c;��'ʅ*����/m�O+k[2��y�2hgt����}�3VV�L]�#V���[¥9�i�R�ߟ&p����4��xԽ���ծ��˭�es�h��^S�ᶑ���})+����ۨU�)�'Q�)���)5�����-�2wzOD���amg+{��i�վ�{IFk�io�t�7��'M��]_U���G쳵�K�ms�n��z��Jה׵���q���\���s�<?�5�i�֘k�=�F��5R/�
���z0�E�y�7��9*�6���B��^.)��+H�b�f���F����e��'5^i��p�q�f����~�I��=^��#ii���qUg*��s�Z��oTwK��Y�K���n�i݌����|A�B>�v��Ӝs���O���\d)er�%B�T�V����s�p������$d��zc�ZN��Zvج.�ˢ�!N�1��m��\ܚ�e���,�J�Ak��wR���d��y��nTj��m/f}��{���{��{�s�{�luJ��Id���MF�T���(���r��IE��6�.��_�|��<���2��wb�ikym^ή��S^�+	<��<x�ݯdN�K/�>%��a-�ou�+Zp�a�N�V�Z��/o�6�8�v���4�/LR����2�ѯq.��Q[n��ȼ���x���.�����Z�Y�,:Y
�ە�jJK~�MKw˶�I]��.���,>��^J|�
7�?����-8��r�k
mR�Xxo;1�rX�z�AU�Jۑ;���6�K9ݕ���K�Ȁ8���؍[N�귻��i��K�/��|��<ݘUn\���Js~I�5���`�o��
�
˼��N��$���%��[Y�e���wkgN{9�?IL�ྥ��KQxuJ�_�Y��mgK�Z�V�����z-_�
U���;*7�(�v<E{�}ަG��8��9�V_�է?�#�WIj�;��7�Iv�k9/�2G�j;)����g�����P��'<x��}hE��YkX_���]R����G��UmR�9�ڣ��J2,}1M_9��Z�*���fR���ѫ*s��o�z�8��N�9���
?��N��4ij<�'�ʖ{7Mt��ܷ�Ok5	S�z�!�����H�T>}Q��_�{��[,n�Զ�t�e�O�ױ����v+~)j	%ثօu���s~��5�g�ڕ~t*���Eʿ�LY�����I�M��m��O��k=�n0�9�>��Z���X�-z���RoݧU}�=u��oG�3���U�t�����=�&h#�#�vn�΅�އ�T�ԟ���Og⽥/�r۽65���K�zhd���������)��դ��E�V�l�9c���*+n�z���P[z�Q��J��m��p���L���������G�~SqŦ}��[�*_ќ�E{o-�E�&��㸛k{w���3O:t��S���i�o��j/�Mrg=WLjZ��;��^>��Ƒ��n�nVu`�*U���\і�5�g�k[��ZԾ��������G�)�Nt�&i�֚���M=�����v�Z�q��n��U���‹�;�������t��J�D�t�/�/s���J�q�؋ژ��J�'�>�/	E��3�+�ݸ����4+����'
�$�	�~J~�X���xRL�̞��jr�)�U�sЧ�I�g�ϙt��;c�a�_��y���޷�Z+�L��x�n�&~�[���&�p��Y�}��mS��?��#1��]��Q�]�+S���R��|���X��	%�Gg𥱛�%R��G�rs^��O����#��Y�WX�Z��z���	�(���W�NN�������_wF�]�_!�>���!gg����Go���oXQr|��L�]��񶖛m�(S����/�8n#��ڛ7���?{u���t'-�C"EYޣ3���r
J-�x��Ui:K�1ͼ]j���h��`�Q��^�MV1p���[8Ѧ�֣�M7؞�[(�+�<��|o&���TK�(�K܋3&�M7����g
l��-5epצ�5W���1nb��ZK$����?7oN?�e&����9�ɿ6Cj˕RO��X1�s�t�ps�j�z���]*�}5hT�eR��8�|Mri�ё��j��#V��d���4�*�)]R��R��k)��D}K��XY�NzOR�2V��_��W��7���>���8���򜿲&�&t�akT�'	u���5� u�Y�5f��9�Sx��o͐��P���r��}�`���N_�\��Y���8��~��S�����P���r��}�`���N_�\����C���_�s���(�8���򜿲b�?x��S��D���k<�_����\�?�i2]�x�����|��]�ޛ��Z_���%ͨE�uKȷ�.|���m4�M��٦�4��~�
��ݨ�_Yh{zt3�9�Z-�O#������d�%�% ��2�����T�I,$����|�;6��|�����tg)8�h7��<^�zz6�q�8o�ܯ�<t���η��]έғ�i�PR�En��/hƫQ�m^���
�+М�U�V�8��E�M>M2��7e��^��O����Zm{��[]+;1���@���j���	�g4���=kq���uU��i�3�������%F��S�rm�&�[�-0�__��U���ܦ�_�t%ԒGi��6�J����At/K{��m�4�����5p�n�愰s�MʾKF;�ivʵ(��o�P_�^��1�5$��kt�cF�H��N�Բ���5�J�mԹĶ�F�nT[�No�_����B�D���}J^�{��9�����]n+�z��"�>�v�x�����k[�i�u���p�J^IE�L���YD���B�ME�\�==�-��=�qq4�ͭ-�Ԩ׻�{d�/�pWU�B�VЖ;mW'Z�k~q��$�?x���24N��\>�S��B�_]Z�}Uk�۝J�픟ĻI$Gu� ��'J��S�=�}^8$�VԤ�V�iy˳���'Ç|=���NQ��:n[?9ss4���f���kղ]�$�a��cZ�g^n�G�=��N�P��RX�ؒ��O�����Բ��	��Z��`l�F�)��\o&������_32j�k>,�J�:����I��F^b���J?���S�wwu*�űz��Μ��"��,5��Ir��,w�N��T�ŷ��̨Sqj1�$�)�)8��)�>��/rͣpwX�q{��=C��;�eq��)F[4�:70iv'(ϗ��Zz�JU�޷��[��T��T���I'R�}Tg��*R�/t�����E]K��ܟNr�/o�W���߅&Jlކ��V�ymG�����~�N�B�I춊s�[{%˟b'�,�Xl(�RJq���~i>�����^���':50�K	�(�����/�s��ſ�_^��-��R��mc�9���G~K���θ:�t���i��C�N���e��[��S�� 7u�Ë<R��{F5�:�'���T���擎�>�S���=츼�U��1����G<n6J}3��6�_��~�?)ka�ΖҔn>���+J�ӯ�+Jv�J��В{-���ɜ�Sգq�0x�[x��}mB��Ŵڋ�{&��/"/m4���Nޔҩ-��ٳ�b�:�H.����n��uFNޖ1O+/^^9;e��.sRp�kN�+�Q�I.������/�F�?s����w�OΟj</�5�\�p�IT�{7E��~NP�K���U������v�mv��h��P����/�D��E���_�y���{+f�񫑩go橷7��d��h�ҫ�4|'��j��Nke������<N.�Su]*t�Ss{o.�l�{.~�rdž~�qժ)(�����{J�{�r���vv򄦱�m<'��������ϿO�i�i��u�)��u��ZR���.i��;Q(zc
��1�
��T���2L�6OHp�Sd}���s+}8*~z��޽W��z���[�^���w�^�x+��[i.'-e^�8ˋ*v�e^u�7�ꌠ�^�e�jL�h��eR��X�ض�]ݝ���2�
��ԗ�,�l��c8K~RM�,���85'-�[4�Q�N��W��[���O�N�ʔ���2���kp�_K�SJ���2���ݥ�^�[�S��U��t~"���]�������zj��gY/��S]���ɯk�u��qsokF���hR�J.S�9(�)v��$��W���^��[z�֎Z�����J�[�:�6��h�mZ��h��&��m�*��W[�o%g>�
�I�Lp�)y�����k���U_�a�����Rm�&�����k����]�>�j,�1�����
>��&�D��^-����*WK���q_LTQ����]�|]�Z��N���z�
j1Y��%��+	<r����h�}�x]�p��t���T��U<�.��ݥ'?�F���
8�����YJ�6��WQ��]�Te�H��+�4ۻU���\��ⲋ
����U|����̼o�٤n'�����V��OqI~<z?�3c�}�L�	5m�5��*�]��=�V8�U.V�T��=C��:����E���<,�q7+y���x�aB�ԹSQ锜R��{�O�b��=՞�Ը�O��P��.�7Q��a��9�>��)��[>ϝEž)��1{���P��!B*S�^T��f�d�.|�j/�ޟ�u&7L�4��6�N���^7p�J5}=[�˛IrO�D�\���?�/�cn99�[��㢸��O�ܭ��cz���ͼ�8٨.�
�^ƣ��,��Fi��:Ӎ%%�N{��u,5����-�V�MP�Vޜ�q��IIS�O��4���8�B��u��K�1�T�K�h���v�ќkt�K�m/Y@wP�V=i}�on!J�����g'���'o�*Oo+�]�:W)h�.����|a{�^eί�z�����ٝ���|�xt�kf�Ο" M7Ǎ!K��N�������–c|��)J\��b�Zri.���&���=E������iv/9N3��!�xm]o���{W	5wCF�"�t��^�%'.��S�Q�?��i24~z{I�pZs������7N�b�TK����G_���ό-�]�/�9+R�T?w�������P9����]���oF�:��U�mu�{R��ڇ\'�$�ߧ�����r|=�7zk3Z���΅;�V�yA�E�-u$�[y	
������蛫�P�R�.+�B�*(��M(�o���g�#����u����Q��woN�P�Q�)B.1���m��/�Ij��|ٞNs����#��tUO�ǿ�gn9X���ٿ�?qW�41���SB�o���z�"�X�U���m��������x�>N�*C<��߀<����X�{���'*����ۜmf�LkS�:��un�)��[��Q�����Si�#��d0��8l�)R��W�ewNKg
���O�#�_]���y
ER�5e�iQ�V�}��d�q�U%�Q)��k����I��\�UX)��9��t�ם��i'�P�Ծ�\��g<aZ^��xSoh���~����3R��y3�4�G�08N"C���Mq�Zj�ֺ�R�E�h���7��U��6!�i�L�K��q:�����P��_D�MM��(�G�#ox���ki���U�/�S����'NqR���4Cx�ߑ^5��,w��U_CS�=G��:��|�[����F_m�F*R�Z<��Ms4��L�RqyL�+i
+q�.��6�_�`�Ƒ�f8=�L�8���:��8���d���T��>�x�ҡԋʔa�>u(�-x���T�jn�F��7��S��*���81Um
%R����]/���]wP�M��f���J_���(���Z^/ߒ�Z.�=�#�}�G���f���?<�V_��S�w9��NX� ��~��J?��G��>
�|E����jO�jT�*���;^��qR�uY��W�h�N��*��q��x%ż3~��:�|����_��I���:�y
�\]{�F2�k���a?��Q�Oҽ淲7؊��^��Qrq�����Z��R^T�F�k�к�*4aV��҅H�E���a��	�P�<���*����/{To��IŲҏ�{+Rk���S_�*��+'ښ�Y�8�;�E^'==�s���YB�$��^V����q}U0����4��«�������.-��N�تr_�&�ḳ��N�k��_�����`ơѺ�II�S錞2)��kۿ4�Uc��#��R��Zi�4�L���R<�4�:��)'Nt�Ți�5�烰����m}���Y5��,���rG��N��rI���Tt��Gzi�4��A�ۥ�\V��Kw��>��Ҳ�������U�������v�IMr������&��~h�I�9n�eQ�/]6��iYwq�W�&�R����^ڿBUz��P�JZ���:�Q���>i�M���+s��ߚ�O[��J���B]o��g����M�uo���ڔ��Y���|��2~�m�S��t��(�W����=����w]�V�[O'_a}�w�\��FD�!��4��׃:s��L���&����\T��d/G��5
1�e��f�8� ��n7���}��������E�y�QK�իi~�����=�nb%O�B���Τ|��YV��i3*՟��)�&�~�W9rb��n��!N
�����\���v�u����,��w�#��Ԛjl�Es��id!ʝ_$�����m�MwY���q�����iyi���^޴zjR��Cx������2�����um
p�cO3Bҥ���캴&�g�[8&���ɲ_��]z:]m*�2���L^͝q�F͊�pm�}^��i�N3R��ۗ�-���۵� M��	tW�u7��zhd-��sIy����2N>�1���\A��w���ɍ��T���0����~�9z�3΋�;\��~>T>���һ�
MO��L�q���-������5�%(U�
��*�}5)�.3��J/�~�lU��C�xt�1c4��i���X�8���5t
)v�M3�2���~j����~��rd�׋,�WN�x��D*���jk��=�dVٔ�ċN�c3��N�[y�q�K��=[�w�Kh�*��R�[��E���4��1�zpR��5O�/�2V����Ӎ3��%Ǟ��F��K�s���Q�������G�or�${��c�Z?���<�G�&�O�_�L<7�D��w;�Tjz�\Т���c�ܛ^��_�,�/ݻ�:jp�S<��6��ej����{*k�Jˎ(��/�No�{�im�z��⠺߹e�#Hp�Y��ꎓ�7�ߦW;y�jUZ[G�M�A#xu�O��,�������R��4�eM�~�o����
-���ތ)R�BQ�R�I.IB-�q=��p��8�o�c����'gf��~�]Wç�=��6�Bޔ)ҧBQ�b��$�^�5���n��|���<�찳�t���NR��0�1ԕ.k��{Jo'$�*֡�ZN�%Л�M�6t�{�t��R��W����RޕJ������[����~)-�A/���
��{�σ:��׊ZoYT��kg{7�m�����m׏Le��6����Oo�}�[:YZ��6���+�s�9t�����O�٬	F3��5�d�d����.��
`o�y܆*��߷��[�&�\��9-ᚰ����K>��}�$��kZƥ��i��)r[����*=�`����5�����N��x������g=�s��I���-n.w��p��y}�ᕝ̱�:2�g�4*AN���qkw���b�b�s�?r��8��t�Z_�'���=Fn��$����Ծb^P��pp�M<Sښ�_���L��ׇz�Hc��Һ�b.��gpڥե(E�d�Jo�ɲ/���?������I��
U�������n�a�.r>bU�ҫ橹�9�w�m�{y����U��u��[kQ��V�$Ա�ݞ��H�U�v�W�2�)r����;>��A�����
��?ؒW���4^WM�K�M��by
r�ʣ���i��ս)>Ͷh���2����п݋���4�KS�;G�?),w����ڞ�iT���߲������a�+����t�H����g=.K[�C������wI���)�=�?��U�g^a3:Z��F��)Ӿ�uZ.�ӗWM).ؽ�}���)��4G��b[�g�EĜ���m23am?}TΫiO�эO�̶۫o���s��P���Y`��|��cR�'�yy��󷠶�n>`+

ʔ].Dy!�N>�Ow:3^�ӳ����W��/kG+<|q�rN��M:���#��b�ߔ�a��5׾2�g������'������]Tm�^T�y{�d��9ܞ���}G��Cy���yZ�5�o{:�R�sq��)����sX�b��QԺ�]Kk��Ӳ{m��KjTyxo)z��Mg�i�lmm�*�=x��|������������)P�6c
[a���񼧷y��A�Avw4�T����B}1��d,��^g�%��E&ZתΗx=(=����������.E�)/�O�)�����]��ӟ�[�8Q�+�ve��`0/�Fpc�[S]:��
Q��Pi��T^O��n��-�[I�R�R��:K2{�8�Յ:��3L�O�������YY�ԯqqV4�R�픥&�W��c���p����p��x�����g�Im:޶�'R#gx�8ϓw��[��T��[M�[}�%$�թ�r��	ƛ��%R��7B���]�/P�J�[�i�~�����]q;�K�u�֭��C��6�������6��{7�l��(��]�v 	L)”T �K�l#3��K�6��{@�y���B��T���4���2\��r�߽�8{*V�Y���T6N�19N�c˕;��H��˯�/!18A�g��^t�7��g���8¬�\��f�{~��n�kڔgJ3���(��	.jI�i�����A��NIr%ν�s�e͎�uf�o�g�{ך7E�^��LK})���cj��Nw6��k��Շ�����SZ��#iF�uF���jѭF��:���2��)&�i�L��m}6�"��5�����I͆�CP�.��ҺW۟q���z.�T���
�kAөN�T�8���O�Mr��5���2|�ZNW|?��o�֏���Iĉ�a�t8e��v�����%�Q��Nս�ɶ�g�S����K�*�<5�w��v����z[������7��ے�si8�Ý#��/=��7+��#���E�i���M}�1[r�y��Dۆ�\F�K˚���5���>ov��qE+iT�ekM*�i�$��,����X�2�{�-u���j�Z2�������ub�jEoڔ�$��ّ{�<	�h|�Ʃ�V5�4�j����7WS~���?4�8�|Ƕɹ]w{��6����>.�i�)(R�N+h�{�$�6�Kvq�'�z+�v�����73��-�ӧqK�*R�Izv�JM>���Vwv�~�8i�e�7��׶�R��*0�����YMa<�&���z��z� �,)Ye�1���$��ӕ�.K�pN3���[g���qX�T�����:uad�*���q՗4�fЊo�}��9���K�^�>*����N���ߖN��o�zt�
�u�+��;��vw1{Ƽh)֏�r�K�e��txK�����ь��%K��������?��(���,���֘��[�5[������
z��c��m�'�K{s���\?���Z�d_��	F/hV�{m�t�NK��^''�8���	yC�u%���y�b	թJ/��F	�p�)l�WP�t����#�qyJj�j)&�8T�5��=�/�˛��Wt�o�V0����kkaF�ʭ��Q{L<���Mox�̹���n�4�B�7�5-(�c16Q���ĩεI˦�jN1Q��=�qߴ�8��	(԰�E8��:ֱ�4��>��Ory�I�&V���
�
˥)Bk�]ВM�i7ҧ��l%��S'�Զ:�L�uF6�jv�;x\S�h8N*K���{��'ڛM2ۉ�u���Q�)��6�����=�?	��t�mV���o9I�gOsX�Iˀi8!G�6�
�E�>&�я��dg���c���qNO��`��י��\<|Uྰ�t����1uU�^���n�ʴ�\�Qե
�qRq}�~)���·>���{���$ZU^]C�~��$ř��Vt*B�?�JJq���cR�
�^��*EN>��+s;�լ/h���n��ZR��ow^�T�F�U#�R1|��%&��M[���{��H�o�[K���q��;��ɽ�miFu��!��
�=�8�j屹Q]$��׍��ʨ����IH��gMi;xi}?���%��akNޟ/В��u~&�
�`�۱{�O;诪�k��1�G%��:�������y	ӣ[��n�
��d�{�<�&�r�j�o�xۊ�w�^�\n�o.�{J����jS_��c�q�6���Ljx��Vu�l�;ێ���%N���ٿ��~������<΂��ꡨ1ѹ�r[9��=��ʕI7��ׯZ��aR�hr\kcںw�8�Jw[��6�|��\�P���8�&�ktר��W8Y�\�]�jWS��c������m?��, sP��m.U����^օ�yऺ�n�gV�C��u��MF�����%3Wo��8��YK���M1�4��3��Z�ތ��Վ�-͇+�[k�-n��֣V.5)Ԃ�&�ji�h���e�F�)��x�1{��u�+f���kp[w]��zz54��q궓�*
������C��u��������*�⼵!�]>�ֺ	��
z���2�����q�8z�ŅTy�w��w�:��(�FI��4�L�)�{-ׇ3�8�i�u��Ke�"��k��>g\i�����_m�흽[Qp�0S��;;��V�m[��<���%��_��+�1N\�2���Z)}�L����K#�uN��9r��ҹ��ʍm��T��M��Va�4��5���ɗ�W�05ȸW�����9��m��O�*�#��U�v��QǕk�6�Q'�ڼ�S����s��Ise�&]&���z�\���%�P��d���B�7�U6j���/�]㥊��t����k�R��\K��i�H��^�Q���o��2i��\'̙��f{�iΗ���������k:q~��ġ�}�0.���RJ�U<N��������-{�6���֯S�XV����^�K�Bo��$Ke���� -�����۫�m������B�z�֨����O�b�Z4*�MS�)=�&߂L�^��J�Q��m%��2�FMK�ۅ��N��������-(O��K�い�}0����{jq�������bMC�5��K��c��|��������7��R�K�/��aw�YЩC7(��J��fw�;�p�+:t5=����Vv�Ƣ�X|��z�<�[����^I��o�̹1�I�2q�kd�7�x��x�f�V���)�)N6�ԪRO���Ç�I!�F�	�ub�%�4��i2OJ�:�U)IJ/sM5��l����:�y.j�m4���w�"��V�_�d��*u�N�X)¢p�_�|�<T�.<�׼淪�V�U�-?��ӵ����EN2��>��1���3Y-9u؋ی}D�%F����y6Ӌ�ގ�)ƢS��v=�ɠ>A(;��ϙ�5�ۺ�P����-��u�◖T�����oDj������I��R��"�u)E�V��Ss���}Ӳ��~���n~^������iu�ze��?�Iw�U�Q�v���i�iC٥��Ҋ��Lz��oe���[�;��g�;W�kO�|���p<o�}���N69�ZU��EVT��jЯ���j/m��u�܍�]6q�g��S�gr�t����{Z��Ѩ)ŭ�H놋i��P��;�Щ�%A�c�cٷ)�L��ӱ�����F��yWqT�=��.�];o���S�D��֟t�5���;�g�6��%W�*��:�][o�ۭ��T��=���K����Z�Ҷ�������G��9jW��$�`啍�7m�I��!���Z}Ӟ��:f�Ҥ�|e[eU���T�S�r~o�V�=��؉_���)ݺۗ�w���>���Z�9����%畂��n�*}*r�-���m�Vu�UQ�n��T��d��lt*�v��T�\%�v���ey��m�Uig��;��cwV�UKog�M�vm���§r�Q��T���q�A�T���j1ݴ�JS�����l�jk�c%�����B��Q�?�X��N���c�=�1՗ھz��r����[��Z��2��I&�6ܺ �6I��}�k�\�%Ar3���s�N�C���x_����
.Vχ��am�̶?z
w.pSP�mk�W�+`����ϩzaR�k60�8ƜъQ��%�J����措��:���E��ױ����oN�k�q��ʢ+�$��E������gq�~Zi_��8ג��77�c��>d[=���GCm�
���gE�~��TĈ�+����[����<.
�Զ�׫N�W�Ư�o�T�[�Q_yym�U][hwu_��W%H��H�,�I7�={�ថ��=Kp����utG�J�*t���ME/N�d�=B�%,��g8Ӌ���b�x��Z_��!{��S��Ʃ���K���8҆��^���k�W�
I��ެչJ��;��ԗ(ӂ�4�Dz�(�K{��q�:��:��Zj��Wwo��KzV��o�Ч�1߷�Rr���lɺ>�
2�e���˫��q�j��jal�ܽ����P���O��]��ͭ��;�����ЅF�Tԥ���i��Mo��|�rB<��`��e�2�K�5[m߸��
�f�zu����yKo^}E��c
B��Tm,7���6���}���Y���_���l�p�:-�R�
�u}�&����TiU�Vnt��z���I��,��Y�?��?�#p�5��S�,�Ҡ�d�z.�NN������_aA�?�c������f?�%��g��ͱ��q����g����lk\fz�3��<�������}�x�9,m-�c���з�_E=���4�b�Ojm|~KUѹ����9쟆馚i��M4�f����O��-��C�����#(ƤT�[JI>ص�x�dc?eb�V+)l�_D���I{����\�\���)a7�4�Ml{McG�����	7�����e"%h�v��.d)�MZ�ތ����I�x���Iv�{��Mze{�Q�׺��yIѬ���+�綹�iUU��������N��%���skuJ�W�58U�$�g.M4�Mv�}�5�㏵4�^߄���������ש.VWS���u�~��۲|�)��->��]ўս>u����d�:��VJ�m�@W�����q��w��YӺ���*5��r�Z��k�i5̄�Hᾬ������V���q�\���js}��[��)��[79�g��8ˌ6sB���n�
�R�ץ?#�jkt\i���*���}�ɭ���Z�i���O�R?V^�՞�7��<K㎣���Ur��%i�������iUqoh�eRo��&���k�
��)��;yZR�8��:��B���/~��}\�I��k}����u�xu���Ҹ��ƴ��U��J՟�]Io)%��7��8�8ה��*j�o��'��Pe�%Nꝵ�59K
m�񝛷��ג;[����uwQʾ��͋8۵�߳1.��9���n�Pfo2w8�:un�:�#F�(�ǩ�iJ���{
o�p�l��g��V������Ĩ��S� ���it�忋)��sP�J����^�)1�����s�qp�����q�M�Fg����l�+[�Q��N۪4�!)�|6����*Z�;�췥�{I}\s䬫��Z,m��v&��M���l��Ľa��q��:V�}�h���j�o��o�*�;��{�v��_�_G)�1���5*5lo(�+*϶�8�9��b��gɓgD�ah��E�cm���”S�Q�kN�> ]�_�
+���
�N��ު8��O~}/u��ƭYҽ��K;0�a�o߹sc�ao.�*0�aU®6��yK;V��=�H��
d8�����T��MҬ�׭VO�'W�yB2|�[߮��8��n36�V�aoB�)ҥBQ�b��$�^V��t)��P�F�*t�ӊ�a�QIrI.I#�Pj��]V�.{"�.o���-H��Q�Cl�֗?�]��`U��O��_y��g��m�(P�+?�R��F+h�[���茧8�7*k���m��|Q��.��5����v��7���\]�%�k�c{��w���Yiuy��~R��H���J��ŅO�wE����8C�er�h]��U������8���q�E�b���::k�0�<d�T-*dgo+���MA�Ѫpr��n�s�*]]�#��K��]�2��ܝ�{�F�7��k�N
���;��t�%����4,-*\Tk��=���.-!�Ϗ��ս���j����/"�m�G�{�%�G,,>&�ݟ{�*1F�݈�aR�E(F���Č���ʯ�����%8�
��q_���l�Ex���Q�H}/�'h�_]�̶Z�ɻ|mX���9K��^��`���xc�4���n�2����䚯R��ʭ.�S��JRm:Uc��?���gwUZŷ��ݳs�U�:��k���B�8ԥ8�I�Q{��cOǑ�*.�Z�Z�Zf�⿝��Px{���m��M�eMS����IЫ*RޛE<��'�������CkwW#���y�'ugMy���գ�2�Ǧ\�Y��	��
k7��}V]4�V�Ե��9m�7�^���|�-�]ЩmuF�j5b�R�H�Fq|�i�k�H4�#���&�p�{�c���ީ�z�gMr'η>ջ�a�����Ou\aU���<5��n®�Ϋ�Gm�E��o�]�hԺ[Qh줰ڣq��[�ª�j�|�9�fq�ſN�Oխu(��_L^ƽ}�=�:Դk�.X���Kj}���,��
s��=7x,�_�{Y?Le��R*r�㍏�te;��aJ�~H�J��\J��s�
�z`���"����ż,%-���̈́�.�)8��&
{���r�����������o�aR._�ܞ�cRJ
8�>��W��V��R"1���n�C�~���c�g���eë[��w�7/�����r脧�)����#��C
��镵�M~Br�[(x��&�0�~��I_���ίݏ��C��c��4��Ԓս��uUH|߯cJI�;UX�����Y�=7��j���iZ���m�҃���h�w�9J�2��r���;����d�O��g���խ̒�y�oG��9�#�aKNT����W�<�y�|l�6��ƺ��k�-�^^F��i����zV���W�J�3Wu�{��o��-������~��q��O�o�v�d�܍�8}Y��օ�\�][���cmV�+ח-�#��O�1M��&x���
3�
){�5]���1]Uk��(���%���I6���N4�5jG��5��������Sn��7�z�|*�n�LR��p�	��*�r|�1{e��y�;ܺr�q}�
R�%˭%�Ǜ�\˙o}2�s�}��~��_�ut�#���y��lh'��|��an���ur�U��$�Z�IT�RO��rm���z��{������_K�{ߣ�#�����������Źzy�eHz1����W������U�ZҥZ���qjK�%���Z..ўg����J��N�#�kEr��)��m�XZ��c�R�W�Թ��.�o^k�F��hu}��F���ջ����=��Z�
k�t�V�#�����so58N>����4�I��5{��;��w���pwu�b�=�YrN�=�B�]��{%-��l�Fk-=��Վ������)��U&�d�%�N./�i��8V�+'�U}Y{����җ`�W�-���IrkG�G�u�>���%�]K���|no���wTh��ޥH����-�Sy.�[�z��N�d�Fzw[���>���v�O�gg�:�<�c��w������{k]W�(/ƓH�5'y�ຩ�d�������۹��g�OoSfս����9v/~�3R���f⢏k��ȶ�5'{�[|�GKi�v.��ʵ�I]U^��A?_R,��UԼJ��(j�V��V��P���hU��R��)E���ɩG�n��:
흻���K2��g�i]i�V7�*փm��ᥳoO���5��)��[=��|���ӧEӵ�Žn���Ǣ����G�ȧI�߻�r�h<o,(u\�{�N��-ݍÌdߋ誩KМ��[�Z�K�ǡ�K�����G�VШT��ȗl6/�X$�6ܻ^���f�u_��JW�"�T�������^jJ�l�{�w����{�q��1[Rڅ�6�ՕwV�	��JN5�n5aQrK�O.e[ܗ^}��zZ^껅������[E]��E�K����Q%����9��^�r�<e�"5�ӭ��=Ui��n��J	���w�'��n�&*�x����<z}��mt��گV��mY9�ż9m�I��RO�DZ�<x��h���Ǎ?�z7����k����]��`?�ÿ�����4���?���E�韗�_�r��<x��h���Ǎ?�z7����k����]��`?�ÿ�����C��?�^��g������\�~�4�����7?�O��Zk�&�[��x\��_��;�_������s�?�{}�t����,K�;�\�(�iJu#Ozr��(���M5�c��C_�NUgQ�,��n�6l�����hG�6��9���g�񗰎گT���j�Q~�r�:���n����c�Q�c�/���"������ٕ�Ӆ*t�QI$�Ēؒ\���NN��Bx�����g��+jQ�V��q�?#�:��HEa�����q{i\��קiiF+wR�I(B>�6��}eí	����KeN��Ko;Q-�T��nRTI�Z�պu��/7�ѓ���U�������l6�rWq��u�:|�~������^��ݹ`4�iQ�D�����5jzU4�(�|��D��Ĺp��9�KgV0�V��ŧ�w[x�^���Q�%6k&��r��r��R~-��6��Åt�9J�kv�����q5�U�����w��Gg���jl��Nb��Y+��[��C��F��bInܞ�$�is���;��$\[FyMCsZލf�t��Tt�8�:��s��ho�Q(�/֛l뵗�.����l^�p������T�n�\[�YS��j
5��Qn�:�3��R�Tw��%�=�`/�W�k���&8��+���Y�u]�\��|����U�
=N*����%�w�r0_�����uG�2+OS�n"�҆b�b+l�ON�(Iө<Io̟��~�^#��4��[�Nw{�v_�9��3yK;��W�W.��'n5j9%����`?gW?���?�c����]Q�'���7O�W���~�[��{O��5=��<c�7�?仳��4�^��jlN6��1�Ε�*����>���m��R���I�_i���%��upS�������>ή
5����Kz��(ѧM�V��Y�^��sRUjTY{�'�*/��?��7�Z��w�Bi��i���%��upS�������>ή
5����o�����Y��=��񟨴�-�2<3�Ce���n�4'J�{x�4��Vs�*\�$�?!H��n������U�lmn,�mcB�iTR���n<�}\�o����]Q�'��}�\�k�?$���(k���I�+���ɿ^��qB6�*�Lq���bۂ��x����_�n�����p[�gW?���?�c����]Q�'����o
�*��C�~��g�#7;�qo�Xʹ�+,�&�.���"s�+x.�T�8����r�RK��s)��I��|�^&�4n���@��K_{����P��(>Rq�e$�(�2�O���vw���;��c���Ѷ�����P�J4cY�N�R䢪өҼ"��,�Mf��IZ�,Mucv��CEv��R���g�>���|̪Z�m�^��kҟ����*�Z��f�T�X	B�(�mogzW�"����rF�KS�7��.b��<�'5(��{���ՒT���:*�=�#)�M�r�_�>J���{�z�H��o����e���s�ɲ�t����� �ZT�ҝ
��R�H�N�q�Z٦�j?`
�'{�~�'�/8}�jO�_3i&�mG���
�rS��-?Bk�p���^�N�P
���5����?Y��;d�^�9����6@w}.ˈ}�e��������=b�U[G�d��T�X~9x�;�4nhT���
��E¤&�����5��涯+jЭ�i���Ӛ��f�ԣ4�	o$���/t=nqS�Z{+qcE�l�n��B�FT��cFc��R*q�����5$�������]ŵ�t�0�oaB�=as���I��5#;FM�I�K�?���k���N��}e�����p�F���NU$j�G�FN�U)FIV�Z�?	r���%�E%ؗ$����Q����[7,m��)�m#:�L�:���N�p��gw��T��:��j"��gx�,�j�xm]��X�V���64�PS��-�T{>ky��9-�KV�8,�����P�OjD��^���ٝUÛ�Ϣ�,�\�Jpڍ����+w�����8
��8Ť�MZʝ�,�l�d�
��^f�~����"6����+�h�Ig�l~����s�Bi��u.�Ӛ�<6����l�=��h��/���8K���=Br�%(<5ҏ3�jE�k)�=�M�_u����}Z�f�o)c��{���%Yz9O�ET�JUjP�Nt�ғ�Ju"�8Iv�Q|�^G��9��'��/���q��vyXæ�N�(׎˒��H�^̷�5�L4�+�<R�Y_yo�]=�����
��`�/��ϣ��vT�85�8eVu�֪�յ<��[��U#�J_U�$��ЯJ�
�)E�qoV֣�^.2]���p����/�sX��yԲ�:k������T�d�h��A��-�IyS����O���T[J�ꭿ�4�M�2���ӹ�}3]���x�9	S>�~2sp�7�ɠ��rR��6����B>n���6J~���<��N{����K�J�Ua�uy��W���.>a�{m6}9�	,zR-�Xa��t�/�ޡ���^�ѣ/�s]_�R&b�#'q?4��os(�e�k����8��p��G�j�ƚ�^�Ȍ��49Ӭ�
X�K��7�ƮzC�6��F��\�lᄡϜ�yV4$����?q���%���>�~cMh~Q���F�5s�;j^j���;��t��IO�V��M��z�4�|��w��UZT�h�V������W�&����KS�Nh�*=,M�6.=��ь7�\[5��G�{����AV�[9B���е��~�����#�ٷ�U��*T[�/C5u��;_��C
P��!J�Rq�"��)=�K��~���K��t7��\:Y=]Rx��/iB�);�/\\i�������;*[���]/�e����KI��{[t}��w�"*w��}�5�H�ne������4��5�N�K��og~�(�M�zxvrH�;�pӎ��֧����BڴeJ�5�D���n��_A�9'�Ѥ�ݞ����_[:���:���Z�o~:��ĒX]�>	��LO��}�"�������V��M/�
_�����%�/?��~<}d.���'�վ��K�A�\O��}�&�����@�3�I����?��>�h����j�~I������'�վ��K�A����$�C����W���B�M�z��[��4�����Z�ߒ)h?_t�?ė����8��+���!q{�M�^�Hi��뎖�U�J�^ŝ��4�V��~�*v{=2g���൷�^7M��*و��*�m�E���C�(���w��U�)'-�[4\էeĺk�֥Ulx���Y��Y]�̤�V���E/�V�ڳ�є�4�!��vR�Ҹ�W�<$��N���i�ɾ�����~/�����3.����]6o�����k
v��ӯ�jv��(�Y��Gs��L�t䢛od�������i��My�t�]ʝ�>�*���R�=�n��j�uInk7�}�x��j�����zN�q�^IV����Ym*�x�4�|�ƙ�\jo��y���f孕K��dy�\����~�p­�'��������n5)R��u&�C��\��%��)ǝSV�-o�іM��{PW�}/�U��7�����n1�"���+e�Iz�7���U�[��-ޒB������eڛ�<]�n}|S��8M��U�W�r�9F��"a�m��$�qF�.m�]m������%�$�RKБ���񅕕7�+J4ߖ�_�d�w��E�U4��N��c���v
}-z1�}�UE�������ZR��������ӥK+��j�8.�G5c���^���L��Q¯�/�
c:8�!X�h\�F�箦�qҗ$��`����%�F�GgaQw��]���x����iհ�W�p��~C{X�?/cC'��������B�ެjR��(�-�'�L�b��x.)�$�t}�mJ�wXK����y�ۧ��S{~�M�^^��ُwn��<�	`�1�x]SkO��wUJ�b�jО�W��.���ˮ1�o
�4�9:���κ;WGn�–�¥�Ķǟ�]�����n.��H9S�ku��;zU<�}��n�T����U�8a���~w=t�\P�mU�����Nsm�}+��q��AS����~[o�}A��Su�T�0����g�a�!���TiS�VyO8�K~:v�Rw���Q�ZR�!=�U�F֖�U�6�j%W�{�qcP*�����[�l��h*m/�g�?u8��{��f"�R�8�����z
;���wjI�k�4��Ϧ�.�V�I[^�C�Q�n�{�W��1R�a+�K��:ns\�;{e�����C��N�UN��gd2��C;��뻰�g5%�~�ˍ[������}�"��}���q����`����R�����S�?^K�T�Q�T����b�Iy\���5.8��k�o���ݶ��X>U��7��7���mSGJcs9:Ԭ��^׭A*�%.���)B)�m�]���ep�9j�ҫ���y����T��mM��Db�~���.������F�]�z��I/Z�~�:tv��Ҹ�9F1Q�Xѵ�=�p�M��w�E^�=2��3��Y~rK���zUuZ��BQ�x^Qo���G�7���,=�1k���KK�2�J�\e�M���wr�+�Ym	�s�,u]�$��լ�Ѭ��<��q��6�P��>+�j-5h����9��K����jߗ�T7�ے�d�t�}o�)��k�{��2˾&���;k�b�l&�#/��f�L��}��{�4�i�-�k�4���&��nvL>�7׸��l�2��h\[�Q�MJ5a%(�/���D��{��?G�|O��:cy���P�oFMo��
�ms�{6o�5�\6�n�	_�챲���2׫'�W��N�rk�E��#��{���qu�UG᷇����������_M��*�5��IG����������#����)�T�7��N�˪�����iκ���<��{v��2��1���1�����mi}��i���(�(X\N�����*r�O~���o�F['jQi���l�W.��,5�o�Ղ�Zx�{��=̏p�x�֫���ʦ��*qI�7�n��GC];�߳�7�����'��w�↤��t^wy}8:�%<M�:6�SIի6�����m��M�̘_K�
�|s�(��R�㥵�;E	�8�֣Q�#�w�F��sw}w
�$��>��.��4�'C�k_б�)E,'��,�t,��j2]]��ե�usvZ�JjmR��7r��ӍJiUi/����M�"ּ���(a#����W8�R�kmgJ���|�B�M&��ۤ��-����57Ļ�6C�:�!�%JX���k9R[S�)W�R��mz,����gVN2�iɾ�������5��~�iIN�&Q�i�8�k2�Қ��{LpC��2n��P�OYXh�5O�f�ָ�w�go��y�"��|�b���8J�� ��Ď*��Zҕz�Q�Sm��-���h���p�Z�W�qO/k�7NJV�޵���N;Nk~�J�����npd�8-
�0\=�x����~*��II�9���I��NR��rg:e=*�i�ѣ�[��~�˰����=Nw���.h���l�[�@Dlt� �=o,����j���l咺�[�s]�SR^X҄��V"���R�W�Yg�_9N�^��	x:6�P�����~�gL�V�t�s%�׵�L[�\;���z�;���;�Ӿ�����us\f�;�Ӿ�����ur����G󗡖�/�r_��(���Dž�;e�䏤���<(��/�$}-4�?���f��z��?pEx�~��?��v�#�~��ϋ��6��WD��o�Ozs�|��mb9�����3m��tA���꽳�MK���=�t?3�jBT��RN-�չ�䅛A����n�Sw[�_U�V���vJ�~M�/T�aC���Η՚B���܍�$�>��n2K��BO�"W��U�V��)-���{W��:]ú��U���ձ��7�5���4��q�ڃ���Īu��W�mBOݣR��l�f�~�n����s�m��W�7!C1��v�	z:�o�$j�f�3'����t�'�?��'�I����ul�wxo�-׼�՛�.~nS._q��}�\�iY��h��^����Ԧ���r*f��wHָ����k���Zr�&Ҝ\[]�u�mg�Z�\G�յ����B��r��t�o�ޤ$�M�&���ʶ'T���벹�����t�/7Y/DjS��uJ.!�����o��s�Ɲ�9T�\��r��Z�+�S�^�*S�	�i8�-l�O�[x��Ⲿ{3�z�qw�y�Q�iU��f���s��=��喡q���[�����4o��mJ����y�J�}�tk�9��i��\&���c��:���%�(����֚Jq�:�J�wtj|�$�§5�/���ۚk�����Vh?=��*��7��J��մ{5�����ɻ�L�����)�'�����/s����V�ڽ�"�Q�g(�I>ƞ青20u�ȏ�f���5�����v�3K�,�IU�y�y�.79N>Ս˷����\�_���n&\}�=n��Q8w����̥���{��!��Ojy�{�5�o.��J��Sg1�u��jx�ӌ��^�^4�騽�JF�X���f�j��Z�o�^;V�旉;@��)����(�i��f
S��IB.r�݀_]۰�k��"�����7��J;���_�\��~3�\�z���ѷU���~v��4�NM{�)��;I�̦��Ut�0�U�v�(9�Qf?����(����/�Y�t�WkeJ�6�g��~�V��u��]�s+ƭ�����Rq��.�uN�C���G�۝�[����ě��_\d��^��I{�[z����ekJ
��ऽ~y2
~ʜảu�4Oͮ/�oqo�CL�U�)������kҩP��S6RE�͡~�x
�e��c��ȩ|���moA?CT�5�!*m�H�*5�?��<��B����V�)M v�ﭫ�jN7]a�S{m5eC��ug=V^��B/�4lI����RY�)k��䮳��o�y�+܌R�����5u*��l�ǡ3�ӻ�.��{{"��h�Ik�?�
m���%b%��|�|���J�F����(�Ӏ��~�FD���C�8���-l��)���?4��΄*���?i���S]-�2<���x{�UÎ*�Lޜ�u+�<�J��]��:ԗ�%��I̤{�V�m�;W\�V�F��*��ӛ���6te.i��5�'{�J�����z��Ҷ�*=�	]�|^v+�ֻfB-�r�G���ipU�8FS�(�=�M��7ϻ�\�[	���k7U�}Rn��9Fc'�i)a�Ϳ�|�{H�ƹ%%ōR���L�y�g���)L��v��B���UK,fn����9%c��[��T�I=����%��A�7��ZRb�q�+)�W���D��5�In��D�B��5�\�z0S_Z�G�;WZ�χ��q��p�^M�i�?�59�_��>�ݕ��w�6Z���Ο�֖��/��f7�������m5��L��ڕ��oI�f^2�Q^,�<�;e
yě��~���z�Q��(�ܠ�r]����oeGfߝ{Q�4
y�F���!��س��g�ӵ�!���5���>J���Ի�F7�.w����Vq[�Z���M[|R�ԧyx�S��h�~O���rn���=K�x���e�.�֫^��S��)Ss��m��Ao/$�n/q����c�G�w5��yӸ���^��j�>t�1�OeGe'^w5���9�R��22���rn�m�����*��;:�ƫIFp����NXI�<���V�wi��Z]�
J���8�՜���j�[�X���=�]��ii�>��j������Ɩ���������o�F9�_����D�]ĵ��V��uk5o�1���\�?9�\���՟w��\/�=�8�y��o���/�����$bߙv���B�� ��q�`�+�}T$�w6�d���'`� =�W�����J��2Z�$�O
�U:esQm�Rmn�F�)�⢷�H̸��3�������c���Pk��֓�B����W��w�M�u�ugu�G�:��T�d$�N�6�+x����&�2���92A���j{Z����������?�˕?����g��A�<R�wz�^f���מ˜��t)'�hчe:QߔW����x�I�#N*0XK��$�����n7%��Za��뜆B��m�--�:��Փ�0�W6��o�l��1�Y��/����ֺX�R���ӹ�Iy*\�ޚ��P���L澖����7e�iֽ�u<�;�xF��h��)�Ɩ뚍9�ɽ�
�x��
���㓽��gv=%-��:st�l�A�U�4��g=
�|ͽ�b�!���qB��tcJp^�շ��Ê�#���S�B�{���յ��?9k{E=��
�.����(����[�̦{�p{�>gqr��,�ڮ[qӼ�^Q���CR*T�6���m���%�+F�ܹPoٕ����ϓ��R���U�?#PG����r�y�N����W���]:�*��BK���n�i�x�T�jP�
�jEN;��� 5���u3h��;������ma�q�䠕:9�1����y�K�~��-���D�|�_N�,u��W�e1�����-�P��g����i�F�{�������<��F�Qb�,��9r�sӺ�����9�~�j;�c�!�U��M����_��=��{P��/�������`��|��m��d�S�\�:��^�����o,{'�_
A�r���YV�����f�h�}
N��]l�})��́�(��w���qi�X����9�����
�X�xo�L��Z[T��Qi��]Y]Gx�rqk�]��|�|�)�=�~Z���CZF��K�r��K��o�~<����R�*��	װ�5�6�pUT^ͤ�X�I�'L�vK��-�����U[�?S��.�Ϫg{s�B����ϛ�ڏF��=L{�Z�i�ԝ}3��V�K�W��kݛ��O���s���zr�\��&�6�)��Nq����M2��g�>f���N��3y
T�-[՗�M{�R��U���TX|���{|�&��hXT���-����Du�Ɲz���cQy�t�#w_���('U��"��밊��p��y�MR	�eNʛk�%i�KoJ�(�q+�,���ʒ��^��)x:���:�|��rؽ�E�`C���n+�^�s�X�U�Sz��]�7�G��t��e�R+�������e�NR�[���q$P��򖡫w��GkF�+RR�}��S�y'�U(7�iUo�/hO}��n��49;�E�{��{�z�3G���CK�儶B��]��[�.��[j�{e{����d��,�m*:7��N���3��q~�|�SX��ښ����Bq[��/<��W���T�(F5)W��hԥ4�=�{6�[��ݘ�=Br�%8<5Ҏ:�)\�tkEJ/cM&�j{��\{������-W*���Tv6�ж�RI��E�M�M)6�[��3�V�J��Փ��o'����%F֜ah���%�5.���mG�s7X���n�ʹ��O�-=Ԣ�c$��G��R��G4�
�p��OcMe5����GV��㎵��ә�l��\�ҹ���+Y�A��gR����QqM6�.EZ��J)$�$���Z���V���y5��-4�:v��N-娤���7����0ּX�Ӻ+����WU7����֩���Q[�[rL�N���B��{�9�.)ZR�z�Q�V[o	.�����p�oM絎z�K�|]l�W#S�[[R��r�|��r���f�{��#
�*�JWڃ$�S-��vU&�
*{�T��QO�m��{/����>�{������G-V��J�s�t����O��|�99>e�dCV���Q�g�����^8�e�I��6���9����N�t$C�eo���Y*�y�J+�$"���1�'NT�m���(`��Z���ys�_K^�x�.D�B~�j��z�T�uVMԸ��m��~�g��-����N�G�̬�@��s�w��W���k���s�w��W���Fx���9z#����De��<(��/�$}67���Z+�Z��?�s�WP��`�Xԡ}�RI�t��ޣ�ے0�����_�u������ZS�RO1I?��������J���y[WQ9��n��u�֟�����_�u����6����Y����W�/Q9��n��u�֟�����_�u����N���_�~�_����A�N����_�u������W��i���fӾ�W����u~2�`�����W��i����_����Z`?Y�������_��D��_����Z`>�n��u�֟��m;�?�~����W�/Q�w7���9�>G�������|_�����&g�u��N���K�ۻ;	ם:����'V���w�<��[.������3m��tP�c_Z�Xn�-��z�)P��N{�!>��OH9${��ݷsx�M�_������R��2y��[VT��c�U0�K���i1�G��x�ތ��R�X�O�����8
7k�E�����TT�Z��!)�ڊ��M�۷�98w�e�|*�c%��oɭ��'j��75�\�
kU��ԓ��.Kk
��{�΂��x_�dio��������-�b���|��i�bf��4����W���ŏ���$=f�(�C������&��V��N�!��r���QIOv�i%�fLj�FҤ���j�?�k��#kq�_�7m.]�m�`�\u��8F�Q�*��I�I,a���v6�q:�Nc�����<�:�sV5��1Kv�V��/�L��_������Sp�ao+�n���V�RT���
�����lj����Z#�f[%mB4�u��v��b�י�^��Jo�R]�W<�ӷ���V�'�[�q9S};|?!�W���k���58�L����1C��W^��R�{F�:2��k�K�8�G�qՏ*�q�c�����㶙��Yӳ�Ֆ���8\�m�x�S�:�کkUүM�Қ|�R/x�z���:�zR�-�5�y�T��Mˮh�Ÿ_�-����;���v���T�{)�q^r�5(��Rc	�ӓ����}����NqO�v���gM�X,��N���̿��]��v~-H���Fj}	�xmU��ep�t���U�z�E�k�^)8�I�0�W	�qV�*��J�wٮ�E�q��i�)%Ҹ����p�]����4E�~���[���_j��]��8�]�Z�Ld�oR��J���}�o뢾2BqK��Ҿw3���s�;F��mס/٢�ߢ]�#|�^�/�M?���-/h_��%��WG�y�+[��Q�H�g��C�M4�VW�""E��qq~)�? iI8�n�&���x��Z{Zd-�S跻��mׇEM�K�>���͸�ŕ�;�jwT��⤻�qݵw#���陼x�ժ���"�wM�}TRP���n����صr���%uW��PRN�o�������q��$��*.!Ȩтx�Mzf�V	|2|��Ko��/s�O��k,NP�R�U�_�i�s��zw�r�[G'��)�7�V��m*��}�VVjE��N�av������->�{N�Fr����.�E��%Ĉ�KF��Q�k��cSjJΞծd�1�'�1)�nj��W�ľ=d1x��9��T�
ץ��ܩu]�K��:i�Dk�l��}��>'ݻ��f�:����B���#�{�߉���y앖	E���nh�Y�Kw*����_](�rHw�׼~��vʦ3DZ�1Y�-���zV������_У#]�F҄���S~�<:�no�6КK��^D�R��o���z\�F���^Wӻ�s�~Rs�����o,'��]��f��\%OU���;J;ȵ�j�ͼ>�~�U|s�TӼeָ���:s�U���N���?[QS�mT�ni=�1~k�bo���-���R^1O�`ĵ�_?���Ea���k��
m���%by����Q1��6���������Dk/���i-�/�:SRk~�Mi<=�O'w^�R�����+}�)?f^2�Q^,��x5e{�{��~����y��b�V�T��NK�Ֆ�|�6�Yl�
��>UGN�/�����f��{�!�.����U'ʛ���~/�w��sMƍ#��y�ru1�^ꛕ�����''����;h����m�>n��	�]��}�#uiS1����CZ����T�|���S���l�j9q����o�G��5�q�zw�+�]�['Δ�?m����㎄��ᶢ��ѹ��7��[�U;�o��h>U"�>|��|���uz���M[W{a�~;[��<��,l$���DѩCC���r����~�4���6Cý�~�c��&���%���aq}^���׌wkw��˲]1ߒ��{��ˌZ�O3����b�
wZv֗EXN=�G��g�|�����0��S��C_T���|�J��Q��=�
q\��7�1�.��d���6�
��w��^Xr�k���Av(ܮڑ������[�/�xWW�+C[�5q]m�d����7�bر�-�X�O�x�F�iOC�mA섢���Kb�۷1{���55%�{�]�����!��3�Դ�m*k�]X�g�髭��;���I��9.j�wR���T'u-=�ҝ決{R�nq�;+\�+��C�p~�{?#�\Ԗ馚m
�Gg�Ԩ>L�9r���vy��Ɠ�G(p�����Su#ɚ��o��}ͭ�=��ii�>��j������Ɩ������^�A���|��5�_���tL�������.3o�Tͯ�X=��r�{іj;��W�~	[ҝT��F+�ѳ��~�|ѫ_Ц��?9l�3�M)GN�Q�s^Q��;��`��;+���Q��9���M�����<u9��KڲT���^rqm}
g%*R�R4����y�s��w�w��^#�E��	x�t5iQ��'�u�ۦ����)�1�K�yQÝj��[��Z��:�j=�Vrm�r~.Rm��`��v����Ex����}Q�MS�@' 3�
pK\��X�H�XƝ.��,�x7m���è�“��SO�mxEJQ�V`�Tx����R���'������<��Q�OߘMC}N�k�F�Ezsk��6���%�_pO���6��іO�mV�d+$�rl�Ւ\����b�E$e��S�s�Y���nq7���iwN��+��uc�&�c-�������^�|����"W3Uj�p�����X�#��ڧ-R4��˫�I�:T�)|��Y\f¾W1��������suV4�R���94��kþ�|L/�xA�{�~i�Մ�y�&���IJ6��%4��m��Tc�\����꺍x����З���m�qQE-�,�q�,�Bq钥%�{-��/i-�ݣ��\��7XT�Q`���j
1�c9-���*2ڪ��N?>ʰ4�٤����8�Q��9R��,3���p��o~���
w6թ֥V*p�NJQ�Z�I5ɦ�i�B3��N �.�M���l���������T�&�i���]`�Wvҳ�:��S�XdB�7F����8�E���|k�-m
Y讫�T�a�Iv��۱�K��5zn���eZ��^
s>�N�†�EЮ���|�a�mĭIE<�:'BsTrx��WQ{4���y�-�O�Mn���G�H��+i˹��Zcgât�+Oۧ8�N1��W>M�e��n�����%F�
GN)֥��<�R�>��K�g��2峌E�myF�K	Z֧{
���ԃ�H�ߥSq|Ժ�[yL��T�ժ�P��V+
v�m������c�ҿѩKM��JM8�ǝ���>տ$�����yJ�J�r���s�i�T�Κ{��.#��8Z_K�4��e�M����֛�N\�7�K��_�6��<�2n�m�;Jt>�R���6��7@�8���|e��+L�(t[e춧uIxFOf����k�m�2�G�Wxo:׸�k�XZ{�^�JU�|��s�^�v��J6>t�e>�����&|�޷?OY1��8�xy*T��)/��Z_��ǻ+�M;�FNQOڃ�|b��v��gfӵ��SĹJ���8�˹-��8:K�/ͩ8ϗ���'S�/�)u9UѼ@��M�9zw���)G��/[�"�</yI�S^��̵���Ѯ�WjTeֹQ����?+�7�}R�j)��~ʕ{�i��t���n�]�I�oY/�������W="���3�l�R���/)����H��r�>��F�+h��U�	����̿�_\Տ�'0�o��6��%���#�=��ե.���q��>�Y��;����Yn	��8a4��/���mlhJ�]��E>��{%�'f��+�<#�_T^�5h�*w7
�����'��^�cG�]�X�%�q�{5��6VУ4��])u?Kݖ��)qQ��J+�k�zH~��_N�N:u)U�;�#��D9�7q}A���r_2,�K�F>�guS�V���f�O�ɋ��v�ИJsHa-qX�~p���J��O�R{s��oŜ�%�:]���F;z[���`�:��|E<��V�-�]�/����#�^�O%��:��Wx��	y\��	���3���ri��z��R]�ǗsO6��҄����Z�����i�WN\EƮ&���i�:5eO���fU%%�[���q|��
�w<��}-�y���͎w<��}-�y���k���G󗡒.�9/�~�c�y�]{��wOF��4s0�6���g���N��ǣ�Q�g��}�{9�A��
�����w�?��{�>�7E��gJ�Jy�I����j:�������Of���m/��H�Ů��l41S���.�7.���Η�q���o�V��T�j�{}�N"^�Z<������º�^V�^v.[t*3�m�w�|���_@�p~�Heu>7��\]���(Jt�שZa��T6�ͮ��ܷ�}�^�;�t��oq��meF��]ѧ�����}��uɦT�i�ju�֦��s��ޱ�����ڭJzu*�j.[�wgs��ޢ��6O�����2�v��T6��_��H��M���d��O%�%��A��
������6O�����2�v"@��o����u�y/Q-��
���m���݉�^-��F�z��O�%qe�h]���&�W[�;w�ۑ�2hw%▆��+�
��V8���N�;ۈQW*�5*r�JN-II.kd�)�����Ե��&�e�۞��Z躽�{�N���߅�f:Y�w��=w��Q�Ӗ��n9|��i�ݳ��W��J{�o���U���T6��_���#�[_qF��,�����v�S�:�)�4�MEt�%�v׃(�kMЬ�ZS�z_����6
mCZ��uR*|)�؟7W>M�pW�5��Ün����*y
�0v��u�<�y�߭�;�ѿ�[o�;���|_�����$gs�{ӟ���kϿ���ٛo�G�:��a.Z]�MZ��h�7��
���OA~w"����V��}V^��� ��l���ps������ز�Zc��Vu$�*0��6�o�9z�K�Eyg�d.�"�>vߞ=�G��q��)�����q�ԛ�Fe��̶���&���%�K8�����^��t�}��L���Dp�������N�X��F�#�j�F�_~�s���?��R6��u���L�.�|�1g����N����C_�c�~k��Nq֋�}1���̣�;Ġܟ�W�o�̙F����	�_�E:��U{kw'���OU	�-X�^ὦ\��g�=��c�~G=�_cZ3�f������'N�eHIl�5�Q~��^�2�.q���5i����\����V��
w4�
X)�un}J\��W�oڶ���k�抹Ǔ'�Q�ɠ<�	��[���:法m7�u����ku�D��V�����sl�q��*v��ڶ�Wg�k��~��n�Sd�� Z���[����k�r*�ϴ�S��*�*w}ҜE�k�6~I�~ѧ�+�%zke?�[IyZ[�6-��Y�UhI����Z�΅�7J�*Qm�ϭ��M��Y�,��u"T+�*�����][M�)S��>�t���$��H���uV����O��}U�����eB�ڼ:�8I4�)�Il��4���7Ĭ�
�.u'�����ko}��ڷ�˗�
���f����kTN�E��]�s�z.8^��}���r��s�E�k�8|�i����co-�X��ݝh\[�]��	)E�i�D��u�����F����$�`�Ui?���z_�KC��Q��s�0����bq�ӗ���\�[����:_Ζ�4��r��S�49j�J������q�%�Һ�]$�����]����unn�ƍ/����_����4���Ӷ~�Bʊ���s�M�t���h�]^��
Iз꣏ߚ�6��T�RO�>�ܼ��r9>>�+���geeFw�(S�Jr��'�1I6��1�w�xn�����d?�t�F����=���$����p/�mWoZ�ͻ��7F\��X�	m�xӊ�Y'���h���mʭiթ&�:�{ʤ��R��m���]=���w��K��'V���F���Ӌ�	5�.��:�1�4�i�	�܊X��:kӭ�h�9m}\˻���R����/����i&��K�o�#i���M>�6�Qd�η��w
Q�t�\Tm)?B��M�%ZD����t�EU�9a���z��(c�Iu�VN4���'�܅4��B�
P�N�Ta$���$�\��,���6p{^��л���jj��Et�~� �w����3��Qj�R�*Ug庶�&�Ko�~B{�_yNˋ\+���(��,�b��i����H9ß$䟁&�
Z:>�J�G�K�d�g��~1�%�h�hSY�~(��n;�W��RZ�/��["��	X�mJ-�p�%ԣ%��]���ˆ�^׼$��]h\�*�8R�r��S��nN;u��9˳��3���u}.�����3�d���:���V�{p�&�7�Mus�E�i=9��eu3oC%��
����J�8)I��b���W6������j�������;F�����\�٩^^myڛmڔc�=ۏf_x?�u��Ώ�/����E��Lq�p_�J�:Ni$��,cf��f͝Kb��u8��R�赣UA�ڎ#��y�۷o[ߓ1�x�����O���զ���8a�f_x?�u��Ώ�/����E��I'���|?�����7�kx�S1�8�����O���զ���8a�f_x?�u��Ώ�/����E��G���|?����7�kx�RH�#�|��<oߦ��ij�w��՝�tw{ʥ��?3�kq���}J���o%�����oS3��ZVw�5V�:�q�7]�i�e���5�e���WY~H���2������$[�t�j�:�ú�:Jm4�s�~q�[:ߒO���i��֔j�&�Rı���ه�s=�3���KO���T�FW�n(�N+�sz�%F����ޔ�J����P[>r|�f���捍��K�����F�(�N�I5�)v��IyY�4�V�Fһ\�G
������b�!���굮����YI���ݷ��]��EK�Q���qG�_kM��R�Y��\_�0�4�I�W�
�����+�A��ò��Oj���E����K��j�Yժ�����c�>�����=%�EY���~t��ݱw0#Č_��R��[W�{uq�����F�~�:�%림��5c��u
\�yK�d�0}�W�S����>$_��[P����/Ia�C�p���x��d�J3~
p�V��^Zh-N�+U�������Zť:�6��4�&��o%�HQ��Q�-��%%�-���b�&���$��ԧU7J�*%��%-�#m�,�S���F����9h�y����ʕ'�7
SN���(E4�[|̧W�d���O��.��I��Y�����{rp�EFqk�����3��q�����U�^��^9�z
]p���
�~`騻M��,�n�>�6�>��^r������Kh�{c�W
4G4u��И�gco�ի7�^�IN�z�oR��[�Ē�R�I{8wí­%c�t.�7a�N
�u&�J�~�J�|�96�!|N��2��/�.6)��5��js��'mg5�u�o5��=����{
ׂ�_2��f�J�u:�Ξȯ�_���;�w�x�_�Yt�Qr���+id��d�:ݪUW*|�w�8@+:��J�sqiu����:U����j\�ﷵ��B4���+d��$vM,4�:ueIv����܋�{x[C���ٗ�f���9ܦ[��B��ҏ�U��<~�
ԒXG:ٸ�%G���4��4}J�����U�i�գ����R�F��/�t�T�<��f�_6��l��K�N�~����Y���$����8���y���=#ڴ95��נ�EʰƆѷz��������[8_N��k�_V��$�W�΃�*N�\Yٱ�a�t�S
i<mړ�ϴ�JQ�\�$��m��[�?
VK�K��=]{�=^N����fP�jB5!%(�&�{���-Jh��E���kґ�J�|�)�c~x�l�#�t��������)i>;g�
.��v4sV�����E_��*��Pw����~#��ꭧ�]��~�qJM�#YS�*�!��K�wcN])r_j����gk{8�7���r
�w<��}-�y���͎w<��}-�y���w����/C7�_��5�Q{��
�r�=�Iߓ�xP���_��H�Zh���5{��[��_�~��:t�$�S��溢���ȯu8B���y$�G`�Kd�H�~��?��v�#�~��ϋ��6��WD��o�Ozs�|��mb9�����3m��tA���꽳�MK���=�t���y=Q��i�->��^ꕍ���$���-���2pڊ��Crx[���wI�%�k�J���W���]
{P��?5)/�$9�iM9��g��P��Yѱ��I�S��oo����T�W�K�������l���o
<�x��
Sh��]������ָ|����S�]˦5Te/e��Ӓ�L�RXg-
�m�*�$�%�4�i�5����\��e��꿟b���,_�U��j���������ʿ�'�b������{�N�)\Z֧qF��]�RR���ڤ��;�����7���ӻ�*�n�I���xѦ��r;��w¼�
x�i\�jZa5F�_	p����:�T�N�n�ugR.�t�ƛ���k
���
��ֺs����i}o��I�$�d��i-��h����ip�9Z���nwIT����F�Vp^
1��d�ʲy��=eWi�I%���fyי}m�S����I��K=C�x��4���٪Q~«V�Ƭ�ө��y�O�=����{[��U�zɧ�^r��_S��*,ƴ|q���4S�J���l߳sM��Q�M���{������u]�F�g��cy��|����s���
o��t"�k�l�޾��f���+����ׯZ�+*K��$v�g2;O)�Ҙ�o�N���E�������t�����}s��Wd����Bƛ~G9:��8����eK}L�e��MY]R�Ixu�պ�^�qz֭ƠY{�%N-��S����)çyI��m��6�W@p���.�K�4��&�]�j���Z�]��Y7:����Ȟ��-Fqp�|^Jۚ�X[&�*����q�MK��G+�W�h�R�J;��cyʭ�eRz�׋�Ky��6wu,kƽ-�ϝw��jʄ�H�F��8T�jS��d���cO�����^霎G��&�N��S��a�i�OU�wB��'��As���]
�B��3��$�-�Otו3+X���(��^Εҟ3�mމ]
𸂜?�H������=��[��3l�l�.��osc��]Fi����۲2��q]�;��/���ӷ6�4ޔsS�ʼ����]�v��j
1��6��j���ZF��U5�������'�kEO�(����Q�N��T��!N�\�97�c�nM��\�i�J0���^,��Ȼ���/,��żD�������T���k�������Λ�
�����P���Qu�����7��.�qqhr���]�;����V��㫵3�}�i�;t����}�R���\�I�i���b����u�^��'��f�+V��M�[���g3q��)e)a��z�4i�ugw7����N�kw�Q��i(�n���)e_���ukuJTkЭ:ui�m(J/��M��i{�wR�p���X�;[����ujЎ�+�WkR�s��*sq\����O�;�p��剭���%���ܾ��޶�<ດ*�Uӣ�=����$����^�;�kt�LH�
��)4����gk\���>��鷣��mV<�M��x�ԛT��mϖ�o����#%�+�k�'���iظִ�V��l�팪.�Q~G����{��B�j4�•*QP�NQ�"��$�$���8�iœ��>Y��9-�t�>w�MnY[��_�.��GV�c���/{}k�o��{w%���fi��7�5�R�K��A�G�64���l��v�M��b�{�k��ѹx�T�(&��%<%��O�_��G�g�`�D�!�Z;��&{[���:�9V�u|U��c
p�/9*�s[�þ�g1��Rp��c��䧘��)s�gr���z+BJ^O9)A��oN�#�g�>����x�D�̌��t��-պA�V��[�8գVT�	N��d��'�.ƷO�h�-���
�
t�.��Kx�H�f���^����V�5_uO�*:t��*RT��q�[��'��N��������0�x��'��͝�v�v^̓[��IoŸ�sM����V�O;�_f��G��8��ȹ�4���~���ڕ�kZ-v��O�
�dz�l��q�3D�8�Q����Ey\�)#xQ�_� �`�.�ꗥz�և��aL��|�.m�):�U�ѧ�Ԓ�^�8�$��Ÿ�k�=FQ�L���u��R�ԋ}��Bg�S���%���d�ġ��T��8��[�u����j�)���'Sbo����*��l��vթ��
v��Lj]P��	�I?C9pu�;8Np~�u�rx�IXW��׫{(6�JTz����Uk�Gn�� Jˏ(��5oUjT�8���d꽩�RIT�'�IE�m��>�z5j4/�Ը���<<>珲*u�5�4���^+++�eyt��e�Ѳ��n�
�D��yFkG�W�k|3�^����R�֥I?�R��^Mv$�1�s��!�3�<�y����33���uy��=D��'	�8_�.e��J�k/8V�T����	�tb�{��M��R{rH�q-��>R��\�4�w��6g���o!�*����YMtnږv�-��qz�Mⵆ���l庭a���gq[�s��k�����f�����p�We�N}?a�eo:�;*��Z?�88�}V����C�55v��4͓����2iE����rm%�:M�K��U7҉'
�*һ�Q�3�};����ꇶ��(y��
�$'wq�{���ξ��q����i�-�)�W�*����S�H=�V���	�%(��[��&�WK�E��ֺ�I�+�2�m�7v�}��^���$������J������CL�z}­��ϱ��v��5g���b�#im�??���7Z���c8Ԅ�\��I?i���l��'�Y~۵�w+L7�uie
��2W1I;�{궊{x�n6o�-��@��>?�O�r+N�^���JMEnģ�4I�_hu��Ԋ�=�����>��~�u��_�q�p��S��m����@��>?�O�q�<��O���S���n"����<}#@���e�3ϰ#����e�n��}�$�T�/�v����<��O���S���?�S�/T�wF�/��>���ŗ��>��~�u��_�q�p��S��m����@��>?�O�q�<��O���S��}����h���4��^�<�8I���_������O�N���k��`��T����?��@��>?�O�q�n"����H�>�Yz����'�Y~۵�w`G	<5N���k��`��T����?��@��>?�O�q�n"����H�>�Yz�c��6�ᶒ�h�1B�<v6�/;Qԩ9JNs��e)JR}�w�%���z�{��r��k�\���p���gFS�YE�N>v�����rh�8���\C����6Z_uN�8���uZ�탯-�b�z#�k�g�EF1�Tc�[$�$�-G�iVWWo3y���vWk:��Q��_�V��.dvJN�<,�gS^�_)n���Ź.U/'�T_�ӗB�՗�H��t6�Z��t�$�rU6ud���Υy�#��b��Eк3	��#�њz��a��T)u=�7�*�~3���'��ϼK��k�A�S�O�������&�y��
�<1�>tv:�y;�x��xkī˝M�,�ĥV�-��\m�G�r���t���ʔ��[��ܕ`ٵ��e?iBN/�ڷ3��j�%ʦ�j�P}/��k�[�pZ?I|���)&�1��6�_[>�c�yw���F�j�Ni�?Z�*�&��ӷ�����>�i���k����>?.
�ҵ�����5��Z��z��T��T�}B4���%ol�P������IðQ\�ּ���''��л�
�gZ\��,
s�4�ٝ���>�z/[կ��zZ[3U�΄i�c�&�]5΋EO���or ��W���Uh���So������5�N����5�6�u��'/jzTU*ث�,�d���k/��^N�%�>���;�0i�2����ٵ]Q��k)ζ����F���iW��է�?��/;��|���!wk����_������d�jS����zW���|�ԡ/�V��_*/�&�{{�(���G�{!��i���]U�e���ү��k�U���n
p�EN�m1��zOx\B�����9��ˏ��l#�
3����z[��*�)����ʓ�/I��wy��jR����ͽ�M��,�v��/甤��/��"a�g�΄��[|���Q���Js�G���~��T���|�J,�{�]k�5=^.�7쩾��-u�r�'��Z4�i�kQt�]��������~�>�x�8�u5:.45��=�J��z���+Q6dDo�K������{iFS��r��^K�l���U��=�'�e��+}B�,��w�F��S��G=;<Mj��I���]s��k�1��Eee��c&�F�]P�_)ҩ�Ӛ�(��M4�k��F3���S
),3e.�c�%�8�6�R��h�`�z��j�XT�\�Ntc*�M�g�gT�L�U�0^�Z;�.��jk��E�/p�'�-�W�:q^�/p�pm��G����-r��Og�>es��ܳ��&ػ����<�WOW����pu*S���Ư��&ڝ�T����Ეy��WS�8��LJ�����j�Wg���%����>�����JM�*R�_�L��ӥ��ŝ��;���6�cZ�z%N��{�p�Zq�|�M4O����e]�����m���������]7�4�;#J���U�%���UjZ
[	�/Mof�-볝s����6�/mm��ҽm�>�Gx��mN�޻ƥJ���r��<�#��I���U){Q��-I׵kQ���V�MK�s����=}���-w���
�-��K��U�_�$��N=��Zk���
��p[���������Ur���u^_E*�NK��LW�G5-���h7S�b}}]�z�p�������i�V�'��Ҕ�dT�W��}M��p�_��b������jE��Ɲ^����Mo�qi�]�Â0\D�ۺ��w7�wiZn�\=Z�j�=�:�PR��SrRMXi�GoQQ�\$�e�>����l�j4�ː�@��{�&����-�1�oN�%,�g�ZQ�d�H�^���-�[���Y<>�}������-)�,�(�Z��{���0���(͆�n[�f�%��J#��N]~J�_��Z��r���\�g#mciAoR��Xӧ��U�Z���{:�<%:y�A
�:��-�������M2(�
s���G枬�ս�^�h�
=�f>�r~-�=/��/ҫW��^��F5~(�ӛ�K㨺:k�-��$~��k��g�15��]Vn��?*�y��I�JcR���Υ��-N�T$�T1T��_�UO�"���B��_
4�<��=��^q�z�.���¼���}/��՝�Z�����u�ZM����:p��TR?@�KqL�o/y�oi��
{ʅ6��s��y����2OOj̾>1{��7��o�NM�����{
}��)j�}�~�|)�>����7��^���Νix�mM>�m�Xf���yd�B�]Y��y^D��\y�޿�++���:��? ��~H=�*z�&��
kJ1��Mymp˼n��ӣ��ԭ�0��>j�M����Y|$��o�e(�-G��S�c,�+�?_�3�8�I�w���-��޳�L�pZ;Z�y����:wv�f��R��aR�$��ַM3�!�)ʔ�&�����:��:o)�kpg[/!���@>���+p�+_�:�}%���sB�ybn&�6]�''��I�rNx6�����ln1�;:7v�T�F�
�S�V��Ҍ��4�i�@~���2�/�q�4-��GHI�����W�T�gAxO�+��.�=�u�^*��kbo����{w����n��|=+��uz;7G�M&�i�Mx�VE�}�l/��ؼU�{��ʱ�mmBu+U��0��o��#��u6b�O��]�K'}?7mio����$��6�ʹ��ݻ�&7�6��:��asI�Uc�Q�S��J���}���o�mN�S�(�S�'�s��_���Zn�WQ�Ɏȭ���v�v�Z�cLN�/7�1�%qj4 ��֔��-�&��}�)\�����YV��'��FH���kIQ���0�J��	T�8�NR���%����7����Qqw	�r��Sy:�\e�F/�{�[zJ�5�
U�r��Nv�e����(m�m{O�lżG�{�t	:4f�*��xqO�o���V����IrW^�
����j}?��e3��]��Q9�j��3{�-)l�ma}v�%N�L_�6��Rk��x��A�5?���j:Q�Nr�n+��xn�������+q�	�o��%��]���,�>7_����t�72애"�>m�G�����uh�����>��ٴ�%��}����s�_bo�7�ۅE��
x��8x���ܩ�J��E��g�X��1���$;��;$�
Y�4f�v�:/�I��ȩէV�Jq�$����Mzȸ{�y������-^��N{F^���s������5{E%������}�Em~��Bx�{|ר��0f���CQ�F�;Ų��>O�k�Yxl�P[{�N��(���_5�6���\Wi��/��f������v�6����ζ�^@K�w����G��sX_Ο���iiBr��in�N��]�mF;���%%ʓ�lZ�׾�{h9�O	%��������I�o��uz'��Y���yZ�'�F���hn-��O�޾PN.T�s��p�n^b�vSi-�Z����8!wF��1��M��'iV������ӌ�+�����xit�NY�L>��Y��(y�nrƾ>�-��X8I���t�L�A�85(�DI6�Q�mk�3|:���)����,n�*�<�V;��H8T��h�M��1n�2��<|Ҷ=wXz�Ԕ��ګd��W[.m�rq��ܷ{*f���_�Q��e�s\ϧֺ�-���))��=�X�:����(��٦�My��>�����v�����d���_[c�sW�;KJ.4�B2~�B�f�m쥲�)%&�A����5�aO%���r�|��WP�e�.�w���}$�1N�JT�
�Ky]��v�K�\M>pcM�8�{��I�2�aR�5��������$��1��O��̜���qS���M]sq^��v�][J�B�%
0��ٷ9y!	?F�*V�i}f�;r�
JR�QߓM�'V֍Z�yΜe'�io�S�F��F�'%N�o�e���̏y3F��Q�:�'%
t���Rm�Ex��IyZ��_���|�����Ӻ:�;8��ܪ[ů,h&����#V��4%^���{��5�ƅ7R]����5�>�s
5U}��6jw��]ni��[T��KL���u�N⤪�|�o���n��彀�y8��*��{�ëܨ��>t�J��K��O���G��j`�U�ޓ��<��5�N��)-�(��Ri����d���a��[$�6��5��Y_��~��q���ټ?’��������o�Ͷ�{��ko�O���OgwA?#��f<%�c574�3n�,n����
H”�(���^+tN�Z{F�)R��S��ch(�yۑy���ҪF���k;���YA�p�Mb��Ƣ�O���:5��?�?M�����yC���d0���6_���,/�M��x}§�ʟ�_�/Qs��S���_�����P�6?t�B�ڤ�i�Ҕ��j&͏|����~ׇ�<�]�3����������A¥9�ÚknM-��4�O�>�2���^?9z���*�ee��~�^�����
�K�ʭ��mX^�o(��1U�J�]��in��%^��{�Wt�j/1otCnm��Օ
�_o��8��z�Q�9OPi��1]mԧ��sO������}��M_��S�qK�Kݽ�L/�*I:��g?�����rix4ҁg7�5�wAj+mM���\�3�&���&��U�^޴�k�(����O�������GfQ еںMND��{�7Z��]=�f�A�h-o�����I�5p�jѓ]v��å?‹��Mrh�L_R���Ө��ƌ�J�+AT����P@�7qZ�}uo>��m�Ԅ�Oi(6�ϗj>�r�H�)rS��=��)�(w��T�R���۔"�/��k�"����-e��uM_��FV5�n�
T��'%��c��.���.����(���9���G4�'�Ԯ#mJ2NYߌlY�l��|��F3���i��~'`,�ùf#QT��$��'7*��}��v�4�W�{�I�onQ�"�m/�4ff��ո;�FJ����S�r_E�5#�PmzM��к?��a5�����>j��%'N_E	|(K���m7�kڥN�r�����G5�r�Kwȗ�����54	���6�R����v.Ox�
U��Dk��H���G�#������)K+�̍ݼw~��%I��-�E}T0��,����$�����dN�I�����:ڼ���ĕ�gmz��h��J�])�錶k�;�������"���}���J�i~�Z�>�I}��9,��ڲ��Қk/���1�5n��q^�Eˢ���TΝl�?J��i9�+��?�B�|��Mk��{U��Q�{|7�4,�.�(��ų�w�D6�rm$���g�8�V��#�/&��j���E���Ô��O��
�f�y�^�'Е(�v�ufV�RU򑋷�׌-���}myK��8�B*1�I$�Iy�⨤�e������I,xbM��<.e�~����/1r��vr��\�Q���m+�����o����w�v(6�j�u*���_J�:T�,%Ѐ�9az��v�f����I��q�O�S�#�]�:޹cöS�5��q�o�1[ܟB]�ms��T���RYo��rګYa��GR�w�mOg9�>��n������UQ�����xZ�mS^N��~��$pח�Y�����^��I�ܟ�����h]_W�O��Tl-��c��d#�~_�GT���x��V�K��)�F�^�ީ.��־�WD�����k�Ru�<�o|݋��Q���~~@�K�^���$�#Oa04UV6��Kg(�y��'���\[[^Rtn��֦�aR
I����w��PN��UNeM���7���4���R�i�v��x~��>���uq���r��IoI�L;��T��L�4��2��*[����N�^1���!�x��ַ������C.=\���̱�&[�j���)�K��� ���ѣZ�-��έZ�Q�8E�Ro�$�Y�1����$��~irm"��u!�SZP�n���g��_j?b�4�^.��e�T)���k�Y�8s䞹��W�V�{����4��)g�7\CmB\�K���/��F��/g~����]�/q�um�)���?*�>D�������]P�Z��aR
Q~�+]}�8Y���3R�u+ZC�N+�p^
v�O�g۹�?%�n�z��q�?���&��1ĞZ�p��nj�|v�AB�~ʴy9�λ�~Cѣ��m*x�M��nх��J��/�~��Wac&��2-rkʙ�h.$\`%O��:�״a?�;oW����xyϗ�9&�
3�%��F�J�U9���_���������kE��>�W�1v�F��P�B�*S�8Nx�/�����H�M)E�2"�60>���kc�V���<b�w�u�+lM�\=�-�M*�p��H�o˺�#d���x���ũ,���6�[ʹ��>��.&�o����ԯ*+�.W�Xݓ.���?�j����?��x��z���Z���]п��Ե���
����:5�����L��Kk[���J�W�UaB�ޜz�Z�ڌ!�ܚ^�L��K��|�c�;�Ӝ��3���s�&�8a���8y�u�H(U��m��F+e���KХձ����揫5:��m��i'��X�yƽN[A(�y+���&��>�[迻�˓���r|��|��m���Y^�үo^�V�X)¤$��eɦ�M>��Qw���X�zrέ]��kYo/������Y>{.~jO�Et���#��ZWN�};��z�m��e(�����=P��SOf��i��M&[�:�M.�-m�޹��Z��>Z]J�y�{ѣHn��uoo.u>���wAN}P���Ŧ�S�K�V�*�t�J}2۪<�:���5V�����}D��XV�.(
��r�[T�=��Hf+�8��~��]T�M4�R���e	'E��L��0�f:f�2��4^J�%N
3�`髛J��n����������+��]E%^9ks[����kJ�~�z͖j��U�,e�祰�P_8�J��V4����Z[�zc	?A�����S���;�6�v*P�b,ܽ�c|&��ԫ-�UIs{l�c앸8�tk=>\�1������<P��n�P[y�����_���+�h;�U�~ⓕ���� �y�>T��sq]��S���U�+���i��o�p�Z�����4�]�>ߦ�g,�S�[7�ϔ��f����߳5���4�4�+C�|l�kx�Z�Ow���'�Ӕ��)>r��|��p��:'�z6�D�lk�������V�q{]��^��]s��$��R�If�4ֵ�ju90�N;�?[���]y#W���X_Un��Hh��x��kn軬�ЩY��BO�[�'ӿ��'9z"�kFlB���zӈu�ֵ���w���'�ξ���䠽�%΅�~��P�Ԏ�vsw���(��S�f���d{z_r�ۂ���������\Թ���*��T{ʭI=�&���|�2�I,#6��3���=)����5bM���:��ӧNu%*�[Fr��Z�ؗ22p�q�O�u������[y��V�F�(9ԩRJ1�R��|�^Rĵ���B�Y��ω3!p�u�\Po��y���̬��M��J��2��7��*�t����Z`�)Q��п�L�*?�6?Z���~2�����m�)xG��>ed?Bo�jU��p����Y�=NR�y(������]�v��eR+Ò������i���G���B��0_���x��9�Rtjڷ�l��s�p�;J��F�)-����t.�t�4��sF�K
��M)�Q��{4�	ůD�%��x��C�=@���Cr�;�T%7R�W�R<��R�^)L������~R����V�/�T<S�z�ޕR^Λp���y�}�}Z��g�ӏ���_��{�9[����ο~gd�B��i����
���W�~��/���J�����Z`�)Q��{��_�3�H�ꅿ��������
���W��vO�*���_Λ��п�L�*?���i���G�����g�/���K�?�5�V3�W�קR�M��	m�L��>wN��$`�V��1���t��Q��ۮ�H��$�‹ߑ8���8{�2ZN�yW���Rڼ�έ��U9?��x�����F�OT��8�f��~�-�)��Y�LcUK�	l��{^�������ư���N3([�)?f��)�z:[��utֳQ�q�M5�O�C�f����<vB�����Ó�U)%����ߌ�&R�f������{�����<�>�돽{�yl�1�a�Ӌ���*�Y��gusC�4�:����8�8I.i�|�Z4j\K�J.O�,���zV����v���u'����G_�����ꮷ䫿�g�oq֔5MiU�mV�̻���KwOn�n����te�~�F�]_Op�U��d/��5��>�$�so�-[�����B.)BKgF/֑y�m�v��զ�����{iۨ�V��BJO�8�m�]��iT��ԅ(�6�ŵ�c��jv��:�d����.AW}��U��w����3�����.�#������G�x~2- tvh :��W����oc�����[´~)&a��G'';�i''�Mo�Q����z��w&�^��)ХW��>ԟ��{�pR\&�-����_9�W�U�q���^�p�3������t�e��+���J������Zy�8���?�S�ӧEm�l��#���v
s�qZ�PZi�=|�ߵкi��gR��1^��&�
k˺}��d�N	�M�I,���KkG�t�VjYob8N!k�i[5gc(�'s�'�R�g���K�(�ժ�U��z��V���9��)>m��ϾO%y�����U�Ꜽ=	y\��#�t�����5Y�mS�2���������nD�t�i�+l����_��xk���Ѹ���;�;��|�M�/J�
��a��CF��2�v�V����k��I��gAquS�'�h�ݎ�I�,q�����ø�����3���ʶ�maZTd�*��z��\�Rk��m��aV�R�*��Y��4��g8�\e���O׵��PӃ���#N����V�&�Ko�ezF~a�z�]{z�!(��1)E(o�'K�n[^s��sK�oR����۱o���r��<\�yR�O
v�d�cwT��
|篳�gylF;=����ЍjW��(���C�ڢ�
+���/�*�|��&��s�����.~h�V��{��QU�c9%�����s�nR�y–�"�U���=�mizWg7�1�j�/y�����7R�ӝ�m�T��$�c_���\i�z�V�1����[Y�
�vo�c���G�FP����(���i���o�7��S�\[��j��>����;:\Z�L��5����v?s����8ӧ	Ns��c��|�Kŗ��
1i��p���n]��9�ߏ��A�c}SQ���d�ݺk��5�_���/Aa�-OGJa*d%��o�[Ro��k����^�$|��KL�kI%�<����2��aӍ�d��֯j\VV�;��7b�!������(Wn��k���7�����}/��2���Vf�K|�쨷ʍ�t�^�/i�~�^^]d.��^וk��s�R]�������~ik<M^T�J��D"�ms�I���MEnI�v�5��S��O���ٜ�#Xj,%�/-r�5��V�)Ө�T�~>U�x��B���j4�Z)��$��dm�bn�*�9U��N�r�|d�	s$���+:6twT��Ɣ7�V��FP�q��R����+u�Q�6Ҟ�.Km�9I<g%?ƌ]>JJ{s�n���u�X�x�K��ъ�*73T�v/�K�M#�9-I��[PdrT��N��r����h��#�:�:Ԯ���8������1ՂUC��G��=�FsÝ{==q>V�x��e'�m6�W�7ڼ;|�ݑ��R��>i�-�	������J�uhŻ9��4���s^�Q��N|:��Ny��FO��
�g�����޽��'wEm�%��X���ռ���5�*{}�<u5���m}\����T՘���F����Y橫�,�:�qd���22�-��M�
>�y��a����p�,�Z�![�j?i�^T����^�����ͼ>zq��"�m��7/[��G�W���'��¿�_�c�O������(����>�v ��C�_�ؿT$���KR���o�J_p�@^�N)vJ��Sg��g�.�/�b@+z��B�"��_}�ͮ~�?�1P��]e�ks�G�/����,2���/����j�[��G�֭���l<�ƿ�7+��1@��W��u�O��~��ľڕW��1�GRa�mԣ�/�~֡�?�tW�2_�a@9�k.̅viX�l'�o�ߪ�~逆��HÍj3�a/T�?eq��_����Rq��4b���9B�����>����_�T������R��ե?���6=շ�KZ�7������[	�����H���X�r�k����2<�"��7�?gힺu��[ѭ	���`@�	tgpP�j����Դ����si6�r�=�ۤ��N2�n��l�%5ɒ�lZ�ױ��i�N/)������D:���W�b��j�����֊��UQ���Qo�o���-�u
[���A�ҿ��B�4����
���r�ۤ�m;��N\��i'�x�5[gisp�
a��R�n)6���r��z.�Զ��
���¥9�J3�[4���^1���Ӻ��Ω�m宛�Tr�Ws��W��̢��[{�JT���l�@ܳ������,s�>��9��T��*��� p�_�/���K#��rq�+��\m�F�w�U}L��cM5ɭ��f�8=I����8{�>�mZ����^IBi�����x�~ղ�w�,��6�i���{g&�]�u8Ez!�Lm8���.�����y�uh=�V;6�SW@�:��ak�Z���+`2T�Tr���s^�*R����z���yw����oc���á��S�*Q�.��Z}E�Yw�zQ��yn�#P$����5qQB�KZ����Ro�3=?�8�yZ}G�x�/�;{���ܚ���=gO���G��Џ���������z�Yf���!���2�~
�>�U��咏���R�+ţc��mp[OΝַ��
_^yQ�]X�K��
�עU$���'�x��.��`l#�t1������J�R��vS��]�5�x������4���㲚��^�p'�qd��j>>�#ik�GM�n:����n�`����[|�d]��Ӻs�p�zoK���X�}%F��ҌiR��ǒ��~V�|�H�N�Q�*��t%�.�{�)��Թy���@��~����9�O������=��hR[x�r���շ�Q�O��.�?�-�%G|��MS��%;��>�t!���`�'j�Y:�|ߒؼ�b�1�u���	x���J�c�tJ\i�{��wmz��X��e%������la5�)E���?*�߻�����3���!���ܗ��d+X�]����;�?��E�����!�h~�O�����#g`�:j�捻�[��Ԍw��n��!�ZX�K��&��-��q,gv�vK&�RRv��rq��o�#/����?�C����"M}�ֿ�-���~|}�ֿ�-���~|�e���/Q�����Q�������!�h~�O�&��k_���d?>>�k_���d?>?Yt��yK�?U�O�j>�2���S��<��)�b$��mk�b�~L����mk�b�~L����.��O)z�궩�/�G�F_3C��X�����?�D��
��[�ɐ���q��8Q�����5�Yy��ƒ�t�O�u'��{m�������XѥS2{�3�燵JR�Z�#�l~�%��RZ5E=���Ϣ+�;��oe��V}��\W���|%�~��k�_s��9�����Zw����K_����G[�^����b�l}3)���׫%�8�gcV�M���,uT�/;����ԜW�����&��-e7�
���ڧNJq�b�eݺ���	~k��es+;�\G�Z~�,�#\��g����cmr��z�aqI�a8�/���4���暒M�%w��_�����-L7Zp�@�%C-�0�o.��{ڔ�{^�T���ڜ�6��e��}ON�U꧄�ٿj�)��>��d�贤�{wl}�� ��c/?R��*�hx�=�=e������ƭj� �j]=���{:�>h�Njld�Q����ipn���
�o��5΄��R���P��������
�[]CSWbj^�½�-�n�Q��'%����4�K���z}	W��,nߵ㨏XYT�k�ޓJO;�lY�)�S�2l}���J��w��������կ�V�B������z��f�����Z`����PEq;T<�zVV�7��9R�ݓ��9�y���[�����Ӛj��nk�ۿR[�^��^�;9u���R�N��KX�Lsg�{NO�D�pݒm�Mnؽ���Y�p2���r��{'�:�h��o椾
D����쑉�E�.��Z���R���|鮔�S\ϟ
p�P��'J���;Z�?1a*5�F���t��*E�Mx?*ee�89V2�֗�R���[�lע3�K�1
/�3�VJ��eZѽ�kY�K��r�Zx.)�|��;��p�8\�������׳�����B���U���O��J�Y�c�gi��������շ�{�L��Y�,�2ػ�]��U)���_��%�(Յ{z�)IN��'�i�'�ԡsIN��V�E�QjQ��L�o�f��n��R��i(I�4ve������/�7�8���%�6�u�4��}Z����,�5.�*�U'��_;V<��>k��TqWN�����e�4�b��n��m�^�2��N��z8zU(ѯ5QҕYN*[m��om��������5,*ݮx��]��|�S�?G4��d�&��-�Zv���r)<�Rj2i���2��۰����cy*���y�սx?#�p���
�Of�SJ���T|��6S�P���Z�����7{ziv9��5��/V�[n�f7iíi%Q`�֞��\JU���}m����\�q�o���*k��r��IB)Em��=�jCM��k^W7	�Ov1��{|

ޅk������˲��'�.f_��V��J5/��n��V[�k���.�[;+~f�֍�?��MA|H�3:�M`�G+F5c��0}u[���׻���+�hp�g^򠷬�P�rm�,6YT�����)�3��~tΏ��KwOAʵD�[��z��o�dc|P��qv5t�6����:+8��)��$��%ړ�ɾ7������v�~��(K��=�i/Fܡ�J+�JS��99JM�R�ݶ�[~,��?�ze��.�(��8�LT^Ơ�6�����W5��Z�Uu|��{���}m.�,n�^�Ut�К�Nk�d�� {�Rt��Sxi��ޚښ�h��k�:c=o�0��j	EՎ�a��u)G�}���ʔ�����W��7�u)'ثEs��֢�;�N��A�}7�U�T���7��.��c�N��W2��o]�ո	�^��/���71S_9j_8k�[7�l�W�U���J|./��V�7T��%$��a�9|����E�}+�<{-�ۛ�˫�e.T��g�0�|oc�[W\K��ʜ=3��ȶ�g9ڃ/[u�M?
pK���[�����V��U_��Đ$��l��E,��To��/����mK���S��sc�^�+�[�=�G�NB����U�I�*E����0�aR�F�z�V�H�c$��}
�.T��NN�(��ƎB�?���{���xU]_/o����մ%�o-�I�=��]�l�m�mo!�kq
�ǥ�^���-�S�I�2��]��X�V��V��Ւ�]-��[K��o��z����1r���ܨ��5c=�{3�)U�Z*t���Ji������2X`rH��� �8���)�<:���UkO��J<���U�N0^��R�YAz����2�
>�_uy�_\���W������TX���N���ܕ�ދ�N俕�t�#�w?�Ӧ��g�%bC����/�v�4�V���m���2w��_��He	Μ�V��	�Jq�^�2Ot�]�>{������M���8�d-�e,i��{�wt#_�]1�N�T�~�}�+��x�i������'V��s�*X�OsJ���):5�c|�s��H������+�~|~�<B�_�o��$��t��G������O��#�x�����i��_�-@^�����b3��<B�_�o����W������1���'����p����H��?�8~���
?�k������#?��/����q������+�~|�x}��i����>�?�4������?�����?@^�����b3��<B�_�o��<YMO��!m�Թ|�s�y}V�c=��Jri=�[�Y)~�<�?����+N<i�	�t�6�+��d*d��a�wST<�V����˭C�ݻs�lZj���J�o{�Io���Z�F���*�.c$��6��ї���}��g?�sQ+N��^��Ik���x���_��Jӽ��ף��Z���+,��:ݒ�D����(���2�'�x�M);8�������.�Cf���/��U�N
ac.�u�`�^���KPÚ�/kE}�zY�����4d�aB��o�8�I�����#�<�Uk��hӕJ�-kF1��ɸ4�^S�?��W�uvӗc�3\6�����D��m�e�����E��1��p�Q&��4�'���KKj}1i��4�C+��YQWt7QF��q߷fђ���M:�a4�V��u3pŵzz�)NKzk�_:E�1������ɘwy�|=9~gaK�k�eN$T~����j���/�}M������E}jGt�5���Z�yS��j|��f)��6Ƈѭ�K�m���
�`�S[Շ���9ʒF��f�j��Jwu+�Z:�RT�J]qO趋I�G�-�E1�]S��a����m�T�R��]9���]��������ҧ�R�����Uǔ�Y���vHU-cS�oج�9Ǚ�~�ڗ�S��?:?q]K�)��꟝3�{G~�y�ZC�^�߿^~֑W���\���N־�)�Yp�Zc'�1����O�ЯZ�K��Y`��f�~�����I�w�?�����;�����������m>���GT�5����yj�yE>�#��q6���i�q�HJ��
�S�i��[���o��2�	�״w﷟��e�܅�V��%h���ӍZnQ���x���Jzm�jU}��[>�<��x�WwJ�	:���g�9K%A���(ɺ�M�GnIt��翠�n�x�s�ki�
���H��8���Y*����*�����%�*K�����h�߯?kH��~�sR�֭*rO�k�(��k
Ofߋy�B��`�(&��w������H�)G!��ք�a����c�C�\ԋ�'�^�S�a��h�߯?kH~��;�����!7\?��~���.y\�O�I���)�B�T0��[R��c>���G�-�E1�]S�a��h�߯?kH~��;�����5�T~U�����S�ӵ�����a������}uOΘ�{�ә�2�����e�*Aﴢ�W'�2A`5?R���J������H8>���������Y!��H�����Zވ�(a���(ɵҗ6SFƗ�]׻�=�7>�4�^��s�c{_{o��{U������$ō����w�+�Q�匒k푀�8O�w�:�=�eVv;ݓ��d��gߐ�ˡ�\�2
H���Cc񌼈���ºޞ;��Fd;LC�g2�3-Ҥ��Wu���P�#�����i�Tkxӏ9?��&3}��^�����S|��v����9Ԝ�T��9��)=�g��]��S�5R��	��E�׺t9�
QuCjw���r��d�����U{Z�q~N��x�������W�ٮR���0�+�Wִ�|��}������c��SOMbUK^�ys/5C�n���ͯ���L\W�w^wWu�Z�G��T}Ro�X_�W�bkstүB��i?��ε����n����o��QQ�Fئ�w�g�acnr'[S�d��|R�_~0}-�׳��ݝyЯM���L���Ӣ5,�.V��Wv��W
+d��Ix&�]�I?��K-Y���*0^G$�����z�c����p��߳��ʏFT[R�CX�zS����[S�f�I|Q�k�>�Ŏ;$c�w����+Ukes����;:��d���*tuN��m�]�����QM/�����zESN���ǃh�:�7KS����Ԩ,~��M����JĚ��j�_`��6w��nl�
� �a^��m.I7�F^��M����J���ڿ��Uu�����	ӧ:��:�JsP���k^��T��Q�EfIE��Oa�8b�:�=zu�ɋrM�.Lr����/�
���_c�?P?���$��9���%�仯���9���%�仯�͟�Z�o���j����j�.�3�=�����[�V�UZ��J�DWl�i�R�x��^&	%(���O��}�*��t�~��ͺꝽJS�[��*%)G���O����ݟ
�]}A�|�#1-�U�ۦ��^-����El�j��|M(��=����Ooz�8/xV2��.��\�M�ƶ>LJ�D���
��L~�|FaW��W�Vtgì�98�
1�[OnRRٯJ����E�O��?�Y~x��2���h�ȷ�n��Կ_�1��
��L~�|F]��qS����_��?����e����o�G��>}�R�YT�zc�+�	%ؒ2�܋��������ȸ��\�k/��[?�X�
���� {�x���_��Jӽ��ף��Z���-��gQ�m��Ը;�]z�iV�N�D�1Iu%��Z�
����ף��Z���"Z|�>!�(��KwdI��	S�1��N;Ι��R��T}�NO�&��=�m��0i�ZWu}�]U��شG��w�ᖗ�N.5(��D�*J
r�t��oP���՚锽,�m7Fʍ7�F>����u-����e�*�g�Jo�c�1�%�t�>VI�t����%?�;"��;�J��9�a�+���J(�Iy���2�?t�e�����~�~����G�]v�I��%#&S���SW��l���W�n/nkӶ��Z����rmxzN���-n��:m	Uq����1�3�C8v⍼�:�Q�[�Y��2�ɵ��[O�+�ܛY�5��������.(�W�������,|L4��M����~�_p~������������?IY�>&H���a���**oܛY�5�����pi��f��c�#ֶ��J���JJ;=���>Jp毢jWU5iҌ������/8]�J!��qF
��i�>���g��_�`c��xw��+�����wM�κ�{S�_-���'�M����~�_pƼS�\Gu��סeVP�Z�5���Mm��mg�Z�ڜeQ&��z�4��M����~�_p~������
�.(�W���%g�X��h3/ܛY�5�����ɵ��[O�+��.(�W��~���,|L��ދ�W[�S�_�������x������N��R�ПZ�{m��0>5|V?���3�Zֲ�]oms	�QM5��*{#v�Mfs��|�B+���bO�7�����F�W��/�D����u5�-�N�O�U!�Y�~U�;^/�k��В�"�Y�.ƧRσE�;�c�������eKh��{��eG�)����t&�d�T'���
�ݝ͍gBꛌ����?���J���A?n�ݾ��_�紬gcr[)Փ����i���F��(P�A(�/~�8�E���x��۩8n��Ԋ�Ӛ���M�����K��*u�U�?f��XIyys^��y�lC8���8�q�VN�T�ʎWB�{:Ʒg}7Y����(���h��Z/R��F�,]kzm�U�`��+˳�I��Zi�],e�rQ�U*Il�M����I#�;/�/)V��J�c�,l\�Kb�K��>6
KY��%	%���} Lʂ��]�[���i�W}J�R�TjoJDŽ�ԑؾ��Yj\CO�c�m���kW��FqqmzV��Q�,�&�����!�y���i]yg	l��=�^����7j������W��x��Ӻ��[&��c����X���N���ܕ�ދ�N俕�t�#�wF�t��-��}�X���S��������R~^���
�?�m���&N�O�~��щA���~���y�?�S��MHQ贻�����c��Z�[MT�^�G
���c%�2Ip��E��C�'�jB;S�Ѣ�*m�Z�q��Et����O���~���п�-�(r+DZ���:v�s����˵=ϵ{�Y8�Ȏ~�m?k��"8-�����_����ס���Eꅟߟ����u������������#�߫�O��8A�?G��}z~����}�P����?]o��<�d�"8-�����_��������s���^�����>��?�?/P�u����
�:�Jk��-%�������z�)�qQ�ҥ��$�$��E���^��Ik��;�)=���p�nj2�{[�Og�|�Ͻ{O��}�K]�M�Vhְ��*[��EImߺ>��\����N�I���ݾ^��9])��j�S����)}F�M-���I{�S~���t�,���ַ��������e�5�4��TL5+�eiR��[;^��V�f��)ۭ���[_��%�#ABQ�V�%�/���S�)��*��7oi)-�E�*��q�O׶���:N��� ��4��m�ӝYr)��2�s�[��QZ���%*:WMT��7�<�K��\��e���ܫ��z��9����6�JJR�Ly�|����Jr��܎�Ɨ%x&^[��e�%��,��q�	/5����j��u�]�%-�>W��}S�����o�z�;m������W�,��	O��'^���
ה�v�����:]���X��H籼X�N*JV��!4�v�Q�_��'��:�\Z�+�J2�Y�	�_R�}��Y1��]�E��<��#Mrs����O>�����㞀�҅��R�]M���"�n����տ���08{Yjnf�����"��D��Y�2���F�"�Q�d���Mn��;&eH1^(�x�?�?�eF7�j.�D��o�S�e��r��Ў�F��$mX�M�6���>���t~8�_�����?t�e�����?��W����ƪqEQ�:5s��:rp��u94�k�L���(��;�����gs~g��Ѷ�cNu��)5�5�@�}6��)���cwYz��z�~��U?:?t��?K�(ߔn�� �o\A�����^~�Z��yz���K���J������_�T��@�w���?�����կޗ����t��?K�2+�l���:��
�U)�&���20���?ކ�
�%�����q��{k�p��%�R�\��2{0Tj�M>�gM������1���)������)и�Ҝ9��I�ŷcG��K���J��Ҩ�g��_�`c�)	׾u�V�scJ�'U'ڞZ��Yķ��X�p��j0�)K-'�һ��K���J������_�T��@�w�*������?�߫V�z^^�����?�/Ҫ~t~�z�~��U?:P;�(�G�z���|'�q��k����$�#5����w�
n�\S^��\��O��+�?�I_���������+�?�IߘZ�]o��-F�Ju}��Y�nRݜ�l�+t�1�եJ;�)y"�Q&��6�յ�ݖ?�L���\���ܩ�t{��βq�֛�Ŷ	?͕��ō^�Qr����ͭ��'F�jA�?J�����
珫�#��G����?t�yZ�{i���3�/$������ѥ^�jP��-��]i|um�A��_�����`D�Ζ���Н*��>�|O��q�����mj���/o���i�4�
��o��o���l�YUi��J���'m�����%�0]O�{ �Zc�o�֖�.ȯu�2�]=���^c�M|�W��v|�"�I$�K� �JѦ�L�O=%��<����c�*��R�$�H�;�p�X�����_��Y.��+�mJ��J+��,!�%9�j];�՘�9����Y
2�Z�g�$�$��?�,t��i�Q��nk�=��֊�cN��i*~���}L�P9�w�s=�z[3*�ﮅ~��uA��V>��k�JK���N�+AT����1V���Ө�$��Y��}C{��&3S㢧q����`�ʢ\����t��C[h�'�=�������O��β��E�Νjo}��=��M�f����tk+�'J�y*���5�ٕ��OU�˕ɜw>�g����uښ;�9<�KzݷvV���+i��@��0�(�t~�����G������~P����w=�?���_��/�����������W��O��@����(�t~�����G������~P����w=�?���_��V�K����}��U����?�?�|��?�����C�?&Q��>n�G�ߔ+�||��~��(W���U�����a��k�g��������2��G��P�ɔ:@O������
��7sߣ�o��>?UnĿ�X~���_��>�s����~L������F�eΐ��{�-�B������[�Ϗ�[��/�_�����W��O��sGp�O�̕ņl���F�[o~�tⷔ�)�����k�Z�eZ�N�Q�mBO�+x.�q���{r�L�+֭u[�u�\UKeR�IT�^�6��o�ht�J��˛ٝ�<���]k�*jэÑ�����l�I�{{�ˊ6vV󸹸�4h�o*�$�c�����{�BP�·�i��N�kڱ�s>u%�I�+�b�7��
eyu'筿��uS�R�d�8��Թ��'�J7�Z��QY�{#�_����}D��4�oI�U_�#�~�B� M@�j
I���ڙl�F���>]s|�/�+����6pG�n�x�R�k%q�l�-�S�v	���[�+�_�ֹIe��W��J;ƕ�����~-��~bZp�v��T����������o��t:���*|4��_g�wib���өa���d���f������S^���]�IZ�k�󺹭R�j���Z�r�ߕ��~�Z��!Ը����*����+�b�/�Om,�YC�B8�׽��Jm
&�kt��4g5���)�r.��_;��E���7�-zS$g���5ꍝ9<~W�yXג�[v�r�/V�ʑ��9ӜjӜ�8IN���d�k�kʉ�|�ոjQ���:a'�+��ٶ=E>��[j	���z���?	��*�(i�yu9mN�'=���Q���c��|��vs���É�݌��b��_4���{��������β�}���L��Y<�����ڭ�Z��t��0��:>��O����g���JKz"��e�n��j�c��|�?��������H����BΦ�wVη֧)E�ŵ��2�:��H�i?~�~����G���W��j]v�I��%#&S���SW��l��O�R�M_㳳��V��F$K�>�^��g�u���z'���!��TGBE��C
����Q��@��^�G��F����9�
o����S����??����R�1G��W����"���/�^�l����ދ�W[�S�_���������ދ�W[�S�_�������qO��N�ҙ��[����@X�p-���6�\��*�iЋ���?㢧/��3GX��ƥҕ�=ox����$��{�
�
J]�\��_�G�5�����i{ٕ�0�W��nyֲ�&�Tv�q���>{�5kR~�u/�����i���yN~����nx���-߽UD�a4����V����u��t����n�,c�Rޅo٨S��E0
��L"�9XR_R�~�橥�S{�5��MG�;�b��iv�2����_�<�4�u��7�T���N?�����>ә���c/������xl�;q�_�g���?!�ar��K�y����t*��M��?
��������K�;��/�7K���TWl��:��K����
oԷ>�������/U9}��=1���q��6���/>�	�\������K��8�UE��h�<��U���r�ƒ!����\�_SK��OHٯ�n���ҿ�cOL�!��UR_��M,F.��v7�&�P/��i�3�K��������pi|�w
t鮚p�W�-��KMe�?j�*K��}��e-!7��/D!�-���"���R�R5+?Û��[�+;_�{ZT�1�O�>��	��S���s��^˪�:��&�:sۛ�-�k�e%��3���ܵ�;cR�!eS�סS�/���(��Iri����x7��62�(��� ՖB0ݥ���/��߇j|��=����{���':�](��-E}&�eU������}
A�s:�F�M	��Tceit��9'�J�GJ}��ʻO���X���=�¥9қ�E������鴓�i%ͷ��f�G�7�P�,�N�JfƦ�U��wS]�)���|�s|�w}��ts���su8�+߯%?S~57�D��'��cm��{*6vV��*(Ǧ��H�k�CX�kW��/���v�S��I]]�Sޓ�/���ͯ�kkmcmF�΅:���J�*qQ�8Em�.I$�H��c��1$�����\�~���d.z��ڷ���\�/�~��ѐg���7���e���K*N�Yx�^-��^-�C}g��z�P�j�q�_b���oE7�Mz�ݿ�1��>3\-d��?�MD�?ʷ9�DWK۹<��zW������������<��OP�.3Y���^]K��I|�K�)rIrH�uJ�Z��J�Y9JO-�����dx�A(�a <@�kf�L���
�j��mUt�JmR��ԗ8��Л}��
�O��I��}ÜEy�7ѽ�}R�D�ҟ��Oj�Ν��-B��Uv>����i<�Wp3�S�8i`�7�g�9?j�dj�d�ї�g�ŢwF���w��0��O�>��?���֥�iP��}������FҼ��҆ЭkY��J;��]K�QZ;V`���x���RTd�v�y�kg�l�u)ԣRtj�¥98N2\�$�i����<9-'_�#M~��r��k
k��{'|?v��'�;�=��_�����?t�e����S��zKǸ�L��O�R�M_�M�1�'����9��l��������щᏯW�zY�]p�%�}�β��u��_��/��E��C
����Q���K�$^��0�1��Tg��?�ן�Q���&��?�~���g��_�`cM��Ek���_
�����\>�|f(��������]�����Ў��\>�|c�D�28m���}��\>�|`w���������+�?�I_ZzE�[��Ɋq���C���پ)��Qi�C�S"6�s�����.=�LU\�^�G~�������^�S~�%hҧB�(т�)�F1]�%�EY��:�R�S\�b����/��H�E�v��KJ�%�VX�����G�*]� �Et�\*1�K����:i>Mnv>r�B_
��(�;|+:�Mp�x�l�q�ߥG����?��[�b=���x���?��?�
~�� 8���0���:���2��K���c���01�a�r�X:��R�O�����i�5��.�u��h��f:=���~���Y���Q^�h�F�(�p^���8]Y��޷�T�j�M�Y�QS[J��'	�j^X�ȿ�n�z�NήGCU����f��Kȗ(�^��~%�-4�b�L��c��~N��T�z-���mK�Kc����ٯF���[+�m�h˦��p�M�%l׺�ɰ}Y���h*�NY�:ЫR5�����q�֤���r��ue�=��ԕ�=��I�iz܉��Y�X����[|Q����
�v�����Ⱥw/�g��cC������r�cV1K뙌��C��2q��줚�*5W�	�eUf����࡫���x�/��Ʉ.�x�9(LJY�ߖ�/���l;��!����o��W��:�r���̪�yz�ӯ*<F���e�+�^�.�z��P���،e)sq��K������|l��u�i�S��[]j�l���^eK�F	A�D��˞%����>[��"�ׅ�+��C�����T�W�ۿzi,�L�jWK�ޗ�՗��[�y$�{���1R�g[֣��Sjp�Pjʄ���eΫ^Y��E>e�igi���gckF�ތziҥAyW$�G؈�<Muz�:?z�����i2�8R�Ū��i5Ϲv/^{�Il���荒��p��c�4�MG�1�ėV�WP���&�~�+��z^bw���C3Q'���];�]^����n����4�.���y�w������=�g�k�-�.�{��o
3�m-��\�Ԫ��N���y]j�<Z��J�YOBO~�}(Z����?�V�)W��=�/�g�P�q��G�|�������&��G����J����*��Ɯ�ɤq�k�5M�Ů����k_١gw
���ݨ���_��/���o,�7��QC߷~v��mEU�齓{'��S���!�X�MŽ'^�v�'�6�
o���3r���ZT�:�qYܱ�m�V�[V��(�2imo8};��(C���uV����s#�n�t�-�[���䗳\��N*���R�j��m�d�m�#�!*�P��{
#�n��G-KC�V�V�8׽�|�p���B/\��Jd�^^]�o.27�][����Zo�I�'��t��uʼE�U�*��W4VȮ忭�,XZF��4#ѿ��pF�R�a�䣿��t�S]��������"�q
���թe��>���4�%�
[���'�]�7��:N�y�������.���K~�'�ssJқ�Y�/��_ҧR�X�Ч:�g�4���R�%͜�=�����NzQkt�g��MnK�5��֐�Vz{og����T��oړ���]�l��)M�N�����'��n,|�Q�����+���{�+�����)�Е)?rIny�Ӑ�c�����Xм���W���R(^)��jڋBR�*��q�m�Q�����>���?�#�M�H�+�>���v��M.t�T�ӌ>�oXq-��u��os�W���)M&��0bBJr�[R_�Ae�����u:�=�Ui�S�����~��el���L�6��k{F�K�-�G�^R�F���.�F�U�x�{��7������?�c�A�R��%��m��_����"�Ob��WQ[c������@d����x���vt���e�p��
�|/T������cl����^r��'�^F��?��p�.0��i�¨�*r��[��՗S�B7���XWUV��u}��1��IBq�쌓~�9=M�ot�Z�.�9(�Tj�M�R_i�������.�ku��M=��k
lh����S��d��qF�;�z��J�T�8�Ԣ�飿5K���i�k:J��V�ޚ{�R��"��=������~۩�N���e*q���cn'g�Y�6v�7�2�5V;��~j��Q�����#g����~۩�G����~۩�O_�M�?ǧ�Q��W�����'���j��Q��6}�����t}�����t��7����G��_��$�����~��$����/��è?G�_��}�è?G�_��}���Gu�������W����Mӥ&��ŷ��G����~���|:��%�n��|:��%�n��>��5���z~���W�����'���j��Q��6}�����t}�����t��7����O��5����~j��Q�����#g����~۩�G����~۩�G�}��O��T~��*�~�JF1��1IzLq��mMmJ�H�t,��?����~��~�1/�A�=���S��u'*�')JOyJOvߕ�ǟ6hqv��kYṢ&�(��m�(�����M�%c_�Ny�����~Onw��[�lc���T�d#��~��g���g�ޜǼ�B�NF�+�/��>�[����x����e�F�
Q�%R\����.��o�w��Ob]~�ex�e�o���Mjj�+~��o��XyhQ�mJ4h�F1I$�$�I.đ�e'6�-�S�:�y�[/ �.�v�י̎��y�A�����:½�
-6�8A��\��isi2�x�ĽO���+V�UΕ�{Q���=)�^�"�xn��U�׺6�lEY:�*Q�e&�֦�e&��?8��e�2����UЯʓ�d�}�wg����!�[iyV��o7Ȋ|����o��̶�f��W5_���茝�;�����U��V������/�Y����NOڌe;���"��3�^9��Wt��M5q?�kM�<mI?����οir�&
*��S�j5#R��E4��E����Z}od�����ؚ�X�*�
KԨ�YJR����X}�Z}>e���g�3���D����'�Au���p᎘jxm��V<�j�z��IS�_)��>�'q���~�������2��,-6ң����ȯ��S+��F�T^km,�x���[�4וB>���i���
QZ��\��&�m�
���:��#�u%]k�,�~Ѻ��T,�_��E%�J1~��Di�:?Ha����T����9�+�^캟�I����Ѳ�)a��?6�q�?���^��r��W�o��$���5�%i���n�M���u�$�iQI��s��A���%�i�o��,h���F�)��1��
I��7YA�U\a��e����h*��otr�7y��L2H,�pc!�!�Z�["�Q���M=���%�9���I�k�VZ�W��B��K����B�{?��O�$L�l�vP��
Vֶ��!�aJ�V�yI|�X�i�8�sԵ��w)K{����c;V[�RL���R�C�˧�z������+J0�i�+yǶ���Z^���O�9ˋ[K�N�ݽ*���
�R��8��9���a��+u)8+�MJ���EI5�]^<�.Ë|I��+�:���w����q��[���<3�Uv�\��cp�9�'�R��ތ��Çu��j�JO������Z�GjJ.0v��y��KhmBo�:K�ޘ�}�l�Zw1�2��y�GB�>��R/�p=�'�Of�$�	��m�;Z�7����6pU+Q�ۧV��y�{�Kv�O}�\��^=��GV���_4pp��9��t:�~��izb�������Gz����N_
š_Y8�Mm�[���}7S���m7��q��>���(� r}�pu�����:�Rc�嬥	��T�4�t��9��R~�&�'a��[b1vѡiiJ4hӏdb�/[��#v�*W:���Sv�ʒ���S��R�K��y{�s�9�VV�f]�ue}KҺ�;���G��v�̟-�~M5�.ח��A��������'���񕽿���{�icBN�[�[yۉ.O���!��.om�K�������wWw�u뷻�R�r�~^��>	(���䁅5�$Ը��W7����LWB��9񗽲[gcBƚ�F=�/�����~3k
uN7����ҩiuU�J?��-��n>�)�y�n��Z�1
���5V��v�Mx4�Mx4��݃+qq��a*Iʕ��:��Z/�/F��ə?�O^�PZ-����7Sm��g	��KI��ƶcq�M2���]%�&����x�W�v�4t��W��*�?5�ӄVѧY5�`��2_T��+�Jw���[Fc�W����1��3�4�ƣ������ih�E^��OK�r�Z]��̮�a)�Y^�˸M�zo�Xk�O��z�ʿ=��[���Rp�☈r�W]98�>�Z���D��ښm�+�_Z��%���ڻ�*�^��Kt�^$�]�g�ɬ����_ZQ�Ixu�K�N@�%��N5`�]�&��1��'��y��N�V�ݝ}��R�v��ӟ��5�)W�����[�5�>k��	E����6p�Gc5m���^j�~b�+yS~OL|��>f"���ҟ�!�����Q-ѓ�v[0�{�j��*�`���9�z������a���'��R<�V+�/��ڼN0��Ɵ^v�Pp�����_nt��Na8Պ�SX��Kv~�	Ԝiӄ�9��+v��Ix���\/���f�5ꭧB��P~��~H�/|���8CR��ia�c�7�`�����6e�;��64�u_b�ns��.N����Z�vv�\ג����W��-0����>�u�O�N]2~��%��[�׷�/���;�2�Fj�ԧN�9R��N2���ښ�G�C�>�2�����t�����'����:��%�o���_&�C��~�j��Mey���<}�Yr��|�M��M�?�|��emխ��[;��Я	R�J�T�R[J2O�M6�d1��xk�y�-���N�R{��T�e���R���7�5
:���[�e��������մ����=;�~z>Ϻ���������T�F��?��S��6���}[??U�t�Ji��+�ߏ�V�<�׭��Ǝ&���c}���'��	?�:{���~�<��S�z�2w1�覼�$�S��B���Z��NҲ��s����Fq�s_^�_H�yA���R{1�R�eK�--M�L
���v�ɼ�~[�
	8o��"t�8�>�Y�gZ�;���[KǢ��ס�p_�H���}"��[����(��6�FӕG�m����?#���2qJ�W�G�u��k!:>�4���L�B�x��Z���{���0�κ���k��~P��%|'��ʽ':�N���%
s�[�$�K�T�����}��?��ڶ��'V�+yI>�T�O㌚�J3�Y�8>"[���P�����T�%Q�:�J��[Vi�m[��:v�n��J�^۸K�3��i$�ò/b�	�eh�W���c��i�ڡ�µ_������-�r��y�I[�[�����	���_j�x='\+P�mRTkE�Qm4�kzh��Q�T����ĭ?Z�Oz�^��_=
��d�ǿ��{woJ�έ�x�S�NT漱i��������=so*x�5d��i'(���.~2kn�]�A�4����f�>�е�h/��%�M{��;'�ޮ��5���&������ooD��Ͽ�l���B��Iw������Ќ|�/��B=�>�$vu�������,m*��i�ֶ���iƢ�!"B�;=Y�2�~�^v��J��e�c���Q�
q��FF�-���B⌼�[�W�^Fɕ���3]i�|�6J.k��V�Y/j��^�4�N�|��-u*㇮^߉���5�c�/ɧ��q-�J0�������BꐫJ��W�*Ui�¥9��	'��^
4�$��a���g�T��j��)ź/襷8��{��>ҡ��n)Ҭ�COQ��U)�Q�~�jJ_!��ߗz�u*T�J�<�2�r���Yq|���}g�Y�SR��_Jo��W��ߦn1:F�=wNT盯�b��Ц�a/u���i�����p�idu��	Q�RX�Y9y�EJ�.^X�s�/��^�a:��Q�����)=�N�8��$���Zp%�r��Z>��-B/ڶ�[~�p����(u�b��?�[>VZ�[����S��rԨ��>u�n��߁J�O��"GS,�v���շ�jq��{X�\���S^M�?&�x��x�[������<�X�_:��{�Z�"��%eg
S���k����t�fK��J�~���·�N����f�{�F�0�)�%��B�;��]�r��S��16�ʩ}�zX���-���,�a����	��j~T�S��|)�b��}yE�ͥ��5�_ֹ�<K��-�=�ib���b5#�5��%����h��ԫ�?ټ���~N�-4�qi���>�Ή�t>�ԽU2J
�Q}=��/u2��ps9f�W
wG!O~T�*�/��5�:�ğ'8�D��g�����\��rD��^���7�}{�}x+�{28|�"}Lmͣ�d��q��K����|�3W��kQү-�I���Oȸ��5ʋ���~�S�^��B��ԗ%E�O�\̣�M]�q��{Ɠ�Iv�?[�_"-t�R֪{-:���x�x��h�qJ�r��.������%���1v��Oi�T�iC�_�n�C�9ƾ^��u�>���)�B��נΩQ�B�hХ
t�cE%�Iv���E��J7CS��pi�9}X�r�Z#׼GN	��e��ߑ�i��cs�w��i\ԏ�ߵB?:�_O��v?I�,t;X�iԕ:q�Kͽ��o�E+שs7R����L�+��\�2�t���ʍzc��}���������EI8�jd�O�.�y�uV�Nd&�eu?iғ��z��ߦ_<��3	��5������[��6T�ԫ�~b�S�o矴���繰}A��j�5�=cN����Z��$�}���MsM&��9c��f-��
�Z���Lл�wԧ�ʴc.�JQ������ٻ��'�WP�G�\�8-��.���0�g9�5~��[�Ǧ�ͬ��W׷ꬶ�ֶ�b����Z�M�-#^�m��[�Q?T�׸����W�*�eV{���y2
1��0���X��:}�1�M��x��)Ml�N�Orr�_$��E>�e��m�g�d-����<�i�|�utZ5��T_ڋ^�J8R�����CL��ZI�J��B���R���8=�'�i�4�d���5�=c��,�$�i���[/;
�-��2��g
�D����J��[Y��\�{u%��SߗVݲ���%��8-)��/��go�M{SE)>r������D���=IIB�k2M���V�a�ߵ$���k�I���f��_��Ϟn���Qi-7�-�i�������<�=�yzd��}ƌrÂ</���ꖔ�Vp{�7�ׂ�I�������N��՝�sR��׏'B2uj��'%���k��oRJ��e*�U��l��)�5�VWy�%n�/��ܗnr�!�
IR�>OW+n�<n��ٽ�J�x-�E|�$E�3qR������N0�*9�m4�s^q���QO�6�jJN�8��o��+[�yrUm�Ƥw�n�'�0>&p[�iU��K���W�v�p����w�5�/J�Vq���k�3��ԏ%�V��[R����f���Y[�Ƌqmeuʻ��C�������U�%����.1YKY�^ZTt�R�ld�F�&���Mf�[��u)Δ�:��'��ƚޚ2JjK+pm%�{$]�����Z��0���][{�ns�����n�nғR[�[>|�xAo{}o��J�v����f�{cZi���?��}�t�y�A��ʹ|�B���.R�Q���.r��Kv��?/U�8k��GMG�T�[�S�Ɠ_����[�$CY�rvV��gcx��d�{y�n�Ȃ=��
�go��hQ[�s~��/J��}�?R0��׊���u<`��66�/�
������Ut����L#����=Ȫ��7�cʖ#��&Kb��V��Z�Zs3FVT��\S^i�M=Լ�K�hKh��}���GY��F9��
��{޷��}Οt�t?�ƿ��\%ۍ�(�^β�K��c_�׻�ܷ�N�Y�p�(���˧7ٵ�.t�O�-s���*+���˿��gS!���>��[k��F�g	y}�Ė�S�f7��W��;lݴ�n�ۯn~j�ݰ~^ؾk�8�wiuaw^��t.m�J�jS^�'�O�:��\u�7J|�3�"x����zڶe)�������Kz����3�6�.�JK�)�Z���00��ΕZ���NK�fvp�7�O
��:ggaB���F�R�w9��:���-����#~LGyQU��Qtɿ6���B����i��8[���/{�?d��:~nOݎ���y�Y�1�^Q�E�(�^���rS�R��95��0��h��zV�T=�e����cJ����/Uh~p�A��k�T�]�ǢIkT���V^?���pwISi�y
��\%�T�J׆�*ѩGJ���j����&��d����|�6�����<�Q������Ճ�g���Ұ��m�i��G�KJ�:0T�EF+rI$�I/M���9�(~��&�a5=(|	԰�/D�]?�5>2�1�#�o���S�wh��f��^��?
�~���i\��l��'���/5�XiWJ��W�8}�c������T�4�;�{�ʒ�۪q���F*R�7�\�.N-l��O�\=ٰл�YL�H),u�)So�gZO���Ӓ�fu?��k6�|����~j˗�k��:����g]oKgn������t�����,��t��o�M���m�����nt����������2�u��J��乷���+W�ښ���L��WN�#km%��e�Խ1NR^�$��b�.H�58���J���?gʎd㱨}X�8ݜ<�n]/1Nӣu)^\|X{3Ͻ�Ͽ��-�k��/�:񼛜��ԙ�'��[Odj��-��𪾆q��?sg̕�1�5�pn�4�o��q�{l��k����-�ަ�Q�ۃ:����.Q�V�*�q�J5�~�N��L����tJ��I�oVJ.-싓IIs<��oOnԙG�i��m�Q/�+)��n�-^����Š��5F��J�Vٽ����M?�r�"������֘��]v����J���⟣���L}�_w���U������\_��{�.
V8��N���8����w��?��|I����egq��nT�.��$�98���6��iUa��Q��-�.K��<U��F��h[Zҕj�%�En߸�x�������Jt�h�F�ѾTi�Z�d����y�Lv���P����q�Qyh�]r^���3ߜIZwQ��K┧�“�������/a�w�_�]Io�~H"KA���2z'o��^N��]t���ʚ�\�|�<`�J��N5iI�E�5���4ϒ��q��d��ַ���b�9F�p��wA=��x�ԗ����^;�yMN���[�R��VW�x�Qn�ߥ�8��08�����:��e-H�u'��d��"��&9�g�S�9]���J���Y��vb5�p<�\,քe���),竔���}��XQ��m~,�c��zs��6��`�:�qw	V_�`��~�-{��ð�;�iWZ�%�ni�go������iU��%��0Oh�]����������L5K�gi:�8��{ۨ�K���)�Ǎ--�'���ӏ�9\A��\����Z���8-��Aå|�v���47W�t�-�:���~���J=�l�ޘ��]�N�ם����x��?W6��-��1��\��#+m+{�:��jo�d���5�O�4ΰ�y����}2N�ی��2i�㹥���no��Z-�-V���.8M>��ϭu�~����؊xL͖.�
w�R��R3r��I�NKoi�x#�ږ�y��M�GRxK/~�-݅�zV��tb���'0>�Wuq����>vֵ:�.�IIo��z��NJqxkj�[Pi5�[?d���
���jp�_���I[^�b�y���B���U�R��ImQ{+n[�%~	4�ۈjU�i^M�9����$�>��J����.
���w�n�2�y��A�Uc�>�Ǻ���)������9o�V�m�b@W��֩q+�ʎu%���xX]��ܣF��:K]
C�9}'��;?m��t��\�*����M��������3��x}q���⮱�%F�Kz����g��Z�g�*�]i�I�iV򴲸�)�-�c+|^��y�Z���j�X'%�yϾ>��'{m��Pu���B�
k�'�_u�7&����7L�i�F��)mR�߲U|�?vM����éҏ����T�p��N��/f?��$��Ͽ)�VZ]��k��e�C����K���.��*�jo��~ON@��`Wƾ}�Y}��(%��������K�C�5ϥ�\_jj�^���k�S���a/�}
=���lٴ��eYV���>���(��:��'�(�l��٦�cO��^�-V��M+N���U�6�N�oOdjy%��F˛[�+��W��m�(MӫF�g	.����~*�+��tnVi��4�I{��b�VV�&iڕJ�.�Ʒ���9�����`��
��̚��h�:��K��S_�b��Dׇ%��p���=wZ�[-�X�;�j]��^H�9�x-�J<n6�aC���mkmN�*q�0��Fa�y�R��P[c���m}��n_[�k��m���g����v�jT�P�
4iƝ:qQ�"��R[$��[�ɤ�� ;����ݭ��[�ۚV��!*�kU��)�+w)I�I.m���w���Vv�L�eA�ʶ7:�S��sqS^���
]��t]GXn6%S�)�v��x��0>�Æ|Tr����k�p�aqNV�P����'(�Gu�s3��e�����W:}gowM�kz�i�?N���X���:k�4<��7g��zh�ъ�xFk��}���4���Z�򵽦�N[�_l5���g-
�-��R��!��᦬�u��>v�}�n��K��`���ي�¥*u�ʕXFp�\e-ԓ�Mx��ս�4^���ʦ
�m��b�A�+��/�q0G���NR����G�Mᮥ-��}d�NJa$�y>u��o]�"�,}A�!�\�ego��}vuR�����{�"�`Y,VW
U��b�,*/����'��G�h:��'�yí���b�I5�{��3R�~�G�)F_I����g�eI�t����)�mQR��I˒�T����Robf�<C�-;+yJ��������ٿq2���iA��X�]��\zq��Ւ�k���^�����%�{i(�š�G�Xo�2��W��_���̶�/{(�^+'���3
������hЃ���"�������J�__:WU���������y�����\��oOim=�,�᧱�4_�T��M�e'�I�d�9S7�ʋ
"Q���UmK}�l����H��ĕ�S�l��'����~iӧJ�J� �c��K�%��ZI%�F@!o}�)d���	��S����ҽ�S���77�*s��Q�Oc�����˳�.�����!���%m���������8Щ��t��8�JL�]JR�.W9�������Ej�%&�L��7ל��F7%��dmsk��9����m:5d��k����6lσ:��;��-iV�)\�[��Ӄ�asNn�d��넚�4k
��ri%�߂6'�CN_i�i�YS�_!���Ɲ�iT���p~鵦�^�ǣ/�����3Kک�b�\\[��XO�����:��Jt��T�AN2��%�~�?`��{8���
�G�kJ]���''���K�2���Z�R�|��]SF�k<Է��\!�Sb7wX�I.��1{n���]TtN,�?�&s�8�f.�7ki�(ƚ�jG��4�;W�a��5���V�ד}��K:��p�����d�_0ugB��N�?!A/=gY����)E�R��%�i53��xϋ��?�,ݳ~��+�m&��ԏ��
R���խi�y��a��s�p�'oi5*{�3\������zRxon3���&�Kum���qo'cqoo8Ն�R�N���j�d��w\��/m�r�0�"���+d��$~��J�(,A��j<K]W�'�lI,F=�s�_@�1{�M3���as^�U����+y���y����;|����Y�U�	El�ߛ��.������*}����O�-o�L!a�X�ס��Cٺ�U��-���Kn;��}ҝ��\�R�w����.0��`ĸ����pv��ږ�ewr�=�qp�ۚ~)ھ�OG��V.Q����^ԶggI�io+���'����n��u�(��=[����g�Gߞ��P���6�k�g�z����K��G��|�O�͖�YS휿���k�c��Ժ��*����s�l��Y��_c.=����oYEîo��\סv�U�k��T�[��獙�*R�6~.�[Z�Ulݲ{\y9�ܗ����(�yJ/��V��n�Y�ӵ��f��
��?:f?�������Y�T��$|�E�E^]d4�>��W�M�Ԗ��?!�>��7���ధ�'�)$�����
���ŵ�����������,�T#V�.�VJSP�T$��Z2�hj�u-^ʥ�v�*,<lx�{6>nc���V��^��s}a�K���o�?Ci~فt�m��?�/Zo~�|������n�Y]EF�	�u{�%���b�7���a����%QFSQ]+m��Z=����,���_�?�m?䵿�0���F�]��6�����Io�Etw�3�d��Q�ug	�ϗ�o�?Ci~ف�ᾰ�
��f��ɴO�U�h�P�~���?Y��u�'M���u�A�qRRI�7ڽg0���!amN֞y0���E$�װ�֪�ԕYo�o�h'B��-����9~�}����d��u�����i\��I��I.�۲�=m���,�>�uYBTӝyIl�ߓ�B���m�CR���U\���O*Ow'~ٞ�g_^��b��S�7l���2��`��PK��f\<���assets/img/white-logo-1.svgnu�[���<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 468 468" width="31" height="31"><style>.a{fill:#fff}</style><path class="a" d="m163.5 64.6c-26.5 14.7-9.1 85.4 9.1 118.2l50.4 90.9c7.9 14.1 2.8 31.9-11.3 39.8l-25.6 14.1-14.2-25.5-50.4-90.9c-28.8-52-10-117.8 42-146.6z"/><path class="a" d="m121.5 211.2c-19.3-34.9-17.2-75.9 2-107.9-6.8 27.3 6.8 75.2 20.9 100.5l50.4 90.9c5 9 4.7 19.5 0.2 28l-8.9 4.9-14.2-25.5z"/><path class="a" d="m163.5 64.6l90.9-50.4 25.5-14.2 14.2 25.6c7.8 14.1 2.7 31.9-11.4 39.7l-90.8 50.4c-23.9 13.2-32.5 43.3-19.3 67.1-18.2-32.8-35.6-103.5-9.1-118.2z"/><path class="a" d="m163.5 64.6l90.9-50.4 25.5-14.2 14.2 25.6c7.8 14.1 2.7 31.9-11.4 39.7l-90.8 50.4c-23.9 13.2-32.5 43.3-19.3 67.1-18.2-32.8-35.6-103.5-9.1-118.2z"/><path class="a" d="m164.3 93.9l104.3-57.8 24-13.3 1.5 2.8c7.8 14.1 2.7 31.9-11.4 39.7l-90.8 50.4c-23.3 12.9-32.1 41.9-20.1 65.5q0 0-0.1 0c-9.1-17.2-17.9-43.6-20.8-67.3 2.3-9.1 6.6-16.2 13.4-20z"/><path class="a" d="m347.5 254.9c14.7 26.5-37.5 77.3-70.3 95.5l-90.9 50.4c-14.1 7.8-19.2 25.6-11.4 39.7l14.2 25.6 25.5-14.2 90.9-50.4c52-28.8 70.8-94.6 42-146.6z"/><path class="a" d="m305.5 401.5c34.9-19.4 54.8-55.3 55.5-92.6-8.8 26.7-45.7 60.2-71 74.2l-90.9 50.4c-9 5.1-14.3 14.1-14.9 23.7l4.9 8.9 25.5-14.2z"/><path class="a" d="m347.5 254.9l-50.4-90.9-14.2-25.5-25.6 14.1c-14.1 7.9-19.2 25.7-11.3 39.8l50.4 90.9c13.2 23.8 4.6 53.9-19.2 67.1 32.8-18.2 85-69 70.3-95.5z"/><path class="a" d="m347.5 254.9l-50.4-90.9-14.2-25.5-25.6 14.1c-14.1 7.9-19.2 25.7-11.3 39.8l50.4 90.9c13.2 23.8 4.6 53.9-19.2 67.1 32.8-18.2 85-69 70.3-95.5z"/><path class="a" d="m331.2 279.3l-57.8-104.2-13.3-24-2.8 1.5c-14.1 7.9-19.2 25.7-11.3 39.8l50.4 90.9c12.9 23.2 4.9 52.5-17.6 66.1q0 0 0 0c16.9-9.7 38.3-27.5 53.3-46 2.8-8.9 3-17.2-0.9-24.1z"/></svg>PK��f\�ޏ�{{assets/img/white-logo.svgnu�[���<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" width="128" height="128">
	<title>logo-24-svg</title>
	<defs>
		<image  width="109" height="111" id="img1" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG0AAABvCAMAAADR7r5vAAAAAXNSR0IB2cksfwAAAutQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////CUv0wAAAAPl0Uk5TAAINJkBZa3qAgyUOAxVFh7XZ7vj8/v/t27iGRhYkdsHr/ewjBAARYr/z8sJhEhmF4N+IG3jj+unVrZqSjZuu+ed1B1321p9kLQYBK6D1Wie2zHwqCBp9zQVeozcUauQKnluUly5pMJEgvfSqM3CmudBTF3LcslTT0TEc3aJleeVm3j5/5kQ/19gL4QzGGB1zIqx+CXHLQ0E09ztLifvDPFEQnU418MC7KEdCtzm+sUnSPVbFWDrEpc+kHi+r1CEpkziv72+KbEqOp0iE8VLoV8mokGd76lWYuhNjtOI2vLBobciLLI9us01glpUfgpzKXKnHoYxf2nQP+j9V6AAACXlJREFUeJzdWmtcVMcVvwtiElzwsXsvijx2wctjEVCIC76K2aBhV4hEiGwRpCpSa1SUpI1am8QaBCRoAkZDI01Jo6FJY9JojFGppIkttjRNTBCb2jZtYqvRmj7SNh+7M/cxj/vYe4G1/fV8gjMz5z/nznnNmWWY4GQJCx8TMfaWW2+79ZaxEWMix1kNrBkeWaOix0+YOMlmZzlArN0WM3lK7NS4ECBa4xMSHU5OSc6kxITkaaMJxaekpqWrIEnkypieyY8WVlb2DFYHC2o4Myd3NPD4qNtnIamsOy8/cfacufPmzv9SYn5eAbaLBXeMXD/PnRNliYULF91VlOn1iUM+b8ri1OKFJTLe5Lu9I1NsSalkGbZ7lpaVKzafcq8nfFmFTfqepZEjUM//5RhRjqNyuV8pqKp6xT01DO9d/pUkcV7MSv9wwVJWuUWs1bUW5XBVdX5gbA3401K32iFMdX81ZXhga78mCFh333qfcjRuQ76wk0j4r69uY6EwvX7tMLD4IkEau2mzysdpuP8ByTa+Lqpt/caDAmNLkcrmgtDWmQJY8TbleXkTvoksvyBeYmdtF21zvVlbqV0BF5Z8S3lgnoceJjw7Qh6xPiJY546t5sCSZwge+23FLmt2PsqR1IgG+V2CsTQtMQOWuQkuai6jB1p25lFY3O5WfEJZE2Q+1mYcrOY+uGTmHorfuleBxRVsJuc8Lpz3Ex6jYJZ2GKwepky5Y58Si3tyPb06Ep4qe7tRw5wKQ5+riGDy+yerYB1QkfmUCwx1fscYWMMWMNv9NMH0H+xSZJ3vPqO6f/5766CldBsBs9wGRbUT1tjxLNdFYSV+XyWaQfKNB6GcbTfyLZ87BGSllROaBcyGQGMPR+uIaIUxz1UXHMzzPJzZg/P4bFIttr5Ra7m4Y+h29cHLlR/YwcS9BO8FECLkY2Nf/GFQKTvBt3QH2VNAtZeAwGYibZQ/Cc1GxDrysoEM3fYKmPt8MOV+VBCYVbCSMJFXYf4WkvjRaEPVAH8MHHPha/qzLJVA5PEagpfGSWjO18cZwQpQxwmw5g19szwJDNKeSvBOuYRPGDi40+Ua65Q0HewuTz9cVgO5vWSyXyNah5N79Mf0fN8ZraMZtwPssFoPzH8UiM0m00yfiGbnVlPTrW/Wd1JBWSZ+HgwBeqfcAyKkizLwn0i6sXeSWMuPBExqRpWGrLrOwJq3anXQ3oZmR9UhpZKj2afibO/ZAsido2EJXuAE7E+1wXwvguWxFHeChOb8Gc7eINa1nRq+zveD0XPaVtkKMqHt5xT3dTmI7MO4/kkSu0LDUA+AqJQfponWA0rCWbkU9xdyfCzFLoZrUdTU+FpRIFgOnNJE+yVYnEbfNTfLl8RCLOdlopzwzklVadMywFn/ShMNarGKLrMadsty38Uy5EaZy72nWvzz58FYuyYaFPC+gj0ffbQPELdnUGYXXFAVlwrGhrTAfMeB6vsV/PB1slwblvceQsq9kqkmLxokqSNaGd4PPMQWqRxYjeReRBZd8xhi56jJOwUO/KhWNOkA1b1LJZB2o5PjjiF2I7qWDixXkZcMknB+hwZaC7hgx/xaZeRDVG8twHLOIrSJ36h0TfaA5LGjRQOtFVT4g2q3PWsGknsWsbddkrn2D5WrskD6uqSVEbXRmB5kKOxvEfsY6tekK09AH037SzLM/Ui5ZpTSLL9D7GLFGv0vCa1EZY+AwpqRXCxSnUE6c8/Qa+J1rUTwgHD1wf0oUq3DNjQeoZ2gIwr0gONaTQYt7xYG30Byf4/YLRMR+25qib53M+fAmo80BrfFILlYWn3aLXM3UYL1I5dGVBaJ/wNCW4gMxVosMbvY58gFMCov00RTzzgStZQiuF2IfdIhoXEHifnBMg4sglbQ2VSmNw/JaBEY+wNJNe6PxPQo0I4a0C6D1CsFmSwfS2DOeIz9CXRxNlAX5BHTXwhSKfjgt6KrIERtTSLaRpybCcyHBQ5ix9n8ZTBTpwpi/gQm0BUeRkKkYv9MbLh7UNAsQDg7aIUnhEOX9s3EczogoOJlshrPLeFYIV4W4GxYvU7Sq179wL+5bO0Jew71bqbT4xVJM24HxhXKSd3KXLhh9Oq0GHsUXRdvhlPKBEcwtoFbh+qNSp98Y1Fr4yrGTzVwoxJvi1pZQknTqjtlJyzEkpWh26J0EzaI5Yv/FIVJ7ho2EgFvwsHaAR7Y6mhWrdgUWGUHHQiLK8TahFmwD3sxaAujEW52afA+jm/xZSwrcERVbIkFZ9l5IKgQz0WwMv1MsHlt10gs7l3ssA13Z5in3gIzD+vf57M+pV+RLl1Ho2HwONINdJ4Yy1/g6p06nejcG4oXqwexEtsidNWWGepQRn0Glrs1E1PujU4ai5uCpSn+r7CGPmGstcJHC91Q9RDXdk2JVdKORxixG/qawTa9ZZnQ6VV0RwLxSAXLXZyFTwk32ellav4GxSi62Mz1JgWW7dltxBSxi33axONY62eCnVEf0zdfgbWqgZxSK1yHmrMYEyTucMEughs3i8RKX0S/EI0Rg4tznqmHvyLxZeV9vEY8OYBjuYbo2711jXyqrDm4OkE7ZyX2alTzdwyrT9FJuLcSa6ubhLsuPnDNvIDqlKusjBVHz7e+Sj4msf2GnzsCxF8Xr0slp9dLn7MVBlFuoL+IdiZL3TnaN9znzcAx3X1uYV3SkPSSWZYOsHoUWFuHHJyCuszB+Y/NEBc63rsiPEWddeQsobFarlRKWLv/4Rw+HL9kgnRStoqln5TzTFg8icV7ypaiF+gJ8d7P8QeYrhxTcIxnJf66vv2u2hS/RcDjLf7Mon9uzy+UZf8rImCGFJw57Ri+KmEWWs8WDDYdnn2jr7/vxuy0pkEbJvmdvSlwGyODY3xRbz+g9lsPnJyT/90gfWLv524cbo5JOIbvvvqSSwfLlTG9GztOTz/+wmTSzSFZk+/IyLOraZWUmBBPFSDeEcMFnCpuf/aUJgdyYltSc31OY4PKNZ6GM/sxReI9VWd2XVizL2HDRxfGLI7yaOVnTywBZ/rsTNIoaWeUKFPpH9kPXYKSdwj3OzZHs0szSnCEm7Nz/8/gPr65cOTZjQ+1I5AfM9SOQMGF3BFinQRciLWznMe1c4ZaOxJueBnhfxgu9r9omSbL2uHAjaDOHDlcqP2O+JhbvggtGhGi85NH60e5BuB6Qw+GytqK5NBjMVKt0ntzwALaXe4KnNlNAgOF35abcWYy3Bci2H8ABQjVFzuPZC4AAAAASUVORK5CYII="/>
	</defs>
	<style>
	</style>
	<use id="Background" href="#img1" x="10" y="8"/>
</svg>PK��f\�VVassets/img/siteseo-ai.svgnu�[���<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="22px" height="22px" viewBox="0 0 151.668 151.616"><defs><linearGradient id="b"><stop offset="0" style="stop-color:#0e44ac;stop-opacity:1"/><stop offset="1" style="stop-color:#664ef1;stop-opacity:1"/></linearGradient><linearGradient id="a"><stop offset="0" style="stop-color:#0e44ac;stop-opacity:1"/><stop offset="1" style="stop-color:#664ef1;stop-opacity:1"/></linearGradient><linearGradient xlink:href="#a" id="c" x1="10.148" x2="116.734" y1="62.229" y2="62.229" gradientUnits="userSpaceOnUse"/><linearGradient xlink:href="#b" id="d" x1="11.811" x2="115.07" y1="62.229" y2="62.229" gradientUnits="userSpaceOnUse"/></defs><path d="M64.039 88.243c-8.629.199-42.93 30.806-49.172 24.845-6.242-5.96 22.757-41.633 22.559-50.261-.198-8.63-30.806-42.93-24.845-49.172s41.633 22.757 50.262 22.559 42.93-30.806 49.172-24.845-22.758 41.633-22.56 50.262 30.807 42.93 24.846 49.171c-5.962 6.242-41.633-22.757-50.262-22.559z" style="fill:none;stroke:url(#c);stroke-width:10.9;stroke-dasharray:none;stroke-dashoffset:.8655;stroke-opacity:1" transform="rotate(-44.365 86.218 53.877)"/><path d="M64.039 88.243c-8.629.199-42.93 30.806-49.172 24.845-6.242-5.96 22.757-41.633 22.559-50.261-.198-8.63-30.806-42.93-24.845-49.172s41.633 22.757 50.262 22.559 42.93-30.806 49.172-24.845-22.758 41.633-22.56 50.262 30.807 42.93 24.846 49.171c-5.962 6.242-41.633-22.757-50.262-22.559" style="fill:url(#d);stroke:none;stroke-width:1.431;stroke-dasharray:1.431,2.862;stroke-dashoffset:.7155" transform="matrix(.2651 -.25928 .25928 .2651 92.639 125.492)"/></svg>PK��f\G$χXX assets/img/loginizer_product.pngnu�[����PNG


IHDR@L%nesRGB��,	pHYs.#.#x�?v�IDATx��]	xU�u�o�����QG�M@��Q�qA}��Dp�ƍE��&J����"C�	6	 dA ˝�wU��v��U]	���ם�]��]u�.���xy�߀��-�G�'���W��!����6��Ρ��M`gp�,+@f�
5���
�*��k���K��`op
x�B���4�
�
��D�� F1`'�+��%�3"���+��v�
u^�E0�c�3*�0�Y�r��B@@��@��{\�
W����g�l�e�x�@��e`}Y�
x	����{`A���1�QXҒ�n������n#������̌T��ݱ�%|5��ҷ+��Og�va��ak�BH�%��"�����������E�뛑��9~$���- ~��߯�8q,K�����M{����搕עH�);o�t	k:�G���l2�6l�B�6w_�Bx|����P{~�D"~��v�!�f���jŎ�n5�W���w�1���o�a+��D��XpU�h��³z{~`(�{�lvoRvk��!=��	o���}���X���C�4@��#X��Yl.�[�=�9���}b8,  `������E�����b�J�*�B�4<����[�X����k�j�K_��VCz�����I�ن�]L��{��SGc���n>*ﮡ��Hf#�,bӳsP�@�d�CvU�I$��r���GY��=��u���$I����Aqqq-���.`�-��^���{��\����9~E&�:�
�:= n�2|�"6 }>�1{:�הI�������"���^�>]�#��u߲�S��
O���Y�؃��`��wx��ެ�'I�)ٻsf�D�E����d/��k�,6%+�z���h�n��pc��1.u��)�Ao�ʟ�*߾�����u��Zn��.
 ��Y4|�2}�*^ʼ\%̈́Io�K=��Y+ّ��BW�΁���=�U쟟��-G�i�~F���O���'����&���^�[S�h����ڷ��vY6������~�%����k�	i����i�(��b	�WP�**�dOe����#lB�R�i�(v�~�Cd3����z��@!���񒎐|�]V������iH�m��}���[�ve��O?b�ϝƒ3�0yWn�G��&���=Ȝ�y,��+u{v�X�ס4�֟o�@�>����(�[�-[��9l�]V����e�����v	\�߂�+����G7/g-[�y[���mڛ��~f�KJة3gX�ˢg���;^R�Ӿ|���[�y#��]6�pA���Px6��^��@o_�9[#"�!.����
���$�f���*Y��wY��g(�����E�5C$�*+ѧ=iO!���CR�<�1����d�
���E����}��c$ҞfO�	
�F����0�hխ�hO!�����d�]�S��&��	<^C�(x��mZ��ƀ�σ�3���N����uP~[���Sݵ���o�S��111�͈4��͓��i�؄t�4y.5J5�?��7��:}���n$�s���z�	Ýs�u_ރkJ����	��
�-hQ��c������~����E}��{�=�9�K
�� �F�h��ӥ��<]fϟЁ��u��F�V���ۅ���$�4��^Ul��̳��.ɶ:�w>/��`n�a�g�<?"O���Շz�Ĺ�萮�u�+�x�/��Bw��[<�R[�f�V���ݏ��`�E��.H_�I{@�~�|;5�k����S���8|x<��?�-�ɫY��
\�uE^�B���@�W�z�J�;%�x|t����w�ú�a�~
���Z��B�mFi�9�EW�0]��)���ݠ���,M[�=��d!�h����<�׃en`ϴc���s��_�@r�qu���H�ܢ��(c<�hu\R�x�)�$���I��[auCk��g0�\�s�n �vf6:?-w�W�i�� ���A:�cs��v�CG��srk�w$���کK�+�Pj�]�E EY�_�$)t�@��I����7E#i!)�[i��
i�c�k���C\~^v��27G�W[
�-;�7���s�z9������2��9��
`3�M�O�j�����ECiX�V����Ip9W��i�=��t�o���]��w)�M%e^y��}��v�X�����^7ͷ�j������2M�*8��[�zt����B�.��5���q�+�'�*+�()�ѥ\}%e���T�E:��Y� .���VC��
����N�.
��׷J<����CRz}�r���ܪ~�.P櫪M���᳞V�$e�
��W��E�r�I����V?�:Hl,)�1L��������K�E^��C�u[=;���&�!��.
�d��Q-#��1X
/h�_7>�%�j���x��j�%����v?�SƗV��!�(�J)t�<
4])�w�ؖ���֜0��i�'���1�$��7�|�_	n�&�n�m4�v�z2�a�SW
��Cp�I��\O�7���։�i�����y����ሐ���k��^n��kTWM�ru䁒E>Z<���˴M-�X�+�2V��?X�ɞn�-���)b�k�ң,���z��.H�����[����;p�I����ʘj��MD�iv���J�{.V�^^��cxFS>��=j�O�RS���6�����(4�^Lp7�G:����K�H�'Y>@v-�S�h���3�')���\��M����}F����2�<.`X�����Ki��,���r����ܽ�d�Z�rv���%)�o���h��Hq-]���x���~X�������f��h[a�)��[mE����8�I��ĕ�ܤ�׹�߅Q'/�K��(��vW�u�j���c����?��ck׊��1;[�СFi
�"��6���6Y���N���=?��uN�)�J)�鯷DK%�`����4")�?��<i�j�������ԥ��!�6�%��N��l�[�;ni���6D��ri8���2��̾��#�.�M1Jk ��­��7������
 ��&���x��¶�:���F�)�@����i��@�ޭ
����մ�W�}�IR�a�>���Q��t�z
05���
<�e�] 5Li*����DQ����l���
>�-S�s�?�����!�`�mX6�%����i`��()sn|�˖Sv%��W�\��\aR��F�l��R�<�z,���]��E�w`Xm�I��R�!��$}�ڊ�ު�I.?ry
狸�n	�t;���"�P�<ڥ��IHC@[��CV�`����`�J�]'E��H@�&^�(���_Ke6�B���1IO���:�K�� ��M��)J
�.�����֞Z��y���P��{�+�|�iY�f:��*Ln����o��7��d�FQ�a�4e�;EP`+�I�5���*I���%<,�n�#nt�U�y�K�s���x_,D�z���D��
���ڲ�9 5TW���նQ��\�#-S
Td�����1�@���4�t���5Z�o)WNn��<��LǦ�)�)�@:s��_P෶�B�-Np�ڶ�h	 mT���H�Qf�L��h>I�����U���:�g�IJ���q}�6�X�S�"kˠ�6�^A
�����-���f��uF�~�g���fss��=t��V�/7�6�ؑ��&��N[�/�v�JJ�&��}���8%t	֟%e��.���HDڛ%e:A[�H�sD?�(c1W�Hʳ_���v3a蓖���rVH>[�̖
�8����xU���?L�s��z`J�J+t��E��|,���-ORV��Dv�����a�pm���(�qJ�>>|X�d;�f�J~���HP�2����V�aM�8+&�2��>Sj)@~��)-e���ͷ%����o2���%n�k�P�kWϜp��M�2WmK���")�U+��z+SM@���=��aM!�\Kk�RG���* 1�HVl��ԈI���خ�Ui�Wp�5���6���Vm�m&�	��GcFY���t����I����q���Ll��m�S��k��P���0�`�$��µ]���:��Mq&�P݀�H���l��9Ӄ��z�Nc���Q	/9�Z�:�:Ǭ8aZoyE�?f���gN5?:ĵ(0����0�wA�t�CzZ	��AY���bD��#AM@�D�ͼ�R./f����F��j������z#������w�
J�A=��C?�
Qѩrv��}�2w��?|����\��w6#;�L��\��D4P��)�.���7oȉj<T7�)�9=>>�� ���t:�I9��^�v���m����.����3AR�`�L�s-ve%Ԁ�+t��N���_	5�����mQ��H��a�H�!eLP��9SM��/$������$��׆Z ����:�B}ÈE�	_ō2�M�&)����G�y7:�^�3I��B�S0V[sZ5H��ғZ��)�;�CK�n�V�΢�������U����J�kK6��*	�u�YW(f�[���Uyg.����5�k�K7oZ�n�m��Z�L����D�5�H�x�Q�jO��ʛ�#
g�B꩑�K/ �qr�$̸��a=��uαš �������C;+�tb ?��E��٭~�z�Yym�F��D#�X����1���Ճ���_����f���~]�+S&��ܽF�Ga�z{1�%�!���h_.�ȇ7��ܴv:$E>ZE�����ᐎa4�g�!��ں^��#��:f�@��0�HW����5�O��md�w�|>�k�:t0`?�l���V�3?'�PS?	ȷQ.��SP�ǝ�AW}��q�0љ�4l��X�<�s��������
��z+��@�V���ʯ7��I�C���
�k�X�� +���L�\�H|��Y��_į��I����A�4����m&~��ozَ�i���.���ÎT��@R��h�KQ[������ٱ3-�\')��ko�
(��߶_%m�G�RhD�2�yHښ')�m;�$eFۦ��ձ!N�;�1�C?0|*�nZ���&���_@�R)��D�3$�Dž\��ٌG�.�<��h{��u@ꀙF��u:k��#�7g
;VTU�;t��'�Q�_7��U�����ˎ��4��
Gj����v�r�k7�\�N��(����W�9H��p?Պ�����^�q��i6���Y�^�.A�"��X�O?FE�h����A�G��=�lޏ�]v1�_Mn�{8��l7`�E��u��
8D��ɑ��y�؛_~�l=�/����Ȧ=����Bz~����������:�)�*[�/�(7��UZ�Z
�E-p�lrj\Ɩ$�ъ�����r�E�v��ٱ���xXP}����O�=f�G�Q�/[��8�r�٥r�s��I, �) W��D�����i!"�����o�6/x���
_����"~}�Rٷ��G�:����8�W�P�i��X�`��������3,ؐ�X����Ď)#Y����I��:MRvs��茥�����o2q� �s�7�Nv�LZ
���>TW��o&��v��n="!D�n�.K��feee�ďҏC/�9��e�uX����j��8[v1Խ�����kAywK���i��@؀�\β�E���v�$mI�\�}s����*1�;91��̗�ظal��-V�G�~�İ�H�y�|�Tr�~�m����x��
mP��^_���-�J�߁�b3�Y�5��L��'��s�s�,y��Kq���>~���XH��m��`���e[r�ďV{_V{�~7�y�ѓ�؃�nr���F0��0�
�^�T�'����+��H���U[�ߩ�k�Cb�==i\���BV
�:��`e���Ha!�pk9�gH�	�Xljc��h�&l.��{�a�h���vvx���N��D��
�u�i(J�Bݦ�$>02��K��5@������<Y�=�J�J���B��I�.S�(�EiK�b��G@�d�\�6�r�� 9Mϒ׳>Of����?�W�������Ke%��xx|Bll,�ӧú_����[t�������q�0���z�X��������G��p��c���?��~�)><v0��r����Ň��k/�y����K!p�8�4# P��
a3�#Y9iMW�Vc8������!!�&@�L��i���X�����P���:�KV
���SF�K���Q`r�nF�D@@@ *PLh_��C`/Yٓ��TWme���p���'� ++�6�})U�O�jW}TIEND�B`�PK��f\b��?�?�assets/css/siteseo.cssnu�[���:root{
--siteseo-theme-color: #163d89;
--siteseo-promo-primary: #6366f1;
--siteseo-promo-primary-dark: #4f46e5;
--siteseo-promo-gradient: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
--siteseo-promo-bg-surface: #ffffff;
--siteseo-promo-text-main: #1f2937;
--siteseo-promo-text-muted: #6b7280;
}

.siteseo-admin-body #wpcontent{
padding-left:0;
background-color:white;
}

.siteseo-license-tab{
padding: 20px;
border-radius: 8px;
box-shadow: 0 0	10px rgb(0, 0, 0, 0.1);
margin-top:100px;
margin-right:15px;
background-color:white;
}

#siteseo-root{
position:relative;
width: 100%;
}

#siteseo-root *{
box-sizing:border-box;
}

/*For Sitepad*/
.site-admin #siteseo-root p{
margin:revert;
}

.site-admin #siteseo-root h3{
font-size:1.2rem !important;
}

.site-admin #siteseo-root h4{
font-size:unset !important;
}

.site-admin #wpcontent{
padding:unset !important;
}

.siteseo-nav-tab{
border: 1px solid #c3c4c7;
border-bottom: none;
margin-left: .5em;
padding: 5px 10px;
font-size: 14px;
line-height: 1.71428571;
font-weight: 600;
background: #dcdcde;
color: #50575e;
text-decoration: none;
white-space: nowrap;
}

.siteseo-nav-tab-wrapper{
display: flex;
width: 100%;
flex-wrap: wrap;
border-bottom: 1px solid #ddd;
margin-bottom: 20px;
row-gap: 7px;
}

.siteseo-nav-tab-wrapper .siteseo-nav-tab{
padding: 10px 20px;
text-decoration: none;
color: #666;
background-color: white;
border-bottom: 1px solid transparent;
transition: color 0.3s, background-color 0.3s;
border: none;
outline: none; 
position: relative;
cursor: pointer;
}

.siteseo-nav-tab-wrapper .siteseo-nav-tab:focus{
background-color: transparent;
box-shadow: none;
}

.siteseo-nav-tab-wrapper .siteseo-nav-tab::before{
content: '';
position: absolute;
bottom: -2px;
left: 0;
width: 100%;
height: 2px;
background-color: #003399;
transform: scaleX(0); /* Start scale at 0 for animation */
transform-origin: left;
transition: transform 0.3s;
}

.siteseo-nav-tab-wrapper .siteseo-nav-tab:hover::before{
transform: scaleX(1); /* Animate scaleX for a smoother hover effect */
}

.siteseo-nav-tab-wrapper .siteseo-nav-tab-active{
color: #003399;
border-bottom: 3px solid #003399;
}

.siteseo-nav-tab-wrapper .siteseo-nav-tab:focus{
outline: none;
}

#siteseo-dashbord{
padding: 20px 40px 40px 40px;
}

/* Dashboard */
.siteseo-dashbord-intro{
display: flex;
align-items: center;
justify-content:space-between;
padding: 20px;
width: 100%;
}

.siteseo-text-content{
max-width: 600px;
margin-right: 20px;
}

.siteseo-text-content h2{
color: #333;
font-size: 11px;
margin-bottom: 10px;
}

.siteseo-text-content h1{
color: #333;
font-size: 30px;
margin-bottom: 20px;
}

.siteseo-text-content p{
margin-bottom:40px;
}

.siteseo-dashbord-content{
display: flex;
justify-content: space-between;
padding: 20px 0;
gap:20px;
}

.siteseo-dashboard-features .siteseo-dashbord-container{
display:flex;
flex-wrap:wrap;
gap: 20px;
}

.siteseo-dashboard-features{
width: 75%;
}

/* Assuming this is only in sitepad */
.row.mx-0 .siteseo-dashboard-features{
width: 100%;
}

.row.mx-0 .siteseo-tab label{
width: 100%;
}

.row.mx-0 .siteseo-universal-metabox{
bottom: 6%;
}

.siteseo-dashboard-extras{
width: 25%;
}


.siteseo-option{
padding: 44px;
border-radius: 8px;
}

.siteseo-option h2{
font-size: 24px;
font-weight: normal;
margin: 0 0 20px 0;
}

.siteseo-option input[type="text"]{
width:50%;
height: 130%;
}

.siteseo-select-box,
.siteseo-option select{
line-height: 20px;
width: 100%;
}

#siteseo-new-domain-url:focus,
.siteseo-select-box:focus,
.siteseo-option input[type="radio"]:focus,
.siteseo-option select:focus,
.siteseo-option textarea:focus,
.siteseo-option input[type="text"]:focus,
.siteseo-option input[type="checkbox"]:focus{
	border: 2px solid #003399;
}

.siteseo-option a{
color:#003399;
}
.line{
display: block;
border-top: 1px solid #e0e0e0;
margin-bottom: 20px;
}
.submit-button{
background-color: #003399;
color: white;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 14px;
}
.dashed-line{
display: block;
border-top: 2px dashed #e0e0e0;
padding-top: 5px;
padding-bottom: 5px;
}

p.description,
.description {
font-size: 13px;
color: #666;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
margin: 5px 0;
padding: 0;
line-height: 1.5;
display: block !important;
visibility: visible;
opacity: 1;
}

.siteseo-tabs{
padding-top:25px;
}

#siteseo-root .wrap{
margin:unset !important;
}

.siteseo-tab{
width: 100%;
display: none;
}

.siteseo-tab.active{
visibility: visible;
overflow: inherit;
opacity: 1;
transform: translateX(0);
display: inherit;
position: relative;
}

.siteseo-styles pre{
font-family: Menlo, Monaco, Andale Mono, Courier New, monospace;
padding: 10px;
display: inline-block;
background-color: #9c9c9c14;
border-radius: 3px;
color: #00308F;
font-size: 13px;
word-break: break-all;
white-space: pre-line;
box-shadow: rgba(9, 30, 66, 0.25) 0px 1px 1px, rgba(9, 30, 66, 0.13) 0px 0px 1px 1px;

}

.siteseo-notice .is-warning{
background-color: #fff8e1;
border: 1px solid #ffeb3b;
border-radius: 5px;
font-family: Arial, sans-serif;
font-size: 14px;
color: #333;
width: 100%;
box-sizing: border-box;
}

.field-required,
.field-recommended{
font-weight: bold;
}

.field-required{
color: #a00;
}

.field-recommended{
color: #ffba00;
}

.siteseo-option input[type="text"],
.siteseo-option input[type="password"],
.siteseo-option input[type="number"]{
line-height: 40px;
}

@media only screen and (max-width: 1024px){
	
.siteseo-option input[type="text"],
.siteseo-option input[type="password"],
.siteseo-option input[type="number"],
.siteseo-option textarea{
min-width: inherit;
width: 100%;
}
}

.siteseo-option .btnSecondary{
padding: 10px;
border: 2px solid #00308F;
color: #00308F;
background: transparent;
border-radius: 3px;
transition: 0.2s;
text-decoration:none;
cursor:pointer;
}

.siteseo-option .btnSecondary:hover{
color: white;
background-color: #00308F;
}


.siteseo-option .btnPrimary{
padding: 9px;
border: 2px solid #00308F;
color: white;
background-color: #00308F;
border-radius: 3px;
transition: 0.2s;
text-decoration:none;
cursor:pointer;
}

.siteseo-option .btnTertiary,
.siteseo-styles .btnTertiary{
color:#00308F;
background: transparent;
padding: 9px;
border:none;
box-shadow: none;
}

.siteseo-option .btnTertiary:hover,
.siteseo-styles .btnTertiary:hover{
box-shadow: inset 0 0 0 1px #00308F;
border: 1px solid #00308F;
}

.siteseo-notice{  
position: relative;
display:grid;
background: #00308f05;
padding: 10px;
width: calc(100% - 20px);
z-index: 10;
border-radius: 5px;
width: auto;
display: flex;
border:1px solid #00308f45;
}

.siteseo-notice.is-success{
margin-top:5%;
border-left-color:#4ab866;
margin-right:15px;
background:#eff9f1;	
}

.siteseo-notice.is-warning{
background: #fff9e8;
border-color: #e2a90057;
width: auto;
}
.siteseo-notice.is-error p{
font-size:13px;
}

.siteseo-notice.is-error{
font-size: 13px;
border-left-color: #cc1818;
background: rgb(244 162 162 / 30%);
}

/*
table.form-table td {
   padding-left: 20%;
}*/

.siteseo-archives{
padding-left: 15%;
}

.siteseo-container{
width: 200px;
border: 1px solid #e0e0e0;
border-radius: 8px;
background-color: #ffffff;
padding: 30px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.row.mx-0 .siteseo-container{
width: 215px;
}

.siteseo-container a{
padding: 5px;
display: block;
color: #6c757d;
text-decoration: none;
margin-bottom: 10px;
font-size: 16px;
transition: background-color 0.3s, color 0.3s;
}

.siteseo-container a:last-child{
margin-bottom: 0;
}

/* Active class styling */
.siteseo-container a.active{
background-color: #e7f3ff;
color: #007bff;
padding: 8px 10px;
border-radius: 4px;
border: 1px solid #007bff;
}

body .siteseo-option select,
body .siteseo-option input[type="text"]{
height: 45px;
width: 75%;
}

body .siteseo-option textarea{
min-width: inherit;
width: 75%;
min-height: 100px;
}

.siteseo-option .wrap-tags{
position: relative;
display: inline-flex;
width: 90%;
margin: 10px 0;
flex-wrap: wrap;
gap: 10px;
}

.siteseo-option .wrap-tags button{
margin-bottom: 10px;
}

.tag-title-btn{
display: flex;
align-items: center;
justify-content: center;
background-color: #003399;
color: white;
padding: 10px 10px;
max-height: 37px;
border: 2px solid transparent;
border-radius: 5px;
font-family: Arial, sans-serif;
font-size: 10px;
font-weight: bold;
text-align: center;
text-decoration: none;
cursor: pointer;
box-sizing: border-box;
}

.tag-title-btn span, 
.tag-select-btn span{
margin-right: 5px;
}

.tag-select-btn span{
margin-right: 0;
}

.tag-title-btn:hover{
background-color: white;
color: #003399;
border-color: #003399;
}

.tag-title-btn:hover{
border: 2px solid #003399;
background-color: white;
color: #003399;
}

.tag-select-btn{
width: 40px;
height: 40px;
color: white;
background-color: #003399; 
border-radius: 5px;
border: 1px solid #666666;
display: flex;
max-height:37px;
align-items: center;
justify-content: center;
cursor: pointer;
transition: background-color 0.3s, color 0.3s;
}

.tag-select-btn:hover{
border: 2px solid #003399;
background-color: white;
}

.tag-select-btn:hover #icon{
color: #0033a0;
}


body .siteseo-option option{
padding: 10px;
}

body .siteseo-option input[type="checkbox"]:checked::before{
content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e");
background: #00308F;
width: 100%;
height: 100%;
margin: 0 !important;
display: inline-block;
}

body .siteseo-option input[type="checkbox"]{
box-shadow: 0 0 0 transparent;
border: 1px solid #a4a4a4;
border-radius: 4px;
cursor: pointer;
outline: 0;
text-align: center;
width: 20px;
height: 20px;
-webkit-appearance: none;
appearance: none;
transition: 0.3s all ease-in-out;
box-sizing: border-box;
padding: 0!important;
display: inline-block;
}
#siteseo-tab-title{
font-family: Arial, sans-serif;
font-size: 20px;
color: #4a4a4a;
margin: 20px;
}

.siteseo_wrap_label{
margin: 0 0 10px 0;
}

.siteseo-notice p{
margin: 0% !important;
}


.siteseo-notice .dashicons{
color:#00308F;
}

.siteseo-notice #dashicons-warning{
color:rgb(226 169 0);
}

.siteseo-submit-btn{
display: flex;
bottom: 0;
}

.siteseo-submit-button{
display:static;
position: sticky;
bottom:20px;
}

.siteseo-container{
position: sticky;
top: 120px; 
display: inline-block;
}

.tag-select-btn{
width: 40px;
height: 40px;
color: white;
background-color: #003399; 
border-radius: 5px;
border: 1px solid #666666;
display: flex;
max-height: 37px;
align-items: center;
justify-content: center;
cursor: pointer;
transition: background-color 0.3s, color 0.3s;
position: relative;
}

.tag-select-btn:hover{
color: white;
}

.siteseo-suggetion{
position: absolute;
width: 250px;
border: 1px solid #ccc;
top: 50px;
left:-50px;
border-radius: 5px;
height: 300px;
background-color: white;
z-index: 1000;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
display: flex;
flex-direction: column;
}

.siteseo-search-box-container{
position: sticky;
top: 0;
background-color: white;
padding: 10px;
border-bottom: 1px solid #ccc;
z-index: 2;
}

.siteseo-search-box-container input{
width:100% !important;
}

.siteseo-suggestions-container{
flex-grow: 1;
overflow-y: auto;
}

.siteseo-suggetion .siteseo-search-box{
width: 100%;
padding: 5px;
box-sizing: border-box;
border: 1px solid #ccc;
border-radius: 5px;
}

.siteseo-suggetion .section{
color: rgb(4, 4, 4);
padding: 5px;
font-weight: bold;
font-size: 12px;
border-bottom: 1px solid #eee;
cursor: pointer;
}

.siteseo-suggetion .section:hover{
color: #fff;
background-color: #003399;
}

.siteseo-suggetion .section:hover .tag{
background-color: #fff;
}

.siteseo-suggetion .tag{
color: #000;
display: inline-block;
background-color: #f0f0f0;
padding: 5px 10px;
border-radius: 5px;
font-family: monospace;
margin-top: 5px;
}

/* metabox css */
#siteseo_metabox_temp{
padding: 10px 20px;
font-weight:bold;
color: #000000;
background-color: white;
border-bottom: 1px solid transparent;
transition: 0.3s;
border: none;
outline: none;
position: relative;
cursor: pointer;
background-color:#e0e0e0;
}

#siteseo_metabox_temp .siteseo-nav-tab{
background-color:#e0e0e0;
}

#siteseo_metabox_temp .siteseo-nav-tab::before{
content: '';
position: absolute;
bottom: -2px;
left: 0;
width: 0;
height: 2px;
transition: width 0.3s;
}

#siteseo_metabox_temp .siteseo-nav-tab:hover::before{
width: 100%;
}

#siteseo_metabox_temp .siteseo-nav-tab-active{
color: #003399;
border-bottom: 3px solid #003399;
}

#siteseo_metabox_temp.siteseo-nav-tab:focus{
outline: none;
}

.siteseo-buttons{
display: flex;
gap: 10px;
}

.siteseo-buttons a{
text-decoration: none;
padding: 10px 20px;
border-radius: 5px;
font-size: 16px;
}

.siteseo-buttons .get-started{
background-color: #003399;
color: #fff;
}

.siteseo-buttons .dismiss{
color: #003399;
}

.siteseo-image-content img{
max-width: 100%;
height: auto;
}

/*** Dashboard page carts  ****/
.siteseo-card{
display:flex;
flex-direction:column;
align-items:center;
justify-content:space-between;
background: white;
border: 1px solid #E2E8F0;
border-radius: 3px;
padding: 25px;
text-align: center;
position: relative;
width: 31.5%;
}

.row.mx-0 .siteseo-card{
width: 23.5%;
padding: 35px;
}

.siteseo-card-icon{
display:inline-block;
font-size: 40px;
width: 40px;
height: 40px;
color: var(--siteseo-theme-color);
margin-bottom: 0.2rem;
}

.siteseo-card h3{
font-size: 16px;
margin: 8px 0;
color: #003399;
font-weight:500;
}

.siteseo-card p{
font-size: 14px;
color: #666;
margin: 5px 0;
}

.siteseo-card .siteseo-card-footer{
display: flex;
justify-content: space-between;
align-items: center;
margin-top:20%;
width:100%;
padding-top:20px;
border-top: 1px solid #E2E8F0;
}

.siteseo-card .siteseo-card-footer button{
background: #003399;
color: white;
border: none;
padding: 8px 15px;
border-radius: 5px;
cursor: pointer;
}

.siteseo-card .siteseo-card-footer a{
text-decoration: none;
background: #003399;
color: white;
border: none;
padding: 8px 15px;
border-radius: 5px;
cursor: pointer;
}

.siteseo-card .siteseo-card-footer .toggle{
display: flex;
align-items: center;
}

.siteseo-card .siteseo-card-footer .toggle input{
display: none;
}

.siteseo-card .siteseo-card-footer .toggle label{
width: 50px;
height: 25px;
background: #ccc;
border-radius: 25px;
position: relative;
cursor: pointer;
border: 2px solid #007bff;
}

.siteseo-card .siteseo-card-footer .toggle label::after{
content: '';
width: 22px;
height: 22px;
background: white;
border-radius: 50%;
position: absolute;
top: 0px;
left: 0px;
transition: 0.3s;
}

.siteseo-card .siteseo-card-footer .toggle input:checked + label{
background: #007bff;
}

.siteseo-card .siteseo-card-footer .toggle input:checked + label::after{
left: 25px;
}

.siteseo-card .pro-feature{
color: red;
font-size: 14px;
position: absolute;
top: 20px;
right: 20px;
}

.siteseo-card #lock{
color: gold;
margin-right:2px;
font-size: 38px;
}

/** siteseo-advertisement **/
.siteseo-ad-container{
background-color: #ffffff;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
padding: 20px;
width: 190px;
text-align: center;
}

.siteseo-ad-logo img{
width: 150px;
height: 50px;
margin-right: 10px;
}

.siteseoi-ad-title{
font-size: 24px;
font-weight: bold;
}

.siteseo-ad-description{
font-size: 14px;
color: #666666;
margin-bottom: 20px;
}

.siteseo-ad-description em{
font-style: italic;
font-weight: bold;
color: #333333;
}

.siteseo-ad-features{
text-align: left;
font-size: 14px;
color: #333333;
margin-bottom: 20px;
}

.siteseo-ad-button{
background-color: #003399;
color: #ffffff;
padding: 10px 20px;
border: none;
border-radius: 5px;
text-decoration: none;
font-size: 14px;
}

/* breadcurmbs */
.siteseo-inner-tabs-wrap{
overflow-x: hidden;
padding-bottom: 16px;
border-bottom: 1px solid #ccc;
}

.siteseo-inner-tabs-wrap [type="radio"]{
display: none;
}

.siteseo-inner-tabs-wrap [type="radio"]:nth-of-type(1):checked ~ .siteseo-inner-tabs .siteseo-inner-tab:nth-of-type(1) label,
.siteseo-inner-tabs-wrap [type="radio"]:nth-of-type(2):checked ~ .siteseo-inner-tabs .siteseo-inner-tab:nth-of-type(2) label,
.siteseo-inner-tabs-wrap [type="radio"]:nth-of-type(3):checked ~ .siteseo-inner-tabs .siteseo-inner-tab:nth-of-type(3) label{
border-bottom-color: #00308F;
color: #222;
}

.siteseo-inner-tabs-wrap [type="radio"]:nth-of-type(1):checked ~ .siteseo-inner-tab-content:nth-of-type(1),
.siteseo-inner-tabs-wrap [type="radio"]:nth-of-type(2):checked ~ .siteseo-inner-tab-content:nth-of-type(2),
.siteseo-inner-tabs-wrap [type="radio"]:nth-of-type(3):checked ~ .siteseo-inner-tab-content:nth-of-type(3){
display: block;
}

/* Breadcrumbs seperator */
.siteseo-seperator-btns{
display:flex;
gap:4px;
margin-bottom:10px;
}

.siteseo-seperator-btns label{
display:flex;
flex-wrap:wrap;
align-items:center;
justify-content:center;
box-sizing:border-box;
height:40px;
width:40px;
border:1px solid #ccc;
border-radius: 3px;
text-align:center;
font-size:20px;
font-weight:600;
line-height:1.7;
cursor:pointer;
}

.siteseo-seperator-btns label:hover{
border:2px solid #ccc;
}

.siteseo-seperator-btns label:has(input:checked){
background:#00308F;
border: 2px solid #00308F;
color: #fff;
}

.siteseo-seperator-btns label > input{
display:none;
}

/*sitemap */
.siteseo-sitemap-body{
font-family: Arial, sans-serif;
background-color: #f5f5f5;
}

.siteseo-sitemap-container{
background-color: #ffffff;
border-radius: 5px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
max-width: 800px;
margin: 0 auto;
}

.siteseo-sitemap-header{
max-width: 800px;
margin: 0 auto;
margin-top: 28px;
padding-left: 20px;
}

.siteseo-sitemap-container h1{
font-size: 24px;
color: #333333;
}

.siteseo-index-link{
font-size: 16px;
color: #0073aa;
text-decoration: none;
}

.siteseo-sitemap-description{
font-size: 14px;
color: #666666;
margin-top: 10px;
}

.siteseo-sitemap-container table{
width: 100%;
border-collapse: collapse;
}

.siteseo-sitemap-container th, td{
padding: 15px;
text-align: left;
}

.siteseo-sitemap-container th{
background-color: #f9f9f9;
font-weight: bold;
border-bottom: 1px solid #dddddd;
}

.siteseo-sitemap-container tr:hover{
background-color: #f5f5f5;
}

.siteseo-sitemap-url-link{
color: #0073aa;
text-decoration: none;
}

/* toast message settings saved*/
.siteseo-toast{
position: fixed;
top: 90px;
right: 20px;
background: #F0FFF2;
color: #000000;
padding: 15px;
border-radius: 5px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
z-index: 99999;
display: none;
font-weight: 600;
animation: slide-down 0.3s ease-out;
}

.siteseo-toast.error{
background: #f44336;
top: 90px;
right: 20px;
padding:15px;
}

.siteseo-toast .dashicons{
color: #008000; 
vertical-align: middle;
margin-right: 3px;
font-size: 23px;
}

/* slide-down animation */
@keyframes slide-down{
    from {
        transform: translateY(-100%);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

/* bredcurmns css inner tab **/
.siteseo-inner-tabs-wrap{
overflow-x: hidden;
padding-bottom: 16px;
border-bottom: 1px solid #ccc;
}

.siteseo-inner-tabs-wrap [type="radio"]{
display: none;
}

.siteseo-inner-tabs ul{
list-style:unset;
}

.siteseo-inner-tabs {
display: flex !important;
list-style: none !important;
padding: 0;
}

.siteseo-inner-tab > label {
display: block;
position:relative;
margin-bottom: -1px;
padding: 12px 15px;
color: #666;
font-size: 12px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 1px;
border-bottom: 2px solid #fff;
cursor: pointer;
transition: all 0.3s;
}

.siteseo-inner-tab:hover label {
border-bottom: 2px solid #00308F;
}

.siteseo-inner-tab-content {
display: none;
color: #777;
}

.siteseo-inner-tabs-wrap [type="radio"]:nth-of-type(1):checked ~ .siteseo-inner-tabs .siteseo-inner-tab:nth-of-type(1) label,
.siteseo-inner-tabs-wrap [type="radio"]:nth-of-type(2):checked ~ .siteseo-inner-tabs .siteseo-inner-tab:nth-of-type(2) label,
.siteseo-inner-tabs-wrap [type="radio"]:nth-of-type(3):checked ~ .siteseo-inner-tabs .siteseo-inner-tab:nth-of-type(3) label{
border-bottom-color: #00308F;
color: #222;
}

.siteseo-inner-tabs-wrap [type="radio"]:nth-of-type(1):checked ~ .siteseo-inner-tab-content:nth-of-type(1),
.siteseo-inner-tabs-wrap [type="radio"]:nth-of-type(2):checked ~ .siteseo-inner-tab-content:nth-of-type(2),
.siteseo-inner-tabs-wrap [type="radio"]:nth-of-type(3):checked ~ .siteseo-inner-tab-content:nth-of-type(3){
display: block;
}

/* Breadcrumbs seperator */
.siteseo-seperator-btns{
display:flex;
gap:4px;
margin-bottom:10px;
}

.siteseo-pro-badge{
color:rgb(133 77 14);
background-color: rgb(254 249 195);
border-radius: 9999px;
padding: 5px 20px;
font-weight:500;
font-size:0.95rem;
line-height: 1.6rem;
cursor:pointer;
}

/*indexing history-table */
.siteseo-history-table{
margin-top: 20px;
border: 1px solid #ccd0d4;
box-shadow: 0 1px 1px rgba(0,0,0,.04);
background: #fff;
}

.siteseo-history-table th{
background: #f1f1f1;
font-weight: 600;
padding: 10px;
border-bottom: 1px solid #ddd;
width: 100%;
}

.siteseo-history-table td{
padding: 10px;
vertical-align: top;
font-weight:450;
border-bottom: 1px solid #eee;
width: 100%;
}

.siteseo-history-table .siteseo-table-row{
font-weight:bold;
}

.siteseo_wrap_label{
margin-bottom: 15px;
}

.siteseo-clear-history-btn{
margin-top: 10px;
}

.siteseo-show-details{
display: inline-block;
margin-top: 20px;
cursor: pointer;
font-weight: 600;
}

.siteseo-response-code-table{
display: none;
margin-top: 15px;
}

.siteseo-response-code-table.visible{
display: block;
}

/* promo for rating */
#siteseo-start-promo{
color: #FDCC0D;
font-size:20px;
text-decoration: none;
}

.siteseo-rating .dashicons{
font-size: 30px;
width: 30px;
height: 30px;
}

.siteseo-rating .siteseo-stars{
display: flex;
gap: 8px;
color: #FDCC0D;
text-decoration: none;
}

.siteseo-rating{
display: flex;
justify-content: center;
}

.siteseo-rating-tab{
margin-top: 20px;
display: flex;
flex-direction: column;
border-radius: 10px;
padding: 10px;
background: linear-gradient(135deg, #022448, #034f84);
max-width: 400px;
}

.siteseo-rating-tab p{
color: #ffffff;
margin: 10px 0 0 0;
text-align: center;
width:100%;
}

.siteseo-need-help{
display:flex;
flex-direction:column;
word-wrap:wrap;
border-radius: 20px;
padding: 5px;
background-color:#f1f1f191;
}

.siteseo-quick-links{
background-color:#FFF;
border-radius: 15px;
padding: 10px;
}

.siteseo-quick-access-item{
display:flex;
gap:10px;
align-items:center;
padding: 7px 4px;
}

.siteseo-quick-access-item a{
text-decoration:none;
color: #000;
}

.siteseo-need-help p{
font-size:0.8rem;
font-weight:500;
line-height:1rem;
text-align:center;
margin: 0 0 4px 0;
color:#000;
}

/* Components */

/* Buttons */
.siteseo-button{	
display: inline-flex;
outline: 0;
text-align: center;
cursor: pointer;
padding: 8px 13px;
border-radius: 3px;
border: 1px solid transparent;
transition: all .3s ease;
font-weight: 600;
text-transform: uppercase;
font-size: 11px;
text-decoration: none;
gap: 8px;
align-items:center;
justify-content:center;
}

.siteseo-btn-black{
background:  #0f172a;
border-color:  #0f172a;
color: #fff;
}

.sitesei-btn-black:hover{
background: #e4461b;
border-color: #e4461b;	
}

.siteseo-btn-transparent{
background-color:transparent;
color: currentcolor;
}

.siteseo-btn-transparent:active{
outline:0;
}

.siteseo-100{
width:100%;
}

.siteseo-tools-page{
margin-left: 2%;
margin-top:3%
}

.siteseo-admin-softaculous-branding{
text-align:center;
font-size:0.8rem;
font-weight:500;
margin-top:10px;
}

.siteseo-card .siteseo-feature-new-badge{
color:white;
background-color:red; 
align-self: flex-end;
font-weight:bold;
padding:3px 8px;
border-radius:5px;
}

.siteseo-card .siteseo-feature-update-badge{
color:black;
background-color:#FFD700;
align-self: flex-end;
font-weight:bold;
padding:3px 8px;
border-radius:5px;
}

.siteseo-stats-container{
margin-top:50px;
border-radius: 16px;
padding: 24px;
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
border: 1px solid #E5E7EB;
z-index: 1000;
display: flex;
flex-direction: column;
gap: 16px;
margin-bottom:20px;
background-color:#FFFFFF;
margin-left: auto;
margin-right: auto;
width: 100%;
box-sizing: border-box;
}

.siteseo-stats-container h2{
font-size: 15px;
font-weight: 600;
color: #111827;
margin: 0;	
}

/* Horizontal separator line */
.siteseo-stats-separator{
border: 0;
height: 1px;
background: #eee;
margin: 0 0 30px 0;
}

/* List container */
.siteseo-stats-list{
list-style: none;
padding: 0;
margin: 0;
display: flex;
justify-content: space-evenly;
flex-wrap: wrap;
gap: 2px;
}

/* Individual statistic item */
.siteseo-stat-item{
flex: 0 1 15%;
padding: 10px;
box-sizing: border-box;
max-width: 15%;
}

/* Header for each stat (Label and info icon) */
.siteseo-stat-header{
display: flex;
align-items: center;
margin-bottom: 15px;
}

.siteseo-stat-label{
font-size: 14px;
color: #555;
font-weight: 500;
}

.siteseo-stat-value-group{
display: flex;
align-items: baseline;
gap: 10px;
flex-wrap: wrap;
}

.siteseo-stat-value{
font-size: 32px;
font-weight: 700;
color: #333;
line-height: 1;
}

/* Percentage/Absolute change indicator */
.siteseo-stat-change {
font-size: 14px;
font-weight: 600;
display: flex;
align-items: center;
line-height: 1;
padding-top: 5px;
}

/* Color for negative change (red/down) */
.siteseo-stat-change.negative{
color: #d9534f;
}

/* Color for positive change (green/up) */
.siteseo-stat-change.positive{
color: #5cb85c;
}

/* Arrow styling */
.siteseo-stat-change .siteseo-arrow{
font-size: 10px;
margin-right: 2px;
}

/* --- Dashboard Grid Styles --- */
.siteseo-dashboard-grid{
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 20px;
font-family: Arial, sans-serif;
min-width: 0;
}

/* Individual Metric Card */
.siteseo-metric-card{
background-color: #fff;
padding: 15px;
border: 1px solid #e0e0e0;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
box-sizing: border-box;
}

/* Header/Title */
.siteseo-metric-header{
margin-bottom: 15px;
}

.siteseo-metric-title{
font-size: 14px;
color: #555;
font-weight: 500;
}

/* Row containing the main value and the change indicator */
.siteseo-metric-value-row{
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 10px;
flex-wrap: wrap;
gap: 10px;
}

/* Main Metric Value */
.siteseo-metric-value{
font-size: 30px;
font-weight: 700;
color: #333;
line-height: 1.2;
}

.siteseo-metric-change{
font-size: 14px;
font-weight: 600;
margin-top: 5px;
}

/* Colors for positive and negative changes */
.siteseo-change-positive{
color: #28a745;
}

.siteseo-change-negative{
color: #dc3545;
display:inline-flex;
align-items:center;
}

/* Chart Container to manage canvas size */
.siteseo-chart-container{
height: 80px;
width: 100%;
}

.siteseo-statistics-index-icon{
color:green;
}

.siteseo-statistics-noindex-icon{
color:red;
}

.siteseo-arrow-up{
color:green;
}

.siteseo-blur-background{
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 999;
backdrop-filter: blur(1px);
background-color: rgba(255, 255, 255, 0.5);
}

.siteseo-upgrade-pro-notice-btn{
display: inline-block;
padding: 6px;
font-size: 13px;
font-weight: 500;
text-align: center;
text-decoration: none;
cursor: pointer;
border-radius: 4px;
border: 1px solid #5cb85c;
color: #ffffff;
background-color: #5cb85c;
transition: background-color 0.3s ease, border-color 0.3s ease, transform 0.1s ease;
}

.siteseo-statistics-connect-btn{
display: inline-block;
padding: 8px;
font-size: 13px;
font-weight: 500;
text-align: center;
text-decoration: none;
cursor: pointer;
border-radius: 4px;
border: 1px solid #5cb85c;
color: #ffffff;
background-color: var(--siteseo-theme-color);
transition: background-color 0.3s ease, border-color 0.3s ease, transform 0.1s ease;	
}

.siteseo-statistics-connect-btn,
.siteseo-statistics-connect-btn:link,
.siteseo-statistics-connect-btn:visited{
color: #ffffff !important;
}


.siteseo-statistics-wrapper{
display: flex;
justify-content: flex-end;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}

.siteseo-statistics-sites,
.siteseo-statistics-disconnect{
padding: 3px 10px;
border-radius: 6px;
background-color: #f1f1f191;
font-weight: 500;
border: 1px solid #E5E7EB;
}

.siteseo-statistics-sites span.dashicons,
.siteseo-statistics-disconnect{
cursor:pointer;
}

.siteseo-audience-statisc{
display: flex !important;
flex-direction: row;
flex-wrap: nowrap;
gap: 20px;
}

.siteseo-audience-statisc .siteseo-stats-container{
margin-top:30px !important;
margin-bottom:unset !important;
flex: 1;
}

/*** dialog-box **/
#siteseo-site-connection-dialog{
border-radius: 12px !important;
overflow: hidden !important;
}

/* For jQuery UI dialog wrapper */
.siteseo-modal.ui-dialog{
border-radius: 12px !important;
overflow: hidden !important;
border: none !important;
}

.siteseo-modal .ui-dialog-titlebar{
border-radius: 12px 12px 0 0 !important;
}

.siteseo-modal .ui-dialog-content{
border-radius: 0 0 12px 12px !important;
}

.siteseo-form-group{
margin-bottom: 15px;
}

.siteseo-select-box{
width: 100% !important;
max-width: 100% !important;
padding: 8px 30px 8px 10px !important;
height: 38px !important;
line-height: 1.4 !important;
border: 1px solid #8c8f94 !important;
border-radius: 4px !important;
background: #fff url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><path fill="%23163d89" d="M6 9L1 4h10z"/></svg>') no-repeat right 10px center !important;
background-size: 12px !important;
font-size: 13px !important;
appearance: none !important;
-webkit-appearance: none !important;
-moz-appearance: none !important;
box-sizing: border-box !important;
overflow: hidden !important;
text-overflow: ellipsis !important;
white-space: nowrap !important;
}

.siteseo-select-box option{
padding: 5px 10px !important;
font-size: 13px !important;
}

.siteseo-select-box:focus{
border-color: #163d89 !important;
box-shadow: 0 0 0 1px #163d89 !important;
outline: none !important;
}

.siteseo-not-connected-notice{
margin-bottom: 15px;
}

.siteseo-connect-options{
margin-top: 10px;
}

.siteseo-dialog-actions{
text-align: center;
margin-top: 15px;
padding-top: 15px;
border-top: 1px solid #ddd;
display: flex;
gap: 10px;
justify-content: center;
flex-wrap: wrap;
}

#siteseo-save-connection, 
#siteseo-create-gsc-property, 
#siteseo-connect-existing{
background: #163d89 !important;
box-shadow: 0 4px 10px rgba(22, 61, 137, 0.4) !important;
border-radius: 8px !important;
padding: 6px 22px !important;
font-size: 12px !important;
font-weight: 700 !important;
color: #fff !important;
border-color: #163d89 !important;
}

#siteseo-cancel-connection{
background: #163d89 !important;
box-shadow: 0 4px 10px rgba(22, 61, 137, 0.4) !important;
border-radius: 8px !important;
padding: 6px 22px !important;
font-size: 12px !important;
font-weight: 700 !important;
color: #fff !important;
border-color: #163d89 !important;
}

#siteseo-back-to-main{
background: transparent !important;
box-shadow: 0 4px 10px rgba(218, 216, 201, 0.4) !important;
border-radius: 8px !important;
padding: 6px 22px !important;
font-size: 12px !important;
font-weight: 700 !important;
color: #163d89 !important;
border: 1px solid #163d89 !important;
}

.siteseo-create-btn{
display: block !important;
margin: 10px auto !important;
width: fit-content !important;
}

/** score of analaytics*/
.siteseo-gsc-score-good{
background-color: #e6f7e6;
color: #34a853;
display: inline-block;
padding:8px;
border-radius: 10px;
font-weight: bold;
font-family: system-ui, sans-serif;
line-height: 1;
}

.siteseo-gsc-score-avg{
background-color: #FFF8D9;
color: #AD7F00;
display: inline-block;
padding:8px;
border-radius: 10px;
font-weight: bold;
font-family: system-ui, sans-serif;
line-height: 1;
}

.siteseo-gsc-score-bad{
background-color: #FCEEED;
color: #B91C1C;
display: inline-block;
padding:8px;
border-radius: 10px;
font-weight: bold;
font-family: system-ui, sans-serif;
line-height: 1;
}

/** Search Console Pro Feature Notices*/
.siteseo-blur-overlay{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: transparent;
backdrop-filter: blur(3px);
z-index: 9999;
border-radius: 4px;
}

.siteseo-pro-notice-center{
position: fixed;
top: 50%;
left: 55%;
transform: translate(-50%, -50%);
background: white;
padding: 40px;
border-radius: 8px;
box-shadow: 0 10px 30px rgba(0,0,0,0.2);
text-align: center;
z-index: 9999;
min-width: 400px;
max-width: 500px;
}

.siteseo-pro-notice-content h3{
margin: 0 0 15px 0;
font-size: 30px;
color: #333;
}

.siteseo-pro-notice-content p{
margin: 0 0 25px 0;
color: #666;
line-height: 1.5;
}

.siteseo-pro-notice-buttons{
display: flex;
gap: 15px;
justify-content: center;
font-weight: 600;
padding:unset!important;
}
			
.siteseo-lock-icon{
font-size: 50px;
width: 50px;
height: 50px;
color: #FFD700;
}

.siteseo-link-icon{
font-size: 50px;
width: 50px;
height: 50px;
color: #163d89;
}

.siteseo-statistics-data-range{
font-size:15px;
}

.siteseo-stats-container .siteseo-inner-tabs-wrap{
border-bottom:unset !important;
}

.siteseo-search-console .siteseo-notice p{
padding:5px;
}

.siteseo-promo-modern-card{
margin-top:20px;
background: var(--siteseo-promo-bg-surface);
border-radius: 12px;
padding: 24px;
/* Modern 'floating' shadow */
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.05), 0 4px 6px -2px rgba(0, 0, 0, 0.025); 
border: 1px solid rgba(0,0,0,0.05);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
max-width: 100%;
box-sizing: border-box;
position: relative;
overflow: hidden;
}

/* Subtle radial sheen in background */
.siteseo-promo-modern-card::before{
content: '';
position: absolute;
top: -50px;
right: -50px;
width: 150px;
height: 150px;
background: var(--siteseo-promo-gradient);
opacity: 0.1;
filter: blur(40px);
border-radius: 50%;
pointer-events: none;
}

.siteseo-promo-header-group{
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 8px;
}

.siteseo-promo-title{
font-size: 18px;
font-weight: 700;
color: var(--siteseo-promo-text-main);
margin: 0;
letter-spacing: -0.025em;
}

.siteseo-promo-badge-pro{
background: var(--siteseo-promo-gradient);
color: #fff;
font-size: 10px;
font-weight: 800;
text-transform: uppercase;
padding: 4px 8px;
border-radius: 20px;
letter-spacing: 0.05em;
line-height: 1;
}

.siteseo-promo-desc{
font-size: 13px;
color: var(--siteseo-promo-text-muted);
margin: 0 0 20px 0;
line-height: 1.5;
}

.siteseo-promo-feature-list{
list-style: none;
padding: 0;
margin: 0 0 24px 0;
}

.siteseo-promo-feature-item{
display: flex;
align-items: center;
margin-bottom: 12px;
font-size: 14px;
color: var(--siteseo-promo-text-main);
font-weight: 500;
}

/* Custom Gradient Checkmark */
.siteseo-promo-check-circle{
width: 20px;
height: 20px;
border-radius: 50%;
background: rgba(99, 102, 241, 0.1); /* Low opacity brand color */
display: flex;
align-items: center;
justify-content: center;
margin-right: 12px;
flex-shrink: 0;
}

.siteseo-promo-check-icon{
width: 10px;
height: 6px;
border-left: 2px solid var(--siteseo-promo-primary);
border-bottom: 2px solid var(--siteseo-promo-primary);
transform: rotate(-45deg);
margin-top: -2px;
}

.siteseo-promo-btn-main{
display: flex;
justify-content: center;
align-items: center;
width: 100%;
padding: 12px;
background: var(--siteseo-promo-gradient);
color: #ffffff;
text-decoration: none;
border-radius: 8px;
font-weight: 600;
font-size: 14px;
transition: all 0.2s ease;
box-shadow: 0 4px 6px -1px rgba(99, 102, 241, 0.3);
border: none;
cursor: pointer;
}

.siteseo-promo-btn-main:hover{
transform: translateY(-1px);
box-shadow: 0 10px 15px -3px rgba(99, 102, 241, 0.4);
color: #ffffff;
}

.siteseo-promo-btn-main:active{
transform: translateY(0);
}

.siteseo-promo-btn-text{
margin-right: 6px;
}

/* Simple arrow animation on hover */
.siteseo-promo-arrow{
transition: transform 0.2s ease;
}
.siteseo-promo-btn-main:hover .siteseo-promo-arrow{
transform: translateX(3px);
}

/* Responsive Media Queries */
@media (max-width: 1200px){
.siteseo-stats-container{
margin-left: 20px;
margin-right: 20px;
padding: 20px;
}
}

@media (max-width: 992px){
.siteseo-dashboard-grid{
grid-template-columns: 1fr;
}

.siteseo-audience-statisc{
flex-direction: column;
}

.siteseo-audience-statisc .siteseo-stats-container{
flex: none;
}

.siteseo-stat-item{
flex: 0 1 30%;
max-width: 30%;
}
}

@media (max-width: 768px){
.siteseo-stats-container{
margin-top: 30px;
margin-left: 15px;
margin-right: 15px;
padding: 15px;
border-radius: 12px;
}

.siteseo-stats-list{
flex-direction: column;
gap: 15px;
}

.siteseo-stat-item{
flex-basis: 100%;
max-width: 100%;
margin-bottom: 15px;
padding-right: 0;
border-bottom: 1px solid #eee; 
padding-bottom: 15px;
}

.siteseo-stat-item:last-child{
border-bottom: none;
margin-bottom: 0;
padding-bottom: 0;
}

.siteseo-stat-value{
font-size: 28px;
}

.siteseo-metric-value{
font-size: 26px;
}

.siteseo-statistics-wrapper{
justify-content: flex-start;
}

.siteseo-dialog-actions{
flex-direction: column;
align-items: center;
}

.siteseo-dialog-actions button{
width: 100%;
max-width: 200px;
}
}

@media (max-width: 576px){
.siteseo-stats-container{
margin-left: 10px;
margin-right: 10px;
padding: 12px;
border-radius: 8px;
margin-top: 20px;
}

.siteseo-dashboard-grid{
grid-template-columns: 1fr;
gap: 15px;
}

.siteseo-metric-card{
padding: 12px;
}

.siteseo-metric-value{
font-size: 24px;
}

.siteseo-stat-value{
font-size: 24px;
}

.siteseo-stat-value-group{
flex-direction: column;
align-items: flex-start;
gap: 5px;
}

.siteseo-metric-value-row{
flex-direction: column;
align-items: flex-start;
gap: 5px;
}

.siteseo-statistics-wrapper{
flex-direction: column;
align-items: flex-start;
gap: 10px;
}

.siteseo-chart-container{
height: 60px;
}

/* Ensure canvas elements are responsive */
canvas{
max-width: 100%;
height: auto !important;
}
}

@media (max-width: 480px){
.siteseo-stats-container{
margin-left: 5px;
margin-right: 5px;
padding: 10px;
}

.siteseo-stat-value{
font-size: 22px;
}

.siteseo-metric-value{
font-size: 22px;
}

.siteseo-gsc-score-good,
.siteseo-gsc-score-avg,
.siteseo-gsc-score-bad{
padding: 6px;
font-size: 12px;
}
}

@media (max-width: 768px){
.siteseo-history-table{
width: 100%;
overflow-x: auto;
display: block;
}
    
.siteseo-history-table th,
.siteseo-history-table td{
white-space: nowrap;
}
}

.siteseo-pro-tag{
position:relative;
display:inline-block;
margin-left: 10px;
padding: 3px;
border-radius: 3px;
background-color: gold;
font-weight: 500;
color: #212529de;
font-size: 1.0rem;
line-height: 1.1rem;
}

.siteseo-pro-tag::before{
content: '';
display: inline-block;
position: absolute;
background: rgba(255, 255, 255, 0.5);
width: 10px;
height: 100%;
top: 0;
left:0;
filter:blur(3px);
transform: skewX(-15deg);
animation: siteseo-shine 2s ease-in-out infinite;
}

@keyframes siteseo-shine{
	0% {
		opacity: 0.5;
		left: 60px;
		transition-property: opacity, left;
	},
	100% {
		opacity: 0.6;
		left: 50px;
		transition-property: opacity, left;
	}
}PK��f\X*�b~~assets/css/cookies.cssnu�[���#siteseo-cookie-bar .siteseo-cookie-bar-content{
display: flex;
flex-direction: column;
align-items: center;
gap: 5px;
}

#siteseo-cookie-bar{
position: fixed;
z-index: 9999;
width: 100%;
padding: 15px 20px;
display: flex;
justify-content: center;
align-items: center;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
text-align: center;
box-sizing: border-box;
display: none;
}

.siteseo-cookie-bar-bottom{
bottom: 0;
left: 0;
}

.siteseo-cookie-bar-middle{
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: auto;
}

.siteseo-cookie-bar-top{
top: 0;
left: 0;
}

.siteseo-cookie-bar-backdrop{
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0,0,0,0.5);
z-index: 9998;
display: none;
}

.siteseo-cookie-bar-button{
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 14px;
margin: 5px;
}

#siteseo-cookie-bar-accept{
background-color: var(--primary-btn-bg, #0073aa);
color: var(--primary-btn-text, #ffffff);
}

#siteseo-cookie-bar-accept:hover{
background-color: var(--primary-btn-hover-bg, #005f8d);
color: var(--primary-btn-hover-text, #ffffff);
}

#siteseo-cookie-bar-close{
background-color: var(--secondary-btn-bg, #e0e0e0);
color: var(--secondary-btn-text, #000000);
}

#siteseo-cookie-bar-close:hover{
background-color: var(--secondary-btn-hover-bg, #c4c4c4);
color: var(--secondary-btn-hover-text, #000000);
}

#siteseo-cookie-bar-manage-btn{
position: fixed;
bottom: 20px;
left: 20px;
z-index: 9999;
cursor: pointer;
padding: 10px 15px;
border-radius: 5px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
display: block;
text-decoration: none;
transition: background-color 0.3s ease;
}

#siteseo-cookie-bar-manage-btn:hover{
background-color: var(--primary-btn-hover-bg, #005f8d);
color: var(--primary-btn-hover-text, #ffffff);
}

.siteseo-cookie-bar-buttons{
display: flex;
justify-content: center;
align-items: center;
gap: 10px;
margin-top: 10px;
}PK��f\�1�^�b�bassets/css/metabox.cssnu�[���/***** metabox ****/
/* Metabox Styles */
.siteseo-metabox-tabs{
display:flex;
flex-wrap:nowrap;
background-color: #ededed;
font-weight:500;
font-size:1.05em;
overflow-x: auto;
-webkit-overflow-scrolling:touch;
scrollbar-width: thin;
}

.siteseo-metabox-tabs::-webkit-scrollbar{
height: 6px;
}

.siteseo-metabox-tabs::-webkit-scrollbar-thumb{
background-color: #ccc;
border-radius: 3px;
}

.siteseo-metabox-subtabs{
display:flex;
flex-wrap:nowrap;
justify-content:center;
font-weight:500;
font-size:1.05em;
}

.siteseo-noindex-warning{
color: #EB0F00;
margin-right: 5px;
cursor:pointer;
}

.siteseo-metabox-tabs input,
.siteseo-metabox-subtabs input{
display:none;
}

.siteseo-metabox-tab * {
box-sizing:border-box;
}

.siteseo-metabox-tab,
.siteseo-metabox-subtab{
display:none;
}

.siteseo-metabox-tabs > div,
.siteseo-metabox-subtabs > div{
cursor:pointer;
padding: 20px;
display:inline-flex;
align-items:center;
justify-content:center;
text-align:center;
user-select: none;
}

.siteseo-metabox-tabs > div,
.siteseo-metabox-subtabs > div{
border-bottom: 2px solid transparent;
}

.siteseo-metabox-tab-label-active{
border-bottom: 2px solid #00308F !important;
color: #00308F;
}

.siteseo-metabox-tab{
padding: 10px;
}

.siteseo-metabox-option-wrap{
display:flex;
width: 100%;
padding: 20px;
flex-wrap:wrap;
border-bottom: 1px solid #eee;
}

#siteseo-post-metabox .siteseo-sidebar-tabs,
#wpbody-content .siteseo-sidebar-tabs{
display:none;
}

/* Side bar tabs */
#siteseo-sidebar-wrapper .siteseo-metabox-tabs{
display:none;
}

#siteseo-sidebar-wrapper .siteseo-sidebar-tabs{
position:relative;
display:flex;
justify-content:space-between;
align-items:center;
width: 100%;
padding:16px;
border:1px solid #e0e0e0;
font-weight: 600;
cursor:pointer;
user-select:none;
}

#siteseo-sidebar-wrapper .analysis-score > p{
margin: 10px !important;
}

#siteseo-sidebar-wrapper .analysis-score .siteseo-tooltip{
display:none;
}

#siteseo-sidebar-wrapper .analysis-score > span{
display:none;
}

#siteseo-sidebar-wrapper .siteseo-sidebar-tabs:hover{
background: #f0f0f0;
}

#siteseo-sidebar-wrapper > span{
display:inline-block;
}

#siteseo-sidebar-wrapper .siteseo-sidebar-tabs-opened span.siteseo-sidebar-tabs-arrow > .dashicons{
transform: rotate(180deg);
}

#siteseo-sidebar-wrapper .siteseo-metabox-option-wrap{
padding: 5px;
gap:10px;
}

#siteseo-sidebar-wrapper .siteseo-metabox-option-wrap:not(:last-child){
margin-bottom: 10px;
}

#siteseo-sidebar-wrapper .siteseo-metabox-search-preview h3{
font-size:17px;
}

#siteseo-sidebar-wrapper .siteseo-search-preview-description{
font-size:13px;
}

.siteseo-metabox-option-wrap .siteseo-metabox-label-wrap{
flex-basis: 20%;
width: 100%;
}

.siteseo-metabox-label-wrap label{
font-weight: 500;
font-size: 1.2em;
}

.siteseo-metabox-option-wrap > .siteseo-metabox-input-wrap,
.siteseo-metabox-option-wrap > .siteseo-metabox-search-preview{
flex-basis: 55%;
width: 100%;
}

.siteseo-metabox-input-wrap .siteseo-tag-dropdown{
display: inline-block !important;
color:#00308F !important;
background-color:transparent !important;
padding: 2px 5px !important;
outline: none;
height: unset;
}

.siteseo-search-preview-desktop{
max-width: 652px;
width: 100%;
border: 1px solid #d8d8d8;
padding: 15px;
border-radius: 1px;
background-color: white;
}

.siteseo-metabox-search-preview h3{
font-family: arial, sans-serif;
font-size: 20px;
font-weight: 400;
color: #1a0dab;
padding:0;
margin:5px 0 3px 0;
}

.siteseo-search-preview-metadata{
display:flex;
gap:7px;
align-items:center;
}

.siteseo-search-preview-metadata-link > div:first-child{
font-size:14px;
color: #202124;
white-space: nowrap;
}

.siteseo-search-preview-metadata-link cite{
font-size: 12px;
line-height: 18px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: #4d5156;
font-style: normal;
}

.siteseo-search-preview-toggle{
text-align:left;
margin-bottom: 4px;
user-select:none;
color: #00308F;
font-weight:bold;
cursor:pointer;
text-decoration:underline;
}

.siteseo-search-preview-description{
color:#4d5156;
font-family: arial, sans-serif;
font-size: 14px;
}

.siteseo-metabox-tags{
display: flex;
flex-wrap: wrap;
gap: 4px;
margin-top:5px;
margin-bottom:5px;
}

.siteseo-metabox-tags button{
outline: none;
border: 1px solid #00308F;
border-radius: 2px;
color: #00308F;
background-color:transparent;
padding: 2px 10px;
}

.siteseo-metabox-tags button:hover{
background-color:#f3f3f3;
cursor: pointer;
}

.siteseo-metabox-limits{
display:flex;
flex-wrap: wrap;
gap: 5px;
justify-content:space-between;
align-items:flex-start;
width: 100%;
}

.siteseo-metabox-limits-meter{
flex-basis : 65%;
}

.siteseo-metabox-limits-meter span{
display:inline-block;
height: 10px;
background: rgb(0,255,46);
background-color: #00308F;
}

.siteseo-metabox-limits-numbers{
flex-basis : 30%;
text-align: right;
}

.siteseo-metabox-readibility-analysis-tab,
.siteseo-metabox-seo-analysis-tab{
width:60%;
margin:0 auto;
margin-top:5px;
}

.siteseo-analysis-summary{
display:flex;
justify-content:center;
margin-bottom: 10px;
width: 100%;
}

.siteseo-analysis-summary .siteseo-analysis-summary-pill{
padding: 3px 15px;
border-radius: 50px;
display:flex;
justify-content:space-between;
border:1px solid #d3d3d3;
gap:10px;
}

.siteseo-analysis-summary .siteseo-analysis-summary-pill > span{
display:inline-flex;
flex-wrap:nowrap;
white-space: nowrap;
align-items:center;
gap:5px;
}

.siteseo-analysis-summary .siteseo-analysis-summary-pill svg{
width: 12px;
}

#siteseo-sidebar-wrapper .siteseo-analysis-summary-pill{
width: 100%;
}

#siteseo-sidebar-wrapper .siteseo-metabox-readibility-analysis-tab,
#siteseo-sidebar-wrapper .siteseo-metabox-seo-analysis-tab{
width:100%;
margin-top:20px;
}

#siteseo-sidebar-wrapper .siteseo-metabox-option-wrap > .siteseo-metabox-input-wrap,
#siteseo-sidebar-wrapper .siteseo-metabox-option-wrap > .siteseo-metabox-search-preview{
flex-basis: 100%;
}

#siteseo-sidebar-wrapper .siteseo-metabox-search-preview h3{
text-transform:none;
line-height:1;
}

#siteseo-sidebar-wrapper .siteseo-metabox-option-wrap .siteseo-metabox-label-wrap{
flex-basis: 100%;
}

#siteseo-sidebar-wrapper .siteseo-metabox-limits-meter{
flex-basis : 100%;
}

#siteseo-sidebar-wrapper .siteseo-metabox-limits-numbers{
flex-basis : 100%;
text-align: left;
}

#siteseo-sidebar-wrapper .siteseo-search-preview-toggle{
display:none;
}


@media only screen and (max-width: 700px) {
.siteseo-metabox-option-wrap > .siteseo-metabox-input-wrap,
.siteseo-metabox-option-wrap > .siteseo-metabox-search-preview{
	flex-basis: 100%;
}

.siteseo-metabox-option-wrap .siteseo-metabox-label-wrap{
	flex-basis: 100%;
}

.siteseo-metabox-limits-meter{
	flex-basis : 100%;
}

.siteseo-metabox-limits-numbers{
	flex-basis : 100%;
	text-align: left;
}

.siteseo-search-preview-toggle{
	display:none;
}

.siteseo-metabox-readibility-analysis-tab,
.siteseo-metabox-seo-analysis-tab{
	width: 100%;
	margin: 0;
}

}

.siteseo-metabox-option-wrap input[type="checkbox"]:focus,
.siteseo-metabox-option-wrap input[type="text"]:focus,
.siteseo-metabox-option-wrap select:focus,
.siteseo-metabox-option-wrap textarea:focus{
border: 2px solid #003399;
}

.siteseo-metabox-option-wrap input[type="text"]{
width:100%;
}

.siteseo-metabox-option-wrap textarea{
width:100%;
}

.siteseo-metabox-option-wrap input[type="checkbox"]:checked::before{
content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e");
background: #00308F;;
width: 100%;
height: 100%;
margin: 0 !important;
display: inline-block;
}

.siteseo-metabox-option-wrap input[type="checkbox"]{
box-shadow: 0 0 0 transparent;
border: 1px solid #a4a4a4;
border-radius: 4px;
cursor: pointer;
outline: 0;
text-align: center;
width: 20px;
height: 20px;
-webkit-appearance: none;
appearance: none;
transition: 0.3s all ease-in-out;
box-sizing: border-box;
padding: 0!important;
display: inline-block;
}


.siteseo-metabox-x-preview{
max-width:600px;
max-height:314px;
position:relative;
border-radius:16px;
}

.siteseo-metabox-x-image{
width:100%;
height:100%;
border-radius:16px;
}

.siteseo-metabox-x-image img{
width:100%;
height:100%;
object-fit:cover;
aspect-ratio: 1.91/1;
border-radius:14px;
}

.siteseo-metabox-x-data{
position: absolute;
left: 10px;
border-radius: 4px;
padding: 2px 10px;
bottom: 12px;
color: white;
background-color: rgba(0, 0, 0, 0.77);
width: auto;
max-width: calc(100% - 20px);
white-space: nowrap;
}

.siteseo-metabox-x-host{
font-size:13px;
color: rgb(113, 118, 123);
}

.siteseo-metabox-fb-preview{
width: 100%;
max-width:600px;
max-height:500px;
position:relative;
}

.siteseo-metabox-fb-image{
width:100%;
max-height:314px;
}

.siteseo-metabox-fb-image img{
width:100%;
height:100%;
object-fit:cover;
aspect-ratio:1.91/1;
}

.siteseo-metabox-fb-data{
background-color:#f2f3f5;
padding:10px;
border-left:1px solid #dedddd;
border-right:1px solid #dedddd;
border-bottom:1px solid #dedddd;
width:100%;
}
.siteseo-metabox-fb-host{
font-size:12px;
color:#606770;
text-transform:uppercase;
}

.siteseo-metabox-fb-title{
font-size:16px;
line-height:20px;
font-weight:bold;
display:-webkit-box;
-webkit-box-orient:vertical;
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow:ellipsis;
}

.siteseo-metabox-fb-desc{
width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
color: #606770;
font-size: 14px;
line-height: 20px;
word-break: break-word;
}
/**** anlayisis***/

/* Content Analysis */
.analysis-score .siteseo-tooltip {
vertical-align: middle;
font-size: 0.75em;
}

#siteseo-metabox-content-analysis .wrap-insights-post .siteseo-tooltip * {
font-weight: normal;
}

#siteseo-metabox-content-analysis .wrap-insights-post .siteseo-tooltip-headings {
font-weight: bold;
}

#siteseo-metabox-content-analysis a {
color: #00308F;
}

#siteseo-metabox-content-analysis a.nounderline,
#siteseo-metabox-content-analysis a.nounderline:hover {
text-decoration: none;
}

#siteseo-metabox-content-analysis .wrap-siteseo-analysis {
display: inline-block;
width: 100%;
}

#siteseo-metabox-content-analysis .col-left {
width: calc(50% - 30px);
float: left;
margin-right: 30px;
}

#siteseo-metabox-content-analysis .col-right {
float: right;
width: 50%;
}

#siteseo-metabox-content-analysis #siteseo_suggestions {
display: inline-block;
width: 100%;
margin: 0;
height: auto;
padding: 20px 0;
position: relative;
left: -5px;
}

#siteseo-metabox-content-analysis #siteseo_suggestions li {
list-style: none;
margin: 5px;
display: inline-block;
}

#siteseo-metabox-content-analysis .analysis-score {
clear: both;
border-top: 1px solid #e2e4e7;
display: flex;
justify-content: space-between;
align-items: center;
}

.inline-edit-row fieldset label textarea .column-siteseo_score .analysis-score {
display: flex;
align-content: center;
}

#siteseo-metabox-content-analysis .analysis-score p,
.column-siteseo_score .analysis-score p {
font-weight: bold;
font-size: 1.2em;
}

#siteseo-ca-tabs .siteseo-gsc-render {
margin: 1rem 0;
}

#siteseo-ca-tabs .dashicons {
vertical-align: middle;
margin-right: 1rem;
}

#siteseo-ca-tabs .siteseo-gsc-verdict .dashicons {
font-size: 30px;
width: 30px;
height: 30px;
}

#siteseo-ca-tabs .dashicons-yes-alt {
color: #4ab866;
}

#siteseo-ca-tabs .dashicons-info {
color: #ffba00;
}

#siteseo-ca-tabs .dashicons-dismiss {
color: #eb0f00;
}

#siteseo-ca-tabs .siteseo-gsc-analysis {
margin-top: 1rem;
margin-bottom: 1rem;
display: inline-block;
width: 100%;
}

#siteseo-ca-tabs .siteseo-gsc-cat {
border-bottom: 1px solid var(--borderColorCard);
margin-bottom: 0.5rem;
font-weight: bold;
padding-bottom: 0.5rem;
}

#siteseo-ca-tabs .siteseo-gsc-analysis .siteseo-gsc-item {
display: flex;
}

#siteseo-ca-tabs .siteseo-gsc-analysis .siteseo-gsc-item-name {
width: 240px;
}

#siteseo-ca-tabs .siteseo-gsc-analysis .siteseo-gsc-item div {
margin: 0.5rem 0;
}

#siteseo-ca-tabs .siteseo-gsc-summary {
display: block;
padding: 20px;
margin: 20px 0;
top: 0;
left: 0;
}

#siteseo-ca-tabs .siteseo-gsc-verdict {
font-weight: bold;
font-size: 1.2em;
}

#siteseo-metabox-content-analysis .analysis-score svg,
.column-siteseo_score .analysis-score svg {
display: inline-block;
height: 30px;
width: 30px;
margin: 0;
border-radius: 100%;
position: relative;
font-weight: 600;
shape-rendering: geometricprecision;
font-size: 0.5rem;
vertical-align: middle;
margin-right: 15px;
}

.column-siteseo_score .analysis-score p,
.column-siteseo_score .analysis-score svg {
margin: 0;
}

@keyframes loadingPulse {
0% {
	stroke: #adc5d2;
}

50% {
	stroke: #00a0d2;
}

100% {
	stroke: #adc5d2;
}
}

#siteseo-metabox-content-analysis .analysis-score .loading #bar {
stroke-dashoffset: 0 !important;
stroke: #adc5d2 !important;
animation: loadingPulse 3s infinite ease-in-out;
}

#siteseo-metabox-content-analysis .analysis-score .good #bar,
.column-siteseo_score .analysis-score #bar.good {
stroke: var(--colorSuccess);
}

#siteseo-metabox-content-analysis .analysis-score .notgood #bar,
.column-siteseo_score .analysis-score #bar.notgood {
stroke-dashoffset: 101px;
stroke: var(--colorWarning);
}

#siteseo-metabox-content-analysis .analysis-score svg circle,
.column-siteseo_score .analysis-score svg circle {
stroke-dashoffset: 0;
transition: stroke-dashoffset 1s linear;
stroke: #ccc;
stroke-width: 2em;
}

#tab_siteseo_page_speed .ps-score svg path,
#tab_siteseo_ps .ps-score svg path{
stroke-linecap: round;
stroke-width: 2.8;
fill: none;
}

#tab_siteseo_page_speed .ps-score,
#tab_siteseo_ps .ps-score{
position: relative;
display: inline-block;
}

#tab_siteseo_page_speed .ps-score svg,
#tab_siteseo_ps .ps-score svg{
width: 80px;
height: 80px;
}

#tab_siteseo_page_speed .ps-score span,
#tab_siteseo_ps .ps-score span{
font-weight: bold;
left: 0;
position: absolute;
top: 0;
width: 80px;
height: 80px;
align-items: center;
display: flex;
justify-content: center;
margin: 0;
}

#tab_siteseo_page_speed .ps-score.green #bar,
#tab_siteseo_ps .ps-score.green #bar {
stroke: #4ab866;
}

#tab_siteseo_page_speed .ps-score.yellow #bar,
#tab_siteseo_ps .ps-score.yellow #bar{
stroke: #ffba00;
}

#tab_siteseo_page_speed .ps-score.red #bar,
#tab_siteseo_ps .ps-score.red #bar{
stroke: #eb0f00;
}

#tab_siteseo_ps .score,
.wrap-siteseo-score .score{
width: 12px;
height: 12px;
display: inline-block;
margin-right: 10px;
vertical-align: middle;
}

#tab_siteseo_ps .score.red,
.wrap-siteseo-score .score.red{
border-bottom-color: var(--colorAlert);
border-bottom-style: solid;
border-bottom-width: 12px;
border-left-color: rgba(0, 0, 0, 0);
border-left-style: solid;
border-left-width: 6px;
border-right-color: rgba(0, 0, 0, 0);
border-right-style: solid;
border-right-width: 6px;
}

.wrap-siteseo-score small{
font-size: 12px;
}

.wrap-siteseo-score small.red,
.wrap-siteseo-score small.yellow{
color: #eb0f00;
}

#tab_siteseo_ps .score.yellow,
.wrap-siteseo-score .score.yellow{
background-color: #ffba00;
display: inline-block;
}

#tab_siteseo_ps .score.green,
.wrap-siteseo-score .score.green{
border-radius: 100%;
background-color: #4ab866;
}

.wrap-siteseo-score small.green{
color: #4ab866;
}

.wrap-siteseo-score .score.null{
background: #ccc;
border-radius: 100%;
}

#siteseo-metabox-content-analysis .siteseo-analysis-block{
clear: both;
}

#siteseo-metabox-content-analysis .siteseo-analysis-block-title{
display:flex;
align-items:center;
gap: 10px;
position: relative;
}

#siteseo-metabox-content-analysis .siteseo-analysis-block .impact.good svg{
fill: #4ab866;
width: 14px;
height: 14px;
}

#siteseo-metabox-content-analysis .siteseo-analysis-block .impact.low{
fill: #ffba00;
width: 14px;
height: 14px;
}

#siteseo-metabox-content-analysis .siteseo-analysis-block .impact.medium{
fill: #e39f48;
width: 14px;
height: 14px;
}

#siteseo-metabox-wrapper .impact.high,
#siteseo-metabox-content-analysis .siteseo-analysis-block .impact.high{
fill: #eb0f00;
width: 14px;
height: 14px;
}

#siteseo-metabox-content-analysis .siteseo-analysis-block-content .impact.high{
fill: #eb0f00;
box-shadow: none;
color: #fff;
padding: 2px 4px;
margin-left: 5px;
border-radius: 4px;
font-weight: bold;
}

#siteseo-metabox-content-analysis .siteseo-analysis-block .impact.warning{
fill: #ffba00;
width: 14px;
height: 14px;
}


#siteseo-metabox-content-analysis .siteseo-analysis-block .impact.warning{
fill: #e39f48;
width: 14px;
height: 14px;
}


#siteseo-metabox-wrapper .impact.error,
#siteseo-metabox-content-analysis .siteseo-analysis-block .impact.error{
fill: #eb0f00;
width: 14px;
height: 14px;
}

#siteseo-metabox-content-analysis .siteseo-analysis-block-content .impact.error{
fill: #eb0f00;
box-shadow: none;
color: #fff;
padding: 2px 4px;
margin-left: 5px;
border-radius: 4px;
font-weight: bold;
}

#siteseo-metabox-wrapper .description,
#siteseo_pro_cpt .description,
#siteseo-metabox-content-analysis .description,
.siteseo-option .description{
display: block;
font-size: 12px;
color: #757575;
}

@media only screen and (max-width: 782px){

#siteseo-metabox-wrapper .description,
#siteseo_pro_cpt .description,
#siteseo-metabox-content-analysis .description,
.siteseo-option .description{
	word-break: break-word;
}
}

#siteseo-metabox-wrapper input~span.description,
#siteseo-metabox-wrapper span.description~input,
#siteseo-metabox-content-analysis input~span.description,
#siteseo-metabox-content-analysis span.description~input,
#siteseo_pro_cpt input~span.description,
#siteseo_pro_cpt span.description~input {
margin-top: 5px;
}

#siteseo-metabox-content-analysis .siteseo-analysis-block-title{
display:flex;
justify-content: space-between;
align-items: center;
position: relative;
background: #fff;
color: #1e1e1e;
width: 100%;
border: 0;
margin: 0;
padding: 15px 5px;
line-height: unset;
text-align: left;
font-size: 14px;
font-weight: 600;
cursor: pointer;
transition: all 300ms linear;
}

#siteseo-metabox-content-analysis .siteseo-analysis-block-title > div{
display:flex;
align-items:center;
gap:10px;
}

#siteseo-metabox-content-analysis .siteseo-analysis-block-title span{
display:inline-block;
}

#siteseo-metabox-content-analysis .siteseo-analysis-block-title:hover{
background: #f3f4f5;
}

#siteseo-metabox-content-analysis .siteseo-analysis-block-title:focus{
color: #191e23;
border: none;
box-shadow: none;
outline-offset: -2px;
outline: 1px dotted #555d66;
}

#siteseo-metabox-content-analysis .siteseo-analysis-block-title .siteseo-arrow::after{
content: "\f343";
font-family: "Dashicons";
}

#siteseo-metabox-content-analysis .siteseo-analysis-block-title.open .siteseo-arrow::after{
content: "\f347";
}

#siteseo-metabox-content-analysis .siteseo-analysis-block-content{
padding: 0 1rem 0.5rem 1rem;
display: none;
width: 100%;
border-top: 1px solid #e2e4e7;
}

#siteseo-metabox-content-analysis h3{
margin: 0;
font-size: 1em;
}

/* width */
.siteseo-activity-panel-wrapper::-webkit-scrollbar,
.siteseo-tag-variables-list::-webkit-scrollbar,
.siteseo-metabox-panel-holder::-webkit-scrollbar {
width: 10px;
border-radius: 10px;
}

/* Track */
.siteseo-activity-panel-wrapper::-webkit-scrollbar-track,
.siteseo-tag-variables-list::-webkit-scrollbar-track,
.siteseo-metabox-panel-holder::-webkit-scrollbar-track {
background: #f1f1f1;
border-radius: 10px;
}

/* Handle */
.siteseo-activity-panel-wrapper::-webkit-scrollbar-thumb,
.siteseo-tag-variables-list::-webkit-scrollbar-thumb,
.siteseo-metabox-panel-holder::-webkit-scrollbar-thumb{
background: #888; 
border-radius:10px;
}

/* Handle on hover */
.siteseo-activity-panel-wrapper::-webkit-scrollbar-thumb:hover,
.siteseo-tag-variables-list::-webkit-scrollbar-thumb:hover,
.siteseo-metabox-panel-holder::-webkit-scrollbar-thumb:hover{
background: #555; 
}

#siteseo-metabox-content-analysis h4{
padding-bottom: 0.5rem;
text-transform: uppercase;
font-size: 0.85em;
position: -webkit-sticky;
/* Required for Safari */
position: sticky;
top: 0;
background: #fff;
}

.siteseo-stripes{
background-image:linear-gradient(45deg, var(--primaryColor) 25%, transparent 25%, transparent 50%, var(--primaryColor) 50%, var(--primaryColor) 75%, transparent 75%, #fff);
background-size: 15px 15px;
animation: siteseo-moving-stripes 10s linear infinite;
}

@keyframes siteseo-moving-stripes{
100% {
background-position: 100% 100%;
}
}

#siteseo-metabox-content-analysis .wrap-analysis-img ul{
display: flex;
flex-wrap: wrap;
}

#siteseo-metabox-content-analysis .wrap-analysis-img ul li{
padding: 0;
text-align: left;
cursor: default;
user-select: auto;
}

#siteseo-metabox-content-analysis .wrap-analysis-img h4{
border-bottom: 1px solid #dcdcde;
padding-bottom: 10px;
}

#siteseo-metabox-content-analysis .wrap-analysis-img ul li img{
max-width: 150px;
max-height: 150px;
object-fit: cover;
border: 1px solid #dcdcde;
cursor: default;
padding: 1px;
}

#siteseo-metabox-wrapper .dashicons,
#siteseo-analysis-tabs .dashicons,
#siteseo-readibility-tabs .dashicons{
vertical-align: middle;
}

#siteseo-analysis-tabs,
#siteseo-readibility-tabs{
clear: both;
}

#siteseo-metabox-content-analysis .dashicons-no-alt,
#siteseo-metabox-content-analysis .dashicons-yes,
#siteseo_pro_cpt .dashicons-no-alt,
#siteseo_pro_cpt .dashicons-yes{
color: #fff;
background: #4ab866;
border-radius: 50px;
margin-right: 10px;
}

#siteseo-metabox-content-analysis .dashicons-no-alt,
#siteseo_pro_cpt .dashicons-no-alt{
background: #eb0f00;
}

#siteseo-metabox-content-analysis .dashicons-thumbs-down{
color: #eb0f00;
margin-right: 10px;
}

#siteseo-metabox-content-analysis .dashicons-thumbs-up{
color: #4ab866;
margin-right: 10px;
}
/**** metabox suggestion  btn ***/

.siteseo-search-box-container{
position: sticky;
top: 0;
background-color: white;
padding: 10px;
border-bottom: 1px solid #ccc;
z-index: 2;
}

.siteseo-suggestions-container{
 max-height: calc(300px - 50px);
overflow-y: auto;
overflow-x: hidden;
padding: 5px;
}

.siteseo-suggetion .search-box{
width: 100%;
padding: 5px;
box-sizing: border-box;
border: 1px solid #ccc;
border-radius: 5px;
}

.siteseo-suggetion .section{
color: rgb(4, 4, 4);
padding: 8px;
font-weight: bold;
font-size: 12px;
border-bottom: 1px solid #eee;
cursor: pointer;
}

.siteseo-suggetion .tag{
color: #000;
display: inline-block;
background-color: #f0f0f0;
padding: 5px 10px;
border-radius: 5px;
font-family: monospace;
margin-top: 5px;
word-break: break-word;
}

.siteseo-suggetion .section:hover{
color: #fff;
background-color: #003399;
}

.siteseo-suggetion .section:hover .tag{
background-color: #fff;
}


.siteseo-option .wrap-tags{
margin: 10px;
display: flex;
gap: 10px;
}

.siteseo-option .wrap-tags button{
margin-bottom: 10px;
}

.wrap-tags button{
margin-bottom: 10px;
}

.wrap-tags{
position: relative;
display: inline-flex;
align-items: center;
gap: 10px;
margin: 0;
}

.siteseo-tag-select-btn{
width: 24px;
height: 25px;
color: white;
background-color: #003399;
border-radius: 5px;
border: 1px solid #666666;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: background-color 0.3s, color 0.3s;
padding: 0;
margin: 0;
}

.siteseo-suggetion{
position: absolute;
top: 100%;
left: 0;
width: 250px;
top: 10px;
left:-36px;
border: 1px solid #ccc;
border-radius: 5px;
height: 300px;
background-color: white;
z-index: 1000;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
display: none;
margin-top: 5px;
overflow: hidden;
}

.siteseo-metabox-input-wrap{
position: relative;
}

.siteseo-metabox-tags{
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}

#siteseo-metabox-content-analysis .siteseo-metabox-tab{
display: none;
}

#siteseo-metabox-content-analysis .siteseo-metabox-tab-label{
cursor: pointer;
}

#siteseo-metabox-content-analysis .siteseo-metabox-tab-label-active{
font-weight: bold;
}

.siteseo-x-toggle-switch{
position: relative;
display: inline-block;
width: 50px;
height: 24px;
}

.siteseo-x-toggle-switch input{
opacity: 0;
width: 0;
height: 0;
}

.siteseo-x-slider{
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
border-radius: 24px;
transition: background-color 0.3s;
}

.siteseo-x-slider::before{
content: "";
position: absolute;
height: 20px;
width: 20px;
left: 2px;
top:1px;
border: 2px solid #003399;
background-color: white;
border-radius: 50%;
transition: transform 0.3s;
}

.siteseo-x-toggle-switch input:checked + .siteseo-x-slider{
background-color: #003399;
}

.siteseo-x-toggle-switch input:checked + .siteseo-x-slider::before{
transform: translateX(26px);
}

/*** tags ***/
#siteseo_tags_wrapper{
display: flex;
flex-wrap: wrap;
gap: 5px;
padding: 5px;
border: 1px solid #ccc;
border-radius: 5px;
}

#siteseo_analysis_target_kw_meta{
border: none;
outline: none;
flex: 1;
min-width: 150px;
}

.siteseo-tag{
display: inline-flex;
align-items: center;
background-color: #808080;
color: white;
padding: 5px 10px;
border-radius: 5px;
font-size: 14px;
margin: 2px;
}

.siteseo-remove-tag{
margin-left: 10px;
cursor: pointer;
font-weight: bold;
color: white;
}

kbd {
background-color: #f7f7f7;
color: #222325;
border-radius: 0.25rem;
border: 1px solid #cbcccd;
box-shadow: 0 2px 0 1px #cbcccd;
cursor: default;
font-family:  Arial, sans-serif;
font-size: 0.75em;
line-height: 1;
min-width: 0.75rem;
text-align: center;
padding: 2px 5px;
position: relative;
top: -1px;
}

kbd:hover {
box-shadow: 0 1px 0 0.5px #cbcccd;
top: 1px;
}
PK��f\���77assets/css/header.cssnu�[���#wpadminbar .siteseo-noindex-warning,
#wpadminbar .siteseo-noindex-warning:hover,
#wpadminbar .siteseo-noindex-warning:focus,
#wpadminbar .siteseo-noindex-warning *:hover{
background-color: #dc3232 !important;
color: #ffffff !important;
height: 100%;
display: flex;
align-items: center;
}

#wpadminbar .siteseo-noindex-warning .warning-container{
display: flex;
align-items: center;
padding: 0 10px;
height: 100%;
}

#wpadminbar .siteseo-noindex-warning svg{
margin-right: 6px;
vertical-align: middle;
}

#wpadminbar .siteseo-noindex-warning .ab-item{
height: 100%;
}PK��f\y5assets/css/admin-columns.cssnu�[���.column-seo_title,
.column-meta_description,
.column-redirect_url,
.column-canonical_url{ 
width: 15%; 
}

.column-redirect_enabled,
.column-noindex,
.column-nofollow,
.column-word_count,
.column-seo_score{ 
width: 8%; 
text-align: center; 
}

.column-target_keyword{ 
width: 12%; 
}PK��f\D���( ( assets/css/onboarding.cssnu�[���:root{
--baseColor: #141b38;
}

:root *{
box-sizing:border-box;
}

html, body {
height:100%;
padding: 0;
margin :0;
}

body{
background-color: #fff;
background-image:  radial-gradient(#5b5b5b66 0.5px, #fff 0.5px);
background-size: 20px 20px;
background-position: 0 0,10px 10px;
font-family: Verdana, sans-serif;
}

#siteseo-onboarding-root{
display:flex;
height:100%;
}

#siteseo-onboarding-root .siteseo-onboarding-nav-wrapper{
box-sizing:border-box;
width:23%;
height: 100%;
padding: 10px;
}

#siteseo-onboarding-root nav{
display:flex;
flex-direction:column;
justify-content:space-between;
background-color:var(--baseColor);
height:100%;
width:100%;
border-radius: 10px;
padding: 20px;
}

#siteseo-onboarding-root nav .header{
display:flex;
justify-content:space-between;
align-items:center;
}

#siteseo-onboarding-root nav .footer{
text-align:center;
color:#c0c0c0;
font-size:0.9rem;
}

.siteseo-onboarding-nav-wrapper nav .steps{
margin-top: 2em;
}

.siteseo-onboarding-nav-wrapper nav .step {
position:relative;
display:flex;
padding: 20px 0;
color:white;
}

.step-milestone::after{	
content: attr(data-step);
border: 2px solid rgba(220, 220, 222, 0.4);
border-radius: 100%;
width: 24px;
height: 24px;
position: relative;
background: #141b38;
line-height: 24px;
color: #fff;
display: inline-flex;
align-items: center;
justify-content: center;
margin-right: 10px;
z-index: 2;
}

.step-info{
display: flex;
flex-direction: column;
gap:2px;
align-items: flex-start;
}

.step-info .description{
color: #c0c0c0;
font-size:0.8rem;
}

.step.active:not(:last-child)::after{
background: rgb(255, 255, 255);
background: linear-gradient(180deg, rgba(255, 255, 255, 1) 0%, rgba(20, 27, 56, 1) 100%);
}

.step.done:not(:last-child)::after{
background: rgb(255, 255, 255);	
}

.step.done > .step-milestone::after{
content: "\f15e";
font-family: "dashicons";
color: #fff;
background: var(--baseColor);
border: 2px solid white;
}

.step:not(:last-child)::after{
content: '';
position: absolute;
height: 80px;
width: 2px;
background: #7575755e;
z-index: 0;
left: 13px;
top: 35px;
}

main{
display:flex;
width:70%;
overflow:auto;
}

main {
  scrollbar-width: thin; /* For Firefox */
  scrollbar-color: transparent transparent; /* For Firefox */
}

.siteseo-onboarding-content{
width:80%;
margin: auto;
padding: 60px;
height: 100%;
}

.siteseo-step-is-welcome{
align-items:center;
margin-top:20%;
text-align:center;
}

.siteseo-step-page{
display:none;
}

.siteseo-step-active{
display:flex;
flex-direction:column;
}

.siteseo-btn{
display: inline-flex;
padding: 0.5rem 1rem;
gap: 0.5rem;
justify-content: center;
align-items: center;
border-radius: 0.375rem;
font-size: 0.875rem;
line-height: 1.25rem;
font-weight: 500;
white-space: nowrap;
cursor:pointer;
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
border:none;
text-decoration:none;
}

.siteseo-btn:disabled{
pointer-events: none;
}

.siteseo-btn.primary{
background-color:var(--baseColor);
color:white;
}

.siteseo-btn.secondary{
border: 1px solid var(--baseColor);
color:var(--baseColor);
background-color:transparent;
}

.siteseo-radio-input{
display:flex;
gap:10px;
width:100%;
}

.siteseo-radio-input label{
padding:8px 10px;
border:2px solid #3d5afe;
border-radius:7px;
font-weight:500;
cursor:pointer;
}

.siteseo-radio-input label:hover{
box-shadow: 0 0 0 0.1rem rgba(61, 90, 254, 0.4);
}

.siteseo-radio-input input{
display:none;
}

.siteseo-radio-input input:checked + label{
box-shadow: 0 0 0 0.20rem rgba(61, 90, 254, 0.4);
}

.siteseo-onboarding-import-info{
display:none;
flex-direction:column;
gap:20px;
margin-top:10px;
align-content:flex-start;
}

.siteseo-onboarding-import-info summary{
cursor:pointer;
user-select:none;
}

.siteseo-onboarding-import-info button{
align-self:flex-start;
}

.siteseo-onboarding-msg{
display:none;
font-weight:400;
font-size:14px;
margin:0;
}

.siteseo-onboarding-msg-success{
color:green;
}

.siteseo-onboarding-msg-error{
color:red;
}

.siteseo-onboarding-content-footer{
display:flex;
justify-content:flex-end;
gap: 10px;
margin-top:2.5rem;
padding: 20px 0;
border-top:1px solid #ededed;
}

.siteseo-input-block{
display:flex;
flex-direction:column;
gap:8px;
margin-top:32px;
}

.siteseo-input-block label{
font-weight:500;
font-size: .875rem;
line-height:1;
}

.siteseo-input-block input[type="text"],
.siteseo-input-block select,
.siteseo-input-block textarea{
display: flex; 
padding: 0.25rem 0.75rem;
border-radius: 0.375rem;
border:1px solid hsl(240 5.9% 90%);
width: 100%;
font-size: 1rem;
line-height: 1.5rem;
height:2.25rem;
background-color: transparent;
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 300ms;
box-shadow: 0 0 #0000, 0 0 #0000, 0 1px 2px 0 rgba(0, 0, 0, .05);
}

.siteseo-input-block input[type="radio"]{
display:inline;
}

.siteseo-input-block textarea{
height:unset;
}

.siteseo-input-block input[type="text"]:focus-visible,
.siteseo-input-block select:focus-visible,
.siteseo-input-block textarea:focus-visible{
box-shadow: 0 0 1px 1px hsl(240 5% 64.9%);
outline: 2px transparent;
}

.siteseo-input-block p.siteseo-input-description{
margin:0;
font-size:0.8rem;
color:#71717a;
}

#siteseo-onboarding-img-holder{
background:transparent;
outline:none;
border:2px dashed #ededed;
border-radius:6px;
width: 400px;
height:12rem;
cursor:pointer;
}

#siteseo-onboarding-img-holder img{
width:100%;
height:auto;
max-height:100%;
}

.siteseo-radiogroup{
display:flex;
flex-direction:column;
gap:8px;
}

.siteseo-radiogroup label{
font-weight:400;
font-size: .875rem;
}

.siteseo-spinner{
display:none;
border-radius:50%;
animation: siteseo-spinner 1s linear infinite;
height: 0.9375rem;
width: 0.9375rem;
border: 2px solid #dddcdc80;
border-left-color: #e3e3e3;
}

.siteseo-spinner-active{
display:inline-block;
}

@keyframes siteseo-spinner{
0% {
transform: rotate(0deg);
}

100% {
transform: rotate(360deg);
}	
}

.siteseo-notice{
display: flex;
align-items: center;
justify-content: space-between;
width: auto;
max-width: 100%;
padding: 10px 20px;
margin: 10px 0;
background-color: #fff;
border-radius: 6px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
font-family: sans-serif;
font-size: 14px;
line-height: 1.5;
border: 1px solid rgba(0,0,0,0.05);
border-left-width: 5px;
box-sizing: border-box;
}

.siteseo-notice p{
margin: 0;
}

.siteseo-notice.is-success{
border-left-color: #22c55e;
background-color: #f0fdf4;
color: #166534;
}

.siteseo-notice.is-error{
border-left-color: #ef4444;
background-color: #fef2f2;
color: #991b1b;
}

/* google search console section */
.siteseo-gsc-section{
background-color: #141b38;
padding: 25px;
margin-top: 20px;
color: white;
border-radius: 12px;
box-shadow: 0 4px 15px rgba(0,0,0,0.2);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

.siteseo-gsc-header{
display: flex;
align-items: flex-start;
gap: 15px;
margin-bottom: 20px;
position: relative;
}

.siteseo-gsc-logo .dashicons-google{
font-size: 40px;
width: 40px;
height: 40px;
color: white;
display: flex;
align-items: center;
justify-content: center;
line-height: 1; 
}

.siteseo-gsc-titles{
flex: 1;
}

.siteseo-gsc-section h4{
margin: 0 0 5px 0;
font-size: 18px;
font-weight: 700;
color: white;
line-height: 1.2;
}

.siteseo-gsc-subtitle{
font-size: 13px;
color: #aeb4c6;
margin: 0;
font-weight: 400;
}

.siteseo-badge-new{
background-color: #10b981;
color: #064e3b;
font-size: 10px;
font-weight: 800;
text-transform: uppercase;
padding: 4px 10px;
border-radius: 12px;
letter-spacing: 0.5px;
white-space: nowrap;
}

.siteseo-gsc-list{
margin-bottom: 25px;
}

.siteseo-gsc-list-item{
display: flex;
align-items: flex-start;
gap: 10px;
margin-bottom: 12px;
font-size: 14px;
line-height: 1.5;
color: #f0f0f0;
}

.siteseo-check-icon{
color: #10b981;
flex-shrink: 0;
margin-top: 3px;
width: 16px;
height: 16px;
}

.siteseo-btn-gsc{
display: inline-block;
width: auto;
background-color: #ffffff;
color: #141b38;
border: none;
padding: 10px 30px;
border-radius: 6px;
font-weight: 700;
font-size: 14px;
cursor: pointer;
transition: all 0.2s ease;
}

.siteseo-btn-gsc:hover{
background-color: #f0f0f0;
transform: translateY(-1px);
}PK��f\��Łooassets/css/admin-bar.cssnu�[���.siteseo-navbar{
margin: 0;
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 20px;
background-color: white;
border-bottom: 1px solid #e0e0e0;
position: sticky; 
top: 32px; 
width: 100%;
z-index: 1000; 
}

.siteseo-navbar .logo{
display: flex;
align-items: center;
}

.siteseo-navbar .logo img{
height: 30px;
}

.siteseo-navbar .siteseo-breadcrumb{
display: flex;
align-items: center;
margin-left: 10px;
}

.siteseo-navbar .siteseo-breadcrumb a{
text-decoration: none;
font-weight: bold;
color: grey;
font-size: 13px;
}

.siteseo-navbar .siteseo-breadcrumb a.active{
font-weight: bold;
color: black;
}

.siteseo-navbar .siteseo-breadcrumb span{
margin: 0 5px;
color: grey;
}

.siteseo-navbar .links{
display: flex;
align-items: center;
gap:20px;
}

.siteseo-navbar .links a{
text-decoration: none;
color: #0033a0;
font-size: 12px;
font-weight: bold;
}

.siteseo-navbar .links .support{
background-color: #0033a0;
color: white;
font-weight: bold;
padding: 5px 15px;
border-radius: 5px;
height: 25px;
display: flex;
align-items: center;
justify-content: center;
}

/* dash line */
.siteseo-dashline{
border-top: 1px dashed #e0e0e0;
width: 100%;
}

/* tooggle btn */
.siteseo-toggle-cnt{
display: flex;
align-items: center;
}
    
.siteseo-toggle-Sw{
position: relative;
width: 47px;
height: 20px;
background-color: #ccc;
border-radius: 20px;
cursor: pointer;
margin-right: 10px;
transition: background-color 0.3s;
}

.siteseo-toggle-Sw::before{
content: '';
position: absolute;
width: 24px;
height: 24px;
background-color: white;
border: 2px solid #ccc;
border-radius: 50%;
top: -4px;
left: -2px;
transition: 0.3s;
}

.row.mx-0 .siteseo-toggle-Sw::before{
top: -2px;
}

.siteseo-toggle-cnt span{
font-size: 14px;
color: #555;
font-weight: bold;
}

.siteseo-toggle-Sw.active{
background-color: #003399;
}

.siteseo-toggle-Sw.active::before{
left: 27px;
border-color: #003399;
}

.siteseo-arrow{
margin-right: 5px;
font-size: 14px;
color: #555;
font-weight: bold;
}

.siteseo-toggle-cnt p{
font-style: italic;
font-size: 11px;
font-weight: normal;
}

.siteseo-arrow-icon{
font-size: 10%;
margin-top:7px;
margin-right:3px;
}

.siteseo-option{
background-color: white;
}

/* sitseo btn */
.siteseo-button{
background-color: #003399;
color: white;
padding: 15px 30px;
border: none;
border-radius: 5px;
font-size: 16px;
cursor: pointer;
}

.top-line{
width: 100%;
height: 1px;
background-color: #d1d1d1;
margin-bottom: 2%;
}

/** toogle for post and pages */    
.siteseo-toggle-meta{
position: relative;
width: 47px;
height: 20px;
background-color: #ccc;
border-radius: 20px;
cursor: pointer;
margin-right: 10px;
transition: background-color 0.3s;
}

.siteseo-toggle-meta::before{
content: '';
position: absolute;
width: 24px;
height: 24px;
background-color: white;
border: 2px solid #ccc;
border-radius: 50%;
top: -4px;
left: -2px;
transition: 0.3s;
}

.row.mx-0 .siteseo-toggle-meta::before{
top : -2px;
}

.siteseo-toggle-meta.active{
background-color: #003399;
}

.siteseo-toggle-meta.active::before{
left: 27px;
border-color: #003399;
}

.siteseo-header-version-badge{
padding: 3px 10px;
border-radius:6px;
background-color:#f1f1f191;
font-weight:500;
}PK��f\���sFFassets/js/onboarding.jsnu�[���jQuery(document).ready(function($){
	
	if(window.location.href){
		const urlObj = new URL(window.location.href);
		const params = new URLSearchParams(urlObj.search);
		let step = params.get('step');
		
		if(step){
			let step_milestone = $('[data-step-slug="'+step+'"]');
			step_milestone = step_milestone.closest('.step');

			step_milestone.addClass('active');

			let prev_all_milestones = step_milestone.prevAll();
			if(prev_all_milestones){
				prev_all_milestones.removeClass('active').addClass('done');
			}
		}
	}

	// Listen for URL changes due to history navigation (back/forward)
	window.addEventListener('popstate', function() {
		$('.siteseo-step-page').removeClass('siteseo-step-active');
		
		const urlObj = new URL(window.location.href);
		const params = new URLSearchParams(urlObj.search);
		let step = params.get('step');
		
		if(step){
			$(`[data-step="${step}"]`).addClass('siteseo-step-active');
			let step_milestone = $('[data-step-slug="'+step+'"]');
			step_milestone = step_milestone.closest('.step');
			step_milestone.addClass('active').removeClass('done');

			let prev_all_milestones = step_milestone.prevAll(),
			next_milestone = step_milestone.next();
			
			if(prev_all_milestones.length){
				prev_all_milestones.removeClass('active').addClass('done');
			}

			if(next_milestone.length){
				next_milestone.removeClass('active');
			}

			return;
		}
		
		$('[data-step="welcome"]').addClass('siteseo-step-active');

	});

	$('#siteseo-upload-org-img, #siteseo-onboarding-img-holder').click(function(e){
		e.preventDefault();

		let mediaUploader;
		if(mediaUploader){
			mediaUploader.open();
			return;
		}

		mediaUploader = wp.media.frames.file_frame = wp.media({
			title: 'Media',
			button:{
				text: 'Select'
			},
			multiple: false
		});

		mediaUploader.on('select', function(){
			let attachment = mediaUploader.state().get('selection').first().toJSON();
			$('[name="organization_logo"]').val(attachment.url);
			
			let img_holder = $('#siteseo-onboarding-img-holder'),
			img_tag = img_holder.find('img');			
			img_holder.find('svg').hide();

			if(img_tag.length){
				img_tag.attr('src', attachment.url);
				return;
			}
			
			let new_img = document.createElement('img');
			new_img.src = attachment.url;
			img_holder.append(new_img);
		});

		mediaUploader.open();
	})
	
	// Import button to import SEO settings from other plugins
	$('#siteseo-do-import').click(function(e){
		e.preventDefault();
		
		let form = $(e.target).closest('form'),
		form_data = form.serializeArray(),
		plugin_name = form_data[0]['value'],
		result_p = $('.siteseo-onboarding-msg');

		plugin_name = plugin_name.split('/')[0]
		
		$.ajax({
			method : "POST",
			url : siteseo_onboarding.ajax_url,
			data : {
				nonce : siteseo_onboarding.nonce,
				plugin : plugin_name,
				action : 'siteseo_migrate_seo'
			},
			success:function(res){
				if(res.success){
					result_p.text(res.data.message);
					result_p.addClass('siteseo-onboarding-msg-success');
					result_p.show();
					return;
				}
				
				result_p.addClass('siteseo-onboarding-msg-error');
				if(res.data.message){
					result_p.text(res.data.message);
					
				} else{
					result_p.text('Something went wrong while importing!');
				}
			}
		})
	});

	$('input[name="plugin_name"]').change(function () {
		$('.siteseo-onboarding-import-info').css('display', 'flex');
	});
	
	$('input[name="site_status"]').change(function (e) {
		if(e.target.value == 'live'){
			$('.siteseo-live-site-options').show();
			return;
		}
		
		$('.siteseo-live-site-options').hide();
	
	});
	
	$('#siteseo-onboarding-begin, .siteseo-save-n-continue, .siteseo-skip-step').click(function(e){
		e.preventDefault();
		
		if(e.target.classList.contains('siteseo-save-n-continue')){
			save_step_settings(e);
			return;
		}
		
		jump_to_next_step(e);
	});
	
	let jump_to_next_step = (e) => {
		let step_root = $(e.target).closest('.siteseo-step-page');
		step_root.removeClass('siteseo-step-active');
		let nextele = step_root.next()
		nextele.addClass('siteseo-step-active')
		step_name = nextele.data('step');
		
		let step_milestone = $('[data-step-slug="'+step_name+'"]');
		step_milestone = step_milestone.closest('.step');
		step_milestone.addClass('active');
		
		// Updating the free milestones
		let prev_milestone = step_milestone.prev()	
		if(prev_milestone.length){
			prev_milestone.addClass('done');
			prev_milestone.removeClass('active');
		}

		window.history.pushState('', '', '?page=siteseo-onboarding&step='+step_name);
	}
	
	let save_step_settings = (ele) => {
		let btn = $(ele.target),
		form = btn.closest('form'),
		spinner = btn.find('.siteseo-spinner');

		if(!form.length){
			return;
		}

		spinner.addClass('siteseo-spinner-active');
		btn.prop('disabled', true);
		

		form_data = form.serializeArray();
		step_name = form.closest('.siteseo-step-page').data('step');
		
		let data = {};
		form_data.forEach(function(item){
			if(data[item['name']]){
				if(!Array.isArray(data[item['name']])){
					data[item['name']] = [data[item['name']]]; // Convert to an array if not already
				}
				data[item['name']].push(item['value']);
			} else {
				data[item['name']] = item['value'];
			}
		});

		$.ajax({
			method : 'POST',
			url : siteseo_onboarding.ajax_url,
			data : {
				nonce : siteseo_onboarding.nonce,
				data : data,
				step : step_name,
				action : 'siteseo_save_onboarding_settings'
			},
			success: function(res){
				if(res.success){
					jump_to_next_step(ele);
					return;
				}
				
				if(res.data){
					alert(res.data.message);
				}
			}
		}).always(function(){
			spinner.removeClass('siteseo-spinner-active');
			btn.prop('disabled', false);
		})
	}
	
});PK��f\�<�!assets/js/sidebar/src/sidebar.cssnu�[���.siteseo-sidebar-active-tab{
    border-bottom: 1.5px solid #00308F;
}

.siteseo-sidebar-tabs{
    display:flex;
    justify-content: center;
    width:100%;
}

.siteseo-sidebar-tabs > button {
    width: 100%;
}

.preview-block{
    width: 100%;
    background-color: #fff;
}

.preview-url{
    overflow: hidden;
    width: 100%;
    white-space: nowrap;
    max-width: 600px;
    text-overflow: ellipsis;
    font-size: 14px;
    line-height: 16px;
    margin: 3px 0 5px;
    padding: 10px 5px 0 0;
    color: #202124;
}

.preview-title{
    overflow: hidden;
    width: 100%;
    white-space: nowrap;
    max-width: 600px;
    text-overflow: ellipsis;
    font-size: 16px;
    font-weight: normal;
    line-height: 1.5;
    margin-bottom: 3px;
    padding-bottom: 0;
    color: #1a0dab;
}

.preview-description{
    line-height: 1.4;
    white-space: normal;
    word-wrap: break-word;
    color: #555d66;
    text-overflow: ellipsis;
}

.siteseo-gut-title-fields{
    margin-top: 15px;
}

.siteseo-gut-title-field{
    margin-bottom: 10px;
}PK��f\��r]��assets/js/sidebar/src/index.jsnu�[���import { registerPlugin } from "@wordpress/plugins"
import { PluginSidebar, PluginSidebarMoreMenuItem } from '@wordpress/editor';
import { useEffect, useState } from '@wordpress/element';
import './sidebar.css';

function sitseo_sidebar(){
    const [content, setContent] = useState();

    useEffect(() => {
        setContent({__html: jQuery('#siteseo-metabox-wrapper')?.prop('outerHTML')});
    }, [])

    return(<>
    <PluginSidebarMoreMenuItem target="siteseo-sidebar">
        SiteSEO
    </PluginSidebarMoreMenuItem>
    <PluginSidebar name="siteseo-sidebar" title="SiteSEO">
        {(content) ? (
                <SiteSEOSideBarHTML content={content}/>
            ) : (<p>Loading here</p>)
        }
    </PluginSidebar>
    </>);
}

function SiteSEOSideBarHTML(props){

    useEffect(() => {
        document.querySelector('#siteseo-sidebar-wrapper tags')?.remove();
    }, [])

    return(<div id="siteseo-sidebar-wrapper" dangerouslySetInnerHTML={props.content}></div>)
}

const siteseo_sidebar_icon = (
        <svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 956 756" width="32" height="24">
        <defs>
            <linearGradient id="P" gradientUnits="userSpaceOnUse" />
            <linearGradient id="g1" x1="818.4" y1="360.4" x2="621.6" y2="10.3" href="#P">
                <stop stopColor="#00e8d2" />
                <stop offset=".33" stopColor="#00add2" />
                <stop offset="1" stopColor="#4429ff" />
            </linearGradient>
            <linearGradient id="g2" x1="669.3" y1="352.2" x2="490.5" y2="2.2" href="#P">
                <stop stopColor="#00e8d2" />
                <stop offset=".33" stopColor="#00add2" />
                <stop offset="1" stopColor="#4429ff" />
            </linearGradient>
            <linearGradient id="g3" x1="519.4" y1="-222.4" x2="60.2" y2="12.6" href="#P">
                <stop stopColor="#3300d2" />
                <stop offset="1" stopColor="#ff52ff" />
            </linearGradient>
            <linearGradient id="g4" x1="519.4" y1="-222.4" x2="60.2" y2="12.6" href="#P">
                <stop stopColor="#3300d2" />
                <stop offset="1" stopColor="#ff52ff" />
            </linearGradient>
            <linearGradient id="g5" x1="605.1" y1="-211.2" x2="183.6" y2="4.4" href="#P">
                <stop stopColor="#3300d2" />
                <stop offset="1" stopColor="#ff52ff" />
            </linearGradient>
            <linearGradient id="g6" x1="139.4" y1="386.3" x2="491.6" y2="193.4" href="#P">
                <stop stopColor="#00e8d2" />
                <stop offset=".33" stopColor="#00add2" />
                <stop offset="1" stopColor="#4429ff" />
            </linearGradient>
            <linearGradient id="g7" x1="270.1" y1="458.2" x2="607.1" y2="255.9" href="#P">
                <stop stopColor="#00e8d2" />
                <stop offset=".33" stopColor="#00add2" />
                <stop offset="1" stopColor="#4429ff" />
            </linearGradient>
            <linearGradient id="g8" x1="701.5" y1="50" x2="966.7" y2="492.4" href="#P">
                <stop stopColor="#3300d2" />
                <stop offset="1" stopColor="#ff52ff" />
            </linearGradient>
            <linearGradient id="g9" x1="701.5" y1="50" x2="966.7" y2="492.4" href="#P">
                <stop stopColor="#3300d2" />
                <stop offset="1" stopColor="#ff52ff" />
            </linearGradient>
            <linearGradient id="g10" x1="622.9" y1="14.2" x2="866.3" y2="420.2" href="#P">
                <stop stopColor="#3300d2" />
                <stop offset="1" stopColor="#ff52ff" />
            </linearGradient>
        </defs>
        <path style={{fill: "url(#g1)"}} d="m363.8 108.4c-42.4 23.5-14.5 136.7 14.7 189.3l80.7 145.5c12.5 22.6 4.3 51-18.3 63.6l-40.9 22.7-22.7-41-80.7-145.4c-46.2-83.3-16-188.5 67.2-234.7z" />
        <path style={{fill: "url(#g2)"}} d="m296.6 343.1c-31-55.9-27.5-121.6 3.2-172.8-10.8 43.7 10.9 120.4 33.4 161l80.7 145.5c8.1 14.4 7.6 31.2 0.3 44.8l-14.2 7.9-22.7-41z" />
        <path style={{fill: "url(#g3)"}} d="m363.8 108.4l145.5-80.7 40.9-22.7 22.7 40.9c12.6 22.6 4.4 51.1-18.2 63.6l-145.5 80.7c-38.1 21.2-51.9 69.4-30.7 107.5-29.2-52.6-57.1-165.8-14.7-189.3z" />
        <path style={{fill:"url(#g4)"}} d="m363.8 108.4l145.5-80.7 40.9-22.7 22.7 40.9c12.6 22.6 4.4 51.1-18.2 63.6l-145.5 80.7c-38.1 21.2-51.9 69.4-30.7 107.5-29.2-52.6-57.1-165.8-14.7-189.3z" />
        <path style={{fill: "url(#g5)"}} d="m365.2 155.4l166.9-92.6 38.4-21.3 2.4 4.4c12.6 22.6 4.4 51.1-18.2 63.6l-145.5 80.7c-37.2 20.7-51.2 67.1-32.1 104.8q0 0-0.1 0c-14.7-27.5-28.7-69.8-33.3-107.7 3.7-14.5 10.5-25.9 21.5-31.9z" />
        <path style={{fill: "url(#g6)"}} d="m658.4 413c23.5 42.5-60.1 123.7-112.6 152.9l-145.5 80.7c-22.6 12.5-30.8 41-18.2 63.6l22.7 40.9 40.9-22.7 145.5-80.7c83.2-46.2 113.4-151.4 67.2-234.7z" />
        <path style={{fill: "url(#g7)"}} d="m591.2 647.7c55.8-31 87.7-88.5 88.7-148.2-13.9 42.8-73 96.3-113.5 118.8l-145.5 80.7c-14.5 8-23 22.6-24 37.9l7.9 14.2 40.9-22.7z" />
        <path style={{fill: "url(#g8)"}} d="m658.4 413l-80.7-145.4-22.7-41-40.9 22.7c-22.6 12.6-30.8 41.1-18.3 63.7l80.7 145.4c21.2 38.1 7.4 86.3-30.7 107.5 52.5-29.2 136.1-110.4 112.6-152.9z" />
        <path style={{fill: "url(#g9)"}} d="m658.4 413l-80.7-145.4-22.7-41-40.9 22.7c-22.6 12.6-30.8 41.1-18.3 63.7l80.7 145.4c21.2 38.1 7.4 86.3-30.7 107.5 52.5-29.2 136.1-110.4 112.6-152.9z" />
        <path style={{fill: "url(#g10)"}} d="m632.4 452.2l-92.6-166.9-21.3-38.4-4.4 2.4c-22.6 12.6-30.8 41.1-18.3 63.7l80.7 145.4c20.7 37.3 8 84.1-28.1 105.9q0 0.1 0 0.1c27-15.6 61.4-44 85.3-73.7 4.6-14.3 4.8-27.6-1.3-38.5z" />
    </svg>
);

registerPlugin('siteseo-sidebar', {
    render : sitseo_sidebar,
    icon : siteseo_sidebar_icon
})PK��f\T\x��!assets/js/sidebar/build/index.cssnu�[���.siteseo-sidebar-active-tab{border-bottom:1.5px solid #00308f}.siteseo-sidebar-tabs{display:flex;justify-content:center;width:100%}.siteseo-sidebar-tabs>button{width:100%}.preview-block{background-color:#fff;width:100%}.preview-url{color:#202124;font-size:14px;line-height:16px;margin:3px 0 5px;padding:10px 5px 0 0}.preview-title,.preview-url{max-width:600px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.preview-title{color:#1a0dab;font-size:16px;font-weight:400;line-height:1.5;margin-bottom:3px;padding-bottom:0}.preview-description{line-height:1.4;white-space:normal;word-wrap:break-word;color:#555d66;text-overflow:ellipsis}.siteseo-gut-title-fields{margin-top:15px}.siteseo-gut-title-field{margin-bottom:10px}
PK��f\�d���'assets/js/sidebar/build/index.asset.phpnu�[���<?php return array('dependencies' => array('react', 'wp-editor', 'wp-element', 'wp-plugins'), 'version' => 'b08470b62971a21fb79c');
PK��f\-�
Kyy assets/js/sidebar/build/index.jsnu�[���(()=>{"use strict";const e=window.React,t=window.wp.plugins,l=window.wp.editor,r=window.wp.element;function o(t){return(0,r.useEffect)((()=>{document.querySelector("#siteseo-sidebar-wrapper tags")?.remove()}),[]),(0,e.createElement)("div",{id:"siteseo-sidebar-wrapper",dangerouslySetInnerHTML:t.content})}const n=(0,e.createElement)("svg",{version:"1.2",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 956 756",width:"32",height:"24"},(0,e.createElement)("defs",null,(0,e.createElement)("linearGradient",{id:"P",gradientUnits:"userSpaceOnUse"}),(0,e.createElement)("linearGradient",{id:"g1",x1:"818.4",y1:"360.4",x2:"621.6",y2:"10.3",href:"#P"},(0,e.createElement)("stop",{stopColor:"#00e8d2"}),(0,e.createElement)("stop",{offset:".33",stopColor:"#00add2"}),(0,e.createElement)("stop",{offset:"1",stopColor:"#4429ff"})),(0,e.createElement)("linearGradient",{id:"g2",x1:"669.3",y1:"352.2",x2:"490.5",y2:"2.2",href:"#P"},(0,e.createElement)("stop",{stopColor:"#00e8d2"}),(0,e.createElement)("stop",{offset:".33",stopColor:"#00add2"}),(0,e.createElement)("stop",{offset:"1",stopColor:"#4429ff"})),(0,e.createElement)("linearGradient",{id:"g3",x1:"519.4",y1:"-222.4",x2:"60.2",y2:"12.6",href:"#P"},(0,e.createElement)("stop",{stopColor:"#3300d2"}),(0,e.createElement)("stop",{offset:"1",stopColor:"#ff52ff"})),(0,e.createElement)("linearGradient",{id:"g4",x1:"519.4",y1:"-222.4",x2:"60.2",y2:"12.6",href:"#P"},(0,e.createElement)("stop",{stopColor:"#3300d2"}),(0,e.createElement)("stop",{offset:"1",stopColor:"#ff52ff"})),(0,e.createElement)("linearGradient",{id:"g5",x1:"605.1",y1:"-211.2",x2:"183.6",y2:"4.4",href:"#P"},(0,e.createElement)("stop",{stopColor:"#3300d2"}),(0,e.createElement)("stop",{offset:"1",stopColor:"#ff52ff"})),(0,e.createElement)("linearGradient",{id:"g6",x1:"139.4",y1:"386.3",x2:"491.6",y2:"193.4",href:"#P"},(0,e.createElement)("stop",{stopColor:"#00e8d2"}),(0,e.createElement)("stop",{offset:".33",stopColor:"#00add2"}),(0,e.createElement)("stop",{offset:"1",stopColor:"#4429ff"})),(0,e.createElement)("linearGradient",{id:"g7",x1:"270.1",y1:"458.2",x2:"607.1",y2:"255.9",href:"#P"},(0,e.createElement)("stop",{stopColor:"#00e8d2"}),(0,e.createElement)("stop",{offset:".33",stopColor:"#00add2"}),(0,e.createElement)("stop",{offset:"1",stopColor:"#4429ff"})),(0,e.createElement)("linearGradient",{id:"g8",x1:"701.5",y1:"50",x2:"966.7",y2:"492.4",href:"#P"},(0,e.createElement)("stop",{stopColor:"#3300d2"}),(0,e.createElement)("stop",{offset:"1",stopColor:"#ff52ff"})),(0,e.createElement)("linearGradient",{id:"g9",x1:"701.5",y1:"50",x2:"966.7",y2:"492.4",href:"#P"},(0,e.createElement)("stop",{stopColor:"#3300d2"}),(0,e.createElement)("stop",{offset:"1",stopColor:"#ff52ff"})),(0,e.createElement)("linearGradient",{id:"g10",x1:"622.9",y1:"14.2",x2:"866.3",y2:"420.2",href:"#P"},(0,e.createElement)("stop",{stopColor:"#3300d2"}),(0,e.createElement)("stop",{offset:"1",stopColor:"#ff52ff"}))),(0,e.createElement)("path",{style:{fill:"url(#g1)"},d:"m363.8 108.4c-42.4 23.5-14.5 136.7 14.7 189.3l80.7 145.5c12.5 22.6 4.3 51-18.3 63.6l-40.9 22.7-22.7-41-80.7-145.4c-46.2-83.3-16-188.5 67.2-234.7z"}),(0,e.createElement)("path",{style:{fill:"url(#g2)"},d:"m296.6 343.1c-31-55.9-27.5-121.6 3.2-172.8-10.8 43.7 10.9 120.4 33.4 161l80.7 145.5c8.1 14.4 7.6 31.2 0.3 44.8l-14.2 7.9-22.7-41z"}),(0,e.createElement)("path",{style:{fill:"url(#g3)"},d:"m363.8 108.4l145.5-80.7 40.9-22.7 22.7 40.9c12.6 22.6 4.4 51.1-18.2 63.6l-145.5 80.7c-38.1 21.2-51.9 69.4-30.7 107.5-29.2-52.6-57.1-165.8-14.7-189.3z"}),(0,e.createElement)("path",{style:{fill:"url(#g4)"},d:"m363.8 108.4l145.5-80.7 40.9-22.7 22.7 40.9c12.6 22.6 4.4 51.1-18.2 63.6l-145.5 80.7c-38.1 21.2-51.9 69.4-30.7 107.5-29.2-52.6-57.1-165.8-14.7-189.3z"}),(0,e.createElement)("path",{style:{fill:"url(#g5)"},d:"m365.2 155.4l166.9-92.6 38.4-21.3 2.4 4.4c12.6 22.6 4.4 51.1-18.2 63.6l-145.5 80.7c-37.2 20.7-51.2 67.1-32.1 104.8q0 0-0.1 0c-14.7-27.5-28.7-69.8-33.3-107.7 3.7-14.5 10.5-25.9 21.5-31.9z"}),(0,e.createElement)("path",{style:{fill:"url(#g6)"},d:"m658.4 413c23.5 42.5-60.1 123.7-112.6 152.9l-145.5 80.7c-22.6 12.5-30.8 41-18.2 63.6l22.7 40.9 40.9-22.7 145.5-80.7c83.2-46.2 113.4-151.4 67.2-234.7z"}),(0,e.createElement)("path",{style:{fill:"url(#g7)"},d:"m591.2 647.7c55.8-31 87.7-88.5 88.7-148.2-13.9 42.8-73 96.3-113.5 118.8l-145.5 80.7c-14.5 8-23 22.6-24 37.9l7.9 14.2 40.9-22.7z"}),(0,e.createElement)("path",{style:{fill:"url(#g8)"},d:"m658.4 413l-80.7-145.4-22.7-41-40.9 22.7c-22.6 12.6-30.8 41.1-18.3 63.7l80.7 145.4c21.2 38.1 7.4 86.3-30.7 107.5 52.5-29.2 136.1-110.4 112.6-152.9z"}),(0,e.createElement)("path",{style:{fill:"url(#g9)"},d:"m658.4 413l-80.7-145.4-22.7-41-40.9 22.7c-22.6 12.6-30.8 41.1-18.3 63.7l80.7 145.4c21.2 38.1 7.4 86.3-30.7 107.5 52.5-29.2 136.1-110.4 112.6-152.9z"}),(0,e.createElement)("path",{style:{fill:"url(#g10)"},d:"m632.4 452.2l-92.6-166.9-21.3-38.4-4.4 2.4c-22.6 12.6-30.8 41.1-18.3 63.7l80.7 145.4c20.7 37.3 8 84.1-28.1 105.9q0 0.1 0 0.1c27-15.6 61.4-44 85.3-73.7 4.6-14.3 4.8-27.6-1.3-38.5z"}));(0,t.registerPlugin)("siteseo-sidebar",{render:function(){const[t,n]=(0,r.useState)();return(0,r.useEffect)((()=>{n({__html:jQuery("#siteseo-metabox-wrapper")?.prop("outerHTML")})}),[]),(0,e.createElement)(e.Fragment,null,(0,e.createElement)(l.PluginSidebarMoreMenuItem,{target:"siteseo-sidebar"},"SiteSEO"),(0,e.createElement)(l.PluginSidebar,{name:"siteseo-sidebar",title:"SiteSEO"},t?(0,e.createElement)(o,{content:t}):(0,e.createElement)("p",null,"Loading here")))},icon:n})})();PK��f\���3))assets/js/cookies-bar.jsnu�[���jQuery(document).ready(function($){
    const cookieBar = $('#siteseo-cookie-bar');
    const backdrop = $('#siteseo-cookie-bar-backdrop');
    const acceptBtn = $('#siteseo-cookie-bar-accept');
    const closeBtn = $('#siteseo-cookie-bar-close');
    const manageBtn = $('#siteseo-cookie-bar-manage-btn');
    const cookieName = 'siteseo-user-consent-accept';
    const cookieRejectName = 'siteseo-user-consent-close';
    const autoAcceptable = cookieBar.data('half-disable');
    const cookieDuration = 30 * 24 * 60 * 60; // 30 days in seconds

    function setCookie(name, value, duration){
        const date = new Date();
        date.setTime(date.getTime() + duration * 1000);
        document.cookie = `${name}=${value}; path=/; expires=${date.toUTCString()}`;
    }

    function getCookie(name){
        const cookies = document.cookie.split(';');
        for(let i = 0; i < cookies.length; i++){
            const cookie = cookies[i].trim();
            if(cookie.indexOf(name + '=') === 0){
                return cookie.substring(name.length + 1);
            }
        }
        return null;
    }

    //backdrop
    function hideCookieBar(){
        cookieBar.hide();
        backdrop.hide();
        manageBtn.show();
    }

    //show cookie bar 
    function showCookieBar(){
        cookieBar.show();
        if(cookieBar.hasClass('siteseo-cookie-bar-middle')){
            backdrop.show();
        }
    }
	
    function loadDeferredScripts(){
      if(getCookie('siteseo-user-consent-accept') === 'true'){
      
      	document.querySelectorAll('script[data-src-siteseo]').forEach(script => {
      		const newScript = document.createElement('script');
				
      		Array.from(script.attributes).forEach(attr => {
      			if(attr.name !== 'data-src-siteseo'){
      				newScript.setAttribute(attr.name, attr.value);
      			}
      		});
				
      		newScript.src = script.getAttribute('data-src-siteseo');
				
      		if(script.innerHTML){
      			newScript.innerHTML = script.innerHTML;
      		}
				
      		script.parentNode.replaceChild(newScript, script);
      	});
      }
	}
	
	if(autoAcceptable && !getCookie(cookieName) && !getCookie(cookieRejectName)){
		setTimeout(autoAcceptCookies,10000);		
	}
	
	function autoAcceptCookies(){
		setCookie(cookieName, 'true', cookieDuration);
		setCookie(cookieRejectName, '', -1);
		loadDeferredScripts(); 
		hideCookieBar();
	}
	
	function updateSrcTag(){
		if(getCookie('siteseo-user-consent-close') === 'true'){
			const analyticsScripts = [
        'googletagmanager.com',
				'google-analytics.com',
				'clarity.ms',
				'stats.g.doubleclick.net',
				'gtag/js'
			];
			
			document.querySelectorAll('script[src]').forEach(script => {
				if(script.hasAttribute('src')){
					const src = script.getAttribute('src');
					
					if(analyticsScripts.some(tracker => src.includes(tracker))){
						script.removeAttribute('src');
						script.setAttribute('data-src-siteseo', src);
					}
				}
			});
		}
	}
	
	function removeCookies(){
		var cookies = document.cookie.split(';');
		for(var i = 0; i < cookies.length; i++){
			var cookie = cookies[i];
			var eqPos = cookie.indexOf('=');
			var name = eqPos > -1 ? cookie.substr(0, eqPos).trim() : cookie.trim();
			
			if(name.startsWith('_ga') || name.startsWith('_gid') || name.startsWith('_gat') || name.startsWith('_gac') || name === 'AMP_TOKEN' || name.startsWith('_gcl_au') || // Google Analytics cookies
			
			// Google Tag Manager
			name.startsWith('_dc_gtm_') ||
			
			// google adds
			name.startsWith('_gads') || name.startsWith('_gac_') || name.startsWith('IDE') || name.startsWith('DSID') ||
			
			// Microsoft Clarity
			name.startsWith('_clsk') || name.startsWith('_clck') || name.startsWith('MR') || name.startsWith('SM') ||
			name.startsWith('MUID') || name.startsWith('ANONCHK') || name.startsWith('CLID') ||
			
			// Google Gtag
			name.startsWith('_gtag_') ||
			
			// Matomo cloud
			name.startsWith('_pk') || name.startsWith('mtm') || name.startsWith('matomo')
			
			){
					document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; domain=' + window.location.hostname;
					
			}
		}
	}
	
    if(!getCookie(cookieName) && !getCookie(cookieRejectName)){
        showCookieBar();
    }

    // Accept btn
    acceptBtn.on('click', function(e){
        e.preventDefault();
        setCookie(cookieName, 'true', cookieDuration);
        setCookie(cookieRejectName, '', -1);
        loadDeferredScripts();
        hideCookieBar();
    });

    // Close btn
    closeBtn.on('click', function(e){
        e.preventDefault();
        setCookie(cookieRejectName, 'true', cookieDuration);
        setCookie(cookieName, '', -1);
        updateSrcTag();
        removeCookies();
        hideCookieBar();
    });

    // Manage btn
    manageBtn.on('click', function (e){
        e.preventDefault();
        showCookieBar();
    });
});PK��f\o�m�ccassets/js/universal-metabox.jsnu�[���jQuery(document).ready(function(){
	let saved_left = localStorage.getItem('siteseo_universal_icon_left') || '10px';
	let saved_top = localStorage.getItem('siteseo_universal_icon_top') ? localStorage.getItem('siteseo_universal_icon_top') : 'auto';
	let saved_bottom = localStorage.getItem('siteseo_universal_icon_top') ? 'auto' : '10px';
	
	let universal_html = `<style>#siteseo-universal-metabox-icon{display:inline-flex; justify-content:center; align-items:center; position: fixed;left: ${saved_left}; top: ${saved_top}; bottom: ${saved_bottom}; z-index: 100000; background-color: #003399; padding: 6px; border-radius: 50%; cursor:pointer; width:40px; height:40px;} #siteseo-universal-metabox-icon img{width:36px; height:36px;}	.siteseo-universal-metabox{position:fixed;left:0;right:0;bottom:0;z-index:100100;background-color:#fff;width:100%;max-width:100%;min-width:100%;height:400px;box-sizing:border-box;flex-shrink:0;border:none;max-height:calc(100% - 93px);text-transform:none;display:none;box-sizing:border-box}.siteseo-drag-icon{position:absolute;top:-6px;right:-6px;width:25px;height:25px;background-color:#163d89;color:#fff;border-radius:50%;font-size:16px;display:none;justify-content:center;align-items:center;border:1px solid #ccc;box-shadow:0 1px 3px rgba(0,0,0,.1)}#siteseo-universal-metabox-icon:hover .siteseo-drag-icon{display:flex}.siteseo-universal-metabox-header{display:flex;justify-content:space-between;border-bottom:1px solid #ddd;border-top:1px solid #ddd;padding:10px 24px;}.siteseo-universal-metabox-header h2{margin:0;font-size:16px !important;}.siteseo-universal-metabox-body{height:calc(100% - 40px)}
    .siteseo-universal-spinner{display:none;position:absolute; top: 30%; left: 50%; transform: translateX(-50%); border-radius:50%;animation: siteseo-universal-spinner 1s linear infinite;height: 2rem;width: 2rem;border: 4px solid #dddcdc80;border-left-color: #e3e3e3;} @keyframes siteseo-universal-spinner{ 0% { transform: rotate(0deg);} 100% {transform: rotate(360deg);}}
    </style>
    <div class="siteseo-universal-modal"><div class="siteseo-universal-metabox"><div class="siteseo-universal-metabox-header"><h2>SiteSEO</h2><span class="dashicons dashicons-no-alt" onclick="siteseo_close_universal()" style="cursor:pointer;"></span></div><div class="siteseo-universal-spinner"></div><div class="siteseo-universal-metabox-body"><iframe id="siteseo-iframe-universal-metabox" onload="siteseo_onload_universal_iframe(event)" data-src="${siteseo_universal.metabox_url}&post=${siteseo_universal.post_id}" style="width:100%;height:100%;border:0;display:none"/></iframe></div></div><div id="siteseo-universal-metabox-icon"><span class="dashicons dashicons-fullscreen-alt siteseo-drag-icon"></span><img src="${siteseo_universal.asset_url}/img/logo-24.svg"></div></div>`;
    
	jQuery('body').append(universal_html);

	let is_dragging = false,
	dragging_start = false,
	offset = {},
	click_start_time = 0,
	click_start_x = 0,
	click_start_y = 0;
    
	jQuery('#siteseo-universal-metabox-icon').on('mousedown', function(e){
		if(jQuery(e.target).hasClass('siteseo-drag-icon') || jQuery(e.target).parent().hasClass('siteseo-drag-icon')){
			is_dragging = true;
			dragging_start = false;
			offset.x = e.clientX - jQuery('#siteseo-universal-metabox-icon')[0].getBoundingClientRect().left;
			offset.y = e.clientY - jQuery('#siteseo-universal-metabox-icon')[0].getBoundingClientRect().top;
			e.preventDefault();
		} else{
			click_start_time = Date.now();
			click_start_x = e.clientX;
			click_start_y = e.clientY;
		}
	});
    
	jQuery(document).on('mousemove', function(e){
		if(is_dragging){
			dragging_start = true;
			let new_left = e.clientX - offset.x;
			let new_top = e.clientY - offset.y;

			let icon_width = jQuery('#siteseo-universal-metabox-icon').outerWidth();
			let icon_height = jQuery('#siteseo-universal-metabox-icon').outerHeight();

			new_left = Math.max(0, Math.min(new_left, window.innerWidth - icon_width));
			new_top = Math.max(0, Math.min(new_top, window.innerHeight - icon_height));

			jQuery('#siteseo-universal-metabox-icon').css({
				left: new_left + 'px',
				top: new_top + 'px'
			});
		}
	});
    
	jQuery(document).on('mouseup', function(e){
		if(is_dragging){
			is_dragging = false;
			if(dragging_start){
				let icon = jQuery('#siteseo-universal-metabox-icon');
				localStorage.setItem('siteseo_universal_icon_left', icon.css('left'));
				localStorage.setItem('siteseo_universal_icon_top', icon.css('top'));
			}
		} else {
			let click_duration = Date.now() - click_start_time;
			let move_distance = Math.sqrt(Math.pow(e.clientX - click_start_x, 2) + Math.pow(e.clientY - click_start_y, 2));

			if(click_duration < 300 && move_distance < 5){
				siteseo_toggle_universal_modal();
			}
		}
	});
});

function siteseo_toggle_universal_modal(){
	let modal = jQuery('.siteseo-universal-metabox'),
	iframe = modal.find('iframe'),
	src_val = iframe.data('src'),
	spinner = modal.find('.siteseo-universal-spinner'),
	src = iframe.attr('src');
	modal.show();
  
	let icon = jQuery('#siteseo-universal-metabox-icon');
	let icon_pos = icon.position();
    
	modal.css({
		'left': '0',
		'bottom': '0',
		'top': 'auto'
	}).show();

	if(src){
		return;
	}

	spinner.show();
	iframe.attr('src', src_val);
}

function siteseo_onload_universal_iframe(e){
	jQuery('.siteseo-universal-spinner').hide();
	jQuery(e.target).show();
}

function siteseo_close_universal(){
	jQuery('.siteseo-universal-metabox').hide();
	
}PK��f\�Xm���assets/js/block.jsnu�[���(function (blocks, element, editor) {
    const el = element.createElement;
    const { InspectorControls } = editor;
    const { PanelBody } = wp.components;

    blocks.registerBlockType('siteseo/html-sitemap', {
        title: 'Sitemap',
        icon: 'list-view',
        category: 'siteseo',
        edit: function (props) {
            return [
                el('div', { className: props.className },
                    el('div', { className: 'sitemap-html-preview' },
                        el('h3', null),
                        el('div', { dangerouslySetInnerHTML: { __html: siteseositemap.previewData } })
                    )
                ),
                el(InspectorControls, null,
                    el(PanelBody, { title: 'Settings' }, null)
                )
            ];
        },
        save: function () {
            return null; // Rendered via PHP
        }
    });
})(window.wp.blocks, window.wp.element, window.wp.blockEditor);PK��f\���Z�-�-assets/js/chart.umd.min.jsnu�[���/*!
 * Chart.js v4.5.0
 * https://www.chartjs.org
 * (c) 2025 Chart.js Contributors
 * Released under the MIT License
 */
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return Jo},get Decimation(){return ta},get Filler(){return ba},get Legend(){return Ma},get SubTitle(){return Pa},get Title(){return ka},get Tooltip(){return Na}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;a<r;a++)e.call(i,t[a],a);else if(o(t))for(l=Object.keys(t),r=l.length,a=0;a<r;a++)e.call(i,t[l[a]],l[a])}function f(t,e){let i,s,n,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,s=t.length;i<s;++i)if(n=t[i],o=e[i],n.datasetIndex!==o.datasetIndex||n.index!==o.index)return!1;return!0}function g(t){if(n(t))return t.map(g);if(o(t)){const e=Object.create(null),i=Object.keys(t),s=i.length;let n=0;for(;n<s;++n)e[i[n]]=g(t[i[n]]);return e}return t}function p(t){return-1===["__proto__","prototype","constructor"].indexOf(t)}function m(t,e,i,s){if(!p(t))return;const n=e[t],a=i[t];o(n)&&o(a)?x(n,a,s):e[t]=g(a)}function x(t,e,i){const s=n(e)?e:[e],a=s.length;if(!o(t))return t;const r=(i=i||{}).merger||m;let l;for(let e=0;e<a;++e){if(l=s[e],!o(l))continue;const n=Object.keys(l);for(let e=0,s=n.length;e<s;++e)r(n[e],t,l,i)}return t}function b(t,e){return x(t,e,{merger:_})}function _(t,e,i){if(!p(t))return;const s=e[t],n=i[t];o(s)&&o(n)?b(s,n):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=g(n))}const y={"":t=>t,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)<i}function B(t){const e=Math.round(t);t=V(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(z(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function W(t){const e=[],i=Math.sqrt(t);let s;for(s=1;s<i;s++)t%s==0&&(e.push(s),e.push(t/s));return i===(0|i)&&e.push(i),e.sort(((t,e)=>t-e)).pop(),e}function N(t){return!function(t){return"symbol"==typeof t||"object"==typeof t&&null!==t&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;s<n;s++)o=t[s][i],isNaN(o)||(e.min=Math.min(e.min,o),e.max=Math.max(e.max,o))}function $(t){return t*(C/180)}function Y(t){return t*(180/C)}function U(t){if(!a(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function X(t,e){const i=e.x-t.x,s=e.y-t.y,n=Math.sqrt(i*i+s*s);let o=Math.atan2(s,i);return o<-.5*C&&(o+=O),{angle:o,distance:n}}function q(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function K(t,e){return(t-e+A)%O-C}function G(t){return(t%O+O)%O}function J(t,e,i,s){const n=G(t),o=G(e),a=G(i),r=G(o-n),l=G(a-n),h=G(n-o),c=G(n-a);return n===o||n===a||s&&o===a||r>l&&h<c}function Z(t,e,i){return Math.max(e,Math.min(i,t))}function Q(t){return Z(t,-32768,32767)}function tt(t,e,i,s=1e-6){return t>=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]<e);let s,n=t.length-1,o=0;for(;n-o>1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return n<i||n===i&&t[s+1][e]===i}:s=>t[s][e]<i),st=(t,e,i)=>et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;s<n&&t[s]<e;)s++;for(;n>s&&t[n-1]>i;)n--;return s>0||n<t.length?t.slice(s,n):t}const ot=["push","pop","shift","splice","unshift"];function at(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),ot.forEach((e=>{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ot.forEach((e=>{delete t[e]})),delete t._chartjs)}function lt(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const ht="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function ct(t,e){let i=[],s=!1;return function(...n){i=n,s||(s=!0,ht.call(window,(()=>{s=!1,t.apply(e,i)})))}}function dt(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const ut=t=>"start"===t?"left":"end"===t?"right":"center",ft=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,gt=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function pt(t,e,i){const n=e.length;let o=0,a=n;if(t._sorted){const{iScale:r,vScale:l,_parsed:h}=t,c=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,d=r.axis,{min:u,max:f,minDefined:g,maxDefined:p}=r.getUserBounds();if(g){if(o=Math.min(it(h,d,u).lo,i?n:it(e,d,r.getPixelForValue(u)).lo),c){const t=h.slice(0,o+1).reverse().findIndex((t=>!s(t[l.axis])));o-=Math.max(0,t)}o=Z(o,0,n-1)}if(p){let t=Math.max(it(h,r.axis,f,!0).hi+1,i?0:it(e,d,r.getPixelForValue(f),!0).hi+1);if(c){const e=h.slice(t-1).findIndex((t=>!s(t[l.axis])));t+=Math.max(0,e)}a=Z(t,o,n)-o}else a=n-o}return{start:o,count:a}}function mt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}class xt{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ht.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var bt=new xt;
/*!
 * @kurkle/color v0.3.2
 * https://github.com/kurkle/color#readme
 * (c) 2023 Jukka Kurkela
 * Released under the MIT License
 */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e<i?6:0):e===n?(i-t)/s+2:(t-e)/s+4}(e,i,s,h,n),r=60*r+.5),[0|r,l||0,a]}function zt(t,e,i,s){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,s)).map(Mt)}function Ft(t,e,i){return zt(Lt,t,e,i)}function Vt(t){return(t%360+360)%360}function Bt(t){const e=Tt.exec(t);let i,s=255;if(!e)return;e[5]!==i&&(s=e[6]?vt(+e[5]):Mt(+e[5]));const n=Vt(+e[2]),o=+e[3]/100,a=+e[4]/100;return i="hwb"===e[1]?function(t,e,i){return zt(Rt,t,e,i)}(n,o,a):"hsv"===e[1]?function(t,e,i){return zt(Et,t,e,i)}(n,o,a):Ft(n,o,a),{r:i[0],g:i[1],b:i[2],a:s}}const Wt={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Nt={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let Ht;function jt(t){Ht||(Ht=function(){const t={},e=Object.keys(Nt),i=Object.keys(Wt);let s,n,o,a,r;for(s=0;s<e.length;s++){for(a=r=e[s],n=0;n<i.length;n++)o=i[n],r=r.replace(o,Wt[o]);o=parseInt(Nt[a],16),t[r]=[o>>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=Ft(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function qt(t,e){return t?Object.assign(e||{},t):t}function Kt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Mt(t[3]))):(e=qt(t,{r:0,g:0,b:0,a:1})).a=Mt(e.a),e}function Gt(t){return"r"===t.charAt(0)?function(t){const e=$t.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?vt(t):yt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?vt(i):yt(i,0,255)),s=255&(e[4]?vt(s):yt(s,0,255)),n=255&(e[6]?vt(n):yt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Bt(t)}class Jt{constructor(t){if(t instanceof Jt)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=Kt(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*St[s[1]],g:255&17*St[s[2]],b:255&17*St[s[3]],a:5===o?17*St[s[4]]:255}:7!==o&&9!==o||(n={r:St[s[1]]<<4|St[s[2]],g:St[s[3]]<<4|St[s[4]],b:St[s[5]]<<4|St[s[6]],a:9===o?St[s[7]]<<4|St[s[8]]:255})),i=n||jt(t)||Gt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qt(this._rgb);return t&&(t.a=wt(t.a)),t}set rgb(t){this._rgb=Kt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${wt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=It(t),i=e[0],s=kt(e[1]),n=kt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${wt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=Ut(wt(t.r)),n=Ut(wt(t.g)),o=Ut(wt(t.b));return{r:Mt(Yt(s+i*(Ut(wt(e.r))-s))),g:Mt(Yt(n+i*(Ut(wt(e.g))-n))),b:Mt(Yt(o+i*(Ut(wt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Jt(this.rgb)}alpha(t){return this._rgb.a=Mt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=_t(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Xt(this._rgb,2,t),this}darken(t){return Xt(this._rgb,2,-t),this}saturate(t){return Xt(this._rgb,1,t),this}desaturate(t){return Xt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=It(t);i[0]=Vt(i[0]+e),i=Ft(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Zt(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Qt(t){return Zt(t)?t:new Jt(t)}function te(t){return Zt(t)?t:new Jt(t).saturate(.5).darken(.1).hexString()}const ee=["x","y","borderWidth","radius","tension"],ie=["color","borderColor","backgroundColor"];const se=new Map;function ne(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=se.get(i);return s||(s=new Intl.NumberFormat(t,e),se.set(i,s)),s}(e,i).format(t)}const oe={values:t=>n(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=z(Math.abs(o)),r=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),ne(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=i[e].significand||t/Math.pow(10,Math.floor(z(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?oe.numeric.call(this,t,e,i):""}};var ae={formatters:oe};const re=Object.create(null),le=Object.create(null);function he(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;e<s;++e){const s=i[e];t=t[s]||(t[s]=Object.create(null))}return t}function ce(t,e,i){return"string"==typeof e?x(he(t,e),i):x(he(t,""),e)}class de{constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=t=>t.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:ie},numbers:{type:"number",properties:ee}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ae.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function fe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ge(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function xe(t,e){return me(t).getPropertyValue(e)}const be=["top","right","bottom","left"];function _e(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=be[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}const ye=(t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot);function ve(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o="border-box"===n.boxSizing,a=_e(n,"padding"),r=_e(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(ye(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const Me=t=>Math.round(10*t)/10;function we(t,e,i,s){const n=me(t),o=_e(n,"margin"),a=pe(n.maxWidth,t,"clientWidth")||T,r=pe(n.maxHeight,t,"clientHeight")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=t&&ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,"border","width"),l=_e(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,"clientWidth"),n=pe(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=_e(n,"border","width"),e=_e(n,"padding");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h/s:c-o.height),h=Me(Math.min(h,a,l.maxWidth)),c=Me(Math.min(c,r,l.maxHeight)),h&&!c&&(c=Me(h/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=Me(Math.floor(c*s))),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};fe()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function Pe(t,e){const i=xe(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Ce(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Oe(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;h<l;h++)if(u=i[h],null==u||n(u)){if(n(u))for(c=0,d=u.length;c<d;c++)f=u[c],null==f||n(f)||(r=Ce(t,o,a,r,f))}else r=Ce(t,o,a,r,u);t.restore();const g=a.length/2;if(g>i.length){for(h=0;h<g;h++)delete o[a[h]];a.splice(0,g)}return r}function Ae(t,e,i){const s=t.currentDevicePixelRatio,n=0!==i?Math.max(i/2,.5):0;return Math.round((e-n)*s)/s+n}function Te(t,e){(e||t)&&((e=e||t.getContext("2d")).save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore())}function Le(t,e,i,s){Ee(t,e,i,s,null)}function Ee(t,e,i,s,n){let o,a,r,l,h,c,d,u;const f=e.pointStyle,g=e.rotation,p=e.radius;let m=(g||0)*L;if(f&&"object"==typeof f&&(o=f.toString(),"[object HTMLImageElement]"===o||"[object HTMLCanvasElement]"===o))return t.save(),t.translate(i,s),t.rotate(m),t.drawImage(f,-f.width/2,-f.height/2,f.width,f.height),void t.restore();if(!(isNaN(p)||p<=0)){switch(t.beginPath(),f){default:n?t.ellipse(i,s,n/2,p,0,0,O):t.arc(i,s,p,0,O),t.closePath();break;case"triangle":c=n?n/2:p,t.moveTo(i+Math.sin(m)*c,s-Math.cos(m)*p),m+=I,t.lineTo(i+Math.sin(m)*c,s-Math.cos(m)*p),m+=I,t.lineTo(i+Math.sin(m)*c,s-Math.cos(m)*p),t.closePath();break;case"rectRounded":h=.516*p,l=p-h,a=Math.cos(m+R)*l,d=Math.cos(m+R)*(n?n/2-h:l),r=Math.sin(m+R)*l,u=Math.sin(m+R)*(n?n/2-h:l),t.arc(i-d,s-r,h,m-C,m-E),t.arc(i+u,s-a,h,m-E,m),t.arc(i+d,s+r,h,m,m+E),t.arc(i-u,s+a,h,m+E,m+C),t.closePath();break;case"rect":if(!g){l=Math.SQRT1_2*p,c=n?n/2:l,t.rect(i-c,s-l,2*c,2*l);break}m+=R;case"rectRot":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+u,s-a),t.lineTo(i+d,s+r),t.lineTo(i-u,s+a),t.closePath();break;case"crossRot":m+=R;case"cross":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a);break;case"star":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a),m+=R,d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a);break;case"line":a=n?n/2:Math.cos(m)*p,r=Math.sin(m)*p,t.moveTo(i-a,s-r),t.lineTo(i+a,s+r);break;case"dash":t.moveTo(i,s),t.lineTo(i+Math.cos(m)*(n?n/2:p),s+Math.sin(m)*p);break;case!1:t.closePath()}t.fill(),e.borderWidth>0&&t.stroke()}}function Re(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.x<e.right+i&&t.y>e.top-i&&t.y<e.bottom+i}function Ie(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function ze(t){t.restore()}function Fe(t,e,i,s,n){if(!e)return t.lineTo(i.x,i.y);if("middle"===n){const s=(e.x+i.x)/2;t.lineTo(s,e.y),t.lineTo(s,i.y)}else"after"===n!=!!s?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}function Ve(t,e,i,s){if(!e)return t.lineTo(i.x,i.y);t.bezierCurveTo(s?e.cp1x:e.cp2x,s?e.cp1y:e.cp2y,s?i.cp2x:i.cp1x,s?i.cp2y:i.cp1y,i.x,i.y)}function Be(t,e,i,s,n){if(n.strikethrough||n.underline){const o=t.measureText(s),a=e-o.actualBoundingBoxLeft,r=e+o.actualBoundingBoxRight,l=i-o.actualBoundingBoxAscent,h=i+o.actualBoundingBoxDescent,c=n.strikethrough?(l+h)/2:h;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=n.decorationWidth||2,t.moveTo(a,c),t.lineTo(r,c),t.stroke()}}function We(t,e){const i=t.fillStyle;t.fillStyle=e.color,t.fillRect(e.left,e.top,e.width,e.height),t.fillStyle=i}function Ne(t,e,i,o,a,r={}){const l=n(e)?e:[e],h=r.strokeWidth>0&&""!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),s(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;c<l.length;++c)d=l[c],r.backdrop&&We(t,r.backdrop),h&&(r.strokeColor&&(t.strokeStyle=r.strokeColor),s(r.strokeWidth)||(t.lineWidth=r.strokeWidth),t.strokeText(d,i,o,r.maxWidth)),t.fillText(d,i,o,r.maxWidth),Be(t,i,o,d,r),o+=Number(a.lineHeight);t.restore()}function He(t,e){const{x:i,y:s,w:n,h:o,radius:a}=e;t.arc(i+a.topLeft,s+a.topLeft,a.topLeft,1.5*C,C,!0),t.lineTo(i,s+o-a.bottomLeft),t.arc(i+a.bottomLeft,s+o-a.bottomLeft,a.bottomLeft,C,E,!0),t.lineTo(i+n-a.bottomRight,s+o),t.arc(i+n-a.bottomRight,s+o-a.bottomRight,a.bottomRight,E,0,!0),t.lineTo(i+n,s+a.topRight),t.arc(i+n-a.topRight,s+a.topRight,a.topRight,0,-E,!0),t.lineTo(i+a.topLeft,s)}function je(t,e=[""],i,s,n=(()=>t[0])){const o=i||t;void 0===s&&(s=ti("_fallback",t));const a={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:o,_fallback:s,_getTarget:n,override:i=>je([i,...t],e,o,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>qe(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=ti(Ue(o,t),i),void 0!==n)return Xe(t,n)?Ze(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ei(t).includes(e),ownKeys:t=>ei(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function $e(t,e,i,s){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ye(t,s),setContext:e=>$e(t,e,i,s),override:n=>$e(t.override(n),e,i,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>qe(t,e,(()=>function(t,e,i){const{_proxy:s,_context:a,_subProxy:r,_descriptors:l}=t;let h=s[e];S(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t);let l=e(o,a||s);r.delete(t),Xe(t,l)&&(l=Ze(n._scopes,n,t,l));return l}(e,h,t,i));n(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:n,_context:a,_subProxy:r,_descriptors:l}=i;if(void 0!==a.index&&s(t))return e[a.index%e.length];if(o(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const o of i){const i=Ze(s,n,t,o);e.push($e(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Xe(e,h)&&(h=$e(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function Ye(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:S(i)?i:()=>i,isIndexable:S(s)?s:()=>s}}const Ue=(t,e)=>t?t+w(e):e,Xe=(t,e)=>o(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function qe(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const s=i();return t[e]=s,s}function Ke(t,e,i){return S(t)?t(e,i):t}const Ge=(t,e)=>!0===t?e:"string"==typeof t?M(e,t):void 0;function Je(t,e,i,s,n){for(const o of e){const e=Ge(i,o);if(e){t.add(e);const o=Ke(e._fallback,i,n);if(void 0!==o&&o!==i&&o!==s)return o}else if(!1===e&&void 0!==s&&i!==s)return null}return!1}function Ze(t,e,i,s){const a=e._rootScopes,r=Ke(e._fallback,i,s),l=[...t,...a],h=new Set;h.add(s);let c=Qe(h,l,i,r||i,s);return null!==c&&((void 0===r||r===i||(c=Qe(h,l,r,c,s),null!==c))&&je(Array.from(h),[""],a,r,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const a=s[e];if(n(a)&&o(i))return i;return a||{}}(e,i,s))))}function Qe(t,e,i,s,n){for(;i;)i=Je(t,e,i,s,n);return i}function ti(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function ei(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function ii(t,e,i,s){const{iScale:n}=t,{key:o="r"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={r:n.parse(M(c,o),h)};return a}const si=Number.EPSILON||1e-14,ni=(t,e)=>e<t.length&&!t[e].skip&&t[e],oi=t=>"x"===t?"y":"x";function ai(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=q(o,n),l=q(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function ri(t,e="x"){const i=oi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=ni(t,0);for(a=0;a<s;++a)if(r=l,l=h,h=ni(t,a+1),l){if(h){const t=h[e]-l[e];n[a]=0!==t?(h[i]-l[i])/t:0}o[a]=r?h?F(n[a-1])!==F(n[a])?0:(n[a-1]+n[a])/2:n[a-1]:n[a]}!function(t,e,i){const s=t.length;let n,o,a,r,l,h=ni(t,0);for(let c=0;c<s-1;++c)l=h,h=ni(t,c+1),l&&h&&(V(e[c],0,si)?i[c]=i[c+1]=0:(n=i[c]/e[c],o=i[c+1]/e[c],r=Math.pow(n,2)+Math.pow(o,2),r<=9||(a=3/Math.sqrt(r),i[c]=n*a*e[c],i[c+1]=o*a*e[c])))}(t,n,o),function(t,e,i="x"){const s=oi(i),n=t.length;let o,a,r,l=ni(t,0);for(let h=0;h<n;++h){if(a=r,r=l,l=ni(t,h+1),!r)continue;const n=r[i],c=r[s];a&&(o=(n-a[i])/3,r[`cp1${i}`]=n-o,r[`cp1${s}`]=c-o*e[h]),l&&(o=(l[i]-n)/3,r[`cp2${i}`]=n+o,r[`cp2${s}`]=c+o*e[h])}}(t,o,e)}function li(t,e,i){return Math.max(Math.min(t,i),e)}function hi(t,e,i,s,n){let o,a,r,l;if(e.spanGaps&&(t=t.filter((t=>!t.skip))),"monotone"===e.cubicInterpolationMode)ri(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o<a;++o)r=t[o],l=ai(i,r,t[Math.min(o+1,a-(s?0:1))%a],e.tension),r.cp1x=l.previous.x,r.cp1y=l.previous.y,r.cp2x=l.next.x,r.cp2y=l.next.y,i=r}e.capBezierPoints&&function(t,e){let i,s,n,o,a,r=Re(t[0],e);for(i=0,s=t.length;i<s;++i)a=o,o=r,r=i<s-1&&Re(t[i+1],e),o&&(n=t[i],a&&(n.cp1x=li(n.cp1x,e.left,e.right),n.cp1y=li(n.cp1y,e.top,e.bottom)),r&&(n.cp2x=li(n.cp2x,e.left,e.right),n.cp2y=li(n.cp2y,e.top,e.bottom)))}(t,i)}const ci=t=>0===t||1===t,di=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),ui=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,fi={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ci(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ci(t)?t:di(t,.075,.3),easeOutElastic:t=>ci(t)?t:ui(t,.075,.3),easeInOutElastic(t){const e=.1125;return ci(t)?t:t<.5?.5*di(2*t,e,.45):.5+.5*ui(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-fi.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*fi.easeInBounce(2*t):.5*fi.easeOutBounce(2*t-1)+.5};function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function pi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function mi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=gi(t,n,i),r=gi(n,o,i),l=gi(o,e,i),h=gi(a,r,i),c=gi(r,l,i);return gi(h,c,i)}const xi=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,bi=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function _i(t,e){const i=(""+t).match(xi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const yi=t=>+t||0;function vi(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=yi(a(t));return i}function Mi(t){return vi(t,{top:"y",right:"x",bottom:"y",left:"x"})}function wi(t){return vi(t,["topLeft","topRight","bottomLeft","bottomRight"])}function ki(t){const e=Mi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function Si(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(""+s).match(bi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:_i(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:""};return n.string=De(n),n}function Pi(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;o<a;++o)if(r=t[o],void 0!==r&&(void 0!==e&&"function"==typeof r&&(r=r(e),l=!1),void 0!==i&&n(r)&&(r=r[i%r.length],l=!1),void 0!==r))return s&&!l&&(s.cacheable=!1),r}function Di(t,e,i){const{min:s,max:n}=t,o=c(e,(n-s)/2),a=(t,e)=>i&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ci(t,e){return Object.assign(Object.create(t),e)}function Oi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ai(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Ti(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Li(t){return"angle"===t?{between:J,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ei({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Ri(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Li(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Li(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;h<c&&a(r(e[d%l][s]),n,o);++h)d--,u--;d%=l,u%=l}return u<d&&(u+=l),{start:d,end:u,loop:f,style:t.style}}(t,e,i),g=[];let p,m,x,b=!1,_=null;const y=()=>b||l(n,x,p)&&0!==r(n,x),v=()=>!b||0===r(o,p)||l(o,x,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==x&&(b=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Ei({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,x=p));return null!==_&&g.push(Ei({start:_,end:d,loop:u,count:a,style:f})),g}function Ii(t,e){const i=[],s=t.segments;for(let n=0;n<s.length;n++){const o=Ri(s[n],t.points,e);o.length&&i.push(...o)}return i}function zi(t,e){const i=t.points,s=t.options.spanGaps,n=i.length;if(!n)return[];const o=!!t._loop,{start:a,end:r}=function(t,e,i,s){let n=0,o=e-1;if(i&&!s)for(;n<e&&!t[n].skip;)n++;for(;n<e&&t[n].skip;)n++;for(n%=e,i&&(o+=n);o>n&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Fi(t,[{start:a,end:r,loop:o}],i,e);return Fi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r<a?r+n:r,!!t._fullLoop&&0===a&&r===n-1),i,e)}function Fi(t,e,i,s){return s&&s.setContext&&i?function(t,e,i,s){const n=t._chart.getContext(),o=Vi(t.options),{_datasetIndex:a,options:{spanGaps:r}}=t,l=i.length,h=[];let c=o,d=e[0].start,u=d;function f(t,e,s,n){const o=r?-1:1;if(t!==e){for(t+=l;i[t%l].skip;)t-=o;for(;i[e%l].skip;)e+=o;t%l!=e%l&&(h.push({start:t%l,end:e%l,loop:s,style:n}),c=n,d=e%l)}}for(const t of e){d=r?d:t.start;let e,o=i[d%l];for(u=d+1;u<=t.end;u++){const r=i[u%l];e=Vi(s.setContext(Ci(n,{type:"segment",p0:o,p1:r,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:a}))),Bi(e,c)&&f(d,u-1,t.loop,c),o=r,c=e}d<u-1&&f(d,u-1,t.loop,c)}return h}(t,e,i,s):e}function Vi(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function Bi(t,e){if(!e)return!1;const i=[],s=function(t,e){return Zt(e)?(i.includes(e)||i.push(e),i.indexOf(e)):e};return JSON.stringify(t,s)!==JSON.stringify(e,s)}function Wi(t,e,i){return t.options.clip?t[i]:e[i]}function Ni(t,e){const i=e._clip;if(i.disabled)return!1;const s=function(t,e){const{xScale:i,yScale:s}=t;return i&&s?{left:Wi(i,e,"left"),right:Wi(i,e,"right"),top:Wi(s,e,"top"),bottom:Wi(s,e,"bottom")}:e}(e,t.chartArea);return{left:!1===i.left?0:s.left-(!0===i.left?0:i.left),right:!1===i.right?t.width:s.right+(!0===i.right?0:i.right),top:!1===i.top?0:s.top-(!0===i.top?0:i.top),bottom:!1===i.bottom?t.height:s.bottom+(!0===i.bottom?0:i.bottom)}}var Hi=Object.freeze({__proto__:null,HALF_PI:E,INFINITY:T,PI:C,PITAU:A,QUARTER_PI:R,RAD_PER_DEG:L,TAU:O,TWO_THIRDS_PI:I,_addGrace:Di,_alignPixel:Ae,_alignStartEnd:ft,_angleBetween:J,_angleDiff:K,_arrayUnique:lt,_attachContext:$e,_bezierCurveTo:Ve,_bezierInterpolation:mi,_boundSegment:Ri,_boundSegments:Ii,_capitalize:w,_computeSegments:zi,_createResolver:je,_decimalPlaces:U,_deprecated:function(t,e,i,s){void 0!==e&&console.warn(t+': "'+i+'" is deprecated. Please use "'+s+'" instead')},_descriptors:Ye,_elementsEqual:f,_factorize:W,_filterBetween:nt,_getParentNode:ge,_getStartAndCountOfVisiblePoints:pt,_int16Range:Q,_isBetween:tt,_isClickEvent:D,_isDomSupported:fe,_isPointInArea:Re,_limitValue:Z,_longestText:Oe,_lookup:et,_lookupByKey:it,_measureText:Ce,_merger:m,_mergerIf:_,_normalizeAngle:G,_parseObjectDataRadialScale:ii,_pointInLine:gi,_readValueToProps:vi,_rlookupByKey:st,_scaleRangesChanged:mt,_setMinAndMaxByKey:j,_splitKey:v,_steppedInterpolation:pi,_steppedLineTo:Fe,_textX:gt,_toLeftRightCenter:ut,_updateBezierControlPoints:hi,addRoundedRectPath:He,almostEquals:V,almostWhole:H,callback:d,clearCanvas:Te,clipArea:Ie,clone:g,color:Qt,createContext:Ci,debounce:dt,defined:k,distanceBetweenPoints:q,drawPoint:Le,drawPointLegend:Ee,each:u,easingEffects:fi,finiteOrDefault:r,fontString:function(t,e,i){return e+" "+t+"px "+i},formatNumber:ne,getAngleFromPoint:X,getDatasetClipArea:Ni,getHoverColor:te,getMaximumSize:we,getRelativePosition:ve,getRtlAdapter:Oi,getStyle:xe,isArray:n,isFinite:a,isFunction:S,isNullOrUndef:s,isNumber:N,isObject:o,isPatternOrGradient:Zt,listenArrayEvents:at,log10:z,merge:x,mergeIf:b,niceNum:B,noop:e,overrideTextDirection:Ai,readUsedSize:Pe,renderText:Ne,requestAnimFrame:ht,resolve:Pi,resolveObjectKey:M,restoreTextDirection:Ti,retinaScale:ke,setsEqual:P,sign:F,splineCurve:ai,splineCurveMonotone:ri,supportsEventListenerOptions:Se,throttled:ct,toDegrees:Y,toDimension:c,toFont:Si,toFontString:De,toLineHeight:_i,toPadding:ki,toPercentage:h,toRadians:$,toTRBL:Mi,toTRBLCorners:wi,uid:i,unclipArea:ze,unlistenArrayEvents:rt,valueOrDefault:l});function ji(t,e,i,n){const{controller:o,data:a,_sorted:r}=t,l=o._cachedMeta.iScale,h=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null;if(l&&e===l.axis&&"r"!==e&&r&&a.length){const r=l._reversePixels?st:it;if(!n){const n=r(a,e,i);if(h){const{vScale:e}=o._cachedMeta,{_parsed:i}=t,a=i.slice(0,n.lo+1).reverse().findIndex((t=>!s(t[e.axis])));n.lo-=Math.max(0,a);const r=i.slice(n.hi).findIndex((t=>!s(t[e.axis])));n.hi+=Math.max(0,r)}return n}if(o._sharedOptions){const t=a[0],s="function"==typeof t.getRange&&t.getRange(e);if(s){const t=r(a,e,i-s),n=r(a,e,i+s);return{lo:t.lo,hi:n.hi}}}}return{lo:0,hi:a.length-1}}function $i(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t<i;++t){const{index:i,data:r}=o[t],{lo:l,hi:h}=ji(o[t],e,a,n);for(let t=l;t<=h;++t){const e=r[t];e.skip||s(e,i,t)}}}function Yi(t,e,i,s,n){const o=[];if(!n&&!t.isPointInArea(e))return o;return $i(t,i,e,(function(i,a,r){(n||Re(i,t.chartArea,0))&&i.inRange(e.x,e.y,s)&&o.push({element:i,datasetIndex:a,index:r})}),!0),o}function Ui(t,e,i,s,n,o){let a=[];const r=function(t){const e=-1!==t.indexOf("x"),i=-1!==t.indexOf("y");return function(t,s){const n=e?Math.abs(t.x-s.x):0,o=i?Math.abs(t.y-s.y):0;return Math.sqrt(Math.pow(n,2)+Math.pow(o,2))}}(i);let l=Number.POSITIVE_INFINITY;return $i(t,i,e,(function(i,h,c){const d=i.inRange(e.x,e.y,n);if(s&&!d)return;const u=i.getCenterPoint(n);if(!(!!o||t.isPointInArea(u))&&!d)return;const f=r(e,u);f<l?(a=[{element:i,datasetIndex:h,index:c}],l=f):f===l&&a.push({element:i,datasetIndex:h,index:c})})),a}function Xi(t,e,i,s,n,o){return o||t.isPointInArea(e)?"r"!==i||s?Ui(t,e,i,s,n,o):function(t,e,i,s){let n=[];return $i(t,i,e,(function(t,i,o){const{startAngle:a,endAngle:r}=t.getProps(["startAngle","endAngle"],s),{angle:l}=X(t,{x:e.x,y:e.y});J(l,a,r)&&n.push({element:t,datasetIndex:i,index:o})})),n}(t,e,i,n):[]}function qi(t,e,i,s,n){const o=[],a="x"===i?"inXRange":"inYRange";let r=!1;return $i(t,i,e,((t,s,l)=>{t[a]&&t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Ki={evaluateInteractionItems:$i,modes:{index(t,e,i,s){const n=ve(e,t),o=i.axis||"x",a=i.includeInvisible||!1,r=i.intersect?Yi(t,n,o,s,a):Xi(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;let r=i.intersect?Yi(t,n,o,s,a):Xi(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;t<i.length;++t)r.push({element:i[t],datasetIndex:e,index:t})}return r},point:(t,e,i,s)=>Yi(t,ve(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;return Xi(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>qi(t,ve(e,t),"x",i.intersect,s),y:(t,e,i,s)=>qi(t,ve(e,t),"y",i.intersect,s)}};const Gi=["left","top","right","bottom"];function Ji(t,e){return t.filter((t=>t.pos===e))}function Zi(t,e){return t.filter((t=>-1===Gi.indexOf(t.pos)&&t.box.axis===e))}function Qi(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function ts(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Gi.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o<a;++o){r=t[o];const{fullSize:a}=r.box,l=i[r.stack],h=l&&r.stackWeight/l.weight;r.horizontal?(r.width=h?h*s:a&&e.availableWidth,r.height=n):(r.width=s,r.height=h?h*n:a&&e.availableHeight)}return i}function es(t,e,i,s){return Math.max(t[i],e[i])+Math.max(t[s],e[s])}function is(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function ss(t,e,i,s){const{pos:n,box:a}=i,r=t.maxPadding;if(!o(n)){i.size&&(t[n]-=i.size);const e=s[i.stack]||{size:0,count:1};e.size=Math.max(e.size,i.horizontal?a.height:a.width),i.size=e.size/e.count,t[n]+=i.size}a.getPadding&&is(r,a.getPadding());const l=Math.max(0,e.outerWidth-es(r,t,"left","right")),h=Math.max(0,e.outerHeight-es(r,t,"top","bottom")),c=l!==t.w,d=h!==t.h;return t.w=l,t.h=h,i.horizontal?{same:c,other:d}:{same:d,other:c}}function ns(t,e){const i=e.maxPadding;function s(t){const s={left:0,top:0,right:0,bottom:0};return t.forEach((t=>{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function os(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;o<a;++o){r=t[o],l=r.box,l.update(r.width||e.w,r.height||e.h,ns(r.horizontal,e));const{same:a,other:d}=ss(e,i,r,s);h|=a&&n.length,c=c||d,l.fullSize||n.push(r)}return h&&os(n,e,i,s)||c}function as(t,e,i,s,n){t.top=i,t.left=e,t.right=e+s,t.bottom=i+n,t.width=s,t.height=n}function rs(t,e,i,s){const n=i.padding;let{x:o,y:a}=e;for(const r of t){const t=r.box,l=s[r.stack]||{count:1,placed:0,weight:1},h=r.stackWeight/l.weight||1;if(r.horizontal){const s=e.w*h,o=l.size||t.height;k(l.start)&&(a=l.start),t.fullSize?as(t,n.left,a,i.outerWidth-n.right-n.left,o):as(t,e.left+l.placed,a,s,o),l.start=a,l.placed+=s,a=t.bottom}else{const s=e.h*h,a=l.size||t.width;k(l.start)&&(o=l.start),t.fullSize?as(t,o,n.top,a,i.outerHeight-n.bottom-n.top):as(t,o,e.top+l.placed,a,s),l.start=o,l.placed+=s,o=t.right}}e.x=o,e.y=a}var ls={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(t){e.draw(t)}}]},t.boxes.push(e)},removeBox(t,e){const i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure(t,e,i){e.fullSize=i.fullSize,e.position=i.position,e.weight=i.weight},update(t,e,i,s){if(!t)return;const n=ki(t.options.layout.padding),o=Math.max(e-n.width,0),a=Math.max(i-n.height,0),r=function(t){const e=function(t){const e=[];let i,s,n,o,a,r;for(i=0,s=(t||[]).length;i<s;++i)n=t[i],({position:o,options:{stack:a,stackWeight:r=1}}=n),e.push({index:i,box:n,pos:o,horizontal:n.isHorizontal(),weight:n.weight,stack:a&&o+a,stackWeight:r});return e}(t),i=Qi(e.filter((t=>t.box.fullSize)),!0),s=Qi(Ji(e,"left"),!0),n=Qi(Ji(e,"right")),o=Qi(Ji(e,"top"),!0),a=Qi(Ji(e,"bottom")),r=Zi(e,"x"),l=Zi(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Ji(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;u(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);is(f,ki(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=ts(l.concat(h),d);os(r.fullSize,g,d,p),os(l,g,d,p),os(h,g,d,p)&&os(l,g,d,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(g),rs(r.leftAndTop,g,d,p),g.x+=g.w,g.y+=g.h,rs(r.rightAndBottom,g,d,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},u(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class hs{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class cs extends hs{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const ds="$chartjs",us={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},fs=t=>null===t||""===t;const gs=!!Se&&{passive:!0};function ps(t,e,i){t&&t.canvas&&t.canvas.removeEventListener(e,i,gs)}function ms(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function xs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ms(i.addedNodes,s),e=e&&!ms(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function bs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ms(i.removedNodes,s),e=e&&!ms(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const _s=new Map;let ys=0;function vs(){const t=window.devicePixelRatio;t!==ys&&(ys=t,_s.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function Ms(t,e,i){const s=t.canvas,n=s&&ge(s);if(!n)return;const o=ct(((t,e)=>{const s=n.clientWidth;i(t,e),s<n.clientWidth&&i()}),window),a=new ResizeObserver((t=>{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){_s.size||window.addEventListener("resize",vs),_s.set(t,e)}(t,o),a}function ws(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){_s.delete(t),_s.size||window.removeEventListener("resize",vs)}(t)}function ks(t,e,i){const s=t.canvas,n=ct((e=>{null!==t.ctx&&i(function(t,e){const i=us[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t&&t.addEventListener(e,i,gs)}(s,e,n),n}class Ss extends hs{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t[ds]={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",fs(n)){const e=Pe(t,"width");void 0!==e&&(t.width=e)}if(fs(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[ds])return!1;const i=e[ds].initial;["height","width"].forEach((t=>{const n=i[t];s(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e[ds],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:xs,detach:bs,resize:Ms}[e]||ks;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:ws,detach:ws,resize:ws}[e]||ps)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return we(t,e,i,s)}isAttached(t){const e=t&&ge(t);return!(!e||!e.isConnected)}}function Ps(t){return!fe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?cs:Ss}var Ds=Object.freeze({__proto__:null,BasePlatform:hs,BasicPlatform:cs,DomPlatform:Ss,_detectPlatform:Ps});const Cs="transparent",Os={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Qt(t||Cs),n=s.valid&&Qt(e||Cs);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class As{constructor(t,e,i,s){const n=e[i];s=Pi([t.to,s,n,t.from]);const o=Pi([t.from,n,s]);this._active=!0,this._fn=t.fn||Os[t.type||typeof o],this._easing=fi[t.easing]||fi.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=Pi([t.to,e,s,t.from]),this._from=Pi([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e<i),!this._active)return this._target[s]=a,void this._notify(!0);e<0?this._target[s]=n:(r=e/i%2,r=o&&r>1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t<i.length;t++)i[t][e]()}}class Ts{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!o(t))return;const e=Object.keys(ue.animation),i=this._properties;Object.getOwnPropertyNames(t).forEach((s=>{const a=t[s];if(!o(a))return;const r={};for(const t of e)r[t]=a[t];(n(a.properties)&&a.properties||[s]).forEach((t=>{t!==s&&i.has(t)||i.set(t,r)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e<s.length;e++){const n=t[s[e]];n&&n.active()&&i.push(n.wait())}return Promise.all(i)}(t.options.$animations,i).then((()=>{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new As(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(bt.add(this._chart,i),!0):void 0}}function Ls(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function Es(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n<o;++n)i.push(s[n].index);return i}function Rs(t,e,i,s={}){const n=t.keys,o="single"===s.mode;let r,l,h,c;if(null===e)return;let d=!1;for(r=0,l=n.length;r<l;++r){if(h=+n[r],h===i){if(d=!0,s.all)continue;break}c=t.values[h],a(c)&&(o||0===e||F(e)===F(c))&&(e+=c)}return d||s.all?e:0}function Is(t,e){const i=t&&t.options.stacked;return i||void 0===i&&void 0!==e.stack}function zs(t,e,i){const s=t[e]||(t[e]={});return s[i]||(s[i]={})}function Fs(t,e,i,s){for(const n of e.getMatchingVisibleMetas(s).reverse()){const e=t[n.index];if(i&&e>0||!i&&e<0)return n.index}return null}function Vs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;t<d;++t){const i=e[t],{[l]:o,[h]:d}=i;u=(i._stacks||(i._stacks={}))[h]=zs(n,c,o),u[r]=d,u._top=Fs(u,a,!0,s.type),u._bottom=Fs(u,a,!1,s.type);(u._visualValues||(u._visualValues={}))[r]=d}}function Bs(t,e){const i=t.scales;return Object.keys(i).filter((t=>i[t].axis===e)).shift()}function Ws(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const Ns=t=>"reset"===t||"none"===t,Hs=(t,e)=>e?t:Object.assign({},t);class js{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Is(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Ws(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=l(i.xAxisID,Bs(t,"x")),o=e.yAxisID=l(i.yAxisID,Bs(t,"y")),a=e.rAxisID=l(i.rAxisID,Bs(t,"r")),r=e.indexAxis,h=e.iAxisID=s(r,n,o,a),c=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&rt(this._data,this),t._stacked&&Ws(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(o(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:s}=e,n="x"===i.axis?"x":"y",o="x"===s.axis?"x":"y",a=Object.keys(t),r=new Array(a.length);let l,h,c;for(l=0,h=a.length;l<h;++l)c=a[l],r[l]={[n]:c,[o]:t[c]};return r}(e,t)}else if(i!==e){if(i){rt(i,this);const t=this._cachedMeta;Ws(t),t._parsed=[]}e&&Object.isExtensible(e)&&at(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,i=this.getDataset();let s=!1;this._dataCheck();const n=e._stacked;e._stacked=Is(e.vScale,e),e.stack!==i.stack&&(s=!0,Ws(e),e.stack=i.stack),this._resyncElements(t),(s||n!==e._stacked)&&(Vs(this,e._parsed),e._stacked=Is(e.vScale,e))}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:i,_data:s}=this,{iScale:a,_stacked:r}=i,l=a.axis;let h,c,d,u=0===t&&e===s.length||i._sorted,f=t>0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,d=s;else{d=n(s[t])?this.parseArrayData(i,s,t,e):o(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const a=()=>null===c[l]||f&&c[l]<f[l];for(h=0;h<e;++h)i._parsed[h+t]=c=d[h],u&&(a()&&(u=!1),f=c);i._sorted=u}r&&Vs(this,d)}parsePrimitiveData(t,e,i,s){const{iScale:n,vScale:o}=t,a=n.axis,r=o.axis,l=n.getLabels(),h=n===o,c=new Array(s);let d,u,f;for(d=0,u=s;d<u;++d)f=d+i,c[d]={[a]:h||n.parse(l[f],f),[r]:o.parse(e[f],f)};return c}parseArrayData(t,e,i,s){const{xScale:n,yScale:o}=t,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={x:n.parse(c[0],h),y:o.parse(c[1],h)};return a}parseObjectData(t,e,i,s){const{xScale:n,yScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l=new Array(s);let h,c,d,u;for(h=0,c=s;h<c;++h)d=h+i,u=e[d],l[h]={x:n.parse(M(u,a),d),y:o.parse(M(u,r),d)};return l}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,i){const s=this.chart,n=this._cachedMeta,o=e[t.axis];return Rs({keys:Es(s,!0),values:e._stacks[t.axis]._visualValues},o,n.index,{mode:i})}updateRangeFromParsed(t,e,i,s){const n=i[e.axis];let o=null===n?NaN:n;const a=s&&i._stacks[e.axis];s&&a&&(s.values=a,o=Rs(s,n,this._cachedMeta.index)),t.min=Math.min(t.min,o),t.max=Math.max(t.max,o)}getMinMax(t,e){const i=this._cachedMeta,s=i._parsed,n=i._sorted&&t===i.iScale,o=s.length,r=this._getOtherScale(t),l=((t,e,i)=>t&&!e.hidden&&e._stacked&&{keys:Es(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!a(f[t.axis])||c>e||d<e}for(u=0;u<o&&(g()||(this.updateRangeFromParsed(h,t,f,l),!n));++u);if(n)for(u=o-1;u>=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s<n;++s)o=e[s][t.axis],a(o)&&i.push(o);return i}getMaxOverflow(){return!1}getLabelAndValue(t){const e=this._cachedMeta,i=e.iScale,s=e.vScale,n=this.getParsed(t);return{label:i?""+i.getLabelForValue(n[i.axis]):"",value:s?""+s.getLabelForValue(n[s.axis]):""}}_update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=function(t){let e,i,s,n;return o(t)?(e=t.top,i=t.right,s=t.bottom,n=t.left):e=i=s=n=t,{top:e,right:i,bottom:s,left:n,disabled:!1===t}}(l(this.options.clip,function(t,e,i){if(!1===i)return!1;const s=Ls(t,i),n=Ls(e,i);return{top:n.end,right:s.end,bottom:n.start,left:s.start}}(e.xScale,e.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,e=this.chart,i=this._cachedMeta,s=i.data||[],n=e.chartArea,o=[],a=this._drawStart||0,r=this._drawCount||s.length-a,l=this.options.drawActiveElementsOnTop;let h;for(i.dataset&&i.dataset.draw(t,n,a,r),h=a;h<a+r;++h){const e=s[h];e.hidden||(e.active&&l?o.push(e):e.draw(t,n))}for(h=0;h<o.length;++h)o[h].draw(t,n)}getStyle(t,e){const i=e?"active":"default";return void 0===t&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(t||0,i)}getContext(t,e,i){const s=this.getDataset();let n;if(t>=0&&t<this._cachedMeta.data.length){const e=this._cachedMeta.data[t];n=e.$context||(e.$context=function(t,e,i){return Ci(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:i,index:e,mode:"default",type:"data"})}(this.getContext(),t,e)),n.parsed=this.getParsed(t),n.raw=s.data[t],n.index=n.dataIndex=t}else n=this.$context||(this.$context=function(t,e){return Ci(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}(this.chart.getContext(),this.index)),n.dataset=s,n.index=n.datasetIndex=this.index;return n.active=!!e,n.mode=i,n}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,e){return this._resolveElementOptions(this.dataElementType.id,e,t)}_resolveElementOptions(t,e="default",i){const s="active"===e,n=this._cachedDataOpts,o=t+"-"+e,a=n[o],r=this.enableOptionSharing&&k(i);if(a)return Hs(a,r);const l=this.chart.config,h=l.datasetElementScopeKeys(this._type,t),c=s?[`${t}Hover`,"hover",t,""]:[t,""],d=l.getOptionScopes(this.getDataset(),h),u=Object.keys(ue.elements[t]),f=l.resolveNamedOptions(d,u,(()=>this.getContext(i,s,e)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Hs(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new Ts(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Ns(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){Ns(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!Ns(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n<s&&this._removeElements(n,s-n)}_insertElements(t,e,i=!0){const s=this._cachedMeta,n=s.data,o=t+e;let a;const r=t=>{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a<o;++a)n[a]=new this.dataElementType;this._parsing&&r(s._parsed),this.parse(t,e),i&&this.updateElements(n,t,e,"reset")}updateElements(t,e,i,s){}_removeElements(t,e){const i=this._cachedMeta;if(this._parsing){const s=i._parsed.splice(t,e);i._stacked&&Ws(i,s)}i.data.splice(t,e)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[e,i,s]=t;this[e](i,s)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-t,t])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(t,e){e&&this._sync(["_removeElements",t,e]);const i=arguments.length-2;i&&this._sync(["_insertElements",t,i])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}class $s{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}hasValue(){return N(this.x)&&N(this.y)}getProps(t,e){const i=this.$animations;if(!e||!i)return this;const s={};return t.forEach((t=>{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}function Ys(t,e){const i=t.options.ticks,n=function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=Math.min(i.maxTicksLimit||n,n),a=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;i<s;i++)t[i].major&&e.push(i);return e}(e):[],r=a.length,l=a[0],h=a[r-1],c=[];if(r>o)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;n<t.length;n++)n===a&&(e.push(t[n]),o++,a=i[o*s])}(e,c,a,r/o),c;const d=function(t,e,i){const s=function(t){const e=t.length;let i,s;if(e<2)return!1;for(s=t[0],i=1;i<e;++i)if(t[i]-t[i-1]!==s)return!1;return s}(t),n=e.length/i;if(!s)return Math.max(n,1);const o=W(s);for(let t=0,e=o.length-1;t<e;t++){const e=o[t];if(e>n)return e}return Math.max(n,1)}(a,e,o);if(r>0){let t,i;const n=r>1?Math.round((h-l)/(r-1)):null;for(Us(e,c,d,s(n)?0:l-n,l),t=0,i=r-1;t<i;t++)Us(e,c,d,a[t],a[t+1]);return Us(e,c,d,h,s(n)?e.length:h+n),c}return Us(e,c,d),c}function Us(t,e,i,s,n){const o=l(s,0),a=Math.min(l(n,t.length),t.length);let r,h,c,d=0;for(i=Math.ceil(i),n&&(r=n-s,i=r/Math.floor(r/i)),c=o;c<0;)d++,c=Math.round(o+d*i);for(h=Math.max(o,0);h<a;h++)h===c&&(e.push(t[h]),d++,c=Math.round(o+d*i))}const Xs=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i,qs=(t,e)=>Math.min(e||t,t);function Ks(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;o<n;o+=s)i.push(t[Math.floor(o)]);return i}function Gs(t,e,i){const s=t.ticks.length,n=Math.min(e,s-1),o=t._startPixel,a=t._endPixel,r=1e-6;let l,h=t.getPixelForTick(n);if(!(i&&(l=1===s?Math.max(h-o,a-h):0===e?(t.getPixelForTick(1)-h)/2:(h-t.getPixelForTick(n-1))/2,h+=n<e?l:-l,h<o-r||h>a+r)))return h}function Js(t){return t.drawTicks?t.tickLength:0}function Zs(t,e){if(!t.display)return 0;const i=Si(t.font,e),s=ki(t.padding);return(n(t.text)?t.text.length:1)*i.lineHeight+s.height}function Qs(t,e,i){let s=ut(t);return(i&&"right"!==e||!i&&"right"===e)&&(s=(t=>"left"===t?"right":"right"===t?"left":t)(s)),s}class tn extends $s{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=r(t,Number.POSITIVE_INFINITY),e=r(e,Number.NEGATIVE_INFINITY),i=r(i,Number.POSITIVE_INFINITY),s=r(s,Number.NEGATIVE_INFINITY),{min:r(t,i),max:r(e,s),minDefined:a(t),maxDefined:a(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;r<l;++r)e=a[r].controller.getMinMax(this,t),n||(i=Math.min(i,e.min)),o||(s=Math.max(s,e.max));return i=o&&i>s?s:i,s=n&&i>s?i:s,{min:r(i,r(s,i)),max:r(s,r(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Di(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a<this.ticks.length;this._convertTicksToLabels(r?Ks(this.ticks,a):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),o.display&&(o.autoSkip||"auto"===o.source)&&(this.ticks=Ys(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),r&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t,e,i=this.options.reverse;this.isHorizontal()?(t=this.left,e=this.right):(t=this.top,e=this.bottom,i=!i),this._startPixel=t,this._endPixel=e,this._reversePixels=i,this._length=e-t,this._alignToPixels=this.options.alignToPixels}afterUpdate(){d(this.options.afterUpdate,[this])}beforeSetDimensions(){d(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){d(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),d(this.options[t],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){d(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const e=this.options.ticks;let i,s,n;for(i=0,s=t.length;i<s;i++)n=t[i],n.label=d(e.callback,[n.value,i,t],this)}afterTickToLabelConversion(){d(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){d(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,e=t.ticks,i=qs(this.ticks.length,t.ticks.maxTicksLimit),s=e.minRotation||0,n=e.maxRotation;let o,a,r,l=s;if(!this._isVisible()||!e.display||s>=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=Z(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Js(t.grid)-e.padding-Zs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=Y(Math.min(Math.asin(Z((h.highest.height+6)/o,-1,1)),Math.asin(Z(a/r,-1,1))-Math.asin(Z(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){d(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){d(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=Zs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Js(n)+o):(t.height=this.maxHeight,t.width=Js(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=$(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){d(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e<i;e++)s(t[e].label)&&(t.splice(e,1),i--,e--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ticks.sampleSize;let i=this.ticks;e<i.length&&(i=Ks(i,e)),this._labelSizes=t=this._computeLabelSizes(i,i.length,this.options.ticks.maxTicksLimit)}return t}_computeLabelSizes(t,e,i){const{ctx:o,_longestTextCache:a}=this,r=[],l=[],h=Math.floor(e/qs(e,i));let c,d,f,g,p,m,x,b,_,y,v,M=0,w=0;for(c=0;c<e;c+=h){if(g=t[c].label,p=this._resolveTickFontOptions(c),o.font=m=p.string,x=a[m]=a[m]||{data:{},gc:[]},b=p.lineHeight,_=y=0,s(g)||n(g)){if(n(g))for(d=0,f=g.length;d<f;++d)v=g[d],s(v)||n(v)||(_=Ce(o,x.data,x.gc,_,v),y+=b)}else _=Ce(o,x.data,x.gc,_,g),y=b;r.push(_),l.push(y),M=Math.max(_,M),w=Math.max(y,w)}!function(t,e){u(t,(t=>{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n<s;++n)delete t.data[i[n]];i.splice(0,s)}}))}(a,e);const k=r.indexOf(M),S=l.indexOf(w),P=t=>({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Ae(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&t<e.length){const i=e[t];return i.$context||(i.$context=function(t,e,i){return Ci(t,{tick:i,index:e,type:"tick"})}(this.getContext(),t,i))}return this.$context||(this.$context=Ci(this.chart.getContext(),{scale:this,type:"scale"}))}_tickSize(){const t=this.options.ticks,e=$(this.labelRotation),i=Math.abs(Math.cos(e)),s=Math.abs(Math.sin(e)),n=this._getLabelSizes(),o=t.autoSkipPadding||0,a=n?n.widest.width+o:0,r=n?n.highest.height+o:0;return this.isHorizontal()?r*i>a*s?a/i:r/s:r*s<a*i?r/i:a/s}_isVisible(){const t=this.options.display;return"auto"!==t?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:a,border:r}=s,h=n.offset,c=this.isHorizontal(),d=this.ticks.length+(h?1:0),u=Js(n),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,x=function(t){return Ae(i,t,p)};let b,_,y,v,M,w,k,S,P,D,C,O;if("top"===a)b=x(this.bottom),w=this.bottom-u,S=b-m,D=x(t.top)+m,O=t.bottom;else if("bottom"===a)b=x(this.top),D=t.top,O=x(t.bottom)-m,w=b+m,S=this.top+u;else if("left"===a)b=x(this.right),M=this.right-u,k=b-m,P=x(t.left)+m,C=t.right;else if("right"===a)b=x(this.left),P=t.left,C=x(t.right)-m,M=b+m,k=this.left+u;else if("x"===e){if("center"===a)b=x((t.top+t.bottom)/2+.5);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}D=t.top,O=t.bottom,w=b+m,S=w+u}else if("y"===e){if("center"===a)b=x((t.left+t.right)/2);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}M=b-m,k=M-u,P=t.left,C=t.right}const A=l(s.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/A));for(_=0;_<d;_+=T){const t=this.getContext(_),e=n.setContext(t),s=r.setContext(t),o=e.lineWidth,a=e.color,l=s.dash||[],d=s.dashOffset,u=e.tickWidth,g=e.tickColor,p=e.tickBorderDash||[],m=e.tickBorderDashOffset;y=Gs(this,_,h),void 0!==y&&(v=Ae(i,y,o),c?M=k=P=C=v:w=S=D=O=v,f.push({tx1:M,ty1:w,tx2:k,ty2:S,x1:P,y1:D,x2:C,y2:O,width:o,color:a,borderDash:l,borderDashOffset:d,tickWidth:u,tickColor:g,tickBorderDash:p,tickBorderDashOffset:m}))}return this._ticksLength=d,this._borderValue=b,f}_computeLabelItems(t){const e=this.axis,i=this.options,{position:s,ticks:a}=i,r=this.isHorizontal(),l=this.ticks,{align:h,crossAlign:c,padding:d,mirror:u}=a,f=Js(i.grid),g=f+d,p=u?-d:g,m=-$(this.labelRotation),x=[];let b,_,y,v,M,w,k,S,P,D,C,O,A="middle";if("top"===s)w=this.bottom-p,k=this._getXAxisLabelAlignment();else if("bottom"===s)w=this.top+p,k=this._getXAxisLabelAlignment();else if("left"===s){const t=this._getYAxisLabelAlignment(f);k=t.textAlign,M=t.x}else if("right"===s){const t=this._getYAxisLabelAlignment(f);k=t.textAlign,M=t.x}else if("x"===e){if("center"===s)w=(t.top+t.bottom)/2+g;else if(o(s)){const t=Object.keys(s)[0],e=s[t];w=this.chart.scales[t].getPixelForValue(e)+g}k=this._getXAxisLabelAlignment()}else if("y"===e){if("center"===s)M=(t.left+t.right)/2-g;else if(o(s)){const t=Object.keys(s)[0],e=s[t];M=this.chart.scales[t].getPixelForValue(e)}k=this._getYAxisLabelAlignment(f).textAlign}"y"===e&&("start"===h?A="top":"end"===h&&(A="bottom"));const T=this._getLabelSizes();for(b=0,_=l.length;b<_;++b){y=l[b],v=y.label;const t=a.setContext(this.getContext(b));S=this.getPixelForTick(b)+a.labelOffset,P=this._resolveTickFontOptions(b),D=P.lineHeight,C=n(v)?v.length:1;const e=C/2,i=t.color,o=t.textStrokeColor,h=t.textStrokeWidth;let d,f=k;if(r?(M=S,"inner"===k&&(f=b===_-1?this.options.reverse?"left":"right":0===b?this.options.reverse?"right":"left":"center"),O="top"===s?"near"===c||0!==m?-C*D+D/2:"center"===c?-T.highest.height/2-e*D+D:-T.highest.height+D/2:"near"===c||0!==m?D/2:"center"===c?T.highest.height/2-e*D:T.highest.height-C*D,u&&(O*=-1),0===m||t.showLabelBackdrop||(M+=D/2*Math.sin(m))):(w=S,O=(1-C)*D/2),t.showLabelBackdrop){const e=ki(t.backdropPadding),i=T.heights[b],s=T.widths[b];let n=O-e.top,o=0-e.left;switch(A){case"middle":n-=i/2;break;case"bottom":n-=i}switch(k){case"center":o-=s/2;break;case"right":o-=s;break;case"inner":b===_-1?o-=s:b>0&&(o-=s/2)}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}x.push({label:v,font:P,textOffset:O,options:{rotation:m,color:i,strokeColor:o,strokeWidth:h,textAlign:f,textBaseline:A,translation:[M,w],backdrop:d}})}return x}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-$(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return"left"===e?s?(l=this.right+n,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l+=a)):(l=this.right-o,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l=this.left)):"right"===e?s?(l=this.left+n,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l-=a)):(l=this.left+o,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l=this.right)):r="right",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n<o;++n){const t=s[n];e.drawOnChartArea&&a({x:t.x1,y:t.y1},{x:t.x2,y:t.y2},t),e.drawTicks&&a({x:t.tx1,y:t.ty1},{x:t.tx2,y:t.ty2},{color:t.tickColor,width:t.tickWidth,borderDash:t.tickBorderDash,borderDashOffset:t.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:e,options:{border:i,grid:s}}=this,n=i.setContext(this.getContext()),o=i.display?n.width:0;if(!o)return;const a=s.setContext(this.getContext(0)).lineWidth,r=this._borderValue;let l,h,c,d;this.isHorizontal()?(l=Ae(t,this.left,o)-o/2,h=Ae(t,this.right,a)+a/2,c=d=r):(c=Ae(t,this.top,o)-o/2,d=Ae(t,this.bottom,a)+a/2,l=h=r),e.save(),e.lineWidth=n.width,e.strokeStyle=n.color,e.beginPath(),e.moveTo(l,c),e.lineTo(h,d),e.stroke(),e.restore()}drawLabels(t){if(!this.options.ticks.display)return;const e=this.ctx,i=this._computeLabelArea();i&&Ie(e,i);const s=this.getLabelItems(t);for(const t of s){const i=t.options,s=t.font;Ne(e,t.label,0,t.textOffset,s,i)}i&&ze(e)}drawTitle(){const{ctx:t,options:{position:e,title:i,reverse:s}}=this;if(!i.display)return;const a=Si(i.font),r=ki(i.padding),l=i.align;let h=a.lineHeight/2;"bottom"===e||"center"===e||o(e)?(h+=r.bottom,n(i.text)&&(h+=a.lineHeight*(i.text.length-1))):h+=r.top;const{titleX:c,titleY:d,maxWidth:u,rotation:f}=function(t,e,i,s){const{top:n,left:a,bottom:r,right:l,chart:h}=t,{chartArea:c,scales:d}=h;let u,f,g,p=0;const m=r-n,x=l-a;if(t.isHorizontal()){if(f=ft(s,a,l),o(i)){const t=Object.keys(i)[0],s=i[t];g=d[t].getPixelForValue(s)+m-e}else g="center"===i?(c.bottom+c.top)/2+m-e:Xs(t,i,e);u=l-a}else{if(o(i)){const t=Object.keys(i)[0],s=i[t];f=d[t].getPixelForValue(s)-x+e}else f="center"===i?(c.left+c.right)/2-x+e:Xs(t,i,e);g=ft(s,r,n),p="left"===i?-E:E}return{titleX:f,titleY:g,maxWidth:u,rotation:p}}(this,h,e,l);Ne(t,i.text,0,0,a,{color:i.color,maxWidth:u,rotation:f,textAlign:Qs(l,e,s),textBaseline:"middle",translation:[c,d]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,e=t.ticks&&t.ticks.z||0,i=l(t.grid&&t.grid.z,-1),s=l(t.border&&t.border.z,0);return this._isVisible()&&this.draw===tn.prototype.draw?[{z:i,draw:t=>{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n<o;++n){const o=e[n];o[i]!==this.id||t&&o.type!==t||s.push(o)}return s}_resolveTickFontOptions(t){return Si(this.options.ticks.setContext(this.getContext(t)).font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class en{constructor(t,e,i){this.type=t,this.scope=e,this.override=i,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const e=Object.getPrototypeOf(t);let i;(function(t){return"id"in t&&"defaults"in t})(e)&&(i=this.register(e));const s=this.items,n=t.id,o=this.scope+"."+n;if(!n)throw new Error("class does not have id: "+t);return n in s||(s[n]=t,function(t,e,i){const s=x(Object.create(null),[i?ue.get(i):{},ue.get(e),t.defaults]);ue.set(e,s),t.defaultRoutes&&function(t,e){Object.keys(e).forEach((i=>{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");ue.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ue.describe(e,t.descriptors)}(t,o,i),this.override&&ue.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ue[s]&&(delete ue[s][i],this.override&&delete re[i])}}class sn{constructor(){this.controllers=new en(js,"datasets",!0),this.elements=new en($s,"elements"),this.plugins=new en(Object,"plugins"),this.scales=new en(tn,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):u(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);d(i["before"+s],[],i),e[t](i),d(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;e<this._typedRegistries.length;e++){const i=this._typedRegistries[e];if(i.isForType(t))return i}return this.plugins}_get(t,e,i){const s=e.get(t);if(void 0===s)throw new Error('"'+t+'" is not a registered '+i+".");return s}}var nn=new sn;class on{constructor(){this._init=[]}notify(t,e,i,s){"beforeInit"===e&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install"));const n=s?this._descriptors(t).filter(s):this._descriptors(t),o=this._notify(n,t,e,i);return"afterDestroy"===e&&(this._notify(n,t,"stop"),this._notify(this._init,t,"uninstall")),o}_notify(t,e,i,s){s=s||{};for(const n of t){const t=n.plugin;if(!1===d(t[i],[e,s,n.options],t)&&s.cancelable)return!1}return!0}invalidate(){s(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){const i=t&&t.config,s=l(i.options&&i.options.plugins,{}),n=function(t){const e={},i=[],s=Object.keys(nn.plugins.items);for(let t=0;t<s.length;t++)i.push(nn.getPlugin(s[t]));const n=t.plugins||[];for(let t=0;t<n.length;t++){const s=n[t];-1===i.indexOf(s)&&(i.push(s),e[s.id]=!0)}return{plugins:i,localIds:e}}(i);return!1!==s||e?function(t,{plugins:e,localIds:i},s,n){const o=[],a=t.getContext();for(const r of e){const e=r.id,l=an(s[e],n);null!==l&&o.push({plugin:r,options:rn(t.config,{plugin:r,local:i[e]},l,a)})}return o}(t,n,s,e):[]}_notifyStateChanges(t){const e=this._oldCache||[],i=this._cache,s=(t,e)=>t.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function an(t,e){return e||!1!==t?!0===t?{}:t:null}function rn(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function ln(t,e){const i=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function hn(t){if("x"===t||"y"===t||"r"===t)return t}function cn(t,...e){if(hn(t))return t;for(const s of e){const e=s.axis||("top"===(i=s.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&hn(t[0].toLowerCase());if(e)return e}var i;throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function dn(t,e,i){if(i[e+"AxisID"]===t)return{axis:e}}function un(t,e){const i=re[t.type]||{scales:{}},s=e.scales||{},n=ln(t.type,e),a=Object.create(null);return Object.keys(s).forEach((e=>{const r=s[e];if(!o(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const l=cn(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(i.length)return dn(t,"x",i[0])||dn(t,"y",i[0])}return{}}(e,t),ue.scales[r.type]),h=function(t,e){return t===e?"_index_":"_value_"}(l,n),c=i.scales||{};a[e]=b(Object.create(null),[{axis:l},r,c[l],c[h]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||ln(n,e),r=(re[n]||{}).scales||{};Object.keys(r).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,o),n=i[e+"AxisID"]||e;a[n]=a[n]||Object.create(null),b(a[n],[{axis:e},s[n],r[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];b(e,[ue.scales[e.type],ue.scale])})),a}function fn(t){const e=t.options||(t.options={});e.plugins=l(e.plugins,{}),e.scales=un(t,e)}function gn(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const pn=new Map,mn=new Set;function xn(t,e){let i=pn.get(t);return i||(i=e(),pn.set(t,i),mn.add(i)),i}const bn=(t,e,i)=>{const s=M(e,i);void 0!==s&&t.add(s)};class _n{constructor(t){this._config=function(t){return(t=t||{}).data=gn(t.data),fn(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=gn(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),fn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return xn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return xn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return xn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return xn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>bn(r,t,e)))),e.forEach((t=>bn(r,s,t))),e.forEach((t=>bn(r,re[n]||{},t))),e.forEach((t=>bn(r,ue,t))),e.forEach((t=>bn(r,le,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),mn.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,re[e]||{},ue.datasets[e]||{},{type:e},ue,le]}resolveNamedOptions(t,e,i,s=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=yn(this._resolverCache,t,s);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:s}=Ye(t);for(const o of e){const e=i(o),a=s(o),r=(a||e)&&t[o];if(e&&(S(r)||vn(r))||a&&n(r))return!0}return!1}(a,e)){o.$shared=!1;l=$e(a,i=S(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[""],s){const{resolver:n}=yn(this._resolverCache,t,i);return o(e)?$e(n,e,void 0,s):n}}function yn(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:je(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const vn=t=>o(t)&&Object.getOwnPropertyNames(t).some((e=>S(t[e])));const Mn=["top","bottom","left","right","chartArea"];function wn(t,e){return"top"===t||"bottom"===t||-1===Mn.indexOf(t)&&"x"===e}function kn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function Sn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),d(i&&i.onComplete,[t],e)}function Pn(t){const e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function Dn(t){return fe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Cn={},On=t=>{const e=Dn(t);return Object.values(Cn).filter((t=>t.canvas===e)).pop()};function An(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class Tn{static defaults=ue;static instances=Cn;static overrides=re;static registry=nn;static version="4.5.0";static getChart=On;static register(...t){nn.add(...t),Ln()}static unregister(...t){nn.remove(...t),Ln()}constructor(t,e){const s=this.config=new _n(e),n=Dn(t),o=On(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||Ps(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=i(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new on,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=dt((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],Cn[this.id]=this,r&&l?(bt.listen(this,"complete",Sn),bt.listen(this,"progress",Pn),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return s(t)?e&&o?o:n?i/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return nn}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Te(this.canvas,this.ctx),this}stop(){return bt.stop(this),this}resize(t,e){bt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),d(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){u(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=cn(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),u(n,(e=>{const n=e.options,o=n.id,a=cn(o,n),r=l(n.type,e.dtype);void 0!==n.position&&wn(n.position,a)===wn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===r)h=i[o];else{h=new(nn.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),u(s,((t,e)=>{t||delete i[e]})),u(i,(t=>{ls.configure(this,t,t.options),ls.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;t<i;++t)this._destroyDatasetMeta(t);t.splice(e,i-e)}this._sortedMetasets=t.slice(0).sort(kn("order","index"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=this;t.length>e.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i<s;i++){const s=e[i];let n=this.getDatasetMeta(i);const o=s.type||this.config.type;if(n.type&&n.type!==o&&(this._destroyDatasetMeta(i),n=this.getDatasetMeta(i)),n.type=o,n.indexAxis=s.indexAxis||ln(o,this.options),n.order=s.order||0,n.index=i,n.label=""+s.label,n.visible=this.isDatasetVisible(i),n.controller)n.controller.updateIndex(i),n.controller.linkScales();else{const e=nn.getController(o),{datasetElementType:s,dataElementType:a}=ue.datasets[o];Object.assign(e,{dataElementType:nn.getElement(a),datasetElementType:s&&nn.getElement(s)}),n.controller=new e(this,i),t.push(n.controller)}}return this._updateMetasets(),t}_resetElements(){u(this.data.datasets,((t,e)=>{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t<e;t++){const{controller:e}=this.getDatasetMeta(t),i=!s&&-1===n.indexOf(e);e.buildOrUpdateElements(i),o=Math.max(+e.getMaxOverflow(),o)}o=this._minPadding=i.layout.autoPadding?o:0,this._updateLayout(o),s||u(n,(t=>{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(kn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){u(this.scales,(t=>{ls.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);P(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){An(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;t<e;t++)if(!P(s,i(t)))return;return Array.from(s).map((t=>t.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ls.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],u(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t<e;++t)this.getDatasetMeta(t).controller.configure();for(let e=0,i=this.data.datasets.length;e<i;++e)this._updateDataset(e,S(t)?t({datasetIndex:e}):t);this.notifyPlugins("afterDatasetsUpdate",{mode:t})}}_updateDataset(t,e){const i=this.getDatasetMeta(t),s={meta:i,index:t,mode:e,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetUpdate",s)&&(i.controller._update(e),s.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",s))}render(){!1!==this.notifyPlugins("beforeRender",{cancelable:!0})&&(bt.has(this)?this.attached&&!bt.running(this)&&bt.start(this):(this.draw(),Sn({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:t,height:e}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(t,e)}if(this.clear(),this.width<=0||this.height<=0)return;if(!1===this.notifyPlugins("beforeDraw",{cancelable:!0}))return;const e=this._layers;for(t=0;t<e.length&&e[t].z<=0;++t)e[t].draw(this.chartArea);for(this._drawDatasets();t<e.length;++t)e[t].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(t){const e=this._sortedMetasets,i=[];let s,n;for(s=0,n=e.length;s<n;++s){const n=e[s];t&&!n.visible||i.push(n)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(!1===this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0}))return;const t=this.getSortedVisibleDatasetMetas();for(let e=t.length-1;e>=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i={meta:t,index:t.index,cancelable:!0},s=Ni(this,t);!1!==this.notifyPlugins("beforeDatasetDraw",i)&&(s&&Ie(e,s),t.controller.draw(),s&&ze(e),i.cancelable=!1,this.notifyPlugins("afterDatasetDraw",i))}isPointInArea(t){return Re(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Ki.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ci(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);k(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),bt.remove(this),t=0,e=this.data.datasets.length;t<e;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:e}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),Te(t,e),this.platform.releaseContext(e),this.canvas=null,this.ctx=null),delete Cn[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};u(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){u(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},u(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a<r;++a){o=t[a];const e=o&&this.getDatasetMeta(o.datasetIndex).controller;e&&e[s+"HoverStyle"](o.element,o.datasetIndex,o.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const e=this._active||[],i=t.map((({datasetIndex:t,index:e})=>{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!f(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=D(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,d(n.onHover,[t,a,this],this),r&&d(n.onClick,[t,a,this],this));const h=!f(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}function Ln(){return u(Tn.instances,(t=>t._plugins.invalidate()))}function En(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Rn{static override(t){Object.assign(Rn.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return En()}parse(){return En()}format(){return En()}add(){return En()}diff(){return En()}startOf(){return En()}endOf(){return En()}}var In={_date:Rn};function zn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;e<n;e++)s=s.concat(i[e].controller.getAllParsedValues(t));t._cache.$bar=lt(s.sort(((t,e)=>t-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(k(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;s<n;++s)o=e.getPixelForValue(i[s]),l();for(a=void 0,s=0,n=e.ticks.length;s<n;++s)o=e.getPixelForTick(s),l();return r}function Fn(t,e,i,s){return n(t)?function(t,e,i,s){const n=i.parse(t[0],s),o=i.parse(t[1],s),a=Math.min(n,o),r=Math.max(n,o);let l=a,h=r;Math.abs(a)>Math.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function Vn(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;h<c;++h)u=e[h],d={},d[n.axis]=r||n.parse(a[h],h),l.push(Fn(u,d,o,h));return l}function Bn(t){return t&&void 0!==t.barStart&&void 0!==t.barEnd}function Wn(t,e,i,s){let n=e.borderSkipped;const o={};if(!n)return void(t.borderSkipped=o);if(!0===n)return void(t.borderSkipped={top:!0,right:!0,bottom:!0,left:!0});const{start:a,end:r,reverse:l,top:h,bottom:c}=function(t){let e,i,s,n,o;return t.horizontal?(e=t.base>t.x,i="left",s="right"):(e=t.base<t.y,i="bottom",s="top"),e?(n="end",o="start"):(n="start",o="end"),{start:i,end:s,reverse:e,top:n,bottom:o}}(t);"middle"===n&&i&&(t.enableBorderRadius=!0,(i._top||0)===s?n=h:(i._bottom||0)===s?n=c:(o[Nn(c,a,r,l)]=!0,n=h)),o[Nn(n,a,r,l)]=!0,t.borderSkipped=o}function Nn(t,e,i,s){var n,o,a;return s?(a=i,t=Hn(t=(n=t)===(o=e)?a:n===a?o:n,i,e)):t=Hn(t,e,i),t}function Hn(t,e,i){return"start"===t?e:"end"===t?i:t}function jn(t,{inflateAmount:e},i){t.inflateAmount="auto"===e?1===i?.33:0:e}class $n extends js{static id="doughnut";static defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"};static descriptors={_scriptable:t=>"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,a,r=t=>+i[t];if(o(i[t])){const{key:t="value"}=this._parsing;r=e=>+M(i[e],t)}for(n=t,a=t+e;n<a;++n)s._parsed[n]=r(n)}}_getRotation(){return $(this.options.rotation-90)}_getCircumference(){return $(this.options.circumference)}_getRotationExtents(){let t=O,e=-O;for(let i=0;i<this.chart.data.datasets.length;++i)if(this.chart.isDatasetVisible(i)&&this.chart.getDatasetMeta(i).type===this._type){const s=this.chart.getDatasetMeta(i).controller,n=s._getRotation(),o=s._getCircumference();t=Math.min(t,n),e=Math.max(e,n+o)}return{rotation:t,circumference:e-t}}update(t){const e=this.chart,{chartArea:i}=e,s=this._cachedMeta,n=s.data,o=this.getMaxBorderWidth()+this.getMaxOffset(n)+this.options.spacing,a=Math.max((Math.min(i.width,i.height)-o)/2,0),r=Math.min(h(this.options.cutout,a),1),l=this._getRingWeight(this.index),{circumference:d,rotation:u}=this._getRotationExtents(),{ratioX:f,ratioY:g,offsetX:p,offsetY:m}=function(t,e,i){let s=1,n=1,o=0,a=0;if(e<O){const r=t,l=r+e,h=Math.cos(r),c=Math.sin(r),d=Math.cos(l),u=Math.sin(l),f=(t,e,s)=>J(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>J(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(E,c,u),x=g(C,h,d),b=g(C+E,c,u);s=(p-x)/2,n=(m-b)/2,o=-(p+x)/2,a=-(m+b)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),x=(i.width-o)/f,b=(i.height-o)/g,_=Math.max(Math.min(x,b)/2,0),y=c(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p<e;++p)m+=this._circumference(p,n);for(p=e;p<e+i;++p){const e=this._circumference(p,n),i=t[p],o={x:l+this.offsetX,y:h+this.offsetY,startAngle:m,endAngle:m+e,circumference:e,outerRadius:u,innerRadius:d};g&&(o.options=f||this.resolveDataElementOptions(p,i.active?"active":s)),m+=e,this.updateElement(i,p,o,s)}}calculateTotal(){const t=this._cachedMeta,e=t.data;let i,s=0;for(i=0;i<e.length;i++){const n=t._parsed[i];null===n||isNaN(n)||!this.chart.getDataVisibility(i)||e[i].hidden||(s+=Math.abs(n))}return s}calculateCircumference(t){const e=this._cachedMeta.total;return e>0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s<n;++s)if(i.isDatasetVisible(s)){o=i.getDatasetMeta(s),t=o.data,a=o.controller;break}if(!t)return 0;for(s=0,n=t.length;s<n;++s)r=a.resolveDataElementOptions(s),"inner"!==r.borderAlign&&(e=Math.max(e,r.borderWidth||0,r.hoverBorderWidth||0));return e}getMaxOffset(t){let e=0;for(let i=0,s=t.length;i<s;++i){const t=this.resolveDataElementOptions(i);e=Math.max(e,t.offset||0,t.hoverOffset||0)}return e}_getRingWeightOffset(t){let e=0;for(let i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e}_getRingWeight(t){return Math.max(l(this.chart.data.datasets[t].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}class Yn extends js{static id="polarArea";static defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(s<e.min&&(e.min=s),s>e.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*C;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d<e;++d)u+=this._computeAngle(d,s,f);for(d=e;d<e+i;d++){const e=t[d];let i=u,g=u+this._computeAngle(d,s,f),p=o.getDataVisibility(d)?r.getDistanceFromCenterForValue(this.getParsed(d).r):0;u=g,n&&(a.animateScale&&(p=0),a.animateRotate&&(i=g=c));const m={x:l,y:h,innerRadius:0,outerRadius:p,startAngle:i,endAngle:g,options:this.resolveDataElementOptions(d,e.active?"active":s)};this.updateElement(e,d,m,s)}}countVisibleElements(){const t=this._cachedMeta;let e=0;return t.data.forEach(((t,i)=>{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?$(this.resolveDataElementOptions(t,e).angle||i):0}}var Un=Object.freeze({__proto__:null,BarController:class extends js{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return Vn(t,e,i,s)}parseArrayData(t,e,i,s){return Vn(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l="x"===n.axis?a:r,h="x"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;d<u;++d)g=e[d],f={},f[n.axis]=n.parse(M(g,l),d),c.push(Fn(M(g,h),f,o,d));return c}updateRangeFromParsed(t,e,i,s){super.updateRangeFromParsed(t,e,i,s);const n=i._custom;n&&e===this._cachedMeta.vScale&&(t.min=Math.min(t.min,n.min),t.max=Math.max(t.max,n.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const e=this._cachedMeta,{iScale:i,vScale:s}=e,n=this.getParsed(t),o=n._custom,a=Bn(o)?"["+o.start+", "+o.end+"]":""+s.getLabelForValue(n[s.axis]);return{label:""+i.getLabelForValue(n[i.axis]),value:a}}initialize(){this.enableOptionSharing=!0,super.initialize();this._cachedMeta.stack=this.getDataset().stack}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,i,n){const o="reset"===n,{index:a,_cachedMeta:{vScale:r}}=this,l=r.getBasePixel(),h=r.isHorizontal(),c=this._getRuler(),{sharedOptions:d,includeOptions:u}=this._getSharedOptions(e,n);for(let f=e;f<e+i;f++){const e=this.getParsed(f),i=o||s(e[r.axis])?{base:l,head:l}:this._calculateBarValuePixels(f),g=this._calculateBarIndexPixels(f,c),p=(e._stacks||{})[r.axis],m={horizontal:h,base:i.base,enableBorderRadius:!p||Bn(e._custom)||a===p._top||a===p._bottom,x:h?i.head:g.center,y:h?g.center:i.head,height:h?g.size:Math.abs(i.size),width:h?Math.abs(i.size):g.size};u&&(m.options=d||this.resolveDataElementOptions(f,t[f].active?"active":n));const x=m.options||t[f].options;Wn(m,x,p,a),jn(m,x,c.ratio),this.updateElement(t[f],f,m,n)}}_getStacks(t,e){const{iScale:i}=this._cachedMeta,n=i.getMatchingVisibleMetas(this._type).filter((t=>t.controller.options.grouped)),o=i.options.stacked,a=[],r=this._cachedMeta.controller.getParsed(e),l=r&&r[i.axis],h=t=>{const e=t._parsed.find((t=>t[i.axis]===l)),n=e&&e[t.vScale.axis];if(s(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!h(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){const t=this.chart.scales,e=this.chart.options.indexAxis;return Object.keys(t).filter((i=>t[i].axis===e)).shift()}_getAxis(){const t={},e=this.getFirstScaleIdForIndexAxis();for(const i of this.chart.data.datasets)t[l("x"===this.chart.options.indexAxis?i.xAxisID:i.yAxisID,e)]=!0;return Object.keys(t)}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n<o;++n)s.push(i.getPixelForValue(this.getParsed(n)[i.axis],n));const a=t.barThickness;return{min:a||zn(e),pixels:s,start:i._startPixel,end:i._endPixel,stackCount:this._getStackCount(),scale:i,grouped:t.grouped,ratio:a?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:e,_stacked:i,index:n},options:{base:o,minBarLength:a}}=this,r=o||0,l=this.getParsed(t),h=l._custom,c=Bn(h);let d,u,f=l[e.axis],g=0,p=i?this.applyStack(e,l,i):f;p!==f&&(g=p-f,p=f),c&&(f=h.barStart,p=h.barEnd-h.barStart,0!==f&&F(f)!==F(h.barEnd)&&(g=0),g+=f);const m=s(o)||c?g:o;let x=e.getPixelForValue(m);if(d=this.chart.getDataVisibility(t)?e.getPixelForValue(g+p):x,u=d-x,Math.abs(u)<a){u=function(t,e,i){return 0!==t?F(t):(e.isHorizontal()?1:-1)*(e.min>=i?1:-1)}(u,e,r)*a,f===r&&(x-=u/2);const t=e.getPixelForDecimal(0),s=e.getPixelForDecimal(1),o=Math.min(t,s),h=Math.max(t,s);x=Math.max(Math.min(x,h),o),d=x+u,i&&!c&&(l._stacks[e.axis]._visualValues[n]=e.getValueForPixel(d)-e.getValueForPixel(x))}if(x===e.getPixelForValue(r)){const t=F(u)*e.getLineWidthForValue(r)/2;x+=t,u-=t}return{size:u,base:x,head:d,center:d+u/2}}_calculateBarIndexPixels(t,e){const i=e.scale,n=this.options,o=n.skipNull,a=l(n.maxBarThickness,1/0);let r,h;const c=this._getAxisCount();if(e.grouped){const i=o?this._getStackCount(t):e.stackCount,d="flex"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t<n.length-1?n[t+1]:null;const l=i.categoryPercentage;null===a&&(a=o-(null===r?e.end-e.start:r-o)),null===r&&(r=o+o-a);const h=o-(o-Math.min(a,r))/2*l;return{chunk:Math.abs(r-a)/2*l/s,ratio:i.barPercentage,start:h}}(t,e,n,i*c):function(t,e,i,n){const o=i.barThickness;let a,r;return s(o)?(a=e.min*i.categoryPercentage,r=i.barPercentage):(a=o*n,r=1),{chunk:a/n,ratio:r,start:e.pixels[t]-a/2}}(t,e,n,i*c),u="x"===this.chart.options.indexAxis?this.getDataset().xAxisID:this.getDataset().yAxisID,f=this._getAxis().indexOf(l(u,this.getFirstScaleIdForIndexAxis())),g=this._getStackIndex(this.index,this._cachedMeta.stack,o?t:void 0)+f;r=d.start+d.chunk*g+d.chunk/2,h=Math.min(a,d.chunk*d.ratio)}else r=i.getPixelForValue(this.getParsed(t)[i.axis],t),h=Math.min(a,e.min*e.ratio);return{base:r-h/2,head:r+h/2,center:r,size:h}}draw(){const t=this._cachedMeta,e=t.vScale,i=t.data,s=i.length;let n=0;for(;n<s;++n)null===this.getParsed(n)[e.axis]||i[n].hidden||i[n].draw(this._ctx)}},BubbleController:class extends js{static id="bubble";static defaults={datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}};static overrides={scales:{x:{type:"linear"},y:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(t,e,i,s){const n=super.parsePrimitiveData(t,e,i,s);for(let t=0;t<n.length;t++)n[t]._custom=this.resolveDataElementOptions(t+i).radius;return n}parseArrayData(t,e,i,s){const n=super.parseArrayData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=l(s[2],this.resolveDataElementOptions(t+i).radius)}return n}parseObjectData(t,e,i,s){const n=super.parseObjectData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=l(s&&s.r&&+s.r,this.resolveDataElementOptions(t+i).radius)}return n}getMaxOverflow(){const t=this._cachedMeta.data;let e=0;for(let i=t.length-1;i>=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:i[t]||"",value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d<e+i;d++){const e=t[d],i=!n&&this.getParsed(d),u={},f=u[h]=n?o.getPixelForDecimal(.5):o.getPixelForValue(i[h]),g=u[c]=n?a.getBasePixel():a.getPixelForValue(i[c]);u.skip=isNaN(f)||isNaN(g),l&&(u.options=r||this.resolveDataElementOptions(d,e.active?"active":s),n&&(u.options.radius=0)),this.updateElement(e,d,u,s)}}resolveDataElementOptions(t,e){const i=this.getParsed(t);let s=super.resolveDataElementOptions(t,e);s.$shared&&(s=Object.assign({},s,{$shared:!1}));const n=s.radius;return"active"!==e&&(s.radius=0),s.radius+=l(i&&i._custom,n),s}},DoughnutController:$n,LineController:class extends js{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:s=[],_dataset:n}=e,o=this.chart._animationsDisabled;let{start:a,count:r}=pt(e,s,o);this._drawStart=a,this._drawCount=r,mt(e)&&(a=0,r=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=s;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:l},t),this.updateElements(s,a,r,t)}updateElements(t,e,i,n){const o="reset"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,{sharedOptions:c,includeOptions:d}=this._getSharedOptions(e,n),u=a.axis,f=r.axis,{spanGaps:g,segment:p}=this.options,m=N(g)?g:Number.POSITIVE_INFINITY,x=this.chart._animationsDisabled||o||"none"===n,b=e+i,_=t.length;let y=e>0&&this.getParsed(e-1);for(let i=0;i<_;++i){const g=t[i],_=x?g:{};if(i<e||i>=b){_.skip=!0;continue}const v=this.getParsed(i),M=s(v[f]),w=_[u]=a.getPixelForValue(v[u],i),k=_[f]=o||M?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,v,l):v[f],i);_.skip=isNaN(w)||isNaN(k)||M,_.stop=i>0&&Math.abs(v[u]-y[u])>m,p&&(_.parsed=v,_.raw=h.data[i]),d&&(_.options=c||this.resolveDataElementOptions(i,g.active?"active":n)),x||this.updateElement(g,i,_,n),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends $n{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:Yn,RadarController:class extends js{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o="reset"===s;for(let a=e;a<e+i;a++){const e=t[a],i=this.resolveDataElementOptions(a,e.active?"active":s),r=n.getPointPositionForValue(a,this.getParsed(a).r),l=o?n.xCenter:r.x,h=o?n.yCenter:r.y,c={x:l,y:h,angle:r.angle,skip:isNaN(l)||isNaN(h),options:i};this.updateElement(e,a,c,s)}}},ScatterController:class extends js{static id="scatter";static defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1};static overrides={interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}};getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y);return{label:i[t]||"",value:"("+a+", "+r+")"}}update(t){const e=this._cachedMeta,{data:i=[]}=e,s=this.chart._animationsDisabled;let{start:n,count:o}=pt(e,i,s);if(this._drawStart=n,this._drawCount=o,mt(e)&&(n=0,o=i.length),this.options.showLine){this.datasetElementType||this.addElements();const{dataset:n,_dataset:o}=e;n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!o._decimated,n.points=i;const a=this.resolveDatasetElementOptions(t);a.segment=this.options.segment,this.updateElement(n,void 0,{animated:!s,options:a},t)}else this.datasetElementType&&(delete e.dataset,this.datasetElementType=!1);this.updateElements(i,n,o,t)}addElements(){const{showLine:t}=this.options;!this.datasetElementType&&t&&(this.datasetElementType=this.chart.registry.getElement("line")),super.addElements()}updateElements(t,e,i,n){const o="reset"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,c=this.resolveDataElementOptions(e,n),d=this.getSharedOptions(c),u=this.includeOptions(n,d),f=a.axis,g=r.axis,{spanGaps:p,segment:m}=this.options,x=N(p)?p:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||"none"===n;let _=e>0&&this.getParsed(e-1);for(let c=e;c<e+i;++c){const e=t[c],i=this.getParsed(c),p=b?e:{},y=s(i[g]),v=p[f]=a.getPixelForValue(i[f],c),M=p[g]=o||y?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,i,l):i[g],c);p.skip=isNaN(v)||isNaN(M)||y,p.stop=c>0&&Math.abs(i[f]-_[f])>x,m&&(p.parsed=i,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?"active":n)),b||this.updateElement(e,c,p,n),_=i}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}});function Xn(t,e,i,s){const n=vi(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return Z(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:Z(n.innerStart,0,a),innerEnd:Z(n.innerEnd,0,a)}}function qn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Kn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/C)/d)/2,m=l+p+f,x=n-p-f,{outerStart:b,outerEnd:_,innerStart:y,innerEnd:v}=Xn(e,u,d,x-m),M=d-b,w=d-_,k=m+b/M,S=x-_/w,P=u+y,D=u+v,O=m+y/P,A=x-v/D;if(t.beginPath(),o){const e=(k+S)/2;if(t.arc(a,r,d,k,e),t.arc(a,r,d,e,S),_>0){const e=qn(w,S,a,r);t.arc(e.x,e.y,_,S,x+E)}const i=qn(D,x,a,r);if(t.lineTo(i.x,i.y),v>0){const e=qn(D,A,a,r);t.arc(e.x,e.y,v,x+E,A+Math.PI)}const s=(x-v/u+(m+y/u))/2;if(t.arc(a,r,u,x-v/u,s,!0),t.arc(a,r,u,s,m+y/u,!0),y>0){const e=qn(P,O,a,r);t.arc(e.x,e.y,y,O+Math.PI,m-E)}const n=qn(M,m,a,r);if(t.lineTo(n.x,n.y),b>0){const e=qn(M,k,a,r);t.arc(e.x,e.y,b,m-E,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function Gn(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r,options:l}=e,{borderWidth:h,borderJoinStyle:c,borderDash:d,borderDashOffset:u,borderRadius:f}=l,g="inner"===l.borderAlign;if(!h)return;t.setLineDash(d||[]),t.lineDashOffset=u,g?(t.lineWidth=2*h,t.lineJoin=c||"round"):(t.lineWidth=h,t.lineJoin=c||"bevel");let p=e.endAngle;if(o){Kn(t,e,i,s,p,n);for(let e=0;e<o;++e)t.stroke();isNaN(r)||(p=a+(r%O||O))}g&&function(t,e,i){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=e;let h=n/r;t.beginPath(),t.arc(o,a,r,s-h,i+h),l>n?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+E,s-E),t.closePath(),t.clip()}(t,e,p),l.selfJoin&&p-a>=C&&0===f&&"miter"!==c&&function(t,e,i){const{startAngle:s,x:n,y:o,outerRadius:a,innerRadius:r,options:l}=e,{borderWidth:h,borderJoinStyle:c}=l,d=Math.min(h/a,G(s-i));if(t.beginPath(),t.arc(n,o,a-h/2,s+d/2,i-d/2),r>0){const e=Math.min(h/r,G(s-i));t.arc(n,o,r+h/2,i-e/2,s+e/2,!0)}else{const e=Math.min(h/2,a*G(s-i));if("round"===c)t.arc(n,o,e,i-C/2,s+C/2,!0);else if("bevel"===c){const a=2*e*e,r=-a*Math.cos(i+C/2)+n,l=-a*Math.sin(i+C/2)+o,h=a*Math.cos(s+C/2)+n,c=a*Math.sin(s+C/2)+o;t.lineTo(r,l),t.lineTo(h,c)}}t.closePath(),t.moveTo(0,0),t.rect(0,0,t.canvas.width,t.canvas.height),t.clip("evenodd")}(t,e,p),o||(Kn(t,e,i,s,p,n),t.stroke())}function Jn(t,e,i=e){t.lineCap=l(i.borderCapStyle,e.borderCapStyle),t.setLineDash(l(i.borderDash,e.borderDash)),t.lineDashOffset=l(i.borderDashOffset,e.borderDashOffset),t.lineJoin=l(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=l(i.borderWidth,e.borderWidth),t.strokeStyle=l(i.borderColor,e.borderColor)}function Zn(t,e,i){t.lineTo(i.x,i.y)}function Qn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=n<a&&o<a||n>r&&o>r;return{count:s,start:l,loop:e.loop,ilen:h<l&&!c?s+h-l:h-l}}function to(t,e,i,s){const{points:n,options:o}=e,{count:a,start:r,loop:l,ilen:h}=Qn(n,i,s),c=function(t){return t.stepped?Fe:t.tension||"monotone"===t.cubicInterpolationMode?Ve:Zn}(o);let d,u,f,{move:g=!0,reverse:p}=s||{};for(d=0;d<=h;++d)u=n[(r+(p?h-d:d))%a],u.skip||(g?(t.moveTo(u.x,u.y),g=!1):c(t,f,u,p,o.stepped),f=u);return l&&(u=n[(r+(p?h:0))%a],c(t,f,u,p,o.stepped)),!!l}function eo(t,e,i,s){const n=e.points,{count:o,start:a,ilen:r}=Qn(n,i,s),{move:l=!0,reverse:h}=s||{};let c,d,u,f,g,p,m=0,x=0;const b=t=>(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[b(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(i<f?f=i:i>g&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=s,x=0,f=g=i),p=i}_()}function io(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?eo:to}const so="function"==typeof Path2D;function no(t,e,i,s){so&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Jn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=io(e);for(const r of n)Jn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class oo extends $s{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;hi(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=zi(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Ii(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?pi:t.tension||"monotone"===t.cubicInterpolationMode?mi:gi}(i);let l,h;for(l=0,h=o.length;l<h;++l){const{start:h,end:c}=o[l],d=n[h],u=n[c];if(d===u){a.push(d);continue}const f=r(d,u,Math.abs((s-d[e])/(u[e]-d[e])),i.stepped);f[e]=t[e],a.push(f)}return 1===a.length?a[0]:a}pathSegment(t,e,i){return io(this)(t,this,e,i)}path(t,e,i){const s=this.segments,n=io(this);let o=this._loop;e=e||0,i=i||this.points.length-e;for(const a of s)o&=n(t,this,a,{start:e,end:e+i-1});return!!o}draw(t,e,i,s){const n=this.options||{};(this.points||[]).length&&n.borderWidth&&(t.save(),no(t,this,i,s),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function ao(t,e,i,s){const n=t.options,{[i]:o}=t.getProps([i],s);return Math.abs(e-o)<n.radius+n.hitRadius}function ro(t,e){const{x:i,y:s,base:n,width:o,height:a}=t.getProps(["x","y","base","width","height"],e);let r,l,h,c,d;return t.horizontal?(d=a/2,r=Math.min(i,n),l=Math.max(i,n),h=s-d,c=s+d):(d=o/2,r=i-d,l=i+d,h=Math.min(s,n),c=Math.max(s,n)),{left:r,top:h,right:l,bottom:c}}function lo(t,e,i,s){return t?0:Z(e,i,s)}function ho(t){const e=ro(t),i=e.right-e.left,s=e.bottom-e.top,n=function(t,e,i){const s=t.options.borderWidth,n=t.borderSkipped,o=Mi(s);return{t:lo(n.top,o.top,0,i),r:lo(n.right,o.right,0,e),b:lo(n.bottom,o.bottom,0,i),l:lo(n.left,o.left,0,e)}}(t,i/2,s/2),a=function(t,e,i){const{enableBorderRadius:s}=t.getProps(["enableBorderRadius"]),n=t.options.borderRadius,a=wi(n),r=Math.min(e,i),l=t.borderSkipped,h=s||o(n);return{topLeft:lo(!h||l.top||l.left,a.topLeft,0,r),topRight:lo(!h||l.top||l.right,a.topRight,0,r),bottomLeft:lo(!h||l.bottom||l.left,a.bottomLeft,0,r),bottomRight:lo(!h||l.bottom||l.right,a.bottomRight,0,r)}}(t,i/2,s/2);return{outer:{x:e.left,y:e.top,w:i,h:s,radius:a},inner:{x:e.left+n.l,y:e.top+n.t,w:i-n.l-n.r,h:s-n.t-n.b,radius:{topLeft:Math.max(0,a.topLeft-Math.max(n.t,n.l)),topRight:Math.max(0,a.topRight-Math.max(n.t,n.r)),bottomLeft:Math.max(0,a.bottomLeft-Math.max(n.b,n.l)),bottomRight:Math.max(0,a.bottomRight-Math.max(n.b,n.r))}}}}function co(t,e,i,s){const n=null===e,o=null===i,a=t&&!(n&&o)&&ro(t,s);return a&&(n||tt(e,a.left,a.right))&&(o||tt(i,a.top,a.bottom))}function uo(t,e){t.rect(e.x,e.y,e.w,e.h)}function fo(t,e,i={}){const s=t.x!==i.x?-e:0,n=t.y!==i.y?-e:0,o=(t.x+t.w!==i.x+i.w?e:0)-s,a=(t.y+t.h!==i.y+i.h?e:0)-n;return{x:t.x+s,y:t.y+n,w:t.w+o,h:t.h+a,radius:t.radius}}var go=Object.freeze({__proto__:null,ArcElement:class extends $s{static id="arc";static defaults={borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1};static defaultRoutes={backgroundColor:"backgroundColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps(["x","y"],i),{angle:n,distance:o}=X(s,{x:t,y:e}),{startAngle:a,endAngle:r,innerRadius:h,outerRadius:c,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),u=(this.options.spacing+this.options.borderWidth)/2,f=l(d,r-a),g=J(n,a,r)&&a!==r,p=f>=O||g,m=tt(o,h+u,c+u);return p&&m}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/4,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const r=s*(1-Math.sin(Math.min(C,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){Kn(t,e,i,s,l,n);for(let e=0;e<o;++e)t.fill();isNaN(r)||(l=a+(r%O||O))}Kn(t,e,i,s,l,n),t.fill()}(t,this,r,n,o),Gn(t,this,r,n,o),t.restore()}},BarElement:class extends $s{static id="bar";static defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:e,options:{borderColor:i,backgroundColor:s}}=this,{inner:n,outer:o}=ho(this),a=(r=o.radius).topLeft||r.topRight||r.bottomLeft||r.bottomRight?He:uo;var r;t.save(),o.w===n.w&&o.h===n.h||(t.beginPath(),a(t,fo(o,e,n)),t.clip(),a(t,fo(n,-e,o)),t.fillStyle=i,t.fill("evenodd")),t.beginPath(),a(t,fo(n,e)),t.fillStyle=s,t.fill(),t.restore()}inRange(t,e,i){return co(this,t,e,i)}inXRange(t,e){return co(this,t,null,e)}inYRange(t,e){return co(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,base:s,horizontal:n}=this.getProps(["x","y","base","horizontal"],t);return{x:n?(e+s)/2:e,y:n?i:(i+s)/2}}getRange(t){return"x"===t?this.width/2:this.height/2}},LineElement:oo,PointElement:class extends $s{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.options,{x:n,y:o}=this.getProps(["x","y"],i);return Math.pow(t-n,2)+Math.pow(e-o,2)<Math.pow(s.hitRadius+s.radius,2)}inXRange(t,e){return ao(this,t,"x",e)}inYRange(t,e){return ao(this,t,"y",e)}getCenterPoint(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}size(t){let e=(t=t||this.options||{}).radius||0;e=Math.max(e,e&&t.hoverRadius||0);return 2*(e+(e&&t.borderWidth||0))}draw(t,e){const i=this.options;this.skip||i.radius<.1||!Re(this,e,this.size(i)/2)||(t.strokeStyle=i.borderColor,t.lineWidth=i.borderWidth,t.fillStyle=i.backgroundColor,Le(t,i,this.x,this.y))}getRange(){const t=this.options||{};return t.radius+t.hitRadius}}});function po(t,e,i,s){const n=t.indexOf(e);if(-1===n)return((t,e,i,s)=>("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}function mo(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}function xo(t,e,{horizontal:i,minRotation:s}){const n=$(s),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*e*(""+t).length;return Math.min(e/o,a)}class bo extends tn{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return s(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:s,max:n}=this;const o=t=>s=e?s:t,a=t=>n=i?n:t;if(t){const t=F(s),e=F(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=0===n?1:Math.abs(.05*n);a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n=function(t,e){const i=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,x=!s(a),b=!s(r),_=!s(h),y=(m-p)/(d+1);let v,M,w,k,S=B((m-p)/g/f)*f;if(S<1e-14&&!x&&!b)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=B(k*S/g/f)*f),s(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),"ticks"===n?(M=Math.floor(p/S)*S,w=Math.ceil(m/S)*S):(M=p,w=m),x&&b&&o&&H((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,M=a,w=r):_?(M=x?a:M,w=b?r:w,k=h-1,S=(w-M)/k):(k=(w-M)/S,k=V(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(U(S),U(M));v=Math.pow(10,s(l)?P:l),M=Math.round(M*v)/v,w=Math.round(w*v)/v;let D=0;for(x&&(u&&M!==a?(i.push({value:a}),M<a&&D++,V(Math.round((M+D*S)*v)/v,a,xo(a,y,t))&&D++):M<a&&D++);D<k;++D){const t=Math.round((M+D*S)*v)/v;if(b&&t>r)break;i.push({value:t})}return b&&u&&w!==r?i.length&&V(i[i.length-1].value,r,xo(r,y,t))?i[i.length-1].value=r:i.push({value:r}):b&&w!==r||i.push({value:w}),i}({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&j(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return ne(t,this.chart.options.locale,this.options.ticks.format)}}class _o extends bo{static id="linear";static defaults={ticks:{callback:ae.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?t:0,this.max=a(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=$(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const yo=t=>Math.floor(z(t)),vo=(t,e)=>Math.pow(10,yo(t)+e);function Mo(t){return 1===t/Math.pow(10,yo(t))}function wo(t,e,i){const s=Math.pow(10,i),n=Math.floor(t/s);return Math.ceil(e/s)-n}function ko(t,{min:e,max:i}){e=r(t.min,e);const s=[],n=yo(e);let o=function(t,e){let i=yo(e-t);for(;wo(t,e,i)>10;)i++;for(;wo(t,e,i)<10;)i--;return Math.min(i,yo(t))}(e,i),a=o<0?Math.pow(10,Math.abs(o)):1;const l=Math.pow(10,o),h=n>o?Math.pow(10,n):0,c=Math.round((e-h)*a)/a,d=Math.floor((e-h)/l/10)*l*10;let u=Math.floor((c-d)/Math.pow(10,o)),f=r(t.min,Math.round((h+d+u*Math.pow(10,o))*a)/a);for(;f<i;)s.push({value:f,major:Mo(f),significand:u}),u>=10?u=u<15?15:20:u++,u>=20&&(o++,u=2,a=o>=0?1:a),f=Math.round((h+d+u*Math.pow(10,o))*a)/a;const g=r(t.max,f);return s.push({value:g,major:Mo(g),significand:u}),s}class So extends tn{static id="logarithmic";static defaults={ticks:{callback:ae.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=bo.prototype.parse.apply(this,[t,e]);if(0!==i)return a(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?Math.max(0,t):null,this.max=a(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!a(this._userMin)&&(this.min=t===vo(this.min,0)?vo(this.min,-1):vo(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t;i===s&&(i<=0?(n(1),o(10)):(n(vo(i,-1)),o(vo(s,1)))),i<=0&&n(vo(s,-1)),s<=0&&o(vo(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=ko({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&j(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":ne(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=z(t),this._valueRange=z(this.max)-z(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(z(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function Po(t){const e=t.ticks;if(e.display&&t.display){const t=ki(e.backdropPadding);return l(e.font&&e.font.size,ue.font.size)+t.height}return 0}function Do(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:t<s||t>n?{start:e-i,end:e}:{start:e,end:e+i}}function Co(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C/a:0;for(let u=0;u<a;u++){const a=r.setContext(t.getPointLabelContext(u));o[u]=a.padding;const f=t.getPointPosition(u,t.drawingArea+o[u],l),g=Si(a.font),p=(h=t.ctx,c=g,d=n(d=t._pointLabels[u])?d:[d],{w:Oe(h,c.string,d),h:d.length*c.lineHeight});s[u]=p;const m=G(t.getIndexAngle(u)+l),x=Math.round(Y(m));Oo(i,e,m,Do(x,f.x,p.w,0,180),Do(x,f.y,p.h,90,270))}var h,c,d;t.setCenterPoint(e.l-i.l,i.r-e.r,e.t-i.t,i.b-e.b),t._pointLabelItems=function(t,e,i){const s=[],n=t._pointLabels.length,o=t.options,{centerPointLabels:a,display:r}=o.pointLabels,l={extra:Po(o)/2,additionalAngle:a?C/n:0};let h;for(let o=0;o<n;o++){l.padding=i[o],l.size=e[o];const n=Ao(t,o,l);s.push(n),"auto"===r&&(n.visible=To(n,h),n.visible&&(h=n))}return s}(t,s,o)}function Oo(t,e,i,s,n){const o=Math.abs(Math.sin(i)),a=Math.abs(Math.cos(i));let r=0,l=0;s.start<e.l?(r=(e.l-s.start)/o,t.l=Math.min(t.l,e.l-r)):s.end>e.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.start<e.t?(l=(e.t-n.start)/a,t.t=Math.min(t.t,e.t-l)):n.end>e.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function Ao(t,e,i){const s=t.drawingArea,{extra:n,additionalAngle:o,padding:a,size:r}=i,l=t.getPointPosition(e,s+n+a,o),h=Math.round(Y(G(l.angle+E))),c=function(t,e,i){90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e);return t}(l.y,r.h,h),d=function(t){if(0===t||180===t)return"center";if(t<180)return"left";return"right"}(h),u=function(t,e,i){"right"===i?t-=e:"center"===i&&(t-=e/2);return t}(l.x,r.w,d);return{visible:!0,x:l.x,y:c,textAlign:d,left:u,top:c,right:u+r.w,bottom:c+r.h}}function To(t,e){if(!e)return!0;const{left:i,top:s,right:n,bottom:o}=t;return!(Re({x:i,y:s},e)||Re({x:i,y:o},e)||Re({x:n,y:s},e)||Re({x:n,y:o},e))}function Lo(t,e,i){const{left:n,top:o,right:a,bottom:r}=i,{backdropColor:l}=e;if(!s(l)){const i=wi(e.borderRadius),s=ki(e.backdropPadding);t.fillStyle=l;const h=n-s.left,c=o-s.top,d=a-n+s.width,u=r-o+s.height;Object.values(i).some((t=>0!==t))?(t.beginPath(),He(t,{x:h,y:c,w:d,h:u,radius:i}),t.fill()):t.fillRect(h,c,d,u)}}function Eo(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;o<s;o++)i=t.getPointPosition(o,e),n.lineTo(i.x,i.y)}}class Ro extends bo{static id="radialLinear";static defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:ae.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=ki(Po(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/Po(this.options))}generateTickLabels(t){bo.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?Co(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return G(t*(O/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t<e.length){const i=e[t];return function(t,e,i){return Ci(t,{label:i,index:e,type:"pointLabel"})}(this.getContext(),t,i)}}getPointPosition(t,e,i=0){const s=this.getIndexAngle(t)-E+i;return{x:Math.cos(s)*e+this.xCenter,y:Math.sin(s)*e+this.yCenter,angle:s}}getPointPositionForValue(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))}getBasePosition(t){return this.getPointPositionForValue(t||0,this.getBaseValue())}getPointLabelPosition(t){const{left:e,top:i,right:s,bottom:n}=this._pointLabelItems[t];return{left:e,top:i,right:s,bottom:n}}drawBackground(){const{backgroundColor:t,grid:{circular:e}}=this.options;if(t){const i=this.ctx;i.save(),i.beginPath(),Eo(this,this.getDistanceFromCenterForValue(this._endValue),e,this._pointLabels.length),i.closePath(),i.fillStyle=t,i.fill(),i.restore()}}drawGrid(){const t=this.ctx,e=this.options,{angleLines:i,grid:s,border:n}=e,o=this._pointLabels.length;let a,r,l;if(e.pointLabels.display&&function(t,e){const{ctx:i,options:{pointLabels:s}}=t;for(let n=e-1;n>=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const o=s.setContext(t.getPointLabelContext(n));Lo(i,o,e);const a=Si(o.font),{x:r,y:l,textAlign:h}=e;Ne(i,t._pointLabels[n],r,l+a.lineHeight/2,a,{color:o.color,textAlign:h,textBaseline:"middle"})}}(this,o),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e||0===e&&this.min<0){r=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),a=s.setContext(i),l=n.setContext(i);!function(t,e,i,s,n){const o=t.ctx,a=e.circular,{color:r,lineWidth:l}=e;!a&&!s||!r||!l||i<0||(o.save(),o.strokeStyle=r,o.lineWidth=l,o.setLineDash(n.dash||[]),o.lineDashOffset=n.dashOffset,o.beginPath(),Eo(t,i,a,s),o.closePath(),o.stroke(),o.restore())}(this,a,r,o,l)}})),i.display){for(t.save(),a=o-1;a>=0;a--){const s=i.setContext(this.getPointLabelContext(a)),{color:n,lineWidth:o}=s;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,r=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&this.min>=0&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=Si(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=ki(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ne(t,s.label,0,-n,l,{color:r.color,strokeColor:r.textStrokeColor,strokeWidth:r.textStrokeWidth})})),t.restore()}drawTitle(){}}const Io={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},zo=Object.keys(Io);function Fo(t,e){return t-e}function Vo(t,e){if(s(e))return null;const i=t._adapter,{parser:n,round:o,isoWeekday:r}=t._parseOpts;let l=e;return"function"==typeof n&&(l=n(l)),a(l)||(l="string"==typeof n?i.parse(l,n):i.parse(l)),null===l?null:(o&&(l="week"!==o||!N(r)&&!0!==r?i.startOf(l,o):i.startOf(l,"isoWeek",r)),+l)}function Bo(t,e,i,s){const n=zo.length;for(let o=zo.indexOf(t);o<n-1;++o){const t=Io[zo[o]],n=t.steps?t.steps:Number.MAX_SAFE_INTEGER;if(t.common&&Math.ceil((i-e)/(n*t.size))<=s)return zo[o]}return zo[n-1]}function Wo(t,e,i){if(i){if(i.length){const{lo:s,hi:n}=et(i,e);t[i[s]>=e?i[s]:i[n]]=!0}}else t[e]=!0}function No(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a<o;++a)r=e[a],n[r]=a,s.push({value:r,major:!1});return 0!==o&&i?function(t,e,i,s){const n=t._adapter,o=+n.startOf(e[0].value,s),a=e[e.length-1].value;let r,l;for(r=o;r<=a;r=+n.add(r,1,s))l=i[r],l>=0&&(e[l].major=!0);return e}(t,s,n,i):s}class Ho extends tn{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),s=this._adapter=new In._date(t.adapters.date);s.init(e),b(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Vo(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:r}=this.getUserBounds();function l(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}o&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),s=a(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=a(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=nt(s,n,this.max);return this._unit=e.unit||(i.autoSkip?Bo(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=zo.length-1;o>=zo.indexOf(i);o--){const i=zo[o];if(Io[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return zo[i?zo.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=zo.indexOf(t)+1,i=zo.length;e<i;++e)if(Io[zo[e]].common)return zo[e]}(this._unit):void 0,this.initOffsets(s),t.reverse&&o.reverse(),No(this,o,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map((t=>+t.value)))}initOffsets(t=[]){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=Z(s,0,o),n=Z(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||Bo(n.minUnit,e,i,this._getLabelCapacity(e)),a=l(s.ticks.stepSize,1),r="week"===o&&n.isoWeekday,h=N(r)||!0===r,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,"isoWeek",r)),f=+t.startOf(f,h?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const g="data"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;d<i;d=+t.add(d,a,o),u++)Wo(c,d,g);return d!==i&&"ticks"!==s.bounds&&1!==u||Wo(c,d,g),Object.keys(c).sort(Fo).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,s=this._unit,n=e||i[s];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.ticks.callback;if(o)return d(o,[t,e,i],this);const a=n.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],u=i[e],f=l&&c&&u&&u.major;return this._adapter.format(t,s||(f?c:h))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e<i;++e)s=t[e],s.label=this._tickFormatFunction(s.value,e,t)}getDecimalForValue(t){return null===t?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const e=this._offsets,i=this.getDecimalForValue(t);return this.getPixelForDecimal((e.start+i)*e.factor)}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return this.min+i*(this.max-this.min)}_getLabelSize(t){const e=this.options.ticks,i=this.ctx.measureText(t).width,s=$(this.isHorizontal()?e.maxRotation:e.minRotation),n=Math.cos(s),o=Math.sin(s),a=this._resolveTickFontOptions(0).size;return{w:i*n+a*o,h:i*o+a*n}}_getLabelCapacity(t){const e=this.options.time,i=e.displayFormats,s=i[e.unit]||i.millisecond,n=this._tickFormatFunction(t,0,No(this,[t],this._majorUnit),s),o=this._getLabelSize(n),a=Math.floor(this.isHorizontal()?this.width/o.w:this.height/o.h)-1;return a>0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t<e;++t)i=i.concat(s[t].controller.getAllParsedValues(this));return this._cache.data=this.normalize(i)}getLabelTimestamps(){const t=this._cache.labels||[];let e,i;if(t.length)return t;const s=this.getLabels();for(e=0,i=s.length;e<i;++e)t.push(Vo(this,s[e]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return lt(t.sort(Fo))}}function jo(t,e,i){let s,n,o,a,r=0,l=t.length-1;i?(e>=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=it(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=it(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}var $o=Object.freeze({__proto__:null,CategoryScale:class extends tn{static id="category";static defaults={ticks:{callback:mo}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(s(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:Z(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:po(i,t,l(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){return mo.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:_o,LogarithmicScale:So,RadialLinearScale:Ro,TimeScale:Ho,TimeSeriesScale:class extends Ho{static id="timeseries";static defaults=Ho.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=jo(e,this.min),this._tableRange=jo(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o<a;++o)l=t[o],l>=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;o<a;++o)h=s[o+1],r=s[o-1],l=s[o],Math.round((h+r)/2)!==l&&n.push({time:l,pos:o/(a-1)});return n}_generate(){const t=this.min,e=this.max;let i=super.getDataTimestamps();return i.includes(t)&&i.length||i.splice(0,0,t),i.includes(e)&&1!==i.length||i.push(e),i.sort(((t,e)=>t-e))}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(jo(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return jo(this._table,i*this._tableRange+this._minPos,!0)}}});const Yo=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Uo=Yo.map((t=>t.replace("rgb(","rgba(").replace(")",", 0.5)")));function Xo(t){return Yo[t%Yo.length]}function qo(t){return Uo[t%Uo.length]}function Ko(t){let e=0;return(i,s)=>{const n=t.getDatasetMeta(s).controller;n instanceof $n?e=function(t,e){return t.backgroundColor=t.data.map((()=>Xo(e++))),e}(i,e):n instanceof Yn?e=function(t,e){return t.backgroundColor=t.data.map((()=>qo(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Xo(e),t.backgroundColor=qo(e),++e}(i,e))}}function Go(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var Jo={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:s},options:n}=t.config,{elements:o}=n,a=Go(s)||(r=n)&&(r.borderColor||r.backgroundColor)||o&&Go(o)||"rgba(0,0,0,0.1)"!==ue.borderColor||"rgba(0,0,0,0.1)"!==ue.backgroundColor;var r;if(!i.forceOverride&&a)return;const l=Ko(t);s.forEach(l)}};function Zo(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Qo(t){t.data.datasets.forEach((t=>{Zo(t)}))}var ta={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Qo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if("y"===Pi([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=Z(it(e,o.axis,a).lo,0,i-1)),s=h?Z(it(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(i.threshold||4*n))return void Zo(e);let f;switch(s(a)&&(e._data=h,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;c<o-2;c++){let s,n=0,o=0;const h=Math.floor((c+1)*r)+1+e,m=Math.min(Math.floor((c+2)*r)+1,i)+e,x=m-h;for(s=h;s<m;s++)n+=t[s].x,o+=t[s].y;n/=x,o/=x;const b=Math.floor(c*r)+1+e,_=Math.min(Math.floor((c+1)*r)+1,i)+e,{x:y,y:v}=t[p];for(u=f=-1,s=b;s<_;s++)f=.5*Math.abs((y-n)*(t[s].y-v)-(y-t[s].x)*(o-v)),f>u&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,i);break;case"min-max":f=function(t,e,i,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const x=[],b=e+i-1,_=t[e].x,y=t[b].x-_;for(o=e;o<e+i;++o){a=t[o],r=(a.x-_)/y*n,l=a.y;const e=0|r;if(e===h)l<f?(f=l,c=o):l>g&&(g=l,d=o),p=(m*p+a.x)/++m;else{const i=o-1;if(!s(c)&&!s(d)){const e=Math.min(c,d),s=Math.max(c,d);e!==u&&e!==i&&x.push({...t[e],x:p}),s!==u&&s!==i&&x.push({...t[s],x:p})}o>0&&i!==u&&x.push(t[i]),x.push(a),h=e,m=0,f=g=l,c=d=u=o}}return x}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=f}))},destroy(t){Qo(t)}};function ea(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=G(n),o=G(o)),{property:t,start:n,end:o}}function ia(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function sa(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function na(t,e){let i=[],s=!1;return n(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=ia(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new oo({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function oa(t){return t&&!1!==t.fill}function aa(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!a(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function ra(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=l(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return"origin";return s}(t);if(o(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return a(n)&&Math.floor(n)===n?function(t,e,i,s){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,n,i):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function la(t,e,i){const s=[];for(let n=0;n<i.length;n++){const o=i[n],{first:a,last:r,point:l}=ha(o,e,"x");if(!(!l||a&&r))if(a)s.unshift(l);else if(t.push(l),!r)break}t.push(...s)}function ha(t,e,i){const s=t.interpolate(e,i);if(!s)return{};const n=s[i],o=t.segments,a=t.points;let r=!1,l=!1;for(let t=0;t<o.length;t++){const e=o[t],s=a[e.start][i],h=a[e.end][i];if(tt(n,s,h)){r=n===s,l=n===h;break}}return{first:r,last:l,point:s}}class ca{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:s,y:n,radius:o}=this;return e=e||{start:0,end:O},t.arc(s,n,o,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:s}=this,n=t.angle;return{x:e+Math.cos(n)*s,y:i+Math.sin(n)*s,angle:n}}}function da(t){const{chart:e,fill:i,line:s}=t;if(a(i))return function(t,e){const i=t.getDatasetMeta(e),s=i&&t.isDatasetVisible(e);return s?i.dataset:null}(e,i);if("stack"===i)return function(t){const{scale:e,index:i,line:s}=t,n=[],o=s.segments,a=s.points,r=function(t,e){const i=[],s=t.getMatchingVisibleMetas("line");for(let t=0;t<s.length;t++){const n=s[t];if(n.index===e)break;n.hidden||i.unshift(n.dataset)}return i}(e,i);r.push(na({x:null,y:e.bottom},s));for(let t=0;t<o.length;t++){const e=o[t];for(let t=e.start;t<=e.end;t++)la(n,a[t],r)}return new oo({points:n,options:{}})}(t);if("shape"===i)return!0;const n=function(t){const e=t.scale||{};if(e.getPointPositionForValue)return function(t){const{scale:e,fill:i}=t,s=e.options,n=e.getLabels().length,a=s.reverse?e.max:e.min,r=function(t,e,i){let s;return s="start"===t?i:"end"===t?e.options.reverse?e.min:e.max:o(t)?t.value:e.getBaseValue(),s}(i,e,a),l=[];if(s.grid.circular){const t=e.getPointPositionForValue(0,a);return new ca({x:t.x,y:t.y,radius:e.getDistanceFromCenterForValue(r)})}for(let t=0;t<n;++t)l.push(e.getPointPositionForValue(t,r));return l}(t);return function(t){const{scale:e={},fill:i}=t,s=function(t,e){let i=null;return"start"===t?i=e.bottom:"end"===t?i=e.top:o(t)?i=e.getPixelForValue(t.value):e.getBasePixel&&(i=e.getBasePixel()),i}(i,e);if(a(s)){const t=e.isHorizontal();return{x:t?s:null,y:t?null:s}}return null}(t)}(t);return n instanceof ca?n:na(n,s)}function ua(t,e,i){const s=da(e),{chart:n,index:o,line:a,scale:r,axis:l}=e,h=a.options,c=h.fill,d=h.backgroundColor,{above:u=d,below:f=d}=c||{},g=n.getDatasetMeta(o),p=Ni(n,g);s&&a.points.length&&(Ie(t,i),function(t,e){const{line:i,target:s,above:n,below:o,area:a,scale:r,clip:l}=e,h=i._loop?"angle":e.axis;t.save();let c=o;o!==n&&("x"===h?(fa(t,s,a.top),pa(t,{line:i,target:s,color:n,scale:r,property:h,clip:l}),t.restore(),t.save(),fa(t,s,a.bottom)):"y"===h&&(ga(t,s,a.left),pa(t,{line:i,target:s,color:o,scale:r,property:h,clip:l}),t.restore(),t.save(),ga(t,s,a.right),c=n));pa(t,{line:i,target:s,color:c,scale:r,property:h,clip:l}),t.restore()}(t,{line:a,target:s,above:u,below:f,area:i,scale:r,axis:l,clip:p}),ze(t))}function fa(t,e,i){const{segments:s,points:n}=e;let o=!0,a=!1;t.beginPath();for(const r of s){const{start:s,end:l}=r,h=n[s],c=n[ia(s,l,n)];o?(t.moveTo(h.x,h.y),o=!1):(t.lineTo(h.x,i),t.lineTo(h.x,h.y)),a=!!e.pathSegment(t,r,{move:a}),a?t.closePath():t.lineTo(c.x,i)}t.lineTo(e.first().x,i),t.closePath(),t.clip()}function ga(t,e,i){const{segments:s,points:n}=e;let o=!0,a=!1;t.beginPath();for(const r of s){const{start:s,end:l}=r,h=n[s],c=n[ia(s,l,n)];o?(t.moveTo(h.x,h.y),o=!1):(t.lineTo(i,h.y),t.lineTo(h.x,h.y)),a=!!e.pathSegment(t,r,{move:a}),a?t.closePath():t.lineTo(i,c.y)}t.lineTo(i,e.first().y),t.closePath(),t.clip()}function pa(t,e){const{line:i,target:s,property:n,color:o,scale:a,clip:r}=e,l=function(t,e,i){const s=t.segments,n=t.points,o=e.points,a=[];for(const t of s){let{start:s,end:r}=t;r=ia(s,r,n);const l=ea(i,n[s],n[r],t.loop);if(!e.segments){a.push({source:t,target:l,start:n[s],end:n[r]});continue}const h=Ii(e,l);for(const e of h){const s=ea(i,o[e.start],o[e.end],e.loop),r=Ri(t,n,s);for(const t of r)a.push({source:t,target:e,start:{[i]:sa(l,s,"start",Math.max)},end:{[i]:sa(l,s,"end",Math.min)}})}}return a}(i,s,n);for(const{source:e,target:h,start:c,end:d}of l){const{style:{backgroundColor:l=o}={}}=e,u=!0!==s;t.save(),t.fillStyle=l,ma(t,a,r,u&&ea(n,c,d)),t.beginPath();const f=!!i.pathSegment(t,e);let g;if(u){f?t.closePath():xa(t,s,d,n);const e=!!s.pathSegment(t,h,{move:f,reverse:!0});g=f&&e,g||xa(t,s,c,n)}t.closePath(),t.fill(g?"evenodd":"nonzero"),t.restore()}}function ma(t,e,i,s){const n=e.chart.chartArea,{property:o,start:a,end:r}=s||{};if("x"===o||"y"===o){let e,s,l,h;"x"===o?(e=a,s=n.top,l=r,h=n.bottom):(e=n.left,s=a,l=n.right,h=r),t.beginPath(),i&&(e=Math.max(e,i.left),l=Math.min(l,i.right),s=Math.max(s,i.top),h=Math.min(h,i.bottom)),t.rect(e,s,l-e,h-s),t.clip()}}function xa(t,e,i,s){const n=e.interpolate(i,s);n&&t.lineTo(n.x,n.y)}var ba={id:"filler",afterDatasetsUpdate(t,e,i){const s=(t.data.datasets||[]).length,n=[];let o,a,r,l;for(a=0;a<s;++a)o=t.getDatasetMeta(a),r=o.dataset,l=null,r&&r.options&&r instanceof oo&&(l={visible:t.isDatasetVisible(a),index:a,fill:ra(r,a,s),chart:t,axis:o.controller.options.indexAxis,scale:o.vScale,line:r}),o.$filler=l,n.push(l);for(a=0;a<s;++a)l=n[a],l&&!1!==l.fill&&(l.fill=aa(n,a,i.propagate))},beforeDraw(t,e,i){const s="beforeDraw"===i.drawTime,n=t.getSortedVisibleDatasetMetas(),o=t.chartArea;for(let e=n.length-1;e>=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&ua(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;oa(i)&&ua(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;oa(s)&&"beforeDatasetDraw"===i.drawTime&&ua(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const _a=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class ya extends $s{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=d(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=Si(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=_a(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,s,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:p,itemHeight:m}=function(t,e,i,s,n){const o=function(t,e,i,s){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+s.measureText(n).width}(s,t,e,i),a=function(t,e,i){let s=t;"string"!=typeof e.text&&(s=va(e,i));return s}(n,s,e.lineHeight);return{itemWidth:o,itemHeight:a}}(i,e,n,t,s);o>0&&u+m+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:m},d=Math.max(d,p),u+=m+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=Oi(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ft(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ft(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Ie(t,this),this._draw(),ze(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ue.color,r=Oi(t.rtl,this.left,this.width),h=Si(o.font),{padding:c}=o,d=h.size,u=d/2;let f;this.drawTitle(),s.textAlign=r.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=h.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=_a(o,d),x=this.isHorizontal(),b=this._computeTitleHeight();f=x?{x:ft(n,this.left+c,this.right-i[0]),y:this.top+c+b,line:0}:{x:this.left+c,y:ft(n,this.top+b+c,this.bottom-e[0].height),line:0},Ai(this.ctx,t.textDirection);const _=m+c;this.legendItems.forEach(((y,v)=>{s.strokeStyle=y.fontColor,s.fillStyle=y.fontColor;const M=s.measureText(y.text).width,w=r.textAlign(y.textAlign||(y.textAlign=o.textAlign)),k=g+u+M;let S=f.x,P=f.y;r.setWidth(this.width),x?v>0&&S+k+c>this.right&&(P=f.y+=_,f.line++,S=f.x=ft(n,this.left+c,this.right-i[f.line])):v>0&&P+_>this.bottom&&(S=f.x=S+e[f.line].width+c,f.line++,P=f.y=ft(n,this.top+b+c,this.bottom-e[f.line].height));if(function(t,e,i){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const n=l(i.lineWidth,1);if(s.fillStyle=l(i.fillStyle,a),s.lineCap=l(i.lineCap,"butt"),s.lineDashOffset=l(i.lineDashOffset,0),s.lineJoin=l(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=l(i.strokeStyle,a),s.setLineDash(l(i.lineDash,[])),o.usePointStyle){const a={radius:p*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=r.xPlus(t,g/2);Ee(s,a,l,e+u,o.pointStyleWidth&&g)}else{const o=e+Math.max((d-p)/2,0),a=r.leftForLtr(t,g),l=wi(i.borderRadius);s.beginPath(),Object.values(l).some((t=>0!==t))?He(s,{x:a,y:o,w:g,h:p,radius:l}):s.rect(a,o,g,p),s.fill(),0!==n&&s.stroke()}s.restore()}(r.x(S),P,y),S=gt(w,S+g+u,x?S+k:this.right,t.rtl),function(t,e,i){Ne(s,i.text,t,e+m/2,h,{strikethrough:i.hidden,textAlign:r.textAlign(i.textAlign)})}(r.x(S),P,y),x)f.x+=k+c;else if("string"!=typeof y.text){const t=h.lineHeight;f.y+=va(y,t)+c}else f.y+=_})),Ti(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=Si(e.font),s=ki(e.padding);if(!e.display)return;const n=Oi(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ft(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ft(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ft(a,c,c+d);o.textAlign=n.textAlign(ut(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ne(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=Si(t.font),i=ki(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(tt(t,this.left,this.right)&&tt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;i<n.length;++i)if(s=n[i],tt(t,s.left,s.left+s.width)&&tt(e,s.top,s.top+s.height))return this.legendItems[i];return null}handleEvent(t){const e=this.options;if(!function(t,e){if(("mousemove"===t||"mouseout"===t)&&(e.onHover||e.onLeave))return!0;if(e.onClick&&("click"===t||"mouseup"===t))return!0;return!1}(t.type,e))return;const i=this._getLegendItemAt(t.x,t.y);if("mousemove"===t.type||"mouseout"===t.type){const o=this._hoveredItem,a=(n=i,null!==(s=o)&&null!==n&&s.datasetIndex===n.datasetIndex&&s.index===n.index);o&&!a&&d(e.onLeave,[t,o,this],this),this._hoveredItem=i,i&&!a&&d(e.onHover,[t,i,this],this)}else i&&d(e.onClick,[t,i,this],this);var s,n}}function va(t,e){return e*(t.text?t.text.length:0)}var Ma={id:"legend",_element:ya,start(t,e,i){const s=t.legend=new ya({ctx:t.ctx,options:i,chart:t});ls.configure(t,s,i),ls.addBox(t,s)},stop(t){ls.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){const s=t.legend;ls.configure(t,s,i),s.options=i},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,i){const s=e.datasetIndex,n=i.chart;n.isDatasetVisible(s)?(n.hide(s),e.hidden=!0):(n.show(s),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),h=ki(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:l.borderColor,pointStyle:s||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class wa extends $s{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=n(i.text)?i.text.length:1;this._padding=ki(i.padding);const o=s*Si(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ft(a,i,n),h=e+t,r=n-i):("left"===o.position?(l=i+t,h=ft(a,s,e),c=-.5*C):(l=n-t,h=ft(a,e,s),c=.5*C),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=Si(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ne(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:ut(e.align),textBaseline:"middle",translation:[n,o]})}}var ka={id:"title",_element:wa,start(t,e,i){!function(t,e){const i=new wa({ctx:t.ctx,options:e,chart:t});ls.configure(t,i,e),ls.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ls.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ls.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Sa=new WeakMap;var Pa={id:"subtitle",start(t,e,i){const s=new wa({ctx:t.ctx,options:i,chart:t});ls.configure(t,s,i),ls.addBox(t,s),Sa.set(t,s)},stop(t){ls.removeBox(t,Sa.get(t)),Sa.delete(t)},beforeUpdate(t,e,i){const s=Sa.get(t);ls.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Da={average(t){if(!t.length)return!1;let e,i,s=new Set,n=0,o=0;for(e=0,i=t.length;e<i;++e){const i=t[e].element;if(i&&i.hasValue()){const t=i.tooltipPosition();s.add(t.x),n+=t.y,++o}}if(0===o||0===s.size)return!1;return{x:[...s].reduce(((t,e)=>t+e))/s.size,y:n/o}},nearest(t,e){if(!t.length)return!1;let i,s,n,o=e.x,a=e.y,r=Number.POSITIVE_INFINITY;for(i=0,s=t.length;i<s;++i){const s=t[i].element;if(s&&s.hasValue()){const t=q(e,s.getCenterPoint());t<r&&(r=t,n=s)}}if(n){const t=n.tooltipPosition();o=t.x,a=t.y}return{x:o,y:a}}};function Ca(t,e){return e&&(n(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function Oa(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function Aa(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Ta(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=Si(e.bodyFont),h=Si(e.titleFont),c=Si(e.footerFont),d=o.length,f=n.length,g=s.length,p=ki(e.padding);let m=p.height,x=0,b=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(b+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(b-g)*l.lineHeight+(b-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){x=Math.max(x,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),x+=p.width,{width:x,height:m}}function La(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function Ea(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return i<s/2?"top":i>t.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||La(t,e,i,s),yAlign:s}}function Ra(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:Z(g,0,s.width-e.width),y:Z(p,0,s.height-e.height)}}function Ia(t,e,i){const s=ki(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function za(t){return Ca([],Oa(t))}function Fa(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const Va={beforeTitle:e,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex<s)return i[e.dataIndex]}return""},afterTitle:e,beforeBody:e,beforeLabel:e,label(t){if(this&&this.options&&"dataset"===this.options.mode)return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const i=t.formattedValue;return s(i)||(e+=i),e},labelColor(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:e.borderColor,backgroundColor:e.backgroundColor,borderWidth:e.borderWidth,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:e.pointStyle,rotation:e.rotation}},afterLabel:e,afterBody:e,beforeFooter:e,footer:e,afterFooter:e};function Ba(t,e,i,s){const n=t[e].call(i,s);return void 0===n?Va[e].call(i,s):n}class Wa extends $s{static positioners=Da;constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,n=new Ts(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,Ci(t,{tooltip:e,tooltipItems:i,type:"tooltip"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,s=Ba(i,"beforeTitle",this,t),n=Ba(i,"title",this,t),o=Ba(i,"afterTitle",this,t);let a=[];return a=Ca(a,Oa(s)),a=Ca(a,Oa(n)),a=Ca(a,Oa(o)),a}getBeforeBody(t,e){return za(Ba(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:i}=e,s=[];return u(t,(t=>{const e={before:[],lines:[],after:[]},n=Fa(i,t);Ca(e.before,Oa(Ba(n,"beforeLabel",this,t))),Ca(e.lines,Ba(n,"label",this,t)),Ca(e.after,Oa(Ba(n,"afterLabel",this,t))),s.push(e)})),s}getAfterBody(t,e){return za(Ba(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Ba(i,"beforeFooter",this,t),n=Ba(i,"footer",this,t),o=Ba(i,"afterFooter",this,t);let a=[];return a=Ca(a,Oa(s)),a=Ca(a,Oa(n)),a=Ca(a,Oa(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;a<r;++a)l.push(Aa(this.chart,e[a]));return t.filter&&(l=l.filter(((e,s,n)=>t.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),u(l,(e=>{const i=Fa(t.callbacks,e);s.push(Ba(i,"labelColor",this,e)),n.push(Ba(i,"labelPointStyle",this,e)),o.push(Ba(i,"labelTextColor",this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Da[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Ta(this,i),a=Object.assign({},t,e),r=Ea(this.chart,i,a),l=Ra(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=wi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,x,b,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,b=_+o,y=_-o):(p=d+f,m=p+o,b=_-o,y=_+o),x=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(b=u,_=b-o,p=m-o,x=m+o):(b=u+g,_=b+o,p=m+o,x=m-o),y=b),{x1:p,x2:m,x3:x,y1:b,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Oi(i.rtl,this.x,this.width);for(t.x=Ia(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=Si(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r<n;++r)e.fillText(s[r],l.x(t.x),t.y+o.lineHeight/2),t.y+=o.lineHeight+a,r+1===n&&(t.y+=i.titleMarginBottom-a)}}_drawColorBox(t,e,i,s,n){const a=this.labelColors[i],r=this.labelPointStyles[i],{boxHeight:l,boxWidth:h}=n,c=Si(n.bodyFont),d=Ia(this,"left",n),u=s.x(d),f=l<c.lineHeight?(c.lineHeight-l)/2:0,g=e.y+f;if(n.usePointStyle){const e={radius:Math.min(h,l)/2,pointStyle:r.pointStyle,rotation:r.rotation,borderWidth:1},i=s.leftForLtr(u,h)+h/2,o=g+l/2;t.strokeStyle=n.multiKeyBackground,t.fillStyle=n.multiKeyBackground,Le(t,e,i,o),t.strokeStyle=a.borderColor,t.fillStyle=a.backgroundColor,Le(t,e,i,o)}else{t.lineWidth=o(a.borderWidth)?Math.max(...Object.values(a.borderWidth)):a.borderWidth||1,t.strokeStyle=a.borderColor,t.setLineDash(a.borderDash||[]),t.lineDashOffset=a.borderDashOffset||0;const e=s.leftForLtr(u,h),i=s.leftForLtr(s.xPlus(u,1),h-2),r=wi(a.borderRadius);Object.values(r).some((t=>0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,He(t,{x:e,y:g,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),He(t,{x:i,y:g+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,h,l),t.strokeRect(e,g,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,g+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=Si(i.bodyFont);let d=c.lineHeight,f=0;const g=Oi(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+d/2),t.y+=d+n},m=g.textAlign(o);let x,b,_,y,v,M,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=Ia(this,m,i),e.fillStyle=i.bodyColor,u(this.beforeBody,p),f=a&&"right"!==m?"center"===o?l/2+h:l+2+h:0,y=0,M=s.length;y<M;++y){for(x=s[y],b=this.labelTextColors[y],e.fillStyle=b,u(x.before,p),_=x.lines,a&&_.length&&(this._drawColorBox(e,t,y,g,i),d=Math.max(c.lineHeight,r)),v=0,w=_.length;v<w;++v)p(_[v]),d=c.lineHeight;u(x.after,p)}f=0,d=c.lineHeight,u(this.afterBody,p),t.y-=n}drawFooter(t,e,i){const s=this.footer,n=s.length;let o,a;if(n){const r=Oi(i.rtl,this.x,this.width);for(t.x=Ia(this,i.footerAlign,i),t.y+=i.footerMarginTop,e.textAlign=r.textAlign(i.footerAlign),e.textBaseline="middle",o=Si(i.footerFont),e.fillStyle=i.footerColor,e.font=o.string,a=0;a<n;++a)e.fillText(s[a],r.x(t.x),t.y+o.lineHeight/2),t.y+=o.lineHeight+i.footerSpacing}}drawBackground(t,e,i,s){const{xAlign:n,yAlign:o}=this,{x:a,y:r}=t,{width:l,height:h}=i,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(s.cornerRadius);e.fillStyle=s.backgroundColor,e.strokeStyle=s.borderColor,e.lineWidth=s.borderWidth,e.beginPath(),e.moveTo(a+c,r),"top"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+l-d,r),e.quadraticCurveTo(a+l,r,a+l,r+d),"center"===o&&"right"===n&&this.drawCaret(t,e,i,s),e.lineTo(a+l,r+h-f),e.quadraticCurveTo(a+l,r+h,a+l-f,r+h),"bottom"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+u,r+h),e.quadraticCurveTo(a,r+h,a,r+h-u),"center"===o&&"left"===n&&this.drawCaret(t,e,i,s),e.lineTo(a,r+c),e.quadraticCurveTo(a,r,a+c,r),e.closePath(),e.fill(),s.borderWidth>0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Da[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Ta(this,t),a=Object.assign({},i,this._size),r=Ea(e,t,a),l=Ra(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=ki(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ai(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Ti(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!f(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!f(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Da[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}var Na={id:"tooltip",_element:Wa,positioners:Da,afterInit(t,e,i){i&&(t.tooltip=new Wa({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Va},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};return Tn.register(Un,$o,go,t),Tn.helpers={...Hi},Tn._adapters=In,Tn.Animation=As,Tn.Animations=Ts,Tn.animator=bt,Tn.controllers=nn.controllers.items,Tn.DatasetController=js,Tn.Element=$s,Tn.elements=go,Tn.Interaction=Ki,Tn.layouts=ls,Tn.platforms=Ds,Tn.Scale=tn,Tn.Ticks=ae,Object.assign(Tn,Un,$o,go,t,Ds),Tn.Chart=Tn,"undefined"!=typeof window&&(window.Chart=Tn),Tn}));
//# sourceMappingURL=chart.umd.min.js.map
PK��f\C�^^assets/js/metabox.jsnu�[���jQuery(document).ready(function($){
	var mediaUploader;
	
	init_uploaders();
	
	let debounce;
	function siteseo_debounce(func, timeout = 500){
		clearTimeout(debounce);
		debounce = setTimeout(() => {
			func.apply(this, arguments);
		}, timeout);
	}
	
	$(document).on('click', '.siteseo-x-toggle-switch input', function(){
		if($(this).is(':checked')){
			$('.siteseo-x-settings').hide();
			let fb_title = $('.siteseo-metabox-fb-title').text(),
			fb_img = $('.siteseo_social_fb_img_meta').val();
			
			$('.siteseo-metabox-x-title').text(fb_title);
			$('.siteseo-metabox-x-image img').attr('src', fb_img || siteseoAdminAjax.social_placeholder);
			$('.siteseo_social_twitter_title_meta').val('');
			$('.siteseo_social_twitter_desc_meta').val('');
			$('.siteseo_social_twitter_img_meta').val('');
		} else{
			
			$('.siteseo-metabox-x-title').text('');
			$('.siteseo_social_twitter_title_meta').val('');
			$('.siteseo_social_twitter_desc_meta').val('');
			$('.siteseo_social_twitter_img_meta').val('');
			$('.siteseo-metabox-x-image img').attr('src', siteseoAdminAjax.social_placeholder);
			$('.siteseo-x-settings').show();
			
		}
	});
	
	$(document).on('click', '.siteseo-metabox-tab-label', function(){
		let jEle = $(this),
		parent_tab = jEle.closest('.siteseo-metabox-tabs, .siteseo-metabox-subtabs'),
		active_tab = parent_tab.find('.siteseo-metabox-tab-label-active');

		if(active_tab.length){
			active_tab.removeClass('siteseo-metabox-tab-label-active');
		}

		jEle.addClass('siteseo-metabox-tab-label-active');
		let target = jEle.data('tab');

		parent_tab.siblings('.'+target).show();
		parent_tab.siblings('.'+target).siblings('.siteseo-metabox-tab').hide();
	});
	
	// Facebook title
	$(document).on('input paste', '.siteseo_social_fb_title_meta', function(){
		let jEle = $(this),
		fb_title = jEle.val();

		$('.siteseo_social_fb_title_meta').not(jEle)?.val(fb_title);
		
		// toogle x use
		if($('.siteseo-x-toggle-switch input').is(':checked')){
			$('.siteseo-metabox-x-title').text(fb_title);
		}
		
		if(fb_title.includes('%%')){
			siteseo_debounce(() => {
				fb_title = resolve_dynamic_variables(fb_title, 'title', 'fb');
			});
			
			return;
		}
		
		$('.siteseo-metabox-fb-title').text(fb_title);
	});
	
	// Facebook description updates
	$(document).on('input paste', '.siteseo_social_fb_desc_meta', function(){
		let jEle = $(this),
		fb_desc = jEle.val();

		$('.siteseo_social_fb_desc_meta').not(jEle)?.val(fb_desc);
		
		if(fb_desc.includes('%%')){
			siteseo_debounce(()	=> {
				fb_desc = resolve_dynamic_variables(fb_desc, 'desc', 'fb');
			});
			
			return;
		}
		
		$('.siteseo-metabox-fb-desc').text(fb_desc);
	});
	
	// X description title
	$(document).on('input paste', '.siteseo_social_twitter_title_meta', function(){
		let jEle = $(this),
		x_title = jEle.val();

		$('.siteseo_social_twitter_title_meta').not(jEle)?.val(x_title);
		
		if(x_title.includes('%%')){
			siteseo_debounce(() => {
				x_title = resolve_dynamic_variables(x_title, 'title' ,'x');
			});
			
			return;
		}
		
		$('.siteseo-metabox-x-title').text(x_title);
	});
		
	// X description updates
	$(document).on('input paste', '.siteseo_social_twitter_desc_meta', function(){
		let jEle = $(this),
		x_desc = jEle.val();
		
		$('.siteseo-metabox-x-desc').text(x_desc);		
		$('.siteseo_social_twitter_desc_meta').not(jEle)?.val(x_desc);
	});

	// We only need to do this sync if we are in gutenberg
	if(typeof siteseo_sidebar != 'undefined' && siteseo_sidebar){
		
		// Facebook image updates
		$(document).on('input paste', '.siteseo_social_fb_img_meta', function(){
			let jEle = $(this);
			$('.siteseo_social_fb_img_meta').not(jEle).val(jEle.val());
		});
		
		// X image updates
		$(document).on('input paste', '.siteseo_social_twitter_img_meta', function(){
			let jEle = $(this);
			$('.siteseo_social_twitter_img_meta').not(jEle)?.val(jEle.val());
		});
		
		// Input fields in Advanced tab
		$(document).on('input paste', '.siteseo-metabox-tab-advanced-settings input', function(){
			sync_inputs($(this), 'siteseo-metabox-tab-advanced-settings');
		})

		// Select field in advanced settings tab
		$(document).on('change', '.siteseo-metabox-tab-advanced-settings select', function(){
			sync_select($(this), 'siteseo-metabox-tab-advanced-settings');
		});
		
		// Input fields in Redirects tab
		$(document).on('input paste', '.siteseo-metabox-tab-redirect input', function(){
			sync_inputs($(this), 'siteseo-metabox-tab-redirect');
		});
		
		// Select field in advanced settings tab
		$(document).on('change', '.siteseo-metabox-tab-redirect select', function(){
			sync_select($(this), 'siteseo-metabox-tab-redirect');
		});
		
		// Input fields in structured data tab
		$(document).on('input paste', '.siteseo-metabox-tab-structured-data-types input', function(){
			sync_inputs($(this), 'siteseo-metabox-tab-structured-data-types');
		});
		
		// Select field in structured data tab
		$(document).on('change', '.siteseo-metabox-tab-structured-data-types select', function(){
			sync_select($(this), 'siteseo-metabox-tab-structured-data-types');
		});
		
		// textarea fields in structured data tab
		$(document).on('input paste', '.siteseo-metabox-tab-structured-data-types textarea', function(){
			let jEle = $(this),
			name = jEle.attr('name');
			$(`.siteseo-metabox-tab-structured-data-types textarea[name="${name}"]`).not(jEle)?.val(jEle.val());
		});
		
		// Input fields in Video sitemap tab
		$(document).on('input paste', '.siteseo-metabox-tab-video-sitemap input', function(){
			sync_inputs($(this), 'siteseo-metabox-tab-video-sitemap');
		});

		// Textarea fields in Video sitemap tab
		$(document).on('input paste', '.siteseo-metabox-tab-video-sitemap textarea', function(){
			let jEle = $(this),
			name = jEle.attr('name');
			$(`.siteseo-metabox-tab-video-sitemap textarea[name="${name}"]`).not(jEle)?.val(jEle.val());
		});
		
		// Input fields in Google news tab
		$(document).on('input paste', '.siteseo-metabox-tab-google-news input', function(){
			sync_inputs($(this), 'siteseo-metabox-tab-google-news');
		});
	}
	
	function sync_select(jEle, wrapperClass){
		let name = jEle.attr('name');
		$(`.${wrapperClass} select[name="${name}"]`).not(jEle)?.val(jEle.val());
	}

	function sync_inputs(jEle, wrapperClass){
		let name = jEle.attr('name'),
        type = jEle.attr('type');

        // Find all inputs with the same name, but not the one being edited
        let $targets = $(`.${wrapperClass} input[name="${name}"]`).not(jEle);
        
        // Handle checkboxes differently from text inputs
        if(type === 'checkbox'){
            let is_checked = jEle.prop('checked');
            $targets.prop('checked', is_checked);
        } else {
            let value = jEle.val();
            $targets.val(value);
        }
	}

	function init_media_uploader(buttonId, inputClass, previewClass, attachmentIdField, widthField, heightField){
        var mediaUploader;
        
		$(document).on('click', '#' + buttonId, function(e){
			e.preventDefault();

			mediaUploader = wp.media({
				title: 'Choose Image',
				button:{
					text: 'Use this image'
				},
				multiple: false,
				library: {
					type: 'image'
				}
			});

			mediaUploader.on('select', function(){
				var attachment = mediaUploader.state().get('selection').first().toJSON();

				var isValid = validateImageDimensions(
					attachment.width, 
					attachment.height, 
					buttonId.includes('facebook')
				);

				if(!isValid.valid){
					var errorSpan = $('.' + inputClass).siblings('span');
					if(errorSpan.length === 0){	
						$('.' + inputClass).after('<span class="error-message" style="color: red;"></span>');
						errorSpan = $('.' + inputClass).siblings('span');
					}
					errorSpan.text(isValid.message).show();
					return;
        }

				var isValidImageFormat = validateImageFormat(attachment.url, buttonId.includes('facebook'));
				if(!isValidImageFormat.valid){
					var errorSpan = $('.' + inputClass).siblings('span');
					if(errorSpan.length === 0){
						$('.' + inputClass).after('<span class="error-message" style="color: yellow;"></span>');
						errorSpan = $('.' + inputClass).siblings('span');
					}
					errorSpan.text(isValidImageFormat.message).show();
					return;
        }

				$('.' + inputClass).siblings('span').hide();
				$('.' + inputClass).val(attachment.url);
				$('#' + attachmentIdField).val(attachment.id);
				$('#' + widthField).val(attachment.width);
				$('#' + heightField).val(attachment.height);

				// Update preview
				$('.' + previewClass + ' img').attr('src', attachment.url);

				// If FB upload and toggle is checked, update X image too
				if($('.siteseo-x-toggle-switch input').is(':checked')){
					$('.siteseo-metabox-x-image img').attr('src', attachment.url);
				}
			});

			mediaUploader.open();
		});
    }
	
	function init_uploaders(){
		init_media_uploader(
			'siteseo_social_fb_img_upload',
			'siteseo_social_fb_img_meta',
			'siteseo-metabox-fb-image',
			'siteseo_social_fb_img_attachment_id',
			'siteseo_social_fb_img_width',
			'siteseo_social_fb_img_height'
		);

		init_media_uploader(
			'siteseo_social_twitter_img_upload',
			'siteseo_social_twitter_img_meta',
			'siteseo-metabox-x-image',
			'siteseo_social_twitter_img_attachment_id',
			'siteseo_social_twitter_img_width',
			'siteseo_social_twitter_img_height'
		);
	}

	function validateImageDimensions(width, height, isFacebook){
		if(isFacebook){
			if(width < 200 || height < 200){
				return {
					valid: false,
					message: 'Image must be at least 200x200 pixels for Facebook'
				};
			}

			if((width * height * 4) / (1024 * 1024) > 8){
				return {
					valid: false,
					message: 'Image size exceeds Facebook 8MB limit'
				};
			}

			return { valid: true };
		}

		if(width < 144 || height < 144){
			return {
				valid: false,
				message: 'Image must be at least 144x144 pixels for X'
			};
		}

		if((width * height * 4) / (1024 * 1024) > 5){
			return {
				valid: false,
				message: 'Image size exceeds X 5MB limit'
			};
		}
		return { valid: true };
    }

  function validateImageFormat(url, isFacebook){

		var allowedExtensions = (isFacebook) ? ['jpeg', 'jpg', 'png', 'gif'] : ['jpeg', 'jpg', 'png', 'gif', 'webp'];
		var imageExtension = url.split('.').pop().toLowerCase();

		if(!allowedExtensions.includes(imageExtension)){
      return {
				valid : false,
				message : 'Only ' + allowedExtensions.join(', ').toUpperCase() + ' images are allowed.'
			};
    }

    return {valid : true};
	}

	$(document).on('input paste', '#siteseo_social_fb_img_meta, #siteseo_social_twitter_img_meta', function(){
    var errorSpan = $(this).siblings('span');
    var imageUrl = $(this).val().trim();
    errorSpan.text('').hide();

    if(imageUrl.trim() !== ''){
      var isFacebook = $(this).attr('id') === 'siteseo_social_fb_img_meta';
      var isValidImageFormat = validateImageFormat(imageUrl, isFacebook);

      if(!isValidImageFormat.valid){
        errorSpan.text(isValidImageFormat.message).show();
      }
    }
	});

	$(document).on('widget-added widget-updated', init_uploaders);
	
	// facebook title 
	$(document).on('click', '.siteseo-facebook-title', function(){
		let tag = $(this).data('tag'),
		$wrapper = $(this).closest('.siteseo-metabox-input-wrap'),
		$input = $wrapper.find('#siteseo_social_fb_title_meta, textarea');
		
		let currentValue = $input.val();
		newValue = currentValue + " " + tag;

		$input.val(newValue);
    
		$input.trigger('input');
	});
	
	// facebook description
	$(document).on('click', '.siteseo-facebook-desc', function(){
		let tag = $(this).data('tag'),
		$wrapper = $(this).closest('.siteseo-metabox-input-wrap'),
		$input = $wrapper.find('#siteseo_social_fb_desc_meta, textarea');
		
		let currentValue = $input.val();
		newValue = currentValue + " " + tag;

		$input.val(newValue);
		
		$input.trigger('input');
	});
	
	// x title
	$(document).on('click', '.siteseo-x-title', function(){
		
		let tag = $(this).data('tag'),
		$wrapper = $(this).closest('.siteseo-metabox-input-wrap'),
		$input = $wrapper.find('#siteseo_social_twitter_title_meta, textarea');
		
		let currentValue = $input.val();
		newValue = currentValue + " " + tag;

		$input.val(newValue);
		
		$input.trigger('input');
		
	});
	
	// x desc
	$(document).on('click', '.siteseo-x-desc', function(){
		
		let tag = $(this).data('tag'),
		$wrapper = $(this).closest('.siteseo-metabox-input-wrap'),
		$input = $wrapper.find('#siteseo_social_twitter_desc_meta, textarea');
		
		let currentValue = $input.val();
		newValue = currentValue + " " + tag;

		$input.val(newValue);
		
		$input.trigger('input');
	});
	
	$(document).on('click', '.siteseo-metabox-tag', function(){
		let tag = $(this).data('tag'),
		$wrapper = $(this).closest('.siteseo-metabox-input-wrap'),
		$input = $wrapper.find('#siteseo_titles_title_meta, textarea'),

		currentValue = $input.val(),
		newValue = currentValue + " " + tag;

		$input.val(newValue);
		update_char_counter($input);

		$input.trigger('input');
	});

    $(document).on('input paste', '.siteseo_titles_title_meta, .siteseo_titles_desc_meta', function(e){
		update_char_counter($(e.target));
	});

	function update_char_counter($input){
		let max_chars = $input.hasClass('siteseo_titles_title_meta') ? 60 : 160;

		if(max_chars == 60){
			var jEle = $('.siteseo_titles_title_meta');
		} else {
			var jEle = $('.siteseo_titles_desc_meta');
		}

		let current_length = $input.val().length,
		percentage = Math.min((current_length/max_chars) * 100, 100),
		$wrapper = jEle.closest('.siteseo-metabox-input-wrap'),
		$meter = $wrapper.find('.siteseo-metabox-limits-meter span'),
		$counter = $wrapper.find('.siteseo-metabox-limits-numbers em');

		if(max_chars == 60){
			update_title_placeholder($input.val());
			if($input.hasClass('siteseo_titles_title_meta')){
				$('.siteseo_titles_title_meta').not($input)?.val($input.val()); // Syncing inputs
			}
		} else {
			update_desc_placeholder($input.val());
			if($input.hasClass('siteseo_titles_desc_meta')){
				$('.siteseo_titles_desc_meta').not($input)?.val($input.val()); // Syncing inputs
			}
		}

		$meter.css('width', percentage + '%');
		$counter.text(current_length);
	}

	function update_title_placeholder(title){
		if(title.length > 60){
			title = title.substring(0, 60) + '...';
		}

		if(title.includes('%%')){
			siteseo_debounce(() => resolve_dynamic_variables(title, 'title'));
			return;
		}

		$('.siteseo-metabox-search-preview h3').text(title);
	}

	function update_desc_placeholder(desc){
		if(desc.length > 160){
			desc = desc.substring(0, 160) + '...';
		}

		if(desc.includes('%%')){
			siteseo_debounce(() => resolve_dynamic_variables(desc, 'desc'));
			return;
		}

		$('.siteseo-search-preview-description').text(desc);
	}

	// seo analysis and readiblity toggle 
	function loadTabs(selector){
		$(selector).load(" #siteseo-analysis-tabs-1", "", initializeToggle);
	}

	loadTabs("#siteseo-analysis-tabs");
	loadTabs("#siteseo-metabox-wrapper #siteseo-analysis-tabs");

	function initializeToggle(){
		let preventClick = false;

		$(document).off('click', '.siteseo-analysis-block-title').on('click', '.siteseo-analysis-block-title', function (event){
			if(preventClick){
				event.stopImmediatePropagation();
				event.preventDefault();
				preventClick = false;
				return;
			}

			let $title = $(this),
			$content = $title.next(".siteseo-analysis-block-content");

			$title.toggleClass("open");
			let isExpanded = $title.attr('aria-expanded') === "true",
			isHidden = $content.attr('aria-hidden') === "true";

			$title.attr('aria-expanded', !isExpanded);
			$content.toggle();
			$content.attr('aria-hidden', !isHidden);
		});

		$(document).on('click', '#expand-all', function (event){
			event.preventDefault();
			$(".siteseo-analysis-block-content").show();
			$(".siteseo-analysis-block-title").attr('aria-expanded', true);
			$(".siteseo-analysis-block-content").attr('aria-hidden', false);
		});

		$(document).on('click', '#close-all', function (event){
			event.preventDefault();
			$(".siteseo-analysis-block-content").hide();
			$(".siteseo-analysis-block-title").attr('aria-expanded', false);
			$(".siteseo-analysis-block-content").attr('aria-hidden', true);
		});
	}

	/**suggestion btn **/
	$('.siteseo-suggetion').hide();

	$(document).on('click', '.siteseo-tag-select-btn', function(e){
		e.preventDefault();
		e.stopPropagation();

		var $suggestion = $(this).next('.siteseo-suggestions-wrapper').find('.siteseo-suggetion');
		if($suggestion.length){
			$('.siteseo-suggetion').not($suggestion).hide();
			$suggestion.toggle();
		}
	});

	$(document).on('click', '.siteseo-suggestions-container .section', function(e){
		e.preventDefault();
		e.stopPropagation();

		let tag = $(this).find('.tag').text(),
		$container = $(this).closest('.siteseo-metabox-input-wrap, .siteseo-sidebar-input-wrap'),
		$targetField;

		// Check for both metabox and sidebar fields
		if($container.find('#siteseo_titles_title_meta, .siteseo-sidebar-title').length){
			$targetField = $container.find('#siteseo_titles_title_meta, .siteseo-sidebar-title');
		} else if($container.find('#siteseo_titles_desc_meta, .siteseo-sidebar-desc').length){
			$targetField = $container.find('#siteseo_titles_desc_meta, .siteseo-sidebar-desc');
		} else if($container.find('#siteseo_social_fb_title_meta').length){ 
      $targetField = $container.find('#siteseo_social_fb_title_meta'); 
		} else if($container.find('#siteseo_social_fb_desc_meta').length){ 
			$targetField = $container.find('#siteseo_social_fb_desc_meta'); 
		} else if($container.find('#siteseo_social_twitter_title_meta').length){ 
			$targetField = $container.find('#siteseo_social_twitter_title_meta'); 
		} else if($container.find('#siteseo_social_twitter_desc_meta').length){ 
			$targetField = $container.find('#siteseo_social_twitter_desc_meta'); 
		} 
		
		if($targetField && $targetField.length){
			append_suggestion_tag($targetField, tag);
			$(this).closest('.siteseo-suggetion').hide();
		}
	});

	// Close when click outside
	$(document).on('click', function(e){
		if(!$(e.target).closest('.siteseo-metabox-input-wrap, .siteseo-sidebar-input-wrap').length){
			$('.siteseo-suggetion').hide();
		}
	});
	
	//search
	$(document).on('input', '.search-box', function(){
		var searchText = $(this).val().toLowerCase().trim();
		var $sections = $(this).closest('.siteseo-suggetion').find('.section');

		$sections.each(function(){
			var sectionText = $(this).text().toLowerCase();
			var tagText = $(this).find('.tag').text().toLowerCase();
			
			$(this).toggle(
				sectionText.indexOf(searchText) > -1 || 
				tagText.indexOf(searchText) > -1
			);
		});
	});

	function append_suggestion_tag($field, text){
		let field = $field[0],
		currentValue = field.value,
		newValue = currentValue + " " + text;

		field.value = newValue;
		field.focus();
		$field.trigger('input');
	}

	// Refresh SEO analysis
	$(document).on('click', '#siteseo_refresh_seo_analysis', function(e){
		e.preventDefault();

		var button = $(this);
		var post_id = button.attr('data_id');
		var post_type = button.attr('data_post_type');

		var target_keywords;
		if(button.closest('.widget-content').length){
			target_keywords = button.closest('.widget-content').find('.siteseo_analysis_target_kw').val();
		}else{
			target_keywords = $('#siteseo_tags_hidden').val();
		}

		button.prop('disabled', true);
		button.text('Analyzing...');

		$.ajax({
			url: siteseoAdminAjax.url,
			type: 'POST',
			data: {
				action: 'siteseo_refresh_analysis',
				nonce: siteseoAdminAjax.nonce,
				post_id: post_id,
				post_type: post_type,
				target_keywords: target_keywords
			},
			success: function(response){
				if(response.success){

					var container;
					if(button.closest('.widget-content').length){
						container = button.closest('.widget-content').find('.siteseo-widget-seo-analysis');
					}else{
						container = $('#siteseo-metabox-content-analysis .siteseo-metabox-seo-analysis-tab');
					}

					container.html(response.data.html);

					if(!button.closest('.widget-content').length){
						let activeTab = $('#siteseo-metabox-content-analysis .siteseo-metabox-tab-label-active').data('tab');
						$('#siteseo-metabox-content-analysis .' + activeTab).show();
					}
				}else{
					alert('Analysis failed: ' + (response.data.message || 'Unknown error'));
				}
			},
			error: function(xhr, status, error){
				alert('Error performing analysis. Please try again.');
			},
			complete: function(){
				button.prop('disabled', false);
				button.text('Refresh analysis');
			}
		});
	});

	function initializeTabs(){
		$('#siteseo-metabox-content-analysis .siteseo-metabox-tab-label').off('click');

		$(document).on('click','#siteseo-metabox-content-analysis .siteseo-metabox-tab-label',function(){
			var tabId = $(this).data('tab');
			var $tabsContainer = $(this).closest('#siteseo-metabox-content-analysis');

			$tabsContainer.find('.siteseo-metabox-tab-label').removeClass('siteseo-metabox-tab-label-active');
			$(this).addClass('siteseo-metabox-tab-label-active');

			$tabsContainer.find('.siteseo-metabox-tab').hide();
			$tabsContainer.find('.' + tabId).show();
		});
	}

	initializeTabs();

	// Toggle Mobile and Desktop view of Google SERP
	$(document).on('click', '#siteseo-metabox-search-mobile', function(){
		$(this).hide();
		$(this).prev().show();
		$('.siteseo-search-preview-desktop').css('max-width', '414px');
	});

	$(document).on('click', '#siteseo-metabox-search-pc', function(){
		$(this).hide();
		$(this).next().show();
		$('.siteseo-search-preview-desktop').css('max-width', '');
	});

	// Tags
	let $tagsValue = $('#siteseo_tags_hidden'),
	tags = [];

	if($tagsValue.val()){
		tags = $tagsValue.val().split(',');
	}

	function createTag(tag){
		if(!tag || tags.includes(tag)){
			return;
		}

		let $input = $('.siteseo_analysis_target_kw_meta'),
		$tag = $('<span>').addClass('siteseo-tag').text(tag),
		$removeBtn = $('<span>').addClass('siteseo-remove-tag').text('×');

		$tag.append($removeBtn);
		$tag.insertBefore($input);
		tags.push(tag);
		updateHiddenInput();
	}

	$(document).on('click', '.siteseo-remove-tag', function(e) {
		e.preventDefault();
		e.stopImmediatePropagation();

		const tag = $(this).parent(),
		tagText = tag.text().slice(0, -1);

		tags = tags.filter(item => item !== tagText);
		tag.remove();
		updateHiddenInput();

		return;
	});

	function updateHiddenInput(){
		$('input[name="siteseo_analysis_target_kw"').val(tags.join(','));
	}

	$(document).on('blur keypress', '.siteseo_analysis_target_kw_meta', function(e){
		if(e.type === 'blur' || (e.type === 'keypress' && e.key === 'Enter')){
			const text = $(this).val().trim();
			if(text){
				createTag(text);
				$(this).val('');
			}
			e.preventDefault();
		}
	});

	$(document).on('click', '#siteseo-sidebar-wrapper .siteseo-sidebar-tabs', function(){
		$(this).toggleClass('siteseo-sidebar-tabs-opened');
		$(this).next().slideToggle('fast');
	});

	function resolve_dynamic_variables(content, type, platform){

		let post_id = jQuery('.siteseo-metabox-tabs').attr('data_id');

		jQuery.ajax({
			url : siteseoAdminAjax.url,
			type : 'POST',
			data : {
				content : content,
				action : 'siteseo_resolve_variables',
				post_id : post_id,
				nonce: siteseoAdminAjax.nonce,
			}, success : function(res) {
				if(!res.success){
					return;
				}

				if(type == 'title'){
					if(platform == 'fb'){
						$('.siteseo-metabox-fb-title').text(res.data);
						if($('.siteseo-x-toggle-switch input').is(':checked')){
							$('.siteseo-metabox-x-title').text(res.data);
						}
					} else if(platform == 'x'){
						$('.siteseo-metabox-x-title').text(res.data);					
					} else{
						update_title_placeholder(res.data);
					}
					
					return;
				}

				if(type == 'desc'){
					if(platform == 'fb'){
						$('.siteseo-metabox-fb-desc').text(res.data);
					} else if(platform == 'x'){
						$('.siteseo-metabox-x-desc').text(res.data);
					} else{
						update_desc_placeholder(res.data);
					}
				}
			}
		});
	}
});
PK��f\��0hNNassets/js/gsc-charts.jsnu�[���jQuery(document).ready(function($){
  
	// Function to check if we should show sample data or zeros
	function should_show_sample_data(){
		let chartElements = document.querySelectorAll('[data-sample]');
		if(chartElements.length > 0){
			return chartElements[0].getAttribute('data-sample') === '1';
		}

		return true;
	}

	let actual_data = window.siteseo_chart_data;
	let is_sample_data = should_show_sample_data();

	let main_chart_data = is_sample_data ? {
		dates : ['jan', 'feb', 'march', 'april', 'may', 'jun', 'july', 'Aug'],
		impressions: [950000, 1100000, 1250000, 1300000, 1200000, 1000000, 900000, 1100000],
		clicks: [6000, 9000, 10000, 9500, 8700, 7500, 6800, 11000]
		} : {
		// here show actual data
		dates: actual_data.chart_data.dates || 0,
		impressions: actual_data.chart_data.impressions || 0,
		clicks: actual_data.chart_data.clicks || 0
	};

	let device_data = is_sample_data ? {
		total_clicks : '1.8k',
		device : ['Mobile', 'Desktop', 'Tablet'],
		clicks : [65, 30, 5]
		} : {
		total_clicks : actual_data.total_devices_clicks || 0,
		device: actual_data.device_audience.map(item => item.device),
		clicks: actual_data.device_audience.map(item => item.clicks)
	};

	let country_data = is_sample_data ? {
		name : ['United States', 'India', 'United Kingdom', 'Canada', 'Germany'],
		clicks : [1200, 850, 620, 400, 250]
		} : {
		name : actual_data.country_audience.map(item => item.country),
		clicks : actual_data.country_audience.map(item => item.clicks)
	};

	// Helper function to extract numeric values from arrays
	function extract_numeric_values(dataArray){
		if(!dataArray || !Array.isArray(dataArray)) return [];
		
		// Filter out only numeric values and non-array objects
		return dataArray.filter(item => typeof item === 'number' && !isNaN(item));
	}

	let keyword_line_data = is_sample_data ? {
		top3 : [30, 31, 32, 32, 31, 28, 29, 30],
		pos4_10 : [38, 42, 45, 47, 44, 43, 35, 44],
		pos11_50 : [25, 20, 18, 16, 17, 22, 30, 22],
		pos50_100 : [6, 4, 4, 3, 4, 7, 9, 3],
		dates : ['Nov 1', 'Nov 10', 'Nov 20', 'Dec 1', 'Dec 10', 'Dec 20', 'Jan 1', 'Jan 10']
	} : {
		top3: extract_numeric_values(actual_data.keyword_data.top3) || 0,
		pos4_10: extract_numeric_values(actual_data.keyword_data.pos4_10) || 0,
		pos11_50: extract_numeric_values(actual_data.keyword_data.pos11_50) || 0,
		pos50_100: extract_numeric_values(actual_data.keyword_data.pos50_100) || 0,
		dates: actual_data.keyword_data.dates,
	};

	let keyword_bar_data = is_sample_data ? [5, 10, 52, 30] : [
		actual_data.keyword_distribution.top3 || 0,
		actual_data.keyword_distribution.pos4_10 || 0,
		actual_data.keyword_distribution.pos11_50 || 0,
		actual_data.keyword_distribution.pos50_100 || 0
	];

	let metric_chart_data = is_sample_data ? {
		impressions: [100, 90, 80, 70, 60, 50, 40, 30],
		clicks: [10, 11, 10, 12, 11, 12, 13, 14],
		ctr: [10.0, 12.2, 12.5, 17.1, 18.3, 24.0, 32.5, 46.6],
		position: [15, 16, 17, 18, 19, 20, 21, 22],
		dates: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']
	} : {
		impressions: actual_data.chart_data.impressions || 0,
		clicks: actual_data.chart_data.clicks || 0,
		ctr: actual_data.chart_data.ctr || 0,
		position: actual_data.chart_data.position || 0,
		dates:actual_data.chart_data.dates || 0
	};

	// Main Chart
	if(document.getElementById('seo_statistics')){
		let ctx = document.getElementById('seo_statistics').getContext('2d');
		let seo_statistics = new Chart(ctx, {
			type: 'line',
			data: {
				labels: main_chart_data.dates,
				datasets: [
					{
						label: 'Search Impressions',
						data: main_chart_data.impressions,
						borderColor: is_sample_data ? 'rgba(0, 123, 255, 1)' : 'rgba(0, 123, 255, 0.8)',
						backgroundColor: is_sample_data ? 'rgba(0, 123, 255, 0.2)' : 'rgba(0, 123, 255, 0.1)',
						fill: true,
						yAxisID: 'yImpressions',
						tension: 0.4,
						pointRadius: 0.1,
						borderWidth:2
					},
					{
						label: 'Search Clicks',
						data: main_chart_data.clicks,
						borderColor: is_sample_data ? 'rgba(40, 167, 69, 1)' : 'rgba(40, 167, 69, 0.8)',
						backgroundColor: is_sample_data ? 'rgba(40, 167, 69, 0.1)' : 'rgba(40, 167, 69, 0.1)',
						fill: true,
						yAxisID: 'yClicks',
						tension: 0.4,
						pointRadius: 0.1,
						borderWidth:2
					}
				]
			},
			options: {
				responsive: true,
				interaction: {
					mode: 'index',
					intersect: false
				},
				plugins: {
					legend: {
						position: 'bottom'
					},
					title: {
						display: false
					},
					tooltip: {
						enabled: true
					}
				},
				scales: {
					x: {
						grid: {
							display: false
						},
						ticks: {
							stepSize: 10,
							callback: function(value,index){
								return index % 10 === 0 ? this.getLabelForValue(value) : '';
							},
						},
					},
					yImpressions: {
						type: 'linear',
						position: 'left',
						beginAtZero: true,
						ticks: {
							stepSize: 3,
							callback: function(value) {
								return value >= 1000 ? (value / 1000) + 'K' : value;
							},
						},
						grid: {
							display: true
						},
						border: {
							display: true
						}
					},
					yClicks: {
						type: 'linear',
						position: 'right',
						beginAtZero: true, 
						ticks: {
							stepSize: 0.5,
							callback: function(value) {
								return value >= 1000 ? (value / 1000) + 'K' : value;
							}
						},
						grid: {
							display: false
						},
						border: {
							display: false
						}
					}
				}
			}
		});
	}

	// Keyword Multi Line Chart
	if(document.getElementById('siteseo_keyword_muti_line_chart')){
		let keywords = document.getElementById('siteseo_keyword_muti_line_chart').getContext('2d');
		
		// Check if we have actual data for the line chart
		let has_actual_line_data = !is_sample_data && keyword_line_data.top3.length > 0 && keyword_line_data.dates.length > 0;
			
		let all_data = [
			...keyword_line_data.top3,
			...keyword_line_data.pos4_10,
			...keyword_line_data.pos11_50,
			...keyword_line_data.pos50_100
		];
	
		let max_value = Math.max(...all_data);

		// Improved dynamic Y-axis max calculation
		let y_axis_max;
		if(max_value <= 5){
			// For very small values, use smaller increments
			y_axis_max = Math.ceil(max_value / 1) * 1; // round up to nearest whole number
			if(y_axis_max === max_value) y_axis_max += 1; // add some padding
		} else if(max_value <= 20){
			// For medium values, use smaller increments
			y_axis_max = Math.ceil(max_value / 5) * 5;
		} else {
			// For larger values, use normal increments
			y_axis_max = Math.ceil(max_value / 10) * 10;
		}

		// Ensure minimum y_axis_max for very small values
		if (y_axis_max < 5) y_axis_max = 5;
		
		let siteseo_keyword_muti_line_chart = new Chart(keywords, {
			type: 'line',
			data: {
				labels: has_actual_line_data ? keyword_line_data.dates : keyword_line_data.dates,
				datasets: [
					{
						label: 'Top 3 Position',
						data: has_actual_line_data ? keyword_line_data.top3 : keyword_line_data.top3,
						borderColor: 'rgba(0, 90, 224, 0.7)',
						backgroundColor: 'rgba(0, 90, 224, 0.15)',
						fill: 'origin',
						tension: 0.4,
						borderWidth: 2,
						pointRadius: 0.1,
						pointHoverRadius: 5,
						pointBackgroundColor: 'rgba(0, 90, 224, 1)',
						pointBorderColor: '#ffffff',
						pointBorderWidth: 1,
						pointStyle: 'circle'
					},
					{
						label: '4-10 Position',
						data: has_actual_line_data ? keyword_line_data.pos4_10 : keyword_line_data.pos4_10,
						borderColor: 'rgba(0, 170, 9, 0.7)',
						backgroundColor: 'rgba(0, 170, 9, 0.15)',
						fill: 'origin',
						tension: 0.4,
						borderWidth: 2,
						pointRadius: 0.1,
						pointHoverRadius: 5,
						pointBackgroundColor: 'rgba(0, 170, 9, 1)',
						pointBorderColor: '#ffffff',
						pointBorderWidth: 1,
						pointStyle: 'circle'
					},
					{
						label: '11-50 Position',
						data: has_actual_line_data ? keyword_line_data.pos11_50 : keyword_line_data.pos11_50,
						borderColor: 'rgba(255, 140, 0, 0.7)',
						backgroundColor: 'rgba(255, 140, 0, 0.15)',
						fill: 'origin',
						tension: 0.4,
						borderWidth: 2,
						pointRadius: 0.1,
						pointHoverRadius: 5,
						pointBackgroundColor: 'rgba(255, 140, 0, 1)',
						pointBorderColor: '#ffffff',
						pointBorderWidth: 1,
						pointStyle: 'circle'
					},
					{
						label: '50-100 Position',
						data: has_actual_line_data ? keyword_line_data.pos50_100 : keyword_line_data.pos50_100,
						borderColor: 'rgba(220, 20, 60, 0.7)',
						backgroundColor: 'rgba(220, 20, 60, 0.15)',
						fill: 'origin',
						tension: 0.4,
						borderWidth: 2,
						pointRadius: 0.1,
						pointHoverRadius: 5,
						pointBackgroundColor: 'rgba(220, 20, 60, 1)',
						pointBorderColor: '#ffffff',
						pointBorderWidth: 1,
						pointStyle: 'circle'
					}
				]
			},
			options: {
				responsive: true,
				plugins: {
					legend: {
						position: 'bottom',
						labels: {
							usePointStyle: true,
							padding: 20,
							boxWidth: 12
						}
					},
					title: {
						display: true,
						text: has_actual_line_data ? 'Keyword Position Trends' : 'Top Positions'
					},
					tooltip: {
						enabled: true,
						mode: 'index',
						intersect: false,
						backgroundColor: 'rgba(0, 0, 0, 0.8)',
						padding: 12,
						cornerRadius: 6,
						displayColors: true,
						callbacks: {
							title: function(tooltipItems) {
								return tooltipItems[0].label;
							},
							label: function(context) {
								return `${context.dataset.label}: ${context.parsed.y}`;
							}
						}
					}
				},
				interaction: {
					mode: 'index',
					intersect: false
				},
				elements: {
					line: {
						cubicInterpolationMode: 'monotone'
					}
				},
				scales: {
					x: {
						grid: {
							display: false
						},
						border: {
							display: false
						},
						ticks: {
							font: {
								size: 11
							},
							callback: function(value, index, ticks) {
								// Show label for every 10th date only
								return index % 8 === 0 ? this.getLabelForValue(value) : '';
							}
						}
					},
					y: {
						beginAtZero: true,
						max: y_axis_max,
						grid: {
							color: 'rgba(0, 0, 0, 0.05)'
						},
						ticks: {
							stepSize: y_axis_max <= 10 ? 1 : (y_axis_max <= 20 ? 5 : 10),
							callback: function(value) {
								return value;
							},
							font: {
								size: 11
							}
						}
					}
				},
				animation: {
					duration: 1000,
					easing: 'easeOutQuart'
				},
				hover: {
					mode: 'index',
					intersect: false
				}
			}
		});
	}
	
	// Keyword Bar Chart
	if(document.getElementById('siteseo_keyword_bar_chart')){
		let bar_chart = document.getElementById('siteseo_keyword_bar_chart').getContext('2d');
		let max_bar_value = Math.max(...keyword_bar_data);
		let y_axis_max_bar = Math.ceil(max_bar_value / 10) * 10; // round up to nearest 10
		if(y_axis_max_bar < 50) y_axis_max_bar = 50; // minimum 50
		if(y_axis_max_bar > 100) y_axis_max_bar = 100; // maximum 100


		let siteseo_keyword_bar_chart = new Chart(bar_chart, {
			type: 'bar',
			data: {
				labels: ['Top 3 Position', '4-10 Position', '11-50 Position', '50-100 Position'],
				datasets: [{
					data: keyword_bar_data,
					backgroundColor: [
						'#1d6ecc',
						'#3aaf60',
						'#f59b2d',
						'#e3485d'
					],
					borderWidth: 0
				}]
			},
			options: {
				responsive: true,
				plugins: {
				  legend: { display: false },
					title: {
					  display: true,
					  text: is_sample_data ? 'Keyword Distribution' : 'Keyword Position Distribution'
					},
					tooltip: {
					  callbacks: {
						label: function(context) {
						  return `${context.parsed.y}%`;
						}
					  }
					}
				},
				scales: {
				   x: {
				  	grid: {
				  		display: false
				  	},
				  	border: {
				  		display: false
				  	}
				  },
				  
				  y: {
					beginAtZero: true,
					min: 0,
					max: y_axis_max_bar,
					ticks: {
						stepSize: Math.round(y_axis_max_bar / 2),
						callback: function(value){
							return value + "%";
						  }
						}
					}
				}
			}
		});
	}
	
	// Metric Charts (Impressions, Clicks, CTR, Position)
	let chart_config = {
		type: 'line',
			options: {
				responsive: true,
				maintainAspectRatio: false,
				plugins: {
					legend: { display: false },
					tooltip: { 
						enabled: true,
						mode: 'index',
						intersect: false,
						callbacks: {
							title: function(tooltipItems){
								// Show date instead of "Day X"
								let data_index = tooltipItems[0].dataIndex;

								if(metric_chart_data.dates && metric_chart_data.dates[data_index]){
									return metric_chart_data.dates[data_index];
								}
								return `Day ${data_index + 1}`;
							},
							label: function(context){
								let label = context.dataset.label || '';
								if (label) {
									label += ': ';
								}
								if(context.parsed.y !== null){
									// Format numbers appropriately
									if(context.dataset.label?.toLowerCase().includes('ctr')){
										label += context.parsed.y.toFixed(2) + '%';
									} else if(context.dataset.label?.toLowerCase().includes('position')){
										label += context.parsed.y.toFixed(1);
									} else{
										label += context.parsed.y.toLocaleString();
									}
								}
								return label;
							}
						}
					}
				},
				scales: {
					x: { display: false },
					y: { 
						display: false,
						beginAtZero: true
					}
				},
				elements: {
					point: { 
						radius: 0.01,
						hoverRadius: 6,
						hoverBackgroundColor: '#fff',
						hoverBorderWidth: 2
					}
				},
				layout: {
					padding: { top: 5, bottom: 5, left: 0, right: 0 }
				},
				tension: 0.4,
				interaction: {
					mode: 'index',
					intersect: false
				},
				hover: {
					mode: 'index',
					intersect: false
				}
			}
		};

	// Function to generate colors based on performance using only 4 colors
	function get_performance_based_color(metric_type, data){
		if(!data || data.length < 2) return '#3498db'; // Default blue
		
		let first_value = data[0];
		let last_value = data[data.length - 1];
		let percentageChange = ((last_value - first_value) / first_value) * 100;
		
		// Define the 4 colors
		const colors = {
			blue: '#3498db',
			green: '#2ecc71', 
			red: '#e74c3c',
			yellow: '#f39c12'
		};
		
		// Performance logic for each metric type
		switch(metric_type){
			case 'impressions':
				// Higher is better
				if(last_value > first_value * 1.1) return colors.green;
				if(last_value > first_value) return colors.blue;
				if(last_value >= first_value * 0.9) return colors.yellow;
				return colors.red;
				
			case 'clicks':
				// Higher is better  
				if(last_value > first_value * 1.15) return colors.green;   // >15% increase - Green
				if(last_value > first_value) return colors.blue;		   // Any increase - Blue
				if(last_value >= first_value * 0.85) return colors.yellow; // <15% decrease - Yellow
				return colors.red;										// >15% decrease - Red
				
			case 'ctr':
				// Higher is better
				if(last_value > first_value * 1.2) return colors.green;	// >20% increase - Green
				if(last_value > first_value) return colors.blue;		   // Any increase - Blue  
				if(last_value >= first_value * 0.8) return colors.yellow;  // <20% decrease - Yellow
				return colors.red;										// >20% decrease - Red
				
			case 'position':
				// Lower is better
				if(last_value < first_value * 0.8) return colors.green;	// >20% improvement - Green
				if(last_value < first_value) return colors.blue;		   // Any improvement - Blue
				if(last_value <= first_value * 1.2) return colors.yellow;  // <20% decline - Yellow
				return colors.red;										// >20% decline - Red
				
			default:
				return colors.blue; // Default blue
		}
	}

	// Function to create metric charts
	let create_chart = (ctxId, data, metricType) => {
		if(!document.getElementById(ctxId)) return;

		let ctx = document.getElementById(ctxId).getContext('2d');

		// Get color based on performance
		let chart_color = get_performance_based_color(metricType, data);

		let gradient = ctx.createLinearGradient(0, 0, 0, 80);
		gradient.addColorStop(0, `rgba(${hex_to_rgb(chart_color)}, 0.2)`);
		gradient.addColorStop(1, `rgba(${hex_to_rgb(chart_color)}, 0)`);
		
		// Get label for dataset
		const labels = {
			'impressions': 'Impressions',
			'clicks': 'Clicks',
			'ctr': 'CTR',
			'position': 'Position'
		};

		new Chart(ctx, {
			...chart_config,
			data: {
				// Use dates if available, otherwise use generic day labels
				labels: metric_chart_data.dates || Array.from({ length: data.length }, (_, i) => `Day ${i + 1}`),
				datasets: [{
					label: labels[metricType] || metricType,
					data: data,
					borderColor: chart_color,
					borderWidth: 2,
					backgroundColor: gradient,
					fill: true,
					pointBackgroundColor: chart_color,
					pointBorderColor: '#fff',
					pointBorderWidth: 2,
					pointHoverBackgroundColor: '#fff',
					pointHoverBorderColor: chart_color,
					pointHoverBorderWidth: 3
				}]
			}
		});
	};

	// Helper function to convert hex to rgb
	function hex_to_rgb(hex){
		hex = hex.replace(/^#/, '');
		let bigint = parseInt(hex, 16);
		let r = (bigint >> 16) & 255;
		let g = (bigint >> 8) & 255;
		let b = bigint & 255;
		return `${r}, ${g}, ${b}`;
	}

	// Create metric charts
	if(document.getElementById('siteseo_impressions_chart')){
		create_chart('siteseo_impressions_chart', metric_chart_data.impressions, 'impressions');
	}

	if(document.getElementById('siteseo_clicks_chart')){
		create_chart('siteseo_clicks_chart', metric_chart_data.clicks, 'clicks');
	}

	if(document.getElementById('siteseo_ctr_chart')){
		create_chart('siteseo_ctr_chart', metric_chart_data.ctr, 'ctr');
	}

	if(document.getElementById('siteseo_position_chart')){
		create_chart('siteseo_position_chart', metric_chart_data.position, 'position');
	}

	// Country data
	let ctx = document.getElementById('siteseo_country_statics').getContext('2d');
	let my_Chart = new Chart(ctx, {
		type: 'bar',
		data: {
			labels: country_data.name,
			datasets: [{
				label: 'Clicks',
				data: country_data.clicks,
				backgroundColor: '#1d6ecc',
				borderRadius: 5,
				barThickness: 'flex',
				maxBarThickness: 20,
			}]
		},
		options: {
			indexAxis: 'y',
			responsive: false, // Disable responsive
			maintainAspectRatio: false, // Disable aspect ratio maintenance
			scales: {
				x: {
					beginAtZero: true,
					grid: { display: false }
				},
				y: {
					grid: { display: false }
				}
			},
			plugins: {
				legend: { display: false },
				tooltip: { enabled: true }
			}
		}
	});
	
	// Device data
	let devices_audience = document.getElementById('siteseo_device_statics').getContext('2d');
	let pie_chart = new Chart(devices_audience, {
		type: 'doughnut',
		data: {
			labels: device_data.device,
			datasets: [{
				data: device_data.clicks,
				backgroundColor : ['#1d6ecc','#3aaf60', '#f59b2d'],
				borderWidth: 0
			}]
		},
		options: {
			responsive: false, // Keep this as false
			maintainAspectRatio: false, // Keep this as false
			cutout: '70%',
			plugins: {
				legend: {
					display: true,
					position: 'bottom',
					labels: {
						usePointStyle: true,
						pointStyle: 'circle'
					}
				},
				tooltip: {
					enabled: true,
					callbacks: {
						label: function(context) {
							return `${context.label}: ${context.raw} clicks`;
						}
					}
				},
				title: {
					display: false
				}
			}
		},
		plugins: [{
			id: 'centerText',
			afterDraw: (chart) => {
				const {ctx, chartArea: {width, height}} = chart;
				ctx.save();
				
				// Display total clicks
				ctx.font = 'bold 22px sans-serif';
				ctx.fillStyle = '#111';
				ctx.textAlign = 'center';
				ctx.textBaseline = 'middle';
				ctx.fillText(device_data.total_clicks, width / 2, height / 2 - 10);
				
				// Display "clicks" label
				ctx.font = '12px sans-serif';
				ctx.fillStyle = '#888';
				ctx.fillText('Total clicks', width / 2, height / 2 + 12);
				
				ctx.restore();
			}
		}]
	});

});PK��f\�o�ܯ^�^assets/js/admin.jsnu�[���jQuery(document).ready(function($){

	$('.tag-title-btn').on('click', function(e){
		e.preventDefault();

		let input_field = $(this).closest('.wrap-tags').prev('input[type="text"], textarea'),
		current_value = input_field.val(),
		tag = $(this).data('tag');
    
		current_value = current_value || '';
		
		// We need to add a space if there is some content
		if(current_value.length > 0){
			tag = ' ' + tag;
		}

		input_field.val(current_value + tag);
		input_field.focus();
	});

	$('.siteseo-container a').on('click', function(e){
        e.preventDefault(); 
        $('.siteseo-container a').removeClass('active');
        $(this).addClass('active');
    });

	$("[id^='siteseo-toggle-meta-']").on('click', function(){
		$(this).toggleClass('active');
		if($(this).hasClass('active')){
			$('#toggle_state_posts').text('Click to hide any SEO metaboxes / columns for this post type');
			$(this).closest('.siteseo-toggle-cnt').find('.siteseo-suboption-toggle').val("");
		} else{
			$('#toggle_state_posts').text(' Click to show any SEO metaboxes / columns for this post type');
			$(this).closest('.siteseo-toggle-cnt').find('.siteseo-suboption-toggle').val(true);
		}
	});

	$('#siteseo-dismiss-get-started').on('click', function(e){
		e.preventDefault();
		$(this).closest('.siteseo-dashbord-intro').slideUp();

		$.ajax({
			url : siteseoAdminAjax.url,
			type : 'POST',
			data : {
				action : 'siteseo_dismiss_intro',
				nonce : siteseoAdminAjax.nonce
			}
		})
	});

	// toggle handler function
	function handleToggle($toggle, toggleKey, action) {

		const $container = $toggle.closest('.siteseo-toggle-cnt');
		const $stateText = $container.find(`.toggle_state_${toggleKey}`);
		const $input = $(`#${toggleKey}`);

		$container.addClass('loading');
		$toggle.toggleClass('active');

		const newValue = $toggle.hasClass('active') ? '1' : '0';
		$input.val(newValue);
		$stateText.text($toggle.hasClass('active') ? 'Disable' : 'Enable');

		$.ajax({
			url: ajaxurl,
			type: 'POST',
			data: {
				action: action,
				toggle_value: newValue,
				nonce: $toggle.data('nonce')
			},
			success: function(response) {
				if (response.success) {
					// Show the custom toast message
					showToast('Your settings have been saved.');
				} else {
					console.error('Failed to save toggle state');
					toggleRollback($toggle, $input, $stateText);
					showToast(response.data.message || 'Failed to save toggle state', 'error');
				}
			},
			error: function() {
				console.error('Ajax request failed');
				toggleRollback($toggle, $input, $stateText);
				showToast('Unable to save settings', 'error');
			},
			complete: function() {
				$container.removeClass('loading');
			}
		});
	}

	// Rollback function in case of AJAX error
	function toggleRollback($toggle, $input, $stateText) {
		$toggle.toggleClass('active');
		$input.val($toggle.hasClass('active') ? '1' : '0');
		$stateText.text($toggle.hasClass('active') ? 'Disable' : 'Enable');
	}

	$('.siteseo-toggle-Sw').on('click', function() {
		const $toggle = $(this);
		const toggleKey = $toggle.data('toggle-key');
		const action = $toggle.data('action');

		handleToggle($toggle, toggleKey, action);
	});

	// toast msg
	function showToast(message, type = 'success') {
		const toast = $('<div>')
			.addClass('siteseo-toast')
			.addClass(type) 
			.html(`<span class="dashicons dashicons-yes"></span> ${message}`);

		$('body').append(toast); 

		// 3 seconds
		toast.fadeIn(300).delay(3000).fadeOut(300, function () {
			toast.remove();
		});
	}

	// default off
	$('.siteseo-suggetion').hide();

    $('.tag-select-btn').click(function(e){
        e.preventDefault();
        e.stopPropagation();
		
        $('.siteseo-suggetion').not($(this).siblings('.siteseo-suggestions-wrapper').find('.siteseo-suggetion')).hide();
        
        $(this).siblings('.siteseo-suggestions-wrapper').find('.siteseo-suggetion').toggle();
    });

    $('.siteseo-suggestions-container .section').click(function(e){
        e.preventDefault();
        e.stopPropagation();
        
        let tag = $(this).find('.tag').text();
    		let $wrapTags = $(this).closest('.siteseo-suggetion').closest('.wrap-tags');

    		let targetField = $wrapTags.prev('input[type="text"], textarea');

    		// for global schema
    		if(targetField.length === 0){
    			targetField = $wrapTags.find('input[type="text"], textarea');
    		}
        
        insertAtCursor(targetField, tag);
        
        $(this).closest('.siteseo-suggetion').hide();
    });

    $(document).click(function(e){
        if(!$(e.target).closest('.wrap-tags').length){
            $('.siteseo-suggetion').hide();
        }
    });

    $('.siteseo-search-box').on('input', function(){
        var searchText = $(this).val().toLowerCase();
        $(this).closest('.siteseo-suggetion').find('.section').each(function() {
            var sectionText = $(this).text().toLowerCase();
            $(this).toggle(sectionText.indexOf(searchText) > -1);
        });
    });
	
	function insertAtCursor(field, text){
		if(!field || field.length === 0) return;

		field = field[0];
		let scroll_pos = field.scrollTop || 0;
		let current_value = field.value;

		let caretPos = field.selectionStart,
			before = current_value.substring(0, caretPos),
			after = current_value.substring(caretPos);

		let hash_index = before.lastIndexOf('#');

		if(hash_index !== -1){
			// If '#' exists before the caret, replace the last '#' with a space and insert the text
			before = before.substring(0, hash_index) + " ";
			let new_value = before + text + after;
			field.value = new_value;

			// Set caret after inserted text
			let new_position = before.length + text.length;
			field.setSelectionRange(new_position, new_position);
		} else{
			// If no '#', insert at the end, normal case
			field.value = current_value + text;
			let new_position = field.value.length;
			field.setSelectionRange(new_position, new_position);
		}

		field.scrollTop = scroll_pos;
		field.focus();
	}

    $('.tag-title-btn').click(function(e){
        e.preventDefault();
        e.stopPropagation();

        var tag = '';
        var btnId = $(this).attr('id');
        if(btnId === 'tag-select-btn'){
            tag = '%%sitetitle%%'; // replace
        }
        
        if(tag){
            var targetField = $(this).closest('.wrap-tags').prev('input[type="text"], textarea');
            insertAtCursor(targetField, tag);
        }
    });

	// facebook upload Image
	$('#facebook_upload_logo').click(function(e){
		var mediaUploader;
		e.preventDefault();

		if(mediaUploader){
			mediaUploader.open();
			return;
		}

		mediaUploader = wp.media.frames.file_frame = wp.media({
			title: 'Media',
			button:{
				text: 'Select'
			},
			multiple: false
		});

		mediaUploader.on('select', function(){
			var attachment = mediaUploader.state().get('selection').first().toJSON();
			$('#facebook_org_image_url').val(attachment.url);
		});

		mediaUploader.open();
	});
	
	//twitter cart image
	$('#twitter_logo').click(function(e){
		var mediaUploader;
		e.preventDefault();

		if(mediaUploader){
			mediaUploader.open();
			return;
		}

		mediaUploader = wp.media.frames.file_frame = wp.media({
			title: 'Media',
			button:{
				text: 'Select'
			},
			multiple: false
		});

		mediaUploader.on('select', function(){
			var attachment = mediaUploader.state().get('selection').first().toJSON();
			$('#twitter_logo_url').val(attachment.url);
		});

		mediaUploader.open();
	});
	
	//knowledgen org
	$('#knowledge_org_logo').on('click', function(e){
		var mediaUploader;
		e.preventDefault();

		if(mediaUploader){
			mediaUploader.open();
			return;
		}

		mediaUploader = wp.media.frames.file_frame = wp.media({
			title: 'Media',
			button:{
				text: 'Select'
			},
			multiple: false
		});

		mediaUploader.on('select', function(){
			var attachment = mediaUploader.state().get('selection').first().toJSON();
			$('#knowledge_org_logo_url').val(attachment.url);
		});

		mediaUploader.open();
	});
	
	// get active tab
	function getDefaultTab(){
		return $('.siteseo-tab.active').attr('id') || 'tab_siteseo_home';
	}

	function setActiveTab(tabId){
		// Hide all first
		$('.siteseo-tab').hide();

		// remove classes
		$('.siteseo-nav-tab').removeClass('siteseo-nav-tab-active');
		$('.siteseo-tab').removeClass('active');

		if($('.siteseo-nav-tab[data-tab="' + tabId + '"]').length){
			$('[data-tab="' + tabId + '"]').addClass('siteseo-nav-tab-active');
		} else{
			$('#' + tabId + '-tab').addClass('siteseo-nav-tab-active');
		}
		$('#' + tabId).addClass('active').show(); // show active tab

		// Hide save button
		let exclude_tab = ['tab_siteseopro_robots_txt', 'tab_auto_schema', 'tab_siteseopro_htaccess'],
		is_pro_exits = (typeof siteseo_pro !== 'undefined' && siteseo_pro.schema) ? true : false,
		$save_btn = $('.siteseo-submit-button');

		if((is_pro_exits && exclude_tab.includes(tabId))){
			$save_btn.hide();
		} else {
			$save_btn.show();
		}
		// save ative tab 
		localStorage.setItem('siteseo_active_tab', tabId);
	}

	//get from localstorage
	var savedTab = localStorage.getItem('siteseo_active_tab');
	var defaultTab = getDefaultTab();

	// Check if the saved tab exists otherwise use the default tab
	if(savedTab && $('#' + savedTab).length){
		setActiveTab(savedTab);
	} else{
		setActiveTab(defaultTab);
	}

	// Click handler for navigation tabs
	$('.siteseo-nav-tab').on('click', function(e){
		e.preventDefault();
		var tabId = $(this).data('tab') || $(this).attr('id').replace('-tab', '');
		setActiveTab(tabId);
	});

	$('#siteseo-generate-api-key-btn').on('click', function(){
        var button = $(this);
        var inputField = $('#bing-api-key');
        
        // Disable button while processing
        button.prop('disabled', true);
        
        $.ajax({
            url: siteseoAdminAjax.url,
            type: 'POST',
            data: {
                action: 'siteseo_generate_bing_api_key',
                nonce: siteseoAdminAjax.nonce
            },
            success: function(response) {
                if (response.success) {
                    // Insert the generated key into the input field
                    inputField.val(response.data.api_key);
                    
                    // Optional: Add a subtle highlight effect
                    inputField.css('background-color', '#f0f9ff')
                           .animate({'background-color': '#ffffff'}, 1500);
                } else {
                    alert('Error generating API key. Please try again.');
                }
            },
            error: function() {
                alert('Error generating API key. Please try again.');
            },
            complete: function() {
                // Re-enable the button
                button.prop('disabled', false);
            }
        });
    });
	
	$('#siteseo-submit-urls-button').on('click', function(e){
		e.preventDefault();
		var $button = $(this);
		var $spinner = $('.spinner');
		var $responseDiv = $('#url-submitter-response');
		
		$button.prop('disabled', true);
		$spinner.addClass('is-active');
		$responseDiv.empty();

		//bing responce
		function getBingResponseMessage(code){
			switch(code){
				case 200:
					return 'URLs submitted successfully';
				case 202:
					return 'URL received. IndexNow key validation pending.';
				case 400:
					return 'Bad request: Invalid format';
				case 403:
					return 'Forbidden: Key not valid';
				case 422:
					return 'Unprocessable Entity: URLs don\'t belong to the host';
				case 429:
					return 'Too Many Requests: Potential Spam';
				default:
					return 'Something went wrong';
			}
		}

		$.ajax({
			url: siteseoAdminAjax.url,
			method: 'POST',		
			data:{
				action: 'siteseo_url_submitter_submit',
				nonce: siteseoAdminAjax.nonce,
				search_engine: $('input[name="siteseo_options[search_engine_google]"]:checked').val() || $('input[name="siteseo_options[search_engine_bing]"]:checked').val(),
				urls: $('textarea[name="siteseo_options[instant_indexing_batch]"]').val()
			},

			success: function(response){
				if(response.success){
					
					let failed_svg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" width="20px" height="20px" fill="#EA3323"><path d="M340.67-284 480-423.33 619.33-284 676-340.67 536.67-480 676-619.33 619.33-676 480-536.67 340.67-676 284-619.33 423.33-480 284-340.67 340.67-284ZM479.79-50.67q-88.43 0-167.26-33.27-78.82-33.27-137.07-91.52-58.25-58.25-91.52-137.07-33.27-78.82-33.27-167.38 0-89.24 33.33-167.66Q117.33-726 175.86-784.5q58.53-58.49 136.96-91.99Q391.26-910 479.56-910q89.33 0 168.08 33.44 78.75 33.43 137.03 91.82 58.27 58.39 91.8 137.01Q910-569.12 910-479.61q0 88.79-33.51 167-33.5 78.21-91.99 136.75Q726-117.33 647.57-84T479.79-50.67Zm-.02-106q134.74 0 229.15-94.09 94.41-94.1 94.41-229.01 0-134.74-94.18-229.15T479.9-803.33q-134.41 0-228.82 94.18T156.67-479.9q0 134.41 94.09 228.82 94.1 94.41 229.01 94.41ZM480-480Z"/></svg>',
					success_svg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" width="20px" height="20px" fill="#48752C"><path d="M480.33-50.67q-89.64 0-169.13-32.93-79.49-32.94-137.08-90.52-57.58-57.59-90.52-137.08-32.93-79.49-32.93-169.13 0-89.9 32.84-168.49 32.83-78.6 90.84-136.61 58-58.02 137.23-91.29Q390.81-910 480-910q71.29 0 134.65 20.31 63.37 20.31 115.68 58.69l-78 78.33q-36.41-22.64-79.83-36.65-43.42-14.01-92.5-14.01-136.85 0-230.09 92.64-93.24 92.65-93.24 230.34 0 137.68 93.13 230.68 93.14 93 229.84 93 136.69 0 230.19-92.75 93.5-92.74 93.5-230.58 0-20.98-3-40.3-3-19.32-8-38.37l86.34-86q15 38.55 23.16 79.21 8.17 40.65 8.17 84.53 0 90.6-33.28 169.59-33.27 78.99-91.29 136.99-58.01 58.01-136.61 90.84-78.59 32.84-168.49 32.84Zm-60.66-228.66-180.34-181 72-73L419.67-425 837-843.33l73.67 73-491 491Z"/></svg>';

					var responseHtml = '';
			
					//Bing 
					if(response.data.details.bing){
						responseHtml += `
						<div class="wrap-bing-response">
							<table class="form-table">
								<tr>
									<td><h4>Bing Response</h4>`;
						
						if(response.data.details.bing.status_code == 200 || response.data.details.bing.status_code == 202){
							responseHtml += success_svg;	
						} else{
							responseHtml +=  failed_svg;
						}
			
						responseHtml += `</td>
									<td><code>${getBingResponseMessage(response.data.details.bing.status_code)}</code></td>
								</tr>
							</table>
						</div>`;
					}
			
					// Google Response
					if(response.data.details.google){
						responseHtml += `
						<div class="wrap-google-response">
							<table class="form-table">`;
							responseHtml += `
							<tr>
								<td><h4>Google Response</h4>`;
								
								if(response.data.details.google.status_code == 200){
									responseHtml += success_svg;	
								} else{
									responseHtml +=  failed_svg;
								}
									
								responseHtml += `</td>
								<td>
									<strong>Status: ${response.data.details.google.status_code}</strong>
									<p>URL:</p>
									<p>
										${response.data.details.google.urls.map(function(url){
											return `<code style="display:inline-block;">${url}</code>`;
										})}
									
									</p>
								</td>
							</tr>`;
			
						responseHtml += `</table>
						</div>`;
					}
			
					$responseDiv.html(responseHtml);
				} else{
					var errorMessage = response.data && response.data.message ? response.data.message : 'An error occurred.';
					$responseDiv.html('<div class="notice notice-error"><p>' + errorMessage + '</p></div>');
				}
			},
			error: function (xhr){
				console.error(xhr.responseText);
				$responseDiv.html('<div class="notice notice-error"><p>Request failed: ' + xhr.statusText + '</p></div>');
			},
			complete: function(){
				$button.prop('disabled', false);
				$spinner.removeClass('is-active');
			}
		});
	});
	
	/** scroll screen**/
	$('.siteseo-container a').on('click', function(e){
		e.preventDefault();
		
		var $container = $(this).closest('.siteseo-container');
		var $table = $(this).closest('table');
		
		$('.siteseo-container a').removeClass('active');
		
		var targetId = $(this).attr('href');
		targetId = targetId.replace(/^[#-]/, '');
		
		var $targetSection = $table.find('#' + targetId);
		if($targetSection.length){
			$('html, body').animate({
				scrollTop: $targetSection.offset().top - 100
			}, 500);
			
			$(this).addClass('active');
		}
    });

    function isElementInViewport(el){
		var rect = el[0].getBoundingClientRect();
		var windowHeight = $(window).height();

		var elementMiddle = rect.top + (rect.height / 2);
		return elementMiddle >= 0 && elementMiddle <= windowHeight;
    }

    function updateActiveSection(){
		$('table').each(function(){
			var $table = $(this);
			var activeFound = false;
			
			$table.find('.siteseo-container a').each(function(){
				var targetId = $(this).attr('href').replace(/^[#-]/, '');
				var $targetSection = $table.find('#' + targetId);
				
				if($targetSection.length && isElementInViewport($targetSection)){
					$('.siteseo-container a').removeClass('active');
					$(this).addClass('active');
					activeFound = true;
					return false;
				}
			});
		});
    }

    var scrollTimeout;
	$(window).on('scroll', function(){
		clearTimeout(scrollTimeout);
		scrollTimeout = setTimeout(function(){
			updateActiveSection();
		}, 100);
    });
	
	updateActiveSection();
	

	/*** reset setting***/
	$('.siteseo-container a').on('click', function(e){
		e.preventDefault();
		
		var $container = $(this).closest('.siteseo-container');
		var $table = $(this).closest('table');
		
		$('.siteseo-container a').removeClass('active');
		$(this).addClass('active');
		
		var targetId = $(this).attr('href').replace(/^[#-]/, '');
		var $targetSection = $table.find('#' + targetId);
		
		if($targetSection.length) {
			$('html, body').animate({
				scrollTop: $targetSection.offset().top - 100
			}, 500);
		}
	});

	function updateActiveSection(){
		$('table').each(function(){
			var $table = $(this);
			var windowTop = $(window).scrollTop();
			var windowBottom = windowTop + $(window).height();
			var windowCenter = windowTop + ($(window).height() / 2);

			var $sections = $table.find('[id]');
			var currentSection = null;
			
			$sections.each(function(){
				var $section = $(this);
				var sectionTop = $section.offset().top;
				var sectionBottom = sectionTop + $section.outerHeight();
				
				if(sectionTop <= windowCenter && sectionBottom >= windowCenter){
					currentSection = $section;
					return false;
				}
			});
			
			if(currentSection){
				var sectionId = currentSection.attr('id');
				var $links = $table.find('.siteseo-container a');
				
				$links.removeClass('active');
				$links.each(function(){
					var href = $(this).attr('href').replace(/^[#-]/, '');
					if(href === sectionId){
						$(this).addClass('active');
					}
				});
			}
		});
	}

	var scrollTimeout;
	$(window).on('scroll', function(){
		if(scrollTimeout){
			clearTimeout(scrollTimeout);
		}
		scrollTimeout = setTimeout(function(){
			updateActiveSection();
		}, 100);
	});

	updateActiveSection();
	$('#siteseo-reset-settings').on('click', function(e){
		e.preventDefault();
		
		if(confirm('Are you sure you want to reset all settings?')){
			$.ajax({
				url: siteseoAdminAjax.url,
				type: 'POST',
				data:{
					action: 'siteseo_reset_settings',
					nonce: siteseoAdminAjax.nonce
				},
				success: function(response){
					if(response.success){
						alert('Settings reset successfully.');
					} else{
						alert('Failed to reset settings: ' + response.data.message);
					}
				},
				error: function(xhr, status, error){
					alert('An error occurred: ' + error);
				}
			});
		} else{
			return false;
		}
	});

	
	/*** export settings***/
	$('#siteseo-export-btn').on('click', function(e){
		e.preventDefault();
		
		$.ajax({
			url: siteseoAdminAjax.url,
			type: 'POST',
			data:{
				action: 'siteseo_export_settings',
				nonce: siteseoAdminAjax.nonce
			},
			success: function(response){
				
				const blob = new Blob([JSON.stringify(response)], {type: 'application/json'});
				const url = window.URL.createObjectURL(blob);
				
				const a = document.createElement('a');
				a.style.display = 'none';
				a.href = url;
				a.download = 'siteseo-settings-export-' + new Date().toLocaleDateString('en-US').replace(/\//g, '-') + '.json';
				
				document.body.appendChild(a);
				a.click();
				
				window.URL.revokeObjectURL(url);
				document.body.removeChild(a);
			},
			error: function(xhr, status, error){
				console.error('Export failed:', error);
				alert('Export failed. Please try again.');
			}
		});
	});
	
	/** import settings**/
	$('#siteseo-import-btn').on('click', function (e){
		e.preventDefault();

		const fileInput = $('#siteseo-import-file')[0];

		if(!fileInput.files || !fileInput.files[0]){
			alert('Please select a file to import.');
			return;
		}

		const formData = new FormData();
		formData.append('action', 'siteseo_import_settings');
		formData.append('nonce', siteseoAdminAjax.nonce);
		formData.append('import_file', fileInput.files[0]);

		$('#siteseo-import-btn').prop('disabled', true);

		$.ajax({
			url: siteseoAdminAjax.url,
			type: 'POST',
			data: formData,
			processData: false,
			contentType: false,
			success: function (response){
				if(response.success){
					alert('Success: ' + response.data.message);
					fileInput.value = '';

					setTimeout(function(){
						location.reload();
					}, 1500);
				} else{
					alert('Error: ' + response.data.message);
				}
			},
			error: function(xhr, status, error){
				alert('Error: Import failed. Please try again.');
			},
			complete: function(){
				$('#siteseo-import-btn').prop('disabled', false);
			}
		});
	});

	//migration
	$(".siteseo-section-tool").hide();
    
    $("#siteseo-plugin-selector").on('change', function(){
        var selectedTool = $(this).val();
        $(".siteseo-section-tool").hide();
        if(selectedTool !== "none"){
            $("#" + selectedTool).show();
        }
    });

	// ajax migrate from others
	 $('button[id^="siteseo-"][id$="-migrate"]').on('click', function(){
        const button = $(this);
        const plugin = button.attr('id').replace('siteseo-', '').replace('-migrate', '');
        const spinner = button.next('.spinner');
        const log = button.siblings('.log');

        button.prop('disabled', true);
        spinner.addClass('is-active');
        log.empty();

        $.ajax({
            url: siteseoAdminAjax.url,
            type: 'POST',
            data: {
                action: 'siteseo_migrate_seo',
                plugin: plugin,
                nonce: siteseoAdminAjax.nonce
            },
            success: function(response){
                if(response.success){
                    log.html('<div class="notice notice-success">' + response.data.message + '</div>');
                } else{
                    log.html('<div class="notice notice-error">' + response.data.message + '</div>');
                }
            },
            error: function(){
                log.html('<div class="notice notice-error">Migration failed. Please try again.</div>');
            },
            complete: function(){
                button.prop('disabled', false);
                spinner.removeClass('is-active');
            }
        });
    });
    
	// Clean indexing history
	$('#siteseo-clear-history').on('click', function(e){
		e.preventDefault();
		$.ajax({
			url: siteseoAdminAjax.url,
			type: 'POST',
			data: {
				action: 'siteseo_clear_indexing_history',
				nonce: siteseoAdminAjax.nonce
			},
			success: function(response){
				location.reload();
			}
		});
	});
  
	// Response code table guilde
	$('.siteseo-show-details').next('.siteseo-response-code-table').hide();

	$('.siteseo-show-details').on('click', function(e){
		let description = $(this).next('.siteseo-response-code-table'),
		icon = $(this).find('.dash-icon'); 

		if(description.is(':visible')){
			description.hide();
			icon.removeClass('dashicons-arrow-up-alt2').addClass('dashicons-arrow-down-alt2');
		} else{
			description.show();
			icon.removeClass('dashicons-arrow-down-alt2').addClass('dashicons-arrow-up-alt2');
		}
	});
  
});PK��f\�](��
functions.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

function siteseo_admin_header(){
   \SiteSEO\Settings\Util::admin_header();
}

function siteseo_submit_button($value = ''){
	\SiteSEO\Settings\Util::submit_btn();
}

function siteseo_suggestions_variable(){
	return [
		'%%sep%%' => 'Separator',
		'%%sitetitle%%' => 'Site Title',
		'%%tagline%%' => 'Tagline',
		'%%post_title%%' => 'Post title',
		'%%post_excerpt%%' => 'Post excerpt',
		'%%post_content%%' => 'Post content / product description',
		'%%post_thumbnail_url%%' => 'Post thumbnail URL',
		'%%post_url%%' => 'Post url',
		'%%post_date%%' => 'Post date',
		'%%post_modified_date%%' => 'Post modified date',
		'%%post_author%%' => 'Post author',
		'%%post_category%%' => 'Post category',
		'%%post_tag%%' => 'Post_tag',
		'%%_category_title%%' => 'Category title',
		'%%_category_description%%' => 'Category description',
		'%%tag_title%%' => 'Tag title',
		'%%tag_description%%' => 'Tag description',
		'%%term_title%%' => 'Term title',
		'%%term_description%%' => 'Term description',
		'%%search_keywords%%' => 'Search keywords',
		'%%current_pagination%%' => 'Current number page',
		'%%page%%' => 'Page number with context',
		'%%cpt_plural%%' => 'Plural Post Type Archive name',
		'%%archive_title%%' => 'Archive_title',
		'%%archive_date%%' => 'Archive_date',
		'%%archive_date_day%%' => 'Day Archive date',
		'%%archive_date_month%%' => 'Month Archive title',
		'%%archive_date_month_name%%' => 'Month name Archive title',
		'%%archive_date_year%%' => 'Year Archive title',
		'%%_cf_your_custom_field_name%%' => 'Custom fields from post, page, post type and term taxonomy',
		'%%_ct_your_custom_taxonomy_slug%%' => 'Custom term taxonomy from post, page or post type',
		'%%wc_single_cat%%' => 'Single product category',
		'%%wc_single_tag%%' => 'Single product tag',
		'%%wc_single_short_desc%%' => 'Single product short description',
		'%%wc_single_price%%' => 'Single product price',
		'%%wc_single_price_exe_tax' => 'Single product price taxes excluded',
		'%%wc_sku%%' => 'Single SKU Product',
		'%%currentday%%' => 'Current day',
		'%%currentmonth%%' => 'Current month',
		'%%currentmonth_short%%' => 'Current month in 3 letter',
		'%%currentyear%%' => 'Current year',
		'%%currentdate%%' => 'Current date',
		'%%currenttime%%' => 'Current time',
		'%%author_first_name%%' => 'Author first name',
		'%%author_last_name%%' => 'Author last name',
		'%%author_website%%' => 'Author website',
		'%%author_nickname%%' => 'Author nickname',
		'%%author_bio%%' => 'Author biography',
		'%%_ucf_your_user_meta%%' => 'Custom User Meta',
		'%%currentmonth_num%%' => 'Current month in digital format',
		'%%target_keyword%%' => 'Target keywords',
		'%%wc_parent_cat%%' => 'Product Single Parent Category',
	];
}

function siteseo_suggestion_button(){

	$suggest_variable = siteseo_suggestions_variable();

	if(empty($suggest_variable)){
		return;
	}

	echo '<button class="tag-select-btn"><span id="icon" class="dashicons dashicons-arrow-down-alt2"></span></button>
	<div class="siteseo-suggestions-wrapper" style="position:relative;">
	<div class="siteseo-suggetion">
		<div class="siteseo-search-box-container">
			<input type="text" class="siteseo-search-box" placeholder="Search a tag...">
		</div>
		<div class="siteseo-suggestions-container">';
		foreach($suggest_variable as $key =>$value){
			echo '<div class="section">'.esc_html($value).'
				<div class="item">
					<div class="tag">'.esc_html($key).'</div>
				</div>
			</div>';
		}
	echo '</div>
	</div>
	</div>';
}

function siteseo_suggestion_button_metabox(){
    $suggest_variable = siteseo_suggestions_variable();

    if(empty($suggest_variable)){
        return;
    }

    return '<button class="siteseo-tag-select-btn" type="button">
            <span id="icon" class="dashicons dashicons-arrow-down-alt2"></span>
        </button>
		<div class="siteseo-suggestions-wrapper" style="position:relative;">
        <div class="siteseo-suggetion">
            <div class="siteseo-search-box-container">
                <input type="text" class="search-box" placeholder="Search a tag...">
            </div>
            <div class="siteseo-suggestions-container">' .
            implode('', array_map(function($key, $value){
                return '<div class="section">'.esc_html($value).'
                    <div class="item">
                        <div class="tag">'.esc_html($key).'</div>
                    </div>
                </div>';
            }, array_keys($suggest_variable), $suggest_variable)). 
            '</div>
        </div>
	</div>';
}

function siteseo_get_docs_links(){
	$siteseo_docs = [];

	$siteseo_docs = [
		'page_speed' => [
			'api' => SITESEO_DOCS . 'api-cli-dev/add-your-google-page-speed-insights-api-key-to-siteseo/',
			'google' => 'https://console.cloud.google.com/apis/library/pagespeedonline.googleapis.com',
		]
	];
	
	return $siteseo_docs;
}

function siteseo_universal_assets(){
	global $siteseo, $post;
	
	$post_id = isset($post->ID) ? $post->ID : get_the_ID();
	
	if(!current_user_can('edit_post', $post_id)){
		return;
	}

	// Checking if it is a block editor
	if(function_exists('get_current_screen')){
		$screen = get_current_screen();
		
		if(!empty($screen) && method_exists($screen, 'is_block_editor') && $screen->is_block_editor() === true){
			if(empty($siteseo->advanced_settings['appearance_universal_metabox'])){
				return;
			}
			
			$is_gutenberg = true;
		}
	}

	if (
		!empty($is_gutenberg) ||
		isset($_GET['fl_builder']) ||
		isset($_GET['elementor-preview']) ||
		isset($_GET['ct_builder']) ||
		isset($_GET['vc_editable']) ||
		isset($_GET['brizy_edit']) ||
		isset($_GET['tve']) ||
		isset($_GET['pagelayer-live']) ||
		(!empty(get_queried_object_id()) && is_admin_bar_showing()) // To show when user is viewing the page as a admin
		&& !is_category() && !is_tax() && !is_tag() // exclude
    ) {
		wp_enqueue_script('siteseo-universal-metabox', SITESEO_ASSETS_URL . '/js/universal-metabox.js', ['jquery'], SITESEO_VERSION);
		wp_localize_script('siteseo-universal-metabox', 'siteseo_universal', [
			'asset_url' => SITESEO_ASSETS_URL,
			'post_id' => $post_id,
			'site_url' => site_url(),
			'metabox_url' => admin_url('admin.php?page=siteseo-metabox-wizard'),
		]);

		if(!defined('SITEPAD') && defined('SITESEO_PRO_VERSION') && class_exists('\SiteSEOPro\AI')){
			add_action('wp_footer', '\SiteSEOPro\AI::modal');
		}
	}
}

function siteseo_post_types(){
	
	$args = ['show_ui' => true, 'public'  => true];

	$post_types = get_post_types($args, 'objects', 'and');
	unset(
		$post_types['attachment'],
		$post_types['elementor_library'],
		$post_types['customer_discount'],
		$post_types['cuar_private_file'],
		$post_types['cuar_private_page'],
		$post_types['ct_template'],
		$post_types['e-floating-buttons'],
		$post_types['pagelayer-template'],
		$post_types['hostim_footer'],
		$post_types['mega_menu']
	);
	
	return apply_filters('siteseo_post_types', $post_types);
	
}

function siteseo_user_can($cap){
	return current_user_can('manage_options') || current_user_can('siteseo_'. $cap);
}

function siteseo_user_can_metabox(){
	if(!is_user_logged_in()){
		return false;
	}
	
	global $siteseo;

	$metabox_roles = !empty($siteseo->advanced_settings['security_metaboxe_role']) ? $siteseo->advanced_settings['security_metaboxe_role'] : [];

	$user = wp_get_current_user();
	$user_role = current($user->roles);

	if(array_key_exists($user_role, $metabox_roles)){
		return false;
	}
	
	return true;
}

function siteseo_remove_elementor_description_meta_tag(){
	remove_action('wp_head', 'hello_elementor_add_description_meta_tag');
}

function siteseo_plugin_update_notice_filter($plugins = []){
	$plugins['siteseo/siteseo.php'] = 'SiteSEO';
	return $plugins;
}PK��f\����**main/imageseo.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class ImageSeo{

	static function init(){
		global $siteseo;
		
		if(empty($siteseo->setting_enabled['toggle-advanced'])){
			return; // toggle disable
		}
		
		if(!empty($siteseo->advanced_settings['advanced_attachments'])){
			add_action('template_redirect', '\SiteSEO\ImageSeo::redirect_attachment_to_parent');
		}

		if(!empty($siteseo->advanced_settings['advanced_clean_filename'])){
			add_filter('sanitize_file_name', '\SiteSEO\ImageSeo::clean_media_filename', 10, 1);
		}

		if(!empty($siteseo->advanced_settings['advanced_image_auto_alt_editor']) ||
			!empty($siteseo->advanced_settings['advanced_image_auto_caption_editor']) ||
			!empty($siteseo->advanced_settings['advanced_image_auto_desc_editor']) || 
			!empty($siteseo->advanced_settings['advanced_image_auto_title_editor'])
		){
			add_action('add_attachment', '\SiteSEO\ImageSeo::set_image_content');
		}
	}
	
	static function set_image_content($attachment_id){
		global $siteseo;

		if(!wp_attachment_is_image($attachment_id)){
			return;
		}
		
		$attachment = get_post($attachment_id);
		$file_name = pathinfo($attachment->guid, PATHINFO_FILENAME);
		$file_name = sanitize_file_name($file_name);
		$file_name = ucwords(str_replace(['-', '_'], ' ', $file_name));
		
		// WooCommerce product img
		$is_woocommerce_product_image = false;
		$product_title = '';
		
		$parent_id = $attachment->post_parent;
		if(!empty($parent_id)){
			$parent_post = get_post($parent_id);
			if(!empty($parent_post) && $parent_post->post_type === 'product'){
				$is_woocommerce_product_image = true;
				$product_title = get_the_title($parent_id);
			}
		}
		
		$file_name = $is_woocommerce_product_image ? $product_title : $file_name;
		
		// Adding alt text to the image
		if(!empty($siteseo->advanced_settings['advanced_image_auto_alt_editor'])){
			update_post_meta($attachment_id, '_wp_attachment_image_alt', $file_name);
		}

		$options = [];
		$options['ID'] = $attachment_id;

		// Adding Title to the image
		if(!empty($siteseo->advanced_settings['advanced_image_auto_title_editor'])){
			$options['post_title'] = $file_name;
		}

		// Adding Img Caption
		if(!empty($siteseo->advanced_settings['advanced_image_auto_caption_editor'])){
			$options['post_content'] = $file_name;
		}

		// Adding Img Caption
		if(!empty($siteseo->advanced_settings['advanced_image_auto_desc_editor'])){
			$options['post_excerpt'] = $file_name;
		}

		if(count($options) > 1){
			wp_update_post($options);
		}
	}
	
	static function clean_media_filename($filename){
		$filename = strtolower($filename);		
		$filename = preg_replace('/[^a-z0-9-._]+/', '-', $filename);
		$filename = trim($filename, '-.');

		return $filename;
	}

	static function redirect_attachment_to_parent(){

		if(is_attachment()){
 
			$attachment_id = get_queried_object_id();
			$parent_id = wp_get_post_parent_id($attachment_id);

			if($parent_id){
				wp_redirect(get_permalink($parent_id));

			}else{
				wp_redirect(home_url());
			}

			exit; 
		}
	}
}
PK��f\�6�%	�	�main/settings/statistics.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO\Settings;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Statistics{

	static function init(){
		global $siteseo;

		$current_tab = isset($_GET['tab']) ? sanitize_key(wp_unslash($_GET['tab'])) : 'tab_dashbord';

		wp_enqueue_script('siteseo-chart-js', SITESEO_ASSETS_URL . '/js/chart.umd.min.js', [], SITESEO_VERSION, ['strategy' => 'defer', 'in_footer' => true]);
		wp_enqueue_script('siteseo-gsc-charts', SITESEO_ASSETS_URL . '/js/gsc-charts.js', ['jquery', 'siteseo-chart-js'], SITESEO_VERSION, ['strategy' => 'defer', 'in_footer' => true]);

		$saved_data = get_option('siteseo_search_console_data', []);
		wp_localize_script('siteseo-gsc-charts', 'siteseo_chart_data', $saved_data);

		if(isset($_GET['siteseo_auth_code']) && class_exists('\SiteSEOPro\GoogleConsole') && method_exists('\SiteSEOPro\GoogleConsole', 'generate_tokens')){
			\SiteSEOPro\GoogleConsole::generate_tokens();
		}

		if(isset($_GET['siteseo_auth_code']) && class_exists('\SiteSEOPro\GoogleConsole')){
			add_action('admin_footer', '\SiteSEO\Settings\Statistics::connect_site_dialogbox');
		}

		$site_connected = false;
		if(class_exists('\SiteSEOPro\GoogleConsole') && method_exists('\SiteSEOPro\GoogleConsole', 'is_connected')){
			$site_connected = \SiteSEOPro\GoogleConsole::is_connected();
		}

		$statistics_subtabs = [
			'tab_dashbord' => esc_html__('Dashboard', 'siteseo'),
			'tab_seo_statistics' => esc_html__('Site Search Traffic', 'siteseo'),
			'tab_keyword_rank' => esc_html__('Keyword Rank Tracker', 'siteseo'),
			'tab_content_ranking' => esc_html__('Content Ranking', 'siteseo'),
			'tab_audience' => esc_html__('Audience Overview', 'siteseo'),
		];

		echo'<div id="siteseo-root" class="siteseo-search-console">';
		Util::admin_header();

		$show_sample_data = isset($_GET['sample_data']) && $_GET['sample_data'] === '1';

		if(!class_exists('\SiteSEOPro\GoogleConsole') && !$show_sample_data){
			echo'<div class="siteseo-blur-overlay"></div>
			<div class="siteseo-pro-notice-center">
				<div class="siteseo-pro-notice-content">
					<span class="dashicons dashicons-lock siteseo-lock-icon"></span>
					<h2>'.esc_html__('Search Console Pro Feature', 'siteseo').'</h2>
					<p>'.esc_html__('Upgrade to PRO to unlock Google Search Console integration and access real-time search analytics data.', 'siteseo').'</p>
					<div class="siteseo-option siteseo-pro-notice-buttons">
					<a href="https://siteseo.io/pricing" class="siteseo-option btnPrimary" target="_blank">' . esc_html__('Buy Pro', 'siteseo') . '</a>
					<a href="'.esc_url(add_query_arg('sample_data', '1')).'" class="siteseo-option btnSecondary">'.esc_html__('Explore Sample Data', 'siteseo').'</a>
				</div>
			</div>
			</div>';
		} elseif(class_exists('\SiteSEOPro\GoogleConsole') && !$show_sample_data && empty($site_connected)){
			echo'<div class="siteseo-blur-overlay"></div>
			<div class="siteseo-pro-notice-center">
				<div class="siteseo-pro-notice-content">
					<span class="dashicons dashicons-admin-links siteseo-link-icon"></span>
					<h2>'.esc_html__('Search Console statistics', 'siteseo').'</h2>
					<p>'.esc_html__('Please connect your Google Search Console account to unlock real-time search analytics data.', 'siteseo').'</p>
					<div class="siteseo-option siteseo-pro-notice-buttons">
					<form method="post">';
					wp_nonce_field('siteseo_pro_connect_google');
					echo '<input type="hidden" name="redirect_type" value="settings">
						<button type="submit" name="siteseo_pro_connect_btn" class="siteseo-option btnPrimary siteseo-connect-btn">'.esc_html__('Connect Search Console', 'siteseo') .'</button>
					</form>
					<a href="'.esc_url(add_query_arg('sample_data', '1')).'" class="siteseo-option btnSecondary">'.esc_html__('Explore Sample Data', 'siteseo').'</a>
				</div>
			</div>
			</div>';
		}

		echo'<form method="post" id="siteseo-form" class="siteseo-option" name="siteseo-flush">
		<div class="siteseo-toggle-cnt"><span id="siteseo-tab-title"><strong>'.esc_html__('Google Search Console Statistics', 'siteseo').'</strong></span></div>';

		if(!empty($site_connected)){

			if(class_exists('\SiteSEOPro\GoogleConsole') && method_exists('\SiteSEOPro\GoogleConsole', 'get_site_url')){
				$site_url = \SiteSEOPro\GoogleConsole::get_site_url();
			}

			if(!empty($site_url)){
				echo'<div class="siteseo-statistics-wrapper">
					<span class="siteseo-statistics-sites">Site: '.(strpos($site_url, 'sc-domain:') === 0 ? sanitize_text_field($site_url) : esc_url($site_url)).' <span id="siteseo-refresh-search-stats" class="dashicons dashicons-update" title="'.esc_attr__('Update Stats', 'siteseo').'"></span></span>
					<span class="siteseo-statistics-disconnect"><span class="dashicons dashicons-migrate"></span>'.esc_html__('Disconnect', 'siteseo').'</span>
					<span class="siteseo-statistics-data-range">'.esc_html__('[Last 90 days data]', 'siteseo').'</span>
				</div>';
			}
		}

		echo'<div id="siteseo-tabs" class="wrap">
		<div class="siteseo-nav-tab-wrapper">';

		foreach($statistics_subtabs as $tab_key => $tab_caption){
			$active_class = ($current_tab === $tab_key) ? ' siteseo-nav-tab-active' : '';
			echo'<a id="' . esc_attr($tab_key) . '-tab" class="siteseo-nav-tab' . esc_attr($active_class) . '" data-tab="' . esc_attr($tab_key) . '">' . esc_html($tab_caption) . '</a>';
		}

		echo'</div>
		<div class="tab-content-wrapper">
		<div class="siteseo-tab' .($current_tab == 'tab_dashbord' ? ' active' : '').'" id="tab_dashbord" style="display: none;">';
		self::dashbord_tab();
		echo'</div>
		<div class="siteseo-tab' .($current_tab == 'tab_seo_statistics' ? ' active' : '').'" id="tab_seo_statistics" style="display: none;">';
		self::seo_statistics_tab();
		echo'</div>
		<div class="siteseo-tab' .($current_tab == 'tab_keyword_rank' ? ' active' : '').'" id="tab_keyword_rank" style="display: none;">';
		self::keyword_ranking_tab();
		echo'</div>
		<div class="siteseo-tab' .($current_tab == 'tab_content_ranking' ? ' active' : '').'" id="tab_content_ranking" style="display: none;">';
		self::content_ranking_tab();
		echo'</div>
		<div class="siteseo-tab '.($current_tab =='tab_audience' ? ' active' : '').'" id="tab_audience" style="display:none;">';
		self::audience_tab();
		echo'</div>
		</div>';
		echo'</form></div>';
	}

	static function fetch_data(){
		$is_connected = '';

		if(class_exists('\SiteSEOPro\GoogleConsole') && method_exists('\SiteSEOPro\GoogleConsole', 'is_connected')){
			$is_connected = \SiteSEOPro\GoogleConsole::is_connected();
		}

		$analytics_data = get_option('siteseo_search_console_data', []);

		if(empty($analytics_data) && empty($is_connected)){
			// Show sample data when not connected
			return [
				'metrics' => self::sample_metrics_data(),
				'top_pages' => self::sample_top_pages(),
				'top_loss_pages' => array_slice(self::sample_top_pages(), 0, 3), // Sample loss pages
				'top_winning_pages' => array_slice(self::sample_top_pages(), 3, 3), // Sample winning pages
				'keywords' => self::sample_keywords(),
				'top_winning_keywords' => array_slice(self::sample_keywords(), 0, 3), // Sample winning keywords
				'top_loss_keywords' => array_slice(self::sample_keywords(), 3, 2), // Sample loss keywords
				'content_ranking' => self::sample_content_ranking(),
				'country_data' => self::sample_country_data(), 
				'device_data' => self::sample_device_data(),
				'is_sample' => true
			];
		}
		
		return [
			'metrics' => isset($analytics_data['metrics']) ? $analytics_data['metrics'] : [
				'impressions' => [
					'current' => '0',
					'change' => '0',
					'trend' => 'neutral',
					'chart_data' => []
				],
				'clicks' => [
					'current' => '0',
					'change' => '0',
					'trend' => 'neutral',
					'chart_data' => []
				],
				'ctr' => [
					'current' => '0%',
					'change' => '0',
					'trend' => 'neutral',
					'chart_data' => []
				],
				'position' => [
					'current' => '0',
					'change' => '0',
					'trend' => 'neutral',
					'chart_data' => []
				]
			],
			'top_pages' => isset($analytics_data['top_pages']) ? array_slice($analytics_data['top_pages'], 0, 5) : [],
			'top_loss_pages' => isset($analytics_data['top_loss_pages']) ? array_slice($analytics_data['top_loss_pages'], 0, 5) : [],
			'top_winning_pages' => isset($analytics_data['top_winning_pages']) ? array_slice($analytics_data['top_winning_pages'], 0, 5) : [],
			'keywords' => isset($analytics_data['top_keywords']) ? array_slice($analytics_data['top_keywords'], 0, 5) : [],
			'top_winning_keywords' => isset($analytics_data['top_winning_keywords']) ? array_slice($analytics_data['top_winning_keywords'], 0, 5) : [],
			'top_loss_keywords' => isset($analytics_data['top_loss_keywords']) ? array_slice($analytics_data['top_loss_keywords'], 0, 5) : [],
			'content_ranking' => isset($analytics_data['content_ranking']) ? $analytics_data['content_ranking'] : [],
			'country_data' => isset($analytics_data['country_audience']) ? $analytics_data['country_audience'] : [],
			'device_data' => isset($analytics_data['device_audience']) ? $analytics_data['device_audience'] : [],
			'is_sample' => false
		];
	}

	static function dashbord_tab(){	
		self::connect_notices();

		$data = self::fetch_data();
		$metrics = $data['metrics'];
		$top_pages = $data['top_pages'];
		$top_loss_pages = $data['top_loss_pages'];
		$top_winning_pages = $data['top_winning_pages'];
		$keywords = $data['keywords'];
		$top_winning_keywords = $data['top_winning_keywords'];
		$top_loss_keywords = $data['top_loss_keywords'];

		echo'<div class="siteseo-stats-container">
			<h2 class="siteseo-stats-title">'.esc_html__('Search Performance', 'siteseo').'</h2>
			<hr class="siteseo-stats-separator">

			<div class="siteseo-dashboard-grid">
				<div class="siteseo-metric-card">
					<div class="siteseo-metric-header">
						<span class="siteseo-metric-title">'.esc_html__('Search Impressions', 'siteseo').'</span>
					</div>
					
					<div class="siteseo-metric-value-row">
						<span class="siteseo-metric-value">'.esc_html($metrics['impressions']['current']).'</span>
							<span class="siteseo-metric-change '.($metrics['impressions']['trend'] == 'negative' ? 'siteseo-change-negative' : ($metrics['impressions']['trend'] == 'positive' ? 'siteseo-change-positive' : '')).'">
								'.($metrics['impressions']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-'.($metrics['impressions']['trend'] == 'negative' ? 'down' : 'up').'"></span>' : '').'
								'.esc_html($metrics['impressions']['change']).'
							</span>
					</div>
						
					<div class="siteseo-chart-container">
						<canvas id="siteseo_impressions_chart" data-sample="'.($data['is_sample'] ? '1' : '0').'"></canvas>
					</div>
				</div>

					<div class="siteseo-metric-card">
						<div class="siteseo-metric-header">
							<span class="siteseo-metric-title">'.esc_html__('Total Clicks', 'siteseo').'</span>
						</div>
						
						<div class="siteseo-metric-value-row">
							<span class="siteseo-metric-value">'.esc_html($metrics['clicks']['current']).'</span>
							<span class="siteseo-metric-change '.($metrics['clicks']['trend'] == 'negative' ? 'siteseo-change-negative' : ($metrics['clicks']['trend'] == 'positive' ? 'siteseo-change-positive' : '')).'">
								'.($metrics['clicks']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-'.($metrics['clicks']['trend'] == 'negative' ? 'down' : 'up').'"></span>' : '').'
								'.esc_html($metrics['clicks']['change']).'
							</span>
						</div>
						
						<div class="siteseo-chart-container">
							<canvas id="siteseo_clicks_chart" data-sample="'.($data['is_sample'] ? '1' : '0').'"></canvas>
						</div>
					</div>

					<div class="siteseo-metric-card">
						<div class="siteseo-metric-header">
							<span class="siteseo-metric-title">'.esc_html__('Avg. CTR', 'siteseo').'</span>
						</div>
						<div class="siteseo-metric-value-row">
							<span class="siteseo-metric-value">'.esc_html($metrics['ctr']['current']).'</span>
							<span class="siteseo-metric-change '.($metrics['ctr']['trend'] == 'negative' ? 'siteseo-change-negative' : ($metrics['ctr']['trend'] == 'positive' ? 'siteseo-change-positive' : '')).'">
								'.($metrics['ctr']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-'.($metrics['ctr']['trend'] == 'negative' ? 'down' : 'up').'"></span>' : '').'
								'.esc_html($metrics['ctr']['change']).'
							</span>
						</div>
						<div class="siteseo-chart-container">
							<canvas id="siteseo_ctr_chart" data-sample="'.($data['is_sample'] ? '1' : '0').'"></canvas>
						</div>
					</div>

					<div class="siteseo-metric-card">
						<div class="siteseo-metric-header">
							<span class="siteseo-metric-title">'.esc_html__('Avg. Position', 'siteseo').'</span>
						</div>
						<div class="siteseo-metric-value-row">
							<span class="siteseo-metric-value">'.esc_html($metrics['position']['current']).'</span>
							<span class="siteseo-metric-change '.($metrics['position']['trend'] == 'negative' ? 'siteseo-change-negative' : ($metrics['position']['trend'] == 'positive' ? 'siteseo-change-positive' : '')).'">
								'.($metrics['position']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-'.($metrics['position']['trend'] == 'negative' ? 'down' : 'up').'"></span>' : '').'
								'.esc_html($metrics['position']['change']).'
							</span>
						</div>
						<div class="siteseo-chart-container">
							<canvas id="siteseo_position_chart" data-sample="'.($data['is_sample'] ? '1' : '0').'"></canvas>
						</div>
					</div>
				</div>
			</div>';
		
		if(!empty($top_pages) || $data['is_sample']){

			echo'<div class="siteseo-stats-container">
				<h2 class="siteseo-stats-title">'.esc_html__('Content Performance ( Top 5 )', 'siteseo').'</h2>
				<div class="siteseo-inner-tabs-wrap">
					<input type="radio" id="siteseo-statistics-top-page" name="siteseo-inner-tabs-pages" checked>
					<input type="radio" id="siteseo-statistics-top-loss" name="siteseo-inner-tabs-pages">
					<input type="radio" id="siteseo-statistics-top-winning" name="siteseo-inner-tabs-pages">
					
					<ul class="siteseo-inner-tabs">
						<li class="siteseo-inner-tab"><label for="siteseo-statistics-top-page">'.esc_html__('Top Pages', 'siteseo').'</label></li>
						<li class="siteseo-inner-tab"><label for="siteseo-statistics-top-loss">'.esc_html__('Top loss', 'siteseo').'</label></li>
						<li class="siteseo-inner-tab"><label for="siteseo-statistics-top-winning">'.esc_html__('Top winning', 'siteseo').'</label></li>
					</ul>
						
					<div class="siteseo-inner-tab-content">	
						<table class="wp-list-table widefat fixed striped siteseo-history-table">
							<thead><tr>
								<th>'.esc_html__('Title', 'siteseo').'</th>
								<th>'.esc_html__('Score', 'siteseo').'</th>
								<th>'.esc_html__('Indexed', 'siteseo').'</th>
								<th>'.esc_html__('Clicks', 'siteseo').'</th>
								<th>'.esc_html__('Impressions', 'siteseo').'</th>
								<th>'.esc_html__('Position', 'siteseo').'</th>
								<th>'.esc_html__('Diff', 'siteseo').'</th>
							</tr>
							</thead>
						<tbody>';

						foreach($top_pages as $page){
							
							$score = $page['truseo_score'];
							
							if($score >= 80){
								$badge_class = 'siteseo-gsc-score-good';
							} elseif ($score >= 50){
								$badge_class = 'siteseo-gsc-score-avg';
							} else{
								$badge_class = 'siteseo-gsc-score-bad';
							}
							
							echo'<tr>
								<td>'.esc_html($page['title']).'</td>
								<td><span class="'.esc_attr($badge_class).'">'.esc_html($page['truseo_score']).'/100</span></td>
								<td><span class="dashicons '.($page['indexed'] ? 'dashicons-yes-alt siteseo-statistics-index-icon' : 'dashicons-dismiss siteseo-statistics-noindex-icon').'"></span></td>
								<td>'.esc_html($page['clicks']).'</td>
								<td>'.esc_html($page['impressions']).'</td>
								<td>'.esc_html($page['position']).'</td>
								<td style="color:'.(isset($page['diff']) && strpos($page['diff'], '+') === 0 ? '#28a745' : '#dc3545').';">'.esc_html($page['diff']).'</td>
							</tr>';
						}
						
						if(empty($top_pages) && !$data['is_sample']){
							echo '<tr><td colspan="7" style="text-align:center;">'.esc_html__('No data available yet', 'siteseo').'</td></tr>';
						}
						
						echo'</tbody></table>
					</div>
					
					<div class="siteseo-inner-tab-content">
						 <table class="wp-list-table widefat fixed striped siteseo-history-table">
							<thead><tr>
								<th>'.esc_html__('Title', 'siteseo').'</th>
								<th>'.esc_html__('Score', 'siteseo').'</th>
								<th>'.esc_html__('Indexed', 'siteseo').'</th>
								<th>'.esc_html__('Clicks', 'siteseo').'</th>
								<th>'.esc_html__('Impressions', 'siteseo').'</th>
								<th>'.esc_html__('Position', 'siteseo').'</th>
								<th>'.esc_html__('Diff', 'siteseo').'</th>
							</tr>
							</thead>
						<tbody>';

						// Use top_loss_pages instead of top_pages
						foreach($top_loss_pages as $page){
							
							$score = $page['truseo_score'];
							
							if($score >= 80){
								$badge_class = 'siteseo-gsc-score-good';
							} elseif($score >= 50){
								$badge_class = 'siteseo-gsc-score-avg';
							} else{
								$badge_class = 'siteseo-gsc-score-bad';
							}
							
							echo'<tr>
								<td>'.esc_html($page['title']).'</td>
								<td><span class="'.esc_attr($badge_class).'">'.esc_html($page['truseo_score']).'/100</span></td>
								<td><span class="dashicons '.($page['indexed'] ? 'dashicons-yes-alt siteseo-statistics-index-icon' : 'dashicons-dismiss siteseo-statistics-noindex-icon').'"></span></td>
								<td>'.esc_html($page['clicks']).'</td>
								<td>'.esc_html($page['impressions']).'</td>
								<td>'.esc_html($page['position']).'</td>
								<td style="color:#dc3545;">'.esc_html($page['diff']).'</td>
							</tr>';
						}
						
						if(empty($top_loss_pages) && !$data['is_sample']){
							echo '<tr><td colspan="7" style="text-align:center;">'.esc_html__('No loss pages data available', 'siteseo').'</td></tr>';
						}

						echo'</tbody></table>
					</div>
					
					<div class="siteseo-inner-tab-content">
						 <table class="wp-list-table widefat fixed striped siteseo-history-table">
							<thead><tr>
								<th>'.esc_html__('Title', 'siteseo').'</th>
								<th>'.esc_html__('Score', 'siteseo').'</th>
								<th>'.esc_html__('Indexed', 'siteseo').'</th>
								<th>'.esc_html__('Clicks', 'siteseo').'</th>
								<th>'.esc_html__('Impressions', 'siteseo').'</th>
								<th>'.esc_html__('Position', 'siteseo').'</th>
								<th>'.esc_html__('Diff', 'siteseo').'</th>
							</tr>
							</thead>
						<tbody>';

						// Use top_winning_pages instead of top_pages
						foreach($top_winning_pages as $page){
							$score = $page['truseo_score'];
							if($score >= 80){
								$badge_class = 'siteseo-gsc-score-good';
							} elseif($score >= 50){
								$badge_class = 'siteseo-gsc-score-avg';
							} else{
								$badge_class = 'siteseo-gsc-score-bad';
							}
							
							echo'<tr>
								<td>'.esc_html($page['title']).'</td>
								<td><span class="'.esc_attr($badge_class).'">'.esc_html($page['truseo_score']).'/100</span></td>
								<td><span class="dashicons '.($page['indexed'] ? 'dashicons-yes-alt siteseo-statistics-index-icon' : 'dashicons-dismiss siteseo-statistics-noindex-icon').'"></span></td>
								<td>'.esc_html($page['clicks']).'</td>
								<td>'.esc_html($page['impressions']).'</td>
								<td>'.esc_html($page['position']).'</td>
								<td style="color:#28a745;">'.esc_html($page['diff']).'</td>
							</tr>';
						}
						
						if(empty($top_winning_pages) && !$data['is_sample']){
							echo '<tr><td colspan="7" style="text-align:center;">'.esc_html__('No winning pages data available', 'siteseo').'</td></tr>';
						}
						
						echo'</tbody></table>
					</div>
				</div>
			</div>';
		}
		
		if(!empty($keywords) || $data['is_sample']){
			echo'<div class="siteseo-stats-container">
				<h2 class="siteseo-stats-title">'.esc_html__('Keyword Rankings ( Top 5 )', 'siteseo').'</h2>

				<div class="siteseo-inner-tabs-wrap">
					<input type="radio" id="siteseo-statistics-top-keywords" name="siteseo-inner-tabs-keywords" checked>
					<input type="radio" id="siteseo-statistics-winning-keywords" name="siteseo-inner-tabs-keywords">
					<input type="radio" id="siteseo-statistics-loss-keywords" name="siteseo-inner-tabs-keywords">

					<ul class="siteseo-inner-tabs">
						<li class="siteseo-inner-tab"><label for="siteseo-statistics-top-keywords">'.esc_html__('Top Keywords', 'siteseo').'</label></li>
						<li class="siteseo-inner-tab"><label for="siteseo-statistics-winning-keywords">'.esc_html__('Top Winning', 'siteseo').'</label></li>
						<li class="siteseo-inner-tab"><label for="siteseo-statistics-loss-keywords">'.esc_html__('Top LOSS', 'siteseo').'</label></li>
					</ul>
						
				<div class="siteseo-inner-tab-content">	

					<table class="wp-list-table widefat fixed striped siteseo-history-table">
						<thead>
							<tr>
								<th>'.esc_html__('Keyword', 'siteseo').'</th>
								<th>'.esc_html__('Clicks', 'siteseo').'</th>
								<th>'.esc_html__('Impressions', 'siteseo').'</th>
								<th>'.esc_html__('CTR', 'siteseo').'</th>
								<th>'.esc_html__('Position', 'siteseo').'</th>
							</tr>
						</thead>
						<tbody>';
						
						foreach($keywords as $keyword){
							echo'<tr>
								<td class="siteseo-table-row">'.esc_html($keyword['keyword']).'</td>
								<td style="font-weight:bold;">'.esc_html($keyword['clicks']).'</td>
								<td>'.esc_html($keyword['impressions']).'</td>
								<td>'.esc_html($keyword['ctr']).'</td>
								<td>'.esc_html($keyword['position']).'</td>
							</tr>';
						}
						
						if(empty($keywords) && !$data['is_sample']){
							echo'<tr><td colspan="5" style="text-align:center;">'.esc_html__('No data available yet', 'siteseo').'</td></tr>';
						}
						
						echo'</tbody>
					</table>
				</div>
				<div class="siteseo-inner-tab-content">
					<table class="wp-list-table widefat fixed striped siteseo-history-table">
						<thead>
							<tr>
								<th>'.esc_html__('Keyword', 'siteseo').'</th>
								<th>'.esc_html__('Points', 'siteseo').'</th>
								<th>'.esc_html__('Clicks', 'siteseo').'</th>
								<th>'.esc_html__('Position', 'siteseo').'</th>
							</tr>
						</thead>
						<tbody>';
						
						// Use top_winning_keywords instead of keywords
						foreach($top_winning_keywords as $keyword){
							echo'<tr>
								<td class="siteseo-table-row">'.esc_html($keyword['keyword']).'</td>
								<td style="color:#28a745;font-weight:bold;">'.esc_html($keyword['points']).'</td>
								<td>'.esc_html($keyword['clicks']).'</td>
								<td>'.esc_html($keyword['position']).'</td>
							</tr>';
						}
						
						if(empty($top_winning_keywords) && !$data['is_sample']){
							echo'<tr><td colspan="4" style="text-align:center;">'.esc_html__('No winning keywords data available', 'siteseo').'</td></tr>';
						}

						echo'</tbody>
					</table>
				</div>

				<div class="siteseo-inner-tab-content">
					<table class="wp-list-table widefat fixed striped siteseo-history-table">
						<thead>
							<tr>
								<th>'.esc_html__('Keyword', 'siteseo').'</th>
								<th>'.esc_html__('Points', 'siteseo').'</th>
								<th>'.esc_html__('Clicks', 'siteseo').'</th>
								<th>'.esc_html__('Position', 'siteseo').'</th>	   
							</tr>
						</thead>
						<tbody>';

						// Use top_loss_keywords instead of keywords
						foreach($top_loss_keywords as $keyword){
							echo'<tr>
								<td class="siteseo-table-row">'.esc_html($keyword['keyword']).'</td>
								<td style="color:#dc3545;font-weight:bold;">'.esc_html($keyword['points']).'</td>
								<td>'.esc_html($keyword['clicks']).'</td>
								<td>'.esc_html($keyword['position']).'</td>
							</tr>';
						}

						if(empty($top_loss_keywords) && !$data['is_sample']){
							echo'<tr><td colspan="4" style="text-align:center;">'.esc_html__('No loss keywords data available', 'siteseo').'</td></tr>';
						}

						echo'</tbody>
					</table>
				</div>
				</div>
			</div>';
		}
	}

	static function seo_statistics_tab(){
		self::connect_notices();

		$data = self::fetch_data();
		$metrics = $data['metrics'];
		$top_pages = $data['top_pages'];
		
		echo'<div class="siteseo-stats-container">
			<h2 class="siteseo-stats-title">'.esc_html__('Site Search Traffic', 'siteseo').'</h2>
			<hr class="siteseo-stats-separator">
			<ul class="siteseo-stats-list">
				<li class="siteseo-stat-item">
					<div class="siteseo-stat-header">
						<span class="siteseo-stat-label">'.esc_html__('Search Impressions', 'siteseo').'</span>
					</div>
					<div class="siteseo-stat-value-group">
						<span class="siteseo-stat-value">'.esc_html($metrics['impressions']['current']).'</span>
						<span class="siteseo-stat-change '.($metrics['impressions']['trend'] == 'negative' ? 'negative' : ($metrics['impressions']['trend'] == 'positive' ? 'positive' : '')).'">
							'.($metrics['impressions']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-'.($metrics['impressions']['trend'] == 'negative' ? 'down' : 'up').'"></span>' : '').'
							'.esc_html($metrics['impressions']['change']).'
						</span>
					</div>
				</li>
				<li class="siteseo-stat-item">
					<div class="siteseo-stat-header">
						<span class="siteseo-stat-label">'.esc_html__('Total Clicks', 'siteseo').'</span>
					</div>
					<div class="siteseo-stat-value-group">
						<span class="siteseo-stat-value">'.esc_html($metrics['clicks']['current']).'</span>
						<span class="siteseo-stat-change '.($metrics['clicks']['trend'] == 'negative' ? 'negative' : ($metrics['clicks']['trend'] == 'positive' ? 'positive' : '')).'">
							'.($metrics['clicks']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-'.($metrics['clicks']['trend'] == 'negative' ? 'down' : 'up').'"></span>' : '').'
							'.esc_html($metrics['clicks']['change']).'
						</span>
					</div>
				</li>
				<li class="siteseo-stat-item">
					<div class="siteseo-stat-header">
						<span class="siteseo-stat-label">'.esc_html__('Avg. CTR', 'siteseo').'</span>
					</div>
					<div class="siteseo-stat-value-group">
						<span class="siteseo-stat-value">'.esc_html($metrics['ctr']['current']).'</span>
						<span class="siteseo-stat-change '.($metrics['ctr']['trend'] == 'negative' ? 'negative' : ($metrics['ctr']['trend'] == 'positive' ? 'positive' : '')).'">
							'.($metrics['ctr']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-'.($metrics['ctr']['trend'] == 'negative' ? 'down' : 'up').'"></span>' : '').'
							'.esc_html($metrics['ctr']['change']).'
						</span>
					</div>
				</li>
				<li class="siteseo-stat-item">
					<div class="siteseo-stat-header">
						<span class="siteseo-stat-label">'.esc_html__('Avg. Position.', 'siteseo').'</span>
					</div>
					<div class="siteseo-stat-value-group">
						<span class="siteseo-stat-value">'.esc_html($metrics['position']['current']).'</span>
						<span class="siteseo-stat-change '.($metrics['position']['trend'] == 'negative' ? 'negative' : ($metrics['position']['trend'] == 'positive' ? 'positive' : '')) . '">
						'.($metrics['position']['trend'] != 'neutral' ? '<span class="dashicons dashicons-arrow-' . ($metrics['position']['trend'] == 'negative' ? 'down' : 'up') . '"></span>' : ''
							) . '
							'.esc_html($metrics['position']['change']).'
						</span>
					</div>
				</li>
			</ul>
		   <canvas id="seo_statistics" width="950" height="250" data-sample="'.($data['is_sample'] ? '1' : '0').'"></canvas>
		</div>';
		
		if(!empty($top_pages) || $data['is_sample']){
			echo'<div class="siteseo-stats-container">
				<h2 class="siteseo-stats-title">'.esc_html__('Content Analysis ( Top 5 )', 'siteseo').'</h2>	
				<table class="wp-list-table widefat fixed striped siteseo-history-table">
					<thead><tr>
						<th>'.esc_html__('Page', 'siteseo').'</th>
						<th>'.esc_html__('Status', 'siteseo').'</th>
						<th>'.esc_html__('Clicks', 'siteseo').'</th>
						<th>'.esc_html__('Avg position', 'siteseo').'</th>
						<th>'.esc_html__('Impressions', 'siteseo').'</th>
						<th>'.esc_html__('Content Score', 'siteseo').'</th>
					</tr>
					</thead>
				<tbody>';
				
				foreach($top_pages as $page){
					
					$score = $page['truseo_score'];
					if($score >= 80){
						$badge_class = 'siteseo-gsc-score-good';
					} elseif ($score >= 50){
						$badge_class = 'siteseo-gsc-score-avg';
					} else{
						$badge_class = 'siteseo-gsc-score-bad';
					}
						
					echo'<tr>
						<td>'.esc_html($page['title']).'</td>
						<td>'.(isset($page['indexed']) ? ($page['indexed'] ? '<span class="dashicons dashicons-yes-alt" style="color:#28a745;"></span>' : '<span class="dashicons dashicons-dismiss" style="color:#dc3545;"></span>') : '<span class="dashicons dashicons-editor-help" style="color:#6c757d;"></span>').'</td>
						<td>'.esc_html($page['clicks']).'</td>
						<td>'.esc_html($page['position']).'</td>
						<td>'.esc_html($page['impressions']).'</td>
						<td><span class="'.esc_attr($badge_class).'">'.esc_html($page['truseo_score']).'/100</span></td>
					</tr>';
				}
				
				if(empty($top_pages) && !$data['is_sample']){
					echo'<tr><td colspan="6" style="text-align:center;">'.esc_html__('No data available yet', 'siteseo').'</td></tr>';
				}
				
				echo'</tbody></table>
			</div>';
		}
	}
		
	static function keyword_ranking_tab(){
		self::connect_notices();
	
		$data = self::fetch_data();
		$keywords = $data['keywords'];

		// Get actual analytics data if available
		$analytics_data = get_option('siteseo_search_console_data', []);
		$has_actual_data = !empty($analytics_data) && !isset($analytics_data['error']);
	
		// Prepare values based on actual data or sample
		if($has_actual_data && !$data['is_sample']){
			// Use actual data
			$total_keywords = isset($analytics_data['top_keywords']) ? count($analytics_data['top_keywords']) : 0;
			$total_impressions = isset($analytics_data['metrics']['impressions']['current']) ? $analytics_data['metrics']['impressions']['current'] : '0';
			$avg_ctr = isset($analytics_data['metrics']['ctr']['current']) ? $analytics_data['metrics']['ctr']['current'] : '0%';
			
			$impression_change = isset($analytics_data['metrics']['impressions']['change']) ? $analytics_data['metrics']['impressions']['change'] : '0';
			$impression_trend = isset($analytics_data['metrics']['impressions']['trend']) ? $analytics_data['metrics']['impressions']['trend'] : 'neutral';
			
			$ctr_change = '0';
			$ctr_trend = 'neutral';
			
		} else{
			// Use sample data or zeros
			$total_keywords = $data['is_sample'] ? '19K' : '0';
			$total_impressions = $data['is_sample'] ? '15M' : '0';
			$avg_ctr = $data['is_sample'] ? '48.25%' : '0%';
			$impression_change = $data['is_sample'] ? '475.7K' : '0';
			$impression_trend = $data['is_sample'] ? 'negative' : 'neutral';
			$ctr_change = $data['is_sample'] ? '1' : '0';
			$ctr_trend = $data['is_sample'] ? 'negative' : 'neutral';
		}
	
		echo'<div class="siteseo-stats-container">
			<h2 class="siteseo-stats-title">'.esc_html__('Keyword Positions', 'siteseo').'</h2>
			<hr class="siteseo-stats-separator">
			<ul class="siteseo-stats-list">
				<li class="siteseo-stat-item">
					<div class="siteseo-stat-header">
						<span class="siteseo-stat-label">'.esc_html__('Total Keyword', 'siteseo').'</span>
					</div>
					<div class="siteseo-stat-value-group">
						<span class="siteseo-stat-value">'.esc_html($total_keywords).'</span>
						'.($data['is_sample'] ? '<span class="siteseo-stat-change positive">
							<span class="dashicons dashicons-arrow-up"></span>2.9K
						</span>' : '').'
					</div>
				</li>
			
				<li class="siteseo-stat-item">
					<div class="siteseo-stat-header">
						<span class="siteseo-stat-label">'.esc_html__('Search Impressions', 'siteseo').'</span>
					</div>
					<div class="siteseo-stat-value-group">
						<span class="siteseo-stat-value">'.esc_html($total_impressions).'</span>
						'.((!$data['is_sample'] && $has_actual_data) ? 
						'<span class="siteseo-stat-change '.esc_attr($impression_trend).'">
							<span class="dashicons dashicons-arrow-'.($impression_trend === 'positive' ? 'up' : 'down').'"></span>'
							.esc_html($impression_change).'
						</span>' : 
						($data['is_sample'] ? 
						'<span class="siteseo-stat-change negative">
							<span class="dashicons dashicons-arrow-down"></span>475.7K
						</span>' : '')).'
					</div>
				</li>
			
				<li class="siteseo-stat-item">
					<div class="siteseo-stat-header">
						<span class="siteseo-stat-label">'.esc_html__('Avg. CTR', 'siteseo').'</span>
					</div>
					<div class="siteseo-stat-value-group">
						<span class="siteseo-stat-value">'.esc_html($avg_ctr).'</span>
						'.($data['is_sample'] ? 
						'<span class="siteseo-stat-change negative">
							<span class="dashicons dashicons-arrow-down"></span>1
						</span>' : '').'
					</div>
				</li>
			</ul>
		
			<div style="display:flex; gap:20px; flex-wrap:wrap;">
				<div style="flex:1; min-width:280px; max-width:50%;">
					<canvas id="siteseo_keyword_muti_line_chart" data-sample="'.($data['is_sample'] ? '1' : '0').'" data-actual="'.($has_actual_data ? '1' : '0').'"></canvas>
				</div>
				<div style="flex:1; min-width:280px; max-width:50%;">
					<canvas id="siteseo_keyword_bar_chart" data-sample="'.($data['is_sample'] ? '1' : '0').'" data-actual="'.($has_actual_data ? '1' : '0').'"></canvas>
				</div>
			</div>
		</div>';
		
		if(!empty($keywords) || $data['is_sample']){
			echo'<div class="siteseo-stats-container">
				<h2 class="siteseo-stats-title">'.esc_html__('Content Analysis ( Top 5 )', 'siteseo').'</h2>
				<table class="wp-list-table widefat fixed striped siteseo-history-table">
					<thead><tr>
						<th>'.esc_html__('Keywords', 'siteseo').'</th>
						<th>'.esc_html__('Clicks', 'siteseo').'</th>
						<th>'.esc_html__('Avg. CTR', 'siteseo').'</th>
						<th>'.esc_html__('Impressions', 'siteseo').'</th>
						<th>'.esc_html__('Position', 'siteseo').'</th>
					</tr>
					</thead>
				<tbody>';
				
				foreach($keywords as $keyword){
					echo'<tr>
						<td class="siteseo-table-row">'.esc_html($keyword['keyword']).'</td>
						<td>'.esc_html($keyword['clicks']).'</td>
						<td>'.esc_html($keyword['ctr']).'</td>
						<td>'.esc_html($keyword['impressions']).'</td>
						<td>'.esc_html($keyword['position']).'</td>
					</tr>';
				}
				
				if(empty($keywords) && !$data['is_sample']){
					echo'<tr><td colspan="6" style="text-align:center;">'.esc_html__('No data available yet', 'siteseo').'</td></tr>';
				}
				
				echo'</tbody></table>
			</div>';
		}
	}

	static function content_ranking_tab(){
		self::connect_notices();
		
		$data = self::fetch_data();
		$content_ranking = $data['content_ranking'];

		if(!empty($content_ranking) || $data['is_sample']){
			// Pagination setup
			$items_per_page = 10;
			$total_items = count($content_ranking);
			$total_pages = ceil($total_items / $items_per_page);
			
			$current_page = isset($_GET['cr_page']) ? max(1, intval($_GET['cr_page'])) : 1;

			$offset = ($current_page - 1) * $items_per_page;
			
			$paged_items = array_slice($content_ranking, $offset, $items_per_page);
			
			echo'<div class="siteseo-stats-container">
				<h2 class="siteseo-stats-title">'.esc_html__('Content Analysis (Top 30)', 'siteseo').'</h2>
				<table class="wp-list-table widefat fixed striped siteseo-history-table">
					<thead><tr>
						<th>'.esc_html__('Title', 'siteseo').'</th>
						<th>'.esc_html__('Indexed', 'siteseo').'</th>
						<th>'.esc_html__('Last Update on', 'siteseo').'</th>
						<th>'.esc_html__('Loss', 'siteseo').'</th>
						<th>'.esc_html__('Drop (%)', 'siteseo').'</th>
						<th>'.esc_html__('Performance Score', 'siteseo').'</th>
					</tr>
					</thead>
				<tbody>';

				foreach($paged_items as $content){
					$score = (int) explode('/', $content['performance_score'])[0];
					
					if($score >= 80){
						$badge_class = 'siteseo-gsc-score-good';
					} elseif($score >= 50){
						$badge_class = 'siteseo-gsc-score-avg';
					} else{
						$badge_class = 'siteseo-gsc-score-bad';
					}
					
					echo'<tr>
						<td>'.esc_html($content['title']).'</td> 
						<td><span class="dashicons '.($content['indexed'] === 'Yes' ? 'dashicons-yes-alt siteseo-statistics-index-icon' : 'dashicons-dismiss siteseo-statistics-noindex-icon').'"></span></td>
						<td>'.esc_html($content['last_update']).'</td>
						<td style="color:#dc3545;">'.esc_html($content['loss']).'</td>
						<td style="color:#dc3545;">'.esc_html($content['drop_percent']).'</td>
						<td><span class="'.esc_attr($badge_class).'">'.esc_html($content['performance_score']).'</span></td>
					</tr>';
				}
				
				if(empty($content_ranking) && !$data['is_sample']){
					echo'<tr><td colspan="6" style="text-align:center;">'.esc_html__('No data available yet', 'siteseo').'</td></tr>';
				}
				
				echo'</tbody></table>';
			
			// Pagination controls
			if($total_pages > 1){
				echo'<div class="siteseo-pagination" style="margin-top: 20px; text-align: center;">';
				
				// Previous btn
				if($current_page > 1){
					echo'<a href="'.esc_url(add_query_arg('cr_page', $current_page - 1)).'" class="siteseo-option btnSecondary">'.esc_html__('Previous', 'siteseo').'</a> ';
				}
				
				// Page numbers
				for($i = 1; $i <= $total_pages; $i++){
					if($i == $current_page){
						echo'<span class="siteseo-option btnSecondary" style="margin: 0 2px;">'.esc_html($i).'</span> ';
					} else{
						echo'<a href="'.esc_url(add_query_arg('cr_page', $i)).'" class="siteseo-option btnSecondary" style="margin: 0 2px;">'.esc_html($i).'</a> ';
					}
				}
				
				// Next btn
				if($current_page < $total_pages){
					echo'<a href="'.esc_url(add_query_arg('cr_page', $current_page + 1)).'" class="siteseo-option btnSecondary">'.esc_html__('Next', 'siteseo').'</a>';
				}
				
				echo'</div>';
			}
			
			echo'</div>';
		}
	}

	static function audience_tab(){
		self::connect_notices();
		$data = self::fetch_data();
		$country_data = $data['country_data'];
		$device_data = $data['device_data'];

		echo'<div class="siteseo-audience-statisc">
			<div class="siteseo-stats-container">
				<h2 class="siteseo-stat-title">'.esc_html__('Device breakdown', 'siteseo').'</h2>
				 <hr class="siteseo-stats-separator">
				 <canvas id="siteseo_device_statics" height="250px" width="520px" data-sample="'.($data['is_sample'] ? '1' : '0').'"></canvas>
			</div>
			
			<div class="siteseo-stats-container">
				<h2 class="siteseo-stats-title">'.esc_html__('Top countries by click ( Top 5 )', 'siteseo').'</h2>
				<hr class="siteseo-stats-separator">
				<canvas id="siteseo_country_statics" height="300px" width="520px" data-sample="'.($data['is_sample'] ? '1' : '0').'"></canvas>
			</div>
		</div>';

		if(!empty($device_data) || $data['is_sample']){
			echo'<div class="siteseo-stats-container">
				<h2 class="siteseo-stats-title">'.esc_html__('Device Performance', 'siteseo').'</h2>
					<table class="wp-list-table widefat fixed striped siteseo-history-table">
						<thead><tr>
							<th>'.esc_html__('Device', 'siteseo').'</th>
							<th>'.esc_html__('Clicks', 'siteseo').'</th>
							<th>'.esc_html__('Impressions', 'siteseo').'</th>
						</tr>
						</thead>
					<tbody>';
					
					foreach($device_data as $data){
						echo'<tr>
							<td style="font-weight:bold;">'.esc_html( is_array($data['device']) ? implode(', ', $data['device']) : $data['device']).'</td>
							<td>'.esc_html($data['clicks']).'</td>
							<td>'.esc_html($data['impressions']).'</td>
						</tr>';
					}
					
				echo'</tbody></table>
			</div>';
		}

		if(!empty($country_data) || $data['is_sample']){
			echo'<div class="siteseo-stats-container">
				<h2 class="siteseo-stats-title">'.esc_html__('Country Performance ( Top 5 )', 'siteseo').'</h2>
					<table class="wp-list-table widefat fixed striped siteseo-history-table">
						<thead><tr>
							<th>'.esc_html__('Country', 'siteseo').'</th>
							<th>'.esc_html__('Clicks', 'siteseo').'</th>
							<th>'.esc_html__('Impressions', 'siteseo').'</th>
						</tr>
						</thead>
					<tbody>';
					
					foreach($country_data as $data){
						echo '<tr>
							<td style="font-weight:bold;">'.esc_html($data['country']).'</td>
							<td>'.esc_html($data['clicks']).'</td>
							<td>'.esc_html($data['impressions']).'</td>
						</tr>';
					}
					
					echo'</tbody></table>
				</div>';
		}
	}
	
	static function connect_notices(){
		
		$analytics_data = '';
		$gsc_connected = '';
		
		if(class_exists('\SiteSEOPro\GoogleConsole') && method_exists('\SiteSEOPro\GoogleConsole', 'is_connected')){
			$analytics_data = get_option('siteseo_search_console_data', []);

			$gsc_connected = \SiteSEOPro\GoogleConsole::is_connected();
		}
		
		 if(empty($gsc_connected)){
			
			echo'<div class="siteseo-notice is-warning"><p>'.wp_kses_post(__('The data shown here is only a <strong> sample from Google Analytics</strong> how SiteSEO will display your site\'s analytics once connected.', 'siteseo')).'</p>';

			if(class_exists('\SiteSEOPro\GoogleConsole')){
				echo'<form method="post">';
						wp_nonce_field('siteseo_pro_connect_google');
						echo '<input type="hidden" name="redirect_type" value="settings">
						<button type="submit" name="siteseo_pro_connect_btn" class="siteseo-statistics-connect-btn">'.esc_html__('Connect Search Console', 'siteseo') .'</button>
					</form>';
			} else{
				  echo'<a href="https://siteseo.io/pricing" class="siteseo-statistics-connect-btn" target="_blank">'.esc_html__('Buy Pro', 'siteseo').'</a>';
			}
			
			echo'</div>';
		} elseif(empty($analytics_data['top_pages']) && !empty($gsc_connected)){
			echo '<div class="siteseo-notice is-info"><p>'.wp_kses_post(__('Connected to Google Search Console. If this is your first time connecting the site and data doesn’t appear yet, please wait—Google may take a few days to populate the data. You can also try refreshing.', 'siteseo')).'</p></div>';
		}
	}

	static function sample_device_data(){
		 return [
			[
				'device' => 'Mobile',
				'clicks' => '48k',
				'impressions' => '285k',
				'ctr' => '5.2%',
			],
			[
				'device' => 'Desktop',
				'clicks' => '70k',
				'impressions' => '196k',
				'ctr' => '3.8%',
			],
			[
			
				'device' => 'Tablet',
				'clicks' => '10k',
				'impressions' => '185k',
				'ctr' => '8.1%',
			],
		];
	}

	static function sample_country_data(){
		
		 return [
			[
				'country' => 'India',
				'clicks' => '8K',
				'impressions' => '154K',
				'ctr' => '5.2%',
			],
			[
				'country' => 'Poland',
				'clicks' => '5K',
				'impressions' => '132K',
				'ctr' => '3.8%',
			],
			[
			
				'country' => 'South Africa',
				'clicks' => '15K',
				'impressions' => '185k',
				'ctr' => '8.1%',
			],
			[
				'country' => 'Russia',
				'clicks' => '19K',
				'impressions' => '200k',
				'ctr' => '9.5%',
			],
			[
				'country' => 'United kingdom',
				'clicks' => '12K',
				'impressions' => '150k',
				'ctr' => '5.5%',
			],
		];
		
	}
	
	static function sample_metrics_data(){
		return [
			'impressions' => [
				'current' => '15M',
				'change' => '-475.7K',
				'trend' => 'negative',
				'chart_data' => [12, 19, 3, 5, 2, 3, 10, 8, 12, 14, 13, 15]
			],
			'clicks' => [
				'current' => '111.5K',
				'change' => '+1.7K',
				'trend' => 'positive',
				'chart_data' => [7, 11, 5, 8, 3, 7, 4, 5, 6, 7, 6, 8]
			],
			'ctr' => [
				'current' => '0.74%',
				'change' => '+0.03%',
				'trend' => 'positive',
				'chart_data' => [0.5, 0.6, 0.7, 0.65, 0.75, 0.7, 0.6, 0.7, 0.72, 0.74, 0.73, 0.75]
			],
			'position' => [
				'current' => '49',
				'change' => '+1',
				'trend' => 'negative',
				'chart_data' => [55, 50, 45, 50, 48, 52, 55, 50, 49, 47, 48, 49]
			]
		];
	}

	static function sample_top_pages(){
		return [
			[
				'title' => '/blog/',
				'truseo_score' => '95',
				'indexed' => true,
				'clicks' => '4.5K',
				'impressions' => '57.2K',
				'position' => '23',
				'diff' => '+2'
			],
			[
				'title' => '/contact-us/',
				'truseo_score' => '88',
				'indexed' => false,
				'clicks' => '1.2K',
				'impressions' => '1.2M',
				'position' => '40',
				'diff' => '-5'
			],
			[
				'title' => '/support/',
				'truseo_score' => '92',
				'indexed' => false,
				'clicks' => '15K',
				'impressions' => '1.9M',
				'position' => '16',
				'diff' => '+3'
			],
			[
				'title' => '/pricing/',
				'truseo_score' => '85',
				'indexed' => true,
				'clicks' => '8.7K',
				'impressions' => '890K',
				'position' => '12',
				'diff' => '+1'
			],
			[
				'title' => '/features/',
				'truseo_score' => '90',
				'indexed' => true,
				'clicks' => '12.3K',
				'impressions' => '1.5M',
				'position' => '8',
				'diff' => '+4'
			]
		];
	}

	static function sample_keywords(){
		return [
			[
				'keyword' => 'One click seo plugin',
				'clicks' => '8K',
				'ctr' => '5.2%',
				'impressions' => '154K',
				'position' => '3',
				'trend' => 'up',
				'points' => '90'
			],
			[
				'keyword' => 'wordpress seo',
				'clicks' => '5K',
				'ctr' => '3.8%',
				'impressions' => '132K',
				'position' => '7',
				'trend' => 'up',
				'points' => '80'
			],
			[
				'keyword' => 'best seo plugin plugin',
				'clicks' => '15K',
				'ctr' => '8.1%',
				'impressions' => '185K',
				'position' => '2',
				'trend' => 'up',
				'points' => '85'
			],
			[
				'keyword' => 'seo optimization',
				'clicks' => '3.2K',
				'ctr' => '2.1%',
				'impressions' => '152K',
				'position' => '15',
				'trend' => 'down',
				'points' => '88'
			],
			[
				'keyword' => 'website ranking',
				'clicks' => '6.8K',
				'ctr' => '4.5%',
				'impressions' => '151K',
				'position' => '5',
				'trend' => 'up',
				'points' => '70'
			]
		];
	}
	
	static function sample_content_ranking(){
		return [
			[
				'title' => 'Ultimate SEO Guide 2024',
				'indexed' => 'Yes',
				'last_update' => '2024-01-15',
				'loss' => '2.1K',
				'drop_percent' => '5.2%',
				'performance_score' => '88'
			],
			[
				'title' => 'WordPress Optimization Tips',
				'indexed' => 'Yes',
				'last_update' => '2024-01-10',
				'loss' => '1.5K',
				'drop_percent' => '3.8%',
				'performance_score' => '92'
			],
			[
				'title' => 'Mobile SEO Strategies',
				'indexed' => 'No',
				'last_update' => '2024-01-08',
				'loss' => '3.2K',
				'drop_percent' => '8.1%',
				'performance_score' => '75'
			],
			[
				'title' => 'Content Marketing Guide',
				'indexed' => 'Yes',
				'last_update' => '2024-01-12',
				'loss' => '0.8K',
				'drop_percent' => '2.1%',
				'performance_score' => '95'
			]
		];
	}

	static function connect_site_dialogbox(){

		$gsc_sites = '';
		$current_site_url = trailingslashit(get_site_url());

		if(class_exists('\SiteSEOPro\GSCSetup') && method_exists('\SiteSEOPro\GSCSetup', 'get_pre_connected_sites')){
			$gsc_sites = \SiteSEOPro\GSCSetup::get_pre_connected_sites();
		}

		$current_site_exists = false;
		if(!empty($gsc_sites) && !isset($gsc_sites['error'])){
			foreach($gsc_sites as $site){
				if($site['siteUrl'] === $current_site_url){
					$current_site_exists = true;
					break;
				}
			}
		}

		echo'<div id="siteseo-site-connection-dialog" title="'.esc_attr__('Connect site search console', 'siteseo').'" style="display:none;">
			<div class="siteseo-dialog-content">';

		echo'<div id="siteseo-main-section">';

		if($current_site_exists){
			// Tab: Current Site
			echo'<div class="siteseo-option-primary" style="margin-bottom:20px;">
				<p style="color:#1d2327;font-weight:400;font-size:14px;">'.esc_html__('This site is already in your Google Search Console account.', 'siteseo').'</p>
				<div class="siteseo-form-group">
					<input type="text" id="siteseo-site-url" value="' . esc_attr($current_site_url) . '" class="regular-text" readonly
						style="width:100%;padding:8px;background:#f6f7f7;border:1px solid #8c8f94;color:#666;cursor:not-allowed;" />
				</div>
				<div class="siteseo-dialog-actions">
					<button type="button" class="button button-primary siteseo-action-btn" id="siteseo-connect-existing">'.esc_html__('Connect', 'siteseo').'</button>
					<span class="spinner"></span>
				</div>
			</div>';
			if(!empty($gsc_sites)){
				echo '<div class="siteseo-option-secondary">
					<button type="button" class="button button-link" id="siteseo-show-existing-properties" style="width:100%;text-decoration:none;">'.esc_html__('Select from existing sites', 'siteseo').'</button>
				</div>';
			}
		} else{
			// Not connected yet
			echo'<div class="siteseo-option-primary" style="margin-bottom:20px;">
				<p style="color:#1d2327;font-weight:400;font-size:14px;">'.esc_html__('This domain isn\'t yet connected to Google Search Console.', 'siteseo').'</p>
				<div class="siteseo-form-group">
					<input type="text" id="siteseo-new-domain-url" value="' . esc_attr($current_site_url) . '" class="regular-text" readonly
						style="width:100%;padding:8px;background:#f6f7f7;border:1px solid #8c8f94;color:#666;cursor:not-allowed;" />
				</div>
				<button type="button" class="button button-primary siteseo-action-btn siteseo-create-btn" id="siteseo-create-gsc-property" style="margin-bottom:10px;">'.esc_html__('Connect New Domain', 'siteseo').'</button>
				<span class="spinner"></span>
			</div>';

			if(!empty($gsc_sites)){
				echo'<div class="siteseo-option-secondary">
					<button type="button" class="button button-link" id="siteseo-show-existing-properties" style="width:100%;text-decoration:none;">'.esc_html__('Connect with existing properties', 'siteseo').'</button>
				</div>';
			}
		}

		echo'</div>';

		if(!empty($gsc_sites) && !isset($gsc_sites['error'])){
			echo'<div id="siteseo-existing-properties-section" style="display:none;">
				<p style="color:#1d2327;font-weight:400;font-size:14px;">'. esc_html__('Select an existing site from your Google Search Console account.', 'siteseo').'</p>
				<div class="siteseo-form-group">
					<select id="siteseo-site-url" name="existing_site_url" class="siteseo-select-box">';

						foreach($gsc_sites as $site){
							echo'<option value="'.esc_attr($site['siteUrl']).'">'.esc_html($site['siteUrl']).'</option>';
						}

			echo'</select>
				</div>
				<div class="siteseo-dialog-actions">
					<button type="button" class="button button-secondary siteseo-action-btn" id="siteseo-back-to-main">'.esc_html__('Back', 'siteseo').'</button>
					<button type="button" class="button button-primary siteseo-action-btn" id="siteseo-connect-existing">'.esc_html__('Connect', 'siteseo').'</button>
					<span class="spinner" style="margin-top:7px;"></span>
				</div>
			</div>';
		}

		echo'</div></div>'; // End dialog content + wrapper
	}
}
PK��f\�O������main/settings/titles.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO\Settings;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Titles{

	static function menu(){
		global $siteseo;

		$current_tab = isset($_GET['tab']) ? sanitize_key($_GET['tab']) : 'tab_siteseo_home'; // Default tab

		$titles_meta_subtabs = [
			'tab_siteseo_home' => esc_html__('Home', 'siteseo'),
			'tab_siteseo_post_types' => esc_html__('Post types', 'siteseo'),
			'tab_siteseo_archives' => esc_html__('Archives', 'siteseo'),
			'tab_siteseo_taxonomies' => esc_html__('Taxonomies', 'siteseo'),
			'tab_siteseo_advanced' => esc_html__('Advanced','siteseo')
		];

		echo '<div id="siteseo-root">';
		Util::admin_header();

		echo '<form method="post" id="siteseo-form" class="siteseo-option" name="siteseo-flush">';

		wp_nonce_field('siteseo_title_settings');

		$titles_meta_toggle = isset($siteseo->setting_enabled['toggle-titles']) ? $siteseo->setting_enabled['toggle-titles'] : '';
		$nonce = wp_create_nonce('siteseo_toggle_nonce');

		Util::render_toggle('Titles & Metas - SiteSEO', 'titles_meta_toggle', $titles_meta_toggle, $nonce);

		echo '<div id="siteseo-tabs" class="wrap">
		<div class="siteseo-nav-tab-wrapper">';
		
		foreach($titles_meta_subtabs as $tab_key => $tab_caption) {
			$active_class = ($current_tab === $tab_key) ? ' siteseo-nav-tab-active' : '';
			echo '<a id="' . esc_attr($tab_key) . '-tab" class="siteseo-nav-tab' . esc_attr($active_class) . '" data-tab="' . esc_attr($tab_key) . '">' . esc_html($tab_caption) . '</a>';
		}

		echo '</div>     
		<div class="tab-content-wrapper">
		<div class="siteseo-tab '.($current_tab == 'tab_siteseo_home' ? ' active' : '').'" id="tab_siteseo_home" style="display: none;">';
		self::home();
		echo '</div>
		<div class="siteseo-tab '.($current_tab == 'tab_siteseo_post_types' ? ' active' : '').'" id="tab_siteseo_post_types" style="display: none;">';
		self::post_types();
		echo '</div>
		<div class="siteseo-tab '.($current_tab == 'tab_siteseo_archives' ? ' active' : '').'" id="tab_siteseo_archives" style="display: none;">';
		self::archives();
		echo '</div>
		<div class="siteseo-tab '.($current_tab == 'tab_siteseo_taxonomies' ? ' active' : '').'" id="tab_siteseo_taxonomies" style="display: none;" style="display: none;">';
		self::taxonomies();
		echo '</div>
		<div class="siteseo-tab '.($current_tab == 'tab_siteseo_advanced' ? ' active' : '').'" id="tab_siteseo_advanced">';
		self::advanced(); 
		echo '</div>
		</div>';
		Util::submit_btn();
		echo '</form></div>';

	}

    static function home(){
		global $siteseo;

		if(!empty($_POST['submit'])){
			self::save_settings();
		}

		$options = get_option('siteseo_titles_option_name');
		//$options = $siteseo->titles_settings;

		$option_separator = !empty($options['titles_sep']) ? $options['titles_sep'] : '';
		$option_site_title = !empty($options['titles_home_site_title']) ? $options['titles_home_site_title'] : '';
		$option_site_title_alt = !empty($options['titles_home_site_title_alt']) ? $options['titles_home_site_title_alt'] : '';
		$option_site_desc = !empty($options['titles_home_site_desc']) ? $options['titles_home_site_desc'] : '';

		if(get_option('show_on_front') === 'page'){
			$front_page_id = get_option('page_on_front');
			$edit_link = get_edit_post_link($front_page_id, '');
			
			echo'<div class="siteseo_wrap_label">
				<div class="siteseo-notice is-warning">
					<span id="dashicons-warning" class="dashicons dashicons-info"></span>&nbsp;
					<p>'. // translators: %s is the platform name
					wp_kses_post(sprintf(__('A static page is set as your site front page <strong>(%s Dashboard > Settings > Reading)</strong>. To add an SEO title, description, and meta tags for the homepage, please click here -', 'siteseo'), !defined('SITEPAD') ? 'WP' : 'Sitepad')) . '</p>
					<div>
						<a href="'.esc_url($edit_link).'" target="_blank">'.esc_html__('Edit Home Page', 'siteseo').'</a>
					</div>
				</div>
			</div>';
			return;
		}

		echo '<h3 class="siteseo-tabs">'.esc_html__('HOME','siteseo').'</h3>
		<div class="siteseo-notice">
			<span id="siteseo-dash-icon" class="dashicons dashicons-info"></span>&nbsp;
			<p>'.esc_html__('Search engines use the title and meta description to create a snippet of your site for the search results page.', 'siteseo').'</p>
		</div>

		<p>'.esc_html__('Personalize the title and meta description for your homepage.','siteseo').'</p>

		<span class="dashicons dashicons-external"></span>
		<a href="'.esc_attr('https://siteseo.io/docs/meta/google-uses-the-wrong-meta-title-meta-description-in-search-results/').'" target="_blank">'.esc_html__('Incorrect meta title or description appearing in search results?', 'siteseo').'</a>

		<table class="form-table">
			<tbody>
                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Separator','siteseo').'</th>
                    <td>
                        <input type="text" name="siteseo_options[separator]" placeholder="'.esc_attr__('Specify your separator, e.g:-','siteseo').'" value="'.esc_attr($option_separator).'">
                        <p class="description">'.esc_attr__('Include this separator using %%sep%% in your title and meta description.','siteseo').'</p>
                    </td>
                </tr>

                <td colspan="2"><span class="dashed-line"></span></td>

                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Site title','siteseo').'</th>
                    <td>
                        <input type="text" name="siteseo_options[site_title]" value="'.esc_attr($option_site_title).'" placeholder="'.esc_html__('My fantastic site','siteseo').'">
                        <div class="wrap-tags">
                            <button class="tag-title-btn" id="btn-site-title" data-tag="%%sitetitle%%"><span id="icon" class="dashicons dashicons-insert"></span>'.
							esc_html__('SITE TITLE','siteseo').'</button>
                            <button class="tag-title-btn" id="btn-separator" data-tag="%%sep%%"><span id="icon" class="dashicons dashicons-insert"></span>'.
							esc_html__('SEPARATOR','siteseo').'</button>
                            <button class="tag-title-btn" id="btn-tagline" data-tag="%%tagline%%"><span id="icon" class="dashicons dashicons-insert"></span>'.
							esc_html__('TAGLINE','siteseo').'</button>';
							siteseo_suggestion_button();
                        echo '</div>
                    </td>
                </tr>

                <td colspan="2"><span class="dashed-line"></span></td>

                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Alternative site title','siteseo').'</th>
                    <td>
                        <input type="text" value="'.esc_attr($option_site_title_alt).'"  name="siteseo_options[alt_site_title]" placeholder="'.esc_html__('Alternative website title','siteseo').'">
                        <p class="description">'.esc_html__('The alternative name of the website (e.g., a commonly recognized acronym or shorter name, if applicable). Ensure the name meets the criteria.', 'siteseo').'</p>
                    </td>
                </tr>

                <td colspan="2"><span class="dashed-line"></span></td>

                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Meta description','siteseo').'</th>
                    <td>
                        <textarea type="text" name="siteseo_options[media_desc]" placeholder="'.esc_html__('This is an awesome website about galactic creatures.','siteseo').'">'.esc_html($option_site_desc).'</textarea>
                        <div class="wrap-tags">
                            <button class="tag-title-btn" id="btn-tagline-meta" data-tag="%%tagline%%"><span id="icon" class="dashicons dashicons-insert"></span>'.
							esc_html__('TAGLINE','siteseo').'</button>';
                            siteseo_suggestion_button();  
                       echo '</div>
                    </td>
                </tr>
            </tbody>
        </table>
		<input type="hidden" name="siteseo_options[home_tab]" value="1"/>';
    }

    static function advanced(){
		global $siteseo;

		if(!empty($_POST['submit'])){
			self::save_settings();
		}

        //$options = $siteseo->titles_settings;
		$options = get_option('siteseo_titles_option_name');

		$option_noindex = !empty($options['titles_noindex']) ? $options['titles_noindex'] : '';
		$option_nofollow = !empty($options['titles_nofollow']) ? $options['titles_nofollow'] : '';
		$option_noimage = !empty($options['titles_noimageindex']) ? $options['titles_noimageindex'] : '';
		$option_noarchive = !empty($options['titles_noarchive']) ? $options['titles_noarchive'] : '';
		$option_nosnippet = !empty($options['titles_nosnippet']) ? $options['titles_nosnippet'] : '';
		$option_nositelinkssearchbox = !empty($options['titles_nositelinkssearchbox']) ? $options['titles_nositelinkssearchbox'] : '';
		$option_page_rel = !empty($options['titles_paged_rel']) ? $options['titles_paged_rel'] : '';
		$option_paged_noindex = !empty($options['titles_paged_noindex']) ? $options['titles_paged_noindex'] : '';
		$option_attachments_noindex = !empty($options['titles_attachments_noindex']) ? $options['titles_attachments_noindex'] : '';

		echo '<h3 class="siteseo-tabs">'.esc_html__('Advanced','siteseo').'</h3>
		<p>'.esc_html__('Customize your metas for all pages','siteseo').'</p>

		<table class="form-table">
			<tbody>
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('noindex','siteseo').'</th>
					<td>
						<label>
						<input name="siteseo_options[noindex]" type="checkbox" '.(!empty($option_noindex) ? 'checked="yes"' : '') . ' value="1"/>' . esc_html__('noindex', 'siteseo') . 
						'</label>
						<p class="description">'.esc_attr__('Do not show all pages of the site in Google search results and avoid displaying "Cached" links in search results.','siteseo').'</p>
						'.wp_kses_post('<p class="description">Check also the<strong>"Search engine visibility"</strong> setting from the <a href="%s">WordPress Reading page</a></p>').'
					</td>
				</tr>

				<td colspan="2"><span class="dashed-line"></span></td>

				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('nofollow','siteseo').'</th>
					<td>
						<label>
							<input name="siteseo_options[no_follow]" type="checkbox"'.(!empty($option_nofollow) ? 'checked="yes"' : '') . ' value="1"/>'. esc_html__('nofollow', 'siteseo'). 
						'</label>
						<p class="description">'.esc_html__('Do not follow links on all pages.','siteseo').'</p>
					</td>
				<tr>

				<td colspan="2"><span class="dashed-line"></span></td>
					
					<tr>
						<th scope="row" style="user-select:auto;">'.esc_html__('noimageindex','siteseo').'</th>
						<td>
							<label>
								<input name="siteseo_options[no_image]" type="checkbox"'.(!empty($option_noimage) ? 'checked="yes"' : '').' value="1"/>'. esc_html__('noimageindex', 'siteseo'). 
							'</label>
							<p class="description">'.esc_html__('Do not follow links on any pages.','siteseo').'</p>
						</td>
					<tr>

				<td colspan="2"><span class="dashed-line"></span></td>

					<tr>
						<th scope="row" style="user-select:auto;">'.esc_html__('noarchive','siteseo').'</th>
						<td>
							<label>
								<input name="siteseo_options[no_archive]" type="checkbox"'.(!empty($option_noarchive) ? 'checked="yes"' : '').' value="1"/>' . esc_html__('noarchive', 'siteseo'). 
							'</label>
							<p class="description">'.esc_html__('Do not show a "Cached" link in Google search results.','siteseo').'</p>
						</td>
					</tr>

				<td colspan="2"><span class="dashed-line"></span></td>

						<tr>
							<th scope="row" style="user-select:auto;">'.esc_html__('nosnippet','siteseo').'</th>
							<td>
								<label>
									<input name="siteseo_options[no_snippet]" type="checkbox"'.(!empty($option_nosnippet) ? 'checked="yes"' : '').' value="1"/>' . esc_html__('nosnippet', 'siteseo'). 
								'</label>
								<p class="description">'.esc_html__('Do not show a description in the Google search results for any pages.','siteseo').'</p>
							</td>
						</tr>

				<td colspan="2"><span class="dashed-line"></span></td>

						<tr>
							<th scope="row" style="user-select:auto;">'.esc_html__('nositelinkssearchbox','siteseo').'</th>
							<td>
								<label>
									<input name="siteseo_options[no_site_links_searchbox]" type="checkbox"'.(!empty($option_nositelinkssearchbox) ? 'checked="yes"' : ''). ' value="1"/>' . esc_html__('nositelinkssearchbox', 'siteseo') . 
								'</label>
								<p class="description">'.esc_html__('Prevents Google from displaying a sitelinks search box in search results. Enabling this option will remove the "Website" schema from your source code.','siteseo') .'</p>
							</td>
						</tr>

                <td colspan="2"><span class="dashed-line"></span></td>

                 <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Indicate paginated content to Google','siteseo').'</th>
                    <td>
                        <label>
                            <input name="siteseo_options[page_rel]" type="checkbox"' . (!empty($option_page_rel) ? 'checked="yes"' : '') . ' value="1"/>' . esc_html__('Add rel next/prev link in head of paginated archive pages', 'siteseo') . 
                        '</label>
                        <p class="description">'.esc_html__('eg: https://example.com/category/my-category/page/2/.','siteseo').'</p>
                    </td>
                </tr>

                <td colspan="2"><span class="dashed-line"></span></td>

                 <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('noindex on paged archives','siteseo').'</th>
                    <td>
                        <label>
                            <input name="siteseo_options[titles_paged_noindex]" type="checkbox" '. (!empty($option_paged_noindex) ? 'checked="yes"' : '') . ' value="1"/>'.esc_html__('Add a "noindex" meta robots for all paginated archive pages', 'siteseo'). 
                        '</label>
                        <p class="description">'.esc_html__('eg: https://example.com/category/my-category/page/2/.','siteseo').'</p>
                    </td>
                </tr>

                <td colspan="2"><span class="dashed-line"></span></td>

                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('noindex on attachment pages','siteseo').'</th>
                    <td>
                        <label>
                            <input name="siteseo_options[attachments_noindex]" type="checkbox"' . (!empty($option_attachments_noindex) ? 'checked="yes"' : '').' value="1"/>'.esc_html__(' Add a "noindex" meta robots for all attachment pages', 'siteseo') . 
                        '</label>
                        <p class="description">'.esc_html__('eg: https://example.com/my-media-attachment-page.','siteseo').'</p>
                    </td>
                </tr>
            </tbody>
        </table><input type="hidden" name="siteseo_options[advanced_tab]" value="1"/>';
    }

	static function archives(){
		global $siteseo;

		if(!empty($_POST['submit'])){
			self::save_settings();
		}

        	// $options = $siteseo->titles_settings;
		$options = get_option('siteseo_titles_option_name');

        	// Load settings
		$option_author_title = !empty($options['titles_archives_author_title']) ? $options['titles_archives_author_title'] : '';
		$option_author_desc = !empty($options['titles_archives_author_desc']) ? $options['titles_archives_author_desc'] : '';
		$option_author_noindex = !empty($options['titles_archives_author_noindex']) ? $options['titles_archives_author_noindex'] : '';
		$option_author_disabled = !empty($options['titles_archives_author_disable']) ? $options['titles_archives_author_disable'] : '';
		$option_date_title = !empty($options['titles_archives_date_title']) ? $options['titles_archives_date_title'] : '';
		$option_date_desc = !empty($options['titles_archives_date_desc']) ? $options['titles_archives_date_desc'] : '';
		$option_date_noindex = !empty($options['titles_archives_date_noindex']) ? $options['titles_archives_date_noindex'] : '';
		$option_date_disabled = !empty($options['titles_archives_date_disable']) ? $options['titles_archives_date_disable'] : '';
		$option_search_title = !empty($options['titles_archives_search_title']) ? $options['titles_archives_search_title'] : '';
		$option_search_desc = !empty($options['titles_archives_search_desc']) ? $options['titles_archives_search_desc'] : '';
		$option_search_noindex = !empty($options['titles_archives_search_title_noindex']) ? $options['titles_archives_search_title_noindex'] : '';
		$option_404_title = !empty($options['titles_archives_404_title']) ? $options['titles_archives_404_title'] : '';
		$option_404_desc = !empty($options['titles_archives_404_desc']) ? $options['titles_archives_404_desc'] : '';
		$author_base_url = !empty($options['author_base_url']) ? $options['author_base_url'] : 'author';

		$archives_fields = [
			'author-archives' => 'Author archives',
			'date-archives'   => 'Date archives',
			'search-archives' => 'Search archives',
			'404-archives'    => '404 archives'
		];
		
		$post_types = siteseo_post_types();

		echo'<table class="form-table">
			<tbody>
				<tr>
					<th scope="row">
					<div class="siteseo-container">';
					$is_first = true;
					foreach($archives_fields as $post_key => $post_val){
						$active_class = $is_first ? 'active' : '';
						echo '<a href="-' . esc_attr($post_key) . '" class="' . esc_attr($active_class) . '">' . esc_html($post_val) . '</a>';
						$is_first = false;
					}

					foreach($post_types as $post_name => $post_type){
						if($post_type->has_archive){
							$active_class = $is_first ? 'active' : '';
							echo '<a href="-' . esc_attr($post_name) . '" class="' . esc_attr($active_class) . '">' . esc_html($post_type->label) . '</a>';
							$is_first = false;
						}
					}

					echo '</div>
					</th>
					<td>
					<div id="author-archives">
						<h3>'.esc_html__('Archives', 'siteseo').'</h3>
						<div class="siteseo_wrap_label">
							<p class="description">'.esc_html__('Personalize your meta descriptions for all archives.','siteseo').'</p>
						</div>
						<span class="line"></span>
						<h3>'.esc_html__('Author archives', 'siteseo').'</h3>
						<div class="siteseo_wrap_label"><p>'.esc_html__('Title template', 'siteseo').'</p></div>
						<input type="text" name="siteseo_options[author_title]" value="'. esc_attr($option_author_title) . '">
    
						<div class="wrap-tags">
							<button class="tag-title-btn" id="btn-author-acrhive-title" data-tag="%%post_author%%">
								<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('POST AUTHOR','siteseo').'
							</button>
							<button class="tag-title-btn" id="btn-author-acrhive-separator" data-tag="%%sep%%">
								<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SEPARATOR','siteseo').'
							</button>
							<button class="tag-title-btn" id="btn-author-acrhive-sitetitle" data-tag="%%sitetitle%%">
								<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SITE TITLE','siteseo').'
							</button>';
							siteseo_suggestion_button();
						echo '</div>
    
						<div class="siteseo_wrap_label"><p>Meta description template</p></div>
						<textarea name="siteseo_options[author_desc]">'.esc_html($option_author_desc) . '</textarea><br>
						<div class="siteseo_wrap_label">
							<label>
							<input name="siteseo_options[author_noindex]" type="checkbox" '.(!empty($option_author_noindex) ? 'checked="yes"' : '').' value="1"/>' . wp_kses_post('Do not display author archives in search engine results <strong>(noindex)</strong>') .'
							</label>
    
							<label>
							<input name="siteseo_options[author_disable]" type="checkbox" '.(!empty($option_author_disabled) ? 'checked="yes"' : '').' value="1"/>
							' . esc_html__('Disable author archives', 'siteseo') . '
							</label>
						</div>

						<div class="siteseo_wrap_label"><p style="font-weight: 500;">'.esc_html__('Author base', 'siteseo');
						if(!defined('SITESEO_PRO_VERSION')){
							echo'<span class="siteseo-pro-tag">Pro</span>';
						}

						echo'</p></div>
						<input type="text" name="siteseo_options[author_base]" value="' . esc_attr($author_base_url) . '" ' .(!defined('SITESEO_PRO_VERSION') ? 'disabled="disabled" style="cursor:not-allowed;"' : '').'>
						<div class="siteseo_wrap_label"><p>'.esc_html__('Change the /author/ slug used in author archive URLs.', 'siteseo').'</p>

					</div>
    
					<div id="date-archives">
						<h3>'.esc_html__('Date archives', 'siteseo').'</h3>
						<div class="siteseo_wrap_label"><p>'.esc_html__('Title template','siteseo').'</p></div>
							<input type="text" name="siteseo_options[date_title]" value="'. esc_attr($option_date_title) .'">
							<div class="wrap-tags">
								<button class="tag-title-btn" id="btn-date-archive" data-tag="%%archive_date%%">
									<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('DATE ARCHIVES','siteseo').'
								</button>
								<button class="tag-title-btn" id="btn-date-separator" data-tag="%%sep%%">
									<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SEPARATOR','siteseo').'
								</button>
								<button class="tag-title-btn" id="btn-date-sitetitle" data-tag="%%sitetitle%%">
									<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SITE TITLE','siteseo').'
								</button>';
								siteseo_suggestion_button();
							echo '</div>
    
						<div class="siteseo_wrap_label"><p>'.esc_html__('Meta description template','siteseo').'</p></div>
						<textarea name="siteseo_options[date_desc]">'.esc_attr($option_date_desc).'</textarea><br>
						<div class="siteseo_wrap_label">
							<label>
							<input name="siteseo_options[date_noindex]" type="checkbox" '.(!empty($option_date_noindex) ? 'checked="yes"' : '').' value="1"/>' . wp_kses_post('Do not display date archives in search engine results <strong>(noindex)</strong>') . '
							</label>

							<label>
							<input name="siteseo_options[date_disable]" type="checkbox" '.(!empty($option_date_disabled) ? 'checked="yes"' : '').' value="1"/>
							' . esc_html__('Disable date archives', 'siteseo') . '
							</label>
						</div>
						<span class="line"><span>
					</div>
						
					<div id="search-archives">
						<h3>Search archives</h3>
						<div class="siteseo_wrap_label"><p>'.esc_html__('Title template','siteseo').'</p></div>
						<input type="text" name="siteseo_options[search_title]" value="'.esc_attr($option_search_title).'">

						<div class="wrap-tags">
							<button class="tag-title-btn" id="btn-search-keyword" data-tag="%%search_keywords%%">
							<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SEARCH KEYWORDS','siteseo').'
							</button>
							<button class="tag-title-btn"  id="btn-search-separator" data-tag="%%sep%%">
							<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SEPARATOR','siteseo').'
							</button>
							<button class="tag-title-btn" id="btn-search-sitetitle" data-tag="%%sitetitle%%">
							<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SITE TITLE','siteseo').'
							</button>';
							siteseo_suggestion_button();
						echo '</div>

						<div class="siteseo_wrap_label"><p>'.esc_html__('Meta description template','siteseo').'</p></div>
						<textarea name="siteseo_options[search_desc]">'.esc_attr($option_search_desc).'</textarea><br>
						<div class="siteseo_wrap_label">
							<label>
							<input name="siteseo_options[search_noindex]" type="checkbox" '.(!empty($option_search_noindex) ? 'checked="yes"' : '').' value="1"/>
							' . wp_kses_post('Do not display date archives in search engine results <strong>(noindex)</strong>') . '
							</label>
						</div>
						<span class="line"><span>
					</div>
						
					<div id="404-archives">
						<h3>404 archives</h3>
						<div class="siteseo_wrap_label"><p>'.esc_html__('Title template','siteseo').'</p></div>
						<input type="text" name="siteseo_options[title_404]" value="'.esc_attr($option_404_title).'">

						<div class="wrap-tags">
							<button class="tag-title-btn" id="btn-404-sitetitle" data-tag="%%sep%%">
								<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SEPARATOR','siteseo').'
							</button>
							<button class="tag-title-btn" id="btn-404-separator" data-tag="%%sitetitle%%">
								<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SITE TITLE','siteseo').'
							</button>';
						siteseo_suggestion_button();
						echo '</div>

						<div class="siteseo_wrap_label"><p>'.esc_html__('Meta description template','siteseo').'</p></div>
						<textarea name="siteseo_options[desc_404]">'.esc_attr($option_404_desc).'</textarea><br>
					</div>
					<br/><br/>
					<span class="line"></span>';

				foreach($post_types as $post_name => $post_type){
					if(empty($post_type->has_archive)){
						continue;
					}

					$post_data = isset($options['titles_archive_titles'][$post_name]) ? $options['titles_archive_titles'][$post_name] : '';

					$archive_title = !empty($post_data['archive_title'])? $post_data['archive_title'] : '';
					$archive_description = !empty($post_data['archive_desc']) ? $post_data['archive_desc'] : '';
					$archive_noindex = !empty($post_data['archive_noindex']) ? $post_data['archive_noindex'] : '';
					$archive_nofollow = !empty($post_data['archive_nofollow']) ? $post_data['archive_nofollow'] : '';

					$value_check = !empty($options['titles_archive_titles'][$post_name]['archive_title']) ? $options['titles_archive_titles'][$post_name]['archive_title'] : '';

					echo'<div id="'.esc_attr($post_name).'">
						<h3>'.esc_html($post_type->label).'</h3>
						<div class="siteseo_wrap_label"><p>'.esc_html__('Title template','siteseo').'</p></div>
						<input type="text" name="siteseo_options['.esc_attr($post_name).'][archive_title]" value="'.esc_attr($archive_title).'">

						<div class="wrap-tags">
							<button class="tag-title-btn" data-tag="%%cpt_plural%%">
								<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('POST TYPE ARCHIVE NAME','siteseo').'
							</button>
							<button class="tag-title-btn" data-tag="%%sep%%">
								<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SEPARATOR','siteseo').'
							</button>
							<button class="tag-title-btn" data-tag="%%sitetitle%%">
								<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SITE TITLE','siteseo').'
							</button>';
						   siteseo_suggestion_button();
						echo'</div>

						<div class="siteseo_wrap_label"><p>'.esc_html__('Meta description template','siteseo').'</p></div>
						<textarea name="siteseo_options['.esc_attr($post_name).'][archive_desc]">'.esc_attr($archive_description).'</textarea><div class="wrap-tags">';
						siteseo_suggestion_button();
					echo'</div></div><br>
					<div class="siteseo_wrap_label">
						<label>
						<input name="siteseo_options['.esc_attr($post_name).'][archive_noindex]" type="checkbox" '.(!empty($archive_noindex) ? 'checked="yes"' : '').' value="1"/>
						' . wp_kses_post('Do not display author archives in search engine results <strong>(noindex)</strong>') .'
						</label><br/><br/>
						<label>
						<input name="siteseo_options['.esc_attr($post_name).'][archive_nofollow]" type="checkbox" '.(!empty($archive_nofollow) ? 'checked="yes"' : 'value="1"').' />'.wp_kses_post(__('Do not follow links for this taxonomy archive<strong>(nofollow)</strong>', 'siteseo')).'
						</label>
					</div><span class="line"><span>';
				}
	                    echo'</td>
	                </tr>
	            </tbody>
	        </table>
	        <input type="hidden" name="siteseo_options[archives_tab]" value="1"/>';
	}
    

    static function post_types(){
        global $siteseo;

		if(!empty($_POST['submit'])){
			self::save_settings();
		}

		$options = get_option('siteseo_titles_option_name');
		$post_types = siteseo_post_types();

        echo '<table class="form-table">
                <tbody>
                    <tr>
                        <th scope="row">
                            <div class="siteseo-container">';
                                $is_first = true;
                                foreach($post_types as $post_type => $post_arr){
                                    $active_class = $is_first ? 'active' : '';
                                    echo '<a href="#'.esc_attr($post_type).'-types" class="'.esc_attr($active_class).'">'.esc_html($post_arr->labels->name).'</a>';
                                    $is_first = false;
                                }
                        echo '</div>
                        </th><td>
						<div>
							<h3>'.esc_html__('Post Types', 'siteseo').'</h3>
						   <div class="siteseo_wrap_label"><p class="description">'.esc_html__('Personalize your titles and meta descriptions for single custom post types.', 'siteseo').'</p></div>
						</div>';

		foreach($post_types as $post_type => $post_arr){
			// Load array
			$post_data = isset($options['titles_single_titles'][$post_type]) ? $options['titles_single_titles'][$post_type] : '';

			// Load settings
			$option_post_disabled = !empty($post_data['disabled']) ? true : false;
			$option_post_title = !empty($post_data['title']) ? $post_data['title'] : '';
			$option_post_desc = !empty($post_data['description']) ? $post_data['description'] : '';
			$option_noindex = !empty($post_data['noindex']) ? $post_data['noindex'] : '';
			$option_nofollow = !empty($post_data['nofollow']) ? $post_data['nofollow'] : '';
			$option_date = !empty($post_data['date']) ? $post_data['date'] : '';
			$option_thumb_gcs = !empty($post_data['thumb_gcs']) ? $post_data['thumb_gcs'] : '';

			echo '<div id="'.esc_attr($post_type).'-types">';
				echo '<div class="siteseo-toggle-cnt">
						<h3>'.esc_html($post_arr->labels->name.' ['.$post_type.']').'</h3>&nbsp;&nbsp;
						<div class="siteseo-toggle-meta '.($option_post_disabled ? '' : 'active').'" id="siteseo-toggle-meta-'.esc_attr($post_type).'"></div>
						<span id="siteseo-arrow-icon" class="dashicons dashicons-arrow-left-alt siteseo-arrow-icon"></span>
						<p class="toggle_state_posts" id="toggle_state_'.esc_attr($post_type).'">'.(!$option_post_disabled ? ' Click to hide any SEO metaboxes / columns for this post type' : ' Click to show any SEO metaboxes / columns for this post type').'</p>
						<input type="hidden" name="siteseo_options['.esc_attr($post_type).'][disabled]" id="enable_'.esc_attr($post_type).'_toggle" value="'.esc_attr($option_post_disabled).'" class="siteseo-suboption-toggle">
					</div>
					
					<div class="siteseo_wrap_label"><p>'.esc_html__('Title template', 'siteseo').'</p></div>
					<input type="text" name="siteseo_options['.esc_attr($post_type).'][title]" value="'.esc_attr($option_post_title).'">
					<div class="wrap-tags">
						<button class="tag-title-btn" id="btn-post-title" data-tag="%%post_title%%">
							<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('POST TITLE', 'siteseo').'
						</button>
						<button class="tag-title-btn" id="btn-post-separator" data-tag="%%sep%%">
							<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SEPARATOR', 'siteseo').'
						</button>
						<button class="tag-title-btn" id="btn-post-site-title" data-tag="%%sitetitle%%">
							<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SITE TITLE', 'siteseo').'
						</button>';
						siteseo_suggestion_button();
					echo '</div>
					<div class="siteseo_wrap_label"><p class="description">'.esc_html__('Meta description template', 'siteseo').'</p></div>
					<textarea name="siteseo_options['.esc_attr($post_type).'][desc]">'.esc_attr($option_post_desc).'</textarea>
					<div class="wrap-tags">
						<button class="tag-title-btn" id="btn-'.esc_attr($post_type).'-meta" data-tag="%%post_excerpt%%">
							<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('POST EXCERPT', 'siteseo').'
						</button>';
						siteseo_suggestion_button();
					echo '</div>
					<div class="siteseo_wrap_label">
						<label>
							<input name="siteseo_options['.esc_attr($post_type).'][noindex]" type="checkbox" '.(!empty($option_noindex) ? 'checked="yes"' : 'value="1"').' />
							'.wp_kses_post(__('Do not display this single post type in search engine results <strong>(noindex)</strong>', 'siteseo')).'
						</label>
					</div>';
					
					if(!empty($option_noindex)){
						echo '<div class="siteseo_wrap_label">
							<div class="siteseo-notice is-error">
								<p>'.wp_kses_post(__('This custom post type is <strong>NOT</strong> excluded from your XML sitemaps despite the fact that it is set to <strong>NOINDEX</strong>.', 'siteseo')).'
								</p>
							</div>
						</div>';
					}
					
					echo '<div class="siteseo_wrap_label">
						<label>
							<input name="siteseo_options['.esc_attr($post_type).'][nofollow]" type="checkbox" '.(!empty($option_nofollow) ? 'checked="yes"' : 'value="1"').' />
							'.wp_kses_post(__('Do not follow links for this single post type <strong>nofollow</strong>', 'siteseo')).'
						</label>
					</div>
					<div class="siteseo_wrap_label">
						<label>
							<input name="siteseo_options['.esc_attr($post_type).'][date]" type="checkbox" '.(!empty($option_date) ? 'checked="yes"' : 'value="1"').' />
							'.esc_html__('Display date in Google search results by adding article:published_time and article:modified_time meta?', 'siteseo').'
						</label>
						<p class="description">'. esc_html__('Unchecking this does not prevent Google from displaying the post date in search results.', 'siteseo').'</p>
					</div>
					<div class="siteseo_wrap_label">
						<label>
							<input name="siteseo_options['.esc_attr($post_type).'][thumb_gcs]" type="checkbox" '.(!empty($option_thumb_gcs) ? 'checked="yes"' : 'value="1"').' />
							'.esc_html__('Display post thumbnail in Google Custom Search results?', 'siteseo').'
						</label>
						<p class="description">'.esc_html__('This option does not apply to traditional search results.', 'siteseo').'</p>
					</div>
				</div>';
		}
                    echo '</td></tr>
                </tbody>
            </table>
			<input type="hidden" name="siteseo_options[post_types_tab]" value="1"/>';
    }
    
    static function taxonomies(){
        global $siteseo;
 
        if(!empty($_POST['submit'])){
            self::save_settings();
        }

        // $options = $siteseo->titles_setting;
        $options = get_option('siteseo_titles_option_name');
		$taxonomies = get_taxonomies(['show_ui' => true, 'public'  => true], 'objects', 'and');

		echo '<table class="form-table">
			<tbody>
				<tr>
					<th scope="row">
						<div class="siteseo-container">';
							$is_first = true;
							foreach($taxonomies as $fields_key => $fields_val){
								$active_class = $is_first ? 'active' : '';
								echo '<a href="#'.esc_attr($fields_key).'-types" class="'.esc_attr($active_class).'">'.esc_html($fields_val->label).'</a>';
								$is_first = false;
							}
            echo '</th>
                    <td>
                        <h3>'.esc_html__('Taxonomies','siteseo').'</h3>
						<div class="siteseo_wrap_label">
                        <p class="description">'.esc_html__('Personalize your meta descriptions for all taxonomy archives.','siteseo').'</p>
						</div>';
		
		foreach($taxonomies as $taxonomy => $_tax){
			// Load array
			$options_tax = isset($options['titles_tax_titles'][$taxonomy]) ? $options['titles_tax_titles'][$taxonomy] : '';
			
			// Load settings
			$option_disabled_category = !empty($options_tax['disabled']) ? $options_tax['disabled'] : '';
			$option_cat_title = !empty($options_tax['title']) ? $options_tax['title'] : '';
			$option_cat_desc = !empty($options_tax['description']) ? $options_tax['description'] : '';
			$option_cat_noindex = !empty($options_tax['noindex']) ? $options_tax['noindex'] : '';
			$option_cat_nofollow = !empty($options_tax['nofollow']) ? $options_tax['nofollow'] : '';
	 
			$taxonomies_fields = [
				'categories-types' => 'Categories',
				'tags-types' => 'Tags',
			];

			echo '<div id="'.esc_attr($taxonomy).'-types"><h3>'.esc_html($_tax->label.'['.$taxonomy.']').'</h3>
				<div class="siteseo-toggle-cnt">
					<div class="siteseo-toggle-meta '.($option_disabled_category ? '' : 'active').'" id="siteseo-toggle-meta-category"></div>
					<span id="siteseo-arrow-icon" class="dashicons dashicons-arrow-left-alt siteseo-arrow-icon"></span>
					<p class="toggle_state_category" id="toggle_state_category">' .($option_disabled_category ? 'Enable' : 'Disable'). '</p>
					<input type="hidden" name="siteseo_options['.esc_attr($taxonomy).'][disabled]" id="enable_'.esc_attr($taxonomy).'" value="'.esc_attr($option_disabled_category).'" class="siteseo-suboption-toggle">
				</div>

				<div class="siteseo_wrap_label">
					<p class="description">'.esc_html__('Title template','siteseo').'</p>
				</div>
				<input type="text" value="'.esc_attr($option_cat_title).'" name="siteseo_options['.esc_attr($taxonomy).'][title]">
				<div class="wrap-tags">
					<button class="tag-title-btn" data-tag="%%_category_title%%">
						<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('CATEGORY TITLE','siteseo').'
					</button>
					<button class="tag-title-btn"  data-tag="%%sep%%">
						<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SEPARATOR','siteseo').'
					</button>
					<button class="tag-title-btn"  data-tag="%%sitetitle%%">
						<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('SITE TITLE','siteseo').'
					</button>';
						siteseo_suggestion_button(); 
				echo '</div>
				<div class="siteseo_wrap_label">
					<p class="description">Meta description template</p>
				</div>
				<textarea name="siteseo_options['.esc_attr($taxonomy).'][desc]">'.esc_attr($option_cat_desc).'</textarea>
				<div class="wrap-tags">
					<button class="tag-title-btn" data-tag="%%_category_description%%">
						<span id="icon" class="dashicons dashicons-insert"></span>'.esc_html__('CATEGORY DESCRIPTION','siteseo').'
					</button>';
					siteseo_suggestion_button();
				echo '</div>
				<div class="siteseo_wrap_label">
					<label>
						<input name="siteseo_options['.esc_attr($taxonomy).'][noindex]" type="checkbox" '.(!empty($option_cat_noindex) ? 'checked="yes"' : 'value="1"').' />
						'.wp_kses_post(__('Do not display this taxonomy archive in search engine results<strong>(noindex)</strong>', 'siteseo')).'
					</label>
				</div>';
				
				if(!empty($option_cat_noindex)){
					echo '<div class="siteseo_wrap_label">
						<div class="siteseo-notice is-error">
							<p>'.wp_kses_post(__('This custom taxonomy is <strong>NOT</strong> excluded from your XML sitemaps despite the fact that it is set to <strong>NOINDEX</strong>. We recommend that you check this out.', 'siteseo')).'
							</p>
						</div>
					</div>';
				}
				
				echo '<div class="siteseo_wrap_label">
					<label>
						<input name="siteseo_options['.esc_attr($taxonomy).'][nofollow]" type="checkbox" '.(!empty($option_cat_nofollow) ? 'checked="yes"' : 'value="1"').' />
						'.wp_kses_post(__('Do not follow links for this taxonomy archive<strong>(nofollow)</strong>', 'siteseo')).'
					</label>
				</div>
			</div>';
		}
                    echo '</td>
                </tr>
            </tbody>
        </table>
        <input type="hidden" name="siteseo_options[taxonomies_tab]" value="1"/>';
    }
    

    static function save_settings(){
        global $siteseo;
		
		check_admin_referer('siteseo_title_settings');

		if(!siteseo_user_can('manage_title') || !is_admin()){
			return;
		}

		$options = [];

		if(empty($_POST['siteseo_options'])){
			return;
		}

        if(isset($_POST['siteseo_options']['home_tab'])){
            
            $options['titles_sep'] = isset($_POST['siteseo_options']['separator']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['separator'])) : '';
			$options['titles_home_site_title'] = isset($_POST['siteseo_options']['site_title']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['site_title'])) : '';
			$options['titles_home_site_title_alt'] = isset($_POST['siteseo_options']['alt_site_title']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['alt_site_title'])) : '';
			$options['titles_home_site_desc'] = isset($_POST['siteseo_options']['media_desc']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['media_desc'])) : '';
        }

        if(isset($_POST['siteseo_options']['advanced_tab'])){

            $options['titles_noindex'] = isset($_POST['siteseo_options']['noindex']);
			$options['titles_nofollow'] = isset($_POST['siteseo_options']['no_follow']);
			$options['titles_noimageindex'] = isset($_POST['siteseo_options']['no_image']);
			$options['titles_noarchive'] = isset($_POST['siteseo_options']['no_archive']);
            $options['titles_nosnippet'] = isset($_POST['siteseo_options']['no_snippet']);
            $options['titles_nositelinkssearchbox'] = isset($_POST['siteseo_options']['no_site_links_searchbox']);
            $options['titles_paged_rel'] = isset($_POST['siteseo_options']['page_rel']);
            $options['titles_paged_noindex'] = isset($_POST['siteseo_options']['titles_paged_noindex']);
            $options['titles_attachments_noindex'] = isset($_POST['siteseo_options']['attachments_noindex']);

        }

        if(isset($_POST['siteseo_options']['post_types_tab'])){
			
			$post_types = siteseo_post_types();
			$post_types = array_keys($post_types);

			// Saving Posts
			foreach($post_types as $post_type){
				$options['titles_single_titles'][$post_type]['disabled'] = !empty($_POST['siteseo_options'][$post_type]['disabled']) ? true : false;
				$options['titles_single_titles'][$post_type]['title'] = isset($_POST['siteseo_options'][$post_type]['title']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options'][$post_type]['title'])) : '';
				$options['titles_single_titles'][$post_type]['description'] = isset($_POST['siteseo_options'][$post_type]['desc']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options'][$post_type]['desc'])) : '';
				$options['titles_single_titles'][$post_type]['noindex'] = isset($_POST['siteseo_options'][$post_type]['noindex']);
				$options['titles_single_titles'][$post_type]['nofollow'] = isset($_POST['siteseo_options'][$post_type]['nofollow']);
				$options['titles_single_titles'][$post_type]['date'] = isset($_POST['siteseo_options'][$post_type]['date']);
				$options['titles_single_titles'][$post_type]['thumb_gcs'] = isset($_POST['siteseo_options'][$post_type]['thumb_gcs']);
			}
        }

        if(isset($_POST['siteseo_options']['archives_tab'])){
			
			$post_types = siteseo_post_types();
			$post_types = array_keys($post_types);
			
            $options['titles_archives_author_title'] = isset($_POST['siteseo_options']['author_title']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['author_title'])) : '';
			$options['titles_archives_author_desc'] = isset($_POST['siteseo_options']['author_desc']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['author_desc'])) : '';
			$options['titles_archives_author_noindex'] = isset($_POST['siteseo_options']['author_noindex']);
			$options['titles_archives_author_disable'] = isset($_POST['siteseo_options']['author_disable']);
            
			$options['titles_archives_date_title'] = isset($_POST['siteseo_options']['date_title']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['date_title'])) : '';
			$options['titles_archives_date_desc'] = isset($_POST['siteseo_options']['date_desc']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['date_desc'])) : '';
			$options['titles_archives_date_noindex'] = isset($_POST['siteseo_options']['date_noindex']);
			$options['titles_archives_date_disable'] = isset($_POST['siteseo_options']['date_disable']);
            
			$options['titles_archives_search_title'] = isset($_POST['siteseo_options']['search_title']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['search_title'])) : '';
			$options['titles_archives_search_desc'] = isset($_POST['siteseo_options']['search_desc']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['search_desc'])) : '';
			$options['titles_archives_search_title_noindex'] = isset($_POST['siteseo_options']['search_noindex']);
            
			$options['titles_archives_404_title'] = isset($_POST['siteseo_options']['title_404']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['title_404'])) : '';
			$options['titles_archives_404_desc'] = isset($_POST['siteseo_options']['desc_404'])  ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['desc_404'])) : '';
			
			foreach($post_types as $post_type){					
				$options['titles_archive_titles'][$post_type]['archive_title'] = isset($_POST['siteseo_options'][$post_type]['archive_title']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options'][$post_type]['archive_title'])) : '';
				$options['titles_archive_titles'][$post_type]['archive_desc'] = isset($_POST['siteseo_options'][$post_type]['archive_desc']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options'][$post_type]['archive_desc'])) : '';
				$options['titles_archive_titles'][$post_type]['archive_noindex'] = isset($_POST['siteseo_options'][$post_type]['archive_noindex']);
				$options['titles_archive_titles'][$post_type]['archive_nofollow'] = isset($_POST['siteseo_options'][$post_type]['archive_nofollow']);
			}

        }

        if(isset($_POST['siteseo_options']['taxonomies_tab'])){
			$taxonomies = get_taxonomies(['show_ui' => true, 'public'  => true], 'objects', 'and');
			$taxonomies = array_keys($taxonomies);

			foreach($taxonomies as $taxonomy){
				$options['titles_tax_titles'][$taxonomy]['disabled'] = !empty($_POST['siteseo_options'][$taxonomy]['disabled']) ? true : false;
				$options['titles_tax_titles'][$taxonomy]['title'] = isset($_POST['siteseo_options'][$taxonomy]['title']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options'][$taxonomy]['title'])) : '';
				$options['titles_tax_titles'][$taxonomy]['description'] = isset($_POST['siteseo_options'][$taxonomy]['desc']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options'][$taxonomy]['desc'])) : '';
				$options['titles_tax_titles'][$taxonomy]['noindex'] = isset($_POST['siteseo_options'][$taxonomy]['noindex']);
				$options['titles_tax_titles'][$taxonomy]['nofollow'] = isset($_POST['siteseo_options'][$taxonomy]['nofollow']);
			}
        }

        $options = apply_filters('siteseo_titles_save_settings', $options);

        update_option('siteseo_titles_option_name', $options);
    }
 }
PK��f\��1����main/settings/analytics.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO\Settings;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Analytics{

	static function menu(){
		global $siteseo;

		$analytics_toggle = isset($siteseo->setting_enabled['toggle-google-analytics']) ? $siteseo->setting_enabled['toggle-google-analytics'] : '';
		$nonce = wp_create_nonce('siteseo_toggle_nonce');

		$current_tab = isset($_GET['tab']) ? sanitize_key($_GET['tab']) : 'tab_google_analytics';

		$analytics_sub_tags = [
			'tab_google_analytics' => esc_html__('Google Analytics', 'siteseo'),
			'tab_matomo' => esc_html__('Matomo', 'siteseo'),
			'tab_clarity' => esc_html__('Clarity', 'siteseo'),
			'tab_advanced' => esc_html__('Advanced', 'siteseo'),
			'tab_cookie' => esc_html__('Cookie bar / GDPR', 'siteseo'),
			'tab_custom_tracking' => esc_html__('Custom Tracking', 'siteseo'),
		];
		
		echo '<div id="siteseo-root">';
		
		Util::admin_header();

		echo '<form method="post" id="siteseo-form" class="siteseo-option" name="siteseo-flush">';
		wp_nonce_field('siteseo_analytics_settings');

		Util::render_toggle('Analytics - SiteSEO', 'analytics_toggle', $analytics_toggle, $nonce);
        
		echo '<div id="siteseo-tabs" class="wrap">
			<div class="siteseo-nav-tab-wrapper">';

		foreach($analytics_sub_tags as $tab_key => $tab_caption){
			$active_class = ($current_tab === $tab_key) ? ' siteseo-nav-tab-active' : '';
			echo '<a id="'.esc_attr($tab_key).'-tab" class="siteseo-nav-tab'.esc_attr($active_class).'" data-tab="'.esc_attr($tab_key).'">'.esc_html($tab_caption).'</a>';
		}

		echo '</div>
		<div class="tab-content-wrapper">
		<div class="siteseo-tab'.($current_tab == 'tab_google_analytics' ? ' active' : '').'" id="tab_google_analytics" style="display: none;">';
		self::google_anlytics();
		echo '</div>     
		<div class="siteseo-tab'.($current_tab == 'tab_matomo' ? ' active' : '') . '" id="tab_matomo" style="display: none;">';
		self::matomo();
		echo '</div>     
		<div class="siteseo-tab'.($current_tab == 'tab_clarity' ? ' active' : '').'" id="tab_clarity" style="display: none;">';
		self::clarity();
		echo '</div>     
		<div class="siteseo-tab'.($current_tab == 'tab_advanced' ? ' active' : '').'" id="tab_advanced" style="display: none;">';
		self::advanced();
		echo '</div>     
		<div class="siteseo-tab'.($current_tab == 'tab_cookie' ? ' active' : '').'" id="tab_cookie" style="display: none;">';
		self::cookies();
		echo '</div>  
		<div class="siteseo-tab'.($current_tab == 'tab_custom_tracking' ? 'active' : '').'" id="tab_custom_tracking" style="display: none;">';
		self::custom_tracking();
		echo '</div>
		</div>';
		Util::submit_btn();
		echo '</form></div>';
	}
	
	static function custom_tracking(){
		global $siteseo;

		if(!empty($_POST['submit'])){
			self::save_settings();
		}
		
		//$options = $siteseo->analaytics_settings;
		$options = get_option('siteseo_google_analytics_option_name');

		$option_head_tracking = !empty($options['google_analytics_other_tracking']) ? $options['google_analytics_other_tracking'] : '';
		$option_body_tracking = !empty($options['google_analytics_other_tracking_body']) ? $options['google_analytics_other_tracking_body'] : '';
		$option_footer_tracking = !empty($options['google_analytics_other_tracking_footer']) ? $options['google_analytics_other_tracking_footer'] : '';
		
		echo '<h3 class="siteseo-tabs">'.esc_html__('Custom Tracking','siteseo').'</h3>
			<P class="description">'.esc_html__('Add custom scripts like GTM or Facebook Pixel by copying and pasting the provided code into the HEAD, BODY, or FOOTER sections.','siteseo').'</p>
			<table class="form-table">
				<tbody>

					<tr>
						<th scope="row">'.esc_html__('[HEAD] Add an additional tracking code (like Facebook Pixel, Hotjar...)','siteseo').'</th>
						<td>
							<textarea name="siteseo_options[head_tracking]" rows="16" placeholder="'.esc_html__('Paste your tracking code here, such as Google Tag Manager (head). Do NOT paste GA4 or Universal Analytics codes, as they are automatically included in your source code.','siteseo').'">'.esc_html($option_head_tracking).'</textarea>
							<p class="description">'.esc_html__('This code will be added in the head section of your page','siteseo').'</p>
						</td>
					</tr>

					<tr>
						<th scope="row">'.esc_html__('[BODY] Add an additional tracking code (like Google Tag Manager...)','siteseo').'</th>
						<td>
							<textarea name="siteseo_options[body_tracking]" rows="16" placeholder="'.esc_html__('This code will be added just after the opening body tag of your page','siteseo').'">'.esc_html($option_body_tracking).'</textarea>
							<p>'.esc_html__('This code will be added just after the opening body tag of your page','siteseo').'</p>
							<p>'.esc_html__('You don‘t see your code? Make sure to call wp_body_open(); just after the opening body tag in your theme.','siteseo').'</p>
						</td>
					</tr>

					<tr>
						<th scope="row">'.esc_html__('[BODY (FOOTER)] Add an additional tracking code (like Google Tag Manager...)', 'siteseo').'</th>
						<td>
							<textarea name="siteseo_options[footer_tracking]" rows="16" placeholder="'.esc_html__('Paste your tracking code here(footer)','siteseo').'">'.esc_html($option_footer_tracking).'</textarea> 
							<p>'.esc_html__('This code will be added just after the closing body tag of your page','siteseo').'</P>
						</td>
					</tr>
				</tbody>
			</table><input type="hidden" name="siteseo_options[custom_tracking_tab]" value="1"/>';
		
	}

	static function cookies(){
		global $siteseo;

		if(!empty($_POST['submit'])){
			self::save_settings();
		}

		//$options = $siteseo->analaytics_settings;
		$options = get_option('siteseo_google_analytics_option_name');

		$option_cookies_postion = !empty($options['google_analytics_hook']) ? $options['google_analytics_hook'] : '';
		$option_tracking_opt = !empty($options['google_analytics_disable']) ? $options['google_analytics_disable'] : '';
		$option_half_disable = !empty($options['google_analytics_half_disable']) ? $options['google_analytics_half_disable'] : '';
		$option_opt_choices = !empty($options['google_analytics_opt_out_edit_choice']) ? $options['google_analytics_opt_out_edit_choice'] : '';
		$option_opt_msg = !empty($options['google_analytics_opt_out_msg']) ? $options['google_analytics_opt_out_msg'] : '';
		$option_opt_msg_ok = !empty($options['google_analytics_opt_out_msg_ok']) ? $options['google_analytics_opt_out_msg_ok'] : '';
		$option_opt_msg_close = !empty($options['google_analytics_opt_out_msg_close']) ? $options['google_analytics_opt_out_msg_close'] : '';
		$option_opt_msg_edit = !empty($options['google_analytics_opt_out_msg_edit']) ? $options['google_analytics_opt_out_msg_edit'] : '';
		$option_cd_exp_date = !empty($options['google_analytics_cb_exp_date']) ? $options['google_analytics_cb_exp_date'] : '30';
		$option_cd_pos = !empty($options['google_analytics_cb_pos']) ? $options['google_analytics_cb_pos'] : '';
		$option_cd_txt_align = !empty($options['google_analytics_cb_txt_align']) ? $options['google_analytics_cb_txt_align'] : '';
		$option_cd_width = !empty($options['google_analytics_cb_width']) ? $options['google_analytics_cb_width'] : '';
		$option_cd_backdrop = !empty($options['google_analytics_cb_backdrop']) ? $options['google_analytics_cb_backdrop'] : '';
		$option_cd_scheme = !empty($options['google_analytics_cb_scheme']) ? $options['google_analytics_cb_scheme'] : '';

		//colors load
		$option_backdrop_bg = !empty($options['google_analytics_cb_backdrop_bg']) ? $options['google_analytics_cb_backdrop_bg'] : '';
		$option_cookiebar_bg = !empty($options['google_analytics_cb_bg']) ? $options['google_analytics_cb_bg'] : '#ffffff';
		$option_cookiebar_txt = !empty($options['google_analytics_cb_txt_col']) ? $options['google_analytics_cb_txt_col'] : '#000000';
		$option_cookiebar_lk = !empty($options['google_analytics_cb_lk_col']) ? $options['google_analytics_cb_lk_col'] : '#0000ff';
		$option_primarybtn_bg = !empty($options['google_analytics_cb_btn_bg']) ? $options['google_analytics_cb_btn_bg'] : '#0073aa';
		$option_primarybtn_bg_hov = !empty($options['google_analytics_cb_btn_bg_hov']) ? $options['google_analytics_cb_btn_bg_hov'] : '#005f8b';
		$option_primarybtn_txt = !empty($options['google_analytics_cb_btn_col']) ? $options['google_analytics_cb_btn_col'] : '#ffffff';
		$option_primarybtn_txt_hov = !empty($options['google_analytics_cb_btn_col_hov']) ? $options['google_analytics_cb_btn_col_hov'] : '#ffffff';
		$option_sec_bg = !empty($options['google_analytics_cb_btn_sec_bg']) ? $options['google_analytics_cb_btn_sec_bg'] : '#cccccc';
		$option_sec_bg_hov = !empty($options['google_analytics_cb_btn_sec_bg_hov']) ? $options['google_analytics_cb_btn_sec_bg_hov'] : '#aaaaaa';
		$option_sec_bg_txt = !empty($options['google_analytics_cb_btn_sec_col']) ? $options['google_analytics_cb_btn_sec_col'] : '#000000';
		$option_sec_bg_txt_hov = !empty($options['google_analytics_cb_btn_sec_col_hov']) ? $options['google_analytics_cb_btn_sec_col_hov'] : '#000000';

		echo '<h3 class="siteseo-tabs">'.esc_html__('Cookies','siteseo').'</h3>
		<p class="description">'.esc_html__('Easily manage user consent for GDPR and customize your cookie bar.','siteseo').'</p>
		<p class="description">'.esc_html__('Compatible with Google Analytics and Matomo.','siteseo').'</p>
		<table>
			<tbody class="form-table">
				<tr>
					<div class="siteseo-notice" id="custom-dimensions">
						<span class="dashicons dashicons-info"></span>
						<p>'.
						/* translators: placeholders are just <strong> tag */ 
						wp_kses_post(sprintf(__('%1$s Note : %2$s This feature applies only to cookies added through SiteSEO analytics and tracking.', 'siteseo'), '<strong>', '</strong>')).'</p>
					</div>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Where to load the cookie bar?','siteseo').'</th>
					<td>
						<select name="siteseo_options[cookie_pos]">
							<option value="wp_body_open" '.selected($option_cookies_postion, 'wp_body_open', false).'>'.esc_html__('After the opening body tag (recommended)', 'siteseo').'</option>
							<option value="wp_footer" '.selected($option_cookies_postion, 'wp_footer', false).'>'.esc_html__('Footer', 'siteseo') .'</option>
							<option value="wp_head" '.selected($option_cookies_postion, 'wp_head', false).'>'.esc_html__('Header (not recommended)', 'siteseo').'</option>
						</select>
					</td>
				</tr>

				<tr>
					<th scope"user-select:auto">'.esc_html__('Analytics tracking opt-in','siteseo').'</th>
					<td>
						<label>
							<input name="siteseo_options[opt_tracking]" type="checkbox" '.(!empty($option_tracking_opt) ? 'checked="yes"' : 'value="1"').' />
								'.esc_html__('Obtain user consent for analytics tracking, as required by GDPR.', 'siteseo').'
                        </label><br/><br/>
						<label>
						<input type="checkbox" name="siteseo_options[half_disable]" '.(!empty($option_half_disable) ? 'checked="yes"' : 'value="1"').' />
							'.esc_html__('Display and automatically accept if user does not accept or reject within 10 seconds.','siteseo').'
						</label>
					</td>
				</tr>

				<tr>
					<th scope="row" style="user-select:auto:">'.esc_html__('Allow user to change its choice','siteseo').'</th>
					<td>
						<label>
							<input name="siteseo_options[opt_edit_choices]" type="checkbox" '.(!empty($option_opt_choices) ? 'checked="yes"' : 'value="1"').' />
							Allow user to change its choice about cookies'.esc_html__('Request user consent for analytics tracking (required by GDPR)', 'siteseo').'
                        </label>
					</td>
				</tr>

				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Consent message for user tracking','siteseo').'</th>
					<td>
						<textarea placeholder="'.esc_html__('Enter your message (HTML allowed)','siteseo').'" name="siteseo_options[opt_msg]" >'.esc_attr($option_opt_msg).'</textarea>
					</td>
				</tr>

				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Accept button for user tracking','siteseo').'</th>
					<td>
						<input type="text" name="siteseo_options[opt_msg_ok]" value="'.esc_attr($option_opt_msg_ok).'" placeholder="'.esc_html__('Accept','siteseo').'"> 
					</td>
				</tr>

				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Close button','siteseo').'</th>
					<td>
						<input type="text" name="siteseo_options[opt_close]" value="'.esc_attr($option_opt_msg_close).'" placeholder="'.esc_attr__('default:X', 'siteseo').'">
					</td>
				</tr>

				<tr>
					<th scope="row" style="user-select:auto;" >'.esc_html__('Edit cookies button','siteseo').'</th>
					<td>
						<input type="text" name="siteseo_options[opt_edit_btn]" value="'.esc_attr($option_opt_msg_edit).'" placeholder="'.esc_attr__('default:Manage cookie', 'siteseo').'">
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('User consent cookie expiration date','siteseo').'</th>
					<td>
						<input type="number"  name="siteseo_options[cd_exp_date]" value="'.esc_attr($option_cd_exp_date).'" >
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Cookie bar position','siteseo').'</th>
					<td>
						<select name="siteseo_options[cd_pos]">
							<option value="bottom" '.selected($option_cd_pos, 'bottom', false).'>'.esc_html__('Bottom (default)','siteseo').'</option>
							<option value="middle" '.selected($option_cd_pos, 'middle', false).'>'.esc_html__('Middle','siteseo').'</option>
							<option value="top" '.selected($option_cd_pos, 'top', false).'>'.esc_html__('Top','siteseo').'</option>
						</select>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="use-select:auto;">'.esc_html__('Text alignment','siteseo').'</th>
					<td>
						<select name="siteseo_options[cd_txt_align]">
							<option value="center" '.selected($option_cd_txt_align, 'center', false).'>'.esc_html__('Center (default)', 'siteseo').'</option>
							<option value="left" '.selected($option_cd_txt_align, 'left', false).'>'.esc_html__('Left', 'siteseo').'</option>
							<option value="right" '.selected($option_cd_txt_align, 'right', false).'>'.esc_html__('Right', 'siteseo').'</option>
						</select>
					</td>
				</tr>

				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Cookie bar width', 'siteseo').'</th>
					<td>
						<input type="text" name="siteseo_options[cd_width]"  value="'.esc_attr($option_cd_width).'"/>
						<p class="description">'.esc_html__('The default unit is Pixels. To use percentages, simply add % after your custom value (e.g., 80%).', 'siteseo').'</p>
						<br/>
						<span class="line"></span>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;"></th>
					<td>
						<h3>'.esc_html__('Backdrop', 'siteseo').'</h3>
						<p>'.esc_html__('Customize the backdrop of the cookie bar.', 'siteseo').'</p><br/>
						<label>
							<input type="checkbox" name="siteseo_options[cd_backdrop]" '.(!empty($option_cd_backdrop) ? 'checked="yes"' : 'value="1"').'>'. esc_html__('Display a backdrop with the cookie bar', 'siteseo') .'
						</label>
						<br/><br/>
						<p>'.esc_html__('Background color:','siteseo').'</p><br/>
						<input type="color" placeholder="Select color" name="siteseo_options[backdrop_bg]" value="'.esc_attr($option_backdrop_bg).'"/>
						<br/></br/>
						<span class="line"></span>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;"></th>
					<td>
						<h3>'.esc_html__('Main settings', 'siteseo').'</h3>
						<p>'.esc_html__('Customize the general settings of the cookie bar', 'siteseo').'</p>
						<p>'.esc_html__('Background color:', 'siteseo').'</p><br/>
						<input type="color"  placeholder="'.esc_html__('Select color', 'siteseo').'" name="siteseo_options[cookiesbar_bg]" value="'.esc_attr($option_cookiebar_bg).'"/>
						<p>'.esc_html__('Text color:', 'siteseo').'</p><br/>
						<input type="color"  placeholder="'.esc_html__('Select color', 'siteseo').'" name="siteseo_options[cookiebar_txt]" value="'.esc_attr($option_cookiebar_txt).'"/>
						<p>'.esc_html__('Link color: ','siteseo').'</p></br>
						<input type="color"  placeholder="'.esc_html__('Select color', 'siteseo').'" name="siteseo_options[line_co]" value="'.esc_attr($option_cookiebar_lk).'"/><br/></br>
						<span class="line"></span>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="use-select:auto"></th>
					<td>
						<h3>'.esc_html__('Primary button', 'siteseo').'</h3>
						<p>'.esc_html__('Customize the Accept button', 'siteseo').'</p><br/>
						<p>'.esc_html__('Background color:', 'siteseo').'</p>
						<input type="color"  placeholder="'.esc_html__('Select color', 'siteseo').'" name="siteseo_options[primary_btn_bg]" value="'.esc_attr($option_primarybtn_bg).'"/><br/><br/>
						<p>'.esc_html__('Background color on hover:','siteseo').'</p>
						<input type="color" name="siteseo_options[primary_btn_bg_hov]" value="'.esc_attr($option_primarybtn_bg_hov).'" /><br/><br/>
						<p>'.esc_html__('Text color:', 'siteseo').'</p>
						<input type="color" name="siteseo_options[primary_btn_txt]" value="'.esc_attr($option_primarybtn_txt).'"/>
						<p>'. esc_html__('Text color on hover:', 'siteseo') .'</p>
						<input type="color" name="siteseo_options[primary_btn_txt_hov]" value="'.esc_attr($option_primarybtn_txt_hov).'"/><br/><br/>
						<span class="line"></span>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto"></th>
					<td>
						<h3>'.esc_html__('Secondary button', 'siteseo').'</h3>
						<p>'.esc_html__('Customize the Accept button', 'siteseo').'</p><br/>
						<p>'.esc_html__('Background color:', 'siteseo').'</p>
						<input type="color"  placeholder="'.esc_html__('Select color','siteseo').'" name="siteseo_options[sec_btn_bg]" value="'.esc_attr($option_sec_bg).'"/><br/><br/>
						<p>'.esc_html__('Background color on hover:', 'siteseo').'</p>
						<input type="color" name="siteseo_options[sec_btn_bg_hov]" value="'.esc_attr($option_sec_bg_hov).'"/><br/><br/>
						<p>'.esc_html__('Text color:', 'siteseo').'</p>
						<input type="color" name="siteseo_options[sec_btn_txt]" value="'.esc_attr($option_sec_bg_txt).'"/>
						<p>'.esc_html__('Text color on hover:', 'siteseo').'</p>
						<input type="color" name="siteseo_options[sec_btn_txt_hov]" value="'.esc_attr($option_sec_bg_txt_hov).'"/>
					</td>
				</tr>
			</tbody>
		</table><input type="hidden" name="siteseo_options[cookies_tab]" value="1"/>'; 

	}
	

	static function matomo(){
		global $siteseo;

        if(!empty($_POST['submit'])){
            self::save_settings();
        }

		//$options = $siteseo->analaytics_settings;
		$options = get_option('siteseo_google_analytics_option_name');

		$option_enable_matomo = !empty($options['google_analytics_matomo_enable']) ? $options['google_analytics_matomo_enable'] : '';
		$option_self_hosted = !empty($options['google_analytics_matomo_self_hosted']) ? $options['google_analytics_matomo_self_hosted'] : '';
		$option_matomo_id = !empty($options['google_analytics_matomo_id']) ? $options['google_analytics_matomo_id'] : '';
		$option_site_id = !empty($options['google_analytics_matomo_site_id']) ? $options['google_analytics_matomo_site_id'] : '';
		$option_sub_domain = !empty($options['google_analytics_matomo_subdomains']) ? $options['google_analytics_matomo_subdomains'] : '';
		$option_site_domain = !empty($options['google_analytics_matomo_site_domain']) ? $options['google_analytics_matomo_site_domain'] : '';
		$option_enable_corss_domain = !empty($options['google_analytics_matomo_cross_domain']) ? $options['google_analytics_matomo_cross_domain'] : '';
		$option_no_js = !empty($options['google_analytics_matomo_no_js']) ? $options['google_analytics_matomo_no_js'] : '';
		$option_cross_domain_sites = !empty($options['google_analytics_matomo_cross_domain_sites']) ? $options['google_analytics_matomo_cross_domain_sites'] : '';
		$option_no_cookies = !empty($options['google_analytics_matomo_no_cookies']) ? $options['google_analytics_matomo_no_cookies'] : '';
		$options_link_tracking = !empty($options['google_analytics_matomo_link_tracking']) ? $options['google_analytics_matomo_link_tracking'] : '';
		$options_no_heatmaps = !empty($options['google_analytics_matomo_no_heatmaps']) ? $options['google_analytics_matomo_no_heatmaps'] : '';
		$options_matomo_dtn = !empty($options['google_analytics_matomo_dnt']) ? $options['google_analytics_matomo_dnt'] : '';

		$matomo_subtabs = [
			'tracking' => 'Tracking',
		];

		echo '<table class="form-table">
			<tbody>
				<tr>
					<th scope="row">
						<div class="siteseo-container">';
								$is_first = true;
								foreach($matomo_subtabs as $post_key => $post_val){
									$active_class = $is_first ? 'active' : '';
									echo '<a href="#'.esc_attr($post_key).'" class="'.esc_attr($active_class).'">'.esc_html($post_val).'</a>';
									$is_first = false;
								}
							echo '</div>
					</th>
					<td>
						<h3>'.esc_html__('Matomo', 'siteseo').'</h3>
						<div class="siteseo_wrap_label" id="tracking">
						<p class="description">'.esc_html__('Track your users with privacy in mind using Matomo. We support both On-Premise and Cloud installations.', 'siteseo').'</p>
						</div>
						<span class="line"></span>
						<h3>'.esc_html__('Tracking', 'siteseo').'</h3>
						<table class="form-table">
							<tbody>
								<tr>
									<th scope="row">'.esc_html__('Enable Matomo tracking.', 'siteseo').'</th>
									<td>
										<label>
											<input type="checkbox" name="siteseo_options[enable_matomo]" '.(!empty($option_enable_matomo) ? 'checked="yes"' : '').' value="1"/>
											'.esc_html__('Enable Matomo tracking', 'siteseo') .'
										</label>
										<p class="description">'.esc_html__('A Matomo Cloud account or a self-hosted Matomo installation is necessary.', 'siteseo').'</p>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Self hosted Matomo installation.', 'siteseo').'</th>
									<td>
										<label>
											<input type="checkbox" name="siteseo_options[self_hosted]" '.(!empty($option_self_hosted) ? 'checked="yes"' : '').' value="1" "/>
											'.esc_html__('Yes, self-hosted installation', 'siteseo').'
										</label>
										
									</td>
								</tr>
								
								<tr>
									<th scope="row">'.esc_html__('Enter your tracking ID', 'siteseo').'</th>
									<td>
										<input type="text" placeholder="'.esc_html__('Enter "example" if you Matomo account URL is "example.matomo.cloud', 'siteseo').'" name="siteseo_options[tracking_id]" value="'.esc_attr($option_matomo_id).'"/>
										'.wp_kses_post('<p class="description">Enter only the host without quotes, such as "example.matomo.cloud" </br> (Cloud) or "matomo.example.com" (self-hosted).</p>').'
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Enter your site ID.', 'siteseo').'</th>
									<td>
										<input type="text" placeholder="'.esc_html__('Enter your site ID', 'siteseo').'" name="siteseo_options[site_id]" value="'.esc_attr($option_site_id).'"/>
										<p class="description">'.
										/* translators: placeholders are just <strong> tag */ 
										wp_kses_post(sprintf(__('To find your site ID, visit your %1$s Matomo Cloud %2$s account, go to Websites, and click Manage. The <br/>"Site ID" will be displayed on the right side.', 'siteseo'), '<strong>', '</strong>')).'</p>
										<p class="description">'.
										/* translators: placeholder is just <br> tag */ 
										wp_kses_post(sprintf(__('For self-hosted installations, navigate to your Matomo administration, then go to Settings, Websites, %1$s and Manage. From the list of websites, locate the "ID" line.', 'siteseo'), '<br/>')).'<p>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Track visitors across all subdomains', 'siteseo').'</th>
									<td>
										<label>
										<input type="checkbox" name="siteseo_options[track_visitors]" '.(!empty($option_sub_domain) ? 'checked="yes"' : '').' value="1"/>
										'.esc_html__('Monitor one domain along with its subdomains on the same website.','siteseo') .'
										<p class=description">'.esc_html__('If a visitor visits x.example.com and y.example.com, they will be counted as a single unique visitor.', 'siteseo').'</p>
										</label>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Prepend the site domain.', 'siteseo').'</th>
									<td>
										<label>
											<input type="checkbox" name="siteseo_options[site_domain]" '.(!empty($option_site_domain) ? 'checked="yes"' : '').' value="1" />
											'.esc_html__('Add the site domain before the page title when tracking', 'siteseo').'
											<p class="description">For example, if someone visits the About page on blog.example.com, it will be recorded as "blog / About".<br/> This provides a simple way to get an overview of your traffic by subdomain.</p>`
										</label>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Track users with JavaScript disabled.', 'siteseo').'</th>
									<td>
										<label>
											<input type="checkbox" name="siteseo_options[track_users]" '.(!empty($option_no_js) ? 'checked="yes"' : '').' value="1" />
											'. esc_html__('Track users with JavaScript disabled', 'siteseo').'
										</label>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Enables cross domain linking', 'siteseo').'</th>
									<td>
										<label>
											<input type="checkbox" name="siteseo_options[enable_cross_domains]" '.(!empty($option_enable_corss_domain) ? 'checked="yes"' : '').' value="1" />
											'.esc_html__('Enables cross domain linking', 'siteseo').'
										</label>
										<p class="description">'.esc_html__('By default, the visitor ID, which uniquely identifies each visitor, is stored in the browser first-party cookies. These cookies can only be accessed by pages on the same domain.', 'siteseo').'</p> 
										<p class="description">'.esc_html__('Enabling cross-domain tracking allows you to monitor all actions and pageviews of a specific visitor within the same session, even when they visit pages across different domains.', 'siteseo').'</p> 
										<p class="description">'.esc_html__('When a user clicks on a link to one of your site alias URLs, a URL parameter, <code>pk_vid</code>, will be appended, forwarding the Visitor ID.', 'siteseo').'</p>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Cross domain', 'siteseo').'</th>
									<td>
										<input type="text" name="siteseo_options[corss_domains]" value="'.esc_attr($option_cross_domain_sites).'" placeholder="'.esc_attr('Enter your domains: siteseo.io,sub.siteseo.io,sub2.siteseo.io').'"/>
									</td>
								</tr>
								
								<tr>
									<th scope="row">'.esc_html__('Enable DoNotTrack detection', 'siteseo').'</th>
									<td>
										<input type="checkbox" name="siteseo_options[enable_donottack]" '.(!empty($options_matomo_dtn) ? 'checked="yes"' : '').' value="1"/>
										'.esc_html__('Activate client-side Do Not Track detection.', 'siteseo').'
										<p class="description">'.esc_html__('Tracking requests will be blocked if visitors opt out of being tracked.', 'siteseo').'</p>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Disable all tracking cookies.', 'siteseo').'</th>
									<td>
										<input type="checkbox" name="siteseo_options[disabled_cookies]" '.(!empty($option_no_cookies) ? 'checked="yes"' : '').' value="1" />
										'.esc_html__('Disables all first-party cookies. Any existing Matomo cookies for this site will be deleted on the next page view.', 'siteseo').'
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Download & Outlink tracking.', 'siteseo').'</th>	
									<td>
										<input type="checkbox" name="siteseo_options[outlink_tracking]" '.(!empty($options_link_tracking) ? 'checked="yes"' : '').' value="1" />
										'.esc_html__('Enabling Download & Outlink tracking','siteseo').'
										<p class="description">By default, files with any of these extensions will be treated as a "download" in the Matomo interface.<p>
										<div class="siteseo-styles pre"><pre>7z|aac|arc|arj|apk|asf|asx|avi|bin|bz|bz2|csv|deb|dmg|doc|exe|flv|gif|gz|gzip|hqx|jar|jpg|jpeg|js|mp2|mp3|mp4|mpg|mpeg|mov|movie|msi|msp|odb|odf|odg|odp|ods|odt|ogg|ogv| pdf|phps|png|ppt|qt|qtm|ra|ram|rar|rpm|sea|sit|tar|tbz|tbz2|tgz|torrent|txt|wav|wma|wmv|wpd|xls|xml|z|zip</pre></div>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Disable all heatmaps and session recordings.', 'siteseo').'</th>
									<td>
										<input type="checkbox" '.(!empty($options_no_heatmaps) ? 'checked="yes"' : '').' value="1" name="siteseo_options[disabled_heatmaps]" />
										'.esc_html__('Turns off all heatmaps and session recordings.', 'siteseo').'
									</td>
								</tr>
							</tbody>
						</table>
					</td>
				</tr>
			</tbody>
		</table><input type="hidden" name="siteseo_options[matomo_tab]" value="1"/>';
	}

	static function advanced(){
		global $siteseo,$wp_roles;

        if(!empty($_POST['submit'])){
            self::save_settings();
        }

		if(!isset($wp_roles)){
			$wp_roles = new \WP_Roles();
		}

		//$options = $siteseo->analaytics_settings;
		$options = get_option('siteseo_google_analytics_option_name');

		$option_track_authors = !empty($options['google_analytics_cd_author']) ? $options['google_analytics_cd_author'] : '';
		$option_track_categories = !empty($options['google_analytics_cd_category']) ? $options['google_analytics_cd_category'] : '';
		$option_track_tag = !empty($options['google_analytics_cd_tag']) ? $options['google_analytics_cd_tag'] : '';
		$option_track_post_types = !empty($options['google_analytics_cd_post_type']) ? $options['google_analytics_cd_post_type'] : '';
		$option_logged_user = !empty($options['google_analytics_cd_logged_in_user']) ? $options['google_analytics_cd_logged_in_user'] : '';

		$adavnced_subtabs =[
			'custom-dimensions' => 'Custom Dimensions',
			'Misc' => 'Misc',
		];

		echo '<table class="form-table">
				<tbody>
					<tr>
						<th scope="row">
							<div class="siteseo-container">';
								$is_first = true;
								foreach($adavnced_subtabs as $post_key => $post_val){
									$active_class = $is_first ? 'active' : '';
									echo '<a href="#'.esc_attr($post_key).'" class="'.esc_attr($active_class).'">'.esc_html($post_val).'</a>';
									$is_first = false;
								}
							echo '</div>
						</th>

						<td>
							<h3>'.esc_html__('Advanced settings', 'siteseo').'</h3>
							<div class="siteseo-notice" id="custom-dimensions">
								<span class="dashicons dashicons-info"></span>
								<p>'.esc_html__('All advanced settings are compatible with both Google Analytics and Matomo tracking codes.', 'siteseo').'</p>
							</div>

							<br/>

							<span class="line"></span>
							<h3>'.esc_html__('Custom Dimensions', 'siteseo').'</h3>
							<div class="siteseo_wrap_label"><p class="description">'.esc_html__('Set up your Google Analytics custom dimensions.', 'siteseo').'</p></div>
							<div class="siteseo_wrap_label"><p class="description">'.esc_html__('Custom dimensions and metrics are similar to the default ones in Google Analytics, but you have the flexibility to create your own.', 'siteseo').'</p></div>
							<div class="description"><p class="description">'.esc_html__('Utilize custom dimensions to gather and analyze data that Google Analytics does not track automatically.', 'siteseo').'</p></div>
							<div class="description"><p class="description">'.esc_html__('Remember, you must also configure your custom dimensions in your Google Analytics account. Click the help icon for more information.', 'siteseo').'</p></div>

							<table class="form-table">
								<tbody>
									<tr>
										<th scope="row">'.esc_html__('Track Authors', 'siteseo').'</th>
										<td>
											<select name="siteseo_options[track_authors]">
												<option value="none" '.selected($option_track_authors, 'none', false).'>'.esc_html__('None','siteseo').'</option>';
												for($i = 1; $i <= 20; ++$i){
													/* translators: %d represents the custom dimension */
													echo '<option '.selected($option_track_authors, 'dimension' . $i, false).' value="dimension'.esc_attr($i).'">'.sprintf(esc_html__('Custom Dimension #%d', 'siteseo'), esc_html($i)).'</option>';
												}
											echo '</select>
										</td>
									</tr>

									<tr>
										<th scope="row">'.esc_html__('Track Categories', 'siteseo').'</th>
										<td>
											<select name="siteseo_options[track_categories]">
												<option value="none" '.selected($option_track_categories, 'none', false).'>'.esc_html__('None','siteseo').'</option>';
												for($i = 1; $i <= 20; ++$i){
													/* translators: %d represents the custom dimension */
													echo '<option '.selected($option_track_categories, 'dimension' . $i, false).' value="dimension'.esc_attr($i).'">'.sprintf(esc_html__('Custom Dimension #%d', 'siteseo'), esc_html($i)).'</option>';
												}
											echo '</select>
										</td>
									</tr>

									<tr>
										<th scope="row">'.esc_html__('Track Tags', 'siteseo').'</th>
										<td>
											<select name="siteseo_options[track_tags]">
												<option value="none" '.selected($option_track_tag, 'none', false).'>'.esc_html__('None','siteseo').'</option>';
												for($i = 1; $i <= 20; ++$i){
													/* translators: %d represents the custom dimension */
													echo '<option '.selected($option_track_tag, 'dimension' . $i, false).' value="dimension'.esc_attr($i).'">'.sprintf(esc_html__('Custom Dimension #%d', 'siteseo'), esc_html($i)).'</option>';
												}
											echo '</select>
										</td>
									</tr>

									<tr>
										<th scope="row">'.esc_html__('Track Post Types','siteseo').'</th>
										<td>
											<select name="siteseo_options[track_post_types]">
												<option value="none" '.selected($option_track_post_types, 'none', false).'>'.esc_html__('None','siteseo').'</option>';
												for($i = 1; $i <= 20; ++$i){
													/* translators: %d represents the custom dimension */
													echo '<option '.selected($option_track_post_types, 'dimension' . $i, false).' value="dimension'.esc_attr($i).'">'.sprintf(esc_html__('Custom Dimension #%d', 'siteseo'), esc_html($i)).'</option>';
												}
											echo '</select>
										</td>
									</tr>

									<tr>
										<th scope="row">'.esc_html__('Track Logged In Users','siteseo').'</th>
										<td>
											<select name="siteseo_options[track_user]">
												<option value="none" '.selected($option_logged_user, 'none', false).'>'.esc_html__('None','siteseo').'</option>';
												for($i = 1; $i <= 20; ++$i){
													/* translators: %d represents the custom dimension */
													echo '<option '.selected($option_logged_user, 'dimension' . $i, false).' value="dimension'.esc_attr($i).'">'. sprintf(esc_html__('Custom Dimension #%d', 'siteseo'), esc_html($i)).'</option>';
												}
											echo '</select>
										</td>
									</tr>

								</tbody>
							</table>

							<div class="description" id="Misc"><span class="line"></span>
							<h3>'.esc_html__('Misc','siteseo').'</h3>
							<table>
								<tbody class="form-table">
									<tr>
										<th scope="row">'.esc_html__('Exclude user roles from tracking (Google Analytics and Matomo)','siteseo').'</th>
										<td>';
										foreach($wp_roles->get_names() as $key => $value){
											$select = isset($options['google_analytics_roles'][$key]);

											echo '<p>
												<label>
													<input name="siteseo_options[misc_roles]['.esc_attr($key).']" type="checkbox" '.(!empty($select) ? 'checked="yes"' : 'value="1"').'/>
													<strong>'. esc_html($value) .'</strong> (<em> '. esc_html(translate_user_role($value,  'default')) .'</em>)
												</label>
											</p>';	
										}
										echo '</td>
									</tr>
								</tbody>
							</table>
							</div>
						</td>
					</tr>
				</tbody>
			</table><input type="hidden" name="siteseo_options[advanced_tab]" value="1"/>';
	}
	
	static function clarity(){
		global $siteseo;

        if(!empty($_POST['submit'])){
            self::save_settings();
        }

		//$options = $siteseo->analaytics_settings;
		$options = get_option('siteseo_google_analytics_option_name');

		$option_enable_clarity = !empty($options['google_analytics_clarity_enable']) ? $options['google_analytics_clarity_enable'] : '';
		$option_project_id = !empty($options['google_analytics_clarity_project_id']) ? $options['google_analytics_clarity_project_id'] : '';

		echo '<h3 class="siteseo-tabs">'.esc_html__('Microsoft Clarity', 'siteseo').'</h3>
		<p class="description">'.esc_html__('Use Microsoft Clarity to capture session recordings, access instant heatmaps, and gain powerful insights for free. Understand how users interact with your site to enhance the user experience and boost conversions.', 'siteseo').'</p>

		<div class="siteseo-notice">
            		<span class="dashicons dashicons-info"></span>
           		 <p>'. 
				 /* translators: %s represents the microsoft clarity api url */
				 wp_kses_post(sprintf(__('Create your first Microsoft Clarity project %1$shere%2$s.', 'siteseo'), '<a href="https://clarity.microsoft.com/" target="_blank">', '</a>')) .'</p>
		</div>

		<table class="form-table">
			<tbody>
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Enable Microsoft Clarity','siteseo').'</th>
					<td>
						<input type="checkbox" name="siteseo_options[microsoft_clarity]" '.(!empty($option_enable_clarity) ? 'checked="yes"' : ''). ' value="1">
					</td>
				</tr>

				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Enter your Clarity project ID', 'siteseo').'</th>
					<td>
						<input type="text" name="siteseo_options[project_id]" placeholder="'.esc_attr__('Enter your Project Id', 'siteseo').'" value="'.esc_attr($option_project_id).'" >
						<p><span class="dashicons dashicons-external"></span>
							<a href="https://siteseo.io/docs/analytics/find-my-microsoft-clarity-project-id/" target="_blank">
								'.esc_html__('Find your project ID', 'siteseo').'
							</a>
							</span>
						</p>
					</td>
				</tr>

			</tbody>
		</table><input type="hidden" name="siteseo_options[clarity_tab]" value="1" />';

	}

	static function google_anlytics(){
		global $siteseo;
		
        if(!empty($_POST['submit'])){
            self::save_settings();
        }

		$options = get_option('siteseo_google_analytics_option_name');
		//$options = $siteseo->analaytics_settings;

		$option_enable_anaytics = !empty($options['google_analytics_enable']) ? $options['google_analytics_enable'] : '';
		$option_anaytics_id = !empty($options['google_analytics_ga4']) ? $options['google_analytics_ga4'] : '';
		$option_enable_optimize = !empty($options['google_analytics_link_tracking_enable']) ? $options['google_analytics_link_tracking_enable'] : '';
		$option_enable_download_tracking= !empty($options['google_analytics_download_tracking_enable']) ? $options['google_analytics_download_tracking_enable'] : '';
 		$option_download_tracking = !empty($options['google_analytics_download_tracking']) ? $options['google_analytics_download_tracking'] : '';
		$option_affiliate_tracking_enable = !empty($options['google_analytics_affiliate_tracking_enable']) ? $options['google_analytics_affiliate_tracking_enable'] : '';
		$option_affiliate_tracking = !empty($options['google_analytics_affiliate_tracking']) ? $options['google_analytics_affiliate_tracking'] : '';
		$option_phone_tracking = !empty($options['google_analytics_phone_tracking']) ? $options['google_analytics_phone_tracking'] : '';

		$option_container_id = !empty($options['google_analytics_optimize']) ? $options['google_analytics_optimize'] : '';
		$option_conversion_id = !empty($options['google_analytics_ads']) ? $options['google_analytics_ads'] : '';
		$option_ip_anonymization = !empty($options['google_analytics_ip_anonymization']) ? $options['google_analytics_ip_anonymization'] : '';
		$option_links_attribution = !empty($options['google_analytics_link_attribution']) ? $options['google_analytics_link_attribution'] : '';
		$option_domain_tracking = !empty($options['google_analytics_cross_enable']) ? $options['google_analytics_cross_enable'] : '';
		$option_cross_domain = !empty($options['google_analytics_cross_domain']) ? $options['google_analytics_cross_domain'] : '';
		$option_enable_remarketing = !empty($options['google_analytics_remarketing']) ? $options['google_analytics_remarketing'] : '';
 		
		$google_analytics_fileds = [
			'general-settings' =>'General',
			'tracking-settings'=>'Tracking',
			'events-settings' => 'Events'
		];

		echo '<table class="form-table">
			<tbody>
				<tr>
					<th scope="row">
					<div class="siteseo-container">';
						$is_first = true;
						foreach($google_analytics_fileds as $post_key => $post_val){
							$active_class = $is_first ? 'active' : '';
							echo '<a href="#'.esc_attr($post_key).'" class="'.esc_attr($active_class).'">'.esc_html($post_val).'</a>';
							$is_first = false;
						}
				echo '</div></th>
				<td>
					<div id="general-settings">
						<h3>'.esc_html__('Google Anlytics', 'siteseo').'</h3>
						<div class="siteseo_wrap_label"><p class="description">'.esc_html__('Connect your Google Analytics to your website. The tracking code will be automatically added to your site.', 'siteseo') .'</p></div>
						<span class="line"></span>
						<div class="siteseo_wrap_label"><p class="'.esc_html__('description">Link your Google Analytics to your website. The tracking code will be automatically added to your site', 'siteseo').'</p></div>
						<span class="line"></span>
						<table class="form-table">
								<tbody>
									<tr>
										<th scope="row">'.esc_html__('General', 'siteseo').'</th>
										<td></td>
									</tr>

									<tr>
										<th scope="row">'.esc_html__('Enable Google Analytics tracking', 'siteseo').'</th>
										<td>
											<label><input type="checkbox" name="siteseo_options[google_anlytics_tracking]" '.(!empty($option_enable_anaytics) ? 'checked="yes"' : '') . ' value="1"/> ' . esc_html__('Activate Google Analytics tracking using the Global Site Tag (gtag.js).', 'siteseo') . '</label>
										</td>
									</tr>

									<tr>
										<th scope="row">'.esc_html__('Enter your measurement ID (GA4)', 'siteseo').'</th>
										<td>
											<input type="text" placeholder="'.esc_attr__('Enter your measurement ID (G-XXXXXXXXXX)','siteseo').'" name="siteseo_options[anlytics_measurement_id]" value="'.esc_attr($option_anaytics_id).'">
											<p>
												<span class="dashicons dashicons-external"></span>
												<a href="https://support.google.com/analytics/answer/9539598?hl=en&ref_topic=9303319" target="_blank">'.esc_html__('Find your measurement ID', 'siteseo').'</a>
											</p>
										</td>
									</tr>
								</tbody>
						</table>
					</div></div>
					
					<div id="tracking-settings">
						<span class="line"></span>
						<h3>'.esc_html__('Tracking','siteseo').'</h3>
						<p class="description">'.esc_html__('Set up your Google Analytics tracking code.', 'siteseo').'</P>
						<table class="form-table">
							<tbody>
								<tr>
									<th scope="row">'.esc_html__('Enable Google Optimize.', 'siteseo').'</th>
									<td>
										<label>
											<input type="text" name="siteseo_options[container_id]" placeholder="'.esc_attr__('Enter your Google Optimize container ID.', 'siteseo').'" value="'.esc_attr($option_container_id).'"/>
										</label>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Enable Google Ads','siteseo').'</th>	
									<td>
										<label>
											<input type="text" placeholder="'.esc_attr__('Enter your Google Ads conversion ID (eg: AW-123456789).', 'siteseo').'" name="siteseo_options[conversion_id]" value="'.esc_attr($option_conversion_id).'"/>
										</label>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Enable remarketing, demographics, and interests reporting', 'siteseo').'</th>
									<td>
										<label>
											<input type="checkbox" name="siteseo_options[enable_remarketing]" '.(!empty($option_enable_remarketing) ? 'checked="yes"' : '').' value="1"/>
											'. esc_html__('Enable remarketing, demographics, and interests reporting', 'siteseo').'
										</label>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Enable IP Anonymization', 'siteseo').'</th>
									<td>
										<label>
											<input type="checkbox" name="siteseo_options[ip_anonymiza]" '.(!empty($option_ip_anonymization) ? 'checked="yes"' : '').'/>
											'. esc_html__('Enable IP Anonymization', 'siteseo') .'
										</label>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Enhanced Link Attribution', 'siteseo').'</th>
									<td>
										<label>
											<input type="checkbox" name="siteseo_options[link_attribution]" '.(!empty($option_links_attribution) ? 'checked="yes"' : '').'/>
											'. esc_html__('Enhanced Link Attribution', 'siteseo').'
										</label>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Enable cross-domain tracking', 'siteseo').'</th>
									<td>
										<label>
											<input type="checkbox" name="siteseo_options[domain_tracking]" '.(!empty($option_domain_tracking) ? 'checked="yes"' : '').' />
											'. esc_html__('Enable cross-domain tracking', 'siteseo').'
										</label>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Cross domains', 'siteseo').'</th>
									<td>
										<input type="text" placeholder="Enter your domains: siteseo.io,sub.siteseo.io,sub2.siteseo.io" name="siteseo_options[cross_domain]" value="'.esc_attr($option_cross_domain).'" />
									</td>
								</tr>

							</tbody>
						<table>
					</div>
					
					<div id="events-settings">
						<span class="line"></span>
						<h3>'.esc_html__('Events', 'siteseo').'</h3>
						<P class="description">'.esc_html__('Track events in Google Analytics', 'siteseo').'</p>
						<table class="form-table">
							<tbody>
								<tr>
									<th scope="row">'.esc_html__('Enable Google Optimize', 'siteseo').'</th>
									<td>
										<label>
											<input type="checkbox" name="siteseo_options[google_optimize]" '.(!empty($option_enable_optimize) ? 'checked="yes"' : ''). ' value="1">' . esc_html__(' Enable external links tracking', 'siteseo') . '
										</label>
									</td>
								</tr>
								
								<tr>
									<th scope="row">'.esc_html__('Enable downloads tracking (eg: PDF, XLSX, DOCX...)', 'siteseo').'</th>
									<td>
										<label>
											<input type="checkbox" name="siteseo_options[enable_download_tracking]" '.(!empty($option_enable_download_tracking) ? 'checked="yes"' : '').' value="1"> '.esc_html__('Enable download tracking', 'siteseo').'
										</label>
									</td>
								</tr>
								
								<tr>
									<th scope="row">'.esc_html__('Track downloads clicks', 'siteseo').'</th>
									<td>
										<input type="text" placeholder="pdf|docs|pptx|zip" name="siteseo_options[track_downlaods]" value="'.esc_attr($option_download_tracking).'"/>
										<p class="description">'.esc_html__('Separate each file type extensions with a pipe "|"','siteseo').'</p>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Enable affiliate/outbound links tracking (eg: aff, go, out, recommends)', 'siteseo').'</th>
									<td>
										<label>
										<input type="checkbox" name="siteseo_options[aff_tracking_enable]" '.(!empty($option_affiliate_tracking_enable ) ? 'checked="yes"' : '').' value="1"/>
										'. esc_html__('Enable affiliate/outbound tracking','siteseo') .'</label>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Track affiliate/outbound links','siteseo').'</th>
									<td>
										<input type="text" name="siteseo_options[aff_tracking]" placeholder="aff|go|out" value="'.esc_attr($option_affiliate_tracking).'"/>
										<p class="description">'.esc_html__('Separate each keyword with a pipe "|"', 'siteseo').'</p>
									</td>
								</tr>

								<tr>
									<th scope="row">'.esc_html__('Track phone links','siteseo').'</th>
									<td>
										<input type="checkbox" name="siteseo_options[track_phones]" '.(!empty($option_phone_tracking ) ? 'checked="yes"' : '') . ' value="1"/>
										'.esc_html__(' Enable tracking of "tel:" links' , 'siteseo'). '
										<div class="siteseo-styles pre"><pre>'.esc_html('<a href="tel:+33123456789">').'</pre></div>
									</td>
								</tr>
							</tbody>
						</table
					</div>
				</td>
			</tbody>
		</table>
		<input type="hidden" name="siteseo_options[analytics_tab]" value="1"/>';

	}

	static function save_settings(){

		global $siteseo;

		check_admin_referer('siteseo_analytics_settings');

		if(!siteseo_user_can('manage_analytics') || !is_admin()){
			return;
		}

		$options = [];
		
		if(empty($_POST['siteseo_options'])){
			return;
		}
		
		if(isset($_POST['siteseo_options']['analytics_tab'])){
			$options['google_analytics_enable'] = isset($_POST['siteseo_options']['google_anlytics_tracking']);
			$options['google_analytics_ga4'] = isset($_POST['siteseo_options']['anlytics_measurement_id']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['anlytics_measurement_id'])) : '';
			$options['google_analytics_link_tracking_enable'] = isset($_POST['siteseo_options']['google_optimize']);
			$options['google_analytics_download_tracking_enable'] = isset($_POST['siteseo_options']['enable_download_tracking']);
			$options['google_analytics_download_tracking'] = isset($_POST['siteseo_options']['track_downlaods']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['track_downlaods'])) : '';
			$options['google_analytics_affiliate_tracking_enable'] = isset($_POST['siteseo_options']['aff_tracking_enable']);
			$options['google_analytics_affiliate_tracking'] = isset($_POST['siteseo_options']['aff_tracking']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['aff_tracking'])) : '';
			$options['google_analytics_phone_tracking'] = isset($_POST['siteseo_options']['track_phones']);
			$options['google_analytics_optimize'] = isset($_POST['siteseo_options']['container_id']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['container_id'])) : '';
			$options['google_analytics_ads'] = isset($_POST['siteseo_options']['conversion_id']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['conversion_id'])) : '';
			$options['google_analytics_remarketing'] = isset($_POST['siteseo_options']['enable_remarketing']);
			$options['google_analytics_ip_anonymization'] = isset($_POST['siteseo_options']['ip_anonymiza']);
			$options['google_analytics_link_attribution'] = isset($_POST['siteseo_options']['link_attribution']);
			$options['google_analytics_cross_enable'] = isset($_POST['siteseo_options']['domain_tracking']);
			$options['google_analytics_cross_domain'] = isset($_POST['siteseo_options']['cross_domain']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['cross_domain'])) : '';
		}
		
		if(isset($_POST['siteseo_options']['clarity_tab'])){
			$options['google_analytics_clarity_enable'] = isset($_POST['siteseo_options']['microsoft_clarity']);
			$options['google_analytics_clarity_project_id'] = isset($_POST['siteseo_options']['project_id']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['project_id'])) : '';
		}
		
		if(isset($_POST['siteseo_options']['matomo_tab'])){
			$options['google_analytics_matomo_enable'] = isset($_POST['siteseo_options']['enable_matomo']);
			$options['google_analytics_matomo_self_hosted'] = isset($_POST['siteseo_options']['self_hosted']);
			$options['google_analytics_matomo_id'] = isset($_POST['siteseo_options']['tracking_id']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['tracking_id'])) : '';
			$options['google_analytics_matomo_site_id'] = isset($_POST['siteseo_options']['site_id']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['site_id'])) : '';
			$options['google_analytics_matomo_subdomains'] = isset($_POST['siteseo_options']['track_visitors']);
			$options['google_analytics_matomo_site_domain'] = isset($_POST['siteseo_options']['site_domain']);
			$options['google_analytics_matomo_cross_domain'] = isset($_POST['siteseo_options']['enable_cross_domains']);
			$options['google_analytics_matomo_no_js'] = isset($_POST['siteseo_options']['track_users']);
			$options['google_analytics_matomo_cross_domain_sites'] = isset($_POST['siteseo_options']['corss_domains']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['corss_domains'])) : '';
			$options['google_analytics_matomo_no_cookies'] = isset($_POST['siteseo_options']['disabled_cookies']);
			$options['google_analytics_matomo_link_tracking'] = isset($_POST['siteseo_options']['outlink_tracking']);
			$options['google_analytics_matomo_no_heatmaps'] = isset($_POST['siteseo_options']['disabled_heatmaps']);
			$options['google_analytics_matomo_dnt'] = isset($_POST['siteseo_options']['enable_donottack']);
		}
		
		if(isset($_POST['siteseo_options']['advanced_tab'])){
		
			$options['google_analytics_cd_author'] = isset($_POST['siteseo_options']['track_authors']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['track_authors'])) : '';
			$options['google_analytics_cd_category'] = isset($_POST['siteseo_options']['track_categories']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['track_categories'])) : '';
			$options['google_analytics_cd_tag'] = isset($_POST['siteseo_options']['track_tags']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['track_tags'])) : '';
			$options['google_analytics_cd_post_type'] = isset($_POST['siteseo_options']['track_post_types']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['track_post_types'])) : '';
			$options['google_analytics_cd_logged_in_user'] = isset($_POST['siteseo_options']['track_user']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['track_user'])) : '';
			
			// mics roles
			if(isset($_POST['siteseo_options']['misc_roles'])){
				$options['google_analytics_roles'] = map_deep(wp_unslash($_POST['siteseo_options']['misc_roles']), 'sanitize_text_field');
			}
		}
		
		if(isset($_POST['siteseo_options']['custom_tracking_tab']) && current_user_can('unfiltered_html')){
			// NOTE: These options can not be sanitized as we need user to be able to add some JS code, so we have added a capability check which only a super admin can have.
			$options['google_analytics_other_tracking'] = isset($_POST['siteseo_options']['head_tracking']) ? wp_unslash($_POST['siteseo_options']['head_tracking']) : '';
			$options['google_analytics_other_tracking_body'] = isset($_POST['siteseo_options']['body_tracking']) ? wp_unslash($_POST['siteseo_options']['body_tracking']) : '';
			$options['google_analytics_other_tracking_footer'] = isset($_POST['siteseo_options']['footer_tracking']) ? wp_unslash($_POST['siteseo_options']['footer_tracking']) : '';
		}
		
		if(isset($_POST['siteseo_options']['cookies_tab'])){
			
			$options['google_analytics_hook'] = isset($_POST['siteseo_options']['cookie_pos']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['cookie_pos'])) : '';
			$options['google_analytics_disable'] = isset($_POST['siteseo_options']['opt_tracking']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['opt_tracking'])) : '';
			$options['google_analytics_half_disable'] = isset($_POST['siteseo_options']['half_disable']);
			$options['google_analytics_opt_out_edit_choice'] = isset($_POST['siteseo_options']['opt_edit_choices']);
			$options['google_analytics_opt_out_msg'] = isset($_POST['siteseo_options']['opt_msg']) ? wp_kses_post(wp_unslash($_POST['siteseo_options']['opt_msg'])) : 'We use cookies to enhance your experience.';
			$options['google_analytics_opt_out_msg_ok'] = isset($_POST['siteseo_options']['opt_msg_ok']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['opt_msg_ok'])) : 'Accept';
			$options['google_analytics_opt_out_msg_edit'] = isset($_POST['siteseo_options']['opt_edit_btn']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['opt_edit_btn'])) : 'Manage cookies';
			$options['google_analytics_opt_out_msg_close'] = isset($_POST['siteseo_options']['opt_close']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['opt_close'])) : 'X';
			$options['google_analytics_cb_exp_date'] = isset($_POST['siteseo_options']['cd_exp_date']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['cd_exp_date'])) : '30';
			$options['google_analytics_cb_pos'] = isset($_POST['siteseo_options']['cd_pos']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['cd_pos'])) : 'center';
			$options['google_analytics_cb_txt_align'] = isset($_POST['siteseo_options']['cd_txt_align']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['cd_txt_align'])) : 'center';
			$options['google_analytics_cb_width'] = isset($_POST['siteseo_options']['cd_width']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['cd_width'])) : '100%';
			$options['google_analytics_cb_scheme'] = isset($_POST['siteseo_options']['google_analytics_cb_scheme']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['google_analytics_cb_scheme'])) : '';

			// Colors
			$options['google_analytics_cb_backdrop'] = isset($_POST['siteseo_options']['cd_backdrop']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['cd_backdrop'])) : '';
			$options['google_analytics_cb_backdrop_bg'] = isset($_POST['siteseo_options']['backdrop_bg']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['backdrop_bg'])) : '';
			$options['google_analytics_cb_bg'] = isset($_POST['siteseo_options']['cookiesbar_bg']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['cookiesbar_bg'])) : '';
			$options['google_analytics_cb_txt_col'] = isset($_POST['siteseo_options']['cookiebar_txt']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['cookiebar_txt'])) : '';
			$options['google_analytics_cb_lk_col'] = isset($_POST['siteseo_options']['line_co']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['line_co'])) : '';
			$options['google_analytics_cb_btn_bg'] = isset($_POST['siteseo_options']['primary_btn_bg']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['primary_btn_bg'])) : '';
			$options['google_analytics_cb_btn_bg_hov'] = isset($_POST['siteseo_options']['primary_btn_bg_hov']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['primary_btn_bg_hov'])) : '';
			$options['google_analytics_cb_btn_col'] = isset($_POST['siteseo_options']['primary_btn_txt']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['primary_btn_txt'])) : '';
			$options['google_analytics_cb_btn_col_hov'] = isset($_POST['siteseo_options']['primary_btn_txt_hov']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['primary_btn_txt_hov'])) : '';
			$options['google_analytics_cb_btn_sec_bg'] = isset($_POST['siteseo_options']['sec_btn_bg']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['sec_btn_bg'])) : '';
			$options['google_analytics_cb_btn_sec_bg_hov'] = isset($_POST['siteseo_options']['sec_btn_bg_hov']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['sec_btn_bg_hov'])) : '';
			$options['google_analytics_cb_btn_sec_col'] = isset($_POST['siteseo_options']['sec_btn_txt']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['sec_btn_txt'])) : '';
			$options['google_analytics_cb_btn_sec_col_hov'] = isset($_POST['siteseo_options']['sec_btn_txt_hov']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['sec_btn_txt_hov'])) : '';
		}

		update_option('siteseo_google_analytics_option_name', $options);
	}

}
PK��f\�4+�EEmain/settings/dashboard.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO\Settings;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Dashboard{

	static function dashboard_tab(){
		global $siteseo;
		
		$pro = get_option('siteseo_pro_options');
		$options = $siteseo->setting_enabled;

		$titles_meta_toggle = isset($options['toggle-titles']) ? $options['toggle-titles'] : '';
		$sitemap_toggle = isset($options['toggle-xml-sitemap']) ? $options['toggle-xml-sitemap'] : '';
		$social_toggle = isset($options['toggle-social']) ? $options['toggle-social'] : '';
		$advanced_toggle = isset($options['toggle-advanced']) ? $options['toggle-advanced'] : '';
		$analytics_toggle = isset($options['toggle-google-analytics']) ? $options['toggle-google-analytics'] : '';
		$indexing_toggle = isset($options['toggle-instant-indexing']) ? $options['toggle-instant-indexing'] : '';

		//pro-features
		$toggle_localBusiness = isset($pro['toggle_state_local_buz']) ? $pro['toggle_state_local_buz'] : '';
		$toggle_easy_digital = isset($pro['toggle_state_easy_digital']) ? $pro['toggle_state_easy_digital'] : '';
		$toggle_woocommerce  = isset($pro['toggle_state_woocommerce']) ? $pro['toggle_state_woocommerce'] : '';
		$toggle_structured_data = isset($pro['toggle_state_stru_data']) ? $pro['toggle_state_stru_data'] : '';
		$toggle_state_redirect = isset($pro['toggle_state_redirect_monitoring']) ? $pro['toggle_state_redirect_monitoring'] : '';
		$toggle_state_google_news = isset($pro['toggle_state_google_news']) ? $pro['toggle_state_google_news'] : '';
		$toggle_state_video_sitemap = isset($pro['toggle_state_video_sitemap']) ? $pro['toggle_state_video_sitemap'] : '';
		$toggle_state_llm_txt = isset($pro['toggle_state_llm_txt']) ? $pro['toggle_state_llm_txt'] : '';

		$nonce = wp_create_nonce('siteseo_toggle_nonce');

		$pro_nonce = wp_create_nonce('siteseo_pro_toggle_nonce');

		$siteseo_dashboard_img = SITESEO_ASSETS_URL.'/img/seo-get-started.jpg';
		$siteseo_loginizer_product = SITESEO_ASSETS_URL.'/img/loginizer_product.png';
		
		echo'<div id="siteseo-root">';

		Util::admin_header();
		$dismissed_intro = get_option('siteseo_dismiss_intro', 0);

		echo'<div id="siteseo-dashbord">';
		
		if(empty($dismissed_intro) && !defined('SITEPAD')){
			echo '<div class="siteseo-dashbord-intro">
			   <div class="siteseo-text-content">
					<h2>'.esc_html__('HOW-TO GET STARTED', 'siteseo').'</h2><h1>'.esc_html__('Welcome to SiteSEO!', 'siteseo').'</h1>
					<p>'.esc_html__('Launch our installation wizard to quickly and easily configure the basic SEO settings for your site. Cant find the answers to your questions? Write us at support@siteseo.io. A happiness engineer will be happy to help you.', 'siteseo').'</p>
					<div class="siteseo-buttons">
					<a class="get-started" href="?page=siteseo-onboarding">'.esc_html__('Get started', 'siteseo').'</a>
					<a class="dismiss" id="siteseo-dismiss-get-started" href="#">'.esc_html__('Dismiss', 'siteseo').'</a>
					</div>
				</div>
				<div class="siteseo-image-content"><img alt="'.esc_html__('Illustration of a megaphone with various icons representing SEO and digital marketing', 'siteseo').'" height="470" src="'.esc_url($siteseo_dashboard_img).'" width="470"/>
				</div>
			</div>';
		}

			echo '<div class="siteseo-dashbord-content">
				<section class="siteseo-dashboard-features">
					<h2>'.esc_html__('Manage SiteSEO Features', 'siteseo').'</h2></br/>
					<div class="siteseo-dashbord-container">
						<div class="siteseo-card">
							<div class="siteseo-card-body">
								<span class="dashicons dashicons-edit-large siteseo-card-icon"></span>
								<h3>'.esc_html__('Titles &amp; Metas', 'siteseo').'</h3>
								<p>'.esc_html__('Manage all your titles and metas for post types, taxonomies more...', 'siteseo').'</p>
							</div>
							<div class="siteseo-card-footer">
								<a href="admin.php?page=siteseo-titles">'.esc_html__('Settings', 'siteseo').'</a>';
								Util::render_toggle('Titles & Metas -SiteSEO', 'titles_meta_toggle', $titles_meta_toggle, $nonce, true);
						   echo'</div>
						</div>

			<div class="siteseo-card">
				<div class="siteseo-card-body">
					<span class="dashicons dashicons-networking siteseo-card-icon"></span>
					<h3>'.esc_html__('XML & HTML Sitemaps', 'siteseo').'</h3>
					<p>'.esc_html__('Manage your XML - Image - Video- Taxonomies - HTML Sitemap more...', 'siteseo').'</p>
				</div>
				<div class="siteseo-card-footer">
					<a href="admin.php?page=siteseo-sitemaps">'.esc_html__('Settings', 'siteseo').'</a>';
					Util::render_toggle('Sitemaps - SiteSEO', 'sitemap_toggle', $sitemap_toggle, $nonce,true);
				echo'</div>
			</div>

			<div class="siteseo-card">
				<div class="siteseo-card-body">
					<span class="dashicons dashicons-share siteseo-card-icon"></span>
					<h3>'.esc_html__('Social Networks', 'siteseo').'</h3>
					<p>'.esc_html__('Open Graph, X Card, Google Knowledge Graph and more...', 'siteseo').'</p>
				</div>
				<div class="siteseo-card-footer">
					<a href="admin.php?page=siteseo-social">'.esc_html__('Settings','siteseo').'</a>';
					Util::render_toggle('Social - SiteSEO', 'social_toggle', $social_toggle, $nonce,true);
				echo'</div>
			</div>

			<div class="siteseo-card">
				<div class="siteseo-card-body">
					<span class="dashicons dashicons-performance siteseo-card-icon"></span>
					<h3>'.esc_html__('Analytics', 'siteseo').'</h3>
					<p>'.esc_html__('Track everything about your visitors with Analytics/Matomo more...', 'siteseo').'</p>
				</div>
				<div class="siteseo-card-footer">
					<a href="admin.php?page=siteseo-analytics">'.esc_html__('Settings','siteseo').'</a>';
					Util::render_toggle('Analytics - SiteSEO', 'analytics_toggle', $analytics_toggle, $nonce,true);
				echo'</div>
			</div>

			<div class="siteseo-card">
				<div class="siteseo-card-body">
					<span class="dashicons dashicons-superhero siteseo-card-icon"></span>
					<h3>'.esc_html__('Instant Indexing','siteseo').'</h3>
					<p>'.esc_html__('Ping Google & Bing to quickly index your content. Updated and  remove submit URLs','siteseo').'</p>
				</div>
				<div class="siteseo-card-footer">
					<a href="admin.php?page=siteseo-instant-indexing">'.esc_html__('Settings','siteseo').'</a>';
					Util::render_toggle('Instant indexing - SiteSEO', 'indexing_toggle', $indexing_toggle, $nonce,true);
				echo'</div>
			</div>

			<div class="siteseo-card">
				<div class="siteseo-card-body">
					<span class="dashicons dashicons-format-gallery siteseo-card-icon"></span>
					<h3>'.esc_html__('Image SEO','siteseo').'</h3>
					<p>'.esc_html__('Optimize your images for SEO. Configure advanced settings more...','siteseo').'</p>
				</div>
				<div class="siteseo-card-footer">
					<a href="admin.php?page=siteseo-advanced">'.esc_html__('Settings','siteseo').'</a>';
					Util::render_toggle('Advanced - SiteSEO', 'advanced_toggle', $advanced_toggle, $nonce,true);
				echo'</div>
			</div>

			<div class="siteseo-card">
				<div class="siteseo-card-body">
					<span class="dashicons dashicons-upload siteseo-card-icon"></span>
					<h3>'.esc_html__('Tools', 'siteseo').'</h3>
					<p>'.esc_html__('Import/Export plugin settings from site to site. Reset settings more...', 'siteseo').'</p>
				</div>
				<div class="siteseo-card-footer">
					<a href="admin.php?page=siteseo-tools">'.esc_html__('Settings', 'siteseo').'</a>
					<div class="siteseo-toggle-container">
					</div>
				</div>
			</div>';
			if(!defined('SITEPAD')){
				echo'<div class="siteseo-card">
					<div class="siteseo-card-body">
						<span class="dashicons dashicons-cart siteseo-card-icon"></span>
						<h3>'.esc_html__('WooCommerces SEO','siteseo'),'</h3>
						<p>'.esc_html__('Add meta tags required for WooCommerce SEO','siteseo').'</p>
					</div>
					<div class="siteseo-card-footer">';
						if(defined('SITESEO_PRO_VERSION')){
							echo'<a href="admin.php?page=siteseo-pro-page">'.esc_html__('Settings','siteseo').'</a>';
						} else{
							echo'<div class="siteseo-pro-badge">Pro</div>';
						}
						
						if(class_exists('\SiteSEOPro\Settings\Util') && method_exists('\SiteSEOPro\Settings\Util', 'render_toggle')){
							\SiteSEOPro\Settings\Util::render_toggle('woocommerce', $toggle_woocommerce, $pro_nonce, true);
						} 
					echo'</div></div>';
			

			echo '<div class="siteseo-card">
				<div class="siteseo-card-body">
					<span class="dashicons dashicons-money-alt siteseo-card-icon"></span>
					<h3>'.esc_html__('Easy Digital Downloads', 'siteseo').'</h3>
					<p>'.esc_html__('Add meta tags required for Easy Digitial Downloads SEO', 'siteseo').'</p>
				</div>
				<div class="siteseo-card-footer">';
					if(defined('SITESEO_PRO_VERSION')){
						echo'<a href="admin.php?page=siteseo-pro-page">'.esc_html__('Settings','siteseo').'</a>';
					} else{
						echo'<div class="siteseo-pro-badge">Pro</div>';
					}
					
					if(class_exists('\SiteSEOPro\Settings\Util') && method_exists('\SiteSEOPro\Settings\Util', 'render_toggle')){
						\SiteSEOPro\Settings\Util::render_toggle('edd', $toggle_easy_digital, $pro_nonce,true);
					}
				echo'</div></div>';
			}
			echo '<div class="siteseo-card">
				<div class="siteseo-card-body">
					<span class="dashicons dashicons-code-standards siteseo-card-icon"></span>
					<h3>'.esc_html__('Page Speed', 'siteseo').'</h3>
					<p>'.esc_html__('Enhance Your Website Performance with PageSpeed Insights','siteseo').'</p>
				</div>
				<div class="siteseo-card-footer">';
					if(defined('SITESEO_PRO_VERSION')){
						echo'<a href="admin.php?page=siteseo-pro-page">'.esc_html__('Settings', 'siteseo').'</a>';
					} else {
						echo'<div class="siteseo-pro-badge">Pro</div>';
					}
				echo'</div>
			</div>

			<div class="siteseo-card">
				'.((time() < strtotime('30 November 2025')) ? '<span class="siteseo-feature-update-badge">Updated</span>' : '') .'
				<div class="siteseo-card-body">
					<span class="dashicons dashicons-list-view siteseo-card-icon"></span>
					<h3>'.esc_html__('Structured Data','siteseo').'</h3>
					<p>'.esc_html__('Enhance Search Visibility with Structured Data Optimization','siteseo').'</p>
				</div>
				<div class="siteseo-card-footer">';
					if(defined('SITESEO_PRO_VERSION')){
						echo'<a href="admin.php?page=siteseo-pro-page">'.esc_html__('Settings', 'siteseo').'</a>';
					} else{
						echo'<div class="siteseo-pro-badge">Pro</div>';
					}
					
					if(class_exists('\SiteSEOPro\Settings\Util') && method_exists('\SiteSEOPro\Settings\Util', 'render_toggle')){
						\SiteSEOPro\Settings\Util::render_toggle('structured', $toggle_structured_data, $pro_nonce,true);
					}
				echo'</div>
			</div>

			<div class="siteseo-card">
				<div class="siteseo-card-body">
					<span class="dashicons dashicons-location siteseo-card-icon"></span>
					<h3>'.esc_html__('Local Business', 'siteseo').'</h3>
					<p>'.esc_html__('Optimize Your Online Presence for Local Business Success', 'siteseo').'</p>
				</div>
				<div class="siteseo-card-footer">';
					if(defined('SITESEO_PRO_VERSION')){
						echo '<a href="admin.php?page=siteseo-pro-page">'.esc_html__('Settings', 'siteseo').'</a>';
					} else{
						echo'<div class="siteseo-pro-badge">Pro</div>';
					}
					
					if(class_exists('\SiteSEOPro\Settings\Util') && method_exists('\SiteSEOPro\Settings\Util', 'render_toggle')){
						\SiteSEOPro\Settings\Util::render_toggle('local', $toggle_localBusiness, $pro_nonce, true);
					}
				echo'</div>
			</div>
			
			<div class="siteseo-card">
				<div class="siteseo-card-body">
					<span class="dashicons dashicons-editor-unlink siteseo-card-icon"></span>
					<h3>'.esc_html__('Redirections / 404 monitoring','siteseo').'</h3>
					<p>'.esc_html__('Track 404 errors and set up redirects to improve user experience and SEO.','siteseo').'</p>
				</div>
				<div class="siteseo-card-footer">';
					if(defined('SITESEO_PRO_VERSION')){
						echo'<a href="admin.php?page=siteseo-pro-page">'.esc_html__('Settings', 'siteseo').'</a>';
					} else{
						echo'<div class="siteseo-pro-badge">Pro</div>';
					}
					
					if(class_exists('\SiteSEOPro\Settings\Util') && method_exists('\SiteSEOPro\Settings\Util', 'render_toggle')){
						\SiteSEOPro\Settings\Util::render_toggle('404_monitoring', $toggle_state_redirect, $pro_nonce, true);
					}
				echo'</div>
			</div>
			
			<div class="siteseo-card">
				<div class="siteseo-card-body">
					<span class="dashicons dashicons-index-card siteseo-card-icon"></span>
					<h3>'.esc_html__('Google News','siteseo').'</h3>
					<p>'.esc_html__('Generate and manage a Google News sitemap to ensure your news articles get indexed quickly.','siteseo').'</p>
				</div>
				<div class="siteseo-card-footer">';
					if(defined('SITESEO_PRO_VERSION')){
						echo'<a href="admin.php?page=siteseo-pro-page">'.esc_html__('Settings', 'siteseo').'</a>';
					} else{
						echo'<div class="siteseo-pro-badge">Pro</div>';
					}
					
					if(class_exists('\SiteSEOPro\Settings\Util') && method_exists('\SiteSEOPro\Settings\Util', 'render_toggle')){
						\SiteSEOPro\Settings\Util::render_toggle('google_news', $toggle_state_google_news, $pro_nonce, true);
					}
				echo'</div>
			</div>
			
			<div class="siteseo-card">
				<div class="siteseo-card-body">
					<span class="dashicons dashicons-format-video siteseo-card-icon"></span>
					<h3>'.esc_html__('Video Sitemap','siteseo').'</h3>
					<p>'.esc_html__('Create and manage a video sitemap to help search engines index your video content efficiently.','siteseo').'</p>
				</div>
				<div class="siteseo-card-footer">';
					if(defined('SITESEO_PRO_VERSION')){
						echo'<a href="admin.php?page=siteseo-pro-page">'.esc_html__('Settings', 'siteseo').'</a>';
					} else{
						echo'<div class="siteseo-pro-badge">Pro</div>';
					}
					
					if(class_exists('\SiteSEOPro\Settings\Util') && method_exists('\SiteSEOPro\Settings\Util', 'render_toggle')){
						\SiteSEOPro\Settings\Util::render_toggle('video_sitemap', $toggle_state_video_sitemap, $pro_nonce, true);
					}
				echo'</div>
			</div>

			<div class="siteseo-card">
				'.((time() < strtotime('30 November 2025')) ? '<span class="siteseo-feature-new-badge">New</span>' : '') .'
				<div class="siteseo-card-body">
					<span class="dashicons dashicons-media-text siteseo-card-icon"></span>
					<h3>'.esc_html__('LLMs txt', 'siteseo').'</h3>
					<p>'.esc_html__('Generate an llms.txt file with a single click to help AI crawlers better understand, index, and represent your business accurately.', 'siteseo').'</p>
				</div>
				<div class="siteseo-card-footer">';
					if(defined('SITESEO_PRO_VERSION')){
						echo'<a href="admin.php?page=siteseo-pro-page">'.esc_html__('Settings', 'siteseo').'</a>';
					} else{
						echo'<div class="siteseo-pro-badge">Pro</div>';
					}
					
					if(class_exists('\SiteSEOPro\Settings\Util') && method_exists('\SiteSEOPro\Settings\Util', 'render_toggle')){
						\SiteSEOPro\Settings\Util::render_toggle('llm_txt', $toggle_state_llm_txt, $pro_nonce, true);
					}
				echo'</div>
			</div>';

	echo'</div></section>';
	
	if(!defined('SITEPAD')){
		echo'<section class="siteseo-dashboard-extras">';
			if(defined('SITESEO_PRO_VERSION') && defined('SITESEO_PRO_AI_BUY')){
				do_action('siteseo_pro_show_ai_tokens_sidebar');
			}
			echo '<div class="siteseo-need-help">
				<p>Quick Access</p>
				<div class="siteseo-quick-links">
					<div class="siteseo-quick-access-item">
						<span class="dashicons dashicons-format-status"></span>
						<a href="https://softaculous.deskuss.com/open.php?topicId=22" target="_blank">Support</a>
					</div>
					<div class="siteseo-quick-access-item">
						<span class="dashicons dashicons-media-document"></span>
						<a href="https://siteseo.io/docs/" target="_blank">Documentation</a>
					</div>
					<div class="siteseo-quick-access-item">
						<span class="dashicons dashicons-feedback"></span>
						<a href="https://softaculous.deskuss.com/open.php?topicId=22" target="_blank">Feedback</a>
					</div>
					<div class="siteseo-quick-access-item">
						<span class="dashicons dashicons-star-filled" style="color:#FFD700;"></span><a href="https://wordpress.org/support/plugin/siteseo/reviews/?rate=5#new-post" target="_blank">Rate Us</a>
					</div>
				</div>
			</div>
			<div class="siteseo-admin-softaculous-branding">SiteSEO - A Softaculous Product</div>';

			if(!defined('SITEPAD') && !defined('SITESEO_PRO_VERSION')){
				self::pro_upsell();
			}

			echo '</section>';
	}

	echo '</div></div></div>';
	}

	static function pro_upsell(){

		$features = [
			'Search Statistics',
			'Advanced Sitemaps',
			'Redirection Management',
			'AI-Generations Titles & Descriptions',
			'LLMs.txt Support',
			'and More…',
		];

		echo '<div class="siteseo-promo-modern-card">
			<div class="siteseo-promo-header-group">
			<h3 class="siteseo-promo-title">SiteSEO</h3>
			<span class="siteseo-promo-badge-pro">Pro</span>
			</div>

			<p class="siteseo-promo-desc">'.esc_html__('Unlock advanced performance features.', 'siteseo').'</p>

			<ul class="siteseo-promo-feature-list">';
			foreach($features as $feature){
				echo '<li class="siteseo-promo-feature-item">
					<div class="siteseo-promo-check-circle">
						<div class="siteseo-promo-check-icon"></div>
					</div>
					'.esc_html($feature).'
				</li>';
			}
			echo '</ul>

			<a href="https://siteseo.io/pricing/?utm_source=plugin_settings" class="siteseo-promo-btn-main" target="_blank">
				<span class="siteseo-promo-btn-text">'.esc_html__('Upgrade to Pro', 'siteseo').'</span>
				<span class="siteseo-promo-arrow">&rarr;</span>
			</a>
		</div>';
	}

}
PK��f\HrҰ��main/settings/tools.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO\Settings;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Tools{

	static function menu(){

		echo '<div id="siteseo-root">';
		
		Util::admin_header();

		$plugins = Util::importable_plugins();

		echo '<form method="post" id="siteseo-form" class="siteseo-option" name="siteseo-flush">
				<span id="siteseo-tab-title"><strong>'.esc_html__('Tools - SiteSEO','siteseo').'</strong></span><br/><br/>
				<span class="line"></span>
				<div style="siteseo-tools-page">';
					if(!defined('SITEPAD')){
						echo '<h3>'.esc_html__('Import Settings From Other Plugins','siteseo').'</h3>
						<div class="siteseo_wrap_label">
							<p class="description">'.esc_html__('Import posts and terms metadata from the specified source', 'siteseo').'</p>
						</div>

						<p><select id="siteseo-plugin-selector">
							<option value="none">'.esc_html__('Select an option', 'siteseo').'</option>';
							foreach($plugins as $plugin => $name){
								$plugin_slug = explode('/', $plugin);
								$plugin = $plugin_slug[0];

								echo '<option value="'. esc_attr($plugin) . '-migration-tool">'.esc_html($name).'</option>';
							}

						echo '</select></p>
						<p class="description">' . esc_html__('You don\'t need to enable the selected SEO plugin to run the import.', 'siteseo').'</p>';
					
						foreach($plugins as $plugin =>$name){
							self::display_plugins($plugin, $name);
						}

						echo '<span class="line"></span>';
					}
					
					echo '<h3>'.esc_html__('Export plugin settings','siteseo').'</h3>
					<div class="siteseo_wrap_label">
						<p class="description">'.esc_html__('Export the plugin settings for this site as a .json file, making it easy to import the configuration into another site.', 'siteseo').'</p>
					</div>

					<div class="siteseo_wrap_label">
						<button class="btn btnSecondary" id="siteseo-export-btn">'.esc_html__('Export', 'siteseo').'</button>
					</div>
					<span class="line"></span>
					
					<h3>'.esc_html__('Import plugin settings', 'siteseo').'</h3>
					<div class="siteseo_wrap_label">
						<p class="description">'.esc_html__('Import the plugin settings from a .json file. You can obtain this file by exporting the settings from another site using the form above.','siteseo').'</p>
					</div>
							
					<div class=siteseo_wrap_label>
						<input type="file" id="siteseo-import-file" accept=".json" />
					</div>

					<div class="siteseo_wrap_label">
						<button class="brn btnSecondary" id="siteseo-import-btn">'. esc_html__('Import', 'siteseo') .'</button>
					</div>
					
					<span class="line"></span>
					
					<h3>'.esc_html__('Reset All Settings', 'siteseo').'</h3>
					<div class="siteseo_wrap_label"><div class="siteseo-notice is-warning">
						<span id="dashicons-warning" class="dashicons dashicons-info"></span>&nbsp;
						<div><p>'.
						/* translators: placeholders are just <strong> tag */ 
						wp_kses_post(sprintf(__('%1$s WARNING: %2$s Delete all options related to this plugin in your database.','siteseo'), '<strong>', '</strong>')).'</p></div>
					</div></div>
					<button class="btn btnSecondary" id="siteseo-reset-settings">'.esc_html__('Reset settings', 'siteseo').'</button>
	
			</div>
			</form></div>';
	}
	
	static function display_plugins($plugin,$name){
		$seo_title = 'SiteSEO';
		$plugin_slug = explode('/', $plugin);
		$plugin = $plugin_slug[0];
		
		echo '<div id="'.esc_attr($plugin).'-migration-tool" class="postbox siteseo-section-tool">
		<div class="inside">
		<h3>'. /* translators: %s represents the import posts and terms */ 
		sprintf(esc_html__('Import posts and terms (if available) metadata from %s', 'siteseo'), esc_html($name)).'</h3>
		<p>'. esc_html__('By clicking Migrate, we\'ll import:', 'siteseo').'</p>
		<ul>
			<li>'. esc_html__('Title tags', 'siteseo') .'</li>
			<li>'. esc_html__('Meta description', 'siteseo') .'</li>
			<li>'. esc_html__('Facebook Open Graph tags (title, description and image thumbnail)', 'siteseo') .'</li>
			<li>'. esc_html__('Twitter tags (title, description and image thumbnail)', 'siteseo') .'</li>
			<li>'. esc_html__('Meta Robots (noindex, nofollow...)', 'siteseo') .'</li>
			<li>'.esc_html__('Canonical URL', 'siteseo').'</li>';

			if($plugin !='slim-seo' && $plugin != 'surerank'){
				echo '<li>'. esc_html__('Focus / target keywords', 'siteseo') .'<li>';
			}
			
			if($plugin != 'all-in-one-seo-pack' && $plugin !='slim-seo' && $plugin != 'surerank'){
				echo '<li>'. esc_html__('Primary category', 'siteseo') .'</li>';
			}
			
			if('autodescription' == $plugin || 'all-in-one-seo-pack' == $plugin || 'wp-seopress' == $plugin){
				echo '<li>'. esc_html__('Redirect URL', 'siteseo') .'</li>';
			}

			echo '</ul>
					<div class="siteseo_wrap_label">						
						<div class="siteseo-notice is-warning">
							<span id="dashicons-warning" class="dashicons dashicons-warning"></span>&nbsp;
								<p>'. 
								/* translators: %s represents the degree of severity */ 
								wp_kses_post(sprintf(__('<strong>WARNING:</strong> Migration will delete / update all <strong>%1$s posts and terms metadata</strong>. Some dynamic variables will not be interpreted. We do <strong>NOT delete any %2$s data</strong>.', 'siteseo'), esc_html($seo_title), esc_html($name))). '
								</p>
						</div>
					</div>
						
					<button id="siteseo-'.esc_attr($plugin).'-migrate" type="button" class="btn btnSecondary">' 
						. esc_html__('Import now', 'siteseo').'</button><span class="spinner"></span><div class="log"></div>
					</div>
				</div>';
		}

}
PK��f\Gjqβ
�
main/settings/util.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO\Settings;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Util{

	static function clean_text($text){
		return sanitize_text_field(wp_unslash($text));
	}

	static function clean_url($url){
		if(is_array($url)){
			return map_deep(wp_unslash($url), 'sanitize_url');
		}

		return sanitize_url(wp_unslash($url));
	}

	static function render_toggle($title, $toggle_key, $toggle_state, $nonce, $label = false){
		$is_active = $toggle_state ? 'active' : '';
		$state_text = $toggle_state ? 'Disable' : 'Enable';

		// for dashbord screen
		if(!empty($label)){
			echo '<div class="siteseo-toggle-cnt">
				<div class="siteseo-toggle-Sw '.esc_attr($is_active).'" id="siteseo-toggleSw-' . esc_attr($toggle_key) . '" data-nonce="'.esc_attr($nonce).'" data-toggle-key="'.esc_attr($toggle_key).'" data-action="siteseo_save_'.esc_attr($toggle_key).'"></div>
				<input type="hidden" name="siteseo_options['.esc_attr($toggle_key) . ']" id="'.esc_attr($toggle_key).'" value="'.esc_attr($toggle_state).'">
			</div>';
		}else{

			echo '<div class="siteseo-toggle-cnt">
				<span id="siteseo-tab-title"><strong>'.esc_html($title).'</strong></span>
				<div class="siteseo-toggle-Sw '.esc_attr($is_active).'" id="siteseo-toggleSw-'.esc_attr($toggle_key).'" data-nonce="' . esc_attr($nonce) . '" data-toggle-key="'.esc_attr($toggle_key).'" data-action="siteseo_save_'.esc_attr($toggle_key).'"></div>
				<span id="siteseo-arrow-icon" class="dashicons dashicons-arrow-left-alt siteseo-arrow-icon"></span>
				<p class="toggle_state_'.esc_attr($toggle_key).'">'.esc_html($state_text).'</p>
				<input type="hidden" name="siteseo_options['.esc_attr($toggle_key).']" id="'.esc_attr($toggle_key).'" value="'.esc_attr($toggle_state).'">
			</div>';
		}
	}
	
	static function admin_header(){
		echo '<div class="siteseo-navbar">
			<div class="logo">
				<img alt="'.esc_html__('siteseo logo', 'siteseo').'" height="30" src="'. esc_url(SITESEO_ASSETS_URL).'/img/logo-24.svg'.'" width="40"/>
				<div class="siteseo-breadcrumb">
					<a href="#">'.esc_html__('Home', 'siteseo').'</a>
					<span>/</span>
					<a class="active" href="">'.esc_html(get_admin_page_title()).'</a>
				</div>
			</div>';
			
			echo'<div class="links">
					<span class="siteseo-header-version-badge">v'.esc_html(SITESEO_VERSION).'</span>
					<a target="_blank" href="https://siteseo.io/docs/">'.esc_html__('Docs', 'siteseo').'</a>';
					
					if(!defined('SITEPAD')){
						echo'<a target="_blank" class="support" href="https://softaculous.deskuss.com/open.php?topicId=22">'.esc_html__('Support', 'siteseo').'</a>';
					}
				echo'</div>
			</div>';
	}
	
	static function importable_plugins(){
		return [
			'wordpress-seo/wp-seo.php' => 'Yoast SEO',
			'all-in-one-seo-pack/all_in_one_seo_pack.php' => 'All In One SEO',
			'autodescription/autodescription.php' => 'The SEO Framework',
			'seo-by-rank-math/rank-math.php' => 'Rank Math',
			'wp-seopress/seopress.php' => 'SEOPress',
			'slim-seo/slim-seo.php' => 'Slim SEO',
			'surerank/surerank.php' => 'Surerank'
		];
	}

	static function submit_btn($value = ''){
		echo '<div class="siteseo-submit-button"><input type="submit" id="submit" name="submit" value="'.esc_attr($value ?: 'Save changes') . '" class="submit-button"></div>';
	}
	
	static function extract_content($input){

		if(preg_match('/content=["\']([^"\']+)["\']/', $input, $matches)){
			return $matches[1];
		}
		
		return $input;
	}
}PK��f\�^-�O�Omain/settings/onboarding.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO\Settings;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class OnBoarding{
	
	static $current_step = '';
	static $import_options = [];
	static $steps = [];
	static $current_step_no = 1;

	static function init(){
		if(wp_doing_ajax()){
			return;
		}
		
		self::$steps = [
			'your-site' => [
				'title' => 'Your Site',
				'desc' => 'Your site and social data',
				'fn' => '\SiteSEO\Settings\OnBoarding::site_page',
			],
			'indexing' => [
				'title' => 'Indexing',
				'desc' => 'Select post type indexing',
				'fn' => '\SiteSEO\Settings\OnBoarding::indexing_page',
			],
			'advanced' => [
				'title' => 'Advanced',
				'desc' => 'URL configuration',
				'fn' => '\SiteSEO\Settings\OnBoarding::advanced_page',
			],
			'ready' => [
				'title' => 'Ready',
				'desc' => 'All set now!',
				'fn' => '\SiteSEO\Settings\OnBoarding::ready_page',
			],
		];
		
		$active_plugins = get_option('active_plugins', []);
		$importable_plugins = Util::importable_plugins();
		$importable_plugins = array_keys($importable_plugins);
		
		$importable_found = array_intersect($active_plugins, $importable_plugins);
		
		if(!empty($importable_found)){
			$import_step = [
				'import' => [
					'title' => 'Import',
					'desc' => 'Importing meta data',
					'fn' => '\SiteSEO\Settings\OnBoarding::import_page',
				]
			];
			
			self::$steps = array_merge($import_step, self::$steps);
			self::$import_options = $importable_found;
		}
		
		self::$current_step = !empty($_REQUEST['step']) ? sanitize_text_field(wp_unslash($_REQUEST['step'])) : '';

		remove_all_actions('admin_notices');
		remove_all_actions('all_admin_notices');
		remove_all_actions('network_admin_notices');
		add_action('admin_menu', '\SiteSEO\Settings\OnBoarding::add_to_menu');
		add_action('admin_init', '\SiteSEO\Settings\OnBoarding::page');
	}

	static function enqueue_assets(){
		wp_enqueue_media();
		wp_enqueue_script('siteseo-onboarding', SITESEO_ASSETS_URL . '/js/onboarding.js', ['jquery'], SITESEO_VERSION, true);
		wp_enqueue_style('siteseo-onboarding' , SITESEO_ASSETS_URL . '/css/onboarding.css', [], SITESEO_VERSION);
		wp_add_inline_script('siteseo-onboarding', "let siteseo_onboarding = ".wp_json_encode([
			'nonce' => wp_create_nonce('siteseo_admin_nonce'),
			'ajax_url' => admin_url('admin-ajax.php'),
		]));
	}
	
	static function add_to_menu(){
		add_submenu_page('', __('SiteSEO Onboarding', 'siteseo'), 'Onboarding', 'manage_options', 'siteseo-onboarding', 'SiteSEO\Settings\Onboarding::wizard');
	}
	
	static function page(){
		self::enqueue_assets();
		
		ob_start();

	?><!DOCTYPE html>
<html <?php language_attributes();?>>
<?php echo'<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>'.esc_html__('SiteSEO OnBoarding', 'siteseo').'</title>';
wp_print_head_scripts();
wp_print_styles('siteseo-onboarding');
	
echo '</head>
<body>';
	self::wizard();
	if(function_exists('wp_print_media_templates')){
		wp_print_media_templates();
	}
	wp_print_footer_scripts();
	wp_print_scripts('siteseo-onboarding');
	echo '</body>
</html>';
		die();
	}
	
	static function wizard(){

		echo '<div id="siteseo-onboarding-root">
	<div class="siteseo-onboarding-nav-wrapper">
	<nav>
		<div class="content">
		<div class="header">
			<img src="'.esc_url(SITESEO_ASSETS_URL) .'/img/siteseo-white.png" height="40"/>
			<a href="'.esc_url(admin_url('?page=siteseo')).'" title="'.esc_attr__('Exit to SiteSEO Dashboard', 'siteseo').'"><svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#fff"><path d="M200-120q-33 0-56.5-23.5T120-200v-160h80v160h560v-560H200v160h-80v-160q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm220-160-56-58 102-102H120v-80h346L364-622l56-58 200 200-200 200Z"/></svg></a>
		</div>';

		$step_count = 1;
		echo '<div class="steps">';
		foreach(self::$steps as $step_slug => $step){
			echo '<div class="step">
				<div class="step-milestone" data-step="'.esc_attr($step_count).'" data-step-slug="'.esc_attr($step_slug).'"></div>
				<div class="step-info"><span>'.esc_html($step['title']).'</span><span class="description">'.esc_html($step['desc']).'</span></div>
			</div>';
			$step_count++;
		}
		echo '
		</div>
		</div>
		<div class="footer">A Softaculous Product</div>
	</nav>
	</div>
	<main>
		<div class="siteseo-onboarding-content">';
		self::welcome_page();
		
		foreach(self::$steps as $step){
			call_user_func($step['fn']);
			self::$current_step_no++; // increasing the step number after we have rendered the step page.
		}

		echo '</div>
	
	</main>
</div>';

	}

	static function welcome_page(){
		
		$is_active = empty(self::$current_step) ? 'siteseo-step-active' : '';
		
		echo '<div class="siteseo-step-page siteseo-step-is-welcome '.esc_attr($is_active).'" data-step="welcome">
			<h1>'.esc_html__('Welcome to the SiteSEO Setup Wizard', 'siteseo').'</h1>
			<p>'.esc_html__('This wizard will guide you through setting up SiteSEO and help you get started in no time.', 'siteseo').'</p>
			<button class="siteseo-btn primary" id="siteseo-onboarding-begin" style="margin-top:20px">'.esc_html__('Let\'s begin!', 'siteseo').'</button>
		</div>';
		
	}
	
	static function import_page(){
		$is_active = !empty(self::$current_step) && self::$current_step == 'import' ? 'siteseo-step-active' : '';

		echo '<div class="siteseo-step-page '.esc_attr($is_active).'" data-step="import">
		<span>Step '.esc_html(self::$current_step_no).' of '.count(self::$steps).'</span>
		<h1>'.esc_html__('Import data from your current SEO plugin', 'siteseo').'</h1>
		<p>'.esc_html__('SiteSEO has detected the presence of other SEO plugins. To ensure a smooth transition, please select the plugins you wish to import SEO data from', 'siteseo').'</p>
		<div class="siteseo-onboarding-import-plugins">';
			$importable_plugins = Util::importable_plugins();

			echo '<form><div class="siteseo-radio-input">';
			foreach(self::$import_options as $plugin){
				$id = strtolower(str_replace(' ', '-', $plugin));
				echo '<input type="radio" name="plugin_name" value="'.esc_attr($id).'" id="'.esc_attr($id).'"/>
				<label for="'.esc_attr($id).'">'.esc_html($importable_plugins[$plugin]).'</label>';
			}
			echo '</div>
			<div class="siteseo-onboarding-import-info">
				<details>
					<summary>'.esc_html__('What will be imported?', 'siteseo').'</summary>
					<ul>
						<li>'. esc_html__('Title tags', 'siteseo') .'</li>
						<li>'. esc_html__('Meta description', 'siteseo') .'</li>
						<li>'. esc_html__('Facebook Open Graph tags (title, description and image thumbnail)', 'siteseo') .'</li>
						<li>'. esc_html__('Twitter tags (title, description and image thumbnail)', 'siteseo') .'</li>
						<li>'. esc_html__('Meta Robots (noindex, nofollow...)', 'siteseo') .'</li>
						<li>'. esc_html__('Canonical URL', 'siteseo').'</li>
						<li>'. esc_html__('Focus / target keywords', 'siteseo') .'</li>
					</ul>
				</details>
				<button class="siteseo-btn primary" id="siteseo-do-import">Import</button>
				<p class="siteseo-onboarding-msg"></p>
			</div>
			</form>
			<div class="siteseo-onboarding-content-footer">
			<button class="siteseo-skip-step siteseo-btn secondary">'.esc_html__('Skip Step', 'siteseo').'</button><button class="siteseo-btn primary siteseo-skip-step">'.esc_html__('Next Step', 'siteseo').'</button>
			</div>
		</div>
		</div>';
	}
	
	static function site_page(){
		$title_options = get_option('siteseo_titles_option_name', []);
		$social_options = get_option('siteseo_social_option_name', []);

		$site_name = !empty($title_options['titles_home_site_title']) ? $title_options['titles_home_site_title'] : '%%sitetitle%%';
		$alt_site_name = !empty($title_options['titles_home_site_title_alt']) ? $title_options['titles_home_site_title_alt'] : '';
		$site_type = !empty($social_options['social_knowledge_type']) ? $social_options['social_knowledge_type'] : '';
		$org_name = !empty($social_options['social_knowledge_name']) ? $social_options['social_knowledge_name'] : '';
		$org_img = !empty($social_options['social_knowledge_img']) ? $social_options['social_knowledge_img'] : '';
		$fb_url	= !empty($social_options['social_accounts_facebook']) ? $social_options['social_accounts_facebook'] : '';
		$x_account = !empty($social_options['social_accounts_twitter']) ? $social_options['social_accounts_twitter'] : '';
		$additional_url = !empty($social_options['social_accounts_additional']) ? implode("\n", $social_options['social_accounts_additional']) : '';
		
		$is_active = !empty(self::$current_step) && self::$current_step == 'your-site' ? 'siteseo-step-active' : '';
		echo '<div class="siteseo-step-page '.esc_attr($is_active).'" data-step="your-site">
		<span>Step '.esc_html(self::$current_step_no).' of '.count(self::$steps).'</span>
		<h1>Your Site: '.esc_html(get_bloginfo('name')).'</h1>
		<p>'.esc_html__('We need some basic information about your site, so we can built up the knowledge graph', 'siteseo').'</p>
		<form>
			<div class="siteseo-input-block">
				<label>'.esc_html__('Website Name', 'siteseo').'</label>
				<input type="text" name="website_name" value="'.esc_attr($site_name).'"/>
				<p class="siteseo-input-description">'.esc_html__('Enter the name of your site as it should appear in search results, %%sitetitle%% is a dynamic variable for your site title', 'siteseo').'</p>
			</div>
			<div class="siteseo-input-block">
				<label>'.esc_html__('Altername sitename', 'siteseo').'</label>
				<input type="text" name="alternate_site_name" value="'.esc_attr($alt_site_name).'" placeholder="Alternate site name"/>
				<p class="siteseo-input-description">'.esc_html__('The website\'s alternate name, like a common acronym or shorter version, if applicable.', 'siteseo').'</p>
			</div>
			<div class="siteseo-input-block">
				<label>'.esc_html__('Is your site about an Organization or a Person?', 'siteseo').'</label>
				<select type="text" name="site_type">
					<option value="Person" '.selected($site_type, 'Person', false).'>Person</option>
					<option value="Organization" '.selected($site_type, 'Organization', false).'>Organization</option>
				</select>
			</div>
			<div class="siteseo-input-block">
				<label>'.esc_html__('Your/Organization name', 'siteseo').'</label>
				<input type="text" name="organization_name" placeholder="eg:. My Company Name" value="'.esc_attr($org_name).'"/>
			</div>
			<div class="siteseo-input-block">
				<label>'.esc_html__('Organization Logo', 'siteseo').'</label>
				<button id="siteseo-onboarding-img-holder">
				<img src="'.esc_url($org_img).'"/>
				<svg xmlns="http://www.w3.org/2000/svg" height="50px" viewBox="0 -960 960 960" width="50px" fill="#5f6368" style="'.(!empty($org_img) ? 'display:none;' : '').'"><path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h560q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm40-80h480L570-480 450-320l-90-120-120 160Zm-40 80v-560 560Z"/></svg></button>
				<p class="siteseo-input-description">'.esc_html__('A square image is preferred, with a minimum size of 112x112 pixels.', 'siteseo').'</p>
				<input type="hidden" name="organization_logo" value="'.esc_url($org_img).'"/>
				<button class="siteseo-btn primary" id="siteseo-upload-org-img" style="align-self:flex-start">'.esc_html__('Select Image', 'siteseo').'</button>
			</div>
			<h4>Social Details</h4>
			<div class="siteseo-input-block">
				<label>'.esc_html__('Facebook page URL', 'siteseo').'</label>
				<input type="text" name="social_fb" value="'.esc_url($fb_url).'" placeholder="eg: https://facebook.com/my-page-url"/>
			</div>
			<div class="siteseo-input-block">
				<label>'.esc_html__('X Username', 'siteseo').'</label>
				<input type="text" name="social_x" value="'.esc_attr($x_account).'" placeholder="eg: @x_account"/>
			</div>
			<div class="siteseo-input-block">
				<label>'.esc_html__('Additional Accounts', 'siteseo').'</label>
				<textarea rows="3" name="social_additional" placeholder="eg:https://somesocial.com/my-page">'.esc_textarea($additional_url).'</textarea>
				<p class="siteseo-input-description">'.esc_html__('Enter 1 URL per line.', 'siteseo').'</p>
			</div>
			
			<div class="siteseo-onboarding-content-footer">
				<button class="siteseo-skip-step siteseo-btn secondary">'.esc_html__('Skip Step', 'siteseo').'</button><button class="siteseo-btn primary siteseo-save-n-continue">'.esc_html__('Save and Continue', 'siteseo').'<span class="siteseo-spinner"></span></button>
			</div>
		</form>
		</div>';
	}
	
	static function indexing_page(){
		$is_active = !empty(self::$current_step) && self::$current_step == 'indexing' ? 'siteseo-step-active' : '';
		$post_types = get_post_types(['public' =>  true, 'show_ui' => true], 'objects', 'and');
		unset($post_types['attachment']);
		
		$taxonomies = get_taxonomies(['public' =>  true, 'show_ui' => true], 'objects', 'and');

		echo '<div class="siteseo-step-page '.esc_attr($is_active).'" data-step="indexing">
		<span>Step '.esc_html(self::$current_step_no).' of '.count(self::$steps).'</span>
		<h1>Indexing</h1>
		<p>'.esc_html__('Let us know which parts of your website you’d like to be crawled.', 'siteseo').'</p>
		<form method="POST">
		<div class="siteseo-input-block">
			<label>'.esc_html__('Is your site under construction or live?', 'siteseo').'</label>
			<div class="siteseo-radiogroup">
				<label><input type="radio" name="site_status" value="underconstruction"/>Under Construction</label>
				<label><input type="radio" name="site_status" value="live" checked/>Live</label>
			</div>
			<p class="siteseo-input-description">'.esc_html__('If your site is under construction then Search Engines will be discouraged to crawl your site by adding noindex metatag attribute and sitemap will be disabled.', 'siteseo').'</p>
		</div>
		<div class="siteseo-live-site-options" style="margin-top:35px;">
			<p>'.esc_html__('Choose items to exclude from search results', 'siteseo').'</p>
			<div class="siteseo-input-block">
				<label>'.esc_html__('Post Types', 'siteseo').'</label>
				<div class="siteseo-radiogroup">';
				if(!empty($post_types)){
				foreach($post_types as $post){
					echo '<div><input type="checkbox" name="post_types" value="'.esc_attr($post->name).'" id="post_type_'.esc_attr($post->name).'"/>
					<label for="post_type_'.esc_attr($post->name).'">'.esc_html($post->label).'</label>
					</div>';
				}

				echo '<p class="siteseo-input-description">'.esc_html__('Discourage search engines from indexing these post types.', 'siteseo').'</p>';
			} else {
				echo '<p class="siteseo-input-description">'.esc_html__('No post type found.', 'siteseo').'</p>';
			}
			
			//TODO:: Will need to add options for Archive as well
			echo '</div>
			</div>
			<div class="siteseo-input-block">
				<label>'.esc_html__('Taxonomies', 'siteseo').'</label>
				<div class="siteseo-radiogroup">';
				if(!empty($taxonomies)){
					foreach($taxonomies as $taxonomy){
						echo '<div><input type="checkbox" name="taxonomies" value="'.esc_attr($taxonomy->name).'" id="taxonomy_'.esc_attr($taxonomy->name).'"/>
						<label for="taxonomy_'.esc_attr($taxonomy->name).'">'.esc_html($taxonomy->label).'</label>
						</div>';
					}

					echo '<p class="siteseo-input-description">'.esc_html__('Discourage search engines from indexing these taxonomies.', 'siteseo').'</p>
					<p class="siteseo-input-description">'.esc_html__('Note: We strongly recommend disabling the indexing of tags to avoid potential duplicate content issues that could negatively impact your site\'s SEO.', 'siteseo').'</p>';
				} else {
					echo '<p class="siteseo-input-description">'.esc_html__('No taxonomy found.', 'siteseo').'</p>';
				}
			echo '</div>
			</div>
		</div>
		<div class="siteseo-onboarding-content-footer">
			<button class="siteseo-skip-step siteseo-btn secondary">'.esc_html__('Skip Step', 'siteseo').'</button><button class="siteseo-btn primary siteseo-save-n-continue">'.esc_html__('Save and Continue', 'siteseo').'<span class="siteseo-spinner"></span></button>
		</div>
		</form>
		</div>';
	}
	
	static function advanced_page(){
		$is_active = !empty(self::$current_step) && self::$current_step == 'advanced' ? 'siteseo-step-active' : '';
		echo '<div class="siteseo-step-page '.esc_attr($is_active).'" data-step="advanced">
		<span>Step '.esc_html(self::$current_step_no).' of '.count(self::$steps).'</span>
		<h1>Advanced Options</h1>
		<p>'.esc_html__('We\'re nearly there—just a few final optimizations left!', 'siteseo').'</p>
		<form method="POST">
			<div class="siteseo-input-block">
				<div class="siteseo-radiogroup">
					<label><input type="checkbox" name="universal_metabox" checked/>Enable Universal Metabox</label>
				</div>
				<p class="siteseo-input-description">'.esc_html__('Universal metabox makes SiteSEO on page content SEO helper compatible with every Page Builder, so if you are not using Gutenberg then this is a must.', 'siteseo').'</p>
			</div>
			<div class="siteseo-input-block">
				<div class="siteseo-radiogroup">
					<label><input type="checkbox" name="author_noindex"/>'.esc_html__('Don\'t let search engines index author archive pages', 'siteseo').'</label>
				</div>
				<p class="siteseo-input-description">'.esc_html__('Recommended: Enable this option if you are the sole author of the site to prevent duplicate content on author archive pages.', 'siteseo').'</p>
			</div>
			<div class="siteseo-input-block">
				<div class="siteseo-radiogroup">
					<label><input type="checkbox" name="redirect_attachment"/>'.esc_html__('Redirect attachment pages to the file itself', 'siteseo').'</label>
				</div>
				<p class="siteseo-input-description">'.esc_html__('By default SiteSEO redirects to the parent post.', 'siteseo').'</p>
			</div>
			<div class="siteseo-input-block">
				<div class="siteseo-radiogroup">
					<label><input type="checkbox" name="category_url"/>'.esc_html__('Remove /category/ in your permalinks', 'siteseo').'</label>
				</div>
				<p class="siteseo-input-description">'.esc_html__('This reduces the length of the URL.', 'siteseo').'</p>
			</div>';

			do_action('siteseo_gsc_onboarding');

			echo '<div class="siteseo-onboarding-content-footer">
				<button class="siteseo-skip-step siteseo-btn secondary">'.esc_html__('Skip Step', 'siteseo').'</button><button class="siteseo-btn primary siteseo-save-n-continue">'.esc_html__('Save and Continue', 'siteseo').'<span class="siteseo-spinner"></span></button>
			</div>
		</form>
		</div>';
	}
	
	static function ready_page(){
		$is_active = !empty(self::$current_step) && self::$current_step == 'ready' ? 'siteseo-step-active' : '';
		echo '<div class="siteseo-step-page '.esc_attr($is_active).'" data-step="ready">
		<span>Step '.esc_html(self::$current_step_no).' of '.count(self::$steps).'</span>
		<h1>Done! 🎉</h1>
		<p>'.esc_html__('We are done with the setup, now you can start making content and submit the Sitemap to the search engines.', 'siteseo').'</p>
		<h4>'.esc_html__('What Next?', 'siteseo').'</h4>
		<ol style="margin:0">
			<li><a href="?page=siteseo-sitemaps" target="_blank">'.esc_html__('Configure your Sitemap', 'siteseo').'</a></li>
			<li>'.esc_html__('Submit yours sitemap to search engines', 'siteseo').'</li>
		</ol>
		
		<h4>'.esc_html__('You can also, subscribe to our newletter', 'siteseo').'</h4>
		'.esc_html__('You will get', 'siteseo').'
		<ul style="list-style-type:none">
			<li><span class="dashicons dashicons-minus"></span> '.esc_html__('Alerted about Google Algorithm changes.', 'siteseo').'</li>
			<li><span class="dashicons dashicons-minus"></span> '.esc_html__('Updates about our products.', 'siteseo').'</li>
			<li><span class="dashicons dashicons-minus"></span> '.esc_html__('Improve SEO of your website with our resourceful blogs.', 'siteseo').'</li>
		</ul>
		<a class="siteseo-btn secondary" href="https://siteseo.io/subscribe/" style="align-self:flex-start;" target="_blank">'.esc_html__('Subscribe', 'siteseo').'</a>
		<div class="siteseo-onboarding-content-footer">
			<a href="'.esc_url(admin_url()).'"class="siteseo-btn primary">Go to Dashboard</a>
			<a href="?page=siteseo"class="siteseo-btn primary">Review Settings</a>
			<a href="https://siteseo.io/docs/" class="siteseo-btn primary" target="_blank">Knowledge Base</a>
		</div>
		</div>';
	}
}

PK��f\��ֽ8�8main/settings/instant.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO\Settings;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Instant{

	static function menu(){
		global $siteseo;

		$indexing_toggle = isset($siteseo->setting_enabled['toggle-instant-indexing']) ? $siteseo->setting_enabled['toggle-instant-indexing'] : '';
		$nonce = wp_create_nonce('siteseo_toggle_nonce');

		$current_tab = isset($_GET['tab']) ? sanitize_key($_GET['tab']) : 'tab_siteseo_general';

		$instant_subtabs = [
			'tab_siteseo_general' => esc_html__('General', 'siteseo'),
			'tab_siteseo_settings' => esc_html__('Settings', 'siteseo'),
			'tab_siteseo_history' => esc_html__('History', 'siteseo'),
		];

		echo '<div id="siteseo-root">';
		Util::admin_header();

		echo '<form method="post" id="siteseo-form" class="siteseo-option" name="siteseo-flush">';
		wp_nonce_field('siteseo_instant_indexing');

		Util::render_toggle('Instant Indexing - SiteSEO', 'indexing_toggle', $indexing_toggle, $nonce);

		echo '<div id="siteseo-tabs" class="wrap">
		<div class="siteseo-nav-tab-wrapper">';

		foreach($instant_subtabs as $tab_key => $tab_caption){
			$active_class = ($current_tab === $tab_key) ? ' siteseo-nav-tab-active' : '';
			echo '<a id="'.esc_attr($tab_key).'-tab" class="siteseo-nav-tab'.esc_attr($active_class).'" data-tab="'.esc_attr($tab_key).'">'.esc_html($tab_caption).'</a>';
		}

		echo '</div>
		<div class"tab-content-wrapper">
		<div class="siteseo-tab'.($current_tab == 'tab_siteseo_general' ? ' active' : '').'" id="tab_siteseo_general" style="display: none;">';
		self::general();
		echo '</div>     
		<div class="siteseo-tab'.($current_tab == 'tab_siteseo_settings' ? ' active' : '').'" id="tab_siteseo_settings" style="display: none;">';
		self::settings();
		echo '</div>
		<div class="siteseo-tab'.($current_tab == 'tab_siteseo_history' ? 'active' : '').'" id="tab_siteseo_history" style="display : none;">';
		self::history();
		echo '</div>
		</div>';
		Util::submit_btn();
		echo '</form></div>';

	}

	static function general(){
		global $siteseo;

		if(!empty($_POST['submit'])){
			self::save_settings();
		}

		$options = get_option('siteseo_instant_indexing_option_name');
		//$options = $siteseo->instant_settings;

		$option_engines = !empty($options['engines']) ? $options['engines'] : '';
		$option_search_engine_google = !empty($option_engines['google']) ? $option_engines['google'] : '';
		$option_search_engine_bing = !empty($option_engines['bing']) ? $option_engines['bing'] : '';
		$option_action = !empty($options['instant_indexing_google_action']) ? $options['instant_indexing_google_action'] : '';
		$option_manual_batch = !empty($options['instant_indexing_manual_batch']) ? $options['instant_indexing_manual_batch'] : '';

		echo '<h3 class="siteseo-tabs">'.esc_html__('Instant Indexing','siteseo').'</h3>
		<div class="siteseo_wrap_label">
			<p class="description">'.esc_html__('Utilize the Indexing API to inform Google and Bing about updates or removals of pages from their indexes. The process may take a few minutes. You can submit URLs in batches of up to 100 (maximum 200 requests per day for Google).','siteseo').'</p>
		</div>

		<div class="siteseo-notice">
			<span class="dashicons dashicons-info"></span>
		    <div><h3>'.esc_html__('How does this work?', 'siteseo').'</h3>
			<ol>
			<li>'.
			/* translators: placeholders are just <strong> tag */ 
			wp_kses_post(sprintf(__('Setup your Google / Bing API keys from the %1$s Settings %2$s tab', 'siteseo'), '<strong>', '</strong>')).'</li>
			<li>'.
			/* translators: placeholders are just <strong> tag */ 
			wp_kses_post(sprintf(__('%1$s Enter the URLs %2$s you want to index in the field below.', 'siteseo'), '<strong>', '</strong>')).'</li>
				<li><strong>'.wp_kses_post(__('Save changes', 'siteseo')).'</strong></li>
			<li>'.
			/* translators: placeholders are just <strong> tag */ 
			wp_kses_post(sprintf(__('Click %1$s Submit URLs to Google & Bing  %2$s', 'siteseo'), '<strong>', '</strong>')).'</li>
			</ol>
			</div>
		</div>

		<table class="form-table">
		    <tbody>

		    	<tr>
				<th scope="row">'.esc_html__('select search engines','siteseo').'</th>
				<td> 
					<div class="siteseo_wrap_label"><label for="siteseo_search_engines">
						<input id="siteseo_search_engines" name="siteseo_options[search_engine_google]" type="checkbox"' . (!empty($option_search_engine_google) ? 'checked="yes"' : '') . ' value="1"/>'.esc_html__('Google', 'siteseo') . 
				            '</label></div>
					    <label for="siteseo_search_engines">
					    	<input id="siteseo_search_engines" name="siteseo_options[search_engine_bing]" type="checkbox"' . (!empty($option_search_engine_bing) ? 'checked="yes"' : '') . ' value="1"/>'.esc_html__('Bing', 'siteseo') . 
					    '</label>
				</td>
			</tr>

			<tr>
				<th scope="row">'.esc_html__('Which action to run for Google?', 'siteseo') .'</th>
				<td>
					<div class="siteseo_wrap_label">
						<label>
							<input id="siteseo_update_urls" name="siteseo_options[instant_indexing_actions]" type="radio" value="update_urls" '.checked($option_action, 'update_urls', false).'/>
							'.esc_html__('Update URLs', 'siteseo').'
						</label>
					</div>
					<div class="siteseo_wrap_label">
						<label>
							<input id="siteseo_remove_urls" name="siteseo_options[instant_indexing_actions]" type="radio" value="remove_urls" '.checked($option_action, 'remove_urls', false).'/>
							'.esc_html__('Remove URLs (the URL must return a 404 or 410 status code, or the page must include the <meta name="robots" content="noindex" /> meta tag).', 'siteseo').'
						</label>
					</div>
				</td>
			</tr>

			<tr>
				<th scope="row">'.esc_html__('Submit URLs for indexing','siteseo').'</th>
				<td>
					<textarea rows="20" name="siteseo_options[instant_indexing_batch]" placeholder="'.esc_html__('Submit one URL per line for search engine submission (maximum of 100 URLs).','siteseo').'">'.esc_attr($option_manual_batch).'</textarea>
				</td>
			</tr>

			<tr>
				<th scope="row"></th>
				<td>
					<button id="siteseo-submit-urls-button" class="btn btnSecondary">'.esc_html__('Submits URLs to Google & Bing', 'siteseo').'</button>
				</td><div style="position:absolute;margin-top:52.5%;margin-left:38%;" class="spinner"></div>
			</tr>
				
			<tr>
				<th scope="row"></th>
				<td>
					<div id="url-submitter-response"></div>
				</td>
			</tr>

		</tbody>
		</table><input type="hidden" name="siteseo_options[general]" value="1"/>';
	}

	static function settings(){
		global $siteseo,$docs;

		if(!empty($_POST['submit'])){
			self::save_settings();
		}

		$docs['instant_indexing']['api'] = 'https://console.cloud.google.com/apis/library/indexing.googleapis.com?hl=en';
		$docs['instant_indexing']['google'] = 'https://siteseo.io/docs/api-cli-dev/use-google-instant-indexing-api-with-siteseo-pro/';

		//$options = $siteseo->instant_settings;
		$options = get_option('siteseo_instant_indexing_option_name');

		$option_google_api_key = !empty($options['instant_indexing_google_api_key']) ? $options['instant_indexing_google_api_key'] : '';
		$option_bing_api_key = !empty($options['instant_indexing_bing_api_key']) ? $options['instant_indexing_bing_api_key'] : '';
		$option_auto_url_submission = !empty($options['instant_indexing_automate_submission']) ? $options['instant_indexing_automate_submission'] : '';

		echo '<h3 class="siteseo-tabs">'.esc_html__('Settings','siteseo').'</h3>
		<table class="form-table">
		<tbody>
		<tr>
		    <th scope="row">'.esc_html__('Instant Indexing Google API Key','siteseo').'</th>
		    <td>    
		        <textarea name="siteseo_options[google_api_key]" rows="12" placeholder="'.esc_html__('Paste your Google Json key file here','siteseo').'">'.esc_html($option_google_api_key).'</textarea>
		    </td>
		</tr>

		<tr>
			<th scope="row">'.esc_html__('Instant Indexing Bing API Key', 'siteseo').'</th>
			<td>
				<input type="text" id="bing-api-key" name="siteseo_options[bing_api_key]" placeholder="'.esc_html__('Enter your Bing Instant Indexing API', 'siteseo').'" value="'.esc_attr($option_bing_api_key).'">
				<button type="button" id="siteseo-generate-api-key-btn" class="btn btnSecondary">'.esc_html__('Generate key', 'siteseo').'</button>
				<p class="description">'.esc_html__('The Bing Indexing API key is generated automatically. Click Generate Key if you need to recreate it or if it missing.', 'siteseo') .'</p>
				<p class="description">'.esc_html__('A key should look like this: YjI4MGQxZmU0NWM1NGY2ZGIxMDk5M2VlYTAxMTUyODI=', 'siteseo') .'</p>
			</td>
		</tr>

		<tr>
		    <th scope="row">'.esc_html__('Automate URL Submission','siteseo').'</th>
		    <td> 
		        <label for="siteseo_search_engines">
		            <input id="siteseo_search_engines" name="siteseo_options[auto_submission]" type="checkbox"'.(!empty($option_auto_url_submission) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('Activate automatic URL submission for the IndexNow API.', 'siteseo') . 
		        '</label>
		        <div class="siteseo_wrap_label">
		            <p class="description">'.esc_html__('Inform search engines via the IndexNow protocol whenever a post is created, updated, or removed.','siteseo').'</p>
		        </div>
		    </td>
		</tr>

		</tbody>
		</table><input type="hidden" name="siteseo_options[setting_tab]" value="1"/>';
	}
	
	static function history(){
		global $siteseo;
		
		$options = get_option('siteseo_instant_indexing_option_name');
		$indexing_history = !empty($options['indexing_history']) ? $options['indexing_history'] : '';
		
		echo'<h3 class="siteseo-tabs">'.esc_html__('History', 'siteseo').'</h3>
		<div class="siteseo_wrap_label">
			<p class="description">'.esc_html__('Most Recent 10 Indexing API Requests.', 'siteseo').'</p>
		</div>
		
		<table class="wp-list-table widefat fixed striped siteseo-history-table">
			<thead><tr>
				<th>'.esc_html__('Time & Date', 'siteseo').'</th>
				<th>'.esc_html__('URLs', 'siteseo').'</th>
				<th>'.esc_html__('Google Response', 'siteseo').'</th>
				<th>'.esc_html__('Bing Response', 'siteseo').'</th>
			</tr></thead>
			<tbody>';
			
			if(empty($indexing_history)){
				echo'<tr>
					<td>'.esc_html__('No submissions yet.', 'siteseo').'</td>
				</tr></tbody></table><br/><br/>';
				
				return;
			}
			
			foreach($indexing_history as $history){
				echo'<tr>
					<td>'.esc_html(date_i18n('Y-m-d H:i:s', $history['time'])).'</td>
					<td>'.esc_html(implode(', ', $history['urls'])).'</td>
					<td>'.(isset($history['google_status_code']) ? esc_html($history['google_status_code']) : 'N/A') . (isset($history['source']) && $history['source'] === 'auto' ? esc_html(' ( Auto )') : '') .'</td>
					<td>'.(isset($history['bing_status_code']) ? esc_html($history['bing_status_code']) : 'N/A') . (isset($history['source']) && $history['source'] === 'auto' ? esc_html(' ( Auto )') : '') . 
					'</td>

				</tr>';
			}
			
			echo'</tr>
			</tbody></table><br/>
			
			<tr>
				<td>
					<button id="siteseo-clear-history" class="btn btnSecondary">'.esc_html__('Clean History', 'siteseo').'</button>
				</td>
			</tr><br/><br/>
			
			<a class="siteseo-show-details">'.esc_html__('Response code guide', 'siteseo').'<span class="dash-icon dashicons dashicons-arrow-down-alt2"></span></a>
			<div class="siteseo-response-code-table">
			<table class="wp-list-table widefat fixed striped siteseo-history-table">
				<thead>
					<tr>
					<th>'.esc_html__('Response Code', 'siteseo').'</th>
					<th>'.esc_html__('Response Message', 'siteseo').'</th>
					<th>'.esc_html__('Reason', 'siteseo').'</th>
					</tr>
				</thead>
				
				<tr>
					<td>'.esc_html__('200', 'siteseo').'</td>
					<td>'.esc_html__('Ok', 'siteseo').'</td>
					<td>'.esc_html__('URLs submitted successfully.', 'siteseo').'</td>
				</tr>
				
				<tr>
					<td>'.esc_html__('202', 'siteseo').'</td>
					<td>'.esc_html__('Accepted', 'siteseo').'</td>
					<td>'.esc_html__('URL received. IndexNow key validation pending.', 'siteseo').'</td>
				</tr>
				
				<tr>
					<td>'.esc_html__('400', 'siteseo').'</td>
					<td>'.esc_html__('Bad Request', 'siteseo').'</td>
					<td>'.esc_html__('Request Invalid format.', 'siteseo').'</td>
				</tr>
				
				<tr>
					<td>'.esc_html__('403', 'siteseo').'</td>
					<td>'.esc_html__('Forbidden', 'siteseo').'</td>
					<td>'.esc_html__('Key not valid.', 'siteseo').'</td>
				</tr>
				
				<tr>
					<td>'.esc_html__('422', 'siteseo').'</td>
					<td>'.esc_html__('Unprocessable Entity', 'siteseo').'</td>
					<td>'.esc_html__('URLs don\'t belong to the host.', 'siteseo').'</td>
				</tr>
				
				<tr>
					<td>'.esc_html__('429', 'siteseo').'</td>
					<td>'.esc_html__('Too Many Requests', 'siteseo').'</td>
					<td>'.esc_html__('Too Many Requests: Potential Spam.', 'siteseo').'</td>
				</tr>
				<tbody>
			</table></div><br/><br/>';
		
	}

	static function save_settings(){
		global $siteseo;

		check_admin_referer('siteseo_instant_indexing');

		if(!siteseo_user_can('manage_instant_indexing')|| !is_admin()){
			return;
		}

		$options = $siteseo->instant_settings;
		
		if(!is_array($options)){
			$options = [];
		}

		if(empty($_POST['siteseo_options'])){
			return;
		}

		if(isset($_POST['siteseo_options']['general'])){
			// general tab
			$options['engines']['bing'] = isset($_POST['siteseo_options']['search_engine_bing']);
			$options['engines']['google'] = isset($_POST['siteseo_options']['search_engine_google']);
			$options['instant_indexing_google_action'] = isset($_POST['siteseo_options']['instant_indexing_actions']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['instant_indexing_actions'])) : 'URL_UPDATED';
			$options['instant_indexing_manual_batch'] = isset($_POST['siteseo_options']['instant_indexing_batch']) ? sanitize_textarea_field(wp_unslash($_POST['siteseo_options']['instant_indexing_batch'])) : '';
		}

		if(isset($_POST['siteseo_options']['setting_tab'])){
			// setting tab
			$options['instant_indexing_google_api_key'] = isset($_POST['siteseo_options']['google_api_key']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['google_api_key'])) : '';
			$options['instant_indexing_bing_api_key'] = isset($_POST['siteseo_options']['bing_api_key']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['bing_api_key'])) : '';
			$options['instant_indexing_automate_submission'] = isset($_POST['siteseo_options']['auto_submission']);
		}

		update_option('siteseo_instant_indexing_option_name', $options);
	}
}
PK��f\��̹�N�Nmain/settings/sitemap.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO\Settings;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Sitemap{

    static function menu(){
		global $siteseo;

		$sitemap_toggle = isset($siteseo->setting_enabled['toggle-xml-sitemap']) ? $siteseo->setting_enabled['toggle-xml-sitemap'] : '';
		$nonce = wp_create_nonce('siteseo_toggle_nonce');

		$current_tab = isset($_GET['tab']) ? sanitize_key($_GET['tab']) : 'tab_sitemap_general'; // Default tab

		$titles_meta_subtabs = [
			'tab_sitemap_general' => esc_html__('Home', 'siteseo'),
			'tab_sitemap_post_types' => esc_html__('Post types', 'siteseo'),
			'tab_sitemap_taxonomy ' => esc_html__('Taxonomy', 'siteseo'),
			'tab_sitmap_html' => esc_html__('HTML Sitemap', 'siteseo')
		];
		
		echo '<div id="siteseo-root">';
		Util::admin_header();

		echo '<form method="post" id="siteseo-form" class="siteseo-option" name="siteseo-flush">';

		wp_nonce_field('siteseo_sitemap_settings');

		Util::render_toggle('Sitemaps - SiteSEO', 'sitemap_toggle', $sitemap_toggle, $nonce);

		echo '<div id="siteseo-tabs" class="wrap">
		<div class="siteseo-nav-tab-wrapper">';

		foreach($titles_meta_subtabs as $tab_key => $tab_caption){
			$active_class = ($current_tab === $tab_key) ? ' siteseo-nav-tab-active' : '';
			echo '<a id="' . esc_attr($tab_key) . '-tab" class="siteseo-nav-tab' . esc_attr($active_class) . '" data-tab="' . esc_attr($tab_key) . '">' . esc_html($tab_caption) . '</a>';
		}

		echo '</div>
		<div class="tab-content-wrapper">
		<div class="siteseo-tab' .($current_tab == 'tab_sitemap_general' ? ' active' : '').'" id="tab_sitemap_general" style="display: none;">';
		self::general_sitemaps();
		echo '</div>  
		<div class="siteseo-tab' .($current_tab == 'tab_sitemap_post_types' ? ' active' : '').'" id="tab_sitemap_post_types" style="display: none;">';
		self::post_types_sitemaps();
		echo '</div>
		<div class="siteseo-tab' .($current_tab == 'tab_sitemap_taxonomy' ? ' active' : '').'" id="tab_sitemap_taxonomy" style="display: none;">';
		self::taxonomy_sitemap();
		echo '</div>  
		<div class="siteseo-tab' .($current_tab == 'tab_sitmap_html' ? ' active' : '').'" id="tab_sitmap_html" style="display: none;">';
		self::html_sitemap();
		echo '</div>
		</div>';

		Util::submit_btn();
		echo '</form></div>';
	}

    static function general_sitemaps(){
        global $siteseo;

        if(!empty($_POST['submit'])){
            self::save_settings();
        }

		//$options = $siteseo->sitemap_settings;
		$options = get_option('siteseo_xml_sitemap_option_name', []);

		$xml_sitemap = !empty($options['xml_sitemap_general_enable']) ? $options['xml_sitemap_general_enable'] : '';
		$img_sitemap = !empty($options['xml_sitemap_img_enable']) ? $options['xml_sitemap_img_enable'] : '';
		$author_sitemap = !empty($options['xml_sitemap_author_enable']) ? $options['xml_sitemap_author_enable'] : '';
		$html_sitemap = !empty($options['xml_sitemap_html_enable']) ? $options['xml_sitemap_html_enable'] : '';

		echo '<h3 class="siteseo-tabs">'.esc_html__('General','siteseo').'</h3>
		<p>'.esc_html__('Sitemaps are pages which help search engine, know your site better and makes it easier for them to index the pages.','siteseo').'</p>
		<p>'.esc_html__('Not having a sitemap does not mean search engines won\'t be able to crawl your website, but sitemaps make it easier for them to discover all the URLs which are needed to be indexed.','siteseo').'</p>
		 <div class="siteseo-styles pre"><pre><span class="dashicons dashicons-external"></span><a href="'.esc_url(get_option('home')).'/sitemaps.xml" target="_blank">' . esc_url(get_option('home')) . '/sitemaps.xml</a></pre></div>
	        <div class="siteseo-notice">
			<span id="siteseo-dash-icon" class="dashicons dashicons-info"></span>
	        	<p>'.
			/* translators: placeholders are just <strong> tag */ 
			wp_kses_post(sprintf(__('To view your sitemap, %1$s enable permalinks %2$s (other than the default one) and save the settings to flush them.', 'siteseo'), '<strong>', '</strong>')).'</p>
	        </div>

	        <table class="form-table">
	            <tbody>
	                <tr>
	                    <th scope="row">'.esc_html__('Enable XML Sitemap','siteseo').'</th>
	                    <td>
	                     <label><input id="siteseo_enable_sitemap" name="siteseo_options[enable_xml_sitemap]" type="checkbox" '.(!empty($xml_sitemap) ? 'checked' : '').' value="1"/>'. esc_html__('Enable XML Sitemap', 'siteseo').'</label>
	                    </td>
	                </tr>

	                <tr>
	                    <th scope="row">'.esc_html__('Enable Image Sitemap','siteseo').'</th>
	                    <td>
	                        <label><input id="siteseo_image_sitemap" name="siteseo_options[enable_img_sitemap]" type="checkbox" '.(!empty($img_sitemap) ? 'checked' : '').' value="1"/>'. esc_html__('Enable Image Sitemap for standard images, image galleries, featured images, and WooCommerce / Kkart product images.)', 'siteseo').'</label>
	                        <p class="description">'.esc_html__('Images in XML sitemaps are only visible from the source code.', 'siteseo').'</p>
	                    </td>
	                </tr>

	                <tr>
	                    <th scope="row">'.esc_html__('Enable Author Sitemap','siteseo').'</th>
	                    <td>
	                        <label><input id="siteseo_author_sitemap" name="siteseo_options[enable_author_sitemap]" type="checkbox" '.(!empty($author_sitemap) ? 'checked' : '').' value="1"/>' . esc_html__('Enable Author Sitemap', 'siteseo').'</label>
	                        <p class="description">'.esc_html__('Ensure that you enable the author archive from SEO, under the Titles & Metas section, in the Archives tab.','siteseo').'</p>
	                    </td>
	                </tr> 

	                  <tr>
	                    <th scope="row">'.esc_html__('Enable HTML Sitemap','siteseo').'</th>
	                    <td>
	                        <label><input id="siteseo_html_sitemap" name="siteseo_options[enable_html_sitemap]" type="checkbox" '.(!empty($html_sitemap) ? 'checked' : ''). ' value="1"/>' . esc_html__('Enable HTML Sitemap', 'siteseo').'</label>
	                    </td>
	                </tr> 
				</tbody>
	        </table>
		<input type="hidden" name="siteseo_options[general_sitemaps] value="1"/>';

    }

	static function post_types_sitemaps(){
		global $siteseo;

		if(!empty($_POST['submit'])){
			self::save_settings();
		}

		//$options = $siteseo->sitemap_settings;
		$options = get_option('siteseo_xml_sitemap_option_name', []);
		
		$option_sitemap_posts = !empty($options['xml_sitemap_post_types_list']['post']['include']) ? $options['xml_sitemap_post_types_list']['post']['include'] : '';
		$option_sitemap_pages = !empty($options['xml_sitemap_post_types_list']['page']['include']) ? $options['xml_sitemap_post_types_list']['page']['include'] : '';
		$option_sitemap_media = !empty($options['xml_sitemap_post_types_list']['media']['include']) ? $options['xml_sitemap_post_types_list']['media']['include'] : '';

		$post_types = siteseo_post_types();

		echo '<h3 class="siteseo-tabs">'.esc_html__('Post Types', 'siteseo').'</h3>
			<p>'.esc_html__('Select Post Types to Include or Exclude', 'siteseo').'</p>
				<table class="form-table">
					<tbody>';

						foreach($post_types as $post_type){
							$post_type_name = $post_type->name;
							$post_type_label = $post_type->labels->singular_name;
							$option_sitemap_custom = !empty($options['xml_sitemap_post_types_list'][$post_type_name]['include']) ? 'checked="yes"' : '';

							echo '<tr>
									<th></th>
									<td>
										<label for="sitemap_post_types_'.esc_attr($post_type_name).'">
											<h4>'.esc_html($post_type_label).' <em>(['.esc_html($post_type_name).'])</em></h4>
											<input id="sitemap_post_types_'.esc_attr($post_type_name).'" name="siteseo_options[xml_sitemap_post_types_list]['.esc_attr($post_type_name).'][include]" type="checkbox" '.esc_attr($option_sitemap_custom).' value="1"/>
											'.esc_html__('Include', 'siteseo').'
										</label>
									</td>
								</tr>';
						}

					echo '</tbody>
				</table>
				<input type="hidden" name= siteseo_options[post_types_tab] value="1"/>';
	}

    static function taxonomy_sitemap(){
        global $siteseo;
		
        if(!empty($_POST['submit'])){
            self::save_settings();
        }
		
		//$options = $siteseo->sitemap_settings;
		$get_taxonomies = get_taxonomies(['public' => true, 'show_ui' => true], 'objects');
		$check_taxonomies = apply_filters('siteseo_sitemaps_tax', $get_taxonomies);
	
		$options = get_option('siteseo_xml_sitemap_option_name');
		$option_category = isset($options['xml_sitemap_taxonomies_list']['category']['include']) ? $options['xml_sitemap_taxonomies_list']['category']['include'] : '';
		$option_post_tags = isset($options['xml_sitemap_taxonomies_list']['post_tag']['include']) ? $options['xml_sitemap_taxonomies_list']['post_tag']['include'] : '';
		
		$get_taxonomies = get_taxonomies();
		$check_taxomies = apply_filters('siteseo_sitemaps_tax', $get_taxonomies);
		
		$excluded_taxonomies = ['post_format', 'category', 'post_tag'];

        echo '<h3 class="siteseo-tabs">'.esc_html__('Taxonomies', 'siteseo').'</h3>
			<p>'.esc_html__('Select Taxonomies to Include or Exclude', 'siteseo').'</p>
            <table class="form-table">
                <tr scope="row">
                    <th>'.esc_html__('Select to INCLUDE Taxonomies', 'siteseo').'</th>
					
					<td><br/><br/>
						<label for="sitemap_post_types_pages">
							<h4>'.esc_html__('Categories ', 'siteseo').' <em>[categories]</em></h4>
							<input id="sitemap_post_types_pages" name="siteseo_options[xml_sitemap_taxonomies_list][category][include]" type="checkbox" '.(!empty($option_category) ? 'checked' : 'value="1"').'/>
							'.esc_html__('Include', 'siteseo').'
						</label>	
					</td>
                </tr>
            
				<tr>
					<th></th>
					<td>
						<label for="sitemap_post_types_pages">
							<h4>'.esc_html__('Tags', 'siteseo').' <em>[post_tag]</em></h4>
							<input id="sitemap_post_types_pages" name="siteseo_options[xml_sitemap_taxonomies_list][post_tag][include]" type="checkbox" '.(!empty($option_post_tags) ? 'checked' : 'value="1"').'/>
							'.esc_html__('Include', 'siteseo').'
						</label>
					</td>
				</tr>';
				
				foreach($check_taxonomies as $taxonomy_name => $taxonomy_obj){

					if(in_array($taxonomy_name, $excluded_taxonomies)){
						continue;
					}

					//check selected
					$is_included = !empty($options['xml_sitemap_taxonomies_list'][$taxonomy_name]['include']);

					// Generate a row for the taxonomy
					echo '<tr scope="row">
							<th></th>
							<td>
								<label for="sitemap_taxonomy_'.esc_attr($taxonomy_name).'">
									<h4>'.esc_html($taxonomy_obj->labels->name).' <em>[' . esc_html($taxonomy_name).']</em></h4>
									<input id="sitemap_taxonomy_' . esc_attr($taxonomy_name) . '" 
										   name="siteseo_options[xml_sitemap_taxonomies_list][' . esc_attr($taxonomy_name).'][include]" 
										   type="checkbox" '.($is_included ? 'checked' : '').' value="1" />
									' . esc_html__('Include', 'siteseo') . '
								</label>
							</td>
						  </tr>';
				}

            echo '</table><input type="hidden" name="siteseo_options[taxonomy_sitemap_tabs]" value="1">';

    }

    static function html_sitemap(){

        if(!empty($_POST['submit'])){
            self::save_settings();
        }

	//$options = $siteseo->$sitemap_settings;
	$options = get_option('siteseo_xml_sitemap_option_name', []);
		
	$include_pages = !empty($options['xml_sitemap_html_mapping']) ? $options['xml_sitemap_html_mapping'] : '';
	$exclude_page = !empty($options['xml_sitemap_html_exclude']) ? $options['xml_sitemap_html_exclude'] : '';
	$order = !empty($options['xml_sitemap_html_order']) ? $options['xml_sitemap_html_order'] : '';
	$order_by = !empty($options['xml_sitemap_html_orderby']) ? $options['xml_sitemap_html_orderby'] : '';
	$disable_date = !empty($options['xml_sitemap_html_date']) ? $options['xml_sitemap_html_date'] : '';
	$remove_archive = !empty($options['xml_sitemap_html_archive_links']) ? $options['xml_sitemap_html_archive_links'] : '';
		

        echo '<h3 class="siteseo-tabs">'.esc_html__('HTML Sitemap', 'siteseo').'</h3>
        <p>'.esc_html__('Generate an HTML sitemap for your visitors to improve your SEO.','siteseo').'</p>
        <p>'.esc_html__('Restricted to 1,000 posts per post type. You can change the order and sorting settings below.','siteseo').'</p>

        <div class="siteseo-notice"><span class="dashicons dashicons-info"></span>
        <div>
            <h3>'.esc_html__('How to make use of the HTML Sitemap?', 'siteseo').'</h3>
            <h4>'.esc_html__('Block Editor', 'siteseo').'</h4>
		<p>'.
		/* translators: placeholders are just <strong> tag */ 
		wp_kses_post(sprintf(__('Insert the HTML sitemap block via the %1$s Block Editor %2$s.', 'siteseo'), '<strong>', '</strong>')).'</p>
            <h4>'.esc_html__('Shortcode', 'siteseo').'</h4>
            <p>'.esc_html__('You can also insert this shortcode into your content (post, page, custom post type, etc.):', 'siteseo').'</p>
            <div class="siteseo-styles pre"><pre>'.esc_attr('[siteseo_html_sitemap]').'</div></pre>
            <p>'.esc_html__('To include specific custom post types, use the CPT attribute:', 'siteseo') .'</p>
            <div class="siteseo-styles pre"><pre>'.esc_attr('[siteseo_html_sitemap cpt="post,product"]').'</div></pre>
            <h4>'.esc_html__('Other', 'siteseo').'</h4>
            <p>'.esc_html__('Display the sitemap dynamically by entering an ID in the first field below.', 'siteseo').'</p>
			</div>
		</div>
        
        <table class="form-table">
             <tr scope="row">
                <th>'.esc_html__('Post, Page, or Custom Post Type IDs to display:','siteseo').'</th>
                <td>
                    <input type="text" value="'.esc_html($include_pages).'" name="siteseo_options[page_numbers]" placeholder="'.esc_html__('eg:2, 28, 68','siteseo').'">
                </td>
            </tr>

            <tr scope="row">
                <th>'.esc_html__('Exclude Posts, Pages, Custom Post Types or Terms IDs:','siteseo').'</th>
                <td>
                    <input type="text" value="'.esc_html($exclude_page).'" name="siteseo_options[exclude_page]" placeholder="'.esc_html__('eg: 13 ,8 ,28','siteseo').'">
                </td>
            </tr>

            <tr scope="row">
                <th>'.esc_html__('Order:','siteseo').'</th>
                <td>
                    <select name="siteseo_options[order]">
                        <option value="DESC" '.selected($order, 'DESC', false).'>'.esc_html__('DESC (descending order from highest to lowest values (3, 2, 1; c, b, a))','siteseo').'</option>
                         <option value="ASC" '.selected($order, 'ASC', false).'>'.esc_html__('ASC (ascending order from lowest to highest values (1, 2, 3; a, b, c))','siteseo').'</option>
                    </select>
                </td>
            </tr>

            <tr scope="row">
                <th>'.esc_html__('Order By:','siteseo').'</th>
                <td>
                    <select name="siteseo_options[order_by]">
                        <option value="date" '.selected($order_by, 'date', false).'>'.esc_html__('Deafult (date)','siteseo').'</option>
                        <option value="post_title" '.selected($order_by, 'post_title', false).'>'.esc_html__('Post Title','siteseo').'</option>
                        <option value="modified_date" '.selected($order_by, 'modified_date', false).'>'.esc_html__('Modified date','siteseo').'</option>
                        <option value="post_id" '.selected($order_by, 'post_id', false).'>'.esc_html__('POST ID','siteseo').'</option>
                        <option value="menu_order" '.selected($order_by, 'menu_order', false).'>'.esc_html__('Menu Order','siteseo').'</option>
                    </select>
                </td>
            </tr>
            <tr scope="row">
                <th>'.esc_html__('Disable Date:','siteseo').'</th>
                <td>
                    <label for="sitemap_html_date">
                        <input id="sitemap_html_date" name="siteseo_options[disable_date]" type="checkbox" '.(!empty($disable_date) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('Disable the date display after each post, page, or post type?', 'siteseo'). 
                    '</label>
                </td>
            </tr>

            <tr scope="row">
                <th>'.esc_html__('Remove Archive Links:','siteseo').'</th>
                <td>
                    <label for="sitemap_remove_link">
                        <input id="sitemap_remove_link" name="siteseo_options[remove_links]" type="checkbox" '.(!empty($remove_archive) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('Remove links from archive pages (e.g., Products).', 'siteseo'). 
                    '</label>
                </td>
            </tr>
        </table><input type="hidden" name="siteseo_options[html_sitemap]" value="1"/>';
    }

    static function save_settings(){
		global $siteseo;

		check_admin_referer('siteseo_sitemap_settings');

		if(!siteseo_user_can('manage_sitemap') || !is_admin()){
			return;
		}

		$options = [];

		if(empty($_POST['siteseo_options'])){
			return;
		}
		
		if(isset($_POST['siteseo_options']['general_sitemaps'])){
			$options['xml_sitemap_general_enable'] = isset($_POST['siteseo_options']['enable_xml_sitemap']);
			$options['xml_sitemap_img_enable'] = isset($_POST['siteseo_options']['enable_img_sitemap']);
			$options['xml_sitemap_author_enable'] = isset($_POST['siteseo_options']['enable_author_sitemap']);
			$options['xml_sitemap_html_enable'] = isset($_POST['siteseo_options']['enable_html_sitemap']);

			flush_rewrite_rules();
		}

		if(isset($_POST['siteseo_options']['html_sitemap'])){
			
			$options['xml_sitemap_html_mapping'] = isset($_POST['siteseo_options']['page_numbers']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['page_numbers'])) : '';
			$options['xml_sitemap_html_exclude'] = isset($_POST['siteseo_options']['exclude_page']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['exclude_page'])) : '';
			$options['xml_sitemap_html_order'] = isset($_POST['siteseo_options']['order'])? sanitize_text_field(wp_unslash($_POST['siteseo_options']['order'])) : '';
			$options['xml_sitemap_html_orderby'] = isset($_POST['siteseo_options']['order_by']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['order_by'])) : '';
			$options['xml_sitemap_html_date'] = isset($_POST['siteseo_options']['disable_date']);
			$options['xml_sitemap_html_archive_links'] = isset($_POST['siteseo_options']['remove_links']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['remove_links'])) : '';
		}

		// posts 
		if(isset($_POST['siteseo_options']['post_types_tab'])){
			if(isset($_POST['siteseo_options']['xml_sitemap_post_types_list'])){
				$xml_post_types = map_deep(wp_unslash($_POST['siteseo_options']['xml_sitemap_post_types_list']), 'sanitize_text_field');
				foreach($xml_post_types as $posttypes_key => $posttypes_value) {
					if(isset($posttypes_value['include'])) {
						$options['xml_sitemap_post_types_list'][$posttypes_key]['include'] = $posttypes_value['include'];
					}
				}
			}
		}

		// Taxonomies
		if(isset($_POST['siteseo_options']['taxonomy_sitemap_tabs'])){
			if(isset($_POST['siteseo_options']['xml_sitemap_taxonomies_list'])){
				$xml_tax_list = map_deep(wp_unslash($_POST['siteseo_options']['xml_sitemap_taxonomies_list']), 'sanitize_text_field');
				foreach($xml_tax_list as $taxonomy_key => $taxonomy_value){
						if(isset($taxonomy_value['include'])){
							$options['xml_sitemap_taxonomies_list'][$taxonomy_key]['include'] = $taxonomy_value['include'];
						}
				}
			}
		}

		update_option('siteseo_xml_sitemap_option_name',$options);
    }
}
PK��f\s����main/settings/advanced.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO\Settings;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Advanced{

	static function menu(){
		global $siteseo;

		$current_tab = isset($_GET['tab']) ? sanitize_key($_GET['tab']) : 'tab_image_seo'; // Default tab

		$titles_meta_subtabs = [
			'tab_image_seo' => esc_html__('Image SEO', 'siteseo'),
			'tab_advanced' => esc_html__('Advanced', 'siteseo'),
			'tab_appearance' => esc_html__('Appearance', 'siteseo'),
			'tab_security' => esc_html__('Security', 'siteseo'),
			'tab_toc' => esc_html__('Table of content', 'siteseo')
		];
		
		
		echo '<div id="siteseo-root">';
		Util::admin_header();

		echo '<form method="post" id="siteseo-form" class="siteseo-option" name="siteseo-flush">';

		wp_nonce_field('siteseo_advance_settings');

		$advanced_toggle = isset($siteseo->setting_enabled['toggle-advanced']) ? $siteseo->setting_enabled['toggle-advanced'] : '';
		$nonce = wp_create_nonce('siteseo_toggle_nonce');

		Util::render_toggle('Image SEO & Advanced Settings - SiteSEO', 'advanced_toggle', $advanced_toggle, $nonce);

		echo '<div id="siteseo-tabs" class="wrap">
			<div class="siteseo-nav-tab-wrapper">';

		foreach($titles_meta_subtabs as $tab_key => $tab_caption){

			$active_class = ($current_tab === $tab_key) ? ' siteseo-nav-tab-active' : '';
			echo '<a id="' . esc_attr($tab_key) . '-tab" class="siteseo-nav-tab' . esc_attr($active_class) . '" data-tab="' . esc_attr($tab_key) . '">' . esc_html($tab_caption) . '</a>';
		}

		echo '</div>		
		<div class="tab-content-wrapper">
		<div class="siteseo-tab '.($current_tab == 'tab_image_seo' ? ' active' : '').'" id="tab_image_seo" style="display: none;">';
		self::image_seo();
		echo '</div>
		<div class="siteseo-tab '.($current_tab == 'tab_advanced' ? ' active' : '').'" id="tab_advanced" style="display: none;">';
		self::advanced();
		echo '</div>
		<div class="siteseo-tab '.($current_tab == 'tab_appearance' ? ' active' : '').'" id="tab_appearance" style="display: none;">';
		self::appearance();
		echo '</div>
		<div class="siteseo-tab '.($current_tab == 'tab_security' ? ' active' : '').'" id="tab_security" style="display: none;">';
		self::security(); 
		echo '</div>
		<div class="siteseo-tab '.($current_tab == 'tab_toc' ? ' active' : '').'" id="tab_toc" style="display: none;">';
		self::toc(); 
		echo '</div>
		</div>';

		Util::submit_btn();
		echo '</form></div>';

	}

	static function image_seo(){
		global $siteseo;

		if(!empty($_POST['submit'])){
			self::save_settings();
		}

		//$options = $siteseo->$advanced_settings;
		$options = get_option('siteseo_advanced_option_name');

		$option_attachment = isset($options['advanced_attachments']) ? $options['advanced_attachments'] : '';
		$option_attachment_file = isset($options['advanced_attachments_file']) ? $options['advanced_attachments_file'] : '';
		$option_clean_filename = isset($options['advanced_clean_filename']) ? $options['advanced_clean_filename'] : '';
		$option_img_title = isset($options['advanced_image_auto_title_editor']) ? $options['advanced_image_auto_title_editor'] : '';
		$option_img_alt = isset($options['advanced_image_auto_alt_editor']) ? $options['advanced_image_auto_alt_editor'] : '';
		$option_target_key = isset($options['advanced_image_auto_alt_target_kw']) ? $options['advanced_image_auto_alt_target_kw'] : '';
		$option_cap_img = isset($options['advanced_image_auto_caption_editor']) ? $options['advanced_image_auto_caption_editor'] : '';
		$option_desc_img = isset($options['advanced_image_auto_desc_editor']) ? $options['advanced_image_auto_desc_editor'] : '';

		echo '<h3 class="siteseo-tabs">'.esc_html__('Image SEO','siteseo').'</h3>
        <p>'.esc_html__('Images can drive significant traffic to your site. Be sure to always add alt text, optimize file sizes, and properly name the files, among other best practices.','siteseo').'</p>

        <table class="form-table">
            <tbody class="siteseo_tbody">
                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Redirect attachment pages to the post parent page.','siteseo').'</th>
                    <td>
                        <label>
				        <input name="siteseo_options[attachment]" type="checkbox"'.(!empty($option_attachment) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('Redirect attachment pages to the post parent, or to the homepage if no parent exists.', 'siteseo'). 
			            '</label>
                    </td>
                </tr>

                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Redirect attachment pages to their file URL','siteseo').'</th>
                    <td>
                        <label>
                            <input name="siteseo_options[attachment_file]" type="checkbox"'.(!empty($option_attachment_file) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('Redirect attachment pages to their respective file URLs (e.g., https://www.example.com/my-image-file.jpg).', 'siteseo'). 
                        '</label>
                        <p class="description">'.esc_html__('If this option is enabled, it will override the redirection of attachment pages to the post parent.','siteseo').'</p>
                    </td>
                <tr>

				<tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Cleaning media filename','siteseo').'</th>
                    <td>
                        <label>
                            <input name="siteseo_options[clean_filename]" type="checkbox"'.(!empty($option_clean_filename) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('When uploading media, remove accents, spaces, and capital letters, and enforce UTF-8 encoding.', 'siteseo'). 
                        '</label>
                        <p class="description">'.esc_html__('e.g. "ExãMple 1 cópy!.jpg" => "example-1-copy.jpg"','siteseo').'</p>
                    </td>
                <tr>

				<tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Automatically set the image Title','siteseo').'</th>
                    <td>
                        <label>
                            <input name="siteseo_options[auto_img_title]" type="checkbox"'.(!empty($option_img_title) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('When uploading an image file, automatically set the title to match the filename.', 'siteseo'). 
                        '</label>
                        <p class="description">' . esc_html__('We use the product title for ', 'siteseo') . esc_html(!defined('SITEPAD') ? 'WooCommerce' : 'Kkart') . esc_html__(' items.', 'siteseo') . '</p>
                    </td>
                <tr>

				<tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Automatically set the image Alt txt','siteseo').'</th>
                    <td>
                        <label><input name="siteseo_options[auto_img_alt]" type="checkbox"'.(!empty($option_img_alt) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('When uploading an image file, automatically set the alt text to match the filename.', 'siteseo'). 
                        '</label>
                    </td>
                <tr>

				<tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Automatically set the image alt text using target keywords..','siteseo').'</th>
                    <td>
                        <label>
                            <input name="siteseo_options[auto_target_keyword]" type="checkbox"'.(!empty($option_target_key) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('Use the target keywords if no alt text is set for the image.', 'siteseo'). 
                        '</label>
                        <p class="description">'.esc_html__('This setting will apply only to images without alt text on the frontend. It is retroactive, meaning if you disable it, images that previously had empty alt text will revert to being empty.','siteseo').'</p>
                    </td>
                <tr>

				<tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Automatically set the image Caption','siteseo').'</th>
                    <td>
                        <label>
                            <input name="siteseo_options[caption_image]" type="checkbox"'.(!empty($option_cap_img) ? 'checked="yes"' : '') . ' value="1"/>'.esc_html__('When uploading an image file, automatically set the caption to match the filename.', 'siteseo') . 
                        '</label>
                    </td>
                <tr>

				<tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Automatically set the image Description','siteseo').'</th>
                    <td>
                        <label>
                            <input name="siteseo_options[description_img]" type="checkbox"'.(!empty($option_desc_img) ? 'checked="yes"' : ''). ' value="1"/>'.esc_html__('When uploading an image file, automatically set the description to match the filename.', 'siteseo'). 
                        '</label>
                    </td>
                <tr>

			</tbody>
		</table><input type="hidden" name="siteseo_options[image_seo]" value="1"/>';
	}
	
	static function advanced(){
		global $siteseo, $wp_version;

		if(!empty($_POST['submit'])){
			self::save_settings();
		}

		//$options = $siteseo->advanced_settings;
		$options = get_option('siteseo_advanced_option_name');
		
		$platform_name = defined('SITEPAD') ? 'SitePad' : 'WordPress';

		$option_taxonomy_desc = isset($options['advanced_tax_desc_editor']) ? $options['advanced_tax_desc_editor'] : '';
		$option_category_url = isset($options['advanced_category_url']) ? $options['advanced_category_url'] : '';
		$option_noreferrer_link = isset($options['advanced_noreferrer']) ? $options['advanced_noreferrer'] : '';
		$option_wp_generator = isset($options['advanced_wp_generator']) ? $options['advanced_wp_generator'] : '';
		$option_hentry_post = isset($options['advanced_hentry']) ? $options['advanced_hentry'] : '';
		$option_author_url = isset($options['advanced_comments_author_url']) ? $options['advanced_comments_author_url'] : '';
		$option_site_fileds = isset($options['advanced_comments_website']) ? $options['advanced_comments_website'] : '';
		$option_rel_attributes = isset($options['advanced_comments_form_link']) ? $options['advanced_comments_form_link'] : '';
		$option_shortlink = isset($options['advanced_wp_shortlink']) ? $options['advanced_wp_shortlink'] : '';
		$option_wlw_meta_tag = isset($options['advanced_wp_wlw']) ? $options['advanced_wp_wlw'] : '';
		$option_rsd_meta_tag = isset($options['advanced_wp_rsd']) ? $options['advanced_wp_rsd'] : '';
		$option_google_meta_value = isset($options['advanced_google']) ? $options['advanced_google'] : '';
		$option_bing_meta_value = isset($options['advanced_bing']) ? $options['advanced_bing'] : '';
		$option_pinterest_meta_value = isset($options['advanced_pinterest']) ? $options['advanced_pinterest'] : '';
		$option_yandex_meta_value = isset($options['advanced_yandex']) ? $options['advanced_yandex'] : '';
		$option_remove_wocommerce_cat_url = isset($options['advanced_product_cat_url']) ? $options['advanced_product_cat_url'] : '';
		
		echo '<h3 class="siteseo-tabs">'.esc_html__('Advanced','siteseo').'</h3>
		<p class="description">'.esc_html__('Advanced SEO options for advanced users.','siteseo').'</p>
		<table class="form-table"/>
			<tbody>
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Add WP Editor to taxonomy description textarea','siteseo').'</th>
					<td>
						<label>
							<input name="siteseo_options[taxonomy_desc]" type="checkbox"'.(!empty($option_taxonomy_desc) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('Add the TINYMCE editor to the term description field to enable rich text formatting.', 'siteseo'). 
			            '</label>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Remove /category/ in URL','siteseo').'</th>
					<td>
						<label>
							<input name="siteseo_options[category_url]" type="checkbox"'.(!empty($option_category_url) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('Remove /category/ in your permalinks', 'siteseo'). 
			            '</label>
						<p class="description">'.esc_html('e.g. "https://example.com/category/my-post-category/" => "https://example.com/my-post-category/"').'</p>
					</td>
				</tr>
				
				<tr>
					<th scope="row">'.esc_html__('Remove category base from product permalinks', 'siteseo').'</th>
					<td>
						<label>
							<input type="checkbox" name="siteseo_options[remove_cate_woocommerce]" '.(!empty($option_remove_wocommerce_cat_url) ? 'checked="yes"' : '').' value="1"/>
							'.
							/* translators: placeholders are just html tags */ 
							wp_kses_post(sprintf(__('Remove %1$s product-category %2$s in your permalinks', 'siteseo'), '<strong>','</strong>')).'
							</label>
						</div>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Remove noreferrer link attribute in post content','siteseo').'</th>
					<td>
						<label>
				        <input name="siteseo_options[noreferrer_link]" type="checkbox"'.(!empty($option_noreferrer_link) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('Remove the noreferrer link attribute from the source code.', 'siteseo'). 
			            '</label>
						<p class="description">'.esc_html__('Useful for affiliate links (eg: Amazon)','siteseo').'</p>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.
					// translators: %s is the platform name
					sprintf(esc_html__('Remove %s meta generator tag', 'siteseo'), esc_html( $platform_name )).'</th>
					<td>
						<label>
							<input name="siteseo_options[wp_generator_meta]" type="checkbox"'.(!empty($option_wp_generator) ? 'checked="yes"' : '').' value="1"/>'. // translators: %s is the platform name
							sprintf(esc_html__('Remove %s meta generator in source code', 'siteseo'), esc_html( $platform_name)). 
						'</label>
						<div class="siteseo-styles pre"><pre>'.esc_html('<meta name="generator" content="WordPress '.(!empty($wp_version) ? $wp_version : '6.8.2').'" />').'</pre></div>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Remove hentry post class','siteseo').'</th>
					<td>
						<label>
							<input name="siteseo_options[hentry_post]" type="checkbox"' . (!empty($option_hentry_post) ? 'checked="yes"' : '') . ' value="1"/>' . esc_html__('Remove the `hentry` post class to prevent Google from treating it as structured data (schema)', 'siteseo') . 
						'</label>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Remove author URL','siteseo').'</th>
					<td>
						<label>
							<input name="siteseo_options[comments_author_url]" type="checkbox"'.(!empty($option_author_url) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('Remove the comment author URL in comments if the website field is filled in the profile page.', 'siteseo'). 
						'</label>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Remove website field from comment form','siteseo').'</th>
					<td>
						<label>
							<input name="siteseo_options[website_filed]" type="checkbox"'.(!empty($option_site_fileds) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('Remove the website field from the comment form to reduce spam.', 'siteseo'). 
						'</label>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Add the "nofollow", "noopener", and "noreferrer" rel attributes to the links in the comment form.','siteseo').'</th>
					<td>
						<label>
							<input name="siteseo_options[comment_form_link]" type="checkbox"'.(!empty($option_rel_attributes) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('Prevent search engines from following or indexing the link to the comment form by adding a "noindex", "nofollow" directive.', 'siteseo'). 
						'</label>
						
						<div class="siteseo-styles pre"><pre>'.esc_url('https://www.example.com/my-blog-post/#respond').'</pre></div>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.
						// translators: %s is the platform name
					    sprintf(esc_html__('Remove %s shortlink meta tag', 'siteseo'), esc_html( $platform_name)).
					'</th>
					<td>
						<label>
							<input name="siteseo_options[shortlink]" type="checkbox"'.(!empty($option_shortlink) ? 'checked="yes"' : '') .' value="1"/>'. // translators: %s is the platform name
							sprintf(esc_html__('Remove %s shortlink meta tag in source.', 'siteseo'), esc_html( $platform_name )).
						'</label>
						
						<div class="siteseo-styles pre"><pre>'.esc_html('<link rel="shortlink" href="https://www.example.com/"/>').'</pre></div>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Remove Windows Live Writer meta tag','siteseo').'</th>
					<td>
						<label>
							<input name="siteseo_options[wlw_meta]" type="checkbox"'.(!empty($option_wlw_meta_tag) ? 'checked="yes"' : '').' value="1"/>'.esc_html__('Remove the Windows Live Writer meta tag from the source code.', 'siteseo') . 
						'</label>
						
						<div class="siteseo-styles pre"><pre>'.esc_html('<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://www.example.com/wp-includes/wlwmanifest.xml" />').'</pre></div>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Remove RSD meta tag','siteseo').'</th>
					<td>
						<label>
							<input name="siteseo_options[rsd_meta]" type="checkbox"'.(!empty($option_rsd_meta_tag) ? 'checked="yes"' : ''). ' value="1"/>'. esc_html__('Remove the Really Simple Discovery (RSD) meta tag from the source code.', 'siteseo'). 
						'</label>
						<p class="description">'.
						// translators: %s is the platform name
						sprintf(esc_html__('The %s Site Health feature will display an HTTPS warning if you enable this option. However, this is a false positive.', 'siteseo'), esc_html($platform_name)).'</p>
						<div class="siteseo-styles pre"><pre>' . esc_html('<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://www.example.com/wp-includes/wlwmanifest.xml" />') . '</pre></div>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Google site verification','siteseo').'</th>
					<td>
						<input name="siteseo_options[google_meta_value]" type="text" placeholder="'.esc_html__('Enter Google meta value site verification','siteseo').'" value="'.esc_attr($option_google_meta_value).'"/>
						<p class="description">'.
						/* translators: placeholders are just <strong> tag */ 
						wp_kses_post(sprintf(__('If your site is already verified in %1$s Google Search Console %2$s, you can leave this field blank.', 'siteseo'), '<strong>', '</strong>')).'
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Bing site verification','siteseo').'</th>
					<td>
						<input name="siteseo_options[bing_meta_value]" type="text" placeholder="'.esc_html__('Enter Bing meta value site verification','siteseo').'" value="'.esc_attr($option_bing_meta_value).'"/>
						<p class="description">'.
						/* translators: placeholders are just <strong> tag */ 
						wp_kses_post(sprintf(__('If your site is already verified in %1$s Bing Webmaster Tools %2$s, you can leave this field blank.', 'siteseo'), '<strong>', '</strong>')).'</p>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Pinterest site verification','siteseo').'</th>
					<td>
						<input name="siteseo_options[pinterest_meta_value]" type="text" placeholder="'.esc_html__('Enter the Pinterest meta value for site verification.','siteseo').'" value="'.esc_attr($option_pinterest_meta_value).'"/>
					</td>
				</tr>
				
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Yandex site verification','siteseo').'</th>
					<td>
						<input name="siteseo_options[yandex_meta_value]" type="text" placeholder="'.esc_html__('Enter the Yandex meta value for site verification.','siteseo').'" value="'.esc_attr($option_yandex_meta_value).'"/>
					</td>
				</tr>
			</tbody>
		</table><input type="hidden" name="siteseo_options[advanced_tab]" value="1"/>';

	}

	static function appearance(){
		
		global $siteseo;

		if(!empty($_POST['submit'])){
			self::save_settings();
		}

		//$options = $siteseo->advanced_settings;
		$options = get_option('siteseo_advanced_option_name');

		$option_enable_universal_metabox = isset($options['appearance_universal_metabox']) ? $options['appearance_universal_metabox'] : '';
		$option_disable_universal_metabox = isset($options['appearance_universal_metabox_disable']) ? $options['appearance_universal_metabox_disable'] : '';
		$option_content_analysis_metabox = isset($options['appearance_ca_metaboxe']) ? $options['appearance_ca_metaboxe'] : '';
		$option_hide_genesis_metabox = isset($options['appearance_genesis_seo_metaboxe']) ? $options['appearance_genesis_seo_metaboxe'] : ''; 
		$option_structured_type_metabox = isset($options['appearance_advice_schema']) ? $options['appearance_advice_schema'] : '';
		$option_admin_bar = isset($options['appearance_adminbar']) ? $options['appearance_adminbar'] : '';
		$option_noindex_admin_bar = isset($options['appearance_adminbar_noindex']) ? $options['appearance_adminbar_noindex'] : '';
		$option_column_title = isset($options['appearance_title_col']) ? $options['appearance_title_col'] : '';
		$option_column_desc = isset($options['appearance_meta_desc_col']) ? $options['appearance_meta_desc_col'] : '';
		$option_column_redirect = isset($options['appearance_redirect_enable_col']) ? $options['appearance_redirect_enable_col'] : '';
		$option_column_post_type = isset($options['appearance_redirect_url_col']) ? $options['appearance_redirect_url_col'] : '';
		$option_column_canonical_post_ty = isset($options['appearance_canonical']) ? $options['appearance_canonical'] : '';
		$option_column_target_key = isset($options['appearance_target_kw_col']) ? $options['appearance_target_kw_col'] : '';
		$option_column_noindex = isset($options['appearance_noindex_col']) ? $options['appearance_noindex_col'] : '';
		$option_column_nofollow = isset($options['appearance_nofollow_col']) ? $options['appearance_nofollow_col'] : '';
		$option_column_words_no = isset($options['appearance_words_col']) ? $options['appearance_words_col'] : '';
		$option_column_score = isset($options['appearance_score_col']) ? $options['appearance_score_col'] : '';
		$option_misc_genesis_metabox = isset($options['appearance_genesis_seo_menu']) ? $options['appearance_genesis_seo_menu'] : '';

		$appearance_fields =[
			'metaboxes'=>'Metaboxes',
			'Columns' => 'Columns',
			'Misc' =>'Misc',
		];
		
		if(!defined('SITEPAD')){
			$appearance_fields['admin-bar'] = 'Admin bar';
		}
		
		echo '<table class="form-table">
				<tbody>
					<tr>
						<th scope="row">
						 <div class="siteseo-container">';
							$is_first = true;
							foreach($appearance_fields as $post_key => $post_val){
								$active_class = $is_first ? 'active' : '';
								echo '<a href="#'.esc_attr($post_key).'" class="'.esc_attr($active_class).'">'.esc_html($post_val).'</a>';
								$is_first = false;
							}
						echo '</div>
						</th>
						<td>
							<div>
								<h3>'.esc_html__('Appearance','siteseo').'</h3>
								<div class="siteseo_wrap_label">
									<p class="description">'.esc_html__('Customize the plugin to fit your needs','siteseo').'</p>
								</div>
								<span class="line"></span>
								<h3>'.esc_html__('Metaboxes','siteseo').'</h3>
								<p>'.esc_html__('Edit your SEO metadata directly from your favorite page builder.','siteseo').'</p>
								<table class="form-table" id="metaboxes">
									<tbody>';
									if(!defined('SITEPAD')){
										echo '<tr>
											<th scope="row">'.esc_html__('Universal Metabox (Gutenberg)','siteseo').'</th>
											<td>
												<label><input type="checkbox" name="siteseo_options[enable_universal_metabox]" '.(!empty($option_enable_universal_metabox) ? 'checked="yes"' : 'value="1"').' "/> ' . esc_html__('Enable the universal SEO metabox for the Block Editor (Gutenberg)', 'siteseo') . '<label>
											</td>
										</tr>';
									}
										echo '<tr>
											<th scope="row">'.esc_html__('Disable Universal Metabox','siteseo').'</th>
											<td>
												</label><input type="checkbox" name="siteseo_options[disable_universal_metabox]" '.(!empty($option_disable_universal_metabox) ? 'checked="yes"' : 'value="1"').' "/>'.esc_html__('Disable the universal SEO metabox','siteseo').'
											</td>
										</tr>
										
										<tr>
											<th scope="row">'.esc_html__('Remove Content Analysis Metabox','siteseo').'</th>
											<td>
												<label><input type="checkbox" '.(!empty($option_content_analysis_metabox) ? 'checked="yes"' : 'value="1"').'  name="siteseo_options[remove_content_analysis]"> '.esc_html__(' Remove Content Analysis Metabox','siteseo').'</label>
												<p class="description">'.esc_html__('By checking this option, we will no longer track the significant keywords','siteseo').'</p>
											</td>
										</tr>
										
										
										<tr>
											<th scope=row">'.esc_html__('Hide Genesis SEO Metabox','siteseo').'</th>
											<td>
												<label><input type="checkbox" '.(!empty($option_hide_genesis_metabox) ? 'checked="yes"' : 'value="1"').' name="siteseo_options[genesis_metabox]"> '.esc_html__(' Remove Genesis SEO Metabox', 'siteseo').'</label>
											</td>
										</tr>
										
										<tr>
											<th scope="row">'.esc_html__('Hide advice in Structured Data Types metabox','siteseo').'</th>
											<td>
												<label><input type="checkbox" '.(!empty($option_structured_type_metabox) ? 'checked="yes"' : 'value="1"').'    name="siteseo_options[structured_data_types_metabox]">'.esc_html__(' Remove the advice if None schema selected', 'siteseo').'</label>
											</td>
										</tr>
									</tbody>
									</table>';
									
									if(!defined('SITEPAD')){
										echo'<div id="Admin-bar">
										<span class="line"></span>
										<h3>'.esc_html__('Admin bar','siteseo').'</h3>
										<p class="description">'.esc_html__('The admin bar appears on the top of your pages when logged in to your WP admin','siteseo').'</p>
										<table>
										<tbody>
											<tr>
												<th scope="row">'.esc_html__('SEO in admin bar','siteseo').'</th>
												<td>
													<label><input type="checkbox" '.(!empty($option_admin_bar) ? 'checked="yes"' : 'value="1"').' name="siteseo_options[admin_bar]"> '.esc_html__('Remove SEO from Admin Bar in backend and frontend', 'siteseo').'</label>
												</td>
											</tr>
											
											<tr>
												<th scope="row">'.esc_html__('Noindex in admin bar','siteseo').'</th>
												<td>
													<label><input type="checkbox" '.(!empty($option_noindex_admin_bar) ? 'checked="yes"' : 'value="1"').' name="siteseo_options[noindex_admin_bar]"> '.esc_html__('Remove noindex item from Admin Bar in backend and frontend', 'siteseo').'</label>
												</td>
											</tr>
											
										</tbody>
										</table>
										</div>';
									}
									
									echo'<div id="Columns">
									<span class="line"></span>
									<h3>'.esc_html__('Columns','siteseo').'</h3>
									<p>'.esc_html__('Customize the SEO columns displayed in the posts/pages list.','siteseo').'</p>
									<table>
										<tbody>
											<tr>
												<th scope="row">'.esc_html__('Show Title tag column in post types','siteseo').'</th>
												<td>
													<label><input type="checkbox" '.(!empty($option_column_title) ? 'checked="yes"' : 'value="1"').' name="siteseo_options[title_post_types]"> '.esc_html__('Add title column', 'siteseo').'</label>
												</td>
											</tr>
											
											<tr>
												<th scope="row">'.esc_html__('Show Meta description column in post types','siteseo').'</th>
												<td>
													<label><input type="checkbox" '.(!empty($option_column_desc) ? 'checked="yes"' : 'value="1"').' name="siteseo_options[desc_post_types]"> '.esc_html__('Add meta description column','siteseo').'</label>
												</td>
											</tr>
											
											<tr>
												<th scope="row">'.esc_html__('Show Redirection Enable column in post types','siteseo').'</th>
												<td>
													<label><input type="checkbox" '.(!empty($option_column_redirect) ? 'checked="yes"' : 'value="1"').' name="siteseo_options[redirect_post_types]"> '.esc_html__('Add redirection enable column', 'siteseo').'</label>
												</td>
											</tr>
											
											<tr>
												<th scope="row">'.esc_html__('Show Redirect URL column in post types','siteseo').'</th>
												<td>
													<label><input type="checkbox" '.(!empty($option_column_post_type) ? 'checked="yes"' : 'value="1"').' name="siteseo_options[redirect_url_post_types]"> '.esc_html__('Add redirection URL column', 'siteseo').'</label>
												</td>
											</tr>
											
											<tr>
												<th scope="row">'.esc_html__('Show canonical URL column in post types','siteseo').'</th>
												<td>
													<label><input type="checkbox" '.(!empty($option_column_canonical_post_ty) ? 'checked="yes"' : 'value="1"').' name="siteseo_options[url_column_post_types]"> '.esc_html__('Add canonical URL column', 'siteseo').'</label>
												</td>
											</tr>
											
											<tr>
												<th scope="row">'.esc_html__('Show Target Keyword column in post types','siteseo').'</th>
												<td>
													<label><input type="checkbox" '.(!empty($option_column_target_key) ? 'checked="yes"' : 'value="1"').' name="siteseo_options[keyword_column_post_types]"> '.esc_html__('Add target keyword column', 'siteseo').'</label>
												</td>
											</tr>
											
											<tr>
												<th scope="row">'.esc_html__('Show noindex column in post types','siteseo').'</th>
												<td>
													<label><input type="checkbox" '.(!empty($option_column_noindex) ? 'checked="yes"' : 'value="1"').' name="siteseo_options[noindex_column_post_types]"> '.esc_html__('Display noindex status', 'siteseo').'</label>
												</td>
											</tr>
											
											<tr>
												<th scope="row">'.esc_html__('Show nofollow column in post types','siteseo').'</th>
													<td>
														<label><input type="checkbox" '.(!empty($option_column_nofollow) ? 'checked="yes"' : 'value="1"').'    name="siteseo_options[nofollow_column_post_types]"> '.esc_html__('Display nofollow status', 'siteseo').'</label>
													</td>
											</tr>											
											
											<th scope="row">'.esc_html__('Show total number of words column in post types','siteseo').'</th>
												<td>
													<label><input type="checkbox" '.(!empty($option_column_words_no) ? 'checked="yes"' : 'value="1"').' name="siteseo_options[words_column_post_types]"> '.esc_html__('Display total number of words in content', 'siteseo').'</label>
												</td>
											</tr>
											
											<th scope="row">'.esc_html__('Show content analysis score column in post types','siteseo').'</th>
												<td>
													<label><input type="checkbox" '.(!empty($option_column_score) ? 'checked="yes"' : 'value="1"').' name="siteseo_options[score_column_post_types]"> '.esc_html__('Display Content Analysis results column ("Good" or "Should be improved")', 'siteseo').'</label>
												</td>
											</tr>
											
										</tbody>
									</table>
									</div>
									<div id="Misc">
										<span class="line"></span>
										<h3>'.esc_html__('Misc','siteseo').'</h3>
										<div class="siteseo_wrap_label"><p>'.esc_html__('Miscellaneous settings for the SEO plugin.','siteseo').'</p></div>
										<table class="form-table">
											<tbody>
												<tr>
													<th scope="row">'.esc_html__('Hide Genesis SEO Settings link','siteseo').'</th>
													<td>
														<label><input type="checkbox" '.(!empty($option_misc_genesis_metabox) ? 'checked="yes"' : 'value="1"').' name="siteseo_options[genesis_seo_settings]">'.esc_html__('Remove Genesis SEO link in WP Admin Menu', 'siteseo') .'</label>
													</td>
												</tr>
											</tbody>
										</table>
									</div>
							</div>
						</td>
					</tr>
				</tbody>
			</table>
			<input type="hidden" name="siteseo_options[appearance_tab]"  value="1"/>';
	}
	
	static function security(){
		global $siteseo, $wp_roles, $submenu;
		
		if(!current_user_can('administrator')){
			echo '<div class="siteseo_wrap_label">
				<div class="siteseo-notice is-warning">
					<span id="dashicons-warning" class="dashicons dashicons-info"></span>&nbsp;
					<p>Only Admin can change security settings</p>
				</div>
			</div>';
			return;
		}

		if(!empty($_POST['submit'])){
			self::save_settings();
		}
		
		$options = get_option('siteseo_advanced_option_name');
		$menus_check = $submenu['siteseo'];
		$security_fields = [
			'siteseo-metaboxes' => 'SiteSEO Metaboxes',
			'siteseo-settings-pages' => 'SiteSEO setting pages',
		];
		
		$roles = get_editable_roles();

		if(empty($roles)){
			return;
		}

		wp_nonce_field('siteseo_advance_settings');

		echo '<table class="form-table">
			<tbody>
				<tr>
					<th scope="row">
						<div class="siteseo-container">';
						$is_first = true;
						foreach($security_fields as $post_key => $post_val){
							$active_class = $is_first ? 'active' : '';
							echo '<a href="#' . esc_attr($post_key) . '" class="' . esc_attr($active_class) . '">' . esc_html($post_val) . '</a>';
							$is_first = false;
						}
						echo '</div>
					</th>
					<td>
						<div>
							<h3 class="siteseo-tabs">'.esc_html__('Security', 'siteseo').'</h3>
							<div class="siteseo_wrap_label">
								<p class="description">'.esc_html__('Control access to SEO settings and metaboxes by user roles.', 'siteseo').'</p>
							</div>
							
							<h3 class="siteseo-tabs">'.esc_html__('SiteSEO metaboxes', 'siteseo').'</h3>
							<div class="siteseo_wrap_label">
								<p>'.esc_html__('Check a user role to prevent it from editing a specific metabox.', 'siteseo').'</p>
							</div>
							
							<table class="form-table" id="siteseo-metaboxes">
								<tbody>
									<tr>
										<th scope="row">'.esc_html__('Block SEO metabox to user roles', 'siteseo').'</th>
										<td>';
										foreach($roles as $key => $role){
											if(empty($role['capabilities']) || !is_array($role['capabilities']) || !array_key_exists('publish_posts' , $role['capabilities'])){
												continue;
											}

											$checked = isset($options['security_metaboxe_role'][$key]) ? 'checked' : '';
											echo '<label>
												<input type="checkbox" name="siteseo_options[security_metaboxe_role]['.esc_attr($key).']" value="1" '.esc_attr($checked).'/>
												<strong>'.esc_html($role['name']).'</strong>
											</label><br/><br/>';
										}
										echo '</td>
									</tr>
									
									<tr>
										<th scope="row">'.esc_html__('Block Content analysis metabox to user roles', 'siteseo').'</th>
										<td>';
										foreach($roles as $key => $role){
											if(empty($role['capabilities']) || !is_array($role['capabilities']) || !array_key_exists('publish_posts' , $role['capabilities'])){
												continue;
											}

											$checked = isset($options['security_metaboxe_ca_role'][$key]) ? 'checked' : '';
										echo '<label>
											<input type="checkbox" name="siteseo_options[security_metaboxe_ca_role]['.esc_attr($key).']" value="1" '.esc_attr($checked).'/><strong>'.esc_html($role['name']).'</strong>
											</label><br/><br/>';
										}
										echo '</td>
									</tr>
								</tbody>
							</table>
							
							<span class="line"></span>
							
							<h3 class="siteseo-tabs">'.esc_html__('SiteSEO settings pages', 'siteseo').'</h3>
							<p class="description">'.esc_html__('Check a user role to allow it to edit a specific settings page', 'siteseo').'</p>
							
							<table class="form-table" id="siteseo-settings-pages">
								<tbody>';
								
								$settings_pages = [
									'titles' => esc_html__('Titles & Metas', 'siteseo'),
									'xml-sitemap' => esc_html__('Sitemaps', 'siteseo'),
									'social' => esc_html__('Social Networks', 'siteseo'),
									'google-analytics' => esc_html__('Analytics', 'siteseo'),
									'instant-indexing' => esc_html__('Instant Indexing', 'siteseo'),
									'advanced' => esc_html__('Advanced', 'siteseo'),
								];
								
								foreach($settings_pages as $page_key => $page_title){
									echo '<tr>
										<th scope="row">' . esc_html($page_title) . '</th>
										<td>';
										foreach($roles as $role_key => $role){
											if(empty($role['capabilities']) || !is_array($role['capabilities']) || !array_key_exists('publish_posts' , $role['capabilities']) || $role_key == 'administrator'){
												continue;
											}
											
											$checked = isset($options['siteseo_advanced_security_metaboxe_siteseo-' . $page_key][$role_key]) ? 'checked' : '';
											echo '<label>
												<input type="checkbox" name="siteseo_options[siteseo_advanced_security_metaboxe_siteseo-' . esc_attr($page_key) . '][' . esc_attr($role_key) . ']" value="1" ' . esc_attr($checked) . '/>
												<strong>' . esc_html($role['name']) . '</strong>
											</label><br/><br/>';
										}
										echo '</td>
									</tr>';
								}

								//Pro 
								if(is_plugin_active('siteseo-pro/siteseo.php') && !defined('SITEPAD')){
									echo '<tr>
										<th scope="row">' . esc_html__('Pro Features', 'siteseo') . '</th>
										<td>';
										foreach($roles as $key => $role){
											if(empty($role['capabilities']) || !is_array($role['capabilities']) || !array_key_exists('publish_posts' , $role['capabilities']) || $key == 'administrator'){
												continue;
											}
											
											$checked = isset($options['siteseo_advanced_security_page_pro'][$key]) ? 'checked' : '';
											echo '<label>
												<input type="checkbox" name="siteseo_options[siteseo_advanced_security_page_pro][' . esc_attr($key) . ']" value="1" ' . esc_attr($checked) . '/>
												<strong>'.esc_html($role['name']).'</strong>
											</label><br/><br/>';
										}
										echo '</td>
									</tr>';
								}

								echo '</tbody>
							</table>
						</div>
					</td>
				</tr>
			</tbody></table><input type="hidden" name="siteseo_options[security_tab]" value="1"/>';
	}
	
	static function toc(){
		global $siteseo;
		
		if(!empty($_POST['submit'])){
			self::save_settings();
		}
		
		$options = get_option('siteseo_advanced_option_name');

		$option_toc_enable = isset($options['toc_enable']) ? $options['toc_enable'] : '';
		$option_toc_label = isset($options['toc_label']) ? $options['toc_label'] : '';
		$option_headings = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
		$option_list_types = [
			'ol' => __('Ordered List', 'siteseo'),
			'ul' => __('Unordered List', 'siteseo')
		];

		echo'<h3 class="siteseo-tabs">'.esc_html__('Table of Contents', 'siteseo').'</h3>
		<p>'.esc_html__('A table of content works as an index section for your post or page. It helps search engines understand your page structure and users find specific sections quickly, which might help SEO, as it helps search engines better understand the structure of your content and also improves user experience.', 'siteseo').'</p>
		<p>'.esc_html__('To use Table of Content on your pages, you can use this shortcode', 'siteseo').' <code>[siteseo_toc]</code></p>

		<table class="form-table">
			<tr>
				<th scope="row">'.esc_html__('Enable TOC', 'siteseo').'</th>
				<td>
					<label>
						<input type="checkbox" value="1" id="siteseo_toc_enable" name="siteseo_options[toc_enable]" '.checked($option_toc_enable, true, false).'/>
					</label>
				</td>
			</tr>
			<tr>
				<th scope="row">'.esc_html__('TOC Label', 'siteseo').'</th>
				<td>
					<label>
						<input type="text" value="'.esc_attr($option_toc_label).'" name="siteseo_options[toc_label]" placeholder="'.esc_attr__('Table of content', 'siteseo').'"/>
					</label>
				</td>
			</tr>
			<tr>
				<th scope="row">'.esc_html__('Exclude Headings', 'siteseo').'</th>
				<td>
					<div style="display:flex; gap: 20px;">';
					foreach($option_headings as $heading){
						$checked = !empty($options) && !empty($options['toc_excluded_headings']) && is_array($options['toc_excluded_headings']) && in_array($heading, $options['toc_excluded_headings']);
						echo '<label>
							<input type="checkbox" value="'.esc_attr($heading).'" name="siteseo_options[toc_excluded_headings][]" '.checked($checked, true, false).'/>'.esc_html(strtoupper($heading)).'
						</label>';
					}
					echo '</div>
				</td>
			</tr>
			<tr>
				<th scope="row">'.esc_html__('List Type', 'siteseo').'</th>
				<td>
					<div>
						<label>
							<select name="siteseo_options[toc_heading_type]">';
								foreach($option_list_types as $list_type => $list_title){
									$selected = !empty($options['toc_heading_type']) && $options['toc_heading_type'] == $list_type ? 'selected' : '';
									echo '<option value="'.esc_attr($list_type).'" '.esc_attr($selected).'>'.esc_html($list_title).'</option>';
								}
							echo '</select>
						</label>
					</div>
				</td>
			</tr>
		</table><input type="hidden" name="siteseo_options[toc_tab]" value="1" />';
	}

	static function save_settings(){
		global $siteseo;
		
		check_admin_referer('siteseo_advance_settings');
		
		if(!siteseo_user_can('manage_advanced') || !is_admin()){
			return;
		}
		
		$options = [];
		
		if(empty($_POST['siteseo_options'])){
			return;
		}
		
		if(isset($_POST['siteseo_options']['image_seo'])){
			$options['advanced_attachments'] = isset($_POST['siteseo_options']['attachment']);
			$options['advanced_attachments_file'] = isset($_POST['siteseo_options']['attachment_file']);
			$options['advanced_clean_filename'] = isset($_POST['siteseo_options']['clean_filename']);
			$options['advanced_image_auto_title_editor'] = isset($_POST['siteseo_options']['auto_img_title']);
			$options['advanced_image_auto_alt_editor'] = isset($_POST['siteseo_options']['auto_img_alt']);
			$options['advanced_image_auto_alt_target_kw'] = isset($_POST['siteseo_options']['auto_target_keyword']);
			$options['advanced_image_auto_caption_editor'] = isset($_POST['siteseo_options']['caption_image']);
			$options['advanced_image_auto_desc_editor'] = isset($_POST['siteseo_options']['description_img']);

		}
		
		if(isset($_POST['siteseo_options']['advanced_tab'])){
			
			$options['advanced_product_cat_url'] = isset($_POST['siteseo_options']['remove_cate_woocommerce']);
			$options['advanced_tax_desc_editor'] = isset($_POST['siteseo_options']['taxonomy_desc']);
			$options['advanced_category_url'] = isset($_POST['siteseo_options']['category_url']);
			$options['advanced_noreferrer'] = isset($_POST['siteseo_options']['noreferrer_link']);
			$options['advanced_wp_generator'] = isset($_POST['siteseo_options']['wp_generator_meta']);
			$options['advanced_hentry'] = isset($_POST['siteseo_options']['hentry_post']);
			$options['advanced_comments_author_url'] = isset($_POST['siteseo_options']['comments_author_url']);
			$options['advanced_comments_website'] = isset($_POST['siteseo_options']['website_filed']);
			$options['advanced_comments_form_link'] = isset($_POST['siteseo_options']['comment_form_link']);
			$options['advanced_wp_shortlink'] = isset($_POST['siteseo_options']['shortlink']);
			$options['advanced_wp_rsd'] = isset($_POST['siteseo_options']['rsd_meta']);
			$options['advanced_wp_wlw'] = isset($_POST['siteseo_options']['wlw_meta']);
			$options['advanced_google'] = isset($_POST['siteseo_options']['google_meta_value']) ? sanitize_text_field(Util::extract_content(wp_unslash($_POST['siteseo_options']['google_meta_value']))) : '';
			$options['advanced_bing'] = isset($_POST['siteseo_options']['bing_meta_value']) ? sanitize_text_field(Util::extract_content(wp_unslash($_POST['siteseo_options']['bing_meta_value']))) : '';
			$options['advanced_pinterest'] = isset($_POST['siteseo_options']['pinterest_meta_value']) ? sanitize_text_field(Util::extract_content(wp_unslash($_POST['siteseo_options']['pinterest_meta_value']))) : '';
			$options['advanced_yandex'] = isset($_POST['siteseo_options']['yandex_meta_value']) ? sanitize_text_field(Util::extract_content(wp_unslash($_POST['siteseo_options']['yandex_meta_value']))) : '';

		}
		
		if(isset($_POST['siteseo_options']['appearance_tab'])){
			
			$options['appearance_universal_metabox'] = isset($_POST['siteseo_options']['enable_universal_metabox']);
			$options['appearance_universal_metabox_disable'] = isset($_POST['siteseo_options']['disable_universal_metabox']);
			$options['appearance_ca_metaboxe'] = isset($_POST['siteseo_options']['remove_content_analysis']);
			$options['appearance_genesis_seo_metaboxe'] = isset($_POST['siteseo_options']['genesis_metabox']);
			$options['appearance_advice_schema'] = isset($_POST['siteseo_options']['structured_data_types_metabox']);
			$options['appearance_adminbar'] = isset($_POST['siteseo_options']['admin_bar']);
			$options['appearance_adminbar_noindex'] = isset($_POST['siteseo_options']['noindex_admin_bar']);
			$options['appearance_title_col'] = isset($_POST['siteseo_options']['title_post_types']);
			$options['appearance_meta_desc_col'] = isset($_POST['siteseo_options']['desc_post_types']);
			$options['appearance_redirect_enable_col'] = isset($_POST['siteseo_options']['redirect_post_types']);
			$options['appearance_redirect_url_col'] = isset($_POST['siteseo_options']['redirect_url_post_types']);
			$options['appearance_canonical'] = isset($_POST['siteseo_options']['url_column_post_types']);
			$options['appearance_target_kw_col'] = isset($_POST['siteseo_options']['keyword_column_post_types']);
			$options['appearance_noindex_col'] = isset($_POST['siteseo_options']['noindex_column_post_types']);
			$options['appearance_nofollow_col'] = isset($_POST['siteseo_options']['nofollow_column_post_types']);
			$options['appearance_words_col'] = isset($_POST['siteseo_options']['words_column_post_types']);
			$options['appearance_score_col'] = isset($_POST['siteseo_options']['score_column_post_types']);
			$options['appearance_genesis_seo_menu'] = isset($_POST['siteseo_options']['genesis_seo_settings']);
			
		}
		
		if(isset($_POST['siteseo_options']['toc_tab'])){

			$options['toc_enable'] = isset($_POST['siteseo_options']['toc_enable']);
			$options['toc_label'] = isset($_POST['siteseo_options']['toc_label']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['toc_label'])) : '';
			$options['toc_heading_type'] = isset($_POST['siteseo_options']['toc_heading_type']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['toc_heading_type'])) : '';

			//toc_excluded_headings
			if(isset($_POST['siteseo_options']['toc_excluded_headings'])){
				$options['toc_excluded_headings'] = map_deep(wp_unslash($_POST['siteseo_options']['toc_excluded_headings']), 'sanitize_text_field');
			}
			
		}
		
		
		if(isset($_POST['siteseo_options']['security_tab']) && current_user_can('manage_options')){
			
			$has_admin = ['security_metaboxe_role', 'security_metaboxe_ca_role'];
			
			$settings = [
				'security_metaboxe_role',
				'security_metaboxe_ca_role',
				'siteseo_advanced_security_metaboxe_siteseo-titles',
				'siteseo_advanced_security_metaboxe_siteseo-xml-sitemap',
				'siteseo_advanced_security_metaboxe_siteseo-social',
				'siteseo_advanced_security_metaboxe_siteseo-google-analytics',
				'siteseo_advanced_security_metaboxe_siteseo-instant-indexing',
				'siteseo_advanced_security_metaboxe_siteseo-advanced',
				'siteseo_advanced_security_metaboxe_siteseo-import-export'
			];

			$advanced_options = map_deep($_POST['siteseo_options'], function($value){
				
				if(!empty($value)){
					if(is_string($value)){
						return true;
					}

					return sanitize_text_field(wp_unslash($value));
				}

				return '';
			});
			
			$filtered_options = [];
			$roles = get_editable_roles();
			foreach($settings as $setting){
				$accepted_roles = [];
				foreach($roles as $key => $role){
					// We will skip, admin if the setting does not require it.
					if(!in_array($setting, $has_admin) && $key ==  'administrator'){
						continue;
					}
					
					// We only accept roles which has capability to 'publish_posts', as giving access to anyone less does not makes sense.
					if(empty($role['capabilities']) || !is_array($role['capabilities']) || !array_key_exists('publish_posts' , $role['capabilities'])){
						continue;
					}

					array_push($accepted_roles, $key);
				}
				
				// Making sure the roles being pushed are the once we want.
				if(isset($advanced_options[$setting])){
					$filtered_options[$setting] = array_intersect(
						$advanced_options[$setting],
						array_flip($accepted_roles)
					);
				}
			}

			$options = array_merge($options, $filtered_options);
		}

		update_option('siteseo_advanced_option_name', $options);
	}

}
PK��f\���1�f�fmain/settings/social.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO\Settings;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Social{

    static function menu(){
        global $siteseo;

		$social_toggle = isset($siteseo->setting_enabled['toggle-social']) ? $siteseo->setting_enabled['toggle-social'] : '';
		$nonce = wp_create_nonce('siteseo_toggle_nonce');

        $current_tab = isset($_GET['tab']) ? sanitize_key($_GET['tab']) : 'tab_knowledge_graph';

        $social_subtabs = [
            'tab_knowledge_graph' => esc_html__('Knowledge Graph', 'siteseo'),
            'tab_social_accounts' => esc_html__('Your social accounts', 'siteseo'),
            'tab_facebook' => esc_html__('Facebook (Open Graph) ', 'siteseo'),
            'tab_twitter' => esc_html__('X Card', 'siteseo')
        ];
		
		echo '<div id="siteseo-root">';
		
		Util::admin_header();

        echo '<form method="post" id="siteseo-form" class="siteseo-option" name="siteseo-flush">';

        wp_nonce_field('siteseo_social_settings');

		Util::render_toggle('Social Networks - SiteSEO', 'social_toggle', $social_toggle, $nonce);

        echo '<div id="siteseo-tabs" class="wrap">
        <div class="siteseo-nav-tab-wrapper">';

        foreach($social_subtabs as $tab_key => $tab_caption){
			$active_class = ($current_tab === $tab_key) ? ' siteseo-nav-tab-active' : '';
			echo '<a id="' . esc_attr($tab_key) . '-tab" class="siteseo-nav-tab' . esc_attr($active_class) . '" data-tab="' . esc_attr($tab_key) . '">' . esc_html($tab_caption) . '</a>';
        }

        echo '</div>
		<div class="tab-content-wrapper">
        <div class="siteseo-tab' .($current_tab == 'tab_knowledge_graph' ? ' active' : '').'" id="tab_knowledge_graph" style="display: none;">';
        self::knowledge_graph();
        echo '</div>
        <div class="siteseo-tab' .($current_tab == 'tab_social_accounts' ? ' active' : '').'" id="tab_social_accounts" style="display: none;">';
        self::social_accouts();
        echo '</div>
        <div class="siteseo-tab' .($current_tab == 'tab_twitter' ? ' active' : '').'" id="tab_twitter" style="display: none;">';
        self::twitter();
        echo '</div>
        <div class="siteseo-tab' .($current_tab == 'tab_facebook' ? ' active' : '').'" id="tab_facebook" style="display: none;">';
        self::facebook();
        echo '</div>
		</div>'; 

        Util::submit_btn();
        echo '</form></div>';
 
    }

    static function knowledge_graph(){
        global $siteseo;

        if(!empty($_POST['submit'])){
            self::save_settings();
        }

        $options = get_option('siteseo_social_option_name');

        //load data
        $option_org_type = !empty($options['social_knowledge_type']) ? $options['social_knowledge_type'] : '';
        $option_org_name = !empty($options['social_knowledge_name']) ? $options['social_knowledge_name'] : '';
        $option_org_logo = !empty($options['social_knowledge_img']) ? $options['social_knowledge_img'] : '';
        $option_org_number = !empty($options['social_knowledge_phone']) ? $options['social_knowledge_phone'] : '';
        $option_org_contact_type = !empty($options['social_knowledge_contact_type']) ? $options['social_knowledge_contact_type'] : '';
        $option_org_contact_option = !empty($options['social_knowledge_contact_option']) ? $options['social_knowledge_contact_option'] : '';

        echo '<h3 class="siteseo-tabs">'.esc_html__('Knowledge Graph','siteseo').'</h3>
        <p class="description">'.esc_html__('Set up Google Knowledge Graph.','siteseo').'</p>
        <table class="form-table">
            <tbody>
                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Person or organization','siteseo').'</th>
                    <td>
                        <select name="siteseo_options[org_type]">
                            <option value="none" '.selected($option_org_type, 'none', false).'>'.esc_html__('None','siteseo').'</option>
                            <option value="Person" '.selected($option_org_type, 'Person', false).'>'.esc_html__('Person','siteseo').'</option>
                            <option value="Organization" '.selected($option_org_type, 'Organization', false).'>'.esc_html__('Organization','siteseo').'</option>
                        </select>
                    </td>
                </tr>

                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Your name/organization','siteseo').'</th>
                    <td>
                        <input type="text" name="siteseo_options[org_name]" value="'.esc_attr($option_org_name).'" placeholder="'.esc_html__('eg.Miremont','siteseo').'">
                    </td>
                </tr>

                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Your photo/organization logo','siteseo').'</th>
                    <td>
                        <input id="knowledge_org_logo_url" autocomplete="off" type="text" name="siteseo_options[org_logo]" value="'.esc_url($option_org_logo).'" placeholder="'.esc_html__('select your logo','siteseo').'">
                        <button id="knowledge_org_logo" class="btn btnSecondary">'.esc_html__('Upload an image','siteseo').'</button>
 			<p class="description">'.esc_html__('JPG, PNG, WebP and GIF allowed.','siteseo').'</p><br />		
 			<img style="width:300px;max-height:400px;" src="'.esc_url($option_org_logo).'" />
                    </td>
                </tr>

                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Organizations phone number (only for Organizations)','siteseo').'</th>
                    <td>
                        <input type="text" name="siteseo_options[org_contact_number]" value="'.esc_attr($option_org_number).'" placeholder="'.esc_html__('eg: +33123456789 (internationlized version required)','siteseo').'">
                    </td>
                </tr>

                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Contact type (only for Organizations)','siteseo').'</th>
                    <td>
                        <select name="siteseo_options[org_contact_type]">
                            <option value="Customer support" '.selected($option_org_contact_type, 'Customer support', false).'>'.esc_html__('Customer support','siteseo').'</option>
                            <option value="Technical support" '.selected($option_org_contact_type, 'Technical support', false).'>'.esc_html__('Technical support','siteseo').'</option>
                            <option value="Billing support" '.selected($option_org_contact_type, 'Billing support', false).'>'.esc_html__('Billing support','siteseo').'</option>
                            <option value="Bill payment" '.selected($option_org_contact_type, 'Bill payment', false).'>'.esc_html__('Bill payment','siteseo').'</option>
                            <option value="Sales payment" '.selected($option_org_contact_type, 'Sales payment', false).'>'.esc_html__('Sales payment','siteseo').'</option>
                            <option value="Credit card support" '.selected($option_org_contact_type, 'Credit card support', false).'>'.esc_html__('Credit card support','siteseo').'</option>
                            <option value="Emergency support" '.selected($option_org_contact_type, 'Emergency support', false).'>'.esc_html__('Emergency support','siteseo').'</option>
                            <option value="Baggage tracking" '.selected($option_org_contact_type, 'Baggage tracking', false).'>'.esc_html__('Baggage tracking','siteseo').'</option>
                            <option value="Roadside assistance" '.selected($option_org_contact_type, 'Roadside assistance', false).'>'.esc_html__('Roadside assistance','siteseo').'</option>
                            <option value="Package tracking" '.selected($option_org_contact_type, 'Package tracking', false).'>'.esc_html__('Package tracking','siteseo').'</option>
                        </select>
                    </td>
                </tr>

                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Contact option (only for Organizations)','siteseo').'</th>
                    <td>
                        <select name="siteseo_options[org_contact_option]">
                            <option value="None" '.selected($option_org_contact_option, 'None', false).'>'.esc_html__('None','siteseo').'</option>
                            <option value="TollFree" '.selected($option_org_contact_option, 'TollFree', false).'>'.esc_html__('TollFree', 'siteseo').'</option>
                            <option value="HearingImpairedSupported" '.selected($option_org_contact_option, 'HearingImpairedSupported', false).'>'.esc_html__('Hearing Impaired Supported','siteseo').'</option>
                        </select>
                    </td>
                </tr>        
            </tbody>
        </table><input type="hidden" name="siteseo_options[knowledge_graph_tab]" value="1" >';
    }

    static function social_accouts(){
        global $siteseo;

        if(!empty($_POST['submit'])){
            self::save_settings();
        }

		//$options = $siteseo->social_settings;
        $options = get_option('siteseo_social_option_name');

        //load settings
        $facebook_acct = !empty($options['social_accounts_facebook']) ? $options['social_accounts_facebook'] : '';
        $twitter_acct = !empty($options['social_accounts_twitter']) ? $options['social_accounts_twitter'] : '';
        $instagram_acct = !empty($options['social_accounts_instagram']) ? $options['social_accounts_instagram'] : '';
        $youtube_acct = !empty($options['social_accounts_youtube']) ? $options['social_accounts_youtube'] : '';
        $pinterest_acct = !empty($options['social_accounts_pinterest']) ? $options['social_accounts_pinterest'] : '';
        $additional_acct = !empty($options['social_accounts_additional']) ? implode("\n", $options['social_accounts_additional']) : '';

        echo '<h3 class="siteseo-tabs">'.esc_html__('Your social accouts', 'siteseo').'</h3>
         <table class="form-table">
            <tbody>
                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Facebook', 'siteseo').'</th>
                    <td>
                        <input type="text" name="siteseo_options[facebook]" placeholder="'.esc_html__('eg: https://facebook.com/my-page-url','siteseo').'" value="'.esc_url($facebook_acct).'">
                    </td>
                </tr>

				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('X Username', 'siteseo').'</th>
					<td>
						<input type="text" name="siteseo_options[twitter]" placeholder="'.esc_html__('eg : x_username','siteseo').'" value="'.esc_attr($twitter_acct).'">
					</td>
				</tr>

				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Pinterest URL', 'siteseo').'</th>
					<td>
						<input type="text" name="siteseo_options[pinterest]" placeholder="'.esc_html__('eg : https://pinterest.com/my-page-url/','siteseo').'" value="'.esc_url($pinterest_acct).'">
					</td>
				</tr>

				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Instagram URL', 'siteseo').'</th>
					<td>
						<input type="text" name="siteseo_options[instagram]" placeholder="'.esc_html__('eg : https://www.instagram.com/my-page-url/','siteseo').'" value="'.esc_url($instagram_acct).'">
					</td>   
				</tr>

				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('YouTube URL', 'siteseo').'</th>
					<td>
						<input type="text" name="siteseo_options[youtube]" placeholder="'.esc_html__('eg : https://www.youtube.com/my-channel-url/','siteseo').'" value="'.esc_url($youtube_acct).'">
					</td>   
				</tr>
				<tr>
					<th scope="row" style="user-select:auto;">'.esc_html__('Additional Accounts', 'siteseo').'</th>
					<td>
						<textarea name="siteseo_options[additional]" placeholder="'.esc_html__('eg : https://somesite.com/my-channel-url/','siteseo').'">'.esc_textarea($additional_acct).'</textarea>
						<p class="description">'.esc_html__('Enter 1 URL per line.', 'siteseo').'</p>
					</td>
				</tr>
 
            </tbody>
        </table><input type="hidden" name="siteseo_options[social_account_tab]" value="1">';
    }

    static function twitter(){
        global $siteseo;

        if(!empty($_POST['submit'])){
            self::save_settings();
        }

		//$options = $siteseo->social_settings;
        $options = get_option('siteseo_social_option_name');

        //load data
        $option_enable_card = !empty($options['social_twitter_card']) ? $options['social_twitter_card'] : '';
	$option_image_size = !empty($options['social_twitter_card_img_size']) ? $options['social_twitter_card_img_size'] : '';
	$option_twitter_img = !empty($options['social_twitter_card_img']) ? $options['social_twitter_card_img'] : '';

        echo '<h3 class="siteseo-tabs">'.esc_html__('X Card','siteseo').'</h3>
        <p class="description">'.esc_html__('Manage your X card','siteseo').'</p>

        <div class="siteseo-notice">
            <span class="dashicons dashicons-info"></span>
            <div>
                <p>'.
		/* translators: placeholders are just <strong> tag */ 
		wp_kses_post(sprintf(__('We generate the %1$s og:image %2$s meta in the following order:', 'siteseo'), '<strong>', '</strong>')).'</p>
                <ol>
                    <li>'.esc_html__('Custom OG Image from the SEO metabox', 'siteseo').'</li>
                    <li>'.esc_html__('Post thumbnail / Product category thumbnail (Featured image)', 'siteseo').'</li>
                    <li>'.esc_html__('First image of your post content', 'siteseo').'</li>
                    <li>'.esc_html__('Global OG Image set in SEO > Social > Open Graph', 'siteseo').'</li>
                    <li>'.esc_html__('Site icon from the Customizer', 'siteseo').'</li>
                </ol>
            </div>
        </div>
        
        <table class="form-table">
            <tbody>
                <tr>
                    <th scope="row" style="user:select-auto;">'.esc_html__('X Card','siteseo').'</th>
                    <td>'.esc_html__('Manage your X Card','siteseo').'</td>
                </tr>

                <tr>
                    <th scope="row" style="user:select-auto;">'.esc_html__('Enable X Card','siteseo').'</th>
                    <td>
                       <label for="enable_twitter_card"><input id="enable_twitter_card" type="checkbox" name="siteseo_options[enable_twitter_card]" '.(!empty($option_enable_card) ? 'checked="checked"' : 'value="1"') . '>'.esc_html__('Enable X card', 'siteseo') .'</label>
                    </td>
                </tr>
				
                <tr>
                    <th scope="row" style="user:select-auto;">'.esc_html__('Default X Image','siteseo').'</th>
                    <td>
                        <input type="text" id="twitter_logo_url" autocomplete="off" name="siteseo_options[twitter_img]" value="'.esc_url($option_twitter_img).'" placeholder="'.esc_html__('Choose your default thumbnail.','siteseo').'">
						<button id="twitter_logo" class="btn btnSecondary">'.esc_html__('Upload a image','siteseo').'</button>
						<p class="description">'.esc_html__('Minimum size: 144x144px (300x157px with large card), recommended aspect ratio 1:1 (2:1 for large card), maximum file size 5MB.','siteseo').'</p>
                    </td>
                </tr>

                <tr>
                    <th scope="row" style="user:select-auto;">'.esc_html__('X Card Image Size','siteseo').'</th>
                    <td>
                        <select name="siteseo_options[image_size]">
                            <option value="Default" '.selected($option_image_size, 'Default', false).'>'.esc_html__('Default','siteseo').'</option>
                            <option value="Large" '.selected($option_image_size, 'Large', false).'>'.esc_html__('Large','siteseo').'</option>
                        </select>
                    </td>
                </tr>
				
            </tbody>
        </table><input type="hidden" name="siteseo_options[twitter_tab]" value="1">';
    }

    static function facebook(){
        global $siteseo;

        if(!empty($_POST['submit'])){
            self::save_settings();
        }

        // load seetings
		//$options = $siteseo->social_settings;
        $options = get_option('siteseo_social_option_name');

        $option_fb_enable_og = !empty($options['social_facebook_og']) ? $options['social_facebook_og'] : '';
        $option_fb_img = !empty($options['social_facebook_img']) ? $options['social_facebook_img'] : '';
        $option_fb_defult_img = !empty($options['social_facebook_img_default']) ? $options['social_facebook_img_default'] : '';
        $option_fb_ownership = !empty($options['social_facebook_link_ownership_id']) ? $options['social_facebook_link_ownership_id'] : '';
        $option_fb_admin_id = !empty($options['social_facebook_admin_id']) ? $options['social_facebook_admin_id'] : '';

        echo '<h3 class="siteseo-tabs">'.esc_html__('Facebook (Open Graph)','siteseo').'</h3>
        <p class="description">'.esc_html__('Manage Open Graph data to enhance how your links appear on platforms like Facebook, Pinterest, LinkedIn, and WhatsApp when shared. Improve your click-through rate by including relevant details, such as an attention-grabbing image.','siteseo').'<p>
        
        <div class="siteseo-notice">
            <span class="dashicons dashicons-info"></span>
            <div>
                <p> '.
		/* translators: placeholders are just <strong> tag */ 
		wp_kses_post(sprintf(__('We generate the %1$s OG:image %2$s meta in the following sequence:', 'siteseo'), '<strong>', '</strong>')).'</p>
                <ol>
                    <li>'.esc_html__('Custom OG image from the SEO metabox', 'siteseo').'</li>
                    <li>'.esc_html__('Post thumbnail / Product category thumbnail (Featured image)', 'siteseo').'</li>
                    <li>'.esc_html__('First image in your post content', 'siteseo').'</li>
                    <li>'.esc_html__('Global OG:image set in SEO > Social > OG Card', 'siteseo').'</li>
                </ol>
            </div>
        </div>

        <table class="form-table">
            <tbody>
                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Enable OG date','siteseo').'</th>
                    <td>
                        <label for="facebook_graph_enable">
                        <input id="facebook_graph_enable" type="checkbox" name="siteseo_options[enable_fb_og]" '.(!empty($option_fb_enable_og) ? 'checked="yes"' : 'value="1"').'>'. esc_html__('Enable OG data','siteseo') .'
                        </label>
                    </td>
                </tr>

                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Default Image','siteseo').'</th>
                    <td>
                        <input id="facebook_org_image_url" autocomplete="off" type="text" name="siteseo_options[fb_image]" value="'.esc_url($option_fb_img).'" palceholder="'.esc_html__('Select your default thumbnail','siteseo').'">
                        <button id="facebook_upload_logo" class="btn btnSecondary">'.esc_html__('Upload a image','siteseo').'</button>
						<p class="description">'.esc_html__('Minimum size: 200x200px, ideal ratio 1.91:1, 8MB max. (e.g., 1640x856px or 3280x1712px for retina screens).','siteseo').'</p>
                        <p class="description">'.esc_html__('If no default image is set, we will use your site icon defined in the Customizer.','siteseo').'</p>
                    </td>
                </tr>

                <tr>
                    <th scope="row" style="user-select:auto;">'.esc_html__('Override Default Image','siteseo').'</th>
                    <td>
                        <div class="siteseo_wrap_label">
                            <label for="override_image_tag">
                            <input id="override_image_tag" type="checkbox" name="siteseo_options[fb_default_img]" '.(!empty($option_fb_defult_img) ? 'checked="yes"' : 'value="1"').' >'.esc_html__('Override all og:image tags with this default image, unless a custom og:image has been set in the SEO metabox.','siteseo').'
                            </label>
                        </div>
			<br /><div class="siteseo-notice is-warning"><p>'.
			/* translators: placeholders are just <strong> tag */ 
			wp_kses_post(sprintf(__('Please define a default %1$s OG image %2$s using the field above.', 'siteseo'), '<strong>','</strong>')).'<p></div>
                    </td>
                </tr>

                <tr>
                    <th scope="row" style="user-select:auto">'.esc_html__('Link Ownership ID','siteseo').'</th>
                    <td>
                        <input type="text" placeholder="0123456789" name="siteseo_options[fb_owership_id]" value="'.esc_attr($option_fb_ownership).'">
                        <p class="description">'.esc_html__('Enter one or more Facebook Page IDs linked to a URL to enable link editing and instant article publishing.','siteseo').'</p>
                        <div class="siteseo-styles pre"><pre>'.esc_html('<meta property="fb:pages" content="page ID"/>').'</pre></div>
                    </td>
                </tr>

                <tr>
                    <th scope="row" style="user-select:auto">'.esc_html__('Admin ID','siteseo').'</th>
                    <td>
                        <input type="text" placeholder="0123456789" name="siteseo_options[fb_admin_id]" value="'.esc_attr($option_fb_admin_id).'">
                        <p class="description">'.esc_html__('The ID (or a comma-separated list for properties that support multiple IDs) of an app, user of the app, or Page Graph API object.', 'siteseo').'</p>
                        <div class="siteseo-styles pre"><pre>'.esc_html('<meta property="fb:admins" content="admins ID"/>').'</pre></div>
                    </td>
                </tr>

            </tbody>
        </table><input type="hidden" name="siteseo_options[facebook_tab]" value="1">';

    }

    static function save_settings(){
        global $siteseo;

		check_admin_referer('siteseo_social_settings');

		if(!siteseo_user_can('manage_social') || !is_admin()){
			return;
		}

		$options = [];

		if(empty($_POST['siteseo_options'])){
			return;
		}

		if(isset($_POST['siteseo_options']['knowledge_graph_tab'])){

			$options['social_knowledge_type'] = isset($_POST['siteseo_options']['org_type']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['org_type'])) : '';
			$options['social_knowledge_name'] = isset($_POST['siteseo_options']['org_name']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['org_name'])) : '';
			$options['social_knowledge_img'] = isset($_POST['siteseo_options']['org_logo']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['org_logo'])) : '';
			$options['social_knowledge_phone'] = isset($_POST['siteseo_options']['org_contact_number']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['org_contact_number'])) : '';
			$options['social_knowledge_contact_type'] = isset($_POST['siteseo_options']['org_contact_type']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['org_contact_type'])) : '';
			$options['social_knowledge_contact_option'] = isset($_POST['siteseo_options']['org_contact_option']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['org_contact_option'])) : '';
		}

		if(isset($_POST['siteseo_options']['social_account_tab'])){
			$options['social_accounts_facebook'] = isset($_POST['siteseo_options']['facebook']) ? sanitize_url(wp_unslash($_POST['siteseo_options']['facebook'])) : '';
			$options['social_accounts_twitter'] = isset($_POST['siteseo_options']['twitter']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['twitter'])) : '';
			$options['social_accounts_instagram'] = isset($_POST['siteseo_options']['instagram']) ? sanitize_url(wp_unslash($_POST['siteseo_options']['instagram'])) : '';
			$options['social_accounts_youtube'] = isset($_POST['siteseo_options']['youtube']) ? sanitize_url(wp_unslash($_POST['siteseo_options']['youtube'])) : '';
			$options['social_accounts_pinterest'] = isset($_POST['siteseo_options']['pinterest']) ? sanitize_url(wp_unslash($_POST['siteseo_options']['pinterest'])) : '';
			$options['social_accounts_additional'] = isset($_POST['siteseo_options']['additional']) ? explode("\n", sanitize_textarea_field(wp_unslash($_POST['siteseo_options']['additional']))) : '';
			$options['social_accounts_additional'] = Util::clean_url($options['social_accounts_additional']); // We accept 1 url per line.
		}

		if(isset($_POST['siteseo_options']['facebook_tab'])){
			$options['social_facebook_og'] = isset($_POST['siteseo_options']['enable_fb_og']);
			$options['social_facebook_img'] = isset($_POST['siteseo_options']['fb_image']) ? sanitize_url(wp_unslash($_POST['siteseo_options']['fb_image'])) : '';
			$options['social_facebook_img_default'] = isset($_POST['siteseo_options']['fb_default_img']);
			$options['social_facebook_link_ownership_id'] = isset($_POST['siteseo_options']['fb_owership_id']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['fb_owership_id'])) : '';
			$options['social_facebook_admin_id'] = isset($_POST['siteseo_options']['fb_admin_id']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['fb_admin_id'])) : '';
		}

		if(isset($_POST['siteseo_options']['twitter_tab'])){
			$options['social_twitter_card'] = isset($_POST['siteseo_options']['enable_twitter_card']);
			$options['social_twitter_card_img'] = isset($_POST['siteseo_options']['twitter_img']) ? sanitize_url(wp_unslash($_POST['siteseo_options']['twitter_img'])) : '';
			$options['social_twitter_card_img_size'] = isset($_POST['siteseo_options']['image_size']) ? sanitize_text_field(wp_unslash($_POST['siteseo_options']['image_size'])) : '';
		}

        update_option('siteseo_social_option_name' , $options);
    }
}
PK��f\;�4rrmain/socialmetas.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class SocialMetas{

	static function add_social_graph(){
		global $siteseo;

		if(empty($siteseo->setting_enabled['toggle-social'])){
			return;
		}

		$org_type = !empty($siteseo->social_settings['social_knowledge_type']) && $siteseo->social_settings['social_knowledge_type'] !== 'none' ? $siteseo->social_settings['social_knowledge_type'] : '';
		$org_name = !empty($siteseo->social_settings['social_knowledge_name']) ? $siteseo->social_settings['social_knowledge_name'] : ''; 
		$org_logo = !empty($siteseo->social_settings['social_knowledge_img']) ? $siteseo->social_settings['social_knowledge_img'] : '';
		$org_number = !empty($siteseo->social_settings['social_knowledge_phone']) ? $siteseo->social_settings['social_knowledge_phone'] : '';
		$org_contact_type = !empty($siteseo->social_settings['social_knowledge_contact_type']) ? $siteseo->social_settings['social_knowledge_contact_type'] : '';
		$org_contact_option = !empty($siteseo->social_settings['social_knowledge_contact_option']) ? $siteseo->social_settings['social_knowledge_contact_option'] : '';

		$fb_account = !empty($siteseo->social_settings['social_accounts_facebook']) ? $siteseo->social_settings['social_accounts_facebook'] : '';
		$twitter_account = !empty($siteseo->social_settings['social_accounts_twitter']) ? $siteseo->social_settings['social_accounts_twitter'] : '';
		$insta_account = !empty($siteseo->social_settings['social_accounts_instagram']) ? $siteseo->social_settings['social_accounts_instagram'] : '';
		$yt_account = !empty($siteseo->social_settings['social_accounts_youtube']) ? $siteseo->social_settings['social_accounts_youtube'] : '';
		$pt_account = !empty($siteseo->social_settings['social_accounts_pinterest']) ? $siteseo->social_settings['social_accounts_pinterest'] : '';

		//description
		$site_url = get_site_url();
		$site_description = get_bloginfo('name');
		$site_language = get_bloginfo('language');

		// logo
		$logo_id = attachment_url_to_postid($org_logo);

		// Defaults
		$logo_width  = '';
		$logo_height = '';

		// Get image dimensions if attachment exists
		if(!empty($logo_id)){
			$image_data = wp_get_attachment_image_src($logo_id, 'full');
			if(!empty($image_data)){
				$logo_width = $image_data[1];
				$logo_height = $image_data[2];
			}
		}

		//JSON-LD data
		$json_ld = [
			'@context' => 'https://schema.org',
			'@type' => $org_type ? esc_html($org_type) : 'Organization',
			'@id' => esc_url(trailingslashit($site_url) . '#' . $org_type),
			'name' => esc_html($org_name),
			'url' => esc_url($site_url),
			'logo' => array_filter([
				'@type' => 'ImageObject',
				'@id' => esc_url(trailingslashit($site_url) . '#logo'),
				'url' => esc_url($org_logo),
				'contentUrl' => esc_url($org_logo),
				'caption' => esc_html($org_name),
				'inLanguage' => esc_html($site_language),
				'width' => $logo_width,
				'height' => $logo_height,
			]),
			'description' => esc_html($site_description),
		];

		//contact point
		if(!empty($org_contact_type) && !empty($org_number)){
			$json_ld['contactPoint'] = [
				'@type' => 'ContactPoint',
				'contactType' => esc_html($org_contact_type),
				'telephone' => esc_html($org_number),
			];

			if(!empty($org_contact_option) && $org_contact_option !== 'None'){
				$contact_point['contactOption'] = esc_html($org_contact_option);
			}
		}

		$x_url = 'https://x.com/'.$twitter_account;

		$same_as = array_filter([
			esc_url($fb_account), 
			esc_url($x_url), 
			esc_url($insta_account), 
			esc_url($yt_account), 
			esc_url($pt_account)
		]);

		if(!empty($same_as)){
			$json_ld['sameAs'] = array_values($same_as);
		}

		// Output JSON-LD script
		echo '<script type="application/ld+json">';
		echo wp_json_encode($json_ld, JSON_UNESCAPED_SLASHES);
		echo '</script>';
	}

	static function fb_graph(){
		global $siteseo, $post;

		if(empty($siteseo->setting_enabled['toggle-social']) || empty($siteseo->social_settings['social_facebook_og'])){
			return;
		}

		$fb_page_id = !empty($siteseo->social_settings['social_facebook_link_ownership_id']) ? $siteseo->social_settings['social_facebook_link_ownership_id'] : '';
		$fb_link_owership = !empty($siteseo->social_settings['social_facebook_admin_id']) ? $siteseo->social_settings['social_facebook_admin_id'] : '';
		$og_url = get_home_url();
		$og_sitename = get_bloginfo('name');
		
		// Check
		$post_id = isset($post) && is_object($post) ? $post->ID : '';
		$og_title = get_the_title();
		$og_description = get_bloginfo('description');
		$og_img = !empty($siteseo->social_settings['social_facebook_img']) ? $siteseo->social_settings['social_facebook_img'] : '';

		// Get post types and taxonomies
		$post_types = siteseo_post_types();
		$taxonomies = get_taxonomies(array('public' => true), 'objects');
		
		// home site page
		if(is_home() && is_front_page()){
			$og_title = !empty($siteseo->titles_settings['titles_home_site_title']) ? $siteseo->titles_settings['titles_home_site_title'] : $og_title;
			$og_description = !empty($siteseo->titles_settings['titles_home_site_desc']) ? $siteseo->titles_settings['titles_home_site_desc'] : $og_description;
		}
		
		// single post types
		foreach($post_types as $post_type){
			
			// shop page woocommerces
			if(function_exists('is_shop') && is_shop()){
				$shop_page_id = !defined('SITEPAD') ? wc_get_page_id('shop') : kkart_get_page_id('shop');
				
				$archive_title = '';
				$archive_desc = '';
				
				if(is_post_type_archive()){
					$obj = get_queried_object();
					
					if(!empty($obj) && isset($obj->name)){
						$archive_title = !empty($obj->labels->name) ? $obj->labels->name : '';
						$archive_desc  = !empty($obj->description) ? $obj->description : '';
					}
				}
				
				if(!empty(get_post_meta($shop_page_id, '_siteseo_social_fb_title', true))){
					$og_title = get_post_meta($shop_page_id, '_siteseo_social_fb_title', true);
				} elseif(!empty(get_post_meta($shop_page_id, '_siteseo_titles_title', true))){
					$og_title = get_post_meta($shop_page_id, '_siteseo_titles_title', true);
				} elseif(!empty($siteseo->titles_settings['titles_archive_titles']['product']['archive_title'])){
					$og_title = $siteseo->titles_settings['titles_archive_titles']['product']['archive_title'];
				} else {
					$og_title = $archive_title;
				}
				
				
				$og_description = !empty(get_post_meta($shop_page_id, '_siteseo_social_fb_desc', true)) ? get_post_meta($shop_page_id, '_siteseo_social_fb_desc', true) : $og_description;
							
				if(!empty(get_post_meta($shop_page_id, '_siteseo_social_fb_desc', true))){
					$og_description = get_post_meta($shop_page_id, '_siteseo_social_fb_desc', true);
				} elseif(!empty(get_post_meta($shop_page_id, '_siteseo_titles_desc', true))){
					$og_description = get_post_meta($shop_page_id, '_siteseo_titles_desc', true);
				} elseif(!empty($siteseo->titles_settings['titles_archive_titles']['product']['archive_desc'])){
					$og_description = $siteseo->titles_settings['titles_archive_titles']['product']['archive_desc'];
				} else {
					$og_description = $archive_desc;
				}
				
				$og_description = esc_attr(\SiteSEO\TitlesMetas::replace_variables($og_description));
				
				// OG:IMG
				if(!empty(get_post_meta($shop_page_id, '_siteseo_social_fb_img', true))){
					$og_img = get_post_meta($shop_page_id, '_siteseo_social_fb_img', true);
				} else if(get_the_post_thumbnail_url($post, 'full')){
					$og_img = get_the_post_thumbnail_url($post, 'full');
				} else {
					$og_img = !empty($siteseo->social_settings['social_facebook_img']) ? $siteseo->social_settings['social_facebook_img'] : '';
				}
				
				$og_url = urldecode(get_permalink($shop_page_id));
				break;
			}
			
			// archive page
			if($post_type->has_archive && is_post_type_archive($post_type->name)){
				
				$archive_title = '';
				$archive_desc = '';
				
				if(is_post_type_archive()){
					$obj = get_queried_object();
					
					if(!empty($obj) && isset($obj->name)){
						$archive_title = !empty($obj->labels->name) ? $obj->labels->name : '';
						$archive_desc  = !empty($obj->description) ? $obj->description : '';
					}
				}
				
				$og_title = !empty($siteseo->titles_settings['titles_archive_titles'][$post_type->name]['archive_title']) ? $siteseo->titles_settings['titles_archive_titles'][$post_type->name]['archive_title'] : $archive_title;
				$og_description = !empty($siteseo->titles_settings['titles_archive_titles'][$post_type->name]['archive_desc']) ? $siteseo->titles_settings['titles_archive_titles'][$post_type->name]['archive_desc'] : $archive_desc;
				
			}
			
			// blog page
			if(is_home() && !is_front_page()){
				$post_id = get_option('page_for_posts');
				
				//OG:title
				if(!empty(get_post_meta($post_id, '_siteseo_social_fb_title', true))){
					$og_title = get_post_meta($post_id, '_siteseo_social_fb_title', true);
				} elseif(!empty(get_post_meta($post_id, '_siteseo_titles_title', true))){
					$og_title = get_post_meta($post_id, '_siteseo_titles_title', true);
				} elseif(!empty($siteseo->titles_settings['titles_single_titles'][$post_type->name]['title'])){
					$og_title = $siteseo->titles_settings['titles_single_titles'][$post_type->name]['title'];
				} else{
					$og_title = $og_title;
				}

				// og:description
				if(!empty(get_post_meta($post_id, '_siteseo_social_fb_desc', true))){
					$og_description = get_post_meta($post_id, '_siteseo_social_fb_desc', true);
				} elseif(!empty(get_post_meta($post_id, '_siteseo_titles_desc', true))){
					$og_description = get_post_meta($post_id, '_siteseo_titles_desc', true);
				} elseif(!empty($siteseo->titles_settings['titles_single_titles'][$post_type->name]['description'])){
					$og_description = $siteseo->titles_settings['titles_single_titles'][$post_type->name]['description'];
				} elseif(get_the_excerpt($post_id)){
					$og_description = wp_trim_words(get_the_excerpt($post_id), 50);
				}
			}
			
			if(is_singular($post_type->name)){
				
				if(!empty(get_post_meta($post_id, '_siteseo_social_fb_title', true))){
					$og_title = get_post_meta($post_id, '_siteseo_social_fb_title', true);
				} elseif(!empty(get_post_meta($post_id, '_siteseo_titles_title', true))){
					$og_title = get_post_meta($post_id, '_siteseo_titles_title', true);
				} elseif(!empty($siteseo->titles_settings['titles_single_titles'][$post_type->name]['title'])){
					$og_title = $siteseo->titles_settings['titles_single_titles'][$post_type->name]['title'];
				} else{
					$og_title = $og_title;
				}
				
				
				// og:description
				if(!empty(get_post_meta($post_id, '_siteseo_social_fb_desc', true))){
					$og_description = get_post_meta($post_id, '_siteseo_social_fb_desc', true);
				} elseif(!empty(get_post_meta($post_id, '_siteseo_titles_desc', true))){
					$og_description = get_post_meta($post_id, '_siteseo_titles_desc', true);
				} elseif(!empty($siteseo->titles_settings['titles_single_titles'][$post_type->name]['description'])){
					$og_description = $siteseo->titles_settings['titles_single_titles'][$post_type->name]['description'];
				} elseif(get_the_excerpt($post_id)){
					$og_description = wp_trim_words(get_the_excerpt($post_id), 50);
				}
				
				// OG:IMG
				if(!empty(get_post_meta($post_id, '_siteseo_social_fb_img', true))){
					$og_img = get_post_meta($post_id, '_siteseo_social_fb_img', true);
				} else if(get_the_post_thumbnail_url($post, 'full')){
					$og_img = get_the_post_thumbnail_url($post, 'full');
				} else {
					$og_img = !empty($siteseo->social_settings['social_facebook_img']) ? $siteseo->social_settings['social_facebook_img'] : '';
				}

				$og_url = urldecode(get_permalink($post_id));
				break;
			}
		}

		//  taxonomies
		foreach($taxonomies as $taxonomy){
			if(is_tax($taxonomy->name) || is_category() || is_tag()){
				$term = get_queried_object();
				$term_id = $term->term_id;	
				
				// og:title
				if(!empty(get_term_meta($term_id, '_siteseo_social_fb_title', true))){
					$og_title = get_term_meta($term_id, '_siteseo_social_fb_title', true);
				} elseif(!empty(get_term_meta($term_id, '_siteseo_titles_title', true))){
					$og_title = get_term_meta($term_id, '_siteseo_titles_title', true);
				} elseif(!empty($siteseo->titles_settings['titles_tax_titles'][$taxonomy->name]['title'])){
					$og_title = $siteseo->titles_settings['titles_tax_titles'][$taxonomy->name]['title'];
				} else{
					$og_title = $og_title;
				}
								
				// og:description
				if(!empty(get_term_meta($term_id, '_siteseo_social_fb_desc', true))){
					$og_description = get_term_meta($term_id, '_siteseo_social_fb_desc', true);
				} elseif(!empty(get_term_meta($term_id, '_siteseo_titles_desc', true))){
					$og_description = get_term_meta($term_id, '_siteseo_titles_desc', true);
				} elseif(!empty($siteseo->titles_settings['titles_tax_titles'][$taxonomy->name]['description'])){
					$og_description = $siteseo->titles_settings['titles_tax_titles'][$taxonomy->name]['description'];
				} else{
					$og_description = wp_strip_all_tags(term_description($term_id));
				}
				
				$og_img = !empty(get_term_meta($term_id, '_siteseo_social_fb_img', true)) ? get_term_meta($term_id, '_siteseo_social_fb_img', true) : $og_img;
				$og_url = urldecode(get_term_link($term_id));
				break;
			}
		}
		
		$og_title = esc_attr(\SiteSEO\TitlesMetas::replace_variables($og_title));
		$og_description = esc_attr(\SiteSEO\TitlesMetas::replace_variables($og_description));

		if(!empty($og_img)){
			$og_img = sanitize_url($og_img);
			$og_img_width = 0;
			$og_img_height = 0;

			if(!empty($og_img)){
				$image_info = @getimagesize($og_img);

				if($image_info !== false){
					$og_img_width = $image_info[0];
					$og_img_height = $image_info[1];
				}
			}
		}

		// Setting og:type
		if(is_home() || is_front_page()){
			$og_type = 'website'; // default website
		} elseif(is_singular('product') || is_singular('download')){
			$og_type = 'product';
		} elseif(is_singular()){
			$og_type = 'article';
		} elseif(is_search() || is_archive() || is_404()){
			$og_type = 'object';
		}

		if(!empty($og_url)){
			echo '<meta property="og:url" content="'.esc_html($og_url).'" />';
		}

		if(!empty($og_sitename)){
			echo '<meta property="og:site_name" content="'.esc_html($og_sitename).'" />';
		}

		if(function_exists('get_locale')){
			echo '<meta property="og:locale" content="'.esc_html(get_locale()).'" />';
		}

		if(!empty($og_type)){
			echo '<meta property="og:type" content="'.esc_attr($og_type).'" />';
		}

		if(!empty($og_title)){
			echo '<meta property="og:title" content="'.esc_html($og_title).'" />';
		}

		if(!empty($og_description)){
			echo '<meta property="og:description" content="'.esc_html($og_description).'" />';
		}

		if(!empty($og_img)){
			echo '<meta property="og:image" content="'.esc_html($og_img).'" />';

			if(is_ssl()){
				echo '<meta property="og:secure_url" content="'.esc_html($og_img).'" />';
			}
		}

		if(!empty($og_img_height)){
			echo '<meta property="og:image:height" content="'.esc_attr($og_img_height).'" />';
		}

		if(!empty($og_img_width)){
			echo '<meta property="og:image:width" content="'.esc_attr($og_img_width).'" />';
		}

		if(!empty($fb_page_id)){
			echo '<meta property="fb:pages" content="'.esc_html($fb_page_id) .'" />';
		}

		if(!empty($fb_link_owership)){
			echo '<meta property="fb:admins" content="'. esc_html($fb_link_owership).'" />';
		}
	}

	static function twitter_card(){
		global $siteseo, $post;

		if(empty($siteseo->setting_enabled['toggle-social']) || empty($siteseo->social_settings['social_twitter_card'])){
			return;
		}

		$site_url = get_home_url();
		$twitter_user_name = !empty($siteseo->social_settings['social_accounts_twitter']) ? $siteseo->social_settings['social_accounts_twitter'] : '';

		$post_id = isset($post) && is_object($post) ? $post->ID : '';
		$site_title = get_the_title();
		$site_description = get_bloginfo('description');
		$twitter_img = !empty($siteseo->social_settings['social_twitter_card_img']) ? $siteseo->social_settings['social_twitter_card_img'] : '';
		
		if(empty($twitter_img)){
			$twitter_img = !empty($siteseo->social_settings['social_facebook_img']) ? $siteseo->social_settings['social_facebook_img'] : '';
		}
		
		// home site page
		if(is_home() && is_front_page()){
			$site_title = !empty($siteseo->titles_settings['titles_home_site_title']) ? $siteseo->titles_settings['titles_home_site_title'] : $site_title;
			$site_description = !empty($siteseo->titles_settings['titles_home_site_desc']) ? $siteseo->titles_settings['titles_home_site_desc'] : $site_description;
		}

		// types and taxonomies
		$post_types = siteseo_post_types();
		$taxonomies = get_taxonomies(array('public' => true), 'objects');
		// single post types
		foreach($post_types as $post_type){
			
			// woocommerce
			if(function_exists('is_shop') && is_shop()){
				$shop_page_id = !defined('SITEPAD') ? wc_get_page_id('shop') : kkart_get_page_id('shop');
				
				$archive_title = '';
				$archive_desc = '';
				
				// if all x-meta tags empty then use og option is enabled
				$use_og = (empty(get_post_meta($post_id, '_siteseo_social_twitter_title', true)) && empty(get_post_meta($post_id, '_siteseo_social_twitter_desc', true)) && empty(get_post_meta($post_id, '_siteseo_social_twitter_img', true)));
				
				if(is_post_type_archive()){
					$obj = get_queried_object();
					
					if(!empty($obj) && isset($obj->name)){
						$archive_title = !empty($obj->labels->name) ? $obj->labels->name : '';
						$archive_desc  = !empty($obj->description) ? $obj->description : '';
					}
				}
				
				// twitter:title
				if(!empty(get_post_meta($shop_page_id, '_siteseo_social_twitter_title', true))){
					$site_title = get_post_meta($shop_page_id, '_siteseo_social_twitter_title', true);
				} elseif(!empty($use_og) && !empty(get_post_meta($shop_page_id, '_siteseo_social_fb_title', true))){ 
					$site_title = get_post_meta($shop_page_id, '_siteseo_social_fb_title', true);
				} elseif(!empty(get_post_meta($shop_page_id, '_siteseo_titles_title', true))){
					$site_title = get_post_meta($shop_page_id, '_siteseo_titles_title', true);
				} elseif(!empty($siteseo->titles_settings['titles_archive_titles']['product']['archive_title'])){
					$site_title = $siteseo->titles_settings['titles_archive_titles']['product']['archive_title'];
				} else {
					$site_title = $archive_title;
				}
							
				
				// twitter:description
				if(!empty(get_post_meta($shop_page_id, '_siteseo_social_twitter_desc', true))){
					$site_description = get_post_meta($shop_page_id, '_siteseo_social_twitter_desc', true);
				} elseif(!empty($use_og) && !empty(get_post_meta($shop_page_id, '_siteseo_social_fb_desc', true))){ 
					$site_description = get_post_meta($shop_page_id, '_siteseo_social_fb_desc', true);
				} elseif(!empty(get_post_meta($shop_page_id, '_siteseo_titles_desc', true))){
					$site_description = get_post_meta($shop_page_id, '_siteseo_titles_desc', true);
				} elseif(!empty($siteseo->titles_settings['titles_archive_titles']['product']['archive_desc'])){
					$site_description = $siteseo->titles_settings['titles_archive_titles']['product']['archive_desc'];
				} else {
					$site_description = $archive_desc;
				}
				
				// twitter:image
				if(!empty(get_post_meta($shop_page_id, '_siteseo_social_twitter_img', true))){
					$twitter_img = get_post_meta($shop_page_id, '_siteseo_social_twitter_img', true);
				} elseif(!empty($use_og) && !empty(get_post_meta($shop_page_id, '_siteseo_social_fb_img', true))){ 
					$twitter_img = get_post_meta($shop_page_id, '_siteseo_social_fb_img', true);
				}  elseif(get_the_post_thumbnail_url($post, 'full')){
					$twitter_img = get_the_post_thumbnail_url($post, 'full');
				} else {
					$twitter_img = isset($siteseo->social_settings['social_twitter_card_img']) ? $siteseo->social_settings['social_twitter_card_img'] : '';
				}

				$site_url = urldecode(get_permalink($shop_page_id));
				break;
			}
			
			// archive page
			if($post_type->has_archive && is_post_type_archive($post_type->name)){
				
				$archive_title = '';
				$archive_desc = '';
				
				if(is_post_type_archive()){
					$obj = get_queried_object();
					
					if(!empty($obj) && isset($obj->name)){
						$archive_title = !empty($obj->labels->name) ? $obj->labels->name : '';
						$archive_desc  = !empty($obj->description) ? $obj->description : '';
					}
				}
				
				$site_title = !empty($siteseo->titles_settings['titles_archive_titles'][$post_type->name]['archive_title']) ? $siteseo->titles_settings['titles_archive_titles'][$post_type->name]['archive_title'] : $archive_title;
				$site_description = !empty($siteseo->titles_settings['titles_archive_titles'][$post_type->name]['archive_desc']) ? $siteseo->titles_settings['titles_archive_titles'][$post_type->name]['archive_desc'] : $archive_desc;
				
			}
			
			// blog page
			if(is_home() && !is_front_page()){
				$post_id = get_option('page_for_posts');
				$use_og = (empty(get_post_meta($post_id, '_siteseo_social_twitter_title', true)) && empty(get_post_meta($post_id, '_siteseo_social_twitter_desc', true)) && empty(get_post_meta($post_id, '_siteseo_social_twitter_img', true)));
				
				// twitter:title
				if(!empty(get_post_meta($post_id, '_siteseo_social_twitter_title', true))){
					$site_title = get_post_meta($post_id, '_siteseo_social_twitter_title', true);
				} elseif(!empty($use_og) && !empty(get_post_meta($post_id, '_siteseo_social_fb_title', true))){ 
					$site_title = get_post_meta($post_id, '_siteseo_social_fb_title', true);
				} elseif(!empty(get_post_meta($post_id, '_siteseo_titles_title', true))){
					$site_title = get_post_meta($post_id, '_siteseo_titles_title', true);
				} elseif(!empty($siteseo->titles_settings['titles_single_titles'][$post_type->name]['title'])){
					$site_title = $siteseo->titles_settings['titles_single_titles'][$post_type->name]['title'];
				} else{
					$site_title = $site_title;
				}
				
				// twitter:description
				if(!empty(get_post_meta($post_id, '_siteseo_social_twitter_desc', true))){
					$site_description = get_post_meta($post_id, '_siteseo_social_twitter_desc', true);
				} elseif(!empty($use_og) && !empty(get_post_meta($post_id, '_siteseo_social_fb_desc', true))){ 
					$site_description = get_post_meta($post_id, '_siteseo_social_fb_desc', true);
				} elseif(!empty(get_post_meta($post_id, '_siteseo_titles_desc', true))){
					$site_description = get_post_meta($post_id, '_siteseo_titles_desc', true);
				} elseif(!empty($siteseo->titles_settings['titles_single_titles'][$post_type->name]['description'])){
					$site_description = $siteseo->titles_settings['titles_single_titles'][$post_type->name]['description'];
				} elseif(!empty(get_the_excerpt($post_id))){
					$site_description = wp_trim_words(get_the_excerpt($post_id), 50);
				}
			}
			
			if(is_singular($post_type->name)){
				
				$use_og = (empty(get_post_meta($post_id, '_siteseo_social_twitter_title', true)) && empty(get_post_meta($post_id, '_siteseo_social_twitter_desc', true)) && empty(get_post_meta($post_id, '_siteseo_social_twitter_img', true)));
				
				// twitter:title
				if(!empty(get_post_meta($post_id, '_siteseo_social_twitter_title', true))){
					$site_title = get_post_meta($post_id, '_siteseo_social_twitter_title', true);
				} elseif(!empty($use_og) && !empty(get_post_meta($post_id, '_siteseo_social_fb_title', true))){ 
					$site_title = get_post_meta($post_id, '_siteseo_social_fb_title', true);
				} elseif(!empty(get_post_meta($post_id, '_siteseo_titles_title', true))){
					$site_title = get_post_meta($post_id, '_siteseo_titles_title', true);
				} elseif(!empty($siteseo->titles_settings['titles_single_titles'][$post_type->name]['title'])){
					$site_title = $siteseo->titles_settings['titles_single_titles'][$post_type->name]['title'];
				} else{
					$site_title = $site_title;
				}
				
				
				// twitter:description
				if(!empty(get_post_meta($post_id, '_siteseo_social_twitter_desc', true))){
					$site_description = get_post_meta($post_id, '_siteseo_social_twitter_desc', true);
				} elseif(!empty($use_og) && !empty(get_post_meta($post_id, '_siteseo_social_fb_desc', true))){ 
					$site_description = get_post_meta($post_id, '_siteseo_social_fb_desc', true);
				} elseif(!empty(get_post_meta($post_id, '_siteseo_titles_desc', true))){
					$site_description = get_post_meta($post_id, '_siteseo_titles_desc', true);
				} elseif(!empty($siteseo->titles_settings['titles_single_titles'][$post_type->name]['description'])){
					$site_description = $siteseo->titles_settings['titles_single_titles'][$post_type->name]['description'];
				} else{
					$site_description = wp_trim_words(get_the_excerpt($post_id), 50);
				}

				// twitter:image
				if(!empty(get_post_meta($post_id, '_siteseo_social_twitter_img', true))){
					$twitter_img = get_post_meta($post_id, '_siteseo_social_twitter_img', true);
				} elseif(!empty($use_og) && !empty(get_post_meta($post_id, '_siteseo_social_fb_img', true))){ 
					$twitter_img = get_post_meta($post_id, '_siteseo_social_fb_img', true);
				} else if(get_the_post_thumbnail_url($post, 'full')){
					$twitter_img = get_the_post_thumbnail_url($post, 'full');
				} else {
					$twitter_img = isset($siteseo->social_settings['social_twitter_card_img']) ? $siteseo->social_settings['social_twitter_card_img'] : '';
				}

				$site_url = urldecode(get_permalink($post_id));
				break;
			}
		}

		//taxonomies
		foreach($taxonomies as $taxonomy){
			
			if(is_tax($taxonomy->name) || is_category() || is_tag()){
				$term = get_queried_object();
				$term_id = $term->term_id;
				
				$use_og = (empty(get_post_meta($post_id, '_siteseo_social_twitter_title', true)) && empty(get_post_meta($post_id, '_siteseo_social_twitter_desc', true)) && empty(get_post_meta($post_id, '_siteseo_social_twitter_img', true)));
				//twitter:title
				if(!empty(get_term_meta($term_id, '_siteseo_social_twitter_title', true))){
					$site_title = get_term_meta($term_id, '_siteseo_social_twitter_title', true);
				} elseif(!empty($use_og) && !empty(get_term_meta($term_id, '_siteseo_social_fb_title', true))){ 
					$site_title = get_term_meta($term_id, '_siteseo_social_fb_title', true);
				} elseif(!empty(get_term_meta($term_id, '_siteseo_titles_title', true))){
					$site_title = get_term_meta($term_id, '_siteseo_titles_title', true);
				} elseif(!empty($siteseo->titles_settings['titles_tax_titles'][$taxonomy->name]['title'])){
					$site_title = $siteseo->titles_settings['titles_tax_titles'][$taxonomy->name]['title'];
				} else{
					$site_title = $site_title;
				}
				
				// twitter description
				if(!empty(get_term_meta($term_id, '_siteseo_social_twitter_desc', true))){
					$site_description = get_term_meta($term_id, '_siteseo_social_twitter_desc', true);
				} elseif(!empty($use_og) && !empty(get_term_meta($term_id, '_siteseo_social_fb_desc', true))){ 
					$site_description = get_term_meta($term_id, '_siteseo_social_fb_desc', true);
				} elseif(!empty(get_term_meta($term_id, '_siteseo_titles_desc', true))){
					$site_description = get_term_meta($term_id, '_siteseo_titles_desc', true);
				} elseif(!empty($siteseo->titles_settings['titles_tax_titles'][$taxonomy->name]['description'])){
					$site_description = $siteseo->titles_settings['titles_tax_titles'][$taxonomy->name]['description'];
				} else{
					$site_description = wp_strip_all_tags(term_description($term_id));
				}
								
				$twitter_img = !empty(get_term_meta($term_id, '_siteseo_social_twitter_img', true)) ? get_term_meta($term_id, '_siteseo_social_twitter_img', true) : '';
				
				if(empty($twitter_img) && !empty($use_og) && !empty(get_term_meta($term_id, '_siteseo_social_fb_img', true))){
					$twitter_img = get_term_meta($term_id, '_siteseo_social_fb_img', true);
				} else{
					$twitter_img = $twitter_img;
				}
				
				$site_url = urldecode(get_term_link($term_id));
				break;
			}
		}
		
		$site_title = esc_attr(\SiteSEO\TitlesMetas::replace_variables($site_title));
		$site_description = esc_attr(\SiteSEO\TitlesMetas::replace_variables($site_description));
		$x_image_size = 'summary';
		if(!empty($siteseo->social_settings['social_twitter_card_img_size']) && $siteseo->social_settings['social_twitter_card_img_size'] == 'Large'){
			$x_image_size = 'summary_large_image';
		}
		echo '<meta name="twitter:card" content="'.esc_attr($x_image_size).'"/>';
		
		echo '<meta name="twitter:locale" content="'.esc_html(get_locale()).'"/>';
		
		if(!empty($site_title)){
			echo '<meta name="twitter:title"  content="'.esc_html($site_title).'"/>';
		}
		
		if(!empty($site_description)){
			echo '<meta name="twitter:description" content="'.esc_html($site_description).'"/>';
		}
		
		if(!empty($site_url)){
			echo '<meta name="twitter:url" content="'.esc_html($site_url).'"/>';
		}
		
		if(!empty($twitter_user_name)){
			$twitter_user_name = trim($twitter_user_name, '@');
			echo '<meta name="twitter:site" content="@'.esc_html($twitter_user_name).'"/>';
		}
		
		if(!empty($twitter_img)){
			echo '<meta name="twitter:image" content="'.esc_html($twitter_img).'"/>';
		}
	}
}
PK��f\'��main/tableofcontent.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

use DOMDocument;
use DOMXPath;

class TableofContent{
	
	static function enable_toc(){
        global $siteseo;

        if(empty($siteseo->setting_enabled['toggle-advanced']) || empty($siteseo->advanced_settings['toc_enable'])){
            return;
        }

        add_filter('the_content', '\SiteSEO\TableofContent::add_ids_to_headings');
    }

	static function render_toc(){
		global $siteseo;
		
		if(empty($siteseo->setting_enabled['toggle-advanced']) || empty($siteseo->advanced_settings['toc_enable'])){
			return;
		}

		static $siteseo_toc_run = false;

		if(!empty($siteseo_toc_run)){
			return '<p style="padding: 1rem; background-color:#fff3cd; color:#664d03; border:1px solid #ffe69c; border-radius: 0.375rem">'.esc_html__('Table of content shortcode can be used only once on a page, this page is using the shortcode more than once. Please remove the extra table of content shortcodes for this warning to go away.', 'siteseo').'</p>';
		}

		$options = get_option('siteseo_advanced_option_name');
		//$options = $siteseo->advanced_settings;
		
		$content = get_the_content();

		if(empty($content)){
			return;
		}

		$heading_type = (!empty($options['toc_heading_type']) ? $options['toc_heading_type'] : 'ul');

		$dom = new DOMDocument();
		$internalErrors = libxml_use_internal_errors(true);
		$dom->preserveWhiteSpace = false;

		$html = '';

		if($dom->loadHTML('<?xml encoding="utf-8" ?>' . $content)){
			$xpath = new DOMXPath($dom);

			$heading_list = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
			
			$headings_to_scan = [];
			foreach($heading_list as $h){
				if(!empty($options['toc_excluded_headings']) && is_array($options['toc_excluded_headings']) && in_array($h, $options['toc_excluded_headings'])){
					continue;
				}

				$headings_to_scan[] = '//'.$h;
			}

			if(empty($headings_to_scan)){
				return;
			}

			$headings_to_scan = implode('|', $headings_to_scan);
			
			// The imploded string will look like this //h1|//h2|//h3|//h4|//h5|//h6 
			$headings = $xpath->query($headings_to_scan);

			if(empty($headings)){
				return;
			}

			$last_h = 0;
			$open_ul = 0;
			
			$html .= '<style>.siteseo-toc-wrapper { padding: 20px; border: 1px solid #a2a9b1; background-color: #f8f9fa;}.siteseo-toc-wrapper p { display:flex; align-items:center; gap: 10px; font-size: 1.5rem; font-weight: 500; margin: 0 0 10px 0;}.siteseo-toc-wrapper > '.esc_html($heading_type).' { margin: 0; padding: 0;}.siteseo-toc-wrapper p>label { font-weight: 400; font-size: 0.9rem;}#siteseo-toc-toggle~span { cursor: pointer;}#siteseo-toc-toggle:checked~.siteseo-toc-hide,p:has(#siteseo-toc-toggle:checked) ~ '.esc_html($heading_type).' { display: none;}#siteseo-toc-toggle:not(:checked) ~ .siteseo-toc-hide{ display: inline;}#siteseo-toc-toggle:not(:checked) ~ .siteseo-toc-show { display: none;}</style>
			<div class="siteseo-toc-wrapper">
			<p>'.(!empty($options['toc_label']) ? esc_html($options['toc_label']) : esc_html__('Table of Content', 'siteseo')).' <label for="siteseo-toc-toggle">
			<input type="checkbox" style="display:none;" id="siteseo-toc-toggle" name="siteseo-toc-toggle"/>
			[<span class="siteseo-toc-hide">hide</span><span class="siteseo-toc-show">show</span>]</label></p>
			<'.esc_html($heading_type).'>';

			foreach($headings as $heading){
				$title = trim(wp_strip_all_tags($heading->nodeValue));
				$id = $heading->getAttribute('id');
				$current_h = (int) substr($heading->tagName, 1);
				
				if(empty($id)){
					$id = '#'.self::title_to_id($title);
				}else{
					$id = '#'.$id;
				}

				if($current_h > $last_h){				
					$html .= '<'.esc_html($heading_type).'>';
					$open_ul++;
				}else{
					while($current_h <= $open_ul){
						$html .= '</'.esc_html($heading_type).'>';
						$open_ul--;
					}
				}

				$html .= '<li><a href="'.esc_attr($id).'">'.esc_html($title).'</a></li>';
				$last_h = $current_h;
			}

			$html .= '</'.esc_html($heading_type).'></div>';
			
			$siteseo_toc_run = true;
		}

		return $html;
	}

	// Converts heading text content to ID to be used as link
	static function title_to_id($title){
		
		$id = trim(wp_strip_all_tags($title));
		$id = remove_accents($title);
		$id = sanitize_title_with_dashes($id);
		$id = urlencode($id);

		return $id;
	}

	static function add_ids_to_headings($content){

		if(empty($content)){
			return $content;
		}

		// If the page does not have the shortcode then we don't need to update the id's in the heading.
		if(!has_shortcode($content, 'siteseo_toc')){
			return $content;
		}
		
		$dom = new DOMDocument();
		$internalErrors = libxml_use_internal_errors(true);
		$dom->preserveWhiteSpace = false;

		$html = '';

		if($dom->loadHTML('<?xml encoding="utf-8" ?>' . $content)){
			$xpath = new DOMXPath($dom);

			$headings = $xpath->query('//h1|//h2|//h3|//h4|//h5|//h6');

			if(empty($headings)){
				return;
			}

			foreach($headings as $heading){
				$title = trim(wp_strip_all_tags($heading->nodeValue));
				$id = $heading->getAttribute('id');
				
				if(!empty($id)){
					continue;
				}
				
				if(empty($title)){
					continue;
				}
				
				$id = self::title_to_id($title);

				$heading->setAttribute('id', $id);
			}

			$content = $dom->saveHTML($dom->documentElement);
		}

		return $content;

	}

}PK��f\�
�@\@\main/admin.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Admin{
	
	static function permission(){
		add_action('admin_init','\SiteSEO\Admin::add_capabilities');
	}

	static function init(){
		global $siteseo, $pagenow;

		if(!empty($_GET['page']) && $_GET['page'] == 'siteseo-onboarding'){
			\SiteSEO\Settings\OnBoarding::init();
		}
		
		// === Plugin Update Notice === //
		if(current_user_can('administrator')){
			$plugin_update_notice = get_option('softaculous_plugin_update_notice', []);
			$available_update_list = get_site_transient('update_plugins'); 
			$plugin_path_slug = 'siteseo/siteseo.php';

			if(
				!empty($available_update_list) &&
				is_object($available_update_list) && 
				!empty($available_update_list->response) &&
				!empty($available_update_list->response[$plugin_path_slug]) && 
				(empty($plugin_update_notice) || empty($plugin_update_notice[$plugin_path_slug]) || (!empty($plugin_update_notice[$plugin_path_slug]) &&
				version_compare($plugin_update_notice[$plugin_path_slug], $available_update_list->response[$plugin_path_slug]->new_version, '<')))
			){
				add_action('admin_notices', '\SiteSEO\Admin::update_notice');
				add_filter('softaculous_plugin_update_notice', 'siteseo_plugin_update_notice_filter');
			}
		}
		// === Plugin Update Notice === //
		
		add_action('admin_menu', '\SiteSEO\Admin::add_menu');
		
		// We do not anything else after this.
		if(!empty($_REQUEST['page']) && sanitize_text_field(wp_unslash($_GET['page'])) == 'siteseo-metabox-wizard'){
			add_action('admin_enqueue_scripts', '\SiteSEO\Admin::enqueue_metaboxes');
			return;
		}

		if($pagenow == 'post.php' || $pagenow == 'post-new.php'){
			add_action('admin_enqueue_scripts', '\SiteSEO\Admin::enqueue_metaboxes');
			add_action('add_meta_boxes', '\SiteSEO\Admin::add_metaboxes');
		}

		if($pagenow == 'term.php' || $pagenow == 'edit-tags.php'){
			add_action('admin_enqueue_scripts', '\SiteSEO\Admin::enqueue_metaboxes');
			add_action('admin_init', '\SiteSEO\Admin::add_term_metabox');
		}
		
		add_filter('plugin_action_links', '\SiteSEO\Install::action_links', 10, 2);
		
		if(!defined('SITEPAD')){
			add_filter('admin_footer_text', '\SiteSEO\Admin::rating_promotion');
		}

		add_action('admin_enqueue_scripts', '\SiteSEO\Admin::enqueue_script');
		add_action('enqueue_block_editor_assets', '\SiteSEO\Admin::enqueue_metaboxes');
		add_filter( 'block_categories_all','\SiteSEO\Admin::create_siteseo_block');
		add_filter('admin_body_class', '\SiteSEO\Admin::body_class', 10, 1);
		
		add_action('admin_bar_menu', '\SiteSEO\Admin::admin_bar', PHP_INT_MAX);
		add_action('admin_bar_menu', '\SiteSEO\Admin::noindex_warning', 100);
		add_action('admin_enqueue_scripts', '\SiteSEO\Admin::header_enqueue');
		add_action('admin_enqueue_scripts', '\SiteSEO\Admin::enqueue_admin_styles');

		// We do not want to show any metabox if we have universal metabox enabled.
		if(empty($siteseo->setting_enabled['toggle-advanced']) || empty($siteseo->advanced_settings['appearance_universal_metabox'])){
			add_action('enqueue_block_editor_assets', '\SiteSEO\Admin::enqueue_sidebar');
		}

		// Coloumn
		add_filter('manage_posts_columns', '\SiteSEO\Columns::add_columns');
		add_filter('manage_pages_columns', '\SiteSEO\Columns::add_columns');
		add_action('manage_posts_custom_column', '\SiteSEO\Columns::populate_custom_seo_columns', 10, 2);
		add_action('manage_pages_custom_column', '\SiteSEO\Columns::populate_custom_seo_columns', 10, 2);
		add_filter('manage_edit-post_sortable_columns', '\SiteSEO\Columns::make_seo_columns_sortable');
		add_filter('manage_edit-page_sortable_columns', '\SiteSEO\Columns::make_seo_columns_sortable');
		add_action('admin_menu', '\SiteSEO\Columns::hide_genesis_seo', 999);
		add_action('woocommerce_process_product_meta', '\SiteSEO\Metaboxes\Settings::save_metabox', 10, 2);
		add_action('save_post', '\SiteSEO\Metaboxes\Settings::save_ca_metabox', 10, 2);
		add_action('save_post', '\SiteSEO\Metaboxes\Settings::save_metabox', 10, 2);
	}
	
	static function enqueue_admin_styles($hook){
		if($hook !== 'edit.php'){
			return;
		}

		wp_enqueue_style('siteseo-admin-columns', SITESEO_ASSETS_URL.'/css/admin-columns.css', [], SITESEO_VERSION);
	}
	
	static function add_capabilities(){
		global $siteseo;

		$options = get_option('siteseo_advanced_option_name');
		$roles = wp_roles();

		foreach($roles->get_names() as $role_slug => $role_name){
			$role = get_role($role_slug);
			if(empty($role)) continue;

			if($role_slug === 'administrator'){
				$role->add_cap('siteseo_manage', true); // Adding the only cap to admin.
				continue;
			}
			
			// The structure is page name => capability name without the prefix of siteseo_manage_
			// Will need to add it here whenever a new page is added to SiteSEO
			$pages = [
				'titles' => 'titles',
				'xml-sitemap' => 'sitemap', 
				'social' => 'social',
				'google-analytics' => 'analytics',
				'instant-indexing' => 'instant_indexing',
				'advanced' => 'advanced', 
			];

			$has_access = 0; // To make sure siteseo_manage is added once.
			foreach($pages as $page => $cap){
				$option_key = "siteseo_advanced_security_metaboxe_siteseo-{$page}";
				if(!empty($options[$option_key][$role_slug]) && !empty($siteseo->setting_enabled['toggle-advanced'])){
					$has_access++;

					if($has_access == 1){
						$role->add_cap('siteseo_manage', true);
					}
                    
					$role->add_cap('siteseo_manage_'.$cap, true);
				} else {
					$role->remove_cap('siteseo_manage_'.$cap);
				}
			}
			
			// If no one has this access then just remove siteseo_manage as well.
			if(empty($has_access)){
				$role->remove_cap('siteseo_manage');
			}
		}
	}

	static function body_class($classes){
		if(empty($_GET['page']) || strpos(sanitize_text_field(wp_unslash($_GET['page'])), 'siteseo') === FALSE){
			return $classes;
		}

		$classes .= ' siteseo-admin-body';
		
		return $classes;
	}
	
	static function noindex_warning($wp_admin_bar){
		global $siteseo;
		
		$noindex_enabled = !empty($siteseo->titles_settings['titles_noindex']) ? true : ''; 
		$disable_noindex = !empty($siteseo->advanced_settings['appearance_adminbar_noindex']) ? true : '';

		if(empty($noindex_enabled) || !empty($disable_noindex)){
			return $wp_admin_bar;
		}
		
		$wp_admin_bar->add_node([
			'id'    => 'noindex-warning',
			'title' => '<div class="warning-container"><svg xmlns="http://www.w3.org/2000/svg" height="20" viewBox="0 -960 960 960" width="20" fill="#FFFFFF"><path d="m768-91-72-72q-48.39 32-103.19 49Q538-97 480.49-97q-79.55 0-149.52-30Q261-157 208.5-209.5T126-331.97q-30-69.97-30-149.52 0-57.51 17-112.32 17-54.8 49-103.19l-72-73 51-51 678 679-51 51Zm-288-78q43.69 0 84.85-12Q606-193 643-216L215-644q-23 37-35 78.15-12 41.16-12 84.85 0 129.67 91.16 220.84Q350.33-169 480-169Zm318-97-53-52q22-37 34.5-78.15Q792-437.31 792-481q0-129.67-91.16-220.84Q609.67-793 480-793q-43 0-84.5 12T317-747l-53-52q48.39-32 103.19-49Q422-865 479.9-865q80.1 0 149.6 30t122 82.5Q804-700 834-630.5t30 149.6q0 57.9-17 112.36T798-266ZM536-531ZM432-427Z"/></svg>' . esc_html__('Noindex is on!', 'siteseo') . '</div>',
			'href'  => admin_url('admin.php?page=siteseo-titles'),              
			'meta'  => [
					'class' => 'siteseo-noindex-warning', 
			],
		]);

	}

	static function add_menu(){
		$capability = 'siteseo_manage';
		$siteseo_icon = SITESEO_ASSETS_URL.'/img/logo-24.svg';
		$current_user = wp_get_current_user();
		$is_admin = in_array('administrator', $current_user->roles);
		$options = get_option('siteseo_advanced_option_name');

		add_menu_page(__('SiteSEO', 'siteseo'), 'SiteSEO', 'manage_options', 'siteseo', '\SiteSEO\Settings\Dashboard::dashboard_tab', esc_url($siteseo_icon));

		add_submenu_page('siteseo', __('Dashboard', 'siteseo'), 'Dashboard', 'manage_options', 'siteseo','\SiteSEO\Settings\Dashboard::dashboard_tab');

		$menu_pages = [
			'titles' => [
				'slug' => 'siteseo-titles',
				'title' => __('Titles & Metas', 'siteseo'),
				'callback' => '\SiteSEO\Settings\Titles::menu',
				'option_key' => 'siteseo_advanced_security_metaboxe_siteseo-titles'
		    	],
			'sitemap' => [
				'slug' => 'siteseo-sitemaps',
				'title' => __('Sitemaps', 'siteseo'),
				'callback' => '\SiteSEO\Settings\Sitemap::menu',
				'option_key' => 'siteseo_advanced_security_metaboxe_siteseo-xml-sitemap'
			],
			'social' => [
				'slug' => 'siteseo-social',
				'title' => __('Social Networks', 'siteseo'),
				'callback' => '\SiteSEO\Settings\Social::menu',
				'option_key' => 'siteseo_advanced_security_metaboxe_siteseo-social'
			],
			'analytics' => [
				'slug' => 'siteseo-analytics',
				'title' => __('Analytics', 'siteseo'),
				'callback' => '\SiteSEO\Settings\Analytics::menu',
				'option_key' => 'siteseo_advanced_security_metaboxe_siteseo-google-analytics'
			],
			'indexing' => [
				'slug' => 'siteseo-instant-indexing',
				'title' => __('Instant Indexing', 'siteseo'),
				'callback' => '\SiteSEO\Settings\Instant::menu',
				'option_key' => 'siteseo_advanced_security_metaboxe_siteseo-instant-indexing'
			],
			'advanced' => [
				'slug' => 'siteseo-advanced',
				'title' => __('Advanced', 'siteseo'),
				'callback' => '\SiteSEO\Settings\Advanced::menu',
				'option_key' => 'siteseo_advanced_security_metaboxe_siteseo-advanced'
			],
		];

		foreach($menu_pages as $page){
			$show_page = $is_admin;

			if(!$is_admin){
				foreach($current_user->roles as $role){
					if(isset($options[$page['option_key']][$role]) && $options[$page['option_key']][$role]){
						$show_page = true;
						break;
					}
				}
			}

			if($show_page){
				add_submenu_page('siteseo', $page['title'], $page['title'], $capability, $page['slug'], $page['callback']);
			}
		}
		
		if(!empty($is_admin)){
			add_submenu_page('siteseo', __('Search Statistics', 'siteseo'), __('Search Statistics', 'siteseo') . (( time() < strtotime('31 January 2026') ) ? ' <span style="color:#28a745;margin-left:2px;">NEW</span>' : ''), 'manage_options', 'siteseo-search-statistics', '\SiteSEO\Settings\Statistics::init');
			
			add_submenu_page('siteseo', __('Tools', 'siteseo'), 'Tools', 'manage_options','siteseo-tools' ,'\SiteSEO\Settings\Tools::menu');
		}
	
		// Page for Universal metabox
		add_submenu_page('admin.php', __('Universal MetaBox', 'siteseo'), __('Universal MetaBox', 'siteseo'), 'edit_posts', 'siteseo-metabox-wizard',  '\SiteSEO\Metaboxes\Settings::universal');
	}
	
	static function admin_bar($wp_admin_bar){
		global $siteseo;

		$current_user = wp_get_current_user();
		$is_admin = in_array('administrator', $current_user->roles);
		
		$disable_admin_bar = !empty($siteseo->advanced_settings['appearance_adminbar']) ? true : '';

		if(!$is_admin && !current_user_can('siteseo_access') || !empty($disable_admin_bar)){
			return;
		}

		$siteseo_icon = SITESEO_ASSETS_URL . '/img/logo-24.svg';
		$wp_admin_bar->add_node([
			'id' => 'siteseo',
			'title' => '<span><img src="'.esc_url($siteseo_icon).'" alt="SiteSEO Logo" '.
					  'style="height:20px;vertical-align:middle;margin-right:5px;">'. 
					  esc_html__('SiteSEO', 'siteseo') .'</span>',
			'href' => admin_url('admin.php?page=siteseo'),
			'meta' => ['class' => 'siteseo-admin-bar']
		]);

		$options = get_option('siteseo_advanced_option_name');

		$submenus = [
			'siteseo-dashboard' => [
				'title' => __('Dashboard', 'siteseo'),
				'page' => 'siteseo',
				'option_key' => null
			],
			'siteseo-titles' => [
				'title' => __('Titles & Metas', 'siteseo'),
				'page' => 'siteseo-titles',
				'option_key' => 'siteseo_advanced_security_metaboxe_siteseo-titles'
			],
			'siteseo-sitemaps' => [
				'title' => __('Sitemaps', 'siteseo'),
				'page' => 'siteseo-sitemaps',
				'option_key' => 'siteseo_advanced_security_metaboxe_siteseo-xml-sitemap'
			],
			'siteseo-social' => [
				'title' => __('Social Networks', 'siteseo'),
				'page' => 'siteseo-social',
				'option_key' => 'siteseo_advanced_security_metaboxe_siteseo-social'
			],
			'siteseo-analytics' => [
				'title' => __('Analytics', 'siteseo'),
				'page' => 'siteseo-analytics',
				'option_key' => 'siteseo_advanced_security_metaboxe_siteseo-google-analytics'
			],
			'siteseo-instant-indexing' => [
				'title' => __('Instant Indexing', 'siteseo'),
				'page' => 'siteseo-instant-indexing',
				'option_key' => 'siteseo_advanced_security_metaboxe_siteseo-instant-indexing'
			],
			'siteseo-advanced' => [
				'title' => __('Advanced', 'siteseo'),
				'page' => 'siteseo-advanced',
				'option_key' => 'siteseo_advanced_security_metaboxe_siteseo-advanced'
			],
			'siteseo-tools' => [
				'title' => __('Tools', 'siteseo'),
				'page' => 'siteseo-tools',
				'option_key' => 'siteseo_advanced_security_metaboxe_siteseo-import-export'
			],
			'search-statistics' => [
				'title' => __('Search Statistics', 'siteseo'),
				'page' => 'siteseo-search-statistics',
				'option_key' => 'siteseo_advanced_security_metaboxe_siteseo-search-statistics'
			],
		];


		foreach($submenus as $id => $submenu){
			$show_item = $is_admin;

			if(!$is_admin && $submenu['option_key']){
				foreach($current_user->roles as $role){
					if(isset($options[$submenu['option_key']][$role]) && $options[$submenu['option_key']][$role]){
						$show_item = true;
						break;
					}
				}
			}

			if($show_item || $submenu['option_key'] === null){
				$wp_admin_bar->add_node([
					'id' => $id,
					'parent' => 'siteseo',
					'title' => $submenu['title'],
					'href' => admin_url('admin.php?page=' . $submenu['page'])
		        ]);
			}
		}
		
		if(current_user_can('administrator')){
			$wp_admin_bar->add_node([
				'id' => 'siteseo-configuration-wizard',
				'parent' => 'siteseo',
				'title' => __('Configuration Wizard', 'siteseo'),
				'href' => admin_url('admin.php?page=siteseo-onboarding')
			]);		
		}
		
		// Pro
		if(is_plugin_active('siteseo-pro/siteseo-pro.php') && !defined('SITEPAD')){
			$show_pro = $is_admin;

			if(!$show_pro){
				foreach($current_user->roles as $role){
					if(isset($options['siteseo_advanced_security_page_pro'][$role]) && $options['siteseo_advanced_security_page_pro'][$role]){
						$show_pro = true;
						break;
					}
				}
			}

			if($show_pro){
				$wp_admin_bar->add_node([
					'id' => 'siteseo-pro-page',
					'parent' => 'siteseo',
					'title' => __('Pro Features', 'siteseo'),
					'href' => admin_url('admin.php?page=siteseo-pro-page')
				]);
			}
		}
	}

	static function header_enqueue($hook){
		wp_enqueue_style('siteseo-admin', SITESEO_ASSETS_URL.'/css/header.css', [], SITESEO_VERSION);

		$allowed_pages = ['post.php', 'post-new.php', 'edit.php'];
		if(in_array($hook, $allowed_pages)){
			wp_enqueue_style('siteseo-metabox-pages',SITESEO_ASSETS_URL . '/css/header.css', [], SITESEO_VERSION);
		}
	}

	static function enqueue_metaboxes(){
		
		$social_placeholder = SITESEO_ASSETS_URL . '/img/social-placeholder.png';
		wp_enqueue_media();
		wp_enqueue_style('siteseo-metabox-pages', SITESEO_ASSETS_URL.'/css/metabox.css', [], SITESEO_VERSION);
		wp_enqueue_script('siteseo-metabox', SITESEO_ASSETS_URL.'/js/metabox.js', ['jquery'], SITESEO_VERSION, ['strategy'  => 'defer', 'in_footer' => true]);
		wp_localize_script('siteseo-metabox', 'siteseoAdminAjax', [
	            'url'   => admin_url('admin-ajax.php'), 
	            'nonce' => wp_create_nonce('siteseo_admin_nonce'),
		    'social_placeholder'   => esc_url($social_placeholder)
	        ]);
			
		do_action('siteseo_structured_data_types_enqueue');
			
	}

	static function cookies_bar(){
		global $siteseo;
		
		if(empty($siteseo->setting_enabled['toggle-google-analytics']) || empty($siteseo->analaytics_settings['google_analytics_disable'])){
			return;
		}
		
		wp_enqueue_style('siteseo-admin-cookies', SITESEO_ASSETS_URL.'/css/cookies.css', [], SITESEO_VERSION);
		wp_enqueue_script('siteseo-cookies-js', SITESEO_ASSETS_URL.'/js/cookies-bar.js', ['jquery'], SITESEO_VERSION, true);
	}

	static function enqueue_script(){
		if(empty($_GET['page']) || strpos(sanitize_text_field(wp_unslash($_GET['page'])), 'siteseo') === FALSE){
			return;
		}
		
		$current_user = wp_get_current_user();
		$is_admin = in_array('administrator', $current_user->roles);

		if($is_admin || current_user_can('siteseo_manage')){
			wp_enqueue_media();
			wp_enqueue_script('siteseo-admin', SITESEO_ASSETS_URL.'/js/admin.js', ['jquery'], SITESEO_VERSION, true);
			wp_enqueue_style('siteseo-admin-bar', SITESEO_ASSETS_URL .'/css/admin-bar.css', [], SITESEO_VERSION);
			wp_enqueue_style('siteseo-admin-pages', SITESEO_ASSETS_URL.'/css/siteseo.css', [], SITESEO_VERSION);

			wp_localize_script('siteseo-admin', 'siteseoAdminAjax', array( 
				'url'   => admin_url('admin-ajax.php'), 
				'nonce' => wp_create_nonce('siteseo_admin_nonce') 
			));
		}
	}

	static function register_sitmap_block(){
		global $siteseo;
			
		if(empty($siteseo->sitemap_settings['xml_sitemap_html_enable'])){
			return;
		}
		
		wp_register_script('sitemap-html-block', SITESEO_ASSETS_URL.'/js/block.js', array('wp-blocks', 'wp-element', 'wp-editor'), filemtime(SITESEO_ASSETS_PATH . '/js/block.js'));

		$html = \SiteSEO\GenerateSitemap::html_sitemap();

		// Localize
		wp_localize_script('sitemap-html-block', 'siteseositemap', array(
			'previewData' => $html,
		));

		register_block_type('siteseo/html-sitemap', array(
			'editor_script' => 'sitemap-html-block',
			'render_callback' => '\SiteSEO\GenerateSitemap::html_sitemap'
		));

	}

	static function create_siteseo_block($categories){
		$siteseo[] = [
			'slug'  => 'siteseo',
			'title' => 'SiteSEO'
		];

		return $siteseo;	
	}
	
	static function enqueue_sidebar(){
		$assets = include SITESEO_ASSETS_PATH . '/js/sidebar/build/index.asset.php';
		$css_file = SITESEO_ASSETS_PATH . '/js/sidebar/build/index.css';
		
		$js_dependencies = $assets['dependencies'];
		
		wp_enqueue_style('siteseo-sidebar', SITESEO_ASSETS_URL . '/js/sidebar/build/index.css', [], $assets['version'].time());
		wp_enqueue_script('siteseo-sidebar', SITESEO_ASSETS_URL . '/js/sidebar/build/index.js', $js_dependencies, $assets['version']);

		wp_localize_script('siteseo-sidebar', 'siteseo_sidebar', [
			'nonce' => wp_create_nonce('siteseo_sidebar_nonce'),
			'ajax_url' => admin_url('admin-ajax.php')
		]);
	}
	
	static function add_metaboxes($post_type, $post = false){
		global $siteseo;
		
		if(!is_user_logged_in()){
			return;
		}

		$metabox_roles = !empty($siteseo->advanced_settings['security_metaboxe_role']) ? $siteseo->advanced_settings['security_metaboxe_role'] : [];
		
		$allow_user = true;

		$user = wp_get_current_user();

		$user_role = current($user->roles);

		if(array_key_exists($user_role, $metabox_roles)){
			$allow_user = false;
		}

		if(empty($allow_user)){
			return;
		}
		
		// Checking if it is a block editor
		if(function_exists('get_current_screen')){
			$screen = get_current_screen();
			
			if(!empty($screen) && method_exists($screen, 'is_block_editor') && $screen->is_block_editor() === true){
				if(!empty($siteseo->advanced_settings['appearance_universal_metabox']) && empty($siteseo->advanced_settings['appearance_universal_metabox_disable'])){
					return;
				}
			}
		}
		
		$post_types = siteseo_post_types();
		$post_types = array_keys($post_types);

		foreach($post_types as $post_type){
			if(empty($siteseo->titles_settings['titles_single_titles'][$post_type]['disabled'])){
				add_meta_box('siteseo-post-metabox', 'SiteSEO', '\SiteSEO\Metaboxes\Settings::render_metabox', $post_type, 'normal', 'high');
			}
		}
	}
	
	static function add_term_metabox(){
		global $siteseo;

		$metabox_roles = !empty($siteseo->advanced_settings['security_metaboxe_role']) ? $siteseo->advanced_settings['security_metaboxe_role'] : [];

		$allow_user = true; 
		
		if(is_user_logged_in()){
			$user = wp_get_current_user();
			
			if(is_super_admin()){
				$allow_user = true;
			} else{				
				$user_role = current($user->roles);

				if(array_key_exists($user_role, $metabox_roles)){
					$allow_user = false;
				}
			}
		}

		if(empty($allow_user)){
			return;
		}

		$taxonomies = get_taxonomies(['show_ui' => true, 'public'  => true], 'objects', 'and');
		$taxonomies = array_keys($taxonomies);

		foreach($taxonomies as $key){
			add_action($key . '_edit_form', '\SiteSEO\Metaboxes\Settings::render_term_metabox', 10, 2);
			add_action('edit_' . $key, '\SiteSEO\Metaboxes\Settings::save_meta_terms', 10, 2);
		}
	}
	
	static function rating_promotion($text){
		global $wp_version;
		
		$screen = get_current_screen();
		
		if(!isset($screen->id) || strpos($screen->id, 'siteseo') === false){
			return $text;
		}
		
		$linkText = esc_html__('Give us a 5-star rating!', 'siteseo');
		$href = 'https://wordpress.org/support/plugin/siteseo/reviews/?filter=5#new-post';

		
		$link1 = wp_kses_post(sprintf(
		/* translators: 1: URL to review page, 2: Link title text */
			__('<a href="%1$s" target="_blank" title="%2$s" id="siteseo-start-promo">&#9733;&#9733;&#9733;&#9733;&#9733;</a>', 'siteseo'),
			esc_url($href),
			$linkText
		));
		
		$link2 = wp_kses_post(sprintf(
			/* translators: 1: URL to review page, 2: Link title text */
			__('<a href="%1$s" target="_blank" title="%2$s">WordPress.org</a>', 'siteseo'),
			esc_url($href),
			$linkText
		));

		ob_start();

		printf(
		/* translators: 1: SiteSEO, 2: Star rating link, 3: WordPress.org link */
			wp_kses_post(__('Please rate %1$s %2$s on %3$s to help us spread the word. Thank you!', 'siteseo')) . '<br>',
			wp_kses_post(sprintf('<strong>%s</strong>', esc_html__('SiteSEO', 'siteseo'))),
			wp_kses_post($link1),
			wp_kses_post($link2)
		);

		printf(
			wp_kses_post('<p class="alignright">%1$s</p>'),
			sprintf(
				/* translators: 1: WordPress version, 2: SiteSEO version */
				esc_html__('WordPress %1$s | SiteSEO %2$s', 'siteseo'),
				esc_html($wp_version),
				esc_html(SITESEO_VERSION)
			)
		);
		
		remove_filter('update_footer', 'core_update_footer');

		return ob_get_clean();
	}
	
	static function update_notice(){
		if(defined('SOFTACULOUS_PLUGIN_UPDATE_NOTICE')){
			return;
		}

		$to_update_plugins = apply_filters('softaculous_plugin_update_notice', []);

		if(empty($to_update_plugins)){
			return;
		}

		/* translators: %1$s is replaced with a "string" of name of plugins, and %2$s is replaced with "string" which can be "is" or "are" based on the count of the plugin */
		$msg = sprintf(__('New version of %1$s %2$s available. Updating ensures better performance, security, and access to the latest features.', 'siteseo'), '<b>'.esc_html(implode(', ', $to_update_plugins)).'</b>', (count($to_update_plugins) > 1 ? 'are' : 'is')) . ' <a class="button button-primary" href='.esc_url(admin_url('plugins.php?plugin_status=upgrade')).'>Update Now</a>';

		define('SOFTACULOUS_PLUGIN_UPDATE_NOTICE', true); // To make sure other plugins don't return a Notice
		echo '<div class="notice notice-info is-dismissible" id="siteseo-plugin-update-notice">
			<p>'.$msg. '</p>
		</div>';

		wp_register_script('siteseo-update-notice', '', ['jquery'], SITESEO_VERSION, true);
		wp_enqueue_script('siteseo-update-notice');
		wp_add_inline_script('siteseo-update-notice', 'jQuery("#siteseo-plugin-update-notice").on("click", function(e){
			let target = jQuery(e.target);

			if(!target.hasClass("notice-dismiss")){
				return;
			}

			var data;
			
			// Hide it
			jQuery("#siteseo-plugin-update-notice").hide();
			
			// Save this preference
			jQuery.post("'.admin_url('admin-ajax.php?action=siteseo_close_update_notice').'&security='.wp_create_nonce('siteseo_promo_nonce').'", data, function(response) {
				//alert(response);
			});
		});');
	}
}
PK��f\D�q�l#l#main/instantindexing.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class InstantIndexing{
	
	static function bing_txt_file(){
		global $wp, $siteseo;
		
		$request = home_url($wp->request);
		if(empty($request)){
			return;
		}

		$api_key = $siteseo->instant_settings['instant_indexing_bing_api_key'];
		$api_url = trailingslashit(home_url()) . $api_key . '.txt';
		
		if($request == $api_url){
			header('X-Robots-Tag: noindex');
			header('Content-Type: text/plain');
			status_header(200);

			echo esc_html($api_key);
			die();
		}
	}
	
	static function submit_urls_to_google($urls){
		$access_token = self::get_google_auth_token();

		if(empty($access_token)){
			return;
		}

		$boundary = wp_rand();
		$batch_body = '';
		$options = get_option('siteseo_instant_indexing_option_name');
		$type = !empty($options['instant_indexing_google_action']) ? $options['instant_indexing_google_action'] : 'URL_UPDATED';
		
		switch($type){
			case 'remove_urls':
				$type = 'URL_DELETED';
				break;
			
			case 'update_urls':
				$type = 'URL_UPDATED';
				break;
		}
		
		// Creating a batch request
		foreach($urls as $url){
			$post_data = wp_json_encode(['url' => $url, 'type' => $type]);

			$batch_body .= '--'.$boundary.PHP_EOL;
			$batch_body .= 'Content-Type: application/http'.PHP_EOL;
			$batch_body .= 'Content-Transfer-Encoding: binary'.PHP_EOL;
			$batch_body .= 'Content-ID: <'.esc_url($url).'>'.PHP_EOL.PHP_EOL;
			$batch_body .= 'POST /v3/urlNotifications:publish HTTP/1.1'.PHP_EOL;
			$batch_body .= 'Content-Type: application/json' . PHP_EOL;
			$batch_body .= 'accept: application/json'.PHP_EOL;
			$batch_body .= 'content-length: '.strlen($post_data).PHP_EOL.PHP_EOL;
			$batch_body .= $post_data.PHP_EOL;
		}

		$batch_body .= '--'.$boundary.'--';

		$response = wp_remote_post('https://indexing.googleapis.com/batch', [
			'body' => $batch_body,
			'headers' => [
				'Content-Type' => 'multipart/mixed; boundary='.$boundary,
				'Authorization' => 'Bearer ' . $access_token
			],
			'timeout' => 30
		]);
		
		if(is_wp_error($response)){
			$response = ['error' => $response->get_error_message()];
			return;
		}
		
		$res_code = wp_remote_retrieve_response_code($response);

		if($res_code > 299){
			return $response;
		}
		
		$batch_response = self::parse_batch_response($response);

		$response = [
			'status_code' => wp_remote_retrieve_response_code($response),
			'urls' => $batch_response,
			'error' => is_wp_error($response) ? $response->get_error_message() : null
		];

		return $response;
	}

	static function parse_batch_response(&$response){
		$response_headers = wp_remote_retrieve_headers($response);
		$response_headers = $response_headers->getAll();

		$content_type = $response_headers['content-type'];

		$urls = [];

		$content_type = explode(';', $content_type);
		$boundary = false;
		foreach($content_type as $part){
			$part = explode('=', $part, 2);
			if (isset($part[0]) && 'boundary' == trim($part[0])) {
				$boundary = $part[1];
			}
		}

		$res_body = wp_remote_retrieve_body($response);
		$res_body = str_replace('--'.$boundary.'--', '--'.$boundary, $res_body);
		$batch_responses = explode('--'.$boundary, $res_body);
		$batch_responses = array_filter($batch_responses);

		foreach($batch_responses as $batch_response){
			$batch_response = trim($batch_response);
			if(empty($batch_response)){
				continue;
			}

			$batch_response = explode("\r\n\r\n", $batch_response);

			if(empty($batch_response[2])){
				continue;
			}

			$batch_body = json_decode($batch_response[2], true);

			if(empty($batch_body)){
				continue;
			}

			if(!empty($batch_body['urlNotificationMetadata']) && !empty($batch_body['urlNotificationMetadata']['url'])){
				$urls[] = sanitize_url($batch_body['urlNotificationMetadata']['url']);
			}
		}

		return $urls;
	}
	
	static function get_google_auth_token(){
		global $siteseo;
		
		$endpoint = 'https://oauth2.googleapis.com/token';
		$scope = 'https://www.googleapis.com/auth/indexing';
		
		if(!function_exists('openssl_sign')){
			return false;
		}

		$google_api_data = isset($siteseo->instant_settings['instant_indexing_google_api_key']) ? $siteseo->instant_settings['instant_indexing_google_api_key'] : '';
		
		if(empty($google_api_data)){
			return false;
		}

		$google_api_data = json_decode($google_api_data, true);
		if(empty($google_api_data)){
			return;
		}

		// Header
		$headers = wp_json_encode(['alg' => 'RS256', 'typ' => 'JWT']);
		$headers = base64_encode($headers);

		// Claim Set
		$now = time();
		$claims = wp_json_encode([
			'iss' => $google_api_data['client_email'],
			'scope' => 'https://www.googleapis.com/auth/indexing',
			'aud' => 'https://oauth2.googleapis.com/token',
			'exp' => $now + 3600,
			'iat' => $now
		]);

		$claims = base64_encode($claims);

		// Make sure base64 encoding is URL-safe
		$headers = str_replace(['+', '/', '='], ['-', '_', ''], $headers);
		$claim = str_replace(['+', '/', '='], ['-', '_', ''], $claims);

		// Sign the JWT with the private key
		$signature_input = "$headers.$claim";
		openssl_sign($signature_input, $signature, $google_api_data['private_key'], OPENSSL_ALGO_SHA256);

		$signature = base64_encode($signature);
		$signature = str_replace(['+', '/', '='], ['-', '_', ''], $signature);

		// JWT Token
		$jwt_assertion = "$signature_input.$signature";

		// OAuth2 Request
		$post_data = http_build_query([
			'grant_type' => 'urn:ietf:params:oauth:grant-type:jwt-bearer',
			'assertion' => $jwt_assertion
		]);

		$response = wp_remote_post($endpoint, [
			'body' => $post_data,
			'headers' => [
				'Content-Type' => 'application/x-www-form-urlencoded',
			]
		]);

		if(is_wp_error($response)){
			return false;
		}

		$body = json_decode(wp_remote_retrieve_body($response), true);
		return isset($body['access_token']) ? $body['access_token'] : false;

	}

	/**
	 * Sends request to index now api with list of urls and key and key location.
	 *
	 * Key location is just the URL to a file which has the same name as the Key
	 * as key.txt and the content in it is the key as well. This is a virtual file.
	 *
	 * @param array $urls List of URLs to submit.
	 * @param string $api_key bing key.
	 *
	 * @return array with 'status_code' and response 'body'
	 */
	static function submit_urls_to_bing($urls, $api_key){
        	$host = wp_parse_url(home_url(), PHP_URL_HOST);
		$key_location = trailingslashit(home_url()) . $api_key . '.txt';

		$endpoint = 'https://api.indexnow.org/indexnow/';
		$body = wp_json_encode([
		    'host' => $host, 
		    'key' => $api_key,
				'keyLocation' => $key_location,
		    'urlList' => $urls
		]);

		$response = wp_remote_post($endpoint, [
		    'body' => $body,
		    'headers' => [
		        'Content-Type' => 'application/json',
		        'Accept' => 'application/json'
		    ],
		    'timeout' => 30
		]);

		return [
		    'status_code' => wp_remote_retrieve_response_code($response),
		    'body' => wp_remote_retrieve_body($response)
		];
	}
	
	// Sends request to bing when the status of post changes
	// We will only do it only if the post is published.
	static function on_status_change($new_status, $old_status, $post){

		if($new_status == $old_status){
			return;
		}
		
		if($new_status != 'publish'){
			return;
		}
		
		if(empty($post) || empty($post->post_type)){
			return;
		}
		
		$post_type_object = get_post_type_object($post->post_type);
		
		// Need to make sure we submit posts whos post type is public
		if(empty($post_type_object) || empty($post_type_object->public)){
			return;
		}

		$options = get_option('siteseo_instant_indexing_option_name', []);

		$bing_api_key = !empty($options['instant_indexing_bing_api_key']) ? $options['instant_indexing_bing_api_key'] : '';
		$google_api_key = !empty($options['instant_indexing_google_api_key']) ? $options['instant_indexing_google_api_key'] : '';
		$url = get_permalink($post);

		$url_list = [$url];
		$res_google = null;
		$res_bing   = null;
		
		if(!empty($bing_api_key)){
			$res_bing = self::submit_urls_to_bing($url_list, $bing_api_key);
		}
		
		if(!empty($google_api_key)){
			$res_google = self::submit_urls_to_google($url_list);
		}
		
		self::save_index_history($url_list, $res_google, $res_bing , 'auto');
				
	}
	
	static function save_index_history($urls, $google_response, $bing_response, $source){
		global $siteseo;
		
		$history = $siteseo->instant_settings;

		if(!isset($history['indexing_history'])){
			$history['indexing_history'] = [];
		}

		array_unshift($history['indexing_history'], [
			'time' => time(),
			'urls' => $urls,
			'google_status_code' => !empty($google_response['status_code']) ? $google_response['status_code'] : null,
			'bing_status_code' => !empty($bing_response['status_code']) ? $bing_response['status_code'] : null,
			'source' => !empty($source) ? $source : 'manual', // 'manual' or 'auto'
		]);
		
		$history['indexing_history'] = array_slice($history['indexing_history'], 0, 10);

		update_option('siteseo_instant_indexing_option_name', $history);
	}	
}
PK��f\u���f�fmain/googleanalytics.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class GoogleAnalytics{

	static function ga_render(){
		global $siteseo;
		
		if(empty($siteseo->setting_enabled['toggle-google-analytics'])){
			return;
		}

		if(!empty($siteseo->analaytics_settings['google_analytics_clarity_enable']) && !empty($siteseo->analaytics_settings['google_analytics_clarity_project_id'])){
			add_action('wp_head', '\SiteSEO\GoogleAnalytics::microsoft_clarity');
		}

		if(!empty($siteseo->analaytics_settings['google_analytics_enable']) && !empty($siteseo->analaytics_settings['google_analytics_ga4'])){
			add_action('wp_head', '\SiteSEO\GoogleAnalytics::ga_tracking_code');
		}

		if(!empty($siteseo->analaytics_settings['google_analytics_enable'])){
			add_action('wp_footer', '\SiteSEO\GoogleAnalytics::tracking');
		}

		if(!empty($siteseo->analaytics_settings['google_analytics_link_tracking_enable'])){
			add_action('wp_footer', '\SiteSEO\GoogleAnalytics::add_tracking_script');
		}

		if(!empty($siteseo->analaytics_settings['google_analytics_matomo_enable']) && !empty($siteseo->analaytics_settings['google_analytics_matomo_site_id'])){
			add_action('wp_footer', '\SiteSEO\GoogleAnalytics::matomo_tracking_code');
		}

		if(!empty($siteseo->analaytics_settings['google_analytics_other_tracking'])){
			add_action('wp_head', '\SiteSEO\GoogleAnalytics::add_custom_head_script');
		}

		if(!empty($siteseo->analaytics_settings['google_analytics_other_tracking_body'])){
			add_action('wp_body_open', '\SiteSEO\GoogleAnalytics::add_custom_body_script');
		}

		if(!empty($siteseo->analaytics_settings['google_analytics_other_tracking_footer'])){
			add_action('wp_footer', '\SiteSEO\GoogleAnalytics::add_custom_footer_script');
		}

		if(!empty($siteseo->analaytics_settings['google_analytics_opt_out_edit_choice'])){
			$load_cookies_bar = $siteseo->analaytics_settings['google_analytics_hook'];
			add_action($load_cookies_bar, '\SiteSEO\GoogleAnalytics::render_cookie_bar');
		}
		
	}

	static function render_cookie_bar(){
		global $siteseo;

		if(empty($siteseo->setting_enabled['toggle-google-analytics']) || empty($siteseo->analaytics_settings['google_analytics_disable'])){
			return;
		}

		// Plugin edit pages on which we should not show the cookie notice.
		$page_builders = ['fl_builder', 'elementor-preview', 'ct_builder', 'vc_editable', 'brizy_edit', 'tve', 'pagelayer-live'];

		foreach($page_builders as $builder){
			if(isset($_GET[$builder])){
				return;
			}
		}

		// load setting
		$auto_accept_cookies = !empty($siteseo->analaytics_settings['google_analytics_half_disable']) ? $siteseo->analaytics_settings['google_analytics_half_disable'] : '';
		$cookies_msg = !empty($siteseo->analaytics_settings['google_analytics_opt_out_msg']) ? $siteseo->analaytics_settings['google_analytics_opt_out_msg'] : 'By visiting our site, you agree to our privacy policy regarding cookies, tracking statistics, etc.';
		$accept_btn_msg = !empty($siteseo->analaytics_settings['google_analytics_opt_out_msg_ok']) ? $siteseo->analaytics_settings['google_analytics_opt_out_msg_ok'] : 'Accept';
		$close_btn_msg = !empty($siteseo->analaytics_settings['google_analytics_opt_out_msg_close']) ? $siteseo->analaytics_settings['google_analytics_opt_out_msg_close'] : 'X';
		$edit_btn_msg = !empty($siteseo->analaytics_settings['google_analytics_opt_out_msg_edit']) ? $siteseo->analaytics_settings['google_analytics_opt_out_msg_edit'] : 'Manage cookies';
		$cookies_expir = !empty($siteseo->analaytics_settings['google_analytics_cb_exp_date']) ? $siteseo->analaytics_settings['google_analytics_cb_exp_date'] : '';
		$bar_postion = !empty($siteseo->analaytics_settings['google_analytics_cb_pos']) ? $siteseo->analaytics_settings['google_analytics_cb_pos'] : '' ;
		$bar_width = !empty($siteseo->analaytics_settings['google_analytics_cb_width']) ? $siteseo->analaytics_settings['google_analytics_cb_width'] : '';
		$display_backrop = !empty($siteseo->analaytics_settings['google_analytics_cb_backdrop']) ? true : '';

		// colors load 
		$backdrop_bg = !empty($siteseo->analaytics_settings['google_analytics_cb_backdrop_bg']) ? $siteseo->analaytics_settings['google_analytics_cb_backdrop_bg'] : '';
		$cookiebar_bg = !empty($siteseo->analaytics_settings['google_analytics_cb_bg']) ? $siteseo->analaytics_settings['google_analytics_cb_bg'] : '#ffffff';
		$cookiebar_bg_txt = !empty($siteseo->analaytics_settings['google_analytics_cb_txt_col']) ? $siteseo->analaytics_settings['google_analytics_cb_txt_col'] : '#000000';
		$cookiesbar_bg_lk = !empty($siteseo->analaytics_settings['google_analytics_cb_lk_col']) ? $siteseo->analaytics_settings['google_analytics_cb_lk_col'] : '#0073aa';
		$primary_btn_bg = !empty($siteseo->analaytics_settings['google_analytics_cb_btn_bg']) ? $siteseo->analaytics_settings['google_analytics_cb_btn_bg'] : '#0073aa';
		$primary_btn_bg_hov = !empty($siteseo->analaytics_settings['google_analytics_cb_btn_bg']) ? $siteseo->analaytics_settings['google_analytics_cb_btn_bg'] : '#ffffff';
		$primary_btn_txt = !empty($siteseo->analaytics_settings['google_analytics_cb_btn_col']) ? $siteseo->analaytics_settings['google_analytics_cb_btn_col'] : '#005177';
		$primary_btn_txt_hov = !empty($siteseo->analaytics_settings['google_analytics_cb_btn_col']) ? $siteseo->analaytics_settings['google_analytics_cb_btn_col'] : '#ffffff';
		$sec_btn_bg = !empty($siteseo->analaytics_settings['google_analytics_cb_btn_sec_bg']) ? $siteseo->analaytics_settings['google_analytics_cb_btn_sec_bg'] : '#cccccc';
		$sec_btn_bg_txt = !empty($siteseo->analaytics_settings['google_analytics_cb_btn_sec_col']) ? $siteseo->analaytics_settings['google_analytics_cb_btn_sec_col'] : '#000000';
		$sec_btn_bg_hov = !empty($siteseo->analaytics_settings['google_analytics_cb_btn_sec_bg_hov']) ? $siteseo->analaytics_settings['google_analytics_cb_btn_sec_bg_hov'] : '#aaaaaa';
		$sec_btn_txt_hov = !empty($siteseo->analaytics_settings['google_analytics_cb_btn_sec_col_hov']) ? $siteseo->analaytics_settings['google_analytics_cb_btn_sec_col_hov'] : '#000000';

		//position
		$position_class = '';
		$backdrop = false;
		switch(strtolower($bar_postion)){
			case 'middle':
				$position_class = 'siteseo-cookie-bar-middle';
				$backdrop = true;
				break;
			case 'top':
				$position_class = 'siteseo-cookie-bar-top';
				$backdrop = false;
				break;
			default:
				$position_class = 'siteseo-cookie-bar-bottom';
				$backdrop = false;
		}

		/* Translators: %s is the background color */
		$bar_styles = sprintf(
			'background-color: %s; color: %s;',
			esc_attr($cookiebar_bg),
			esc_attr($cookiebar_bg_txt)
		);

		
		$backdrop_html = '';
		if(!empty($display_backrop) && $backdrop){
			$backdrop_html = '<div id="siteseo-cookie-bar-backdrop" style="background-color:'.esc_attr($backdrop_bg).'" class="siteseo-cookie-bar-backdrop"></div>';
		}

		$css = '<style>
			#siteseo-cookie-bar-accept{
				--primary-btn-bg: '.esc_attr($primary_btn_bg).';
				--primary-btn-text: '.esc_attr($primary_btn_txt).';
				--primary-btn-hover-bg: '.esc_attr($primary_btn_bg_hov).';
				--primary-btn-hover-text: '.esc_attr($primary_btn_txt_hov).';
			}
			#siteseo-cookie-bar-close{
				--secondary-btn-bg: '.esc_attr($sec_btn_bg).';
				--secondary-btn-text: '.esc_attr($sec_btn_bg_txt).';
				--secondary-btn-hover-bg: '.esc_attr($sec_btn_bg_hov).';
				--secondary-btn-hover-text: '.esc_attr($sec_btn_txt_hov).';
			}
		</style>';
		
		$html = $backdrop_html;
		$html .= '<div id="siteseo-cookie-bar" class="siteseo-cookie-bar '.esc_attr($position_class).'" style="'.esc_attr($bar_styles).'" data-half-disable="'.esc_attr($auto_accept_cookies).'">
			<div class="siteseo-cookie-bar-content">
				<span>'.wp_kses_post($cookies_msg).'</span>
				<div class="siteseo-cookie-bar-buttons">
					<button id="siteseo-cookie-bar-accept" class="siteseo-cookie-bar-button siteseo-cookie-bar-primary-btn" style="background-color: '.esc_attr($primary_btn_bg).'; color: '.esc_attr($primary_btn_txt).'">
						'.esc_html($accept_btn_msg).'
					</button>
					<button id="siteseo-cookie-bar-close" class="siteseo-cookie-bar-button siteseo-cookie-bar-secondary-btn" style="background-color: '.esc_attr($sec_btn_bg).'; color: '.esc_attr($sec_btn_bg_txt).'">
						'.esc_html($close_btn_msg).'
					</button>
				</div>
			</div>
		</div>
		<button id="siteseo-cookie-bar-manage-btn" class="siteseo-cookie-bar-button siteseo-cookie-bar-primary-btn" style="background-color: '.$primary_btn_bg.'; color: '.esc_attr($primary_btn_txt).'">
			'.esc_html($edit_btn_msg).'
		</button>';
		
		echo wp_kses_post($html);
	}
	
	static function update_src_tag($tag, $handle, $src){
		global $siteseo;
		
		$tracking_handles = [
			'siteseo-gtag',
			'siteseo-matomo-tracking',
			'siteseo-microsoft-clarity',
			'siteseo-microsoft-clarity-js-after',
			'siteseo-ga-tracking'
		];
		
		if(!in_array($handle, $tracking_handles)){
			return $tag;
		}
		
		if(!empty($siteseo->analaytics_settings['google_analytics_disable']) && !isset($_COOKIE['siteseo-user-consent-accept']) && !isset($_COOKIE['siteseo-user-consent-close'])){
			$tag = str_replace(' src=', ' data-src-siteseo=', $tag);
		}
		
		return $tag;
	}
		
	static function process_script_src($scripts){
		global $siteseo;
		
		if(!empty($siteseo->analaytics_settings['google_analytics_disable']) && !isset($_COOKIE['siteseo-user-consent-accept']) && !isset($_COOKIE['siteseo-user-consent-close'])){
			$scripts = preg_replace('/(<script[^>]*) src=(["\'])(.*?)\\2/i', '$1 data-src-siteseo=$2$3$2', $scripts);
		}
    
		return $scripts;
	}
	
	static function add_custom_head_script(){
		global $siteseo;
        
		$scripts = $siteseo->analaytics_settings['google_analytics_other_tracking'];
       
		$scripts = self::process_script_src($scripts);
        
		echo wp_kses($scripts, [
			'script' => [
				'async' => [],
				'src' => [],
				'data-src-siteseo' => [],
				'type' => []
			]
		]);
	}
	
	static function add_custom_body_script(){
		global $siteseo;
		
		$scripts = $siteseo->analaytics_settings['google_analytics_other_tracking_body'];
		
		$scripts = self::process_script_src($scripts);
		
		echo wp_kses($scripts, [
			'script' => [
				'async' => [],
				'src' => [],
				'data-src-siteseo' => [],
				'type' => []
			]
		]);	
	}
	
	static function add_custom_footer_script(){
		global $siteseo;
		
		$scripts = $siteseo->analaytics_settings['google_analytics_other_tracking_footer'];
		
		$scripts = self::process_script_src($scripts);
		
		echo wp_kses($scripts, [
			'script' => [
				'async' => [],
				'src' => [],
				'data-src-siteseo' => [],
				'type' => []
			]
		]);
	}
	
	static function exclude_user_tracking(){
		global $siteseo;
	
		if(!is_user_logged_in()){
			return false;
		}

		$current_user = wp_get_current_user();
		if(!$current_user){
			return false;
		}

		$excluded_roles = isset($siteseo->analaytics_settings['google_analytics_roles']) ? $siteseo->analaytics_settings['google_analytics_roles'] : [];

		if(empty($excluded_roles)){
			return false;
		}

		foreach($current_user->roles as $user_role){
			if(isset($excluded_roles[$user_role])){
				return true;
			}
		}

		return false;
	}
	
	static function custom_dimensions(){
		global $siteseo;
		$dimensions = [];
		$settings = $siteseo->analaytics_settings;

		// Track Authors
		if(!empty($settings['track_authors']) && $settings['track_authors'] !== 'none'){
			if(is_singular()){
				$author_id = get_post_field('post_author', get_the_ID());
				$author_name = get_the_author_meta('display_name', $author_id);
				$dimensions[$settings['track_authors']] = $author_name;
			}
		}

		// Track Categories
		if(!empty($settings['track_categories']) && $settings['track_categories'] !== 'none'){
			if(is_singular()){
				$categories = get_the_category();
				if(!empty($categories)){
					$category_names = array_map(function($cat){
						return $cat->name;
					}, $categories);
					$dimensions[$settings['track_categories']] = implode(', ', $category_names);
				}
			}
		}

		// Track Tags
		if(!empty($settings['track_tags']) && $settings['track_tags'] !== 'none'){
			if(is_singular()){
				$tags = get_the_tags();
				if(!empty($tags)){
					$tag_names = array_map(function($tag){
						return $tag->name;
					}, $tags);
					$dimensions[$settings['track_tags']] = implode(', ', $tag_names);
				}
			}
		}

		// Track Post Types
		if(!empty($settings['track_post_types']) && $settings['track_post_types'] !== 'none'){
			if(is_singular()){
				$dimensions[$settings['track_post_types']] = get_post_type();
			}
		}

		// Track Logged In Users
		if(!empty($settings['track_user']) && $settings['track_user'] !== 'none'){
			if(is_user_logged_in()){
				$current_user = wp_get_current_user();
				$dimensions[$settings['track_user']] = $current_user->roles[0];
			}
		}

		return $dimensions;
		
	}
	
	static function matomo_tracking_code(){
		global $siteseo;
		
		if(self::exclude_user_tracking()){
			return;
		}
		
		$settings = $siteseo->analaytics_settings;
		
		$tracking_url = !empty($settings['google_analytics_matomo_id']) ? $settings['google_analytics_matomo_id'] : '';
		$site_id = !empty($settings['google_analytics_matomo_site_id']) ? $settings['google_analytics_matomo_site_id'] : '';
		$cross_domain = !empty($settings['google_analytics_matomo_cross_domain']) ? $settings['google_analytics_matomo_cross_domain'] : '';
		$do_not_track = !empty($settings['google_analytics_matomo_dnt']) ? $settings['google_analytics_matomo_dnt'] : '';
		$disable_cookies = !empty($settings['google_analytics_matomo_no_cookies']) ? $settings['google_analytics_matomo_no_cookies'] : '';
		$disable_heatmaps = !empty($settings['google_analytics_matomo_no_heatmaps']) ? $settings['google_analytics_matomo_no_heatmaps'] : '';
		$track_subdomains = !empty($settings['google_analytics_matomo_subdomains']) ? $settings['google_analytics_matomo_subdomains'] : '';
		$track_js_disabled = !empty($settings['google_analytics_matomo_no_js']) ? $settings['google_analytics_matomo_no_js'] : '';
		
		wp_register_script('siteseo-matomo-tracking', false, [], null, [
			'strategy' => true,
			'in_footer' => true,
		]);
		wp_enqueue_script('siteseo-matomo-tracking');
		
		add_filter('script_loader_tag', '\SiteSEO\GoogleAnalytics::update_src_tag', 10, 3);
			wp_add_inline_script('siteseo-matomo-tracking', "var _paq = _paq || [];
			_paq.push(['setSiteId', '".esc_html($site_id)."']);
			_paq.push(['setTrackerUrl', '".esc_html($tracking_url)."']);
            
		    if(".esc_html($cross_domain).") _paq.push(['enableCrossDomainLinking']);
		    if(".esc_html($do_not_track).") _paq.push(['setDoNotTrack', true]);
		    if(".esc_html($disable_cookies).") _paq.push(['disableCookies']);
		    if(".esc_html($disable_heatmaps).") _paq.push(['disableAllHeatmaps']);
		    if(".esc_html($track_subdomains).") _paq.push(['setDocumentTitle', document.domain + '/' + document.title]);

		    _paq.push(['trackPageView']);
		    _paq.push(['enableLinkTracking']);
            
		    (function(){
				var u=\"".esc_html($tracking_url)."\";
		        _paq.push(['setTrackerUrl', u + 'matomo.php']);
				_paq.push(['setSiteId', '".esc_html($site_id)."']);
		        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
		        g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
		    })();");

		if($track_js_disabled){
			echo '<noscript><img src="'.esc_url($tracking_url.'/matomo.php?idsite='.$site_id.'&rec=1').'" style="border:0" alt="" /></noscript>';
		}
	}
	
	
	static function add_tracking_script(){
		global $siteseo;
		
		if(self::exclude_user_tracking()){
			return;
		}

		echo '<script>
		document.addEventListener("DOMContentLoaded", function() {';

		if(!empty($siteseo->analaytics_settings['google_analytics_link_tracking_enable'])){
			echo 'document.querySelectorAll("a").forEach(function(link){
				if(link.hostname !== location.hostname){
					link.addEventListener("click", function(){
						gtag("event", "click", { "event_category": "External Link", "event_label": link.href });
					});
				}
			});';
		}

		if(!empty($siteseo->analaytics_settings['google_analytics_download_tracking_enable']) && !empty($siteseo->analaytics_settings['google_analytics_download_tracking'])) {

			$fileExtensions = preg_replace('/\s+/', '', $siteseo->analaytics_settings['google_analytics_download_tracking']);
			$fileExtensionsPattern = str_replace('|', '|\\.', $fileExtensions); 

			echo 'document.querySelectorAll("a[href$=\'.' .esc_js(str_replace('|', '\'], a[href$=\'.', $fileExtensions)) . '\']").forEach(function(link) {
				link.addEventListener("click", function() {
					gtag("event", "download", { "event_category": "Download", "event_label": link.href });
				});
			});';
		}

		if(!empty($siteseo->analaytics_settings['google_analytics_affiliate_tracking_enable']) && ! empty($siteseo->analaytics_settings['google_analytics_affiliate_tracking'])){
			$keywords = wp_json_encode( explode( ',', $siteseo->analaytics_settings['google_analytics_affiliate_tracking']));
			echo 'const keywords = '.esc_attr($keywords).';
			document.querySelectorAll("a").forEach(function(link){
				keywords.forEach(function(keyword){
					if(link.href.includes(keyword.trim())){
						link.addEventListener("click", function(){
							gtag("event", "click", { "event_category": "Affiliate/Outbound Link", "event_label": link.href });
						});
					}
				});
			});';
		}

		if(!empty($siteseo->analaytics_settings['google_analytics_phone_tracking'])){
			echo 'document.querySelectorAll("a[href^=\'tel:\']").forEach(function(link){
				link.addEventListener("click", function() {
					gtag("event", "click", { "event_category": "Telephone Link", "event_label": link.href });
				});
			});';
		}

		echo '});
		</script>';
	}
	
	static function tracking(){
		global $siteseo;
		
		if(self::exclude_user_tracking()){
			return;
		}
		
		$settings = $siteseo->analaytics_settings;

		$ga_id = !empty($settings['google_analytics_optimize']) ? $settings['google_analytics_optimize'] : '';
		$conversion_id = !empty($settings['google_analytics_ads']) ? $settings['google_analytics_ads'] : '';
		$optimize_id = !empty($settings['google_analytics_ads']) ? $settings['google_analytics_ads'] : '';
		$remarketing = !empty($settings['google_analytics_remarketing']) ? $settings['google_analytics_remarketing'] : '';
		$anonymize_ip = !empty($settings['google_analytics_ip_anonymization']) ? $settings['google_analytics_ip_anonymization'] : '';
		$enhanced_link = !empty($settings['google_analytics_link_attribution']) ? $settings['google_analytics_link_attribution'] : '';
		$cross_domain = !empty($settings['google_analytics_cross_domain']) ? $settings['google_analytics_cross_domain'] : '';
		$cross_domain_name = !empty($settings['google_analytics_remarketing']) ? $settings['google_analytics_remarketing'] : '';

		//custom dimensions
		$get_custom_dimensions = self::custom_dimensions();
		
		wp_enqueue_script('siteseo-gtag', 'https://www.googletagmanager.com/gtag/js?id=' . esc_attr($ga_id), [], SITESEO_VERSION, [
			'strategy' => 'async',
		]);
		
		add_filter('script_loader_tag', '\SiteSEO\GoogleAnalytics::update_src_tag', 10, 3);
		
		$gtag_config = [
			'anonymize_ip' => $anonymize_ip ? true : false,
			'link_attribution' => $enhanced_link ? true : false,
		];

		if($cross_domain && $cross_domain_name){
			$gtag_config['linker'] = [
				'domains' => [$cross_domain_name]
			];
		}

		// config
		foreach($get_custom_dimensions as $dimension => $value){
			$gtag_config[$dimension] = $value;
		}

		$inline_script = 'window.dataLayer = window.dataLayer || [];
		function gtag(){dataLayer.push(arguments);}
		gtag("js", new Date());

		window.addEventListener("load", function (){
			var links = document.querySelectorAll("a");
			for(let i = 0; i < links.length; i++){
				links[i].addEventListener("click", function(e) {
					var n = this.href.includes("' . wp_parse_url(home_url(), PHP_URL_HOST) . '");
					if (n == false) {
						gtag("event", "click", {"event_category": "external links","event_label" : this.href});
					}
				});
			}
		});

		gtag("config", "'.esc_js($ga_id).'", '.wp_json_encode($gtag_config).');';

		if($optimize_id){
			$inline_script .= 'gtag("config", "'.esc_js($optimize_id).'");';
		}
		
		if($conversion_id){
			$inline_script .= 'gtag("config", "'.esc_js($conversion_id).'");';
		}
		
		if($remarketing){
			$inline_script .= 'gtag("set", "allow_google_signals", true);';
		}

		wp_add_inline_script('siteseo-gtag', $inline_script);
	}
	
	static function microsoft_clarity(){
		global $siteseo;

		if(self::exclude_user_tracking()){
			return;
		}

		$project_id = !empty($siteseo->analaytics_settings['google_analytics_clarity_project_id']) ? $siteseo->analaytics_settings['google_analytics_clarity_project_id'] : '';

		if(empty($project_id)){
			return;
		}
		
		wp_register_script('siteseo-microsoft-clarity', '', [], SITESEO_VERSION, true);
		
		wp_enqueue_script('siteseo-microsoft-clarity');

		$inline_script = "(function(c,l,a,r,i,t,y){ 
			c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
			t=l.createElement(r);t.async=1;t.src='https://www.clarity.ms/tag/'+i;
			y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
			})(window, document, 'clarity', 'script', '".esc_js($project_id)."');";

		wp_add_inline_script('siteseo-microsoft-clarity', $inline_script);
		
		add_filter('script_loader_tag', '\SiteSEO\GoogleAnalytics::update_src_tag', 10, 3);
		
	}

	static function ga_tracking_code(){
		global $siteseo;
		
		if(self::exclude_user_tracking()){
			return;
		}

		$ga_id = isset($siteseo->analaytics_settings['google_analytics_ga4']) ? esc_attr($siteseo->analaytics_settings['google_analytics_ga4']) : '';
		
		if(empty($ga_id)){
			return;
		}

		wp_enqueue_script('siteseo-ga-tracking', 'https://www.googletagmanager.com/gtag/js?id=' . $ga_id, [], SITESEO_VERSION, true);
		
		add_filter('script_loader_tag', '\SiteSEO\GoogleAnalytics::add_async_attribute', 10, 2);
		
		$inline_script = "
			window.dataLayer = window.dataLayer || [];
			function gtag(){dataLayer.push(arguments);}
			gtag('js', new Date());
			gtag('config', '{$ga_id}');
		";
		
		wp_add_inline_script('siteseo-ga-tracking', $inline_script);

	}
	
	static function add_async_attribute($tag, $handle){
		global $siteseo;
		if('siteseo-ga-tracking' === $handle){
       			
			if(!empty($siteseo->analaytics_settings['google_analytics_disable'])){
				if(isset($_COOKIE['siteseo-user-consent-accept']) && $_COOKIE['siteseo-user-consent-accept'] === 'true'){
					return str_replace(' src', ' async src', $tag);
				} else{
					return str_replace(' src', ' data-src-siteseo', $tag);
				}
			}
		}
		
		return $tag;
	}
	
	/** TODO:: temporary in this file*/	
	 static function handle_custom_redirect(){
		global $post;

		// post types and taxonomies
		$post_types = siteseo_post_types();
		$taxonomies = get_taxonomies(array('public' => true), 'objects');


		$is_singular = false;
		foreach($post_types as $post_type){
			if(is_singular($post_type->name)){
				$is_singular = true;
				break;
			}
		}

		$is_taxonomy = false;
		foreach($taxonomies as $taxonomy){
			if(is_tax($taxonomy->name)){
				$is_taxonomy = true;
				break;
			}
		}

		if($is_singular || is_404() || $is_taxonomy || is_category() || is_tag()){
			if(is_404()){
				$args = array(
					'post_type' => 'siteseo_404',
					'posts_per_page' => 1,
					'meta_query' => array(
						array(
							'key' => '_siteseo_redirections_enabled',
							'value' => 'yes',
							'compare' => '='
						)
					)
				);
				$redirect_posts = get_posts($args);

				if(empty($redirect_posts)){
					return;
				}
				$post = $redirect_posts[0];
			}

			// Taxonomy archives
			if($is_taxonomy || is_category() || is_tag()){
				$term = get_queried_object();
				$term_id = $term->term_id;

				// Check redirection is enabled
				$enable_redirect = get_term_meta($term_id, '_siteseo_redirections_enabled', true);

				if(empty($enable_redirect)){
					return;
				}

				$login_status = get_term_meta($term_id, '_siteseo_redirections_logged_status', true);
				$redirect_type = get_term_meta($term_id, '_siteseo_redirections_type', true);
				$redirect_url = get_term_meta($term_id, '_siteseo_redirections_value', true);
				$param_handling = get_term_meta($term_id, '_siteseo_redirections_param', true);
			}
			// Singular posts, pages, and products
			else{
				$enable_redirect = get_post_meta($post->ID, '_siteseo_redirections_enabled', true);

				if(empty($enable_redirect)){
					return;
				}

				$login_status = get_post_meta($post->ID, '_siteseo_redirections_logged_status', true);
				$redirect_type = get_post_meta($post->ID, '_siteseo_redirections_type', true);
				$redirect_url = get_post_meta($post->ID, '_siteseo_redirections_value', true);
				$param_handling = get_post_meta($post->ID, '_siteseo_redirections_param', true);
			}

			if($login_status === 'only_logged_in' && !is_user_logged_in()){
				return;
			}

			if($login_status === 'only_not_logged_in' && is_user_logged_in()){
				return;
			}

			if(!empty($redirect_url)){
				$final_url = $redirect_url;
				
				if(is_404() && !empty($_SERVER['QUERY_STRING'])){
					switch($param_handling){
						case 'exact_match':
							$current_params = sanitize_text_field(wp_unslash($_SERVER['QUERY_STRING']));
							$redirect_params = wp_parse_url($redirect_url, PHP_URL_QUERY);
							if($current_params !== $redirect_params){
								return;
							}
							break;
							
						case 'without_param':
							$final_url = strtok($redirect_url, '?');
							break;
							
						case 'with_ignored_param':
							$query_string = sanitize_text_field(wp_unslash($_SERVER['QUERY_STRING']));
							$final_url = $redirect_url;
							if(!empty($query_string)){
								$final_url .= (strpos($redirect_url, '?') !== false ? '&' : '?') . $query_string;
							}
							break;
					}
				}

				$status_code = !empty($redirect_type) ? intval($redirect_type) : 301;
				
				if(in_array($status_code, [410, 451]) && is_404()){
					status_header($status_code);
					nocache_headers();
					include(get_query_template('404'));
					exit;
				}

				wp_redirect($final_url, $status_code);
				exit;
			}
		}
	}
}
PK��f\@��q��main/install.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Install{
	
	static function activate(){
		self::default_settings();
		update_option('siteseo_version', SITESEO_VERSION);
	}

	static function deactivate(){
		flush_rewrite_rules();
	}

	static function uninstall(){
		flush_rewrite_rules();
		delete_option('siteseo_version');
		delete_option('siteseo_toggle');
		delete_option('siteseo_titles_option_name');
		delete_option('siteseo_social_option_name');
		delete_option('siteseo_advanced_option_name');
		delete_option('siteseo_instant_indexing_option_name');
		delete_option('siteseo_xml_sitemap_option_name');
		delete_option('siteseo_google_analytics_option_name');
		delete_option('siteseo_dismiss_intro');
	}
	
	static function action_links($links, $file){
		
		if($file === plugin_basename(SITESEO_FILE)){
				
			$links['siteseo-settings'] = '<a href="'.admin_url('admin.php?page=siteseo').'">'. __('Settings', 'siteseo').'</a>';
			$links['siteseo-wizard'] = '<a href="'.admin_url('?page=siteseo-onboarding').'">'. __('Configuration Wizard', 'siteseo').'</a>';
			$links['siteseo-docs-link'] = '<a href="https://siteseo.io/docs/" target="_blank"">'. __('Docs', 'siteseo').'</a>';
		
		}
		
		return $links;	
	}

	static function default_settings(){
		// We do not need to set defaults if we just upgrading the plugin
		$current_version = get_option('siteseo_version');
		if(!empty($current_version)){
			return;
		}
		
		$titles_metas = get_option('siteseo_titles_option_name', []);
		$social_settings = get_option('siteseo_social_option_name', []);
		$advanced_settings = get_option('siteseo_advanced_option_name', []);
		$sitemap_settings = get_option('siteseo_xml_sitemap_option_name', []);
		
		$toggle_settings = [
			'toggle-titles' => true,
			'toggle-xml-sitemap' => true,
			'toggle-instant-indexing' => true,
			'toggle-advanced' => true,
			'toggle-social' => true,
			'toggle-google-analytics' => true
		];

		// Titles and Metas
		$titles_metas['titles_sep'] = '-';
		$titles_metas['titles_home_site_title'] = !isset($titles_metas['titles_home_site_title']) ? '%%sitetitle%%' : $titles_metas['titles_home_site_title'];
		$titles_metas['titles_home_site_desc'] = !isset($titles_metas['titles_home_site_desc']) ? '%%tagline%%' : $titles_metas['titles_home_site_desc'];
		
		$post_types = siteseo_post_types();
		if(!empty($post_types) && is_array($post_types)){
			$post_types = array_keys($post_types);

			foreach($post_types as $post_type){
				$titles_metas['titles_single_titles'][$post_type]['title'] = !isset($titles_metas['titles_single_titles'][$post_type]['title']) ? '%%post_title%% %%sep%% %%sitetitle%%' : $titles_metas['titles_single_titles'][$post_type]['title'];
				$titles_metas['titles_single_titles'][$post_type]['description'] = !isset($titles_metas['titles_single_titles'][$post_type]['description']) ? '%%post_excerpt%% ' : $titles_metas['titles_single_titles'][$post_type]['description'];
			}
		}
		
		$taxonomies = get_taxonomies(array('public' => true), 'objects');
		if(!empty($taxonomies) && is_array($taxonomies)){
			$taxonomies = array_keys($taxonomies);
			
			foreach($taxonomies as $taxonomy){
				$titles_metas['titles_tax_titles'][$taxonomy]['title'] = !isset($titles_metas['titles_tax_titles'][$taxonomy]['title']) ? '%%_category_title%% %%sep%% %%sitetitle%%' : $titles_metas['titles_tax_titles'][$taxonomy]['title'];
				$titles_metas['titles_tax_titles'][$taxonomy]['description'] = !isset($titles_metas['titles_tax_titles'][$taxonomy]['description']) ? '%%_category_description%%' : $titles_metas['titles_tax_titles'][$taxonomy]['description'];	
			}
		}

		$titles_metas['titles_archives_author_title'] = !isset($titles_metas['titles_archives_author_title']) ? '%%post_author%% %%sep%% %%sitetitle%%' : $titles_metas['titles_archives_author_title'];
		$titles_metas['titles_archives_author_noindex'] = !isset($titles_metas['titles_archives_author_noindex']) ? true : '';
		$titles_metas['titles_archives_date_title'] = !isset($titles_metas['titles_archives_date_title']) ? '%%archive_date%% %%sep%% %%sitetitle%%' : '';
		$titles_metas['titles_archives_date_noindex'] = !isset($titles_metas['titles_archives_date_noindex']) ? true : '';
		$titles_metas['titles_archives_search_title_noindex'] = !isset($titles_metas['titles_archives_search_title_noindex']) ? true : '';
		$titles_metas['titles_nositelinkssearchbox'] = !isset($titles_metas['titles_nositelinkssearchbox']) ? true : '';
		$titles_metas['titles_archives_search_title'] = !isset($titles_metas['titles_archives_search_title']) ? '%%search_keywords%% %%sep%% %%sitetitle%%' : '';
		$titles_metas['titles_archives_404_title'] = !isset($titles_metas['titles_archives_404_title']) ? '404 - Page not found %%sep%% %%sitetitle%%' : $titles_metas['titles_archives_404_title'];

		// Social	
		$social_settings['social_twitter_card'] = true;
		$social_settings['social_facebook_og'] = true;

		// Sitemap
		$sitemap_settings['xml_sitemap_general_enable'] = true;
		$sitemap_settings['xml_sitemap_post_types_list']['post']['include'] = true;
		$sitemap_settings['xml_sitemap_post_types_list']['page']['include'] = true;
		$sitemap_settings['xml_sitemap_taxonomies_list']['category']['include'] = true;
		$sitemap_settings['xml_sitemap_img_enable'] = true; 

		// Advanced
		$advanced_settings['advanced_attachments'] = true;
		$advanced_settings['appearance_universal_metabox'] = true;

		update_option('siteseo_toggle', $toggle_settings);
		update_option('siteseo_titles_option_name', $titles_metas);
		update_option('siteseo_social_option_name', $social_settings);
		update_option('siteseo_xml_sitemap_option_name', $sitemap_settings);
		update_option('siteseo_advanced_option_name', $advanced_settings);

	}

}
PK��f\wNg6�c�cmain/generatesitemap.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class GenerateSitemap{
	
	private static $paged = 1;

	static function settings(){
		global $siteseo;

		if(empty($siteseo->setting_enabled['toggle-xml-sitemap'])){
			return;	
		}
		
		if(!empty($siteseo->sitemap_settings['xml_sitemap_html_enable'])){
			add_shortcode('siteseo_html_sitemap', '\SiteSEO\GenerateSitemap::html_sitemap');
		}

		if(!empty($siteseo->sitemap_settings['xml_sitemap_general_enable'])){
			self::xml_sitemap();
		}
	}

	static function xml_sitemap(){
		add_filter('query_vars', function($vars){
			$vars[] = 'sitemap_type';
			$vars[] = 'paged';
			$vars[] = 'sitemap-stylesheet';
			return $vars;
		});
	}

	static function add_rewrite_rules(){
		global $siteseo;
		
		add_rewrite_rule('^sitemaps\.xsl$', 'index.php?sitemap-stylesheet=sitemap', 'top');
		add_rewrite_rule('^sitemaps\.xml$', 'index.php?sitemap_type=general', 'top');
		add_rewrite_rule('^author.xml$', 'index.php?sitemap_type=author', 'top');
		add_rewrite_rule('^media-sitemap([0-9]+)?.xml$', 'index.php?sitemap_type=media&paged=$matches[1]', 'top');
		add_rewrite_rule('^news([0-9]+)?.xml$', 'index.php?sitemap_type=news&paged=$matches[1]', 'top');
		add_rewrite_rule('^video-sitemap([0-9]+)?.xml$', 'index.php?sitemap_type=video&paged=$matches[1]', 'top');
		
		if(isset($siteseo->sitemap_settings['xml_sitemap_post_types_list'])){
            foreach($siteseo->sitemap_settings['xml_sitemap_post_types_list'] as $post_type => $settings){
                if(!empty($settings['include'])){
                    add_rewrite_rule('^'.$post_type.'-sitemap([0-9]+)?\.xml$', 'index.php?sitemap_type='.$post_type.'&paged=$matches[1]', 'top');
                }
            }
        }

        if(isset($siteseo->sitemap_settings['xml_sitemap_taxonomies_list'])){
            foreach($siteseo->sitemap_settings['xml_sitemap_taxonomies_list'] as $taxonomy => $settings){
                if(!empty($settings['include'])){
                    add_rewrite_rule('^'.$taxonomy.'-sitemap([0-9]+)?\.xml$', 'index.php?sitemap_type='.$taxonomy.'&paged=$matches[1]', 'top');
                }
            }
        }

		flush_rewrite_rules();
    }


	static function handle_sitemap_requests(){
		global $siteseo;

		$pro_settings = isset($siteseo->pro) ? $siteseo->pro : '';
		self::maybe_redirect();

		// Output the Sitemap style
		if(get_query_var('sitemap-stylesheet') === 'sitemap'){
			self::sitemap_xsl();
			exit;
		}
		
		if(get_query_var('paged')){
			self::$paged = get_query_var('paged');
		}
		
		$type = get_query_var('sitemap_type');
		if(!empty($type)){
			
			if($type === 'news' && !empty($pro_settings['google_news']) && !empty($pro_settings['toggle_state_google_news'])){
				
				self::generate_google_news_sitemap();
				exit;
			}
			
			if($type === 'video' && !empty($pro_settings['toggle_state_video_sitemap']) && !empty($pro_settings['enable_video_sitemap'])){
				self::generate_video_sitemap();
				exit;
			}

			// Custom post type
			if(isset($siteseo->sitemap_settings['xml_sitemap_post_types_list'][$type]) && !empty($siteseo->sitemap_settings['xml_sitemap_post_types_list'][$type]['include'])){
				self::generateSitemap($type);
				exit;
			}

			//custom taxomies type
			if(isset($siteseo->sitemap_settings['xml_sitemap_taxonomies_list'][$type]) && !empty($siteseo->sitemap_settings['xml_sitemap_taxonomies_list'][$type]['include'])){
				self::generate_term_sitemap($type);
				exit;
			}
 
			switch($type){
				case 'general':
					self::generate_index_sitemap();
					break;
				case 'post':
					self::generateSitemap('post');
					break;
				case 'page':
					self::generateSitemap('page');
					break;
				case 'category':
					self::generate_term_sitemap('category');
					break;
				case 'post_tag':
					self::generate_term_sitemap('post_tag');
					break;
				case 'author':
					self::generate_author_sitemap();
					break;
				case 'news':
					self::generate_google_news_sitemap();
					break;
				case 'video':
					self::generate_video_sitemap();
					break;
				default:
					wp_die(esc_html__('Invalid sitemap type.', 'siteseo'));
 			}
 		}
	}
	
	static function generate_index_sitemap(){
		global $siteseo;
		
		$pro_settings = isset($siteseo->pro) ? $siteseo->pro : '';

		header('Content-Type: application/xml; charset=UTF-8');
		
		if(get_option('permalink_structure')){
			$xsl_url = home_url('/sitemaps.xsl');
		} else {
			$xsl_url = home_url('/?sitemaps-stylesheet=sitemap');
		}

		echo '<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="' . esc_url($xsl_url) . '" ?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

		// Post types
		if(isset($siteseo->sitemap_settings['xml_sitemap_post_types_list'])){
			foreach($siteseo->sitemap_settings['xml_sitemap_post_types_list'] as $post_type => $settings){
				$posts = get_posts(
					[
						'post_type' => $post_type,
						'fields'=> 'ids',
						'numberposts' => -1,
						'post_status' => 'publish',
						'has_password' => false,
						'no_found_rows' => true,
						'ignore_sticky_posts' => true,
						'update_post_term_cache' => false,
					]
				);

				if(empty($posts)){
					continue;
				}

				$total_pages = (int) ceil(count($posts) / 1000);

				if(!empty($settings['include']) && !empty($total_pages)){
					$last_post = get_posts([
						'post_type' => $post_type,
						'numberposts' => 1,
						'post_status' => 'publish',
						'orderby' => 'modified',
						'order' => 'DESC',
						'fields' => 'ids',
					]);
					
					$lastmod = !empty($last_post) ? get_post_modified_time('c', true, $last_post[0]) : current_time('c');
					
					for($page = 1; $page <= $total_pages; $page++){					
						echo '<sitemap>
							<loc>'.esc_url(home_url("/$post_type-sitemap$page.xml")).'</loc>
							<lastmod>'.esc_xml($lastmod).'</lastmod>
						</sitemap>';
					}
				}
			}
		}

		// Taxonomies
		if(isset($siteseo->sitemap_settings['xml_sitemap_taxonomies_list'])){
			foreach($siteseo->sitemap_settings['xml_sitemap_taxonomies_list'] as $taxonomy => $settings){
				
				$args = [
					'taxonomy' => $taxonomy,
					'hide_empty' => true,
					'fields' => 'count',
					'hierarchical' => false,
					'update_term_meta_cache' => false,
				];
				
				$tax_count = get_terms($args);

				if(is_wp_error($tax_count) || $tax_count == 0){
					continue;
				}

				$total_pages = (int) ceil($tax_count/2000);
				
				if(!empty($settings['include']) && $total_pages > 0){
					$terms = get_terms([
						'taxonomy' => $taxonomy,
						'number' => 1,
						'orderby' => 'term_order',
						'order' => 'DESC',
						'fields' => 'ids',
					]);
					
					$lastmod = !empty($terms) ? current_time('c') : current_time('c'); // taxonomy terms don't have modified, fallback
					
					for($page = 1; $page <= $total_pages; $page++){
						echo '<sitemap>	
							<loc>'.esc_url(home_url("/$taxonomy-sitemap$page.xml")).'</loc>
							<lastmod>'.esc_xml($lastmod).'</lastmod>
						</sitemap>';
					}
				}
			}
		}

		// Author
		if(!empty($siteseo->sitemap_settings['xml_sitemap_author_enable'])){
			echo '<sitemap>
				<loc>'.esc_url(home_url('/author.xml')).'</loc>
				<lastmod>'.esc_xml(current_time('c')).'</lastmod>
			</sitemap>';
		}
		
		// Google News
		if(!empty($pro_settings['google_news']) && !empty($pro_settings['toggle_state_google_news'])){
			echo '<sitemap>
				<loc>'.esc_url(home_url('/news.xml')).'</loc>
				<lastmod>'.esc_xml(current_time('c')).'</lastmod>
			</sitemap>';
		}
		
		// Video
		if(!empty($pro_settings['toggle_state_video_sitemap']) && !empty($pro_settings['enable_video_sitemap'])){
			$video_posts = get_posts([
				'post_type' => $pro_settings['video_sitemap_posts'],
				'fields' => 'ids',
				'numberposts' => 1,
				'orderby' => 'modified',
				'order' => 'DESC',
				'fields' => 'ids',
				'meta_query' => [
					[
						'key' => '_siteseo_video_disabled',
						'compare' => 'NOT EXISTS'
					]
				]
			]);
				
				
			$lastmod = !empty($video_posts) ? get_post_modified_time('c', true, $video_posts[0]) : current_time('c');
			
				for($page = 1; $page <= $total_pages; $page++){
					echo '<sitemap>
						<loc>'.esc_url(home_url("/video-sitemap$page.xml")).'</loc>
						<lastmod>'.esc_xml($lastmod).'</lastmod>
					</sitemap>';
				}

		}
		
		echo '</sitemapindex>';
		exit;
	}

	// post
	static function generate_post_sitemap(){
		self::generateSitemap('post');
	}

	// page
	static function generate_page_sitemap(){
		self::generateSitemap('page');
	}

	// category 
	static function generate_category_sitemap(){
		self::generate_term_sitemap('category');
	}

	//post tag
	static function generate_post_tag_sitemap(){
		self::generate_term_sitemap('post_tag');
	}

	// taxonomy
	static function generate_taxonomy_sitemap(){
		self::generate_term_sitemap('taxonomy');
	}

	// google news pro feature
	static function generate_google_news_sitemap(){
		
		if(class_exists('\SiteSEOPro\GoogleNews') && method_exists('\SiteSEOPro\GoogleNews', 'google_news_sitemap')){
			\SiteSEOPro\GoogleNews::google_news_sitemap();
		}
	}
	
	// video sitemap pro feature
	static function generate_video_sitemap(){
		if(class_exists('\SiteSEOPro\VideoSitemap') && method_exists('\SiteSEOPro\VideoSitemap', 'render_sitemap')){
			\SiteSEOPro\VideoSitemap::render_sitemap();
		}
	}

	static function generateSitemap($post_type){
		global $siteseo;
		
		header('Content-Type: application/xml; charset=utf-8');
		
		$offset = (1000*(self::$paged - 1));

		$posts = get_posts(
		[
			'post_type' => $post_type,
			'post_status' => 'publish',
			'numberposts' => 1000,
			'offset' => $offset,
			'order' => 'DESC',
			'orderby' => 'modified',
			'has_password' => false,
			'no_found_rows' => true,
			'lang' => 'all',
			'meta_query' => [
			[
				'key' => '_siteseo_robots_index',
				'compare' => 'NOT EXISTS'
			]]
		]);

		if(get_option('permalink_structure')){
			$xsl_url = home_url('/sitemaps.xsl');
		} else {
			$xsl_url = home_url('/?sitemaps-stylesheet=sitemap');
		}

		echo '<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="' . esc_url($xsl_url) . '" ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" '.((!empty($siteseo->sitemap_settings['xml_sitemap_img_enable'])) ? 'xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"' : '').'>';

		if(self::$paged == 1){
			if(get_option('show_on_front') === 'page' && get_option('page_on_front')){
				echo "\t".'<url>
				<loc>'.esc_url(trailingslashit(home_url())).'</loc>
				<lastmod>'.esc_html(get_the_modified_date('c', get_option('page_on_front'))).'</lastmod>
				</url>';
			} else{
				echo "\t".'<url>
				<loc>'.esc_url(trailingslashit(home_url())).'</loc>
				</url>';
			}
		}

		foreach($posts as $post){
				
			if($post->ID == get_option('page_on_front')){
				continue;
			}
			
			$image_xml = '';
			if(!empty($siteseo->sitemap_settings['xml_sitemap_img_enable'])){
				$images = self::get_page_images($post);
				if(!empty($images)){
					foreach($images as $image){
						$image_xml .= "<image:image>\n";
						$image_xml .= "\t\t\t<image:loc>".esc_url($image)."</image:loc>\n";
						$image_xml .= "\t\t</image:image>";
					}
				}
			}

			echo "\t<url>
				<loc>".esc_url(get_permalink($post->ID))."</loc>
				<lastmod>".esc_html(get_the_modified_date('c', $post->ID))."</lastmod>
				".$image_xml."
			</url>";
		}

		echo '</urlset>';
		exit;
	}

	static function generate_term_sitemap($taxonomy){
		header('Content-Type: application/xml; charset=utf-8');
		
		$offset = (2000*(self::$paged - 1));

		if(get_option('permalink_structure')){
			$xsl_url = home_url('/sitemaps.xsl');
		} else {
			$xsl_url = home_url('/?sitemaps-stylesheet=sitemap');
		}

		echo '<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="' . esc_url($xsl_url) . '" ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
		$terms = get_terms([
			'taxonomy' => $taxonomy,
			'hide_empty' => false,
			'number' => 2000,
			'offset' => $offset,
			'hierarchical' => false,
			'update_term_meta_cache' => false,
			'lang' => 'all',
			'meta_query' => [
			[
				'key' => '_siteseo_robots_index',
				'compare' => 'NOT EXISTS'
			]]
		]);

		foreach($terms as $term){
			
			// most recent post in this term to determine lastmod date
			$recent_posts = get_posts([
				'tax_query' => [
					[
						'taxonomy' => $taxonomy,
						'field' => 'term_id',
						'terms' => $term->term_id,
					]
				],
				'numberposts' => 1,
				'orderby' => 'modified',
				'order' => 'DESC',
				'post_status' => 'publish'
			]);

			$last_mod = '';
			if(!empty($recent_posts)){
				$last_mod = "\n\t\t".'<lastmod>'.esc_html(get_the_modified_date('c', $recent_posts[0]->ID)).'</lastmod>';
			}
			
			echo "\t". '<url>
			<loc>'.esc_url(get_term_link($term)).'</loc>'.$last_mod.'
			</url>';
		}

		echo '</urlset>';
		exit;
	}

	static function generate_author_sitemap(){
		header('Content-Type: application/xml; charset=utf-8');

		if(get_option('permalink_structure')){
			$xsl_url = home_url('/sitemaps.xsl');
		} else {
			$xsl_url = home_url('/?sitemaps-stylesheet=sitemap');
		}

		echo '<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="' . esc_url($xsl_url) . '" ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';

		// Fetch all authors
 		$authors = get_users(
			['capability' => ['publish_posts']]
		);

		foreach($authors as $author){
			// get the last modified date of the author's most recent post
			$last_post = get_posts([
				'author' => $author->ID,
				'numberposts' => 1,
				'orderby' => 'modified',
				'order' => 'DESC',
				'post_status' => 'publish'
			]);
			
			$lastmod_date = '';
			if(!empty($last_post)){
				$lastmod_date = get_the_modified_date('c', $last_post[0]->ID);
			} else{
				// user registration date if no posts
				$lastmod_date = gmdate('c', strtotime($author->user_registered));
			}

			echo "\t".'<url>
			<loc>'.esc_url(get_author_posts_url($author->ID)).'</loc>
			<lastmod>'.esc_html($lastmod_date).'</lastmod>
		</url>';
		}

		echo '</urlset>';
		exit;
	}

	static function html_sitemap($atts = []){
		global $siteseo;

		$atts = shortcode_atts(
			[
				'cpt' => '', // Default
			],
			$atts,
			'siteseo_html_sitemap'
		);

		$disable_date = !empty($siteseo->sitemap_settings['xml_sitemap_html_date']);
		$order_by = !empty($siteseo->sitemap_settings['xml_sitemap_html_orderby']) ? $siteseo->sitemap_settings['xml_sitemap_html_orderby']  : 'date';
		$order = !empty($siteseo->sitemap_settings['xml_sitemap_html_order']) ? $siteseo->sitemap_settings['xml_sitemap_html_order'] : 'DESC';		
		$exclude_string = isset($siteseo->sitemap_settings['xml_sitemap_html_exclude']) ? $siteseo->sitemap_settings['xml_sitemap_html_exclude'] : '';
		$exclude_pages = [];
		if(!empty($exclude_string)){
			$exclude_pages = array_map('trim', explode(',', $exclude_string));
		}

		$output = '';

		if($order !== 'ASC' && $order !== 'DESC'){
			$order = 'DESC';
		}

		$orderby_map = [
			'post_title' => 'title',
			'modified_date' => 'modified',
			'post_id' => 'ID',
			'menu_order' => 'menu_order',
			'date' => 'date', // Default
		];

		$orderby = !empty($orderby_map[$order_by]) ? $orderby_map[$order_by] : 'date';
		$cpt_list = !empty($atts['cpt']) ? explode(',', $atts['cpt']) : [];

		if(!empty($siteseo->sitemap_settings['xml_sitemap_post_types_list'])){ 
			foreach($siteseo->sitemap_settings['xml_sitemap_post_types_list'] as $post_type => $settings){
				if(!empty($settings['include']) && (empty($cpt_list) || in_array($post_type, $cpt_list))){

					$output .= '<h2>'.esc_html(ucfirst($post_type)).'</h2>';

					$args = [
						'post_type' => $post_type,
						'post_status' => 'publish',
						'numberposts' => -1,
						'orderby' => $orderby,
						'order' => $order,
					];

					$posts = get_posts($args);

					if(!empty($posts)){
						$output .= '<ul>';
						foreach($posts as $post){
							if(in_array($post->ID, $exclude_pages)){
								continue;
							}

							$post_title = get_the_title($post->ID) ?: $post->ID;

							$output .= '<li><a href="'.esc_url(get_permalink($post->ID)).'">'.esc_html($post_title).'</a>';

							if(!$disable_date){
								$output .= '<span class="post-date"> - '.esc_html(get_the_modified_date('j F Y', $post->ID)).'</span>';
							}

							$output .= '</li>';
						}
						$output .= '</ul>';
					}else{
						$output .= '';
					}
				}
			}
		}

		return $output;
	}
	
	static function sitemap_xsl(){
		global $siteseo;
		
		$pro_settings = isset($siteseo->pro) ? $siteseo->pro : '';
		$title = __('XML Sitemap', 'siteseo');
		$generated_by = __('Generated by SiteSEO', 'siteseo');
		$sitemap_index_txt = __('This XML Sitemap Index file contains', 'siteseo');
		$sitemap_count_txt = __('This XML Sitemap contains', 'siteseo');
		$image_count_txt = __('Images', 'siteseo');
		$last_modified_txt = __('Last Modified', 'siteseo');
		$index_sitemap_url = home_url('/sitemaps.xml');
		
		$image_sitemap_enabled = !empty($siteseo->sitemap_settings['xml_sitemap_img_enable']) ? true : false; 
		$video_sitemap_enabled = !empty($pro_settings['toggle_state_video_sitemap']) && !empty($pro_settings['enable_video_sitemap']) ? true : false;
		
		header('Content-Type: application/xml; charset=UTF-8');

		echo '<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
	xmlns:html="http://www.w3.org/TR/REC-html40"
	xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"';
	
	if(!empty($pro_settings['toggle_state_google_news']) && !empty($pro_settings['google_news'])){
		echo "\t" .'xmlns:news="https://www.google.com/schemas/sitemap-news/0.9/"';
	}
    
	if(!empty($pro_settings['toggle_state_video_sitemap']) && !empty($pro_settings['enable_video_sitemap'])){
			echo "\t" .'xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"';
    	}
    
	echo "\t" .'xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
	<xsl:template match="/">
		<html xmlns="http://www.w3.org/1999/xhtml">
			<head>
				<title>'.esc_xml($title).'</title>
				<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
				<style>
					* {
						box-sizing: border-box;
					}
					body{
						font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
						background-color: #f0f2f5;
						margin: 0;
						padding: 0;
						overflow-x: hidden;
					}
					header{
						background: linear-gradient(135deg, #022448, #034f84);
						padding: 20px;
						color: #ffffff;
						text-align: center;
						width: 100%;
						margin-bottom:15px;
					}
					header h1{
						font-size: 32px;
						margin: 0;
					}
					header p{
						margin: 5px 0 0;
						font-size: 16px;
						text-decoration: underline;
					}
					header .siteseo-index-link a{
						color: #ffffff;
						text-decoration: none;
					}
					header .siteseo-index-link a:hover{
						text-decoration: underline;
					}
					.siteseo-sitemap-container{
						width: 60%;
						margin: 0 auto;
						margin-bottom: 10px;
					}
					.siteseo-sitemap-container a{
						color:#007bff;
						text-decoration: none;
					}

					.siteseo-sitemap-table-wrap{
						background-color: #ffffff;
						box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
						border-radius: 8px;
						margin-top:10px;
						overflow:auto;
					}

					table{
						width: 100%;
						border-collapse: collapse;
					}
					table thead tr{
						background-color: #034f84;
						color: #ffffff;
					}
					table th, table td{
						padding: 10px;
						text-align: left;
					}
					table tbody tr:nth-child(even){
						background-color: #f9f9f9;
					}
					.siteseo-video-thumbnail{
					        max-width: 160px;
					        max-height: 120px;
					        border-radius: 4px;
					}
					.siteseo-video-info{
						margin-left: 15px;
					}
					.siteseo-video-container{
						display: flex;
						align-items: center;
						margin: 10px 0;
					}
					.siteseo-video-title{
						font-weight: bold;
						margin-bottom: 5px;
					}
					.siteseo-video-description{
						color: #555;
						font-size: 14px;
						margin-bottom: 5px;
					}
					.siteseo-video-meta{
						font-size: 13px;
						color: #777;
					}
					.siteseo-video-url{
						word-break: break-all;
						font-size: 13px;
						color: #007bff;
					}
				</style>
			</head>
			<body>
				<header>
					<h1>'.esc_xml($title).'</h1>
					<span>'.esc_xml($generated_by).'</span>
					<xsl:if test="count(sitemap:sitemapindex/sitemap:sitemap) &gt; 0">
						<div class="siteseo-description" style="text-align:center;">'.esc_xml($sitemap_index_txt).' <xsl:value-of select="count(sitemap:sitemapindex/sitemap:sitemap)"/> sitemaps</div>
					</xsl:if>
					
					<xsl:if test="count(sitemap:sitemapindex/sitemap:sitemap) &lt; 1">
						<div class="siteseo-description" style="text-align:center;">'.esc_xml($sitemap_count_txt).' <xsl:value-of select="count(sitemap:urlset/sitemap:url)"/> URLs</div>
					</xsl:if>
				</header>
				<div class="siteseo-sitemap-container">
					<xsl:if test="count(sitemap:sitemapindex/sitemap:sitemap) &lt; 1">
					<a href="'.esc_url($index_sitemap_url).'">Index Sitemap</a>
					</xsl:if>
					<div class="siteseo-sitemap-table-wrap">
						<table>
						<xsl:if test="count(sitemap:sitemapindex/sitemap:sitemap) &gt; 0">
						<thead>
							<tr>
								<th>URL</th>
								<th>Last Modified</th>
							</tr>
						</thead>
						<tbody>
							<xsl:for-each select="sitemap:sitemapindex/sitemap:sitemap">
								<tr>
									<td><a href="{sitemap:loc}"><xsl:value-of select="sitemap:loc"/></a></td>
									<td>
										<xsl:value-of select="sitemap:lastmod"/>
										<xsl:if test="not(sitemap:lastmod)">-</xsl:if>
									</td>
								</tr>
							</xsl:for-each>
						</tbody>
						</xsl:if>
						
						<xsl:if test="count(sitemap:sitemapindex/sitemap:sitemap) &lt; 1">';
						
						if($video_sitemap_enabled && class_exists('\SiteSEOPro\VideoSitemap') && method_exists('\SiteSEOPro\VideoSitemap', 'render_video_xsl')){
							 echo'<xsl:if test="sitemap:urlset/sitemap:url/video:video">'
									. \SiteSEOPro\VideoSitemap::render_video_xsl() .
								'</xsl:if>
								<xsl:if test="not(sitemap:urlset/sitemap:url/video:video)">
									<thead>
										<tr>
											<th>URL</th>';
											if(!empty($image_sitemap_enabled)){
												echo'<th>'.esc_xml($image_count_txt).'</th>';
											}
											
										echo'<th>'.esc_xml($last_modified_txt).'</th>
										</tr>
									</thead>
									<tbody>
										<xsl:for-each select="sitemap:urlset/sitemap:url">
											<tr>
												<td><a href="{sitemap:loc}"><xsl:value-of select="sitemap:loc"/></a></td>';
												
												if(!empty($image_sitemap_enabled)){
													echo'<td>
														<xsl:value-of select="count(image:image)"/>
													</td>';
												}
												
												echo'<td><xsl:value-of select="sitemap:lastmod"/></td>
											</tr>
										</xsl:for-each>
									</tbody>
								</xsl:if>';
						} else {
							echo'<xsl:if test="count(sitemap:sitemapindex/sitemap:sitemap) &lt; 1">
								<thead>
									<tr>
										<th>URL</th>';
										
										if(!empty($image_sitemap_enabled)){
											echo'<th>'.esc_xml($image_count_txt).'</th>';
										}
										
										echo'<th>'.esc_xml($last_modified_txt).'</th>
									</tr>
								</thead>
								<tbody>
									<xsl:for-each select="sitemap:urlset/sitemap:url">
										<tr>
											<td><a href="{sitemap:loc}"><xsl:value-of select="sitemap:loc"/></a></td>';
											
											if(!empty($image_sitemap_enabled)){
												echo'<td>
													<xsl:value-of select="count(image:image)"/>
												</td>';
											}
											
											echo'<td><xsl:value-of select="sitemap:lastmod"/></td>
										</tr>
									</xsl:for-each>
								</tbody>
							  </xsl:if>';
						}
						
						echo'</xsl:if>
						</table>
					</div>
				</div>
			</body>
		</html>

</xsl:template>
</xsl:stylesheet>';
	}
	
	static function get_page_images($post){

		$images = [];
		$thumb = get_the_post_thumbnail_url($post->ID);
		
		if(!empty($thumb)){
			$images[] = $thumb;
		}
		
		if(!class_exists('DOMDocument') || empty($post->post_content)){
			return $images;
		}

		libxml_use_internal_errors(true);
		
		$dom = new \DOMDocument();
		
		$dom->loadHTML('<?xml encoding="utf-8" ?>' . $post->post_content);
		$dom->preserveWhiteSpace = false;

		libxml_clear_errors();
		
		$img_tags = $dom->getElementsByTagName('img');
		
		if(empty($img_tags)){
			return;
		}
		
		foreach($img_tags as $img_tag){
			$url = $img_tag->getAttribute('src');

			if(empty($url)){
				continue;
			}

			$url = sanitize_url($url);
			
			// The Image has some different URL which means it does not belongs to our site.
			if(strpos($url, untrailingslashit(home_url())) === FALSE){
				continue;
			}
			
			$images[] = $url;
		}

		return $images;
	}

	static function maybe_redirect(){
		global $wp;

		if(empty($wp) || empty($wp->request)){
			return;
		}
		
		$redirects = ['sitemap.xml', 'wp-sitemap.xml', 'sitemap_index.xml'];

		if(in_array($wp->request, $redirects)){
			wp_safe_redirect(home_url('sitemaps.xml'), 301);
			die();
		}
	}
	
}
PK��f\��� ��main/columns.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Columns{

	static function add_columns($colums){
		global $siteseo;
		
		if(empty($siteseo->setting_enabled['toggle-advanced'])){
			return $colums;  // toggle disable
		}

		$options = $siteseo->advanced_settings;
		
		if(!empty($options['appearance_title_col'])){
			$colums['seo_title'] = __('Title tag', 'siteseo');
		}
		
		if(!empty($options['appearance_meta_desc_col'])){
			$colums['meta_description'] = __('Meta Desc' , 'siteseo');
		}
		
		if(!empty($options['appearance_redirect_enable_col'])){
			$colums['redirect_enabled'] = __('Redirect?', 'siteseo');
		}
		
		if(!empty($options['appearance_redirect_url_col'])){
			$colums['redirect_url'] = __('Redirect URL', 'siteseo');
		}
		
		if(!empty($options['appearance_canonical'])){
			$colums['canonical_url'] = __('Canonical', 'siteseo');
		}
		
		if(!empty($options['appearance_target_kw_col'])){
			$colums['target_keyword'] = __('Target Kw', 'siteseo');
		}
		
		if(!empty($options['appearance_noindex_col'])){
			$colums['noindex'] = __('noindex?', 'siteseo');
		}
		
		if(!empty($options['appearance_nofollow_col'])){
			$colums['nofollow'] = __('nofollow?', 'siteseo');
		}
		
		if(!empty($options['appearance_words_col'])){
			$colums['word_count'] = __('Words', 'siteseo');
		}
		
		if(!empty($options['appearance_score_col'])){
			$colums['seo_score'] = __('Score', 'siteseo');
		}
		
		return $colums;
	}
	
	static function populate_custom_seo_columns($column, $post_id){
		global $siteseo;
		
		if(empty($siteseo->setting_enabled['toggle-advanced'])){
			return;  // toggle disable
		}
		
		$options = $siteseo->advanced_settings;

		switch($column){
			
			case 'seo_title':				
				if(!empty($options['appearance_title_col'])){
					$title = get_post_meta($post_id, '_siteseo_titles_title', true);
					echo esc_html(\SiteSEO\TitlesMetas::replace_variables($title));
				}
				break;

			case 'meta_description':
				if(!empty($options['appearance_meta_desc_col'])){
					$desc = get_post_meta($post_id, '_siteseo_titles_desc', true);
					$replaced_desc = \SiteSEO\TitlesMetas::replace_variables($desc);
					echo esc_html($replaced_desc);
				}
				break;

			case 'redirect_enabled':
				if(!empty($options['appearance_meta_desc_col'])){
					$redirect_enabled = get_post_meta($post_id, 'siteseo_redirections_enabled', true);
					echo $redirect_enabled ? esc_html__('Yes', 'siteseo') : esc_html__('No', 'siteseo');
				}
				break;
				
			case 'redirect_url':
				if(!empty($options['appearance_redirect_enable_col'])){
					echo esc_url(get_post_meta($post_id, '_siteseo_redirections_value', true));
				}
				break;

			case 'canonical_url':
				if(!empty($options['appearance_redirect_url_col'])){
					echo esc_url(get_post_meta($post_id, '_siteseo_robots_canonical', true));
				}
				break;

			case 'target_keyword':
				if(!empty($options['appearance_canonical'])){
					$keywords = esc_html(get_post_meta($post_id, '_siteseo_analysis_target_kw', true));
					echo !empty($keywords) ? esc_html($keywords) : '';
				}
				break;
				
			case 'noindex':
				if(!empty($options['appearance_noindex_col'])){
					$noindex = get_post_meta($post_id, '_siteseo_robots_index', true);
					echo $noindex ? esc_html__('Yes', 'siteseo') : esc_html__('No', 'siteseo');
				}
				break;

			case 'nofollow':
				if(!empty($options['appearance_nofollow_col'])){
					$nofollow = get_post_meta($post_id, '_siteseo_robots_follow', true);
					echo $nofollow ? esc_html__('Yes', 'siteseo') : esc_html__('No', 'siteseo');
				}
				break;

			case 'word_count':
				if(!empty($options['appearance_words_col'])){
					$content = get_post_field('post_content', $post_id);
					echo esc_html(str_word_count(wp_strip_all_tags($content)));
				}
				break;

			case 'seo_score':
				if(!empty($options['appearance_score_col'])){
					$score = get_post_meta($post_id, '_siteseo_score', true);
					echo !empty($score) ? esc_html($score) : '';
				}
				break;
		}
		
	}

	static function make_seo_columns_sortable($columns){
		global $siteseo;
		
		if(empty($siteseo->setting_enabled['toggle-advanced'])){
			return $columns;  // toggle disable
		}
		
		$options = $siteseo->advanced_settings;
		
		if(!empty($options['appearance_title_col'])){
			$columns['seo_title'] = 'seo_title';
		}
		
		if(!empty($options['appearance_meta_desc_col'])){
			$columns['meta_description'] = 'meta_description';
		}
		
		if(!empty($options['appearance_target_kw_col'])){
			$columns['target_keyword'] = 'target_keyword';
		}
		
		if(!empty($options['appearance_words_col'])){
			$columns['word_count'] = 'word_count';
		}

		if(!empty($options['appearance_score_col'])){
			$columns['seo_score'] = 'seo_score';
		}

		return $columns;
		
	}
	
	static function hide_genesis_seo(){
		global $siteseo;
		
		if(empty($siteseo->setting_enabled['toggle-advanced'])){
			return; // toggle disable
		}
		
		$options = $siteseo->advanced_settings;

		if(!empty($options['appearance_genesis_seo_menu'])){
			remove_theme_support('genesis-seo-settings-menu');
		}
		
		if(!empty($options['appearance_genesis_seo_metaboxe'])){
			remove_action('admin_menu', 'genesis_add_inpost_seo_box');
		}
	}
}PK��f\rYoՁV�V
main/ajax.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Ajax{

	static function hooks(){
		add_action('wp_ajax_siteseo_save_titles_meta_toggle', '\SiteSEO\Ajax::save_toggle_state');
		add_action('wp_ajax_siteseo_save_sitemap_toggle', '\SiteSEO\Ajax::save_toggle_state');
		add_action('wp_ajax_siteseo_save_indexing_toggle', '\SiteSEO\Ajax::save_toggle_state');
		add_action('wp_ajax_siteseo_save_advanced_toggle', '\SiteSEO\Ajax::save_toggle_state');
		add_action('wp_ajax_siteseo_save_social_toggle', '\SiteSEO\Ajax::save_toggle_state');
		add_action('wp_ajax_siteseo_save_analytics_toggle', '\SiteSEO\Ajax::save_toggle_state');
		add_action('wp_ajax_siteseo_generate_bing_api_key', '\SiteSEO\Ajax::generate_bing_api_key');
		add_action('wp_ajax_siteseo_url_submitter_submit', '\SiteSEO\Ajax::instant_indexing');
		add_action('wp_ajax_siteseo_refresh_analysis', '\SiteSEO\Ajax::refresh_seo_analysis');
		add_action('wp_ajax_siteseo_export_settings', '\SiteSEO\Ajax::export_settings');
		add_action('wp_ajax_siteseo_import_settings', '\SiteSEO\Ajax::import_settings');
		add_action('wp_ajax_siteseo_reset_settings', '\SiteSEO\Ajax::reset_settings');
		add_action('wp_ajax_siteseo_migrate_seo', '\SiteSEO\Ajax::handle_import');
		add_action('wp_ajax_siteseo_dismiss_intro', '\SiteSEO\Ajax::dismiss_intro');
		add_action('wp_ajax_siteseo_save_universal_metabox', '\SiteSEO\Ajax::save_universal_metabox');
		add_action('wp_ajax_siteseo_resolve_variables', '\SiteSEO\Ajax::resolve_variables');
		add_action('wp_ajax_siteseo_clear_indexing_history', '\SiteSEO\Ajax::clear_indexing_history');
		add_action('wp_ajax_siteseo_close_update_notice', '\SiteSEO\Ajax::close_update_notice');
		
		// This is just to make sure, close of update notice works.
		if(isset($_GET['action']) && 'siteseo_close_update_notice' === sanitize_text_field(wp_unslash($_GET['action']))){
			add_filter('softaculous_plugin_update_notice', 'siteseo_plugin_update_notice_filter');
		}
		
		// Onboarding Actions
		add_action('wp_ajax_siteseo_save_onboarding_settings', '\SiteSEO\Ajax::save_onboarding_settings');
	}

	static function handle_import(){
		check_ajax_referer('siteseo_admin_nonce', 'nonce');
		
		if(!siteseo_user_can('manage_options')){
			wp_send_json_error(['message' => esc_html__('Insufficient permissions', 'siteseo')]);
		}
		
		$plugin = !empty($_POST['plugin']) ? sanitize_text_field(wp_unslash($_POST['plugin'])) : '';
		
		switch($plugin){
			case 'wordpress-seo':
				$result = \SiteSEO\Import::yoast_seo();
				break;
			case 'all-in-one-seo-pack':
				$result = \SiteSEO\Import::aio_seo();
				break;
			case 'autodescription':
				$result = \SiteSEO\Import::seo_framework();
				break;
			case 'wp-seopress':
				$result = \SiteSEO\Import::seo_press();
				break;
			case 'seo-by-rank-math':
				$result = \SiteSEO\Import::rank_math();
				break;
			case 'slim-seo':
				$result = \SiteSEO\Import::slim_seo();
				break;
			case 'surerank':
				$result = \SiteSEO\Import::surerank();
				break;
			default:
				throw new \Exception('Invalid plugin selected');
		}
		
		if(empty($result)){
			wp_send_json_error(['message' => __('Invalid plugin selected', 'siteseo')]);
		}
		

		update_option('siteseo_last_migration_log', $result['log'], false);
		wp_send_json_success(['message' => $result['message']]);
	}

	static function reset_settings(){

		check_ajax_referer('siteseo_admin_nonce', 'nonce');
		
		if(!current_user_can('manage_options')){
			wp_send_json_error(['message' => esc_html__('Insufficient permissions', 'siteseo')]);
		}
		
		$options = [
			'siteseo_toggle',
			'siteseo_titles_option_name',
			'siteseo_social_option_name',
			'siteseo_advanced_option_name',
			'siteseo_instant_indexing_option_name',
			'siteseo_xml_sitemap_option_name',
			'siteseo_google_analytics_option_name',
			'siteseo_dismiss_intro',
			'siteseo_pro_options'
		];

		foreach($options as $option){
			delete_option($option);
		}

		wp_send_json_success(['message' => esc_html__('Settings reset successfully.', 'siteseo')]);

	}

	static function import_settings(){
		check_ajax_referer('siteseo_admin_nonce', 'nonce');
		
		if(!current_user_can('manage_options')){
			wp_send_json_error(['message' => esc_html__('Insufficient permissions', 'siteseo')]);
		}
		
		if(!isset($_FILES['import_file'])){
			wp_send_json_error(array('message' => 'No file was uploaded.'));
		}
		
		// If name or tmp path is not available return
		if(empty($_FILES['import_file']['name']) || empty($_FILES['import_file']['tmp_name'])){
			wp_send_json_error(array('message' => 'No file was uploaded.'));
		}

		$imported_file = $_FILES['import_file']['tmp_name'];
		$filename = sanitize_file_name($_FILES['import_file']['name']);
		$file_extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));

		// Verify file exists and is readable
		if(!file_exists($imported_file) || !is_readable($imported_file) || !is_uploaded_file($imported_file)){
			wp_send_json_error(array('message' => __('Uploaded file is not readable.', 'siteseo')));
		}
		
		$mime_type = sanitize_text_field(wp_unslash($_FILES['import_file']['type']));
		
		if($mime_type !== 'application/json'){
			wp_send_json_error(array('message' => __('Invalid mime type. The uploaded file has invalid mime type', 'siteseo')));
		}

		// Making sure is the correct file format
		if($file_extension !== 'json') {
			wp_send_json_error(array('message' => __('Invalid file type. Please upload a JSON file.', 'siteseo')));
		}
		
		$file_contents = file_get_contents($imported_file);

		$settings = json_decode($file_contents, true);

		if(json_last_error() !== JSON_ERROR_NONE){
			wp_send_json_error(array('message' => __('Invalid JSON file.', 'siteseo')));
		}
		
		if(empty($settings) || !is_array($settings)){
			wp_send_json_error(array('message' => __('Invalid settings format.', 'siteseo')));
		}

		$settings = map_deep(wp_unslash($settings), 'sanitize_textarea_field');

		if(isset($settings['siteseo_titles_option_name'])){
			update_option('siteseo_titles_option_name', $settings['siteseo_titles_option_name']);
		}
		
		if(isset($settings['siteseo_social_option_name'])){
			update_option('siteseo_social_option_name', $settings['siteseo_social_option_name']);
		}
		
		if(isset($settings['siteseo_xml_sitemap_option_name'])){
			update_option('siteseo_xml_sitemap_option_name', $settings['siteseo_xml_sitemap_option_name']);
		}
		
		if(isset($settings['siteseo_toggle'])){
			update_option('siteseo_toggle', $settings['siteseo_toggle']);
		}
		
		if(isset($settings['siteseo_advanced_option_name'])){
			update_option('siteseo_advanced_option_name', $settings['siteseo_advanced_option_name']);
		}
		
		if(isset($settings['siteseo_instant_indexing_option_name'])){
			update_option('siteseo_instant_indexing_option_name', $settings['siteseo_instant_indexing_option_name']);
		}
		
		if(isset($settings['siteseo_google_analytics_option_name'])){
			update_option('siteseo_google_analytics_option_name', $settings['siteseo_google_analytics_option_name']);
		}
		
		// Pro
		if(isset($settings['siteseo_pro_options'])){
			update_option('siteseo_pro_options', $settings['siteseo_pro_options']);
		}
		

		wp_send_json_success(['message' => esc_html__('Settings imported successfully.', 'siteseo')]);	
	}
	
	static function export_settings(){
		check_ajax_referer('siteseo_admin_nonce', 'nonce');
		
		if(!current_user_can('manage_options')){
			wp_send_json_error(['message' => esc_html__('Insufficient permissions', 'siteseo')]);
		}

		$export_data = array(
			'siteseo_titles_option_name' => get_option('siteseo_titles_option_name'),
			'siteseo_social_option_name' => get_option('siteseo_social_option_name'),
			'siteseo_xml_sitemap_option_name' => get_option('siteseo_xml_sitemap_option_name'),
			'siteseo_toggle' => get_option('siteseo_toggle'),
			'siteseo_google_analytics_option_name' => get_option('siteseo_google_analytics_option_name'),
			'siteseo_instant_indexing_option_name' => get_option('siteseo_instant_indexing_option_name'),
			'siteseo_advanced_option_name' => get_option('siteseo_advanced_option_name'),
			'siteseo_pro_options' =>get_option('siteseo_pro_options'),
		);

		$file_name = 'siteseo-settings-export-' . current_time('m-d-Y') . '.json';

		header('Content-Type: application/json');
		header('Content-Disposition: attachment; filename="'.$file_name.'"');
		header('Cache-Control: no-cache, no-store, must-revalidate');
		header('Pragma: no-cache');
		header('Expires: 0');
		
		echo wp_json_encode($export_data);		
		exit;
	}

	static function refresh_seo_analysis(){

		check_ajax_referer('siteseo_admin_nonce', 'nonce');

		if(!current_user_can('siteseo_manage')){
			wp_send_json_error(['message' => esc_html__('Insufficient permissions', 'siteseo')]);
		}

		$post_id = isset($_POST['post_id']) ? intval($_POST['post_id']) : 0;
		$post_type = isset($_POST['post_type']) ? sanitize_text_field(wp_unslash($_POST['post_type'])) : '';
		$target_keywords = isset($_POST['target_keywords']) ? sanitize_text_field(wp_unslash($_POST['target_keywords'])) : '';
		
		$post = get_post($post_id);
		if(!$post || !current_user_can('edit_post', $post_id)){
			wp_send_json_error(['message' => __('Invalid post or insufficient permissions', 'siteseo')]);
		}
		
		update_post_meta($post_id, '_siteseo_analysis_target_kw', $target_keywords);
	
		$analysis_data = \SiteSEO\Metaboxes\Analysis::perform_seo_analysis($post);

		update_post_meta($post_id, '_siteseo_analysis_data', $analysis_data);

		ob_start();
		\SiteSEO\Metaboxes\Analysis::display_seo_analysis($post);
		$analysis_html = ob_get_clean();

		wp_send_json_success([
			'html' => $analysis_html,
			'analysis_data' => $analysis_data
		]);
	}
	
	static function instant_indexing(){
		
		check_ajax_referer('siteseo_admin_nonce', 'nonce');
		
		if(!siteseo_user_can('manage_instant_indexing')){
			wp_send_json_error(['message' => esc_html__('Insufficient permissions', 'siteseo')]);
		}
		
		// Validate input
		if(!isset($_POST['search_engine'], $_POST['urls'])){
			wp_send_json_error(['message' => esc_html__('Missing required parameters', 'siteseo')]);
		}
	
		$urls = sanitize_textarea_field(wp_unslash($_POST['urls']));
	
		$options = get_option('siteseo_instant_indexing_option_name');
		$google_api_key = isset($options['instant_indexing_google_api_key']) ? $options['instant_indexing_google_api_key'] : '';
		$bing_api_key = isset($options['instant_indexing_bing_api_key']) ? $options['instant_indexing_bing_api_key'] : '';
		$url_list = array_filter(array_map('trim', explode("\n", $urls))); 
	
		if(empty($url_list)){
			wp_send_json_error(['message' => 'No valid URLs provided']);
		}

		$response = [];

		try{

			if(!empty($options['engines']['google']) && !empty($google_api_key)){
				$response['google'] = \SiteSEO\InstantIndexing::submit_urls_to_google($url_list);	
			} 

			if(!empty($options['engines']['bing']) && !empty($bing_api_key)){
				$response['bing'] = \SiteSEO\InstantIndexing::submit_urls_to_bing($url_list, $bing_api_key);
			}

			if(empty($response)){
				wp_send_json_error(['message' => 'No search engines configured or missing API keys']);
			}
			
			$res_google = !empty($response['google']) ? $response['google'] : null;
			$res_bing = !empty($response['bing']) ? $response['bing'] : null;
			
			\SiteSEO\InstantIndexing::save_index_history($url_list, $res_google, $res_bing, null);
			
			wp_send_json_success([
				'message' => 'URLs submitted successfully', 
				'details' => $response
			]);

		} catch(\Exception $e){
			wp_send_json_error(['message' => $e->getMessage()]);
		}
    }
	
	static function generate_bing_api_key(){
		
		if(!check_ajax_referer('siteseo_admin_nonce', 'nonce', false)){
			wp_send_json_error('Invalid nonce');
			return;
		}
		
		if(!siteseo_user_can('manage_instant_indexing')){
			wp_send_json_error(['message' => esc_html__('Insufficient permissions', 'siteseo')]);
		}

		$lowercase = range('a', 'z');
		$uppercase = range('A', 'Z');
		$numbers = range('0', '9');
		$dash = ['-'];

		$characters = array_merge($lowercase, $uppercase, $numbers, $dash);
		$characters_length = count($characters);

		$length = 32;
		$api_key = '';

		for($i = 0; $i < $length; $i++){
			$api_key .= $characters[random_int(0, $characters_length - 1)];
		}

		wp_send_json_success(['api_key' => $api_key]);
	}
	
	static function save_toggle_state(){

		check_ajax_referer('siteseo_toggle_nonce', 'nonce');

		if(!current_user_can('manage_options')){
			wp_send_json_error(['message' => esc_html__('Insufficient permissions', 'siteseo')]);
		}
		
		$action = isset($_POST['action']) ? sanitize_text_field(wp_unslash($_POST['action'])) : '';
		switch($action){
			case 'siteseo_save_titles_meta_toggle':
				$toggle_key = 'toggle-titles';
				break;
			case 'siteseo_save_sitemap_toggle':
				$toggle_key = 'toggle-xml-sitemap';
				break;
			case 'siteseo_save_indexing_toggle':
				$toggle_key = 'toggle-instant-indexing';
				break;
			case 'siteseo_save_advanced_toggle':
				$toggle_key = 'toggle-advanced';
				break;
			case 'siteseo_save_social_toggle':
				$toggle_key = 'toggle-social';
				break;
			case 'siteseo_save_analytics_toggle':
				$toggle_key = 'toggle-google-analytics';
				break;
			default:
				wp_send_json_error(['message' => __('Invalid action', 'siteseo')]);
				return;
		}

		$toggle_value = isset($_POST['toggle_value']) ? sanitize_text_field(wp_unslash($_POST['toggle_value'])) : '0';

		$options = get_option('siteseo_toggle', []);
		$options[$toggle_key] = $toggle_value;
		$updated = update_option('siteseo_toggle', $options);

		if($updated){
			wp_send_json_success([
				'message' => ucfirst($toggle_key) . ' toggle state saved successfully',
				'value' => $toggle_value
			]);
		}

		wp_send_json_error(['message' => __('Failed to save toggle state', 'siteseo')]);
	}	
	
	static function save_onboarding_settings(){
		check_ajax_referer('siteseo_admin_nonce', 'nonce');
		
		if(!current_user_can('manage_options')){
			wp_send_json_error(__('You do not have required permission to edit this file.', 'siteseo'));
		}
		
		if(empty($_POST['step'])){
			wp_send_json_error(['message' => __('Could not figure out the current step', 'siteseo')]);
		}
		
		$step_name = !empty($_POST['step']) ? sanitize_text_field(wp_unslash($_POST['step'])) : '';
		
		switch($step_name){
			case 'your-site':
				$title_options = get_option('siteseo_titles_option_name', []);
				$social_options = get_option('siteseo_social_option_name', []);

				if(!empty($_POST['data']['website_name'])){
					$title_options['titles_home_site_title'] = sanitize_text_field(wp_unslash($_POST['data']['website_name']));
				}

				if(!empty($_POST['data']['alternate_site_name'])){
					$title_options['titles_home_site_title_alt'] = sanitize_text_field(wp_unslash($_POST['data']['alternate_site_name']));
				}

				if(!empty($_POST['data']['site_type'])){
					$social_options['social_knowledge_type'] = sanitize_text_field(wp_unslash($_POST['data']['site_type']));
				}

				if(!empty($_POST['data']['organization_name'])){
					$social_options['social_knowledge_name'] = sanitize_text_field(wp_unslash($_POST['data']['organization_name']));
				}

				if(!empty($_POST['data']['organization_logo'])){
					$social_options['social_knowledge_img'] = sanitize_url(wp_unslash($_POST['data']['organization_logo']));
				}

				if(!empty($_POST['data']['social_fb'])){
					$social_options['social_accounts_facebook'] = sanitize_url(wp_unslash($_POST['data']['social_fb']));
				}

				if(!empty($_POST['data']['social_x'])){
					$social_options['social_accounts_twitter'] = sanitize_text_field(wp_unslash($_POST['data']['social_x']));
				}

				if(!empty($_POST['data']['social_additional'])){
					$social_options['social_accounts_additional'] = explode("\n", sanitize_textarea_field(wp_unslash($_POST['data']['social_additional'])));
				}

				update_option('siteseo_titles_option_name', $title_options);
				update_option('siteseo_social_option_name', $social_options);

				wp_send_json_success();
				break;

			case 'indexing':

				if(empty($_POST['data'])){
					break;
				}

				$data = map_deep(wp_unslash($_POST['data']), 'sanitize_text_field');
				$site_status = !empty($data['site_status']) ? $data['site_status'] : '';

				if(empty($site_status)){
					wp_send_json_error(['message' => __('Request data did not reach the backend', 'siteseo')]);
				}

				$title_options = get_option('siteseo_titles_option_name', []);
				
				if($site_status == 'underconstruction'){
					$title_options['titles_noindex'] = true;
					update_option('siteseo_titles_option_name', $title_options);
					wp_send_json_success();
				}
				
				// Saving Post type indexing values
				if(!empty($data['post_types'])){
					if(!is_array($data['post_types'])){
						$data['post_types'] = [$data['post_types']];
					}

					$post_types = get_post_types(['public' =>  true, 'show_ui' => true], 'objects', 'and');
					unset($post_types['attachment']);
					
					foreach($post_types as $post){
						if(in_array($post->name, $data['post_types'])){
							$title_options['titles_single_titles'][$post->name]['noindex'] = $post->name;
						}
					}
				}
				
				// Saving Taxonomies indexing values
				if(!empty($data['taxonomies'])){
					if(!is_array($data['taxonomies'])){
						$data['taxonomies'] = [$data['taxonomies']];
					}

					$taxonomies = get_taxonomies(['public' =>  true, 'show_ui' => true], 'objects', 'and');

					foreach($taxonomies as $taxonomy){
						if(in_array($taxonomy->name, $data['taxonomies'])){
							$title_options['titles_tax_titles'][$taxonomy->name]['noindex'] = $taxonomy->name;
						}
					}
				}

				update_option('siteseo_titles_option_name', $title_options);
				wp_send_json_success();
				
				break;
				
			case 'advanced':
				$data = map_deep(wp_unslash($_POST['data']), 'sanitize_text_field');
				$advanced_options = get_option('siteseo_advanced_option_name');

				$title_options = get_option('siteseo_titles_option_name', []);				
				$title_options['titles_archives_author_noindex'] = isset($data['author_noindex']) ? $data['author_noindex'] : '';

				$advanced_options['advanced_attachments_file'] = isset($data['redirect_attachment']) ? $data['redirect_attachment'] : '';
				$advanced_options['advanced_category_url'] = isset($data['category_url']) ? $data['category_url'] : '';
				$advanced_options['appearance_universal_metabox_disable'] = isset($data['universal_seo_metabox']) ? '' : '1';
				$advanced_options['appearance_universal_metabox'] = isset($data['universal_seo_metabox']) ? '1' : '';
				
				update_option('siteseo_titles_option_name', $title_options);
				update_option('siteseo_advanced_option_name', $advanced_options);
				wp_send_json_success();
				break;
		}
	}
	
	static function dismiss_intro(){
		check_ajax_referer('siteseo_admin_nonce', 'nonce');
		
		if(!current_user_can('siteseo_manage')){
			wp_send_json_error(__('You do not have required permission to edit this file.', 'siteseo'));
		}
		
		update_option('siteseo_dismiss_intro', time());
	}
	
	static function save_universal_metabox(){
		check_ajax_referer('siteseo_universal_nonce', 'security');
		
		if(!current_user_can('siteseo_manage') || !siteseo_user_can_metabox()){
			wp_send_json_error(__('You do not have required permission to edit this file.', 'siteseo'));
		}
		
		if(empty($_POST['post_id'])){
			wp_send_json_error(__('Post ID not found', 'siteseo'));
		}
		
		$post_id = sanitize_text_field(wp_unslash($_POST['post_id']));

		if(!current_user_can('edit_post', $post_id)){
			wp_send_json_error(__('You do not have required permission to edit this file.', 'siteseo'));
		}

		$post = get_post($post_id);
		
		\SiteSEO\Metaboxes\Settings::save_metabox($post_id, $post);
	}
	
	static function resolve_variables(){
		check_ajax_referer('siteseo_admin_nonce', 'nonce');
		
		if(!current_user_can('siteseo_manage')){
			wp_send_json_error(__('You do not have required permission to edit this file.', 'siteseo'));
		}

		if(empty($_POST['content']) || empty($_POST['post_id'])){
			wp_send_json_error(__('The required content or ID is empty', 'siteseo'));
		}
		
		global $post, $wp_query;
		
		$post_id = (int) sanitize_text_field(wp_unslash($_POST['post_id']));
		$content = sanitize_text_field(wp_unslash($_POST['content']));
		
		if(!current_user_can('edit_post', $post_id)){
			wp_send_json_error(__('You do not have permission to access this post', 'siteseo'));
		}

		$tmp_post = $post;
		$post = get_post($post_id);
		$replaced_content = \SiteSEO\TitlesMetas::replace_variables($content, true);
		$post = $tmp_post;

		wp_send_json_success($replaced_content);
	}
	
	static function clear_indexing_history(){
		check_ajax_referer('siteseo_admin_nonce', 'nonce');
		
		if(!current_user_can('manage_options')){
			wp_send_json_error(__('You do not have required permission to clear indexing history.', 'siteseo'));
		}
		
		global $siteseo;
		
		$indexing_history = $siteseo->instant_settings;
    
		if(is_array($indexing_history) && isset($indexing_history['indexing_history'])){
			unset($indexing_history['indexing_history']);
			update_option('siteseo_instant_indexing_option_name', $indexing_history);
		}
    
		wp_send_json_success();
	}
	
	static function close_update_notice(){
		check_ajax_referer('siteseo_promo_nonce', 'security');

		if(!current_user_can('manage_options')){
			wp_send_json_error('You don\'t have privilege to close this notice!');
		}

		$plugin_update_notice = get_option('softaculous_plugin_update_notice', []);
		$available_update_list = get_site_transient('update_plugins');
		$to_update_plugins = apply_filters('softaculous_plugin_update_notice', []);

		if(empty($available_update_list) || empty($available_update_list->response)){
			return;
		}

		foreach($to_update_plugins as $plugin_path => $plugin_name){
			if(isset($available_update_list->response[$plugin_path])){
				$plugin_update_notice[$plugin_path] = $available_update_list->response[$plugin_path]->new_version;
			}
		}

		update_option('softaculous_plugin_update_notice', $plugin_update_notice);
	}
}
PK��f\������main/metaboxes/analysis.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO\Metaboxes;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Analysis{
	
	static function display_content_readibility($metabox_data){
		
		if(empty($metabox_data) || !isset($metabox_data['post_id'])){
			return; // Safeguard in case $metabox_data is incomplete or invalid.
		}

		$post_id = $metabox_data['post_id'];
		$readability_data = get_post_meta($post_id, '_siteseo_readibility_data', true);

		// Fetch and analyze readability data
		$analyzes = self::analyze_content($readability_data);

		// Render the readability data
		self::render_readibility($analyzes, $readability_data);
	}
	
	static function analyze_content($data){
		$analyzes = [];

		// Analyze different aspects
		$analyzes = self::analyze_power_word($analyzes, $data);
		$analyzes = self::analyze_title_number($analyzes, $data);
		$analyzes = self::analyze_passive_voice($analyzes, $data);
		$analyzes = self::analyze_paragraph_length($analyzes, $data);

		return $analyzes;
	}

	static function analyze_power_word($analyzes, $data){
		
		if(!empty($data['power_words'])){
			$analyzes['power_words'] = [
				'desc' => '<p>'.__('Good: You have power words in your title.', 'siteseo').'</p>',
				'impact' => 'good',
				'title'=>'Power Word in title'
			];
		} else{
			$analyzes['power_words'] = [
				'desc' => '<p>'.__('Consider adding power words to your title for better impact.', 'siteseo').'</p>',
				'impact' => 'low',
				'title'=> __('Power Word in title', 'siteseo')
			];
		}
		return $analyzes;
	}

	static function analyze_title_number($analyzes, $data){
		
		if(!empty($data['number_found'])){
			$analyzes['number_found'] = [
				/* translators: %s is the number found in the title */
				'desc' => '<p>'.sprintf(__('Good: Your title contains the number "%s".', 'siteseo'), $data['number_found']).'</p>',
				'impact' => 'good',
				'title' => 'Number in title'
			];
		} else{
			$analyzes['number_found'] = [
				'desc' => '<p>'.__('Consider adding a number to your title to improve CTR.', 'siteseo').'</p>',
				'impact' => 'low',
				'title' => 'Number in title'
			];
		}
		
		return $analyzes;
	}

	static function analyze_passive_voice($analyzes, $data){

		//$analyzes['title'] ='Passive Voice';
		if(empty($data['passive_voice'])){
			$analyzes['passive_voice'] = [
				'desc' => '<p>'.__('Great: No passive voice detected.', 'siteseo').'</p>',
				'impact' => 'good',
				'title' => 'Passive Voice'
			];
		} else {
		    $percentage = round(($data['passive_voice']['passive_sentences'] * 100) / $data['passive_voice']['total_sentences']);
		    if($percentage <= 10){
			$analyzes['passive_voice'] = [
				/* translators: %s is the number found in the title */
				'desc' => '<p>'.sprintf(__('Good: Only %s%% of sentences use passive voice.', 'siteseo'), $percentage).'</p>',
				'impact' => 'good',
				'title' => 'Passive Voice'
			];
		    } elseif($percentage < 20){
			$analyzes['passive_voice'] = [
				/* translators: %s is the percentage of sentences using passive voice */
				'desc' => '<p>'.sprintf(__('Okay: %s%% of sentences use passive voice. Try to reduce it.', 'siteseo'), $percentage).'</p>',
				'impact' => 'medium',
				'title' => 'Passive Voice'
			];
		    } else{
		        $analyzes['passive_voice'] = [
				/* translators: %s is the percentage of sentences using passive voice */
				'desc' => '<p>'.sprintf(__('High: %s%% of sentences use passive voice. Consider revising.', 'siteseo'), $percentage).'</p>',
				'impact' => 'high',
				'title' => 'Passive Voice'
		        ];
		    }
		}
		return $analyzes;
	}

	static function analyze_paragraph_length($analyzes, $data){

		if(empty($data['paragraph_length']) || $data['paragraph_length'] < 150){
		    $analyzes['paragraph_length'] = [
		        'desc' => '<p>Good: Your paragraphs are concise.</p>',
		        'impact' => 'good',
					'title' => 'Paragraph Length'
		    ];
		} else{
		    $analyzes['paragraph_length'] = [
			/* translators: %s is the current paragraph length in words */
		        'desc' => '<p>'.sprintf(__('Consider reducing paragraph length. Current length: %s words.', 'siteseo'), $data['paragraph_length']) . '</p>',
		        'impact' => 'low',
					'title' => 'Paragraph Length'
		    ];
		}
		return $analyzes;
	}

	static function render_readibility($analyzes, $analysis_data, $echo = true){
		$acceptable_svg = [
			'svg' => [
				'role' => true,
				'aria-hidden' => true,
				'focusable' => true,
				'width' => true,
				'height' => true,
				'viewbox' => true,
				'version' => true,
				'xmlns' => true,
				'fill' => true,
			],
			'path' => ['fill' => true, 'd' => true]
		];

		if(!empty($analyzes)){
			$order = ['1' => 'high', '2' => 'medium', '3' => 'low', '4' => 'good'];
			usort($analyzes, function ($a, $b) use ($order) {
				return array_search($a['impact'], $order) - array_search($b['impact'], $order);
			});

			// Define SVG icons
			$high_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"/></svg>';
			$medium_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"/></svg>';
			$good_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"/></svg>';

			// Generate HTML
			$html = '<div id="siteseo-readibility-tabs">';
			foreach($analyzes as $key => $value){
				$impact_icon = '';
				switch ($value['impact']) {
					case 'high': $impact_icon = $high_icon; break;
					case 'medium': case 'low': $impact_icon = $medium_icon; break;
					case 'good': $impact_icon = $good_icon; break;
				}
				$html .= '<div class="siteseo-analysis-block">';
				$html .= '<div class="siteseo-analysis-block-title">';
				$html .= '<div><span class="impact ' . esc_attr($value['impact']) .'" aria-hidden="true">' . $impact_icon . '</span>' .
				/* translators: %s represents the degree of severity */
				'<span class="screen-reader-text">'. sprintf(esc_html__('Degree of severity: %s','siteseo'), esc_html($value['impact'])).'</span>' .
				esc_html($value['title']) . '</div>';
				$html .= '<span class="siteseo-arrow" aria-hidden="true"></span></div>';
				$html .= '<div class="siteseo-analysis-block-content">' . wp_kses_post($value['desc']) . '</div>';
				$html .= '</div>';
			}
			$html .= '</div>';
			
			if($echo){
				$allowed_html = array_merge(wp_kses_allowed_html('post'), $acceptable_svg);
				echo wp_kses($html, $allowed_html);
				return;
			}
			return $html;
		}
	}

	// Analaysis
	static function display_seo_analysis($post){
		$seo_analysis = self::perform_seo_analysis($post);
		
		echo '<div id="siteseo-analysis-tabs">
			<div id="siteseo-analysis-tabs-1">
				<div class="siteseo-analysis-summary">';
					if(!empty($seo_analysis)){
						// grp
						usort($seo_analysis['checks'], function ($a, $b) {
							$order = ['error' => 0, 'warning' => 1, 'good' => 2];
							
							$a_status_class = isset($a['status_class']) ? $a['status_class'] : '';
							$b_status_class = isset($b['status_class']) ? $b['status_class'] : '';
							
							$a_order = isset($order[$a_status_class]) ? $order[$a_status_class] : 3;
							$b_order = isset($order[$b_status_class]) ? $order[$b_status_class] : 3;
							
							return $a_order - $b_order;
						});

						echo '<div class="siteseo-analysis-summary-pill">';
							// counts logic
							if(!empty($seo_analysis['error_count'])){
								echo '<span><svg fill="#f33" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M24 22h-24l12-20z"/></svg>'.esc_html($seo_analysis['error_count']). ' Errors</span>';
							}
						
							if(!empty($seo_analysis['warning_count'])){
								echo '<span><svg xmlns="http://www.w3.org/2000/svg" fill="#fa3" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z"/></svg>'.esc_html($seo_analysis['warning_count']). ' Warnings</span>';
							}
							
							if(!empty($seo_analysis['good_count'])){
								echo '<span><svg xmlns="http://www.w3.org/2000/svg" fill="#0c6" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z"/></svg><span>'.esc_html($seo_analysis['good_count']). ' Good</span></span>';
							}
					
						echo '</div>
					</div><!-- .analysis-score -->';

				 // A triangle with exclamation in it.
				$medium_icon_svg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"/></svg>';

				 // A check inside a solid circle
				$good_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"/></svg>';
				
				$high_icon_svg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"/></svg>';
				
				$allowed_svg_tags = ['svg' => ['xmlns' => true, 'viewbox' => true, 'width' => true, 'height' => true, 'class' => true, 'fill' => true, 'stroke' => true, 'stroke-width' => true], 'path' => ['d' => true, 'fill' => true, 'stroke' => true, 'stroke-width' => true]];

			   foreach($seo_analysis['checks'] as $check){

						echo '<div class="siteseo-analysis-block">';
							if(isset($check['label'])){
								echo'<div class="siteseo-analysis-block-title">';
									if(isset($check['status_class'])){
										$impact_icon = '';
										switch($check['status_class']){
											case 'good':
												$impact_icon = $good_icon;
												break;
											case 'warning':
												$impact_icon = $medium_icon_svg;
												break;
											case 'error':
												$impact_icon = $high_icon_svg;
												break;
										}

										echo '<div><span class="impact '.esc_attr($check['status_class']).'" aria-hidden="true">'.wp_kses($impact_icon, $allowed_svg_tags).'</span>
										
										<span class="screen-reader-text">'.
										/* translators: %s represents the degree of severity */
										sprintf(esc_html__('Degree of severity: %s','siteseo'), esc_html($check['status_class'])).'</span>';
									}

									echo esc_html($check['label']).'</div>
									<span class="siteseo-arrow" aria-hidden="true"></span>
								</div>';
							}
							if(isset($check['details'])){
								echo '<div class="siteseo-analysis-block-content" aria-hidden="true">'.wp_kses_post($check['details']).'</div>';
							}
						echo '</div><!-- .siteseo-analysis-block -->';
					}

				echo '</div><!-- #siteseo-analysis-tabs-1 -->
				</div><!-- #siteseo-analysis-tabs -->';
			}

	}

	static function perform_seo_analysis($post){
		
		$content = $post->post_content;
		$title = $post->post_title;
		$title = !empty(get_post_meta($post->ID, '_siteseo_titles_title',true)) ? get_post_meta($post->ID, '_siteseo_titles_title', true) : $title;
		$permalink = get_permalink($post->ID);
		$keywords = get_post_meta($post->ID, '_siteseo_analysis_target_kw', true);
		$meta_desc = get_post_meta($post->ID, '_siteseo_titles_desc', true);
		
		// Bricks
		if(defined('BRICKS_DB_PAGE_CONTENT')){
			$is_bricks_page = get_post_meta($post->ID, BRICKS_DB_PAGE_CONTENT, true);

			if(!empty($is_bricks_page) && is_array($is_bricks_page)){
				$content = self::get_bricks_page_content($is_bricks_page);
			}
		}
			
		if(empty($meta_desc)){
			$meta_desc = '';
		}

		$analysis = [
			'good_count' => 0,
			'warning_count' => 0,
			'error_count' => 0,
			'checks' => []
		];

		$canonical_check = self::check_canonical_url($permalink);
		$analysis['checks'][] = $canonical_check;
		self::update_analysis_score($analysis, $canonical_check);

		$word_count_check = self::check_word_count($content);
		$analysis['checks'][] = $word_count_check;
		self::update_analysis_score($analysis, $word_count_check);

		$keywords_density_check = self::check_keywords_density($content, $keywords);
		$analysis['checks'][] = $keywords_density_check;
		self::update_analysis_score($analysis, $keywords_density_check);

		$meta_title_check = self::check_meta_title($title);
		$analysis['checks'][] = $meta_title_check;
		self::update_analysis_score($analysis, $meta_title_check);

		$meta_description_check = self::check_meta_description($content, $meta_desc);
		$analysis['checks'][] = $meta_description_check;
		self::update_analysis_score($analysis, $meta_description_check);

		$image_alt_check = self::check_image_alt_texts($content);
		$analysis['checks'][] = $image_alt_check;
		self::update_analysis_score($analysis, $image_alt_check);

		$links_outbound_check = self::analyze_outbound_links($content);
		$analysis['checks'][] = $links_outbound_check;
		self::update_analysis_score($analysis, $links_outbound_check);

		$links_internal_check = self::analyze_internal_links($content);
		$analysis['checks'][] = $links_internal_check;
		self::update_analysis_score($analysis, $links_internal_check);

		$headings_check = self::check_headings($content);
		$analysis['checks'][] = $headings_check;
		self::update_analysis_score($analysis, $headings_check);

		$social_tags_check = self::check_social_meta_tags($post);
		$analysis['checks'][] = $social_tags_check;
		self::update_analysis_score($analysis, $social_tags_check);

		$structured_data_check = self::check_structured_data($post);
		$analysis['checks'][] = $structured_data_check;
		self::update_analysis_score($analysis, $structured_data_check);

		$permalink_keywords_check = self::check_keywords_in_permalink($permalink, $keywords);
		$analysis['checks'][] = $permalink_keywords_check;
		self::update_analysis_score($analysis, $permalink_keywords_check);

		$meta_robots_check = self::check_meta_robots($post);
		$analysis['checks'][] = $meta_robots_check;
		self::update_analysis_score($analysis, $meta_robots_check);

		$last_modified_check = self::check_last_modified_date($post);
		$analysis['checks'][] = $last_modified_check;
		self::update_analysis_score($analysis, $last_modified_check);

		$nofollow_links_check = self::analyze_nofollow_links($content);
		$analysis['checks'][] = $nofollow_links_check;
		self::update_analysis_score($analysis, $nofollow_links_check);
		
		$readability_data = [];
		$readability_data = self::analyze_readability($content, $title);
		update_post_meta($post->ID, '_siteseo_readibility_data', $readability_data);
		$analysis['checks'][] = $readability_data;

		return $analysis;
	}
	
	static function update_analysis_score(&$analysis, $check){
		switch($check['status']){
		    case 'Good':
		        $analysis['good_count']++;
		        break;
		    case 'Warning':
		        $analysis['warning_count']++;
		        break;
		    case 'Error':
		        $analysis['error_count']++;
		        break;
		}
	}
	
	static function check_canonical_url($permalink){
		$response = wp_remote_get($permalink);
		if(is_wp_error($response)){
			return [
				'label' => 'Canonical URL',
				'status' => 'Error',
				'status_class' => 'error',
				'details' => '<p>' . __('Unable to check canonical URL.', 'siteseo') . '</p>'
			];
		}
		
		$content = wp_remote_retrieve_body($response);
		
		preg_match_all('/<link[^>]+rel=[\'"](canonical)[\'"][^>]+href=[\'"]([^\'"]+)[\'"][^>]*>/i', $content, $matches);
		
		$canonical_urls = !empty($matches[2]) ? array_unique($matches[2]) : [];
		$count = count($canonical_urls);
		
		$details = '';
		$status = 'Warning';
		
		$details .= '<p>'. __('A canonical URL is required by search engines to handle duplicate content.', 'siteseo') .'</p>';
		
		if($count > 0){
			
			$details .= '<p>' .
			
			sprintf(
				/* translators: %s represents the degree of severity */
				_n(
					'We found %s canonical URL in your source code. Below, the list:',
					'We found %s canonical URLs in your source code. Below, the list:',
					$count,
					'siteseo'
				),
				number_format_i18n($count)
			) . '</p>';
			
			$details .= '<ul>';
			foreach($canonical_urls as $link){
				$details .= '<li>' .
					'<span class="dashicons dashicons-arrow-right"></span>' .
					'<a href="' . esc_url($link) . '" target="_blank">' . 
					esc_url($link) . 
					'</a>' .
					'<span class="dashicons dashicons-external"></span>' .
					'</li>';
			}
			$details .= '</ul>';
			
			if($count > 1){
				$status = 'Error';
				$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' . 
					__('You must fix this. Canonical URL duplication is bad for SEO.', 'siteseo') . '</p>';
			} else{
				$status = 'Good';
			}
		} else{
			if(get_post_meta(get_the_ID(), '_siteseo_robots_index', true)){
				$status = 'Good';
				$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>' . 
					__('This page doesn\'t have any canonical URL because your post is set to <strong>noindex</strong>. This is normal.', 'siteseo') . '</p>';
			} else{
				$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' . 
					__('This page doesn\'t have any canonical URL.', 'siteseo') . '</p>';
			}
		}
		
		return [
			'label' => 'Canonical URL',
			'status' => $status,
			'status_class' => strtolower($status),
			'details' => $details
		];
	}
	
	static function check_word_count($content){
		$word_count = str_word_count(wp_strip_all_tags($content));
		$unique_words = count(array_unique(str_word_count(wp_strip_all_tags($content), 1)));
		
		$details = '';
		
		if($word_count != 0){
			
			$details = '<p>'. __('Word count isn\'t a direct ranking factor, but it\'s important for your content to be high-quality, relevant, and unique. To meet these criteria, your article should include a sufficient number of paragraphs to ensure adequate word count.', 'siteseo') .'</p>';
		
			$details .= '<ul>';
			/* translators: %d represents the words found */
			$details .= '<li>'. sprintf(__('%d words found', 'siteseo'), $word_count) .'</li>';
			/* translators: %d represents the unique words found */
			$details .= '<li>'. sprintf(__('%d unique words found', 'siteseo'), $unique_words) .'</li>';
			$details .= '</ul>';
				
		}
		
		if($word_count == 0){
			$status = 'Error';
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' . __('No content? Try adding a few more paragraphs.!', 'siteseo') . '</p>';
		} elseif($word_count > 300){
			$status = 'Good';
			$details .= '<li><span class="dashicons dashicons-thumbs-up"></span>' . __('Your content contains over 300 words, which meets the minimum requirement for a post', 'siteseo') .'</li>';
		} else{
			$status = 'Error';
			$details .= '<li><span class="dashicons dashicons-thumbs-down"></span>' . __('Your content is too brief. Consider adding a few more paragraphs!', 'siteseo') .'</li>';
		}

		return [
			'label' => __('Word Count', 'siteseo'),
			'status' => $status,
			'status_class' => strtolower($status),
			'details' => $details
		];
	}

	static function check_keywords_density($content, $keywords){
		$content = mb_strtolower(wp_strip_all_tags($content), 'UTF-8');
		$keywords = array_filter(explode(',', trim($keywords)));
		$content_words = str_word_count($content, 1);
		$count_words = count($content_words);
		$details = '';

		if(empty($keywords) || empty($content_words)){
			$details .= '<p>' . __('We couldn\'t calculate the keyword density. This may be because you haven\'t added any content or your target keywords are missing from the post.', 'siteseo') . '</p>';
			
			return [
				'label' => __('Keyword Density', 'siteseo'),
				'status' => 'Error',
				'status_class' => 'error',
				'details' => $details
			];
		}

		// calulate
		$density_details = [];
		$all_density = [];
    
		foreach($keywords as $keyword){
			$keyword_occurrence = 0;

			$keyword = mb_strtolower(trim($keyword), 'UTF-8');

			$keyword_words = preg_split('/\s+/u', $keyword, -1, PREG_SPLIT_NO_EMPTY);
			$keyword_word_count = count($keyword_words);

			// Count occurrences
			if($keyword_word_count > 1){

				$pattern = '/' . preg_quote($keyword, '/') . '/iu';
				preg_match_all($pattern, $content, $matches);
				$keyword_occurrence = count($matches[0]);
			} else {
				$word_counts = array_count_values($content_words);
				$keyword_occurrence = isset($word_counts[$keyword]) ? $word_counts[$keyword] : 0;

			}

			// Calculate density
			if($count_words > 0){
				$kw_density = ($keyword_occurrence * $keyword_word_count * 100) / $count_words;
			} else {
				$kw_density = 0;
			}

			$all_density[] = number_format($kw_density, 2);
			
			$density_details[] = 
			/* translators: %s represents the degree of severity */ 
			sprintf(
				'<ul><li><span class="dashicons dashicons-arrow-right"></span>%s</li></ul>',
				sprintf(
					/* translators: %s represents a keyword density of */
					esc_html__('%1$s was found %2$d times in your content, a keyword density of %3$s%%', 'siteseo'),
					esc_html($keyword),
					$keyword_occurrence,
					number_format($kw_density, 2)
				)
			);
		}

		$details .= implode('', $density_details);

		$details .= '<p class="description">'.
			sprintf(
				__('Find out more about <a href="%s" target="_blank">keywords stuffing</a>', 'siteseo'),
				'https://www.youtube.com/watch?v=Rk4qgQdp2UA'
			) .
		'</p>';

		if(count($all_density) === 0){
			return [
				'label' => __('Keyword Density', 'siteseo'),
				'status' => 'Error',
				'status_class' => 'error',
				'details' => $details
			];
		}

		//avg density
		$avg_density = array_sum($all_density)/count($all_density);

		$status = ($avg_density > 1) ? 'Good' : 'Warning';

		return [
			'label' => __('Keyword Density', 'siteseo'),
			'status' => $status,
			'status_class' => strtolower($status),
			'details' => $details
		];
	}
	
	static function check_meta_title($title, $keywords = []){
		$details = '';
		$status = 'Good';
		$status_class = 'good';
		
		$title = \SiteSEO\TitlesMetas::replace_variables($title);

		// mb_strlen for correct UTF-8
		$title_length = mb_strlen($title, 'UTF-8');

		// length
		if(empty($title)){
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' . 
			__('A custom title has not been set for this post. If the global meta title works for you, you can disregard this recommendation.', 'siteseo') . '</p>';
			$status = 'Warning';
			$status_class = 'warning';
		} elseif($title_length > 60){
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' .
			__('Your custom title is too lengthy.', 'siteseo') . '</p>';
			$status = 'Warning';
			$status_class = 'warning';
		} elseif($title_length >= 10 && $title_length <= 60){
			$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>' .
			__('The length of your title is appropriate.', 'siteseo') . '</p>';
		} else{
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' . 
			__('Your custom title is too short.', 'siteseo') . '</p>';
			$status = 'Warning';
			$status_class = 'warning';
			
		}

		if(!empty($keywords)){
			$keyword_counts = [];
			foreach($keywords as $kw_name){
				$kw_count = substr_count(strtolower($title), strtolower($kw_name));
				if($kw_count > 0){
					$keyword_counts[] = $kw_count;
					/* translators: %s represents the degree of severity */
					$details .= '<ul><li><span class="dashicons dashicons-arrow-right"></span>'. sprintf(esc_html__('%1$s was found %2$d times.', 'siteseo'), $kw_name, $kw_count) . '</li></ul>';
				}
			}

			if(!empty($keyword_counts)){
				$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>'.__('The target keywords are included in the Meta Title', 'siteseo').'</p>';
			} else {
				$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>'.__('None of your target keywords are present in the Meta Title.', 'siteseo').'</p>';
				$status = $status === 'Good' ? 'Warning' : $status;
				$status_class = $status_class === 'good' ? 'warning' : $status_class;
			}
		}

		return [
			'label' => __('Meta Title', 'siteseo'),
			'status' => $status,
			'status_class' => $status_class,
			'details' => $details
		];
	}

	static function check_meta_description($content, $meta_description = '', $keywords = []){
		$details = '';
		$status = 'Good';
		$status_class = 'good';

		$desc = !empty($meta_description) ? $meta_description : wp_trim_words($content, 20);
		$description = \SiteSEO\TitlesMetas::replace_variables($desc);

		// UTF-8
		$description_length = mb_strlen($description, 'UTF-8');

		// desc length
		if(empty($meta_description)){
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' . 
				__('A custom meta description has not been set for this post. If the global meta description works for you, you can ignore this recommendation.', 'siteseo') . '</p>';
				
			$status = 'Warning';
			$status_class = 'warning';
		} elseif($description_length > 160){
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' . __('Your custom meta description is too lengthy', 'siteseo') .'</p>';
			$status = 'Warning';
			$status_class = 'warning';
		} elseif($description_length >= 50 && $description_length <= 160){
			$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>'. __('The length of your meta description is appropriate.', 'siteseo').'</p>';
		} else{
			$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>'. __('The description has been set properly.', 'siteseo').'</p>';
		}

		if(!empty($keywords)){
			$keyword_counts = [];
			foreach($keywords as $kw_name){
				$kw_count = substr_count(strtolower($description), strtolower($kw_name));
				if($kw_count > 0){
					$keyword_counts[] = $kw_count;
					$details .= '<li><span class="dashicons dashicons-arrow-right"></span>' . 
						/* translators: %s represents the key word count */
						sprintf(esc_html__('%1$s was found %2$d times.', 'siteseo'), $kw_name, $kw_count) . '</li>';
				}
			}

			if(!empty($keyword_counts)){
				$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>'. __('The target keywords are included in the Meta description.', 'siteseo') . '</p>';
			} else{
				$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>'. __('None of your target keywords are included in the Meta description.', 'siteseo') . '</p>';
				$status = $status === 'Good' ? 'Warning' : $status;
				$status_class = $status_class === 'good' ? 'warning' : $status_class;
			}
		}

		return [
			'label' => 'Meta Description',
			'status' => $status,
			'status_class' => $status_class,
			'details' => $details
		];
	}
	
	static function check_image_alt_texts($content){

			$result = [
				'label' => __('Alternative texts of images', 'siteseo'),
				'status' => 'Good',
				'status_class' => 'good',
				'details' => ''
			];

			if(empty($content)){
				$result['status'] = 'Warning';
				$result['status_class'] = 'warning';
				$result['details'] = '<p><span class="dashicons dashicons-thumbs-down"></span>' . 
					__('No content found to analyze. Please add some content to check for images and alt texts.', 'siteseo') . '</p>';
				return $result;
			}

			preg_match_all('/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]*>/i', $content, $image_matches);
			preg_match_all('/<img[^>]+alt=[\'"]([^\'"]+)[\'"][^>]*>/i', $content, $alt_matches);

			$images_count = count($image_matches[0]);
			$alt_text_count = count(array_filter($alt_matches[1], 'strlen'));

			if($images_count === 0){
				$result['status'] = 'Warning';
				$result['status_class'] = 'warning';
				$result['details'] = '<p><span class="dashicons dashicons-thumbs-down"></span>' .
					__('We couldn\'t find any images in your content. Adding media can boost your SEO.', 'siteseo') . '</p>';
				return $result;
			}

			if($images_count !== $alt_text_count){
				$result['status'] = ($alt_text_count > 0) ? 'Warning' : 'Error';
				$result['status_class'] = strtolower($result['status']);
				
				$result['details'] = '<p><span class="dashicons dashicons-thumbs-down"></span>' . 
					esc_html__('No alternative text has been found for these images. Alt tags are essential for SEO and accessibility. Please edit your images in the media library or using your preferred page builder, and provide alternative text.', 'siteseo') . '</p>';
				
	
				if(!empty($image_matches[1])){
					$result['details'] .= '<ul class="attachments">';
					foreach($image_matches[1] as $index => $img){
						if(empty($alt_matches[1][$index])){
							$result['details'] .= '<li class="attachment"><figure>' .
								'<img src="' . esc_url($img) . '"/>' .
								'<figcaption style="word-break: break-all;">' . esc_html($img) . '</figcaption>' .
								'</figure></li>';
						}
					}
					$result['details'] .= '</ul>';
				}
				
				$result['details'] .= '<p>'. __('Please note that we scan all your source code, which means some missing alternative text for images may be found in your header, sidebar, or footer.', 'siteseo') .'</p>';
			} else{
    
				$result['details'] = '<p><span class="dashicons dashicons-thumbs-up"></span>' . 
					__('All alternative tags have been completed. Great job!', 'siteseo') .'</p>';
			}

			return $result;
    	}
	

	static function analyze_outbound_links($content){

		preg_match_all('/<a[^>]+href=([\'"])(?!#)([^\'"]+)[\'"][^>]*>/i', $content, $links);

		$outbound_links = array_filter($links[2], function($link){
			return strpos($link, get_site_url()) === false;
		});
		
		$total_outbound = count($outbound_links);
		$nofollow_count = preg_match_all('/rel=[\'"]nofollow[\'"]/', implode(' ', $links[0]));
		
		$status = $total_outbound > 0 ? 'Good' : 'Warning';
		
		$details = '';
		
		$details .= '<p>'. __('The internet is based on the concept of hyperlinks, so linking to different websites is completely natural. However, avoid linking to low-quality or spammy sites. If youre uncertain about a site quality, add the "nofollow" attribute to your link.', 'siteseo') .'</p>';
		
		if($total_outbound > 0){
			/* translators: %s represents the detected outbound links on page  */
			$details .= '<p>'.sprintf(__('We detected %s outbound links on your page. Below is the list.', 'siteseo'), $total_outbound) .'</p>';
			$details .= '<ul>';
			
			foreach($outbound_links as $link){
				$details .= '<li><span class="dashicons dashicons-arrow-right"></span>';
				$details .= '<a href="'.esc_url($link).'" target="_blank">'.esc_url($link).'</a></li>';
			}
			
			$details .= '</ul>';
		} else{
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' . 
				__('This page does not contain any outbound links.', 'siteseo') . '</p>';
		}
		
		return [
			'label' => __('Outbound Links', 'siteseo'),
			'status' => $status,
			'status_class' => strtolower($status),
			'details' => $details
		];
	}
	
	static function analyze_internal_links($content){

		preg_match_all('/<a[^>]+href=([\'"])(?!#)([^\'"]+)[\'"][^>]*>(.*?)<\/a>/i', $content, $links, PREG_SET_ORDER);

		$internal_links = array_filter($links, function($link) {
			return strpos($link[2], get_site_url()) !== false;
		});
		
		$total_internal = count($internal_links);

		$status = $total_internal > 0 ? 'Good' : 'Warning';
		
		$details = '';

		$details .= '<p>'. __('Internal links are crucial for both SEO and user experience. Always aim to interconnect your content using meaningful and relevant anchor text.', 'siteseo') .'</p>';
		
		if($total_internal > 0){
			/* translators: %s represents the internal links pointing to page */
			$details .= '<p>'. sprintf(__('We identified %s internal links pointing to this page.', 'siteseo'), $total_internal) .'</p>';
			$details .= '<ul>';
	
			foreach($internal_links as $link){
				$url = $link[2];
				$post_id = url_to_postid($url);
				
				$details .= '<li><span class="dashicons dashicons-arrow-right"></span>';
				$details .= '<a href="'.esc_url($url) .'" target="_blank">'. esc_html($url) . '</a>';
				
				if($post_id){
					$details .= '<a class="nounderline" href="' . get_edit_post_link($post_id) . '" ' .
							   'title="' . 
							   /* translators: %s represents the degree of severity */
							   sprintf(__('edit %s', 'siteseo'), esc_html(get_the_title($post_id))) . '">' .
							   '<span class="dashicons dashicons-edit-large"></span></a>';
				}
				
				$details .= '</li>';
			}
			
			$details .= '</ul>';
		} else{
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' . 
				__('This page has no internal links from other content. Links from archive pages are not counted as internal links because they lack contextual relevance.', 'siteseo') . '</p>';
		}
		
		return [
			'label' => __('Internal Links', 'siteseo'),
			'status' => $status,
			'status_class' => strtolower($status),
			'details' => $details
		];
	}
	
	static function analyze_nofollow_links($content){
	
		preg_match_all('/<a[^>]+href=([\'"])([^\'"]+)[\'"][^>]*>(.*?)<\/a>/i', $content, $all_links, PREG_SET_ORDER);
		
		$nofollow_links = array_filter($all_links, function($link){
			return preg_match('/rel=[\'"][^\'"]*nofollow[^\'"]*[\'"]/', $link[0]);
		});
		
		$total_nofollow = count($nofollow_links);

		$status = $total_nofollow > 0 ? 'Warning' : 'Good';
		
		$details = '';
		
		if($total_nofollow > 0){
			
			$details .= '<p>' .
			/* translators: %d represents the number nofollow attribute */ 
			sprintf( esc_html__('We found %d links with the nofollow attribute on your page. Avoid overusing the nofollow attribute in links. Below is the list:', 'siteseo'),
				$total_nofollow
			) . '</p>';
			
			$details .= '<ul>';
			
			foreach($nofollow_links as $link){
				$href = $link[2];
				$link_text = $link[3];
				
				$details .= '<li>'.
					'<span class="dashicons dashicons-arrow-right"></span>'.
					'<a href="' . esc_url($href) . '" target="_blank">'.esc_html($link_text).'</a>'.
					'<span class="dashicons dashicons-external"></span>'.
					'</li>';
			}
			
			$details .= '</ul>';
		} else{
			$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>' . 
				__('This page does not contain any nofollow links.', 'siteseo') . '</p>';
		}
		
		return [
			'label' => __('Nofollow Links', 'siteseo'),
			'status' => $status,
			'status_class' => strtolower($status),
			'details' => $details
		];
	}

	static function check_headings($content, $keywords = []) {
		$details = '';
		$status = 'Good';
		$status_class = 'good';
		if(empty(trim($content))){
			return [
				'label' => 'Headings',
				'status' => 'Warning',
				'status_class' => 'warning',
				'details' => '<p><span class="dashicons dashicons-thumbs-down"></span>' . __('No content available to check headings.', 'siteseo') . '</p>'
			];
		}

		preg_match_all('/<h([1-6])([^>]*)>(.*?)<\/h\1>/is', $content, $heading_matches);
		
		if(empty($heading_matches[0])){
			return [
				'label' => 'Headings',
				'status' => 'Error',
				'status_class' => 'error',
				'details' => '<p><span class="dashicons dashicons-thumbs-down"></span>' . __('No headings found in the content. Using headings is essential for both SEO and accessibility!', 'siteseo') . '</p>'
			];
		}

		$heading_counts = array_count_values($heading_matches[1]);
		$total_headings = count($heading_matches[0]);

		
		$h1_count = isset($heading_counts[1]) ? $heading_counts[1] : 0;
		if($h1_count > 0){
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' . 
				/* translators: %d represents the number of h1 tags */
				sprintf(esc_html__('We found %d Heading 1 (H1) tags in your content.', 'siteseo'), $h1_count+1) . '</p>';

			$details .= '<p>' . __('You should avoid using more than one H1 heading in your post content. The rule is simple: each web page should have only one H1, which benefits both SEO and accessibility. Below is the list:', 'siteseo') . '</p>';

			$details .= '<ul>';
			foreach(array_keys($heading_matches[1], '1') as $index){
				$details .= '<li><span class="dashicons dashicons-arrow-right"></span>' . 
					wp_strip_all_tags($heading_matches[0][$index]) . '</li>';
			}
			$details .= '</ul>';
			$status = 'Warning';
			$status_class = 'warning';
		}
		foreach([2, 3] as $level){
			$level_count = isset($heading_counts[$level]) ? $heading_counts[$level] : 0;
			$details .= '<p><span class="dashicons dashicons-info"></span>' .
				/* translators: %d represents the heading */ 
				sprintf(__('Found %1$d H%2$d heading(s)', 'siteseo'), $level_count, $level) . '</p>';

			if($level_count > 0){
				$details .= '<ul>';
				foreach(array_keys($heading_matches[1], (string)$level) as $index){
					$details .= '<li><span class="dashicons dashicons-arrow-right"></span>'. 
						wp_strip_all_tags($heading_matches[0][$index]) .'</li>';
				}
				$details .= '</ul>';
			}

			if(!empty($keywords) && $level_count > 0){
				$keyword_found = false;
				$keyword_details = '<ul>';
				
				foreach($keywords as $kw_name){
					$kw_count = 0;
					foreach(array_keys($heading_matches[1], (string)$level) as $index){
						$kw_count += substr_count(
							strtolower(wp_strip_all_tags($heading_matches[0][$index])), 
							strtolower($kw_name)
						);
					}
					
					if($kw_count > 0){
						$keyword_found = true;
						$keyword_details .= '<li><span class="dashicons dashicons-arrow-right"></span>' .
							/* translators: %s represents the degree of severity */ 
							sprintf(esc_html__('%1$s was found %2$d times.', 'siteseo'), $kw_name, $kw_count) . '</li>';
					}
				}
				$keyword_details .= '</ul>';

				if($keyword_found){
					$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>' .
						/* translators: %s represents the target keywords  */ 
						sprintf(__('Target keywords were found in Heading %1$d (H%2$d).', 'siteseo'), $level, $level) . '</p>' . 
						$keyword_details;
				} else{
					$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' .
						/* translators: %d represents the target keywords */ 
						sprintf(__('None of your target keywords were found in Heading %1$d (H%2$d).', 'siteseo'), $level, $level) . '</p>';
					if($status === 'Good'){
						$status = 'Warning';
						$status_class = 'warning';
					}
				}
			}
		}

		return [
			'label' => 'Headings',
			'status' => $status,
			'status_class' => $status_class,
			'details' => $details
		];
	}
	
	static function check_social_meta_tags($post = null){
		if(!$post){
			$post = get_queried_object();
		}
		
		$details = '';
		$status = 'Good';
		$status_class = 'good';
		
		$og_titles = get_post_meta($post->ID, '_siteseo_social_fb_title', true);
		$og_title = $og_titles ? $og_titles : '';
		
		if(empty($og_title)){
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>'. __('Your Open Graph Title tag has not been set!', 'siteseo') .'</p>';
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>'. __('Your Open Graph Title is missing!', 'siteseo') .'</p>';
			$status = 'Error';
			$status_class = 'error';
		} else{
			$details .= '<h4>'. __('Open Graph Title', 'siteseo') . '</h4>';
			$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>'. __('An Open Graph Title tag was found in your source code.', 'siteseo') . '</p>';
			$details .= '<ul><li><span class="dashicons dashicons-arrow-right"></span>' . esc_html($og_title) . '</li></ul>';
		}

		$og_descriptions = get_post_meta($post->ID, '_siteseo_social_fb_desc', true);
		$og_description = $og_descriptions ? $og_descriptions : '';

		if(empty($og_description)){
			$details .= '<h4>'. __('Open Graph Description', 'siteseo') .'</h4>';
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>'. __('Your Open Graph Description has not been set!','siteseo').'</p>';
			$status = $status === 'Good' ? 'Warning' : $status;
			$status_class = $status_class === 'good' ? 'warning' : $status_class;
		} else {
			$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>' .
				/* translators: %s represents the og description */
				sprintf(esc_html__('We found %s og:description in your content.', 'siteseo'), $og_descriptions) . '</p>';
		}

		// OG Check
		$og_images = get_post_meta($post->ID, '_siteseo_social_fb_img', true);
		$og_image = $og_images ? $og_images : '';
		
		if(empty($og_image)){
			$details .= '<h4>'. __('Open Graph Image', 'siteseo') .'</h4>';
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>'. __('Your Open Graph Image has not been set!' ,'siteseo') .'</p>';
			$status = $status === 'Good' ? 'Warning' : $status;
			$status_class = $status_class === 'good' ? 'warning' : $status_class;
		} else{
			/* translators: %s represents the og images */
			$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>'. sprintf(esc_html__('We found %s og:image in your content.', 'siteseo'), $og_images) . '</p>';
		}

		// Open Graph
		$og_site_name = get_bloginfo('name');
		if(empty($og_site_name)){
			$details .= '<h4>'. __('Open Graph Site Name', 'siteseo') .'</h4>';
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>'. __('Your Open Graph Site Name has not been set!' ,'siteseo') .'</p>';
			$status = $status === 'Good' ? 'Warning' : $status;
			$status_class = ($status_class === 'good') ? 'warning' : $status_class;
		}

		// Twitter
		$twitter_title = get_post_meta($post->ID, '_siteseo_social_twitter_title', true);
		if(empty($twitter_title)){
			$details .= '<h4>'. __('X Title', 'siteseo').'</h4>';
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>'. __('Your X Title has not been set!', 'siteseo').'</p>';
			$status = $status === 'Good' ? 'Warning' : $status;
			$status_class = $status_class === 'good' ? 'warning' : $status_class;
		}

		$twitter_description = get_post_meta($post->ID, '_siteseo_social_twitter_desc', true);
		if(empty($twitter_description)){
			$details .= '<h4>'. __('X Description','siteseo').'</h4>';
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>'. __('Your X Description has not been set!','siteseo') .'</p>';
			$status = $status === 'Good' ? 'Warning' : $status;
			$status_class = $status_class === 'good' ? 'warning' : $status_class;
		}

		$twitter_image = get_post_meta($post->ID, '_siteseo_social_twitter_img', true);
		if(empty($twitter_image)){
			$details .= '<h4>'. __('X Image', 'siteseo') .'</h4>';
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>'. __('Your X Image has not been set!', 'siteseo').'</p>';
			$status = $status === 'Good' ? 'Warning' : $status;
			$status_class = ($status_class === 'good') ? 'warning' : $status_class;
		}

		return [
			'label' => __('Social Meta Tags', 'siteseo'),
			'status' => $status,
			'status_class' => $status_class,
			'details' => $details
		];

	}

    static function check_structured_data($post){
        $schema_type = get_post_meta($post->ID, '_siteseo_structured_data_type', true);
        $status = !empty($schema_type) ? 'Good' : 'Warning';

        return [
            'label' => 'Structured Data',
            'status' => $status,
            'status_class' => strtolower($status),
            'details' => !empty($schema_type) ? 'Schema Type: '.$schema_type : 'No schema defined'
        ];
    }

	static function check_keywords_in_permalink($permalink, $keywords){
		$keywords = array_filter(explode(',', trim($keywords)));
		$permalink = str_replace('-', ' ', strtolower(basename($permalink)));
		$content_words = str_word_count($permalink, 1);
		$count_words = count($content_words);


		$kw_density = [];
		$matching_keywords = [];
		
		foreach($keywords as $keyword){
			$keyword_occurrence = 0;
			$keyword = strtolower(trim($keyword));
			
			// If keyword has multiple words
			if(str_word_count($keyword) > 1){
				$pattern = '/\b' . preg_quote($keyword, '/') . '\b/i';
				preg_match_all($pattern, $permalink, $matches);
				$keyword_occurrence = count($matches[0]);
			} else {
				$word_counts = array_count_values($content_words);
				$keyword_occurrence = isset($word_counts[$keyword]) ? $word_counts[$keyword] : 0;
			}
		
			// Calculate density as percentage
			$kw_density[] = ($keyword_occurrence * str_word_count($keyword) * 100)/$count_words;
			if(count($kw_density) > 0){
				$matching_keywords[] = $keyword;
				break;
			}
		}

		$status = !empty($kw_density) ? 'Good' : 'Error';

		$details = '';
		if($status === 'Good'){	
			$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>'. __('Great! One of your target keywords is included in your permalink.', 'siteseo') .'</p>';
			$details .= '<ul><li><span class="dashicons dashicons-arrow-right"></span>' . implode(', ', $matching_keywords) . '</li></ul>';
		} elseif($permalink === get_home_url() || $permalink === home_url()){
			$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>'. __('This is your homepage, so this check doesn\'t apply as there is no slug.', 'siteseo') . '</p>';
		} else{
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>'. __('You should include one of your target keywords in your permalink.', 'siteseo') . '</p>';
		}

		return [
			'label' => __('Keywords in Permalink', 'siteseo'),
			'status' => $status,
			'status_class' => strtolower($status),
			'details' => $details
		];
		
	}
	
	static function check_meta_robots($post){

		$noindex = get_post_meta($post->ID, '_siteseo_robots_index', true);
		$nofollow = get_post_meta($post->ID, '_siteseo_robots_follow', true);
		$noimageindex = get_post_meta($post->ID, '_siteseo_robots_imageindex', true);
		$noarchive = get_post_meta($post->ID, '_siteseo_robots_archive', true);
		$nosnippet = get_post_meta($post->ID, '_siteseo_robots_snippet', true);

		$count_meta_robots = 0;
		$details = '';

		$meta_robots_checks = [
			'noindex' => $noindex,
			'nofollow' => $nofollow,
			'noimageindex' => $noimageindex,
			'noarchive' => $noarchive,
			'nosnippet' => $nosnippet,
		];

		foreach($meta_robots_checks as $robot => $value){
			if($value !== 'yes'){
				continue;
			}

			$count_meta_robots++;
			switch($robot){
				case 'noindex':
					$details .= '<p data-robots="noindex"><span class="dashicons dashicons-thumbs-down"></span>' . __('<strong>noindex</strong> is enabled! Search engines cannot index this page', 'siteseo') . '</p>';
					break;
				case 'nofollow':
					$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' . __('<strong>nofollow</strong> is on! Search engines can\'t follow your links on this page.', 'siteseo') . '</p>';
					break;
				case 'noimageindex':
					$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' . __('<strong>nofollow</strong> is enabled! Search engines cannot follow the links on this page.', 'siteseo').'</p>';
					break;
				case 'noarchive':
					$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' . __('<strong>noarchive</strong> is enabled! Search engines will not cache your page.', 'siteseo') .'</p>';
					break;
				case 'nosnippet':
					$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>' . __('<strong>nosnippet</strong> is enabled! Search engines will not display a snippet of this page in the search results.', 'siteseo') .'</p>';
					break;
			}
		}

		if($count_meta_robots > 0){
			/* translators: %s represents the robots tags */ 
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>'. sprintf(esc_html__('We found %s meta robots tags on your page. There may be an issue with your theme!', 'siteseo'), $count_meta_robots) .'</p>';
		}
		
		if($noindex !== 'yes'){
			$details .= '<p data-robots="index"><span class="dashicons dashicons-thumbs-up"></span>'. __('<strong>noindex</strong> is disabled. Search engines will index this page.', 'siteseo') .'</p>';
		}
		if($nofollow !== 'yes'){
			$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>'. __('<strong>nofollow</strong> is disabled. Search engines will follow links on this page.', 'siteseo') .'</p>';
		}
		
		if($noimageindex !== 'yes'){
			$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>'. __('<strong>noimageindex</strong> is disabled. Google will index the images on this page.', 'siteseo') .'</p>';
		}
		if($noarchive !== 'yes'){
			$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>'. __('<strong>noarchive</strong> is disabled. Search engines will probably cache your page.', 'siteseo') .'</p>';
		}
		if($nosnippet !== 'yes'){
			$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>'. __('<strong>nosnippet</strong> is disabled. Search engines will display a snippet of this page in search results.', 'siteseo') .'</p>';
		}
		
		if($count_meta_robots === 0){
			$details .= '<p><span class="dashicons dashicons-thumbs-up"></span>' . __('We found no meta robots on this page. It means, your page is index,follow. Search engines will index it, and follow links. ', 'siteseo') . '</p>';
		}

		$status = ($count_meta_robots === 0) ? 'Good' : 
				  (($count_meta_robots <= 2) ? 'Warning' : 'Error');

		return [
			'label' => 'Meta Robots',
			'status' => $status,
			'status_class' => strtolower($status),
			'details' => $details
		];
	}

    static function check_last_modified_date($post){
        $last_modified = get_the_modified_date('Y-m-d', $post);
        $days_since_modified = round((time() - strtotime($last_modified)) / (60 * 60 * 24));

        $status = $days_since_modified < 30 ? 'Good' : 
                  ($days_since_modified < 90 ? 'Warning' : 'Error');
				  
		$details = '';
		
		if($status == 'Error'){
			$details .= '<p><span class="dashicons dashicons-thumbs-down"></span>'. __('This post is a little old!', 'siteseo') .'</p>';
		}
		
		if($days_since_modified < 365){
			$details .='<p><span class="dashicons dashicons-thumbs-up"></span>'.__('The last modified date of this article is less than 1 year. Cool', 'siteseo') .'</p>';
		}
		
		$details .= '<p>'.__('Search engines love fresh content. Update regularly your articles without entirely rewriting your content and give them a boost in search rankings. SiteSEO takes care of the technical part', 'siteseo').'</p>';

        return [
            'label' => 'Last Modified Date',
            'status' => $status,
            'status_class' => strtolower($status),
			'details' => $details
        ];
    }
	
	static function analyze_readability($post, $title){
		$data = [];

		// These are power words specifically for headlines.
		// These are not hard rules, but they are perceived to have a higher CTR if used in the heading.
		$power_words = ['exclusive', 'revealed', 'secrets', 'ultimate', 'proven', 'unleashed', 'discover', 'breakthrough', 'shocking', 'insider', 'elite', 'uncovered', 'powerful', 'guaranteed', 'transformative', 'instant', 'revolutionary', 'unbelievable', 'top', 'best', 'must-have', 'limited', 'rare', 'unique', 'unprecedented', 'premium', 'urgent', 'today', 'now', 'latest', 'new', 'free', 'bonus', 'offer', 'sensational', 'astonishing', 'incredible', 'jaw-dropping', 'unmissable', 'essential', 'critical', 'vital', 'pivotal', 'game-changer', 'spotlight', 'trending', 'hot', 'popular', 'featured', 'special', 'limited-time', 'hurry', 'last chance', 'countdown'];
		
		if(!empty($title)){
			// Checking power words.
			$title_words = explode(' ', strtolower($title));

			$present_power_words = array_intersect($title_words, $power_words);

			if(!empty($present_power_words)){
				$data['power_words'] = $present_power_words;
			}

			// Checking number in the Title
			if(preg_match('/\s?\d+\s/', preg_quote($title), $number)){
				$data['number_found'] = $number[0];
			}
		}
		
		// We are checking paragarph length too.
		if(!isset($data['paragraph_length'])){
			$data['paragraph_length'] = 0;
		}
		
		if(!empty($post)){
			preg_match_all('/<p>.*<\/p>/U', $post, $paragraphs);

			foreach($paragraphs[0] as $paragraph){
				$paragraph = normalize_whitespace(wp_strip_all_tags($paragraph));
				
				$data['paragraph_length'] += substr_count($paragraph, ' ') + 1; // updating paragraph length
				self::analyse_passive_voice($paragraph, $data);
			}
		}

		return $data;
	}
	
	static function analyse_passive_voice($paragraph, &$data){

		if(empty($paragraph)){
			return;
		}

		$sentences = explode('.', $paragraph);
		$passive_count = 0;

		if(!isset($data['passive_voice']['passive_sentences'])){
			$data['passive_voice']['passive_sentences'] = 0;
		}
		
		if(!isset($data['passive_voice']['total_sentences'])){
			$data['passive_voice']['total_sentences'] = 0;
		}

		if(count($sentences) === 0){
			return;
		}

		foreach($sentences as $sentence){
			if(empty($sentence)){
				continue;
			}

			$sentence = normalize_whitespace($sentence);
			$is_passive = self::sentence_is_passive($sentence);
			
			if($is_passive == true){
				$passive_count++;
			}
		}

		$data['passive_voice']['passive_sentences'] += $passive_count;
		$data['passive_voice']['total_sentences'] += count($sentences);
	}

	static function sentence_is_passive($sentence){
		$be_words = ['am', 'is', 'are', 'was', 'were', 'be', 'being', 'been'];

		// TODO: We can check if "en" ending words are a comman pattern too, then we will remove the en ending words too from here.
		$past_particles = ['gone' ,'done' ,'seen' ,'taken' ,'eaten' ,'written' ,'driven' ,'spoken' ,'broken' ,'chosen' ,'fallen' ,'forgotten' ,'forgiven' ,'hidden' ,'known' ,'grown' ,'drawn' ,'flown' ,'thrown' ,'blown' ,'shown' ,'worn' ,'sworn' ,'torn' ,'woken' ,'begun' ,'sung' ,'run' ,'swum' ,'shaken' ,'given' ,'proven' ,'ridden' ,'risen' ,'shone' ,'shot' ,'fought' ,'thought' ,'bought' ,'brought' ,'caught' ,'taught' ,'built' ,'felt' ,'kept' ,'slept' ,'left' ,'lost' ,'meant' ,'met' ,'read' ,'sold' ,'sent' ,'spent' ,'stood' ,'understood' ,'won' ,'held' ,'told' ,'heard' ,'paid' ,'laid' ,'said' ,'found' ,'made' ,'learned' ,'put'];
		
		if(empty($sentence)){
			return false;
		}
		
		$words = explode(' ', $sentence);

		for($i = 0; $i < count($words); $i++){
			// Checking if we have a be word
			if(!in_array($words[$i], $be_words)){
				continue;
			}

			// If be word is there then need to check if next one is past particle with mostly ends with ed.
			if(strpos($words[$i+1], 'ed') != strlen($words[$i+1]) - 2){
				if(!in_array($words[$i+1], $past_particles)){
					continue;
				}
			}

			return true;
		}

		return false;
	}

	static function get_bricks_page_content($bricks_page){

		if(empty($bricks_page) || !is_array($bricks_page)){
			return;
		}

		$content = \Bricks\Frontend::render_data($bricks_page);

		$content = strip_shortcodes($content); // remove shortcodes
		$content = wp_strip_all_tags($content); // remove HTML tags

		return $content;
	}

}
PK��f\+mzzmain/metaboxes/settings.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO\Metaboxes;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Settings{

	static function render_metabox(){
		global $siteseo;

		$metabox_data = [];
		
		$show_content_analysis = true;
		
		if(is_user_logged_in()){
			
			if(is_super_admin()){
				
				$siteseo->display_ca_metaboxe = 1;
				$show_content_analysis = true;
			} else{
				$user = wp_get_current_user();
				$siteseo_user_role = current($user->roles);
				$siteseo_options = get_option('siteseo_advanced_option_name');
				
				$ca_metabox_roles = !empty($siteseo_options['security_metaboxe_ca_role']) ? $siteseo_options['security_metaboxe_ca_role'] : [];
				
				if(array_key_exists($siteseo_user_role, $ca_metabox_roles)){
					$siteseo->display_ca_metaboxe = 1;
					$show_content_analysis = false;
				}
			}
		}
		
		$metabox_data = self::metabox_data();
		self::metabox_form_html($metabox_data, $show_content_analysis);
	}
	
	static function metabox_data(){
		global $post, $siteseo;

		$metabox_data = [];
		$metabox_data['title'] = $post->post_title;
		$metabox_data['excerpt'] = $post->post_excerpt;

		// Getting the first paragraph of the post
		if(empty($metabox_data['excerpt'])){
			$post_seperated = get_extended($post->post_content);

			if(!empty($post_seperated['main'])){
				$metabox_data['excerpt'] = wp_strip_all_tags($post_seperated['main']);
			}
		}

		$metabox_data['keywords'] = get_post_meta($post->ID, 'siteseo_analysis_target_kw',true);
		$metabox_data['meta_title'] = get_post_meta($post->ID, '_siteseo_titles_title', true);
		$metabox_data['meta_desc'] = get_post_meta($post->ID, '_siteseo_titles_desc', true);
		$metabox_data['robots_canonical'] = get_post_meta($post->ID, '_siteseo_robots_canonical', true);
		$metabox_data['robots_primary_cat'] = get_post_meta($post->ID, '_siteseo_robots_primary_cat', true);
		$metabox_data['fb_title'] = get_post_meta($post->ID, '_siteseo_social_fb_title', true);
		$metabox_data['fb_desc'] = get_post_meta($post->ID, '_siteseo_social_fb_desc', true);
		$metabox_data['fb_img'] = get_post_meta($post->ID, '_siteseo_social_fb_img', true);
		$siteseo_social_fb_img_attachment_id = get_post_meta($post->ID, '_siteseo_social_fb_img_attachment_id', true);
		$siteseo_social_fb_img_width = get_post_meta($post->ID, '_siteseo_social_fb_img_width', true);
		$siteseo_social_fb_img_height = get_post_meta($post->ID, '_siteseo_social_fb_img_height', true);
		$metabox_data['x_title'] = get_post_meta($post->ID, '_siteseo_social_twitter_title', true);
		$metabox_data['x_desc'] = get_post_meta($post->ID, '_siteseo_social_twitter_desc', true);
		$metabox_data['x_img'] = get_post_meta($post->ID, '_siteseo_social_twitter_img', true);
		$siteseo_social_twitter_img_attachment_id = get_post_meta($post->ID, '_siteseo_social_twitter_img_attachment_id', true);
		$siteseo_social_twitter_img_width	= get_post_meta($post->ID, '_siteseo_social_twitter_img_width', true);
		$siteseo_social_twitter_img_height	= get_post_meta($post->ID, '_siteseo_social_twitter_img_height', true);
		$metabox_data['redirections_enabled'] = get_post_meta($post->ID, '_siteseo_redirections_enabled', true);
		$metabox_data['redirections_enabled_regex']	= get_post_meta($post->ID, '_siteseo_redirections_enabled_regex', true);
		$metabox_data['redirections_logged_status']	= get_post_meta($post->ID, '_siteseo_redirections_logged_status', true);
		$metabox_data['redirections_type'] = get_post_meta($post->ID, '_siteseo_redirections_type', true);
		$metabox_data['redirections_value'] = get_post_meta($post->ID, '_siteseo_redirections_value', true);
		$metabox_data['redirections_param'] = get_post_meta($post->ID, '_siteseo_redirections_param', true);

		$title_options = get_option('siteseo_titles_option_name', []);
		$metabox_data['disabled_robots'] = [
			'robots_index' => '',
			'robots_follow' => '',
			'archive' => '',
			'snippet' => '',
			'imageindex' => '',
		];

		if(post_password_required($post->ID) === true || !empty($title_options['titles_noindex'])){
			$metabox_data['robots_index'] = 'yes';
			$metabox_data['disabled_robots']['robots_index'] = 'disabled';
		} else{
			$metabox_data['robots_index'] = get_post_meta($post->ID, '_siteseo_robots_index', true);
		}
		
		if(!empty($title_options['titles_nofollow'])){
			$metabox_data['robots_follow'] = 'yes';
			$metabox_data['disabled_robots']['robots_follow'] = 'disabled';
		} else{
			$metabox_data['robots_follow'] = get_post_meta($post->ID, '_siteseo_robots_follow', true);
		}
		
		if(!empty($title_options['titles_noarchive'])){
			$metabox_data['robots_archive'] = 'yes';
			$metabox_data['disabled_robots']['archive'] = 'disabled';
		} else{
			$metabox_data['robots_archive'] = get_post_meta($post->ID, '_siteseo_robots_archive', true);
		}

		if(!empty($title_options['titles_nosnippet'])){
			$metabox_data['robots_snippet'] = 'yes';
			$metabox_data['disabled_robots']['snippet'] = 'disabled';
		} else{
			$metabox_data['robots_snippet'] = get_post_meta($post->ID, '_siteseo_robots_snippet', true);
		}

		if(!empty($title_options['titles_noimageindex'])){
			$metabox_data['robots_imageindex'] = 'yes';
			$metabox_data['disabled_robots']['imageindex'] = 'disabled';
		} else{
			$metabox_data['robots_imageindex'] = get_post_meta($post->ID, '_siteseo_robots_imageindex', true);
		}

		return $metabox_data;
	}
	
	static function metabox_term_data($term){
		global $tag;

		$metabox_data = [];

		$metabox_data['title'] = $tag->name;
		$metabox_data['excerpt'] = $tag->description;
		$metabox_data['meta_title'] = get_term_meta($term->term_id, '_siteseo_titles_title', true);
		$metabox_data['meta_desc'] = get_term_meta($term->term_id, '_siteseo_titles_desc', true);

		// Social Fields
		$metabox_data['fb_title'] = get_term_meta($term->term_id, '_siteseo_social_fb_title', true);
		$metabox_data['fb_desc'] = get_term_meta($term->term_id, '_siteseo_social_fb_desc', true);
		$metabox_data['fb_img'] = get_term_meta($term->term_id, '_siteseo_social_fb_img', true);
		$metabox_data['x_title'] = get_term_meta($term->term_id, '_siteseo_social_twitter_title', true);
		$metabox_data['x_desc'] = get_term_meta($term->term_id, '_siteseo_social_twitter_desc', true);
		$metabox_data['x_img'] = get_term_meta($term->term_id, '_siteseo_social_twitter_img', true);
		
		// Social Dimensions
		$fb_img_id = get_term_meta($term->term_id, '_siteseo_social_fb_img_attachment_id', true);
		$fb_img_width = get_term_meta($term->term_id, '_siteseo_social_fb_img_width', true);
		$fb_img_height = get_term_meta($term->term_id, '_siteseo_social_fb_img_height', true);
		$x_img_id = get_term_meta($term->term_id, '_siteseo_social_twitter_img_attachment_id', true);
		$x_img_width = get_term_meta($term->term_id, '_siteseo_social_twitter_img_width', true);
		$x_img_height = get_term_meta($term->term_id, '_siteseo_social_twitter_img_height', true);

		// Redirection fields
		$metabox_data['redirections_enabled'] = get_term_meta($term->term_id, '_siteseo_redirections_enabled', true);
		$metabox_data['redirections_logged_status']	= get_term_meta($term->term_id, '_siteseo_redirections_logged_status', true);
		$metabox_data['redirections_type'] = get_term_meta($term->term_id, '_siteseo_redirections_type', true);
		$metabox_data['redirections_value'] = get_term_meta($term->term_id, '_siteseo_redirections_value', true);
		$metabox_data['robots_canonical']= get_term_meta($term->term_id, '_siteseo_robots_canonical', true);

		$title_options = get_option('siteseo_titles_option_name', []);
		$metabox_data['disabled_robots'] = [
			'robots_index' => '',
			'robots_follow' => '',
			'archive' => '',
			'snippet' => '',
			'imageindex' => '',
		];

		if(!empty($title_options['titles_noindex'])){
			$metabox_data['robots_index'] = 'yes';
			$metabox_data['disabled_robots']['robots_index'] = 'disabled';
		} else {
			$metabox_data['robots_index'] = get_term_meta($term->term_id, '_siteseo_robots_index', true);
		}

		if(!empty($title_options['titles_nofollow'])){
			$metabox_data['robots_follow'] = 'yes';
			$metabox_data['disabled_robots']['robots_follow'] = 'disabled';
		} else {
			$metabox_data['robots_follow'] = get_term_meta($term->term_id, '_siteseo_robots_follow', true);
		}

		if(!empty($title_options['titles_noarchive'])){
			$metabox_data['robots_archive'] = 'yes';
			$metabox_data['disabled_robots']['archive'] = 'disabled';
		} else {
			$metabox_data['robots_archive'] = get_term_meta($term->term_id, '_siteseo_robots_archive', true);
		}

		if(!empty($title_options['titles_nosnippet'])){
			$metabox_data['robots_snippet'] = 'yes';
			$metabox_data['disabled_robots']['snippet'] = 'disabled';
		} else {
			$metabox_data['robots_snippet'] = get_term_meta($term->term_id, '_siteseo_robots_snippet', true);
		}

		if(!empty($title_options['titles_noimageindex'])){
			$metabox_data['robots_imageindex'] = 'yes';
			$metabox_data['disabled_robots']['imageindex'] = 'disabled';
		} else {
			$metabox_data['robots_imageindex'] = get_term_meta($term->term_id, '_siteseo_robots_imageindex', true);
		}

		return $metabox_data;
	}
		
	static function metabox_form_html(&$metabox_data, $show_content_analysis = false){
		global $siteseo, $post, $pagenow, $typenow;
		
		$pro_settings = isset($siteseo->pro) ? $siteseo->pro : '';
		
		// Checked x is enabled global settings
		$enable_x_card = !empty($siteseo->social_settings['social_twitter_card']);
		
		$data_attr = [];
		$data_attr['data_tax'] = '';
		$data_attr['termId'] = '';

		if('post-new.php' == $pagenow || 'post.php' == $pagenow){
			$data_attr['current_id'] = $post->ID;
			$data_attr['origin'] = 'post';
			$data_attr['title'] = get_the_title($data_attr['current_id']);
		} elseif('term.php' == $pagenow || 'edit-tags.php' == $pagenow){
			global $tag;
			$data_attr['current_id'] = $tag->term_id;
			$data_attr['termId'] = $tag->term_id;
			$data_attr['origin'] = 'term';
			$data_attr['data_tax'] = $tag->taxonomy;
			$data_attr['title'] = $tag->name;
		}

		$data_attr['isHomeId'] = get_option('page_on_front');
		if($data_attr['isHomeId'] === '0'){
			$data_attr['isHomeId'] = '';
		}

		// Static Data
		$home_url = home_url();
		$parsed_url = wp_parse_url($home_url);
		$host_uri = $parsed_url['host'];
		$social_placeholder = SITESEO_ASSETS_URL . '/img/social-placeholder.png';

		$metabox_tag_drop_kses = [
			'button' => [
				'class' => true,
				'type' => true,
			],
			'span' => [
				'class' => true,
			],
			'div' => [
				'class' => true,
				'style' => true,
			],
			'input' => [
				'type' => true,
				'class' => true,
				'name' => true,
				'spellcheck' => true,
				'placeholder' => true,
			],
			'ul' => true,
			'li' => [
				'class' => true,
				'data-*' => true,
				'tabindex' => true,
			]
		];
		
		// Preview of social title and description
		$current_screen = get_current_screen();

		if(!empty($current_screen) && $current_screen->base === 'term'){
			$term_id = isset($_GET['tag_ID']) ? (int)$_GET['tag_ID'] : 0;
			$taxonomy = $current_screen->taxonomy;
		} else{
			$post_type = $current_screen->post_type;
		}

		$site_title_placeholder = '';
		$site_desc_placeholder = '';
		$social_preview_title = '';
		$social_preview_desc = '';
		
		if(!empty($post_type) && !empty($siteseo->titles_settings['titles_single_titles'][$post_type]['title'])){
			$site_title_placeholder = $siteseo->titles_settings['titles_single_titles'][$post_type]['title'];
		} elseif(!empty($taxonomy) && !empty($siteseo->titles_settings['titles_tax_titles'][$taxonomy]['title'])){
			$site_title_placeholder = $siteseo->titles_settings['titles_tax_titles'][$taxonomy]['title'];
		} else{
			$site_title_placeholder = $metabox_data['title'];
		}
		
		if(!empty($post_type) && !empty($siteseo->titles_settings['titles_single_titles'][$post_type]['description'])){
			$site_desc_placeholder = $siteseo->titles_settings['titles_single_titles'][$post_type]['description'];
		} elseif(!empty($taxonomy) && !empty($siteseo->titles_settings['titles_tax_titles'][$taxonomy]['description'])){
			$site_desc_placeholder =  $siteseo->titles_settings['titles_tax_titles'][$taxonomy]['description'];
		} else{
			$site_desc_placeholder = $metabox_data['excerpt'];
		}

		if(!empty($metabox_data['meta_title'])){
			$social_preview_title = $metabox_data['meta_title'];
		} elseif(!empty($post_type) && !empty($siteseo->titles_settings['titles_single_titles'][$post_type]['title'])){
			$social_preview_title = $siteseo->titles_settings['titles_single_titles'][$post_type]['title'];
		} elseif(!empty($taxonomy) && !empty($siteseo->titles_settings['titles_tax_titles'][$taxonomy]['title'])){
			$social_preview_title = $siteseo->titles_settings['titles_tax_titles'][$taxonomy]['title'];
		} else{
			$social_preview_title = get_the_title();
		}
		
		
		if(!empty($metabox_data['meta_desc'])){
			$social_preview_desc = $metabox_data['meta_desc'];
		} elseif(!empty($post_type) && !empty($siteseo->titles_settings['titles_single_titles'][$post_type]['description'])){
			$social_preview_desc = $siteseo->titles_settings['titles_single_titles'][$post_type]['description'];
		} elseif(!empty($taxonomy) && !empty($siteseo->titles_settings['titles_tax_titles'][$taxonomy]['description'])){
			$social_preview_desc = $siteseo->titles_settings['titles_tax_titles'][$taxonomy]['description'];
		} else{
			$social_preview_desc = get_bloginfo('description');
		}
		
		if(empty($siteseo->advanced_settings['appearance_ca_metaboxe']) && !empty($show_content_analysis)){
			$siteseo_metabox_tabs = [
				'content-analysis' => __('Content Analysis', 'siteseo')
			];
		}

		$siteseo_metabox_tabs['title-settings'] = __('Title', 'siteseo');
		$siteseo_metabox_tabs['social-settings'] = __('Social', 'siteseo');
		$siteseo_metabox_tabs['advanced-settings'] = __('Advanced', 'siteseo');

		$siteseo_metabox_tabs['redirect'] = __('Redirects', 'siteseo');
		
		if(!empty($pro_settings['enable_structured_data']) && !empty($pro_settings['toggle_state_stru_data']) && !empty($show_content_analysis)){
			$siteseo_metabox_tabs['structured-data-types'] = __('Structured Data Types', 'siteseo');
		}
		
		if(!empty($pro_settings['toggle_state_video_sitemap']) && !empty($pro_settings['enable_video_sitemap']) && !empty($show_content_analysis)){
			$siteseo_metabox_tabs['video-sitemap'] = __('Video Sitemap', 'siteseo');
		}
		
		if(!empty($pro_settings['toggle_state_google_news']) && !empty($pro_settings['google_news']) && !empty($show_content_analysis)){
			$siteseo_metabox_tabs['google-news'] = __('Google News', 'siteseo');
		}

		echo'<div id="siteseo-metabox-wrapper" class="siteseo-metabox-wrapper">
		<div class="siteseo-metabox-tabs" data-home-id="'.esc_attr($data_attr['isHomeId']).'" data-term-id="'.esc_attr($data_attr['termId']).'" data_id="'.esc_attr($data_attr['current_id']).'" data_origin="'.esc_attr($data_attr['origin']).'" data_tax="'.esc_attr($data_attr['data_tax']).'">';
		
		wp_nonce_field('siteseo_metabox_nonce', 'siteseo_metabox_nonce');

		foreach($siteseo_metabox_tabs as $siteseo_metabox_tab => $siteseo_metabox_tab_title){
			$selected_metabox_tab = '';

			if($siteseo_metabox_tab === 'content-analysis'){
				$selected_metabox_tab = 'siteseo-metabox-tab-label-active';
			}

			if(empty($siteseo->display_ca_metaboxe) && $siteseo_metabox_tab === 'title-settings'){
				$selected_metabox_tab = 'siteseo-metabox-tab-label-active';
			}			
			
			echo'<div class="siteseo-metabox-tab-label '.esc_attr($selected_metabox_tab).'" data-tab="siteseo-metabox-tab-'.esc_attr($siteseo_metabox_tab).'">';
			
			if($siteseo_metabox_tab === 'advanced-settings' && !empty($metabox_data['robots_index'])){
				echo'<span class="dashicons dashicons-hidden siteseo-noindex-warning"></span>';
			}
			
			echo esc_html($siteseo_metabox_tab_title).'</div>';
		}
			
		$home_url = home_url();
		$parsed_home_url = wp_parse_url($home_url);
		
		$ai_logo = SITESEO_ASSETS_URL . '/img/siteseo-ai.svg';
		
		$meta_desc_percentage = '1';
		if(!empty($metabox_data['meta_desc'])){
			$meta_desc_percentage = (strlen($metabox_data['meta_desc'])/160)*100;
		} elseif(!empty($metabox_data['excerpt'])){
			$meta_desc_percentage = (strlen($metabox_data['excerpt'])/160)*100;
		}

		if(intval($meta_desc_percentage) > 100){
			$meta_desc_percentage = '100';
		}

		$meta_title_percentage = '1';
		if(!empty($metabox_data['meta_title'])){
			$meta_title_percentage = (strlen($metabox_data['meta_title'])/60)*100;
		} else if(!empty($metabox_data['title'])){
			$meta_title_percentage = (strlen($metabox_data['title'])/60)*100;
		}

		if(intval($meta_title_percentage) > 100){
			$meta_title_percentage = '100';
		}

		echo'</div>';
		if(empty($siteseo->advanced_settings['appearance_ca_metaboxe']) && $show_content_analysis){
			echo'<div class="siteseo-sidebar-tabs siteseo-sidebar-tabs-opened"><span>'.esc_html__('Content Analysis', 'siteseo').'</span><span class="siteseo-sidebar-tabs-arrow"><span class="dashicons dashicons-arrow-down-alt2"></span></span></div>
			<div class="siteseo-metabox-tab-content-analysis siteseo-metabox-tab" style="display:block;">';
				self::content_analysis($post);
			echo'</div>';
		}
		
		$allowed_suggestion_tags = array(
			'button' => array(
				'class' => array(),
				'type' => array(),
			),
			'span' => array(
				'id' => array(),
				'class' => array(),
			),
			'div' => array(
				'class' => array(),
				'style' => array(),
			),
			'input' => array(
				'type' => array(),
				'class' => true,
				'placeholder' => true,
			)
		);
		
		// if all x-settings empty then use same as og option enabled
		$use_og_settings = (empty($metabox_data['x_title']) && empty($metabox_data['x_desc']) && empty($metabox_data['x_img']));
		
		// show image in preview
		if(!empty($metabox_data['x_img'])){
			$x_image = $metabox_data['x_img'];
		} else if(!empty($metabox_data['fb_img']) && !empty($use_og_settings)){ // use og enabled
			$x_image = $metabox_data['fb_img'];
		} else{
			$x_image = $social_placeholder;
		}
		
		// x preview title
		if(!empty($metabox_data['x_title'])){
			$x_title_preview = $metabox_data['x_title'];
		} else if($metabox_data['fb_title'] &&  !empty($use_og_settings)){
			$x_title_preview = $metabox_data['fb_title'];
		} else {
			$x_title_preview = $social_preview_title;
		}
		
		echo'<div class="siteseo-sidebar-tabs '.(empty($siteseo->display_ca_metaboxe) ? 'siteseo-sidebar-tabs-opened' : '').'"><span>'.esc_html__('Title', 'siteseo').'</span><span class="siteseo-sidebar-tabs-arrow"><span class="dashicons dashicons-arrow-down-alt2"></span></span></div>
		<div class="siteseo-metabox-tab-title-settings siteseo-metabox-tab" style="'.(empty($siteseo->display_ca_metaboxe) ? 'display:block;' : '').'">
		<div class="siteseo-metabox-option-wrap">
			<div class="siteseo-metabox-label-wrap">
				<label>'.esc_html__('Search Preview','siteseo').'</label>
			</div>
			<div class="siteseo-metabox-search-preview">
				<div class="siteseo-search-preview-toggle">
					<span id="siteseo-metabox-search-pc" style="display:none">'.esc_html__('Show Desktop version', 'siteseo').'</span>
					<span id="siteseo-metabox-search-mobile">'.esc_html__('Show Mobile version', 'siteseo').'</span>
				</div>
				<div class="siteseo-search-preview-desktop">
					<div class="siteseo-search-preview-metadata">
						<div style="background-color: #e2eeff; border: 1px solid #e2eeff; height:28px; width:28px; padding: 3px; border-radius: 50px; display:flex; align-items:center; justify-content:center;">
						<svg focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#0060f0"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"></path></svg>
						</div>
						<div class="siteseo-search-preview-metadata-link">
							<div>'.esc_url($parsed_home_url['host']).'</div>
							<div><cite>'.esc_url(home_url()).'</cite></div>
						</div>
						<div>
						<svg focusable="false" xmlns="http://www.w3.org/2000/svg" width="20" viewBox="0 0 24 24"><path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"></path></svg>
						</div>
					</div>
					<h3>'.(!empty($metabox_data['meta_title']) ? esc_html(\SiteSEO\TitlesMetas::replace_variables($metabox_data['meta_title'], true)) : (!empty($site_title_placeholder) ? esc_html(\SiteSEO\TitlesMetas::replace_variables($site_title_placeholder, true)) : 'Post Title here')).'</h3>
					<div class="siteseo-search-preview-description">
					'.(!empty($metabox_data['meta_desc']) ? esc_html(\SiteSEO\TitlesMetas::replace_variables($metabox_data['meta_desc'], true)) : (!empty($site_desc_placeholder) ? esc_html(substr(\SiteSEO\TitlesMetas::replace_variables($site_desc_placeholder, true), 0, 160)) : 'Post description')).'
					</div>
					
				</div>
			</div>
		</div>
		<div class="siteseo-metabox-option-wrap">
			<div class="siteseo-metabox-label-wrap">
				<label for="siteseo_titles_title_meta">'.esc_html__('Title', 'siteseo').'</label>
			</div>
			<div class="siteseo-metabox-input-wrap">
				<div class="siteseo-metabox-tags">
					<button type="button" class="siteseo-metabox-tag" data-tag="%%post_title%%"><span class="dashicons dashicons-plus"></span> Post Title</button>
					<button type="button" class="siteseo-metabox-tag" data-tag="%%sitetitle%%"><span class="dashicons dashicons-plus"></span> Site Title</button>
					<button type="button" class="siteseo-metabox-tag" data-tag="%%sep%%"><span class="dashicons dashicons-plus"></span>Seperator</button>'.wp_kses(siteseo_suggestion_button_metabox(), $allowed_suggestion_tags);
					if(defined('SITESEO_PRO_VERSION') && !defined('SITEPAD')){
						echo'<span class="siteseo-ai-modal-open" data-context="site-page" title="SiteSEO AI Assistant"><img src="'.esc_url($ai_logo).'" alt="AI Assistant Icon">'.'<label class="siteseo-ai-modal-label">'.esc_html__('Ask AI', 'siteseo').'</label></span>';
					}
				echo'</div>
				<input type="text" id="siteseo_titles_title_meta" class="siteseo_titles_title_meta" name="siteseo_titles_title" placeholder="'.(!empty($site_title_placeholder) ? esc_attr(\SiteSEO\TitlesMetas::replace_variables($site_title_placeholder, true)) : esc_html__('Enter title for this post', 'siteseo')).'" value="'.(!empty($metabox_data['meta_title']) ? esc_html($metabox_data['meta_title']) : '').'"/>
				<div class="siteseo-metabox-limits">
					<span class="siteseo-metabox-limits-meter"><span style="width:'.esc_attr($meta_title_percentage).'%"></span></span>
					<span class="siteseo-metabox-limits-numbers"><em>'.esc_html(strlen($metabox_data['meta_title'])).'</em> out of 60 max recommended characters</span>
				</div>
			</div>
		</div>
		<div class="siteseo-metabox-option-wrap">
			<div class="siteseo-metabox-label-wrap">
				<label for="siteseo_titles_desc_meta">'.esc_html__('Meta Description', 'siteseo').'</label>
			</div>
			<div class="siteseo-metabox-input-wrap">
				<div class="siteseo-metabox-tags">
					<button type="button" class="siteseo-metabox-tag" data-tag="%%post_excerpt%%"><span class="dashicons dashicons-plus"></span> Post Excerpt</button>'.wp_kses(siteseo_suggestion_button_metabox(), $allowed_suggestion_tags);
					if(defined('SITESEO_PRO_VERSION') && !defined('SITEPAD')){
						echo'<span class="siteseo-ai-modal-open" data-context="site-page" title="SiteSEO AI Assistant"><img src="'.esc_url($ai_logo).'" alt="AI Assistant Icon">'.'<label class="siteseo-ai-modal-label">'.esc_html__('Ask AI', 'siteseo').'</label></span>';
					}
				echo'</div>
				<textarea id="siteseo_titles_desc_meta" class="siteseo_titles_desc_meta" name="siteseo_titles_desc" rows="2" placeholder="'.(!empty($site_desc_placeholder) ? esc_attr(substr(\SiteSEO\TitlesMetas::replace_variables($site_desc_placeholder, true), 0, 160)) : esc_html__('Enter description for this post', 'siteseo')).'">'.(!empty($metabox_data['meta_desc']) ? esc_html($metabox_data['meta_desc']) : '').'</textarea>
				<div class="siteseo-metabox-limits">
					<span class="siteseo-metabox-limits-meter"><span style="width:'.esc_attr($meta_desc_percentage).'%"></span></span>
					<span class="siteseo-metabox-limits-numbers"><em>'.esc_html(strlen($metabox_data['meta_desc'])).'</em> out of 160 max recommended characters</span>
				</div>
			</div>
		</div>
		</div>

		<div class="siteseo-sidebar-tabs"><span>'.esc_html__('Social', 'siteseo').'</span><span class="siteseo-sidebar-tabs-arrow"><span class="dashicons dashicons-arrow-down-alt2"></span></span></div>
		<div class="siteseo-metabox-tab-social-settings siteseo-metabox-tab">
			<div class="siteseo-metabox-subtabs">
				<div class="siteseo-metabox-tab-label siteseo-metabox-tab-label-active" data-tab="siteseo-metabox-tab-fb-settings">Facebook</div>
				<div class="siteseo-metabox-tab-label" data-tab="siteseo-metabox-tab-x-settings">X(Twitter)</div>
			</div>
			<div class="siteseo-metabox-tab-fb-settings siteseo-metabox-tab" style="display:block;">
			<div class="siteseo-metabox-option-wrap">
				<div class="siteseo-metabox-label-wrap">
					<label>'.esc_html__('Preview', 'siteseo').'</label>
				</div>
				<div class="siteseo-metabox-fb-preview">
					<div class="siteseo-metabox-fb-image">
						<img src="'.(!empty($metabox_data['fb_img']) ? esc_url($metabox_data['fb_img']) : esc_url($social_placeholder)).'" alt="Facebook preview"/>
					</div>
					<div class="siteseo-metabox-fb-data">
						<div class="siteseo-metabox-fb-host">'.(!empty($host_uri) ? esc_html($host_uri) : '').'</div>
						<div class="siteseo-metabox-fb-title">'.(!empty($metabox_data['fb_title']) ? esc_html(\SiteSEO\TitlesMetas::replace_variables($metabox_data['fb_title'], true)) : esc_html(\SiteSEO\TitlesMetas::replace_variables($social_preview_title, true))).'</div>
						<div class="siteseo-metabox-fb-desc">'.(!empty($metabox_data['fb_desc']) ? esc_html(\SiteSEO\TitlesMetas::replace_variables($metabox_data['fb_desc'], true)) : esc_html(\SiteSEO\TitlesMetas::replace_variables($social_preview_desc, true))).'</div>
					</div>
				</div>
			</div>
			<div class="siteseo-metabox-option-wrap">
				<div class="siteseo-metabox-label-wrap">
					<label for="siteseo_social_fb_title_meta">'.esc_html__('Facebook Title', 'siteseo').'</label>
				</div>
				<div class="siteseo-metabox-input-wrap">
					<input type="text" id="siteseo_social_fb_title_meta" class="siteseo_social_fb_title_meta" name="siteseo_social_fb_title" placeholder="'.(!empty($social_preview_title) ? esc_html(\SiteSEO\TitlesMetas::replace_variables($social_preview_title, true)) : '').'" value="'.(!empty($metabox_data['fb_title']) ? esc_attr($metabox_data['fb_title']) : '').'" />
					<div class="siteseo-metabox-tags">
						<button type="button" class="siteseo-facebook-title" data-tag="%%post_title%%"><span class="dashicons dashicons-plus"></span> Post Title</button>
						<button type="button" class="siteseo-facebook-title" data-tag="%%sitetitle%%"><span class="dashicons dashicons-plus"></span> Site Title</button>
						<button type="button" class="siteseo-facebook-title" data-tag="%%sep%%"><span class="dashicons dashicons-plus"></span>Seperator</button>'.wp_kses(siteseo_suggestion_button_metabox(), $allowed_suggestion_tags);
						if(defined('SITESEO_PRO_VERSION') && !defined('SITEPAD')){
							echo'<span class="siteseo-ai-modal-open" data-context="og" title="SiteSEO AI Assistant"><img src="'.esc_url($ai_logo).'" alt="AI Assistant Icon">'.'<label class="siteseo-ai-modal-label">'.esc_html__('Ask AI', 'siteseo').'</label></span>';
						}
					echo'</div>
				</div>
			</div>

			<div class="siteseo-metabox-option-wrap">
				<div class="siteseo-metabox-label-wrap">
					<label for="siteseo_social_fb_desc_meta">'.esc_html__('Facebook description', 'siteseo').'</label>
				</div>
				<div class="siteseo-metabox-input-wrap">
					<textarea id="siteseo_social_fb_desc_meta" class="siteseo_social_fb_desc_meta" name="siteseo_social_fb_desc" rows="2" placeholder="'.(!empty($social_preview_desc) ? esc_html(\SiteSEO\TitlesMetas::replace_variables($social_preview_desc, true)) : '').'">'.(!empty($metabox_data['fb_desc']) ? esc_html($metabox_data['fb_desc']) : '').'</textarea>
					<div class="siteseo-metabox-tags">
						<button type="button" class="siteseo-facebook-desc" data-tag="%%post_excerpt%%"><span class="dashicons dashicons-plus"></span> Post Excerpt</button>'.wp_kses(siteseo_suggestion_button_metabox(), $allowed_suggestion_tags);
						if(defined('SITESEO_PRO_VERSION') && !defined('SITEPAD')){
							echo'<span class="siteseo-ai-modal-open" data-context="og" title="SiteSEO AI Assistant"><img src="'.esc_url($ai_logo).'" alt="AI Assistant Icon">'.'<label class="siteseo-ai-modal-label">'.esc_html__('Ask AI', 'siteseo').'</label></span>';
						}
					echo'</div>
				</div>
			</div>

			<div class="siteseo-metabox-option-wrap">
				<div class="siteseo-metabox-label-wrap">
					<label for="siteseo_social_fb_img_meta">'.esc_html__('Facebook Thumbnail', 'siteseo').'</label>
				</div>
				<div class="siteseo-metabox-input-wrap">
					<span style="color:red; font-weight:bold; display:none;"></span>
					<input type="text" id="siteseo_social_fb_img_meta" name="siteseo_social_fb_img" class="siteseo_social_fb_img_meta" placeholder="'.esc_html__('Enter URL of the Image you want to be shown as the Facebook image', 'siteseo').'" value="'.(!empty($metabox_data['fb_img']) ? esc_url($metabox_data['fb_img']) : '').'"/>
					<p class="description">'.esc_html__('Minimum size: 200x200px, ideal ratio 1.91:1, 8Mb max. (eg: 1640x856px or 3280x1712px for retina screens).', 'siteseo').'</p>
					<input type="hidden" name="siteseo_social_fb_img_attachment_id" id="siteseo_social_fb_img_attachment_id" class="siteseo_social_fb_img_attachment_id" value="">
					<input type="hidden" name="siteseo_social_fb_img_width" id="siteseo_social_fb_img_width" class="siteseo_social_fb_img_width" value="">
					<input type="hidden" name="siteseo_social_fb_img_height" id="siteseo_social_fb_img_height" class="siteseo_social_fb_img_height" value="">
					<button class="components-button is-secondary" id="siteseo_social_fb_img_upload">Upload Image</button>
				</div>
			</div>
			</div>

			<div class="siteseo-metabox-tab-x-settings siteseo-metabox-tab">
			<div class="siteseo-metabox-option-wrap">
				<div class="siteseo-metabox-label-wrap">
					<label>'.esc_html__('Preview','siteseo').'</label>
				</div>
				<div>
				<div class="siteseo-metabox-x-preview">
					<div class="siteseo-metabox-x-image">
						<img src="'.($x_image ? esc_url($x_image) : '').'" alt="X preview"/>
					</div>
					<div class="siteseo-metabox-x-data">
						<div class="siteseo-metabox-x-title">'.(!empty($x_title_preview) ? esc_html(\SiteSEO\TitlesMetas::replace_variables($x_title_preview, true)) : '').'</div>
					</div>
				</div>
				<div class="siteseo-metabox-x-host">From '.(!empty($host_uri) ? esc_html($host_uri) : '').'</div>
				</div>
			</div>';
			
			if(!empty($enable_x_card)){
				
				echo'<div class="siteseo-metabox-option-wrap">
					<div class="siteseo-metabox-label-wrap">
						<label>'.esc_html__('Use same as Facebook settings', 'siteseo').'</label>
					</div>
					<div class="siteseo-metabox-input-wrap">
						<label class="siteseo-x-toggle-switch">';
							$checked = !empty($metabox_data['x_title'] || $metabox_data['x_desc'] || $metabox_data['x_img']) ? '' : "checked=checked";
							
							echo'<input name="siteseo_social_use_og_settings" type="checkbox" '.esc_html($checked).'/>
							<span class="siteseo-x-slider"></span>
						</label>
					</div>
				</div>';
			}
			
			if(!empty($enable_x_card)){
				echo'<div class="siteseo-x-settings" '.(!empty($use_og_settings) ? 'style="display:none;"' : '').'>';
			}
			
			echo'<div class="siteseo-metabox-option-wrap">
				<div class="siteseo-metabox-label-wrap">
					<label for="siteseo_social_twitter_title_meta">'.esc_html__('X Title', 'siteseo').'</label>
				</div>
				<div class="siteseo-metabox-input-wrap">
					<input type="text" id="siteseo_social_twitter_title_meta" class="siteseo_social_twitter_title_meta" name="siteseo_social_twitter_title" placeholder="'.(!empty($social_preview_title) ? esc_html(\SiteSEO\TitlesMetas::replace_variables($social_preview_title, true)) : '').'" value="'.(!empty($metabox_data['x_title']) ? esc_attr($metabox_data['x_title']) : '').'" />
					<div class="siteseo-metabox-tags">
						<button type="button" class="siteseo-x-title" data-tag="%%post_title%%"><span class="dashicons dashicons-plus"></span> Post Title</button>
						<button type="button" class="siteseo-x-title" data-tag="%%sitetitle%%"><span class="dashicons dashicons-plus"></span> Site Title</button>
						<button type="button" class="siteseo-x-title" data-tag="%%sep%%"><span class="dashicons dashicons-plus"></span>Seperator</button>'.wp_kses(siteseo_suggestion_button_metabox(), $allowed_suggestion_tags);
						if(defined('SITESEO_PRO_VERSION') && !defined('SITEPAD')){
							echo'<span class="siteseo-ai-modal-open" data-context="twitter" title="SiteSEO AI Assistant"><img src="'.esc_url($ai_logo).'" alt="AI Assistant Icon">'.'<label class="siteseo-ai-modal-label">'.esc_html__('Ask AI', 'siteseo').'</label></span>';
						}
					echo'</div>
				</div>
			</div>
			
			<div class="siteseo-metabox-option-wrap">
				<div class="siteseo-metabox-label-wrap">
					<label for="siteseo_social_twitter_desc_meta">'.esc_html__('X description', 'siteseo').'</label>
				</div>
				<div class="siteseo-metabox-input-wrap">
					<textarea id="siteseo_social_twitter_desc_meta" class="siteseo_social_twitter_desc_meta" name="siteseo_social_twitter_desc" rows="2" placeholder="'.(!empty($social_preview_desc) ? esc_html(\SiteSEO\TitlesMetas::replace_variables($social_preview_desc, true)) : '').'">'.(!empty($metabox_data['x_desc']) ? esc_attr($metabox_data['x_desc']) : '').'</textarea>
					<div class="siteseo-metabox-tags">
						<button type="button" class="siteseo-x-desc" data-tag="%%post_excerpt%%"><span class="dashicons dashicons-plus"></span> Post Excerpt</button>'.wp_kses(siteseo_suggestion_button_metabox(), $allowed_suggestion_tags);
						if(defined('SITESEO_PRO_VERSION') && !defined('SITEPAD')){
							echo'<span class="siteseo-ai-modal-open" data-context="twitter" title="SiteSEO AI Assistant"><img src="'.esc_url($ai_logo).'" alt="AI Assistant Icon">'.'<label class="siteseo-ai-modal-label">'.esc_html__('Ask AI', 'siteseo').'</label></span>';
						}
					echo'</div>
				</div>
			</div>
			
			<div class="siteseo-metabox-option-wrap">
				<div class="siteseo-metabox-label-wrap">
					<label for="siteseo_social_twitter_img_meta">'.esc_html__('X Thumbnail', 'siteseo').'</label>
				</div>
				<div class="siteseo-metabox-input-wrap">
					<span style="color:red; font-weight:bold; display:none;"></span>
					<input type="text" id="siteseo_social_twitter_img_meta" class="siteseo_social_twitter_img_meta" name="siteseo_social_twitter_img" placeholder="'.esc_html__('Enter URL of the Image you want to be shown as the X image', 'siteseo').'" value="'.(!empty($metabox_data['x_img']) ? esc_attr($metabox_data['x_img']) : '').'" />
					<p class="description">'.esc_html__('Minimum size: 144x144px (300x157px with large card enabled), ideal ratio 1:1 (2:1 with large card), 5Mb max.', 'siteseo').'</p>
					<input type="hidden" name="siteseo_social_twitter_img_attachment_id" id="siteseo_social_twitter_img_attachment_id" class="siteseo_social_twitter_img_attachment_id" value="">
					<input type="hidden" name="siteseo_social_twitter_img_width" id="siteseo_social_twitter_img_width" class="siteseo_social_twitter_img_width" value="">
					<input type="hidden" name="siteseo_social_twitter_img_height" id="siteseo_social_twitter_img_height" class="siteseo_social_twitter_img_height" value="">
					<button class="components-button is-secondary" id="siteseo_social_twitter_img_upload">Upload Image</button>
				</div>
			</div>';

			if(!empty($enable_x_card)){
				echo'</div>';
			}
			
			echo'</div>
		</div>';
		
		if(!empty($pro_settings['enable_structured_data']) && !empty($pro_settings['toggle_state_stru_data']) && !empty($show_content_analysis)){
			echo'<div class="siteseo-sidebar-tabs"><span>'.esc_html__('Structured Data Types', 'siteseo').'</span><span class="siteseo-sidebar-tabs-arrow"><span class="dashicons dashicons-arrow-down-alt2"></span></span></div>
			<div class="siteseo-metabox-tab-structured-data-types siteseo-metabox-tab">';
				// Pro fearure
				do_action('siteseo_display_structured_data_types');
			echo'</div>';
		}
		
		// video sitemap
		if(!empty($pro_settings['toggle_state_video_sitemap']) && !empty($pro_settings['enable_video_sitemap']) && !empty($show_content_analysis)){
			echo'<div class="siteseo-sidebar-tabs"><span>'.esc_html__('Video Sitemap', 'siteseo').'</span><span class="siteseo-sidebar-tabs-arrow"><span class="dashicons dashicons-arrow-down-alt2"></span></span></div>
			<div class="siteseo-metabox-tab-video-sitemap siteseo-metabox-tab">';
				do_action('siteseo_display_video_sitemap');
			echo'</div>';
		}
		
		// gooogle news exclude 
		if(!empty($pro_settings['toggle_state_google_news']) && !empty($pro_settings['google_news']) && !empty($show_content_analysis)){
			echo'<div class="siteseo-sidebar-tabs"><span>'.esc_html__('Google News', 'siteseo').'</span><span class="siteseo-sidebar-tabs-arrow"><span class="dashicons dashicons-arrow-down-alt2"></span></span></div>
			<div class="siteseo-metabox-tab-google-news siteseo-metabox-tab">';
				do_action('siteseo_display_google_news');
			echo'</div>';
		}
		
		echo'<div class="siteseo-sidebar-tabs"><span>';

		if(!empty($metabox_data['robots_index'])){
			echo'<span class="dashicons dashicons-hidden siteseo-noindex-warning"></span>';
		}
		
		echo esc_html__('Advanced', 'siteseo').'</span><span class="siteseo-sidebar-tabs-arrow"><span class="dashicons dashicons-arrow-down-alt2"></span></span></div>
		
		<div class="siteseo-metabox-tab-advanced-settings siteseo-metabox-tab">
		<div class="siteseo-metabox-option-wrap">
			<div class="siteseo-metabox-label-wrap">
				<label for="siteseo_social_twitter_img_meta">'.esc_html__('Meta Robots Settings', 'siteseo').'</label>
				<p class="description">'.
				/* translators: %s represents the degree of severity */
				wp_kses_post(sprintf(__('You cannot uncheck a checkbox? This is normal, and it\'s most likely defined in the <a href="%s">global settings of the plugin.</a>', 'siteseo'), esc_url(admin_url('admin.php?page=siteseo-titles#tab=tab_siteseo_titles_single')))).'</p>
			</div>
			<div class="siteseo-metabox-input-wrap">';
				
			$robots_options = [
				'siteseo_robots_index_meta' => [
					'desc' => __('Do not display this page in search engine results / Sitemaps', 'siteseo'),
					'short' => 'noindex',
					'name' => 'siteseo_robots_index',
					'checked' => $metabox_data['robots_index'],
					'disabled' => $metabox_data['disabled_robots']['robots_index']
				],
				'siteseo_robots_follow_meta' => [
					'desc' => __('Do not follow links for this page', 'siteseo'),
					'short' => 'nofollow',
					'name' => 'siteseo_robots_follow',
					'checked' => $metabox_data['robots_follow'],
					'disabled' => $metabox_data['disabled_robots']['robots_follow']
				],
				'siteseo_robots_imageindex_meta' => [
					'desc' => __('Do not index images for this page', 'siteseo'),
					'short' => 'noimageindex',
					'name' => 'siteseo_robots_imageindex',
					'checked' => $metabox_data['robots_imageindex'],
					'disabled' => $metabox_data['disabled_robots']['imageindex']
				],
				'siteseo_robots_archive_meta' => [
					'desc' => __('Do not display a "Cached" link in the Google search results', 'siteseo'),
					'short' => 'noarchive',
					'name' => 'siteseo_robots_archive',
					'checked' => $metabox_data['robots_archive'],
					'disabled' => $metabox_data['disabled_robots']['archive']
				],
				'siteseo_robots_snippet_meta' => [
					'desc' => __('Do not display a description in search results for this page', 'siteseo'),
					'short' => 'nosnippet',
					'name' => 'siteseo_robots_snippet',
					'checked' => $metabox_data['robots_snippet'],
					'disabled' => $metabox_data['disabled_robots']['snippet']
				]
			];

			foreach($robots_options as $robots_id => $robots_option){
				$checked = '';
				if(!empty($robots_option['checked'])){
					$checked = 'checked';
				}
				
				$disabled = '';
				if(!empty($robots_option['disabled'])){
					$disabled = 'disabled';
					$robots_option['name'] = '';
				}

				echo'<label for="'.esc_attr($robots_id).'" style="display:block; margin-bottom:5px;">
					<input type="checkbox" value="yes" id="'.esc_attr($robots_id).'" class="siteseo-metabox-robots-options" name="'.esc_attr($robots_option['name']).'" '.esc_attr($checked).' '.esc_attr($disabled).'/>
					'.esc_html($robots_option['desc']).' ('.esc_html($robots_option['short']).')
				</label>';
			}
			
			echo'</div>
		</div>
		<div class="siteseo-metabox-option-wrap">
			<div class="siteseo-metabox-label-wrap">
				<label for="siteseo_robots_canonical_meta">'.esc_html__('Canonical URL', 'siteseo').'</label>
			</div>
			<div class="siteseo-metabox-input-wrap">
				<input id="siteseo_robots_canonical_meta" type="text" name="siteseo_robots_canonical" placeholder="'.esc_url(get_the_permalink()).'" value="'.(!empty($metabox_data['robots_canonical']) ? esc_html($metabox_data['robots_canonical']) : '').'">
			</div>
		</div>';

		if(!empty($pagenow) && !empty($typenow) && ($pagenow == 'post.php' || $pagenow == 'post-new.php') && ($typenow == 'post' || $typenow == 'product')){

			$categories = (object)[];
			if($typenow == 'product'){
				$categories = get_the_terms($post, 'product_cat');
			} else{
				$categories = get_categories();
			}
			
			if(!empty($categories) && !is_wp_error($categories)){
				echo'<div class="siteseo-metabox-option-wrap">
				<div class="siteseo-metabox-label-wrap">
					<label for="siteseo_robots_canonical_meta">'.esc_html__('Select a primary category', 'siteseo').'</label>
				</div>
				<div class="siteseo-metabox-input-wrap">
					<select id="siteseo_robots_primary_cat" name="siteseo_robots_primary_cat">';
						foreach($categories as $category){
							$selected = '';
							if(!empty($metabox_data['robots_primary_cat']) && $metabox_data['robots_primary_cat'] == $category->term_id){
								$selected = 'selected';
							}

							echo'<option value="'.esc_attr($category->term_id).'" '.esc_attr($selected).'>'.esc_html($category->name).'</option>'; 
						}
					echo'</select>
				</div>
			</div>';
			}
		}
		echo'</div>

		<div class="siteseo-sidebar-tabs"><span>'.esc_html__('Redirects', 'siteseo').'</span>
			<span class="siteseo-sidebar-tabs-arrow"><span class="dashicons dashicons-arrow-down-alt2"></span>
		</span></div>
		
		<div class="siteseo-metabox-tab-redirect siteseo-metabox-tab">
			<div class="siteseo-metabox-option-wrap">
				<div class="siteseo-metabox-label-wrap">
					<label for="siteseo_redirections_enabled_meta">'.esc_html__('Enable redirection', 'siteseo').'</label>
				</div>
				<div class="siteseo-metabox-input-wrap">
					<input id="siteseo_redirections_enabled_meta" type="checkbox" name="siteseo_redirections_enabled" value="1" '.(!empty($metabox_data['redirections_enabled']) ? 'checked' : '').'>
				</div>
			</div>
			<div class="siteseo-metabox-option-wrap">
				<div class="siteseo-metabox-label-wrap">
					<label for="siteseo_redirections_enabled_meta">'.esc_html__('Login status', 'siteseo').'</label>
				</div>
				<div class="siteseo-metabox-input-wrap">
					<select name="siteseo_redirections_logged_status" id="siteseo_redirections_logged_status">
						<option value="both" '.(!empty($metabox_data['redirections_logged_status']) && $metabox_data['redirections_logged_status'] == 'both' ? 'selected' : '').'>'.esc_html__('All', 'siteseo').'</option>
						<option value="only_logged_in" '.(!empty($metabox_data['redirections_logged_status']) && $metabox_data['redirections_logged_status'] == 'only_logged_in' ? 'selected' : '').'>'.esc_html__('Only when logged In', 'siteseo').'</option>
						<option value="only_not_logged_in" '.(!empty($metabox_data['redirections_logged_status']) && $metabox_data['redirections_logged_status'] == 'only_not_logged_in' ? 'selected' : '').'>'.esc_html__('Only when not logged in', 'siteseo').'</option>
					</select>
				</div>
			</div>
			<div class="siteseo-metabox-option-wrap">
				<div class="siteseo-metabox-label-wrap">
					<label for="siteseo_redirections_type">'.esc_html__('Redirection Type', 'siteseo').'</label>
				</div>
				<div class="siteseo-metabox-input-wrap">
					<select name="siteseo_redirections_type" id="siteseo_redirections_type">
						<option value="301" '.(!empty($metabox_data['redirections_type']) && $metabox_data['redirections_type'] == '301' ? 'selected' : '').'>'.esc_html__('301 Moved Permanently', 'siteseo').'</option>
						<option value="302" '.(!empty($metabox_data['redirections_type']) && $metabox_data['redirections_type'] == '302' ? 'selected' : '').'>'.esc_html__('302 Found / Moved Temporarily', 'siteseo').'</option>
						<option value="307" '.(!empty($metabox_data['redirections_type']) && $metabox_data['redirections_type'] == '307' ? 'selected' : '').'>'.esc_html__('307 Moved Temporarily', 'siteseo').'</option>';
						if($typenow === 'siteseo_404'){
							echo'<option value="410" '.(!empty($metabox_data['redirections_type']) && $metabox_data['redirections_type'] == '410' ? 'selected' : '').'>'.esc_html__('410 Gone', 'siteseo').'</option>
							<option value="451" '.(!empty($metabox_data['redirections_type']) && $metabox_data['redirections_type'] == '451' ? 'selected' : '').'>'. esc_html__('451 Unavailable For Legal Reasons', 'siteseo').'</option>';
						}
					echo'</select>
				</div>
		</div>
		<div class="siteseo-metabox-option-wrap">
			<div class="siteseo-metabox-label-wrap">
				<label for="siteseo_redirections_value_meta">'.esc_html__('Redirection URL', 'siteseo').'</label>
			</div>
			<div class="siteseo-metabox-input-wrap">
				<input id="siteseo_redirections_value_meta" type="text" name="siteseo_redirections_value" value="'.(!empty($metabox_data['redirections_value']) ? esc_attr($metabox_data['redirections_value']): '').'">
			</div>
			<input type="hidden" id="analysis_tabs" name="analysis_tabs" value="'.esc_html(wp_json_encode(array_keys($siteseo_metabox_tabs))).'">
		</div>';
		// Note
		if($typenow === 'siteseo_404'){
			echo'<div class="siteseo-metabox-option-wrap">
				<div class="siteseo-metabox-label-wrap">
					<label for="siteseo_redirections_param">'.esc_html__('Query parameters', 'siteseo').'</label>
				</div>
				<div class="siteseo-metabox-input-wrap">
					<select name="siteseo_redirections_param" id="siteseo_redirections_param">
						<option value="exact_match" '.(!empty($metabox_data['redirections_param']) && $metabox_data['redirections_param'] == 'exact_match' ? 'selected' : '').'>'.esc_html__('Exactly parameters with exact match', 'siteseo').'</option>
						<option value="without_param" '.(!empty($metabox_data['redirections_param']) && $metabox_data['redirections_param'] == 'without_param' ? 'selected' : '').'>'.esc_html__('Exclude all parameters', 'siteseo').'</option>
						<option value="with_ignored_param" '.(!empty($metabox_data['redirections_param']) && $metabox_data['redirections_param'] == 'with_ignored_param' ? 'selected' : '').'>'.esc_html__('Exclude all parameters and pass them to the redirection', 'siteseo').'</option>
					</select>
				</div>
			</div>';
		}

		echo'</div>
		</div>';

	}

	static function content_analysis($post){
		
		wp_nonce_field('siteseo_ca_nonce', 'siteseo_content_analysis_nonce');

		$siteseo_real_preview = [
			'siteseo_nonce' => wp_create_nonce('siteseo_real_preview_nonce'),
			'siteseo_real_preview' => admin_url('admin-ajax.php'),
			'i18n' => ['progress' => __('Analysis in progress...', 'siteseo')],
			'ajax_url' => admin_url('admin-ajax.php'),
			'get_preview_meta_title' => wp_create_nonce('get_preview_meta_title'),
			'realtime_nonce' => wp_create_nonce('siteseo_realtime_nonce'),
		];

		$metabox_data = [];

		$metabox_data['analysis_target_kw'] = get_post_meta($post->ID, '_siteseo_analysis_target_kw', true);
		$metabox_data['analysis_data'] = get_post_meta($post->ID, '_siteseo_analysis_data', true);
		$metabox_data['readibility_data'] = get_post_meta($post->ID, '_siteseo_readibility_data', true);
		$metabox_data['meta_title'] = get_post_meta($post->ID, '_siteseo_titles_title', true);
		$metabox_data['meta_desc'] = get_post_meta($post->ID, '_siteseo_titles_desc', true);
		
		$title_options = get_option('siteseo_titles_option_name', []);

		if(self::titles_single_cpt_noindex_option() || !empty($title_options['titles_noindex']) || true === post_password_required($post->ID)){
			$metabox_data['robots_index'] = 'yes';
		} else {
			$metabox_data['robots_index'] = get_post_meta($post->ID, '_siteseo_robots_index', true);
		}

		if(post_password_required($post->ID) === true || !empty($title_options['titles_noindex']) || self::titles_single_cpt_noindex_option()){
			$metabox_data['robots_index'] = 'yes';
		} else{
			$metabox_data['robots_index'] = get_post_meta($post->ID, '_siteseo_robots_index', true);
		}

		if(!empty($title_options['titles_nofollow']) || self::titles_single_cpt_nofollow_option()){
			$metabox_data['robots_follow'] = 'yes';
		} else{
			$metabox_data['robots_follow'] = get_post_meta($post->ID, '_siteseo_robots_follow', true);
		}

		if(!empty($title_options['titles_noarchive'])){
			$metabox_data['robots_archive'] = 'yes';
		} else{
			$metabox_data['robots_archive'] = get_post_meta($post->ID, '_siteseo_robots_archive', true);
		}

		if(!empty($title_options['titles_nosnippet'])){
			$metabox_data['robots_snippet'] = 'yes';
		} else{
			$metabox_data['robots_snippet'] = get_post_meta($post->ID, '_siteseo_robots_snippet', true);
		}

		if(!empty($title_options['titles_noimageindex'])){
			$metabox_data['robots_imageindex'] = 'yes';
		} else{
			$metabox_data['robots_imageindex'] = get_post_meta($post->ID, '_siteseo_robots_imageindex', true);
		}

		$metabox_data['post_id'] = $post->ID;
		$metabox_data['readibility_data'] = get_post_meta($post->ID, '_siteseo_readibility_data', true);
		
		self::siteseo_content_analysis_tab($metabox_data);
	}
	
	
	static function titles_single_cpt_nofollow_option(){
		$siteseo_get_current_cpt = get_post_type();

		$options = get_option('siteseo_titles_option_name');
		if(!empty($options) && isset($options['titles_single_titles'][$siteseo_get_current_cpt]['nofollow'])){
			return $options['titles_single_titles'][$siteseo_get_current_cpt]['nofollow'];
		}
	}
	
	static function btn_secondary_classes() {
		//Classic Editor compatibility
		global $pagenow;
		
		$current_screen = null;
		
		if(function_exists('get_current_screen')){
			$current_screen = get_current_screen();
		}
		
		if(!empty($current_screen) && method_exists($current_screen, 'is_block_editor') && true === $current_screen->is_block_editor()){
			$btn_classes_secondary = 'components-button is-secondary';
		} elseif(isset($pagenow) && ($pagenow === 'term.php' || $pagenow === 'post.php' || $pagenow === 'post-new.php')){
			$btn_classes_secondary = 'button button-secondary';
		} else{
			$btn_classes_secondary = 'btn btnSecondary';
		}

		return $btn_classes_secondary;
	}
	
	static function siteseo_content_analysis_tab(&$metabox_data){
		global $post;
		
		echo '<div class="siteseo-metabox-option-wrap">
			<div class="siteseo-metabox-label-wrap">
				<label for="siteseo_titles_title_meta">' . esc_html__('Focus Keywords', 'siteseo') . '</label>
			</div>
			<div class="siteseo-metabox-input-wrap">
				<div id="siteseo_tags_wrapper" style="display: flex; flex-wrap: wrap; gap: 5px; padding: 5px; border: 1px solid #ccc; border-radius: 5px;">';
					if(!empty($metabox_data['analysis_target_kw'])){
						$tags_arr = explode(',', $metabox_data['analysis_target_kw']);
						
						if(count($tags_arr) > 0){
							foreach($tags_arr as $tag_name){
								echo '<span class="siteseo-tag">'.esc_html($tag_name).'<span class="siteseo-remove-tag">×</span></span>';
							}
						}
					}

					echo '<input id="siteseo_analysis_target_kw_meta" class="siteseo_analysis_target_kw_meta" type="text" placeholder="' . esc_html__('Enter your target keywords', 'siteseo') . '" style="border: none; outline: none; flex: 1; min-width: 150px;" />
					<input type="hidden" id="siteseo_tags_hidden" name="siteseo_analysis_target_kw" value="' . (!empty($metabox_data['analysis_target_kw']) ? esc_attr($metabox_data['analysis_target_kw']) : '') . '" />
				</div>
				<p class="description">Press <kbd>Enter</kbd> key on your keyboard to add keyword</p>
				<button id="siteseo_refresh_seo_analysis" type="button" style="margin-top:10px;" class="'.esc_attr(self::btn_secondary_classes()).'" data_id="'.esc_attr(get_the_ID()).'" data_post_type="'.esc_attr(get_current_screen()->post_type).'"> '.esc_html__('Refresh analysis', 'siteseo').'</button>
				<p class="description">'.esc_html__('Refresh analysis after saving the post to improve the accuracy of the analysis', 'siteseo').'</p>
			</div>
		</div>
		<div id="siteseo-metabox-content-analysis">
			<div id="siteseo-metabox-tabs-container">
				<div class="siteseo-metabox-subtabs">
				<div class="siteseo-metabox-tab-label siteseo-metabox-tab-label-active" data-tab="siteseo-metabox-seo-analysis-tab">'. esc_html__('SEO Analysis', 'siteseo').'</div>
					<div class="siteseo-metabox-tab-label" data-tab="siteseo-metabox-readibility-analysis-tab">'.esc_html__('Content Readability', 'siteseo').'</div>
				</div>
				<div id="siteseo-metabox-tab-content">
					<div class="siteseo-metabox-seo-analysis-tab siteseo-metabox-tab" style="display:block;">';
					
					$post_id = isset($_POST['post_id']) ? intval($_POST['post_id']) : 0;
					$post = get_post($post_id);
					Analysis::display_seo_analysis($post);
			echo'</div>
			<div class="siteseo-metabox-readibility-analysis-tab siteseo-metabox-tab">
				<p class="description">' . 
					esc_html__('This section works as a guide to help you write, better content for your user, this do not have a direct affect on SEO, but it will help you write better content for your users which will help user stay on your site longer, or will improve the Click Through rate.
					Which will signal search engines about the userfulness and likeleyness of your content by your user which indirectly improve SEO of the page.', 'siteseo') . 
				'</p>';
				Analysis::display_content_readibility($metabox_data);
			echo'</div>
					</div>
				</div>
			</div>';
	}

	
	static function titles_single_cpt_noindex_option(){
		$siteseo_get_current_cpt = get_post_type();

		$options = get_option('siteseo_titles_option_name');
		
		if(!empty($options) && isset($options['titles_single_titles'][$siteseo_get_current_cpt]['noindex'])){
			return $options['titles_single_titles'][$siteseo_get_current_cpt]['noindex'];
		}
	}

	static function save_ca_metabox($post_id, $post){

		if(!isset($_POST['siteseo_content_analysis_nonce']) || !wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['siteseo_content_analysis_nonce'])), 'siteseo_ca_nonce')){
			return $post_id;
		}

		// Post type object
		$post_type = get_post_type_object($post->post_type);

		//Check permission
		if(!current_user_can($post_type->cap->edit_post, $post_id) || !siteseo_user_can_metabox()){
			return $post_id;
		}

		if('attachment' !== get_post_type($post_id)){
			if(isset($_POST['siteseo_analysis_target_kw'])){
				update_post_meta($post_id, '_siteseo_analysis_target_kw', self::clean_post('siteseo_analysis_target_kw'));
			} else{
				delete_post_meta($post_id, '_siteseo_analysis_target_kw');
			}
		}
	}
	
	
	static function save_metabox($post_id, $post){
		
		global $siteseo;
		
		// Security Check
		if(!isset($_POST['siteseo_metabox_nonce']) || !wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['siteseo_metabox_nonce'])), 'siteseo_metabox_nonce')){
			return $post_id;
		}

		//Post type object
		$post_type = get_post_type_object($post->post_type);
		
		//Check permission
		if(!current_user_can($post_type->cap->edit_post, $post_id) || !siteseo_user_can_metabox()){
			return $post_id;
		}
		
		if('attachment' !== get_post_type($post_id)){
			$analysis_tabs = [];
			$analysis_tabs = json_decode(self::clean_post('analysis_tabs'), true);
			
			if(!empty($analysis_tabs) && is_array($analysis_tabs) && in_array('content-analysis', $analysis_tabs)){
				if(!empty($_POST['siteseo_analysis_target_kw'])){
					update_post_meta($post_id, '_siteseo_analysis_target_kw', self::clean_post('siteseo_analysis_target_kw'));
				} else{
					delete_post_meta($post_id, '_siteseo_analysis_target_kw');
				}
			}
			
			if(!empty($analysis_tabs) && is_array($analysis_tabs) && in_array('title-settings', $analysis_tabs)){
				if(!empty($_POST['siteseo_titles_title'])){
					update_post_meta($post_id, '_siteseo_titles_title', self::clean_post('siteseo_titles_title'));
				} else{
					delete_post_meta($post_id, '_siteseo_titles_title');
				}
				if(!empty($_POST['siteseo_titles_desc'])){
					update_post_meta($post_id, '_siteseo_titles_desc', self::clean_post('siteseo_titles_desc'));
				} else{
					delete_post_meta($post_id, '_siteseo_titles_desc');
				}
			}
			if(!empty($analysis_tabs) && is_array($analysis_tabs) && in_array('advanced-settings', $analysis_tabs)){
				
				if(isset($_POST['siteseo_robots_index'])){
					update_post_meta($post_id, '_siteseo_robots_index', 'yes');
				} else{
					delete_post_meta($post_id, '_siteseo_robots_index');
				}
				
				if(isset($_POST['siteseo_robots_follow'])){
					update_post_meta($post_id, '_siteseo_robots_follow', 'yes');
				} else{
					delete_post_meta($post_id, '_siteseo_robots_follow');
				}
				
				if(isset($_POST['siteseo_robots_imageindex'])){
					update_post_meta($post_id, '_siteseo_robots_imageindex', 'yes');
				} else{
					delete_post_meta($post_id, '_siteseo_robots_imageindex');
				}
				
				if(isset($_POST['siteseo_robots_archive'])){
					update_post_meta($post_id, '_siteseo_robots_archive', 'yes');
				} else{
					delete_post_meta($post_id, '_siteseo_robots_archive');
				}
				
				if(isset($_POST['siteseo_robots_snippet'])){
					update_post_meta($post_id, '_siteseo_robots_snippet', 'yes');
				} else{
					delete_post_meta($post_id, '_siteseo_robots_snippet');
				}
				
				if(!empty($_POST['siteseo_robots_canonical'])){
					update_post_meta($post_id, '_siteseo_robots_canonical', self::clean_post('siteseo_robots_canonical'));
				} else{
					delete_post_meta($post_id, '_siteseo_robots_canonical');
				}
				
				if(!empty($_POST['siteseo_robots_primary_cat'])){
					update_post_meta($post_id, '_siteseo_robots_primary_cat', self::clean_post('siteseo_robots_primary_cat'));
				} else{
					delete_post_meta($post_id, '_siteseo_robots_primary_cat');
				}
			}

			if(!empty($analysis_tabs) && is_array($analysis_tabs) && in_array('social-settings', $analysis_tabs)){
				//Facebook
				if(!empty($_POST['siteseo_social_fb_title'])){
					update_post_meta($post_id, '_siteseo_social_fb_title', self::clean_post('siteseo_social_fb_title'));
				} else{
					delete_post_meta($post_id, '_siteseo_social_fb_title');
				}
				
				if(!empty($_POST['siteseo_social_fb_desc'])){
					update_post_meta($post_id, '_siteseo_social_fb_desc', self::clean_post('siteseo_social_fb_desc'));
				} else{
					delete_post_meta($post_id, '_siteseo_social_fb_desc');
				}
				
				if(!empty($_POST['siteseo_social_fb_img'])){
					update_post_meta($post_id, '_siteseo_social_fb_img', self::clean_post('siteseo_social_fb_img'));
				} else{
					delete_post_meta($post_id, '_siteseo_social_fb_img');
				}
				
				if(!empty($_POST['siteseo_social_fb_img_attachment_id']) && !empty($_POST['siteseo_social_fb_img'])){
					update_post_meta($post_id, '_siteseo_social_fb_img_attachment_id', self::clean_post('siteseo_social_fb_img_attachment_id'));
				} else{
					delete_post_meta($post_id, '_siteseo_social_fb_img_attachment_id');
				}
				
				if(!empty($_POST['siteseo_social_fb_img_width']) && !empty($_POST['siteseo_social_fb_img'])){
					update_post_meta($post_id, '_siteseo_social_fb_img_width', self::clean_post('siteseo_social_fb_img_width'));
				} else{
					delete_post_meta($post_id, '_siteseo_social_fb_img_width');
				}
				
				if(!empty($_POST['siteseo_social_fb_img_height']) && !empty($_POST['siteseo_social_fb_img'])){
					update_post_meta($post_id, '_siteseo_social_fb_img_height', self::clean_post('siteseo_social_fb_img_height'));
				} else{
					delete_post_meta($post_id, '_siteseo_social_fb_img_height');
				}

				//Twitter
				if(!empty($_POST['siteseo_social_twitter_title'])){
					update_post_meta($post_id, '_siteseo_social_twitter_title', self::clean_post('siteseo_social_twitter_title'));
				} else{
					delete_post_meta($post_id, '_siteseo_social_twitter_title');
				}
				
				if(!empty($_POST['siteseo_social_twitter_desc'])){
					update_post_meta($post_id, '_siteseo_social_twitter_desc', self::clean_post('siteseo_social_twitter_desc'));
				} else{
					delete_post_meta($post_id, '_siteseo_social_twitter_desc');
				}
				
				if(!empty($_POST['siteseo_social_twitter_img'])){
					update_post_meta($post_id, '_siteseo_social_twitter_img', self::clean_post('siteseo_social_twitter_img'));
				} else{
					delete_post_meta($post_id, '_siteseo_social_twitter_img');
				}
				
				if(!empty($_POST['siteseo_social_twitter_img_attachment_id']) && !empty($_POST['siteseo_social_twitter_img'])){
					update_post_meta($post_id, '_siteseo_social_twitter_img_attachment_id', self::clean_post('siteseo_social_twitter_img_attachment_id'));
				} else{
					delete_post_meta($post_id, '_siteseo_social_twitter_img_attachment_id');
				}
				
				if(!empty($_POST['siteseo_social_twitter_img_width']) && !empty($_POST['siteseo_social_twitter_img'])){
					update_post_meta($post_id, '_siteseo_social_twitter_img_width', self::clean_post('siteseo_social_twitter_img_width'));
				} else{
					delete_post_meta($post_id, '_siteseo_social_twitter_img_width');
				}
				
				if(!empty($_POST['siteseo_social_twitter_img_height']) && !empty($_POST['siteseo_social_twitter_img'])){
					update_post_meta($post_id, '_siteseo_social_twitter_img_height', self::clean_post('siteseo_social_twitter_img_height'));
				} else{
					delete_post_meta($post_id, '_siteseo_social_twitter_img_height');
				}
			}

			if(!empty($analysis_tabs) && is_array($analysis_tabs) && in_array('redirect', $analysis_tabs)){
				if(isset($_POST['siteseo_redirections_type'])){
					update_post_meta($post_id, '_siteseo_redirections_type', self::clean_post('siteseo_redirections_type'));
				}
				
				if(!empty($_POST['siteseo_redirections_value'])){
					update_post_meta($post_id, '_siteseo_redirections_value', self::clean_post('siteseo_redirections_value'));
				} else{
					delete_post_meta($post_id, '_siteseo_redirections_value');
				}
				
				if(isset($_POST['siteseo_redirections_param'])){
					update_post_meta($post_id, '_siteseo_redirections_param', self::clean_post('siteseo_redirections_param'));
				}
				
				if(isset($_POST['siteseo_redirections_enabled'])){
					update_post_meta($post_id, '_siteseo_redirections_enabled', 'yes');
				} else{
					delete_post_meta($post_id, '_siteseo_redirections_enabled', '');
				}
				
				if(isset($_POST['siteseo_redirections_enabled_regex'])){
					update_post_meta($post_id, '_siteseo_redirections_enabled_regex', 'yes');
				} else{
					delete_post_meta($post_id, '_siteseo_redirections_enabled_regex');
				}
				
				if(isset($_POST['siteseo_redirections_logged_status'])){
					update_post_meta($post_id, '_siteseo_redirections_logged_status', self::clean_post('siteseo_redirections_logged_status'));
				} else{
					delete_post_meta($post_id, '_siteseo_redirections_logged_status');
				}
			}
			
			if(!empty($analysis_tabs) && is_array($analysis_tabs) && in_array('structured-data-types', $analysis_tabs)){
				if(class_exists('\SiteSEOPro\StructuredData') && method_exists('\SiteSEOPro\StructuredData', 'save_metabox')){
					\SiteSEOPro\StructuredData::save_metabox($post_id, $post);
				}
			}
			
			if(!empty($analysis_tabs) && is_array($analysis_tabs) && in_array('video-sitemap', $analysis_tabs)){
				if(class_exists('\SiteSEOPro\VideoSitemap') && method_exists('\SiteSEOPro\VideoSitemap', 'save_video_sitemap')){
					\SiteSEOPro\VideoSitemap::save_video_sitemap($post_id, $post);
				}
			}
			
			if(!empty($analysis_tabs) && is_array($analysis_tabs) && in_array('google-news', $analysis_tabs)){
				if(class_exists('\SiteSEOPro\GoogleNews') && method_exists('\SiteSEOPro\GoogleNews', 'save_google_news')){
					\SiteSEOPro\GoogleNews::save_google_news($post_id, $post);
				}
			}
		}
	}

	static function clean_post($name){
		return self::clean_post_req($name);
	}
	
	static function clean_get($name){
		return self::clean_post_req($name);
	}
	
	static function clean_post_req($name){
		if(empty($name)){
			return '';
		}
	
		if(!isset($_REQUEST[$name])){
			return '';
		}
	
		if(is_array($_REQUEST[$name]) || is_object($_REQUEST[$name])){
			return map_deep(wp_unslash($_REQUEST[$name]), 'sanitize_text_field');
		}

		return sanitize_text_field(wp_unslash($_REQUEST[$name]));
	}
	
	static function universal(){
		global $siteseo, $pagenow, $post;
		
		$post_id = !empty($_REQUEST['post']) ? (int) sanitize_text_field(wp_unslash($_REQUEST['post'])) : 0;
		
		if(empty($post_id)){
			return;
		}
		
		if(!current_user_can('edit_post', $post_id)){
			wp_die(esc_html__('You do not have access to edit this post', 'siteseo'));
		}
		
		$tmp_post = $post;
		$post = get_post($post_id);
		$tmp_pagenow = $pagenow;
		$pagenow = 'post.php';

		if(empty($post)){
			$post = $tmp_post;
			return;
		}
		
		set_current_screen($post->post_type);

		echo '<style>body{height: 100vh;} #wpcontent,#wpbody-content,html.wp-toolbar{padding:0;} .postbox .handle-order-higher, .postbox .handle-order-lower,#minor-publishing-actions,.site-menu-header{display:none !important;} #adminmenumain, #wpfooter, #wpadminbar, #wpwrap > :first-child,  #wpwrap > :nth-child(2) .lnav-col{display:none;} #wpcontent{margin:auto;} #wpbody-content{position:relative;} .siteseo-metabox-tab{background-color:white;} .siteseo-meta-submit-container{position:fixed;bottom: 20px;right : 20px;}  #siteseo_cpt form {position:relative;}.siteseo-btn{display: inline-flex;padding: 0.5rem 1rem;gap: 0.5rem;justify-content: center;align-items: center;border-radius: 0.375rem;font-size: 0.875rem;line-height: 1.25rem;font-weight: 500;white-space: nowrap;cursor:pointer;box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);border:none;text-decoration:none; text-align:center;}.siteseo-btn.primary{background-color:#141b38;color:white;} #wpwrap > :nth-child(2) > div:nth-child(2){max-width:100%}
		.siteseo-spinner{display:none;border-radius:50%;animation: siteseo-spinner 1s linear infinite;height: 0.9375rem;width: 0.9375rem;border: 2px solid #dddcdc80;border-left-color: #e3e3e3;} .siteseo-spinner-active{display:inline-block;} @keyframes siteseo-spinner{ 0% { transform: rotate(0deg);} 100% {transform: rotate(360deg);}} .components-button{align-items: center; -webkit-appearance: none; background: none; border: 0; border-radius: 2px; box-sizing: border-box; color:#1e1e1e; cursor: pointer;display: inline-flex; font-family: inherit; font-size: 13px; font-weight: 400; height: 36px; margin: 0; padding: 6px 12px; text-decoration: none; transition: box-shadow .1s linear;}.components-button.is-secondary {background: #0000; box-shadow: inset 0 0 0 1px #3858e9; color:#3858e9; outline: 1px solid #0000; white-space: nowrap;}.siteseo-sidebar-tabs{display:none;} .notice, .update-nag{ display: none !important;}</style>
		<div id="siteseo_cpt"><form id="siteseo-universal-post" action="post.php" method="post">
		<input type="hidden" name="post_id" value="'.esc_attr($post_id).'"/>';
		wp_nonce_field('siteseo_universal_nonce', 'security');
		self::render_metabox();
		
		echo '<div class="siteseo-meta-submit-container">
			<button type="submit" class="siteseo-btn primary">'.esc_html__('Save Changes', 'siteseo').'<span class="siteseo-spinner"></span></button>
		</div></form></div>
		<script>
		jQuery(document).ready(function(){
			jQuery("#siteseo-universal-post").on("submit", function(event){
				event.preventDefault();
				let jEle = jQuery(event.target),
				spinner = jEle.find(".siteseo-spinner"),
				formData = {};

				jQuery(this).serializeArray().forEach(field => {
					formData[field.name] = field.value;
				});

				formData["action"] = "siteseo_save_universal_metabox";
				
				spinner.addClass("siteseo-spinner-active");

				jQuery.ajax({
					method : "POST",
					url : "'.esc_url(admin_url('admin-ajax.php')).'",
					data : formData,
					success : function(res){
						//console.log(res);
					}
				}).always(function(){
					spinner.removeClass("siteseo-spinner-active");
				})
			});
		});
		</script>';

		$post = $tmp_post;
		$pagenow = $tmp_pagenow;

		global $wp_version;

		if(!empty($wp_version) && version_compare($wp_version, '6.4', '>')){
			remove_action('wp_footer', 'the_block_template_skip_link');
		}

		wp_footer();
		exit;
	}
	
	static function render_term_metabox($term, $taxonomy_name = ''){
		$metabox_data = self::metabox_term_data($term);
		self::metabox_form_html($metabox_data);
	}
	
	static function save_meta_terms($term_id, $post_id = 0){

		// Security Check
		if(!isset($_POST['siteseo_metabox_nonce']) || !wp_verify_nonce(self::clean_post('siteseo_metabox_nonce'), 'siteseo_metabox_nonce') ){
			return $term_id;
		}
		
		// Getting taxonomy
		$term = get_term($term_id);
		$taxonomy = get_taxonomy($term->taxonomy);

		// Is this user allowed to make these changes
		if(!current_user_can($taxonomy->cap->edit_terms, $term_id)) {
			return $term_id;
		}

		$analysis_tabs = [];
		$analysis_tabs = json_decode(self::clean_post('analysis_tabs'), true);
		
		if(empty($analysis_tabs) || !is_array($analysis_tabs)){
			return $term_id;
		}

		$tabs = [
			'title-settings' => [
				'siteseo_titles_title' => '_siteseo_titles_title',
				'siteseo_titles_desc' => '_siteseo_titles_desc',
			],
			'advanced-settings' => [
				'siteseo_robots_index' => '_siteseo_robots_index',
				'siteseo_robots_follow' => '_siteseo_robots_follow',
				'siteseo_robots_imageindex'=> '_siteseo_robots_imageindex',
				'siteseo_robots_archive' => '_siteseo_robots_archive',
				'siteseo_robots_snippet' => '_siteseo_robots_snippet',
				'siteseo_robots_canonical' => '_siteseo_robots_canonical',
			],
			'social-settings' => [
				'siteseo_social_fb_title' => '_siteseo_social_fb_title',
				'siteseo_social_fb_desc' => '_siteseo_social_fb_desc',
				'siteseo_social_fb_img' => '_siteseo_social_fb_img',
				'siteseo_social_fb_img_attachment_id' => '_siteseo_social_fb_img_attachment_id',
				'siteseo_social_fb_img_width' => '_siteseo_social_fb_img_width',
				'siteseo_social_fb_img_height' => '_siteseo_social_fb_img_height',
				'siteseo_social_twitter_title' => '_siteseo_social_twitter_title',
				'siteseo_social_twitter_desc' => '_siteseo_social_twitter_desc',
				'siteseo_social_twitter_img' => '_siteseo_social_twitter_img',
			],
			'redirect' => [
				'siteseo_redirections_type' => '_siteseo_redirections_type',
				'siteseo_redirections_logged_status' => '_siteseo_redirections_logged_status',
				'siteseo_redirections_value' => '_siteseo_redirections_value',
				'siteseo_redirections_enabled' => '_siteseo_redirections_enabled',
			]
		];
		
		// Save the key for all the options which are checkboxes
		$is_checkboxes = [
			'siteseo_robots_index',
			'siteseo_robots_follow',
			'siteseo_robots_imageindex',
			'siteseo_robots_archive',
			'siteseo_robots_snippet',
			'siteseo_redirections_enabled',
		];

		foreach($tabs as $tab => $fields){
			if(!in_array($tab, $analysis_tabs)){
				continue;
			}

			foreach($fields as $post_key => $meta_key){
				if(!empty($_POST[$post_key])){
					$value = in_array($post_key, $is_checkboxes) ? 'yes' : self::clean_post($post_key);
					update_term_meta($term_id, $meta_key, $value);
				} else {
					delete_term_meta($term_id, $meta_key);
				}
			}
		}

		return $term_id;
	}
}

PK��f\�[����main/import.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Import{

	static function rank_math(){
		$imported_count = 0;
		$log = [];
		
		$posts = get_posts(['posts_per_page' => -1, 'post_type' => 'any', 'post_status' => 'any']);
		foreach($posts as $post){
	 
			$robots = get_post_meta($post->ID, 'rank_math_robots', true);
			$robots_array = is_array($robots) ? $robots : [];

			$meta_mapping = [
				'_siteseo_titles_title' => self::replace_snippet_vars(get_post_meta($post->ID, 'rank_math_title', true),'rank_math'),
				'_siteseo_titles_desc' => self::replace_snippet_vars(get_post_meta($post->ID, 'rank_math_description', true),'rank_math'),
				'_siteseo_social_fb_title' => self::replace_snippet_vars(get_post_meta($post->ID, 'rank_math_facebook_title', true),'rank_math'),
				'_siteseo_social_fb_desc' => self::replace_snippet_vars(get_post_meta($post->ID, 'rank_math_facebook_description', true),'rank_math'),
				'_siteseo_social_fb_img' => get_post_meta($post->ID, 'rank_math_facebook_image', true),
				'_siteseo_social_twitter_title' => self::replace_snippet_vars(get_post_meta($post->ID, 'rank_math_twitter_title', true),'rank_math'),
				'_siteseo_social_twitter_desc' => self::replace_snippet_vars(get_post_meta($post->ID, 'rank_math_twitter_description', true),'rank_math'),
				'_siteseo_social_twitter_img' => get_post_meta($post->ID, 'rank_math_twitter_image', true),
				'_siteseo_robots_index' => in_array('noindex', $robots_array) ? '1' : '',
				'_siteseo_robots_follow' => in_array('nofollow', $robots_array) ? '1' : '',
				'_siteseo_robots_imageindex' => in_array('noimageindex', $robots_array) ? '1' : '',
				'_siteseo_robots_archive' => in_array('noarchive', $robots_array) ? '1' : '',
				'_siteseo_robots_snippet' => in_array('nosnippet', $robots_array) ? '1' : '',
				'_siteseo_robots_canonical' => get_post_meta($post->ID, 'rank_math_canonical_url', true),
				'_siteseo_analysis_target_kw' => get_post_meta($post->ID, 'rank_math_focus_keyword', true),
				'_siteseo_robots_primary_cat' => get_post_meta($post->ID, 'rank_math_primary_category', true)
			];
				
			foreach($meta_mapping as $siteseo_key => $value){
				if(!empty($value)){
					update_post_meta($post->ID, $siteseo_key, $value);
					$imported_count++;
				}
			}
			$log[] = "Imported post ID: {$post->ID}";
		}
		
		$taxonomies = get_taxonomies();
		
		foreach($taxonomies as $taxonomy){
			$terms = get_terms([
				'taxonomy' => $taxonomy,
				'hide_empty' => false,
			]);
			
			foreach($terms as $term){
				$term_robots = get_term_meta($term->term_id, 'rank_math_robots', true);
				$term_robots_array = is_array($term_robots) ? $term_robots : [];

				$meta_mapping = [
					'_siteseo_titles_title' => self::replace_snippet_vars(get_term_meta($term->term_id, 'rank_math_title', true),'rank_math'),
					'_siteseo_titles_desc' => self::replace_snippet_vars(get_term_meta($term->term_id, 'rank_math_description', true),'rank_math'),
					'_siteseo_social_fb_title' => self::replace_snippet_vars(get_term_meta($term->term_id, 'rank_math_facebook_title', true),'rank_math'),
					'_siteseo_social_fb_desc' => self::replace_snippet_vars(get_term_meta($term->term_id, 'rank_math_facebook_description', true),'rank_math'),
					'_siteseo_social_fb_img' => get_term_meta($term->term_id, 'rank_math_facebook_image', true),
					'_siteseo_social_twitter_title' => self::replace_snippet_vars(get_term_meta($term->term_id, 'rank_math_twitter_title', true),'rank_math'),
					'_siteseo_social_twitter_desc' => self::replace_snippet_vars(get_term_meta($term->term_id, 'rank_math_twitter_description', true),'rank_math'),
					'_siteseo_social_twitter_img' => get_term_meta($term->term_id, 'rank_math_twitter_image', true),
					'_siteseo_robots_index' => in_array('noindex', $term_robots_array) ? '1' : '',
					'_siteseo_robots_follow' => in_array('nofollow', $term_robots_array) ? '1' : '',
					'_siteseo_robots_imageindex' => in_array('noimageindex', $term_robots_array) ? '1' : '',
					'_siteseo_robots_archive' => in_array('noarchive', $term_robots_array) ? '1' : '',
					'_siteseo_robots_snippet' => in_array('nosnippet', $term_robots_array) ? '1' : '',
					'_siteseo_robots_canonical' => get_term_meta($term->term_id, 'rank_math_canonical_url', true),
					'_siteseo_analysis_target_kw' => get_term_meta($term->term_id, 'rank_math_focus_keyword', true)
				];
				
				foreach($meta_mapping as $siteseo_key => $value){
					if(!empty($value)){
						update_term_meta($term->term_id, $siteseo_key, $value);
						$imported_count++;
					}
				}
				
				$log[] = "Imported term ID: {$term->term_id}";
			}
		}
		
		return [
			'count' => $imported_count,
			'log' => $log,
			/* translators: %d count of items imported */
			'message' => sprintf(__('Rank Math import completed. Imported %d items.', 'siteseo'), $imported_count)
		];
	}

	static function yoast_seo(){
		$imported_count = 0;
		$log = [];
    
		$posts = get_posts(['posts_per_page' => -1, 'post_type' => 'any', 'post_status' => 'any']);
		foreach($posts as $post){
			$yoast_robots = get_post_meta($post->ID, '_yoast_wpseo_meta-robots-adv', true);
			$robots_array = $yoast_robots ? explode(',', $yoast_robots) : [];
			
			$meta_mapping = [
				'_siteseo_titles_title' => self::replace_snippet_vars(get_post_meta($post->ID, '_yoast_wpseo_title', true),'yoast_seo'),
				'_siteseo_titles_desc' => self::replace_snippet_vars(get_post_meta($post->ID, '_yoast_wpseo_metadesc', true),'yoast_seo'),
				'_siteseo_social_fb_title' => self::replace_snippet_vars(get_post_meta($post->ID, '_yoast_wpseo_opengraph-title', true),'yoast_seo'),
				'_siteseo_social_fb_desc' => self::replace_snippet_vars(get_post_meta($post->ID, '_yoast_wpseo_opengraph-description', true),'yoast_seo'),
				'_siteseo_social_fb_img' => get_post_meta($post->ID, '_yoast_wpseo_opengraph-image', true),
				'_siteseo_social_twitter_title' => self::replace_snippet_vars(get_post_meta($post->ID, '_yoast_wpseo_twitter-title', true),'yoast_seo'),
				'_siteseo_social_twitter_desc' => self::replace_snippet_vars(get_post_meta($post->ID, '_yoast_wpseo_twitter-description', true),'yoast_seo'),
				'_siteseo_social_twitter_img' => get_post_meta($post->ID, '_yoast_wpseo_twitter-image', true),
				'_siteseo_robots_index' => get_post_meta($post->ID, '_yoast_wpseo_meta-robots-noindex', true) ? '1' : '',
				'_siteseo_robots_follow' => get_post_meta($post->ID, '_yoast_wpseo_meta-robots-nofollow', true) ? '1' : '',
				'_siteseo_robots_imageindex' => in_array('noimageindex', $robots_array) ? '1' : '',
				'_siteseo_robots_archive' => in_array('noarchive', $robots_array) ? '1' : '',
				'_siteseo_robots_snippet' => in_array('nosnippet', $robots_array) ? '1' : '',
				'_siteseo_robots_canonical' => get_post_meta($post->ID, '_yoast_wpseo_canonical', true),
				'_siteseo_analysis_target_kw' => get_post_meta($post->ID, '_yoast_wpseo_focuskw', true),
				'_siteseo_robots_primary_cat' => get_post_meta($post->ID, '_yoast_wpseo_primary_category', true)
			];
			
			foreach($meta_mapping as $siteseo_key => $value){
				if(!empty($value)){
					update_post_meta($post->ID, $siteseo_key, $value);
					$imported_count++;
				}
			}
			$log[] = "Imported post ID: {$post->ID}";
		}
		
		$yoastseo_term_meta = get_option('wpseo_taxonomy_meta');
		
		foreach($yoastseo_term_meta as $taxonomy){
			
			if(!is_array($taxonomy)){
				continue;
			}
			
			foreach($taxonomy as $term_id => $term){
				$meta_mapping = [
					'_siteseo_titles_title' => self::replace_snippet_vars((!empty($term['wpseo_title']) ? $term['wpseo_title'] : ''),'yoast_seo'),
					'_siteseo_titles_desc' => self::replace_snippet_vars((!empty($term['wpseo_desc']) ? $term['wpseo_desc'] : ''),'yoast_seo'),
					'_siteseo_social_fb_title' => self::replace_snippet_vars((!empty($term['wpseo_opengraph-title']) ? $term['wpseo_opengraph-title'] : ''),'yoast_seo'),
					'_siteseo_social_fb_desc' => self::replace_snippet_vars((!empty($term['wpseo_opengraph-description']) ? $term['wpseo_opengraph-description'] : ''),'yoast_seo'),
					'_siteseo_social_fb_img' => !empty($term['wpseo_opengraph-image']) ? $term['wpseo_opengraph-image'] : '',
					'_siteseo_social_twitter_title' => self::replace_snippet_vars((!empty($term['wpseo_twitter-title']) ? $term['wpseo_twitter-title'] : ''),'yoast_seo'),
					'_siteseo_social_twitter_desc' => self::replace_snippet_vars((!empty($term['wpseo_twitter-description']) ? $term['wpseo_twitter-description'] : ''),'yoast_seo'),
					'_siteseo_social_twitter_img' => !empty($term['wpseo_twitter-image']) ? $term['wpseo_twitter-image'] : '',
					'_siteseo_robots_index' => !empty($term['wpseo_noindex']) ? 'yes' : '',
					'_siteseo_robots_follow' => !empty($term['wpseo_nofollow']) ? 'yes' : '',
					'_siteseo_robots_imageindex' => !empty($term['wpseo_noimageindex']) ? 'yes' : '',
					'_siteseo_robots_archive' => !empty($term['wpseo_noarchive']) ? 'yes' : '',
					'_siteseo_robots_snippet' => !empty($term['wpseo_nosnippet']) ? 'yes' : '',
					'_siteseo_analysis_target_kw' => !empty($term['wpseo_focuskw']) ? $term['wpseo_focuskw'] : '',
					'_siteseo_robots_primary_cat' => !empty($term['wpseo_primary_category']) ? $term['wpseo_primary_category'] : '',
					'_siteseo_robots_canonical' => !empty($term['wpseo_canonical']) ? $term['wpseo_canonical'] : '',
				];
				
				foreach($meta_mapping as $siteseo_key => $value){
					if(!empty($value)){
						update_term_meta($term_id, $siteseo_key, $value);
						$imported_count++;
					}
				}
				
				$log[] = "Imported term ID: {$term_id}";
			}
		}
		
		return [
			'count' => $imported_count,
			'log' => $log,
			/* translators: %d count of items imported */
			'message' => sprintf(__('Yoast SEO import completed. Imported %d items.', 'siteseo'), $imported_count)
		];
	}

	static function aio_seo(){
		$imported_count = 0;
		$log = [];
		
		$posts = get_posts(['posts_per_page' => -1, 'post_type' => 'any', 'post_status' => 'any']);
		foreach($posts as $post){

			$meta_mapping = [
				'_siteseo_titles_title' => self::replace_snippet_vars((get_post_meta($post->ID, '_aioseo_title', true)),'aio_seo'),
				'_siteseo_titles_desc' => self::replace_snippet_vars((get_post_meta($post->ID, '_aioseo_description', true)),'aio_seo'),
				'_siteseo_social_fb_title' => self::replace_snippet_vars((get_post_meta($post->ID, '_aioseo_og_title', true)),'aio_seo'),
				'_siteseo_social_fb_desc' => self::replace_snippet_vars((get_post_meta($post->ID, '_aioseo_og_description', true)),'aio_seo'),
				'_siteseo_social_fb_img' => get_post_meta($post->ID, '_aioseo_og_image', true),
				'_siteseo_social_twitter_title' => self::replace_snippet_vars((get_post_meta($post->ID, '_aioseo_twitter_title', true)),'aio_seo'),
				'_siteseo_social_twitter_desc' => self::replace_snippet_vars((get_post_meta($post->ID, '_aioseo_twitter_description', true)),'aio_seo'),
				'_siteseo_social_twitter_img' => get_post_meta($post->ID, '_aioseo_twitter_image', true),
				'_siteseo_robots_index' => get_post_meta($post->ID, '_aioseo_noindex', true) ? '1' : '',
				'_siteseo_robots_follow' => get_post_meta($post->ID, '_aioseo_nofollow', true) ? '1' : '',
				'_siteseo_robots_imageindex' => '1',
				'_siteseo_robots_archive' => '1',
				'_siteseo_robots_snippet' => '1', // Default to 1 if not specified
				'_siteseo_robots_canonical' => get_post_meta($post->ID, '_aioseo_canonical_url', true),
				'_siteseo_analysis_target_kw' => get_post_meta($post->ID, '_aioseo_keywords', true)
			];

			foreach($meta_mapping as $siteseo_key => $value){
				if(!empty($value)){
					update_post_meta($post->ID, $siteseo_key, $value);
					$imported_count++;
				}
			}
			
			$log[] = "Imported post ID: {$post->ID}";
		}
		
		$taxonomies = get_taxonomies();
		
		foreach($taxonomies as $taxonomy){
			$terms = get_terms([
				'taxonomy' => $taxonomy,
				'hide_empty' => false,
			]);
			
			foreach($terms as $term){
				
				$meta_mapping = [
					'_siteseo_titles_title' => self::replace_snippet_vars((get_term_meta($term->term_id, '_aioseo_title', true)),'aio_seo'),
					'_siteseo_titles_desc' => self::replace_snippet_vars((get_term_meta($term->term_id, '_aioseo_description', true)),'aio_seo'),
					'_siteseo_social_fb_title' => self::replace_snippet_vars((get_term_meta($term->term_id, '_aioseo_og_title', true)),'aio_seo'),
					'_siteseo_social_fb_desc' => self::replace_snippet_vars((get_term_meta($term->term_id, '_aioseo_og_description', true)),'aio_seo'),
					'_siteseo_social_fb_img' => get_term_meta($term->term_id, '_aioseo_og_image', true),
					'_siteseo_social_twitter_title' => self::replace_snippet_vars((get_term_meta($term->term_id, '_aioseo_twitter_title', true)),'aio_seo'),
					'_siteseo_social_twitter_desc' => self::replace_snippet_vars((get_term_meta($term->term_id, '_aioseo_twitter_description', true)),'aio_seo'),
					'_siteseo_social_twitter_img' => get_term_meta($term->term_id, '_aioseo_twitter_image', true),
					'_siteseo_robots_index' => get_term_meta($term->term_id, '_aioseo_noindex', true) ? '1' : '',
					'_siteseo_robots_follow' => get_term_meta($term->term_id, '_aioseo_nofollow', true) ? '1' : '',
					'_siteseo_robots_canonical' => get_term_meta($term->term_id, '_aioseo_canonical_url', true),
					'_siteseo_analysis_target_kw' => get_term_meta($term->term_id, '_aioseo_keywords', true)
				];
				
			
				foreach($meta_mapping as $siteseo_key => $value){
					if(!empty($value)){
						update_term_meta($term->term_id, $siteseo_key, $value);
						$imported_count++;
					}
				}
				
				$log[] = "Imported term ID: {$term->term_id}";
			}
			
		}
		
		return	[
			'count' => $imported_count,
			'log' => $log,
			/* translators: %d count of items imported */
			'message' => sprintf(__('All In One SEO import completed. Imported %d items.', 'siteseo'), $imported_count)
		];
	}

	static function seo_framework(){
		$imported_count = 0;
		$log = [];

		$posts = get_posts(['posts_per_page' => -1, 'post_type' => 'any', 'post_status' => 'any']);
		foreach($posts as $post){
			$meta_mapping = [
				'_siteseo_titles_title' => get_post_meta($post->ID, '_genesis_title', true),
				'_siteseo_titles_desc' => get_post_meta($post->ID, '_genesis_description', true),
				'_siteseo_social_fb_title' => get_post_meta($post->ID, '_open_graph_title', true),
				'_siteseo_social_fb_desc' => get_post_meta($post->ID, '_open_graph_description', true),
				'_siteseo_social_fb_img' => get_post_meta($post->ID, '_social_image_url', true),
				'_siteseo_social_twitter_title' => get_post_meta($post->ID, '_twitter_title', true),
				'_siteseo_social_twitter_desc' => get_post_meta($post->ID, '_twitter_description', true),
				'_siteseo_social_twitter_img' => get_post_meta($post->ID, '_twitter_image', true),
				'_siteseo_robots_index' => get_post_meta($post->ID, '_genesis_noindex', true) ? '1' : '',
				'_siteseo_robots_follow' => get_post_meta($post->ID, '_genesis_nofollow', true) ? '1' : '',
				'_siteseo_robots_imageindex' => '1',
				'_siteseo_robots_archive' => '1',
				'_siteseo_robots_snippet' => '1',
				'_siteseo_robots_canonical' => get_post_meta($post->ID, '_genesis_canonical_uri', true),
				'_siteseo_analysis_target_kw' => get_post_meta($post->ID, '_genesis_keywords', true)
			];
			
			foreach($meta_mapping as $siteseo_key => $value){
				if(!empty($value)){
					update_post_meta($post->ID, $siteseo_key, $value);
					$imported_count++;
				}
			}
			$log[] = "Imported post ID: {$post->ID}";
		}
		
		$taxonomies = get_taxonomies();
		
		foreach($taxonomies as $taxonomy){
			$terms = get_terms([
				'taxonomy' => $taxonomy,
				'hide_empty' => false,
			]);
			
			foreach($terms as $term){
				$term_data = get_term_meta($term->term_id, 'autodescription-term-settings', true);
				
				if(empty($term_data) || !is_array($term_data)){
					continue;
				}
				
				$meta_mapping = [
					'_siteseo_titles_title' => !empty($term_data['doctitle']) ? $term_data['doctitle'] : '',
					'_siteseo_titles_desc' => !empty($term_data['description']) ? $term_data['description'] : '',
					'_siteseo_social_fb_title' => !empty($term_data['og_title']) ? $term_data['og_title'] : '',
					'_siteseo_social_fb_desc' => !empty($term_data['og_description']) ? $term_data['og_description'] : '',
					'_siteseo_social_fb_img' => !empty($term_data['social_image_url']) ? $term_data['social_image_url'] : '',
					'_siteseo_social_twitter_title' => !empty($term_data['tw_title']) ? $term_data['tw_title'] : '',
					'_siteseo_social_twitter_desc' => !empty($term_data['tw_description']) ? $term_data['tw_description'] : '',
					'_siteseo_social_twitter_img' => !empty($term_data['social_image_url']) ? $term_data['social_image_url'] : '',
					'_siteseo_robots_index' => !empty($term_data['noindex']) ? true : '',
					'_siteseo_robots_follow' => !empty($term_data['nofollow'] ) ? true : '',
					'_siteseo_robots_archive' => !empty($term_data['noarchive']) ? true : '',
					'_siteseo_robots_canonical' => !empty($term_data['canonical']) ? $term_data['canonical'] : '',
					'_siteseo_analysis_target_kw' => !empty($term_data['keywords']) ? $term_data['keywords'] : '',
				];
			
				foreach($meta_mapping as $siteseo_key => $value){
					if(!empty($value)){
						update_term_meta($term->term_id, $siteseo_key, $value);
						$imported_count++;
					}
				}
				
				$log[] = "Imported term ID: {$term->term_id}";
			}
		}

		return [
			'count' => $imported_count,
			'log' => $log,
			/* translators: %d count of items imported */
			'message' => sprintf(__('SEO Framework import completed. Imported %d items.', 'siteseo'), $imported_count)
		];
	}

	static function seo_press(){
		$imported_count = 0;
		$log = [];

		$posts = get_posts(['posts_per_page' => -1, 'post_type' => 'any', 'post_status' => 'any']);
		foreach($posts as $post){
			
			$robots_index = get_post_meta($post->ID, '_seopress_robots_index', true);
			$robots_follow = get_post_meta($post->ID, '_seopress_robots_follow', true);
			$robots_imageindex = get_post_meta($post->ID, '_seopress_robots_imageindex', true);
			$robots_archive = get_post_meta($post->ID, '_seopress_robots_archive', true);
			
			$meta_mapping = [
				'_siteseo_titles_title' => str_replace('%%wc_single_price_exc_tax%%', '%%wc_single_price_exe_tax%%', get_post_meta($post->ID, '_seopress_titles_title', true)),
				'_siteseo_titles_desc' => str_replace('%%wc_single_price_exc_tax%%', '%%wc_single_price_exe_tax%%', get_term_meta($post->ID, '_seopress_titles_desc', true)),
				'_siteseo_social_fb_title' => str_replace('%%wc_single_price_exc_tax%%', '%%wc_single_price_exe_tax%%', get_term_meta($post->ID, '_seopress_social_fb_title', true)),
				'_siteseo_social_fb_desc' => str_replace('%%wc_single_price_exc_tax%%', '%%wc_single_price_exe_tax%%', get_term_meta($post->ID, '_seopress_social_fb_desc', true)),
				'_siteseo_social_fb_img' => get_post_meta($post->ID,'_seopress_social_fb_img',true),
				'_siteseo_social_twitter_title' => str_replace('%%wc_single_price_exc_tax%%', '%%wc_single_price_exe_tax%%', get_term_meta($post->ID, '_seopress_social_twitter_title', true)),
				'_siteseo_social_twitter_desc' => str_replace('%%wc_single_price_exc_tax%%', '%%wc_single_price_exe_tax%%', get_term_meta($post->ID, '_seopress_social_twitter_desc', true)),
				'_siteseo_social_twitter_img' => get_post_meta($post->ID, '_seopress_social_twitter_img', true),
				'_siteseo_robots_index' => (!empty($robots_index) && $robots_index === 'yes') ? '1' : '0',
				'_siteseo_robots_follow' => (!empty($robots_follow) && $robots_follow === 'yes') ? '1' : '0',
				'_siteseo_robots_imageindex' => (!empty($robots_imageindex) && $robots_imageindex === 'yes') ? '1' : '0',
				'_siteseo_robots_archive' => (!empty($robots_archive) && $robots_archive === 'yes') ? '1' : '0',
				'_siteseo_robots_snippet' => get_post_meta($post->ID, '_seopress_robots_snippet', true),
				'_siteseo_robots_canonical' => get_post_meta($post->ID, '_seopress_robots_canonical', true),
				'_siteseo_analysis_target_kw' => get_post_meta($post->ID, '_seopress_analysis_target_kw', true),
				'_siteseo_redirections_enabled' => get_post_meta($post->ID, '_seopress_redirections_enabled', true) ? '1' : '0',
				'_siteseo_redirections_value' => get_post_meta($post->ID, '_seopress_redirections_value', true),
				'_siteseo_redirections_type' => get_post_meta($post->ID, '_seopress_redirections_type', true),
				'_siteseo_redirections_param' => get_post_meta($post->ID, '_seopress_redirections_param', true),
				'_siteseo_redirections_logged_status' => get_post_meta($post->ID, '_seopress_redirections_logged_status', true),
				'_siteseo_redirections_enabled_regex' => get_post_meta($post->ID, '_seopress_redirections_enabled_regex', true),
	
			];

			foreach($meta_mapping as $siteseo_key => $value){
				if(!empty($value)){
					update_post_meta($post->ID, $siteseo_key, $value);
					$imported_count++;
				}
			}
			$log[] = "Imported post ID: {$post->ID}";
		}
		
		$taxonomies = get_taxonomies();
		
		foreach($taxonomies as $taxonomy){
			$terms = get_terms([
				'taxonomy' => $taxonomy,
				'hide_empty' => false,
			]);
			
			foreach($terms as $term){
				
				$robots_index = get_term_meta($term->term_id, '_seopress_robots_index', true);
				$robots_follow = get_term_meta($term->term_id, '_seopress_robots_follow', true);
				$robots_imageindex = get_term_meta($term->term_id, '_seopress_robots_imageindex', true);
				$robots_archive = get_term_meta($term->term_id, '_seopress_robots_archive', true);
				
				$meta_mapping = [
					'_siteseo_titles_title' => str_replace('%%wc_single_price_exc_tax%%', '%%wc_single_price_exe_tax%%', get_term_meta($term->term_id, '_seopress_titles_title', true)),
					'_siteseo_titles_desc' => str_replace('%%wc_single_price_exc_tax%%', '%%wc_single_price_exe_tax%%', get_term_meta($term->term_id, '_seopress_titles_desc', true)),
					'_siteseo_social_fb_title' => str_replace('%%wc_single_price_exc_tax%%', '%%wc_single_price_exe_tax%%', get_term_meta($term->term_id, '_seopress_social_fb_title', true)),
					'_siteseo_social_fb_desc' => str_replace('%%wc_single_price_exc_tax%%', '%%wc_single_price_exe_tax%%', get_term_meta($term->term_id, '_seopress_social_fb_desc', true)),
					'_siteseo_social_fb_img' => get_term_meta($term->term_id,'_seopress_social_fb_img',true),
					'_siteseo_social_twitter_title' => str_replace('%%wc_single_price_exc_tax%%', '%%wc_single_price_exe_tax%%', get_term_meta($term->term_id, '_seopress_social_twitter_title', true)),
					'_siteseo_social_twitter_desc' => str_replace('%%wc_single_price_exc_tax%%', '%%wc_single_price_exe_tax%%', get_term_meta($term->term_id, '_seopress_social_twitter_desc', true)),
					'_siteseo_social_twitter_img' => get_term_meta($term->term_id, '_seopress_social_twitter_img', true),
					'_siteseo_robots_index' => (!empty($robots_index) && $robots_index === 'yes') ? '1' : '0',
					'_siteseo_robots_follow' => (!empty($robots_follow) && $robots_follow === 'yes') ? '1' : '0',
					'_siteseo_robots_imageindex' => (!empty($robots_imageindex) && $robots_imageindex === 'yes') ? '1' : '0',
					'_siteseo_robots_archive' => (!empty($robots_archive) && $robots_archive === 'yes') ? '1' : '0',
					'_siteseo_robots_snippet' => get_term_meta($term->term_id, '_seopress_robots_snippet', true),
					'_siteseo_robots_canonical' => get_term_meta($term->term_id, '_seopress_robots_canonical', true),
					'_siteseo_analysis_target_kw' => get_term_meta($term->term_id, '_seopress_analysis_target_kw', true),
					'_siteseo_redirections_enabled' => get_term_meta($term->term_id, '_seopress_redirections_enabled', true) ? '1' : '0',
					'_siteseo_redirections_value' => get_term_meta($term->term_id, '_seopress_redirections_value', true),
					'_siteseo_redirections_type' => get_term_meta($term->term_id, '_seopress_redirections_type', true),
					'_siteseo_redirections_param' => get_term_meta($term->term_id, '_seopress_redirections_param', true),
					'_siteseo_redirections_logged_status' => get_term_meta($term->term_id, '_seopress_redirections_logged_status', true),
					'_siteseo_redirections_enabled_regex' => get_term_meta($term->term_id, '_seopress_redirections_enabled_regex', true),
		
				];
				
				foreach($meta_mapping as $siteseo_key => $value){
					if(!empty($value)){
						update_term_meta($term->term_id, $siteseo_key, $value);
						$imported_count++;
					}
				}
				
				$log[] = "Imported term ID: {$term->term_id}";
			}
		}

		return [
			'count' => $imported_count,
			'log' => $log,
			/* translators: %d count of items imported */
			'message' => sprintf(__('SEOPress migration completed. Imported %d items.', 'siteseo'), $imported_count)
		];
	}
	
	static function slim_seo(){
		$imported_count = 0;
		$log = [];
		
		$posts = get_posts(['posts_per_page' => -1, 'post_type' => 'any', 'post_status' => 'any']);
		
		$taxonomies = get_taxonomies(array('public' => true), 'objects');
		
		foreach($posts as $post){
			$post_data = get_post_meta($post->ID, 'slim_seo', true);
			
			if(empty($post_data) || !is_array($post_data)){
				continue;
			}
			
			$meta_mapping = [
				'_siteseo_titles_title' => self::replace_snippet_vars((!empty($post_data['title']) ? $post_data['title'] : ''),'slim_seo'),
				'_siteseo_titles_desc' => self::replace_snippet_vars((!empty($post_data['description']) ? $post_data['description'] : ''),'slim_seo'),
				'_siteseo_social_fb_img' => !empty($post_data['facebook_image']) ? $post_data['facebook_image'] : '',
				'_siteseo_social_twitter_img' => !empty($post_data['twitter_image']) ? $post_data['twitter_image'] : '',
				'_siteseo_robots_index'         => isset($post_data['noindex']) && $post_data['noindex'] ? '1' : '',
				'_siteseo_robots_canonical' => !empty($post_data['canonical']) ? $post_data['canonical'] : '',
			];
			
			foreach($meta_mapping as $siteseo_key => $value){
				if(!empty($value)){
					update_post_meta($post->ID, $siteseo_key, $value);
					$imported_count++;
				}
			}
			
			$log[] = "Imported post ID: {$post->ID}";
		}
		
		$taxonomies = get_taxonomies();
		
		foreach($taxonomies as $taxonomy){
			
			$terms = get_terms([
				'taxonomy' => $taxonomy,
				'hide_empty' => false,
			]);
        
			foreach($terms as $term){
				$term_data = get_term_meta($term->term_id, 'slim_seo', true);
				
				if(empty($term_data) || !is_array($term_data)){
					continue;
				}
				
				$meta_mapping = [
					'_siteseo_titles_title' => self::replace_snippet_vars((!empty($term_data['title']) ? $term_data['title'] : ''),'slim_seo'),
					'_siteseo_titles_desc' => self::replace_snippet_vars((!empty($term_data['description']) ? $term_data['description'] : ''),'slim_seo'),
					'_siteseo_social_fb_img' => !empty($term_data['facebook_image']) ? $term_data['facebook_image'] : '',
					'_siteseo_social_twitter_img' => !empty($term_data['twitter_image']) ? $term_data['twitter_image'] : '',
					'_siteseo_robots_index' => !empty($term_data['noindex']) ? true : '',
					'_siteseo_robots_canonical' => !empty($term_data['canonical']) ? $term_data['canonical'] : '',
				];
				
				foreach($meta_mapping as $siteseo_key => $value){
					if(!empty($value)){
						update_term_meta($term->term_id, $siteseo_key, $value);
						$imported_count++;
					}
				}
				
				$log[] = "Imported term ID: {$term->term_id}";
			}
		}
		
		return [
			'count' => $imported_count,
			'log' => $log,
			/* translators: %d count of items imported */
			'message' => sprintf(__('Slim SEO import completed. Imported %d items.', 'siteseo'), $imported_count)
		];
	}

	static function replace_snippet_vars($string, $plugin){
		if(empty($string)) return $string;
		
		// We should not process the string if it does not have a variable
		if(!preg_match('/%|{|#/', $string)){
			return $string;
		}

		static $plugins = [
			'rank_math' => [
				'%sep%' => '%%sep%%',
				'%sitename%' => '%%sitetitle%%',
				'%sitedesc%' => '%%tagline%%',
				'%title%' => '%%post_title%%',
				'%excerpt%' => '%%post_excerpt%%',
				'%excerpt_only%' => '%%post_excerpt%%',
				'%post_thumbnail%' => '%%post_thumbnail_url%%',
				'%url%' => '%%post_url%%',
				'%date%' => '%%post_date%%',
				'%modified%' => '%%post_modified_date%%',
				'%name%' => '%%post_author%%',
				'%category%' => '%%post_category%%',
				'%tag%' => '%%post_tag%%',
				'%term%' => '%%term_title%%',
				'%term_description%' => '%%term_description%%',
				'%search_query%' => '%%search_keywords%%',
				'%pagenumber%' => '%%current_pagination%%',
				'%page%' => '%%page%%',
				'%archive_title%' => '%%archive_title%%',
				'%sitename_with_sep%' => '%%sep%%%%sitetitle%%',
				'%pt_plural%' => '%%cpt_plural%%',
				'%wc_shortdesc%' => '%%wc_single_short_desc%%',
				'%wc_price%' => '%%wc_single_price%%',
				'%wc_sku%' => '%%wc_sku%%',
				'%currentday%' => '%%currentday%%',
				'%currentmonth%' => '%%currentmonth%%',
				'%currentyear%' => '%%currentyear%%',
				'%currentdate%' => '%%currentdate%%',
				'%currenttime%' => '%%currenttime%%',
				'%user_description%' => '%%author_bio%%',
				'%focuskw%' => '%%target_keyword%%'
			],
			'yoast_seo' => [
				'%%sitename%%' => '%%sitetitle%%',
				'%%sitedesc%%' => '%%tagline%%',
				'%%title%%' => '%%post_title%%',
				'%%excerpt%%' => '%%post_excerpt%%',
				'%%excerpt_only%%' => '%%post_excerpt%%',
				'%%content%%' => '%%post_content%%',
				'%%thumbnail%%' => '%%post_thumbnail_url%%',
				'%%url%%' => '%%post_url%%',
				'%%date%%' => '%%post_date%%',
				'%%modified%%' => '%%post_modified_date%%',
				'%%author%%' => '%%post_author%%',
				'%%category%%' => '%%post_category%%',
				'%%primary_category%%' => '%%post_category%%',
				'%%tag%%' => '%%post_tag%%',
				'%%category_description%%' => '%%_category_description%%',
				'%%searchphrase%%' => '%%search_keywords%%',
				'%%pagenumber%%' => '%%current_pagination%%',
				'%%year%%' => '%%currentyear%%',
				'%%month%%' => '%%currentmonth%%',
				'%%day%%' => '%%currentday%%',
				'%%author_firstname%%' => '%%author_first_name%%',
				'%%author_lastname%%' => '%%author_last_name%%',
				'%%author_description%%' => '%%author_bio%%',
				'%%product_sku%%' => '%%wc_sku%%',
				'%%product_price%%' => '%%wc_single_price%%',
				'%%product_shortdesc%%' => '%%wc_single_short_desc%%',
				'%%product_category%%' => '%%wc_single_cat%%',
				'%%product_tag%%' => '%%wc_single_tag%%'
			],
			'aio_seo' => [
				'#separator_sa' => '%%sep%%',
				'#site_title' => '%%sitetitle%%',
				'#tagline' => '%%tagline%%',
				'#post_title' => '%%post_title%%',
				'#post_excerpt' => '%%post_excerpt%%',
				'#post_content' => '%%post_content%%',
				'#post_thumbnail' => '%%post_thumbnail_url%%',
				'#post_url' => '%%post_url%%',
				'#post_date' => '%%post_date%%',
				'#post_modified_date' => '%%post_modified_date%%',
				'#categories' => '%%post_category%%',
				'#post_tags' => '%%post_tag%%',
				'#author_name' => '%%post_author%%',
				'#taxonomy_title' => '%%post_category%%',
				'#tag_title' => '%%post_tag%%',
				'#term_name' => '%%term_title%%',
				'#term_description' => '%%term_description%%',
				'#search_query' => '%%search_keywords%%',
				'#page_number' => '%%page%%',
				'#pt_plural' => '%%cpt_plural%%',
				'#wc_short_description' => '%%wc_single_short_desc%%',
				'#wc_price' => '%%wc_single_price%%',
				'#wc_sku' => '%%wc_sku%%',
				'#current_day' => '%%currentday%%',
				'#current_month' => '%%currentmonth%%',
				'#current_year' => '%%currentyear%%',
				'#current_date' => '%%currentdate%%',
				'#current_time' => '%%currenttime%%',
				'#author_first_name' => '%%author_first_name%%',
				'#author_last_name' => '%%author_last_name%%',
				'#author_description' => '%%author_bio%%',
				'#focus_keyword' => '%%target_keyword%%',
				'#custom_field' => '%%_cf_your_custom_field_name%%'
			],
			'slim_seo' => [
				'{{ sep }}' => '%%sep%%',
				'{{ site.title }}' => '%%sitetitle%%',
				'{{ post.title }}' => '%%post_title%%',
				'{{ post.excerpt }}' => '%%post_excerpt%%',
				'{{ post.content }}' => '%%post_content%%',
				'{{ post_type.plural }}' => '%%cpt_plural%%',
				'{{ post.thumbnail }}' => '%%post_thumbnail_url%%',
				'{{ post.url }}' => '%%post_url%%',
				'{{ post.date }}' => '%%post_date%%',
				'{{ post.modified_date }}' => '%%post_modified_date%%',
				'{{ author.display_name }}' => '%%post_author%%',
				'{{ post.categories }}' => '%%post_category%%',
				'{{ post.tags }}' => '%%post_tag%%',
				'{{ term.name }}' => '%%term_title%%',
				'{{ term.description }}' => '%%term_description%%',
				'{{ page }}' => '%%page%%',
				'{{ current.month }}' => '%%currentmonth%%',
				'{{ current.day }}' => '%%currentday%%',
				'{{ current.year }}' => '%%currentyear%%',
				'{{ author.first_name }}' => '%%author_first_name%%',
				'{{ author.last_name }}' => '%%author_last_name%%',
				'{{ author.website_url }}' => '%%author_website%%',
				'{{ author.nickname }}' => '%%author_nickname%%',
				'{{ author.description }}' => '%%author_bio%%'
			],
			'surerank' => [
				'%site_name%'=> '%%sitetitle%%',
				'%title%' => '%%post_title%%',
				'%tagline%' => '%%tagline%%',
				'%post_url%' => '%%post_url%%',
				'%content%' => '%%post_content%%',
				'%sep%' => '%%sep%%',
				'%excerpt%' => '%%post_excerpt%%',
				'%author_name%' => '%%post_author%%',
				'%category%' => '%%post_category%%',
				'%tag%' => '%%post_tag%%',
				'%term_title%' => '%%term_title%%',
				'%term_description%' => '%%term_description%%',
				'%modified%' => '%%post_modified_date%%',
				'%currentdate%' => '%%currentday%%',
				'%currentmonth%' => '%%currentmonth%%',
				'%currentyear%' => '%%currentyear%%',
				
			]
		];

		if(!empty($plugins[$plugin])){
			return str_replace(array_keys($plugins[$plugin]), array_values($plugins[$plugin]), $string);
		}

		return $string;
	}

	static function surerank(){

		$imported_count = 0;
		$log = [];

		$posts = get_posts(['posts_per_page' => -1, 'post_type' => 'any', 'post_status' => 'any']);
		foreach($posts as $post){

			$general = get_post_meta($post->ID, 'surerank_settings_general', true);
			$general = is_array($general) ? $general : [];
			$social = get_post_meta($post->ID, 'surerank_settings_social', true);
			$social = is_array($social) ? $social : [];
			$noindex = get_post_meta($post->ID, 'surerank_settings_post_no_index', true);
			$nofollow = get_post_meta($post->ID, 'surerank_settings_post_no_follow', true);
			$noarchive = get_post_meta($post->ID, 'surerank_settings_post_no_archive', true);

			$meta_mapping = [

				'_siteseo_titles_title' => !empty($general['page_title']) ? self::replace_snippet_vars($general['page_title'], 'surerank') : '',
				'_siteseo_titles_desc' => !empty($general['page_description']) ? self::replace_snippet_vars($general['page_description'], 'surerank') : '',
				'_siteseo_robots_canonical' => !empty($general['canonical_url']) ? $general['canonical_url'] : '',
				'_siteseo_social_fb_title' => !empty($social['facebook_title']) ? self::replace_snippet_vars($social['facebook_title'], 'surerank') : '',
				'_siteseo_social_fb_desc' => !empty($social['facebook_description']) ? self::replace_snippet_vars($social['facebook_description'], 'surerank') : '',			
				'_siteseo_social_twitter_title' => !empty($social['twitter_title']) ? self::replace_snippet_vars($social['twitter_title'], 'surerank') : '',
				'_siteseo_social_twitter_desc' => !empty($social['twitter_description']) ? self::replace_snippet_vars($social['twitter_description'], 'surerank') : '',
				'_siteseo_social_fb_img' => !empty($social['facebook_image_url']) ? $social['facebook_image_url'] : '',
				'_siteseo_social_twitter_img' => !empty($social['twitter_image_url']) ? $social['twitter_image_url'] : '',

				// Robots
				'_siteseo_robots_index' => ($noindex === 'yes')   ? '1' : '',
				'_siteseo_robots_follow' => ($nofollow === 'yes')  ? '1' : '',
				'_siteseo_robots_archive' => ($noarchive === 'yes') ? '1' : '',
			];

			foreach($meta_mapping as $key => $value){
				if(!empty($value)){
					update_post_meta($post->ID, $key, $value);
					$imported_count++;
				}
			}

			$log[] = "Imported SureRank post ID: {$post->ID}";
		}
		
		$taxonomies = get_taxonomies();

		foreach($taxonomies as $taxonomy){

			$terms = get_terms([
				'taxonomy'   => $taxonomy,
				'hide_empty' => false,
			]);

			if(is_wp_error($terms) || empty($terms)){
				continue;
			}

			foreach($terms as $term){

				$general = get_term_meta($term->term_id, 'surerank_settings_general', true);
				$general = is_array($general) ? $general : [];
				$social = get_term_meta($term->term_id, 'surerank_settings_social', true);
				$social = is_array($social) ? $social : [];
				$noindex = get_term_meta($term->term_id, 'surerank_settings_term_no_index', true);
				$nofollow = get_term_meta($term->term_id, 'surerank_settings_term_no_follow', true);
				$noarchive = get_term_meta($term->term_id, 'surerank_settings_term_no_archive', true);

				$meta_mapping = [

					// Titles
					'_siteseo_titles_title' => !empty($general['page_title']) ? self::replace_snippet_vars($general['page_title'], 'surerank') : '',
					'_siteseo_titles_desc' => !empty($general['page_description']) ? self::replace_snippet_vars($general['page_description'], 'surerank') : '',
					'_siteseo_robots_canonical' => !empty($general['canonical_url']) ? $general['canonical_url'] : '',
					'_siteseo_social_fb_title' => !empty($social['facebook_title']) ? self::replace_snippet_vars($social['facebook_title'], 'surerank') : '',
					'_siteseo_social_fb_desc' => !empty($social['facebook_description']) ? self::replace_snippet_vars($social['facebook_description'], 'surerank') : '',
					'_siteseo_social_twitter_title' => !empty($social['twitter_title']) ? self::replace_snippet_vars($social['twitter_title'], 'surerank') : '',
					'_siteseo_social_twitter_desc' => !empty($social['twitter_description']) ? self::replace_snippet_vars($social['twitter_description'], 'surerank') : '',
					'_siteseo_social_fb_img' => !empty($social['facebook_image_url']) ? $social['facebook_image_url'] : '',
					'_siteseo_social_twitter_img' => !empty($social['twitter_image_url']) ? $social['twitter_image_url'] : '',

					// Robots
					'_siteseo_robots_index'   => ($noindex === 'yes')   ? '1' : '',
					'_siteseo_robots_follow'  => ($nofollow === 'yes')  ? '1' : '',
					'_siteseo_robots_archive' => ($noarchive === 'yes') ? '1' : '',
				];

				foreach($meta_mapping as $key => $value){
					if(!empty($value)){
						update_term_meta($term->term_id, $key, $value);
						$imported_count++;
					}
				}

				$log[] = "Imported SureRank term ID: {$term->term_id}";
			}
		}

		return [
			'count' => $imported_count,
			'log' => $log,
			'message' => sprintf(__('SureRank import completed. Imported %d items.', 'siteseo'), $imported_count),
		];
	}
}
PK��f\��i
i
main/primarycategory.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class PrimaryCategory{
	
	static function wc_primary_category($none_terms, $terms, $post){
		$primary_cat = null;

		if(!empty($post)){
			$wc_primary_cat = get_post_meta($post->ID, '_siteseo_robots_primary_cat', true);
			if(isset($wc_primary_cat) && '' != $wc_primary_cat && 'none' != $wc_primary_cat){
				
				if(null != $post->post_type && 'product' == $post->post_type){
					$primary_cat = get_term($wc_primary_cat, 'product_cat');
				}
				
				if(!is_wp_error($primary_cat) && null != $primary_cat){
					return $primary_cat;
				}
			} else{
				return $none_terms;
			}
		} else{
			return $none_terms;
		}
	}

	static function add_primary_category($none_cate, $cats, $post){
		$primary_cat = null;

		if(!empty($post)){
			$robots_primary_cat = get_post_meta($post->ID, '_siteseo_robots_primary_cat', true);
			if(isset($robots_primary_cat) && '' != $robots_primary_cat && 'none' != $robots_primary_cat){
				
				if(null != $post->post_type && 'post' == $post->post_type){
					$primary_cat = get_category($robots_primary_cat);
				}
				
				if(!is_wp_error($primary_cat) && null != $primary_cat){
					return $primary_cat;
				}
			} else{
				return $none_cate;
			}
		} else{
			return $none_cate;
		}
	}
	
	static function replace_breadcrumb_categories($crumbs, $breadcrumb){
		if(!is_product()){
			return $crumbs;
		}

		global $post;
		$primary_cat_id = get_post_meta($post->ID, '_siteseo_robots_primary_cat', true);
		
		if(!empty($primary_cat_id) && $primary_cat_id !== 'none'){
			$primary_cat = get_term($primary_cat_id, 'product_cat');
			
			if(!empty($primary_cat) && !is_wp_error($primary_cat)){
				
				$new_crumbs = [];
				foreach($crumbs as $key => $crumb){
					
					if($key === 0 || (isset($crumb[1]) && strpos($crumb[1], '?post_type=product') !== false)){
						$new_crumbs[] = $crumb;
					}
				}
				
				$ancestors = get_ancestors($primary_cat->term_id, 'product_cat');
				$ancestors = array_reverse($ancestors);
				
				foreach($ancestors as $ancestor_id){
					$ancestor = get_term($ancestor_id, 'product_cat');
					if(!empty($ancestor) && !is_wp_error($ancestor)){
						$new_crumbs[] = [
							$ancestor->name,
							get_term_link($ancestor)
						];
					}
				}
				
				if(!empty($primary_cat) && !is_wp_error($primary_cat)){
					$new_crumbs[] = [
						$primary_cat->name,
						get_term_link($primary_cat)
					];
				}
				
				if(count($crumbs) > 0){
					$new_crumbs[] = $crumbs[count($crumbs) - 1];
				}
				
				return $new_crumbs;
			}
		}

		return $crumbs;
	}
}PK��f\X��xllmain/advanced.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class Advanced{
	
	static function tags(){
		global $siteseo;

		if(empty($siteseo->setting_enabled['toggle-advanced'])){
			return; // toggle disable
		}
		// meta tags
		if(!empty($siteseo->advanced_settings['advanced_google'])){
			echo '<meta name="google-site-verification" content="'.esc_attr($siteseo->advanced_settings['advanced_google']).'" />' . "\n";
		}

		if(!empty($siteseo->advanced_settings['advanced_bing'])){
			echo '<meta name="msvalidate.01" content="'.esc_attr($siteseo->advanced_settings['advanced_bing']).'" />' . "\n";
		}

		if(!empty($siteseo->advanced_settings['advanced_pinterest'])){
			echo '<meta name="p:domain_verify" content="'.esc_attr($siteseo->advanced_settings['advanced_pinterest']).'" />';
		}

		if(!empty($siteseo->advanced_settings['advanced_yandex'])){
			echo '<meta name="yandex-verification" content="'.esc_attr($siteseo->advanced_settings['advanced_yandex']).'" />';
		}

		if(!empty($siteseo->advanced_settings['advanced_wp_rsd'])){
			remove_action('wp_head', 'rsd_link');
		}

	}
	
	static function remove_links(){
		global $siteseo;

		if(empty($siteseo->setting_enabled['toggle-advanced'])){
			return; // toggle disable
		}

		if(!empty($siteseo->advanced_settings['advanced_wp_rsd'])){
			remove_action('wp_head', 'rsd_link');
		}

		if(!empty($siteseo->advanced_settings['advanced_wp_wlw'])){
			remove_action('wp_head', 'wlwmanifest_link');
		}

		if(!empty($siteseo->advanced_settings['advanced_wp_shortlink'])){
			remove_action('wp_head', 'wp_shortlink_wp_head');
		}

		if(!empty($siteseo->advanced_settings['advanced_wp_generator'])){
			remove_action('wp_head', 'wp_generator');
		}

		if(!empty($siteseo->advanced_settings['advanced_comments_form_link'])){
			add_filter('comment_form_default_fields', '\SiteSEO\Advanced::remove_comment_url_field');
		}

		if(!empty($siteseo->advanced_settings['advanced_comments_author_url'])){
			add_filter('get_comment_author_link', '\SiteSEO\Advanced::remove_author_link_if_profile_url');
		}

		if(!empty($siteseo->advanced_settings['advanced_hentry'])){
			add_filter('post_class', '\SiteSEO\Advanced::remove_hentry_post_class');
		}

		if(!empty($siteseo->advanced_settings['advanced_noreferrer'])){
			add_filter('the_content', '\SiteSEO\Advanced::remove_noreferrer_from_post_content');
		}

		if(!empty($siteseo->advanced_settings['advanced_tax_desc_editor'])){
			add_action('edit_term', '\SiteSEO\Advanced::add_wp_editor_to_taxonomy_description', 10, 2);
		}
		
		if(!empty($siteseo->advanced_settings['advanced_category_url'])){
			add_action('init', '\SiteSEO\Advanced::remove_category_base', 111);
			add_action('template_redirect', '\SiteSEO\Advanced::redirect_category');
		}
	}
	
	static function add_wp_editor_to_taxonomy_description($tag, $tt_id = 0){

		if('edit' !== get_current_screen()->base || 'edit-tags' !== get_current_screen()->id){
			return;
		}

		if(isset($tag->description)){
			$editor_settings = array(
				'textarea_name' => 'description',
				'textarea_rows' => 10,
				'editor_class' => 'wp-editor-area',
				'media_buttons' => true,
				'tinymce' => true,
				'quicktags' => true,
			);

			wp_editor($tag->description, 'description', $editor_settings);
		}
	}

	static function remove_noreferrer_from_post_content($content){
		$content = preg_replace('/(<a\s+[^>]*rel=["\'][^"\']*?)(\s*\bnoreferrer\b\s*)([^"\']*["\'][^>]*>)/i', '$1$3', $content);
		return $content;
	}

	static function remove_hentry_post_class($classes){
		$classes = array_diff($classes, array('hentry'));
		return $classes;
	}

	static function remove_comment_url_field($fields){
		if(isset($fields['url'])){
			unset($fields['url']);
		}

		return $fields;
	}

	static function remove_author_link_if_profile_url($comment_author_link = '', $comment_author = '', $comment_id = 0){
		if(empty($comment_id)){
			return $comment_author;
		}

		$comment = get_comment($comment_id);
		
		if(empty($comment) || !is_object($comment)){
			return $comment_author;
		}

		$user_id = $comment->user_id;

		if(!empty($user_id)){
			$user_website = get_the_author_meta('user_url', $user_id);

			if($user_website){
				return get_comment_author($comment_id);
			}
		}

		return $comment_author;
	}
	
	static function remove_category_base(){
		
		$categories = get_categories(array('hide_empty' => false));
		$category_slugs = wp_list_pluck($categories, 'slug');

		if(empty($category_slugs)){
			return;
		}
    
		$category_pattern = '(' . implode('|', $category_slugs) .')';
    
		add_rewrite_rule(
			'^'.$category_pattern.'/?$',
			'index.php?category_name=$matches[1]',
			'top'
		);
		
		// Add rule for handle pagination  
		add_rewrite_rule(
			'^'.$category_pattern.'/page/([0-9]+)/?$',
			'index.php?category_name=$matches[1]&paged=$matches[2]',
			'top'
		);
	}
	
	static function redirect_category(){
		if(is_category() && !is_admin()){
			$category = get_query_var('category_name');
			$category_base = get_option('category_base');
			$base_to_check = !empty($category_base) ? $category_base : 'category';

			if(!empty($category) && strpos(sanitize_url($_SERVER['REQUEST_URI']), '/'.$base_to_check.'/') !== false){
				wp_safe_redirect(home_url('/' . $category . '/'), 301);
				exit;
			}
		}
	}
		
	static function remove_wc_category_base(){
		global $siteseo;

		if(empty($siteseo->advanced_settings['advanced_product_cat_url']) || empty($siteseo->setting_enabled['toggle-advanced'])){
			return;
		}
		
		if(!in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))){
			return;
		}
		
		add_filter('term_link', '\SiteSEO\Advanced::remove_category_base_woo', 10, 3);
		add_filter('request', '\SiteSEO\Advanced::category_url_request');
		add_action('created_product_cat', 'flush_rewrite_rules');
		add_action('delete_product_cat', 'flush_rewrite_rules');
		add_action('edited_product_cat', 'flush_rewrite_rules');
		add_action('parse_request', '\SiteSEO\Advanced::old_category_url_request');
		
	}
	
	static function remove_category_base_woo($termlink, $term, $taxonomy){
		if($taxonomy === 'product_cat'){
			$category_base = '/product-category/';
			return str_replace($category_base, '/', $termlink);
		}

		return $termlink;
	}
	
	static function category_url_request($query_vars){
		if(!isset($query_vars['product_cat']) && isset($query_vars['pagename'])){
			$pagename = $query_vars['pagename'];
			$term = get_term_by('slug', $pagename, 'product_cat');

			if($term){
				$query_vars['product_cat'] = $term->slug;
				unset($query_vars['pagename']);
			}
		}

		return $query_vars;
	}
	
	static function old_category_url_request($wp){
		
		if(!isset($wp->query_vars['pagename'])){
			return;
		}
		
		$pagename = $wp->query_vars['pagename'];
		$term = get_term_by('slug', $pagename, 'product_cat');
		
		if($term){
			$wp->query_vars['product_cat'] = $term->slug;
			unset($wp->query_vars['pagename']);
		}
		
	}
}
PK��f\ON��R�R�main/titlesmetas.phpnu�[���<?php
/*
* SITESEO
* https://siteseo.io
* (c) SiteSEO Team
*/

namespace SiteSEO;

if(!defined('ABSPATH')){
	die('HACKING ATTEMPT!');
}

class TitlesMetas{
	
	static function advanced_metas($robots){
		global $siteseo, $post;
		
		$disable_noindex = !empty($siteseo->advanced_settings['appearance_adminbar_noindex']) ? true : '';

		if(empty($siteseo->setting_enabled['toggle-titles']) || !empty($disable_noindex)){
			return $robots;
		}
		
		$settings = $siteseo->titles_settings;
		
		//all  post types and taxonomies
		$post_types = siteseo_post_types();
		$taxonomies = get_taxonomies(array('public' => true), 'objects');
    
		$post_id = isset($post) && is_object($post) ? $post->ID : 0;
		
		$index_extras = [
			'max-snippet' => '-1',
			'max-image-preview' => 'large',
			'max-video-preview' => '-1'
		];
		
		
		$robots = [
			'noindex' => !empty($settings['titles_noindex']),
			'nofollow' => !empty($settings['titles_nofollow']),
			'nosnippet' => !empty($settings['titles_nosnippet']),
			'noarchive' => !empty($settings['titles_noarchive']),
			'noimageindex' => !empty($settings['titles_noimageindex'])
		];

		if(!empty($post_id) && !empty($post->post_password)){
			$robots['noindex'] = true;
		}
		
		foreach($taxonomies as $taxonomy){
			// taxonomies
			$term_id = 0;
			if(is_tax() || is_category() || is_tag()){
				$queried_object = get_queried_object();
				$term_id = $queried_object->term_id ? $queried_object->term_id : 0;
				
				if($term_id){
					$robots['noindex'] = !empty(get_term_meta($term_id, '_siteseo_robots_index', true)) || $robots['noindex'];
					$robots['nofollow'] = !empty(get_term_meta($term_id, '_siteseo_robots_follow', true)) || $robots['nofollow'];
					$robots['nosnippet'] = !empty(get_term_meta($term_id, '_siteseo_robots_snippet', true)) || $robots['nosnippet'];
					$robots['noarchive'] = !empty(get_term_meta($term_id, '_siteseo_robots_archive', true)) || $robots['noarchive'];
					$robots['noimageindex'] = !empty(get_term_meta($term_id, '_siteseo_robots_imageindex', true)) || $robots['noimageindex'];
				}
				
				
				if(!empty($settings['titles_tax_titles'][$taxonomy->name]['noindex'])){
					
					if(isset($robots['index'])){
						unset($robots['index']);
					}
					
					$robots['noindex'] = true;
				}
								
				if(!empty($settings['titles_tax_titles'][$taxonomy->name]['nofollow'])){
					
					if(isset($robots['follow'])){
						unset($robots['follow']);
					}
					
					$robots['nofollow'] = true;
				}

				if(!$robots['noindex']){
					$robots['index'] = true;
					$robots = array_merge($robots, $index_extras);
				}

				if(!$robots['nofollow']){
					$robots['follow'] = true;
				}

				return array_filter($robots);
			}
		}
		
		// single post types
		foreach($post_types as $post_type){
			
			if($post_type->has_archive && is_post_type_archive($post_type->name)){
				
				if(function_exists('is_shop') && is_shop()){
					$post_id = !defined('SITEPAD') ? wc_get_page_id('shop') : kkart_get_page_id('shop');
				}
				
				if($post_id){
					$robots['noindex'] = !empty(get_post_meta($post_id, '_siteseo_robots_index', true)) || $robots['noindex'];
					$robots['nofollow'] = !empty(get_post_meta($post_id, '_siteseo_robots_follow', true)) || $robots['nofollow'];
					$robots['nosnippet'] = !empty(get_post_meta($post_id, '_siteseo_robots_snippet', true)) || $robots['nosnippet'];
					$robots['noarchive'] = !empty(get_post_meta($post_id, '_siteseo_robots_archive', true)) || $robots['noarchive'];
					$robots['noimageindex'] = !empty(get_post_meta($post_id, '_siteseo_robots_imageindex', true)) || $robots['noimageindex'];
				}
							
				if(!empty($settings['titles_archive_titles'][$post_type->name]['archive_noindex'])){
					
					if(isset($robots['index'])){
						unset($robots['index']);	
					}
					
					$robots['noindex'] = true;
				}
								
				if(!empty($settings['titles_archive_titles'][$post_type->name]['archive_nofollow'])){
					
					if(isset($robots['follow'])){
						unset($robots['follow']);
					}
					
					$robots['nofollow'] = true;
				}


				if(!$robots['noindex']){
					$robots['index'] = true;
					$robots = array_merge($robots, $index_extras);
				}

				if(!$robots['nofollow']){
					$robots['follow'] = true;
				}

				return array_filter($robots);
				
			}
			
			if(is_singular($post_type->name)){
				
				if($post_id){
					$robots['noindex'] = !empty(get_post_meta($post_id, '_siteseo_robots_index', true)) || $robots['noindex'];
					$robots['nofollow'] = !empty(get_post_meta($post_id, '_siteseo_robots_follow', true)) || $robots['nofollow'];
					$robots['nosnippet'] = !empty(get_post_meta($post_id, '_siteseo_robots_snippet', true)) || $robots['nosnippet'];
					$robots['noarchive'] = !empty(get_post_meta($post_id, '_siteseo_robots_archive', true)) || $robots['noarchive'];
					$robots['noimageindex'] = !empty(get_post_meta($post_id, '_siteseo_robots_imageindex', true)) || $robots['noimageindex'];
				}
							
				if(!empty($settings['titles_single_titles'][$post_type->name]['noindex'])){
					
					if(isset($robots['index'])){
						unset($robots['index']);	
					}
					
					$robots['noindex'] = true;
				}
								
				if(!empty($settings['titles_single_titles'][$post_type->name]['nofollow'])){
					
					if(isset($robots['follow'])){
						unset($robots['follow']);
					}
					
					$robots['nofollow'] = true;
				}


				if(!$robots['noindex']){
					$robots['index'] = true;
					$robots = array_merge($robots, $index_extras);
				}

				if(!$robots['nofollow']){
					$robots['follow'] = true;
				}
				
				// woocommerce pages, cart page
				if(function_exists('is_cart') && is_cart()){
					unset($robots['index']);
					$robots['noindex'] = true;
				}
				
				// checkout page
				if(function_exists('is_checkout') && is_checkout()){
					unset($robots['index']);
					$robots['noindex'] = true;
				}
				
				// account page 
				if(function_exists('is_account_page') && is_account_page()){
					unset($robots['index']);
					$robots['noindex'] = true;
				}

				return array_filter($robots);
			}
		}
		
		//archive pages
		if(is_author()){
			$robots['noindex'] = !empty($settings['titles_archives_author_noindex']);
			
			if(!$robots['noindex']){
				$robots['index'] = true;
				$robots = array_merge($robots, $index_extras);
			}
		}
		
		if(is_date()){
			$robots['noindex'] = !empty($settings['titles_archives_date_noindex']);
			
			if(!$robots['noindex']){
				$robots['index'] = true;
				$robots = array_merge($robots, $index_extras);
			}
		}
		
		if(is_search()){
			$robots['noindex'] = !empty($settings['titles_archives_search_title_noindex']);
			
			if(!$robots['noindex']){
				$robots['index'] = true;
				$robots = array_merge($robots, $index_extras);
			}
		}

		// default home page
		if(is_front_page() && is_home()){

			$robots = [
				'index' => true,
				'follow' => true
			];

			if(!empty($settings['titles_noindex'])){
				$robots['noindex'] = true;
				unset($robots['index']);
			}

			if(!empty($settings['titles_nofollow'])){
				$robots['nofollow'] = true;
				unset($robots['follow']);
			}

			if(!empty($settings['titles_nosnippet'])){
				$robots['nosnippet'] = true;
			}

			if(!empty($settings['titles_noarchive'])){
				$robots['noarchive'] = true;
			}

			if(!empty($settings['titles_noimageindex'])){
				$robots['noimageindex'] = true;
			}

			$robots = array_merge($robots, $index_extras);
		}
		
		// static set posts page
		if(is_home() && !is_front_page()){
			$blog_page_id = get_option('page_for_posts');
			
			$robots = [
				'index' => true,
				'follow' => true
			];
			
			if($blog_page_id){
				// Check blog page specific meta settings
				$robots['noindex'] = !empty(get_post_meta($blog_page_id, '_siteseo_robots_index', true));
				$robots['nofollow'] = !empty(get_post_meta($blog_page_id, '_siteseo_robots_follow', true));
				$robots['nosnippet'] = !empty(get_post_meta($blog_page_id, '_siteseo_robots_snippet', true));
				$robots['noarchive'] = !empty(get_post_meta($blog_page_id, '_siteseo_robots_archive', true));
				$robots['noimageindex'] = !empty(get_post_meta($blog_page_id, '_siteseo_robots_imageindex', true));
			}
			
			// Apply global settings as fallback
			if(!empty($settings['titles_noindex'])){
				$robots['noindex'] = true;
			}

			if(!empty($settings['titles_nofollow'])){
				$robots['nofollow'] = true;
			}

			if(!empty($settings['titles_nosnippet'])){
				$robots['nosnippet'] = true;
			}

			if(!empty($settings['titles_noarchive'])){
				$robots['noarchive'] = true;
			}

			if(!empty($settings['titles_noimageindex'])){
				$robots['noimageindex'] = true;
			}
			
			// Clean up conflicting directives
			if(!empty($robots['noindex'])){
				unset($robots['index']);
			}
			
			if(!empty($robots['nofollow'])){
				unset($robots['follow']);
			}
			
			if(empty($robots['noindex'])){
				$robots = array_merge($robots, $index_extras);
			}
		}
		
		return array_filter($robots);
	}
	
	static function add_nositelinkssearchbox(){
		global $siteseo;
		
		if(empty($siteseo->setting_enabled['toggle-titles'])){
			return;
		}
	
		if(!empty($siteseo->titles_settings['titles_nositelinkssearchbox'])){
			echo '<meta name="google" content="nositelinkssearchbox" >';
		}
		
	}
	
	static function add_canonical_url(){	
		$post_types = siteseo_post_types();
		
		foreach($post_types as $post_type){
			
			if($post_type->has_archive && is_post_type_archive($post_type->name)){
				$post_id = get_the_ID();
				$archive_url = get_post_type_archive_link($post_type->name);
				$canonical_meta = get_post_meta($post_id, '_siteseo_robots_canonical', true);
				$canonical = !empty($canonical_meta) ? $canonical_meta : $archive_url;
				
				if($archive_url){
					echo '<link rel="canonical" href="'.esc_url($archive_url).'" />' . "\n";
				}
			}
			
			if(is_singular($post_type->name)){
				$post_id = get_the_ID();
				$canonical_meta = get_post_meta($post_id, '_siteseo_robots_canonical', true);
				$canonical = !empty($canonical_meta) ? $canonical_meta : urldecode(get_permalink($post_id));
				
				if($canonical){
					echo '<link rel="canonical" href="'.esc_url($canonical).'" />' . "\n";
				}
			}
		}

		//taxonomies
		$taxonomies = get_taxonomies(array('public' => true), 'objects');
		
		if(is_tag() || is_category() || is_tax()){
			$term = get_queried_object();
			if($term && isset($term->term_id, $term->taxonomy)){
				$term_id = $term->term_id;
				$taxonomy_name = $term->taxonomy;
				
				$canonical_meta = get_term_meta($term_id, '_siteseo_robots_canonical', true);
				$canonical = !empty($canonical_meta) ? $canonical_meta : urldecode(get_term_link($term_id, $taxonomy_name));
				
				if($canonical){
					echo '<link rel="canonical" href="'.esc_url($canonical).'" />' . "\n";
				}
			}
		}
		
		// default home page
		if(is_front_page() && is_home()){
			$canonical = trailingslashit(home_url());
			echo '<link rel="canonical" href="'.esc_url($canonical).'" />' . "\n";				
		}
		
		// if static posts set
		if(is_home() && !is_front_page()){ 
			$blog_page_id = get_option('page_for_posts');
			if($blog_page_id){
				$canonical_meta = get_post_meta($blog_page_id, '_siteseo_robots_canonical', true);
				$canonical = !empty($canonical_meta) ? $canonical_meta : urldecode(get_permalink($blog_page_id));
				
				if($canonical){
					echo '<link rel="canonical" href="'.esc_url($canonical).'" />' . "\n";
				}
			} else{
				$canonical = trailingslashit(home_url());
				echo '<link rel="canonical" href="'.esc_url($canonical).'" />' . "\n";
			}
		}
		 
	}
	
	static function replace_variables($content, $in_editor = false){
		global $post, $siteseo, $wp_query, $term;
		
		// Site info
		$site_title = get_bloginfo('name');
		$site_tagline = get_bloginfo('description');
		$site_sep = !empty($siteseo->titles_settings['titles_sep']) ? $siteseo->titles_settings['titles_sep'] : '-';

		$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
		$page = get_query_var('page') ? get_query_var('page') : 1;
		
		// Date info
		$current_time = current_time('timestamp');
		$archive_date = get_the_date('d');
		$archive_month = get_the_date('M');
		$archive_month_name = get_the_date('F');
		$archive_year = get_the_date('Y');
		
		// Author
		$author_id = isset($post->post_author) ? $post->post_author : get_current_user_id();
		$author_first_name = get_the_author_meta('first_name', $author_id);
		$author_last_name = get_the_author_meta('last_name', $author_id);
		$author_website = get_the_author_meta('url', $author_id);
		$author_nickname = get_the_author_meta('nickname', $author_id);
		$author_bio = get_the_author_meta('description', $author_id);
		
		// WooCommerce
		$wc_variables = [];
		if(function_exists('wc_get_product') && is_singular('product')){
			$product = wc_get_product($post->ID);
			if($product){
				$wc_variables = array(
					'%%wc_single_cat%%' => wp_strip_all_tags(wc_get_product_category_list($post->ID)),
					'%%wc_single_tag%%' => wp_strip_all_tags(wc_get_product_tag_list($post->ID)),
					'%%wc_single_short_desc%%' => $product->get_short_description(),
					'%%wc_single_price%%' => $product->get_price(),
					'%%wc_single_price_exe_tax%%' => wc_get_price_excluding_tax($product),
					'%%wc_sku%%' => $product->get_sku(),
					'%%wc_parent_cat%%' => self::get_parent_category_name($post->ID),
				);
			}
		}
		
		//KKART
		$kkart_variables = [];
		if(function_exists('kkart_get_product') && is_singular('product')){
			$product = kkart_get_product($post->ID);
			if($product){
				$kkart_variables = array(
					'%%wc_single_cat%%' => wp_strip_all_tags(kkart_get_product_category_list($post->ID)),
					'%%wc_single_tag%%' => wp_strip_all_tags(kkart_get_product_tag_list($post->ID)),
					'%%wc_single_short_desc%%' => $product->get_short_description(),
					'%%wc_single_price%%' => $product->get_price(),
					'%%wc_single_price_exe_tax%%' => kkart_get_price_excluding_tax($product),
					'%%wc_sku%%' => $product->get_sku(),
					'%%wc_parent_cat%%' => self::get_parent_category_name($post->ID),
				);
			}
		}

		$replacements = array(
			'%%sep%%' => $site_sep,
			'%%sitetitle%%' => $site_title,
			'%%tagline%%' => $site_tagline,
			'%%post_title%%' => (is_singular() || $in_editor === TRUE) ? get_the_title() : (is_home() ? get_the_title(get_option('page_for_posts')) : ''),
			'%%post_excerpt%%' => (is_singular() || $in_editor === TRUE) ? get_the_excerpt() : '',
			'%%post_content%%' => (is_singular() || $in_editor === TRUE) ? wp_strip_all_tags(get_the_content()) : '',
			'%%post_thumbnail_url%%' => get_the_post_thumbnail_url($post),
			'%%post_url%%' => urldecode(get_permalink()),
			'%%post_date%%' => get_the_date(),
			'%%post_modified_date%%' => get_the_modified_date(),
			'%%post_author%%' => get_the_author(),
			'%%post_category%%' => wp_strip_all_tags(get_the_category_list(', ')),
			'%%post_tag%%' => wp_strip_all_tags(get_the_tag_list('', ', ', '')),
			'%%_category_title%%' => single_cat_title('', false),
			'%%_category_description%%' => category_description(),
			'%%tag_title%%' => single_tag_title('', false),
			'%%tag_description%%' => tag_description(),
			'%%term_title%%' => single_term_title('', false),
			'%%term_description%%' => term_description(),
			'%%search_keywords%%' => get_search_query(),
			'%%current_pagination%%' => $paged,
			'%%page%%' => $page,
			'%%cpt_plural%%' => post_type_archive_title('', false),
			'%%archive_title%%' => get_the_archive_title(),
			'%%archive_date%%' => $archive_date,
			'%%archive_date_day%%' => $archive_date,
			'%%archive_date_month%%' => $archive_month,
			'%%archive_date_month_name%%' => $archive_month_name,
			'%%archive_date_year%%' => $archive_year,
			'%%currentday%%' => date_i18n('j', $current_time),
			'%%currentmonth%%' => date_i18n('F', $current_time),
			'%%currentmonth_short%%' => date_i18n('M', $current_time),
			'%%currentmonth_num%%' => date_i18n('n', $current_time),
			'%%currentyear%%' => date_i18n('Y', $current_time),
			'%%currentdate%%' => date_i18n(get_option('date_format'), $current_time),
			'%%currenttime%%' => date_i18n(get_option('time_format'), $current_time),
			'%%author_first_name%%' => $author_first_name,
			'%%author_last_name%%' => $author_last_name,
			'%%author_website%%' => $author_website,
			'%%author_nickname%%' => $author_nickname,
			'%%author_bio%%' => $author_bio,
		);
		
		//WooCommerces
		if(!empty($wc_variables)){
			$replacements = array_merge($replacements, $wc_variables);
		}

		//Kkart
		if(!empty($kkart_variables)){
			$replacements = array_merge($replacements, $kkart_variables);
		}

		$safe_list = [
			'_siteseo_titles_title',
			'_siteseo_titles_desc',
			'_siteseo_social_fb_title',
			'_siteseo_social_fb_desc',
			'_siteseo_social_fb_img',
			'_siteseo_social_twitter_title',
			'_siteseo_social_twitter_desc',
			'_siteseo_social_twitter_img',

			// WooCommerce 
			'_price',
			'_regular_price',
			'_sale_price',
			'_stock',
			'_stock_status',
			'_sku',
			'_weight',
			'_length',
			'width',
			'_height',
			'total_sales',
		];

		if(preg_match_all('/%%_cf_(.*?)%%/', $content, $matches)){
			foreach ($matches[1] as $custom_field) {

				if(!in_array($custom_field, $safe_list, true)){
					continue;
				}

				$meta_value = get_post_meta($post->ID, $custom_field, true);
				$replacements["%%_cf_{$custom_field}%%"] = $meta_value;
			}
		}

		if(preg_match_all('/%%_ct_(.*?)%%/', $content, $matches)){
			foreach($matches[1] as $taxonomy){

				if(!in_array($taxonomy, $safe_list, true)){
					continue;
				}

				$terms = get_the_terms($post->ID, $taxonomy);
				$term_names = is_array($terms) ? wp_list_pluck($terms, 'name') : [];
				$replacements["%%_ct_{$taxonomy}%%"] = implode(', ', $term_names);
			}
		}

		if(preg_match_all('/%%_ucf_(.*?)%%/', $content, $matches)){
			foreach($matches[1] as $user_meta){

				if(!in_array($user_meta, $safe_list, true)){
					continue;
				}

				$meta_value = get_user_meta($author_id, $user_meta, true);
				$replacements["%%_ucf_{$user_meta}%%"] = $meta_value;
			}
		}

		$target_keywords = isset($siteseo->keywords_settings['tempory_set']) ? $siteseo->keywords_settings['tempory_set'] : '';
		$replacements['%%target_keyword%%'] = $target_keywords;

		$replacements = array_map(function($value){
			if(is_array($value) || is_object($value)){
				return '';
			}

			return is_null($value) ? '' : wp_strip_all_tags($value);
		}, $replacements);

		return str_replace(
			array_keys($replacements),
			array_values($replacements),
			$content
		);
	}

	static function get_parent_category_name($product_id){
		if(!class_exists('WooCommerce') && !class_exists('KKART')){
			return;
		}

		$terms = get_the_terms($product_id, 'product_cat');

		if(empty($terms) || is_wp_error($terms)){
			return '';
		}

		// Find the parent category (the one with parent = 0)
		foreach($terms as $term){
			if($term->parent == 0){
				return $term->name;
			}
		}

	}
	
	static function modify_site_title($title, $sep = ''){
		global $siteseo, $post;

		// Check enabled
		if(empty($siteseo->setting_enabled['toggle-titles'])){
			return $title;
		}

		$settings = $siteseo->titles_settings;

		// post types and taxonomies
		$post_types = siteseo_post_types();
		$taxonomies = get_taxonomies(array('public' => true), 'objects');
		
		// Check set by meta
		$post_id = isset($post) && is_object($post) ? $post->ID : '';
		$post_meta_title = !empty(get_post_meta($post_id, '_siteseo_titles_title', true)) ? get_post_meta($post_id, '_siteseo_titles_title', true) : '';
		
		// default home page
		if(is_front_page() && is_home()){
			
			if(!empty($settings['titles_home_site_title'])){
				$new_title = $settings['titles_home_site_title'];
			}
			
			if(!empty($new_title)){
				$new_title = esc_attr(self::replace_variables($new_title));
				if(!empty($sep)){
					$new_title .= " $sep " . get_bloginfo('name');
				}
				
				return $new_title;
			}
		}
		
		// static posts pages
		if(is_home() && !is_front_page()){
			$blog_page_id = get_option('page_for_posts');
			
			if($blog_page_id){
				$blog_meta_title = get_post_meta($blog_page_id, '_siteseo_titles_title', true);
				$default_title = !empty($settings['titles_single_titles']['page']['title']) ? $settings['titles_single_titles']['page']['title'] : '';
				
				$new_title = !empty($blog_meta_title) ? $blog_meta_title : $default_title;
				
				if(!empty($new_title)){
					$new_title = esc_attr(self::replace_variables($new_title));

					if(!empty($sep)){
						$new_title .= " $sep " . get_bloginfo('name');
					}

					return $new_title;
				}
			}
		}

		// single post types
		foreach($post_types as $post_type){
			
			if($post_type->has_archive && is_post_type_archive($post_type->name)){
				
				$post_meta_title = '';
				
				if(function_exists('is_shop') && is_shop()){
					$shop_page_id = !defined('SITEPAD') ? wc_get_page_id('shop') : kkart_get_page_id('shop') ;
					$post_meta_title = get_post_meta($shop_page_id, '_siteseo_titles_title', true);
				}
				
				$default_title = isset($settings['titles_archive_titles'][$post_type->name]['archive_title']) ? $settings['titles_archive_titles'][$post_type->name]['archive_title'] : '';
				
				$new_title = !empty($post_meta_title) ? $post_meta_title : $default_title;

				if(!empty($new_title)){
					$new_title = esc_attr(self::replace_variables($new_title));

					if(!empty($sep)){
						$new_title .= " $sep " . get_bloginfo('name');
					}

					return $new_title;
				}
				
			}
			
			if(is_singular($post_type->name)){
				$default_title = isset($settings['titles_single_titles'][$post_type->name]['title']) ? $settings['titles_single_titles'][$post_type->name]['title'] : '';
				$new_title = !empty($post_meta_title) ? $post_meta_title : $default_title;

				if(!empty($new_title)){
					$new_title = esc_attr(self::replace_variables($new_title));

					if(!empty($sep)){
						$new_title .= " $sep " . get_bloginfo('name');
					}

					return $new_title;
				}
			}
		}

		//taxonomies
		foreach($taxonomies as $taxonomy){
			if(is_category()){
				$term = get_queried_object();
				$term_id = $term->term_id;
				$term_meta_title = get_term_meta($term_id, '_siteseo_titles_title', true);
				$default_title = isset($settings['titles_tax_titles']['category']['title']) ? $settings['titles_tax_titles']['category']['title'] : '';
				$disabled = !empty($settings['titles_tax_titles']['category']['disabled']);
				$new_title = !empty($term_meta_title) ? $term_meta_title : $default_title;

				if(!empty($new_title) && !$disabled){
					$new_title = esc_attr(self::replace_variables($new_title));
					
					if(!empty($sep)){
						$new_title .= " $sep " . get_bloginfo('name');
					}

					return $new_title;
				}
			} elseif(is_tag()) {
				$term = get_queried_object();
				$term_id = $term->term_id;
				$term_meta_title = get_term_meta($term_id, '_siteseo_titles_title', true);
				$default_title = isset($settings['titles_tax_titles']['post_tag']['title']) ? $settings['titles_tax_titles']['post_tag']['title'] : '';
				$disabled = !empty($settings['titles_tax_titles']['post_tag']['disabled']);

				$new_title = !empty($term_meta_title) ? $term_meta_title : $default_title;

				if(!empty($new_title) && !$disabled){
					$new_title = esc_attr(self::replace_variables($new_title));

					
					if(!empty($sep)){
						$new_title .= " $sep " . get_bloginfo('name');
					}

					return $new_title;
				}
			} elseif(is_tax($taxonomy->name)) {
				$term = get_queried_object();
				$term_id = $term->term_id;
				$term_meta_title = get_term_meta($term_id, '_siteseo_titles_title', true);
				$default_title = isset($settings['titles_tax_titles'][$taxonomy->name]['title']) ? $settings['titles_tax_titles'][$taxonomy->name]['title'] : '';
				$disabled = !empty($settings['titles_tax_titles'][$taxonomy->name]['disabled']);

				$new_title = !empty($term_meta_title) ? $term_meta_title : $default_title;

				if(!empty($new_title) && !$disabled){
					$new_title = esc_attr(self::replace_variables($new_title));

					if(!empty($sep)){
						$new_title .= " $sep " . get_bloginfo('name');
					}

					return $new_title;
				}
			}
		}
		
		// author archive
		if(is_author() && !empty($settings['titles_archives_author_title']) && empty($settings['titles_archives_author_disable'])) {
			$new_title = esc_attr(self::replace_variables($settings['titles_archives_author_title']));

			if(!empty($sep)){
				$new_title .= " $sep " . get_bloginfo('name');
			}

			return $new_title;
		}

		//Date archive
		if(is_date() && !empty($settings['titles_archives_date_title']) && empty($settings['titles_archives_date_disable'])){
			$new_title = esc_attr(self::replace_variables($settings['titles_archives_date_title']));

			if(!empty($sep)){
				$new_title .= " $sep " . get_bloginfo('name');
			}

			return $new_title;
		}
		
		// Search archive
		if(is_search() && !empty($settings['titles_archives_search_title'])){

			$new_title = esc_attr(self::replace_variables($settings['titles_archives_search_title']));

			if(!empty($sep)){
				$new_title .= " $sep " . get_bloginfo('name');
			}

			return $new_title;
		}
		
		// 404 archive
		if(is_404() && !empty($settings['titles_archives_404_title'])){

			$new_title = esc_attr(self::replace_variables($settings['titles_archives_404_title']));

			if(!empty($sep)){
				$new_title .= " $sep " . get_bloginfo('name');
			}

			return $new_title;
		}

		return $title;
	}
	
	static function add_meta_description(){
		global $siteseo, $post;

		if(empty($siteseo->setting_enabled['toggle-titles'])){
			return;
		}

		$settings = $siteseo->titles_settings;

		// Get all registered post types
		$post_types = siteseo_post_types();
		$taxonomies = get_taxonomies(array('public' => true), 'objects');

		$post_id = isset($post) && is_object($post) ? $post->ID : '';
		
		// default home page
		if(is_front_page() && is_home()){
			
			if(!empty($settings['titles_home_site_desc'])){
				$processed_desc = self::replace_variables($settings['titles_home_site_desc']);
				echo '<meta name="description" content="' . esc_attr(self::truncate_desc($processed_desc)) . '">';
			} else{
				$description = get_bloginfo('description');
				if(!empty($description)){
					echo '<meta name="description" content="' . esc_attr($description) . '">';
				}
			}
		}
		
		// if set static posts page
		if(is_home() && !is_front_page()){
			$blog_page_id = get_option('page_for_posts');
			if($blog_page_id){
				$meta_desc = get_post_meta($blog_page_id, '_siteseo_titles_desc', true);
				if(!empty($meta_desc)){
					$processed_desc = esc_attr(self::replace_variables($meta_desc));
					echo '<meta name="description" content="' . esc_attr(self::truncate_desc($processed_desc)) . '">';
				} elseif(!empty($settings['titles_single_titles']['page']['description'])){
					$processed_desc = self::replace_variables($settings['titles_single_titles']['page']['description']);
				
					echo '<meta name="description" content="' . esc_attr(self::truncate_desc($processed_desc)) . '">';
				} else{
					$description = get_bloginfo('description'); 
					if(!empty($description)){ 
						echo '<meta name="description" content="' . esc_attr(self::truncate_desc($description)) . '">'; 
					} 
				}
			}
		}
		
		// single post types
		foreach($post_types as $post_type){
			
			if($post_type->has_archive && is_post_type_archive($post_type->name)){
				
				$archive_desc = '';
				if(is_post_type_archive()){
					$obj = get_queried_object();
					
					if(!empty($obj) && isset($obj->name)){
						$archive_desc  = !empty($obj->description) ? $obj->description : '';
					}
				}
				
				$meta_desc = '';
				
				if(function_exists('is_shop') && is_shop()){
					$shop_page_id = !defined('SITEPAD') ? wc_get_page_id('shop') : kkart_get_page_id('shop');
					$meta_desc = get_post_meta($shop_page_id, '_siteseo_titles_desc', true);
				}
				
				$description = !empty($settings['titles_archive_titles'][$post_type->name]['archive_desc']) ? $settings['titles_archive_titles'][$post_type->name]['archive_desc'] : $archive_desc;
				
				$description = !empty($meta_desc) ? $meta_desc : $description;

				if(!empty($description)){
					$description = self::replace_variables($description);
					echo '<meta name="description" content="' . esc_attr(self::truncate_desc($description)) . '">';
				}
				
			}
			
			if(is_singular($post_type->name)){
				$meta_desc = get_post_meta($post_id, '_siteseo_titles_desc', true);
				$default_desc = isset($settings['titles_single_titles'][$post_type->name]['description']) ? $settings['titles_single_titles'][$post_type->name]['description'] : '';

				$description = !empty($meta_desc) ? $meta_desc : $default_desc;

				if(!empty($description)){
					$description = self::replace_variables($description);
					echo '<meta name="description" content="' . esc_attr(self::truncate_desc($description)) . '">';
				}
			}
		}
		
		if(is_category() || is_tag() || is_tax()){
			$term = get_queried_object();
			if($term){
				$term_id = $term->term_id;
				$term_meta_desc = get_term_meta($term_id, '_siteseo_titles_desc', true);
				$default_desc = '';
				$taxonomy_name = '';

				if(is_category()){
					$default_desc = isset($settings['titles_tax_titles']['category']['description']) ? $settings['titles_tax_titles']['category']['description'] : '';
					$taxonomy_name = 'category';
				} elseif(is_tag()){
					$default_desc = isset($settings['titles_tax_titles']['post_tag']['description']) ? $settings['titles_tax_titles']['post_tag']['description'] : '';
					$taxonomy_name = 'post_tag';
				} else{
					$taxonomy_name = $term->taxonomy;
					$default_desc = isset($settings['titles_tax_titles'][$taxonomy_name]['description']) ? $settings['titles_tax_titles'][$taxonomy_name]['description'] : '';
				}

				$disabled = isset($settings['titles_tax_titles'][$taxonomy_name]['disabled']);

				$description = !empty($term_meta_desc) ? $term_meta_desc : $default_desc;

				if(!empty($disabled)){
					$description = self::replace_variables($description);
					echo '<meta name="description" content="' . esc_attr(self::truncate_desc($description)) . '">';
				}
			}
		}
		
		// Author archive
		if(is_author() && !empty($settings['titles_archives_author_desc']) && empty($settings['titles_archives_author_disable'])){
			$description = self::replace_variables($settings['titles_archives_author_desc']);
			echo '<meta name="description" content="'.esc_attr(self::truncate_desc($description)).'" >';
		}
		
		// Date archive
		if(is_date() && !empty($settings['titles_archives_date_desc']) && empty($settings['titles_archives_date_disable'])){
			$description = self::replace_variables($settings['titles_archives_date_desc']);
			echo '<meta name="description" content="'.esc_attr(self::truncate_desc($description)).'" >';
		}
		
		// Search archive
		if(is_search() && !empty($settings['titles_archives_search_desc'])){
			$description = self::replace_variables($settings['titles_archives_search_desc']);
			echo '<meta name="description" content="'.esc_attr(self::truncate_desc($description)).'" >';
		}
		
		// 404 archives
		if(is_404() && !empty($settings['titles_archives_404_desc'])){
			$description = self::replace_variables($settings['titles_archives_404_desc']);
			echo '<meta name="description" content="'.esc_attr(self::truncate_desc($description)).'" >';
		}
	}
	
	static function add_rel_link_pages(){
		global $siteseo, $paged;

		if(empty($siteseo->setting_enabled['toggle-titles'])){
			return;
		}

		if(!empty($siteseo->titles_settings['titles_paged_rel'])){

			if(get_previous_posts_link()){

				echo '<link rel="prev" href="'.esc_url(get_pagenum_link($paged - 1)).'" />';
			}
			if(get_next_posts_link()){

				echo '<link rel="next" href="'.esc_url(get_pagenum_link($paged + 1)).'" />';
			}
		}
	}

	static function date_time_publish(){
		global $siteseo;
		
		if(empty($siteseo->setting_enabled['toggle-titles'])){
			return;
		}
		
		if(!is_singular()){
			return;
		}
		
		
		$current_post_type = get_post_type();
		
		$type_settings = isset($siteseo->titles_settings['titles_single_titles'][$current_post_type]) ? $siteseo->titles_settings['titles_single_titles'][$current_post_type] : '';
		
		// post type
		if(!empty($type_settings['date'])){
			$published_time = get_the_date('c');
			$modified_time = get_the_modified_date('c');
			echo '<meta property="article:published_time" content="'. esc_attr($published_time) .'">';
			echo '<meta property="article:modified_time" content="'. esc_attr($modified_time) .'">';
		}
		
		// thumbnails
		if(!empty($type_settings['thumb_gcs'])){
			if(get_the_post_thumbnail_url(get_the_ID())){
				echo '<meta name="thumbnail" content="'.esc_url(get_the_post_thumbnail_url(get_the_ID())).'">';
			}
		}

	}

	static function truncate_desc($desc){
		return trim($desc);
	}
}
PK��f\H�rόJ�J
readme.txtnu�[���=== SiteSEO - SEO Simplified ===
Contributors: pagelayer, softaculous
Tags: SEO, schema, xml sitemap, meta description
Requires at least: 5.0
Tested up to: 6.9
Requires PHP: 7.2
Stable tag: 1.3.6
License: GPLv2
License URI: https://www.gnu.org/licenses/gpl-2.0.html

SiteSEO is an easy, fast and powerful SEO plugin for WordPress. Unlock your Website's potential and Maximize your online visibility with our SiteSEO!

== Description ==

SiteSEO is a revolutionary WordPress SEO plugin that seamlessly integrates with all page builders and themes, making it the best choice for optimizing your website.

SiteSEO is a powerful WordPress SEO plugin to maximize your online Visibility, boost traffic and elevate rankings. It helps you to manage XML Sitemaps, improve social sharing, manage Titles and Metas and so much more.<br><br>

You can find our official documentation at [https://siteseo.io/docs](https://siteseo.io/docs). We are also active in our community support forums on wordpress.org if you are one of our free users. Our Premium Support Ticket System is at [https://softaculous.deskuss.com](https://softaculous.deskuss.com)

[Home Page](https://siteseo.io "SiteSEO Homepage") | [Support](https://softaculous.deskuss.com "SiteSEO Support") | [Documents](http://siteseo.io/docs "Documents")

===Key Features :===

- **Content Analysis :** Get valuable insights to create content that is perfectly optimized for search engines.
- **Universal SEO Metabox :** Edit your SEO metadata from any page builder or theme builder effortlessly.
- **Easy Import :** Migrate your post and term metadata from other plugins with a simple one-click process.

===Why Choose SiteSEO :===

- **Save Time and Money:** Import and export metadata easily with SiteSEO PRO, which starts at $49 per year.
- **All-in-One Solution:** SiteSEO comes with all the features you need to optimize your WordPress site's SEO, eliminating the need for additional extensions and potential conflicts.
- **Easy and User-Friendly:** You don't need to be an SEO expert or coder to use SiteSEO. Most settings are automatically configured, and an installation wizard guides you through the setup process.

==SiteSEO Free Features : ==

===SiteSEO Free offers a comprehensive set of features, including : ===

- **Google Indexing API and IndexNow API** for quick content indexing.
- **Content analysis** with unlimited keywords for optimized content creation.
- **Google Knowledge Graph** support for better visibility.
- **Social media previews** for Google, Facebook, and X(Twitter).
- **Open Graph and X Cards** integration for enhanced social media sharing.
- **Customizable titles and meta** descriptions with dynamic variables.
- **Installation wizard** for hassle-free site setup.

==Upgrade to SiteSEO PRO for More Power:==

===Unlock advanced capabilities with SiteSEO PRO, such as:===

- **Enhanced WooCommerce Support:** Optimize e-commerce sites with price and currency meta tags, product XML sitemaps, and more.
- **Google Page Speed Insights:** Analyze your site's performance on mobile and desktop, including Core Web Vitals.
- **SitSEO AI:** Our AI integration generates SEO-friendly titles and meta descriptions. This helps improve your click-through rate (CTR) by making your content more appealing and discoverable in search results.
- **Robots.txt Editor:** Edit the virtual robots.txt directly from SiteSEO, comes with shortcuts for common robots.txt rules.
- **htaccess Editor:** Edit your htaccess file, comes with common htaccess rules you can use.
- **Google News Sitemap:** Google news sitemaps are special sitemap, specifically for content, which is time bound, and helps in making content eligible to be shown on Google's News surface.
- **Structured Data:** Helps search engines understand your website better, as it adds Structured data markup.
- **Breadcrumbs:** Helps improve the navigation for users.
- **Video Sitemap:** Helps search engines understand the video content on your website better.
- **404 Monitoring and Redirection:** Monitor and redirect user who end up on a 404 page.
- **Dublin Code:** Meta tags for title and description, support by Governments, directories, Bing and Yandex.
- **Local Business:** Adds schema that helps search engines understand your local business well using data like address, opening hours, website, phone number and more.
- **RSS Sitemap:** Gives search engines info about your recent feed.
- **Search Statistics:** Seamlessly integrate Google Search Console and view all your search performance insights right within SiteSEO.


= Multi-language Support : =

SiteSEO is available in multiple languages, and you can contribute to further localization on translate.wordpress.org.

= Integrations: =

SiteSEO smoothly integrates with popular tools such as Elementor, WooCommerce and more.

= Get Started with SiteSEO Today! =

Visit our website siteseo.io for more information, join our official community group, and explore our resources to improve your SEO game.
Don't miss out on the ultimate SEO solution for your WordPress website – Get SiteSEO now!

= Third Party API usage =
1. IndexNow: is used to inform Microsoft Bing about the latest content changes on a user's website. The plugin sends a list of updated URLs along with the API key generated when the user saved the Instant Indexing settings. It also includes the site's URL and the URL of the key location, allowing Bing to verify the website's identity.[Terms and Condition](https://www.indexnow.org/terms) | [IndexNow.org](https://www.indexnow.org)
2. Google Instant Index: Is a service used to notify Google when a post is created, updated, or deleted. SiteSEO utilizes this service to inform Google by sending the updated post's URL, its state ("UPDATE" or "DELETE"), and an access token obtained via Google OAuth. [Terms and Conditions](https://developers.google.com/terms/site-terms) | [Google Search Central](https://developers.google.com)
3. Google OAuth: When using Google Instant Indexing SiteSEO need to verify with Google the keys the users has set to access Google's services. So SiteSEO sends the key users has provided in the SiteSEO settings to Google to verify the user is authorized to use those keys for Instant Indexing. [Terms and Conditions](https://developers.google.com/terms/site-terms) | [Google Search Central](https://developers.google.com)

== Installation ==

1. Upload 'siteseo' to the '/wp-content/plugins/' directory
2. Activate the plugin through the 'Plugins' menu in WordPress
3. Click on SiteSEO and apply settings.

== Frequently Asked Questions ==

= How to use Google Tag Manager / Facebook Pixel with SiteSEO ? =

Go to SiteSEO > Analytics > Custom Tracking tab. Paste GTM / Facebook Pixel tracking code to [HEAD] Add an additional tracking code / [BODY] Add an additional tracking code textarea fields. Save changes and clear your cache.

= Which types of sitemaps support SiteSEO? =

XML sitemaps for search engines: post, page, post type, taxonomies, images and author.
HTML sitemap for accessibility and SEO.
SiteSEO PRO supports Google News XML.

= Is SiteSEO GDPR compliant? =

Yes!

= Is SiteSEO compatible with WordPress multisite ? =

Yes!

= My question is not listed here! =

<a href="https://siteseo.io/docs/faq/" target="_blank">Read our complete FAQ on our site</a>

== Screenshots ==
1. SiteSEO Dashboard
2. Content Analysis Metabox
3. Title Settings Metabox
4. Advanced Settings Metabox
5. Titles and Metas Wizard
6. SiteMap Settings

== Changelog ==

= 1.3.6 (February  25, 2026) =

* [Pro-Feature] Introduced the SEO Alert feature.
* [Pro-Feature] Added support for custom Author base.
* [Pro-Feature] Introduced Podcast feature.
* [Bug Fix] Fixed an issue in the Local Business schema.

= 1.3.5 (December 25, 2025) =
* [Pro-Feature] Added a Schema importer, user can now import schema from URL, HTML, or JSON.
* [Pro-Improvement] Added modification date support for the global Article schema.
* [Bug-Fix] A function that required PHP 8+ has been replaced with a compatible alternative.
* [Bug-Fix] Fixed a minor issue in the Organization schema.
* [Bug-Fix] Fixed a minor issue in the importer when using custom meta.
* [Task] Added a SureRank importer.

= 1.3.4 (December 16, 2025) =
* [Feature Pro] Search Statistics: Now get Google Search Console Integration, access Search console data right from your SiteSEO plugin.
* [Feature Pro] Auto submission of website and sitemap to search console, part of the Search Statistics feature.
* [Bug-Fix] Fixed an issue where the global description was not showing in the metabox preview.
* [Bug-Fix] Made sitemap compatible for Polylang plugin.
* [Bug-Fix] Fixed an issue where the analysis was not detecting the title, description, and keywords for other languages.
* [Bug-Fix] Fixed an issue with the Twitter social tag where the Twitter username was not detected correctly.
* [Task] Exclusion of non public post types from instant indexing.

= 1.3.3 (November 17, 2025) =
* [Security Fix] There was an issue reported by Supakiad S. (m3ez) - E-CQURITY(WordFence) which has been fixed.
* [Minor Security Fix] There was an issue reported by Athiwat Tiprasaharn (Jitlada)(WordFence) which has been fixed.
* [Improvement] Added product full description variable for schema.
* [Improvement] Added product parent category variable.
* [Bug-Fix] Fixed an issue with the product sitemap.
* [Bug-Fix] Fixed an issue with the taxonomies sitemap.
* [Bug-Fix] Fixed an issue where Bricks Builder post data could not be retrieved.
* [Task] Minor refactor in breadcumb parent post handling.
* [Task] Tested with WordPress 6.9.

= 1.3.2 (October 30, 2025) =
* [Minor Security Fix] There was an issue reported by Athiwat Tiprasaharn (Jitlada)(WordFence) which has been fixed.
* [Improvement] Breadcrumbs now handles parent post.
* [Improvement] Importer now converts the variables as well.
* [Improvement] Password protected posts will now be no-indexed by default.
* [Bug-Fix] There was an issue with Video Sitemap, which was causing it to make multiple video sitemap pages, this has been fixed.
* [Bug-Fix] There was an issue with WP Bakery unable to save post, this has been fixed.
* [Bug-Fix] Tabs UI was breaking in some cases this has been fixed.

= 1.3.1 (September 30, 2025) =
* [Pro-Feature] Added Global Automatic Schema.
* [Pro-Feature] Added LLMs.txt functionality.
* [Bug-Fix] Fixed an issue where robots.txt did not display the default settings preview. 
* [Bug-Fix] Tag sitemap was giving a PHP warning that has been fixed.

= 1.3.0 (September 8, 2025) =
* [Bug-Fix] There was an issue with Title not working in some cases, fixed by increasing the filter priority.
* [Bug-Fix] Sitemap issue of image sitemaps xml getting escaped and last mod having incorrect position has been fixed.

= 1.2.9 (September 4, 2025) =
* [Improvement] Added noindex for WooCommerce Cart, Checkout, and Account pages.
* [Improvement]	Added JSON validator for custom schema.
* [Improvement] Added lastmod in sitemap when a static page is set as the homepage.
* [Improvement] Added lastmod in Taxonomies sitemap. 
* [Bug-Fix] Fixed an issue in custom schema.
* [Bug-Fix] Fixed issue where image count was not rendering in the sitemap.
* [Bug-Fix] Fixed issue with the Clean Media Filename feature.

= 1.2.8 (August 22, 2025) =
* [Security-Fix] A Security issue reported by stealthcopter (Wordfence) has been fixed.
* [Bug-Fix] Fixed an issue caused by a mismatch between the Free and Pro plugin versions.
* [Bug-Fix] Fixed a minor error with the primary category breadcrumbs in WooCommerce products.
* [Bug-Fix] Fixed a minor error with Instant Indexing page.

= 1.2.7 (August 13, 2025) =
* [Bug Fix] When enqueuing CSS, the SiteSEO version was not getting added, so the CSS cache was not getting invalidated on new release, which was breaking UI for some users, this has been fixed.

= 1.2.6 (August 12, 2025) =
* [Pro Feature] Added AI-powered title and description generation in the metabox.
* [Improvement] Added option to use the same settings as OG for X in the metabox.
* [Improvement] Added homepage notices when a static page is set.
* [Improvement] Now also supports Automated URL Submission for Instant Indexing for Google.
* [Bug Fix] Fixed an issue where the cookies button was displayed in edit mode when using certain page builder plugins.

= 1.2.5 (July 4, 2025) =
* [Bug Fix] Resolved a minor syntax issue for PHP 7.2 compatibility.

= 1.2.4 (July 3, 2025) =
* [Pro-Improvement] Added suggested rules for robots.txt and .htaccess.
* [Improvement] Added suggested dynamic variables for the social settings in the metabox.
* [Improvement] Made the universal metabox icon draggable.
* [Bug-Fix] Fixed title and description issues on archive pages.
* [Bug-Fix] Resolved title and description issue on non-static homepage.

= 1.2.3 (June 17, 2025) =
* [Pro-Improvement] Added support for virtual robots.txt.
* [Improvement] Introduced the Instant Indexing History feature – now you can view indexing submission history.
* [Improvement] Added support for importing settings from Slim SEO.
* [Improvement] Added a noindex warning in the metabox.
* [Bug-Fix] There was a settings sync issue in the Gutenberg sidebar, which has now been resolved.
* [Bug-Fix] Fixed a problem related to description length limits.
* [Bug-Fix] Fixed an issue with importing taxonomy settings.
* [Bug-Fix] There was an issue with static Posts pages, which has now been resolved.
* [Bug-Fix] There was an issue with the social preview in the metabox, which has been resolved.

= 1.2.2 (May 19, 2025) =
* [Improvement] Improved content saving for site verification tags.
* [Bug-Fix] There was an issue with cookies Block which has been resolved.
* [Bug-Fix] An issue related to archives has been resolved.
* [Bug-Fix] A duplicate meta description issue with Elementor Pro has been resolved.
* [Bug-Fix] A duplicate canonical URL issue from WordPress has been resolved.
* [Bug-Fix] A pagination issue in the Remove Category feature has been fixed.
* [Bug-Fix] An issue with the noindex setting for post types has been resolved.
* [Bug-Fix] There was issue with save Order By settings in HTML sitemap has been resolved.

= 1.2.1 (April 21, 2025) =
* [Pro-Feature] Added RSS sitemap.
* [Pro-Feature] Added Video sitemap.
* [Bug-Fix] There was an issue with Blocking Metabox this has been fixed.
* [Bug-Fix] Some user roles we not getting saved in Advanced security settings, this has been fixed.
* [Bug-Fix] Setting Primary Category was not working, this has been fixed.
* [Bug-Fix] Share of page on Facebook was not giving the correct Thumbnail image and description that has been fixed.
* [Bug-Fix] Auto Indexing on Post publish if the option was enabled was not working that has been fixed.
* [Task] A WordPress deprecation warning has been fixed.
* [Task] Tested with WordPress 6.8

= 1.2.0 (April 1, 2025) =
* [Bug-Fix] There was an issue with H1 heading analysis that has been fixed.
* [Bug-Fix] There was an issue with Remove Category slug, this has been fixed.
* [Bug-Fix] A few onboarding settings were not getting saved, that has been fixed.

= 1.1.9 (March 26, 2025) =
* [Bug-Fix] There was issue with Social Network settings getting erased on update, that has been fixed.

= 1.1.8 (March 25, 2025) =
* [Improvement] Now sitemap supports multiple languages.
* [Improvement] Now meta description and canonical URL supports multiple languages.
* [Improvement pro] The structured data types feature now supports post types, has been added to the metabox.
* [Pro Feature] Added Google News sitemap.
* [Pro-Feature] Added Redirections / 404 monitoring feature.
* [Bug-Fix] There was an issue with OG URL, that has been fixed.
* [Bug-Fix] There was Duplicate meta description and canonical URL on the homepage, that has been fixed.

= 1.1.7 (February 28, 2025) =
* [Task] Title and Meta settings for Post Types and Taxonomies will be enabled by default.
* [Task] WP Sitemap will be disabled, and redirected to SiteSEO sitemap, if SEO settings in SiteSEO are enabled.
* [Bug-Fix] There was an issue with SEO metabox, it was showing up even when Universal metabox was enabled, this has been fixed.
* [Bug-Fix] Google Instant indexing, was returning an error that has been fixed.

= 1.1.6 (February 20, 2025) =
* [Bug-Fix] There was an issue with WooCommerce compatibility that has been fixed.
* [Bug-Fix] Bing API was giving 202 response, this has been fixed.

= 1.1.2 (October 09, 2024) =
* [Bug-Fix] A PHP warning related to a decoding function has been fixed.
* [Pro-Version] A Pro version have been launched which includes features like WooCommerce SEO, Easy Digital Downloads SEO, Dublin Core and PageSpeed Insight

= 1.1.1 (July 30, 2024) =
* [Improvement] Title and Description input feedback has been improved when used in the editor.
* [Bug-Fix] For some users Content Readibility was causing issue, which has been fixed
* [Bug-Fix] There was an issue with Sitemaps, that has been fixed.
* [Bug-Fix] There was an issue with X Social card that has been fixed.
* [Bug-Fix] Product title and description has issue saving which has been fixed.
* [Task] Tested with WordPress 6.6.

= 1.1.0 (May 24, 2024) =
* [Feature] You can now use SiteSEO OnPage SEO optimization tools from the Sidebar plugin in gutenberg.
* [Feature] Added Readibility analysis, which includes, Passive voice anlyser, Power word analyser and more.
* [Task] A New On Page optimization widget.
* [Task] Refactored and rewrote some components of SiteSEO.

= 1.0.9 (May 15, 2024) =
* [Feature] Now users can add Table of Content to their posts.
* [Feature] Option to create and edit robots.txt file.
* [Feature] Option to update .htaccess file.

= 1.0.8 (May 08, 2024) =
* [Feature] Block and shortcode support for On Page Breadcrumbs.
* [Task] Title Settings code refactor.

= 1.0.7 (April 17, 2024) =
* [Feature] Realtime Content Analysis for Gutenberg.
* [Bug-Fix] There was an issue on the search page when SiteSEO was active, which has been fixed.

= 1.0.6 (April 12, 2024) =
* [Feature] Adding Breadcrumb to your posts and pages, can be added using Gutenberg Block, short code or direct PHP code.
* [Improvement] Added option to search in tags.
* [Improvement] Added placeholder images in Facebook and Twitter metabox form.
* [Task] Added credits.

= 1.0.5 (Mar 15, 2024) =
* [Bug-Fix] There was an issue with metadata importer which has been fixed.
* [Bug-Fix] CSS of SiteSEO was not loading on some pages which was breaking the UI at some places that has been fixed.
* [Bug-Fix] Meta description was not adding, which has been fixed.
* [Task] Updated docs links.

= 1.0.4 (Mar 1, 2024) =
* [Improvement] Cleaned code for launch.
* [Bug-Fix] CSS taking longer to load Setup wizard has been fixed.
* [Task] Fixed PHP warnings.

= 1.0.1 (Oct 25, 2023) =
* [Improvement] Sanitizing and escaping methods have been added where necessary to prevent XSS vulnerabilities and breaking the HTML document structure.

= 1.0.0 (August 06, 2023) =
* Released Plugin


<a href="https://siteseo.io/blog/" target="_blank">View our complete changelog</a>
PK��f\��g g siteseo.phpnu�[���PK��f\*�r�2�2� assets/img/siteseo-white.pngnu�[���PK��f\̀=;FF�Sassets/img/logo-24.svgnu�[���PK��f\��nY*�*�!Jpassets/img/social-placeholder.pngnu�[���PK��f\§s!%%�assets/img/seo-get-started.jpgnu�[���PK��f\<���8 assets/img/white-logo-1.svgnu�[���PK��f\�ޏ�{{|'assets/img/white-logo.svgnu�[���PK��f\�VV@;assets/img/siteseo-ai.svgnu�[���PK��f\G$χXX �Aassets/img/loginizer_product.pngnu�[���PK��f\b��?�?��\assets/css/siteseo.cssnu�[���PK��f\X*�b~~�assets/css/cookies.cssnu�[���PK��f\�1�^�b�b�assets/css/metabox.cssnu�[���PK��f\���77�_assets/css/header.cssnu�[���PK��f\y5`bassets/css/admin-columns.cssnu�[���PK��f\D���( ( �cassets/css/onboarding.cssnu�[���PK��f\��Łoo8�assets/css/admin-bar.cssnu�[���PK��f\���sFF�assets/js/onboarding.jsnu�[���PK��f\�<�!|�assets/js/sidebar/src/sidebar.cssnu�[���PK��f\��r]���assets/js/sidebar/src/index.jsnu�[���PK��f\T\x��!��assets/js/sidebar/build/index.cssnu�[���PK��f\�d���'��assets/js/sidebar/build/index.asset.phpnu�[���PK��f\-�
Kyy ��assets/js/sidebar/build/index.jsnu�[���PK��f\���3))��assets/js/cookies-bar.jsnu�[���PK��f\o�m�cc�assets/js/universal-metabox.jsnu�[���PK��f\�Xm����assets/js/block.jsnu�[���PK��f\���Z�-�-�	assets/js/chart.umd.min.jsnu�[���PK��f\C�^^�7assets/js/metabox.jsnu�[���PK��f\��0hNN,�assets/js/gsc-charts.jsnu�[���PK��f\�o�ܯ^�^��assets/js/admin.jsnu�[���PK��f\�](��
�Cfunctions.phpnu�[���PK��f\����**Rbmain/imageseo.phpnu�[���PK��f\�6�%	�	��nmain/settings/statistics.phpnu�[���PK��f\�O������6
main/settings/titles.phpnu�[���PK��f\��1������
main/settings/analytics.phpnu�[���PK��f\�4+�EE��main/settings/dashboard.phpnu�[���PK��f\HrҰ��!main/settings/tools.phpnu�[���PK��f\Gjqβ
�
K7main/settings/util.phpnu�[���PK��f\�^-�O�OCEmain/settings/onboarding.phpnu�[���PK��f\��ֽ8�8��main/settings/instant.phpnu�[���PK��f\��̹�N�N��main/settings/sitemap.phpnu�[���PK��f\s����qmain/settings/advanced.phpnu�[���PK��f\���1�f�f��main/settings/social.phpnu�[���PK��f\;�4rr�Fmain/socialmetas.phpnu�[���PK��f\'���main/tableofcontent.phpnu�[���PK��f\�
�@\@\3�main/admin.phpnu�[���PK��f\D�q�l#l#�*main/instantindexing.phpnu�[���PK��f\u���f�feNmain/googleanalytics.phpnu�[���PK��f\@��q����main/install.phpnu�[���PK��f\wNg6�c�c��main/generatesitemap.phpnu�[���PK��f\��� ���0main/columns.phpnu�[���PK��f\rYoՁV�V
Emain/ajax.phpnu�[���PK��f\������=�main/metaboxes/analysis.phpnu�[���PK��f\+mzz4ymain/metaboxes/settings.phpnu�[���PK��f\�[������main/import.phpnu�[���PK��f\��i
i
�,main/primarycategory.phpnu�[���PK��f\X��xll�7main/advanced.phpnu�[���PK��f\ON��R�R�CSmain/titlesmetas.phpnu�[���PK��f\H�rόJ�J
��readme.txtnu�[���PK::��